From d2da6f0f4fb6adbad65cee6e97f516a9483eab46 Mon Sep 17 00:00:00 2001 From: luckfox-eng29 <158533769+luckfox-eng29@users.noreply.github.com> Date: Fri, 9 May 2025 14:23:17 +0800 Subject: [PATCH] Add Luckfox Pico 86Panel Support (#274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * project/cfg/BoardConfig_IPC/overlay : Add Luckfox Pico 86Panel overlay files Signed-off-by: luckfox-eng29 * sysdrv/source/kernel/arch/arm/boot/dts : Add Luckfox Pico 86Panel device tree files Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC : Add Luckfox Pico 86Panel BoardConfig files Signed-off-by: luckfox-eng29 * project/build.sh : Add the lunch menu item of Luckfox Pico 86Panel Signed-off-by: luckfox-eng29 * sysdrv/source/kernel/arch/arm/configs : Add Goodix driver module configuration for RV1106 Signed-off-by: luckfox-eng29 * sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig : Add rsync command for Luckfox Pico Buildroot system Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config : Add rysnc command for Luckfox Pico Ubuntu system Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d : Add MIC initialization script to improve default recording quality Signed-off-by: luckfox-eng29 * sysdrv/tools/board/buildroot/busybox_patch : ​Add patches to enable Chinese display support in the terminal and allow the reboot command to accept parameters Signed-off-by: luckfox-eng29 * sysdrv/Makefile : Automatically apply BusyBox patches when building the Buildroot image Signed-off-by: luckfox-eng29 * sysdrv/source/kernel/arch/arm/kernel/setup.c : Make the kernel retrieve the unique CPU serial number Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config : Fix errors and add support for eMMC rootfs backup Signed-off-by: luckfox-eng29 * sysdrv/source/kernel/arch/arm/boot/dts : Make Luckfox Pico Ultra and Luckfox Pico Pi default to using i2c4 for CSI cameras Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh : Enable wireless module initialization support for Ubuntu on Luckfox Pico 86Panel and Luckfox Pico Pi Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC : Add executable permission to the BoardConfig scripts Signed-off-by: luckfox-eng29 * sysdrv/source/uboot : Resolve the issue of fast boot failure on certain eMMC models Signed-off-by: luckfox-eng29 * project/cfg/BoardConfig_IPC/luckfox-rv1106-tb-emmc-post.sh : Resolve the issue of file system initialization failure during eMMC fast boot Signed-off-by: luckfox-eng29 * project/build.sh : Fix the issue of submodule switch failure Signed-off-by: luckfox-eng29 * project/app/rkipc/rkipc/src : Make sure that changes to rkipc.ini can be applied and take effect after modification Signed-off-by: eng29 * project/cfg/BoardConfig_IPC : Discontinue support for Ubuntu Signed-off-by: eng29 * project/build.sh : Discontinue support for Ubuntu Signed-off-by: eng29 * sysdrv/Makefile : Discontinue support for Ubuntu Signed-off-by: eng29 * README.md : Update description README_CN.md : Update description Signed-off-by: eng29 * . : Delete the Ubuntu rootfs submodule Signed-off-by: eng29 * sysdrv/drv_ko/wifi/aic8800dc : Update the aic8800dc driver Signed-off-by: eng29 --------- Signed-off-by: luckfox-eng29 Signed-off-by: eng29 --- .gitmodules | 3 - .gitmodules.gitee | 3 - .gitmodules.github | 3 - README.md | 237 +- README_CN.md | 211 +- .../app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh | 4 +- .../app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh | 4 +- project/build.sh | 59 +- ...ldroot-RV1106_Luckfox_Pico_86Panel-IPC.mk} | 35 +- ...root-RV1106_Luckfox_Pico_86Panel_W-IPC.mk} | 25 +- ...MMC-Ubuntu-RV1106_Luckfox_Pico_Pi_W-IPC.mk | 134 - ...MC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk | 123 - ...-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk | 120 - ...D-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk | 120 - ...D-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk | 120 - ...ARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk | 120 - ...D-Ubuntu-RV1103_Luckfox_Pico_WebBee-IPC.mk | 120 - ...CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk | 120 - ...CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk | 120 - ...uildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk | 2 +- ...-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk | 2 +- ...uildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk | 2 +- ...D-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk | 2 +- ...D-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk | 2 +- .../luckfox-buildroot-nocsi-oem-pre.sh | 0 .../luckfox-buildroot-oem-pre.sh | 0 ...tu-oem-pre.sh => luckfox-glibc-oem-pre.sh} | 0 .../luckfox-rv1106-tb-emmc-post.sh | 2 + ...t.sh => luckfox-systemd-off-modem-post.sh} | 0 .../BoardConfig_IPC/luckfox-userdata-pre.sh | 0 .../etc/init.d/S25goodix | 12 + .../etc/init.d/S26wifi | 13 + .../etc/init.d/S27ether | 28 + .../etc/init.d/S99lvgl | 14 + .../usr/bin/86UI_demo | Bin 0 -> 4400956 bytes .../usr/bin/insmod_goodix.sh | 26 + .../etc/init.d/S60micinit | 17 + .../usr/bin/luckfox-config | 217 +- .../etc/init.d/S25goodix | 12 + .../etc/rc.local | 45 + .../usr/bin/insmod_goodix.sh | 26 + .../usr/bin/dtc | Bin .../usr/bin/fdtdump | Bin .../usr/bin/fdtget | Bin .../usr/bin/fdtoverlay | Bin .../usr/bin/fdtput | Bin .../overlay-luckfox-glibc-config/usr/bin/io | Bin 0 -> 13612 bytes .../usr/bin/iomux | Bin .../usr/bin/killall | Bin .../usr/bin/rsync | Bin 0 -> 363400 bytes .../usr/bin/rsync-ssl | 198 + .../usr/lib/libfdt.so.1 | 0 .../usr/lib/libfdt.so.1.7.0 | Bin .../usr/lib/libIspFec.a | Bin .../usr/lib/libIspFec.so | Bin .../usr/lib/libfunc_none.so | Bin .../usr/lib/librga.so | 0 .../usr/lib/librga.so.2 | 0 .../usr/lib/librga.so.2.1.0 | Bin .../usr/lib/librkaiq.a | Bin .../usr/lib/librkaiq.so | Bin .../usr/lib/librknnmrt.so | Bin .../usr/lib/librkrawstream.so | Bin .../usr/lib/librockchip_mpp.a | Bin .../usr/lib/librockit.a | Bin .../usr/lib/librockit_full.a | Bin .../usr/lib/librockit_tiny.a | Bin .../usr/lib/librtsp.a | Bin .../usr/lib/libsample_comm.a | Bin .../usr/lib/libsmartIr.a | Bin .../usr/lib/libsmartIr.so | Bin .../usr/bin/simcom-cm | Bin .../etc/fstab | 0 .../etc/rc.local | 0 .../etc/udhcpd.conf | 0 .../usr/bin/filesystem_resize.sh | 0 .../usr/bin/luckfox_switch_rgb_resolution | Bin .../usr/bin/udhcpc | Bin .../usr/bin/udhcpd | Bin .../usr/bin/wifi_bt_init.sh | 6 +- .../usr/share/udhcpc/default.script | 0 .../etc/rc.local | 0 sysdrv/Makefile | 31 +- sysdrv/drv_ko/wifi/aic8800dc/Makefile | 2 +- .../wifi/aic8800dc/aic8800_bsp/Makefile | 9 +- .../aic8800dc/aic8800_bsp/aic8800d80_compat.c | 216 +- .../aic8800dc/aic8800_bsp/aic8800d80_compat.h | 4 - .../aic8800dc/aic8800_bsp/aic8800dc_compat.c | 3415 +- .../aic8800dc/aic8800_bsp/aic8800dc_compat.h | 21 +- .../aic8800dc/aic8800_bsp/aic_bsp_driver.c | 1897 +- .../aic8800dc/aic8800_bsp/aic_bsp_driver.h | 333 +- .../aic8800dc/aic8800_bsp/aic_bsp_export.h | 46 +- .../wifi/aic8800dc/aic8800_bsp/aic_bsp_main.c | 313 +- .../wifi/aic8800dc/aic8800_bsp/aicsdio.c | 1073 +- .../wifi/aic8800dc/aic8800_bsp/aicsdio.h | 120 +- .../aic8800dc/aic8800_bsp/aicsdio_txrxif.c | 98 +- .../aic8800dc/aic8800_bsp/aicsdio_txrxif.h | 99 +- .../aic8800_bsp/aicwf_firmware_array.c | 42938 ++++++++++------ .../aic8800_bsp/aicwf_firmware_array.h | 4 +- .../aic8800_bsp/aicwf_txq_prealloc.c | 77 +- .../aic8800_bsp/aicwf_txq_prealloc.h | 1 - .../drv_ko/wifi/aic8800dc/aic8800_bsp/md5.c | 285 +- .../drv_ko/wifi/aic8800dc/aic8800_bsp/md5.h | 86 +- .../aic8800dc/aic8800_bsp/rwnx_version_gen.h | 2 +- .../aic8800dc/aic8800_btlpm/aic8800_btlpm.c | 157 +- .../aic8800_btlpm/aic_bluetooth_main.c | 19 +- .../aic8800dc/aic8800_btlpm/aic_bsp_export.h | 10 +- .../drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.c | 162 +- .../drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.h | 1 - .../wifi/aic8800dc/aic8800_btlpm/rfkill.c | 4 +- .../wifi/aic8800dc/aic8800_fdrv/Makefile | 44 +- .../wifi/aic8800dc/aic8800_fdrv/aic_br_ext.c | 1070 +- .../wifi/aic8800dc/aic8800_fdrv/aic_br_ext.h | 45 +- .../aic8800dc/aic8800_fdrv/aic_bsp_export.h | 42 +- .../wifi/aic8800dc/aic8800_fdrv/aic_btsdio.c | 1517 +- .../wifi/aic8800dc/aic8800_fdrv/aic_btsdio.h | 522 +- .../aic8800dc/aic8800_fdrv/aic_priv_cmd.c | 1121 +- .../aic8800dc/aic8800_fdrv/aic_priv_cmd.h | 13 +- .../wifi/aic8800dc/aic8800_fdrv/aic_vendor.c | 818 +- .../wifi/aic8800dc/aic8800_fdrv/aic_vendor.h | 256 +- .../aic8800_fdrv/aicwf_compat_8800d80.c | 155 +- .../aic8800_fdrv/aicwf_compat_8800d80.h | 10 +- .../aic8800_fdrv/aicwf_compat_8800dc.c | 1116 +- .../aic8800_fdrv/aicwf_compat_8800dc.h | 15 +- .../wifi/aic8800dc/aic8800_fdrv/aicwf_debug.h | 78 +- .../aic8800_fdrv/aicwf_rx_prealloc.c | 117 +- .../aic8800_fdrv/aicwf_rx_prealloc.h | 16 +- .../wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.c | 2417 +- .../wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.h | 180 +- .../aic8800dc/aic8800_fdrv/aicwf_tcp_ack.c | 176 +- .../aic8800dc/aic8800_fdrv/aicwf_tcp_ack.h | 43 +- .../aic8800dc/aic8800_fdrv/aicwf_txrxif.c | 409 +- .../aic8800dc/aic8800_fdrv/aicwf_txrxif.h | 149 +- .../wifi/aic8800dc/aic8800_fdrv/aicwf_usb.c | 167 +- .../wifi/aic8800dc/aic8800_fdrv/aicwf_usb.h | 28 +- .../wifi/aic8800dc/aic8800_fdrv/btsdio.c | 285 + .../wifi/aic8800dc/aic8800_fdrv/hal_desc.h | 251 +- .../wifi/aic8800dc/aic8800_fdrv/ipc_compat.h | 11 +- .../wifi/aic8800dc/aic8800_fdrv/ipc_host.c | 15 +- .../wifi/aic8800dc/aic8800_fdrv/ipc_host.h | 13 +- .../wifi/aic8800dc/aic8800_fdrv/ipc_shared.h | 291 +- .../wifi/aic8800dc/aic8800_fdrv/lmac_mac.h | 136 +- .../wifi/aic8800dc/aic8800_fdrv/lmac_msg.h | 1234 +- .../wifi/aic8800dc/aic8800_fdrv/lmac_types.h | 4 - .../drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.c | 285 +- .../drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.h | 86 +- .../wifi/aic8800dc/aic8800_fdrv/reg_access.h | 180 +- .../wifi/aic8800dc/aic8800_fdrv/regdb.c | 267 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.c | 11 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.h | 12 +- .../aic8800dc/aic8800_fdrv/rwnx_cfgfile.c | 122 +- .../aic8800dc/aic8800_fdrv/rwnx_cfgfile.h | 4 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.c | 276 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.h | 50 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_compat.h | 336 +- .../aic8800dc/aic8800_fdrv/rwnx_debugfs.c | 1670 +- .../aic8800dc/aic8800_fdrv/rwnx_debugfs.h | 220 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_defs.h | 481 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_dini.c | 78 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_dini.h | 2 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_events.h | 1307 +- .../aic8800dc/aic8800_fdrv/rwnx_fw_trace.c | 11 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_gki.c | 102 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_gki.h | 76 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_main.c | 3057 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_main.h | 4 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.c | 5 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.h | 3 +- .../aic8800dc/aic8800_fdrv/rwnx_mod_params.c | 1404 +- .../aic8800dc/aic8800_fdrv/rwnx_mod_params.h | 5 + .../wifi/aic8800dc/aic8800_fdrv/rwnx_msg_rx.c | 992 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.c | 5423 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.h | 230 +- .../aic8800dc/aic8800_fdrv/rwnx_mu_group.c | 161 +- .../aic8800dc/aic8800_fdrv/rwnx_mu_group.h | 85 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_pci.c | 29 +- .../aic8800dc/aic8800_fdrv/rwnx_platform.c | 3979 +- .../aic8800dc/aic8800_fdrv/rwnx_platform.h | 58 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_prof.h | 81 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_radar.c | 444 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_radar.h | 90 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_rx.c | 1703 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_rx.h | 375 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_strs.c | 431 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_strs.h | 10 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.c | 333 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.h | 12 +- .../aic8800dc/aic8800_fdrv/rwnx_testmode.c | 158 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_tx.c | 1171 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_tx.h | 97 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_txq.c | 325 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_txq.h | 132 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_utils.c | 4 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_utils.h | 11 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_v7.c | 28 +- .../wifi/aic8800dc/aic8800_fdrv/rwnx_v7.h | 2 +- .../aic8800dc/aic8800_fdrv/rwnx_version.h | 2 +- .../aic8800dc/aic8800_fdrv/rwnx_version_gen.h | 2 +- .../aic8800dc/aic8800_fdrv/rwnx_wakelock.c | 12 +- .../aic8800dc/aic8800_fdrv/rwnx_wakelock.h | 3 +- .../wifi/aic8800dc/aic8800_fdrv/sdio_host.c | 30 +- .../wifi/aic8800dc/aic8800_fdrv/sdio_host.h | 17 +- .../wifi/aic8800dc/aic8800_fdrv/usb_host.c | 29 +- .../wifi/aic8800dc/aic8800_fdrv/usb_host.h | 17 +- .../fmacfw_calib_8800dc_h_u02.bin | Bin 36092 -> 32684 bytes .../aic8800dc_fw/fmacfw_calib_8800dc_u02.bin | Bin 40284 -> 40284 bytes .../fmacfw_patch_8800dc_h_u02.bin | Bin 20508 -> 29452 bytes .../aic8800dc_fw/fmacfw_patch_8800dc_u02.bin | Bin 30264 -> 31624 bytes .../fmacfw_patch_tbl_8800dc_h_u02.bin | Bin 600 -> 840 bytes .../fmacfw_patch_tbl_8800dc_u02.bin | Bin 816 -> 1008 bytes .../aic8800dc_fw/fw_patch_8800dc_u02.bin | Bin 18360 -> 16544 bytes .../aic8800dc_fw/fw_patch_8800dc_u02_ext0.bin | Bin 0 -> 2892 bytes .../aic8800dc_fw/fw_patch_8800dc_u02h.bin | Bin 14240 -> 16372 bytes .../fw_patch_table_8800dc_u02.bin | Bin 760 -> 960 bytes .../fw_patch_table_8800dc_u02h.bin | Bin 528 -> 600 bytes .../aic8800dc_fw/lmacfw_rf_8800dc.bin | Bin 170410 -> 169770 bytes .../dts/rv1106-luckfox-pico-86panel-ipc.dtsi | 308 + .../boot/dts/rv1106-luckfox-pico-pi-ipc.dtsi | 6 +- .../dts/rv1106-luckfox-pico-ultra-ipc.dtsi | 10 +- .../dts/rv1106g-luckfox-pico-86panel-w.dts | 150 + .../boot/dts/rv1106g-luckfox-pico-86panel.dts | 104 + .../arm/configs/rv1106-gt911-module.config | 1 + sysdrv/source/kernel/arch/arm/kernel/setup.c | 2 +- .../source/uboot/u-boot/common/spl/spl_mmc.c | 4 + sysdrv/source/uboot/u-boot/drivers/mmc/mmc.c | 2 +- ...-support-chinese-display-in-terminal.patch | 58 + ...0010-halt-Support-rebooting-with-arg.patch | 73 + .../board/buildroot/luckfox_pico_w_defconfig | 2 + 228 files changed, 55827 insertions(+), 37917 deletions(-) delete mode 100755 .gitmodules delete mode 100755 .gitmodules.gitee delete mode 100755 .gitmodules.github rename project/cfg/BoardConfig_IPC/{BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi-IPC.mk => BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk} (78%) rename project/cfg/BoardConfig_IPC/{BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk => BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk} (82%) delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi_W-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk delete mode 100644 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_WebBee-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk delete mode 100755 project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk mode change 100644 => 100755 project/cfg/BoardConfig_IPC/luckfox-buildroot-nocsi-oem-pre.sh mode change 100644 => 100755 project/cfg/BoardConfig_IPC/luckfox-buildroot-oem-pre.sh rename project/cfg/BoardConfig_IPC/{luckfox-ubuntu-oem-pre.sh => luckfox-glibc-oem-pre.sh} (100%) mode change 100644 => 100755 rename project/cfg/BoardConfig_IPC/{luckfox-ubuntu-off-modem-post.sh => luckfox-systemd-off-modem-post.sh} (100%) mode change 100644 => 100755 project/cfg/BoardConfig_IPC/luckfox-userdata-pre.sh create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S25goodix create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S26wifi create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S27ether create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S99lvgl create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/86UI_demo create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/insmod_goodix.sh create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d/S60micinit create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/init.d/S25goodix create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/rc.local create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/usr/bin/insmod_goodix.sh rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/dtc (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/fdtdump (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/fdtget (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/fdtoverlay (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/fdtput (100%) create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/io rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/iomux (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/bin/killall (100%) create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/rsync create mode 100755 project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/rsync-ssl rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/lib/libfdt.so.1 (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-config => overlay-luckfox-glibc-config}/usr/lib/libfdt.so.1.7.0 (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/libIspFec.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/libIspFec.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/libfunc_none.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librga.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librga.so.2 (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librga.so.2.1.0 (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librkaiq.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librkaiq.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librknnmrt.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librkrawstream.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librockchip_mpp.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librockit.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librockit_full.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librockit_tiny.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/librtsp.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/libsample_comm.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/libsmartIr.a (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-rockchip => overlay-luckfox-glibc-rockchip}/usr/lib/libsmartIr.so (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-sim7600g => overlay-luckfox-glibc-sim7600g}/usr/bin/simcom-cm (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/etc/fstab (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/etc/rc.local (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/etc/udhcpd.conf (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/usr/bin/filesystem_resize.sh (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/usr/bin/luckfox_switch_rgb_resolution (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/usr/bin/udhcpc (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/usr/bin/udhcpd (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/usr/bin/wifi_bt_init.sh (83%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu-ultra => overlay-luckfox-glibc-ultra}/usr/share/udhcpc/default.script (100%) rename project/cfg/BoardConfig_IPC/overlay/{overlay-luckfox-ubuntu => overlay-luckfox-glibc}/etc/rc.local (100%) create mode 100755 sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/btsdio.c create mode 100755 sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_8800dc_u02_ext0.bin create mode 100755 sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi create mode 100755 sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel-w.dts create mode 100755 sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel.dts create mode 100644 sysdrv/source/kernel/arch/arm/configs/rv1106-gt911-module.config create mode 100755 sysdrv/tools/board/buildroot/busybox_patch/0009-busybox-support-chinese-display-in-terminal.patch create mode 100755 sysdrv/tools/board/buildroot/busybox_patch/0010-halt-Support-rebooting-with-arg.patch diff --git a/.gitmodules b/.gitmodules deleted file mode 100755 index 8cef09a0c..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "ubuntu"] - path = sysdrv/tools/board/ubuntu - url = https://github.com/luckfox-eng33/pico_ubuntu.git diff --git a/.gitmodules.gitee b/.gitmodules.gitee deleted file mode 100755 index a79b97eb7..000000000 --- a/.gitmodules.gitee +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "ubuntu"] - path = sysdrv/tools/board/ubuntu - url = https://gitee.com/eng-thirty-three/pico_ubuntu.git diff --git a/.gitmodules.github b/.gitmodules.github deleted file mode 100755 index 8cef09a0c..000000000 --- a/.gitmodules.github +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "ubuntu"] - path = sysdrv/tools/board/ubuntu - url = https://github.com/luckfox-eng33/pico_ubuntu.git diff --git a/README.md b/README.md index a55a21024..68f67ce8a 100755 --- a/README.md +++ b/README.md @@ -37,11 +37,6 @@ source env_install_toolchain.sh ``` git clone ``` - * If you need to compile the Ubuntu system and use the Gitee source - * Please modify the corresponding board mk file LF_SUBMODULES_BY to gitee, for example - ``` - LF_SUBMODULES_BY=gitee - ``` ### Instructions for build.sh * The build.sh script is used to automate the compilation process. * Most of the compilation operations can be completed automatically through build.sh. @@ -91,19 +86,25 @@ kernelconfig -config kernel and save defconfig" ./build.sh lunch ``` + Output the corresponding Luckfox-pico hardware model. Enter the corresponding number to proceed to the storage media options (press Enter to select option [0] directly). - ```shell + ```shell You're building on Linux - Lunch menu...pick the Luckfox Pico hardware version: - 选择 Luckfox Pico 硬件版本: - [0] RV1103_Luckfox_Pico - [1] RV1103_Luckfox_Pico_Mini_A - [2] RV1103_Luckfox_Pico_Mini_B - [3] RV1103_Luckfox_Pico_Plus - [4] RV1106_Luckfox_Pico_Pro_Max - [5] RV1106_Luckfox_Pico_Ultra - [6] RV1106_Luckfox_Pico_Ultra_W - [7] custom - Which would you like? [0~7][default:0]: + Lunch menu...pick the Luckfox Pico hardware version: + 选择 Luckfox Pico 硬件版本: + [0] RV1103_Luckfox_Pico + [1] RV1103_Luckfox_Pico_Mini_A + [2] RV1103_Luckfox_Pico_Mini_B + [3] RV1103_Luckfox_Pico_Plus + [4] RV1103_Luckfox_Pico_WebBee + [5] RV1106_Luckfox_Pico_Pro + [6] RV1106_Luckfox_Pico_Max + [7] RV1106_Luckfox_Pico_Ultra + [8] RV1106_Luckfox_Pico_Ultra_W + [9] RV1106_Luckfox_Pico_Pi + [10] RV1106_Luckfox_Pico_Pi_W + [11] RV1106_Luckfox_Pico_86Panel + [12] RV1106_Luckfox_Pico_86Panel_W + [13] custom + Which would you like? [0~13][default:0]: ``` + Output the supported storage media for the corresponding Luckfox-pico hardware model. Enter the corresponding number to proceed to the root filesystem options (press Enter to select option [0] directly).For example, Luckfox Pico Plus. ```shell @@ -119,12 +120,11 @@ kernelconfig -config kernel and save defconfig" Lunch menu...pick the system version: 选择系统版本: [0] Buildroot(Support Rockchip official features) - [1] Ubuntu(Support for the apt package management tool) Which would you like? [0~1][default:0]: ``` + If you need to use the old configuration method or a custom board support file, select the "[7]custom" option when configuring the Luckfox-pico hardware model. - ```shell + ```shell You're building on Linux Lunch menu...pick the Luckfox Pico hardware version: 选择 Luckfox Pico 硬件版本: @@ -132,148 +132,176 @@ kernelconfig -config kernel and save defconfig" [1] RV1103_Luckfox_Pico_Mini_A [2] RV1103_Luckfox_Pico_Mini_B [3] RV1103_Luckfox_Pico_Plus - [4] RV1106_Luckfox_Pico_Pro_Max - [5] RV1106_Luckfox_Pico_Ultra - [6] RV1106_Luckfox_Pico_Ultra_W - [7] custom - Which would you like? [0~7][default:0]: 7 + [4] RV1103_Luckfox_Pico_WebBee + [5] RV1106_Luckfox_Pico_Pro + [6] RV1106_Luckfox_Pico_Max + [7] RV1106_Luckfox_Pico_Ultra + [8] RV1106_Luckfox_Pico_Ultra_W + [9] RV1106_Luckfox_Pico_Pi + [10] RV1106_Luckfox_Pico_Pi_W + [11] RV1106_Luckfox_Pico_86Panel + [12] RV1106_Luckfox_Pico_86Panel_W + [13] custom + Which would you like? [0~13][default:0]: 13 ---------------------------------------------------------------- - 0. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk - boot medium(启动介质): EMMC + 0. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_86Panel + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 1. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_86Panel_W + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 2. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pi + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 3. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi_W-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pi_W + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 4. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk + boot medium(启动介质): EMMC system version(系统版本): Buildroot hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 1. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk - boot medium(启动介质): EMMC + 5. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk + boot medium(启动介质): EMMC system version(系统版本): Buildroot hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra_W - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 2. BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk - boot medium(启动介质): EMMC - system version(系统版本): Ubuntu + 6. BoardConfig_IPC/BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk + boot medium(启动介质): EMMC + system version(系统版本): Busybox hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra - applicaton(应用场景): IPC + application(应用场景): IPC_FASTBOOT ---------------------------------------------------------------- ---------------------------------------------------------------- - 3. BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk - boot medium(启动介质): EMMC - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra_W - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 4. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk - boot medium(启动介质): SD_CARD + 7. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk + boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 5. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk - boot medium(启动介质): SD_CARD + 8. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk + boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_A - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 6. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk - boot medium(启动介质): SD_CARD + 9. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk + boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_B - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 7. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk - boot medium(启动介质): SD_CARD + 10. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk + boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Plus - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 8. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IPC.mk - boot medium(启动介质): SD_CARD + 11. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk + boot medium(启动介质): SD_CARD system version(系统版本): Buildroot - hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max - applicaton(应用场景): IPC + hardware version(硬件版本): RV1103_Luckfox_Pico_WebBee + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 9. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico - applicaton(应用场景): IPC + 12. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk + boot medium(启动介质): SD_CARD + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Max + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 10. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_A - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 11. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_B - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 12. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico_Plus - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 13. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro_Max-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max - applicaton(应用场景): IPC + 13. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk + boot medium(启动介质): SD_CARD + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pro + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- 14. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk - boot medium(启动介质): SPI_NAND + boot medium(启动介质): SPI_NAND system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_B - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- 15. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk - boot medium(启动介质): SPI_NAND + boot medium(启动介质): SPI_NAND system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Plus - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 16. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IPC.mk - boot medium(启动介质): SPI_NAND + 16. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk + boot medium(启动介质): SPI_NAND system version(系统版本): Buildroot - hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max - applicaton(应用场景): IPC + hardware version(硬件版本): RV1103_Luckfox_Pico_WebBee + application(应用场景): IPC ---------------------------------------------------------------- - Which would you like? [default:0]: + ---------------------------------------------------------------- + 17. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk + boot medium(启动介质): SPI_NAND + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Max + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 18. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk + boot medium(启动介质): SPI_NAND + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pro + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 19. BoardConfig_IPC/BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk + boot medium(启动介质): SPI_NAND + system version(系统版本): Busybox + hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max + application(应用场景): IPC_FASTBOOT + ---------------------------------------------------------------- ``` Enter the corresponding board support file number to complete the configuration. #### Set Buildroot System Default WIFI Configuration @@ -297,13 +325,6 @@ kernelconfig -config kernel and save defconfig" ./build.sh lunch # Select the reference board ./build.sh # One-click automatic compilation ``` -* Compile Ubuntu - ``` - sudo ./build.sh lunch # Select the reference board - sudo ./build.sh # One-click automatic compilation - ``` - * Note that when compiling Ubuntu, make sure to use sudo, otherwise it may cause file system errors - * The following text will not distinguish between the two sets of instructions, please choose accordingly based on the situation #### Build U-Boot ```shell ./build.sh clean uboot diff --git a/README_CN.md b/README_CN.md index 705ecc53d..de5567d81 100755 --- a/README_CN.md +++ b/README_CN.md @@ -16,7 +16,7 @@ * 推荐SDK使用系统环境为Ubuntu 22.04 ### 安装依赖 ```shell -sudo apt-get install repo git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config +sudo apt-get install repo git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync ``` ### 获取SDK * github @@ -27,11 +27,6 @@ sudo apt-get install repo git ssh make gcc gcc-multilib g++-multilib module-assi ``` git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git ``` - * 如果你需要需要编译ubuntu系统,并且使用gitee源 - * 请修改对应的板型mk文件中LF_SUBMODULES_BY改为gitee,如 - ``` - LF_SUBMODULES_BY=gitee - ``` ### 环境变量 * 需要将交叉编译工具链设置 ``` @@ -88,17 +83,23 @@ kernelconfig -config kernel and save defconfig" + 输出对应的Luckfox-pico硬件型号,输入对应编号后进入存储介质选项(直接回车选择序号[0]选项) ```shell You're building on Linux - Lunch menu...pick the Luckfox Pico hardware version: - 选择 Luckfox Pico 硬件版本: - [0] RV1103_Luckfox_Pico - [1] RV1103_Luckfox_Pico_Mini_A - [2] RV1103_Luckfox_Pico_Mini_B - [3] RV1103_Luckfox_Pico_Plus - [4] RV1106_Luckfox_Pico_Pro_Max - [5] RV1106_Luckfox_Pico_Ultra - [6] RV1106_Luckfox_Pico_Ultra_W - [7] custom - Which would you like? [0~7][default:0]: + Lunch menu...pick the Luckfox Pico hardware version: + 选择 Luckfox Pico 硬件版本: + [0] RV1103_Luckfox_Pico + [1] RV1103_Luckfox_Pico_Mini_A + [2] RV1103_Luckfox_Pico_Mini_B + [3] RV1103_Luckfox_Pico_Plus + [4] RV1103_Luckfox_Pico_WebBee + [5] RV1106_Luckfox_Pico_Pro + [6] RV1106_Luckfox_Pico_Max + [7] RV1106_Luckfox_Pico_Ultra + [8] RV1106_Luckfox_Pico_Ultra_W + [9] RV1106_Luckfox_Pico_Pi + [10] RV1106_Luckfox_Pico_Pi_W + [11] RV1106_Luckfox_Pico_86Panel + [12] RV1106_Luckfox_Pico_86Panel_W + [13] custom + Which would you like? [0~13][default:0]: ``` + 输出对应的Luckfox-pico硬件型号支持的存储介质,输入对应编号后进入根文件系统选项(直接回车选择序号[0]选项) 以Luckfox Pico Plus为例 @@ -115,11 +116,10 @@ kernelconfig -config kernel and save defconfig" Lunch menu...pick the system version: 选择系统版本: [0] Buildroot(Support Rockchip official features) - [1] Ubuntu(Support for the apt package management tool) Which would you like? [0~1][default:0]: ``` -+ 如果需要使用旧的配置方式或者使用自定义的板级支持文件,在配置Luckfox-pico硬件型号时,选择“[7]custom”选项 ++ 如果需要使用旧的配置方式或者使用自定义的板级支持文件,在配置Luckfox-pico硬件型号时,选择“custom”选项 ```shell You're building on Linux Lunch menu...pick the Luckfox Pico hardware version: @@ -128,121 +128,127 @@ kernelconfig -config kernel and save defconfig" [1] RV1103_Luckfox_Pico_Mini_A [2] RV1103_Luckfox_Pico_Mini_B [3] RV1103_Luckfox_Pico_Plus - [4] RV1106_Luckfox_Pico_Pro_Max - [5] RV1106_Luckfox_Pico_Ultra - [6] RV1106_Luckfox_Pico_Ultra_W - [7] custom - Which would you like? [0~7][default:0]: 7 + [4] RV1103_Luckfox_Pico_WebBee + [5] RV1106_Luckfox_Pico_Pro + [6] RV1106_Luckfox_Pico_Max + [7] RV1106_Luckfox_Pico_Ultra + [8] RV1106_Luckfox_Pico_Ultra_W + [9] RV1106_Luckfox_Pico_Pi + [10] RV1106_Luckfox_Pico_Pi_W + [11] RV1106_Luckfox_Pico_86Panel + [12] RV1106_Luckfox_Pico_86Panel_W + [13] custom + Which would you like? [0~13][default:0]: 13 ---------------------------------------------------------------- - 0. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk + 0. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_86Panel + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 1. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_86Panel_W + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 2. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pi + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 3. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Pi_W-IPC.mk + boot medium(启动介质): EMMC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pi_W + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 4. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra-IPC.mk boot medium(启动介质): EMMC system version(系统版本): Buildroot hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 1. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk + 5. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_Ultra_W-IPC.mk boot medium(启动介质): EMMC system version(系统版本): Buildroot hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra_W - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 2. BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk + 6. BoardConfig_IPC/BoardConfig-EMMC-Busybox-RV1106_Luckfox_Pico_Ultra-IPC_FASTBOOT.mk boot medium(启动介质): EMMC - system version(系统版本): Ubuntu + system version(系统版本): Busybox hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra - applicaton(应用场景): IPC + application(应用场景): IPC_FASTBOOT ---------------------------------------------------------------- ---------------------------------------------------------------- - 3. BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk - boot medium(启动介质): EMMC - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1106_Luckfox_Pico_Ultra_W - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 4. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk + 7. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico-IPC.mk boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 5. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk + 8. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_A - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 6. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk + 9. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_B - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 7. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk + 10. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk boot medium(启动介质): SD_CARD system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Plus - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 8. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IPC.mk + 11. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk boot medium(启动介质): SD_CARD system version(系统版本): Buildroot - hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max - applicaton(应用场景): IPC + hardware version(硬件版本): RV1103_Luckfox_Pico_WebBee + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 9. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk + 12. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico - applicaton(应用场景): IPC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Max + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 10. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk + 13. BoardConfig_IPC/BoardConfig-SD_CARD-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_A - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 11. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_B - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 12. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1103_Luckfox_Pico_Plus - applicaton(应用场景): IPC - ---------------------------------------------------------------- - - ---------------------------------------------------------------- - 13. BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro_Max-IPC.mk - boot medium(启动介质): SD_CARD - system version(系统版本): Ubuntu - hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max - applicaton(应用场景): IPC + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pro + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- @@ -250,7 +256,7 @@ kernelconfig -config kernel and save defconfig" boot medium(启动介质): SPI_NAND system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_B - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- @@ -258,18 +264,40 @@ kernelconfig -config kernel and save defconfig" boot medium(启动介质): SPI_NAND system version(系统版本): Buildroot hardware version(硬件版本): RV1103_Luckfox_Pico_Plus - applicaton(应用场景): IPC + application(应用场景): IPC ---------------------------------------------------------------- ---------------------------------------------------------------- - 16. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IPC.mk + 16. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk boot medium(启动介质): SPI_NAND system version(系统版本): Buildroot - hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max - applicaton(应用场景): IPC + hardware version(硬件版本): RV1103_Luckfox_Pico_WebBee + application(应用场景): IPC ---------------------------------------------------------------- - Which would you like? [default:0]: + ---------------------------------------------------------------- + 17. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk + boot medium(启动介质): SPI_NAND + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Max + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 18. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk + boot medium(启动介质): SPI_NAND + system version(系统版本): Buildroot + hardware version(硬件版本): RV1106_Luckfox_Pico_Pro + application(应用场景): IPC + ---------------------------------------------------------------- + + ---------------------------------------------------------------- + 19. BoardConfig_IPC/BoardConfig-SPI_NAND-Busybox-RV1106_Luckfox_Pico_Pro_Max-IPC_FASTBOOT.mk + boot medium(启动介质): SPI_NAND + system version(系统版本): Busybox + hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max + application(应用场景): IPC_FASTBOOT + ---------------------------------------------------------------- ``` 输入对应的板级支持文件序号完成配置 #### 设置 Buildroot 系统默认 WIFI 配置 @@ -289,13 +317,6 @@ kernelconfig -config kernel and save defconfig" ./build.sh lunch # 选择参考板级 ./build.sh # 一键自动编译 ``` -* 编译ubuntu - ```shell - sudo ./build.sh lunch # 选择参考板级 - sudo ./build.sh # 一键自动编译 - ``` - * 注意编译ubuntu时需要注意使用sudo,否则会导致文件系统错误 - * 下文就不一一区分两者指令区别,请自行根据情况选择 #### 单独编译U-Boot ```shell ./build.sh clean uboot diff --git a/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh b/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh index 6721e9875..13128949a 100644 --- a/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh +++ b/project/app/rkipc/rkipc/src/rv1103_ipc/RkLunch.sh @@ -106,9 +106,9 @@ post_chk() { echo "Error: not found rkipc.ini !!!" exit -1 fi - if [ ! -f "$rkipc_ini" ]; then + #if [ ! -f "$rkipc_ini" ]; then cp $default_rkipc_ini $rkipc_ini -f - fi + #fi if [ ! -f "/userdata/image.bmp" ]; then cp -fa /oem/usr/share/image.bmp /userdata/ diff --git a/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh b/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh index d3b0f32b2..2d1aafcda 100644 --- a/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh +++ b/project/app/rkipc/rkipc/src/rv1106_ipc/RkLunch.sh @@ -114,9 +114,9 @@ post_chk() { echo "Error: not found rkipc.ini !!!" exit -1 fi - if [ ! -f "$rkipc_ini" ]; then + #if [ ! -f "$rkipc_ini" ]; then cp $default_rkipc_ini $rkipc_ini -f - fi + #fi if [ ! -f "/userdata/image.bmp" ]; then cp -fa /oem/usr/share/image.bmp /userdata/ diff --git a/project/build.sh b/project/build.sh index 11233f762..3ba518cef 100755 --- a/project/build.sh +++ b/project/build.sh @@ -40,7 +40,6 @@ SDK_CONFIG_DIR=${SDK_ROOT_DIR}/config DTS_CONFIG=${SDK_CONFIG_DIR}/dts_config KERNEL_DEFCONFIG=${SDK_CONFIG_DIR}/kernel_defconfig BUILDROOT_DEFCONFIG=${SDK_CONFIG_DIR}/buildroot_defconfig -UBUNTU_DIR=${SDK_SYSDRV_DIR}/tools/board/ubuntu KERNEL_PATH=${SDK_SYSDRV_DIR}/source/kernel UBOOT_PATH=${SDK_SYSDRV_DIR}/source/uboot/u-boot #for custom rootfs @@ -159,9 +158,11 @@ function choose_target_board() { "RV1106_Luckfox_Pico_Ultra" "RV1106_Luckfox_Pico_Ultra_W" "RV1106_Luckfox_Pico_Pi" - "RV1106_Luckfox_Pico_Pi_W") + "RV1106_Luckfox_Pico_Pi_W" + "RV1106_Luckfox_Pico_86Panel" + "RV1106_Luckfox_Pico_86Panel_W") local LF_BOOT_MEDIA=("SD_CARD" "SPI_NAND" "EMMC") - local LF_SYSTEM=("Buildroot" "Ubuntu" "Custom") + local LF_SYSTEM=("Buildroot" "Custom") local cnt=0 space8=" " # Get Hardware Version @@ -193,6 +194,10 @@ function choose_target_board() { LUNCH_NUM=$((LUNCH_NUM + 1)) echo "${space8}${space8}[${LUNCH_NUM}] RV1106_Luckfox_Pico_Pi_W" LUNCH_NUM=$((LUNCH_NUM + 1)) + echo "${space8}${space8}[${LUNCH_NUM}] RV1106_Luckfox_Pico_86Panel" + LUNCH_NUM=$((LUNCH_NUM + 1)) + echo "${space8}${space8}[${LUNCH_NUM}] RV1106_Luckfox_Pico_86Panel_W" + LUNCH_NUM=$((LUNCH_NUM + 1)) echo "${space8}${space8}[${LUNCH_NUM}] custom" read -p "Which would you like? [0~${LUNCH_NUM}][default:0]: " HW_INDEX @@ -277,7 +282,7 @@ function choose_target_board() { range_sd_card=(0 1) range_sd_card_spi_nand=(2 3 4 5 6) - range_emmc=(7 8 9 10) + range_emmc=(7 8 9 10 11 12) if __IS_IN_ARRAY "$HW_INDEX" "${range_sd_card[@]}"; then echo "${space8}${space8}[0] SD_CARD" @@ -319,12 +324,11 @@ function choose_target_board() { if (("$BM_INDEX" == 1)); then echo "${space8}${space8}[0] Buildroot " - read -p "Which would you like? [0~1][default:0]: " SYS_INDEX + read -p "Which would you like? [0][default:0]: " SYS_INDEX MAX_SYS_INDEX=0 elif (("$BM_INDEX" == 0)); then echo "${space8}${space8}[0] Buildroot " - echo "${space8}${space8}[1] Ubuntu " - read -p "Which would you like? [0~1][default:0]: " SYS_INDEX + read -p "Which would you like? [0][default:0]: " SYS_INDEX MAX_SYS_INDEX=1 fi @@ -353,7 +357,7 @@ function choose_target_board() { function build_select_board() { RK_TARGET_BOARD_ARRAY=($( cd ${TARGET_PRODUCT_DIR}/ - ls BoardConfig*.mk BoardConfig_*/BoardConfig*.mk | sort + ls BoardConfig_*/BoardConfig*.mk | sort )) RK_TARGET_BOARD_ARRAY_LEN=${#RK_TARGET_BOARD_ARRAY[@]} @@ -592,7 +596,7 @@ function build_check_power_domain() { function build_tool() { test -d ${SDK_SYSDRV_DIR} && make pctools -C ${SDK_SYSDRV_DIR} - if [ $LF_ENABLE_SPI_NAND_FAST_BOOT = "y" ]; then + if [ $LF_ENABLE_SPI_NAND_FAST_BOOT == "y" ]; then cp -fa $PROJECT_TOP_DIR/sfc_scripts/mk-fitimage.sh $RK_PROJECT_PATH_PC_TOOLS cp -fa $PROJECT_TOP_DIR/sfc_scripts/compress_tool $RK_PROJECT_PATH_PC_TOOLS cp -fa $PROJECT_TOP_DIR/sfc_scripts/mk-tftp_sd_update.sh $RK_PROJECT_PATH_PC_TOOLS @@ -1506,12 +1510,6 @@ function __PACKAGE_ROOTFS() { exit 0 fi - if [ "$RK_BOOT_MEDIUM" == "emmc" ] && [ "$LF_TARGET_ROOTFS" == "ubuntu" ]; then - if [ -f $WIFI_CONF ]; then - cp $WIFI_CONF $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc - fi - fi - if [ "$LF_TARGET_ROOTFS" == "buildroot" ] || [ "$LF_TARGET_ROOTFS" == "busybox" ]; then build_get_sdk_version cat >$RK_PROJECT_PACKAGE_ROOTFS_DIR/bin/sdkinfo <>$STUB_PATH/build_info.txt echo "save to $STUB_PATH" - if [[ "$LF_TARGET_ROOTFS" == "ubuntu" ]]; then - sudo chmod a+rw $STUB_PARENT_PATH - fi ;; esac @@ -2753,29 +2745,6 @@ export RK_PROJECT_BOARD_DIR=$(dirname $(realpath $BOARD_CONFIG)) export RK_PROJECT_TOOLCHAIN_CROSS=$RK_TOOLCHAIN_CROSS export PATH="${SDK_ROOT_DIR}/tools/linux/toolchain/${RK_PROJECT_TOOLCHAIN_CROSS}/bin":$PATH -if [[ "$LF_TARGET_ROOTFS" = "ubuntu" ]]; then - if [ "$(id -u)" != "0" ]; then - msg_error "Error! Please use sudo ./build.sh to build Ubuntu Image!" - exit 1 - fi - if [[ "$LF_SUBMODULES_BY" = "github" ]]; then - cp ${SDK_ROOT_DIR}/.gitmodules.github ${SDK_ROOT_DIR}/.gitmodules - else - if [[ "$LF_SUBMODULES_BY" = "gitee" ]]; then - cp ${SDK_ROOT_DIR}/.gitmodules.gitee ${SDK_ROOT_DIR}/.gitmodules - else - exit 0 - fi - fi - - if [ -d "$UBUNTU_DIR" ] && [ -f ${UBUNTU_DIR}/luckfox-ubuntu-22.04.3.tar.gz.md5 ]; then - msg_info "${UBUNTU_DIR} is not empty, skipping submodule update!" - else - msg_info "${UBUNTU_DIR} is empty or does not exist, updateing submodule!" - git submodule update --init --recursive - fi -fi - if echo $@ | grep -wqE "help|-h"; then if [ -n "$2" -a "$(type -t usage$2)" == function ]; then echo "###Current Configure [ $2 ] Build Command###" diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk similarity index 78% rename from project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi-IPC.mk rename to project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk index 9756ef9ed..cccde3031 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk @@ -3,18 +3,18 @@ ################################################# # Board Config ################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi-IPC.mk +export LF_ORIGIN_BOARD_CONFIG=BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel-IPC.mk # Target CHIP export RK_CHIP=rv1106 # app config -# export RK_APP_TYPE=RKIPC_RV1106 +export RK_APP_TYPE=RK_WIFI_APP # Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="36M" +export RK_BOOTARGS_CMA_SIZE="1M" # Kernel dts -export RK_KERNEL_DTS=rv1106g-luckfox-pico-pi.dts +export RK_KERNEL_DTS=rv1106g-luckfox-pico-86panel.dts ################################################# # BOOT_MEDIUM @@ -59,10 +59,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/ ################################################# # Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github +export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig export RK_BUILDROOT_DEFCONFIG=luckfox_pico_w_defconfig @@ -87,21 +84,21 @@ export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig # Kernel defconfig fragment -export RK_KERNEL_DEFCONFIG_FRAGMENT="rv1106-bt.config luckfox_rv1106-wwan-ndis-ppp.config" +export RK_KERNEL_DEFCONFIG_FRAGMENT="rv1106-gt911-module.config" # Config sensor IQ files # RK_CAMERA_SENSOR_IQFILES format: # "iqfile1 iqfile2 iqfile3 ..." # ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" +#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" #export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" # Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" +#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" #export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" # build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y +#export RK_APP_IPCWEB_BACKEND=y # enable install app to oem partition export RK_BUILD_APP_TO_OEM_PARTITION=y @@ -111,19 +108,21 @@ export RK_ENABLE_ROCKCHIP_TEST=y # enable rockchip wifi #export RK_ENABLE_WIFI=y +#export RK_ENABLE_WIFI_CHIP=AIC8800DC + +# config wifi ssid and passwd +#export LF_WIFI_SSID="Your wifi ssid" +#export LF_WIFI_PSK="Your wifi password" ################################################# -# PRE and POST +# PRE and POST ################################################# # specify pre.sh for delete/overlay files export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh +# specify post.sh for delete/overlay files export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh -# specify post.sh for delete/overlay files -export RK_POST_BUILD_SCRIPT=luckfox-ubuntu-off-modem-post.sh - # declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-ultra overlay-luckfox-ubuntu-rockchip\ - overlay-luckfox-ppp overlay-luckfox-ubuntu-sim7600g" +export RK_POST_OVERLAY="overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow overlay-luckfox-buildroot-86panel" diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk similarity index 82% rename from project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk rename to project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk index dd93b3b7a..80f5ff45a 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk @@ -3,18 +3,18 @@ ################################################# # Board Config ################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra_W-IPC.mk +export LF_ORIGIN_BOARD_CONFIG=BoardConfig-EMMC-Buildroot-RV1106_Luckfox_Pico_86Panel_W-IPC.mk # Target CHIP export RK_CHIP=rv1106 # app config -# export RK_APP_TYPE=RKIPC_RV1106 +export RK_APP_TYPE=RK_WIFI_APP # Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="36M" +export RK_BOOTARGS_CMA_SIZE="1M" # Kernel dts -export RK_KERNEL_DTS=rv1106g-luckfox-pico-ultra-w.dts +export RK_KERNEL_DTS=rv1106g-luckfox-pico-86panel-w.dts ################################################# # BOOT_MEDIUM @@ -59,10 +59,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/ ################################################# # Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github +export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig export RK_BUILDROOT_DEFCONFIG=luckfox_pico_w_defconfig @@ -87,21 +84,21 @@ export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig # Kernel defconfig fragment -export RK_KERNEL_DEFCONFIG_FRAGMENT=rv1106-bt.config +export RK_KERNEL_DEFCONFIG_FRAGMENT="rv1106-bt.config rv1106-gt911-module.config" # Config sensor IQ files # RK_CAMERA_SENSOR_IQFILES format: # "iqfile1 iqfile2 iqfile3 ..." # ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" +#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" #export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" # Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" +#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" #export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" # build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y +#export RK_APP_IPCWEB_BACKEND=y # enable install app to oem partition export RK_BUILD_APP_TO_OEM_PARTITION=y @@ -118,7 +115,7 @@ export LF_WIFI_SSID="Your wifi ssid" export LF_WIFI_PSK="Your wifi password" ################################################# -# PRE and POST +# PRE and POST ################################################# # specify pre.sh for delete/overlay files @@ -128,4 +125,4 @@ export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh # declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-ultra overlay-luckfox-ubuntu-rockchip" +export RK_POST_OVERLAY="overlay-luckfox-buildroot-init overlay-luckfox-buildroot-shadow overlay-luckfox-buildroot-86panel" diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi_W-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi_W-IPC.mk deleted file mode 100755 index 608b7003e..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi_W-IPC.mk +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pi_W-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1106 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="36M" - -# Kernel dts -export RK_KERNEL_DTS=rv1106g-luckfox-pico-pi-w.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=emmc - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_w_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Kernel defconfig fragment -export RK_KERNEL_DEFCONFIG_FRAGMENT="rv1106-bt.config luckfox_rv1106-wwan-ndis-ppp.config" - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -# enable rockchip wifi -export RK_ENABLE_WIFI=y -export RK_ENABLE_WIFI_CHIP=AIC8800DC - -# config wifi ssid and passwd -export LF_WIFI_SSID="Your wifi ssid" -export LF_WIFI_PSK="Your wifi password" - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh - -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# specify post.sh for delete/overlay files -export RK_POST_BUILD_SCRIPT=luckfox-ubuntu-off-modem-post.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-ultra overlay-luckfox-ubuntu-rockchip\ - overlay-luckfox-ppp overlay-luckfox-ubuntu-sim7600g" diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk deleted file mode 100755 index 7e71da984..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Ultra-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1106 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="36M" - -# Kernel dts -export RK_KERNEL_DTS=rv1106g-luckfox-pico-ultra.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=emmc - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -# enable rockchip wifi -#export RK_ENABLE_WIFI=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-buildroot-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-ultra overlay-luckfox-ubuntu-rockchip" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk deleted file mode 100755 index d285edcee..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1103 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="1M" - -# Kernel dts -export RK_KERNEL_DTS=rv1103g-luckfox-pico.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk deleted file mode 100755 index 64736a283..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1103 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="1M" - -# Kernel dts -export RK_KERNEL_DTS=rv1103g-luckfox-pico-mini.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk deleted file mode 100755 index 22a6fcda5..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Mini_B-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1103 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="1M" - -# Kernel dts -export RK_KERNEL_DTS=rv1103g-luckfox-pico-mini.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk deleted file mode 100755 index 7aaf61554..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1103 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="1M" - -# Kernel dts -export RK_KERNEL_DTS=rv1103g-luckfox-pico-plus.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_WebBee-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_WebBee-IPC.mk deleted file mode 100644 index 717ec03f6..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_WebBee-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1103_Luckfox_Pico_WebBee.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1103 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="1M" - -# Kernel dts -export RK_KERNEL_DTS=rv1103g-luckfox-pico-webbee.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-ubuntu" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk deleted file mode 100755 index 80a6ab3fc..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Max-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1106 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="36M" - -# Kernel dts -export RK_KERNEL_DTS=rv1106g-luckfox-pico-max.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-rockchip" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk deleted file mode 100755 index 12a5a3af1..000000000 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -################################################# -# Board Config -################################################# -export LF_ORIGIN_BOARD_CONFIG=BoardConfig-SD_CARD-Ubuntu-RV1106_Luckfox_Pico_Pro-IPC.mk -# Target CHIP -export RK_CHIP=rv1106 - -# app config -# export RK_APP_TYPE=RKIPC_RV1106 - -# Config CMA size in environment -export RK_BOOTARGS_CMA_SIZE="36M" - -# Kernel dts -export RK_KERNEL_DTS=rv1106g-luckfox-pico-pro.dts - -################################################# -# BOOT_MEDIUM -################################################# - -# Target boot medium -export RK_BOOT_MEDIUM=sd_card - -# Uboot defconfig fragment -export RK_UBOOT_DEFCONFIG_FRAGMENT=rk-emmc.config - -# specify post.sh for delete/overlay files -# export RK_PRE_BUILD_OEM_SCRIPT=rv1103-spi_nor-post.sh - -# config partition in environment -# RK_PARTITION_CMD_IN_ENV format: -# [,] -# := [@](part-name) -# Note: -# If the first partition offset is not 0x0, it must be added. Otherwise, it needn't adding. -export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs)" - -# config partition's filesystem type (squashfs is readonly) -# emmc: squashfs/ext4 -# nand: squashfs/ubifs -# spi nor: squashfs/jffs2 -# RK_PARTITION_FS_TYPE_CFG format: -# AAAA:/BBBB/CCCC@ext4 -# AAAA ----------> partition name -# /BBBB/CCCC ----> partition mount point -# ext4 ----------> partition filesystem type -export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4,oem@/oem@ext4 - -# config filesystem compress (Just for squashfs or ubifs) -# squashfs: lz4/lzo/lzma/xz/gzip, default xz -# ubifs: lzo/zlib, default lzo -# export RK_SQUASHFS_COMP=xz -# export RK_UBIFS_COMP=lzo - -################################################# -# TARGET_ROOTFS -################################################# - -# Target rootfs -export LF_TARGET_ROOTFS=ubuntu - -# SUBMODULES : github/gitee -export LF_SUBMODULES_BY=github - -# Buildroot defconfig -export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig - -################################################# -# Defconfig -################################################# - -# Target arch -export RK_ARCH=arm - -# Target Toolchain Cross Compile -export RK_TOOLCHAIN_CROSS=arm-rockchip830-linux-uclibcgnueabihf - -#misc image -export RK_MISC=wipe_all-misc.img - -# Uboot defconfig -export RK_UBOOT_DEFCONFIG=luckfox_rv1106_uboot_defconfig - -# Kernel defconfig -export RK_KERNEL_DEFCONFIG=luckfox_rv1106_linux_defconfig - -# Config sensor IQ files -# RK_CAMERA_SENSOR_IQFILES format: -# "iqfile1 iqfile2 iqfile3 ..." -# ./build.sh media and copy /output/out/media_out/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES -export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json mis5001_CMK-OT2115-PC1_30IRC-F16.json" -#export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.json sc3336_CMK-OT2119-PC1_30IRC-F16.json sc530ai_CMK-OT2115-PC1_30IRC-F16.json" - -# Config sensor lens CAC calibrattion bin files -export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16" -#export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16" - -# build ipc web backend -# export RK_APP_IPCWEB_BACKEND=y - -# enable install app to oem partition -export RK_BUILD_APP_TO_OEM_PARTITION=y - -# enable rockchip test -export RK_ENABLE_ROCKCHIP_TEST=y - -################################################# -# PRE and POST -################################################# - -# specify pre.sh for delete/overlay files -export RK_PRE_BUILD_OEM_SCRIPT=luckfox-ubuntu-oem-pre.sh - -# specify post.sh for delete/overlay files -export RK_PRE_BUILD_USERDATA_SCRIPT=luckfox-userdata-pre.sh - -# declare overlay directory -export RK_POST_OVERLAY="overlay-luckfox-config overlay-luckfox-ubuntu overlay-luckfox-ubuntu-config overlay-luckfox-ubuntu-rockchip" \ No newline at end of file diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk index 14bf3f8cb..20b1b395b 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk @@ -58,7 +58,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/use # TARGET_ROOTFS ################################################# -# Target rootfs : ubuntu(only emmc)/buildroot/busybox +# Target rootfs : buildroot/busybox export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk index 21658019f..545605445 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk @@ -58,7 +58,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/use # TARGET_ROOTFS ################################################# -# Target rootfs : ubuntu(only emmc)/buildroot/busybox +# Target rootfs : buildroot/busybox export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk index 14353af66..46d3266c9 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_WebBee-IPC.mk @@ -58,7 +58,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/use # TARGET_ROOTFS ################################################# -# Target rootfs : ubuntu(only emmc)/buildroot/busybox +# Target rootfs : buildroot/busybox export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk index 84a3adb68..a7fe20a7a 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Max-IPC.mk @@ -58,7 +58,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/use # TARGET_ROOTFS ################################################# -# Target rootfs : ubuntu(only emmc)/buildroot/busybox +# Target rootfs : buildroot/busybox export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig diff --git a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk index 8490da731..4d9cd480b 100755 --- a/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk +++ b/project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk @@ -58,7 +58,7 @@ export RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ubifs,oem@/oem@ubifs,userdata@/use # TARGET_ROOTFS ################################################# -# Target rootfs : ubuntu(only emmc)/buildroot/busybox +# Target rootfs : buildroot/busybox export LF_TARGET_ROOTFS=buildroot # Buildroot defconfig diff --git a/project/cfg/BoardConfig_IPC/luckfox-buildroot-nocsi-oem-pre.sh b/project/cfg/BoardConfig_IPC/luckfox-buildroot-nocsi-oem-pre.sh old mode 100644 new mode 100755 diff --git a/project/cfg/BoardConfig_IPC/luckfox-buildroot-oem-pre.sh b/project/cfg/BoardConfig_IPC/luckfox-buildroot-oem-pre.sh old mode 100644 new mode 100755 diff --git a/project/cfg/BoardConfig_IPC/luckfox-ubuntu-oem-pre.sh b/project/cfg/BoardConfig_IPC/luckfox-glibc-oem-pre.sh old mode 100644 new mode 100755 similarity index 100% rename from project/cfg/BoardConfig_IPC/luckfox-ubuntu-oem-pre.sh rename to project/cfg/BoardConfig_IPC/luckfox-glibc-oem-pre.sh diff --git a/project/cfg/BoardConfig_IPC/luckfox-rv1106-tb-emmc-post.sh b/project/cfg/BoardConfig_IPC/luckfox-rv1106-tb-emmc-post.sh index 8c8a4a5b7..904f4ffbd 100755 --- a/project/cfg/BoardConfig_IPC/luckfox-rv1106-tb-emmc-post.sh +++ b/project/cfg/BoardConfig_IPC/luckfox-rv1106-tb-emmc-post.sh @@ -39,7 +39,9 @@ test ! -f crc16.ko || insmod crc16.ko test ! -f mbcache.ko || insmod mbcache.ko test ! -f ext4.ko || insmod ext4.ko test ! -f dw_mmc-rockchip.ko || insmod dw_mmc-rockchip.ko +sleep 0.5 sh /etc/init.d/S20linkmount start & +sleep 0.5 echo "start app" > /dev/kmsg test -n "\$persist_camera_engine_log" && \ diff --git a/project/cfg/BoardConfig_IPC/luckfox-ubuntu-off-modem-post.sh b/project/cfg/BoardConfig_IPC/luckfox-systemd-off-modem-post.sh similarity index 100% rename from project/cfg/BoardConfig_IPC/luckfox-ubuntu-off-modem-post.sh rename to project/cfg/BoardConfig_IPC/luckfox-systemd-off-modem-post.sh diff --git a/project/cfg/BoardConfig_IPC/luckfox-userdata-pre.sh b/project/cfg/BoardConfig_IPC/luckfox-userdata-pre.sh old mode 100644 new mode 100755 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S25goodix b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S25goodix new file mode 100755 index 000000000..a699df992 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S25goodix @@ -0,0 +1,12 @@ +#!/bin/sh + +case $1 in +start) + if [ -f "/usr/bin/insmod_goodix.sh" ]; then + sh /usr/bin/insmod_goodix.sh & + fi + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S26wifi b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S26wifi new file mode 100755 index 000000000..cdda340bf --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S26wifi @@ -0,0 +1,13 @@ +#!/bin/sh + +case $1 in +start) + if [ "$(cat /proc/device-tree/model)" == "Luckfox Pico 86Panel W" ] || + [ -f "/oem/usr/ko/insmod_wifi.sh" ]; then + sh /oem/usr/ko/insmod_wifi.sh & + fi + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S27ether b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S27ether new file mode 100755 index 000000000..754cfee64 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S27ether @@ -0,0 +1,28 @@ +#!/bin/sh +[ -f /etc/profile.d/RkEnv.sh ] && source /etc/profile.d/RkEnv.sh + +network_init() { + ethaddr1=$(ifconfig -a | grep "eth.*HWaddr" | awk '{print $5}') + + if [ -f /data/ethaddr.txt ]; then + ethaddr2=$(cat /data/ethaddr.txt) + if [ $ethaddr1 == $ethaddr2 ]; then + echo "eth HWaddr cfg ok" + else + ifconfig eth0 down + ifconfig eth0 hw ether $ethaddr2 + fi + else + echo $ethaddr1 >/data/ethaddr.txt + fi + ifconfig eth0 up && udhcpc -i eth0 >/dev/null 2>&1 +} + +case $1 in +start) + network_init & + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S99lvgl b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S99lvgl new file mode 100755 index 000000000..cad4c6854 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/etc/init.d/S99lvgl @@ -0,0 +1,14 @@ +#!/bin/sh +[ -f /etc/profile.d/RkEnv.sh ] && source /etc/profile.d/RkEnv.sh +case $1 in +start) + if [ -f /usr/bin/t_s ]; then + /usr/bin/t_s & + elif [ -f /usr/bin/86UI_demo ]; then + /usr/bin/86UI_demo & + fi + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/86UI_demo b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/86UI_demo new file mode 100755 index 0000000000000000000000000000000000000000..2067dca19c0b6fed3b43e12eaf0656b2ef929119 GIT binary patch literal 4400956 zcmcG%3!D_i)&JeIGYi8qz%0Ayx}pq%x+=;u0=Og0cc$l9(q8 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 ^l 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 &#l^bqAa95f3Ft3`Kq&9&rTtX-{h{zf)#f`@-p& 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 bg9_;_Nwda+$t?4n%r;IfB8nwt^ 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

|W)26_iH7fgJAp{PRgsbJOuO79_{3CU=K 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≦u}douY!x^cQN*%_%s^=!zJTMVBmv2E1!^z!N4dlsU>~op+7K6Novu9^3VquMI<%% zK6&U3jJ%SXjm6Oe7vka#!dbyQmsK)l5pe9Gb^DS^AwQEqff`^4CK>-0frKg$rphdJ7i1M| zif>E0xGIZPLLefrsRW$~gk-t&3nQEvuuo_$ zS+`1I&y|`lnFXZ43zF_&>a#3z{p~O0{VD~VWmdt(%8m6kyL=9OyE5>Q6c7063R3?S z0?8>5a4YF1L8dH{XVhBKI3~b|CV6rq#$shRa1J_IBeaqN(<2kkMk22KUAcIBtkO7hDY~Fy4e6 zIb=hDl8Re8ytuHPh*v3UKY8pgvd_KF>2T6+`?WtoeaY8^Mlk;KZpCqYP5UE zz31~(0ryw(#&K;Ssd<}h!viX34q|7c{aP+6%j+I!s3^6{$*)kkfSo(z}T&8Zx#rw%1E2S zaaVfIEPuYl_{*^dhFUO{M2s)2<>)D_@JRykFiP>|vAYZN^jITY;F5>)o2vJ@&7K)k z)<8>tESredKQ~xh1r>@vyHz8CnCGrGb>xtxB&IvnLg>r$Q<&#n!xEeIBcc1_ReD-) z6uXCP*B89fGunxRF3;Ym32sc{Q)l=ZnPpX;ak6so=UB_FLTZ4i$FL80G8b0c^TPj7 zdU>!?KFFq{@e44kB`lUIQ$1D-G0xXMdRmb0wZZm~&&uGR(7w`coAJ!7<;!KeXoAFUX#Q7rtAff7C{w!vO^K zpYE3~BE6)heTVeA!K|r7g&?Fr&TW%4m(->c&6ab#?sdk~4Lh!m7#CSMAD3B~dwD$?~_Laa_FyYxqY>3>FQfU`xpuDd;_tL|65steYr|^}ddb zJRt;+3KHuNe*$IX@09}N=!wgGZ3A}FZpqyUZA6Cz+3&0neMV8)L46O@^HPq>d4iV2 z(P!!v2{){kFf0I-IV-7IT1FCWP+R?;E(j}wGIGA6TQFvZl95N~Mj9gn)_U9_w|Nbx zLKnYQ3hvhzS&QfSQrS#@2I|?P80)5SgJ?BJbU()?T?4%QaXa(p1j^}wzb7&Bqs z>L-LxgfzHxA9gTFiypg8^MzK1jvKNImtlJCEWgVjsC#j~H23 zC?PmrxKYWeJ1z`&ywF@Nc?7OKg_77e&rxx4jO{C`Bbb{~(q#M5v9)^*dAx+Tj-ElARVc&=shIJkTMIB@7~k4lW6ZV9VxM0pGwxU-k-N5pPBIjVSbi zR|prUmLj_n3cckO!Y=ZltlaEA6dK?anu&bjaIrjFF;dej)C2je!5=KS66qyg8J6cb zA}_`Dz`m284KV~;5-60h36J~&I*@K_@xKv@hr=>=ZV`x;bSetxb4v-lUVRZNJEB?o zP+q{&uC9`g4vp~~Z#C>zWLjs*?P!20cT|?{6(fTV>+(td0Ay4kp+Oo)VyUdWSilFV z5A9Ae=Y|g?YHn6=8&1f`M`)-F`7yhp_^4j->2VCZIesS!y^rd*9CE7Un^%_wr}75G#oF6hyyLOe&=nDh|g=vIhmB`xTQ$4c(2*6WkC73A(KhY6H8rKJ3h+o&t=mf?eryO+3YvEs0Y zRG*@SPu$B`Uy3cEUa$7w8WzNb@xmw2x90r_6-R{lHgnMH;yh#ZaLNXw`oX`@zI8&a z&W{Xz;{HY<1;?krieHQPWEHQ1 z@h?@pG{(W1!%zU@3spQ8J3hyC*&qeZQhx^f#;8zODZGmDMk?MK znnfv$K!GMIPB|W@;%u1|IDvf}a66&GBT66(&T2O6)eGvq^d+Fz=k5i^3S7ohh62r$Kz)qAq~bZSLtCWc49CHdz&whoC`J}0fKE+7`2tKDiG zcub-hw~+L8D6I-6?=}g)qmrhh?4Mt7Gn)!Y-3nQfXe>1auPqQUvH`rZ90t=;f_D>a zbp9|EfU@WK$*wHB;FV)7pjpAtEm!(J%XJEP1*LDZET*0i;C$;zm=mr;x=ZCRu<2k_ z{LX=Mt~4>tVWdx^j<(FZH1MZQsGzdlV2%=;f2-uhv{Dxs;L zjzM0gBGOoP85f4diEbcIcaigN+AOCKsl+O- zHq7eL?Mne?9k*2vO^ zAFP4tD*BNw=Ks}Vhg%rlUGUj$;ykaB{f-y|mf#h*mG%}n|CVla04JMe#~y|A9Be#Y zseCN?CrM_&upiS@j4tRv)c^`zC*ia;5veqT=DZx-jqJmLxBxEuqcT}Blbs}N^bpr05 zn+_zRY*Be;qUX3(P>b_}e!(7tnmK18&QL8Z?bCy+WNwsJUYE4`p>aj~F_J%43a(Ky z@|b`t3hw2BHc~KMO({^}E6LPDk!0pOFPZMn=OM{U)lP|&#ESAUnxfzGQjj-xF`t#p z-L5l_!LjINmtZ~ARzoFXSkG3v1he6+z}<1Sm)dFCdzBjBN#=Jh?Lye+yH_~TX*r(g zlEg{xco(lSX0pDE`I2OA*PgThW6`g8&Lwy=YU^=Jf*(ufQkP&7jE)c!2 z|6CX>+_rmsXx}y|9&Td4O_(PC;{mfN)ZR*Lari?Fxft$H{Sd;(uOmKrJdV=gQW8nr z;;@KXC;@W6T&QpylaCVXy(&4cnMU*)xW2gj&1uzRA|c=c%|mh{^nwubVGZT)upHQ+ zux|t8J(SzR8jCQg>#eM_^Y7MM|d;u+3IZcc5yOc`2x7K(IO{^l|K@E&XV0DP8aR@BKX|~+%K&6im z_~~yv>Zu6(8X41ZgyBwSvlM}`q^al73~MBRVh{=(R=FyGao*|{B2@jnjpC(pVz8b4Y_^5JeuH*!)<6X5oJ)7sj~Brgux2dK8Nwinh_2dvnk->}E; zQq~DsPfeZO_H&9d0KuL(d<~7|=bn=dMyA z#8fpxl2Oic!+q|ed)7lQ zxdvSL23h(Y&(O{AO47JmS}v@n^XeW*&Ql~{{PaeRGe&_Sx&(oRhO8u8QxcDQfP&PW z9?Rth;;=uUTYn7f6*9Ei)3tOb{u#G(#~M=;H6J^7jqnKo;9chTxGvGvr)N z{EhicHj7soJ*b9Rf@v(}r)#<7*^^`^y``Jqh4|bV0Hr`9)djm$4 z0#EZcbXJ0EYXk$~8G1!m2z%1BLh1vn>KwkpX@E4bf%$3C@uIr*(n`Zg=bF4HC3U_%LDezN z)3UQ4N#=9$EL)z(3E}FXKxVMB%Ht#$`SdyDm z_Z2rpr7QUt#^}8hSYH@U4m9UmUMx)~pbo{F_Zm3(;oIe?r+E5E-tuavs5GQ*3~Hr0 z4nb-wEovax#XV0(H2Dx>O|`H?klJF0qp4(Q*CI609ETW! z&@T>0Q%db-&2b1)TjX#wrPLZ|jzbK^)P92d1@VQF4{1!P)zkHCl*UMH9x$j5YAh!% z1Bo^G5NsHxCRctudP+^YD;|v0X3ON=m{P;h)QwTwT999c7MS)}5lK*L$aDR+yu%fB zMOwCWMO~491k(kMg!}y5;J+DL<0>f;nIJhR-Vkw=SKX)qOL?EGBKeORf<#I_ zE-CRMxt)+*5L+(!OG5bA_@{XJNto74UVbIy_ww?aBEKoino^^@u}anx z`J;apJ^O_vkEvn(1?21BBln@j$(o~x3DVv8MMa$>%p25g0uED9F#IGq1Brv}&Bh8G zmC^H~uSw2XZ@Pl+hkJB}L3eh9#%qD-cmc4o4VkvKC1 zb~$rAOw%vkfz_dec>0#j+Vj{1PUx2kFpgqNwD?|wf#kC?7c~xg099p5(z+AEyKq-R zs@(pqN^-@6vd*g0VafG+3>flIv%;ET5Lwour6~pvNgAY%6!Icv$g}O{1=wt~CHj7M zXotX=E8J|TAbSuQ=mqE|3BF3!Qxm-oD`8qqlPT!9m1yfVFTfr{V5_@WK&&`UOeaI5~)`1>Fr>QcrICZa|8oMWYQW!efpT)s-ls77`T14>v@$F`A=^ za}p|kPBR?hh%oq)6E~}=;=JZi2!&_0xBJ5pCIwEMyQwK3DhNMM?gQ*mFq*)`9SNaS$X^jME=kSEq?B0 zcOW8`K4i#+y$|dPCQ&Zw4$3&}wWU){3Bl*Wv$B|4^U1_Xn3|VY&4!=b?Ocy%glY1e zNEi=mvI!)1nu{qS`>1j!O!Pn-o&Kx)5d+H@ms^;kkZYj2Fo)iC6bLNUs?X4VU1~s2 zLO~U+VNQ}2|9K#za6lSAvVz9)fgm?v_Qa&a6)GeDs4Pkoc@u%RO`f2$QMuLd0$osH zm6uP?T^qNHk_07v7J6=Xprk|kL6vk!7ePtyh;`dhk9_l|y?h$vLqBf$2A;%RuYyXt zqZgp0L(A`Hv^2)6KuL34e>PA`dbPolq)PfxFF;A3bFXQE6eT^?tDuq&nb1(uA?2r% zmMze<))`OES%p*}B^@&CsHE>!g6cR5Egef#3_7Z$-|_J2Wf7daS1XiMT#ZhBhd$or zTJKO*bv*S<{MZMTl`tHW#+iOp+H2b5DfB01O#jZK9A^DpvlQ_e8hlp8jpH2x%B%Xa zog*K6WgDSO1adz`W(wn3RYxX``Uy&RQqzJ1%3+t;D`e?RXYcT@C$;#{>?%U>X+w@?M1Yw1B0|4h{M z%4+0=rvq~0Tu9)D{yw0@xLDYEK*tOs<7Q!;oC$-^`SUW>_z5nih`cNT_~}epCyA}b zQcw0CKU1aQ7Z%=Y%%y~Ga@}tIhV}1WH^ix93D@1*Z}3C6iG4g*s5z0!oGes$w2LWCIIv+Pyixa?^->RLa$38f9T|ZbJ>?Ug>z&l)gzc@<$-d~phUiatB}33 zGBAR%kp#RYO|w!2?TDeb@9?dv7rKiitK}qP!%+pC9=ej;9*4W)Eq@jLEu{z*T-fEoGz_7 zL?qKh!nMdQG3p1_syd`KYvV|l;a;)_IDzJ!j_0p*p2Xx2g?JcO(lxqQNvdNEb)E~U zMJayWCmu`zI@?!Z@q90Mp`f&!Q8)1nCNZr%9{K8gM9fu#)`P6P?DS@V%Ux{rvIUQZ zoS91GQjSI5TsE&4q;Q37jbFs7)O)D>{HSxNp0@g2p9P)QgCYan3wm}`@i_v+)Q~ujqxd7km$;qpd5!5JPey#JFru!uNY^s@oa*A z5egU`3ptrDv=N@QtN@&*VyqYnZx99<&KJN1mWzeoCjti4`4{ET-eSvZ)DA-Yd|}oM z<)z#$MkLTeANqUM>sVn1)mJup)tl9c5vt`bok^->9TcOz-jlwB%k< zgcLMzVr(_VlSc)lKcgHSuLeK&scVH#X~@*qJ?c!J_5LH~>+}S*G5~|?2ktKV_Z~S^ zE^IC&pA&5W8_AbrB@->#Z8f`qy4Zz4gU_5{#07x2`Gl-yV9x_UY2WgN zyfh&ISS&IWTz5YJ+GewvABsf%LRMEEjnn*(+`hj0tbYjY>;3ZnPw@hC^?zDcT?z)A z@89RAH1LH)cGo{1GCDGb=W%wD<9m_5KEbt*IE_YN8sOY)H0ni+s@|;Zsojbk52$_^ z!IR^hC7J6yZEab17=AE#+uHHB#pr^;+tyxD0Nk?bYHRLh&|r%0qTB#0^MT5^3BdC^UF0#_9LKOR~3Yh{6v{pZi@S@c>Xb0{o4juu_T$!_hYU9c|7@uotUODk?Ky9z}_@ae^&A$*u!Lp~b# z@Wrh!Sz#QPA>)^~UYo8KTHwmwPyBi1#aZNjhoU>wlHg?N4*>KFBI&XD-xoDwl`eoM z2#AOAV>#z_gdG_ukNZRR#};@vovdKkdw_q@pV11I|b&`Q1r=gQ&MgD0BjW6`rw}ZqVoJ-2Dba3I&Epz^A7xb)N{jQwr6*9Gu)w&-=QoS<}gALD{S)>x!<^ z`b1`z-h!mLaOWiX60;1RB-O-sg%^l9h^D4`0rsQ>GU|o^@xo~rlbq0S;}Z{+4&`c2 ze7(meEZuVG{OP@afA>-+Zw1g|lDPF__tIGUqTZekNz2D}`U6kG^?T?^zdngoUFwo@ zBHNp4gNle5e!;=Llz3;n8M1w*B+ktm*0M^8+=a_Gc=%(zBK4Ik_u16m>e{Y34I^<) zek3Db8`fiKVPkK*keX1BI(}oC{t{Z4n#ZuK$ZS+`S}H~zbnBlFF)RgQUYE9ZQ5Lh| z*zlrK_8wy}pRXbRVX6BCS&qG9^5!$g{&)>qac=P*ODOCd+l54`?5wlMiNt~YsCvD+ zp6Rb;yHN;z1N;_(5VI)8x=6AM3g2T~qwhKiL`dU3ftv*-r=Xj$`@6%K#=w(yTDpU@ zSQ*}&F5T*fg&r%UyLySrA89*54mhxp+*0KgD((hbtm5@z|abL@fQajhqBNPAX&-Jch|Es*6u!;c695?X-_mrvdNZ_ zb)9##$UKYb&JPxeRac{2pp5J%g`t-MMW(9r^L)U`QOHX^GYGbExGw4uWdxQ)U4Ro= z>4>EJxS}9f-I3s-oBPrdE`zU@9Xa3SS1Ym}mR24gg~o1oGN7sU5=t*t14U+Pz#-;H z2s*kyC6QLlfru)By+Swjh%FA$F0tWK_bl`%^l0u@!@H4^F`K2xG!gk;lKd8z3HVM8 zvResuC!~#OkrbXJ*|>+B9lOHw1zl!xVJG??GAE#!0WJ~R_^FRfniIl!Yy@;6chX7F z)7-qiAyFAEkHNcs^XI3F@QEQZ5=Fef#_b|m@alRcxbd#z)}bJB*65VJ2@>J8Nv4Rq zb(`{Pay8Ioy6IEo9b#{P#x;G5lViAg)Ihp&oPVaXCW+_K-0w2-0Y-3m(sEZ&iejot zkB0B{R{4b}GZsX;A^D2dCxUjaPC$qBGm3=tk4ac-csKRhhZSBUOudopH}wLuM?*zw zQ--f2=d zwRmQe%6Bh~N$){qAbuEu;1Q9Y#u%e3c-RlSffTd)=#?cbrw`T`u~a{s(-HeK6pMYD zOg`zsvRCZ!J3(hlYm7L~;bAz}fHIR+%O88ga*g;3(d7K~;AYJSHFo-t496XZE8{Mu zr^-66LT}pGVhqXYXNBpq9h;8@5vi*hFl2EMB zY|7^t!mtijsaCh!$EgJIMue%jaa~mD)?RE={h({KWw2a7^`v)d z&$=&$+(gq{dGYBd=887G2KB%1R=;(QhU0N`hQ$9GQqzqRco!xj ze~P(-48_-lfUqZ76~Poa+YS-fUqZl1e}n+Y_+FqNEAYbPmL(GN)_Gp%y*YdhPJv6W z6tWQVeNC(xEJp2neJe{&!gxPx+UPv`S;94m62PDAFs)c1`emvY88rF$mk~YebIHK+cZkk#rK%(A5q(KBT!h@m_rA77OQ7q)yK07upk>;7 zT}&O>hv|wg$tU2@>)e~<7NN`WwVSJAFQVlmUXKj%mWcA3mALDe<1E6`Z8H$Mo|LfX z3O3(?!x(ky+)Dd|-YI9-Yl40q4< zP}RW~=KMFxSpdxU)sk5Vg88wl1y1mk`1trN1+Q%Sk{Xp^Wv-9|JN{y$UsTzN=1JNP z%;H{E_+5Ume)}W;GsZ_7w#RX+fy4I!LXAU;Wyw*V=nu0gnEbIUzS{WtHxN-?p^S^!LL{xE;IFe>x5{_tG{SM-Oc zA$%~-7p6DP!NzCB%3$oCAV^$xc0sqYs0A0EHm`@rZ?81PS*#IV_WnM`3T6CI_fDJ;_*r}Dxybnv zTqo?Nd3`>;cjRD#+Ld4AEXx9uOa7^3eIa1&!|>U6mx*V28jPlSrhLGRo^OVm{OSl{ z5sLnb_D;h-q*{kqkc^o4P5esWQz7rPGS2^k%{?c;jr%L>iYRSirHeINBQ$wH&McB> z<8zV$8DvY$1i#MU86?eFw;C*yq!sT8CeNVBIeXk-nIuiMVFp2AIb}v3CQtLWE^L}!i3v6P2~Fp7^f5aAOL;|GvO3V!Qvv&3eBWelt=f13Vm#tPs(u)@sG82 zNmN1ZB=ta6x?5etw~+OXt_=VUvsHvI&1cwmU_GJV32RCe3Q^q_mBg7UmxPb1QaI??iljwSe_J5#BDO7;p=4jK~Q_{3$L?*0DN)Z2| zV)4`k6;)SE#XZM=1N`%y?l2YesIrz>6|u_wi|X1XUJ})bWFBQr|4fyGt7}n%}*O2I-{9L;}thM?GemR z?^J`oM{oBO9l4+Q>-v~eqPVL%KR%>a8@)f_+iGgjj+Z!RKY_C9{+8Dv4?Y6<)H3Qs z;Vp#O{T!92M3`DPR0;lv&w~+L)z?aF2Kz0m) z6GK%(&lrg~0%sej`&M|GxJ8447D&GnUfi&iY;4YEv1*@)F0T>@5FdR9$@wHSE zl*Eq|&#E>T57O$sNi~gV>b8eNMf@!U zSmw1|*SR`7fr- zG36_u>?CzrOd00`!9qyAS^^}Ev^aNGAX(BjZN@F5zZ`2W^?K}ZyuKP@1ls${e{6PtObXhzOT>Nw;0eewa<^*c57I!j+p!6^+ z=c9a4d_xjU-f#8OWw~fz*jLcUGGjN;1oc~ARIQlvheLA(nTexCh%+l>{#Bi%0%R%9 z+zxOr$~sb!`RX$LHYfpy=(6O^j&>-@YSHlItIL?4?D<%Rw<#=CwtXzaI}nc&?2EFt zR#c4>{<%l9F0cQ!w8(8 zo7AFYVxAg(Y1spWaN*-VrMd75N;mcab>2J0Y&9_y2XNBmV*0=e%@h60K{fOL8^>hhhrSmHWga zQJM;DlKzBHdKI^bT3=|#SXWBMU4w2T?jERD^mTf8nT%g894st%BXPd4EF~1%L)GLR zNrFXgG02_$xJB{A+|~Q4B_Ymf)u;qrUuDZViZMinIsvWnTj!>fTKXvtM;{)}GqTP~ zhwB}nH|?PoSkOww=b^n&mJVO4bL1OexKicOeT=W#@!=u;do*$PbmS$W?K1~fOzu@$ zsktC2knuw!1VbUfzmzu~_(FU~c~JC+_->fc1weeBhQvMW@kyob_&}d&=!#Tny0?Ze zRt7&)C&O~A#dFm68aj}EPNqF&!+^5TWcR61h>^w7J`h!@w?d&<8r7c(g&I;0?+$^o zEhp#-FH~$UAuH4=V?mW{K9+JWz7$VdBjFP zBDvKW-Zv7qs2A@lXm?Qlk>HY)#YYlSk);^kR}!|u`b)P7sqj9NkP7EFp_3ZUcOq|? zroch|6YQUfVE3VRlkZ{oqx4>;&6nDmhzZ*Lspd+Ev0$I-6-NlZMjhZ+O;@uW6!!P6 zrnrTepMQ1!F*7-&y*?JWhTxBe2Gh@yV_}AmF`*`Xt%1YNsiE`r5a-%3ev|eSr-}uP zpiq93vi6g@@xf0t|IbQnZAm|zcv(MFV!P#&f&rp2&nvOx@t z{P2u{ZWjWafvJ5=$JOO3pzS4h=~DDTIsdf`CGCsy<6@f>fayi<<}VkU{~1T_|oFfPpW3QT>Uz&Ir48 zSz%f+I)*m~c~Cv-%#p3di|V@udJEejXfe7kIDFRb(Vg-rA+jLjKd40eJliKltV$xKipSo2; z)QF{s9l;)nu>yY}117_9=aK9OVi*dDroK~D;rs}h&vZ2Br=Q9$h5SY*IzttE&Hw;CX0TE@cAr&( zFT=YY45GKIaysc+{zSoof0Lp-lb9}|ZRwyU{cVAB{Sy9(27rhs2ckPG@{!1#;Z89| z6{=lpoadh~ib<{Q-BgznKGj_fo!NgvR$30Gi(^&qig0y{+`FEnXMr2$Tt1$D%qa9* zAY0FnoaZoAX8lbMS4Mx&fv0u9`P>K!&drSwOd~(0)k3mxxQ|)q$_%Gg09S6|gJe&s z!aGmvck4T>f7ctFn)be5Mu_*#zYeU{QU@yS_L@Nhn><-^k3-Hs6I68}vxJ}|G7G`C z5Wd3pf3vD9bfo?{B@=cPOlGmj>T+qdd$ef&|JwoT_(S^#K%}upKxm@lZ%pj zG{PR2?MCFL$M->EryBLq3i+H{SYw2FLznfxkoyfwBDceJ%U%c4ffbMMiR|yFm!>s1 z@t)<@1oIKJ+{CWkK`iiKS)B5Q`1%3W@+YOV{!IH_O@u+^5GgDANRy?PG{Z$~Er7X+ zo#A^ofhB=VX|xi6hm4x1?o~=1w zqX@0A3N}rH(+ZPJp7T=Vkm38Q_nh`6k^9le8x)m?cairy@#bOFRo*p`$Fcer!K%B` zG@@VR_JZU-iVAWi-Vu8cx$uQZ2#aOJ`_=?4==CN3fQ5Y%nA&; z=!-NqLdy@;nmodsRy^rK5jiq=$Br1K0^6{8u#18aF5nS}bRg3i`&hp|~5e_g4< zA5vkbU{Q(H6|@YrFenCqe6lppB&qK~R|g*YQ-|VE7=DYR8#EWlj?yfQNwgL}9C#l} z-p5*8Efb!H#WQqydIGjpN-YBlo0c(XsmIptVllEDGsME{$;`nSF#FI%YqIy=1G-d>(cLrBP0D&+GxYnGl~6u|M?7`9TOfF&t_W+Lhe&6Rvw ze$DT#c&XVmPZ3#966ka+teA4gsa+~rd7Mh}s+9^RHWbcPyEhfule}uB0vn7x-LIJP z_;n!hbsi^NiSoZX9E18!f=(+H(BG0b(2#P-`z7YIQh~fEc~0NW64cV@WJgg@**8f^ zeir)ZtFVT8KUDD+N^rR`+>as$R2M3YG^FzVQPz&w1tc?FU>K6I-tr^l+ow&lXO_{~QH89Wgr0(H~ruJUS1mX8bn zqZLJ7l=AxL9b(UoVFmUh?L2gVQrVSP)mvrk3~ujfBd{Qj?UbhuC3_DWAdycKM2Fel zMh9Z?%S@R=-nD&csKRMOrgdmCflkebSn-NuW`0r{C zZK8s%s_Gx-&wDY9XZzDRqx2hnWw84vv8^zYgoMVbH$b5eLj+h}sz%EXk)1XnGSd(_ zUA`TOgj|Aq33!yLcl>hCg;WoD%!linZy$-fs)Kr*;zWwb08JqIX|qxdBfa}Ei!?7V z3;9~QHs7HH%e{+KbRj2Ez11y^-AW?5kjD|jX|MYAT2#n1Z0QYPky`RLQu|QE3dup* z*g+Od-Fe8*<9tiR2Kw={2)mfoq!Ze+DO3cn1_k-cCRCmzdvW3sz$o6ktRw} z{R6L~0h!o}ju~Zy)?wDhLHu))aQt1^A*7lmy|a?k`i>VMZ8*>}(;VasCllzL3Es`f zNw10m*|uUlO?BikE0FOX;?Ba9y0#q=KUr7_sMQtvG)}@66d0;;R*9;|AL6W7AH;Vi zIs)u<d7t#J2Qw7dXM{ue!k*6JAv02xC=?&%WmA^w#c zhmMm9m%b}?zMNM;KX!oz-Uz{2AvNj<3Gu#@kf1v$5Rl`YS0W27DFVJJ!3)Yb&1*m) zwAVm|8Gwnf$X6ejW$2Pz7bL)NV!=Jjc!qeU02ao-w;aB~N)Yn91~PuRu|F*~h2I;H zo_w6Xmfo}##NE_KrgEsAgk3KuIPhxoBoT83dU{;GGTjA0WC)ecr(S@u z@@Eh`QYZwAnNMonLLhy6^!!k$&=FKSTRs$`v)^X)ZJ0da4TZd848}6gC{@LA`3$emS5j&@bCPP;h z)>8(L$lJ-{->z|0g2_7(^Z9zPTIc7h-LJE_`|hf&7S${=Y#c^pQNz5!Byt3;yM-d0 zkErIyMczeYxtv$d1C`@$R}!~g{-~-SWH~b`>)8KJX*`1U=^v~}w_z16>uSWboi@V7 zWawCLax<%={ta#}Hc8L2&;TiV#N8**XCFOI)DKd0hTCXo$vp2Y5D7RbRdOG4i{kuf zshde|cLf(W7N<$ixtQ!FX>_~0L#!;B@+L?_`gh3{J4;6BE1Abl_ZlWf=yMYBE8Wa`lF6&MxU?DjvWrPCFxVaI;?fFgV;7U20s7d@ z#H9se?^3||&dUtArVosLC7D0C_1j2hdNCI_0SD;;E+*|g2+zp~b?{WH8!R9ua-8s?=F@gQLixxy7wFrLG;P;xl1e9? zrMWmr+G(zy7E8%PsWVS%4lLt>(LhKm;_<|`>?{>VEj)C!^j9M1*T=SjxN zw;Ekhy#D(ch>E5ab0<`Yzi8e_YhBAlc35otCFLXmKZ~S78dVj=Wej}+UIRI?Hx2u2 z!EfJA7+8nadu9EOy^rRSU?U9^z6<2b(t;pz@E0yY8AsSb+Our9o$jzC)t)_qoC{-a z%oCsY%Jv^&v^{Nu;X8mKvAV>MMR(~d)n3F zQ^l;b@JKo>-d=qqnV(zr{c3D4!cu!ykS3jISN+2I);BsF_z)mYKt)x&g;w%~?EdTU zJY^M4er^lur+!#~-6=`Q2c0Ty9~pFC6T?Hp?g_7_IyXFKB8(Yjkf(Xi!Mz*l`mK?x zXPlEId}c~DcexElZ%}|4uS@rzbOuX#_4A|XFA$;CV})>0*$~kzMRYfj)bGZAv|1qt zlC)0x^D?`&uy+?P6js(cV^&##t*G{^LZ%SF)GkSS9@4o{BkIBO`iPvNsxR>O&>X#G z$(%F|LSz8yta6O0UAhs71nZnO7KGnLYdt7$#uC(Dh%_MNBb^X6@br9yh!=>-koX6x zEKy~^Pv0$pg7Xl7Cm=}&;wy%By6@d%1RTs^AjHE1^t7lm!^OrM2@t6{(FOe=h8;wT z#MAi+0kiI8fJf7KA*!97O7#uTLjD%JtKX1^8tXc$k+|yccJhat7tstsRC<@TJ2Dn` z)9dcnV9zly8lo`Uc}q;)Fh9N%T+1HkG0`s!03V^??n zC02y`w%s=ggW2B)m9Jr>8G@=O)#&o!np*_E9NA(~SB9)I+u5*h)vuQ)@M;uZMp1QW zi0sc)oQ}*3V zy(lQb1`IF2t~vC36cdkQ(d7TnP?lQv4}7#uiYO0vX%u@CuWrUK zcX*%&j1l6qL{n=dT_QYuP5rPa-u^Cxb82w_RZ~uhM*<+}qYC!UPse<2H1quIS`t3i zQA}Cl9!OQn`N`eqXRZ;a1mRjrisxsWP-+MQ@H>#y@+Tv4-r2CsMdN0EnwXg_cqvNf zzZs8aE5>OK&wo2YW=j@L2!hfwTeH%lv=-|OGWIKJ<;0_LuU+CnKFs;uq^R@O+GAh=_-PLDwYJFBispT8us)$ZPZaPKDh z++23U6sjy~^IPiqE<8*<6H~$81*Mf%odYJH^8-|`t~u%E!;}lA#qda}nlc&iECGx| zM*6#Ta_4QRCPgqcrk&_?+CO*-#ild$cGICk8A9w@iJZ&?Rjy6K>vUp) z3hNQ*P#upUzr7lTu#nM<2BHwSV}lSDGHO@FW9X(|R;(|n!m)6N6{ylpa|;tS9043D zfS0&&(Nz*Eeh!fpC1o`45Aay;Na<*dMu4Asw_U?_uVanbeFI1(ZzaSyq{|V#s`8&4 z?a?Tbj zKR`jcF_||K(FAH^+41tZ*SN1l?Kemd54Dlm$Hi=d%==tSs$E?*a}-KBzrz3iCzxGf zt>^}8BKWz$&%n_GI>`jA3XfW3PdJXq2uF&dtC2ck`h2-pTF@E?(PSZKAdu5 zZLNnh7m2PY%C<{FLif5xt#x^EbQe%dXLOU|Kca1bN}NE_`wP%C#S8IFDv~)L&*UXk z^7Bk^SmQpP33cjzo(Xm9ex3<+>`{6qq~+(CP+EST3FXk&GokbH^Gv8T{5+EiREB<@ ziRvAFJd@(b)m3pH#Z|t;bCoG7AlB7YH-7&DwQ+bgYt*tLN%}cgFI7M%)I^= zX<$YL1n)eA_Etl*8&=kd)h)NJEGt7rO@W<+6?dCZj?_xcj656tT`BV-pcHq`?tJ*-h;bf&JtBJ^|0)vs@ z?Vll{TMHttid!xz7;6d(*J`qK^lRLHg)V-70xuF=jQ>@_Iqlei+s>|R<-~!)0yf=Z zD(aI)Kd1`*c1Kkezv#y)w89IKVN5ULR!QCjB_fW+M1!43Ll*%tHE%bxOzEg;eH9(e zOqME(|L&5&8yuFZlYwI_EAILD7Y%FR03|k(fyQ95l5oNu*^W?;@}X zmsSj6s90(u@3lFP4(EDg2tl+xjT~3+(Vau~6mqVi-sis`Awn`>_{d5P=>)Dl z5%P$TQ#X90Jw#Tafsu4xJwy}{@~7wQk^XnwN!1ZN1A%MR=AX_6j2fWqD92yoH=t&LWD5? z_gQN_d)~cf?LB*D@0l|vnfd+JS$nUKcfB9ade`U7k<`a;zW%2w^MUI(yRk&RRBM}) zsi)j1+3Rz0DV)$g&#iSIWTF4uOH!j}KkiD|HOL=XfIh>2=y)>9MEq9XQ*K}SE?ehN z+nj8~o6rBWso%D5{72rewuSC-sjsnxR=U@}v9Et(3*GKgUu081;a=ZwUyrhd{?4Ty zWK&K5lcbXpg+7-oL?<#R)Yp1)Mnm+%_sEv#anG_T#_-P!$ya6n&02Y4t=WmOfOtW) z)VWp3{N>?N#ik!|u`O)>j=h-amnJr7>i^F4WO7}0|1BNV*US7{;`HP){})UjEc1=Z z`+s}Eq6>cy`-^igIOpU;8wu`d_GR2Ky#KuC=-gSC*qOft*Veym zw~Mv^i8kwcmGu*wba0@S8;JIQr7fa1^Y^oo?W{NspK4rA_#d{g>~OgO6Kf^=aTDk@ zQRGy(oy#5W2)|LjO+IP~{Q4cJRGI5Gz|9ixQ#Pw!|L(E{tAETFvtpb1fB33m-13pn zK|fV#_VJro)8TWl-HvD!_{u&uL;mh_d1JFuCd(gFC#q5O`zwF$D*f<+-;S%ehZ(PU z|GW#&eNT7;;|2folNb2+B#kTmma|~;p5*MA?m!gH>APXXI$$HP*?XPw|~e8_B+mkjeC;M*vXpw4AH%oYJ5-f##kqBv^nuT z$=Am@k(;U=V|m+d=07&~I$NpbJxP7|d$z4}iKX`AMl;c;ZH~KJsqaZ{usMNyk`7V@XycE_as#ga@A+g$)V7= zmA2qRhw-%$^Hy5@2Oknoai6h;J)Y8ch`#<@_wSud7T2uSfOkFD;sIH1?;y79?edPPhz&v(Vso1!c_ONxiZ*kin$oh<>Ts_o@au~O);#+C+Vj(~2_=#_&HMWHJ z`;Fu9wKg^$+g1Dzmvx+t_0Z&8Rk2%Xx-B;l9JrrtOWk^XjvY=#WH;z7Y?h0w{z(o^ zhua+)DC$T{vA*@)s8{(=y!sTQeB0&Kf4p(!P3kaGvf8k%48*O zrG5FguC--sR^wLM-LjRE%(A!A&V8@UyqmL-=01Kcrc1o%WIgNnbI(8XbrtJmWq_{C zx7)T4pJJWf3ugTzjsAI?^4fSne&&yD%37AF|Gjh8^!WJkJzEAv{_FDjYknff+)UZ^ zaZEO5%8nva&W&y0QtqwzDO`9Eo zKh}Ka$lp8sOgkZX_(iZNUns2r%iqAl{VQ;VGnR# z?dh+)XJ4CP{;rAJ-ubWRn*NUDSzn5i<>5OYau}MqkUrmJ-}8r#(DOgVnG4b%ixm{T z@^AmIDTzNCFVTzs)~y=qGMASh75uoP^jxY`;Y8yZG#drPT^Zt10)AsFM{O6AL)&3ow6}>2S$8pBTq?I@LH>GYg)A*OT%geUx zlNXspDgHnH$*Hsc#F|)ZlKz}Go_^j1b5D7>QyADk;u76YLLaRMItEYV-` z)Uo5zjl`?J{`If_z$)Z!d6dr;Rxf>~kXAP0BF8fSQ7aMdA~Zgy*u+mYQsn7RZQ{Qr z5?^H#>mNkwVQy(Z(;X&0^ADfC^p0K2U4?jjL6vbg)jHnQw~@JoCB;9lQ=f2a*u8I6 zsiUuURHKvKZgG9|Dz^u3a$a!q$1j-ozg{yWFK(W8CTqAa7CkaZHwtamgI)bHy)jnX zf#i|5Svxp?F0(M}WFC2gO~>-weBApZZpY=^2A)(?+Fk-fDSC)(Mbq`NP8yNpYZHV={>y*6G+ z)StO*#!KS#=)g5@O!@X(Q7=4ZX7i;XgVUSX5&baDOV%!qh! z_&yEO1(Qw!TT(U7uf~)BWB=uzFl$umCbTLd}4o`@f=fW zl)F!k-7li#-6rcwSBXo@oig1&%;Y@7;X1xrDU*<;ChKc)rD$(^eews9JDEJOk;U(G zy#6hw(ofYO7tOXaoEz-a7Ux!t&t_A+W)!odu?2_%Tq~i(#zqbEME4_EM|fFItCDk< zmlF*=3R?IW&zZ>nw9TlSs~U-%=y~q^Z%H!QyxAocelw!!V|(Cjjr7mjCgRPjSq2)9 z#j1L*&401$S+TX=Vbe{=1U0L(e~)JT)MUiJCA7|#TkBff3-h5m&Yu6)JkzHGc0+x4{Q6`L!kFblB?I(;QhbMyHoC)Y$mX= z1&SG&w&(4SarLUN4n@C}}#`TFd+!BKLn1q_5l0MW)=3**#uo=a;Mb4YogE zxkGGUeRXs@D*VWGubt<%Hrt|OC<=j9b#h#Wmq)cl~75v%e zmJP1-gUqm=V(4+cuhZn>-#D+=Pqpc*SnlX#xr40=>yvIRa=0sJtgefG!)E*))9$nH zm++nO`)&HW_&(3Ri!zg+y^R-of+ME;RjvP>EQB{Rq+Q)eHK- zU2o$rVgKy8F3U~N#IqdqD_iTcHs^2b+rQ70SGQ=Z|2eW=HfeIUT932Z7W<_*a{i#V zDJ2(R{?lfCDgLUR=_MfXa!aEA!K3YZ=>N)c(S0oZ>Z8`P#NQ1^?roNy{p(Cgn~ zA=u4wer#9YcCX=IZNZ3N`FjiAkFZ2|(h~iZeZL8L)}X(N{o1qbHr;mVrWI=sr3nWd z@zJ(zHFt^*v0{9WZuVQC&X4OsuW~;@cM8)Hzr}L1<|Gq85p!b7*si?QTGOq6S^1;3 zqW$|)rrLP#UpF#Gl3DQ-7$x5C=e^KQG9~NR4d1{*@rrOIQyTG`*q}mHoa^>`?u--E z!(ZBp&GRxT^QR_nYcnU3XM5f%MJaxKvn8o!{c+Z;drjUq;{@|?%xsBfZMN0o(ZXcS z`q|DquH4}K+}##ytbDeuVE?{}sV3h07b?$AkK+7KsH|^$vbh5Yl=!OeH-GCA>xSw- zI4!2tc$hio^o8f0_OeDorVTlYylg1yT6S39?IWuNV)zW=D|@)V@L?~F9$Y+*-8G{3(sqW%fm@7fg1aNXx1oAOV5m#LIZ`TMMt zgPY3yu}!(PQR~lbiki|~XHyo%WsY;Iu<&`|+duLJC&LaII^?s&R={7kENi5E-_38C z^33OC31&VnW#{?vFu*ePpS&hnMhN2)96oWGdL8o(`BV;g^#W%+_0KV1{8-?-4U0GUR`B9S4RGm%zZ8?PKjn5w|dK?+n=dV9DWKu zbL^bq+CkL53Wi?!%9kIS9M>#P9{=j;d&ekn(2?KAk>$Ak#7XrUeQqPE{vS=H>h=gJ zb_vF)Zc-^j{U0uMz4c$%fW*Vr^0L&AKeKJpui^xGu*MwW0^SVjV|T?`|FoI*G;LM@_$B8C~bbpmilWp zFY&+IB;Gtz6jtjOHYfd2QbYx0qAUUn1{Z2a;y57b8QyZCwb zZQtYYd6B%F?Of{5=a`(g8Sdvt(Fd&<^0)eGf$_O?5t*PEiFe;B>V>ebe)f5h#bqk|qFuRvrMZOC0P zdYfcKr?@^_uRkdpN4J=|FF;0g@`NR{?a$=p)kaPSt3UY6gOj8Gxft_%IXQ{$tVGY3 z{~mdf)#Zujz9X9MA)2@K8_~RN-!ftT=vSk8)j4@(iWZDM8qMGOKrk#A{eCombc!3qmM-kwtgfp?Ov6O7K#lMaQQm~;!qJgv`L7avJi2szU&;T7@Gx$M!yp+eC$BK-RSzsN@elbjVy;)%Kn32PQQ!3j;;)keYA4P z==qgJ)lcF%S}Z^7DztRDwCCvDNB5qwsCt6bJ37{3p19EeX9xot0#Wj*l(%eUzJ6g=E3oCLSSl{V2mP5<$WV}by19qduTMtHk;kO=#%c|R#YkKzCuWQ?b{)b0~NFx%ARhEvf@!BD8%{0K<^6C*rhGo@9 z6ZORYpa*?M%LKPcp1!N`Cp_2N3YS;!jh5A3PQDpKABKPMa(VUFmCLGYXI@!*CG>*! zgx8xA?JTeUP}3Q@y!O^aKKNQ*{YK@A>Ysqd(5kW5Oa2xKyM+FaC4LXFD$kEfXvndA z^t9;Oo%>4KatXUs-lNnR`IdLIlRvBwEG)0Ch@@YT24mP0=|d~4uZynPJ{vlL>_!Lh zHG(hQ7Gy@<=smYqB>g6xC(n1mexz;6ZK}_zTv0m-W0FpNrL^&U;s4Yj#Sd~RUu ztgITZHv-Dkn#O;_qhN97RkiyYWu>0T8}lIiR#u7Zn%?U1|ER1P|C|YU)_Hi=@~^2) zCi2^nf0fwZryYE+4wGNT6}e>>hqbjWY4W3dWo_-&xGd_et*t}4@!e}{-_dzPYbUPI zV}$7!Yid8&Whz%syx-JEzxMOiR?i@htzzNh(F9#BQ}TK1(3;vCH9e^dIT%vqhhH=H zZ$>K#N9sMA ztSj;udeze;{<)X81!Dv0N1NgKTGFTuC48uxqk9o&cmgRx(aCXp*XCcd{oNUKrcWYBRX({=kXDRphO=X4O3iwzr*kL`1rTrg6uSS04t2`-x zCej(2c)M=$7qBVvhc*bUHUo4B{gb|-v%Y$~Nl&3A{MRe%Cw{5hs$4&5@J~9hwaE1y zl-1<|&reCYVc-IFp&wla_9acjo5(tI!{iQKW@!E79WpO@ej+V}_qfarlcT6Nv|;pc zO`p$|4HF-(TsQG>Tt22Z`P9%2wJnfW=SkVWU|q(T(^WRq)>W>rJt1YE(&dM4nA}-` z?KVuFuYH3n8|w_1Cq2eP*H3&>(}F(0@6e{nZ%O!SYPezIw#vrI>r8#m=A^A-_@|*w zwX>zp^+T+CL+x}kAH-T})8vgq8z=t>?S_0AX`yeSO+#nXq~+lT>9-qqB-R}$FSKqm z{DbZdlV2FxWY-0xg&00h_*!M!Hsxwtr0l}I{`JnvVRCck@7Lzr50(?6iV3&YbFJew z4}<51PwJH}q6JU9RQ87#N9T=xTf)P#Px_dN@xEa69NFi4ey@1hliP__ZreLLcXa>g zQ;#?8U-^0wyBtzkIC_ih>psVIOFH_IOSqq1i$XB!M- z6ULUPbHUiH^87tH_n2tp+j5nQMo%5ssB;^o>CV_LwuR_AV7q9^7CnD&Z5rNdX9!iZ^!tjbt-2YACmJJIeT$o zarHNHM)4k9Mn6YOsz=ONJobpt`X1_L&0El)mo(-J{ z@2gDRi$`yibBtx+HB{bDL;n!{&Xu#0YvIEX;~nX`Y_z^E=UXB(?1Vl-n;^be&V-R} zLiKA_PouXd$}Aq;1YR{w{Ty93CVMK?Bm8y~Wzd(U4UunLf?z>mV~L#0i0xrRU5C$B zCynyPW{XA_8CseSoE1%@$Qx1ZgZ8+X@V_eLsfH48Ov6LJrry$a!ZP zhN9sIhlCfj`?!Rp9^~E8U4U|E7juWEHhh`+F4!^kc@8IWv~=_+pZ|8=fn%Sh@ZC6z z_r>0Z6w7M=qV`=s4`aSSG4vc6T=mTve|Y zElcEsKj_7cONNHLC(3|twN^3xPRoU7X%}@NM|5TFrBWX{YRE47f(#}f7+fLu9GH)D z*cIc~gNJBk_4(12v9<1(=G<>Thu(D-P)vp$|tUwAZQ8uS2sEw4U43hPU3%3-_`e?VKrXQ+n1>W{z|^V*4xJS(a{O3=HacAifIvWs3GiOa1J zpRuAgkL85lWpSS6={K}nTxQkyJB7w?;&Ll%zo6bwM$(}deeOL8pTPR23~;MyfTtB> ze`@l?2Pg7?LE#Z?7@fjyc=qKL>;~HhZrqrrdC1bWX-~^=#rPe>7HLTPjq~j*YrleS znb%GX{U&IwtUfigcD(5x1ZV<-UfFohVCJgYrHMSjf8_0@nlW8?jmt?}l`CuUI^2$K!OZpH|P(u9Z*vtS%eCu+NYGE@%JeC20g~ z2cCJBy{fir=Cu=l;M2+TKD2fccM=+B^1y-krchlewb|do`V{TAcJ-#hL!`Z)yKTRw9c@gMm@y7OB#m08Jtx&&P zBj;GFl7<6gpF~;Db~`Keqb zK2y`Us&)hO7@PS!Y^Tf7c5A8^Ceo#?q0fvSE_WB+nHJ=n@{Q58lV*Rgi8qBSw%;nQ zteu#j;9+&G$!CgRTa>s@@R{0U{@9?~F>{i&<6o5X*vs_%0RAySNA4o{;}q%0U6R`p zWtDD?UG+T%X$yUXbr~D|=yJa8be_;}^1GN1tgUTL@Nu>EyJDZy6X|l7Ax$TtF-z$F zo30NXlkdE-v7MGdX!`pqM(0=89!}hOkhA$vpFv%@8*qJG_A_#i;u?D<3(U=2H}TJL z9`1cyUEA#UnW4{AkCF5Bsw%fr%Ee<9Fro6~o=J-B(6+i;($w#Cp75M%yJR`T$IvyC zM+v>hG=1S~jW3IwwVo*H_dzC&FVi2AbRUMEX*V<16n()ynEU#4QBLkB{Izah_<1z7 z+%nFqg?po=0x-EwxgVA-huX=fM z7iE0i%o`@&0sjcyNPb*j^t6z?0rv)fU{9pW{f!-RKLdAE@&(~1fhWu%L{E9^oAw+J7 z@3BG0iM$NkCCcgkkMV88#7}j8*0acxT-ytdv&tv(uB+YY&+BGw-2O_zgY=)UE#Tv* zGh@FEa(83H#Lv^pC(@-oV2Je@oAuib6MxqV2c{kA)2zohx9vPWg|$2?y@d5^|0>H=@Z&vHC^ z_lnSEIn$o>8)NSqCNCQTKXPA4-}$NBP9d{q8oM`tn2#E(519}r>PU)V?vt~ zKdp#v(T-mS@6zUFi8imF+!QJ|b3<(+E_Xw1m&ju70;8GGlHX!FE=BKK-ySZ=*Qp-_Qbo+ z&w7T=pgSw8)D_&r4tt$)XJxhgmdr1|k?-DERvV$b=o-0aHh=3WGtS%g#c1B>vglKz zFASC2-P7c**01E=$wPtgqv+G4_laJr<`#tfVu&KAl*xj*qMDW6zZMJuB#;&-GJd+ngV`=qO(W0?0OPMF)GL8ErParQ^X1_~K9vOr7j74L2N!@LU zx@d24^%vkJy0q4G_f_r)ybiLZwz;JGbt&^IwxeTd@7}nrrPWD;2aAPY#p&Q*@=%u8 zkhbDG9xe4M^8hJ-nyw?y^1bNBcQZux_a^ee%cYa{+*^FD+~*8GOT`X>cD%GFr0l!2PVo$0RJmON^p~;^ z{u22P_)in{t z_^PhZxdT{*EWoC23(xZX`{lYVxm&WuFB5u~bIbXOdLnCR9gcaW@ch$6S>cB?(Ox2N zb@e9ZF$Q)MWmZVP(dY21oRy= zC1-%rzSRF9`f*Heb!}s!th_TXD;`=^TbZc0s&;EoufzAtU5VP)5@p5yq%AnulE@P~ zGmo+HW2*%7TBgMB2W0CNbNtF`@nwD;@sDi7=rxhw&@0M7x9GFN!v@n|5@qGL64un7 zl<+0aAw=eliT2vjtELT_fqf&aVT@jNS*_QrYX6>Wzq*97G6oh6-Y zCh|m1-Co+W@dJv_p|#=%hKHN><09a7t(?!RvT{CoI_XxRSDh!gVjg3o*Q;v3NtDy) z(;0e|ec+>quBkn!&!X|}`^3uC@_Qbd=4WcLUa=MvJq^p5=m^#rF<CZdBQ*Tq*<47<=V*)fpH}QLQZ4|Py zjMUi@(-0nDXXY_BdeuCFS9NYIXQW~GZPJhEHu;+k zlSYRqw|-(*B9GYO#MYwgo?V z>WXgJkB#5Ld#GNhUEvS*r!0s?&MmtB(Dk*jAMk${gJ*0xVx#8`laI~ZIPsCReJbE6 zaqj2z3Leo{XRe<}{;ot*yA!+QEcR~TSjz`pwW@3QTVMNv-jkEF*AwOUAx1S%p=UWy zeJtc(r0kYN`3$`#$~DO)KEzMEUhsLt8f%c~=#3h+Z1MZz0dzcQNaHn}4^^ z^YklyLu7-`LI2h|<+Gd*9w+s_S-D{{@p~g^PtLO+0)OZiEYBFYm3m(_y7OdnXY*x2}OD3*gA6J;RV#)+jvn}ERz)jSGJAXLimfy#)-f1`){Z|{5krX)IA@;JgYG( zR0p&hvIwtf`iCANuLRKD>(Cj`j@~U-Fdpd6`D}<+opwy)Gc1n?BP!J88G&gm!}u6Y zYj=4TdGVpl)IpKh=xaLb$Ew8WB%y~lzxmDIlkmXNM<0Ecga?m2^2moIY@IXb$el+V zF{h4zXQUl<)X|Tlj4OM)&`i*B@6$?GA-#w`?w9a5WIp1EBSZ(C2hb3G-3OWheKq|~ zUcX?>*NgCfugG$T#YN}(Xrap;qN{s7J&nkF-{>izm-|F7-)kXPAq<6Ri=H0x^fcxD z4tCN!36Bqkc<*Hzc+fn7$EoOJ(k^gp{H5@;rI$L$(-wFlf4$U^w1rQs8}Tm>koF!fUyiPgamI$y z-(t*{ts|`)Y3Hu#rW^7L-f3frOX+K%BOlYJrn7Fkr6bXe!6op?Hl}+F|KMysQe^BG z8ph|qzfE_Y`1~uM-I0!{8|c}t8@ua2eg3=sjCS_Se*p z_?*6*7Z=ruUmr3$9Odd~)D7zRw90-z?zrRYXPj+Gfe@I$KD7#&sp3@Kd zSxXE_kr9*^y>?}-Nu5v^d1L6TTe^a*kQuUPjc1Y{&yjr{7kzJ~7syXt>1U=f?iQwG zJiE{7C>294AJ}=Qs6KRk$VB-Nv;Qy+`OqKV@$A=O9%JO|Hi|xD&&tUk#89`e<6{AG zY1t{KuOG|=G2m>Mgpsc3B`dUxO zFUlwD3x@7U!;niyTRT|3NUUYhw$|yIewu!CI(4CS2HH&5^g4N#`Or@4LHlW9NAPuj zCv^QfS_j06AES(}r}aRbFh7l+){{?LR2cq#(c)UpHFFBXnu7%Wz?~jQ$Oo6dG^ATs2(QW8DojeOxxDN~L5I=?1Tbe&#KAo4wZSn!ObnMFFn|aVv8ee7T zhwYT0pLh(TelT}T<2_Hh<_)sypzW&D^)oSsvUt{c`kCd>o=(TJ&dbAdS{XHuHrNpz ziCu9wsq;N%>Y!iZBCs&wP4o0jK>c)>xJ@wT3+_`g&pZ0lZ=N)q$r=NKKgE>(9UB z?!34^F-_~K$an)?DE!FdG3E}D=C_mQtbRlp*vFs`=n?O%$1;eKcJj$58~s3Torh=C z*E(fBeG~jqCo-Up=!bW$(ZBG4ehS|?)%^Mx(mK%3l*^Ab7W_QCLw*E55B-jP4Sll{ z9YG&1m_0;!rjIVXKc;1ezQ`Z+<;%i%)Y18Pf8YDwmx`S%{UEOhhD5gRX_3;)y2)@q;{K=(yvKi|s=@wTh*0@tiQe z(;@o72kmure_rd!?|;62*hi>OKZf4YbVvPwMk{^z`OpD$AtBZeaOBd=cSHO-oxE#Z zKsM?_r)S}Z`r$aBs4a7%Dv0v(1o>C?8|!$j1-T*hfMb!uW>y5ozd{_1eLYV268#@wmml z#TWpR4{TTXoKWkBI?}k&^59wbMLu(!4q?dl!N!`F^ty!|r6YqO(PyFcn6DqcLr0XK zGNr|O9P-C1(9m>Hmih#K+F4&fR^UQHd}d00_%Q$^ACzsY?^6DDV(5zc(y~%^#F*!> zzaWO5s4M8i*9*$DJ8!1E5(oWGKu5$-pWM%!lfZ`7mwvYXroDY)!4B_d=F$yxC3?ii zU`Y1T`sQvp~y4?fQ}w6i?^w!BRJam#rJ>O6$n_?Dpmw?aEX} zd5pcv7njzjs1rXH9pN(~!SuI&njiW4^yW9m>9pP3ivDC-dya8M^oY&WmBk z!sAp(2d&byj^w#(-}&)zk@YTm;abz+8$7m>qnr6oM=_S1o(i2+XUU(ICw>OME5yBZ zgBjtaXZ@*_j-8&+$7wg<344*Hd|x4?7x6Fn9i=-&FWeXHJH7aNb9#z(1bqqr_lvIZ zyElc;*FZz)Jr0`M7V-?+^bKBoz4-6KD*9Za-^shto9OCx3Fh~;a908{0}FOftMU6< zlKzmCGrzAT`glMB?`>=SPbm;Nnrz;UJ#uhO~nd?qZd`HYO zsMquU!{0-^_OOE^eA49VR{Fso9zF(P_G!bz2nU^d@d(50(=M(fG~R6)mPNg8@imon zAy-3Ys{`tyv)JlwDrG9#Hg(b@{|7Go-t1ErK5+0!XWn)2pPl~Tp~s&5(4ohkwDr(q zPTKk6Bi~#{z%$YgIq@Tpql_tg^4!~-Xc@dsFI@%o@_~i-&wk&$$00Ly&}j@B2mjd_ z_ss@P*B=}4@RZJ-voO`9mk*qO@1e)N=MIgFPIZz|Z-?mW-iCgx?}ER|;X*Vd1&}s_=>XSZkHZ-@b%>L-HUgON905N=azQm z=yrMVME-i&-~9e0ed&R2%i1Y@@J1cMp5VQk*a3aEhcWulWB#lwzNAxqq}2njG2dPC z-3ecF%7TZ}cU9_bc&l(_JS%|Mc0N>L}KY=-H>eJG^7;r7vpNUu)g;^Zcf$o%H;u z9e+*zh%f8Ad2vyl`1K)UJHCjzK^>n~+3yD(dscn#Q}2vJbk^270@L~?*6 z>}Po}6pvS3T5B4eoOWkDI$LznM%Y{GbW2xU)3)-}-Nep8#|c(GEP9zMdIDwBhsfN@E!TkAK&rp*I^#x zvUMcB`g@Q+4MW|+j@AQY+y6ace+jXi@(f-2`azmsPQR0uwnNcp!I0UD3}J}+!G2}Y zc36L()3?;4d7~!a89G27(;zR)8vVGkEQdTzgXu<3iY{psjjHUBpb+^g4OQUODxk*B!(T&ICH4>(@B| zx>+E)$p|Q;>m78w_#amu&pI!Sp3#%5i0)(556(^6p%p57z$v1eg`yh? zct#nWrt^?aT^RkidO8iy`u09vn7V{ z(sW%sBOo1RNQ-3dH zlT|k@Z=d<1pJk#Si6Ng3NKeaSIp~h%@XT~SX1P#1IxmgSJn5WAQ#bI>dFo}AsVo;A z^ijy-HBTPrJdE?y$tqJ>A^Pc~ki~1BJnDrQDteD;pM}!DR#xi=d<1>t>_o`QV_DQg z{WKaZM_MSyG{($BoJR*~Wpw|F^;7Wfo8fI$tsdenD~~+RKJn~&Md~BqndyF4pEV+%1iviv5c_$2H~Mk)Gxg)zIpFl>v5@VD^4LzE7;_!l zzsj2*8u`|WekAzvfnTH}r16(kU)LcWUkAFrpQr2Rc@E7FOIcrBEjo~Jz!^!~8s1%= zuRHRarwr(VK7vn2=aFWov0h)q>-Q4Q*!R8ou6ku%t&Z5|4e2^>_Me??^oX*o$1*Gj znYFHs4ji2{`ntSdChz;f@m=fT;aESirq5eHtsG5)Y18P*K}BpG4elx1F8?9X8P@B2Uvr9%&Sf8{g$<^eyVA(Z|j&?few{ z8u@M(9l3yaorY)1%`()FUrxWH?7qtz`Yoy(!-MfVN#8^LAdWFq^7l&)m@63AEILXF z$e(?(_#c;#XI%$+U>;-Sm!T8V(BE&-I?>MxLxs-?*)C(qV`RQX^b`pDuJ~@8uAlv~ z$b?t_v_R6KH%I9^?g^0F21m%t$;e+&*N6WeW2l5Z z#WWo;9lD~vjLvQqok_qmL$`E79uVin4s}I8B ziM#3YJto~}@;p<%c6CE6v7g~QI!}AksSMB9JJn6Ijut#To#fBrmEQ%+GhR^-X|eW2 zW$ZC#@!gBO#@=A|UEVZ(gwl5x9ckSZ?N`2@w7;H?-v#4$zN}AfUVr-XcJi)uG+lhQ z`5u${elGe#C$i_Q1N!l}CUfk5o*#iXj^W_B+q%&@)L81rc{X^`y3xG%>RIauymV_# z+s?SgwI+1~9($#aP&-yfjk&hbQ_0_N$)g|XOW)&naKJ;a`%_3aIt_Z#e#zp=e3zq? z?<<6KguQa}oeB57l77^S))AilJ_nw0CV+F3qIdY9BXd55JMP}^BlR0ze7*SZp?+s{ z1wSR{x0tKJSKzJ$WY*^<1{X+^J0&P%=5-jO-MwwnnGSgI^%8o|(v_Aq&ogi`-LMkU zNm`m+tMFcpjVUwr!*|5gE$a1h{zCruT7AjTF$YG`=Re)q?;#$3_~Az#e)tjdVW+buJmGiT1h(#Dw*@W0H^cHaNrfwHJ`CTNtwlh8U%WG(!A z^p3`9o$@5|yi|BuD>c!{vjx5`WPP%~?p9lYaZOCrI%W2)VQ3m})zZ0DuTt=VHXwTP4;vH>+ z2kJ@az}F?pOu_q^il1I$I8E+5zz@b4(M9et;GTQ#spGS9<;pa=Ca+ej)ls$$J?~Ou zWA1urho2BnNYkG-_^Aty=1F;s)4BQa+tWN{<>hRHbB5gffNrSWP+CqNblaT2=(JqV ze*4-+$m@U?)ZtvJqxvD93h)9RIIrs`exRea`3dQUHY=bb&Uf45$L9s_p|lRSeW?m6x*(vku5v*65HnL5%kOx|%2WPCq~E9saPB@dE9Hcwt-Qsgv;nW0=tCoAK1~ z(^vD2ew&Xu9rew875q4!`er^4ez5lFF}5?;JK(9G)`PSgc6tQT&>WGxo?|3~AIZx7 z34Yg3YHMGYMJ!Wid2NB6rEMX7boUTdBIsvR_(W&i2`t z8K;<|o+&GNkjnIZpf}=zM5&)rWEScpsVz8vMIIST`4H|wr;x8feF>nG_9-N@5DoFo zwo>gBsFzxnI%+2t`dM;!)Rv=3*>v1ehf-MUsiXGu$nUkId2G8)sXU?yxaXF#l20k$ zcAKo*PKH(&F7sUXdrW zF9zgo*$2{e*X#6lc~Q_z)gLeYYhxQ|k4-jfL+K3H~S3S5bF1y2&1KJD@;1cEk}^brZU`bEJuTegwGV{UzE z9y91kR=F|<+Detzl^u~d^yx@e$}I%b?2NWXB&7018dwmMw$$rqze;yZ5_n5)E~(sNQ*LEm($mc@I!lt_|N1=>gLs%7Tfe? zpO2|}ck)9ALA&~Vx$;^b{S4W1)ADKe>${U_L<{PkbLp&K-*%{+WQs zLR+svdBJB}RD`E8WbXCNUuK+Urc7DMk5s1b1HBO!Buf31 zBC}8*No~RTEAq%#%7<_dI)!`<>PrBfv`-)qqZDP z%BJI%I+Vg%PaU7Z*vmWD=`en!((qkEPb^oEfb;^?!OW_btxpCZrc8IUS z@}f=QJ4CysjZ@?;i>Ht-yGc8bydxrW;*({wcJhR1*W`6JPVkMFR{S+p5dYGuPTqW> z-EDcBFx`r`-A!KTI7{Y$ye<1c7CoIe753fD#Kolf$O`1aEMDfBGm z+pZI$6G{`>ZR0IOCoQcL-la~HPe)o>8||cbQ{EKXEwPzWuilPaX=PJrm!-=Qq3?e( z$0G9SS90%#`4T!^!E*}T+%}T>Ax!74PrZd=r#nV1@fM=trwOqU5>#kV-5?R`Mxy(QZ4R%=U%QNIS$@lr4l|%IL?^Ch#=U zqHUcWs%MM7Ku^Vrq-a9Ml_y^|$C=63n;%Y(+rMff`6h&k&^;KSo< z&iZzFlK-(eTlnb2HeTDQI^BXc^6=$&DZ@Ukc>8`Hp1Q0TpT{j(I_eHyQf=mV3*!mc zm*Df?tM{gUC%p6mGimaDU)xQ1fv-y|+pF~0X9_QE_3hJ7KckNS1&@H|l4LR17FrmO z+M)?Q^ru9=I5xJ$kLE=`uV25uEjj@`aGY+7j^-isT!1gm8A{~`Ja%Y9^l{8zO6P}q z17B^>=Ul3tI&3O;+=l(|Kd}+I$`2UN*#`edci!@*TyDj>WY$L#w>6%kUHvJ65AYJt73I0@ z`3A=IlK7yl;`s*VLc&wq{Y>hRR?#>yA9MViTq6B;`D>c5TAsSG{%fVf@O+;0SJ6>h z*eu*T-PBX=^|IDich-m5c+u^Lo&_H#ODMw^fJU$%h1zYECbaru zKg#D*_~M#`b8pTuIhW#`p`-me{yy0+4|rjOkKg{_eXzGaz`y_l0}Ko>Fu=e70|N}~ zIT(;V3f>tUk>_J}XWJ`Tv z6tcBY9?7I$Zf2&9+TaB|cO-YY;vgvS_8{NoD%Om`)cT+Wr2`i131t_G#P3 zLJ0S#M|u!4u?%}S9wdrCMnCdK9^(x6(6+p3cAtuLkzvFWD1isbqhCd_min6t8QN)6 zWEg=U>XVSS9a__&tjIZ{WX0n^Ug_u4!FG9gggs$Y^%>Z=B>Rd^;qyBVdF^2XiSevIrOOM9O9Rw9cN z(-nDrK8wB!!)0Nn@8uO)`^MiFwOgM0BJYTV(1-m5`e6SV2^CaneQjUiGY!Y7V^l^R zh~4k#^{u?ZbEw~@+SQjkMdq%_>-c5g3dTN<`aOl;mbN906n&L0 zZwjB1ocamcOiGXVH7HBo*sl+odF$pa7ignZQa9xt@fz<3d4oI%pG`g|ug+P{lNGPQ zwphNCIK*e5U7Zx{lPPq9SP1bc^+WzH*jA{1yJ@bypr2x17R?lXbK6Jik4W%8U6VIU zmb`gBv+lj6jip>uUqIcw?M_v>G`=N$L_*M38Fhl?r%JZ8b~E^wEF<@bD}y-gle-_J z@zKllG$Hb)_mbB#+7h|o_eS!{r^>bL>t*oQEgB+6&<`p3^y9Ral{yrGU~9-d;(|o+ z2kE^^U16vMkIl#aG0|N{UFfhQto{NFK4xRDr=-p9t)VrqU`-Jj+$s-Rx z{D?CpUMt^!{hGx1e&pj4c1Ym&wDF8I$univx;jVhZrGhOXU>a7PJA~My3jhHF4~Pj z1GMIX_H@;k@Q?5Nj!0-%{&vfwjSo);Jso}Y(fbOo7fV3jXjjgn<Dzz4&?+9_B3Q7afT{PLu#2>+?C)@8IdgsnnCSzqSwc;@f3yuXS|z;d2fbz1%Ym zbVFU;1D<=KCu!$o(MuWQG3s(hg+khK>X?nB#SY=P95&w@e-F z4!H4cP!^7yzu8@IlaQmRKa%3JXPUykMj(UgB?s!}iI@4(k&#M!^+&!K6BGJus znEUy%cKY7d98z?HHAAOuP1kz4*CL{ueq2v=TklQ3(HQD?ZXMojUiy@N_PXEg-}J*C z#Z>99nzer<{R(?qQ^i}qw0m)=Um;C&GZp)O{h}B0@pwo-q8scNv&^0zH|=MOZbkkTMvjFG7uKuQYW=p`ZcE5jVjqb2K!hgF z+q%+@{w?w{fBzf0;b*~u1>NBNYxL8io35?VDT9v7(37S&JUrYD{p@gK`jOqj4(Mim zis(tx?UH_=bKVu`hW-srEl23N)Bi)DX?06KZr`-4`xsh|tmk&Iq-k|aKY}08jk!NE zW%$u@;yJILbiMBB$LOZ3dl_1ecAi`5Nz>|{e&V}HeS;q@H*}PyCta?K`oVg%Yh!z> z@k`5?^&HZXF5gA{bX7NH=?A*-=ifcjPuKbtbW^5&d<^waKV8L;mZQ^WUpKzqyWGFJ zx+m7DPEarFf97erUDOYB(|6;0mR>^rwu|}^-3;c3)OmAkbR%=&meKv#&|6UpF`ty z9-Zhiq=mRk_%ZuqZjbD1y6rNb(SP{qv@eDD>GA$*SNG?Emm+;Bq@P~y&kxRbn#XT_ zzT^7XNXSlmXjD_Yx~ z;QIwBV;OWb_jCH)cd9Tt79xhuAH-xCmK@%mON zGnFCNoPzS)TImNJ4|wRjUp24^o3_B`RN_*%-HOk+zYXv?o%=@DusJ+ji8=`ygRPzi z7!BSjo8EXV!9ON&C-jChg7Ra@zR(zdO?nm$lc(_B3b)8_f!*nB!`+qlRyJ!nr;Kr# zg2xt^XxYABKNYhMtF3VA)AQbUS36G^xl-}a%C0dEfddbV#viu!Pl>kQ|J|VoVR$4N znC{^wQ8$<;zSrkV^V~|lAkF$<9hKvZtSs!O+PIbNwA~Y9a|=wauM749ff#HRhw6f6 z3YHq_YM!8ZZzX36-LmvQpp(8{Z`jVmRLEwr-%)-t#dd}+aQ0Eb4FhoHr!lXL7_`xb zriHXD9yLxWUr6>88Ut*lW2+P0q}nQE6Q&uvIZVcW(!;aC#)un}9S+m5IQ+9&ksm(x z<5^KV!LN^ZjY~d*2g952H0=1pdlTNAZ;kOP^A*Y;iks?NeRN`zK^=?nW}7&Sh4ha! z+A78*Y^ZQa+xs!Gv9{j8p~l|Xk{$|Y{A}+iPYBgTnr?&m1rOxM=acVRCM_%FPt#AL zUPCVfymjVN6WF3|L%OG3SVqURsg7xXVgfO-LM)}>?h~W?L`6axUA9X;G;icr%fM$X zE1#*4kgixp#RGh{#%FT>u+g_O$1K`G={m-=S<}e)NITNTus`ugOd!^{$&0_Ux9uC{ z33=&h9yD*7XUajjhDFA-wHEag!YR`dx@)Y*2AEA^wt>$a*reVQx>fbKUWN^6Px>Xq zv_0^!vc7kdKLqB8sSy6o7~L=GB!p<`cKFN~yn#pZt7V{EkdgAH>%-1{h)F+A)Uy~J z;Io0xQm{!I(Qf`+Qu|2SAMx;GcD&ZuA@=484*h^Uoi_JZ`$t(pm-Xv1kL_t5G;idW z{uQ#&r(!J7b5`mhfjQ~B?9)Cr`JO00z$p4>JQgQ(Bf6x{{Fpk{PpANC1RGN4SZa}PV|+_Wo)E9eLorUWicKFhr|^z^@-5~ zg;si)Kl=Pghpe*5Bi%$h4zt85WALi6N?9NqWF%H0dkCk{5%s2Zsdda}mQ(Sbh|gGG zN)HLYsr9IF$+H}P9H+m8t%yk-!@fQyeLNB~8e7EN+^q*iIxHMLC}Pm*`kDENbvm9& zSGUFXV_zGl)#lZ7+#B37Up^b{J=SY+v)F@k;(q4DSavDrobq4JHTjiA4&U5KKp(XI%EGfeO+ObzJY64-)H*% z67~cpwXXy&6PR?q5qNCir-8$dZ+%6?aL(u-M@0hZAl6uKwEL2VuNJ(LPw-5?N_mLY zkUu3(p)cwR&+wx@MyYF#`LqY^qhprY4SZ-vev^ILAJ4h|p{{{T&cXCJPJij+Qu|8d zCsQy<{Dd%g?$*~tWrPszxLxtjSy-hUz^aeakUxcP=u4?P`cggKQ}4uI7DjEHpCm4fKU2QZ z$Kl*9p=XZw z+7`5rwwZobWvAPGG!vhR`@#eBx|-j_s>h3hLHr_cfQ zfw?IHd}ypQwa(WVg)b#WVGCl97=_I=Hu20d5>FR=YMz_qflS1vxwojWsmF8lXO8Eb zZ~8t{uYKqTx_C8^xx?C4Cd@Pb>f%#0jyZu?6hS+j{1VdD~V*XOC_Y zO#idY|L&1>%tO)N{JLhsSzGIo4opWGlr?omHyIj2%ivkJ!FI_9cp`t6*W?_4IBj6n zjr(qXN}OVDs(mSR2wg&_T;p?I&+*>(qw%?DK0n%T7>#j>{+7pYreTx&?ZhVMP24l$ z+8jD>@|kYkvvAbzQTqPU_m%Wl^JTmxHh>pkabfkO=)7$UrHwBOuI>-wPh+u@XW$pK z(FWQ=n`m46SMWwYfz^;tB~CF;SlR9VRLGZNUYa)E6QkVEFNjfKqF->DiBEsN32Y+3 zXKKF*yB2Rb+3lw_3vX8cB0+Pn4jTC)tsOo@R`77$bVv9 z?XQK>u&LMRoNLl&2C?b+OpQ&B;~JOrl^j;88d@{?=;g5!areL#Ta|G%p3bTfJZY25T40D zd_QD@Y#jF?Gkhs@pm7Qvas8y{q}+#sjNYdDnd6 zj3P9qXJHfloojRMXF}(kXKJ76;}T;cYEfle*y210XT(BkPR}1 zaH=sH`%-sas&UFWXveidY`VE7)~WQF7|XaW z*JC+wiGaBq)*G9X0N)9}iL)V$7aE(~d*@oHX-pSArp-0= zc+Pny?1c4%Z^zyL{mU^%p$p7${PEtOlVaVJic#-w3H>PVl)$F6FYQhH`?z4f#NEVc zCN_yr@pP_upt6$s_#6(<}n6=QSTl} zoJT)a&i@{1U{l)EZLojD*mU{e6KgxpIkEo^dGwqUV>|D95Sxp}W}7|?J#i07#v!A} zENp&q^gDYz7Bw#QGjx*|quj@bAB8Q5QLGDKE7%MH80B0PwgpCE>%^WDu;5`-W5@V1 zTc+rIw1H1Ghaff)>v0{})V@=%hk#MeIf+f4SrVJ)%idfLY|gk~?09pZ0_WB9WUe^~ z={kUpl8Q1n{eiXWg4Kzk!BVv?i_4GH0VPoDUq5TaOfltAQ#!3LA<=`_1Hqo~4 zJ453-v3c3}fu@i8*u=Q5_cy&UJ;tV83#8j+fZ2v_psNgw#^<4SPSuQ2*h*tGG|o5q zP++DtMvLP!1)H(&botz`HS=Y+US~gpJRBb&Cj!THe?1f$)3FAXzCXZbfw98JDA)D2 z|2O8Nz-VZ_M7zx0mN4vg+(uS4cX&}qE)q%kTsFl$p{G&C30<2?7A zxK{dTJ$Z-3jH`l^lySZ%`1Hqho)N)+`g=)f<2v+0-^nrE`AwM**|SPB-|xUK13WkS zv%h9iel%Xw!xo{rD93r;zvrG4?9B7e&^Yh=&~E!r-*>{Nn|_lquETfY9s+%5t8v}O z<^^N2UoyaEDLOE^bm#Wm!`D6(^Z&GQ9yWw6v&MN~0hmxYOsthudJ+Gbps)S2#wW&g z@Ddu=={q^D`|I_rab5N}%@`zOy4i1DAlMv)(saN*e4}IRC;Myqv~k{F&(nwc(C)lfXC+8*-d)uk#|jmaUIx9 z^PT>BX#VI=6FMDWwLGjsw-}%FdP$G-+K0ksu${kepSD&4CV&lv!NeF(T)F&G@EM;K z2`)i5&3AHKNB_dUL}*Qf`Hjfmv|h(P64&dPCoPn5eGs~*1JQAePs~Nr#(96=Ui(mB z6gKC%68D?TnnYvNJ5vHiOT{PX;ao~$eFp@-6YDqbClQ~Vcj`5f@}2Rxj`K_CMf*j zTp#$&?)gov+jhozefCKo3O}TMD6kOpq3%3M-yP``pPU~s)?@qdNaGF&*6rZO_noV^ z+28u0@4U2{n0Lm$GqffejO)F@rN*cp=hdDl)~!uG6t>j!P}rLI#9k<{VEmO}qiH`h zFvbhU+Ma(Bmy8p>Q}D@k5&8-7i8VXt%ba)WHG3Z4iSK%L>voLoXqUbd_dvjtKelK1&Y8=q zubO#jHU7>e)F6)4Hs-3p^78?+sunqQAQhjLJekjIK?ltk= zh`|iUc<1lRz-PQ}7n;B*@ad23z$nLdy)MF8ky{rHEggS}gu}Ss>12+vIb+f2huhX= z$v9s5ot^cx5Aw?5uUGAK$}eo8G3w@F#)ra&u%$U;fo)-9_#%v%{yM2?jQ8*vSjPin zZTZi%bvycnUKjDKD`RYj?*u-BW4p|KDi@E|rz*gowfdk;QT}?>P7yw_1|U9p2M;!b z?Gp3Qv~?1&pw~&jia*9@eE*{*KDFQV*X_Iug0&g?N6OeC#RSK4A-kPq7Vb#4{yeG=WdpR(zv%VZ%*3b0CZ5yq3E%m7x9_RPcI?@LS8r_RStevO4h{jK?}27~wj;6+VHttnuB) zW{gkHJ?q(X&lY35Sr@^7V$QACMT@KV7S(6b`mM0Z{OQt8Q9flK`(ENRUMIn~_L(WeI_n8E9A^&O4)qQ+&9{}`lh6?;+9-;S@;5!j`)-HWWkL~DZm{W6X zr|-nLVdR&&cx70|_9+g;U#qw%pRMRKzi2yU)aN?MjPWww(TBp8u&ME(dW_fSox}zA zLiHS!=kdgsk2{&0YK+F;A@<9ev7NqC<_*{*06y2seD|}Dw4Qs)eFEZ>>muTldrC7` z)~+f;mqlq17p>yy(oRu6Q6ILU55+o(_=GKEeB#bXt2rpJ0?YtAt@fFKL30PmVwBHK z{*&0I?+l$8>9rB&9eVBwzpu_SgJb)$+B-0gl%dO_G+N=3`O~GHqI{yh8RNx9#+Ps} z)Q$0&gUUH{k5}#`B zY3{XP-&W=&9NYEW6LW3ib7;l*lCtzzln!yxDxNOw6y=lkVWSwIVmprUp*g6ry*~#9 zM*KNwOaJNcX#6OjCCYa_IcwHom$`%3ZJC}r*$;}c^$_T(2=>-`W~;gb19 zc_p1zanW|ls&Dq{#a70rD17FggNE=4EVcBX3YT2(XW^4;Bl=H0_XIw#lHZM2_}pv7 zSiCmk+!JGa0-ufmiCA51QzmsisGhM?G)uRt}ix%t*p&t zeD~&{u(4SO!{+U*k;=el*4mwOPxKM2jhz1kkI!0LGi!JBFCU+rdseO(JJaA380~|Q z8#e`c?NvLa>QrnM&q15ichKh|Zq_X!&Q-V)}! z#OK<2{2fg*_XLmb%ss{@#shoLHMuq_XzMa<&@0^Zs+}@*(`t=m{3mQKwl^5y8VT6I zK0W84S$j+xdp<7tuFJH-C(j4CHWHpRKH>LM@rkkhs`1a3sl%eQdWD-_wNq3diTYwI zjPdat6uw4$PSYCR$0x8soWQ5`13uICmbf;$vUV(Fow2(1)r1bF*q8PSH@#}7Ox?m( z2A{@uZVnp4r`SH>KYNW&tiR9)&==S*eE;d;vuW+_@QHO{Wtq%9`y}MXO+kKp)lQju zjo0uVK4Dvokr*q@oGuSOxrX=mK=s(o@!XGfnb7#oy`>iT^!JvAR*k=gYxg0C&&n0m z$I8@UQChviO|RN1s*gl{v6b&XjZGCk6MIaYfBOCtYos#p>7Q-3y0;YA`(heTyC6H9leM1U_;9mwTWbXW`Q{K7lE{eh230 zAAP^ccjmW)PwahW;B(gMi9e$M99mU-17tM#Tv45@ESK@UPeL|Y8o5RJZBWX7D%wt| z^Atq9p);`$x;0Mpj*1AMlz4lCFXrUIY5 z0~)X2feqrs$ESZsS!2(~CEs-!jZfZRg8%f-Hyu9l-8k$m%v!U3b}oFb9{)k9IxJ|< zUir0NwNt8YVXGYbpRj#={*FCyAD_TZ8Rtj7|0F*7d!OhF>=!BceAYD+xSxEO-v8A8 z)7%ePCBJ9XCm}a(3i8{lcFNSNu~h~>VQb@)^57E~3VnxD`$qapKh|YJ{xgJ6|9*(v zvBF(d+!>g)ruH)8b7*aC4)Hm3RqgHOeqBLZmuZ7u;igyZl&Kro3O2*ppRu8_r9D4_ zjbUrvPmcX3?kD@_@4dWVM<1GUKlxc}$6u6%PxIZ)0X|dVS}MK@>KV4m!Y6EP?l1ZG zKY2eHSV8C&K5@?P<5T7vm30&5cft7m4&u|?5uyLQy7m_1Kk@yJf_f{nekxGBjG}FN z{`ccH{?g7t zG5>UDNZ<|r9r(n21b(02KZ?h9;#1}`Mu%%;4%!DH6)0XtQC>ZAsjo%bDXl(y2^aCoTl|JkUwQC-#}pPt+bg_QCY;+cd4=-577yNNZ*M=z|ahNg%N(uK|+5q@wMVRX<)E zsj*$({lpv&w&vbv)82d*K7lRbOknYxDO z9CZEoyUNmIQ94181QMr9J4N}7>x+&2xhL_7@jbY92Nr+{_%7hnpL^1OX5tfm(+e8I zK0f_DdbEi-sPmtdna ze0*Zh0cT$tpZ-46%#D-(s}x-p#CH=wQWA>tnnJcIxoA6O)Q4>{$9A!;*-KR4>o990 zVAH=>$8-0r@5K>+f=`W2J|}!E%Mzbm++r_8ztHh%p$M{4!V$}cthWZ?dV?6Nb*75N^ zXv!FGd?;j9_=FENceo1rrXn_Z%k4W_;uB?xw1K+4YNrUF@t!=-G>K36PIu;>I<|9N z1WaIk0*v5Hr)g~j|2f>i8OQuQ{?o@N=b&c4U)Ek|>#I-BGHvU9Q1IrR#p|;q_|VW8 zk2$!Ri?6TMC4b7os{7J?DDukUtyk@I%5S_bYIAIl&onvj1U7(AV8z_u5bOX$z!xx8 z20r64Ug!~@W*&k0uJjA;gL-4UStq%(c(YE@>v+sVwGZ7m`8G2Ty?NqaJJo4f_2Azy z24kLxfM=wYMW1wf)ehUs8_yIQn01lZ#LT}!zB6sz&O0H%0{1MBI;uZM5%n>mvA0*fc(G2R4aMV1T}} zX>51CGq7&YgGpVc37`HLujirqcSX>5+&U@kJSjetrw`pYVfRCo4;}jK#DzmQOx6dX z2Raa4H~CK3MEOpBhgjc}kMAn+JdNwbmQbpF}E@EQ0U}y+mAFD#r#~4^8<`_1*3^^ zoogc4K>JRy5qzhAmKpm_v2lD48U9o6DFGY6h{2{{Ca^A|AI#%3bs5%cUMFD=s_^O0 zL)-PCK1Q)0%yE9>_IH>)(M>YO4MO=kz+NYGOl(5;9yaxUXXd=KrSB{kpTMfYA=gJb zHtQsZQQU<#>oa$r#CxHfhdLkXujPFoI&1UxSDG;e`tip3q0Kw48sM|!J}Np*>~*Sf z9kwuQ_7vY4ui4XlC&qSzi59*Sm}+z1Q~OYZQH@JJ6QA^>;03-s$2=7KP0zl$_5#ea z_x{|Zy}zt|XmC$-yPb;;d}t{?)XX{IH`Deyv7h9y2^+yyuo-L@T(gIKCosWr9XJV% z?SdyCZ|%P4^PwY+{ZOpi0zQ;yO0#a+ejw)8d;i_!?7eT=AsC%F)U1^>MgwzEj6*mZ z9=cKd$RKpA19QIaV>2-4giT-@V!ap- z3fNl)J~8KnZlPoN16i-P8rS1B5%!a~-w7M1?RRG3)8VRJf9aPu*vx}b+^y$Yo@Yv2 zD`7v>?ctiai#u1+ZiG94a`)#$AgxDK0gKMA&`Z{mKu z!C?5Tz2Wo1--BxhqZXeIgB;s+Y{q%X2R`9LiBaE&a?jq4^QJ$#J<-g$DD=mDQSRM4 zjAFc!aj8BC={hiDI{l``CUoj!)0=bh_r8p+aK^63^^os`?STO^uBTuV*dcc1th^m8 zhRQbZDeY-o@)>8TIFt9!5rk#3=fW9_P8=a9bhzpQSKp` z`DPw$sxzX!#TKwhyqCm#@tC9e<9gn6Ok$-(-|73)c;3LabgajD_<4@=#He1+!;h+Q zUe86b*OtKO=It+w&p@>w#oAN!4*eS&U=M$@jB|q^I*`40>IK+@uCV{^kLl2@_yK)> z>CZXMo(slx*bE_Uy$*Zl8rO@jiF{o0J;rCMA9d>_@X6n6g74>CRAUrAGy|hpKbkc? z{AdWHYF$s9nzPW)Z~x&Qi&4nVGfUu7?;)jN(_gFW^-zpW*h*uwX}#{SY3&{!V~yXm zb5G)_8*z+L?K}AlABq4zeT-tB0=cl}!~6yEI*iWv%9HV3X6Prl@05kn&6DQdD11ic zrrNvAc)y4FQOFG0%~%3#LMPnc3}F-Vdv6~Jx;N_q+}jnKz<(GU!B(&tYzG_aIVXSX zi`azyi3c4!e0BqqA(}xRh)?iBjOuZocbo$2CG7q3o)h$hIXcfkjUR|$R+q~l)xIb#{INu^;{%#zMjF44iHrNy$7;JJpcYE)m8+#Al=rD;* z=$hE19fIp2tRrB<;GEO>rWAaJFx1VoAU@Gwe2nrpaWKvsxkNs_UZNirUy3#TtS>!z zfIlBijP;>Cd|-6*_M?rzAWp?z@FzoG*m3i2i%*fw_)PRi;u1d7>cZZW^Uj6LS#rQ{ zLg&yuY>>dFUJq$(hR!fkunDYm6N@3*W}MglTR*qLDE4zX7lr)pzCH9pjGB8Sp|M`A z>&-b6d@0vWn3KXb4x_M{@u%{gJ9BowoA^96FyVjMM}da zbe+H^#&xdML+hb7u?eh%Fx1Vo%z0?Yk7B%sT=b*Br;kybFFA~w{ZZU?au~%J1V3u- zlc;m17^8Z;5BO4ye`f7~J0@R{F@G8c)5oy>!C2nHX9{kU*fc&<&V`^ujOXrbi1W?Z zZ}Q#;a7k>!P8`!=L(bhWkE1Wr{z*Ugc-~3O$M{71njig4-ciQRpPSFi-OChz znZTv^OpfLBnfjiG)yd0@j)+a@4*lHiZ#IqTA-@UxVE=`C@LUhIfz7G#pG`Q`xYWLo8rDnzxh+}B)oBc+3=TY zEVtvtk;4CL%^b(~nb1uOY?^ht(|6ODo`p@=6t>m2*3VPqH;GFf$G%ka$7h@^`51*S zWqG49(vsl?bXz7_YQ_WHu) z5;F(Dp7*Ugb{fnAL*<2?LqZ#En6_|-gYyrG6YCy-9QXYtWaa%M^i$7ga;~Yz^R}=V zpA7+b&TqEBWFiKx)_DBC zx&%1FewEz|5I+m-Vh(%Tj!6&0J53t$P)7WssUvj_4WXsS?c~_a@mu&w!zK5OxHiY0 zrpBf7nf_c8x--GQi{!6`wBPIio5Vvu#3!)BI^-&7Z`ok5}#I_zb-1!1T1Z;U9s=04Bi?*FCkUb5^sb+Kk&~oDpwnF=)5|+VqjcqmN1O$aN3L zapf=LvD}+yYFs9KCa?)z0-Mk+bWDAR{AL^2?8h-(V^cr>|LnaDtSo7H-+AV82jf}G z8jV8ajIhI4)_Rg`EW*wr2ORHYmKc*Di$Sc#TCC&P0~zpSz+*fNA7MRqFtMEw5)uRP zh6D(99D=gQ*(9q(d&80_8(AY1S;%;!EU`8YvEklxhxxe1#yR`^o~nPHr{7amUDaLP zUETd0sZLdQ*T?%l&;R{DAMZ!?;#9VtxJek*JZ1T#^i|NF*<^o^DX}IwI@=tdwNENO zU5xQNaEg9woG#=~BUY88ig*P>5x2tE1q>Vh;%_?E_1bf9;gRQwCnF}|%Brm2Y-Mfi zc!|r>mLrcQ=U&UpWhY!BQ^^-u3!9#MH@-aAOP%8^*8RY5t7G(i!lf`8%ibC@Q9tnM zv3`IYv^9r3yZ=d&*7QkNnx_` zOKg0h^_SQFhins-1LpEJkb7LzW zBTu$svhM#0d3MjY)jp>9(*4ZHnd+;=*OWa+rs7QG?7VrU9>X~Ro9M8{r#NX}_nrJH zoVH;!`lK3HLVK4_3P$0BkA0zvooanFIK{q&7|QjiylL=J8?3@lY!R#ARX%ILY~vFM zw*&TE(`?*}P5j7n{8=?m)?7*1s;$al#yqBCL$~8G{t+(WOk@-7IkGD`6Ko>uX5P?1 zY?|)&6^~`Pm*NwgmKb#|HMt=_wusRfJ1xU$i{1A)ihe$D+J;qlRop7v3PW)(oGshO zYjmvp)>!oC*)!WPiEpX=y5b(krPZy8%a`F2nYCe4{gudjh)ox#91uRi>slC%T#8N7 z_$TBIKDEIW*nGI7_Dvf;ZNX{7sTZ(X#Z|(JuyX;k5o1G-h5ZFA)^=NY%i4YmlM6OH z#64a&DS5C*Mr@@$cg{3Sj`24S6q}Jx<+F6+wT(xSWyC0a3Qm!G$))H7oPOfJ zRCXV|8Mk!dRCW>!wBohlS1`MXTj6)yUiY!R_`3s-Dw}Nh1^=>chhEoc$B}{jOk@=O zOxbhfIR={t;%i1MwjDS4q`sj&E*uM^>?K3?B~F*w{D@QRUk|4W17Jc}6-@Hs^;rU)sf|#0rY{1E((VYVZNThWJbSh}(D!&f2zkPCVBAv{%~@9wSdu zKF{~oW%fFhaZkyYF`p?JMZN@=$TZ5hOAklFn{91uDMlr;C`a)r@g_1?z7#!x(`fgx zZRjp;aE-7ko%i7t%oey^z*Eh2!kYGN=PZ1u`__BKIT!Fq*=Sd7n516vab(A%Ek`!U zNU`})zLeaL7@Od=!6$N%O#1f1Dd#W4sdD@1jZJwea)9U+oC>S5m)aM2b&h46pEk{t zDlq0a?)Xl9jJgN+)YkB0(Ow!%%6_Zt$`h$>C11AT5}8SUeKOW>H8zjQrnhnE0!}5H zzP)4|F$z{o-?ZdYbSc~4hgEp0z$t!fv+-NK317?hI)CB55sNzJ+2YAIOh(_5`p90$ zhO?I()PC8oh|Mm29pm>6m-b;(zeS9yokx90M^SHX_smBvc@;fJ`>$j1D|rCn20N=Q zVs^-}u9L0ip4?l{(R1To{HQ%;FS)W0lah_(CHeL3>uZh?gMD>w@QHl-ulertNiUHC&-||Y@bZ|O?r@gqrTLiFRVtq3aj8XVnP_vci7csxGk~P_nCXi zhvXT0j(C#KvfUArlwFu)ALAbCtolnH%j8y{pLnbAHdYReypiKFSuf!9eEq&AjzWLZ zZ@HHrAWVo~Wlx2haxZKx+n3krv+gf`)bmxIvYh%H+aKeGwGG83vJ#eUKUOb!{yCnb z90y_4aazyGLtp3)y+)mK4EOYLt1!Y|xQY9Sts%$pS{=t{=vWvO->aNu`8lr{(~b>k z8K2qJrW2cPpEuFYM&Z@RK?kflUITYToeK}_;|30dovHWSJ3cFxA(k!Rsqtl;E2-N6 zT!!m6p_9DlIiDhnQ5cOJBKs#^m0gTj&~b^Iw$I|aHVnt#+O93X({tlqul#A{-6C)jMm?aFwS zKHGc&;nw*!_ys}l3(p<%eZ2R=@j#oca>spmew&Q)yG1*^ZFwwUCF*U=af4HELfp}_ zMf=-#+;g=|DsM;Jzl_Yz}B+wSAAZ*uEF7XUTLU2 z^1R*hXPf*thS7+bZ5<~z_l_gmFd4sV#V2~+7N(|pPJ>PCKyqi)@v$8*_^}JPsC|U^ z-7@^ebC(<+o1C-0tNR<1U~~x{<1~~O(z8$gkDE?j z^*{dp6aJ1Bi$m(Y6r&?B*>|rYWyy1rZzBf!@U)5F;$Ms}Wu8ssx%zUfff>nMDdG0(0(FU4r$^APa4F>EgD*X;Uz4Biu?2N%09wckVV zv4Abh&-ab>2>m*XZQ-2X{QJIptTJ9?33d;GTMn%bYh$y)Wd|mgU}EX>%j-KaJ8-;R zdB5WGq3L(u>eGpbWgOYyuw^`59QRb{yYqSf)4#cV!d8w~*7rm2)0}7AdjY#)%+#{_ zHTPNUo8344?sIuNv9e5eQSS@3c~O@a?$3C4)^#m6VQ|^LyiRMxc3|oJ`N21*Yi2zQpc3R z%VuSIv@Rc?FW{}_)&{TU1E~IO`wQ1s^4J#~%(0voby8!jP5yi*T{W0QhXI$;eYqDl zm`^MmMeIFb-?weAwRJ{@Y;D)_U3`X~OBqz2vYh%H>lEv%`gh4^;kt9V%u)CIP^JZJ zNw#gWmtJ&E+)Jl%FZ~M>?1dF!sS9^Mbb8ClI$PI$^<0%BmQCf2bL-l&p>PTJNWFYyp;Z)x(Tz4Li?HUhrd;U2-2VhfjUyyCMPVq82ls?5v?4^6~ zzl-SVh>A7QfGFI-n)bZ+?A zWqBsSrgS8|mA+);Na>&bqo1$rb;ORa_mJVR-1sei_uy~ddeXPWbIWV>o1PcT5X+|W zieIUVI2BtEeOAd~0dv-N)uu~q>hr?+iBZ}^t4%^ql3BTzjH4{EZ|Fo^DO{F3DILeX z@F08$FWN8Q?n}3wJXmiJ{C~HdXw!FHd!5IA;hcbLJx_a;N9BuU)^W+J5vL8Onrs$i zRpYdjt3Jnb!|^V;YnRVnke%cqS;f6@$zJD42PH1ilem&KH>J;#C)>EJ!K2|&xDuv* z==As4y)JHV_~P$9>D$__;XB=T;W;&Cg;VV*Ys9MRLfxpNuu9$AaEgp1w_X zv~A^id~Um^o~P$GT-$e`)t)997C!_+%e-QXlUMC)L+|^--T1jZ&9YBeA8{?W!ukd@EP$KkA=-BLynQHa4Brcj!Q4vOK*`cohxg* zjo!gP#Ds7XaTGE5z}0U!iQ9wMo_jK8i`Q}-?;W41a>TMxR?6J8DZ{ETDn6yos=xNa zscgRZ6j@%B@1Pie+j!a5^A_Y0@feTWuqi)N*pz<>Hp|=)I*OP?hu~6r6)#EmU?E~d zm=Ts5{9XOVlLr^JZ?ey;Y{h+QjO%%Nek>DZRC!hY2CD(5)Kyp&KG`E9WW^?&B1bT@hWTy7*Z9QO9+@Kh? zVPJhYw!+@9g?&d&AXlJy~Vb_3X?0N6api$;!BZRr3L; z3%n{$6`xXX@hS4amMGpYF^WvZrN~+KKI%gHi8_nN;oNQbiBmqK7oQ8`GwZe}8&leI zVbg6>&6$nN>wX+`QrdChQe64A>+sMwH8xck5H2EKgrkVT2d}-z@VU7C(6w(r8M2kv z@pP;jKZbDD7p~#gi&-BvB|N{ zvHg_T+2p-qnJ?6bItiOTZZTjp+H=~o?795Sk~7QLC)#mz)`v^!UU(?+81WSG_l9eK z-0*$AJ$UWK_MGKgyoTd=&-g51R^?IoR9@%!fjAXLqs?!_DDp+t$UNHnh*5OqIBmh` zp5e5?XW7=eut^(?*u>^^VN-slY`Hj7aRZ!L+VSXDqG#!xJvcbWM8%E5jxZJR_r_~4 zIceM8bp53#ZCl&9d>8Mj=jge@>v_2reF5rF;?#3rwcVG^MikNIFoz{?H<|w*!5c%@bUwp#1`@i^KPU5ETIj1`J zpK-0OMB^Z|rZVf8`T{Q{@RC~_$>lwYb`l>Bb4V*ohcN(Ox5$3a4H6UKmwA ze@%>niK%h6>iv50S^Aq`lMT*{yop?X>bGw3ttuDKj!k_FE=4w7_P)eu7mq5gFLU_Pt8gg2M=a?^-?eV82L2V^O4xR>8;oPu-mK3ZdJZ!^fRmY=T|L` zJv+(`E{*XMvJpmWTkkSdp0vtA4Z|qBg6^U(8g(qagV7S7eAe$9#AtlRg)&es|Y6{DBFrg5g{3Xc_+MZKH6sr%r;C#`M$1&ktV@hJ9d zA@@}CC^~DysO#7`2%S3y>)d^b(GB8r>G~e@5eb`=${hPJN=!iEYoy+T`iwo7 zT<4I?4lTtdxt6GxJU;hrkj+qxlD88^T^Giq=!UoeU7<5JFe+aZ-GWhcy^wPP3k60a zcAU$qbJq7c>u1IL3!ChtT?d&>nGC)Q)_QYkT*uINL!6-U_CxlUSB#bIv65p^##~Mo_{X15`r{N=FC1R+?=rs6* zlj|)$FJhD5OYUs5>%wNqo5)2zXY8*mY8bqPkB{!sNZl^BgY3P#)P`~?mL zFUv8yK0Z6J*>Gq5yYjW}FW2$9+8OnceV{F}i95@9sEs#?L9Oj4Hdnx=Fk50&aedYP z&;3zhw2YUeH|a6j`N*Ndf%vTCP;jH)Y`-ylI(LR=Y3v7Fub8OJC3SJ9@#f`se(9S| z-g5O1T<|wdjyL`J>lHTfrI7QRPS0{%K?W{6%XOH4giM>kQ|?~={0YfKUDQqzWuuS z`zz=ruQ_keF2lM{H0DQ5=1okGF4}xiVN~Nrm2*PR>i=xB^CgFF8lNS1!s*^_dh9yf zN#Dd!yIx|`^CgMRN!n+bdqUQcL-GH+>^wR|mwk2~EP#oC!-ZHWe7}x;U$}qd=ZH`2 zI%R3I>*7w?bzxKSdY@gl9H-kLv+161e%P>?+hj6O4&P-=KDmtPyX<@!&x=D#JMWk< zYzT`Jb7*s4?%#z?ev5u*%qNvG5w?N437g6#nH+BZi7)*j@3#zgz4192`;fSt43`VC zG}(6fqLofs>^wS@onOYGaV&F%l|?KGyS5+8qYXYIHaU*m$^GGSe2$?p5%GG=B^f>! zVxlr0deiCuyCBoV>U3B|w%Df_FGV|#A1XVK&OFyryJKuAynj1_z1D`+f__^O1xw9oEy7bP+|5jpiyS4+FH+G(UQ*Gy4 zITT%Lj1&GFx)wf_vvpSI~fN;nYwIy2X{W>CmwI+ToMyK>y$i~-vHw8YMxZUmvM!{!k+rg-8 zdyI>S*=ySlciMKRa`9g0fX$nJ?DYE*m-A?w=t3L{Mr$r{4n>D<2gx;|TXd{kQyC{+ zu<->xTjF>yHi|#H;&$3ajEmIQ)nVJoDUnM9pLNc&$#=SKw>`@ToC)=nUO?K2&{5U2zgvh;b5FDQ&!uT@JZ=+2CA@!de4@(+pS6we^+CZ3m;pP>@=RdR#~@W0)$s-X z6t=~kZGA>DHp1_Sz9+mN`ZHT?`@5ca33g;{IZlj;Htdc0?oe>*HXa?(w^!sseZE*% z93Op9#Ypl&!6;bj`08DDtN5V3_&n#(3Zu0RAA-;5dkUYy_iV;0nO`E?9(_;Rq40V6ryl?D zL&hgK-*=3nqXwUKt{z+1=7YNKv7vAkn7{`GBc%_zls{`cI*;nu_I>#L7sknDY{avP z)dD`7*r>zzZ18DzgFNu1AAkI8ZrfD+8Smpbonc*<$=-AIrYq-^fX~4`Xd6Dk(o+5m zxKzB~hfl>u;?L-Ng3rHZ>&9E&Q~133r>{4$k^7$HJ+TksPx+oR)LF#U)W`dVQ~96` zKG7k%v`sM*x^D9H1f8c|ZD1_Xek?BXm{i%=+THe9+hzU*_qB&ln?3fzQ6!UA`x6 z1b?IEPir@~f7N@R@YtR9RpL{==cT`N{eH_Woy~D8@wBPWj?tOQU_mdYtHuYth|fFW zBGd$@7Tl+;qQ?2L&53MvDAd#z+x+B`)K`a$qZ*&s z_D+0a+sVr(J{KT6W1RjiY<%N`hB5W%7+pIjmG}f3!U>!<2Ylj(wB?p+-}CajpSXv* zGLIwixd2c907mDAQ*`C{blufHXh)7|fj_s6PvS4y0Bu3-qU6tk`1F3GcbWe=!|ft! zw*QS|bSAQCV)!ZWsTh6}_FcK9CHRcFCC}sjl`s8~Cbv}c=S@Fx{r{OGHYwAb{^o#F zbXD@_Wz%WQ(J$nf${amh24;wnrod;}x4CTG67iaqDds+(`PZIk{7>o<@p}tLy`T25O9nY@udDG84<@|Z`&piGd+ET-x0iWJ?bdJwiVw3hV=Rb1$J89Ex{8``= z-D5++f^$~HCpr3|RE~bz`21hL zT&-oZ4nC>(47WM+XM@je%WWNef|bPQWLTd&J}KYU+x6V=8T*ekc1ivxvDmu&Nqn?z z4jA~nx#RQEe`E9T2i9eh^U&40_yjYh|2b9sE_{~x&yoJ;Li|q7;xC(hpW!xVe7f(s zZJCAqQeXVu8Xw93Eb~i!W9$_BlzYWT>?41+jZIeG;C;4MgyokMzcUW7D}GOWu7~`c zV3W2m5T695$F@fmJ&!l(P1yOt5U>cJ-bNNPX;U7#3$oWN_?8Xap`?e`nq76-_eTCzwyMk zJAX32V-DQVQihAD+0HlaW44rM=W;S#IX=-HV<-y#jPpAj1NffsXT;|w=67J@$x*SD z^W#4FpDP~}|FiBxqHORx_{1N9_pt#!*H89c_%wg!(qDbz%eI}(ZQBkS&!6Hx<_zUf z>*dStdt%=MKGCWBZs^!_jn2`1gHJG__z0|&_!O?d7+dr$OTSZ}<2kxc_fZa1IePl5 z$kEsMy!62*oj)mK93$fX$p@bJ7W|dV?|<@Jy^b0qLR>gQy__Rwvqz0BpP>vIy~NlZ ze4;~iX*xx>8oQ+2r*o8H!8r?TboFftSHfAup72=i<2kxc_fZa1_>@mk=jg$wa-b2P ztug%1KKaL=@xCWt;xW<;b+cJi+V~FTi)L8&2A3+E#YX7rvgr)l-Zi#P_;d^ipI}2c ziG4@PeS$6FEMji~m$q)5KF4!(9lvp(E_@Q3(N02+o;=vX9HctO)Wq<$jrTd6?=|~A zvu%_3bXz{N`u52m9d-Gha1TBlx>oMJK|i^rE;H&jePDq`5VKgV?nVI7%A~t&W!_W5qklb ztW(?IG@ipT*NJQ6IA!vztScVyi9g)sgT_3Q*Rh`GLEWG6;iunw>2H{gpV2l2J{w%l zs9s}bjBXly7QSa&Y_#BeMto`wdU8O-*_>6h`qu<2*V1U3?3T zv$OJ)_$22*-&e$E>4QGwgHQeGv2xq=`Rn4-ZTTMKQu0MNy|&$S>$$`*uLBHtJVI;) zHoyp2QNMfNyg1>{@ENhG;{}e@xx#1VE1c&+d z)EXN_?J~2cLBu-{e6%Y&@}_ z`=IJeI=AsZ_lyrbaW;o-2tM&K=TO#7l!1N|=T7x$qN^fqC$H3M+Z7kd_XH#K>0F47 z;LjD`Z&>0}KB(vWE%xGBzxZ3vbncFMP|8;H#mBxRIMnf}zRudl>z{ zU4P=tRqnet*C;L;Y1^AVP5GT*1AKxNAHQMP0Yl&mOih8$#>U(IgirS)@OQ0UC=XiL zc#o6nzIfW%LL6Um=m($rA3RR7aj-AwH2Y<7-9L8jG@bZZi8k)+irY0N z1S}};2}Yvt8SyC_&Aztn>`S|@&+(kbz6+n=J>rx0Q1-=#INtk`$k*1ndhbhOogVr+ z!DqptE|U*E`Gc2#_KCCHb|?eWf$O4$J3S}werILdo18rBft7tm$}5$&-7y4r+BOoO z3pkC}3Zr10`>QXWb^(9Gp&^b}uHJp-6*x5Uxf^`0!kri5A~*^x$hLzKxUB5cEb-OD zo5E$>FJQaDr}?ztvx$-Hx#~+Qa`oPx>i+nJTxjIb4?p>Q&s%)>Y0ouX#?IsWB!}+A zhPdpp>u@JJ!M39#^=Ag|)OZl=r0bg4Bj)7cEwJHs)^Gx5zz%&wC3hOWBKC$HU&N=y zTHM?D`N}y)6(@mDVU)fk>yM`|A#$kq$6FnVlb-p(r~lxESl;B~ekk)@5~EwiXcM!8 zO~ywAzY|@#&P;dcP-E%DolSqcVs>y4<06k&3^NTrL)>2T=nzcCa~fY%JWQ+w?uF54 zgrEYEZ=bG z2cNvlF-p6wIrQ@1dGhU-|JGAyxotrPChI095_h5#!=|`XbBH5%V%J^A>d%x7#rITy zyZp|EJKN);A()KkwBs|__=r#12^^|8X&HyoCtq@C#3+6!l!JTDaX2YGP<7ON( z{2AwQfDJI>*fh+v#6`kcqxj{r^B;WrC6~#G{%zAw zZqv(vTqiP)F;Rids-OM5FLQP7oED!AhblgbdykW94rMHK>`&6TQ2C)XhnBH?$)V5u z=+pnrWo$}|ooAeE;&a+I+KfGJvFqr<{mu^VbX_uEqKiA>D#yeU?gUdS*!IY;7x**U zczg%Ao3g;=12~kN#8-dhiQk8x{j9(HRMqbpIkYt=`gG-sCWlVKq3(0Sn_v^}EOMO@ zo9GB#p)+*X8nd_gonS(C9h|h;cEeJ{+A7Cx=OcIOc!5K&oMV)@t%XC?r}WI9fBN@e zBcAnhPu>2k58p71KKWd1$OSuJ_@ZuyKKj%@zx*NNk=$07fyvNi8L`>obD|S;<2o{3 zp)+&`cltPxHttl+?%ZjZ5I#Gwxh{7$HXi&7m)b{sQjXFOB?tENUpdc*S`MNu-_&d8 zKm7C`z5I8d{$rkVvi9!2{70U8Eb+Nw8#UP>!^Y=Cw#XQt%6zM3cD;#-$R{b^iH^JS zoqhNOQ?{+bneiIu&-z}y7-ej|VtMr`Dc?jsw9etW?^5?GMLYk@4_V&6w(|?VXo=B} zK6UTq4?p#p#OO$jn#?Yl?1o?yU6giRdXpYKW|v)$eMRo)E#Xe#X%c)|&R_QvcWUn( zTK^t7lroY7lbxrHfl+KiJ^i#XwCm_p`6P5LZc;wpF;n*!2`}0UPaX5%B0nxW)?81=sO}&4!YKHJ zLuKbn4pq*+w)5T|>zrt>FN*vsU-TkIvGpG@J>}LXgU1@)jM#LUnrziagzYMPPObOl zx*}eWcD;=|(LES&yWW9Kup{hFicfo9#HEhuOQlb~?3efUWU&(5FFP-cnyr_;(D)HB z>b_{*wYX8jp*dsPIz7u^n+*#ux z_OlBwj?en{3GfNOHuwYg@i{scMrk+E&MV(k+Ii|4)^qT9{zFgrx_3>yWNmo}M%~_j z#QH%KqYD^S4$1w^A=nIkM9(r^ppzz-q;c{1Xr*08#}S(icNYDa!pel)S=#fa%~G3{pi!@WAUP`C-yYCBY)q>;eXU@eQsx-d#~l-aj4d7qHW0+jTnVP zdoW7;=rKJ!+K17)uiklrzEJw>j}@cTU452tCbC(A%`#Sx@lb8HjLt@P%mOW{1@t5WAvtf_*>0bX5`bFck03@eIFlv>c1D4 zUi$D8f6B)_9T`TcGj(t5IWj>uResLK-8^|73%M*U9xC!k$X;WP(Fy$FIzm_I4Ber_ z=yPhVFJW^DKHD(0iSJtZTlj=uh0$o|HO8qWULyCaaZbnyA6%)!DIWGVt~aHjz!8d%tWl^BhtO zHj%ZkDLptY#hZ$Uh$GNptIt_;QwKgbfx*6ew&D{WEitM!aj^4Vuh9RAFC!i`SrF4d z^B?@yZKXfDVC&m*_=@eZW$*?#HGRP+mw(~LM-CRBRyXHN+M{q8?RiVTkoP6G@Fp@x z_UK>%n=u}W*lg>=?7${i>BG_{eseo7yI$^>VU&EXd{OFOkGDrI!l;iUX|wequJ?W> zxHQI1viGj9nopT?M;_`>c+~sQZ9NN%fht@E&W!dP&J1Iby0D3?7qE$4SFGL^4~@j; zrhU#feE0gHZ9Iy-r(WVw@L6J%{-qkDo*!kbQ;kt<5IpMRNkTtUgVEC77hDRT`dCtM z`U__B_i>}_#6Q^bi=27Uo=0ptXIj4yGQ^(OeM9m$8{X8o4{#}Lq9@sObSU2qKTcd! za+E%E&W2;6UVQR=m8IOP?3`2i&lmgXON`b&xp-8zo}8RxRAZjN=+8f0#r8jE^9$qn zQQ7;-2Q!-wzf?Bgb!&X;G1M>Iczpgiz43UJ%QU`Rz@^oxvgPM7P_*ZjOupG=By1u( z+IgMdykOJYcoY4Qe}Pw=Tk2RHol3u@-u0Pt>a7h!+xSk;@5QM1FO9$`ez|SLkkKD) z#b}qk|M{o?+ooT%wE4B3-FG8z`uCsy^z3kIWg?F$|MHwKTWmRX#mDKi=jY?(N^E+Z zUd#J}P4B}dIt8D?V!7WjE+h7PF-qSO^@tdSOVu9B+$c6hF_X1ta&XS2`0uv4e48;P z!QPi#D!;T1r*+P>XV#eXwbCM2DwkR2j7nU#aVGZMcoTb$?3^>} zah$FB&1lmjZ$_IgY9r3vhqslvh)1eqGV*6HmulQazzYC|q zKV877;ezoLH~+#@f5CkK@cIvK+;Gf-p{X|RY4_$C{w&76)tJ1%m8BhT!zF7dPU~rztUttk~#h zl0T{(Y4Ax)E_ENvF&elu#`)kh+I@0Tky9g975gvn>qXq2PF$9@9CqJK++UO1{Wi*!0}H z@#VQ*>O4}5zgfrV`-DrilU{tvKXpI5@}(Pj#2mgbO8agZS7P!#kMGCgH1y|Rz^Z%z z;Z;6s#8Ny4XKh~8%r`Wd;L%AN6 zHw`{&gH>WFwun{mDxWoAw($vs+W~v7X*TY~CVu2O{;WDbv=EC2Oj@~>$5d?Sc09&E z!X=!EY@$6!b|q(mO=R878ybjB)8D@0u`Ksee1g@IN1aPeZpe=81%W&Fa_g%;I z^MTVgtir3}R^e6{ihJQ~**;#QW8JsLqCd}`NqecbDzEP4tNY6rxH9;c3w+syOJvrD z%{YE@h)oZ?QtEl1Kd*(+$fejMjekPk;8Po1fz3xpw&8y@eA+rnUbu{^o&VGqx-FES-35<56T8 zF$$l8Q{-N9DLMhCpZG78-3O~?^SW>mJM2Ac=sYep=#9XI%-zM(xX91ElDB}4WlPM6vIh*SKs z9!?boz=W_Wyf*$oL|S z!CBi@o~O^cpY{zFYo9XmWaC@bW%fFhaZkyYF`p?JMZN@=$TZ5hOAklFn{91uDMlr; zC`a)r@g_1?z7#!x(`fgxZRjp;aE-7ko%i7t%oey^z!R8i!E)O<3*YI!^LnjXc0Ag0WP^+pn-Aqn$^D4230@m~A_vK&Z!es3{xX~@w~yY~l$Rn0h+e^| zuqu10eSuf!SjPEj(>$pHV~*pF@6^YrdvH%}-XF#@>*qFmVN&*6Wmld^bu0O@4VTDF z^6Qhaeyg#0Og6oZLlLSNYpZPLM%^**=-_oAe<0Mt!M2Us#QJ6;{D( z#Dp-S@35=Oa9d)n?=$z356Lt19PuQdWxFFLDZ4PqKE^%NS@oAZmdUL?Kk-)KZLAy` zc_YVVvR=UH`TBiL9EJX*-*PWMK$sA}%AN{0Lt%V$Ma~6I!^03dGHAOL$6V%9K$_*+$xN)7jEJ{Vr$58yjI8Y z89EjQ#rG;_S$@uI#u#X!!5O${C zbMN@9ScX_Om6yG2x9_Rj09=OaH=&cf=Q*Duiw0lFy^AB-zK^<%b}?c>$0cssK8x$x zFdTntySDsJ&yD+7##r{Yx^;b**xVRb_O;8^F*d*OJX%~rYNK9sRdM)}>M9p1J) z7H|{wHs-j&DL4^-b?l@4?K@s}pZLr%WsT=1HfO_?LvdfNsiRy|&4E#;s~$%@jX7TR zdGWdihpN}dGCyQ7$xuwp?Yxa)G-763$BE6o#bH;wXvHUb-WH~&dQO8)>_Bp7m%fkT z`vpIC0T;E85Wic7zj*GF<71F*)^QqNWD<-n!DDTMdm9g`d*ewH4WJet^?#8z>au-$5CstkYEYGM;$Y%J=vVN@rsd(JCNE>qZPm3>?L8 zaA>`UoOcMgDRnRvj%vO+6x=M-V_iP7>#gQ2Dq{)VuVby2t>ve-;5tGdvzSo|8 z-~%6+^qwtcYH}d<8~tsQKJVd&A3oC`GMeK4$mOxe9@B08c#8XW+~c39joI&$$LNnf z`e;)R4m!#(_RooHMxmpJ@+u#`1p}o;HQgYB#X9vPu(V{lgnl!xr{OR z8H<@Hr_IWz8JjeLtQY-*A@W&AE|SrPmCz*uW{*<+p%@zL*0;3%=L8HyNTq`TK_se zoppX=8J0FFAG^2DXR!U`Hhx|Fl=beCQ+eKmpFKZT=g9uag!grBx@!rhu+dsZem@>ZDNX}#CJTz#0 zW`&^~-z%(i?M>Gk$$QKcL!-urOJ-J=oL|sk%aBpdPieRF!cQ%uSIo3ctZfU|o!=xm z<@~tiI5G@vBnPr1Y&N+IVPJ~=A>fEQOd*S|d(dW0=ac7Sw}7LK&+nGZYP+^iwts8u z14u^fP3QaIL$2ie#d@xDY%)cV_mFryJ?~3h*Y_ui#W25cJ?$2}BuGrT1HwxQ! zqbq$kTk;#%di~pQIQF~xUfgr+-{3lry>ZX^7sinet*_k^nXU6T_}TW5b)Qw1a}>@e zc>dtJO8)lDD`lbA{Ja!jc7OR0>pW_7T~+6y`?{P%%Gz1y`X0;b+3eRusWv}Zf1EW57jtV3~4=XvYY zVeGY5rmi|SZLH^<-a3T(_MSJk%uuzySUz}(TUgdDmF)Z zU02E1YICKjQUAe0+t&5_wzn#F={VN@AapC;45;%#=vMV*AC*}g&x&Vbnb$eCI$kO2 z=^xj*=bW!?t84w;!RgoPb)~1iXLHum*s@tYyL_!Ef`ieqRq9HtSkLj^*V*dUWqVt{ zAA%jbCwQ5iZ0d5^?!up!^}@H+7fb75r%6_`@lmWyU2V20V<>l3)ARqmbuO;EVxM>F zs}$w2j|+bbWwT$TtA&&7!xh^W&K1_}`?hOZ&($@X*w^J~D~tW)f30P*U#?U?xBkDN zYdfp!8LjspQdhetcpS3v?5^kAPtD(ja>sHsXLTQ3v7dMjW#YK&ulG6enH<|qmff%G zIep&`DudnNO5aUJ{5I%$b$zFLCdK1kqcCRY55bC^*8f-PvFmgHT}J&nSjJ^p>?!MF zZ1A(~S?kD`YX?88tY`Uo#d?pz6VI%l<7Kbw-*=2IMn9vh+p^DfnRpguxnf(}-^R=J)*Q<-32+$;toyzMM~(7~Bm8Q|^Z$cU!~zZriS~?OLaGS^T{`yDpDCpFfp_ z{m$g$C0Q)X&dP%v3b{x|Ta}NMLAcfP%Y9Rx`rJwL81+3VgSPVdaYS?7J&%-w!QQxK{UGwpV#5e{-&$XWzx|8`H4eV6SQo)NBZzPInL=zBe9=w8>2*f-DR8R6N@ z_x2rsUaz6$(0RIU#J+j%Ov@wvHs!Rs?L=SpT>ey^rY(i_v+*~yJn`J-xqgT9do&!-SBAdd?0yUNZYf`*gZkM`S-5XJ zzwbF?f3y2uiT4i2O?k?D+By75z6<3n&t2tnb^GT2dQNM3igPC~i^^X-hcb1QN98@! zwVT=(W$G#qr(LmaZ43{o2hXt$8Ei}!L&}loY$jeyxu#q)Gnr_1dMkvESG2 znf9Ojy;~Vfs@D<+$=kcbH?lAFv5C+2oV&9fZ&lA5ZL?h%!B1lOb%6HeF=i+nSefQmGY-8}o`7e0E3r1Zt=Kf>P zMV7nPXWR4VV2jb!%U<@f!8#s${#ad&J%27Xw@tr%XZ6{+Pd!v;L(dzlqjk>jlIvW) zpA%2_wc|PJcJ6Ig7@I>IrVVxJu3FWX-Ium2?3rwLZim&T zq*M61kF$0DF7}e!zU=4JhS8UF%zhX8>wD(DwOwJbuTGo#?Zq#C@flm&{kvk^zH8d< zGxc|p*S_t+<(gJ~Z<75s_L9-Q@4@Ld^W(sSx{ zxL!;Cn6aLdhpmsl)Yqz?(en&+P3|rAI-y?M@L+nryVmulbDfPod1hN#^1JEUaGxxt z^PqRvO;4UI{w_Vj5qGooJ!_wSyZN~{ef7z`Cnt~mSKoNT-?qzc<5l(ds2#9f37d~= z4WD(6_6MVfD0izbf0Bb_u+HA)6`!$h$CXH2CJS=-_HY08$87u67ryY@{?!X#_`+YY zF|xmE+i%=;*9*S<{O3RaciA}RJNy0foWr@__HEzxi+0b2d)1%!N>*)hK_0e!-s=20 ztN+!K{MSQZ82hU$(k@0vxO(k0sasn#t;y3OQY|&$E$Ji(Ecq zGWq0^daZ?_wtLeK3pwq)-Jz#gCM)AFx0QXH-%*BGCd#-$ezVtBbyhz;9GxbNm(avOGBSW*{rOt!@A5H^`8)o{rU5ZfB&8F z%&!kE>kiNRca&A-w*5xh8~4>S?0MMf-`QcE$71q#%!m4<%0IP?qHOTh_DC)Za-{4* zMw7HPyB~iw5AUyRq|>QoWU_HC2A_JyzVG3OTIXx^m)kv@bKp0V$v*MTLc40w=kEm0 zUP(rh4RW^oBcEl@+^gTQy)}m5j!`x(%4W{~&AK`({G-8qE&0@b@m}F#tjvO+J*b^Y zHnvADbBY-@rKc}Y*LquuAv>?OSG$ij$6{gC^9@6aX?rnbvT1zeRiCx5*O@*0%rXqs zzn_^re`R0mxoWw|S=IG##n3ThM=~`GshwTmA<4(Evz2_si(mX5XRmtItIi&H;DKhV z-{aJL<~Pn^Qyn(BHw=BE3q$qyl;hVnQ3m9}Mx7;xv3tpD6XoNcCZFGs9Af@Z*fD(l z>eSC(S0-ID+!UseK`o=EjY&S%wmv9$^R&e_*Cm_y{nTUG*3%ldfm<$!aPY8HOIK zWrA$nC#3(jt4u?`M+Q-+98V>evJ72%m_kO8gCw7I^QLX(ouaIzT*}XF&qXKYd1F3@ z93$9q{H*IUm)Kb*8~BHF%IhNj_>FUxaaEg)#>k^Q7g?BG;G8I*&zI+o`K&Thr@s2| zTc1p#e9B{<(N(5+-@fy@u8-dvN6W?&tFyUp6wjIZIF`Sx_t?+t)_+;uf}hyPryhUP zsh?%{?E78V>XL)n5$CZD!Ph2bge>az<=Ela>c`lm$>q~kSHACShbjx_bjf#vGWy+G zK4;o*LO#^3#LQ5+NIu$k$!Lg-b&nDIC?ChrCfZjipDFZR%4tNM2e*x)eYt$#q)j}F z`mlBBneWRs$Y)&_%XH5@_nevU=J&Gl`a3N6{GH$Vo&J41cb(%lezxx>kKOyqSmK~; zhw<~vU;c8hzhu(2M^4Xw{#}D{(p5h5e-xue|7UAC)eX(Ahuax@P;!#w5!;lo6=fs2#PdrzBP+>i9UK+$g_*Fs!S7bu zS1BK4(WTQ@yy6vJU+OKnXwQAhd+{4`L`LvZ*L|0LAI4hKzWC#Qk1e}ys^7)E)UWHF z)K6HDOyZv3+2VH`N6f9-&X7mFc@EKzWy3z#Ro-oXFC4UC2RU@fhu?H9=Zr14>Ev^g zk8;qGkKJ#r7jWh+oQm#W&;f8-^XtgBm0oWM%T<&oMNo@x9caHY8p`KKRId9*G&( zc`?3suzYG65xdqh+KYKiV{yLroF|iyw=>hvAx)&JGM@RQ z@r>r+Ae*hWr)9FO~fyCKu%=W+#_YZnc~m86ht#zpWSb z!cSXW*7m`J@VLlnY77?@2qb830vB$&S&-;n?AGGId-`H z_M`O>|Kh86vmWAezVFey*>3;dM;~STx>vvBiniOo_Z??!=bx){bS~F*>0zJ0r(WlE zu4EutthTS@b_g=LQ2+0F`!C)8sz-k1IWNEeUq9!&?)%l}-t&ro|J-|Ce)YL`zx>PJ z_=0agW8;|bzTsux{~Mg+=f2{>Ph7Z{<88lWC9Eve<$E6a%FKgv+bsVw(4K4Xtm z4&%>HjjhL~&!m4at3NNhj^8*#1hL*SQyxYFp>hZA2rr2(It;ys&Uca`kxqsI)_`a`fLw~!SKHl0F zYTB0d-wwUL>%3d;xAydi$tG-kH-%ivXWsTI(?fWUj`_YkckE~7J}T_ce{Fu_nt4+% z@7ql_VVk0?%j(wl+*@A%skLNuo@3Pb5tGlF@zyO5eCq7dJ5HPJw(sfJ(4l+ zye{5@-#CYJ`{cwq@j8zC&R_PM;<2i2Rrq17#Io!9e)lpydU|%tgVvsU>celGbIHyf zyYY;!GQ|7#o!51J{N7>>@2e)(P`o~s?TXKd$6o$7{;RV~KmPdI+ikDzmQ#G@s>jiW zHS!7LZ&tl;*LAmj?+4B5UVgM>13#~O&#vol zd6U)kCrviR#`m}X$$nnpo}A z*L~iY>+yA}_BEY-f8gwE z-eny0z|U@lW4h|;WAjZm#O{*Mc^jKPKi^f3^83pldFm`~}anxMju&m&BpPLETU{U-i3V5=W?94Ey?G+ zjlFd%{imf4ZhNC)=obt_wsBnkzKzeqPT963qXt7em|wDu`u9B}&To-C%6-7lr2T|_ z<(kWH%djI^2}A4V>*rGMA>~lKMcpNbu6=`{4dxVwlzE%y48@LQ)?ny}#%FeMvSbqX z5kto^zITj#kQL_(cl$DrX>6NR{l>~hSW-KqKYHx5=YGEW*jJU!MHxN(xw+SQX!$f3 zY>2&*9J=&w!#|7Wnm=ex$zYZH+kK5LL_5m-YT-rYO$tu=$$T2wCH>|YD zr0csXR?)bcYOgv=KKjgFvgNvM`Y$T~%`dy<l+_$9JN|1}Crl z!ljcRzVTwk+N)1~;EQj+>2+7%Z~Kp*+;{a~+Ws>q_kHm{ zo_zlouQwZ?+59&@=i~J?Z})p}uZK?WI(fsjJ5GM++Oz#x_PjaDA3G{(jNP{a0UV+iPrl=S}xt{qV`3z4}kbaJOCeZkxaU zknQjF`*C0Hf8T$)`Q#UWJ9*pUuf$@?ATjWg6ZhrdpEq2))%mC7o-Uv9&wTOACquT< z&kR0h!&CUF@E*Ram&3|qyqNmQHkuen3?v2?F`)R{<9*_B{5$cs;(dI^wpf1%XX~6c z?za0b<_2osCij4UnR$WqEz`d~3Jf$nM7x&{S@F<2J!XY}oI}2FcJlpO*x)VYG0Art z7kVC4KIPxM@ywI=KYclU%SC&V_BG{^7&smbc+OFrtv(}ih2#z8H|~4;>E=MO}LvCzhq%n zk;li0-_(2R{n#+zex&-1sXIYZ9A@9I}PA3+%@E4d0d+sAKOt}^|~gYhYnhYp{Iq~nFY zY{nrn{+gK4xoCzw)aO_78@?sEO8UX6i};DYlpF(|9F?(eVqlLk;C#*88TgD?S^Y+E zHhDk%v}GJQx8G~d_BlUQ9^lsO`#v5YM7~Jw_gm*Dj5DM!o0yguQT-5e%|j01LFFo` zOXXL-J?1GBv-^$N)L-iFSTW!}7X8>Z2hn{mkNN9yNBihUiqFN_Rv)hyYj|YecgB5t z9QPdqM|o_E4@u6>;=qQJ_St_FCzbn#qw2mC=7Hlo=a}#0spP4|z#d@0`MR3_c!%?K zwcgrx=RTIay3x-e2T-jGcPsNMkHI!)9Wzee7YsNr;YU^LL%iGbb{pk|8TFInS5|X% z-sycq@N>=~On+hz{E2jc}n?|%+X1oa_87gA7nZoBxSk(vUIMdkC%QFf9Jy&t9Lyd zBVW^x&v;N|0avF#nS7o8UF`Sc`2&{X4B(y20}KIMAA_$%EAMDHCg}V=ZNuvKxzmhM$-p zM{Jiqpp16K#B-?|Gla)8Z(Tk*}!* zzaA6WtjG4+t2g#;ZJ$lsfymY5MaYljT<>h38*ZP6;t#G;k7f;9){CT{gz+Ysk6g@0 zw(%Z5B^+M$d*55V_dCbutb)P3Ci_ql1N|6q9}-`Pd63D|%lUbMv+KFu_><&ISaUP; zl<8NdUpXlT>Nz%dc#h52i`?K?mWB3xAkV4ulrBHUd*^x-lj1XdjD8;@<#YJ*ao-0& zQtSG940|B_xh%_`r$G+Ihil9$u^Mp zo-fCGoXh&-Re#CHy-z#&X=J}i3zz%YfG=Km-bc1MJ}0>mmyPo_^fUtcBt$a(9=--Sp%k}=8IU$QWjxnEBfE=%*xS@W*;C+CKNEKl;%oH5YEyJf$&`#{E3 zxt~r3dcQY(MUIj@aE{T*9M#Ai)tvbx%QmgObAF~T52ZgyGL z<0sYMo!p$F^AL9XK60_ek z(_-8~u1#^&K1K5D{_^W8x@*?a;2nsH?{i$_Zh0B`5L{VT~|84n*62E0%E4OhR~+IRJ?THfWC{^LwJxr*_Pk6+5z zutWC~vVO(ho z2h+EmeJOk5N5-77@!0FGe%5SHGcPB(Z1wig)<*KXl;@@};CV=Uhl=}=me=y}&_2H= zw(&fkzdva@V(gKRWzW9uO|_T2?|iw~IqV@@zYsr?v3Re&dY0QB$$-8W@)y`2=6SM) zG4Ef@*f?Y3%u&uB1HQ%=xh(n?^!}RU;eEA1)jC1+5hef5zU`%7I;~&oQE-d|Jo2@w+}2k$cnf5l_^`W=f? zVI}XAyfb$UIG_1?6Pc4dAP%>AQ>IVeuV(LG^s%tkhc0;8q+);B`_H7?lKA@VH^We3|^uC;9vC~=4 z^hxK80rw+WGm`l=)wm+_J<^Xns93%lZ)EduY+a{}qp1$uY@4dZ?aYl!X>#W;x+Z3NW z=xfLr-gAu3VRIUOrP;0eeL2o;+4pkX?LYZ{yZU#&)%+TKjO5(I=Uj4=tc_yvL$&B%DNd#q&3$nKQhM@ zo%fv_D*xW_wc6@2>)HN~v;7~s-o3vw0LK4)=H}9; zUJ(PH-zO&XTz@maCdWmt&P|8H>tFFcAjVDR81>|r75Qau{;rSTVGMYV-8mGVnyMbv z`ntTwE$1C3-yI0wZHs?Te(|?2ov>ykW8+?T^|LvjagW|XyA59#Ou((S-sHA0na>%Y zYfG68lbMePulVjWxh6$&onfH#L#ug*yf25fDDSgA8MBeuzJ|50l+*FasaosD)}z+@ zYt*NGv2B%YEk7TVj4XFk_x;?OJaK$HacDZP`?v2+Kk|YPmArn=>(%(4KYR6``Z~L; zt(^TbnWxM=U}w^MQQf((A!4VFLMQBFi`dJT>BR5x72u{92c1!8acG>_=d0T zn`4O5m)!H%-1}kZgL&Q6-)-sNY{Pzjcf9Ethfh7kf2ktosj`0`U&aL{i zeXXB+PsrU@SKFW%WqKW}a+gJBrB ze!{x;j0vmzytAJsd2jB#H)Z*Jy-0hnvag-R`YzS{nj6WXX-5WQ0J}>r$9Qx~Z05a^ zi?@Y=CYEMx>hvSie;npNp3AAqW7|A$<3a3bz7s6-lSh`H^s$j|y!I`=W+b`Ds!g1? zk+E$m&p$rdRkrs!bN#nv`|~;JXHJO$=Rw}%#k-i3!;X)`rqVfMD9xXAdkUV&QChxx zO04F+lKbX_0guD0`8BU;`m{41PYzv`Qw=-LpKq{n5;+GaWAZ(V$=&Aj&cr`=?bp+n z%s!d5F~B%V;u7ZNz=^CKl)RX{xM#fB=d)JtK(w`fn0Lz>S=IW0=|ipRL*;en*nvA4 zf1YbiCTH#$XEMge=TFc#lWqFEO{XkYmjyY>3Qw#>d8fadGyTcr#y#W4Hh0i=-LV9G-I-lP~v-FMZuh_W=X-c%ZNMalzuu?9)!3T!$wwUQ15r-MQ9Ua^gO4qRQyweaNR{^I5my zBChkhl*xJ+AV#4Nka;=u3FiB9GTz>|c$;-Dtk3a;`8B+o9==Q;ay?#1UTv43k2_~w zjB8&nJDvOVE9Z^@A1hg{VUg1#&5 z)Yra}ADO=7=J;X?&e_*{fGg%MFg7UXE@s@lCvms0hn8yrB`0o!cPraltwqUrAmu1? z9A)z54EgeWevQRGwoZ%Z)~lE(`C=Pj&WW2b%C z7I%X+#+UPcIo6_NjpvNN)1RD?Kj~wC=+pN3wAVhCecCzxX{+PEj3a$4g{^}zcON3l zm;Npou=a7U=hM@dOkZ-FzGQ{B>(x8MEbo(Z7SorUlP{??BdeGv$3||88}d1o9rAeF z#!Tk>6q6Tc#EX4#gZJHN{7<&y^e4B80r-+W!)k55*LaScTu}CTCx7mMKRp-8T0e~E zWgabK)-uLUPTVFZ>RI3pUNkKB+3)-*KE5j_L=wD*qHKFFrC*V z7j6p!6@OY^4(sh^yG=iGE*MasH|tcfCPuzTEc?4R)Zcybi@$AaM%r3G_U?G^pHZLo zT-rjGFe&&pHrF^>>-W zoxGL2HCGH^=dt(9tF8OIv%e>~bQLc3IbFmg)~D_H9^_s@@k{y_+GqCAnqp7$A=3 z9bvitZuZGc&?mDBZ!WvWay)l5vH9HFQ|GR znx)oH*vzj1N69J4Df@r{e93AaV!r=oroPm%+ZgXJWGqJVYI5p6aB3_g<1*f0@3o`P zn>7LN`%gC?dwb6MFZ#^xL-KCU>isp<9K+vyCsd@s!6rpt*lSw`h3iG}L^pPc774_=uIzgPK4>wCctC(k9%l^n7!pDq6JeELJzzJ4xk zE6b5w8!>S5(CJ;qv(nok zCV4}=v2S~F>5LP%KA32~^EmyvIbguoR%6}1GTJEUQYUwN0p=WH6xi{^SZ0=_x_gjBa_>@_+p>F2gl^r4cqDC4EJ$TR@;%4 z=WduA_UEqs?#TnT-b!vMgG0bT&AavZq8B;N)2BRWpVD*C%&#FfuKEJ6C$A-^AB;`I zM!(_Ob;hKnf3zL{DCIm{&W26K6TREl#W(~XBI}U8urNT*LH$DaU$r%U4eL42`{4Y^ z>RsBl)=xE0yP98{bBFRNEMu#~G=|`pyd1$_4Ss#y+Yz#-flY6hZ zOFr14>>FQ_u|*|j^KJa&=tP?nAPNC)E=g=0j4Ex2Mo6?v2lD6)t+0;*^FPVACqrd=M{Dy14MGniycG#TA z0rh51K_4FaLALUpv;Nv>#*f+M5Jf06{9h)xFmrOoBRz7a(UF9de&%1tK&RyAm zG%rr}obj7aUupX)7nyNy#=U*<;er3=V{_7%%(*vni}%S(=GgV*<^$*7#&_(hr+iAr zd)$BZHJ1OnBgawh&ZqP~ZO=uX-evlDcf(QXM(2 zm**y@9Wn;+B^leD^8~lTNkjdqV?NJ)Nqe_vlb3wZ#t-I}GDr+m7+~!na+D9BzRhxD zcY3ZYbCet5?`od5z2nl}>0$Ezkmn-t=@W~|M~Q)R3{-J$`jRut%N?^HN!=HG$!xFZ z?KNeQvJeI;?q+Vz$Nb%8^m%7KU{ZgwS?`B6m>I7s+2=mnVPaqr1L;dn%00*K15Q={ z^d&P7n|6Bu1}gr(?(>NCzMS+Y*XDG_p`Lu;$!DF|IGg7EHS}qx|FGykq&!j{!a(|x zYxB-j{!`xPd~Rm?k^}q*wc*?+pVxifKChT@#yO61WnOQ_MOvTs$&Z}=^X$`3F3K2U z00z>RT$yvy_dECfrj~{KlA3#yzEb*1iGg7lz^7z>G4Js+e{$+}c?|b6-|-HAe~s3V zNbC*6UdrjX<&?f;`jRsoE9$-^a|+<|-eKkD`0uUkGc*ZRpew|bj9X4zTW$#*DjZrq=Iquh^^ zapOzA?rQpy$IMSz_x0?W{7KfLy#MNlnU|d7DC;%H@U6*3=KPxVFqUmJ- z{TZ{4^L5fU+^oFZmwf2j*XNpU1Ln`QaXDkXe)!sd_Ay_XYe}w`PstjIZ$5pc_jw=T zdX!a+diAU6)An`Vb6jM$4e@8yM#xR)SXs$r%pUpietH{Elm5|W{iBrcaQQaABy&>7 z;5pB&Yy*6Fo^#1L1c?jb;&+3V*6zJLu4TN?$XQ_P~1XkY)0a$Naz=A-8ebB7w@LgT>b>DYd~xQeGA<0BWF8YXls12;_0D|>DW-bl`aiO``$diuu#$Pn z)$l>PLUsqnBfI3VeD?bJOt%AW-_n;{$?vPi{CFRx%aZrO!I$dWJ7gP?bsKIAYJ2MQ za=?fAUWdY8j(gTZBKN9XWcrcAv2n=l2;9Sw)%dKKRrv<`3L?)0m0n{{9`_jyk#8&e9LC7 z(Ue=iUtY=w`P%sWed3EO>-v7$KFAQ8;5jtnoi|#HnA>m};7fX+_Qf%9{;m)F1jdlD z=AiqXDc_^V7q)@6_QR)7dXAF*sy$lY!*Ol%Yn(IQboy)V8+)A++eeRWaLw3Y=7!LZ z%{cOwILUoU`ohRvro9<%Z;&rCOJ6eQ-OOm-jr?5Ci_rGdmmJZiYrDxD1ICG2U!UX| z_nx05E@y5lGG;s(K19lTysQt==8$7B+v|QAYX=c~%ycZ}c`oww9v>4^jqk90WcrXt zFN2titYf1#A5z?C@?zc552Y_Tw(Ssun$1aHGJVN8`jW(sjA=>#X1sq>`I4_8w=16P z+IyT%4wLze9*-L@q#YhF^Fx#wc<_0ywk9KUTxYZ%WfKoE=8bgjNcbdf~~^` zsOBRseFuTdnR(uf6=Gga=5^AKY-~<#ld%){YmB38=^NYye>CsXR-Ys}sEj)kyI>bA z5L?7|JPnu=V%J#?-o{gUAI%E9+q9b_ySDDfNMADj#a-BfWzTdUhkRMuhw=8od`X|f zI%2$=%Nt+eEvJ8`c}MZFa%0xJz?}J%7GwClgzCL9x9+0P+cC=63~-8{z}$1sr5~B? zPJ9;lH2rJ5FF2*28rwlGeMIb&zT}GSNWOdKC9{uvhJD=lnm*so^9?Iv{8%{`U-ETV z-%qY_na^JS?)e@Y_tMN~Oke(@-8x=eRrwy`4dyT~Z+bw!r^MJQpPM;j_>rs&Nd7#r znb`EUSm)1~UqgQk7+GO_uVMO5+jzfbj<+4daaCTDxbDtX+IC)(`OHmYp!OwgPMvYZ z7;GQ=x%iUA=EkXGb>z7p=32nV%*%nFlUvhfN1M%fTwhy-@nsj+3K)yIA?MrkZZ$r* zrydtsaYD}1PF#XZa?|9feeDXvNwF5%5PWeCeYEFmNoD?Gu+7CjRBLeEF;v!hUiy#Q z#DM#fnSU5>FV^rSrQc?LEMrzRFDHG<@wzz3xW@B9=W9L_cXX_?B0R0KZ{nH@YwV|; zA8h9j5`XC5Fj%c$_1U@)0t~X@9ViXFXyJWoW94`mtrjAM19_lJI1>a z%T#tM*ZkX8jBKRb=1VfahP6I^>Pxq+%X3`sdGG9p8P9RbT})tarqE;FBXgc51{z;7 z^I_xKw|q&PmsrYl>}Ssnk#nlnUb*+Y&pXE*WNyg&7k|t97-iS%ag<|m7SH$mlG!C+ zR{+}%o->{t#{nDh-{z1Hu5;qV7xYO_xK@?NE!EmKIi_k1e()uUCs!C#72ACtrw_O( z4493&GuMq{qf}D1&uKAMp8pr+Tj9W(99NH=GF`pr++yG2Hcm- z@hju=5%`kT7{|%y)p?#0d(V8y?DHP4o3ZwD@6NZp5p9;fM{-63{mE+mfRKyKJY-_4 z!M^7rtN9(iX5?nx74MkMKCtn)GymIT$PsJMP2nHpJ<`t{iUIQ_?{J^U`?yBNN(~Pk z;dNE~{wex^hRS;AdG1Tvnr+_a&AeL8%Sqcmo`Vk(qh|MMuZ*Lt-bZ&QK4llaJReDH z!aMGm3!3@v#L+^#08i$ty!rH9o?9S38L?($7w*dMo!40FYT?;OXggM^KW(;t*Lf+| z{G9&Y95BFmez!;IOOCTI_>zoYv%bPj>e1iR%p6BNxySb7{Kn_q<5q}WNjd~VKRV+vEi0C+>~x~U*}+a19%w! z6@N1IG)zy&ASY}qn84mx-Vwi%9Fxb06<)5J&+wJRO!C_T1{i}^tzr5ik6Aa6i(KF^ z*4>B0j-gFXT}S3Ck<(3IGT(bM(>0OEU(|gY*Rzd}ur=6b+PC!^iZ3_0_pxrimbB%V z=-0$=NdF-H$!N2{1N{s52oIm0*2fulL>c9A6?bS37kO*mn=o+9?W!E-@i1#uFa|tz zFrK%tHTC%DRdtZpWlnOF7%;nYtNA8xbNiERd|VsHX4^RRP3kA!+xeJrl#EMYY!m!~ z?~r;Mr?-?>%Ig?0z<6t74Ej?TJG;es9L`MHs8d+^jA1X_uVk@vrff_op0_?5C})lDmUWjY6TQcM75nWx#adN9Z+wl|{g8At zrY_Zb40rPG(^cf3*UZP~I#gY_FUgo*a#~}so#(pk^|7YRPu!6&DO@^NlVi5AP(Hq$ zJ`v?6Qdj9GB?gWI167-U($}OXN8tY3?sHiutOvw989hguzT{|I%X_YnpUF|2pZoL= z=Y)aAm-O)%*~Z7V@oEmdAhhcA(OK3+Z3&Y7p} zxj*X<{lJsY+I5U8ZgOAp(d*w>z2712%xFHw2WM`>4#wt7hq+JRwGRXIjo$R5kH4f^ zcRSno*f#FIB>BLZ_>$<_bCmRX``U5zdFQ;Uv3kw(lMD6^1C|e{`y`%CU+AnjiE%*i zQRXaGi*@iNcQ}@+&xgq0(#LeagV>dE**>;6?Z;UA;d7{G7%%!79B>b7QL^R}<83lW zxf+jWt}o>_R}3f@`N;Kuq%|Ywn7eX6h_#4vEYl1@&zL@A9|k;rrH$ij zyy^5Tw{bGCJiv!6)_(S!+qsWpU|tSmZsbqGPpR+3dtzWeF+lsR{m43=_4n8Gas4iT zb34O4WPHiQ+;Geh!=Psyx3Ek7<+Ia|T!sOU7a7NbpOI~RcpI0j7@NfS_8E_fZu-3S zz8t-OQFX}uc)h30Qf9lv05Ku`#f*!lUxYr08IPr_d`av7f_ru;w|#uJ`I6);mf7?Q>@FmOFto>oqp;v4EVfX=8oVKrJWgXXBcP7m~zVt zER*#de)rg+TA$-ZZjaRGow^^d`;=MAY+D#`ACi7;&+Ga7Yv#ZwL(Aa4B=3C9yyW;c zgD?4()AtOOb)J`g->xv={v>02x5bNx^_*YZCtnhbxj)IAEBfYHYrT43PL7{EEL@Ja zSy}&i%B=Du>C?6~26>NO)u+8Hd$G!M-It_4K7GmY7_)evcTcV&_q-pU-g%Uxo?OOE8!DxUaFczKAN^PKb} zcZ~thNmczRX*{~TvXB-boM!8S9 zB?kI2K>r4Pz<=ROf57{+_i%nqpRMycv9@}~rTsW4+lhQhdpBL5eDk;TE9Zg%e`j<0 z3**{3?Y|^Cb-%pS5+M?iecTJTLvqU1GrBg+h)k&tiOA_wn*J z=lQ^WN!ozFFUR`eP9DAfjXt&uyi|5^yxjKL7s#@wzE{BjegR`*$TL-IZ#^47>(K3s z^M>`&TD^0f^0By~4~Vs)%ojg&oMinDBme2|Zb@Hqyp2>Jgw4A=mbTz|268FPIfCah zmpvXgV{J;Fzuz*h{YcO0+dK--^V_AzxL&T@Grrcy@7g#pIFFn@yg z*N~q(@ILL5FWhg&f3C*kAD8aeZ|gSq#>Ujzc+*m@`S~#Nc!#D(#`ZejRq=DS_c0uR zAH{pE4|vQ|7vBASIn*6HsXp(-P_~~j?dNdMJ@3=zJ*%vVa0GqYC095{Q2+ELSK)=P zc&whjWacGpoLSkn=J?s)u~4le2>-2u`QyC?j%1$VG1>|9pFKy3opgI){V|LQOAH-v zdq~|^y0_TM*Lbk;#h#lx!dMeq=XqFrZ%gvRN_O=tJ~rLr^*Qfvz z^8SAE5ahX;=be4ttJsjdW^6m$_4$k!HZJh_HTC;z#bG53wB_OP%PW^)bF__s84t%9p$|eaR}{U#$UR^So{CJh!V=J|bh3UHdxu{PAsj zxXk?hB%VWJyo==`kGY>B+D-Q*-+cP6^d(pHC0Q@yz~6-t@sh{;-EZ!`Q${f-P z?cMvhPwzVRzO2XrK8BLDC@o*>If?TeC(uZ8M zg>G9OIsKdIORivB$nEf6qyv4oX0#c3yx4B`RUUAlkMYgC!+Pbb;M>Pb zXJh@$GCrGQ%$- z*G?{yHL=LSAIaL|W7$s#{A8(USz3ErVsK7Cux%Sm6-){Yt9 z2B*KK>eGJP_5aJ?U-L6hd~MFH8Q-?yL*9jTf*jMfjKej3HO%iyUow5kJ$vVm$B%l? z)g#8|xeb$ne90U`wNjh+_b*m!QF@NDu{(*sVfafqO)IBrT{Ol(f5+Ndozb<^|_ZPW9Z9eDQP15FlJxb=~RO<><@AOXGUBq3=WLlZ19oO#} zVcbvJlhy5sWan#erd=72Rl{SBomwA%!eQ>WCrfnIY#9a^YsvhYx1K)aYa!)8Eg#Oc(ik z(_U|S+x2U{j%m*6oD`4gQ*Pd;q>t9xe2!}w%V+W>&F@K^PKQ&U4;JR-c%0+8qZR!9 zu{zE38=H2(V_v?Dy{^aSzS8*b)|{g~UHcUmdjCSU+tKaGeaSbUzKi#nOP0Bx9-k@G z>1FCMIrHtRwFu74cIP%o2G?&?W28^-N?cBlOJwTfC|UoM{BJ#mKk=FEb5#uBAG@vQ zot~_JXz%#UwmW^>B_1>#J>>Ep#HESp2GisvS=+*5oW$nz*i4yjPNwclnyt1m8aEm| zXZv63PuIT9W6W1fd~ODx-sf%aJIC%jzgBa^SbuG)e)61@QN)1e*Vz7*tmEbHX~;Dr zH`0$NUoy%+kB7BKvn#)8V=sO%eaX$(l(f~GlPkRHV|}eZBHR10_KuwJC2jxNoBn_H zzAZ+wt30>5s*ys35)=gq9{k`uAdrxsEb)LMBwpZ1ydaSWOOXu3a2$tVGhlnL4T@t= zIK(n>6ynQ_CNtwPGsXr7Or)GB5DCtC2vLv{$w%^&Esi*VY`Uv^rn`FV%xKR4{d@nr zSFPTcwRY{Q+L!NPYu~Cbwf9=z`u^{~{n_q^IX;&+KJjeT?=3zb%ga$8B{U{-N< zF#ugGwfSCCjAJkDrEo_V|8%ZOtuNSqoS*R+rCbvEhfC`mDV_-5*vSL>rmDAm32yEuQ2a9=HkZO zBF{_v*-7m+^#dVijGU6%q=#GC+)R3De`thSQ;dyV$@;AJ9=N3Bk5pkO?;quxT3;7& z7}OppN+ZAirYdYH`fqjTM!3Dzs<9^f<_Q}bhL+0R4$XsF?m^pZyn z0@T`P9Oc00ug*#MS47)^eXO-}Q4@fA7}u)Ra!Jfh<&)qE(AAUJtd}`{hdY0jN5Zy4O$y}x z%UaBNxrTWu`AoW|z}Lm~q|UndvW{QLIUEWH;rCqqJYB{!A3c8gw^Dy0xnw=;JBEDY zWxN~y&gwZfLQikx<)pQP(!3mMl=a4PowaZ6KLbr#ZDG{qlXzP4$m)5sENoF55B8nJ z;FC+%vh6gV6R|wYdPn@d>zf~ae)fvH67#2ip#iNwjo}>P`Xv^N8pwL*r^QjKZw)?9 z*0@?b$7^hkmEh9&%hO%?J1=X#0_u*_u3M{bQ0sU}JTvmH{$B>G(?{lo^b{xpg|;F3@6{RU#rm-UYLd#iCpWB%duhHn#jkmBnkpRA>e zbO!^Hy3XfRi$we^>qV}WM*^qRPau7H(F3(noGq~@`t*0K{{?f!sxhDIV!NJ^uDy~s zCi9W;W_9oiel_qHa>=!?W4e~fd(gNI)DA+-7HVuHKG5!Pq&nkpP(LF*r$oOI%*uLc zb6si2x}rWB=_{Mqay_?YmN4g(OFn$*z2uVZ7|+C&@b@r6UlEBlBbTg+d*G6YIi)7j z3NC4LUwv(eqeT3M*h%n(f>X*dIb~;`f%N7=FKzVHw7TP*ckP;Yi1&dVM{S}O&ZJ}e z2F7ZHa~Q*X?$`Uw5NC$oEu8x`IRM|&b2|0+s<&~M2plOh{)B4-Ntpcm2>To zOHMyTE?JLD>Ntn}%b2Owj&X9zd`_8i$(z9?#}7=ebBlWhYDXg0oLsW?b6?|H)&C|r zrpVj)^3D}m^R98s$Bp?_JTJT#&7DfL}<^MB}N$`p4ct`D+G>#H{WmRK^ ze#`92&hOQ>@ z>|E=@*E)Mv&~rz~TO^lk{W@ouq?{7{o)9ODn#$0=QlGcISMKBI!lKVCi8&CTHu5%* z(*_%j{cAciuQ0#V&xN`m(jFaBR~dbul)t3)&4)OS*ZrL}-T*n;$dM9`ueA{v7umUWRkq zb&sho{r$w26+23DISrq<@78)U^!KG2joAK(`R&r&Ys>!%`&;XiNSx5n$5I!+zt&cU z_9Yq^<^bL&^s%;#uOa*&$vP@pBvnY>rE8PO)wb(DDsk@-i;J)onIOLlVY)Adhyi>py;on_|cER|0ye@t?p(C_j& zjf+GaD>-Cm=aJ4O=n`TRkW0qdqnHm`UqYT8c^P?Gm&bt2|8qK?Be_&lc3D?{54a>^ z&B-PEG5@tbp2WXuUvKisrSQp&ML4ryy2dSAd#3trS!OkcD4gz(_NG`2hQew^F+Zo!J>Erj!a=lT<5S-Hd-mD$8Ft1b&iI`Nx z5x}2~SXIOqAZD9-WIwp1#Y>S(M$H$U8;BQ{*zG>zD!XQAP>#9-04-3r&wOA1!3++YTJ=e^mb0*`E@MQ~!)H(;? z;^dLN<&d_{Nj-$O%ll`~n^-$jxHp~~a?tEqa^K%IrO)pc@k{E5Vq939Hi@_(;o(>( z`#e7Q-4a|=jZ!pdjrG$ydQuM&I*g2iLHA_DT8LOk#C%EpevLDQ4vD-P#0pT0>_3l` zcZ~PV9PXp`Ri$RB^CziQOspk`?D80Zwni>l0|USzpuLbw_I|DO=Qn!#saA=eagw_V zPC3*#F??^;YLQdJK2U?33z!>fXGuO4xn%r0qIRg@2mBsB&hVVvvP)w?`xC=oOI>@-oOJhdJNX{|(>mqnF-^{zn^-9@_m0^eK+t^^M;) zJbTqC(X&N)<@N`ZW2wJa_!eR-yXpsr{|$M$`2P_D3H=1|qKFfQ1_}NsIob4M4}AP1 zrdaF=a><%p66*-L9QrPi=1k#7Lbz%`X?s;sFlmMEWu&llqZIp8wS)CVA( zEaR5Y`b@W6lPx!=J0hPHdMbR^sDp&Ob?A?%Esj2i$fcnVd+t5E?|i7oIxb{hkwadVH`hSRD)m4*&*0kLvOm;QziF98*0HzHsC?8^4sC zaP4CX-4fi=HW^#SGj)x|I$f|CA1u0W*YW$Z-=F@Sj60%-lW0rijjI_8eVTKqiw3(x z$JxMj#@KZPa~HNHFriOlg5PC$ID$1zz~q2S=P4 zv_5Re*(T?9KilJHWg9=d`{ej*m+nQ5P{tXd znL<0o--n+P{|`3!>8Z6-fAqBWqA{;yS8O73$v90C>#cH0)B_=x6E>2DZ={xzK2 z&mboVzX!h$zZcvw<%}FR-5xh>cz+mIh^Hl&tjQ%2QzCX<8{Q@V2jW59F`(-d`>00q z$c#%Oo{U_QHf6_c%DVW$pX1sC9>o4>@jNoqB~hDI_&Dbh=Teu)fO5&Zr$10#@+&eQ zxP?Chqq$dA(%KN4VsN5Odascgg>On8Go@F|g_}pmkNbhQzHM=~|0*S7VsD zhS0awao?8Ol#)kAE?Gm96)vebAT{?^joV4tUlwyu-&T}9sa%pV_gp`E zuznzJ8nubZCF^lXi4$VnbPwhMc}zEX4By-O-y6APjkUu#x5i0HeFoMjCZFv1Iton< ze284K1|Go2jd~8O4MrU3I1Z4Lt)G*1^&MzkH0qL3dSsTH04^ytySn=B`F|5PYz!!u zL|-@N-b7;oo*8OFlS^_w*?i)jV_|4xK>KWxOGd9BSzS4DNoo;2&?3MkwI2q#WHc6l zOKQ&%sUN!Xs zyMI9*V;{x>zXLIiV}N5Ib_@vqeSloD#yaw#{0x2E)FgYLNdhyhX8~=>cq~v|QhYmz zJ&(m-ex7SK#{kDbAI8AOpY48FdMLikH6(rwF)oQ7s(ly>{0_s#H06>~6KMSBy9Zf3 zu;rL>U+VWJmmKcAA!hR3a||S7V07QkN5Lh>U)j0JH6)Ht>KgL!rT3Cc5>L90C)WRp zHf0~609NGJMGS`x31&e@oy3{ni>Pzk6U8? z=;N-310%#sQkP`>bWh@^o5B_Tp5d%fqc2TANnJ92{ZLIpV#_2x;23gXIcJ75XZrZA zkvFpO7rQShmqcC}xA12mI6yAR`QJxe;CJG<4jlt?T$1ZY`1*log**kxS3urE==0|1 zI5*ok2GV*CiGPAP5RC)mlAPCVoY(xHI4)N;2FN8B&|siPJiPl|_PgMGUDbSD*55&_ zhS)}1)FW%)0d-0Gw&~mE7#R2%n9IGP9ucQUNbWmobFxM;x#Y4q-l~2tdfuSM6}cq2 z_1oZEE1! z)KKx0-}}QOa><(ON6NdAw}fZNu|z)E#W65?aDR-NRvY*2JV#A35(^M7oorhg>q0I` zE=exQF)+|EpnY$W{LQTt7Z13mM64-@F%$n_7kLE#XYyb0NaS!sSL3`7ocA*4CAQ^f z$a~iq7m1l3KeT&-anqbn#8i%fp^gFgXEhgD))MW@?ea?cyvu#w5A9x4{w=xOLmfZ- z-rdH|(NlZBk=c_&obRcwDDybshbc!?ZjGLjh$B6*`#Ir_pVB-<^mf1|y=Rg8K7RDl z&A?Et^)9@e^P$`Gf$xv+k7Jn2a9BANxYYpHBlT}dU7*pEvrUe}dgGAKZ9UIzbY}l;nBSPoy_&ngBD3`zUv!F9 zz$@jB${C?4N-tS(!_i&aHz^)Idg-00^)-?{1f$!2@fOT&!~<}gu4kO`x%0Vm40Lx4 zpwG0%QvpZe3j^=`{PsJLx2$@ma?kA#DAyDl-Z-X<*Xgmv74_18j_<8JoVo;KWjYos zqkXuOyqkX214?)#_~K7s>!}Sa-xHdm>WFu3y$d}Clq&+;+zoh_a>vp4-y8!6xsG*r z9pk&>yW<#W<#fCHN(97Ph*Jzv3%XT!t+#Toc?%wM=kK(K2EG3+GJwYV=IMgr=iw z)Zgv@CdX`h#w_1O^}9&yLWz}xcGoqZ!lCYX7{7=dBJ)dwH$rPfJSey$unG1sunRdy z6cww&+z}k z$1m#_```3q3=aj1)Fwo{G{$e6=N&lX!@F-P-*w{~1vgZ4gpVHai-=nUX9V^L1`Xvs z@_Q0@I0iTdhBgM2YeLVII4$S}&@ZtLfQzZGIElT~c&2RaX!AOkaLJ_qjp(sMd!PKi z-Ni7>LG>N9S(8k)NBA_*n z#z5vT2kry^%|8wuQ)1rLKaP0#M7R72v`dYnZ!4#i^$!1|u5Vn&=r`+#-%N9lQO^dN zUmNC@=d;HAPxAey$5eMTUp4q6aDzT-&b5xrwUBj@pCNzZ7-(h;WE@ku<@Vbx$46^$ z+%vr&y*X5y0Jlu^%Y#;M%tP(uQzOPqa((N_`ldA-)@7$*&gA*65nKJG=_m2OX`G|X zC+dvN;49ZDK1YrLj)5VM0p*y;`9bWw#6)S_rNmr1KJmjm@pWk|@^_)5KN0Fx>f3uW_ziYFL^(bpQqdrb$H;L0Dpu%3BLvF@X$8vh;2sf>kjtuT@CwP zDW^1_IQ(39igqb}ucXe0=J6c*!`HArs-Ii(MmbK0Jx<&H{*|MFx1ra~Dr~Pq{ZVW5 zfIF)18u>EtTf;^KcVv7Bc_Vov#{kCw$H0omK&DrMSL)g*nx)hMNn)%tMjthZR#Qhk z(OS0fx9$IGJE!3PH%!h8-B062;NNaqkHkE{cE}$OG~OB7qxi114lB4L^Q^gEta!a3 z-VGD)_}=;6>x_XcPh4`UH9uVX^=J&gaZ2Q@Vx3!tZYjSLT95Ktu9aLXTe?=sJhU)^y0LK8w0LQ>8#(?rk#9F~`hV=_N z2z=p5ueihy4oH#nza#sKs{t;1z~0~Y0yss5<(9f{BUNz@tA zUWBOGgIbS_d8A#{QoAZIaAZ34fkwF&uXs zcWoO3@NcL6sOo9+u)nY!`mlApXEh&%JGSjR^Z(&I;27W-SjHGo?Gk#W)E-eC z1)56IQ)4k7xU8`nABJA#)MKc}v`CMEUwPxq>;@U1KdGh3gG0(3F%44ncjV4Me?;#A zE9@m&JsNKW3U~)%tM~(rG0geHV0UZOH zdktMBr_NC30}thvvQ8uSKyy}E=Y(^t1#@h4+b`atF~g=wKD2vX_+-(R`LQvMk*A|R zY-o_onc;YD!FXPmO~$`VJ%D3?V<2V>D7O^NQu{f&x!~ZF&~%cmXf3|3{&K`kA_s`; zFW28SufMR7Hl)74+C^m?660HROZdUnhb_GU)Q9clV8_fOewMh)F~BjvF~Bh}pZN(()@5iq>JOCPG34jS@4j9ffjy(S+t4JF`US2Hq%n}jA5lL` zIV5t_F!pH&(GFU(9Yp+CFMja(^Z9cOG&=?~w*WqH(P}JTC*zfedgb9d4Sfea#F^90 z^>|I|vD!n(-TvC8dvmpP;g%W)iTlVGL!1ZsBggBS#w*vXX4fn}Pd-nMfp(7pvN__B7WC2^fVV+YggU3^HJDF>|@w&yy1Gl z_ro#3F~Bj<&oQ7emB?ik-BEprX)Sd1e;cm^pS*A9In8?|pCq4LA)nNIo70zn7k+CU zlhDZ#cOmDfg{5(j)FC-0S2!lQ7WQ*3ac~ z&(!!c@=31UD_Xl%H&5)FpUD_RP0175k0z}Hi80Ih-^~2ybL4a67~mM-7~mLaVhpHG zDeJTD5mzbxL-T(pdXV@MWgTzgZ}E3<%vOy7jq63O7~(Jx3ki)9Jdzxe_RNaxnW{0$ z`@}Jh0geHVf#NZswSeINmV8*mOKRUb)E1InJA7`%&yCNfxo4xjXi!s}`Pk%+_Kn#n!A@@$|gy|-+ zELvv?F{f z$j2dIf#HzhgyDznWAVp6Z$FQ{{q8ahx^wHTib2}Hm;SM#jZ=PK`U^M)^2dPISQ1>F zoZNfg8vZXbh z{zdCNNnKmipqFc(vi|{lH~S#@M6|nB03~Zu_gt*T&c$-MwD8JtFtYwy)u5)8C7~;cqEl zO>2<7bOi5#`G)(F52!rTGzY9t&^ATKx zr>68pI#8Vxy^+xO6+Ji68y5a^)HE}HxvYoFd|&+C#Dl(#0mUHUjZ49xrg5kYgPP)! zhC_xw*t-}6e~Z(j%`iynD}F$Erf8Ra8zcNa#66CI^^XCqeS{p7)JFvW5aJls&WGNJ z*hToHeeMX3__wlQZyT^VbZb%%ST&afpUm5mp6%C^XD0ZbaZ8Plf`2NF(bOJF@J~To zL7Y8ve5hFtShH0B2Yeo4yDA33-vO-=aWe2t!+t%v_tKpGYPjR>L-EHx*CY+7MHHtBXVJ&H$JuZdgh;Y@%ssK$s@6pX8Y&ui}5?*mJd#`zowh{rCj|IecvUg zQ}qJG)uWdzv7A`m6D&6jLcU1mvxepf+Z7mu?d0C&42xjLE)#=>$R(>V2=O`MKT)4J zFbMpT7(@)}2?qJRi09?JGQ;fDXQZ*|u=y=V2G|V_3EYO=54^U`*CG9LUyF3lL-a`d zOp|&*S9D3>c+m!q>GMj#bi_NMPEi(9PrZ`3-Vt0^9|$zAH0FAY+79qrBW}j{quH)c z?Oj_r1`Ux*!rqO*Ak7~a`!>TMa7*Oz&}Tv%>Ie>zFP8H~_xWV~9?f?I{1)3k!|hXh zKTPfZL%cTb=xEx#+&6t0@s_}K)eE3knlBvhoN-RX z^)=(V+ONVdvKSh{pv-R#?s$kn^R}yxKREX>$3ORR$2||h9``d%;!rny++n!mW02$& z8U|@h4t(KOqk7=E`ubxYhOZLG zo5b)w=#nmW`^R6|xw`S?oh#!nPj@v(Q@ADa#5I5C*!B&|E9r+Kp05$ll|u>!A@*A1 zXMjN#KVyFD1c%yV&w^7ni9>zmlE5P$gHW&HzMbbr$EF{${BZih>#yPdn$B}R%Vm#& zEbm(U*RcC1-<*9=`J?MMGR%I;@m&{jNB_F70r=;x2H+pN_I}lIlNjE2E~!`!JhyG< zDtP6_13SMM-M{l=(JhZ@eM`hQAupUhDDuiB^UBPBjo3%6F}rt*=366YCW(E7{d#Q- z42s1eA9MV3A9vjID%|n!H;F@i=8|O?bbR{LjeDl|D+b-QeUrvm!f!%<32|u2IJ9iO z)wkb2=RXpjpuQtF?nvVvQ_ME(w!P04tImDg_Rn41_K$s>E<0}$!w1JDjZ@k_;g+Mj zr$5O2;MM~J{wKyZ5z`yMbd00Shb=ZsX2XI%0)tK!U=X=vQvWuuzO7xex{;y#yxc## z7Lo(#`#wU>Gh5bh$J>j2tF|p-aS-DT3_^T2F^Krn0RHri*RA^dD346}BQ!{{{a?)D z)-89&wf~Jn+P;cA`uBbA=%4%i(LFEYj{ZGz$+)G4R# zr^8qr^_f7gym$IlsYmf1^_K{*T=n|Nzeiv3kjH@ekJN{q`i~I1o?$oae|Ph7+dVJC z?7VwEZu{pxcDv_Qxb5C=62k|tOQyK~fb3-x9KVM6%8mPXwvo33ty1IVf$7NGVJj$e~W&1)gL9kMEyuoKV0i)NDL&fdvbdJ>gMVF>)7Tv zq+z+s9sT1Xye_)#j_>>f;+hoC)0j%e z%hPUmu}d{b__BdP=Vu=i{L%W43t7cbaY4;!)xJqk^We8-Pa-gb61D-k4kEphCKg9Lwc^+&^Pe;Gf=$DlrPyH$KA)c}x>4Ih&9GZg&RICjw@w>Qs(@ksDWa!LBQbN$;Du}X&B{yyQ7 z8J52`O7Q&L$ohe^o=|TvT`@@VuC%6D5)1ia<_qy+X?z>jJ&(p9a!GQ@0xqdGE$msf zYm*q941-Vy9X%VRrqC+ZX#S1i>3Usx=W6?-wwCmp0*9PjIQWSAkVJ^K_7i}c5$>%I=@pSwDwe{7m#$ez07+I7hc$5opIpR`Rd9r@pgk#}nkQ!D5kugowg zjfJ$jVyZ*JkG%>EB9|nWtm2Xx_9Pf2eDaOa7pFgyT)}gSL5S-{JO*vs&S6kj_*$F) zPuNpgEc^NWe-sU1FXfQ6cqBL`xg>ST<>->eBd6B|$8CE#74l3#g$7kV_WuNY(_ZtO?}%w(a~-i#+6#c1=0uJ=3eBd!|!4MxV5ETFV3V;m9dl z%PHr4*~rO0jHfYMb|D;!wr9yD$t5GX>`)EE*j-k(FOK3 zmI-;^s5wlHa_xLF^M^=GHhLVwjt#;fa7uE?>*FFk%By8tbgit$E$-#jx3z0lzczHA zSKrpIEvwFLUQJv7S_x+~Ux>dqzF4+*?AZi^z$p=bgWliAq)skthdT4+=oXR zKX&@^@1j2h@LRC^m0Vx8s{y#jkr+-NH+|fNv62htanEa!F0Okx4lGab9KP?*Z~rgt zrGxsEtT()JJXbAJVh$$gwVH6qm!dF;T(X!)f?pQ##=Ps~lBIobd=6>nF4hzs&tVYa zxqS?>UOK=a=6$amhsX!xwOETqLXQZ~m)O=k1rJ2Q<|8#<1Jn7h$)1eGbPH3^y!KI3;vSiKk3rd#&TgUBU|F^F7p-gn|_ka_2;&?OJKq~TEFD**<5Y5GZxrA#r1 zIJ7(*3dJjaF8>`sOIHs0>r{7I`kPXSK%I#n~rBgESqo9tPFGA;wD<;82-8OCNWkX6f3kMaOgY z>`^W`he7a_s9lR3L28uLC|lH*(X>dd@oRaJ=v9N5NNAC^ncf(>r!HBn36yD&dH2e2 zJWr3bYo<4b?(_6WyEaT+a-LI)Mk(t-QkxQSOm~V-$(nEr(>mju&mY_({*b4& zJ_P(BX3NIzyFP9IxJUpQ#34VS%v1?I7h_N@d@P|Bbao-a36v6CwPvFnC8j-FB;9@wA zU3?BXj>K?s$pQ=~mt0DHNyGIy91rD^!12`Ytv;tzqa-fH<5Jdl6&w=%4w}Ru;8Y|I zkxLff5V>R_U-WHQ_uO!%Y(IxVp+NAAM zjZ*vPpwBmREi18HYeZZ)_-*uE&HUL#TBM6bAvUc48FI;HVr|MWh`MAU&n)ARcCR*< z1O}O1i`uwJzIWpHX6#KR4$=0HxBcshd@qAPT8jtkHm0t z$pQ=~m+T6cygK^AbWiiWQDYc2DcLtC!*TVAATAPGZ`1O5#6J&XmzGm$t%E?Iy>Oxldx-1Kj@3oKhd7B&?p&8nc24FlVN;P>-|dYDfB*+{OnI8I)LOx0=sR?br$ zy!(+jL@rr?L*$a(;gZHFk8KGKZU0JqB+rlT+P-Os7(~t(#ufsUK7{XZv_vW3$iCj%%F=#6_O> zFeny>%J8P>UL+2YOBUb|xnxJVq=P|L!;Ce~sZW-~P-;99v`C4I)R-jI0VF2rn~oMq zE_r?Yx6+5UX!{$vSF}~-ZoBs_U%O}zei*Zr;doyDwq3LQ?9hE){)tQoi)GizC7H*KKCM+- zUe84TS{rJWqi&gxHAUwx{ul;1y}kQrzw$dRs6$GfWc4S3M?wccOwxrM4Z!d_Ru2H4 zm*I8Zy+{nFE?L4a$t72#353>{EW&R0y5YFHM-0>Poqre|o8GLPt4HXHRGRE9ygXZCB}KGc@A&zb$2w_lb`>+{CE^R9A9 z7lZEHzM^rI_f9`PLam8`#&MH#=5x+b+BX6*NumWLKJ6ks(y-jM_d|}WFx$T$iQ(ju z1sF~rcQ<|9E`HnbVNCqXsYdyB;CUZ#4Y63-M;rYQ4TH+`$T~RWV@$|-Bo2{F7T^%M z+AejY$GzraOx3ZAFQLbgI7D5t0EfsW`^6<)3_|Uo+qXV8`n&z# zB)>Z3SABmL);nTya_@adeA+ICTgm$d2IUz^vh|hPHDBrC&<%Atq5>PH?GF8$M!yV^w0CKrs!HM2GzhJa>)W5 zBA4thmpt^5>}(vLo*X^6^LuT^AacRQwbRk#mw#(wy(56%7t^>%!)<@>SA z1|fzr28YNcd(I^Ve}F^qliWT1fy7XLh&efnbGEkeUMENLu?)j~-k5jpa!3C-539?r z#o{=*WHFA%U^uztaJXa=Ke;pd-1bi;e(AqS&x*ITMW2KoX|>0*Jik25@vr%~O2<5$t8<%oLsVRjdY~<$OU-_rX*vME60v3f}k9{T%-b72hwfu>oLsUP$H^tziQ{eJ zlF%lRlk=zB|8L{=t*7PqJ*%v1uJt0|6Y+UuEDq&ik9#c?fAG0j3?i2-#vpRZc4APg zxTIiEf<7#N7;?pLOB;D~Ci+ZPbl?{@@mkjePE4ra3mT7!E$^Vzz%AgW+{> zoLsUP$H^tziQ{eKlE87pa>P(dy^dw)Y_wShmjnXMYK_i@KRkHH~w z$@TS2VD8N@a&LUUw~IljLy5dV#BqQB&2bkv)lmP(xt`jn+4il2YZ-o%OI{y8CAo+0 z=JvD+Ikx^bMf;|DPQd0b+sGx!C4J2H&ke(|cjMuK;r8F)Rwf z9{WrY_Sp5NFo=C`<}v2MY5BRIXOnk6h};|Cjk6gJxfq1r3e3l8W&EV-krLZFSNnHS z45uzR-#-ypZg^d^ZwklDcx0?^3B0pR6Zo3kFWSB;_hPma^7*3eA-Pw!Rbh46{XE?E zudM>d+p0?f&;L~8C$C6O4ti89CC3{zKt`u8|E|^_x0*k`JsWG&`Z}b4PF->ymzu&L za>;V;=;M)(H+ko)z@RqzxQ$O@kGLD;1>U~(Y3;4RzKgBllp2>L7_NDe-#K_f{YiQF z9gE@QlH`&xJQANR;*q#s#v^gh$L5&xJlyuLtpdl}%q0!a|77bR#qxwt3YIV0N7rI& zwC0c1izvdNSRC@Xqkm2=NiON*)H-m;$D6$KRbWutxuo$)iQ`s2nfCEs6oZE9i*E9J zqjsd~k=8>37+!?qA@ND>XMEgt&totgpN)-GV!ULrpPN4JdG48q+y1px;CL6fr0J8u z@-I&RM0A3;FN)*PBj;>c>w{oEZGZ1#Ox3ZAIeEu1I24OP%)KebpjiJ%nQsL5ihLuu z?sLVeb8^Y+qcSY|;`F-A{p!tX{}kUu89es86mTBA#XL`T-nrg-`WqlCf z6M61ndoDiP#UA(A$CfDb%^>9LkyEaeQ!0-X zJrXs@wQd`9fFdojE`|f&i|`xQV=$ata(x(1E=exw;~aEM%zT++oJJ9aS$btc574aJ}){kuc` zUFajR`Ru_>+KUYJHbQtLFx|)Ls`D}&CzqU$Q$jvYQ*rOiy_xr6SH({H{_MPS`nZ$& zK!)MAPqBRCkGGzT(I?^8Mr_UI3s;^mjnO8T%+KAn9B%9_M>}L+l=o-Xo5CRG-gFa# zx)3jE*kgMagHk>@RBpGb@2y$@>i=Fi_{iqB4}Pp#Kq!wSmpqE;A=vGH#_+mm-xQ9M zOLh~-%VLypFC<3EK2sE%0lkB?Tbjbd*n&*vJ_^)dXO5urRn5MR@@JPwmep>z7 z-x51Dk24lstFmF;`(^elb;;$~v*eQ9#Go#6Nnq3*pWMDl^-0#CT#COti;qMf3Ghg8 zNMLvjj=LBga$JVv)FqdP)N$8OhADQ*CF&;@Sd3`g@`5vDV zf04hrz9j$H)f_{Pi}XmlPF=FNE)Z)1wOf~Tu{`Oy_;$aZu+@yndTZCQXUQcO^N$$T z6z!YBAaY4^N%Mge?ac>Lwh!@(;4_9lrcVNc=BP+NmCCe6q-w z?KID3JJTa$F^F7} zTrw{Yhc$t6b8|NCn_jQlM$jVNttlKT;*fT|j6>SJ7%u5z(Cu5MPrgTcY0=-k5U*4o ziG1xmzqVmGbxG=yRrMzGu-mS69mA2Alb37bUt{h~e(sHF0*2$ZM@@6f@0MB}TEiCk z+RqSL%Iho z05vzVeC_8ClK4m;%YFT^=-kyDLyoCS&gWPb`IYQ?Q~o9DlGG*5_AlC--Cwj1)dPyS zvaLceTEVnI4JS zZ9ac=&x^RDe?5dhx}PDJB$uq}G2z}{N52W`lGi1!=;*d6mozNDXF469+nbQ+DoROx1B22H{>ztPSf+vcBZ9;b z#3*T=4f-M?SF%V8h{f?L-1hI6;dl&&EleFo4GgL^o{hz$L(sAf4p@~xTNvPw?k{| zEB9;idnu2EUmGLZs#yba>F|8)ER zY5(p!x8Ls9D{GR2b^Ui)?KbU6mh`q2zqV6D(l9%3UxnRvzX-33u9x9Bx#aS2oLsV- zINk>?2_7kYRrN^VMwL&*@W?PGWM70gdDqJ@h+J}c7(_1FO$_QQmvs5$XSe@QV!7Ym zbJM2427zmq zVUB;V41>remxn>*lHJ6hK66R%N%*^=PYR!078mRC?}aA0adGxe@oOI!{`f1|t}2ft zm(1$@SUvKx{gFE5s9WyWCwI?7>XW;lv3%{KJ@dF(tGtX)T7Sflz4@|>_O3rW?>N@S zoqm2S@w1!YXvQO(#vpRZqnPAkOx1A__Sp5NFo;}|T(Ssz?0O#V_}4;l$c>NmkHI0` z4gT)WZU0naC_gs(!uH#`%>A1F-$xe?ep|5n7LAXzTpPo3^C6Y(L;Omy7!G})OcS6k zxjapPx@0$Tyo^WUUI>S@&lp}8?S0Jl&qFaBp96Nw&!bMK&Us*s;Sagwa_w2zwpIMm zy>FbcXiqL#Y|o<31oODVai|D;?7ELRdFP=x=JluA#g<^QhCGmZ=)`HI?$tB4pi)`CGtSP!?cvH0RIu7~ufAY>* z6R5bpgv%ZMW8;th9{%qCzV$yxcWvJ^^jw_Lnf?MktouKMLyx34;^wmlH*Nm?m4DJ6+dh8Vc^QYad*qVjlH`)*y%bl0<6YyD&@n~# z)Oz2*5W^gQZ#Yx755*vS&d;wYJ1>i~VeZZH;%pc%S3dUKx%vUUGRjUZexq^)lX= zcdy8=gzH`REwNU4{aWSFBPH%`E@#`t9y>OiDcgr)5V<6CZ}RY{>o}Ch9sO(MlFjp0}| z#=LWK$>nfKa7ysWKi+y7wStg~)A!yuT8|t&^4ZxPqDP|kPdSeymt1bFlA9kHa%`Nj zXiqL#oI|;+{7G`jcrGcvZOyfTt+;9oB9|nWbUCCQlS}6207mEk4bjJ)__?o-J|nr^ z;FHI;KhWpgZsn2EXM22p_OUc)JL$7sh2>>hfZYq#1j;nXynECosY{A>1^p^$L(Pq% zja)Lk7RNI4xQ#~wGpex1?iFX> zM9ta$&cSZ59sq1F!*9D6isNOxG4CF^B)KHHWNDqrPSux0jHJZiR_5CHoYHWnY#)k2 z79-P=rc;wM~ zO-GJ+mn4@Y zm+Ur|6dnmbd=?{V7(_0a^o%?sI&Il@TJA?|(S2Omk2~q{N-jw*Y24A@mvKnD=W<9p z{)}KB_+-apClMp5zHRiifp5DGhLcM!7so^D0J)zjss&`%Sre!@|Au+otIy*GkCdG7 zv5ZUgYr7akE?LeYjbBFaNN`SaNy)*>t99#Yka@@ClH`&;hqQC!i)DM`kNzHfGU8{oZN@66h99JIs!j=Cbm#nb=4ZCe0iQ%m&RBFUk3YKC$R)`ojXV1LG7f3? zd=BZJf5z%gb}M#L>qw&h&+`YjXpE%KBV#a}x+HZ;!)SJT+Z6H>?g?QPG)u{x64Yuk^JbnzVc9=erj0d_A`6DZ5G z$-Bqg8|L0H_ojQfH*OtC7kB*Qbzl&6N$Qej$GZEj+q6ae(Y;PCxlS&LJRJ1xep%ut zKc+pqKmK}a>rRgTZvQvo+ur=%mDdWj0N{BjhU0U_7t8kKlB!=uYXTuLlI~}U;w0_* za^oehNuBB9?a@nbjAJ$z$L%-|&&egb#U;TbMXN3KZ5yWy#i26nv3sEyL@wE7E?JB} zz@`}d!DkJ3{JoDuF&Ko;uA~2!%NdJ~$tBm%B@sJ$+t&XUZSqFc32JM7^2s-6AC%rU z|551Mj>T|tN&2`GzjlJt-`IOi@cRGy+r~q?KN&r|``z)wyHAcE+C4G;+NFC1Pd~Tu z7rURb4d;3t_wczV_AbiL{EOUwX>NOH_h!9 z9JT?2z&Q|TJnqN$_Q$|z+rSsUarvLKO?V&hdE>Im3&hOc_ab|YI z=-BoRqem~jb9DOh?~eZR((jBOzx-R;J4$qN)$;G$dMh+@)Xmp>_zXTT8-Ct4`<;`= zFaN$`zHm;g55W5j^T9QN@wU16z77m0mptT>sQ)9HP7sd-za*C=m$W=?a7Du(mgXq z`jX-GfKWH6tR4{V<tOSXkeCb5&2*WD6dH}bYI=hV0T z{J|SRI39}O;C#uzjd)ruu>C zq8}LDxARfumhhRIZUByHc)lzQr!JZBPWZN=&0xZ(#P## z5OhYvAk`Y7D;fqtPn7xIdJGbu3~XG*QNbYPmPHr@ELs*0xty`+m|U`5Tr#O){&mgk zZh_5&n&j%+29NyvKpYRnaB|7+a!JGOC-+`e?kGMY_-rQU_HR_)c;Vo;!Oz-+)rbSQmq=t}|lb%tsF2 ziP*J@L38#kY}_JF*>wz(eyODx1bhm`p&GuCBmNTfObFTh`sD7p)gv$4`!yxq^Q69H zqD9UhYwV=NPyRP(Bz4DLQ$IJkIQxWX0l%t@k#uoA6vN3SyU8UHZL!vVx zE<-orkZrGTRcC%Ep5wdWdrG|p<(JSd;WtZsQ9qG=K91MLaQvLh8H; zp(5OIudf1w$R*J;aekZUk3OeN^16>rZ?3cEHSsee@k4GtdvKHZwu@_$``B&gp%_js z*$plU+=l*$d>O>1!*>n+5&k0hih86!#>^eXbYMC35AmPD7X@Fq>IJ4(8m`yH@S$@_ z^KBcp#Oy z>VrajCH&xq>9KfTgx&7-Rp5A;e>=vv6yoDf{ZFXTr@rl23<4H~;*jyhvOT%v>bWE^ z=&8Ne)sBT9L~1-}zKn3kE@8r||5x=93AeF)d|~p;?EP84?N}TS#c*=Tc5=xi2J)ihUEiv8c%Z$R|A;(tR5cfsPvUvu zxruJ8JY4)w!1P*t(&dar$35hdWBE>6lN|UHi$Ua))%Ac-zbvvg*~;omrg1c={h+ar zhC!HD1NDPc;f{Mh(<>#17d}ShKf+&v{6WQ_uG+KYlJ&UcXQYPtAN~3}tFAeTd>hdu zpVt`4Iyg=)S&ie77{1i{lF%Vx|0Dleup9m(v;UPtl0R1RM;FK4W95}t2jPo@{|Q>< zeLK%-tbC|WS;QaR>wV*rqH~U=wu@?ubufrrvKoWh#3c=b#E#YcYr!Cmqe1)#_#-i> zJ_aGa5*P%3iPapkT0>pKAacpNT+)2qpI${Cj;(u>XJ>b)Z~KKS|D}3BtR_G%S&ifC z=91>eHXjmVkPrhY*zIy59)GwthUYyy&DlY164V(=G=jwU4NNc63S7=ublfv8seKZG zBjAMOlJk8L+#U(;acG|e_j8dr)Tl1$VGuZ^)(?Z-Mef)r?zmW_>wIe40)tY!Ho>8` zV-UGyT`mb<_f_rJedqRjFb3Q)(eyEF7sNAfe*56Z8GhHnadOEnaLLy-mqs`wbZGU1 zq<-wC#}$9yJRen^1v&wIPr@lT?wOuTdLX(ubgbQI1b;)WBTDLBF za__R_^8HXbB^w10~+yhr+y^qLGxl(hpk67*t)nz==v$^sODZK z_2Q7Hb1?qO&ecq(bU9f%o<29Zm)lS`T}8}T$^$7<~ZV$jkw$Pi3a z{*D~*W77|bU3-68S7@u17(_0)7?-?Fw8Cb;)WR zUlo^pYVVrFLcS@ueOdD%QPT&$Y|#KhaE70m*A$oeJP=cfwH380g-_1=oQgQ4UGEE* z6ispyeNSENvExwuvCoC#P+9)A-D4hi{XA|TgM>qBJs-(STjqS??~cbVt#2keee+fA?noomzkj#Z#s}4}K#%1--QO`qa#AWf6Ay~c&97o-svMsdVL{Uv3 z__qCg8{?6&7z92UibG}CWA{Qa2%pQtnxboE7=(LnJY>~zh(E;tOr%X)D_#<{ebU-u zYR3YD=*w;=23h@c)T@N=8+n2c?EFG~BxO7j_f~;He2s@IaSC+Og@4q5DuAGQL>0Czp)WB~yP0>WfKzTJ4X8 zd=Fw!D>-BymSyob(i<0?GV_%bamrO-5V>RnTvD`2@X7za^*<%I|Hiy`U+0=?RH#di z{x(ILB)Md@KH%H?Rp*gc;9M%|l)bT(Zljs8*U*5T* zaZEm*uL8%H$t6vbG~SrE59N^dIdaLyV{O9h*)*m`v`DKj=8tQhx65`ddmqXX(0k#& z=`q<}UMmKXOE$zM6JPh}j;&)O)F5quBaDPcqUW~8N#^0VT{C%c9$Et^(IhYD`jrgNU5u_e4#jYC$;G+ksmoG7CBbj0HGXmO z&DjTGAHbFj83X)GH!xoHNz_b9^?}jx=}*UBp6+Hb@vFe`W$2Rdi_7oT{wu&0!<)Q) z74G==LvhIXV%eTtvY1OI7=#=@^gED#S$nsrEsMD92J{YMRC_Q=^$E%Omij@T8r{G1 z;{=1!+?-Wl5V>T7ToS(SU;kY4x*u4y9}dQa#HZgPzU^`z30(Jay6ij@!^tHVi+E zRa{Np{m59Gd>^;ivce-L=V!-Ni=-Xf*_fJ8%u=oL*z{)9rCccnkxMqqB~fn@HG<&t zs#$Lm{W>x4wJ!OKSFSaRS0|_Uw#TRUzco3z_dbn_WL$giF&tR0 zy>_8dias#@+NFEZw?bo>BKf4mK3%WcME|^=ZA;*i`1_eANiLc6AMX;EOyg=M&&=Mh z{t)D6vtRZwa0nQLe5(6)KAOc*E*pc$C7b1viJu!aCm+xrn~{D5U5jMSOTX>oT9>>E z!>LQQEBD57w9o86qBS;v-!*NDP&<^LYoFe!G1I8?EE*+py*Dh5G7!(JcqHy;JhDj) zhhO{Hmgaqrzm{r}z?do=D)WWp-3zs8%Y55*k3Q~sAGgKTNRGB@k>rqr;E(<~p!y`@ zDB&kT{UE`h7`rwagPO!4U{Kk1m)x(~J|~|E**+_uE86amdsW-*@|mLTGjcC=dD=& zz|OUhT5r)f-lQ%md=h^jK2zn8;F08#-OweCMaM_y~6?YYc%qMTA{m|49E z&C3a}X`?ZST=FQV4CRsdTpo|aHPkQvs=&{BU>7r3O>lZ5VPJhBRh^0ddYYt$thjkVFZnlt-XCTI75 zqpN%*==o4j-D zts(0<_{XO7N=)lXUe0hFe6egR!)*UvD2C&6=0hsmhx(U_dP@{tcjJ=$V>hNf%l**9dt}ED2=;m z6oaTs9_5vdaLGiQ6wZ1gB&S=~8i{K`JxR^oHve{&9zb1kZMx({Fg&dpdFzN;BsBoh z0IJqV)hMn18ETss_?p(nC51<7?zYb(t8mD-S*y-NZQ3$B*6xMcv-n(*?V5MpIAhV? zcw)%Dh%c6158#q&&z{}?rQpyVnqR}%?8-Sl-5CUKIc36yD)Y8tGV026~iCfm*G$qcl7U*OD^o=hAk`GD_IXjjID}wrtdt7-!H(P zh0h!LSm2ZBmt#GwTa>7%`ty`@w}Q-4gDEu3?*t!d};bg!JC&6L%9$JkxMR- zOTy2M9PhLjPJzvcI7##(Nb5{Q)!MbvM~ibU ze6I0X9eq}6)1n8XRJ-lkjJv`lQ7CYrnpfPr^@9g+p`w638W&&n4mK zhBkTo)~B&%_+xx>;ou|E;|7}KQU5mZybQz1C6~`7!6TpAdsulS^CZb58|IO~1I2R0 z#2cTC#qkBXB-V_q@3zk&?YsW#KaG{J(l1r|lz9ix#(|Ad6$)r#BchCdF#Ia@6NNmITyoy8g!svrIHfwV zN~s=z7B)Z zB)FpS#=JebQiC!IgQ!ccMwiq+ z-M{|1XpsrrRKVkOU~Dy zG`uO=$KX&AUo5%~9(iW}D&ixdM*@SeZg4Ke%_Tmsde2M!B%*u4rVYj*a>>>89cg<6O zg_Bz;obio3eX=nw`BxQjk|8#2nf;n~FVvOFEgbUYQVb%OTrHPGeW2SUZt||JcZq+yxDJqu=Vcg9 zF4-KHJiEV*8o-)o!`LMHlveCh%3Jdk#}Pl7_ND-qn=Y_0mlW(D|8<~$yUM1`4PT@ioMuHsFxN<4Fwn&BiBlF^F7pwOrDv52QIaMRkD4CFlLx zZv1;p%zK!RTeSd*aZfOub;ya|Ex>P=TWXAT+8@XG1r_9qdsTZ;Fn~Y}zv3 zn0Jp{@+g-S9=UmL_HPsEXM_F~?)&HQV%i#?-(t^CW4O@=`rhfs1$TZ544T6q@JMpW z^>E2Q`t^4-PV&Vo*D7(m48y5QF04x;XIp&RFHN4Ay&rRixU(4U@cAw0`DwkNFHZkN zF#EM5I3DZcmd|VN?NA;`UGk`H8)MTJ<@u%8QHxwLNNNouCzEq%Idh25wf=Ke9|`oy zLkv2~Cu4Ewi^4(kwqsJav243b?pJM}lh1@~pOw!QZFk7Ms_l09Owslkxfi;jhGf}h z`P=S3?Sms+vYJO$VK}+uLR?a7|D4%>MR_E9l2MOrnI7q`ed_c4{PsIGzBGMI^nv|3 zJ{gJO@KFWT0dh6UGMhF}dn~&~T{6=p4TGeP?X8;YzXUbFzkTE0=~s_n z5Ov9;oHCS0;&Wv@(ydkQa!DKupRCj)4adtcoLq7dE~#38Vz~H}s7cnhSzXS<)1#%p2lSv(FXzU?bSH$EPPp z_e`gY*tEHtBy`F$O%nI2G)deK(IoMiB25z4t29a6FVZA&eHC0%_$0Zc)KDv`SMJ6~ z`o}T8rQ&!=@W^fSlNd?wA=UwI7H^2(%X^;ifue7&#lb6<$8yQP4d`=Y9Mbk>Hf8KK^{+`SSP>pKbkTo8@*N=2c!7eV}}EW0K^v9?7#zxvm%KVYwf95TkgPu!h$HKHc8WowPg?!kj8Dekkc&zFF?GqKK5yT*?VMAW zT$3&d9(i{EN0XC#??ZeN@n}7G#OGfBxhH&5;+F249upjYO}OOMQa))|4IcSm8Y}7Y z#E@fh$;P;(=KCRM`^i1cwPAcs{kcFKS>Lm>`Vxvk&?m_y=Y8JvabK4@>V56Uoy16< zpM8w^lIz1D;(s&GUa7;F=dOKmj&0wN#ZDGsxnVcB7e5 z%>!b}`ktls?S63Q_td5h^^X`H7469-$tBy$CBZ2X=PrG1HlLZjoAHtB!ye*(v(H|! z95sZ$IQ?0nE|6k2Y5|Swy3<4Hu>?G=#m-)JlD^~5vCCMdQ$|bY- zB-D{)?G561-*8+sF2qi1jSkc?_xYq@_XCo5Q^&teU2>jBBJL(8)&_apiEsN6)RClL zq*-m=>?-cp_gvLKg1VE4-!9^lhC@|*a!GQ@wsA>l0n#H8HQY8X&fduw$@O6kaelea zUVAKlcKZ)gU-x`ow_!K9B=p7aGhVW=wyni*`*GU-c?_3KYey&s(Jw+)INR#NOwQ{&@tKRKEynN6;ri9@$eK3EbD%N%X}z^mXUkw1!7TdvZx~$(C_R^(#F) zyJPg1mwtyFXMG%p&we$}Ui;-rPNl?6LKir!Uv8KUE(w1%b;)W@>2pW_Jd{g{Z$x_} zqQ4g7B*`Uv%q5jiioH}=tITkyYELdnF4-n7DSo9*sRyj_Nz9ofhW8x9jjtzlf~Fsu zt6`pE_xLO1l9j$~(zxyP{;PfduxU5GG<__?Aoxj)D^~5vCCMe*z$Mdso5@pq50Btiq8>m! zU?6&ct(U1bd2{OPzN#2bE*Zulo6;qbZzHuN=@(fohp{=p{d%7}@?5pH#NE>$Wbrmt z9MbNSOOi{rfJE$^=j-J-eEzF@{+ieA z*1av`kM2EkNpi_GbIDATJhy)%<0Myy8N}yyK5MNxiT;XTnC^)-aCO9*K+ETn$hScq zvXgu7BL=l|UJ$QV_g*p#LLQFG7t4;xCCMe%%q3Nmyg2&=Ym%=HD~QYOe%7i@B4!Ew zaL6T>&n2b5jnx3++-UdQ;QLwr`%!HYdELOE|hvGSU-#)eX8|0SV;5~*v+&A~Wv`?4=j8FrzmJ+K<8NI4=kcHK9#EIux<2|$ z&UV}DNBN_B?Nf5UVAFg`Y73c2X_i@`j z_c7egPw!tJKXLi`_^G`&WqV!t%bsjl8-ZG=Pu^t9UJc0KH-ut!7swO(C)dw z_tVV#fxV=)f1uZZJ3fB-w@?EMIu7)l@u|HZ>N@=R-v0P+Wo>?R_qu44Nk1;rAoKRr zC6DsT0v-u|8I0#;7>;|PJTeBuf%R2968C-1Sae>7*?IT!u-mQ~c6UA)V*|H*V(;G($269{xUiKrF3#Sm`hoN?Cbl$#EqspceU78Mw%#?mf9J=T4{Dp{ z@x`)hWjGXrK`}VgBnB;;OG?ho1pQiBmz;X!0Q5-ZkuugNlIIG&1~vJ|Pwt(P?bU4E zP1fEwbv?$K{MWKcT{6@sE7d2-CCMe%#U;xhw`mVtrv99{uF>ft?WcT{UedLly{M@cTJMWmfWTIW> zX^&;sT+H^5T?|i;$EQj-WZrmouVMT{vqU_H*i}b-;?VCA|AadJ-+z-DW{+@kXgVt5 zmoV1F$NUDlWQEV$#~uIN#UbWylRx$V7w3G|&{W{Jc74`ZBjL9OcZ4?MuA`yHeXOtY*P%;>Xp&Xq-1mp4@s@}gR{j3bOE+U3R!&Ji$#tWn>jvVPHvVGwQnAg`00c*-l9Hh=#5wpp}E*rmq*$UnkC~d$uV2bG1V5jYx}0n zZy)@4^TjLIqWC0z-1$Ck@o$gM?w?W(hyHD1K-)0@`7-dcAx}p15#)-&XN|Qj%eQuY z)=jOY?(ad|B(zC#$-|uPJioSkjXv(>`na3WB;7F{a_srUVZUjdl=Mr}{BX=u`oy`W zv~*2@%`^GV!4twI--zOqHZj-Tx)l;usBxpY4a1*Y@|A`K)bCg5O%|nP{Fh zbP?3gOJciTt>v!{Sucw|^EJ^Xi*j(NOH!9yu`W42E%uG&Zm)9h`^2GLiYvkWTe9uEg8$!e_^am2 zz*iCT z|K3x3*EALxnq|r>)#iikC$$ph^2E(2&bUi*%r$XL)Wb^s+~GMm? zNUk;8Xs6d+}mkj5U zpZs;Wf2j<^aWAH}TWF2oF4UJa|F%0m+jtC{FRh!dvCQC>s6PZwX})mSkceYp%q98d z3iu_)9&`%PB`pWyqJ+U2?RfygDpxa4hHSEUEV&gOTo>;%Otm0|dRxn!1e zo0$6 z!@JG(StHNdc%%8P-8}2Iu7&o0flFF_AU_9(Tr!MHiY7Vw-1bj5|NhE<1jQ?rVfawF zWSjikHaBAT#xKn$etQ2~@Rva^n)8Vx-wrk?<1WcD8|0YaKvJ{(xZ1STC6D%3^y^8w z=cp}tcK;>#5?Kd`JhDl?sk&q8v$i~I^;rvdRG&3!A%i<&-OxNx;bgIEPn$mf)f_)J zxnvlZ{M4^^HtySbZY%8 zFTsIO6H#s2Dh#5Jdme+tzpZtE&?k#?kaMu^9F(!6IBs|j4v9SLXJ+r$`g7==ac2KT z&67b)e(YM(h0o{J2O^gYOB40Evyqy0X+H z>u8edvj%TO?*PlQhEEDUYv_)MuTOCQa@Ln{8EZ`&ekXk0s9o;nbCXL}bIH$aUEO$S z_h+LAcYaTMqMzA+rLs3}8HVFt432j__Xa!?b%5HEzrD)2Xg+aZjQThPcaWX|)C|ed6SpfgCf_CQ)y)OrI>np%@IpXG3x5TjEQu+KOsNJd(7XMUx135B?RT3Q=vGIsu(pV_ePn*_^6#4;&NRQfh}KH6ZqH)m$EE zmaIEOPFcYz5jQzGKRaF-Z$mDr{t>NBj-IMwuaOrHixfd`Mgpn&hdD z#~ByRrA4m$KJkQC{(D+i?3CKS;uBZhGOcYHi;4Vvf7eXlkmhtJxqz2*F^KV!Nt})3 zZo?O#8WVHjXs4xin#Me0O$Tq3dT&~z2RWFOy{b)k9k^ZY_8GYzy1D%l^Ny{DqWnH^ZfHlqZM9dB zM!_>6HhSh4z*v5Tf!%9buPI!4t8yXj|9H% z$qQFrA(u>X$Z$vZg3s`6%N){JW#J99ulj3W6}{W6HV=H(qUXbBZQKzWk@|(e8)456 z*=Ox?#F*p1N_*j;Mi9B=yfz6g36A-v+tuqQBl08-U(o|C*f0dHWB zn_=)swXJ-gHTufH{zk5Kp3k}pcX>Z-9Rr`V-ik%qWR-s#_e1>K_)L+18`rD++qhrk z-^TS&|296C=ht?x$!Er25#P4d6-C@_Uhbd9SRkJZnz-aBYhE^R+c;$zh7W;D(zhKp z2N%UE(`uUq21)Yt9jb(i5#pSdJ>SMsRc74{sSm5NMSj(R;U(?*0lX-k{Xj~Fp zQ?%OgUtPY2_z7r|c|8&|2S;?EG{)i@{JF{}$tACk$s^0>T+^6jzL`UR&6{bg_?%B1 z{8IA|1c!Zm=6QG5TU}dGUjo{+A3HfvE;%{B|Br}?15VR+>h9R~aVhgz3wO-*StmI% z=C>YZt)8aWmzdw@_UiWe6~T~ymA$5*I&I%3~ZFF@mUMVmytH?X@Z zf3nBABza^@a@I|+Ot3YnosK*n_m{Kpi~vSA729SK{wZ z>P`-gOG>T{^hop|DZ*}_pYXh$TvNw1w8u182D*;*l|ijg`m9^B*0@{~zHZ@9qvL6A zx63Do#3jWKKmMBVNIV;8k`k+n@mz#8xCdQb$25LMYH@2$a~Xcyy%_&eXpLZeuBt{b z?&sA5&bwy$*&%!IXvRpcR*!V&aLjR{U%sAC(h8gB>dXQwE>UBbHG|F+70ZXGOb4EfQ)@zi<9;F z8fqyj_5pkI@Y}A%;CLv8uairXN49%@yIj*WOY@0CyG(O>G?zzm9g+L0K5@iavX)9` z^h(uoWGz-c`MoQzHHJZ5;F9NN|7I~sWw=c~*&aTrYp7_C@Qh4jB4-5dC;|4o+0=obhXAe2k=WL`T<8D7_;r2aNuRJ&8pk0uh>$Ow`NUJr(&hp8En1%ileCUGY6Y3U z+iX~OAA><{=91>u24=HHR%`7ZwR3WO)`~BPy>aubO`EBMWBi$R=o-c+;qL~Y>@$~y z9tpp;@koq8*g>L6V$BR)A2puCa=J}_hriqMaa{bi;}{%ot1c-#lJSu;X8Mj@39ciL zNBi=aPaL_E>W?yixWpCHAKo5Lss3*CS^VCWpKJW2VUO)&FsQ9uQh4Mh^hnfNrC+-> zJTmiJ!{!9P7ypK8kLI%mmVi4Z{t#-7eO*JqCoLZ*gim&@CJ;CzHssknlIoFom*9bj zlZ1U6flFCVccM*7y;JGDYD``Y*B{%{O*|5>Cpe8DNr z@08eFufpy^{;>MP5o=izUmR+i@pH}aQPqJEgLC2FBb(38{`H8zI|hT=#wE`uJ#7$^ zp*_i{ledRQO3g9kJt=og@?~yC?;*`mHT+2I(qo{Hy1!QBtb5>A(i>;|K!85k zH7<#IloA)J-%mMY`u#D^MQhjmzlfYx%})?4(;Txjr+aQpfKMWZ+_1arToSR7Qd4v8 zI}#5D_&ic>i7}u0!!ZXC_oTjX=n>?WYhB~Bm~P2ymK^WrMWcL8d*sAoP@A|UeA;LB zUx7Z3+(*T0)=XXRI0Kg#?NNIZO00Dn^XU4m$s32fMuKOd{-j&aJkRId6)p)5iP%Wg zA;2t z^o4Eq50yTFwg#-}IXp$0kZlNvUE-`?vwzK@P2(IGPpGSN>^W6aIDo{ROG(^Z0SqzGSlz0=PU z`W?2vkxeu`^o5zr$!Rl}Otr|3`y4Ius2+J4@f;ezy?}OtIR+g@W61J+-8P3zqXbTd z=#-%tz6>sjJZ_H8H*HOVEPo$Y}`j?eB(T<-p@?1{K09TIhB;m1b58LJuY#z0bsTrsY8 zd_4vSgGPyb6~s{*r)(paOgSX#uV-4M&momph>n7F4mc(89*eFis!d9468zTQv!qYcx5PtH^C*1L#F>%`LnC|Zl%wiKRdW*tJ-$LCo})Ia7y)A zqV61hmMi6yhE<5`LHq&iY0dY3?qEAtrwqlRx?B=G68!Pv>{nSoZS;$PKYIax(W00> z)Sp)!5*!lR2znO6*9Jd!QT!J1zJhCT%`05CJB+ z{CM)hl~+Ws+!h=64cV@$t!r3Qv=6}`(;tmHqW9tX{eP6d`vpd{IV%7X}lA^51J@6 zNaSV*b4Yv#(IXQ(>yBmkPk_y-PvF&PI}TjV{NLbs;FYFX7U8#D55aMZX9ssgEF|jt zkUx_DtrY{st`px`=KDr$7In&%>Xa@Q)4Xr-e+zfKMKsFes#hYeGU1fQE5R)fH}FGu zE4pX?Yw$<$VNaf&-GLgI+OwAW<67Ri`m+&hf_kLTA>qr`d~B?h-1rREGzQH7jht!I zE5Z4UQ(~XTD~%&o?d9h+m*#~0eycSeJKkYuiEaox+{MtQjy2a!G#0Vv?oiGe`~Ttd zsaC0b@IB*~rdxs&8qYKiY1iC6K99}fAKl+e4oR%6Gd7pT)a-Y2>x z{LtF-8@W4WeZO%JpE2DLKabyo-)BDTNWzKquq1&P5cl19XVqv@;&kymOR6hQ;Ig?`a7vpuAXQ3Sf@Tv za6j=u1KY4^U0u|!6g>;?%QoemxGtN0R<%dg^I401aO7P=hm>~#POrVI5*x0Wb&B{_ zf^S?a7Un`OzXTV=W;_%AacssFaosqh@y15Rr|?MlwoyxRMSe8(btie2qd{23P z{5^aIogM?pT!jvX^^Wm#>*ta_AK`g7---IPg-3$-t5%%okgN&WX}si`zgo^Cnuq8e zu#;DXgBpWURl}TPn7of;AZH9XesAfcqq-JrQno_ZS`~is?=;6()t@aIifWOFiG;>s zJQDsZVi2DJ$3XQMz?_lVcB|GnEOrw5N}`F%oOS)qJm&M@7$_eDmMaIpx5Rb9K4YDj z<~RoVTK}J=`r)L;l4_Bt@ru4ws4-6LDaRf@A3h&<3}7u18w~SknK6<@n2dD~TBziz zUX=MO{Tj(9`3yJ)qQ^jL4xThH-LPSW4YE?j^w7ls0`bM@L7CP0=@|wPKe>jkYz!nk@&JT6SPyN+Mh=<>acxACmV8Y5F^>ber%}st1(|mJ{@CN`p9$m zomPY6;FHi_5X*9LroEioIOkW%EBLpD#a~sUK<#nqO{6|Aa>&(S4>7*K&l&3qbPDju z7Uz2E+((~9)H#uLaPzeEIpoG?z%dX#2GH+G{SawP3)a(h)N3Gr8y0_S)B8rROTiF!w@=2_Rod4w190T>nK*lG} z?*B+_$qrzEiw8U=7mXbQ>eoh&jr6d`+9zD{3h|>Je(<^RxnT@o4#6hFoYGtyiA#)~ zm+SaE@^Q2efyB3{pN@R8wjDt%AQoT@XkU7)tI{JH`Xqb+>zLd8o8*Se90OW^Tzp%I z6~@{}{3HHx3@kPVlt-T3|E2cX78`Au^LH7)8<>E+0r?&;(%-$@)Fp`yE}ZzFp>NDccy-A#7BzefSPi|h-NT?&vCfV z(R^4IAK4eoaj{||HYdmUaK|{`eKYSq!wT?8`nyMc!O9_i59Vq%g9*e|K1YlJt-mR; z_2X0GyF#vJNB!DGScva~I(gc+0QHTSo7afXllU=Q{J0JaXvwD<;8R1!QuTMEehTWD4*)~@j*&z7e%f;vngV(|v1T0C0ImVG$AHx! z9!m{I?YWD-h*Fnv5I7>=6a9OjrN}y{HG_yJ!?vr2%mthH?#d@o&m183s?`V3Yv?}!&qc9K4O85?#$$5Jb&mmPC5Xc?pA@lTJy^l#-u>rpcn^CFF@qW#IS?%} z567ULWI5icoeG~n$9nh2I^W^y-(i9;;xoK3du$}VL!bfW%{yKruUy9%0FQ*7gY}O% zzj}NiCiml+XE+Z(6#Aec?-E>UfO@2lWBMFq?L+R7>zN`LR<2iZcs>gu#*A}~Ga&qr|itnu9!F7%CkVCG$xyTay1-;T(3XRSuqDSR=_8bFH3us^(XIIABWa4D7DBnrVF{I)Ci(^ z1o62)_*~~*sur2mfZM+nxochFbnE&*N60~vem~GCH_y%fP1eK9%*z?}JgPJIhWs;z zJD5LKD`;KwnSXbE9Ih?T9zHnOHK-v;EGL!^8Jp{Tchv^apI&0&$B$mRS$*1!UkcI( zG)7xEB{WL()w1{+;t+AD&RiVoš>O@GMTU)pV|BvDDOU<>B+5*ZW>D#6rN#AzR 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

-x2 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

  • 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 RBioCbxgQnYtC1uZ?q4-!@K*o; literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/insmod_goodix.sh b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/insmod_goodix.sh new file mode 100755 index 000000000..60759d1f5 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-buildroot-86panel/usr/bin/insmod_goodix.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Export Pins +echo 120 >/sys/class/gpio/export +echo 0 >/sys/class/gpio/export + +# Set the initial level state +echo out >/sys/class/gpio/gpio0/direction +echo 1 >/sys/class/gpio/gpio0/value + +echo out >/sys/class/gpio/gpio120/direction +echo 0 >/sys/class/gpio/gpio120/value + +# Set GT911 address 0x14 +sleep 0.5 +echo 1 >/sys/class/gpio/gpio120/value +sleep 0.5 + +echo 0 >/sys/class/gpio/gpio0/value +echo in >/sys/class/gpio/gpio0/direction + +echo 120 >/sys/class/gpio/unexport +echo 0 >/sys/class/gpio/unexport + +# Insmod goodix driver +insmod /oem/usr/ko/goodix.ko diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d/S60micinit b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d/S60micinit new file mode 100755 index 000000000..452fb96a6 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/etc/init.d/S60micinit @@ -0,0 +1,17 @@ +#!/bin/sh +[ -f /etc/profile.d/RkEnv.sh ] && source /etc/profile.d/RkEnv.sh +case $1 in + start) + if command -v amixer >/dev/null 2>&1; then + amixer set 'ADC ALC Left' 26 > /dev/null 2>&1 + amixer set 'ADC ALC Right' 26 > /dev/null 2>&1 + amixer set 'ADC MIC Left Gain' 3 > /dev/null 2>&1 + amixer set 'ADC MIC Right Gain' 3 > /dev/null 2>&1 + amixer set 'ADC MICBIAS Voltage' 'VREFx0_975' > /dev/null 2>&1 + amixer set 'ADC Mode' 'SingadcL' > /dev/null 2>&1 + fi + ;; + *) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config index 9935987c1..1d64b14d0 100755 --- a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-config/usr/bin/luckfox-config @@ -343,15 +343,15 @@ function luckfox_load_cfg() { fi # CSI ( Priority is lower than RGB ) - value=$(luckfox_get_pin_cfg "CSI_ENABLE") - if [ -z "$value" ]; then - if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then - luckfox_set_pin_mark "I2C4_M1_SCL" 1 - luckfox_set_pin_mark "I2C4_M1_SDA" 1 - luckfox_set_pin_mark "I2C4_M0_SCL" 1 - luckfox_set_pin_mark "I2C4_M0_SDA" 1 - fi - fi + # value=$(luckfox_get_pin_cfg "CSI_ENABLE") + # if [ -z "$value" ]; then + # if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + # luckfox_set_pin_mark "I2C4_M1_SCL" 1 + # luckfox_set_pin_mark "I2C4_M1_SDA" 1 + # luckfox_set_pin_mark "I2C4_M0_SCL" 1 + # luckfox_set_pin_mark "I2C4_M0_SDA" 1 + # fi + # fi # FBTFT value=$(luckfox_get_pin_cfg "FBTFT_ENABLE") @@ -1386,25 +1386,6 @@ function hex_add() { echo "$sum_hex" } -################################################################ -# @fu hex_shift -# -# @param hex - -# shift_amount - -# -# @return The hexadecimal number after shifting hex by shift_amount. -################################################################ -function hex_shift() { - local hex=$1 - local shift_amount=$2 - - local dec=$(printf "%d" 0x$hex) - local shift=$((shift_amount * 2)) - local shifted=$((dec << shift)) - - printf "%X\n" $shifted -} - ################################################################ # @fu luckfox_gpio_app # @@ -1686,13 +1667,10 @@ function luckfox_check_i2c() { csi_status=$(luckfox_get_pin_cfg "CSI_ENABLE") # process default status if [ -z "$csi_status" ]; then - # CSI I2C is not enabled on Ultra models by default - if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then - "$csi_status" = 0 - else - "$csi_status" = 1 - fi + echo "set csi_status = 1" + csi_status=1 fi + echo "csi_status = $csi_status" if [ "$csi_status" == 1 ]; then luckfox_result_handle "$LF_ERR" "CSI is enable,Can't config I2C4" @@ -2861,12 +2839,9 @@ function luckfox_result_handle() { } ################################################################ -# @fu luckfox_result_handle +# @fu luckfox_pico_show_pin_diagram # -# @brief 1. Display a message in the GUI. -# -# @param status - Status of messages -# log - Prepare the message to be printed +# @brief 1. Display pin diagram in the GUI. # # @return none ################################################################ @@ -2889,13 +2864,15 @@ function luckfox_show_menu() { --menu "Choose an option" 80 50 6 \ 1 "Advanced Options" \ 2 "4G Module" \ - 3 "About Luckfox" \ + 3 "Backup" \ + 4 "About Luckfox" \ 2>&1 >/dev/tty) case $option in 1) luckfox_advanced_options ;; 2) luckfox_4G ;; - 3) luckfox_about ;; + 3) luckfox_backup ;; + 4) luckfox_about ;; *) luckfox_exit ;; esac done @@ -2905,12 +2882,14 @@ function luckfox_show_menu() { option=$(dialog --title "$LUCKFOX_CHIP_MODEL Config" \ --menu "Choose an option" 80 50 6 \ 1 "Advanced Options" \ - 2 "About Luckfox" \ + 2 "Backup" \ + 3 "About Luckfox" \ 2>&1 >/dev/tty) case $option in 1) luckfox_advanced_options ;; - 2) luckfox_about ;; + 2) luckfox_backup ;; + 3) luckfox_about ;; *) luckfox_exit ;; esac done @@ -3046,6 +3025,31 @@ function luckfox_advanced_options() { fi } +function luckfox_backup() { + option=$(dialog --title "Advanced Options" \ + --menu "Choose an option" 80 50 6 \ + 1 "rootfs" \ + 2>&1 >/dev/tty) + + if [ $option == 1 ]; then + if [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pi" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Pi W" ]; then + media_class=$(dialog --menu "Select Backup Image Location" 80 50 6 \ + 0 "local" \ + 1 "usb_disk" \ + 2 "sd_card" \ + 2>&1 >/dev/tty) + elif [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra" ] || [ "$LUCKFOX_CHIP_MODEL" == "Luckfox Pico Ultra W" ]; then + media_class=$(dialog --menu "Select Backup Image Location" 80 50 6 \ + 0 "local" \ + 1 "usb_disk" \ + 2>&1 >/dev/tty) + fi + luckfox_rootfs_BACKUP "$media_class" + else + luckfox_show_menu + fi +} + function luckfox_about() { luckfox_pico_show_pin_diagram } @@ -3496,15 +3500,136 @@ function luckfox_4G() { 3) apn="3gwap" ;; esac fi - fi luckfox_4g_app "$module_4g_enable" "$mode" "$apn" } +################################################################ +# ------------------------ Backup GUI -------------------------- +################################################################ +function luckfox_rootfs_BACKUP() { + local media_class="$1" + + ROOT_FS_TYPE=$(df -T / | tail -1 | awk '{print $2}') + if [[ "$ROOT_FS_TYPE" != "ext4" ]]; then + luckfox_result_handle "$LF_ERR" "Error: Root filesystem is not ext4 (found: $ROOT_FS_TYPE)" + fi + + if ! command -v rsync &>/dev/null; then + luckfox_result_handle "$LF_ERR" "The rsync is not installed" + fi + + if [ "$media_class" == 1 ]; then + if ! mount | grep "/mnt/udisk"; then + luckfox_result_handle "$LF_ERR" "USB disk is not mounted" + fi + AVAILABLE_SPACE=$(df -k /mnt/udisk | tail -1 | awk '{print $4}') + IMAGE_NAME="/mnt/udisk/backup_rootfs.img" + MOUNT_POINT="/mnt/udisk/backup_img" + elif [ "$media_class" == 2 ]; then + if ! mount | grep "/mnt/sdcard"; then + luckfox_result_handle "$LF_ERR" "SD card is not mounted" + fi + AVAILABLE_SPACE=$(df -k /mnt/sdcard | tail -1 | awk '{print $4}') + IMAGE_NAME="/mnt/sdcard/backup_rootfs.img" + MOUNT_POINT="/mnt/sdcard/backup_img" + else + AVAILABLE_SPACE=$(df -k /mnt | tail -1 | awk '{print $4}') + IMAGE_NAME="/mnt/backup_rootfs.img" + MOUNT_POINT="/mnt/backup_img" + fi + + used_kb=$(df -k / | tail -1 | awk '{print $3}') + REQUIRED_SPACE=$(awk -v size_kb="$used_kb" 'BEGIN { printf("%d", (size_kb * 2.4 / 1024) + 0.999) }') + + if [ -z "$AVAILABLE_SPACE" ]; then + AVAILABLE_SPACE=0 + fi + + if [ "$AVAILABLE_SPACE" -lt "$REQUIRED_SPACE" ]; then + luckfox_result_handle "$LF_ERR" "Not enough space on $media_class (required: ${REQUIRED_SPACE}MB, available: ${AVAILABLE_SPACE}MB)" + fi + + LOG_FILE="/tmp/backup_rootfs.log" + + if [ -f "$IMAGE_NAME" ]; then + rm -f "$IMAGE_NAME" + fi + + if mountpoint -q "$MOUNT_POINT"; then + umount "$MOUNT_POINT" + fi + rm -rf "$MOUNT_POINT" + mkdir -p "$MOUNT_POINT" + + { + echo "XXX" + echo 10 + echo "Starting backup process..." + echo "XXX" + + echo "Calculating used disk space..." >>"$LOG_FILE" + used_kb=$(df -k / | tail -1 | awk '{print $3}') + IMAGE_SIZE_MB=$(awk -v size_kb="$used_kb" 'BEGIN { printf("%d", (size_kb * 1.2 / 1024) + 0.999) }') + + echo "XXX" + echo 40 + echo "Creating ext4 image ($IMAGE_SIZE_MB MB)..." + echo "XXX" + dd if=/dev/zero of="$IMAGE_NAME" bs=1M count=$IMAGE_SIZE_MB >>"$LOG_FILE" 2>&1 + mkfs.ext4 -F "$IMAGE_NAME" >>"$LOG_FILE" 2>&1 + + echo "XXX" + echo 60 + echo "Mounting image..." + echo "XXX" + mount -o loop "$IMAGE_NAME" "$MOUNT_POINT" >>"$LOG_FILE" 2>&1 + + echo "XXX" + echo 80 + echo "Copying rootfs with rsync..." + echo "XXX" + rsync -aX --exclude={"/oem","/userdata","/mnt","/tmp","/proc"} / "$MOUNT_POINT" >>"$LOG_FILE" 2>&1 + + mkdir -p "$MOUNT_POINT/mnt" "$MOUNT_POINT/tmp" "$MOUNT_POINT/proc" "$MOUNT_POINT/userdata" "$MOUNT_POINT/oem" + + echo "XXX" + echo 100 + echo "Finalizing..." + echo "XXX" + umount "$MOUNT_POINT" >>"$LOG_FILE" 2>&1 + } | dialog --title "Backup in Progress" --gauge "Preparing backup..." 10 60 0 + + dialog --title "Backup Succeeded" --msgbox "The image is saved at $IMAGE_NAME" 10 60 + luckfox_show_menu + +} + +################################################################ +# @fu hex_shift +# +# @param hex - +# shift_amount - +# +# @return The hexadecimal number after shifting hex by shift_amount. +################################################################ +function hex_shift() { + local hex=$1 + local shift_amount=$2 + + local dec=$(printf "%d" 0x$hex) + local shift=$((shift_amount * 2)) + local shifted=$((dec << shift)) + + printf "%X\n" $shifted +} + ################################################################ # --------------------------- Run ------------------------------ ################################################################ + +echo 0 >/proc/sys/kernel/printk if [ "$1" == "load" ]; then LF_GUI_ENABLE=0 if [ -f $LUCKFOX_PIN_DIAGRAM_FILE ]; then @@ -3535,7 +3660,7 @@ elif [ "$1" == "rgb_switch" ]; then "18" "16" \ "2" "2" \ "0" "0" \ - "0" "1" + "0" "0" elif [ "$(luckfox_get_pin_cfg "RGB_HACTIVE")" == "720" ]; then # 720 -> 480 echo "****************************************************" @@ -3570,3 +3695,5 @@ elif [ -z "$1" ]; then luckfox_config_init luckfox_show_menu fi +echo "7 4 1 7" >/proc/sys/kernel/printk + diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/init.d/S25goodix b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/init.d/S25goodix new file mode 100755 index 000000000..a699df992 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/init.d/S25goodix @@ -0,0 +1,12 @@ +#!/bin/sh + +case $1 in +start) + if [ -f "/usr/bin/insmod_goodix.sh" ]; then + sh /usr/bin/insmod_goodix.sh & + fi + ;; +*) + exit 1 + ;; +esac diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/rc.local b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/rc.local new file mode 100755 index 000000000..56ba91390 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/etc/rc.local @@ -0,0 +1,45 @@ +#!/bin/bash + +USB_KEYWORD="android_work: sent uevent USB_STATE=" +USB_MODE_PATH="/proc/device-tree/usbdrd/usb@ffb00000/dr_mode" + +usb_reset() { + while true; do + last_line=$(dmesg | grep "$USB_KEYWORD" | tail -n 1) + + if [[ "$last_line" == *"DISCONNECTED" ]]; then + echo "Detected USB DISCONNECTED." + /etc/init.d/S50usbdevice restart + fi + sleep 5 + done +} + +wifibt_init() { + /usr/bin/wifi_bt_init.sh + if [ -z "$(ifconfig -a | grep wlan0)" ]; then + echo "Try Wi-Fi/BT init again!" + sleep 5 + /usr/bin/wifi_bt_init.sh + fi +} + +if [ -f /oem/usr/ko/insmod_ko.sh ]; then + chmod a+x /oem/usr/ko/insmod_ko.sh + /oem/usr/ko/insmod_ko.sh +fi +/usr/bin/filesystem_resize.sh +wifibt_init & + +usb_mode="$(cat $USB_MODE_PATH)" +/etc/init.d/S50usbdevice start +if [ "$usb_mode" = "peripheral" ]; then + usb_reset & +fi + +/etc/init.d/S25goodix start + +if [ -n "$(hwclock | grep "invalid")" ]; then + date -s 2024-01-01 + hwclock -w +fi diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/usr/bin/insmod_goodix.sh b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/usr/bin/insmod_goodix.sh new file mode 100755 index 000000000..60759d1f5 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-86panel/usr/bin/insmod_goodix.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Export Pins +echo 120 >/sys/class/gpio/export +echo 0 >/sys/class/gpio/export + +# Set the initial level state +echo out >/sys/class/gpio/gpio0/direction +echo 1 >/sys/class/gpio/gpio0/value + +echo out >/sys/class/gpio/gpio120/direction +echo 0 >/sys/class/gpio/gpio120/value + +# Set GT911 address 0x14 +sleep 0.5 +echo 1 >/sys/class/gpio/gpio120/value +sleep 0.5 + +echo 0 >/sys/class/gpio/gpio0/value +echo in >/sys/class/gpio/gpio0/direction + +echo 120 >/sys/class/gpio/unexport +echo 0 >/sys/class/gpio/unexport + +# Insmod goodix driver +insmod /oem/usr/ko/goodix.ko diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/dtc b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/dtc similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/dtc rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/dtc diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtdump b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtdump similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtdump rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtdump diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtget b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtget similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtget rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtget diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtoverlay b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtoverlay similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtoverlay rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtoverlay diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtput b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtput similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/bin/fdtput rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/fdtput diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/io b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/io new file mode 100755 index 0000000000000000000000000000000000000000..8afe8d1d4baf437ed4a2dc612cea27f4653e78d0 GIT binary patch literal 13612 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 Ekj}E`k5TjIbdE$^ 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�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 literal 0 HcmV?d00001 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/rsync-ssl b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/rsync-ssl new file mode 100755 index 000000000..56ee7dfe0 --- /dev/null +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/bin/rsync-ssl @@ -0,0 +1,198 @@ +#!/usr/bin/env bash + +# This script uses openssl, gnutls, or stunnel to secure an rsync daemon connection. + +# By default this script takes rsync args and hands them off to the actual +# rsync command with an --rsh option that makes it open an SSL connection to an +# rsync daemon. See the rsync-ssl manpage for usage details and env variables. + +# When the first arg is --HELPER, we are being used by rsync as an --rsh helper +# script, and the args are (note the trailing dot): +# +# rsync-ssl --HELPER HOSTNAME rsync --server --daemon . +# +# --HELPER is not a user-facing option, so it is not documented in the manpage. + +# The first SSL setup was based on: http://dozzie.jarowit.net/trac/wiki/RsyncSSL +# Note that an stunnel connection requires at least version 4.x of stunnel. + +function rsync_ssl_run { + case "$*" in + *rsync://*) ;; + *::*) ;; + *) + echo "You must use rsync-ssl with a daemon-style hostname." 1>&2 + exit 1 + ;; + esac + + exec rsync --rsh="$0 --HELPER" "${@}" +} + +function rsync_ssl_helper { + if [[ -z "$RSYNC_SSL_TYPE" ]]; then + found=`path_search openssl stunnel4 stunnel` || exit 1 + if [[ "$found" == */openssl ]]; then + RSYNC_SSL_TYPE=openssl + RSYNC_SSL_OPENSSL="$found" + elif [[ "$found" == */gnutls-cli ]]; then + RSYNC_SSL_TYPE=gnutls + RSYNC_SSL_GNUTLS="$found" + else + RSYNC_SSL_TYPE=stunnel + RSYNC_SSL_STUNNEL="$found" + fi + fi + + case "$RSYNC_SSL_TYPE" in + openssl) + if [[ -z "$RSYNC_SSL_OPENSSL" ]]; then + RSYNC_SSL_OPENSSL=`path_search openssl` || exit 1 + fi + optsep=' ' + ;; + gnutls) + if [[ -z "$RSYNC_SSL_GNUTLS" ]]; then + RSYNC_SSL_GNUTLS=`path_search gnutls-cli` || exit 1 + fi + optsep=' ' + ;; + stunnel) + if [[ -z "$RSYNC_SSL_STUNNEL" ]]; then + RSYNC_SSL_STUNNEL=`path_search stunnel4 stunnel` || exit 1 + fi + optsep=' = ' + ;; + *) + echo "The RSYNC_SSL_TYPE specifies an unknown type: $RSYNC_SSL_TYPE" 1>&2 + exit 1 + ;; + esac + + if [[ -z "$RSYNC_SSL_CERT" ]]; then + certopt="" + gnutls_cert_opt="" + else + certopt="-cert$optsep$RSYNC_SSL_CERT" + gnutls_cert_opt="--x509certfile=$RSYNC_SSL_CERT" + fi + + if [[ -z "$RSYNC_SSL_KEY" ]]; then + keyopt="" + gnutls_key_opt="" + else + keyopt="-key$optsep$RSYNC_SSL_KEY" + gnutls_key_opt="--x509keyfile=$RSYNC_SSL_KEY" + fi + + if [[ -z ${RSYNC_SSL_CA_CERT+x} ]]; then + # RSYNC_SSL_CA_CERT unset - default CA set AND verify: + # openssl: + caopt="-verify_return_error -verify 4" + # gnutls: + gnutls_opts="" + # stunnel: + # Since there is no way of using the default CA certificate collection, + # we cannot do any verification. Thus, stunnel should really only be + # used if nothing else is available. + cafile="" + verify="" + elif [[ "$RSYNC_SSL_CA_CERT" == "" ]]; then + # RSYNC_SSL_CA_CERT set but empty -do NO verifications: + # openssl: + caopt="-verify 1" + # gnutls: + gnutls_opts="--insecure" + # stunnel: + cafile="" + verify="verifyChain = no" + else + # RSYNC_SSL_CA_CERT set - use CA AND verify: + # openssl: + caopt="-CAfile $RSYNC_SSL_CA_CERT -verify_return_error -verify 4" + # gnutls: + gnutls_opts="--x509cafile=$RSYNC_SSL_CA_CERT" + # stunnel: + cafile="CAfile = $RSYNC_SSL_CA_CERT" + verify="verifyChain = yes" + fi + + port="${RSYNC_PORT:-0}" + if [[ "$port" == 0 ]]; then + port="${RSYNC_SSL_PORT:-874}" + fi + + # If the user specified USER@HOSTNAME::module, then rsync passes us + # the -l USER option too, so we must be prepared to ignore it. + if [[ "$1" == "-l" ]]; then + shift 2 + fi + + hostname="$1" + shift + + if [[ -z "$hostname" || "$1" != rsync || "$2" != --server || "$3" != --daemon ]]; then + echo "Usage: rsync-ssl --HELPER HOSTNAME rsync --server --daemon ." 1>&2 + exit 1 + fi + + if [[ $RSYNC_SSL_TYPE == openssl ]]; then + exec $RSYNC_SSL_OPENSSL s_client $caopt $certopt $keyopt -quiet -verify_quiet -servername $hostname -verify_hostname $hostname -connect $hostname:$port + elif [[ $RSYNC_SSL_TYPE == gnutls ]]; then + exec $RSYNC_SSL_GNUTLS --logfile=/dev/null $gnutls_cert_opt $gnutls_key_opt $gnutls_opts $hostname:$port + else + # devzero@web.de came up with this no-tmpfile calling syntax: + exec $RSYNC_SSL_STUNNEL -fd 10 11<&0 <&2 + echo "See the rsync-ssl manpage for configuration assistance." 1>&2 + return 1 +} + +if [[ "$#" == 0 ]]; then + echo "Usage: rsync-ssl [--type=SSL_TYPE] RSYNC_ARG [...]" 1>&2 + echo "The SSL_TYPE can be openssl or stunnel" + exit 1 +fi + +if [[ "$1" = --help || "$1" = -h ]]; then + exec rsync --help +fi + +if [[ "$1" == --HELPER ]]; then + shift + rsync_ssl_helper "${@}" +fi + +if [[ "$1" == --type=* ]]; then + export RSYNC_SSL_TYPE="${1/--type=/}" + shift +fi + +rsync_ssl_run "${@}" diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/lib/libfdt.so.1 b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/lib/libfdt.so.1 similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/lib/libfdt.so.1 rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/lib/libfdt.so.1 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/lib/libfdt.so.1.7.0 b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/lib/libfdt.so.1.7.0 similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-config/usr/lib/libfdt.so.1.7.0 rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-config/usr/lib/libfdt.so.1.7.0 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libIspFec.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libIspFec.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libIspFec.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libIspFec.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libIspFec.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libIspFec.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libIspFec.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libIspFec.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libfunc_none.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libfunc_none.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libfunc_none.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libfunc_none.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librga.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librga.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librga.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librga.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librga.so.2 b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librga.so.2 similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librga.so.2 rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librga.so.2 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librga.so.2.1.0 b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librga.so.2.1.0 similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librga.so.2.1.0 rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librga.so.2.1.0 diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librkaiq.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librkaiq.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librkaiq.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librkaiq.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librkaiq.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librkaiq.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librkaiq.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librkaiq.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librknnmrt.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librknnmrt.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librknnmrt.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librknnmrt.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librkrawstream.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librkrawstream.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librkrawstream.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librkrawstream.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockchip_mpp.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockchip_mpp.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockchip_mpp.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockchip_mpp.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockit.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockit.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockit.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockit.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockit_full.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockit_full.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockit_full.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockit_full.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockit_tiny.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockit_tiny.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librockit_tiny.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librockit_tiny.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librtsp.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librtsp.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/librtsp.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/librtsp.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libsample_comm.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libsample_comm.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libsample_comm.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libsample_comm.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libsmartIr.a b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libsmartIr.a similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libsmartIr.a rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libsmartIr.a diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libsmartIr.so b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libsmartIr.so similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-rockchip/usr/lib/libsmartIr.so rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-rockchip/usr/lib/libsmartIr.so diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-sim7600g/usr/bin/simcom-cm b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-sim7600g/usr/bin/simcom-cm similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-sim7600g/usr/bin/simcom-cm rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-sim7600g/usr/bin/simcom-cm diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/fstab b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/etc/fstab similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/fstab rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/etc/fstab diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/rc.local b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/etc/rc.local similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/rc.local rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/etc/rc.local diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/udhcpd.conf b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/etc/udhcpd.conf similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/etc/udhcpd.conf rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/etc/udhcpd.conf diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/filesystem_resize.sh b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/filesystem_resize.sh similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/filesystem_resize.sh rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/filesystem_resize.sh diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/luckfox_switch_rgb_resolution b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/luckfox_switch_rgb_resolution similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/luckfox_switch_rgb_resolution rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/luckfox_switch_rgb_resolution diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpc b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/udhcpc similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpc rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/udhcpc diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpd b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/udhcpd similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/udhcpd rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/udhcpd diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/wifi_bt_init.sh similarity index 83% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/wifi_bt_init.sh index 9f76e9824..25f512ede 100755 --- a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/bin/wifi_bt_init.sh +++ b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/bin/wifi_bt_init.sh @@ -1,9 +1,11 @@ #!/bin/bash -if [ "$(cat /proc/device-tree/model)" == "Luckfox Pico Ultra W" ]; then +if [ "$(cat /proc/device-tree/model)" == "Luckfox Pico Ultra W" ] || + [ "$(cat /proc/device-tree/model)" == "Luckfox Pico 86Panel W" ] || + [ "$(cat /proc/device-tree/model)" == "Luckfox Pico Pi W" ]; then systemctl stop wpa_supplicant - if [ "$1" = "stop" ] ;then + if [ "$1" = "stop" ]; then pkill -f "udhcpc -i wlan0" exit 1 fi diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/share/udhcpc/default.script b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/share/udhcpc/default.script similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu-ultra/usr/share/udhcpc/default.script rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc-ultra/usr/share/udhcpc/default.script diff --git a/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu/etc/rc.local b/project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc/etc/rc.local similarity index 100% rename from project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-ubuntu/etc/rc.local rename to project/cfg/BoardConfig_IPC/overlay/overlay-luckfox-glibc/etc/rc.local diff --git a/sysdrv/Makefile b/sysdrv/Makefile index 3ffe067e3..142248c41 100644 --- a/sysdrv/Makefile +++ b/sysdrv/Makefile @@ -120,7 +120,6 @@ endif ifneq ($(LF_TARGET_ROOTFS),) TARGET_ROOTFS := $(LF_TARGET_ROOTFS) else -# TARGET_ROOTFS := ubuntu # TARGET_ROOTFS := buildroot TARGET_ROOTFS := busybox # TARGET_ROOTFS := custom @@ -128,8 +127,6 @@ endif ifneq ($(findstring $(TARGET_ROOTFS),custom),) ROOTFS_BUILD_ENV := custom drv -else ifneq ($(findstring $(TARGET_ROOTFS),ubuntu),) - ROOTFS_BUILD_ENV := ubuntu drv else ifneq ($(findstring $(TARGET_ROOTFS),buildroot),) ROOTFS_BUILD_ENV := rootfs_prepare pctools buildroot boardtools drv else #busybox @@ -287,7 +284,6 @@ BUILDROOT_CFG ?= config_normal BUILDROOT_VER ?= buildroot-2023.02.6 BUILDROOT_DIR := $(SYSDRV_DIR)/source/buildroot -UBUNTU_VER ?= luckfox-ubuntu-22.04.3 CUSTOM_VER ?= custom TOOLCHAIN_RUNTIME_LIB_C:=lib.tar.bz2 @@ -316,6 +312,7 @@ SYSDRV_RAMDISK_DIR ?= $(SYSDRV_DIR_OUT_BOARD) HCITOOL_TOOL_PATH :=$(SYSDRV_DIR)/tools/board/buildroot/hcitool_patch MPV_PATCH_PATH :=$(SYSDRV_DIR)/tools/board/buildroot/mpv_patch +BUSYBOX_PATCH_PATH :=$(SYSDRV_DIR)/tools/board/buildroot/busybox_patch export SYSDRV_DIR_OUT_PC export SYSDRV_DIR_OUT_BOARD @@ -608,6 +605,8 @@ buildroot_create: cp ${HCITOOL_TOOL_PATH}/0002-Fix-build-errors.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/bluez5_utils/ cp ${HCITOOL_TOOL_PATH}/0003-fix-compat-wordexp.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/bluez5_utils/ cp ${MPV_PATCH_PATH}/0002-change-j1.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/mpv/ + cp ${BUSYBOX_PATCH_PATH}/0009-busybox-support-chinese-display-in-terminal.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/busybox/ + cp ${BUSYBOX_PATCH_PATH}/0010-halt-Support-rebooting-with-arg.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/busybox/ buildroot: prepare @echo -e "$(C_GREEN) ==sysdrv== build buildroot $(C_NORMAL)" @@ -621,6 +620,8 @@ buildroot: prepare cp ${HCITOOL_TOOL_PATH}/0002-Fix-build-errors.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/bluez5_utils/ ;\ cp ${HCITOOL_TOOL_PATH}/0003-fix-compat-wordexp.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/bluez5_utils/ ;\ cp ${MPV_PATCH_PATH}/0002-change-j1.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/mpv/ ;\ + cp ${BUSYBOX_PATCH_PATH}/0009-busybox-support-chinese-display-in-terminal.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/busybox/ ;\ + cp ${BUSYBOX_PATCH_PATH}/0010-halt-Support-rebooting-with-arg.patch $(BUILDROOT_DIR)/$(BUILDROOT_VER)/package/busybox/ ;\ ); $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) $(BUILDROOT_DEFCONFIG) -C $(BUILDROOT_DIR)/$(BUILDROOT_VER) @@ -646,28 +647,6 @@ endif buildroot_clean: $(AT)rm -rf $(BUILDROOT_DIR)/$(BUILDROOT_VER) -########################################################################################## -# build ubuntu -# author :luckfox team -# date:2023-11-28 -########################################################################################## -ubuntu: prepare - @echo -e "$(C_GREEN) ==sysdrv== build ubuntu $(C_NORMAL)" - @echo -e "$(C_GREEN) ==$(LF_TARGET_ROOTFS)== $(C_NORMAL)" - test -f $(SYSDRV_DIR)/tools/board/ubuntu/$(UBUNTU_VER).tar.gz || (\ - pushd $(SYSDRV_DIR)/tools/board/ubuntu/ ;\ - ./split_and_check_md5.sh merge ./$(UBUNTU_VER).tar.gz ;\ - popd ;\ - ); - test -f $(SYSDRV_DIR_OUT_ROOTFS)/userdate/.ubuntu || (\ - mkdir -p $(SYSDRV_DIR_OUT_ROOTFS) ;\ - rm $(SYSDRV_DIR_OUT_ROOTFS)/* -rf ;\ - tar xzf $(SYSDRV_DIR)/tools/board/ubuntu/$(UBUNTU_VER).tar.gz -C $(SYSDRV_DIR_OUT_ROOTFS) ;\ - ); -ubuntu_clean: - $(AT)rm -rf $(SYSDRV_DIR_OUT_ROOTFS) - - ########################################################################################## # build custom # author :luckfox team diff --git a/sysdrv/drv_ko/wifi/aic8800dc/Makefile b/sysdrv/drv_ko/wifi/aic8800dc/Makefile index fa81f8db2..9b192377c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/Makefile +++ b/sysdrv/drv_ko/wifi/aic8800dc/Makefile @@ -83,5 +83,5 @@ clean: cd aic8800_bsp/;make clean;cd .. cd aic8800_fdrv/;make clean;cd .. cd aic8800_btlpm/;make clean;cd .. - rm -rf modules.order Module.symvers .tmp_versions/ + rm -rf modules.order Module.symvers .modules.order.cmd .Module.symvers.cmd .tmp_versions/ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/Makefile b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/Makefile index f58626f21..3a01db149 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/Makefile +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/Makefile @@ -28,9 +28,11 @@ CONFIG_FORCE_DPD_CALIB = y CONFIG_LOFT_CALIB = n CONFIG_EXT_FEM_8800DCDW = n CONFIG_RESV_MEM_SUPPORT ?= y -CONFIG_AMSDU_RX = n +CONFIG_AMSDU_RX = y CONFIG_IRQ_FALL ?= n CONFIG_SDIO_BT = n +CONFIG_RADAR_OR_IR_DETECT =n +CONFIG_FOR_IPCAM = n ifeq ($(CONFIG_EXT_FEM_8800DCDW), y) CONFIG_DPD = n @@ -57,6 +59,9 @@ ccflags-$(CONFIG_RESV_MEM_SUPPORT) += -DCONFIG_RESV_MEM_SUPPORT ccflags-$(CONFIG_AMSDU_RX) += -DCONFIG_AMSDU_RX ccflags-$(CONFIG_IRQ_FALL) += -DCONFIG_IRQ_FALL ccflags-$(CONFIG_SDIO_BT) += -DCONFIG_SDIO_BT +ccflags-$(CONFIG_RADAR_OR_IR_DETECT) += -DCONFIG_RADAR_OR_IR_DETECT +ccflags-$(CONFIG_FOR_IPCAM) += -DCONFIG_FOR_IPCAM + obj-m := $(MODULE_NAME).o $(MODULE_NAME)-y := \ @@ -126,6 +131,8 @@ MODDESTDIR ?= /lib/modules/$(KVER)/kernel/drivers/net/wireless/ ARCH ?= x86_64 CROSS_COMPILE ?= endif + +ccflags-y += -Wno-unused-function ########################################### all: modules diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.c index ae94ac146..f8cea1fb0 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.c @@ -6,101 +6,118 @@ extern int adap_test; typedef u32 (*array2_tbl_t)[2]; -#define AIC_PATCH_MAGIG_NUM 0x48435450 // "PTCH" -#define AIC_PATCH_MAGIG_NUM_2 0x50544348 // "HCTP" -#define AIC_PATCH_BLOCK_MAX 4 +#define AIC_PATCH_MAGIG_NUM 0x48435450 // "PTCH" +#define AIC_PATCH_MAGIG_NUM_2 0x50544348 // "HCTP" +#define AIC_PATCH_BLOCK_MAX 4 typedef struct { - uint32_t magic_num; - uint32_t pair_start; - uint32_t magic_num_2; - uint32_t pair_count; - uint32_t block_dst[AIC_PATCH_BLOCK_MAX]; - uint32_t block_src[AIC_PATCH_BLOCK_MAX]; - uint32_t block_size[AIC_PATCH_BLOCK_MAX]; // word count + uint32_t magic_num; + uint32_t pair_start; + uint32_t magic_num_2; + uint32_t pair_count; + uint32_t block_dst[AIC_PATCH_BLOCK_MAX]; + uint32_t block_src[AIC_PATCH_BLOCK_MAX]; + uint32_t block_size[AIC_PATCH_BLOCK_MAX]; // word count } aic_patch_t; -#define AIC_PATCH_OFST(mem) ((size_t) &((aic_patch_t *)0)->mem) +#define AIC_PATCH_OFST(mem) ((size_t) & ((aic_patch_t *)0)->mem) #define AIC_PATCH_ADDR(mem) ((u32)(aic_patch_str_base + AIC_PATCH_OFST(mem))) -u32 aicbsp_syscfg_tbl_8800d80[][2] = { -}; +u32 aicbsp_syscfg_tbl_8800d80[][2] = {}; int aicbsp_system_config_8800d80(struct aic_sdio_dev *sdiodev) { int syscfg_num = sizeof(aicbsp_syscfg_tbl_8800d80) / sizeof(u32) / 2; int ret, cnt; for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, aicbsp_syscfg_tbl_8800d80[cnt][0], aicbsp_syscfg_tbl_8800d80[cnt][1]); + ret = rwnx_send_dbg_mem_write_req( + sdiodev, aicbsp_syscfg_tbl_8800d80[cnt][0], + aicbsp_syscfg_tbl_8800d80[cnt][1]); if (ret) { - printk("%x write fail: %d\n", aicbsp_syscfg_tbl_8800d80[cnt][0], ret); + printk("%x write fail: %d\n", + aicbsp_syscfg_tbl_8800d80[cnt][0], ret); return ret; } } return 0; } - u32 adaptivity_patch_tbl_8800d80[][2] = { - {0x000C, 0x0000320A}, //linkloss_thd - {0x009C, 0x00000000}, //ac_param_conf - {0x0168, 0x00010000}, //tx_adaptivity_en + { 0x000C, 0x0000320A }, //linkloss_thd + { 0x009C, 0x00000000 }, //ac_param_conf + { 0x0168, 0x00010000 }, //tx_adaptivity_en }; -#define USER_CHAN_MAX_TXPWR_EN_FLAG (0x01U << 1) -#define USER_TX_USE_ANA_F_FLAG (0x01U << 2) +#define USER_PWROFST_COVER_CALIB_FLAG 0x01U +#define USER_CHAN_MAX_TXPWR_EN_FLAG (0x01U << 1) +#define USER_TX_USE_ANA_F_FLAG (0x01U << 2) +#define USER_APM_PRBRSP_OFFLOAD_DISABLE_FLAG (0x01U << 3) -#define CFG_USER_CHAN_MAX_TXPWR_EN 0 -#define CFG_USER_TX_USE_ANA_F 0 +#define CFG_PWROFST_COVER_CALIB 1 +#define CFG_USER_CHAN_MAX_TXPWR_EN 1 +#define CFG_USER_TX_USE_ANA_F 0 +#define CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE 0 -#define CFG_USER_EXT_FLAGS_EN (CFG_USER_CHAN_MAX_TXPWR_EN || CFG_USER_TX_USE_ANA_F) +#define CFG_USER_EXT_FLAGS_EN \ + (CFG_PWROFST_COVER_CALIB || CFG_USER_CHAN_MAX_TXPWR_EN || \ + CFG_USER_TX_USE_ANA_F || CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE) u32 patch_tbl_8800d80[][2] = { - #ifdef USE_5G - {0x00b4, 0xf3010001}, - #else - {0x00b4, 0xf3010000}, - #endif +#ifdef USE_5G + { 0x00b4, 0xf3010001 }, +#else + { 0x00b4, 0xf3010000 }, +#endif #if defined(CONFIG_AMSDU_RX) - {0x170, 0x0100000a} + { 0x170, 0x0100000a }, #endif #ifdef CONFIG_IRQ_FALL - {0x00000170, 0x0000010a}, //irqf + { 0x00000170, 0x0000010a }, //irqf #endif - #if CFG_USER_EXT_FLAGS_EN - {0x0188, 0x00000001 - #if CFG_USER_CHAN_MAX_TXPWR_EN - | USER_CHAN_MAX_TXPWR_EN_FLAG - #endif - #if CFG_USER_TX_USE_ANA_F - | USER_TX_USE_ANA_F_FLAG - #endif - }, // user_ext_flags - #endif +#if CFG_USER_EXT_FLAGS_EN + { 0x0188, 0x00000000 +#if CFG_PWROFST_COVER_CALIB + | USER_PWROFST_COVER_CALIB_FLAG +#endif +#if CFG_USER_CHAN_MAX_TXPWR_EN + | USER_CHAN_MAX_TXPWR_EN_FLAG +#endif +#if CFG_USER_TX_USE_ANA_F + | USER_TX_USE_ANA_F_FLAG +#endif +#if CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE + | USER_APM_PRBRSP_OFFLOAD_DISABLE_FLAG +#endif + }, // user_ext_flags +#endif + +#ifdef CONFIG_RADAR_OR_IR_DETECT + { 0x019c, 0x00000100 }, //enable radar detect +#endif }; #ifdef CONFIG_OOB // for 8800d40/d80 map data1 isr to gpiob1 u32 gpio_cfg_tbl_8800d40d80[][2] = { - {0x40504084, 0x00000006}, - {0x40500040, 0x00000000}, - {0x40100030, 0x00000001}, - {0x40241020, 0x00000001}, - {0x40240030, 0x00000004}, - {0x40240020, 0x03020700}, + { 0x40504084, 0x00000006 }, { 0x40500040, 0x00000000 }, + { 0x40100030, 0x00000001 }, { 0x40241020, 0x00000001 }, + { 0x40240030, 0x00000004 }, { 0x40240020, 0x03020700 }, }; #endif int aicwifi_sys_config_8800d80(struct aic_sdio_dev *sdiodev) { #ifdef CONFIG_OOB - int ret, cnt; + int ret, cnt; int gpiocfg_num = sizeof(gpio_cfg_tbl_8800d40d80) / sizeof(u32) / 2; for (cnt = 0; cnt < gpiocfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, gpio_cfg_tbl_8800d40d80[cnt][0], gpio_cfg_tbl_8800d40d80[cnt][1]); + ret = rwnx_send_dbg_mem_write_req( + sdiodev, gpio_cfg_tbl_8800d40d80[cnt][0], + gpio_cfg_tbl_8800d40d80[cnt][1]); if (ret) { - printk("%x write fail: %d\n", gpio_cfg_tbl_8800d40d80[cnt][0], ret); + printk("%x write fail: %d\n", + gpio_cfg_tbl_8800d40d80[cnt][0], ret); return ret; } } @@ -109,19 +126,19 @@ int aicwifi_sys_config_8800d80(struct aic_sdio_dev *sdiodev) return 0; } -#define NEW_PATCH_BUFFER_MAP 1 +#define NEW_PATCH_BUFFER_MAP 1 int aicwifi_patch_config_8800d80(struct aic_sdio_dev *sdiodev) { const u32 rd_patch_addr = RAM_FMAC_FW_ADDR + 0x0198; u32 aic_patch_addr; u32 config_base, aic_patch_str_base; - #if (NEW_PATCH_BUFFER_MAP) +#if (NEW_PATCH_BUFFER_MAP) u32 patch_buff_addr, patch_buff_base, rd_version_addr, rd_version_val; - #endif +#endif uint32_t start_addr = 0x0016F800; u32 patch_addr = start_addr; - u32 patch_cnt = sizeof(patch_tbl_8800d80)/sizeof(u32)/2; + u32 patch_cnt = sizeof(patch_tbl_8800d80) / sizeof(u32) / 2; struct dbg_mem_read_cfm rd_patch_addr_cfm; int ret = 0; int cnt = 0; @@ -129,13 +146,15 @@ int aicwifi_patch_config_8800d80(struct aic_sdio_dev *sdiodev) int adap_patch_cnt = 0; if (adap_test) { - printk("%s for adaptivity test \r\n", __func__); - adap_patch_cnt = sizeof(adaptivity_patch_tbl_8800d80)/sizeof(u32)/2; + printk("%s for adaptivity test \r\n", __func__); + adap_patch_cnt = + sizeof(adaptivity_patch_tbl_8800d80) / sizeof(u32) / 2; } aic_patch_addr = rd_patch_addr + 8; - ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_patch_addr, &rd_patch_addr_cfm); + ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_patch_addr, + &rd_patch_addr_cfm); if (ret) { printk("patch rd fail\n"); return ret; @@ -143,16 +162,18 @@ int aicwifi_patch_config_8800d80(struct aic_sdio_dev *sdiodev) config_base = rd_patch_addr_cfm.memdata; - ret = rwnx_send_dbg_mem_read_req(sdiodev, aic_patch_addr, &rd_patch_addr_cfm); + ret = rwnx_send_dbg_mem_read_req(sdiodev, aic_patch_addr, + &rd_patch_addr_cfm); if (ret) { printk("patch str rd fail\n"); return ret; } aic_patch_str_base = rd_patch_addr_cfm.memdata; - #if (NEW_PATCH_BUFFER_MAP) +#if (NEW_PATCH_BUFFER_MAP) rd_version_addr = RAM_FMAC_FW_ADDR + 0x01C; - if ((ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_version_addr, &rd_patch_addr_cfm))) { + if ((ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_version_addr, + &rd_patch_addr_cfm))) { printk("version val[0x%x] rd fail: %d\n", rd_version_addr, ret); return ret; } @@ -161,7 +182,8 @@ int aicwifi_patch_config_8800d80(struct aic_sdio_dev *sdiodev) sdiodev->fw_version_uint = rd_version_val; if (rd_version_val > 0x06090100) { patch_buff_addr = rd_patch_addr + 12; - ret = rwnx_send_dbg_mem_read_req(sdiodev, patch_buff_addr, &rd_patch_addr_cfm); + ret = rwnx_send_dbg_mem_read_req(sdiodev, patch_buff_addr, + &rd_patch_addr_cfm); if (ret) { printk("patch buf rd fail\n"); return ret; @@ -169,84 +191,104 @@ int aicwifi_patch_config_8800d80(struct aic_sdio_dev *sdiodev) patch_buff_base = rd_patch_addr_cfm.memdata; patch_addr = start_addr = patch_buff_base; } - #endif +#endif - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(magic_num), AIC_PATCH_MAGIG_NUM); + ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(magic_num), + AIC_PATCH_MAGIG_NUM); if (ret) { printk("0x%x write fail\n", AIC_PATCH_ADDR(magic_num)); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(magic_num_2), AIC_PATCH_MAGIG_NUM_2); + ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(magic_num_2), + AIC_PATCH_MAGIG_NUM_2); if (ret) { printk("0x%x write fail\n", AIC_PATCH_ADDR(magic_num_2)); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(pair_start), patch_addr); + ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(pair_start), + patch_addr); if (ret) { printk("0x%x write fail\n", AIC_PATCH_ADDR(pair_start)); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(pair_count), patch_cnt + adap_patch_cnt); + ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(pair_count), + patch_cnt + adap_patch_cnt); if (ret) { printk("0x%x write fail\n", AIC_PATCH_ADDR(pair_count)); return ret; } for (cnt = 0; cnt < patch_cnt; cnt++) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*cnt, patch_tbl_8800d80[cnt][0]+config_base); + ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr + 8 * cnt, + patch_tbl_8800d80[cnt][0] + + config_base); if (ret) { - printk("%x write fail\n", start_addr+8*cnt); + printk("%x write fail\n", start_addr + 8 * cnt); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*cnt+4, patch_tbl_8800d80[cnt][1]); + ret = rwnx_send_dbg_mem_write_req(sdiodev, + start_addr + 8 * cnt + 4, + patch_tbl_8800d80[cnt][1]); if (ret) { - printk("%x write fail\n", start_addr+8*cnt+4); + printk("%x write fail\n", start_addr + 8 * cnt + 4); return ret; } } - if (adap_test){ + if (adap_test) { int tmp_cnt = patch_cnt + adap_patch_cnt; for (cnt = patch_cnt; cnt < tmp_cnt; cnt++) { int tbl_idx = cnt - patch_cnt; - ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*cnt, adaptivity_patch_tbl_8800d80[tbl_idx][0]+config_base); - if(ret) { - printk("%x write fail\n", start_addr+8*cnt); + ret = rwnx_send_dbg_mem_write_req( + sdiodev, start_addr + 8 * cnt, + adaptivity_patch_tbl_8800d80[tbl_idx][0] + + config_base); + if (ret) { + printk("%x write fail\n", start_addr + 8 * cnt); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*cnt+4, adaptivity_patch_tbl_8800d80[tbl_idx][1]); - if(ret) { - printk("%x write fail\n", start_addr+8*cnt+4); + ret = rwnx_send_dbg_mem_write_req( + sdiodev, start_addr + 8 * cnt + 4, + adaptivity_patch_tbl_8800d80[tbl_idx][1]); + if (ret) { + printk("%x write fail\n", + start_addr + 8 * cnt + 4); return ret; } } } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(block_size[0]), 0); + ret = rwnx_send_dbg_mem_write_req(sdiodev, + AIC_PATCH_ADDR(block_size[0]), 0); if (ret) { - printk("block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[0]), ret); + printk("block_size[0x%x] write fail: %d\n", + AIC_PATCH_ADDR(block_size[0]), ret); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(block_size[1]), 0); + ret = rwnx_send_dbg_mem_write_req(sdiodev, + AIC_PATCH_ADDR(block_size[1]), 0); if (ret) { - printk("block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[1]), ret); + printk("block_size[0x%x] write fail: %d\n", + AIC_PATCH_ADDR(block_size[1]), ret); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(block_size[2]), 0); + ret = rwnx_send_dbg_mem_write_req(sdiodev, + AIC_PATCH_ADDR(block_size[2]), 0); if (ret) { - printk("block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[2]), ret); + printk("block_size[0x%x] write fail: %d\n", + AIC_PATCH_ADDR(block_size[2]), ret); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, AIC_PATCH_ADDR(block_size[3]), 0); + ret = rwnx_send_dbg_mem_write_req(sdiodev, + AIC_PATCH_ADDR(block_size[3]), 0); if (ret) { - printk("block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[3]), ret); + printk("block_size[0x%x] write fail: %d\n", + AIC_PATCH_ADDR(block_size[3]), ret); return ret; } return 0; } - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.h index 209565826..d496f3a12 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800d80_compat.h @@ -17,8 +17,4 @@ int aicbsp_system_config_8800d80(struct aic_sdio_dev *sdiodev); int aicwifi_sys_config_8800d80(struct aic_sdio_dev *sdiodev); int aicwifi_patch_config_8800d80(struct aic_sdio_dev *sdiodev); - #endif - - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.c index 15bb3d6de..eec0eb8db 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.c @@ -7,133 +7,122 @@ u8 chip_mcu_id = 0; extern int testmode; u32 syscfg_tbl_8800dc[][2] = { - {0x40500010, 0x00000004}, - {0x40500010, 0x00000006},//160m clk + { 0x40500010, 0x00000004 }, + { 0x40500010, 0x00000006 }, //160m clk }; u32 syscfg_tbl_8800dc_sdio_u01[][2] = { - {0x40030000, 0x00036724}, // loop forever after assert_err - {0x0011E800, 0xE7FE4070}, - {0x40030084, 0x0011E800}, - {0x40030080, 0x00000001}, - {0x4010001C, 0x00000000}, + { 0x40030000, 0x00036724 }, // loop forever after assert_err + { 0x0011E800, 0xE7FE4070 }, { 0x40030084, 0x0011E800 }, + { 0x40030080, 0x00000001 }, { 0x4010001C, 0x00000000 }, }; u32 syscfg_tbl_8800dc_sdio_u02[][2] = { - {0x40030000, 0x00036DA4}, // loop forever after assert_err - {0x0011E800, 0xE7FE4070}, - {0x40030084, 0x0011E800}, - {0x40030080, 0x00000001}, - {0x4010001C, 0x00000000}, + { 0x40030000, 0x00036DA4 }, // loop forever after assert_err + { 0x0011E800, 0xE7FE4070 }, { 0x40030084, 0x0011E800 }, + { 0x40030080, 0x00000001 }, { 0x4010001C, 0x00000000 }, }; #ifdef CONFIG_OOB u32 oobcfg_tbl_8800dc_sdio_u02[][2] = { - {0x40504044, 0x2},//oob_enable - {0x40500060, 0x03020700}, - {0x40500040, 0}, - {0x40100030, 1}, - {0x40241020, 1}, - {0x402400f0, 0x340022}, + { 0x40504044, 0x2 }, //oob_enable + { 0x40500060, 0x03020700 }, { 0x40500040, 0 }, { 0x40100030, 1 }, + { 0x40241020, 1 }, { 0x402400f0, 0x340022 }, }; #endif //CONFIG_OOB - u32 syscfg_tbl_masked_8800dc[][3] = { - //#ifdef CONFIG_PMIC_SETTING - #if defined(CONFIG_VRF_DCDC_MODE) - {0x7000216C, (0x3 << 2), (0x1 << 2)}, // pmic_pmu_init - {0x700021BC, (0x3 << 2), (0x1 << 2)}, - {0x70002118, ((0x7 << 4) | (0x1 << 7)), ((0x2 << 4) | (0x1 << 7))}, - {0x70002104, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6))}, - {0x7000210C, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6))}, - {0x70002170, (0xF << 0), (0x1 << 0)}, - {0x70002190, (0x3F << 0), (24 << 0)}, - {0x700021CC, ((0x7 << 4) | (0x1 << 7)), ((0x0 << 4) | (0x0 << 7))}, - {0x700010A0, (0x1 << 11), (0x1 << 11)}, - {0x70001034, ((0x1 << 20) | (0x7 << 26)), ((0x0 << 20) | (0x2 << 26))}, - {0x70001038, (0x1 << 8), (0x1 << 8)}, - {0x70001094, (0x3 << 2), (0x0 << 2)}, - {0x700021D0, ((0x1 << 5) | (0x1 << 6)), ((0x1 << 5) | (0x1 << 6))}, - {0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), - ((0x1 << 0) | (0x1 << 20) | (0x0 << 22))}, - {0x70001028, (0xf << 2), (0x1 << 2)}, - #else - {0x7000216C, (0x3 << 2), (0x1 << 2)}, // pmic_pmu_init - {0x700021BC, (0x3 << 2), (0x1 << 2)}, - {0x70002118, ((0x7 << 4) | (0x1 << 7)), ((0x2 << 4) | (0x1 << 7))}, - {0x70002104, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6))}, - {0x7000210C, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6))}, - {0x70002170, (0xF << 0), (0x1 << 0)}, - {0x70002190, (0x3F << 0), (24 << 0)}, - {0x700021CC, ((0x7 << 4) | (0x1 << 7)), ((0x0 << 4) | (0x0 << 7))}, - {0x700010A0, (0x1 << 11), (0x1 << 11)}, - {0x70001034, ((0x1 << 20) | (0x7 << 26)), ((0x0 << 20) | (0x2 << 26))}, - {0x70001038, (0x1 << 8), (0x1 << 8)}, - {0x70001094, (0x3 << 2), (0x0 << 2)}, - {0x700021D0, ((0x1 << 5) | (0x1 << 6)), ((0x1 << 5) | (0x1 << 6))}, - {0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), - ((0x0 << 0) | (0x1 << 20) | (0x0 << 22))}, - {0x70001028, (0xf << 2), (0x1 << 2)}, - #endif - //#endif /* CONFIG_PMIC_SETTING */ - {0x00000000, 0x00000000, 0x00000000}, // last one +//#ifdef CONFIG_PMIC_SETTING +#if defined(CONFIG_VRF_DCDC_MODE) + { 0x7000216C, (0x3 << 2), (0x1 << 2) }, // pmic_pmu_init + { 0x700021BC, (0x3 << 2), (0x1 << 2) }, + { 0x70002118, ((0x7 << 4) | (0x1 << 7)), ((0x2 << 4) | (0x1 << 7)) }, + { 0x70002104, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6)) }, + { 0x7000210C, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6)) }, + { 0x70002170, (0xF << 0), (0x1 << 0) }, + { 0x70002190, (0x3F << 0), (24 << 0) }, + { 0x700021CC, ((0x7 << 4) | (0x1 << 7)), ((0x0 << 4) | (0x0 << 7)) }, + { 0x700010A0, (0x1 << 11), (0x1 << 11) }, + { 0x70001034, ((0x1 << 20) | (0x7 << 26)), + ((0x0 << 20) | (0x2 << 26)) }, + { 0x70001038, (0x1 << 8), (0x1 << 8) }, + { 0x70001094, (0x3 << 2), (0x0 << 2) }, + { 0x700021D0, ((0x1 << 5) | (0x1 << 6)), ((0x1 << 5) | (0x1 << 6)) }, + { 0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), + ((0x1 << 0) | (0x1 << 20) | (0x0 << 22)) }, + { 0x70001028, (0xf << 2), (0x1 << 2) }, +#else + { 0x7000216C, (0x3 << 2), (0x1 << 2) }, // pmic_pmu_init + { 0x700021BC, (0x3 << 2), (0x1 << 2) }, + { 0x70002118, ((0x7 << 4) | (0x1 << 7)), ((0x2 << 4) | (0x1 << 7)) }, + { 0x70002104, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6)) }, + { 0x7000210C, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6)) }, + { 0x70002170, (0xF << 0), (0x1 << 0) }, + { 0x70002190, (0x3F << 0), (24 << 0) }, + { 0x700021CC, ((0x7 << 4) | (0x1 << 7)), ((0x0 << 4) | (0x0 << 7)) }, + { 0x700010A0, (0x1 << 11), (0x1 << 11) }, + { 0x70001034, ((0x1 << 20) | (0x7 << 26)), + ((0x0 << 20) | (0x2 << 26)) }, + { 0x70001038, (0x1 << 8), (0x1 << 8) }, + { 0x70001094, (0x3 << 2), (0x0 << 2) }, + { 0x700021D0, ((0x1 << 5) | (0x1 << 6)), ((0x1 << 5) | (0x1 << 6)) }, + { 0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), + ((0x0 << 0) | (0x1 << 20) | (0x0 << 22)) }, + { 0x70001028, (0xf << 2), (0x1 << 2) }, +#endif + //#endif /* CONFIG_PMIC_SETTING */ + { 0x00000000, 0x00000000, 0x00000000 }, // last one }; u32 syscfg_tbl_masked_8800dc_h[][3] = { - {0x7000216C, ((0x3 << 2) | (0x3 << 4)), ((0x2 << 2) | (0x2 << 4))}, // pmic_pmu_init - {0x70002138, (0xFF << 0), (0xFF << 0)}, - {0x7000213C, (0xFF << 0), (0xFF << 0)}, - {0x70002144, (0xFF << 0), (0xFF << 0)}, - {0x700021BC, (0x3 << 2), (0x1 << 2)}, - {0x70002118, ((0x7 << 4) | (0x1 << 7)), ((0x2 << 4) | (0x1 << 7))}, - {0x70002104, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6))}, - {0x7000210C, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6))}, - {0x70002170, (0xF << 0), (0x1 << 0)}, - {0x70002190, (0x3F << 0), (24 << 0)}, - {0x700021CC, ((0x7 << 4) | (0x1 << 7)), ((0x0 << 4) | (0x0 << 7))}, - {0x700010A0, (0x1 << 11), (0x1 << 11)}, - //{0x70001034, ((0x1 << 20) | (0x7 << 26)), ((0x0 << 20) | (0x2 << 26))}, - {0x70001038, (0x1 << 8), (0x1 << 8)}, - {0x70001094, (0x3 << 2), (0x0 << 2)}, - {0x700021D0, ((0x1 << 5) | (0x1 << 6)), ((0x1 << 5) | (0x1 << 6))}, - #if defined(CONFIG_VRF_DCDC_MODE) - {0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), - ((0x1 << 0) | (0x1 << 20) | (0x0 << 22))}, - #else - {0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), - ((0x0 << 0) | (0x1 << 20) | (0x0 << 22))}, - #endif - {0x70001028, (0xf << 2), (0x1 << 2)}, + { 0x7000216C, ((0x3 << 2) | (0x3 << 4)), + ((0x2 << 2) | (0x2 << 4)) }, // pmic_pmu_init + { 0x70002138, (0xFF << 0), (0xFF << 0) }, + { 0x7000213C, (0xFF << 0), (0xFF << 0) }, + { 0x70002144, (0xFF << 0), (0xFF << 0) }, + { 0x700021BC, (0x3 << 2), (0x1 << 2) }, + { 0x70002118, ((0x7 << 4) | (0x1 << 7)), ((0x2 << 4) | (0x1 << 7)) }, + { 0x70002104, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6)) }, + { 0x7000210C, ((0x3F << 0) | (0x1 << 6)), ((0x2 << 0) | (0x1 << 6)) }, + { 0x70002170, (0xF << 0), (0x1 << 0) }, + { 0x70002190, (0x3F << 0), (24 << 0) }, + { 0x700021CC, ((0x7 << 4) | (0x1 << 7)), ((0x0 << 4) | (0x0 << 7)) }, + { 0x700010A0, (0x1 << 11), (0x1 << 11) }, + //{0x70001034, ((0x1 << 20) | (0x7 << 26)), ((0x0 << 20) | (0x2 << 26))}, + { 0x70001038, (0x1 << 8), (0x1 << 8) }, + { 0x70001094, (0x3 << 2), (0x0 << 2) }, + { 0x700021D0, ((0x1 << 5) | (0x1 << 6)), ((0x1 << 5) | (0x1 << 6)) }, +#if defined(CONFIG_VRF_DCDC_MODE) + { 0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), + ((0x1 << 0) | (0x1 << 20) | (0x0 << 22)) }, +#else + { 0x70001000, ((0x1 << 0) | (0x1 << 20) | (0x1 << 22)), + ((0x0 << 0) | (0x1 << 20) | (0x0 << 22)) }, +#endif + { 0x70001028, (0xf << 2), (0x1 << 2) }, - {0x00000000, 0x00000000, 0x00000000}, // last one + { 0x00000000, 0x00000000, 0x00000000 }, // last one }; u32 syscfg_tbl_masked_8800dc_u01[][3] = { - //#ifdef CONFIG_PMIC_SETTING - {0x70001000, (0x1 << 16), (0x1 << 16)}, // for low temperature - {0x70001028, (0x1 << 6), (0x1 << 6)}, - {0x70001000, (0x1 << 16), (0x0 << 16)}, - //#endif /* CONFIG_PMIC_SETTING */ + //#ifdef CONFIG_PMIC_SETTING + { 0x70001000, (0x1 << 16), (0x1 << 16) }, // for low temperature + { 0x70001028, (0x1 << 6), (0x1 << 6) }, + { 0x70001000, (0x1 << 16), (0x0 << 16) }, + //#endif /* CONFIG_PMIC_SETTING */ }; -u32 patch_tbl_wifisetting_8800dc_u01[][2] = -{ - {0x010c,0x01001E01} -}; +u32 patch_tbl_wifisetting_8800dc_u01[][2] = { { 0x010c, 0x01001E01 } }; -u32 patch_tbl_wifisetting_8800dc_u02[][2] = -{ +u32 patch_tbl_wifisetting_8800dc_u02[][2] = { #if defined(CONFIG_SDIO_PWRCTRL) - {0x0124,0x01011E01} + { 0x0124, 0x01011E01 } #else - {0x0124,0x01001E01} + { 0x0124, 0x01001E01 } #endif }; - - uint32_t ldpc_cfg_ram[] = { -#if 0//def CONFIG_FPGA_VERIFICATION +#if 0 //def CONFIG_FPGA_VERIFICATION 0x00363638, 0x1DF8F834, 0x1DF8F834, @@ -470,2073 +459,1537 @@ uint32_t ldpc_cfg_ram[] = { 0x02131308, 0x02131308 #else - 0x00767679, - 0x1DF8F870, - 0x1DF8F870, - 0x1DF8F870, - 0x1DF8F870, - 0x006E6E72, - 0x1DF8F869, - 0x1DF8F869, - 0x1DF8F869, - 0x1DF8F869, - 0x0076767B, - 0x1DF8F870, - 0x1DF8F870, - 0x1DF8F870, - 0x1DF8F870, - 0x007E7E85, - 0x1DF4F876, - 0x1DF4F876, - 0x1DF4F876, - 0x1DF8F876, - 0x0081818A, - 0x1DF8F87B, - 0x1DF8F87B, - 0x1DF8F87B, - 0x1DF8F87B, - 0x0081818D, - 0x1DF8F87B, - 0x1DF8F87B, - 0x1DF8F87B, - 0x1DF8F87B, - 0x0081818A, - 0x1DF8F87B, - 0x1DF8F87C, - 0x1DF8F87B, - 0x1DF8F87B, - 0x007E7E40, - 0x1DF8F87B, - 0x1DF8F87B, - 0x1DF8F87B, - 0x1DF8F87B, - 0x008B8B92, - 0x1DF8F887, - 0x1DF8F889, - 0x1DF8F887, - 0x1DF8F887, - 0x00515155, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F889, - 0x1DF8F889, - 0x00515154, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F888, - 0x1DF8F888, - 0x004F4F53, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x004F4F53, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x004F4F53, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x004E4E53, - 0x1DF8F849, - 0x1DF8F848, - 0x1DF8F848, - 0x1DF8F848, - 0x004D4D52, - 0x1DF8F847, - 0x1DF8F847, - 0x1DF8F847, - 0x1DF8F847, - 0x004F4F55, - 0x1DF8F84B, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x004E4E53, - 0x1DF8F849, - 0x1DF8F848, - 0x1DF8F848, - 0x1DF8F848, - 0x0049494D, - 0x1DF8F844, - 0x1DF8F844, - 0x1DF8F844, - 0x1DF8F844, - 0x0051518F, - 0x1DF8F849, - 0x1DF8F848, - 0x1DF8F848, - 0x1DF8F848, - 0x00424277, - 0x1DF8F83F, - 0x1DF8F83C, - 0x1DF8F83C, - 0x1DF8F83C, - 0x00424275, - 0x1DF8F89E, - 0x1DF8F83C, - 0x1DF8F83C, - 0x1DF8F83C, - 0x0055555C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x0053535C, - 0x1DF8F84C, - 0x1DF8F84B, - 0x1DF8F84B, - 0x1DF8F84B, - 0x00F8F89E, - 0x1DF8F88C, - 0x1DF8F84A, - 0x1DF8F84A, - 0x1DF8F84A, - 0x00898940, - 0x18F8F846, - 0x18CFF845, - 0x18CFF844, - 0x18CFF844, - 0x0056565F, - 0x1DF8F84F, - 0x1DF8F84F, - 0x1DF8F84F, - 0x1DF8F84F, - 0x0055555E, - 0x1DF8F84E, - 0x1DF8F84E, - 0x1DF8F84E, - 0x1DF8F84E, - 0x0056565F, - 0x1DF8F84F, - 0x1DF8F84F, - 0x1DF8F84F, - 0x1DF8F84F, - 0x00555561, - 0x1DF8F850, - 0x1DF8F84E, - 0x1DF8F84E, - 0x1DF8F84E, - 0x0053535F, - 0x1DF8F84D, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x0055555F, - 0x1DF8F84F, - 0x1DF8F84E, - 0x1DF8F84E, - 0x1DF8F84E, - 0x005555AA, - 0x1DF8F854, - 0x1DF8F84E, - 0x1DF8F84E, - 0x1DF8F84E, - 0x005959A6, - 0x1DF8F84D, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x004F4F9B, - 0x1DF8F84E, - 0x1DF8F846, - 0x1DF8F846, - 0x1DF8F846, - 0x00F8F8A5, - 0x1DF8F894, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x009898A4, - 0x1DF8F84D, - 0x1DF8F84C, - 0x1DF8F84C, - 0x1DF8F84C, - 0x00464686, - 0x1DF8F8B3, - 0x1DF8F83D, - 0x1DF8F83D, - 0x1DF8F83D, - 0x008E8E40, - 0x1AF8F848, - 0x1ADFF848, - 0x1ADFF846, - 0x1ADFF846, - 0x007F7F40, - 0x18D2D275, - 0x18D2D23A, - 0x18D2D23A, - 0x18D2D239, - 0x00454540, - 0x0F868664, - 0x0F86863E, - 0x0F86863D, - 0x0F86863D, - 0x005C5C64, - 0x1DF8F856, - 0x1DF8F855, - 0x1DF8F855, - 0x1DF8F855, - 0x005B5B68, - 0x1DF8F858, - 0x1DF8F855, - 0x1DF8F855, - 0x1DF8F855, - 0x005A5A64, - 0x1DF8F855, - 0x1DF8F854, - 0x1DF8F854, - 0x1DF8F854, - 0x005A5AB5, - 0x1DF8F85B, - 0x1DF8F855, - 0x1DF8F854, - 0x1DF8F854, - 0x00F8F8B0, - 0x1DF8F8A3, - 0x1DF8F852, - 0x1DF8F852, - 0x1DF8F852, - 0x00A4A4AE, - 0x1DF8F854, - 0x1DF8F852, - 0x1DF8F852, - 0x1DF8F852, - 0x009A9A40, - 0x1DF8F84E, - 0x1DF8F84D, - 0x1DF8F84C, - 0x1DF8F84C, - 0x009C9C40, - 0x1DF8F895, - 0x1DF8F849, - 0x1DF8F84A, - 0x1DF8F84A, - 0x00494940, - 0x1197976F, - 0x11979742, - 0x11979741, - 0x11979741, - 0x006E6E74, - 0x1DF8F869, - 0x1DF8F869, - 0x1DF8F869, - 0x1DF8F869, - 0x006E6E40, - 0x1ADEF869, - 0x1ADEF869, - 0x1ADEF869, - 0x1ADEF869, - 0x00757540, - 0x0D78F86E, - 0x0D78F86E, - 0x0D78F86E, - 0x0D79F86E, - 0x00787885, - 0x1DF8F873, - 0x1DF8F873, - 0x1DF8F873, - 0x1DF8F873, - 0x00787840, - 0x1DF8F873, - 0x1DF8F873, - 0x1DF8F873, - 0x1DF8F873, - 0x00787840, - 0x0E81F873, - 0x0E81F873, - 0x0E81F873, - 0x0E82F873, - 0x00404040, - 0x0E82F873, - 0x0E82F873, - 0x0E82F873, - 0x0E82F873, - 0x00818140, - 0x1092F87E, - 0x1092F87E, - 0x1092F87E, - 0x1092F87E, - 0x00404040, - 0x1092F87E, - 0x1092F87E, - 0x1092F87E, - 0x1092F87E, - 0x00737340, - 0x14B2B26B, - 0x14B2B235, - 0x14B2B235, - 0x14B2B235, - 0x00404040, - 0x0E828260, - 0x0E82823D, - 0x0E82823C, - 0x0E82823C, - 0x00404040, - 0x0F8B8B66, - 0x0F8B8B3F, - 0x0F8B8B3D, - 0x0F8B8B3D, - 0x00404040, - 0x0B68683D, - 0x0B68681E, - 0x0B68681E, - 0x0B68681E, - 0x00222240, - 0x06434318, - 0x06434329, - 0x06434318, - 0x06434318, - 0x00404040, - 0x129D9D72, - 0x129D9D43, - 0x129D9D41, - 0x129D9D41, - 0x00404040, - 0x0D757542, - 0x0D757520, - 0x0D757520, - 0x0D757520, - 0x00232340, - 0x084C4C19, - 0x084C4C2C, - 0x084C4C19, - 0x084C4C19 + 0x00767679, 0x1DF8F870, 0x1DF8F870, 0x1DF8F870, 0x1DF8F870, 0x006E6E72, + 0x1DF8F869, 0x1DF8F869, 0x1DF8F869, 0x1DF8F869, 0x0076767B, 0x1DF8F870, + 0x1DF8F870, 0x1DF8F870, 0x1DF8F870, 0x007E7E85, 0x1DF4F876, 0x1DF4F876, + 0x1DF4F876, 0x1DF8F876, 0x0081818A, 0x1DF8F87B, 0x1DF8F87B, 0x1DF8F87B, + 0x1DF8F87B, 0x0081818D, 0x1DF8F87B, 0x1DF8F87B, 0x1DF8F87B, 0x1DF8F87B, + 0x0081818A, 0x1DF8F87B, 0x1DF8F87C, 0x1DF8F87B, 0x1DF8F87B, 0x007E7E40, + 0x1DF8F87B, 0x1DF8F87B, 0x1DF8F87B, 0x1DF8F87B, 0x008B8B92, 0x1DF8F887, + 0x1DF8F889, 0x1DF8F887, 0x1DF8F887, 0x00515155, 0x1DF8F84C, 0x1DF8F84C, + 0x1DF8F889, 0x1DF8F889, 0x00515154, 0x1DF8F84C, 0x1DF8F84C, 0x1DF8F888, + 0x1DF8F888, 0x004F4F53, 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, + 0x004F4F53, 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, 0x004F4F53, + 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, 0x004E4E53, 0x1DF8F849, + 0x1DF8F848, 0x1DF8F848, 0x1DF8F848, 0x004D4D52, 0x1DF8F847, 0x1DF8F847, + 0x1DF8F847, 0x1DF8F847, 0x004F4F55, 0x1DF8F84B, 0x1DF8F84A, 0x1DF8F84A, + 0x1DF8F84A, 0x004E4E53, 0x1DF8F849, 0x1DF8F848, 0x1DF8F848, 0x1DF8F848, + 0x0049494D, 0x1DF8F844, 0x1DF8F844, 0x1DF8F844, 0x1DF8F844, 0x0051518F, + 0x1DF8F849, 0x1DF8F848, 0x1DF8F848, 0x1DF8F848, 0x00424277, 0x1DF8F83F, + 0x1DF8F83C, 0x1DF8F83C, 0x1DF8F83C, 0x00424275, 0x1DF8F89E, 0x1DF8F83C, + 0x1DF8F83C, 0x1DF8F83C, 0x0055555C, 0x1DF8F84C, 0x1DF8F84C, 0x1DF8F84C, + 0x1DF8F84C, 0x0053535C, 0x1DF8F84C, 0x1DF8F84B, 0x1DF8F84B, 0x1DF8F84B, + 0x00F8F89E, 0x1DF8F88C, 0x1DF8F84A, 0x1DF8F84A, 0x1DF8F84A, 0x00898940, + 0x18F8F846, 0x18CFF845, 0x18CFF844, 0x18CFF844, 0x0056565F, 0x1DF8F84F, + 0x1DF8F84F, 0x1DF8F84F, 0x1DF8F84F, 0x0055555E, 0x1DF8F84E, 0x1DF8F84E, + 0x1DF8F84E, 0x1DF8F84E, 0x0056565F, 0x1DF8F84F, 0x1DF8F84F, 0x1DF8F84F, + 0x1DF8F84F, 0x00555561, 0x1DF8F850, 0x1DF8F84E, 0x1DF8F84E, 0x1DF8F84E, + 0x0053535F, 0x1DF8F84D, 0x1DF8F84C, 0x1DF8F84C, 0x1DF8F84C, 0x0055555F, + 0x1DF8F84F, 0x1DF8F84E, 0x1DF8F84E, 0x1DF8F84E, 0x005555AA, 0x1DF8F854, + 0x1DF8F84E, 0x1DF8F84E, 0x1DF8F84E, 0x005959A6, 0x1DF8F84D, 0x1DF8F84C, + 0x1DF8F84C, 0x1DF8F84C, 0x004F4F9B, 0x1DF8F84E, 0x1DF8F846, 0x1DF8F846, + 0x1DF8F846, 0x00F8F8A5, 0x1DF8F894, 0x1DF8F84C, 0x1DF8F84C, 0x1DF8F84C, + 0x009898A4, 0x1DF8F84D, 0x1DF8F84C, 0x1DF8F84C, 0x1DF8F84C, 0x00464686, + 0x1DF8F8B3, 0x1DF8F83D, 0x1DF8F83D, 0x1DF8F83D, 0x008E8E40, 0x1AF8F848, + 0x1ADFF848, 0x1ADFF846, 0x1ADFF846, 0x007F7F40, 0x18D2D275, 0x18D2D23A, + 0x18D2D23A, 0x18D2D239, 0x00454540, 0x0F868664, 0x0F86863E, 0x0F86863D, + 0x0F86863D, 0x005C5C64, 0x1DF8F856, 0x1DF8F855, 0x1DF8F855, 0x1DF8F855, + 0x005B5B68, 0x1DF8F858, 0x1DF8F855, 0x1DF8F855, 0x1DF8F855, 0x005A5A64, + 0x1DF8F855, 0x1DF8F854, 0x1DF8F854, 0x1DF8F854, 0x005A5AB5, 0x1DF8F85B, + 0x1DF8F855, 0x1DF8F854, 0x1DF8F854, 0x00F8F8B0, 0x1DF8F8A3, 0x1DF8F852, + 0x1DF8F852, 0x1DF8F852, 0x00A4A4AE, 0x1DF8F854, 0x1DF8F852, 0x1DF8F852, + 0x1DF8F852, 0x009A9A40, 0x1DF8F84E, 0x1DF8F84D, 0x1DF8F84C, 0x1DF8F84C, + 0x009C9C40, 0x1DF8F895, 0x1DF8F849, 0x1DF8F84A, 0x1DF8F84A, 0x00494940, + 0x1197976F, 0x11979742, 0x11979741, 0x11979741, 0x006E6E74, 0x1DF8F869, + 0x1DF8F869, 0x1DF8F869, 0x1DF8F869, 0x006E6E40, 0x1ADEF869, 0x1ADEF869, + 0x1ADEF869, 0x1ADEF869, 0x00757540, 0x0D78F86E, 0x0D78F86E, 0x0D78F86E, + 0x0D79F86E, 0x00787885, 0x1DF8F873, 0x1DF8F873, 0x1DF8F873, 0x1DF8F873, + 0x00787840, 0x1DF8F873, 0x1DF8F873, 0x1DF8F873, 0x1DF8F873, 0x00787840, + 0x0E81F873, 0x0E81F873, 0x0E81F873, 0x0E82F873, 0x00404040, 0x0E82F873, + 0x0E82F873, 0x0E82F873, 0x0E82F873, 0x00818140, 0x1092F87E, 0x1092F87E, + 0x1092F87E, 0x1092F87E, 0x00404040, 0x1092F87E, 0x1092F87E, 0x1092F87E, + 0x1092F87E, 0x00737340, 0x14B2B26B, 0x14B2B235, 0x14B2B235, 0x14B2B235, + 0x00404040, 0x0E828260, 0x0E82823D, 0x0E82823C, 0x0E82823C, 0x00404040, + 0x0F8B8B66, 0x0F8B8B3F, 0x0F8B8B3D, 0x0F8B8B3D, 0x00404040, 0x0B68683D, + 0x0B68681E, 0x0B68681E, 0x0B68681E, 0x00222240, 0x06434318, 0x06434329, + 0x06434318, 0x06434318, 0x00404040, 0x129D9D72, 0x129D9D43, 0x129D9D41, + 0x129D9D41, 0x00404040, 0x0D757542, 0x0D757520, 0x0D757520, 0x0D757520, + 0x00232340, 0x084C4C19, 0x084C4C2C, 0x084C4C19, 0x084C4C19 #endif }; uint32_t agc_cfg_ram[] = { - 0x20000000, - 0x0400000E, - 0x3000200E, - 0x5B000000, - 0x0400004B, - 0x3000008E, - 0x32000000, - 0x0400007B, - 0x40000000, - 0xF8000026, - 0x04000011, - 0x4819008E, - 0x9C000020, - 0x08000191, - 0x38008000, - 0x0A000000, - 0x08104411, - 0x38018000, - 0x0C004641, - 0x08D00014, - 0x30000000, - 0x01000000, - 0x04000017, - 0x30000000, - 0x3C000000, - 0x0400001A, - 0x38020000, - 0x40000001, - 0x0800001D, - 0x3808008E, - 0x14000050, - 0x08000020, - 0x4000008E, - 0xA400007B, - 0x00000101, - 0x3000339F, - 0x41000700, - 0x04104420, - 0x90000000, - 0x49000000, - 0xF00E842F, - 0xEC0E842C, - 0xEC0E842C, - 0x04000032, - 0x30000000, - 0x48000101, - 0x04000032, - 0x30000000, - 0x48000202, - 0x04000032, - 0x30000000, - 0x46000000, - 0x04000011, - 0x58010006, - 0x3D040472, - 0xDC204439, - 0x081DD4D2, - 0x480A0006, - 0xDC2044DC, - 0x081DD43C, - 0x38050004, - 0x0EF1F1C3, - 0x342044DC, - 0x30000000, - 0x01000000, - 0x04000042, - 0x30000000, - 0x33000000, - 0x04104445, - 0x38008000, - 0x2200109C, - 0x08104448, - 0x38008000, - 0x23D4509C, - 0x08104417, - 0x9000A000, - 0x32000000, - 0x18000063, - 0x14000060, - 0x1C000051, - 0x10000057, - 0x38028000, - 0x0C000001, - 0x08D04466, - 0x3000200F, - 0x00000000, - 0x00000000, - 0x38030000, - 0x0C002601, - 0x08D0445A, - 0x30000000, - 0x3D020230, - 0x0400005D, - 0x30000000, - 0x3E000100, - 0x04000066, - 0x38028000, - 0x0C001601, - 0x34204466, - 0x38028000, - 0x0C000A01, - 0x34204466, - 0x38008004, - 0xFF000000, - 0x0800007B, - 0x3800802F, - 0x26000000, - 0x0800006C, - 0x380404AF, - 0x1F191010, - 0x0800006F, - 0x20000CAF, - 0x04000071, - 0x60000CAF, - 0x18700079, - 0x14000077, - 0x10000075, - 0x28140CAF, - 0x09B00084, - 0x280A0CAF, - 0x09B00084, - 0x28060CAF, - 0x09B00084, - 0x28048086, - 0x0800007D, - 0x38000086, - 0x22800000, - 0x04000080, - 0x30000000, - 0x0EF1F101, - 0x36004883, - 0x28020000, - 0x08000085, - 0x3802008E, - 0x3D040431, - 0x08000088, - 0x3805008E, - 0x1F241821, - 0x0800008B, - 0x3000008E, - 0xA0163021, - 0x0400008E, - 0x3000008E, - 0x0EF10012, - 0x34000091, - 0x300000CC, - 0x50000000, - 0x04000094, - 0x380095FE, - 0x32010000, - 0x04000097, - 0x50001FFE, - 0x5A010000, - 0x6DC9989B, - 0xFC19D4B9, - 0x30000186, - 0x3D840373, - 0x0400009E, - 0x3000008E, - 0x0A000000, - 0x040000A1, - 0x3000008E, - 0x22C00000, - 0x040000A4, - 0x9000028E, - 0x32010001, - 0x8E4000AA, - 0xC80000B0, - 0x00000000, - 0x00000000, - 0x3000008E, - 0x32010001, - 0x040000CB, - 0x3000008E, - 0x29000000, - 0x94045011, - 0x300019B6, - 0x32010000, - 0x040000B3, - 0x300019B6, - 0x3D040431, - 0x040000B6, - 0x300019B6, - 0x22800000, - 0x04000097, - 0x30000186, - 0x3D840473, - 0x040000BC, - 0x3000008E, - 0x29030000, - 0x040000BF, - 0x9AEE028E, - 0x32010100, - 0x7C0000C5, - 0xCC0000B0, - 0x080000B0, - 0x00000000, - 0x3000008E, - 0x32010100, - 0x040000C8, - 0x3000028E, - 0x29000000, - 0x94045011, - 0x5000038E, - 0x29000000, - 0x94045011, - 0xC0000035, - 0x38010006, - 0x3D040472, - 0x080000D2, - 0x30000004, - 0x0EF1F141, - 0x340000D5, - 0x28040004, - 0x080000D7, - 0x2808000E, - 0x080000D9, - 0x3000018E, - 0x0EF10052, - 0x340000DC, - 0x3000038E, - 0x29000000, - 0x94045011, - 0x38020000, - 0x32000000, - 0x080000E2, - 0x60000000, - 0xD80000E6, - 0xD40000E9, - 0x040000EC, - 0x30000000, - 0x0EF1F121, - 0x360048EF, - 0x30000000, - 0x0C002421, - 0x360048EF, - 0x30000000, - 0x0C000021, - 0x360048EF, - 0x28020000, - 0x0800007B, - 0x50001EFE, - 0x5A010000, - 0x6DC998F5, - 0xFC19D4F8, - 0x3000028E, - 0x32000040, - 0x040000FB, - 0x3AEE028E, - 0x32000080, - 0x040000FB, - 0x30000000, - 0x0EF1F101, - 0x360048FE, - 0x28020000, - 0x08000100, - 0x3802008E, - 0x3D040431, - 0x08000103, - 0x3805008E, - 0x1F241821, - 0x08000106, - 0x3000008E, - 0xA0163021, - 0x04000109, - 0x3000008E, - 0x0EF10012, - 0x3400010C, - 0x300014F6, - 0x32010000, - 0x04000114, - 0x20000000, - 0x04000111, - 0x300000EC, - 0x50000000, - 0x040000F1, - 0x300014F6, - 0x32030000, - 0x04000117, - 0x30001086, - 0x3D840473, - 0x0400011A, - 0x5000108E, - 0x22C00000, - 0x8E47C0CB, - 0xCB30011E, - 0x300019B6, - 0x32040000, - 0x04000121, - 0x300019B6, - 0x3D040431, - 0x04000124, - 0x300019B6, - 0x22800000, - 0x04000111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x30000186, - 0x3D840473, - 0x0400012D, - 0x5000038E, - 0x29000000, - 0x94045011, - 0xC0000131, - 0x380C800E, - 0xFF000000, - 0x08000134, - 0x30000004, - 0x0FF1F103, - 0x34000137, - 0x28020000, - 0x08000139, - 0x3000038E, - 0x29000000, - 0x94045011, - 0x00000000, - 0x00000000, - 0x00000000, - 0x58010006, - 0x3D040472, - 0xDC204543, - 0x081DD4D2, - 0x480A0006, - 0xDC2044DC, - 0x081DD546, - 0x38050004, - 0x0EF1F141, - 0x342044DC, - 0x2802800E, - 0x080000DC, - 0x48000035, - 0x0400014A, - 0x7896638F, - 0x4100000F, - 0x8C00014F, - 0x080450C4, - 0x90104574, - 0x88C8620F, - 0xC000015A, - 0x90104574, - 0x08104554, - 0x94104557, - 0x3000628F, - 0x29000000, - 0x9404517A, - 0x3000638F, - 0x29000000, - 0x0410457A, - 0x3800E005, - 0x3D010131, - 0x0810455D, - 0xA832600F, - 0x90104574, - 0x08000154, - 0x94104557, - 0xC6104567, - 0xC4185563, - 0x5802E00F, - 0x0FEEEA07, - 0x80000174, - 0x3420456B, - 0x5802E00F, - 0x0EEEEA07, - 0x80000174, - 0x3420456B, - 0x30004000, - 0x33000001, - 0x0400016E, - 0x38034005, - 0x3D030373, - 0x08000171, - 0x30006007, - 0x33000000, - 0x04000174, - 0x3000608F, - 0x29000000, - 0x94045177, - 0x4000608F, - 0xA010457D, - 0x0410457A, - 0x3000608F, - 0x64000101, - 0x04104411, - 0x3000608F, - 0x64000101, - 0x04104580, - 0x3000618F, - 0x42000001, - 0x04000183, - 0x38028000, - 0x32000000, - 0x08104586, - 0x280A618F, - 0x08000188, - 0x480A618F, - 0xBC00018B, - 0x0800018E, - 0x3000618F, - 0x34000001, - 0x04000005, - 0x3000618F, - 0x34000000, - 0x04000008, - 0x3000008F, - 0x0EEAED0F, - 0x36000194, - 0x38038000, - 0x34000000, - 0x08000197, - 0x38028005, - 0x29010002, - 0x0800019A, - 0x3000028F, - 0x2200209C, - 0x0400019D, - 0x3000028F, - 0x23D4509C, - 0x040001A0, - 0x2814028F, - 0x080001A2, - 0x3000028F, - 0x43010201, - 0x040001A5, - 0x3000128F, - 0x32000100, - 0x040001A8, - 0x5AEE138F, - 0x4100000F, - 0x7C0001AC, - 0x080000F9, - 0x592C138F, - 0x29000000, - 0x8C0001B0, - 0x080000F9, - 0x2000138F, - 0x94045011, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 + 0x20000000, 0x0400000E, 0x3000200E, 0x5B000000, 0x0400004B, 0x3000008E, + 0x32000000, 0x0400007B, 0x40000000, 0xF8000026, 0x04000011, 0x4819008E, + 0x9C000020, 0x08000191, 0x38008000, 0x0A000000, 0x08104411, 0x38018000, + 0x0C004641, 0x08D00014, 0x30000000, 0x01000000, 0x04000017, 0x30000000, + 0x3C000000, 0x0400001A, 0x38020000, 0x40000001, 0x0800001D, 0x3808008E, + 0x14000050, 0x08000020, 0x4000008E, 0xA400007B, 0x00000101, 0x3000339F, + 0x41000700, 0x04104420, 0x90000000, 0x49000000, 0xF00E842F, 0xEC0E842C, + 0xEC0E842C, 0x04000032, 0x30000000, 0x48000101, 0x04000032, 0x30000000, + 0x48000202, 0x04000032, 0x30000000, 0x46000000, 0x04000011, 0x58010006, + 0x3D040472, 0xDC204439, 0x081DD4D2, 0x480A0006, 0xDC2044DC, 0x081DD43C, + 0x38050004, 0x0EF1F1C3, 0x342044DC, 0x30000000, 0x01000000, 0x04000042, + 0x30000000, 0x33000000, 0x04104445, 0x38008000, 0x2200109C, 0x08104448, + 0x38008000, 0x23D4509C, 0x08104417, 0x9000A000, 0x32000000, 0x18000063, + 0x14000060, 0x1C000051, 0x10000057, 0x38028000, 0x0C000001, 0x08D04466, + 0x3000200F, 0x00000000, 0x00000000, 0x38030000, 0x0C002601, 0x08D0445A, + 0x30000000, 0x3D020230, 0x0400005D, 0x30000000, 0x3E000100, 0x04000066, + 0x38028000, 0x0C001601, 0x34204466, 0x38028000, 0x0C000A01, 0x34204466, + 0x38008004, 0xFF000000, 0x0800007B, 0x3800802F, 0x26000000, 0x0800006C, + 0x380404AF, 0x1F191010, 0x0800006F, 0x20000CAF, 0x04000071, 0x60000CAF, + 0x18700079, 0x14000077, 0x10000075, 0x28140CAF, 0x09B00084, 0x280A0CAF, + 0x09B00084, 0x28060CAF, 0x09B00084, 0x28048086, 0x0800007D, 0x38000086, + 0x22800000, 0x04000080, 0x30000000, 0x0EF1F101, 0x36004883, 0x28020000, + 0x08000085, 0x3802008E, 0x3D040431, 0x08000088, 0x3805008E, 0x1F241821, + 0x0800008B, 0x3000008E, 0xA0163021, 0x0400008E, 0x3000008E, 0x0EF10012, + 0x34000091, 0x300000CC, 0x50000000, 0x04000094, 0x380095FE, 0x32010000, + 0x04000097, 0x50001FFE, 0x5A010000, 0x6DC9989B, 0xFC19D4B9, 0x30000186, + 0x3D840373, 0x0400009E, 0x3000008E, 0x0A000000, 0x040000A1, 0x3000008E, + 0x22C00000, 0x040000A4, 0x9000028E, 0x32010001, 0x8E4000AA, 0xC80000B0, + 0x00000000, 0x00000000, 0x3000008E, 0x32010001, 0x040000CB, 0x3000008E, + 0x29000000, 0x94045011, 0x300019B6, 0x32010000, 0x040000B3, 0x300019B6, + 0x3D040431, 0x040000B6, 0x300019B6, 0x22800000, 0x04000097, 0x30000186, + 0x3D840473, 0x040000BC, 0x3000008E, 0x29030000, 0x040000BF, 0x9AEE028E, + 0x32010100, 0x7C0000C5, 0xCC0000B0, 0x080000B0, 0x00000000, 0x3000008E, + 0x32010100, 0x040000C8, 0x3000028E, 0x29000000, 0x94045011, 0x5000038E, + 0x29000000, 0x94045011, 0xC0000035, 0x38010006, 0x3D040472, 0x080000D2, + 0x30000004, 0x0EF1F141, 0x340000D5, 0x28040004, 0x080000D7, 0x2808000E, + 0x080000D9, 0x3000018E, 0x0EF10052, 0x340000DC, 0x3000038E, 0x29000000, + 0x94045011, 0x38020000, 0x32000000, 0x080000E2, 0x60000000, 0xD80000E6, + 0xD40000E9, 0x040000EC, 0x30000000, 0x0EF1F121, 0x360048EF, 0x30000000, + 0x0C002421, 0x360048EF, 0x30000000, 0x0C000021, 0x360048EF, 0x28020000, + 0x0800007B, 0x50001EFE, 0x5A010000, 0x6DC998F5, 0xFC19D4F8, 0x3000028E, + 0x32000040, 0x040000FB, 0x3AEE028E, 0x32000080, 0x040000FB, 0x30000000, + 0x0EF1F101, 0x360048FE, 0x28020000, 0x08000100, 0x3802008E, 0x3D040431, + 0x08000103, 0x3805008E, 0x1F241821, 0x08000106, 0x3000008E, 0xA0163021, + 0x04000109, 0x3000008E, 0x0EF10012, 0x3400010C, 0x300014F6, 0x32010000, + 0x04000114, 0x20000000, 0x04000111, 0x300000EC, 0x50000000, 0x040000F1, + 0x300014F6, 0x32030000, 0x04000117, 0x30001086, 0x3D840473, 0x0400011A, + 0x5000108E, 0x22C00000, 0x8E47C0CB, 0xCB30011E, 0x300019B6, 0x32040000, + 0x04000121, 0x300019B6, 0x3D040431, 0x04000124, 0x300019B6, 0x22800000, + 0x04000111, 0x00000000, 0x00000000, 0x00000000, 0x30000186, 0x3D840473, + 0x0400012D, 0x5000038E, 0x29000000, 0x94045011, 0xC0000131, 0x380C800E, + 0xFF000000, 0x08000134, 0x30000004, 0x0FF1F103, 0x34000137, 0x28020000, + 0x08000139, 0x3000038E, 0x29000000, 0x94045011, 0x00000000, 0x00000000, + 0x00000000, 0x58010006, 0x3D040472, 0xDC204543, 0x081DD4D2, 0x480A0006, + 0xDC2044DC, 0x081DD546, 0x38050004, 0x0EF1F141, 0x342044DC, 0x2802800E, + 0x080000DC, 0x48000035, 0x0400014A, 0x7896638F, 0x4100000F, 0x8C00014F, + 0x080450C4, 0x90104574, 0x88C8620F, 0xC000015A, 0x90104574, 0x08104554, + 0x94104557, 0x3000628F, 0x29000000, 0x9404517A, 0x3000638F, 0x29000000, + 0x0410457A, 0x3800E005, 0x3D010131, 0x0810455D, 0xA832600F, 0x90104574, + 0x08000154, 0x94104557, 0xC6104567, 0xC4185563, 0x5802E00F, 0x0FEEEA07, + 0x80000174, 0x3420456B, 0x5802E00F, 0x0EEEEA07, 0x80000174, 0x3420456B, + 0x30004000, 0x33000001, 0x0400016E, 0x38034005, 0x3D030373, 0x08000171, + 0x30006007, 0x33000000, 0x04000174, 0x3000608F, 0x29000000, 0x94045177, + 0x4000608F, 0xA010457D, 0x0410457A, 0x3000608F, 0x64000101, 0x04104411, + 0x3000608F, 0x64000101, 0x04104580, 0x3000618F, 0x42000001, 0x04000183, + 0x38028000, 0x32000000, 0x08104586, 0x280A618F, 0x08000188, 0x480A618F, + 0xBC00018B, 0x0800018E, 0x3000618F, 0x34000001, 0x04000005, 0x3000618F, + 0x34000000, 0x04000008, 0x3000008F, 0x0EEAED0F, 0x36000194, 0x38038000, + 0x34000000, 0x08000197, 0x38028005, 0x29010002, 0x0800019A, 0x3000028F, + 0x2200209C, 0x0400019D, 0x3000028F, 0x23D4509C, 0x040001A0, 0x2814028F, + 0x080001A2, 0x3000028F, 0x43010201, 0x040001A5, 0x3000128F, 0x32000100, + 0x040001A8, 0x5AEE138F, 0x4100000F, 0x7C0001AC, 0x080000F9, 0x592C138F, + 0x29000000, 0x8C0001B0, 0x080000F9, 0x2000138F, 0x94045011, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000 }; #if !defined(CONFIG_EXT_FEM_8800DCDW) -uint32_t txgain_map[96] = { +uint32_t txgain_map[96] = { #ifdef CONFIG_FPGA_VERIFICATION - 0x20c0c971, - 0x20c0c980, - 0x20c0c992, - 0x20c0c9a6, - 0x20c0c9bf, - 0x20c0caa5, - 0x20c0cabd, - 0x20c0cba0, - 0x20c0cbb6, - 0x20c0cbea, - 0x20c0ccc5, - 0x20c0cdac, - 0x20c0cdd0, - 0x20c0ceb2, - 0x20c0ceff, - 0x20c0cfff, - 0x20c0c922, - 0x20c0c922, - 0x20c0c922, - 0x20c0c922, - 0x20c0c922, - 0x20c0c922, - 0x20c0c922, - 0x20c0c927, - 0x20c0c92c, - 0x20c0c931, - 0x20c0c937, - 0x20c0c93f, - 0x20c0c946, - 0x20c0c94f, - 0x20c0c959, - 0x20c0c964, - 0x20c0cbee, - 0x20c0cce0, - 0x20c0ccff, - 0x20c0cde2, - 0x20c0cdfe, - 0x20c0cede, - 0x20c0cefc, - 0x20c0cfd9, - 0x20c0cff8, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c98c, - 0x20c0ca79, - 0x20c0ca89, - 0x20c0cb74, - 0x20c0cb84, - 0x20c0cb94, - 0x20c0cba8, - 0x20c0cbbb, - 0x20c0cbd2, - 0x20c0cbee, - 0x20c0cce0, - 0x20c0ccff, - 0x20c0cde2, - 0x20c0cdfe, - 0x20c0cede, - 0x20c0cefc, - 0x20c0cfd9, - 0x20c0cff8, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0cfff, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c97c, - 0x20c0c98c, - 0x20c0ca79, - 0x20c0ca89, - 0x20c0cb74, - 0x20c0cb84, - 0x20c0cb94, - 0x20c0cba8, - 0x20c0cbbb, - 0x20c0cbd2, + 0x20c0c971, 0x20c0c980, 0x20c0c992, 0x20c0c9a6, 0x20c0c9bf, 0x20c0caa5, + 0x20c0cabd, 0x20c0cba0, 0x20c0cbb6, 0x20c0cbea, 0x20c0ccc5, 0x20c0cdac, + 0x20c0cdd0, 0x20c0ceb2, 0x20c0ceff, 0x20c0cfff, 0x20c0c922, 0x20c0c922, + 0x20c0c922, 0x20c0c922, 0x20c0c922, 0x20c0c922, 0x20c0c922, 0x20c0c927, + 0x20c0c92c, 0x20c0c931, 0x20c0c937, 0x20c0c93f, 0x20c0c946, 0x20c0c94f, + 0x20c0c959, 0x20c0c964, 0x20c0cbee, 0x20c0cce0, 0x20c0ccff, 0x20c0cde2, + 0x20c0cdfe, 0x20c0cede, 0x20c0cefc, 0x20c0cfd9, 0x20c0cff8, 0x20c0cfff, + 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, + 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, + 0x20c0c97c, 0x20c0c98c, 0x20c0ca79, 0x20c0ca89, 0x20c0cb74, 0x20c0cb84, + 0x20c0cb94, 0x20c0cba8, 0x20c0cbbb, 0x20c0cbd2, 0x20c0cbee, 0x20c0cce0, + 0x20c0ccff, 0x20c0cde2, 0x20c0cdfe, 0x20c0cede, 0x20c0cefc, 0x20c0cfd9, + 0x20c0cff8, 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, 0x20c0cfff, + 0x20c0cfff, 0x20c0cfff, 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, + 0x20c0c97c, 0x20c0c97c, 0x20c0c97c, 0x20c0c98c, 0x20c0ca79, 0x20c0ca89, + 0x20c0cb74, 0x20c0cb84, 0x20c0cb94, 0x20c0cba8, 0x20c0cbbb, 0x20c0cbd2, #else - //11b - 0x00ffd780, - 0x00ffd872, - 0x00ffd880, - 0x00ffd972, - 0x00ffd980, - 0x00ffda75, - 0x00ffda86, - 0x00ffdb77, - 0x00ffdb86, - 0x00ffdc78, - 0x00ffdc89, - 0x00ffdd79, - 0x00ffdd89, - 0x00ffde83, - 0x00ffdf79, - 0x00ffdf8b, - 0x00ffd072, - 0x00ffd072, - 0x00ffd080, - 0x00ffd172, - 0x00ffd180, - 0x00ffd272, - 0x00ffd280, - 0x00ffd36d, - 0x00ffd379, - 0x00ffd46d, - 0x00ffd479, - 0x00ffd572, - 0x00ffd580, - 0x00ffd672, - 0x00ffd680, - 0x00ffd772, - //high - 0x00ffc87d, - 0x00ffc88b, - 0x00ffc979, - 0x00ffc989, - 0x00ffcc4b, - 0x00ffcc54, - 0x00ffcc5e, - 0x00ffcc69, - 0x00ffcc78, - 0x00ffcc85, - 0x00ffcd70, - 0x00ffcd80, - 0x00ffce70, - 0x00ffce80, - 0x00ffcf7d, - 0x00ffcf90, - 0x00ffc080, - 0x00ffc090, - 0x00ffc180, - 0x00ffc190, - 0x00ffc27b, - 0x00ffc28b, - 0x00ffc37b, - 0x00ffc390, - 0x00ffc485, - 0x00ffc495, - 0x00ffc579, - 0x00ffc589, - 0x00ffc679, - 0x00ffc689, - 0x00ffc780, - 0x00ffc790, - //low - 0x00ffc87d, - 0x00ffc88b, - 0x00ffc979, - 0x00ffc989, - 0x00ffcc4b, - 0x00ffcc54, - 0x00ffcc5e, - 0x00ffcc69, - 0x00ffcc78, - 0x00ffcc85, - 0x00ffcd70, - 0x00ffcd80, - 0x00ffcd90, - 0x00ffcf68, - 0x00ffcf75, - 0x00ffcf83, - 0x00ffc080, - 0x00ffc090, - 0x00ffc180, - 0x00ffc190, - 0x00ffc27b, - 0x00ffc28b, - 0x00ffc37b, - 0x00ffc390, - 0x00ffc485, - 0x00ffc495, - 0x00ffc579, - 0x00ffc589, - 0x00ffc679, - 0x00ffc689, - 0x00ffc780, - 0x00ffc790, + //11b + 0x00ffd780, + 0x00ffd872, + 0x00ffd880, + 0x00ffd972, + 0x00ffd980, + 0x00ffda75, + 0x00ffda86, + 0x00ffdb77, + 0x00ffdb86, + 0x00ffdc78, + 0x00ffdc89, + 0x00ffdd79, + 0x00ffdd89, + 0x00ffde83, + 0x00ffdf79, + 0x00ffdf8b, + 0x00ffd072, + 0x00ffd072, + 0x00ffd080, + 0x00ffd172, + 0x00ffd180, + 0x00ffd272, + 0x00ffd280, + 0x00ffd36d, + 0x00ffd379, + 0x00ffd46d, + 0x00ffd479, + 0x00ffd572, + 0x00ffd580, + 0x00ffd672, + 0x00ffd680, + 0x00ffd772, + //high + 0x00ffc87d, + 0x00ffc88b, + 0x00ffc979, + 0x00ffc989, + 0x00ffcc4b, + 0x00ffcc54, + 0x00ffcc5e, + 0x00ffcc69, + 0x00ffcc78, + 0x00ffcc85, + 0x00ffcd70, + 0x00ffcd80, + 0x00ffce70, + 0x00ffce80, + 0x00ffcf7d, + 0x00ffcf90, + 0x00ffc080, + 0x00ffc090, + 0x00ffc180, + 0x00ffc190, + 0x00ffc27b, + 0x00ffc28b, + 0x00ffc37b, + 0x00ffc390, + 0x00ffc485, + 0x00ffc495, + 0x00ffc579, + 0x00ffc589, + 0x00ffc679, + 0x00ffc689, + 0x00ffc780, + 0x00ffc790, + //low + 0x00ffc87d, + 0x00ffc88b, + 0x00ffc979, + 0x00ffc989, + 0x00ffcc4b, + 0x00ffcc54, + 0x00ffcc5e, + 0x00ffcc69, + 0x00ffcc78, + 0x00ffcc85, + 0x00ffcd70, + 0x00ffcd80, + 0x00ffcd90, + 0x00ffcf68, + 0x00ffcf75, + 0x00ffcf83, + 0x00ffc080, + 0x00ffc090, + 0x00ffc180, + 0x00ffc190, + 0x00ffc27b, + 0x00ffc28b, + 0x00ffc37b, + 0x00ffc390, + 0x00ffc485, + 0x00ffc495, + 0x00ffc579, + 0x00ffc589, + 0x00ffc679, + 0x00ffc689, + 0x00ffc780, + 0x00ffc790, #endif }; -const uint32_t txgain_map_h[96] = -{ - //11b - 0xffd888, //11 - 0xffd979, //12 - 0xffd988, //13 - 0xffda79, //14 - 0xffda88, //15 - 0xffdb79, //16 - 0xffdb88, //17 - 0xffdc72, //18 - 0xffdc80, //19 - 0xffdd80, //20 - 0xffde66, //21 - 0xffde72, //22 - 0xffde80, //23 - 0xffdf79, //24 - 0xffdf88, //25 - 0xffdf98, //26 - 0xffd079, //-5 - 0xffd088, //-4 - 0xffd179, //-3 - 0xffd188, //-2 - 0xffd288, //-1 - 0xffd36c, //0 - 0xffd379, //1 - 0xffd388, //2 - 0xffd479, //3 - 0xffd488, //4 - 0xffd579, //5 - 0xffd588, //6 - 0xffd679, //7 - 0xffd688, //8 - 0xffd779, //9 - 0xffd879, //10 - //high - 0xffc879, //8 - 0xffc96b, //9 - 0xffc979, //10 - 0xffcc45, //11 - 0xffcc4d, //12 - 0xffcc56, //13 - 0xffcc60, //14 - 0xffcc6b, //15 - 0xffcc79, //16 - 0xffcd72, //17 - 0xffce60, //18 - 0xffce72, //19 - 0xffcf72, //20 - 0xffcf80, //21 - 0xffcf90, //22 - 0xffcf90, //23 - 0xffc079, //-8 - 0xffc16b, //-7 - 0xffc179, //-6 - 0xffc26b, //-5 - 0xffc279, //-4 - 0xffc36b, //-3 - 0xffc379, //-2 - 0xffc46b, //-1 - 0xffc479, //0 - 0xffc56b, //1 - 0xffc579, //2 - 0xffc66b, //3 - 0xffc679, //4 - 0xffc76b, //5 - 0xffc779, //6 - 0xffc86b, //7 - //low - 0xffc879, //8 - 0xffc96b, //9 - 0xffc979, //10 - 0xffcc45, //11 - 0xffcc4d, //12 - 0xffcc56, //13 - 0xffcc60, //14 - 0xffcc6b, //15 - 0xffcc79, //16 - 0xffcd72, //17 - 0xffcf5b, //18 - 0xffcf66, //19 - 0xffcf72, //20 - 0xffcf80, //21 - 0xffcf90, //22 - 0xffcf90, //23 - 0xffc079, //-8 - 0xffc16b, //-7 - 0xffc179, //-6 - 0xffc26b, //-5 - 0xffc279, //-4 - 0xffc36b, //-3 - 0xffc379, //-2 - 0xffc46b, //-1 - 0xffc479, //0 - 0xffc56b, //1 - 0xffc579, //2 - 0xffc66b, //3 - 0xffc679, //4 - 0xffc76b, //5 - 0xffc779, //6 - 0xffc86b, //7 +const uint32_t txgain_map_h[96] = { + //11b + 0xffd888, //11 + 0xffd979, //12 + 0xffd988, //13 + 0xffda79, //14 + 0xffda88, //15 + 0xffdb79, //16 + 0xffdb88, //17 + 0xffdc72, //18 + 0xffdc80, //19 + 0xffdd80, //20 + 0xffde66, //21 + 0xffde72, //22 + 0xffde80, //23 + 0xffdf79, //24 + 0xffdf88, //25 + 0xffdf98, //26 + 0xffd079, //-5 + 0xffd088, //-4 + 0xffd179, //-3 + 0xffd188, //-2 + 0xffd288, //-1 + 0xffd36c, //0 + 0xffd379, //1 + 0xffd388, //2 + 0xffd479, //3 + 0xffd488, //4 + 0xffd579, //5 + 0xffd588, //6 + 0xffd679, //7 + 0xffd688, //8 + 0xffd779, //9 + 0xffd879, //10 + //high + 0xffc879, //8 + 0xffc96b, //9 + 0xffc979, //10 + 0xffcc45, //11 + 0xffcc4d, //12 + 0xffcc56, //13 + 0xffcc60, //14 + 0xffcc6b, //15 + 0xffcc79, //16 + 0xffcd72, //17 + 0xffce60, //18 + 0xffce72, //19 + 0xffcf72, //20 + 0xffcf80, //21 + 0xffcf90, //22 + 0xffcf90, //23 + 0xffc079, //-8 + 0xffc16b, //-7 + 0xffc179, //-6 + 0xffc26b, //-5 + 0xffc279, //-4 + 0xffc36b, //-3 + 0xffc379, //-2 + 0xffc46b, //-1 + 0xffc479, //0 + 0xffc56b, //1 + 0xffc579, //2 + 0xffc66b, //3 + 0xffc679, //4 + 0xffc76b, //5 + 0xffc779, //6 + 0xffc86b, //7 + //low + 0xffc879, //8 + 0xffc96b, //9 + 0xffc979, //10 + 0xffcc45, //11 + 0xffcc4d, //12 + 0xffcc56, //13 + 0xffcc60, //14 + 0xffcc6b, //15 + 0xffcc79, //16 + 0xffcd72, //17 + 0xffcf5b, //18 + 0xffcf66, //19 + 0xffcf72, //20 + 0xffcf80, //21 + 0xffcf90, //22 + 0xffcf90, //23 + 0xffc079, //-8 + 0xffc16b, //-7 + 0xffc179, //-6 + 0xffc26b, //-5 + 0xffc279, //-4 + 0xffc36b, //-3 + 0xffc379, //-2 + 0xffc46b, //-1 + 0xffc479, //0 + 0xffc56b, //1 + 0xffc579, //2 + 0xffc66b, //3 + 0xffc679, //4 + 0xffc76b, //5 + 0xffc779, //6 + 0xffc86b, //7 }; #else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ -const uint32_t txgain_map_femkct[96] = -{ - //11b - 0x00ffd780,//15 - 0x00ffd872,//16 - 0x00ffd880,//17 - 0x00ffd972,//18 - 0x00ffd980,//19 - 0x00ffda72,//20 - 0x00ffda80,//21 - 0x00ffdb72,//22 - 0x00ffdb80,//23 - 0x00ffdc72,//24 - 0x00ffdc80,//25 - 0x00ffdd72,//26 - 0x00ffdd80,//27 - 0x00ffde72,//28 - 0x00ffde80,//29 - 0x00ffdf72,//30 - 0x00ffd072,//-1 - 0x00ffd072,//0 - 0x00ffd080,//1 - 0x00ffd172,//2 - 0x00ffd180,//3 - 0x00ffd272,//4 - 0x00ffd280,//5 - 0x00ffd36d,//6 - 0x00ffd379,//7 - 0x00ffd46d,//8 - 0x00ffd479,//9 - 0x00ffd572,//10 - 0x00ffd580,//11 - 0x00ffd672,//12 - 0x00ffd680,//13 - 0x00ffd772,//14 - //high - 0x00ffc872,//11 - 0x00ffc880,//12 - 0x00ffc972,//13 - 0x00ffc980,//14 - 0x00ffca72,//15 - 0x00ffca80,//16 - 0x00ffcb72,//17 - 0x00ffcb80,//18 - 0x00ffcc72,//19 - 0x00ffcc80,//20 - 0x00ffcd72,//21 - 0x00ffcd80,//22 - 0x00ffce72,//23 - 0x00ffce80,//24 - 0x00ffcf72,//25 - 0x00ffcf80,//26 - 0x00ffc072,//-5 - 0x00ffc080,//-4 - 0x00ffc172,//-3 - 0x00ffc180,//-2 - 0x00ffc272,//-1 - 0x00ffc280,//0 - 0x00ffc372,//1 - 0x00ffc380,//2 - 0x00ffc472,//3 - 0x00ffc480,//4 - 0x00ffc572,//5 - 0x00ffc580,//6 - 0x00ffc672,//7 - 0x00ffc680,//8 - 0x00ffc772,//9 - 0x00ffc780,//10 - //low - 0x00ffc872,//11 - 0x00ffc880,//12 - 0x00ffc972,//13 - 0x00ffc980,//14 - 0x00ffca72,//15 - 0x00ffca80,//16 - 0x00ffcb72,//17 - 0x00ffcb80,//18 - 0x00ffcc72,//19 - 0x00ffcc80,//20 - 0x00ffcd72,//21 - 0x00ffcd80,//22 - 0x00ffce72,//23 - 0x00ffce80,//24 - 0x00ffcf72,//26 - 0x00ffcf80,//27 - 0x00ffc072,//-5 - 0x00ffc080,//-4 - 0x00ffc172,//-3 - 0x00ffc180,//-2 - 0x00ffc272,//-1 - 0x00ffc280,//0 - 0x00ffc372,//1 - 0x00ffc380,//2 - 0x00ffc472,//3 - 0x00ffc480,//4 - 0x00ffc572,//5 - 0x00ffc580,//6 - 0x00ffc672,//7 - 0x00ffc680,//8 - 0x00ffc772,//9 - 0x00ffc780,//10 +const uint32_t txgain_map_femkct[96] = { + //11b + 0x00ffd780, //15 + 0x00ffd872, //16 + 0x00ffd880, //17 + 0x00ffd972, //18 + 0x00ffd980, //19 + 0x00ffda72, //20 + 0x00ffda80, //21 + 0x00ffdb72, //22 + 0x00ffdb80, //23 + 0x00ffdc72, //24 + 0x00ffdc80, //25 + 0x00ffdd72, //26 + 0x00ffdd80, //27 + 0x00ffde72, //28 + 0x00ffde80, //29 + 0x00ffdf72, //30 + 0x00ffd072, //-1 + 0x00ffd072, //0 + 0x00ffd080, //1 + 0x00ffd172, //2 + 0x00ffd180, //3 + 0x00ffd272, //4 + 0x00ffd280, //5 + 0x00ffd36d, //6 + 0x00ffd379, //7 + 0x00ffd46d, //8 + 0x00ffd479, //9 + 0x00ffd572, //10 + 0x00ffd580, //11 + 0x00ffd672, //12 + 0x00ffd680, //13 + 0x00ffd772, //14 + //high + 0x00ffc872, //11 + 0x00ffc880, //12 + 0x00ffc972, //13 + 0x00ffc980, //14 + 0x00ffca72, //15 + 0x00ffca80, //16 + 0x00ffcb72, //17 + 0x00ffcb80, //18 + 0x00ffcc72, //19 + 0x00ffcc80, //20 + 0x00ffcd72, //21 + 0x00ffcd80, //22 + 0x00ffce72, //23 + 0x00ffce80, //24 + 0x00ffcf72, //25 + 0x00ffcf80, //26 + 0x00ffc072, //-5 + 0x00ffc080, //-4 + 0x00ffc172, //-3 + 0x00ffc180, //-2 + 0x00ffc272, //-1 + 0x00ffc280, //0 + 0x00ffc372, //1 + 0x00ffc380, //2 + 0x00ffc472, //3 + 0x00ffc480, //4 + 0x00ffc572, //5 + 0x00ffc580, //6 + 0x00ffc672, //7 + 0x00ffc680, //8 + 0x00ffc772, //9 + 0x00ffc780, //10 + //low + 0x00ffc872, //11 + 0x00ffc880, //12 + 0x00ffc972, //13 + 0x00ffc980, //14 + 0x00ffca72, //15 + 0x00ffca80, //16 + 0x00ffcb72, //17 + 0x00ffcb80, //18 + 0x00ffcc72, //19 + 0x00ffcc80, //20 + 0x00ffcd72, //21 + 0x00ffcd80, //22 + 0x00ffce72, //23 + 0x00ffce80, //24 + 0x00ffcf72, //26 + 0x00ffcf80, //27 + 0x00ffc072, //-5 + 0x00ffc080, //-4 + 0x00ffc172, //-3 + 0x00ffc180, //-2 + 0x00ffc272, //-1 + 0x00ffc280, //0 + 0x00ffc372, //1 + 0x00ffc380, //2 + 0x00ffc472, //3 + 0x00ffc480, //4 + 0x00ffc572, //5 + 0x00ffc580, //6 + 0x00ffc672, //7 + 0x00ffc680, //8 + 0x00ffc772, //9 + 0x00ffc780, //10 }; -const uint32_t txgain_map_femkct_h[96] = -{ - //11b - 0x00ffd872,//15 - 0x00ffd880,//16 - 0x00ffd972,//17 - 0x00ffd980,//18 - 0x00ffd990,//19 - 0x00ffda72,//20 - 0x00ffda80,//21 - 0x00ffdb72,//22 - 0x00ffdb80,//23 - 0x00ffdc72,//24 - 0x00ffdc80,//25 - 0x00ffdd72,//26 - 0x00ffdd80,//27 - 0x00ffde72,//28 - 0x00ffde80,//29 - 0x00ffdf72,//30 - 0x00ffd072,//-1 - 0x00ffd072,//0 - 0x00ffd080,//1 - 0x00ffd172,//2 - 0x00ffd180,//3 - 0x00ffd272,//4 - 0x00ffd280,//5 - 0x00ffd379,//6 - 0x00ffd46d,//7 - 0x00ffd479,//8 - 0x00ffd572,//9 - 0x00ffd580,//10 - 0x00ffd672,//11 - 0x00ffd680,//12 - 0x00ffd772,//13 - 0x00ffd780,//14 - //high - 0x00ffc880,//11 - 0x00ffc972,//12 - 0x00ffc980,//13 - 0x00ffca72,//14 - 0x00ffca80,//15 - 0x00ffcb72,//16 - 0x00ffcb80,//17 - 0x00ffcc72,//18 - 0x00ffcc80,//19 - 0x00ffcc90,//20 - 0x00ffcd72,//21 - 0x00ffcd80,//22 - 0x00ffce72,//23 - 0x00ffce80,//24 - 0x00ffcf72,//25 - 0x00ffcf80,//26 - 0x00ffc080,//-5 - 0x00ffc172,//-4 - 0x00ffc180,//-3 - 0x00ffc272,//-2 - 0x00ffc280,//-1 - 0x00ffc372,//0 - 0x00ffc380,//1 - 0x00ffc472,//2 - 0x00ffc480,//3 - 0x00ffc572,//4 - 0x00ffc580,//5 - 0x00ffc672,//6 - 0x00ffc680,//7 - 0x00ffc772,//8 - 0x00ffc780,//9 - 0x00ffc872,//10 - //low - 0x00ffc880,//11 - 0x00ffc972,//12 - 0x00ffc980,//13 - 0x00ffca72,//14 - 0x00ffca80,//15 - 0x00ffcb72,//16 - 0x00ffcb80,//17 - 0x00ffcc72,//18 - 0x00ffcc80,//19 - 0x00ffcc90,//20 - 0x00ffcd72,//21 - 0x00ffcd80,//22 - 0x00ffce72,//23 - 0x00ffce80,//24 - 0x00ffcf72,//25 - 0x00ffcf80,//26 - 0x00ffc080,//-5 - 0x00ffc172,//-4 - 0x00ffc180,//-3 - 0x00ffc272,//-2 - 0x00ffc280,//-1 - 0x00ffc372,//0 - 0x00ffc380,//1 - 0x00ffc472,//2 - 0x00ffc480,//3 - 0x00ffc572,//4 - 0x00ffc580,//5 - 0x00ffc672,//6 - 0x00ffc680,//7 - 0x00ffc772,//8 - 0x00ffc780,//9 - 0x00ffc872,//10 +const uint32_t txgain_map_femkct_h[96] = { + //11b + 0x00ffd872, //15 + 0x00ffd880, //16 + 0x00ffd972, //17 + 0x00ffd980, //18 + 0x00ffd990, //19 + 0x00ffda72, //20 + 0x00ffda80, //21 + 0x00ffdb72, //22 + 0x00ffdb80, //23 + 0x00ffdc72, //24 + 0x00ffdc80, //25 + 0x00ffdd72, //26 + 0x00ffdd80, //27 + 0x00ffde72, //28 + 0x00ffde80, //29 + 0x00ffdf72, //30 + 0x00ffd072, //-1 + 0x00ffd072, //0 + 0x00ffd080, //1 + 0x00ffd172, //2 + 0x00ffd180, //3 + 0x00ffd272, //4 + 0x00ffd280, //5 + 0x00ffd379, //6 + 0x00ffd46d, //7 + 0x00ffd479, //8 + 0x00ffd572, //9 + 0x00ffd580, //10 + 0x00ffd672, //11 + 0x00ffd680, //12 + 0x00ffd772, //13 + 0x00ffd780, //14 + //high + 0x00ffc880, //11 + 0x00ffc972, //12 + 0x00ffc980, //13 + 0x00ffca72, //14 + 0x00ffca80, //15 + 0x00ffcb72, //16 + 0x00ffcb80, //17 + 0x00ffcc72, //18 + 0x00ffcc80, //19 + 0x00ffcc90, //20 + 0x00ffcd72, //21 + 0x00ffcd80, //22 + 0x00ffce72, //23 + 0x00ffce80, //24 + 0x00ffcf72, //25 + 0x00ffcf80, //26 + 0x00ffc080, //-5 + 0x00ffc172, //-4 + 0x00ffc180, //-3 + 0x00ffc272, //-2 + 0x00ffc280, //-1 + 0x00ffc372, //0 + 0x00ffc380, //1 + 0x00ffc472, //2 + 0x00ffc480, //3 + 0x00ffc572, //4 + 0x00ffc580, //5 + 0x00ffc672, //6 + 0x00ffc680, //7 + 0x00ffc772, //8 + 0x00ffc780, //9 + 0x00ffc872, //10 + //low + 0x00ffc880, //11 + 0x00ffc972, //12 + 0x00ffc980, //13 + 0x00ffca72, //14 + 0x00ffca80, //15 + 0x00ffcb72, //16 + 0x00ffcb80, //17 + 0x00ffcc72, //18 + 0x00ffcc80, //19 + 0x00ffcc90, //20 + 0x00ffcd72, //21 + 0x00ffcd80, //22 + 0x00ffce72, //23 + 0x00ffce80, //24 + 0x00ffcf72, //25 + 0x00ffcf80, //26 + 0x00ffc080, //-5 + 0x00ffc172, //-4 + 0x00ffc180, //-3 + 0x00ffc272, //-2 + 0x00ffc280, //-1 + 0x00ffc372, //0 + 0x00ffc380, //1 + 0x00ffc472, //2 + 0x00ffc480, //3 + 0x00ffc572, //4 + 0x00ffc580, //5 + 0x00ffc672, //6 + 0x00ffc680, //7 + 0x00ffc772, //8 + 0x00ffc780, //9 + 0x00ffc872, //10 }; #endif -u32 jump_tbl[][2] = -{ +u32 jump_tbl[][2] = { #ifndef CONFIG_FOR_IPCOM - {296, 0x180001}, - {137, 0x180011}, - {303, 0x1810f9}, - {168, 0x18186d}, - {308, 0x181bbd}, - {288, 0x1820c1}, + { 296, 0x180001 }, { 137, 0x180011 }, { 303, 0x1810f9 }, + { 168, 0x18186d }, { 308, 0x181bbd }, { 288, 0x1820c1 }, #else - {308, 0x181001}, - {288, 0x181031}, - {296, 0x18120d}, - {137, 0x18121d}, - {303, 0x182305}, - {168, 0x182a79}, - {258, 0x182ae1}, + { 308, 0x181001 }, { 288, 0x181031 }, { 296, 0x18120d }, + { 137, 0x18121d }, { 303, 0x182305 }, { 168, 0x182a79 }, + { 258, 0x182ae1 }, #endif }; -u32 jump_tbl_u02[][2] = -{ - {303, 0x00180d25}, - {168, 0x001814a5}, - {265, 0x001816b1}, - {266, 0x00181849}, - {256, 0x001818ad}, - {288, 0x00181bf9}, - {333, 0x00182d0d}, - { 26, 0x00182d45} -}; +u32 jump_tbl_u02[][2] = { { 303, 0x00180d25 }, { 168, 0x001814a5 }, + { 265, 0x001816b1 }, { 266, 0x00181849 }, + { 256, 0x001818ad }, { 288, 0x00181bf9 }, + { 333, 0x00182d0d }, { 26, 0x00182d45 } }; - -u32 patch_tbl_func[][2] = -{ +u32 patch_tbl_func[][2] = { #ifndef CONFIG_FOR_IPCOM - {0x00110054, 0x0018186D}, // same as jump_tbl idx 168 - {0x0011005C, 0x0018186D}, // same as jump_tbl idx 168 + { 0x00110054, 0x0018186D }, // same as jump_tbl idx 168 + { 0x0011005C, 0x0018186D }, // same as jump_tbl idx 168 #else - {0x00110054, 0x00182A79}, // same as jump_tbl idx 168 - {0x0011005C, 0x00182A79}, // same as jump_tbl idx 168 - {0x001118D4, 0x00000011}, + { 0x00110054, 0x00182A79 }, // same as jump_tbl idx 168 + { 0x0011005C, 0x00182A79 }, // same as jump_tbl idx 168 + { 0x001118D4, 0x00000011 }, #endif }; -u32 patch_tbl_func_u02[][2] = -{ - {0x00110054, 0x001814a5}, // same as jump_tbl idx 168 - {0x0011005C, 0x001814a5}, // same as jump_tbl idx 168 - {0x001109c0, 0x00181e3d}, - {0x00110bb4, 0x001824e1}, - {0x00110f08, 0x00182d25}, +u32 patch_tbl_func_u02[][2] = { + { 0x00110054, 0x001814a5 }, // same as jump_tbl idx 168 + { 0x0011005C, 0x001814a5 }, // same as jump_tbl idx 168 + { 0x001109c0, 0x00181e3d }, { 0x00110bb4, 0x001824e1 }, + { 0x00110f08, 0x00182d25 }, }; - -u32 patch_tbl_rf_func[][2] = -{ - {0x00110bf0, 0x00180001}, +u32 patch_tbl_rf_func[][2] = { + { 0x00110bf0, 0x00180001 }, }; - //adap test u32 adaptivity_patch_tbl_8800dc[][2] = { - {0x000C, 0x0000320A}, //linkloss_thd - {0x009C, 0x00000000}, //ac_param_conf - {0x0128, 0xF6140001}, //tx_adaptivity_en + { 0x000C, 0x0000320A }, //linkloss_thd + { 0x009C, 0x00000000 }, //ac_param_conf + { 0x0128, 0xF6140001 }, //tx_adaptivity_en }; //adap test - static u8 chip_id = 0; -#define CHIP_ID_H_MASK 0xC0 -#define IS_CHIP_ID_H() ((chip_id & CHIP_ID_H_MASK) == CHIP_ID_H_MASK) +#define CHIP_ID_H_MASK 0xC0 +#define IS_CHIP_ID_H() ((chip_id & CHIP_ID_H_MASK) == CHIP_ID_H_MASK) //Crystal provided by CPU (start) -int set_bbpll_config(struct aic_sdio_dev *rwnx_hw){ -// {0x40505010, 0x7C301010},//bbpll +int set_bbpll_config(struct aic_sdio_dev *rwnx_hw) +{ + // {0x40505010, 0x7C301010},//bbpll int ret = 0; struct dbg_mem_read_cfm rd_mem_addr_cfm; //Read crystal provided by CPU or not. - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40500148, &rd_mem_addr_cfm); - if (ret) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40500148, &rd_mem_addr_cfm); + if (ret) { AICWFDBG(LOGERROR, "%x rd fail: %d\n", 0x40500148, ret); - return -1; - } + return -1; + } - AICWFDBG(LOGDEBUG, "%s rd_mem_addr_cfm.memdata:%x \r\n", __func__, rd_mem_addr_cfm.memdata); + AICWFDBG(LOGDEBUG, "%s rd_mem_addr_cfm.memdata:%x \r\n", __func__, + rd_mem_addr_cfm.memdata); - if(!(rd_mem_addr_cfm.memdata & 0x01)){ - AICWFDBG(LOGINFO, "%s Crystal not provided by CPU \r\n", __func__); + if (!(rd_mem_addr_cfm.memdata & 0x01)) { + AICWFDBG(LOGINFO, "%s Crystal not provided by CPU \r\n", + __func__); return 0; - }else{ + } else { AICWFDBG(LOGINFO, "%s Crystal provided by CPU \r\n", __func__); //Read 0x40505010 value to check bbpll set or not. - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40505010, &rd_mem_addr_cfm); - if(ret < 0){ - AICWFDBG(LOGERROR, "%s error ret_val:%d\r\n", __func__, ret); + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40505010, + &rd_mem_addr_cfm); + if (ret < 0) { + AICWFDBG(LOGERROR, "%s error ret_val:%d\r\n", __func__, + ret); return -1; } - if((rd_mem_addr_cfm.memdata >> 29) == 3){ + if ((rd_mem_addr_cfm.memdata >> 29) == 3) { AICWFDBG(LOGERROR, "%s Not need to set \r\n", __func__); return 0; - }else{ + } else { rd_mem_addr_cfm.memdata |= ((0x1 << 29) | (0x1 << 30)); rd_mem_addr_cfm.memdata &= (~(0x1 << 31)); - rwnx_send_dbg_mem_write_req(rwnx_hw, 0x40505010, rd_mem_addr_cfm.memdata); + rwnx_send_dbg_mem_write_req(rwnx_hw, 0x40505010, + rd_mem_addr_cfm.memdata); } } return 0; } //Crystal provided by CPU (end) - void system_config_8800dc(struct aic_sdio_dev *rwnx_hw) { - int syscfg_num; - array3_tbl_t p_syscfg_msk_tbl; - int ret, cnt; - const u32 mem_addr = 0x40500000; - struct dbg_mem_read_cfm rd_mem_addr_cfm; + int syscfg_num; + array3_tbl_t p_syscfg_msk_tbl; + int ret, cnt; + const u32 mem_addr = 0x40500000; + struct dbg_mem_read_cfm rd_mem_addr_cfm; #ifdef CONFIG_OOB int oobcfg_num; #endif - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, &rd_mem_addr_cfm); - if (ret) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, &rd_mem_addr_cfm); + if (ret) { AICWFDBG(LOGERROR, "%x rd fail: %d\n", mem_addr, ret); - return; - } - chip_id = (u8)(rd_mem_addr_cfm.memdata >> 16); - //printk("%x=%x\n", rd_mem_addr_cfm.memaddr, rd_mem_addr_cfm.memdata); - if (((rd_mem_addr_cfm.memdata >> 25) & 0x01UL) == 0x00UL) { - chip_mcu_id = 1; - } + return; + } + chip_id = (u8)(rd_mem_addr_cfm.memdata >> 16); + //printk("%x=%x\n", rd_mem_addr_cfm.memaddr, rd_mem_addr_cfm.memdata); + if (((rd_mem_addr_cfm.memdata >> 25) & 0x01UL) == 0x00UL) { + chip_mcu_id = 1; + } - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x00000020, &rd_mem_addr_cfm); - if (ret) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x00000020, &rd_mem_addr_cfm); + if (ret) { AICWFDBG(LOGERROR, "[0x00000020] rd fail: %d\n", ret); - return; - } - chip_sub_id = (u8)(rd_mem_addr_cfm.memdata); - //printk("%x=%x\n", rd_mem_addr_cfm.memaddr, rd_mem_addr_cfm.memdata); - AICWFDBG(LOGINFO, "chip_id=%x, chip_sub_id=%x!!\n", chip_id, chip_sub_id); + return; + } + chip_sub_id = (u8)(rd_mem_addr_cfm.memdata); + //printk("%x=%x\n", rd_mem_addr_cfm.memaddr, rd_mem_addr_cfm.memdata); + AICWFDBG(LOGINFO, "chip_id=%x, chip_sub_id=%x!!\n", chip_id, + chip_sub_id); //Crystal provided by CPU (start) ret = set_bbpll_config(rwnx_hw); - if (ret) { + if (ret) { AICWFDBG(LOGERROR, "set_bbpll_config fail: %d\n", ret); - return; - } + return; + } //Crystal provided by CPU (end) - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40500010, &rd_mem_addr_cfm); AICWFDBG(LOGDEBUG, "[0x40500010]=%x\n", rd_mem_addr_cfm.memdata); if (ret) { - AICWFDBG(LOGERROR, "[0x40500010] rd fail: %d\n", ret); - return; + AICWFDBG(LOGERROR, "[0x40500010] rd fail: %d\n", ret); + return; } syscfg_num = sizeof(syscfg_tbl_8800dc) / sizeof(uint32_t) / 2; - for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(rwnx_hw, syscfg_tbl_8800dc[cnt][0], syscfg_tbl_8800dc[cnt][1]); - if (ret) { - AICWFDBG(LOGERROR, "%x write fail: %d\n", syscfg_tbl_8800dc[cnt][0], ret); - return; - } - } + for (cnt = 0; cnt < syscfg_num; cnt++) { + ret = rwnx_send_dbg_mem_write_req(rwnx_hw, + syscfg_tbl_8800dc[cnt][0], + syscfg_tbl_8800dc[cnt][1]); + if (ret) { + AICWFDBG(LOGERROR, "%x write fail: %d\n", + syscfg_tbl_8800dc[cnt][0], ret); + return; + } + } - if (chip_mcu_id == 0) { - if (chip_sub_id == 0) { - syscfg_num = sizeof(syscfg_tbl_8800dc_sdio_u01) / sizeof(u32) / 2; - for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(rwnx_hw, syscfg_tbl_8800dc_sdio_u01[cnt][0], syscfg_tbl_8800dc_sdio_u01[cnt][1]); - if (ret) { - AICWFDBG(LOGERROR, "%x write fail: %d\n", syscfg_tbl_8800dc_sdio_u01[cnt][0], ret); - return; - } - } - } else if ((chip_sub_id == 1) || (chip_sub_id == 2)) { - syscfg_num = sizeof(syscfg_tbl_8800dc_sdio_u02) / sizeof(u32) / 2; - for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(rwnx_hw, syscfg_tbl_8800dc_sdio_u02[cnt][0], syscfg_tbl_8800dc_sdio_u02[cnt][1]); - if (ret) { - AICWFDBG(LOGERROR, "%x write fail: %d\n", syscfg_tbl_8800dc_sdio_u02[cnt][0], ret); - return; - } - } - } - } + if (chip_mcu_id == 0) { + if (chip_sub_id == 0) { + syscfg_num = sizeof(syscfg_tbl_8800dc_sdio_u01) / + sizeof(u32) / 2; + for (cnt = 0; cnt < syscfg_num; cnt++) { + ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, + syscfg_tbl_8800dc_sdio_u01[cnt][0], + syscfg_tbl_8800dc_sdio_u01[cnt][1]); + if (ret) { + AICWFDBG(LOGERROR, + "%x write fail: %d\n", + syscfg_tbl_8800dc_sdio_u01[cnt] + [0], + ret); + return; + } + } + } else if ((chip_sub_id == 1) || (chip_sub_id == 2)) { + syscfg_num = sizeof(syscfg_tbl_8800dc_sdio_u02) / + sizeof(u32) / 2; + for (cnt = 0; cnt < syscfg_num; cnt++) { + ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, + syscfg_tbl_8800dc_sdio_u02[cnt][0], + syscfg_tbl_8800dc_sdio_u02[cnt][1]); + if (ret) { + AICWFDBG(LOGERROR, + "%x write fail: %d\n", + syscfg_tbl_8800dc_sdio_u02[cnt] + [0], + ret); + return; + } + } + } + } #ifdef CONFIG_OOB if ((chip_sub_id == 1) || (chip_sub_id == 2)) { - oobcfg_num = sizeof(oobcfg_tbl_8800dc_sdio_u02) / sizeof(u32) / 2; - for (cnt = 0; cnt < oobcfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(rwnx_hw, oobcfg_tbl_8800dc_sdio_u02[cnt][0], oobcfg_tbl_8800dc_sdio_u02[cnt][1]); + oobcfg_num = + sizeof(oobcfg_tbl_8800dc_sdio_u02) / sizeof(u32) / 2; + for (cnt = 0; cnt < oobcfg_num; cnt++) { + ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, oobcfg_tbl_8800dc_sdio_u02[cnt][0], + oobcfg_tbl_8800dc_sdio_u02[cnt][1]); if (ret) { - AICWFDBG(LOGERROR, "%x write fail: %d\n", oobcfg_tbl_8800dc_sdio_u02[cnt][0], ret); + AICWFDBG(LOGERROR, "%x write fail: %d\n", + oobcfg_tbl_8800dc_sdio_u02[cnt][0], + ret); return; - } - } + } + } } #endif - if (IS_CHIP_ID_H()) { - syscfg_num = sizeof(syscfg_tbl_masked_8800dc_h) / sizeof(u32) / 3; - p_syscfg_msk_tbl = syscfg_tbl_masked_8800dc_h; - } else { - syscfg_num = sizeof(syscfg_tbl_masked_8800dc) / sizeof(u32) / 3; - p_syscfg_msk_tbl = syscfg_tbl_masked_8800dc; - } + if (IS_CHIP_ID_H()) { + syscfg_num = + sizeof(syscfg_tbl_masked_8800dc_h) / sizeof(u32) / 3; + p_syscfg_msk_tbl = syscfg_tbl_masked_8800dc_h; + } else { + syscfg_num = sizeof(syscfg_tbl_masked_8800dc) / sizeof(u32) / 3; + p_syscfg_msk_tbl = syscfg_tbl_masked_8800dc; + } + for (cnt = 0; cnt < syscfg_num; cnt++) { + if (p_syscfg_msk_tbl[cnt][0] == 0x00000000) { + break; + } else if (p_syscfg_msk_tbl[cnt][0] == 0x70001000) { + if (chip_mcu_id == 0) { + p_syscfg_msk_tbl[cnt][1] |= + ((0x1 << 8) | (0x1 << 15)); // mask + p_syscfg_msk_tbl[cnt][2] |= + ((0x1 << 8) | (0x1 << 15)); + } + } - for (cnt = 0; cnt < syscfg_num; cnt++) { - if (p_syscfg_msk_tbl[cnt][0] == 0x00000000) { - break; - } else if (p_syscfg_msk_tbl[cnt][0] == 0x70001000) { - if (chip_mcu_id == 0) { - p_syscfg_msk_tbl[cnt][1] |= ((0x1 << 8) | (0x1 << 15)); // mask - p_syscfg_msk_tbl[cnt][2] |= ((0x1 << 8) | (0x1 << 15)); - } - } - - ret = rwnx_send_dbg_mem_mask_write_req(rwnx_hw, - p_syscfg_msk_tbl[cnt][0], p_syscfg_msk_tbl[cnt][1], p_syscfg_msk_tbl[cnt][2]); - if (ret) { - AICWFDBG(LOGERROR, "%x mask write fail: %d\n", p_syscfg_msk_tbl[cnt][0], ret); - return; - } - } - - if (chip_sub_id == 0) { - syscfg_num = sizeof(syscfg_tbl_masked_8800dc_u01) / sizeof(u32) / 3; - for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_mask_write_req(rwnx_hw, - syscfg_tbl_masked_8800dc_u01[cnt][0], syscfg_tbl_masked_8800dc_u01[cnt][1], syscfg_tbl_masked_8800dc_u01[cnt][2]); - if (ret) { - AICWFDBG(LOGERROR, "%x mask write fail: %d\n", syscfg_tbl_masked_8800dc_u01[cnt][0], ret); - return; - } - } - } + ret = rwnx_send_dbg_mem_mask_write_req( + rwnx_hw, p_syscfg_msk_tbl[cnt][0], + p_syscfg_msk_tbl[cnt][1], p_syscfg_msk_tbl[cnt][2]); + if (ret) { + AICWFDBG(LOGERROR, "%x mask write fail: %d\n", + p_syscfg_msk_tbl[cnt][0], ret); + return; + } + } + if (chip_sub_id == 0) { + syscfg_num = + sizeof(syscfg_tbl_masked_8800dc_u01) / sizeof(u32) / 3; + for (cnt = 0; cnt < syscfg_num; cnt++) { + ret = rwnx_send_dbg_mem_mask_write_req( + rwnx_hw, syscfg_tbl_masked_8800dc_u01[cnt][0], + syscfg_tbl_masked_8800dc_u01[cnt][1], + syscfg_tbl_masked_8800dc_u01[cnt][2]); + if (ret) { + AICWFDBG(LOGERROR, "%x mask write fail: %d\n", + syscfg_tbl_masked_8800dc_u01[cnt][0], + ret); + return; + } + } + } } extern int adap_test; void aicwf_patch_config_8800dc(struct aic_sdio_dev *rwnx_hw) { - int ret = 0; - int cnt = 0; + int ret = 0; + int cnt = 0; if (testmode == 0) { - const u32 cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - int i; - u32 wifisetting_cfg_addr; - u32 ldpc_cfg_addr; - u32 agc_cfg_addr; - u32 txgain_cfg_addr; - u32 jump_tbl_addr = 0; + const u32 cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + int i; + u32 wifisetting_cfg_addr; + u32 ldpc_cfg_addr; + u32 agc_cfg_addr; + u32 txgain_cfg_addr; + u32 jump_tbl_addr = 0; - u32 patch_tbl_wifisetting_num;// = sizeof(patch_tbl_wifisetting_8800dc_u02)/sizeof(u32)/2; - u32 ldpc_cfg_size = sizeof(ldpc_cfg_ram); - u32 agc_cfg_size = sizeof(agc_cfg_ram); - u32 txgain_cfg_size, *txgain_cfg_array; - u32 jump_tbl_size = 0; - u32 patch_tbl_func_num = 0; + u32 patch_tbl_wifisetting_num; // = sizeof(patch_tbl_wifisetting_8800dc_u02)/sizeof(u32)/2; + u32 ldpc_cfg_size = sizeof(ldpc_cfg_ram); + u32 agc_cfg_size = sizeof(agc_cfg_ram); + u32 txgain_cfg_size, *txgain_cfg_array; + u32 jump_tbl_size = 0; + u32 patch_tbl_func_num = 0; - //adap test - int adap_patch_num = 0; - //adap test + //adap test + int adap_patch_num = 0; + //adap test - - array2_tbl_t jump_tbl_base = NULL; - array2_tbl_t patch_tbl_func_base = NULL; + array2_tbl_t jump_tbl_base = NULL; + array2_tbl_t patch_tbl_func_base = NULL; array2_tbl_t patch_tbl_wifisetting_8800dc_base = NULL; - if (chip_sub_id == 0) { - jump_tbl_base = jump_tbl; - jump_tbl_size = sizeof(jump_tbl)/2; - patch_tbl_func_base = patch_tbl_func; - patch_tbl_func_num = sizeof(patch_tbl_func)/sizeof(u32)/2; - patch_tbl_wifisetting_num = sizeof(patch_tbl_wifisetting_8800dc_u01)/sizeof(u32)/2; - patch_tbl_wifisetting_8800dc_base = patch_tbl_wifisetting_8800dc_u01; - } else if ((chip_sub_id == 1) || (chip_sub_id == 2)) { - patch_tbl_wifisetting_num = sizeof(patch_tbl_wifisetting_8800dc_u02)/sizeof(u32)/2; - patch_tbl_wifisetting_8800dc_base = patch_tbl_wifisetting_8800dc_u02; - } else { - printk("unsupported id: %d", chip_sub_id); - return; - } - - //struct dbg_mem_read_cfm cfm; - //int i; - - if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base, &cfm))) { - AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", cfg_base, ret); - } - wifisetting_cfg_addr = cfm.memdata; - - if(chip_sub_id == 0){ - if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 4, &cfm))) { - AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", cfg_base + 4, ret); - } - jump_tbl_addr = cfm.memdata; + if (chip_sub_id == 0) { + jump_tbl_base = jump_tbl; + jump_tbl_size = sizeof(jump_tbl) / 2; + patch_tbl_func_base = patch_tbl_func; + patch_tbl_func_num = + sizeof(patch_tbl_func) / sizeof(u32) / 2; + patch_tbl_wifisetting_num = + sizeof(patch_tbl_wifisetting_8800dc_u01) / + sizeof(u32) / 2; + patch_tbl_wifisetting_8800dc_base = + patch_tbl_wifisetting_8800dc_u01; + } else if ((chip_sub_id == 1) || (chip_sub_id == 2)) { + patch_tbl_wifisetting_num = + sizeof(patch_tbl_wifisetting_8800dc_u02) / + sizeof(u32) / 2; + patch_tbl_wifisetting_8800dc_base = + patch_tbl_wifisetting_8800dc_u02; + } else { + printk("unsupported id: %d", chip_sub_id); + return; } - if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 8, &cfm))) { - AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", cfg_base + 8, ret); - } - ldpc_cfg_addr = cfm.memdata; + //struct dbg_mem_read_cfm cfm; + //int i; - if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0xc, &cfm))) { - AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", cfg_base + 0xc, ret); - } - agc_cfg_addr = cfm.memdata; + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base, + &cfm))) { + AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", + cfg_base, ret); + } + wifisetting_cfg_addr = cfm.memdata; - if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x10, &cfm))) { - AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", cfg_base + 0x10, ret); - } - txgain_cfg_addr = cfm.memdata; + if (chip_sub_id == 0) { + if ((ret = rwnx_send_dbg_mem_read_req( + rwnx_hw, cfg_base + 4, &cfm))) { + AICWFDBG(LOGERROR, + "setting base[0x%x] rd fail: %d\n", + cfg_base + 4, ret); + } + jump_tbl_addr = cfm.memdata; + } - AICWFDBG(LOGINFO, "wifisetting_cfg_addr=%x, ldpc_cfg_addr=%x, agc_cfg_addr=%x, txgain_cfg_addr=%x\n", wifisetting_cfg_addr, ldpc_cfg_addr, agc_cfg_addr, txgain_cfg_addr); + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 8, + &cfm))) { + AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", + cfg_base + 8, ret); + } + ldpc_cfg_addr = cfm.memdata; + + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0xc, + &cfm))) { + AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", + cfg_base + 0xc, ret); + } + agc_cfg_addr = cfm.memdata; + + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x10, + &cfm))) { + AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", + cfg_base + 0x10, ret); + } + txgain_cfg_addr = cfm.memdata; + + AICWFDBG( + LOGINFO, + "wifisetting_cfg_addr=%x, ldpc_cfg_addr=%x, agc_cfg_addr=%x, txgain_cfg_addr=%x\n", + wifisetting_cfg_addr, ldpc_cfg_addr, agc_cfg_addr, + txgain_cfg_addr); for (cnt = 0; cnt < patch_tbl_wifisetting_num; cnt++) { - if ((ret = rwnx_send_dbg_mem_write_req(rwnx_hw, wifisetting_cfg_addr + patch_tbl_wifisetting_8800dc_base[cnt][0], patch_tbl_wifisetting_8800dc_base[cnt][1]))) { - AICWFDBG(LOGERROR, "wifisetting %x write fail\n", patch_tbl_wifisetting_8800dc_base[cnt][0]); + if ((ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, + wifisetting_cfg_addr + + patch_tbl_wifisetting_8800dc_base + [cnt][0], + patch_tbl_wifisetting_8800dc_base[cnt] + [1]))) { + AICWFDBG(LOGERROR, + "wifisetting %x write fail\n", + patch_tbl_wifisetting_8800dc_base[cnt] + [0]); } } -//adap test - if(adap_test){ - AICWFDBG(LOGINFO, "%s for adaptivity test \r\n", __func__); - adap_patch_num = sizeof(adaptivity_patch_tbl_8800dc)/sizeof(u32)/2; - for(cnt = 0; cnt < adap_patch_num; cnt++) - { - if((ret = rwnx_send_dbg_mem_write_req(rwnx_hw, wifisetting_cfg_addr + adaptivity_patch_tbl_8800dc[cnt][0], adaptivity_patch_tbl_8800dc[cnt][1]))) { - AICWFDBG(LOGERROR, "%x write fail\n", wifisetting_cfg_addr + adaptivity_patch_tbl_8800dc[cnt][0]); + //adap test + if (adap_test) { + AICWFDBG(LOGINFO, "%s for adaptivity test \r\n", + __func__); + adap_patch_num = sizeof(adaptivity_patch_tbl_8800dc) / + sizeof(u32) / 2; + for (cnt = 0; cnt < adap_patch_num; cnt++) { + if ((ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, + wifisetting_cfg_addr + + adaptivity_patch_tbl_8800dc + [cnt][0], + adaptivity_patch_tbl_8800dc[cnt] + [1]))) { + AICWFDBG( + LOGERROR, "%x write fail\n", + wifisetting_cfg_addr + + adaptivity_patch_tbl_8800dc + [cnt][0]); } } } -//adap test + //adap test - if (ldpc_cfg_size > 512) {// > 0.5KB data - for (i = 0; i < (ldpc_cfg_size - 512); i += 512) {//each time write 0.5KB - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ldpc_cfg_addr + i, 512, ldpc_cfg_ram + i / 4); - if (ret) { - AICWFDBG(LOGERROR, "ldpc upload fail: %x, err:%d\r\n", ldpc_cfg_addr + i, ret); - break; - } - } - } + if (ldpc_cfg_size > 512) { // > 0.5KB data + for (i = 0; i < (ldpc_cfg_size - 512); + i += 512) { //each time write 0.5KB + ret = rwnx_send_dbg_mem_block_write_req( + rwnx_hw, ldpc_cfg_addr + i, 512, + ldpc_cfg_ram + i / 4); + if (ret) { + AICWFDBG( + LOGERROR, + "ldpc upload fail: %x, err:%d\r\n", + ldpc_cfg_addr + i, ret); + break; + } + } + } - if (!ret && (i < ldpc_cfg_size)) {// < 0.5KB data - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ldpc_cfg_addr + i, ldpc_cfg_size - i, ldpc_cfg_ram + i / 4); - if (ret) { - AICWFDBG(LOGERROR, "ldpc upload fail: %x, err:%d\r\n", ldpc_cfg_addr + i, ret); - } - } + if (!ret && (i < ldpc_cfg_size)) { // < 0.5KB data + ret = rwnx_send_dbg_mem_block_write_req( + rwnx_hw, ldpc_cfg_addr + i, ldpc_cfg_size - i, + ldpc_cfg_ram + i / 4); + if (ret) { + AICWFDBG(LOGERROR, + "ldpc upload fail: %x, err:%d\r\n", + ldpc_cfg_addr + i, ret); + } + } - if (agc_cfg_size > 512) {// > 0.5KB data - for (i = 0; i < (agc_cfg_size - 512); i += 512) {//each time write 0.5KB - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, agc_cfg_addr + i, 512, agc_cfg_ram + i / 4); - if (ret) { - AICWFDBG(LOGERROR, "agc upload fail: %x, err:%d\r\n", agc_cfg_addr + i, ret); - break; - } - } - } + if (agc_cfg_size > 512) { // > 0.5KB data + for (i = 0; i < (agc_cfg_size - 512); + i += 512) { //each time write 0.5KB + ret = rwnx_send_dbg_mem_block_write_req( + rwnx_hw, agc_cfg_addr + i, 512, + agc_cfg_ram + i / 4); + if (ret) { + AICWFDBG( + LOGERROR, + "agc upload fail: %x, err:%d\r\n", + agc_cfg_addr + i, ret); + break; + } + } + } - if (!ret && (i < agc_cfg_size)) {// < 0.5KB data - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, agc_cfg_addr + i, agc_cfg_size - i, agc_cfg_ram + i / 4); - if (ret) { - AICWFDBG(LOGERROR, "agc upload fail: %x, err:%d\r\n", agc_cfg_addr + i, ret); - } - } + if (!ret && (i < agc_cfg_size)) { // < 0.5KB data + ret = rwnx_send_dbg_mem_block_write_req( + rwnx_hw, agc_cfg_addr + i, agc_cfg_size - i, + agc_cfg_ram + i / 4); + if (ret) { + AICWFDBG(LOGERROR, + "agc upload fail: %x, err:%d\r\n", + agc_cfg_addr + i, ret); + } + } - #if !defined(CONFIG_FPGA_VERIFICATION) - if ((IS_CHIP_ID_H())) { - #if defined(CONFIG_EXT_FEM_8800DCDW) - txgain_cfg_size = sizeof(txgain_map_femkct_h); - txgain_cfg_array = (u32 *)txgain_map_femkct_h; - #else - txgain_cfg_size = sizeof(txgain_map_h); - txgain_cfg_array = (u32 *)txgain_map_h; - #endif - } else { - #if defined(CONFIG_EXT_FEM_8800DCDW) - txgain_cfg_size = sizeof(txgain_map_femkct); - txgain_cfg_array = (u32 *)txgain_map_femkct; - #else - txgain_cfg_size = sizeof(txgain_map); - txgain_cfg_array = (u32 *)txgain_map; - #endif - } - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, txgain_cfg_addr, txgain_cfg_size, txgain_cfg_array); - if (ret) { - AICWFDBG(LOGERROR, "txgain upload fail: %x, err:%d\r\n", txgain_cfg_addr, ret); - } +#if !defined(CONFIG_FPGA_VERIFICATION) + if ((IS_CHIP_ID_H())) { +#if defined(CONFIG_EXT_FEM_8800DCDW) + txgain_cfg_size = sizeof(txgain_map_femkct_h); + txgain_cfg_array = (u32 *)txgain_map_femkct_h; +#else + txgain_cfg_size = sizeof(txgain_map_h); + txgain_cfg_array = (u32 *)txgain_map_h; +#endif + } else { +#if defined(CONFIG_EXT_FEM_8800DCDW) + txgain_cfg_size = sizeof(txgain_map_femkct); + txgain_cfg_array = (u32 *)txgain_map_femkct; +#else + txgain_cfg_size = sizeof(txgain_map); + txgain_cfg_array = (u32 *)txgain_map; +#endif + } + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, + txgain_cfg_addr, + txgain_cfg_size, + txgain_cfg_array); + if (ret) { + AICWFDBG(LOGERROR, "txgain upload fail: %x, err:%d\r\n", + txgain_cfg_addr, ret); + } if (chip_sub_id == 0) { - for (cnt = 0; cnt < jump_tbl_size/4; cnt+=1) { - AICWFDBG(LOGDEBUG, "%x = %x\n", jump_tbl_base[cnt][0]*4+jump_tbl_addr, jump_tbl_base[cnt][1]); - if ((ret = rwnx_send_dbg_mem_write_req(rwnx_hw, jump_tbl_base[cnt][0]*4+jump_tbl_addr, jump_tbl_base[cnt][1]))) { - AICWFDBG(LOGERROR, "%x write fail\n", jump_tbl_addr+8*cnt); + for (cnt = 0; cnt < jump_tbl_size / 4; cnt += 1) { + AICWFDBG(LOGDEBUG, "%x = %x\n", + jump_tbl_base[cnt][0] * 4 + + jump_tbl_addr, + jump_tbl_base[cnt][1]); + if ((ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, + jump_tbl_base[cnt][0] * 4 + + jump_tbl_addr, + jump_tbl_base[cnt][1]))) { + AICWFDBG(LOGERROR, "%x write fail\n", + jump_tbl_addr + 8 * cnt); } } for (cnt = 0; cnt < patch_tbl_func_num; cnt++) { - if ((ret = rwnx_send_dbg_mem_write_req(rwnx_hw, patch_tbl_func_base[cnt][0], patch_tbl_func_base[cnt][1]))) { - AICWFDBG(LOGERROR, "patch_tbl_func %x write fail\n", patch_tbl_func_base[cnt][0]); + if ((ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, + patch_tbl_func_base[cnt][0], + patch_tbl_func_base[cnt][1]))) { + AICWFDBG( + LOGERROR, + "patch_tbl_func %x write fail\n", + patch_tbl_func_base[cnt][0]); } } } else if (chip_sub_id == 1) { - ret = aicwf_patch_table_load(rwnx_hw, RWNX_MAC_PATCH_TABLE_8800DC_U02); - if(ret){ - printk("patch_tbl upload fail: err:%d\r\n", ret); + ret = aicwf_patch_table_load( + rwnx_hw, RWNX_MAC_PATCH_TABLE_8800DC_U02); + if (ret) { + printk("patch_tbl upload fail: err:%d\r\n", + ret); } } else if (chip_sub_id == 2) { - ret = aicwf_patch_table_load(rwnx_hw, RWNX_MAC_PATCH_TABLE_8800DC_H_U02); - if(ret){ - printk("patch_tbl upload fail: err:%d\r\n", ret); + ret = aicwf_patch_table_load( + rwnx_hw, RWNX_MAC_PATCH_TABLE_8800DC_H_U02); + if (ret) { + printk("patch_tbl upload fail: err:%d\r\n", + ret); } } else { printk("unsupported id: %d\n", chip_sub_id); } - #endif - } else { - if (chip_sub_id == 0) { - u32 patch_tbl_rf_func_num = sizeof(patch_tbl_rf_func)/sizeof(u32)/2; - for (cnt = 0; cnt < patch_tbl_rf_func_num; cnt++) { - if ((ret = rwnx_send_dbg_mem_write_req(rwnx_hw, patch_tbl_rf_func[cnt][0], patch_tbl_rf_func[cnt][1]))) { - AICWFDBG(LOGERROR, "patch_tbl_rf_func %x write fail\n", patch_tbl_rf_func[cnt][0]); - } - } - } - } +#endif + } else { + if (chip_sub_id == 0) { + u32 patch_tbl_rf_func_num = + sizeof(patch_tbl_rf_func) / sizeof(u32) / 2; + for (cnt = 0; cnt < patch_tbl_rf_func_num; cnt++) { + if ((ret = rwnx_send_dbg_mem_write_req( + rwnx_hw, patch_tbl_rf_func[cnt][0], + patch_tbl_rf_func[cnt][1]))) { + AICWFDBG( + LOGERROR, + "patch_tbl_rf_func %x write fail\n", + patch_tbl_rf_func[cnt][0]); + } + } + } + } } int aicwf_misc_ram_init_8800dc(struct aic_sdio_dev *sdiodev) { - int ret = 0; - uint32_t cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - uint32_t misc_ram_addr; - uint32_t misc_ram_size = 12; - int i; + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t misc_ram_size = 12; + int i; - if (testmode == FW_RFTEST_MODE) { - cfg_base = RAM_LMAC_FW_ADDR + 0x0164; - } - // init misc ram - ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); - return ret; - } - misc_ram_addr = cfm.memdata; - AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); - for (i = 0; i < (misc_ram_size / 4); i++) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, misc_ram_addr + i * 4, 0); - if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] wr fail: %d\n", misc_ram_addr + i * 4, ret); - return ret; - } - } - return ret; + if (testmode == FW_RFTEST_MODE) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + // init misc ram + ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); + for (i = 0; i < (misc_ram_size / 4); i++) { + ret = rwnx_send_dbg_mem_write_req(sdiodev, + misc_ram_addr + i * 4, 0); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] wr fail: %d\n", + misc_ram_addr + i * 4, ret); + return ret; + } + } + return ret; } #ifdef CONFIG_DPD -int aicwf_dpd_calib_8800dc(struct aic_sdio_dev *sdiodev, rf_misc_ram_lite_t *dpd_res) +int aicwf_dpd_calib_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *dpd_res) { - int ret = 0; - uint32_t fw_addr, boot_type; - int valid_flag; + int ret = 0; + uint32_t fw_addr, boot_type; + int valid_flag; printk("%s\n", __func__); - ret = aicwf_misc_ram_valid_check_8800dc(sdiodev, &valid_flag); - if (ret) { - AICWFDBG(LOGINFO, "misc ram check fail: %d\n", ret); - return ret; - } - if (valid_flag) { - AICWFDBG(LOGINFO, "misc ram valid, skip calib process\n"); - return ret; - } - ret = aicwf_plat_calib_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); - return ret; - } - /* fw start */ - fw_addr = 0x00130009; - boot_type = HOST_START_APP_FNCALL; - AICWFDBG(LOGINFO, "Start app: %08x, %d\n", fw_addr, boot_type); - ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, boot_type, NULL); - if (ret) { - AICWFDBG(LOGINFO, "start app fail: %d\n", ret); - return ret; - } - { // read dpd res - const uint32_t cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - uint32_t misc_ram_addr; - uint32_t ram_base_addr, ram_word_cnt; - int i; - ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); - return ret; - } - misc_ram_addr = cfm.memdata; - // bit_mask - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); - ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved)) / 4; - for (i = 0; i < ram_word_cnt; i++) { - ret = rwnx_send_dbg_mem_read_req(sdiodev, ram_base_addr + i * 4, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); - return ret; - } - dpd_res->bit_mask[i] = cfm.memdata; - } - // dpd_high - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, dpd_high); - ram_word_cnt = MEMBER_SIZE(rf_misc_ram_t, dpd_high) / 4; - for (i = 0; i < ram_word_cnt; i++) { - ret = rwnx_send_dbg_mem_read_req(sdiodev, ram_base_addr + i * 4, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); - return ret; - } - dpd_res->dpd_high[i] = cfm.memdata; - } - // loft_res - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); - ram_word_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res) / 4; - for (i = 0; i < ram_word_cnt; i++) { - ret = rwnx_send_dbg_mem_read_req(sdiodev, ram_base_addr + i * 4, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); - return ret; - } - dpd_res->loft_res[i] = cfm.memdata; - } - } - return ret; + ret = aicwf_misc_ram_valid_check_8800dc(sdiodev, &valid_flag); + if (ret) { + AICWFDBG(LOGINFO, "misc ram check fail: %d\n", ret); + return ret; + } + if (valid_flag) { + AICWFDBG(LOGINFO, "misc ram valid, skip calib process\n"); + return ret; + } + ret = aicwf_plat_calib_load_8800dc(sdiodev); + if (ret) { + AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); + return ret; + } + /* fw start */ + fw_addr = 0x00130009; + boot_type = HOST_START_APP_FNCALL; + AICWFDBG(LOGINFO, "Start app: %08x, %d\n", fw_addr, boot_type); + ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, boot_type, NULL); + if (ret) { + AICWFDBG(LOGINFO, "start app fail: %d\n", ret); + return ret; + } + { // read dpd res + const uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_word_cnt; + int i; + ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, + &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + // bit_mask + ram_base_addr = + misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved)) / + 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req( + sdiodev, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, + "bit_mask[0x%x] rd fail: %d\n", + ram_base_addr + i * 4, ret); + return ret; + } + dpd_res->bit_mask[i] = cfm.memdata; + } + // dpd_high + ram_base_addr = + misc_ram_addr + offsetof(rf_misc_ram_t, dpd_high); + ram_word_cnt = MEMBER_SIZE(rf_misc_ram_t, dpd_high) / 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req( + sdiodev, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, + "bit_mask[0x%x] rd fail: %d\n", + ram_base_addr + i * 4, ret); + return ret; + } + dpd_res->dpd_high[i] = cfm.memdata; + } + // loft_res + ram_base_addr = + misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_word_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res) / 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req( + sdiodev, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, + "bit_mask[0x%x] rd fail: %d\n", + ram_base_addr + i * 4, ret); + return ret; + } + dpd_res->loft_res[i] = cfm.memdata; + } + } + return ret; } -int aicwf_dpd_result_apply_8800dc(struct aic_sdio_dev *sdiodev, rf_misc_ram_lite_t *dpd_res) +int aicwf_dpd_result_apply_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *dpd_res) { - int ret = 0; - uint32_t cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - uint32_t misc_ram_addr; - uint32_t ram_base_addr, ram_byte_cnt; - AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", dpd_res->bit_mask[1]); - if (dpd_res->bit_mask[1] == 0) { - AICWFDBG(LOGERROR, "void dpd_res, bypass it.\n"); - return 0; - } - if (testmode == FW_RFTEST_MODE) { - cfg_base = RAM_LMAC_FW_ADDR + 0x0164; - } - if ((ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, &cfm))) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); - return ret; - } - misc_ram_addr = cfm.memdata; - AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); - /* Copy dpd_res on the Embedded side */ - // bit_mask - AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", dpd_res->bit_mask[0]); - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); - ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved); - ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, ram_byte_cnt, (u32 *)&dpd_res->bit_mask[0]); - if (ret) { - AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", ram_base_addr, ret); - return ret; - } - // dpd_high - AICWFDBG(LOGINFO, "dpd_high[0]=%x\n", dpd_res->dpd_high[0]); - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, dpd_high); - ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, dpd_high); - ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, ram_byte_cnt, (u32 *)&dpd_res->dpd_high[0]); - if (ret) { - AICWFDBG(LOGERROR, "dpd_high wr fail: %x, ret:%d\r\n", ram_base_addr, ret); - return ret; - } - // loft_res - AICWFDBG(LOGINFO, "loft_res[0]=%x\n", dpd_res->loft_res[0]); - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); - ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); - ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, ram_byte_cnt, (u32 *)&dpd_res->loft_res[0]); - if (ret) { - AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", ram_base_addr, ret); - return ret; - } - return ret; + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_byte_cnt; + AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", dpd_res->bit_mask[1]); + if (dpd_res->bit_mask[1] == 0) { + AICWFDBG(LOGERROR, "void dpd_res, bypass it.\n"); + return 0; + } + if (testmode == FW_RFTEST_MODE) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + if ((ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, + &cfm))) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); + /* Copy dpd_res on the Embedded side */ + // bit_mask + AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", dpd_res->bit_mask[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved); + ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, + ram_byte_cnt, + (u32 *)&dpd_res->bit_mask[0]); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + // dpd_high + AICWFDBG(LOGINFO, "dpd_high[0]=%x\n", dpd_res->dpd_high[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, dpd_high); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, dpd_high); + ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, + ram_byte_cnt, + (u32 *)&dpd_res->dpd_high[0]); + if (ret) { + AICWFDBG(LOGERROR, "dpd_high wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + // loft_res + AICWFDBG(LOGINFO, "loft_res[0]=%x\n", dpd_res->loft_res[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); + ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, + ram_byte_cnt, + (u32 *)&dpd_res->loft_res[0]); + if (ret) { + AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + return ret; } #ifndef CONFIG_FORCE_DPD_CALIB -int aicwf_dpd_result_load_8800dc(struct aic_sdio_dev *sdiodev, rf_misc_ram_lite_t *dpd_res) +int aicwf_dpd_result_load_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *dpd_res) { - int ret = 0; - int size; - u32 *dst=NULL; - char *filename = FW_DPDRESULT_NAME_8800DC; - struct device *dev = sdiodev->dev; - AICWFDBG(LOGINFO, "%s: dpd_res file path:%s \r\n", __func__, filename); - /* load file */ - size = rwnx_load_firmware(&dst, filename, dev); - if (size <= 0) { - AICWFDBG(LOGERROR, "wrong size of dpd_res file\n"); - if (dst) { - #ifndef CONFIG_FIRMWARE_ARRAY - vfree(dst); - #endif - dst = NULL; - } - return -1; - } - AICWFDBG(LOGINFO, "### Load file done: %s, size=%d, dst[0]=%x\n", filename, size, dst[0]); - memcpy((u8 *)dpd_res, (u8 *)dst, sizeof(rf_misc_ram_lite_t)); - if (dst) { - #ifndef CONFIG_FIRMWARE_ARRAY - vfree(dst); - #endif - dst = NULL; - } - return ret; + int ret = 0; + int size; + u32 *dst = NULL; + char *filename = FW_DPDRESULT_NAME_8800DC; + struct device *dev = sdiodev->dev; + AICWFDBG(LOGINFO, "%s: dpd_res file path:%s \r\n", __func__, filename); + /* load file */ + size = rwnx_load_firmware(&dst, filename, dev); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of dpd_res file\n"); + if (dst) { +#ifndef CONFIG_FIRMWARE_ARRAY + vfree(dst); +#endif + dst = NULL; + } + return -1; + } + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d, dst[0]=%x\n", + filename, size, dst[0]); + memcpy((u8 *)dpd_res, (u8 *)dst, sizeof(rf_misc_ram_lite_t)); + if (dst) { +#ifndef CONFIG_FIRMWARE_ARRAY + vfree(dst); +#endif + dst = NULL; + } + return ret; } int aicwf_dpd_result_write_8800dc(void *buf, int buf_len) { - int sum = 0, len = 0; - char *path = NULL; - struct file *fp = NULL; - loff_t pos = 0; - mm_segment_t fs; + int sum = 0, len = 0; + char *path = NULL; + struct file *fp = NULL; + loff_t pos = 0; + mm_segment_t fs; - AICWFDBG(LOGINFO, "%s\n", __func__); + AICWFDBG(LOGINFO, "%s\n", __func__); - path = __getname(); - if (!path) { - AICWFDBG(LOGINFO, "get path fail\n"); - return -1; - } + path = __getname(); + if (!path) { + AICWFDBG(LOGINFO, "get path fail\n"); + return -1; + } - len = snprintf(path, FW_PATH_MAX_LEN, "%s/%s", AICBSP_FW_PATH, FW_DPDRESULT_NAME_8800DC); - printk("%s\n", path); + len = snprintf(path, FW_PATH_MAX_LEN, "%s/%s", AICBSP_FW_PATH, + FW_DPDRESULT_NAME_8800DC); + printk("%s\n", path); - fp = filp_open(path, O_RDWR | O_CREAT, 0644); - if (IS_ERR(fp)) { - AICWFDBG(LOGINFO, "fp open fial\n"); + fp = filp_open(path, O_RDWR | O_CREAT, 0644); + if (IS_ERR(fp)) { + AICWFDBG(LOGINFO, "fp open fial\n"); __putname(path); - fp = NULL; - return -1; - } + fp = NULL; + return -1; + } - fs = get_fs(); - set_fs(KERNEL_DS); + fs = get_fs(); + set_fs(KERNEL_DS); #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) - sum = kernel_write(fp, buf, buf_len, &pos); + sum = kernel_write(fp, buf, buf_len, &pos); #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) - sum = kernel_write(fp, (char *)buf, buf_len, pos); + sum = kernel_write(fp, (char *)buf, buf_len, pos); #else - sum = vfs_write(fp, (char *)buf, buf_len, &pos); + sum = vfs_write(fp, (char *)buf, buf_len, &pos); #endif - set_fs(fs); - __putname(path); - filp_close(fp, NULL); + set_fs(fs); + __putname(path); + filp_close(fp, NULL); fp = NULL; - return 0; + return 0; } #endif /* !CONFIG_FORCE_DPD_CALIB */ #endif #ifdef CONFIG_LOFT_CALIB -int aicwf_loft_calib_8800dc(struct aic_sdio_dev *sdiodev) +int aicwf_loft_calib_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *loft_res) { - int ret = 0; - uint32_t fw_addr, boot_type; - ret = aicwf_plat_calib_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); - return ret; - } - /* fw start */ - fw_addr = 0x00130009; - boot_type = HOST_START_APP_FNCALL; - AICWFDBG(LOGINFO, "Start app: %08x, %d\n", fw_addr, boot_type); - ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, boot_type, NULL); - if (ret) { - AICWFDBG(LOGINFO, "start app fail: %d\n", ret); - return ret; - } - return ret; + int ret = 0; + uint32_t fw_addr, boot_type; + int valid_flag; + + printk("%s\n", __func__); + + ret = aicwf_misc_ram_valid_check_8800dc(sdiodev, &valid_flag); + if (ret) { + AICWFDBG(LOGINFO, "misc ram check fail: %d\n", ret); + return ret; + } + if (valid_flag) { + AICWFDBG(LOGINFO, "misc ram valid, skip calib process\n"); + return ret; + } + ret = aicwf_plat_calib_load_8800dc(sdiodev); + if (ret) { + AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); + return ret; + } + /* fw start */ + fw_addr = 0x00130009; + boot_type = HOST_START_APP_FNCALL; + AICWFDBG(LOGINFO, "Start app: %08x, %d\n", fw_addr, boot_type); + ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, boot_type, NULL); + if (ret) { + AICWFDBG(LOGINFO, "start app fail: %d\n", ret); + return ret; + } + { // read loft res + const uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_word_cnt; + int i; + ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, + &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + // bit_mask + ram_base_addr = + misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved)) / + 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req( + sdiodev, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, + "bit_mask[0x%x] rd fail: %d\n", + ram_base_addr + i * 4, ret); + return ret; + } + loft_res->bit_mask[i] = cfm.memdata; + } + // loft_res + ram_base_addr = + misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_word_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res) / 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req( + sdiodev, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, + "loft_res[0x%x] rd fail: %d\n", + ram_base_addr + i * 4, ret); + return ret; + } + loft_res->loft_res[i] = cfm.memdata; + } + } + return ret; +} + +int aicwf_loft_result_apply_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *loft_res) +{ + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_byte_cnt; + AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", loft_res->bit_mask[1]); + if (loft_res->bit_mask[1] == 0) { + AICWFDBG(LOGERROR, "void loft_res, bypass it.\n"); + return 0; + } + if (testmode == FW_RFTEST_MODE) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + if ((ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, + &cfm))) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); + /* Copy loft_res on the Embedded side */ + // bit_mask + AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", loft_res->bit_mask[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved); + ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, + ram_byte_cnt, + (u32 *)&loft_res->bit_mask[0]); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + // loft_res + AICWFDBG(LOGINFO, "loft_res[0]=%x\n", loft_res->loft_res[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); + ret = rwnx_send_dbg_mem_block_write_req(sdiodev, ram_base_addr, + ram_byte_cnt, + (u32 *)&loft_res->loft_res[0]); + if (ret) { + AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + return ret; } #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.h index 48bb9531c..95b10fc6c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic8800dc_compat.h @@ -18,23 +18,26 @@ extern u8 chip_sub_id; extern u8 chip_mcu_id; #define FW_PATH_MAX_LEN 200 -void aicwf_patch_config_8800dc(struct aic_sdio_dev *rwnx_hw); +void aicwf_patch_config_8800dc(struct aic_sdio_dev *rwnx_hw); void system_config_8800dc(struct aic_sdio_dev *rwnx_hw); int aicwf_misc_ram_init_8800dc(struct aic_sdio_dev *sdiodev); #ifdef CONFIG_DPD -int aicwf_dpd_calib_8800dc(struct aic_sdio_dev *sdiodev, rf_misc_ram_lite_t *dpd_res); -int aicwf_dpd_result_apply_8800dc(struct aic_sdio_dev *sdiodev, rf_misc_ram_lite_t *dpd_res); +int aicwf_dpd_calib_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *dpd_res); +int aicwf_dpd_result_apply_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *dpd_res); #ifndef CONFIG_FORCE_DPD_CALIB -int aicwf_dpd_result_load_8800dc(struct aic_sdio_dev *sdiodev, rf_misc_ram_lite_t *dpd_res); +int aicwf_dpd_result_load_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *dpd_res); int aicwf_dpd_result_write_8800dc(void *buf, int buf_len); -#endif/* !CONFIG_FORCE_DPD_CALIB */ +#endif /* !CONFIG_FORCE_DPD_CALIB */ #endif #ifdef CONFIG_LOFT_CALIB -int aicwf_loft_calib_8800dc(struct aic_sdio_dev *sdiodev); +int aicwf_loft_calib_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *loft_res); +int aicwf_loft_result_apply_8800dc(struct aic_sdio_dev *sdiodev, + rf_misc_ram_lite_t *loft_res); #endif #endif - - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.c index 9c665f246..f98850347 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.c @@ -36,8 +36,9 @@ extern struct aic_sdio_dev *aicbsp_sdiodev; static void cmd_dump(const struct rwnx_cmd *cmd) { - printk(KERN_CRIT "tkn[%d] flags:%04x result:%3d cmd:%4d - reqcfm(%4d)\n", - cmd->tkn, cmd->flags, cmd->result, cmd->id, cmd->reqid); + printk(KERN_CRIT + "tkn[%d] flags:%04x result:%3d cmd:%4d - reqcfm(%4d)\n", + cmd->tkn, cmd->flags, cmd->result, cmd->id, cmd->reqid); } static void cmd_complete(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) @@ -67,7 +68,7 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) spin_lock_bh(&cmd_mgr->lock); if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) { - printk(KERN_CRIT"cmd queue crashed\n"); + printk(KERN_CRIT "cmd queue crashed\n"); cmd->result = -EPIPE; spin_unlock_bh(&cmd_mgr->lock); return -EPIPE; @@ -77,14 +78,15 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) struct rwnx_cmd *last; if (cmd_mgr->queue_sz == cmd_mgr->max_queue_sz) { - printk(KERN_CRIT"Too many cmds (%d) already queued\n", - cmd_mgr->max_queue_sz); + printk(KERN_CRIT "Too many cmds (%d) already queued\n", + cmd_mgr->max_queue_sz); cmd->result = -ENOMEM; spin_unlock_bh(&cmd_mgr->lock); return -ENOMEM; } last = list_entry(cmd_mgr->cmds.prev, struct rwnx_cmd, list); - if (last->flags & (RWNX_CMD_FLAG_WAIT_ACK | RWNX_CMD_FLAG_WAIT_PUSH)) { + if (last->flags & + (RWNX_CMD_FLAG_WAIT_ACK | RWNX_CMD_FLAG_WAIT_PUSH)) { cmd->flags |= RWNX_CMD_FLAG_WAIT_PUSH; defer_push = true; } @@ -93,7 +95,7 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) if (cmd->flags & RWNX_CMD_FLAG_REQ_CFM) cmd->flags |= RWNX_CMD_FLAG_WAIT_CFM; - cmd->tkn = cmd_mgr->next_tkn++; + cmd->tkn = cmd_mgr->next_tkn++; cmd->result = -EINTR; if (!(cmd->flags & RWNX_CMD_FLAG_NONBLOCK)) @@ -105,7 +107,9 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) if (!defer_push) { //printk("queue:id=%x, param_len=%u\n", cmd->a2e_msg->id, cmd->a2e_msg->param_len); - rwnx_set_cmd_tx((void *)(cmd_mgr->sdiodev), cmd->a2e_msg, sizeof(struct lmac_msg) + cmd->a2e_msg->param_len); + rwnx_set_cmd_tx((void *)(cmd_mgr->sdiodev), cmd->a2e_msg, + sizeof(struct lmac_msg) + + cmd->a2e_msg->param_len); //rwnx_ipc_msg_push(rwnx_hw, cmd, RWNX_CMD_A2EMSG_LEN(cmd->a2e_msg)); kfree(cmd->a2e_msg); } else { @@ -115,9 +119,11 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) } if (!(cmd->flags & RWNX_CMD_FLAG_NONBLOCK)) { - unsigned long tout = msecs_to_jiffies(RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); - if (!wait_for_completion_killable_timeout(&cmd->complete, tout)) { - printk(KERN_CRIT"cmd timed-out\n"); + unsigned long tout = msecs_to_jiffies( + RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); + if (!wait_for_completion_killable_timeout(&cmd->complete, + tout)) { + printk(KERN_CRIT "cmd timed-out\n"); cmd_dump(cmd); spin_lock_bh(&cmd_mgr->lock); cmd_mgr->state = RWNX_CMD_MGR_STATE_CRASHED; @@ -137,8 +143,9 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) return err; } -static int cmd_mgr_run_callback(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd, - struct rwnx_cmd_e2amsg *msg, msg_cb_fct cb) +static int cmd_mgr_run_callback(struct rwnx_cmd_mgr *cmd_mgr, + struct rwnx_cmd *cmd, + struct rwnx_cmd_e2amsg *msg, msg_cb_fct cb) { int res; @@ -152,30 +159,33 @@ static int cmd_mgr_run_callback(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *c return res; } -static int cmd_mgr_msgind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd_e2amsg *msg, - msg_cb_fct cb) +static int cmd_mgr_msgind(struct rwnx_cmd_mgr *cmd_mgr, + struct rwnx_cmd_e2amsg *msg, msg_cb_fct cb) { struct rwnx_cmd *cmd; bool found = false; //printk("cmd->id=%x\n", msg->id); spin_lock(&cmd_mgr->lock); - list_for_each_entry(cmd, &cmd_mgr->cmds, list) { + list_for_each_entry (cmd, &cmd_mgr->cmds, list) { if (cmd->reqid == msg->id && - (cmd->flags & RWNX_CMD_FLAG_WAIT_CFM)) { - + (cmd->flags & RWNX_CMD_FLAG_WAIT_CFM)) { if (!cmd_mgr_run_callback(cmd_mgr, cmd, msg, cb)) { found = true; cmd->flags &= ~RWNX_CMD_FLAG_WAIT_CFM; - if (WARN((msg->param_len > RWNX_CMD_E2AMSG_LEN_MAX), - "Unexpect E2A msg len %d > %d\n", msg->param_len, - RWNX_CMD_E2AMSG_LEN_MAX)) { - msg->param_len = RWNX_CMD_E2AMSG_LEN_MAX; + if (WARN((msg->param_len > + RWNX_CMD_E2AMSG_LEN_MAX), + "Unexpect E2A msg len %d > %d\n", + msg->param_len, + RWNX_CMD_E2AMSG_LEN_MAX)) { + msg->param_len = + RWNX_CMD_E2AMSG_LEN_MAX; } if (cmd->e2a_msg && msg->param_len) - memcpy(cmd->e2a_msg, &msg->param, msg->param_len); + memcpy(cmd->e2a_msg, &msg->param, + msg->param_len); if (RWNX_CMD_WAIT_COMPLETE(cmd->flags)) cmd_complete(cmd_mgr, cmd); @@ -197,7 +207,7 @@ static void cmd_mgr_print(struct rwnx_cmd_mgr *cmd_mgr) struct rwnx_cmd *cur; spin_lock_bh(&cmd_mgr->lock); - list_for_each_entry(cur, &cmd_mgr->cmds, list) { + list_for_each_entry (cur, &cmd_mgr->cmds, list) { cmd_dump(cur); } spin_unlock_bh(&cmd_mgr->lock); @@ -208,7 +218,7 @@ static void cmd_mgr_drain(struct rwnx_cmd_mgr *cmd_mgr) struct rwnx_cmd *cur, *nxt; spin_lock_bh(&cmd_mgr->lock); - list_for_each_entry_safe(cur, nxt, &cmd_mgr->cmds, list) { + list_for_each_entry_safe (cur, nxt, &cmd_mgr->cmds, list) { list_del(&cur->list); cmd_mgr->queue_sz--; if (!(cur->flags & RWNX_CMD_FLAG_NONBLOCK)) @@ -224,10 +234,10 @@ void rwnx_cmd_mgr_init(struct rwnx_cmd_mgr *cmd_mgr) cmd_mgr->state = RWNX_CMD_MGR_STATE_INITED; spin_lock_init(&cmd_mgr->lock); spin_lock_init(&cmd_mgr->cb_lock); - cmd_mgr->queue = &cmd_mgr_queue; - cmd_mgr->print = &cmd_mgr_print; - cmd_mgr->drain = &cmd_mgr_drain; - cmd_mgr->llind = NULL;//&cmd_mgr_llind; + cmd_mgr->queue = &cmd_mgr_queue; + cmd_mgr->print = &cmd_mgr_print; + cmd_mgr->drain = &cmd_mgr_drain; + cmd_mgr->llind = NULL; //&cmd_mgr_llind; cmd_mgr->msgind = &cmd_mgr_msgind; #if 0 @@ -242,9 +252,12 @@ void rwnx_cmd_mgr_init(struct rwnx_cmd_mgr *cmd_mgr) void rwnx_cmd_mgr_deinit(struct rwnx_cmd_mgr *cmd_mgr) { - cmd_mgr->print(cmd_mgr); - cmd_mgr->drain(cmd_mgr); - cmd_mgr->print(cmd_mgr); + if (cmd_mgr->print) + cmd_mgr->print(cmd_mgr); + if (cmd_mgr->drain) + cmd_mgr->drain(cmd_mgr); + if (cmd_mgr->print) + cmd_mgr->print(cmd_mgr); memset(cmd_mgr, 0, sizeof(*cmd_mgr)); } @@ -256,14 +269,16 @@ void rwnx_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) u16 index = 0; memset(buffer, 0, CMD_BUF_MAX); - buffer[0] = (len+4) & 0x00ff; - buffer[1] = ((len+4) >> 8) &0x0f; + buffer[0] = (len + 4) & 0x00ff; + buffer[1] = ((len + 4) >> 8) & 0x0f; buffer[2] = 0x11; - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) - buffer[3] = 0x0; - else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) - buffer[3] = crc8_ponl_107(&buffer[0], 3); // crc8 + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) + buffer[3] = 0x0; + else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) + buffer[3] = crc8_ponl_107(&buffer[0], 3); // crc8 index += 4; //there is a dummy word index += 4; @@ -283,9 +298,9 @@ void rwnx_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) } static inline void *rwnx_msg_zalloc(lmac_msg_id_t const id, - lmac_task_id_t const dest_id, - lmac_task_id_t const src_id, - uint16_t const param_len) + lmac_task_id_t const dest_id, + lmac_task_id_t const src_id, + uint16_t const param_len) { struct lmac_msg *msg; gfp_t flags; @@ -296,7 +311,7 @@ static inline void *rwnx_msg_zalloc(lmac_msg_id_t const id, flags = GFP_KERNEL; msg = (struct lmac_msg *)kzalloc(sizeof(struct lmac_msg) + param_len, - flags); + flags); if (msg == NULL) { printk(KERN_CRIT "%s: msg allocation failed\n", __func__); return NULL; @@ -314,9 +329,8 @@ static void rwnx_msg_free(struct lmac_msg *msg, const void *msg_params) kfree(msg); } - static int rwnx_send_msg(struct aic_sdio_dev *sdiodev, const void *msg_params, - int reqcfm, lmac_msg_id_t reqid, void *cfm) + int reqcfm, lmac_msg_id_t reqid, void *cfm) { struct lmac_msg *msg; struct rwnx_cmd *cmd; @@ -331,10 +345,11 @@ static int rwnx_send_msg(struct aic_sdio_dev *sdiodev, const void *msg_params, } nonblock = 0; - cmd = kzalloc(sizeof(struct rwnx_cmd), nonblock ? GFP_ATOMIC : GFP_KERNEL); - cmd->result = -EINTR; - cmd->id = msg->id; - cmd->reqid = reqid; + cmd = kzalloc(sizeof(struct rwnx_cmd), + nonblock ? GFP_ATOMIC : GFP_KERNEL); + cmd->result = -EINTR; + cmd->id = msg->id; + cmd->reqid = reqid; cmd->a2e_msg = msg; cmd->e2a_msg = cfm; if (nonblock) @@ -343,10 +358,13 @@ static int rwnx_send_msg(struct aic_sdio_dev *sdiodev, const void *msg_params, cmd->flags |= RWNX_CMD_FLAG_REQ_CFM; if (reqcfm) { - cmd->flags &= ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more + cmd->flags &= + ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more ret = sdiodev->cmd_mgr.queue(&sdiodev->cmd_mgr, cmd); } else { - rwnx_set_cmd_tx((void *)(sdiodev), cmd->a2e_msg, sizeof(struct lmac_msg) + cmd->a2e_msg->param_len); + rwnx_set_cmd_tx((void *)(sdiodev), cmd->a2e_msg, + sizeof(struct lmac_msg) + + cmd->a2e_msg->param_len); } if (!reqcfm) @@ -355,15 +373,15 @@ static int rwnx_send_msg(struct aic_sdio_dev *sdiodev, const void *msg_params, return ret; } - -int rwnx_send_dbg_mem_block_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, - u32 mem_size, u32 *mem_data) +int rwnx_send_dbg_mem_block_write_req(struct aic_sdio_dev *sdiodev, + u32 mem_addr, u32 mem_size, u32 *mem_data) { struct dbg_mem_block_write_req *mem_blk_write_req; /* Build the DBG_MEM_BLOCK_WRITE_REQ message */ - mem_blk_write_req = rwnx_msg_zalloc(DBG_MEM_BLOCK_WRITE_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_block_write_req)); + mem_blk_write_req = + rwnx_msg_zalloc(DBG_MEM_BLOCK_WRITE_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_mem_block_write_req)); if (!mem_blk_write_req) return -ENOMEM; @@ -373,17 +391,18 @@ int rwnx_send_dbg_mem_block_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr memcpy(mem_blk_write_req->memdata, mem_data, mem_size); /* Send the DBG_MEM_BLOCK_WRITE_REQ message to LMAC FW */ - return rwnx_send_msg(sdiodev, mem_blk_write_req, 1, DBG_MEM_BLOCK_WRITE_CFM, NULL); + return rwnx_send_msg(sdiodev, mem_blk_write_req, 1, + DBG_MEM_BLOCK_WRITE_CFM, NULL); } int rwnx_send_dbg_mem_read_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, - struct dbg_mem_read_cfm *cfm) + struct dbg_mem_read_cfm *cfm) { struct dbg_mem_read_req *mem_read_req; /* Build the DBG_MEM_READ_REQ message */ mem_read_req = rwnx_msg_zalloc(DBG_MEM_READ_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_read_req)); + sizeof(struct dbg_mem_read_req)); if (!mem_read_req) return -ENOMEM; @@ -394,14 +413,15 @@ int rwnx_send_dbg_mem_read_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, return rwnx_send_msg(sdiodev, mem_read_req, 1, DBG_MEM_READ_CFM, cfm); } - -int rwnx_send_dbg_mem_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, u32 mem_data) +int rwnx_send_dbg_mem_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, + u32 mem_data) { struct dbg_mem_write_req *mem_write_req; /* Build the DBG_MEM_WRITE_REQ message */ - mem_write_req = rwnx_msg_zalloc(DBG_MEM_WRITE_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_write_req)); + mem_write_req = + rwnx_msg_zalloc(DBG_MEM_WRITE_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_mem_write_req)); if (!mem_write_req) return -ENOMEM; @@ -410,17 +430,19 @@ int rwnx_send_dbg_mem_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, u32 mem_write_req->memdata = mem_data; /* Send the DBG_MEM_WRITE_REQ message to LMAC FW */ - return rwnx_send_msg(sdiodev, mem_write_req, 1, DBG_MEM_WRITE_CFM, NULL); + return rwnx_send_msg(sdiodev, mem_write_req, 1, DBG_MEM_WRITE_CFM, + NULL); } int rwnx_send_dbg_mem_mask_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, - u32 mem_mask, u32 mem_data) + u32 mem_mask, u32 mem_data) { struct dbg_mem_mask_write_req *mem_mask_write_req; /* Build the DBG_MEM_MASK_WRITE_REQ message */ - mem_mask_write_req = rwnx_msg_zalloc(DBG_MEM_MASK_WRITE_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_mask_write_req)); + mem_mask_write_req = + rwnx_msg_zalloc(DBG_MEM_MASK_WRITE_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_mem_mask_write_req)); if (!mem_mask_write_req) return -ENOMEM; @@ -430,17 +452,20 @@ int rwnx_send_dbg_mem_mask_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, mem_mask_write_req->memdata = mem_data; /* Send the DBG_MEM_MASK_WRITE_REQ message to LMAC FW */ - return rwnx_send_msg(sdiodev, mem_mask_write_req, 1, DBG_MEM_MASK_WRITE_CFM, NULL); + return rwnx_send_msg(sdiodev, mem_mask_write_req, 1, + DBG_MEM_MASK_WRITE_CFM, NULL); } - -int rwnx_send_dbg_start_app_req(struct aic_sdio_dev *sdiodev, u32 boot_addr, u32 boot_type, struct dbg_start_app_cfm *start_app_cfm) +int rwnx_send_dbg_start_app_req(struct aic_sdio_dev *sdiodev, u32 boot_addr, + u32 boot_type, + struct dbg_start_app_cfm *start_app_cfm) { struct dbg_start_app_req *start_app_req; /* Build the DBG_START_APP_REQ message */ - start_app_req = rwnx_msg_zalloc(DBG_START_APP_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_start_app_req)); + start_app_req = + rwnx_msg_zalloc(DBG_START_APP_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_start_app_req)); if (!start_app_req) { printk("start app nomen\n"); return -ENOMEM; @@ -451,11 +476,11 @@ int rwnx_send_dbg_start_app_req(struct aic_sdio_dev *sdiodev, u32 boot_addr, u32 start_app_req->boottype = boot_type; /* Send the DBG_START_APP_REQ message to LMAC FW */ - return rwnx_send_msg(sdiodev, start_app_req, 1, DBG_START_APP_CFM, start_app_cfm); + return rwnx_send_msg(sdiodev, start_app_req, 1, DBG_START_APP_CFM, + start_app_cfm); } -static msg_cb_fct dbg_hdlrs[MSG_I(DBG_MAX)] = { -}; +static msg_cb_fct dbg_hdlrs[MSG_I(DBG_MAX)] = {}; static msg_cb_fct *msg_hdlrs[] = { [TASK_DBG] = dbg_hdlrs, @@ -464,30 +489,31 @@ static msg_cb_fct *msg_hdlrs[] = { void rwnx_rx_handle_msg(struct aic_sdio_dev *sdiodev, struct ipc_e2a_msg *msg) { sdiodev->cmd_mgr.msgind(&sdiodev->cmd_mgr, msg, - msg_hdlrs[MSG_T(msg->id)][MSG_I(msg->id)]); + msg_hdlrs[MSG_T(msg->id)][MSG_I(msg->id)]); } #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); #endif -#define MD5(x) x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15] -#define MD5PINRT "file md5:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\r\n" +#define MD5(x) \ + x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], \ + x[11], x[12], x[13], x[14], x[15] +#define MD5PINRT \ + "file md5:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\r\n" int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) { - #ifdef CONFIG_USE_FW_REQUEST const struct firmware *fw = NULL; u32 *dst = NULL; - void *buffer=NULL; + void *buffer = NULL; MD5_CTX md5; unsigned char decrypt[16]; int size = 0; int ret = 0; - printk("%s: request firmware = %s \n", __func__ ,name); - + printk("%s: request firmware = %s \n", __func__, name); ret = request_firmware(&fw, name, NULL); @@ -506,7 +532,6 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) return -1; } - buffer = vmalloc(size); memset(buffer, 0, size); memcpy(buffer, dst, size); @@ -525,22 +550,22 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) void *buffer = NULL; char *path = NULL; struct file *fp = NULL; - int size = 0, len = 0;// i = 0; + int size = 0, len = 0; // i = 0; ssize_t rdlen = 0; //u32 *src = NULL, *dst = NULL; MD5_CTX md5; unsigned char decrypt[16]; - #ifdef CONFIG_FIRMWARE_ARRAY - size = aicwf_get_firmware_array((char*)name, fw_buf); - printk("%s size:%d \r\n", __func__, size); - MD5Init(&md5); - MD5Update(&md5, (unsigned char *)*fw_buf, size); - MD5Final(&md5, decrypt); - printk(MD5PINRT, MD5(decrypt)); +#ifdef CONFIG_FIRMWARE_ARRAY + size = aicwf_get_firmware_array((char *)name, fw_buf); + printk("%s size:%d \r\n", __func__, size); + MD5Init(&md5); + MD5Update(&md5, (unsigned char *)*fw_buf, size); + MD5Final(&md5, decrypt); + printk(MD5PINRT, MD5(decrypt)); - return size; - #endif + return size; +#endif /* get the firmware path */ path = __getname(); @@ -549,11 +574,13 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) return -1; } - if(strlen(aic_fw_path) > 0){ - len = snprintf(path, AICBSP_FW_PATH_MAX, "%s/%s", aic_fw_path, name); - }else{ - len = snprintf(path, AICBSP_FW_PATH_MAX, "%s/%s", AICBSP_FW_PATH, name); - } + if (strlen(aic_fw_path) > 0) { + len = snprintf(path, AICBSP_FW_PATH_MAX, "%s/%s", aic_fw_path, + name); + } else { + len = snprintf(path, AICBSP_FW_PATH_MAX, "%s/%s", + AICBSP_FW_PATH, name); + } if (len >= AICBSP_FW_PATH_MAX) { printk("%s: %s file's path too long\n", __func__, name); *fw_buf = NULL; @@ -592,7 +619,7 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) filp_close(fp, NULL); fp = NULL; return -1; - }else{ + } else { memset(buffer, 0, size); } @@ -603,7 +630,8 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) #endif if (size != rdlen) { - printk("%s: %s file rdlen invalid %ld\n", __func__, name, (long int)rdlen); + printk("%s: %s file rdlen invalid %ld\n", __func__, name, + (long int)rdlen); *fw_buf = NULL; __putname(path); filp_close(fp, NULL); @@ -643,7 +671,7 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) fp = NULL; //vfree(buffer); //buffer = NULL; - *fw_buf = (u32*)buffer; + *fw_buf = (u32 *)buffer; MD5Init(&md5); MD5Update(&md5, (unsigned char *)buffer, size); @@ -660,13 +688,14 @@ extern int testmode; #ifdef CONFIG_M2D_OTA_AUTO_SUPPORT extern char saved_sdk_ver[64]; -int rwnx_plat_m2d_flash_ota_android(struct aic_sdio_dev *sdiodev, char *filename) +int rwnx_plat_m2d_flash_ota_android(struct aic_sdio_dev *sdiodev, + char *filename) { struct device *dev = sdiodev->dev; - unsigned int i=0; + unsigned int i = 0; int size; - u32 *dst=NULL; - int err=0; + u32 *dst = NULL; + int err = 0; int ret; u8 bond_id; const u32 mem_addr = 0x40500000; @@ -679,7 +708,7 @@ int rwnx_plat_m2d_flash_ota_android(struct aic_sdio_dev *sdiodev, char *filename } bond_id = (u8)(rd_mem_addr_cfm.memdata >> 24); printk("%x=%x\n", rd_mem_addr_cfm.memaddr, rd_mem_addr_cfm.memdata); - if (bond_id & (1<<1)) { + if (bond_id & (1 << 1)) { //flash is invalid printk("m2d flash is invalid\n"); return -1; @@ -687,34 +716,41 @@ int rwnx_plat_m2d_flash_ota_android(struct aic_sdio_dev *sdiodev, char *filename /* load aic firmware */ size = rwnx_load_firmware(&dst, filename, dev); - if(size<=0){ - printk("wrong size of m2d file\n"); - vfree(dst); - dst = NULL; - return -1; + if (size <= 0) { + printk("wrong size of m2d file\n"); + vfree(dst); + dst = NULL; + return -1; } /* Copy the file on the Embedded side */ printk("### Upload m2d %s flash, size=%d\n", filename, size); /*send info first*/ - err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_INFO_ADDR, 4, (u32 *)&size); + err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_INFO_ADDR, + 4, (u32 *)&size); /*send data first*/ - if (size > 1024) {// > 1KB data - for (i = 0; i < (size - 1024); i += 1024) {//each time write 1KB - err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_DATA_ADDR, 1024, dst + i / 4); - if (err) { - printk("m2d upload fail: %x, err:%d\r\n", AIC_M2D_OTA_DATA_ADDR, err); + if (size > 1024) { // > 1KB data + for (i = 0; i < (size - 1024); + i += 1024) { //each time write 1KB + err = rwnx_send_dbg_mem_block_write_req( + sdiodev, AIC_M2D_OTA_DATA_ADDR, 1024, + dst + i / 4); + if (err) { + printk("m2d upload fail: %x, err:%d\r\n", + AIC_M2D_OTA_DATA_ADDR, err); break; } } } - if (!err && (i < size)) {// <1KB data - err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_DATA_ADDR, size - i, dst + i / 4); + if (!err && (i < size)) { // <1KB data + err = rwnx_send_dbg_mem_block_write_req( + sdiodev, AIC_M2D_OTA_DATA_ADDR, size - i, dst + i / 4); if (err) { - printk("m2d upload fail: %x, err:%d\r\n", AIC_M2D_OTA_DATA_ADDR, err); + printk("m2d upload fail: %x, err:%d\r\n", + AIC_M2D_OTA_DATA_ADDR, err); } } @@ -733,17 +769,19 @@ int rwnx_plat_m2d_flash_ota_android(struct aic_sdio_dev *sdiodev, char *filename int rwnx_plat_m2d_flash_ota_check(struct aic_sdio_dev *sdiodev, char *filename) { struct device *dev = sdiodev->dev; - unsigned int i=0,j=0; + unsigned int i = 0, j = 0; int size; - u32 *dst=NULL; - int err=0; - int ret=0; + u32 *dst = NULL; + int err = 0; + int ret = 0; u8 bond_id; const u32 mem_addr = 0x40500000; const u32 mem_addr_code_start = AIC_M2D_OTA_CODE_START_ADDR; const u32 mem_addr_sdk_ver = AIC_M2D_OTA_VER_ADDR; - const u32 driver_code_start_idx = (AIC_M2D_OTA_CODE_START_ADDR-AIC_M2D_OTA_FLASH_ADDR)/4; - const u32 driver_sdk_ver_idx = (AIC_M2D_OTA_VER_ADDR-AIC_M2D_OTA_FLASH_ADDR)/4; + const u32 driver_code_start_idx = + (AIC_M2D_OTA_CODE_START_ADDR - AIC_M2D_OTA_FLASH_ADDR) / 4; + const u32 driver_sdk_ver_idx = + (AIC_M2D_OTA_VER_ADDR - AIC_M2D_OTA_FLASH_ADDR) / 4; u32 driver_sdk_ver_addr_idx = 0; u32 code_start_addr = 0xffffffff; u32 sdk_ver_addr = 0xffffffff; @@ -762,92 +800,104 @@ int rwnx_plat_m2d_flash_ota_check(struct aic_sdio_dev *sdiodev, char *filename) } bond_id = (u8)(rd_mem_addr_cfm.memdata >> 24); printk("%x=%x\n", rd_mem_addr_cfm.memaddr, rd_mem_addr_cfm.memdata); - if (bond_id & (1<<1)) { + if (bond_id & (1 << 1)) { //flash is invalid printk("m2d flash is invalid\n"); return -1; } - ret = rwnx_send_dbg_mem_read_req(sdiodev, mem_addr_code_start, &rd_mem_addr_cfm); - if (ret){ - printk("mem_addr_code_start %x rd fail: %d\n", mem_addr_code_start, ret); + ret = rwnx_send_dbg_mem_read_req(sdiodev, mem_addr_code_start, + &rd_mem_addr_cfm); + if (ret) { + printk("mem_addr_code_start %x rd fail: %d\n", + mem_addr_code_start, ret); return ret; } code_start_addr = rd_mem_addr_cfm.memdata; - #if !defined(CONFIG_M2D_OTA_LZMA_SUPPORT) - ret = rwnx_send_dbg_mem_read_req(sdiodev, mem_addr_sdk_ver, &rd_mem_addr_cfm); - if (ret){ - printk("mem_addr_sdk_ver %x rd fail: %d\n", mem_addr_code_start, ret); +#if !defined(CONFIG_M2D_OTA_LZMA_SUPPORT) + ret = rwnx_send_dbg_mem_read_req(sdiodev, mem_addr_sdk_ver, + &rd_mem_addr_cfm); + if (ret) { + printk("mem_addr_sdk_ver %x rd fail: %d\n", mem_addr_code_start, + ret); return ret; } sdk_ver_addr = rd_mem_addr_cfm.memdata; - #else +#else sdk_ver_addr = mem_addr_sdk_ver; - #endif - printk("code_start_addr: 0x%x, sdk_ver_addr: 0x%x\n", code_start_addr,sdk_ver_addr); +#endif + printk("code_start_addr: 0x%x, sdk_ver_addr: 0x%x\n", code_start_addr, + sdk_ver_addr); /* load aic firmware */ size = rwnx_load_firmware(&dst, filename, dev); - if(size<=0){ - printk("wrong size of m2d file\n"); - vfree(dst); - dst = NULL; - return -1; + if (size <= 0) { + printk("wrong size of m2d file\n"); + vfree(dst); + dst = NULL; + return -1; } - if(code_start_addr == 0xffffffff && sdk_ver_addr == 0xffffffff) { + if (code_start_addr == 0xffffffff && sdk_ver_addr == 0xffffffff) { printk("########m2d flash old version , must be upgrade\n"); drv_code_start_addr = dst[driver_code_start_idx]; drv_sdk_ver_addr = dst[driver_sdk_ver_idx]; - printk("drv_code_start_addr: 0x%x, drv_sdk_ver_addr: 0x%x\n", drv_code_start_addr,drv_sdk_ver_addr); + printk("drv_code_start_addr: 0x%x, drv_sdk_ver_addr: 0x%x\n", + drv_code_start_addr, drv_sdk_ver_addr); - if(drv_sdk_ver_addr == 0xffffffff){ + if (drv_sdk_ver_addr == 0xffffffff) { printk("########driver m2d_ota.bin is old ,not need upgrade\n"); return -1; } } else { - for(i=0;i<16;i++){ - ret = rwnx_send_dbg_mem_read_req(sdiodev, (sdk_ver_addr+i*4), &rd_mem_addr_cfm); - if (ret){ - printk("mem_addr_sdk_ver %x rd fail: %d\n", mem_addr_code_start, ret); + for (i = 0; i < 16; i++) { + ret = rwnx_send_dbg_mem_read_req(sdiodev, + (sdk_ver_addr + i * 4), + &rd_mem_addr_cfm); + if (ret) { + printk("mem_addr_sdk_ver %x rd fail: %d\n", + mem_addr_code_start, ret); return ret; } flash_ver[i] = rd_mem_addr_cfm.memdata; } - memcpy((u8 *)flash_sdk_ver,(u8 *)flash_ver,64); - memcpy((u8 *)saved_sdk_ver,(u8 *)flash_sdk_ver,64); + memcpy((u8 *)flash_sdk_ver, (u8 *)flash_ver, 64); + memcpy((u8 *)saved_sdk_ver, (u8 *)flash_sdk_ver, 64); printk("flash SDK Version: %s\r\n\r\n", flash_sdk_ver); drv_code_start_addr = dst[driver_code_start_idx]; drv_sdk_ver_addr = dst[driver_sdk_ver_idx]; - printk("drv_code_start_addr: 0x%x, drv_sdk_ver_addr: 0x%x\n", drv_code_start_addr,drv_sdk_ver_addr); + printk("drv_code_start_addr: 0x%x, drv_sdk_ver_addr: 0x%x\n", + drv_code_start_addr, drv_sdk_ver_addr); - if(drv_sdk_ver_addr == 0xffffffff){ + if (drv_sdk_ver_addr == 0xffffffff) { printk("########driver m2d_ota.bin is old ,not need upgrade\n"); return -1; } - #if !defined(CONFIG_M2D_OTA_LZMA_SUPPORT) - driver_sdk_ver_addr_idx = (drv_sdk_ver_addr-drv_code_start_addr)/4; - #else +#if !defined(CONFIG_M2D_OTA_LZMA_SUPPORT) + driver_sdk_ver_addr_idx = + (drv_sdk_ver_addr - drv_code_start_addr) / 4; +#else driver_sdk_ver_addr_idx = driver_sdk_ver_idx; - #endif - printk("driver_sdk_ver_addr_idx %d\n",driver_sdk_ver_addr_idx); +#endif + printk("driver_sdk_ver_addr_idx %d\n", driver_sdk_ver_addr_idx); - if (driver_sdk_ver_addr_idx){ - for(j = 0; j < 16; j++){ - ota_ver[j] = dst[driver_sdk_ver_addr_idx+j]; + if (driver_sdk_ver_addr_idx) { + for (j = 0; j < 16; j++) { + ota_ver[j] = dst[driver_sdk_ver_addr_idx + j]; } - memcpy((u8 *)m2d_sdk_ver,(u8 *)ota_ver,64); + memcpy((u8 *)m2d_sdk_ver, (u8 *)ota_ver, 64); printk("m2d_ota SDK Version: %s\r\n\r\n", m2d_sdk_ver); } else { return -1; } - if(!strcmp(m2d_sdk_ver,flash_sdk_ver)){ - printk("######## m2d %s flash is not need upgrade\r\n", filename); + if (!strcmp(m2d_sdk_ver, flash_sdk_ver)) { + printk("######## m2d %s flash is not need upgrade\r\n", + filename); return -1; } } @@ -856,23 +906,30 @@ int rwnx_plat_m2d_flash_ota_check(struct aic_sdio_dev *sdiodev, char *filename) printk("### Upload m2d %s flash, size=%d\n", filename, size); /*send info first*/ - err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_INFO_ADDR, 4, (u32 *)&size); + err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_INFO_ADDR, + 4, (u32 *)&size); /*send data first*/ - if (size > 1024) {// > 1KB data - for (i = 0; i < (size - 1024); i += 1024) {//each time write 1KB - err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_DATA_ADDR, 1024, dst + i / 4); - if (err) { - printk("m2d upload fail: %x, err:%d\r\n", AIC_M2D_OTA_DATA_ADDR, err); + if (size > 1024) { // > 1KB data + for (i = 0; i < (size - 1024); + i += 1024) { //each time write 1KB + err = rwnx_send_dbg_mem_block_write_req( + sdiodev, AIC_M2D_OTA_DATA_ADDR, 1024, + dst + i / 4); + if (err) { + printk("m2d upload fail: %x, err:%d\r\n", + AIC_M2D_OTA_DATA_ADDR, err); break; } } } - if (!err && (i < size)) {// <1KB data - err = rwnx_send_dbg_mem_block_write_req(sdiodev, AIC_M2D_OTA_DATA_ADDR, size - i, dst + i / 4); + if (!err && (i < size)) { // <1KB data + err = rwnx_send_dbg_mem_block_write_req( + sdiodev, AIC_M2D_OTA_DATA_ADDR, size - i, dst + i / 4); if (err) { - printk("m2d upload fail: %x, err:%d\r\n", AIC_M2D_OTA_DATA_ADDR, err); + printk("m2d upload fail: %x, err:%d\r\n", + AIC_M2D_OTA_DATA_ADDR, err); } } @@ -886,224 +943,245 @@ int rwnx_plat_m2d_flash_ota_check(struct aic_sdio_dev *sdiodev, char *filename) return err; } -#endif//CONFIG_M2D_OTA_AUTO_SUPPORT +#endif //CONFIG_M2D_OTA_AUTO_SUPPORT int aicwf_patch_table_load(struct aic_sdio_dev *rwnx_hw, char *filename) { struct device *dev = rwnx_hw->dev; - int err = 0; - unsigned int i = 0, size; - u32 *dst = NULL; + int err = 0; + unsigned int i = 0, size; + u32 *dst = NULL; u8 *describle; u32 fmacfw_patch_tbl_8800dc_u02_describe_size = 124; - u32 fmacfw_patch_tbl_8800dc_u02_describe_base;//read from patch_tbl + u32 fmacfw_patch_tbl_8800dc_u02_describe_base; //read from patch_tbl - /* Copy the file on the Embedded side */ - printk("### Upload %s \n", filename); + /* Copy the file on the Embedded side */ + printk("### Upload %s \n", filename); - size = rwnx_load_firmware(&dst, filename,dev); - if (!dst) { - printk("No such file or directory\n"); - return -1; - } - if (size <= 0) { - printk("wrong size of firmware file\n"); - dst = NULL; - err = -1; - } + size = rwnx_load_firmware(&dst, filename, dev); + if (!dst) { + printk("No such file or directory\n"); + return -1; + } + if (size <= 0) { + printk("wrong size of firmware file\n"); + dst = NULL; + err = -1; + } - printk("tbl size = %d \n",size); + printk("tbl size = %d \n", size); fmacfw_patch_tbl_8800dc_u02_describe_base = dst[0]; - AICWFDBG(LOGINFO, "FMACFW_PATCH_TBL_8800DC_U02_DESCRIBE_BASE = %x \n",fmacfw_patch_tbl_8800dc_u02_describe_base); + AICWFDBG(LOGINFO, "FMACFW_PATCH_TBL_8800DC_U02_DESCRIBE_BASE = %x \n", + fmacfw_patch_tbl_8800dc_u02_describe_base); if (!err && (i < size)) { - err=rwnx_send_dbg_mem_block_write_req(rwnx_hw, fmacfw_patch_tbl_8800dc_u02_describe_base, fmacfw_patch_tbl_8800dc_u02_describe_size + 4, dst); - if(err){ + err = rwnx_send_dbg_mem_block_write_req( + rwnx_hw, fmacfw_patch_tbl_8800dc_u02_describe_base, + fmacfw_patch_tbl_8800dc_u02_describe_size + 4, dst); + if (err) { printk("write describe information fail \n"); } - describle=kzalloc(fmacfw_patch_tbl_8800dc_u02_describe_size,GFP_KERNEL); - memcpy(describle,&dst[1],fmacfw_patch_tbl_8800dc_u02_describe_size); - printk("%s",describle); + describle = kzalloc(fmacfw_patch_tbl_8800dc_u02_describe_size, + GFP_KERNEL); + memcpy(describle, &dst[1], + fmacfw_patch_tbl_8800dc_u02_describe_size); + printk("%s", describle); kfree(describle); - describle=NULL; + describle = NULL; } - if (!err && (i < size)) { - for (i =(128/4); i < (size/4); i +=2) { - printk("patch_tbl: %x %x\n", dst[i], dst[i+1]); - err = rwnx_send_dbg_mem_write_req(rwnx_hw, dst[i], dst[i+1]); - } - if (err) { - printk("bin upload fail: %x, err:%d\r\n", dst[i], err); - } - } + if (!err && (i < size)) { + for (i = (128 / 4); i < (size / 4); i += 2) { + printk("patch_tbl: %x %x\n", dst[i], dst[i + 1]); + err = rwnx_send_dbg_mem_write_req(rwnx_hw, dst[i], + dst[i + 1]); + } + if (err) { + printk("bin upload fail: %x, err:%d\r\n", dst[i], err); + } + } if (dst) { #ifndef CONFIG_FIRMWARE_ARRAY - vfree(dst); + vfree(dst); #endif - dst = NULL; + dst = NULL; } - - return err; - + return err; } extern char aic_fw_path[200]; int aicwf_plat_patch_load_8800dc(struct aic_sdio_dev *sdiodev) { - int ret = 0; - #if !defined(CONFIG_FPGA_VERIFICATION) - if (chip_sub_id == 0) { - printk("u01 is loaing ###############\n"); - ret = rwnx_plat_bin_fw_upload_android(sdiodev, ROM_FMAC_PATCH_ADDR, RWNX_MAC_PATCH_NAME2_8800DC); - } else if (chip_sub_id == 1) { - printk("u02 is loaing ###############\n"); - ret = rwnx_plat_bin_fw_upload_android(sdiodev, ROM_FMAC_PATCH_ADDR, RWNX_MAC_PATCH_NAME2_8800DC_U02); - } else if (chip_sub_id == 2) { - printk("h_u02 is loaing ###############\n"); - ret = rwnx_plat_bin_fw_upload_android(sdiodev, ROM_FMAC_PATCH_ADDR, RWNX_MAC_PATCH_NAME2_8800DC_H_U02); - } else { - printk("unsupported id: %d\n", chip_sub_id); - } - #endif - return ret; + int ret = 0; +#if !defined(CONFIG_FPGA_VERIFICATION) + if (chip_sub_id == 0) { + printk("u01 is loaing ###############\n"); + ret = rwnx_plat_bin_fw_upload_android( + sdiodev, ROM_FMAC_PATCH_ADDR, + RWNX_MAC_PATCH_NAME2_8800DC); + } else if (chip_sub_id == 1) { + printk("u02 is loaing ###############\n"); + ret = rwnx_plat_bin_fw_upload_android( + sdiodev, ROM_FMAC_PATCH_ADDR, + RWNX_MAC_PATCH_NAME2_8800DC_U02); + } else if (chip_sub_id == 2) { + printk("h_u02 is loaing ###############\n"); + ret = rwnx_plat_bin_fw_upload_android( + sdiodev, ROM_FMAC_PATCH_ADDR, + RWNX_MAC_PATCH_NAME2_8800DC_H_U02); + } else { + printk("unsupported id: %d\n", chip_sub_id); + } +#endif + return ret; } int aicwf_plat_rftest_load_8800dc(struct aic_sdio_dev *sdiodev) { - int ret = 0; - ret = rwnx_plat_bin_fw_upload_android(sdiodev, RAM_LMAC_FW_ADDR, RWNX_MAC_FW_RF_BASE_NAME_8800DC); - if (ret) { - AICWFDBG(LOGINFO, "load rftest bin fail: %d\n", ret); - return ret; - } - return ret; + int ret = 0; + ret = rwnx_plat_bin_fw_upload_android(sdiodev, RAM_LMAC_FW_ADDR, + RWNX_MAC_FW_RF_BASE_NAME_8800DC); + if (ret) { + AICWFDBG(LOGINFO, "load rftest bin fail: %d\n", ret); + return ret; + } + return ret; } -#ifdef CONFIG_DPD -int aicwf_misc_ram_valid_check_8800dc(struct aic_sdio_dev *sdiodev, int *valid_out) -{ - int ret = 0; - uint32_t cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - uint32_t misc_ram_addr; - uint32_t ram_base_addr, ram_word_cnt; - uint32_t bit_mask[4]; - int i; - if (valid_out) { - *valid_out = 0; - } - if (testmode == FW_RFTEST_MODE) { - - uint32_t vect1 = 0; - uint32_t vect2 = 0; - cfg_base = RAM_LMAC_FW_ADDR + 0x0004; - ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "cfg_base:%x vcet1 rd fail: %d\n", cfg_base, ret); - return ret; - } - vect1 = cfm.memdata; - if ((vect1 & 0xFFFF0000) != (RAM_LMAC_FW_ADDR & 0xFFFF0000)) { - AICWFDBG(LOGERROR, "vect1 invalid: %x\n", vect1); - return ret; - } - cfg_base = RAM_LMAC_FW_ADDR + 0x0008; - ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "cfg_base:%x vcet2 rd fail: %d\n", cfg_base, ret); - return ret; - } - vect2 = cfm.memdata; - if ((vect2 & 0xFFFF0000) != (RAM_LMAC_FW_ADDR & 0xFFFF0000)) { - AICWFDBG(LOGERROR, "vect2 invalid: %x\n", vect2); - return ret; - } - - cfg_base = RAM_LMAC_FW_ADDR + 0x0164; - } - // init misc ram - ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); - return ret; - } - misc_ram_addr = cfm.memdata; - AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); - // bit_mask - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); - ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved)) / 4; - for (i = 0; i < ram_word_cnt; i++) { - ret = rwnx_send_dbg_mem_read_req(sdiodev, ram_base_addr + i * 4, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); - return ret; - } - bit_mask[i] = cfm.memdata; - } - AICWFDBG(LOGTRACE, "bit_mask:%x,%x,%x,%x\n",bit_mask[0],bit_mask[1],bit_mask[2],bit_mask[3]); - if ((bit_mask[0] == 0) && ((bit_mask[1] & 0xFFF00000) == 0x80000000) && - (bit_mask[2] == 0) && ((bit_mask[3] & 0xFFFFFF00) == 0x00000000)) { - if (valid_out) { - *valid_out = 1; - } - } - return ret; -} -#endif - #if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) +int aicwf_misc_ram_valid_check_8800dc(struct aic_sdio_dev *sdiodev, + int *valid_out) +{ + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_word_cnt; + uint32_t bit_mask[4]; + int i; + if (valid_out) { + *valid_out = 0; + } + if (testmode == FW_RFTEST_MODE) { + uint32_t vect1 = 0; + uint32_t vect2 = 0; + cfg_base = RAM_LMAC_FW_ADDR + 0x0004; + ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "cfg_base:%x vcet1 rd fail: %d\n", + cfg_base, ret); + return ret; + } + vect1 = cfm.memdata; + if ((vect1 & 0xFFFF0000) != (RAM_LMAC_FW_ADDR & 0xFFFF0000)) { + AICWFDBG(LOGERROR, "vect1 invalid: %x\n", vect1); + return ret; + } + cfg_base = RAM_LMAC_FW_ADDR + 0x0008; + ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "cfg_base:%x vcet2 rd fail: %d\n", + cfg_base, ret); + return ret; + } + vect2 = cfm.memdata; + if ((vect2 & 0xFFFF0000) != (RAM_LMAC_FW_ADDR & 0xFFFF0000)) { + AICWFDBG(LOGERROR, "vect2 invalid: %x\n", vect2); + return ret; + } + + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + // init misc ram + ret = rwnx_send_dbg_mem_read_req(sdiodev, cfg_base + 0x14, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); + // bit_mask + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved)) / + 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req(sdiodev, ram_base_addr + i * 4, + &cfm); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", + ram_base_addr + i * 4, ret); + return ret; + } + bit_mask[i] = cfm.memdata; + } + AICWFDBG(LOGTRACE, "bit_mask:%x,%x,%x,%x\n", bit_mask[0], bit_mask[1], + bit_mask[2], bit_mask[3]); + if ((bit_mask[0] == 0) && ((bit_mask[1] & 0xFFF00000) == 0x80000000) && + (bit_mask[2] == 0) && ((bit_mask[3] & 0xFFFFFF00) == 0x00000000)) { + if (valid_out) { + *valid_out = 1; + } + } + return ret; +} + int aicwf_plat_calib_load_8800dc(struct aic_sdio_dev *sdiodev) { - int ret = 0; - if (chip_sub_id == 1) { - ret = rwnx_plat_bin_fw_upload_android(sdiodev, ROM_FMAC_CALIB_ADDR, RWNX_MAC_CALIB_NAME_8800DC_U02); - if (ret) { - AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); - return ret; - } - } else if (chip_sub_id == 2) { - ret = rwnx_plat_bin_fw_upload_android(sdiodev, ROM_FMAC_CALIB_ADDR, RWNX_MAC_CALIB_NAME_8800DC_H_U02); - if (ret) { - AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); - return ret; - } - } - return ret; + int ret = 0; + if (chip_sub_id == 1) { + ret = rwnx_plat_bin_fw_upload_android( + sdiodev, ROM_FMAC_CALIB_ADDR, + RWNX_MAC_CALIB_NAME_8800DC_U02); + if (ret) { + AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); + return ret; + } + } else if (chip_sub_id == 2) { + ret = rwnx_plat_bin_fw_upload_android( + sdiodev, ROM_FMAC_CALIB_ADDR, + RWNX_MAC_CALIB_NAME_8800DC_H_U02); + if (ret) { + AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); + return ret; + } + } + return ret; } #endif #ifdef CONFIG_DPD #ifndef CONFIG_FORCE_DPD_CALIB -int is_file_exist(char* name) +int is_file_exist(char *name) { - char *path = NULL; - struct file *fp = NULL; - int len; + char *path = NULL; + struct file *fp = NULL; + int len; - path = __getname(); - if (!path) { - AICWFDBG(LOGINFO, "%s getname fail\n", __func__); - return -1; - } + path = __getname(); + if (!path) { + AICWFDBG(LOGINFO, "%s getname fail\n", __func__); + return -1; + } - len = snprintf(path, FW_PATH_MAX_LEN, "%s/%s", AICBSP_FW_PATH, name); + len = snprintf(path, FW_PATH_MAX_LEN, "%s/%s", AICBSP_FW_PATH, name); - fp = filp_open(path, O_RDONLY, 0); - if (IS_ERR(fp)) { - __putname(path); - fp = NULL; - return 0; - } else { - __putname(path); - filp_close(fp, NULL); + fp = filp_open(path, O_RDONLY, 0); + if (IS_ERR(fp)) { + __putname(path); fp = NULL; - return 1; - } + return 0; + } else { + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return 1; + } } EXPORT_SYMBOL(is_file_exist); @@ -1111,140 +1189,224 @@ EXPORT_SYMBOL(is_file_exist); #endif #ifdef CONFIG_DPD -rf_misc_ram_lite_t dpd_res = {{0},}; +rf_misc_ram_lite_t dpd_res = { + { 0 }, +}; EXPORT_SYMBOL(dpd_res); #endif +#ifdef CONFIG_LOFT_CALIB +rf_misc_ram_lite_t loft_res_local = { + { 0 }, +}; +EXPORT_SYMBOL(loft_res_local); +#endif + static int rwnx_plat_patch_load(struct aic_sdio_dev *sdiodev) { int ret = 0; RWNX_DBG(RWNX_FN_ENTRY_STR); - if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - AICWFDBG(LOGINFO, "testmode=%d\n", testmode); - if (chip_sub_id == 0) { - if (testmode == FW_NORMAL_MODE) { - AICWFDBG(LOGINFO, "rwnx_plat_patch_loading\n"); - ret = aicwf_plat_patch_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load patch bin fail: %d\n", ret); - return ret; - } - } else if (testmode == FW_RFTEST_MODE) { - ret = aicwf_plat_rftest_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load rftest bin fail: %d\n", ret); - return ret; - } - } - } else if (chip_sub_id >= 1) { - if (testmode == FW_NORMAL_MODE) { - AICWFDBG(LOGINFO, "rwnx_plat_patch_loading\n"); - ret = aicwf_plat_patch_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load patch bin fail: %d\n", ret); - return ret; - } - #ifdef CONFIG_DPD - #ifdef CONFIG_FORCE_DPD_CALIB - if (1) { - AICWFDBG(LOGINFO, "dpd calib & write\n"); - ret = aicwf_dpd_calib_8800dc(sdiodev, &dpd_res); - if (ret) { - AICWFDBG(LOGINFO, "dpd calib fail: %d\n", ret); - return ret; - } - } - #else - if (is_file_exist(FW_DPDRESULT_NAME_8800DC) == 1) { - AICWFDBG(LOGINFO, "dpd bin load\n"); - ret = aicwf_dpd_result_load_8800dc(sdiodev, &dpd_res); - if (ret) { - AICWFDBG(LOGINFO, "load dpd bin fail: %d\n", ret); - return ret; - } - ret = aicwf_dpd_result_apply_8800dc(sdiodev, &dpd_res); + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + AICWFDBG(LOGINFO, "testmode=%d\n", testmode); + if (chip_sub_id == 0) { + if (testmode == FW_NORMAL_MODE) { + AICWFDBG(LOGINFO, "rwnx_plat_patch_loading\n"); + ret = aicwf_plat_patch_load_8800dc(sdiodev); + if (ret) { + AICWFDBG(LOGINFO, + "load patch bin fail: %d\n", + ret); + return ret; + } + } else if (testmode == FW_RFTEST_MODE) { + ret = aicwf_plat_rftest_load_8800dc(sdiodev); + if (ret) { + AICWFDBG(LOGINFO, + "load rftest bin fail: %d\n", + ret); + return ret; + } + } + } else if (chip_sub_id >= 1) { + if (testmode == FW_NORMAL_MODE) { + AICWFDBG(LOGINFO, "rwnx_plat_patch_loading\n"); + ret = aicwf_plat_patch_load_8800dc(sdiodev); + if (ret) { + AICWFDBG(LOGINFO, + "load patch bin fail: %d\n", + ret); + return ret; + } +#ifdef CONFIG_DPD +#ifdef CONFIG_FORCE_DPD_CALIB + if (1) { + AICWFDBG(LOGINFO, + "dpd calib & write\n"); + ret = aicwf_dpd_calib_8800dc(sdiodev, + &dpd_res); if (ret) { - AICWFDBG(LOGINFO, "apply dpd bin fail: %d\n", ret); + AICWFDBG(LOGINFO, + "dpd calib fail: %d\n", + ret); return ret; } - } - #endif - else - #elif defined(CONFIG_LOFT_CALIB) - if (1) { - AICWFDBG(LOGINFO, "loft calib\n"); - ret = aicwf_loft_calib_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "loft calib fail: %d\n", ret); - return ret; - } - } else - #endif - { - ret = aicwf_misc_ram_init_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "misc ram init fail: %d\n", ret); - return ret; - } - } - } else if (testmode == FW_RFTEST_MODE) { - #ifdef CONFIG_DPD - #ifdef CONFIG_FORCE_DPD_CALIB - if (1) { - AICWFDBG(LOGINFO, "patch load\n"); - ret = aicwf_plat_patch_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load patch bin fail: %d\n", ret); - return ret; - } - AICWFDBG(LOGINFO, "dpd calib & write\n"); - ret = aicwf_dpd_calib_8800dc(sdiodev, &dpd_res); - if (ret) { - AICWFDBG(LOGINFO, "dpd calib fail: %d\n", ret); - return ret; - } - } - #endif - #endif - ret = aicwf_plat_rftest_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load rftest bin fail: %d\n", ret); - return ret; - } - } else if (testmode == FW_DPDCALIB_MODE) { - #if (defined(CONFIG_DPD) && !defined(CONFIG_FORCE_DPD_CALIB)) - if (is_file_exist(FW_DPDRESULT_NAME_8800DC) == 0) { - AICWFDBG(LOGINFO, "patch load\n"); - ret = aicwf_plat_patch_load_8800dc(sdiodev); - if (ret) { - AICWFDBG(LOGINFO, "load patch bin fail: %d\n", ret); - return ret; - } - AICWFDBG(LOGINFO, "dpd calib & write\n"); - ret = aicwf_dpd_calib_8800dc(sdiodev, &dpd_res); - if (ret) { - AICWFDBG(LOGINFO, "dpd calib fail: %d\n", ret); - return ret; - } - ret = aicwf_dpd_result_write_8800dc((void *)&dpd_res, DPD_RESULT_SIZE_8800DC); - if (ret) { - AICWFDBG(LOGINFO, "file write fail: %d\n", ret); - return ret; - } - } - #endif - return 1; // exit calib mode - } - } - } + } +#else + if (is_file_exist(FW_DPDRESULT_NAME_8800DC) == + 1) { + AICWFDBG(LOGINFO, "dpd bin load\n"); + ret = aicwf_dpd_result_load_8800dc( + sdiodev, &dpd_res); + if (ret) { + AICWFDBG( + LOGINFO, + "load dpd bin fail: %d\n", + ret); + return ret; + } + ret = aicwf_dpd_result_apply_8800dc( + sdiodev, &dpd_res); + if (ret) { + AICWFDBG( + LOGINFO, + "apply dpd bin fail: %d\n", + ret); + return ret; + } + } +#endif + else +#elif defined(CONFIG_LOFT_CALIB) + if (1) { + AICWFDBG(LOGINFO, "loft calib\n"); + ret = aicwf_loft_calib_8800dc( + sdiodev, &loft_res_local); + if (ret) { + AICWFDBG( + LOGINFO, + "loft calib fail: %d\n", + ret); + return ret; + } + } else +#endif + { + ret = aicwf_misc_ram_init_8800dc( + sdiodev); + if (ret) { + AICWFDBG( + LOGINFO, + "misc ram init fail: %d\n", + ret); + return ret; + } + } + } else if (testmode == FW_RFTEST_MODE) { +#ifdef CONFIG_DPD +#ifdef CONFIG_FORCE_DPD_CALIB + if (1) { + AICWFDBG(LOGINFO, "patch load\n"); + ret = aicwf_plat_patch_load_8800dc( + sdiodev); + if (ret) { + AICWFDBG( + LOGINFO, + "load patch bin fail: %d\n", + ret); + return ret; + } + AICWFDBG(LOGINFO, + "dpd calib & write\n"); + ret = aicwf_dpd_calib_8800dc(sdiodev, + &dpd_res); + if (ret) { + AICWFDBG(LOGINFO, + "dpd calib fail: %d\n", + ret); + return ret; + } + } +#endif /*CONFIG_FORCE_DPD_CALIB*/ +#elif defined(CONFIG_LOFT_CALIB) + { + AICWFDBG(LOGINFO, "patch load\n"); + ret = aicwf_plat_patch_load_8800dc( + sdiodev); + if (ret) { + AICWFDBG( + LOGINFO, + "load patch bin fail: %d\n", + ret); + return ret; + } + AICWFDBG(LOGINFO, "loft calib\n"); + ret = aicwf_loft_calib_8800dc( + sdiodev, &loft_res_local); + if (ret) { + AICWFDBG( + LOGINFO, + "loft calib fail: %d\n", + ret); + return ret; + } + } +#endif /*CONFIG_DPD*/ + ret = aicwf_plat_rftest_load_8800dc(sdiodev); + if (ret) { + AICWFDBG(LOGINFO, + "load rftest bin fail: %d\n", + ret); + return ret; + } + } else if (testmode == FW_DPDCALIB_MODE) { +#if (defined(CONFIG_DPD) && !defined(CONFIG_FORCE_DPD_CALIB)) + if (is_file_exist(FW_DPDRESULT_NAME_8800DC) == + 0) { + AICWFDBG(LOGINFO, "patch load\n"); + ret = aicwf_plat_patch_load_8800dc( + sdiodev); + if (ret) { + AICWFDBG( + LOGINFO, + "load patch bin fail: %d\n", + ret); + return ret; + } + AICWFDBG(LOGINFO, + "dpd calib & write\n"); + ret = aicwf_dpd_calib_8800dc(sdiodev, + &dpd_res); + if (ret) { + AICWFDBG(LOGINFO, + "dpd calib fail: %d\n", + ret); + return ret; + } + ret = aicwf_dpd_result_write_8800dc( + (void *)&dpd_res, + DPD_RESULT_SIZE_8800DC); + if (ret) { + AICWFDBG( + LOGINFO, + "file write fail: %d\n", + ret); + return ret; + } + } +#endif + return 1; // exit calib mode + } + } + } - return ret; + return ret; } int rwnx_plat_bin_fw_upload_android(struct aic_sdio_dev *sdiodev, u32 fw_addr, - const char *filename) + const char *filename) { struct device *dev = sdiodev->dev; unsigned int i = 0; @@ -1252,7 +1414,7 @@ int rwnx_plat_bin_fw_upload_android(struct aic_sdio_dev *sdiodev, u32 fw_addr, u32 *dst = NULL; int err = 0; - printk("%s\n",__func__); + printk("%s\n", __func__); /* load aic firmware */ size = rwnx_load_firmware(&dst, filename, dev); @@ -1266,20 +1428,25 @@ int rwnx_plat_bin_fw_upload_android(struct aic_sdio_dev *sdiodev, u32 fw_addr, } /* Copy the file on the Embedded side */ - if (size > 1024) {// > 1KB data - for (i = 0; i < (size - 1024); i += 1024) {//each time write 1KB - err = rwnx_send_dbg_mem_block_write_req(sdiodev, fw_addr + i, 1024, dst + i / 4); + if (size > 1024) { // > 1KB data + for (i = 0; i < (size - 1024); + i += 1024) { //each time write 1KB + err = rwnx_send_dbg_mem_block_write_req( + sdiodev, fw_addr + i, 1024, dst + i / 4); if (err) { - printk("bin upload fail: %x, err:%d\r\n", fw_addr + i, err); + printk("bin upload fail: %x, err:%d\r\n", + fw_addr + i, err); break; } } } - if (!err && (i < size)) {// <1KB data - err = rwnx_send_dbg_mem_block_write_req(sdiodev, fw_addr + i, size - i, dst + i / 4); + if (!err && (i < size)) { // <1KB data + err = rwnx_send_dbg_mem_block_write_req(sdiodev, fw_addr + i, + size - i, dst + i / 4); if (err) { - printk("bin upload fail: %x, err:%d\r\n", fw_addr + i, err); + printk("bin upload fail: %x, err:%d\r\n", fw_addr + i, + err); } } @@ -1321,18 +1488,20 @@ struct aicbt_patch_table *aicbt_patch_table_alloc(const char *filename) } p = rawdata; - if (memcmp(p, AICBT_PT_TAG, sizeof(AICBT_PT_TAG) < 16 ? sizeof(AICBT_PT_TAG) : 16)) { + if (memcmp(p, AICBT_PT_TAG, + sizeof(AICBT_PT_TAG) < 16 ? sizeof(AICBT_PT_TAG) : 16)) { printk("TAG err\n"); goto err; } p += 16; while (p - rawdata < size) { - new = (struct aicbt_patch_table *)vmalloc(sizeof(struct aicbt_patch_table)); + new = (struct aicbt_patch_table *)vmalloc( + sizeof(struct aicbt_patch_table)); memset(new, 0, sizeof(struct aicbt_patch_table)); if (head == NULL) { head = new; - cur = new; + cur = new; } else { cur->next = new; cur = cur->next; @@ -1349,12 +1518,14 @@ struct aicbt_patch_table *aicbt_patch_table_alloc(const char *filename) cur->len = *(uint32_t *)p; p += 4; - if((cur->type ) >= 1000 ) {//Temp Workaround + if ((cur->type) >= 1000) { //Temp Workaround cur->len = 0; - }else{ - if(cur->len > 0){ - cur->data = (uint32_t *)vmalloc(sizeof(uint8_t) * cur->len * 8); - memset(cur->data, 0, sizeof(uint8_t) * cur->len * 8); + } else { + if (cur->len > 0) { + cur->data = (uint32_t *)vmalloc( + sizeof(uint8_t) * cur->len * 8); + memset(cur->data, 0, + sizeof(uint8_t) * cur->len * 8); memcpy(cur->data, p, cur->len * 8); p += cur->len * 8; } @@ -1371,183 +1542,318 @@ err: vfree(rawdata); return NULL; } -int aicbt_patch_info_unpack(struct aicbt_patch_info_t *patch_info, struct aicbt_patch_table *head_t) +int aicbt_patch_info_unpack(struct aicbt_patch_info_t *patch_info, + struct aicbt_patch_table *head_t) { - if (AICBT_PT_INF == head_t->type) { - patch_info->info_len = head_t->len; - if(patch_info->info_len == 0) - return 0; - memcpy(&patch_info->adid_addrinf, head_t->data, patch_info->info_len * sizeof(uint32_t) * 2); - } - return 0; + uint8_t *patch_info_array = (uint8_t *)patch_info; + int base_len = 0; + int memcpy_len = 0; + + if (AICBT_PT_INF == head_t->type) { + base_len = + ((offsetof(struct aicbt_patch_info_t, + ext_patch_nb_addr) - + offsetof(struct aicbt_patch_info_t, adid_addrinf)) / + sizeof(uint32_t)) / + 2; + AICWFDBG(LOGDEBUG, "%s head_t->len:%d base_len:%d \r\n", + __func__, head_t->len, base_len); + + if (head_t->len > base_len) { + patch_info->info_len = base_len; + memcpy_len = + patch_info->info_len + 1; //include ext patch nb + } else { + patch_info->info_len = head_t->len; + memcpy_len = patch_info->info_len; + } + AICWFDBG(LOGDEBUG, "%s memcpy_len:%d \r\n", __func__, + memcpy_len); + + if (patch_info->info_len == 0) + return 0; + + memcpy(((patch_info_array) + sizeof(patch_info->info_len)), + head_t->data, memcpy_len * sizeof(uint32_t) * 2); + AICWFDBG(LOGDEBUG, "%s adid_addrinf:%x addr_adid:%x \r\n", + __func__, + ((struct aicbt_patch_info_t *)patch_info_array) + ->adid_addrinf, + ((struct aicbt_patch_info_t *)patch_info_array) + ->addr_adid); + + if (patch_info->ext_patch_nb > 0) { + int index = 0; + patch_info->ext_patch_param = + (uint32_t *)(head_t->data + ((memcpy_len)*2)); + + for (index = 0; index < patch_info->ext_patch_nb; + index++) { + AICWFDBG(LOGDEBUG, "%s id:%x addr:%x \r\n", + __func__, + *(patch_info->ext_patch_param + + (index * 2)), + *(patch_info->ext_patch_param + + (index * 2) + 1)); + } + } + } + return 0; } -int aicbt_patch_trap_data_load(struct aic_sdio_dev *sdiodev, struct aicbt_patch_table *head) + +int aicbt_ext_patch_data_load(struct aic_sdio_dev *sdiodev, + struct aicbt_patch_info_t *patch_info) +{ + int ret = 0; + uint32_t ext_patch_nb = patch_info->ext_patch_nb; + char ext_patch_file_name[50]; + int index = 0; + uint32_t id = 0; + uint32_t addr = 0; + + if (ext_patch_nb > 0) { + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC) { + AICWFDBG(LOGDEBUG, "[0x40506004]: 0x04318000\n"); + ret = rwnx_send_dbg_mem_write_req(sdiodev, 0x40506004, + 0x04318000); + AICWFDBG(LOGDEBUG, "[0x40506004]: 0x04338000\n"); + ret = rwnx_send_dbg_mem_write_req(sdiodev, 0x40506004, + 0x04338000); + } + for (index = 0; index < patch_info->ext_patch_nb; index++) { + id = *(patch_info->ext_patch_param + (index * 2)); + addr = *(patch_info->ext_patch_param + (index * 2) + 1); + memset(ext_patch_file_name, 0, + sizeof(ext_patch_file_name)); + sprintf(ext_patch_file_name, "%s%d.bin", + aicbsp_firmware_list[aicbsp_info.cpmode] + .bt_ext_patch, + id); + AICWFDBG( + LOGDEBUG, + "%s ext_patch_file_name:%s ext_patch_id:%x ext_patch_addr:%x \r\n", + __func__, ext_patch_file_name, id, addr); + + if (rwnx_plat_bin_fw_upload_android( + sdiodev, addr, ext_patch_file_name)) { + ret = -1; + break; + } + } + } + return ret; +} + +int aicbt_patch_trap_data_load(struct aic_sdio_dev *sdiodev, + struct aicbt_patch_table *head) { struct aicbt_patch_info_t patch_info = { - .info_len = 0, - .adid_addrinf = 0, - .addr_adid = 0, - .patch_addrinf = 0, - .addr_patch = 0, - .reset_addr = 0, - .reset_val = 0, - .adid_flag_addr = 0, - .adid_flag = 0, + .info_len = 0, + .adid_addrinf = 0, + .addr_adid = 0, + .patch_addrinf = 0, + .addr_patch = 0, + .reset_addr = 0, + .reset_val = 0, + .adid_flag_addr = 0, + .adid_flag = 0, + .ext_patch_nb_addr = 0, + .ext_patch_nb = 0, }; - if(head == NULL){ - return -1; - } - - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ - patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR; - patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR; + if (head == NULL) { + return -1; } - else if(sdiodev->chipid == PRODUCT_ID_AIC8800DC){ - if(aicbsp_info.chip_rev == CHIP_REV_U01){ + + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { + patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR; + patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR; + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC) { + if (aicbsp_info.chip_rev == CHIP_REV_U01) { patch_info.addr_adid = RAM_8800DC_U01_ADID_ADDR; - }else if(aicbsp_info.chip_rev == CHIP_REV_U02){ + } else if (aicbsp_info.chip_rev == CHIP_REV_U02) { patch_info.addr_adid = RAM_8800DC_U02_ADID_ADDR; } patch_info.addr_patch = RAM_8800DC_FW_PATCH_ADDR; - aicbt_patch_info_unpack(&patch_info, head); - if(patch_info.reset_addr == 0) { - patch_info.reset_addr = FW_RESET_START_ADDR; - patch_info.reset_val = FW_RESET_START_VAL; - patch_info.adid_flag_addr = FW_ADID_FLAG_ADDR; - patch_info.adid_flag = FW_ADID_FLAG_VAL; - if (rwnx_send_dbg_mem_write_req(sdiodev, patch_info.reset_addr, patch_info.reset_val)) - return -1; - if (rwnx_send_dbg_mem_write_req(sdiodev, patch_info.adid_flag_addr, patch_info.adid_flag)) - return -1; - } - } else if(sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - if (aicbsp_info.chip_rev == CHIP_REV_U01) { - patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR_8800D80; - patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR_8800D80; - } else if (aicbsp_info.chip_rev == CHIP_REV_U02 || aicbsp_info.chip_rev == CHIP_REV_U03) { - patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR_8800D80_U02; - patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR_8800D80_U02; - } - aicbt_patch_info_unpack(&patch_info, head); - if(patch_info.info_len == 0) { - printk("%s, aicbt_patch_info_unpack fail\n", __func__); - return -1; - } + aicbt_patch_info_unpack(&patch_info, head); + if (patch_info.reset_addr == 0) { + patch_info.reset_addr = FW_RESET_START_ADDR; + patch_info.reset_val = FW_RESET_START_VAL; + patch_info.adid_flag_addr = FW_ADID_FLAG_ADDR; + patch_info.adid_flag = FW_ADID_FLAG_VAL; + if (rwnx_send_dbg_mem_write_req(sdiodev, + patch_info.reset_addr, + patch_info.reset_val)) + return -1; + if (rwnx_send_dbg_mem_write_req( + sdiodev, patch_info.adid_flag_addr, + patch_info.adid_flag)) + return -1; + } + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { + if (aicbsp_info.chip_rev == CHIP_REV_U01) { + patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR_8800D80; + patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR_8800D80; + } else if (aicbsp_info.chip_rev == CHIP_REV_U02 || + aicbsp_info.chip_rev == CHIP_REV_U03) { + patch_info.addr_adid = + FW_RAM_ADID_BASE_ADDR_8800D80_U02; + patch_info.addr_patch = + FW_RAM_PATCH_BASE_ADDR_8800D80_U02; + } + aicbt_patch_info_unpack(&patch_info, head); + if (patch_info.info_len == 0) { + printk("%s, aicbt_patch_info_unpack fail\n", __func__); + return -1; + } + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + aicbt_patch_info_unpack(&patch_info, head); + if (patch_info.info_len == 0) { + printk("%s, aicbt_patch_info_unpack fail\n", __func__); + return -1; + } } - if (rwnx_plat_bin_fw_upload_android(sdiodev, patch_info.addr_adid, aicbsp_firmware_list[aicbsp_info.cpmode].bt_adid)) + if (rwnx_plat_bin_fw_upload_android( + sdiodev, patch_info.addr_adid, + aicbsp_firmware_list[aicbsp_info.cpmode].bt_adid)) return -1; - if (rwnx_plat_bin_fw_upload_android(sdiodev, patch_info.addr_patch, aicbsp_firmware_list[aicbsp_info.cpmode].bt_patch)) + if (rwnx_plat_bin_fw_upload_android( + sdiodev, patch_info.addr_patch, + aicbsp_firmware_list[aicbsp_info.cpmode].bt_patch)) + return -1; + if (aicbt_ext_patch_data_load(sdiodev, &patch_info)) return -1; return 0; - } -static struct aicbt_info_t aicbt_info[]={ - { - .btmode = AICBT_BTMODE_DEFAULT, - .btport = AICBT_BTPORT_DEFAULT, - .uart_baud = AICBT_UART_BAUD_DEFAULT, - .uart_flowctrl = AICBT_UART_FC_DEFAULT, - .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, - .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT, - },//PRODUCT_ID_AIC8801 - { - .btmode = AICBT_BTMODE_BT_WIFI_COMBO, - .btport = AICBT_BTPORT_DEFAULT, - .uart_baud = AICBT_UART_BAUD_DEFAULT, - .uart_flowctrl = AICBT_UART_FC_DEFAULT, - .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, - .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800dc, - },//PRODUCT_ID_AIC8800DC - { - .btmode = AICBT_BTMODE_BT_WIFI_COMBO, - .btport = AICBT_BTPORT_DEFAULT, - .uart_baud = AICBT_UART_BAUD_DEFAULT, - .uart_flowctrl = AICBT_UART_FC_DEFAULT, - .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, - .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800dc, - },//PRODUCT_ID_AIC8800DW - { - .btmode = AICBT_BTMODE_DEFAULT_8800d80, - .btport = AICBT_BTPORT_DEFAULT, - .uart_baud = AICBT_UART_BAUD_DEFAULT, - .uart_flowctrl = AICBT_UART_FC_DEFAULT, - .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, - .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800d80, - }//PRODUCT_ID_AIC8800D80 +static struct aicbt_info_t aicbt_info[] = { + { + .btmode = AICBT_BTMODE_DEFAULT, + .btport = AICBT_BTPORT_DEFAULT, + .uart_baud = AICBT_UART_BAUD_DEFAULT, + .uart_flowctrl = AICBT_UART_FC_DEFAULT, + .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, + .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT, + }, //PRODUCT_ID_AIC8801 + { + .btmode = AICBT_BTMODE_BT_WIFI_COMBO, + .btport = AICBT_BTPORT_DEFAULT, + .uart_baud = AICBT_UART_BAUD_DEFAULT, + .uart_flowctrl = AICBT_UART_FC_DEFAULT, + .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, + .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800dc, + }, //PRODUCT_ID_AIC8800DC + { + .btmode = AICBT_BTMODE_BT_WIFI_COMBO, + .btport = AICBT_BTPORT_DEFAULT, + .uart_baud = AICBT_UART_BAUD_DEFAULT, + .uart_flowctrl = AICBT_UART_FC_DEFAULT, + .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, + .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800dc, + }, //PRODUCT_ID_AIC8800DW + { + .btmode = AICBT_BTMODE_DEFAULT_8800d80, + .btport = AICBT_BTPORT_DEFAULT, + .uart_baud = AICBT_UART_BAUD_DEFAULT, + .uart_flowctrl = AICBT_UART_FC_DEFAULT, + .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, + .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800d80, + }, //PRODUCT_ID_AIC8800D80 + { + .btmode = AICBT_BTMODE_DEFAULT_8800d80x2, + .btport = AICBT_BTPORT_DEFAULT, + .uart_baud = AICBT_UART_BAUD_DEFAULT, + .uart_flowctrl = AICBT_UART_FC_DEFAULT, + .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, + .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800d80x2, + } //PRODUCT_ID_AIC8800D80x2 + }; - -int aicbt_patch_table_load(struct aic_sdio_dev *sdiodev, struct aicbt_patch_table *head) +int aicbt_patch_table_load(struct aic_sdio_dev *sdiodev, + struct aicbt_patch_table *head) { struct aicbt_patch_table *p; int ret = 0, i; uint32_t *data = NULL; - if(head == NULL){ - return -1; - } + if (head == NULL) { + return -1; + } - for (p = head; p != NULL; p = p->next) { - data = p->data; - if (AICBT_PT_BTMODE == p->type) { - *(data + 1) = aicbsp_info.hwinfo < 0; - *(data + 3) = aicbsp_info.hwinfo; - *(data + 5) = (sdiodev->chipid == PRODUCT_ID_AIC8800DC?aicbsp_info.cpmode:0);//0;//aicbsp_info.cpmode; + for (p = head; p != NULL; p = p->next) { + data = p->data; + if (AICBT_PT_BTMODE == p->type) { + *(data + 1) = aicbsp_info.hwinfo < 0; + *(data + 3) = aicbsp_info.hwinfo; + *(data + 5) = (sdiodev->chipid == PRODUCT_ID_AIC8800DC ? + aicbsp_info.cpmode : + 0); //0;//aicbsp_info.cpmode; - *(data + 7) = aicbt_info[sdiodev->chipid].btmode; - *(data + 9) = aicbt_info[sdiodev->chipid].btport; - *(data + 11) = aicbt_info[sdiodev->chipid].uart_baud; - *(data + 13) = aicbt_info[sdiodev->chipid].uart_flowctrl; - *(data + 15) = aicbt_info[sdiodev->chipid].lpm_enable; - *(data + 17) = aicbt_info[sdiodev->chipid].txpwr_lvl; + *(data + 7) = aicbt_info[sdiodev->chipid].btmode; + *(data + 9) = aicbt_info[sdiodev->chipid].btport; + *(data + 11) = aicbt_info[sdiodev->chipid].uart_baud; + *(data + 13) = + aicbt_info[sdiodev->chipid].uart_flowctrl; + *(data + 15) = aicbt_info[sdiodev->chipid].lpm_enable; + *(data + 17) = aicbt_info[sdiodev->chipid].txpwr_lvl; - printk("%s bt btmode[%d]:%d \r\n", __func__, sdiodev->chipid, aicbt_info[sdiodev->chipid].btmode); - printk("%s bt uart_baud[%d]:%d \r\n", __func__, sdiodev->chipid, aicbt_info[sdiodev->chipid].uart_baud); - printk("%s bt uart_flowctrl[%d]:%d \r\n", __func__, sdiodev->chipid, aicbt_info[sdiodev->chipid].uart_flowctrl); - printk("%s bt lpm_enable[%d]:%d \r\n", __func__, sdiodev->chipid, aicbt_info[sdiodev->chipid].lpm_enable); - printk("%s bt tx_pwr[%d]:%d \r\n", __func__, sdiodev->chipid, aicbt_info[sdiodev->chipid].txpwr_lvl); - } + printk("%s bt btmode[%d]:%d \r\n", __func__, + sdiodev->chipid, + aicbt_info[sdiodev->chipid].btmode); + printk("%s bt uart_baud[%d]:%d \r\n", __func__, + sdiodev->chipid, + aicbt_info[sdiodev->chipid].uart_baud); + printk("%s bt uart_flowctrl[%d]:%d \r\n", __func__, + sdiodev->chipid, + aicbt_info[sdiodev->chipid].uart_flowctrl); + printk("%s bt lpm_enable[%d]:%d \r\n", __func__, + sdiodev->chipid, + aicbt_info[sdiodev->chipid].lpm_enable); + printk("%s bt tx_pwr[%d]:%d \r\n", __func__, + sdiodev->chipid, + aicbt_info[sdiodev->chipid].txpwr_lvl); + } - if (AICBT_PT_VER == p->type) { - printk("aicbsp: bt patch version: %s\n", (char *)p->data); - continue; - } - - for (i = 0; i < p->len; i++) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, *data, *(data + 1)); - if (ret != 0) - return ret; - data += 2; - } - if (p->type == AICBT_PT_PWRON) - udelay(500); - } + if (AICBT_PT_VER == p->type) { + printk("aicbsp: bt patch version: %s\n", + (char *)p->data); + continue; + } + for (i = 0; i < p->len; i++) { + ret = rwnx_send_dbg_mem_write_req(sdiodev, *data, + *(data + 1)); + if (ret != 0) + return ret; + data += 2; + } + if (p->type == AICBT_PT_PWRON) + udelay(500); + } ///aicbt_patch_table_free(&head); return 0; } - int aicbt_init(struct aic_sdio_dev *sdiodev) { - int ret = 0; - struct aicbt_patch_table *head = aicbt_patch_table_alloc(aicbsp_firmware_list[aicbsp_info.cpmode].bt_table); - if (head == NULL){ - printk("aicbt_patch_table_alloc fail\n"); - return -1; - } + int ret = 0; + struct aicbt_patch_table *head = aicbt_patch_table_alloc( + aicbsp_firmware_list[aicbsp_info.cpmode].bt_table); + if (head == NULL) { + printk("aicbt_patch_table_alloc fail\n"); + return -1; + } - if (aicbt_patch_trap_data_load(sdiodev, head)) { + if (aicbt_patch_trap_data_load(sdiodev, head)) { printk("aicbt_patch_trap_data_load fail\n"); - ret = -1; + ret = -1; goto err; } if (aicbt_patch_table_load(sdiodev, head)) { - printk("aicbt_patch_table_load fail\n"); - ret = -1; + printk("aicbt_patch_table_load fail\n"); + ret = -1; goto err; } @@ -1565,7 +1871,8 @@ static int aicwifi_start_from_bootrom(struct aic_sdio_dev *sdiodev) struct dbg_start_app_cfm start_app_cfm; /* fw start */ - ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, HOST_START_APP_AUTO, &start_app_cfm); + ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, HOST_START_APP_AUTO, + &start_app_cfm); if (ret) { return -1; } @@ -1576,18 +1883,17 @@ static int aicwifi_start_from_bootrom(struct aic_sdio_dev *sdiodev) static int start_from_bootrom_8800DC(struct aic_sdio_dev *sdiodev) { - int ret = 0; + int ret = 0; u32 rd_addr; u32 fw_addr; u32 boot_type; struct dbg_mem_read_cfm rd_cfm; /* memory access */ - if(testmode == 1){ + if (testmode == 1) { rd_addr = RAM_LMAC_FW_ADDR; fw_addr = RAM_LMAC_FW_ADDR; - } - else{ + } else { rd_addr = RAM_FMAC_FW_ADDR; fw_addr = RAM_FMAC_FW_ADDR; } @@ -1596,43 +1902,45 @@ static int start_from_bootrom_8800DC(struct aic_sdio_dev *sdiodev) if ((ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_addr, &rd_cfm))) { return -1; } - AICWFDBG(LOGINFO, "cfm: [%08x] = %08x\n", rd_cfm.memaddr, rd_cfm.memdata); + AICWFDBG(LOGINFO, "cfm: [%08x] = %08x\n", rd_cfm.memaddr, + rd_cfm.memdata); - if (testmode == 0) { - boot_type = HOST_START_APP_DUMMY; - } else { - boot_type = HOST_START_APP_AUTO; - } + if (testmode == 0) { + boot_type = HOST_START_APP_DUMMY; + } else { + boot_type = HOST_START_APP_AUTO; + } /* fw start */ AICWFDBG(LOGINFO, "Start app: %08x, %d\n", fw_addr, boot_type); - if ((ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, boot_type ,NULL))) { + if ((ret = rwnx_send_dbg_start_app_req(sdiodev, fw_addr, boot_type, + NULL))) { return -1; } return 0; } u32 adaptivity_patch_tbl[][2] = { - {0x0004, 0x0000320A}, //linkloss_thd - {0x0094, 0x00000000}, //ac_param_conf - {0x00F8, 0x00010138}, //tx_adaptivity_en + { 0x0004, 0x0000320A }, //linkloss_thd + { 0x0094, 0x00000000 }, //ac_param_conf + { 0x00F8, 0x00010138 }, //tx_adaptivity_en }; u32 patch_tbl[][2] = { #if !defined(CONFIG_LINK_DET_5G) - {0x0104, 0x00000000}, //link_det_5g + { 0x0104, 0x00000000 }, //link_det_5g #endif #if defined(CONFIG_MCU_MESSAGE) - {0x004c, 0x0000004B}, //pkt_cnt_1724=0x4B - {0x0050, 0x0011FC00}, //ipc_base_addr + { 0x004c, 0x0000004B }, //pkt_cnt_1724=0x4B + { 0x0050, 0x0011FC00 }, //ipc_base_addr #endif }; u32 syscfg_tbl_masked[][3] = { - {0x40506024, 0x000000FF, 0x000000DF}, // for clk gate lp_level + { 0x40506024, 0x000000FF, 0x000000DF }, // for clk gate lp_level }; u32 rf_tbl_masked[][3] = { - {0x40344058, 0x00800000, 0x00000000},// pll trx + { 0x40344058, 0x00800000, 0x00000000 }, // pll trx }; static int aicwifi_sys_config(struct aic_sdio_dev *sdiodev) @@ -1640,18 +1948,22 @@ static int aicwifi_sys_config(struct aic_sdio_dev *sdiodev) int ret, cnt; int syscfg_num = sizeof(syscfg_tbl_masked) / sizeof(u32) / 3; for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_mask_write_req(sdiodev, - syscfg_tbl_masked[cnt][0], syscfg_tbl_masked[cnt][1], syscfg_tbl_masked[cnt][2]); + ret = rwnx_send_dbg_mem_mask_write_req( + sdiodev, syscfg_tbl_masked[cnt][0], + syscfg_tbl_masked[cnt][1], syscfg_tbl_masked[cnt][2]); if (ret) { - printk("%x mask write fail: %d\n", syscfg_tbl_masked[cnt][0], ret); + printk("%x mask write fail: %d\n", + syscfg_tbl_masked[cnt][0], ret); return ret; } } - ret = rwnx_send_dbg_mem_mask_write_req(sdiodev, - rf_tbl_masked[0][0], rf_tbl_masked[0][1], rf_tbl_masked[0][2]); + ret = rwnx_send_dbg_mem_mask_write_req(sdiodev, rf_tbl_masked[0][0], + rf_tbl_masked[0][1], + rf_tbl_masked[0][2]); if (ret) { - printk("rf config %x write fail: %d\n", rf_tbl_masked[0][0], ret); + printk("rf config %x write fail: %d\n", rf_tbl_masked[0][0], + ret); return ret; } @@ -1664,7 +1976,7 @@ static int aicwifi_patch_config(struct aic_sdio_dev *sdiodev) u32 config_base; uint32_t start_addr = 0x1e6000; u32 patch_addr = start_addr; - u32 patch_num = sizeof(patch_tbl)/4; + u32 patch_num = sizeof(patch_tbl) / 4; struct dbg_mem_read_cfm rd_patch_addr_cfm; u32 patch_addr_reg = 0x1e5318; u32 patch_num_reg = 0x1e531c; @@ -1678,7 +1990,8 @@ static int aicwifi_patch_config(struct aic_sdio_dev *sdiodev) patch_num_reg = 0x1e5308; } - ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_patch_addr, &rd_patch_addr_cfm); + ret = rwnx_send_dbg_mem_read_req(sdiodev, rd_patch_addr, + &rd_patch_addr_cfm); if (ret) { printk("patch rd fail\n"); return ret; @@ -1692,43 +2005,54 @@ static int aicwifi_patch_config(struct aic_sdio_dev *sdiodev) return ret; } - if(adap_test){ + if (adap_test) { printk("%s for adaptivity test \r\n", __func__); - adap_patch_num = sizeof(adaptivity_patch_tbl)/4; - ret = rwnx_send_dbg_mem_write_req(sdiodev, patch_num_reg, patch_num + adap_patch_num); - }else{ - ret = rwnx_send_dbg_mem_write_req(sdiodev, patch_num_reg, patch_num); + adap_patch_num = sizeof(adaptivity_patch_tbl) / 4; + ret = rwnx_send_dbg_mem_write_req(sdiodev, patch_num_reg, + patch_num + adap_patch_num); + } else { + ret = rwnx_send_dbg_mem_write_req(sdiodev, patch_num_reg, + patch_num); } if (ret) { printk("0x%x write fail\n", patch_num_reg); return ret; } - for (cnt = 0; cnt < patch_num/2; cnt += 1) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*cnt, patch_tbl[cnt][0]+config_base); + for (cnt = 0; cnt < patch_num / 2; cnt += 1) { + ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr + 8 * cnt, + patch_tbl[cnt][0] + + config_base); if (ret) { - printk("%x write fail\n", start_addr+8*cnt); + printk("%x write fail\n", start_addr + 8 * cnt); return ret; } - ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*cnt+4, patch_tbl[cnt][1]); + ret = rwnx_send_dbg_mem_write_req( + sdiodev, start_addr + 8 * cnt + 4, patch_tbl[cnt][1]); if (ret) { - printk("%x write fail\n", start_addr+8*cnt+4); + printk("%x write fail\n", start_addr + 8 * cnt + 4); return ret; } } tmp_cnt = cnt; - if(adap_test){ - for(cnt = 0; cnt < adap_patch_num/2; cnt+=1) - { - if((ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*(cnt+tmp_cnt), adaptivity_patch_tbl[cnt][0]+config_base))) { - printk("%x write fail\n", start_addr+8*cnt); + if (adap_test) { + for (cnt = 0; cnt < adap_patch_num / 2; cnt += 1) { + if ((ret = rwnx_send_dbg_mem_write_req( + sdiodev, start_addr + 8 * (cnt + tmp_cnt), + adaptivity_patch_tbl[cnt][0] + + config_base))) { + printk("%x write fail\n", start_addr + 8 * cnt); } - if((ret = rwnx_send_dbg_mem_write_req(sdiodev, start_addr+8*(cnt+tmp_cnt)+4, adaptivity_patch_tbl[cnt][1]))) { - printk("%x write fail\n", start_addr+8*cnt+4); + if ((ret = rwnx_send_dbg_mem_write_req( + sdiodev, + start_addr + 8 * (cnt + tmp_cnt) + 4, + adaptivity_patch_tbl[cnt][1]))) { + printk("%x write fail\n", + start_addr + 8 * cnt + 4); } } } @@ -1739,18 +2063,29 @@ static int aicwifi_patch_config(struct aic_sdio_dev *sdiodev) int aicwifi_init(struct aic_sdio_dev *sdiodev) { int ret = 0; - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ - #ifdef CONFIG_M2D_OTA_AUTO_SUPPORT + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { +#ifdef CONFIG_M2D_OTA_AUTO_SUPPORT if (testmode == FW_M2D_OTA_MODE) { - rwnx_plat_m2d_flash_ota_android(sdiodev, FW_M2D_OTA_NAME); + rwnx_plat_m2d_flash_ota_android(sdiodev, + FW_M2D_OTA_NAME); } else if (testmode == FW_NORMAL_MODE) { rwnx_plat_m2d_flash_ota_check(sdiodev, FW_M2D_OTA_NAME); } - #endif - if (rwnx_plat_bin_fw_upload_android(sdiodev, RAM_FMAC_FW_ADDR, aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw)) { +#endif + if (rwnx_plat_bin_fw_upload_android( + sdiodev, RAM_FMAC_FW_ADDR, + aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw)) { printk("download wifi fw fail\n"); return -1; } + if (testmode == FW_NORMAL_MODE) { + if (rwnx_plat_bin_fw_upload_android( + sdiodev, RAM_FMAC_FW_PATCH_ADDR, + RAM_FMAC_FW_PATCH_NAME)) { + printk("download wifi fw patch fail\n"); + return -1; + } + } if (aicwifi_patch_config(sdiodev)) { printk("aicwifi_patch_config fail\n"); @@ -1766,7 +2101,8 @@ int aicwifi_init(struct aic_sdio_dev *sdiodev) printk("wifi start fail\n"); return -1; } - }else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { printk("############ aicwifi_init begin \n"); system_config_8800dc(sdiodev); @@ -1785,8 +2121,10 @@ int aicwifi_init(struct aic_sdio_dev *sdiodev) printk("############ aicwf_patch_config_8800dc done\n"); start_from_bootrom_8800DC(sdiodev); - }else if(sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - if (rwnx_plat_bin_fw_upload_android(sdiodev, RAM_FMAC_FW_ADDR, aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw)) { + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { + if (rwnx_plat_bin_fw_upload_android( + sdiodev, RAM_FMAC_FW_ADDR, + aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw)) { printk("8800d80 download wifi fw fail\n"); return -1; } @@ -1805,11 +2143,23 @@ int aicwifi_init(struct aic_sdio_dev *sdiodev) printk("8800d80 wifi start fail\n"); return -1; } + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + if (rwnx_plat_bin_fw_upload_android( + sdiodev, RAM_FMAC_FW_ADDR, + aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw)) { + printk("8800d80x2 download wifi fw fail\n"); + return -1; + } + if (aicwifi_start_from_bootrom(sdiodev)) { + printk("8800d80x2 wifi start fail\n"); + return -1; + } } -#ifdef CONFIG_GPIO_WAKEUP +#if (defined(CONFIG_GPIO_WAKEUP) || defined(CONFIG_SDIO_PWRCTRL)) if (aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, 4)) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.wakeup_reg); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.wakeup_reg); return -1; } #endif @@ -1817,20 +2167,20 @@ int aicwifi_init(struct aic_sdio_dev *sdiodev) } u32 aicbsp_syscfg_tbl[][2] = { - {0x40500014, 0x00000101}, // 1) - {0x40500018, 0x00000109}, // 2) - {0x40500004, 0x00000010}, // 3) the order should not be changed + { 0x40500014, 0x00000101 }, // 1) + { 0x40500018, 0x00000109 }, // 2) + { 0x40500004, 0x00000010 }, // 3) the order should not be changed // def CONFIG_PMIC_SETTING // U02 bootrom only - {0x40040000, 0x00001AC8}, // 1) fix panic - {0x40040084, 0x00011580}, - {0x40040080, 0x00000001}, - {0x40100058, 0x00000000}, + { 0x40040000, 0x00001AC8 }, // 1) fix panic + { 0x40040084, 0x00011580 }, + { 0x40040080, 0x00000001 }, + { 0x40100058, 0x00000000 }, - {0x50000000, 0x03220204}, // 2) pmic interface init - {0x50019150, 0x00000002}, // 3) for 26m xtal, set div1 - {0x50017008, 0x00000000}, // 4) stop wdg + { 0x50000000, 0x03220204 }, // 2) pmic interface init + { 0x50019150, 0x00000002 }, // 3) for 26m xtal, set div1 + { 0x50017008, 0x00000000 }, // 4) stop wdg }; static int aicbsp_system_config(struct aic_sdio_dev *sdiodev) @@ -1838,17 +2188,18 @@ static int aicbsp_system_config(struct aic_sdio_dev *sdiodev) int syscfg_num = sizeof(aicbsp_syscfg_tbl) / sizeof(u32) / 2; int ret, cnt; for (cnt = 0; cnt < syscfg_num; cnt++) { - ret = rwnx_send_dbg_mem_write_req(sdiodev, aicbsp_syscfg_tbl[cnt][0], aicbsp_syscfg_tbl[cnt][1]); + ret = rwnx_send_dbg_mem_write_req(sdiodev, + aicbsp_syscfg_tbl[cnt][0], + aicbsp_syscfg_tbl[cnt][1]); if (ret) { - sdio_err("%x write fail: %d\n", aicbsp_syscfg_tbl[cnt][0], ret); + sdio_err("%x write fail: %d\n", + aicbsp_syscfg_tbl[cnt][0], ret); return ret; } } return 0; } - - int aicbsp_platform_init(struct aic_sdio_dev *sdiodev) { rwnx_cmd_mgr_init(&sdiodev->cmd_mgr); @@ -1874,18 +2225,19 @@ int aicbsp_driver_fw_init(struct aic_sdio_dev *sdiodev) testmode = aicbsp_info.cpmode; - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ - - if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, &rd_mem_addr_cfm)) + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { + if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, + &rd_mem_addr_cfm)) return -1; aicbsp_info.chip_rev = (u8)(rd_mem_addr_cfm.memdata >> 16); btenable = 1; if (aicbsp_info.chip_rev != CHIP_REV_U02 && - aicbsp_info.chip_rev != CHIP_REV_U03 && - aicbsp_info.chip_rev != CHIP_REV_U04) { - pr_err("aicbsp: %s, unsupport chip rev: %d\n", __func__, aicbsp_info.chip_rev); + aicbsp_info.chip_rev != CHIP_REV_U03 && + aicbsp_info.chip_rev != CHIP_REV_U04) { + pr_err("aicbsp: %s, unsupport chip rev: %d\n", __func__, + aicbsp_info.chip_rev); return -1; } @@ -1894,47 +2246,52 @@ int aicbsp_driver_fw_init(struct aic_sdio_dev *sdiodev) if (aicbsp_system_config(sdiodev)) return -1; - } - else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, &rd_mem_addr_cfm)) + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, + &rd_mem_addr_cfm)) return -1; - aicbsp_info.chip_rev = (u8)((rd_mem_addr_cfm.memdata >> 16) & 0x3F); - is_chip_id_h = (u8)(((rd_mem_addr_cfm.memdata >> 16) & 0xC0) == 0xC0); + aicbsp_info.chip_rev = + (u8)((rd_mem_addr_cfm.memdata >> 16) & 0x3F); + is_chip_id_h = + (u8)(((rd_mem_addr_cfm.memdata >> 16) & 0xC0) == 0xC0); btenable = ((rd_mem_addr_cfm.memdata >> 26) & 0x1); - AICWFDBG(LOGINFO, "btenable = %d \n",btenable); + AICWFDBG(LOGINFO, "btenable = %d \n", btenable); - if(btenable == 0){ + if (btenable == 0) { sdiodev->chipid = PRODUCT_ID_AIC8800DW; AICWFDBG(LOGINFO, "AIC8800DC change to AIC8800DW \n"); } if (aicbsp_info.chip_rev != CHIP_REV_U01 && - aicbsp_info.chip_rev != CHIP_REV_U02 && - aicbsp_info.chip_rev != CHIP_REV_U03 && - aicbsp_info.chip_rev != CHIP_REV_U04) { - pr_err("aicbsp: %s, unsupport chip rev: %d\n", __func__, aicbsp_info.chip_rev); + aicbsp_info.chip_rev != CHIP_REV_U02 && + aicbsp_info.chip_rev != CHIP_REV_U03 && + aicbsp_info.chip_rev != CHIP_REV_U04) { + pr_err("aicbsp: %s, unsupport chip rev: %d\n", __func__, + aicbsp_info.chip_rev); return -1; } if (is_chip_id_h) { AICWFDBG(LOGINFO, "IS_CHIP_ID_H \n"); aicbsp_firmware_list = fw_8800dc_h_u02; } else { - if(aicbsp_info.chip_rev == CHIP_REV_U01){ + if (aicbsp_info.chip_rev == CHIP_REV_U01) { aicbsp_firmware_list = fw_8800dc_u01; - }else{ + } else { aicbsp_firmware_list = fw_8800dc_u02; } } - } - else if(sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - - if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, &rd_mem_addr_cfm)) + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { + if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, + &rd_mem_addr_cfm)) return -1; - aicbsp_info.chip_rev = (u8)((rd_mem_addr_cfm.memdata >> 16) & 0x3F); - is_chip_id_h = (u8)(((rd_mem_addr_cfm.memdata >> 16) & 0xC0) == 0xC0); + aicbsp_info.chip_rev = + (u8)((rd_mem_addr_cfm.memdata >> 16) & 0x3F); + is_chip_id_h = + (u8)(((rd_mem_addr_cfm.memdata >> 16) & 0xC0) == 0xC0); btenable = 1; if (is_chip_id_h) { AICWFDBG(LOGINFO, "IS_CHIP_ID_H \n"); @@ -1942,23 +2299,40 @@ int aicbsp_driver_fw_init(struct aic_sdio_dev *sdiodev) } else { if (aicbsp_info.chip_rev == CHIP_REV_U01) aicbsp_firmware_list = fw_8800d80_u01; - if (aicbsp_info.chip_rev == CHIP_REV_U02 || aicbsp_info.chip_rev == CHIP_REV_U03) + if (aicbsp_info.chip_rev == CHIP_REV_U02 || + aicbsp_info.chip_rev == CHIP_REV_U03) aicbsp_firmware_list = fw_8800d80_u02; } - if (aicbsp_system_config_8800d80(sdiodev)) - return -1; + if (aicbsp_system_config_8800d80(sdiodev)) + return -1; + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + btenable = 1; + if (rwnx_send_dbg_mem_read_req(sdiodev, mem_addr, + &rd_mem_addr_cfm)) + return -1; + + aicbsp_info.chip_rev = + (u8)((rd_mem_addr_cfm.memdata >> 16) & 0x3F); + if (aicbsp_info.chip_rev >= (CHIP_REV_U04 + 8)) + aicbsp_firmware_list = fw_8800d80x2; + else { + pr_err("aicbsp: %s, unsupport chip rev: %d\n", __func__, + aicbsp_info.chip_rev); + return -1; + } } - AICWFDBG(LOGINFO, "aicbsp: %s, chip rev: %d\n", __func__, aicbsp_info.chip_rev); + AICWFDBG(LOGINFO, "aicbsp: %s, chip rev: %d\n", __func__, + aicbsp_info.chip_rev); - #ifndef CONFIG_MCU_MESSAGE +#ifndef CONFIG_MCU_MESSAGE if (testmode != 4) { - if(btenable == 1){ + if (btenable == 1) { if (aicbt_init(sdiodev)) return -1; } } - #endif +#endif ret = aicwifi_init(sdiodev); if (ret) @@ -1970,79 +2344,84 @@ int aicbsp_driver_fw_init(struct aic_sdio_dev *sdiodev) int aicbsp_get_feature(struct aicbsp_feature_t *feature, char *fw_path) { if (aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8801 || - aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800DC || - aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - feature->sdio_clock = FEATURE_SDIO_CLOCK; - }else if (aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - feature->sdio_clock = FEATURE_SDIO_CLOCK_V3; + aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800DC || + aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + feature->sdio_clock = FEATURE_SDIO_CLOCK; + } else if (aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + aicbsp_sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + feature->sdio_clock = FEATURE_SDIO_CLOCK_V3; } feature->sdio_phase = FEATURE_SDIO_PHASE; - feature->hwinfo = aicbsp_info.hwinfo; - feature->fwlog_en = aicbsp_info.fwlog_en; - feature->irqf = aicbsp_info.irqf; - if(fw_path != NULL){ - sprintf(fw_path,"%s", AICBSP_FW_PATH); + feature->hwinfo = aicbsp_info.hwinfo; + feature->fwlog_en = aicbsp_info.fwlog_en; + feature->irqf = aicbsp_info.irqf; + if (fw_path != NULL) { + sprintf(fw_path, "%s", AICBSP_FW_PATH); } - sdio_dbg("%s, set FEATURE_SDIO_CLOCK %d MHz\n", __func__, feature->sdio_clock/1000000); + + sdio_dbg("%s, set FEATURE_SDIO_CLOCK %d MHz\n", __func__, + feature->sdio_clock / 1000000); return 0; } + EXPORT_SYMBOL_GPL(aicbsp_get_feature); #ifdef CONFIG_RESV_MEM_SUPPORT static struct skb_buff_pool resv_skb[] = { - {AIC_RESV_MEM_TXDATA, 1536*64, "resv_mem_txdata", 0, NULL}, + { AIC_RESV_MEM_TXDATA, 1536 * 64, "resv_mem_txdata", 0, NULL }, }; int aicbsp_resv_mem_init(void) { - int i = 0; - printk("%s \n",__func__); - for (i = 0; i < sizeof(resv_skb) / sizeof(resv_skb[0]); i++) { - resv_skb[i].skb = dev_alloc_skb(resv_skb[i].size); - } - return 0; + int i = 0; + printk("%s \n", __func__); + for (i = 0; i < sizeof(resv_skb) / sizeof(resv_skb[0]); i++) { + resv_skb[i].skb = dev_alloc_skb(resv_skb[i].size); + } + return 0; } int aicbsp_resv_mem_deinit(void) { - int i = 0; - printk("%s \n",__func__); - for (i = 0; i < sizeof(resv_skb) / sizeof(resv_skb[0]); i++) { - if (resv_skb[i].used == 0 && resv_skb[i].skb) - dev_kfree_skb(resv_skb[i].skb); - } - return 0; + int i = 0; + printk("%s \n", __func__); + for (i = 0; i < sizeof(resv_skb) / sizeof(resv_skb[0]); i++) { + if (resv_skb[i].used == 0 && resv_skb[i].skb) + dev_kfree_skb(resv_skb[i].skb); + } + return 0; } struct sk_buff *aicbsp_resv_mem_alloc_skb(unsigned int length, uint32_t id) { - if (resv_skb[id].size < length) { - pr_err("aicbsp: %s, no enough mem\n", __func__); - goto fail; - } + if (resv_skb[id].size < length) { + pr_err("aicbsp: %s, no enough mem\n", __func__); + goto fail; + } - if (resv_skb[id].used) { - pr_err("aicbsp: %s, mem in use\n", __func__); - goto fail; - } + if (resv_skb[id].used) { + pr_err("aicbsp: %s, mem in use\n", __func__); + goto fail; + } - if (resv_skb[id].skb == NULL) { - pr_err("aicbsp: %s, mem not initialazed\n", __func__); - resv_skb[id].skb = dev_alloc_skb(resv_skb[id].size); - if (resv_skb[id].skb == NULL) { - pr_err("aicbsp: %s, mem reinitial still fail\n", __func__); - goto fail; - } - } + if (resv_skb[id].skb == NULL) { + pr_err("aicbsp: %s, mem not initialazed\n", __func__); + resv_skb[id].skb = dev_alloc_skb(resv_skb[id].size); + if (resv_skb[id].skb == NULL) { + pr_err("aicbsp: %s, mem reinitial still fail\n", + __func__); + goto fail; + } + } - printk("aicbsp: %s, alloc %s succuss, id: %d, size: %d\n", __func__, - resv_skb[id].name, resv_skb[id].id, resv_skb[id].size); + printk("aicbsp: %s, alloc %s succuss, id: %d, size: %d\n", __func__, + resv_skb[id].name, resv_skb[id].id, resv_skb[id].size); - resv_skb[id].used = 1; + resv_skb[id].used = 1; return resv_skb[id].skb; fail: - return NULL; + return NULL; } EXPORT_SYMBOL_GPL(aicbsp_resv_mem_alloc_skb); @@ -2050,7 +2429,7 @@ void aicbsp_resv_mem_kfree_skb(struct sk_buff *skb, uint32_t id) { resv_skb[id].used = 0; printk("aicbsp: %s, free %s succuss, id: %d, size: %d\n", __func__, - resv_skb[id].name, resv_skb[id].id, resv_skb[id].size); + resv_skb[id].name, resv_skb[id].id, resv_skb[id].size); } EXPORT_SYMBOL_GPL(aicbsp_resv_mem_kfree_skb); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.h index 566837c60..4a68f6fd7 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_driver.h @@ -16,76 +16,69 @@ #include #include "aic_bsp_export.h" -#define RWNX_80211_CMD_TIMEOUT_MS 3000//500//300 +#define RWNX_80211_CMD_TIMEOUT_MS 6000 //500//300 -#define RWNX_CMD_FLAG_NONBLOCK BIT(0) -#define RWNX_CMD_FLAG_REQ_CFM BIT(1) -#define RWNX_CMD_FLAG_WAIT_PUSH BIT(2) -#define RWNX_CMD_FLAG_WAIT_ACK BIT(3) -#define RWNX_CMD_FLAG_WAIT_CFM BIT(4) -#define RWNX_CMD_FLAG_DONE BIT(5) +#define RWNX_CMD_FLAG_NONBLOCK BIT(0) +#define RWNX_CMD_FLAG_REQ_CFM BIT(1) +#define RWNX_CMD_FLAG_WAIT_PUSH BIT(2) +#define RWNX_CMD_FLAG_WAIT_ACK BIT(3) +#define RWNX_CMD_FLAG_WAIT_CFM BIT(4) +#define RWNX_CMD_FLAG_DONE BIT(5) /* ATM IPC design makes it possible to get the CFM before the ACK, * otherwise this could have simply been a state enum */ -#define RWNX_CMD_WAIT_COMPLETE(flags) \ +#define RWNX_CMD_WAIT_COMPLETE(flags) \ (!(flags & (RWNX_CMD_FLAG_WAIT_ACK | RWNX_CMD_FLAG_WAIT_CFM))) -#define RWNX_CMD_MAX_QUEUED 8 +#define RWNX_CMD_MAX_QUEUED 8 #define IPC_E2A_MSG_PARAM_SIZE 256 #define RWNX_FN_ENTRY_STR ">>> %s()\n", __func__ /* message levels */ -#define LOGERROR 0x0001 -#define LOGINFO 0x0002 -#define LOGTRACE 0x0004 -#define LOGDEBUG 0x0008 -#define LOGDATA 0x0010 +#define LOGERROR 0x0001 +#define LOGINFO 0x0002 +#define LOGTRACE 0x0004 +#define LOGDEBUG 0x0008 +#define LOGDATA 0x0010 extern int aicwf_dbg_level_bsp; -#define AICWF_LOG "AICWFDBG(" +#define AICWF_LOG "AICWFDBG(" -#ifdef DEBUG -#define AICWFDBG(level, args, arg...) \ -do { \ - if (aicwf_dbg_level_bsp & level) { \ - printk(AICWF_LOG#level")\t" args, ##arg); \ - } \ -} while (0) +#define AICWFDBG(level, args, arg...) \ + do { \ + if (aicwf_dbg_level_bsp & level) { \ + printk(AICWF_LOG #level ")\t" args, ##arg); \ + } \ + } while (0) -#define RWNX_DBG(fmt, ...) \ -do { \ - if (aicwf_dbg_level_bsp & LOGTRACE) { \ - printk(AICWF_LOG"LOGTRACE)\t"fmt , ##__VA_ARGS__); \ - } \ -} while (0) +#define RWNX_DBG(fmt, ...) \ + do { \ + if (aicwf_dbg_level_bsp & LOGTRACE) { \ + printk(AICWF_LOG "LOGTRACE)\t" fmt, ##__VA_ARGS__); \ + } \ + } while (0) -#else - -#define AICWFDBG(level, args, arg...) -#define RWNX_DBG(fmt, ...) - -#endif /// Message structure for MSGs from Emb to App struct ipc_e2a_msg { - u16 id; ///< Message id. + u16 id; ///< Message id. u16 dummy_dest_id; u16 dummy_src_id; - u16 param_len; ///< Parameter embedded struct length. - u32 pattern; ///< Used to stamp a valid MSG buffer - u32 param[IPC_E2A_MSG_PARAM_SIZE]; ///< Parameter embedded struct. Must be word-aligned. + u16 param_len; ///< Parameter embedded struct length. + u32 pattern; ///< Used to stamp a valid MSG buffer + u32 param[IPC_E2A_MSG_PARAM_SIZE]; ///< Parameter embedded struct. Must be word-aligned. }; typedef u16 lmac_msg_id_t; typedef u16 lmac_task_id_t; struct lmac_msg { - lmac_msg_id_t id; ///< Message id. - lmac_task_id_t dest_id; ///< Destination kernel identifier. - lmac_task_id_t src_id; ///< Source kernel identifier. - u16 param_len; ///< Parameter embedded struct length. - u32 param[]; ///< Parameter embedded struct. Must be word-aligned. + lmac_msg_id_t id; ///< Message id. + lmac_task_id_t dest_id; ///< Destination kernel identifier. + lmac_task_id_t src_id; ///< Source kernel identifier. + u16 param_len; ///< Parameter embedded struct length. + u32 param[]; ///< Parameter embedded struct. Must be word-aligned. }; #define rwnx_cmd_e2amsg ipc_e2a_msg @@ -95,8 +88,8 @@ struct lmac_msg { static inline void put_u16(u8 *buf, u16 data) { - buf[0] = (u8)(data&0x00ff); - buf[1] = (u8)((data >> 8)&0x00ff); + buf[0] = (u8)(data & 0x00ff); + buf[1] = (u8)((data >> 8) & 0x00ff); } enum rwnx_cmd_mgr_state { @@ -132,9 +125,10 @@ struct rwnx_cmd_mgr { struct list_head cmds; - int (*queue)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); - int (*llind)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); - int (*msgind)(struct rwnx_cmd_mgr *, struct rwnx_cmd_e2amsg *, msg_cb_fct); + int (*queue)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); + int (*llind)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); + int (*msgind)(struct rwnx_cmd_mgr *, struct rwnx_cmd_e2amsg *, + msg_cb_fct); void (*print)(struct rwnx_cmd_mgr *); void (*drain)(struct rwnx_cmd_mgr *); @@ -144,11 +138,12 @@ struct rwnx_cmd_mgr { void rwnx_cmd_mgr_init(struct rwnx_cmd_mgr *cmd_mgr); void rwnx_cmd_mgr_deinit(struct rwnx_cmd_mgr *cmd_mgr); -int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd); +int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, + struct rwnx_cmd *cmd); void rwnx_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len); enum { - TASK_NONE = (u8) -1, + TASK_NONE = (u8)-1, // MAC Management task. TASK_MM = 0, @@ -182,7 +177,7 @@ enum { #define LMAC_FIRST_MSG(task) ((lmac_msg_id_t)((task) << 10)) #define DRV_TASK_ID 100 -#define MSG_I(msg) ((msg) & ((1<<10)-1)) +#define MSG_I(msg) ((msg) & ((1 << 10) - 1)) #define MSG_T(msg) ((lmac_task_id_t)((msg) >> 10)) enum dbg_msg_tag { @@ -238,25 +233,23 @@ enum dbg_msg_tag { DBG_GPIO_WRITE_REQ, DBG_GPIO_WRITE_CFM, - /// Max number of Debug messages DBG_MAX, }; #if !defined(CONFIG_M2D_OTA_LZMA_SUPPORT) -#define FW_M2D_OTA_NAME "m2d_ota.bin" +#define FW_M2D_OTA_NAME "m2d_ota.bin" #else -#define FW_M2D_OTA_NAME "m2d_ota_lzma.bin" +#define FW_M2D_OTA_NAME "m2d_ota_lzma.bin" #endif enum { HOST_START_APP_AUTO = 1, HOST_START_APP_CUSTOM, HOST_START_APP_FNCALL = 4, - HOST_START_APP_DUMMY = 5, + HOST_START_APP_DUMMY = 5, }; - struct dbg_mem_block_write_req { u32 memaddr; u32 memsize; @@ -317,10 +310,9 @@ struct dbg_start_app_cfm { int aicwf_plat_patch_load_8800dc(struct aic_sdio_dev *sdiodev); int aicwf_plat_rftest_load_8800dc(struct aic_sdio_dev *sdiodev); -#ifdef CONFIG_DPD -int aicwf_misc_ram_valid_check_8800dc(struct aic_sdio_dev *sdiodev, int *valid_out); -#endif #if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) +int aicwf_misc_ram_valid_check_8800dc(struct aic_sdio_dev *sdiodev, + int *valid_out); int aicwf_plat_calib_load_8800dc(struct aic_sdio_dev *sdiodev); #endif @@ -328,113 +320,128 @@ int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device); int aicwf_patch_table_load(struct aic_sdio_dev *rwnx_hw, char *filename); int rwnx_send_dbg_mem_read_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, - struct dbg_mem_read_cfm *cfm); -int rwnx_send_dbg_mem_block_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, - u32 mem_size, u32 *mem_data); -int rwnx_send_dbg_mem_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, u32 mem_data); + struct dbg_mem_read_cfm *cfm); +int rwnx_send_dbg_mem_block_write_req(struct aic_sdio_dev *sdiodev, + u32 mem_addr, u32 mem_size, + u32 *mem_data); +int rwnx_send_dbg_mem_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, + u32 mem_data); int rwnx_send_dbg_mem_mask_write_req(struct aic_sdio_dev *sdiodev, u32 mem_addr, - u32 mem_mask, u32 mem_data); -int rwnx_send_dbg_start_app_req(struct aic_sdio_dev *sdiodev, u32 boot_addr, u32 boot_type, struct dbg_start_app_cfm *start_app_cfm); + u32 mem_mask, u32 mem_data); +int rwnx_send_dbg_start_app_req(struct aic_sdio_dev *sdiodev, u32 boot_addr, + u32 boot_type, + struct dbg_start_app_cfm *start_app_cfm); -int rwnx_plat_bin_fw_upload_android(struct aic_sdio_dev *sdiodev, u32 fw_addr, const char *filename); +int rwnx_plat_bin_fw_upload_android(struct aic_sdio_dev *sdiodev, u32 fw_addr, + const char *filename); void rwnx_rx_handle_msg(struct aic_sdio_dev *sdiodev, struct ipc_e2a_msg *msg); int aicbsp_platform_init(struct aic_sdio_dev *sdiodev); void aicbsp_platform_deinit(struct aic_sdio_dev *sdiodev); int aicbsp_driver_fw_init(struct aic_sdio_dev *sdiodev); #if (defined(CONFIG_DPD) && !defined(CONFIG_FORCE_DPD_CALIB)) -int is_file_exist(char* name); +int is_file_exist(char *name); #endif int aicbsp_resv_mem_init(void); int aicbsp_resv_mem_deinit(void); -#define AICBSP_FW_PATH CONFIG_AIC_FW_PATH -#define AICBSP_FW_PATH_MAX 200 +#define AICBSP_FW_PATH CONFIG_AIC_FW_PATH +#define AICBSP_FW_PATH_MAX 200 -#define RAM_FMAC_FW_ADDR 0x00120000 -#define FW_RAM_ADID_BASE_ADDR 0x00161928 -#define FW_RAM_ADID_BASE_ADDR_U03 0x00161928 -#define FW_RAM_PATCH_BASE_ADDR 0x00100000 -#define RAM_8800DC_U01_ADID_ADDR 0x00101788 -#define RAM_8800DC_U02_ADID_ADDR 0x001017d8 -#define RAM_8800DC_FW_PATCH_ADDR 0x00184000 -#define FW_RESET_START_ADDR 0x40500128 -#define FW_RESET_START_VAL 0x40 -#define FW_ADID_FLAG_ADDR 0x40500150 -#define FW_ADID_FLAG_VAL 0x01 -#define FW_RAM_ADID_BASE_ADDR_8800D80 0x002017E0 -#define FW_RAM_PATCH_BASE_ADDR_8800D80 0x0020B2B0 -#define FW_RAM_ADID_BASE_ADDR_8800D80_U02 0x00201940 -#define FW_RAM_PATCH_BASE_ADDR_8800D80_U02 0x0020b43c - -#define AICBT_PT_TAG "AICBT_PT_TAG" +#define RAM_FMAC_FW_ADDR 0x00120000 +#define RAM_FMAC_FW_PATCH_ADDR 0x00190000 +#define FW_RAM_ADID_BASE_ADDR 0x00161928 +#define FW_RAM_ADID_BASE_ADDR_U03 0x00161928 +#define FW_RAM_PATCH_BASE_ADDR 0x00100000 +#define RAM_8800DC_U01_ADID_ADDR 0x00101788 +#define RAM_8800DC_U02_ADID_ADDR 0x001017d8 +#define RAM_8800DC_FW_PATCH_ADDR 0x00184000 +#define FW_RESET_START_ADDR 0x40500128 +#define FW_RESET_START_VAL 0x40 +#define FW_ADID_FLAG_ADDR 0x40500150 +#define FW_ADID_FLAG_VAL 0x01 +#define FW_RAM_ADID_BASE_ADDR_8800D80 0x002017E0 +#define FW_RAM_PATCH_BASE_ADDR_8800D80 0x0020B2B0 +#define FW_RAM_ADID_BASE_ADDR_8800D80_U02 0x00201940 +#define FW_RAM_PATCH_BASE_ADDR_8800D80_U02 0x0020b43c +#define AICBT_PT_TAG "AICBT_PT_TAG" /***************************************************************************** * Addresses within RWNX_ADDR_CPU *****************************************************************************/ -#define RAM_LMAC_FW_ADDR 0x00150000 +#define RAM_LMAC_FW_ADDR 0x00150000 -#define ROM_FMAC_FW_ADDR 0x00010000 -#define ROM_FMAC_PATCH_ADDR 0x00180000 +#define ROM_FMAC_FW_ADDR 0x00010000 +#define ROM_FMAC_PATCH_ADDR 0x00180000 -#define RWNX_MAC_CALIB_BASE_NAME_8800DC "fmacfw_calib_8800dc" -#define RWNX_MAC_CALIB_NAME_8800DC_U02 RWNX_MAC_CALIB_BASE_NAME_8800DC"_u02.bin" +#define RAM_FMAC_FW_PATCH_NAME "fmacfw_patch.bin" +#define RWNX_MAC_CALIB_BASE_NAME_8800DC "fmacfw_calib_8800dc" +#define RWNX_MAC_CALIB_NAME_8800DC_U02 \ + RWNX_MAC_CALIB_BASE_NAME_8800DC "_u02.bin" #ifdef CONFIG_SDIO_BT -#define RWNX_MAC_CALIB_NAME_8800DC_H_U02 RWNX_MAC_CALIB_BASE_NAME_8800DC"_hbt_u02.bin" +#define RWNX_MAC_CALIB_NAME_8800DC_H_U02 \ + RWNX_MAC_CALIB_BASE_NAME_8800DC "_hbt_u02.bin" #else -#define RWNX_MAC_CALIB_NAME_8800DC_H_U02 RWNX_MAC_CALIB_BASE_NAME_8800DC"_h_u02.bin" +#define RWNX_MAC_CALIB_NAME_8800DC_H_U02 \ + RWNX_MAC_CALIB_BASE_NAME_8800DC "_h_u02.bin" #endif #if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) -#define ROM_FMAC_CALIB_ADDR 0x00130000 +#define ROM_FMAC_CALIB_ADDR 0x00130000 #endif #ifdef CONFIG_DPD #ifndef CONFIG_FORCE_DPD_CALIB -#define FW_DPDRESULT_NAME_8800DC "aic_dpdresult_lite_8800dc.bin" +#define FW_DPDRESULT_NAME_8800DC "aic_dpdresult_lite_8800dc.bin" #endif #endif -#define RWNX_MAC_FW_RF_BASE_NAME_8800DC "lmacfw_rf_8800dc.bin" +#define RWNX_MAC_FW_RF_BASE_NAME_8800DC "lmacfw_rf_8800dc.bin" #ifdef CONFIG_FOR_IPCOM -#define RWNX_MAC_PATCH_BASE_NAME_8800DC "fmacfw_patch_8800dc_ipc" -#define RWNX_MAC_PATCH_NAME2_8800DC RWNX_MAC_PATCH_BASE_NAME_8800DC".bin" +#define RWNX_MAC_PATCH_BASE_NAME_8800DC "fmacfw_patch_8800dc_ipc" +#define RWNX_MAC_PATCH_NAME2_8800DC RWNX_MAC_PATCH_BASE_NAME_8800DC ".bin" #else -#define RWNX_MAC_PATCH_BASE_NAME_8800DC "fmacfw_patch_8800dc" -#define RWNX_MAC_PATCH_NAME2_8800DC RWNX_MAC_PATCH_BASE_NAME_8800DC".bin" -#define RWNX_MAC_PATCH_NAME2_8800DC_U02 RWNX_MAC_PATCH_BASE_NAME_8800DC"_u02.bin" +#define RWNX_MAC_PATCH_BASE_NAME_8800DC "fmacfw_patch_8800dc" +#define RWNX_MAC_PATCH_NAME2_8800DC RWNX_MAC_PATCH_BASE_NAME_8800DC ".bin" +#define RWNX_MAC_PATCH_NAME2_8800DC_U02 \ + RWNX_MAC_PATCH_BASE_NAME_8800DC "_u02.bin" #ifdef CONFIG_SDIO_BT -#define RWNX_MAC_PATCH_NAME2_8800DC_H_U02 RWNX_MAC_PATCH_BASE_NAME_8800DC"_hbt_u02.bin" +#define RWNX_MAC_PATCH_NAME2_8800DC_H_U02 \ + RWNX_MAC_PATCH_BASE_NAME_8800DC "_hbt_u02.bin" #else -#define RWNX_MAC_PATCH_NAME2_8800DC_H_U02 RWNX_MAC_PATCH_BASE_NAME_8800DC"_h_u02.bin" +#define RWNX_MAC_PATCH_NAME2_8800DC_H_U02 \ + RWNX_MAC_PATCH_BASE_NAME_8800DC "_h_u02.bin" #endif #endif #define RWNX_MAC_PATCH_TABLE_NAME_8800DC "fmacfw_patch_tbl_8800dc" #define RWNX_MAC_PATCH_TABLE_8800DC RWNX_MAC_PATCH_TABLE_NAME_8800DC ".bin" -#define RWNX_MAC_PATCH_TABLE_8800DC_U02 RWNX_MAC_PATCH_TABLE_NAME_8800DC "_u02.bin" +#define RWNX_MAC_PATCH_TABLE_8800DC_U02 \ + RWNX_MAC_PATCH_TABLE_NAME_8800DC "_u02.bin" #ifdef CONFIG_SDIO_BT -#define RWNX_MAC_PATCH_TABLE_8800DC_H_U02 RWNX_MAC_PATCH_TABLE_NAME_8800DC "_hbt_u02.bin" +#define RWNX_MAC_PATCH_TABLE_8800DC_H_U02 \ + RWNX_MAC_PATCH_TABLE_NAME_8800DC "_hbt_u02.bin" #else -#define RWNX_MAC_PATCH_TABLE_8800DC_H_U02 RWNX_MAC_PATCH_TABLE_NAME_8800DC "_h_u02.bin" +#define RWNX_MAC_PATCH_TABLE_8800DC_H_U02 \ + RWNX_MAC_PATCH_TABLE_NAME_8800DC "_h_u02.bin" #endif -#define RWNX_MAC_RF_PATCH_BASE_NAME_8800DC "fmacfw_rf_patch_8800dc" -#define RWNX_MAC_RF_PATCH_NAME_8800DC RWNX_MAC_RF_PATCH_BASE_NAME_8800DC".bin" -#define FW_USERCONFIG_NAME_8800DC "aic_userconfig_8800dc.txt" +#define RWNX_MAC_RF_PATCH_BASE_NAME_8800DC "fmacfw_rf_patch_8800dc" +#define RWNX_MAC_RF_PATCH_NAME_8800DC RWNX_MAC_RF_PATCH_BASE_NAME_8800DC ".bin" +#define FW_USERCONFIG_NAME_8800DC "aic_userconfig_8800dc.txt" enum { - FW_NORMAL_MODE = 0, - FW_RFTEST_MODE = 1, - FW_BLE_SCAN_WAKEUP_MODE = 2, - FW_M2D_OTA_MODE = 3, - FW_DPDCALIB_MODE = 4, - FW_BLE_SCAN_AD_FILTER_MODE = 5, + FW_NORMAL_MODE = 0, + FW_RFTEST_MODE = 1, + FW_BLE_SCAN_WAKEUP_MODE = 2, + FW_M2D_OTA_MODE = 3, + FW_DPDCALIB_MODE = 4, + FW_BLE_SCAN_AD_FILTER_MODE = 5, }; enum aicbt_patch_table_type { - AICBT_PT_INF = 0x00, + AICBT_PT_INF = 0x00, AICBT_PT_TRAP = 0x1, AICBT_PT_B4, AICBT_PT_BTMODE, @@ -454,13 +461,13 @@ enum aicbt_btport_type { * efuse valid and vendor_info will be invalid, even has beed set valid */ enum aicbt_btmode_type { - AICBT_BTMODE_BT_ONLY_SW = 0x0, // bt only mode with switch - AICBT_BTMODE_BT_WIFI_COMBO, // wifi/bt combo mode - AICBT_BTMODE_BT_ONLY, // bt only mode without switch - AICBT_BTMODE_BT_ONLY_TEST, // bt only test mode - AICBT_BTMODE_BT_WIFI_COMBO_TEST, // wifi/bt combo test mode - AICBT_BTMODE_BT_ONLY_COANT, // bt only mode with no external switch - AICBT_MODE_NULL = 0xFF, // invalid value + AICBT_BTMODE_BT_ONLY_SW = 0x0, // bt only mode with switch + AICBT_BTMODE_BT_WIFI_COMBO, // wifi/bt combo mode + AICBT_BTMODE_BT_ONLY, // bt only mode without switch + AICBT_BTMODE_BT_ONLY_TEST, // bt only test mode + AICBT_BTMODE_BT_WIFI_COMBO_TEST, // wifi/bt combo test mode + AICBT_BTMODE_BT_ONLY_COANT, // bt only mode with no external switch + AICBT_MODE_NULL = 0xFF, // invalid value }; /* uart_baud @@ -468,15 +475,15 @@ enum aicbt_btmode_type { * otherwise meaningless */ enum aicbt_uart_baud_type { - AICBT_UART_BAUD_115200 = 115200, - AICBT_UART_BAUD_921600 = 921600, - AICBT_UART_BAUD_1_5M = 1500000, - AICBT_UART_BAUD_3_25M = 3250000, + AICBT_UART_BAUD_115200 = 115200, + AICBT_UART_BAUD_921600 = 921600, + AICBT_UART_BAUD_1_5M = 1500000, + AICBT_UART_BAUD_3_25M = 3250000, }; enum aicbt_uart_flowctrl_type { - AICBT_UART_FLOWCTRL_DISABLE = 0x0, // uart without flow ctrl - AICBT_UART_FLOWCTRL_ENABLE, // uart with flow ctrl + AICBT_UART_FLOWCTRL_DISABLE = 0x0, // uart without flow ctrl + AICBT_UART_FLOWCTRL_ENABLE, // uart with flow ctrl }; enum aicbsp_cpmode_type { @@ -492,48 +499,50 @@ enum chip_rev { CHIP_REV_U04 = 7, }; -#define AIC_M2D_OTA_INFO_ADDR 0x88000020 -#define AIC_M2D_OTA_DATA_ADDR 0x88000040 +#define AIC_M2D_OTA_INFO_ADDR 0x88000020 +#define AIC_M2D_OTA_DATA_ADDR 0x88000040 #if !defined(CONFIG_M2D_OTA_LZMA_SUPPORT) -#define AIC_M2D_OTA_FLASH_ADDR 0x08004000 +#define AIC_M2D_OTA_FLASH_ADDR 0x08004000 #define AIC_M2D_OTA_CODE_START_ADDR (AIC_M2D_OTA_FLASH_ADDR + 0x0188) -#define AIC_M2D_OTA_VER_ADDR (AIC_M2D_OTA_FLASH_ADDR + 0x018C) +#define AIC_M2D_OTA_VER_ADDR (AIC_M2D_OTA_FLASH_ADDR + 0x018C) #else -#define AIC_M2D_OTA_FLASH_ADDR 0x08005000 +#define AIC_M2D_OTA_FLASH_ADDR 0x08005000 #define AIC_M2D_OTA_CODE_START_ADDR (AIC_M2D_OTA_FLASH_ADDR + 0x1188) -#define AIC_M2D_OTA_VER_ADDR (AIC_M2D_OTA_FLASH_ADDR + 0x0010) +#define AIC_M2D_OTA_VER_ADDR (AIC_M2D_OTA_FLASH_ADDR + 0x0010) #endif ///aic bt tx pwr lvl :lsb->msb: first byte, min pwr lvl; second byte, max pwr lvl; ///pwr lvl:20(min), 30 , 40 , 50 , 60(max) -#define AICBT_TXPWR_LVL 0x00006020 -#define AICBT_TXPWR_LVL_8800dc 0x00006f2f -#define AICBT_TXPWR_LVL_8800d80 0x00006f2f +#define AICBT_TXPWR_LVL 0x00006020 +#define AICBT_TXPWR_LVL_8800dc 0x00006f2f +#define AICBT_TXPWR_LVL_8800d80 0x00006f2f +#define AICBT_TXPWR_LVL_8800d80x2 0x00006f2f -#define AICBSP_HWINFO_DEFAULT (-1) -#define AICBSP_CPMODE_DEFAULT AICBSP_CPMODE_WORK -#define AICBSP_FWLOG_EN_DEFAULT 0 +#define AICBSP_HWINFO_DEFAULT (-1) +#define AICBSP_CPMODE_DEFAULT AICBSP_CPMODE_WORK +#define AICBSP_FWLOG_EN_DEFAULT 0 -#define AICBT_BTMODE_DEFAULT_8800d80 AICBT_BTMODE_BT_ONLY_COANT -#define AICBT_BTMODE_DEFAULT AICBT_BTMODE_BT_ONLY_SW +#define AICBT_BTMODE_DEFAULT_8800d80x2 AICBT_BTMODE_BT_ONLY_COANT +#define AICBT_BTMODE_DEFAULT_8800d80 AICBT_BTMODE_BT_ONLY_COANT +#define AICBT_BTMODE_DEFAULT AICBT_BTMODE_BT_ONLY_SW #ifdef CONFIG_SDIO_BT -#define AICBT_BTPORT_DEFAULT AICBT_BTPORT_MB +#define AICBT_BTPORT_DEFAULT AICBT_BTPORT_MB #else -#define AICBT_BTPORT_DEFAULT AICBT_BTPORT_UART +#define AICBT_BTPORT_DEFAULT AICBT_BTPORT_UART #endif -#define AICBT_UART_BAUD_DEFAULT AICBT_UART_BAUD_1_5M -#define AICBT_UART_FC_DEFAULT AICBT_UART_FLOWCTRL_ENABLE -#define AICBT_LPM_ENABLE_DEFAULT 0 -#define AICBT_TXPWR_LVL_DEFAULT AICBT_TXPWR_LVL -#define AICBT_TXPWR_LVL_DEFAULT_8800dc AICBT_TXPWR_LVL_8800dc +#define AICBT_UART_BAUD_DEFAULT AICBT_UART_BAUD_1_5M +#define AICBT_UART_FC_DEFAULT AICBT_UART_FLOWCTRL_ENABLE +#define AICBT_LPM_ENABLE_DEFAULT 0 +#define AICBT_TXPWR_LVL_DEFAULT AICBT_TXPWR_LVL +#define AICBT_TXPWR_LVL_DEFAULT_8800dc AICBT_TXPWR_LVL_8800dc #define AICBT_TXPWR_LVL_DEFAULT_8800d80 AICBT_TXPWR_LVL_8800d80 +#define AICBT_TXPWR_LVL_DEFAULT_8800d80x2 AICBT_TXPWR_LVL_8800d80x2 - -#define FEATURE_SDIO_CLOCK 50000000 // 0: default, other: target clock rate -#define FEATURE_SDIO_CLOCK_V3 150000000 // 0: default, other: target clock rate -#define FEATURE_SDIO_PHASE 2 // 0: default, 2: 180° +#define FEATURE_SDIO_CLOCK 50000000 // 0: default, other: target clock rate +#define FEATURE_SDIO_CLOCK_V3 150000000 // 0: default, other: target clock rate +#define FEATURE_SDIO_PHASE 2 // 0: default, 2: 180° struct aicbt_patch_table { - char *name; + char *name; uint32_t type; uint32_t *data; uint32_t len; @@ -550,15 +559,21 @@ struct aicbt_info_t { }; struct aicbt_patch_info_t { - uint32_t info_len; - uint32_t adid_addrinf; + uint32_t info_len; + //base len start + uint32_t adid_addrinf; uint32_t addr_adid; - uint32_t patch_addrinf; + uint32_t patch_addrinf; uint32_t addr_patch; uint32_t reset_addr; uint32_t reset_val; uint32_t adid_flag_addr; uint32_t adid_flag; + //base len end + //ext patch nb + uint32_t ext_patch_nb_addr; + uint32_t ext_patch_nb; + uint32_t *ext_patch_param; }; struct aicbsp_firmware { @@ -567,6 +582,7 @@ struct aicbsp_firmware { const char *bt_patch; const char *bt_table; const char *wl_fw; + const char *bt_ext_patch; }; struct aicbsp_info_t { @@ -589,5 +605,6 @@ extern const struct aicbsp_firmware fw_8800dc_h_u02[]; extern const struct aicbsp_firmware fw_8800d80_u01[]; extern const struct aicbsp_firmware fw_8800d80_u02[]; extern const struct aicbsp_firmware fw_8800d80_h_u02[]; +extern const struct aicbsp_firmware fw_8800d80x2[]; #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_export.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_export.h index 249d6ec08..062eadb44 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_export.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_export.h @@ -24,39 +24,45 @@ struct skb_buff_pool { }; struct aicbsp_feature_t { - int hwinfo; + int hwinfo; uint32_t sdio_clock; - uint8_t sdio_phase; - bool fwlog_en; - uint8_t irqf; + uint8_t sdio_phase; + bool fwlog_en; + uint8_t irqf; }; -#ifdef CONFIG_DPD +#if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) typedef struct { - uint32_t bit_mask[3]; - uint32_t reserved; - uint32_t dpd_high[96]; - uint32_t dpd_11b[96]; - uint32_t dpd_low[96]; - uint32_t idac_11b[48]; - uint32_t idac_high[48]; - uint32_t idac_low[48]; - uint32_t loft_res[18]; - uint32_t rx_iqim_res[16]; + uint32_t bit_mask[3]; + uint32_t reserved; + uint32_t dpd_high[96]; + uint32_t dpd_11b[96]; + uint32_t dpd_low[96]; + uint32_t idac_11b[48]; + uint32_t idac_high[48]; + uint32_t idac_low[48]; + uint32_t loft_res[18]; + uint32_t rx_iqim_res[16]; } rf_misc_ram_t; typedef struct { - uint32_t bit_mask[4]; - uint32_t dpd_high[96]; - uint32_t loft_res[18]; + uint32_t bit_mask[4]; + uint32_t dpd_high[96]; + uint32_t loft_res[18]; } rf_misc_ram_lite_t; -#define MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#define DPD_RESULT_SIZE_8800DC sizeof(rf_misc_ram_lite_t) +#define MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#define DPD_RESULT_SIZE_8800DC sizeof(rf_misc_ram_lite_t) +#endif +#ifdef CONFIG_DPD extern rf_misc_ram_lite_t dpd_res; #endif +#ifdef CONFIG_LOFT_CALIB +extern rf_misc_ram_lite_t loft_res_local; +#endif + int aicbsp_set_subsys(int, int); int aicbsp_get_feature(struct aicbsp_feature_t *feature, char *fw_path); struct sk_buff *aicbsp_resv_mem_alloc_skb(unsigned int length, uint32_t id); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_main.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_main.c index 1bbc2fe5d..eb727920f 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_main.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aic_bsp_main.c @@ -9,88 +9,79 @@ #include "rwnx_version_gen.h" #include "aicwf_txq_prealloc.h" +#define DRV_DESCRIPTION "AIC BSP" +#define DRV_COPYRIGHT "Copyright(c) 2015-2020 AICSemi" +#define DRV_AUTHOR "AICSemi" +#define DRV_VERS_MOD "1.0" -#define DRV_DESCRIPTION "AIC BSP" -#define DRV_COPYRIGHT "Copyright(c) 2015-2020 AICSemi" -#define DRV_AUTHOR "AICSemi" -#define DRV_VERS_MOD "1.0" +int aicwf_dbg_level_bsp = LOGERROR | LOGINFO | LOGDEBUG | LOGTRACE; -int aicwf_dbg_level_bsp = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE; +struct semaphore aicbsp_probe_semaphore; static struct platform_device *aicbsp_pdev; const struct aicbsp_firmware *aicbsp_firmware_list = fw_u02; const struct aicbsp_firmware fw_u02[] = { - [AICBSP_CPMODE_WORK] = { - .desc = "normal work mode(sdio u02)", - .bt_adid = "fw_adid.bin", - .bt_patch = "fw_patch.bin", - .bt_table = "fw_patch_table.bin", - #ifdef CONFIG_SDIO_BT - .wl_fw = "fmacfwbt.bin" - #else - .wl_fw = "fmacfw.bin" - #endif - }, - [AICBSP_CPMODE_TEST] = { - .desc = "rf test mode(sdio u02)", - .bt_adid = "fw_adid.bin", - .bt_patch = "fw_patch.bin", - .bt_table = "fw_patch_table.bin", - .wl_fw = "fmacfw_rf.bin" + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(sdio u02)", + .bt_adid = "fw_adid.bin", + .bt_patch = "fw_patch.bin", + .bt_table = "fw_patch_table.bin", +#ifdef CONFIG_SDIO_BT + .wl_fw = "fmacfwbt.bin" +#else + .wl_fw = "fmacfw.bin" +#endif }, + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(sdio u02)", + .bt_adid = "fw_adid.bin", + .bt_patch = "fw_patch.bin", + .bt_table = "fw_patch_table.bin", + .wl_fw = "fmacfw_rf.bin" }, }; const struct aicbsp_firmware fw_u03[] = { - [AICBSP_CPMODE_WORK] = { - .desc = "normal work mode(sdio u03/u04)", - .bt_adid = "fw_adid_u03.bin", - .bt_patch = "fw_patch_u03.bin", - .bt_table = "fw_patch_table_u03.bin", - #ifdef CONFIG_MCU_MESSAGE - .wl_fw = "fmacfw_8800m_custmsg.bin" - #elif defined(CONFIG_SDIO_BT) - .wl_fw = "fmacfwbt.bin" - #else - .wl_fw = "fmacfw.bin" - #endif + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(sdio u03/u04)", + .bt_adid = "fw_adid_u03.bin", + .bt_patch = "fw_patch_u03.bin", + .bt_table = "fw_patch_table_u03.bin", +#ifdef CONFIG_MCU_MESSAGE + .wl_fw = "fmacfw_8800m_custmsg.bin" +#elif defined(CONFIG_SDIO_BT) + .wl_fw = "fmacfwbt.bin" +#else + .wl_fw = "fmacfw.bin" +#endif }, - [AICBSP_CPMODE_TEST] = { - .desc = "rf test mode(sdio u03/u04)", - .bt_adid = "fw_adid_u03.bin", - .bt_patch = "fw_patch_u03.bin", - .bt_table = "fw_patch_table_u03.bin", - .wl_fw = "fmacfw_rf.bin" - }, + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(sdio u03/u04)", + .bt_adid = "fw_adid_u03.bin", + .bt_patch = "fw_patch_u03.bin", + .bt_table = "fw_patch_table_u03.bin", + .wl_fw = "fmacfw_rf.bin" }, }; const struct aicbsp_firmware fw_8800dc_u01[] = { - [AICBSP_CPMODE_WORK] = { - .desc = "normal work mode(sdio u01)", - .bt_adid = "fw_adid_8800dc.bin", - .bt_patch = "fw_patch_8800dc.bin", - .bt_table = "fw_patch_table_8800dc.bin", - .wl_fw = "fmacfw_8800dc.bin" - }, + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(sdio u01)", + .bt_adid = "fw_adid_8800dc.bin", + .bt_patch = "fw_patch_8800dc.bin", + .bt_table = "fw_patch_table_8800dc.bin", + .wl_fw = "fmacfw_8800dc.bin" }, - [AICBSP_CPMODE_TEST] = { - .desc = "rf test mode(sdio u01)", - .bt_adid = "fw_adid_8800dc.bin", - .bt_patch = "fw_patch_8800dc.bin", - .bt_table = "fw_patch_table_8800dc.bin", - .wl_fw = "fmacfw_rf_8800dc.bin" - }, + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(sdio u01)", + .bt_adid = "fw_adid_8800dc.bin", + .bt_patch = "fw_patch_8800dc.bin", + .bt_table = "fw_patch_table_8800dc.bin", + .wl_fw = "fmacfw_rf_8800dc.bin" }, }; - const struct aicbsp_firmware fw_8800dc_u02[] = { [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(8800dc sdio u02)", .bt_adid = "fw_adid_8800dc_u02.bin", .bt_patch = "fw_patch_8800dc_u02.bin", .bt_table = "fw_patch_table_8800dc_u02.bin", + .bt_ext_patch = "fw_patch_8800dc_u02_ext", .wl_fw = "fmacfw_patch_8800dc_u02.bin" }, @@ -99,6 +90,7 @@ const struct aicbsp_firmware fw_8800dc_u02[] = { .bt_adid = "fw_adid_8800dc_u02.bin", .bt_patch = "fw_patch_8800dc_u02.bin", .bt_table = "fw_patch_table_8800dc_u02.bin", + .bt_ext_patch = "fw_patch_8800dc_u02_ext", .wl_fw = "lmacfw_rf_8800dc.bin" //u01,u02 lmacfw load same bin }, }; @@ -109,6 +101,7 @@ const struct aicbsp_firmware fw_8800dc_h_u02[] = { .bt_adid = "fw_adid_8800dc_u02h.bin", .bt_patch = "fw_patch_8800dc_u02h.bin", .bt_table = "fw_patch_table_8800dc_u02h.bin", + .bt_ext_patch = "fw_patch_8800dc_u02h_ext", .wl_fw = "fmacfw_patch_8800dc_h_u02.bin" }, @@ -117,82 +110,98 @@ const struct aicbsp_firmware fw_8800dc_h_u02[] = { .bt_adid = "fw_adid_8800dc_u02h.bin", .bt_patch = "fw_patch_8800dc_u02h.bin", .bt_table = "fw_patch_table_8800dc_u02h.bin", + .bt_ext_patch = "fw_patch_8800dc_u02h_ext", .wl_fw = "lmacfw_rf_8800dc.bin" //u01,u02 lmacfw load same bin }, }; - const struct aicbsp_firmware fw_8800d80_u01[] = { - [AICBSP_CPMODE_WORK] = { - .desc = "normal work mode(8800d80 sdio u01)", - .bt_adid = "fw_adid_8800d80.bin", - .bt_patch = "fw_patch_8800d80.bin", - .bt_table = "fw_patch_table_8800d80.bin", - .wl_fw = "fmacfw_8800d80.bin" - }, + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(8800d80 sdio u01)", + .bt_adid = "fw_adid_8800d80.bin", + .bt_patch = "fw_patch_8800d80.bin", + .bt_table = "fw_patch_table_8800d80.bin", + .wl_fw = "fmacfw_8800d80.bin" }, - [AICBSP_CPMODE_TEST] = { - .desc = "rf test mode(8800d80 sdio u01)", - .bt_adid = "fw_adid_8800d80.bin", - .bt_patch = "fw_patch_8800d80.bin", - .bt_table = "fw_patch_table_8800d80.bin", - .wl_fw = "lmacfw_rf_8800d80.bin" - }, + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(8800d80 sdio u01)", + .bt_adid = "fw_adid_8800d80.bin", + .bt_patch = "fw_patch_8800d80.bin", + .bt_table = "fw_patch_table_8800d80.bin", + .wl_fw = "lmacfw_rf_8800d80.bin" }, }; const struct aicbsp_firmware fw_8800d80_u02[] = { - [AICBSP_CPMODE_WORK] = { - .desc = "normal work mode(8800d80 sdio u02)", - .bt_adid = "fw_adid_8800d80_u02.bin", - .bt_patch = "fw_patch_8800d80_u02.bin", - .bt_table = "fw_patch_table_8800d80_u02.bin", - #ifdef CONFIG_SDIO_BT - .wl_fw = "fmacfwbt_8800d80_u02.bin" - #else - .wl_fw = "fmacfw_8800d80_u02.bin" - #endif - }, + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(8800d80 sdio u02)", + .bt_adid = "fw_adid_8800d80_u02.bin", + .bt_patch = "fw_patch_8800d80_u02.bin", + .bt_table = "fw_patch_table_8800d80_u02.bin", +#if defined CONFIG_SDIO_BT + .wl_fw = "fmacfwbt_8800d80_u02.bin", +#elif defined CONFIG_FOR_IPCAM + .wl_fw = "fmacfw_8800d80_u02_ipc.bin", +#else + .wl_fw = "fmacfw_8800d80_u02.bin", +#endif + .bt_ext_patch = "fw_patch_8800d80_u02_ext" }, - [AICBSP_CPMODE_TEST] = { - .desc = "rf test mode(8800d80 sdio u02)", - .bt_adid = "fw_adid_8800d80_u02.bin", - .bt_patch = "fw_patch_8800d80_u02.bin", - .bt_table = "fw_patch_table_8800d80_u02.bin", - .wl_fw = "lmacfw_rf_8800d80_u02.bin" - }, + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(8800d80 sdio u02)", + .bt_adid = "fw_adid_8800d80_u02.bin", + .bt_patch = "fw_patch_8800d80_u02.bin", + .bt_table = "fw_patch_table_8800d80_u02.bin", + .wl_fw = "lmacfw_rf_8800d80_u02.bin", + .bt_ext_patch = "fw_patch_8800d80_u02_ext" }, }; const struct aicbsp_firmware fw_8800d80_h_u02[] = { - [AICBSP_CPMODE_WORK] = { - .desc = "normal work mode(8800d80 sdio h_u02)", - .bt_adid = "fw_adid_8800d80_u02.bin", - .bt_patch = "fw_patch_8800d80_u02.bin", - .bt_table = "fw_patch_table_8800d80_u02.bin", - #ifdef CONFIG_SDIO_BT - .wl_fw = "fmacfwbt_8800d80_h_u02.bin" - #else - .wl_fw = "fmacfw_8800d80_h_u02.bin" - #endif - }, + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(8800d80 sdio h_u02)", + .bt_adid = "fw_adid_8800d80_u02.bin", + .bt_patch = "fw_patch_8800d80_u02.bin", + .bt_table = "fw_patch_table_8800d80_u02.bin", +#if defined CONFIG_SDIO_BT + .wl_fw = "fmacfwbt_8800d80_h_u02.bin", +#elif defined CONFIG_FOR_IPCAM + .wl_fw = "fmacfw_8800d80_h_u02_ipc.bin", +#else + .wl_fw = "fmacfw_8800d80_h_u02.bin", +#endif + .bt_ext_patch = "fw_patch_8800d80_u02_ext" }, - [AICBSP_CPMODE_TEST] = { - .desc = "rf test mode(8800d80 sdio u02)", - .bt_adid = "fw_adid_8800d80_u02.bin", - .bt_patch = "fw_patch_8800d80_u02.bin", - .bt_table = "fw_patch_table_8800d80_u02.bin", - .wl_fw = "lmacfw_rf_8800d80_u02.bin" - }, + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(8800d80 sdio u02)", + .bt_adid = "fw_adid_8800d80_u02.bin", + .bt_patch = "fw_patch_8800d80_u02.bin", + .bt_table = "fw_patch_table_8800d80_u02.bin", + .wl_fw = "lmacfw_rf_8800d80_u02.bin", + .bt_ext_patch = "fw_patch_8800d80_u02_ext" }, +}; + +const struct aicbsp_firmware fw_8800d80x2[] = { + [AICBSP_CPMODE_WORK] = { .desc = "normal work mode(8800d80x2 sdio)", + .bt_adid = "fw_adid_8800d80x2_u05.bin", + .bt_patch = "fw_patch_8800d80x2_u05.bin", + .bt_table = "fw_patch_table_8800d80x2_u05.bin", +#ifdef CONFIG_SDIO_BT + .wl_fw = "fmacfwbt_8800d80_h_u02.bin", +#else + .wl_fw = "fmacfw_8800d80x2.bin", +#endif + .bt_ext_patch = "fw_patch_8800d80x2_u05_ext" }, + + [AICBSP_CPMODE_TEST] = { .desc = "rf test mode(8800d80x2 sdio)", + .bt_adid = "fw_adid_8800d80x2_u05.bin", + .bt_patch = "fw_patch_8800d80x2_u05.bin", + .bt_table = "fw_patch_table_8800d80x2_u05.bin", + .wl_fw = "lmacfw_rf_8800d80x2.bin", + .bt_ext_patch = "fw_patch_8800d80x2_u05_ext" }, }; struct aicbsp_info_t aicbsp_info = { .hwinfo_r = AICBSP_HWINFO_DEFAULT, - .hwinfo = AICBSP_HWINFO_DEFAULT, - .cpmode = AICBSP_CPMODE_DEFAULT, + .hwinfo = AICBSP_HWINFO_DEFAULT, + .cpmode = AICBSP_CPMODE_DEFAULT, .fwlog_en = AICBSP_FWLOG_EN_DEFAULT, #ifdef CONFIG_IRQ_FALL - .irqf = 1, + .irqf = 1, #else - .irqf = 0, + .irqf = 0, #endif }; @@ -207,8 +216,8 @@ static struct platform_driver aicbsp_driver = { //.remove = aicbsp_remove, }; -static ssize_t cpmode_show(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t cpmode_show(struct device *dev, struct device_attribute *attr, + char *buf) { ssize_t count = 0; uint8_t i = 0; @@ -217,19 +226,25 @@ static ssize_t cpmode_show(struct device *dev, for (i = 0; i < AICBSP_CPMODE_MAX; i++) { if (aicbsp_firmware_list[i].desc) - count += sprintf(&buf[count], " %2d: %s\n", i, aicbsp_firmware_list[i].desc); + count += sprintf(&buf[count], " %2d: %s\n", i, + aicbsp_firmware_list[i].desc); } - count += sprintf(&buf[count], "Current: %d, firmware info:\n", aicbsp_info.cpmode); - count += sprintf(&buf[count], " BT ADID : %s\n", aicbsp_firmware_list[aicbsp_info.cpmode].bt_adid); - count += sprintf(&buf[count], " BT PATCH: %s\n", aicbsp_firmware_list[aicbsp_info.cpmode].bt_patch); - count += sprintf(&buf[count], " BT TABLE: %s\n", aicbsp_firmware_list[aicbsp_info.cpmode].bt_table); - count += sprintf(&buf[count], " WIFI FW : %s\n", aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw); + count += sprintf(&buf[count], "Current: %d, firmware info:\n", + aicbsp_info.cpmode); + count += sprintf(&buf[count], " BT ADID : %s\n", + aicbsp_firmware_list[aicbsp_info.cpmode].bt_adid); + count += sprintf(&buf[count], " BT PATCH: %s\n", + aicbsp_firmware_list[aicbsp_info.cpmode].bt_patch); + count += sprintf(&buf[count], " BT TABLE: %s\n", + aicbsp_firmware_list[aicbsp_info.cpmode].bt_table); + count += sprintf(&buf[count], " WIFI FW : %s\n", + aicbsp_firmware_list[aicbsp_info.cpmode].wl_fw); return count; } -static ssize_t cpmode_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) +static ssize_t cpmode_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) { unsigned long val; int err = kstrtoul(buf, 0, &val); @@ -242,13 +257,14 @@ static ssize_t cpmode_store(struct device *dev, } aicbsp_info.cpmode = val; - printk("%s, set mode to: %lu[%s] done\n", __func__, val, aicbsp_firmware_list[val].desc); + printk("%s, set mode to: %lu[%s] done\n", __func__, val, + aicbsp_firmware_list[val].desc); return count; } -static ssize_t hwinfo_show(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t hwinfo_show(struct device *dev, struct device_attribute *attr, + char *buf) { ssize_t count = 0; @@ -260,20 +276,23 @@ static ssize_t hwinfo_show(struct device *dev, count += sprintf(&buf[count], "hwinfo read: "); if (aicbsp_info.hwinfo_r < 0) - count += sprintf(&buf[count], "%d(not avalible), ", aicbsp_info.hwinfo_r); + count += sprintf(&buf[count], "%d(not avalible), ", + aicbsp_info.hwinfo_r); else count += sprintf(&buf[count], "0x%02X, ", aicbsp_info.hwinfo_r); if (aicbsp_info.hwinfo < 0) - count += sprintf(&buf[count], "set: %d(not avalible)\n", aicbsp_info.hwinfo); + count += sprintf(&buf[count], "set: %d(not avalible)\n", + aicbsp_info.hwinfo); else - count += sprintf(&buf[count], "set: 0x%02X\n", aicbsp_info.hwinfo); + count += sprintf(&buf[count], "set: 0x%02X\n", + aicbsp_info.hwinfo); return count; } -static ssize_t hwinfo_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) +static ssize_t hwinfo_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) { long val; int err = kstrtol(buf, 0, &val); @@ -292,19 +311,19 @@ static ssize_t hwinfo_store(struct device *dev, return count; } -static ssize_t fwdebug_show(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t fwdebug_show(struct device *dev, struct device_attribute *attr, + char *buf) { ssize_t count = 0; count += sprintf(&buf[count], "fw log status: %s\n", - aicbsp_info.fwlog_en ? "on" : "off"); + aicbsp_info.fwlog_en ? "on" : "off"); return count; } -static ssize_t fwdebug_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t count) +static ssize_t fwdebug_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) { long val; int err = kstrtol(buf, 0, &val); @@ -323,14 +342,11 @@ static ssize_t fwdebug_store(struct device *dev, return count; } -static DEVICE_ATTR(cpmode, S_IRUGO | S_IWUSR, - cpmode_show, cpmode_store); +static DEVICE_ATTR(cpmode, S_IRUGO | S_IWUSR, cpmode_show, cpmode_store); -static DEVICE_ATTR(hwinfo, S_IRUGO | S_IWUSR, - hwinfo_show, hwinfo_store); +static DEVICE_ATTR(hwinfo, S_IRUGO | S_IWUSR, hwinfo_show, hwinfo_store); -static DEVICE_ATTR(fwdebug, S_IRUGO | S_IWUSR, - fwdebug_show, fwdebug_store); +static DEVICE_ATTR(fwdebug, S_IRUGO | S_IWUSR, fwdebug_show, fwdebug_store); static struct attribute *aicbsp_attributes[] = { &dev_attr_cpmode.attr, @@ -340,7 +356,7 @@ static struct attribute *aicbsp_attributes[] = { }; static struct attribute_group aicbsp_attribute_group = { - .name = "aicbsp_info", + .name = "aicbsp_info", .attrs = aicbsp_attributes, }; @@ -349,7 +365,6 @@ int adap_test = 0; module_param(testmode, int, 0660); module_param(adap_test, int, 0660); - static int __init aicbsp_init(void) { int ret; @@ -359,6 +374,9 @@ static int __init aicbsp_init(void) aicbsp_info.cpmode = testmode; aicbsp_resv_mem_init(); + + sema_init(&aicbsp_probe_semaphore, 0); + ret = platform_driver_register(&aicbsp_driver); if (ret) { pr_err("register platform driver failed: %d\n", ret); @@ -372,7 +390,8 @@ static int __init aicbsp_init(void) return ret; } - ret = sysfs_create_group(&(aicbsp_pdev->dev.kobj), &aicbsp_attribute_group); + ret = sysfs_create_group(&(aicbsp_pdev->dev.kobj), + &aicbsp_attribute_group); if (ret) { pr_err("register sysfs create group failed!\n"); return ret; @@ -391,9 +410,9 @@ extern struct aic_sdio_dev *aicbsp_sdiodev; static void __exit aicbsp_exit(void) { #if defined CONFIG_PLATFORM_ROCKCHIP || defined CONFIG_PLATFORM_ROCKCHIP2 - if(aicbsp_sdiodev){ - aicbsp_sdio_exit(); - } + if (aicbsp_sdiodev) { + aicbsp_sdio_exit(); + } #endif sysfs_remove_group(&(aicbsp_pdev->dev.kobj), &aicbsp_attribute_group); platform_device_del(aicbsp_pdev); @@ -401,7 +420,7 @@ static void __exit aicbsp_exit(void) mutex_destroy(&aicbsp_power_lock); aicbsp_resv_mem_deinit(); #ifdef CONFIG_PREALLOC_TXQ - aicwf_prealloc_txq_free(); + aicwf_prealloc_txq_free(); #endif printk("%s\n", __func__); } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.c index 75d235bf4..fca9cbea4 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.c @@ -27,7 +27,6 @@ #include #endif /* CONFIG_PLATFORM_ROCKCHIP */ - #ifdef CONFIG_PLATFORM_ALLWINNER extern void sunxi_mmc_rescan_card(unsigned ids); extern void sunxi_wlan_set_power(int on); @@ -35,20 +34,19 @@ extern int sunxi_wlan_get_bus_index(void); static int aicbsp_bus_index = -1; #endif -#ifdef CONFIG_PLATFORM_AMLOGIC//for AML +#ifdef CONFIG_PLATFORM_AMLOGIC //for AML #include extern void sdio_reinit(void); extern void extern_wifi_set_enable(int is_on); extern void set_power_control_lock(int lock); -#endif//for AML - +#endif //for AML static int aicbsp_platform_power_on(void); static void aicbsp_platform_power_off(void); struct aic_sdio_dev *aicbsp_sdiodev = NULL; static struct semaphore *aicbsp_notify_semaphore; -static struct semaphore *aicbsp_probe_semaphore = NULL; +extern struct semaphore aicbsp_probe_semaphore; static const struct sdio_device_id aicbsp_sdmmc_ids[]; static bool aicbsp_load_fw_in_fdrv = false; @@ -58,47 +56,48 @@ static bool aicbsp_load_fw_in_fdrv = false; //#ifdef CONFIG_PLATFORM_UBUNTU //static const char* aic_default_fw_path = "/lib/firmware/aic8800_sdio"; //#else -static const char* aic_default_fw_path = CONFIG_AIC_FW_PATH; +static const char *aic_default_fw_path = CONFIG_AIC_FW_PATH; //#endif char aic_fw_path[FW_PATH_MAX]; module_param_string(aic_fw_path, aic_fw_path, FW_PATH_MAX, 0660); #ifdef CONFIG_M2D_OTA_AUTO_SUPPORT char saved_sdk_ver[64]; -module_param_string(saved_sdk_ver, saved_sdk_ver,64, 0660); +module_param_string(saved_sdk_ver, saved_sdk_ver, 64, 0660); #endif extern int testmode; - -#define SDIO_DEVICE_ID_AIC8801_FUNC2 0x0146 -#define SDIO_DEVICE_ID_AIC8800D80_FUNC2 0x0182 +#define SDIO_DEVICE_ID_AIC8801_FUNC2 0x0146 +#define SDIO_DEVICE_ID_AIC8800D80_FUNC2 0x0182 /* SDIO Device ID */ -#define SDIO_VENDOR_ID_AIC8801 0x5449 -#define SDIO_VENDOR_ID_AIC8800DC 0xc8a1 -#define SDIO_VENDOR_ID_AIC8800D80 0xc8a1 +#define SDIO_VENDOR_ID_AIC8801 0x5449 +#define SDIO_VENDOR_ID_AIC8800DC 0xc8a1 +#define SDIO_VENDOR_ID_AIC8800D80 0xc8a1 +#define SDIO_VENDOR_ID_AIC8800D80X2 0xc8a1 -#define SDIO_DEVICE_ID_AIC8801 0x0145 -#define SDIO_DEVICE_ID_AIC8800DC 0xc08d -#define SDIO_DEVICE_ID_AIC8800D80 0x0082 +#define SDIO_DEVICE_ID_AIC8801 0x0145 +#define SDIO_DEVICE_ID_AIC8800DC 0xc08d +#define SDIO_DEVICE_ID_AIC8800D80 0x0082 +#define SDIO_DEVICE_ID_AIC8800D80X2 0x2082 - -static int aicbsp_dummy_probe(struct sdio_func *func, const struct sdio_device_id *id) +static int aicbsp_dummy_probe(struct sdio_func *func, + const struct sdio_device_id *id) { if (func && (func->num != 2)) return 0; - if(func->vendor != SDIO_VENDOR_ID_AIC8801 && - func->device != SDIO_DEVICE_ID_AIC8801 && - func->device != SDIO_DEVICE_ID_AIC8801_FUNC2 && - func->vendor != SDIO_VENDOR_ID_AIC8800DC && - func->device != SDIO_DEVICE_ID_AIC8800DC && - func->vendor != SDIO_VENDOR_ID_AIC8800D80 && - func->device != SDIO_DEVICE_ID_AIC8800D80 && - func->device != SDIO_DEVICE_ID_AIC8800D80_FUNC2){ - printk("VID:%x DID:%X \r\n", func->vendor, func->device); - aicbsp_load_fw_in_fdrv = true; - } + if (func->vendor != SDIO_VENDOR_ID_AIC8801 && + func->device != SDIO_DEVICE_ID_AIC8801 && + func->device != SDIO_DEVICE_ID_AIC8801_FUNC2 && + func->vendor != SDIO_VENDOR_ID_AIC8800DC && + func->device != SDIO_DEVICE_ID_AIC8800DC && + func->vendor != SDIO_VENDOR_ID_AIC8800D80 && + func->device != SDIO_DEVICE_ID_AIC8800D80 && + func->device != SDIO_DEVICE_ID_AIC8800D80_FUNC2) { + printk("VID:%x DID:%X \r\n", func->vendor, func->device); + aicbsp_load_fw_in_fdrv = true; + } if (aicbsp_notify_semaphore) up(aicbsp_notify_semaphore); @@ -110,10 +109,10 @@ static void aicbsp_dummy_remove(struct sdio_func *func) } static struct sdio_driver aicbsp_dummy_sdmmc_driver = { - .probe = aicbsp_dummy_probe, - .remove = aicbsp_dummy_remove, - .name = "aicbsp_dummy_sdmmc", - .id_table = aicbsp_sdmmc_ids, + .probe = aicbsp_dummy_probe, + .remove = aicbsp_dummy_remove, + .name = "aicbsp_dummy_sdmmc", + .id_table = aicbsp_sdmmc_ids, }; static int aicbsp_reg_sdio_notify(void *semaphore) @@ -141,13 +140,13 @@ static const char *aicbsp_subsys_name(int subsys) } #ifdef CONFIG_PLATFORM_ROCKCHIP -#if 1//FOR RK SUSPEND +#if 1 //FOR RK SUSPEND void rfkill_rk_sleep_bt(bool sleep); #endif #endif #ifdef CONFIG_PLATFORM_ROCKCHIP2 -#if 1//FOR RK SUSPEND +#if 1 //FOR RK SUSPEND void rfkill_rk_sleep_bt(bool sleep); #endif #endif @@ -170,10 +169,12 @@ int aicbsp_set_subsys(int subsys, int state) pre_power_state = pre_power_map > 0; cur_power_state = cur_power_map > 0; - sdio_dbg("%s, subsys: %s, state to: %d\n", __func__, aicbsp_subsys_name(subsys), state); + sdio_dbg("%s, subsys: %s, state to: %d\n", __func__, + aicbsp_subsys_name(subsys), state); if (cur_power_state != pre_power_state) { - sdio_dbg("%s, power state change to %d dure to %s\n", __func__, cur_power_state, aicbsp_subsys_name(subsys)); + sdio_dbg("%s, power state change to %d dure to %s\n", __func__, + cur_power_state, aicbsp_subsys_name(subsys)); if (cur_power_state) { if (aicbsp_platform_power_on() < 0) goto err0; @@ -193,17 +194,18 @@ int aicbsp_set_subsys(int subsys, int state) #endif #endif -//#ifndef CONFIG_PLATFORM_ROCKCHIP -// aicbsp_sdio_exit(); -//#endif + //#ifndef CONFIG_PLATFORM_ROCKCHIP + // aicbsp_sdio_exit(); + //#endif } else { - #ifndef CONFIG_PLATFORM_ROCKCHIP +#ifndef CONFIG_PLATFORM_ROCKCHIP aicbsp_sdio_exit(); - #endif +#endif aicbsp_platform_power_off(); } } else { - sdio_dbg("%s, power state no need to change, current: %d\n", __func__, cur_power_state); + sdio_dbg("%s, power state no need to change, current: %d\n", + __func__, cur_power_state); } pre_power_map = cur_power_map; mutex_unlock(&aicbsp_power_lock); @@ -218,33 +220,43 @@ err1: aicbsp_platform_power_off(); err0: - sdio_dbg("%s, fail to set %s power state to %d\n", __func__, aicbsp_subsys_name(subsys), state); + sdio_dbg("%s, fail to set %s power state to %d\n", __func__, + aicbsp_subsys_name(subsys), state); mutex_unlock(&aicbsp_power_lock); return -1; } EXPORT_SYMBOL_GPL(aicbsp_set_subsys); -bool aicbsp_get_load_fw_in_fdrv(void){ +bool aicbsp_get_load_fw_in_fdrv(void) +{ return aicbsp_load_fw_in_fdrv; } EXPORT_SYMBOL_GPL(aicbsp_get_load_fw_in_fdrv); -static int aicwf_sdio_chipmatch(struct aic_sdio_dev *sdio_dev, uint16_t vid, uint16_t did){ - - if(vid == SDIO_VENDOR_ID_AIC8801 && did == SDIO_DEVICE_ID_AIC8801){ +static int aicwf_sdio_chipmatch(struct aic_sdio_dev *sdio_dev, uint16_t vid, + uint16_t did) +{ + if (vid == SDIO_VENDOR_ID_AIC8801 && did == SDIO_DEVICE_ID_AIC8801) { sdio_dev->chipid = PRODUCT_ID_AIC8801; AICWFDBG(LOGINFO, "%s USE AIC8801\r\n", __func__); return 0; - }else if(vid == SDIO_VENDOR_ID_AIC8800DC && did == SDIO_DEVICE_ID_AIC8800DC){ + } else if (vid == SDIO_VENDOR_ID_AIC8800DC && + did == SDIO_DEVICE_ID_AIC8800DC) { sdio_dev->chipid = PRODUCT_ID_AIC8800DC; AICWFDBG(LOGINFO, "%s USE AIC8800DC\r\n", __func__); return 0; - }else if(vid == SDIO_VENDOR_ID_AIC8800D80 && did == SDIO_DEVICE_ID_AIC8800D80){ + } else if (vid == SDIO_VENDOR_ID_AIC8800D80 && + did == SDIO_DEVICE_ID_AIC8800D80) { sdio_dev->chipid = PRODUCT_ID_AIC8800D80; AICWFDBG(LOGINFO, "%s USE AIC8800D80\r\n", __func__); return 0; - }else{ + } else if (vid == SDIO_VENDOR_ID_AIC8800D80X2 && + did == SDIO_DEVICE_ID_AIC8800D80X2) { + sdio_dev->chipid = PRODUCT_ID_AIC8800D80X2; + AICWFDBG(LOGINFO, "%s USE AIC8800D80X2\r\n", __func__); + return 0; + } else { return -1; } } @@ -257,9 +269,8 @@ void *aicbsp_get_drvdata(void *args) return dev_get_drvdata((const struct device *)args); } - static int aicbsp_sdio_probe(struct sdio_func *func, - const struct sdio_device_id *id) + const struct sdio_device_id *id) { struct mmc_host *host; struct aic_sdio_dev *sdiodev; @@ -271,22 +282,17 @@ static int aicbsp_sdio_probe(struct sdio_func *func, return err; } - if (aicbsp_probe_semaphore == NULL) { - sdio_err("%s bsp_probe_semaphore is null\n", __func__); - return err; - } - sdio_dbg("%s:%d vid:0x%04X did:0x%04X\n", __func__, func->num, - func->vendor, func->device); + func->vendor, func->device); - if(func->vendor != SDIO_VENDOR_ID_AIC8801 && - func->device != SDIO_DEVICE_ID_AIC8801 && - func->device != SDIO_DEVICE_ID_AIC8801_FUNC2 && - func->vendor != SDIO_VENDOR_ID_AIC8800DC && - func->device != SDIO_DEVICE_ID_AIC8800DC && - func->vendor != SDIO_VENDOR_ID_AIC8800D80 && - func->device != SDIO_DEVICE_ID_AIC8800D80 && - func->device != SDIO_DEVICE_ID_AIC8800D80_FUNC2){ + if (func->vendor != SDIO_VENDOR_ID_AIC8801 && + func->device != SDIO_DEVICE_ID_AIC8801 && + func->device != SDIO_DEVICE_ID_AIC8801_FUNC2 && + func->vendor != SDIO_VENDOR_ID_AIC8800DC && + func->device != SDIO_DEVICE_ID_AIC8800DC && + func->vendor != SDIO_VENDOR_ID_AIC8800D80 && + func->device != SDIO_DEVICE_ID_AIC8800D80 && + func->device != SDIO_DEVICE_ID_AIC8800D80_FUNC2) { aicbsp_load_fw_in_fdrv = true; return err; } @@ -308,35 +314,37 @@ static int aicbsp_sdio_probe(struct sdio_func *func, return -ENOMEM; } - sdiodev = kzalloc(sizeof(struct aic_sdio_dev), GFP_KERNEL); if (!sdiodev) { sdio_err("alloc sdiodev fail\n"); kfree(bus_if); return -ENOMEM; } - aicbsp_sdiodev = sdiodev; + aicbsp_sdiodev = sdiodev; err = aicwf_sdio_chipmatch(sdiodev, func->vendor, func->device); sdiodev->func = func; - if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { sdiodev->func_msg = func->card->sdio_func[1]; } sdiodev->bus_if = bus_if; bus_if->bus_priv.sdio = sdiodev; - if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { dev_set_drvdata(&sdiodev->func_msg->dev, bus_if); printk("the device is PRODUCT_ID_AIC8800DC \n"); } dev_set_drvdata(&func->dev, bus_if); sdiodev->dev = &func->dev; - if (sdiodev->chipid != PRODUCT_ID_AIC8800D80) { - err = aicwf_sdio_func_init(sdiodev); - } else { - err = aicwf_sdiov3_func_init(sdiodev); - } + if (sdiodev->chipid != PRODUCT_ID_AIC8800D80 && + sdiodev->chipid != PRODUCT_ID_AIC8800D80X2) { + err = aicwf_sdio_func_init(sdiodev); + } else { + err = aicwf_sdiov3_func_init(sdiodev); + } if (err < 0) { sdio_err("sdio func init fail\n"); goto fail; @@ -349,7 +357,7 @@ static int aicbsp_sdio_probe(struct sdio_func *func, aicbsp_platform_init(sdiodev); - up(aicbsp_probe_semaphore); + up(&aicbsp_probe_semaphore); return 0; fail: @@ -360,7 +368,6 @@ fail: return err; } - static void aicbsp_sdio_remove(struct sdio_func *func) { struct mmc_host *host; @@ -372,7 +379,7 @@ static void aicbsp_sdio_remove(struct sdio_func *func) AICWFDBG(LOGERROR, "%s: allready unregister\n", __func__); goto done; } - if ((func == NULL) || (&func->dev == NULL)) { + if (func == NULL) { AICWFDBG(LOGERROR, "%s, sdio func is null\n", __func__); goto done; } @@ -403,11 +410,9 @@ done: if (bus_if) kfree(bus_if); aicbsp_sdiodev = NULL; - aicbsp_probe_semaphore = NULL; sdio_dbg("%s done\n", __func__); } -#ifdef SDIO_REMOVEABLE static int aicbsp_sdio_suspend(struct device *dev) { struct sdio_func *func = dev_to_sdio_func(dev); @@ -416,8 +421,8 @@ static int aicbsp_sdio_suspend(struct device *dev) #if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) #ifdef CONFIG_GPIO_WAKEUP - //BT_SLEEP:true,BT_WAKEUP:false - rfkill_rk_sleep_bt(false); + //BT_SLEEP:true,BT_WAKEUP:false + rfkill_rk_sleep_bt(false); #endif #endif @@ -427,8 +432,9 @@ static int aicbsp_sdio_suspend(struct device *dev) sdio_flags = sdio_get_host_pm_caps(func); if (!(sdio_flags & MMC_PM_KEEP_POWER)) { - sdio_dbg("%s: can't keep power while host is suspended\n", __func__); - return -EINVAL; + sdio_dbg("%s: can't keep power while host is suspended\n", + __func__); + return -EINVAL; } /* keep power while host suspended */ @@ -440,9 +446,9 @@ static int aicbsp_sdio_suspend(struct device *dev) #if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) #ifdef CONFIG_GPIO_WAKEUP - //BT_SLEEP:true,BT_WAKEUP:false - rfkill_rk_sleep_bt(true); - printk("%s BT wake to SLEEP\r\n", __func__); + //BT_SLEEP:true,BT_WAKEUP:false + rfkill_rk_sleep_bt(true); + printk("%s BT wake to SLEEP\r\n", __func__); #endif #endif @@ -455,25 +461,23 @@ static int aicbsp_sdio_resume(struct device *dev) #if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) #ifdef CONFIG_GPIO_WAKEUP - //BT_SLEEP:true,BT_WAKEUP:false - rfkill_rk_sleep_bt(false); + //BT_SLEEP:true,BT_WAKEUP:false + rfkill_rk_sleep_bt(false); #endif #endif return 0; } -#endif static const struct sdio_device_id aicbsp_sdmmc_ids[] = { - {SDIO_DEVICE_CLASS(SDIO_CLASS_WLAN)}, - { }, + { SDIO_DEVICE_CLASS(SDIO_CLASS_WLAN) }, + {}, }; MODULE_DEVICE_TABLE(sdio, aicbsp_sdmmc_ids); -static const struct dev_pm_ops aicbsp_sdio_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(aicbsp_sdio_suspend, aicbsp_sdio_resume) -}; +static const struct dev_pm_ops aicbsp_sdio_pm_ops = { SET_SYSTEM_SLEEP_PM_OPS( + aicbsp_sdio_suspend, aicbsp_sdio_resume) }; static struct sdio_driver aicbsp_sdio_driver = { .probe = aicbsp_sdio_probe, @@ -493,33 +497,33 @@ static int aicbsp_platform_power_on(void) #ifdef CONFIG_PLATFORM_ALLWINNER if (aicbsp_bus_index < 0) - aicbsp_bus_index = sunxi_wlan_get_bus_index(); + aicbsp_bus_index = sunxi_wlan_get_bus_index(); if (aicbsp_bus_index < 0) return aicbsp_bus_index; #endif //CONFIG_PLATFORM_ALLWINNER #ifdef CONFIG_PLATFORM_AMLOGIC - extern_wifi_set_enable(0); - mdelay(200); - extern_wifi_set_enable(1); - mdelay(200); - sdio_reinit(); - set_power_control_lock(1); + extern_wifi_set_enable(0); + mdelay(200); + extern_wifi_set_enable(1); + mdelay(200); + sdio_reinit(); + set_power_control_lock(1); #endif #ifdef CONFIG_PLATFORM_ROCKCHIP2 - rockchip_wifi_power(0); - mdelay(50); - rockchip_wifi_power(1); - mdelay(50); - rockchip_wifi_set_carddetect(1); + rockchip_wifi_power(0); + mdelay(50); + rockchip_wifi_power(1); + mdelay(50); + rockchip_wifi_set_carddetect(1); #endif /*CONFIG_PLATFORM_ROCKCHIP2*/ sema_init(&aic_chipup_sem, 0); ret = aicbsp_reg_sdio_notify(&aic_chipup_sem); if (ret) { sdio_dbg("%s aicbsp_reg_sdio_notify fail(%d)\n", __func__, ret); - return ret; + return ret; } #ifdef CONFIG_PLATFORM_ALLWINNER @@ -532,7 +536,7 @@ static int aicbsp_platform_power_on(void) if (down_timeout(&aic_chipup_sem, msecs_to_jiffies(2000)) == 0) { aicbsp_unreg_sdio_notify(); - if(aicbsp_load_fw_in_fdrv){ + if (aicbsp_load_fw_in_fdrv) { printk("%s load fw in fdrv\r\n", __func__); return -1; } @@ -545,10 +549,9 @@ static int aicbsp_platform_power_on(void) #endif //CONFIG_PLATFORM_ALLWINNER #ifdef CONFIG_PLATFORM_AMLOGIC - extern_wifi_set_enable(0); + extern_wifi_set_enable(0); #endif - #ifdef CONFIG_PLATFORM_ROCKCHIP2 rockchip_wifi_power(0); #endif /*CONFIG_PLATFORM_ROCKCHIP2*/ @@ -561,7 +564,7 @@ static void aicbsp_platform_power_off(void) //TODO wifi disable and sdio card detection #ifdef CONFIG_PLATFORM_ALLWINNER if (aicbsp_bus_index < 0) - aicbsp_bus_index = sunxi_wlan_get_bus_index(); + aicbsp_bus_index = sunxi_wlan_get_bus_index(); if (aicbsp_bus_index < 0) { sdio_dbg("no aicbsp_bus_index\n"); return; @@ -581,29 +584,22 @@ static void aicbsp_platform_power_off(void) extern_wifi_set_enable(0); #endif - sdio_dbg("%s\n", __func__); } - int aicbsp_sdio_init(void) { - struct semaphore aic_chipup_sem; - - sema_init(&aic_chipup_sem, 0); - aicbsp_probe_semaphore = &aic_chipup_sem; - if (sdio_register_driver(&aicbsp_sdio_driver)) { return -1; } else { //may add mmc_rescan here } - if (down_timeout(aicbsp_probe_semaphore, msecs_to_jiffies(2000)) != 0){ + if (down_timeout(&aicbsp_probe_semaphore, msecs_to_jiffies(2000)) != + 0) { printk("%s aicbsp_sdio_probe fail\r\n", __func__); return -1; } - return 0; } @@ -618,7 +614,8 @@ void aicbsp_sdio_release(struct aic_sdio_dev *sdiodev) sdio_claim_host(sdiodev->func); sdio_release_irq(sdiodev->func); sdio_release_host(sdiodev->func); - if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { sdio_claim_host(sdiodev->func_msg); sdio_release_irq(sdiodev->func_msg); sdio_release_host(sdiodev->func_msg); @@ -636,11 +633,11 @@ int aicwf_sdio_readb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 *val) int aicwf_sdio_readb_func2(struct aic_sdio_dev *sdiodev, uint regaddr, u8 *val) { - int ret; - sdio_claim_host(sdiodev->func_msg); - *val = sdio_readb(sdiodev->func_msg, regaddr, &ret); - sdio_release_host(sdiodev->func_msg); - return ret; + int ret; + sdio_claim_host(sdiodev->func_msg); + *val = sdio_readb(sdiodev->func_msg, regaddr, &ret); + sdio_release_host(sdiodev->func_msg); + return ret; } int aicwf_sdio_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val) @@ -654,11 +651,11 @@ int aicwf_sdio_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val) int aicwf_sdio_writeb_func2(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val) { - int ret; - sdio_claim_host(sdiodev->func_msg); - sdio_writeb(sdiodev->func_msg, val, regaddr, &ret); - sdio_release_host(sdiodev->func_msg); - return ret; + int ret; + sdio_claim_host(sdiodev->func_msg); + sdio_writeb(sdiodev->func_msg, val, regaddr, &ret); + sdio_release_host(sdiodev->func_msg); + return ret; } int aicwf_sdio_flow_ctrl(struct aic_sdio_dev *sdiodev) @@ -668,18 +665,20 @@ int aicwf_sdio_flow_ctrl(struct aic_sdio_dev *sdiodev) u32 count = 0; while (true) { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.flow_ctrl_reg, &fc_reg); + ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.flow_ctrl_reg, + &fc_reg); if (ret) { return -1; } - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - fc_reg = fc_reg & SDIOWIFI_FLOWCTRL_MASK_REG; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + fc_reg = fc_reg & SDIOWIFI_FLOWCTRL_MASK_REG; + } if (fc_reg != 0) { - ret = fc_reg; + ret = fc_reg; return ret; } else { if (count >= FLOW_CTRL_RETRY_COUNT) { @@ -701,13 +700,13 @@ int aicwf_sdio_flow_ctrl(struct aic_sdio_dev *sdiodev) int aicwf_sdio_send_msg(struct aic_sdio_dev *sdiodev, u8 *buf, uint count) { - int ret = 0; + int ret = 0; - sdio_claim_host(sdiodev->func_msg); - ret = sdio_writesb(sdiodev->func_msg, 7, buf, count); - sdio_release_host(sdiodev->func_msg); + sdio_claim_host(sdiodev->func_msg); + ret = sdio_writesb(sdiodev->func_msg, 7, buf, count); + sdio_release_host(sdiodev->func_msg); - return ret; + return ret; } int aicwf_sdio_send_pkt(struct aic_sdio_dev *sdiodev, u8 *buf, uint count) @@ -715,31 +714,34 @@ int aicwf_sdio_send_pkt(struct aic_sdio_dev *sdiodev, u8 *buf, uint count) int ret = 0; sdio_claim_host(sdiodev->func); - ret = sdio_writesb(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, buf, count); + ret = sdio_writesb(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, buf, + count); sdio_release_host(sdiodev->func); return ret; } int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, - u32 size, u8 msg) + u32 size, u8 msg) { int ret; if ((!skbbuf) || (!size)) { - return -EINVAL;; + return -EINVAL; + ; } - if(!msg) { - sdio_claim_host(sdiodev->func); - ret = sdio_readsb(sdiodev->func, skbbuf->data, sdiodev->sdio_reg.rd_fifo_addr, size); - sdio_release_host(sdiodev->func); - } else { - sdio_claim_host(sdiodev->func_msg); - ret = sdio_readsb(sdiodev->func_msg, skbbuf->data, sdiodev->sdio_reg.rd_fifo_addr, size); - sdio_release_host(sdiodev->func_msg); - } - + if (!msg) { + sdio_claim_host(sdiodev->func); + ret = sdio_readsb(sdiodev->func, skbbuf->data, + sdiodev->sdio_reg.rd_fifo_addr, size); + sdio_release_host(sdiodev->func); + } else { + sdio_claim_host(sdiodev->func_msg); + ret = sdio_readsb(sdiodev->func_msg, skbbuf->data, + sdiodev->sdio_reg.rd_fifo_addr, size); + sdio_release_host(sdiodev->func_msg); + } if (ret < 0) { return ret; @@ -749,51 +751,56 @@ int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, return ret; } - #if defined(CONFIG_SDIO_PWRCTRL) int aicwf_sdio_wakeup(struct aic_sdio_dev *sdiodev) { int ret = 0; int read_retry; int write_retry = 20; - int wakeup_reg_val = 0; + int wakeup_reg_val = 0; - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || - sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - wakeup_reg_val = 1; - } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - wakeup_reg_val = 0x11; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + wakeup_reg_val = 1; + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + wakeup_reg_val = 0x11; + } if (sdiodev->state == SDIO_SLEEP_ST) { //if (sdiodev->rwnx_hw->vif_started) { - down(&sdiodev->pwrctl_wakeup_sema); - while (write_retry) { - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, wakeup_reg_val); - if (ret) { - txrx_err("sdio wakeup fail\n"); - ret = -1; - } else { - read_retry = 10; - while (read_retry) { - u8 val; - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.sleep_reg, &val); - if ((ret == 0) && (val & 0x10)) { - break; - } - read_retry--; - udelay(200); - } - if (read_retry != 0) + down(&sdiodev->pwrctl_wakeup_sema); + while (write_retry) { + ret = aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.wakeup_reg, + wakeup_reg_val); + if (ret) { + txrx_err("sdio wakeup fail\n"); + ret = -1; + } else { + read_retry = 10; + while (read_retry) { + u8 val; + ret = aicwf_sdio_readb( + sdiodev, + sdiodev->sdio_reg.sleep_reg, + &val); + if ((ret == 0) && (val & 0x10)) { break; + } + read_retry--; + udelay(200); } - sdio_dbg("write retry: %d \n", write_retry); - write_retry--; - udelay(100); + if (read_retry != 0) + break; } - up(&sdiodev->pwrctl_wakeup_sema); - // } + sdio_dbg("write retry: %d \n", write_retry); + write_retry--; + udelay(100); + } + up(&sdiodev->pwrctl_wakeup_sema); + // } } sdiodev->state = SDIO_ACTIVE_ST; @@ -809,10 +816,11 @@ int aicwf_sdio_sleep_allow(struct aic_sdio_dev *sdiodev) struct aicwf_bus *bus_if = sdiodev->bus_if; if (bus_if->state == BUS_DOWN_ST) { - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, 0x10); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, + 0x10); if (ret) { sdio_err("Write sleep fail!\n"); - } + } aicwf_sdio_pwrctl_timer(sdiodev, 0); return ret; } @@ -820,7 +828,8 @@ int aicwf_sdio_sleep_allow(struct aic_sdio_dev *sdiodev) if (sdiodev->state == SDIO_ACTIVE_ST) { { sdio_dbg("s\n"); - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, 0x10); + ret = aicwf_sdio_writeb( + sdiodev, sdiodev->sdio_reg.sleep_reg, 0x10); if (ret) sdio_err("Write sleep fail!\n"); } @@ -843,7 +852,8 @@ int aicwf_sdio_pwr_stctl(struct aic_sdio_dev *sdiodev, uint target) if (sdiodev->state == target) { if (target == SDIO_ACTIVE_ST) { - aicwf_sdio_pwrctl_timer(sdiodev, sdiodev->active_duration); + aicwf_sdio_pwrctl_timer(sdiodev, + sdiodev->active_duration); } return ret; } @@ -873,9 +883,10 @@ int aicwf_sdio_txpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt) return -EINVAL; } - frame = (u8 *) (pkt->data); + frame = (u8 *)(pkt->data); len = pkt->len; - len = (len + SDIOWIFI_FUNC_BLOCKSIZE - 1) / SDIOWIFI_FUNC_BLOCKSIZE * SDIOWIFI_FUNC_BLOCKSIZE; + len = (len + SDIOWIFI_FUNC_BLOCKSIZE - 1) / SDIOWIFI_FUNC_BLOCKSIZE * + SDIOWIFI_FUNC_BLOCKSIZE; ret = aicwf_sdio_send_pkt(sdiodev, pkt->data, len); if (ret) sdio_err("aicwf_sdio_send_pkt fail%d\n", ret); @@ -883,7 +894,8 @@ int aicwf_sdio_txpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt) return ret; } -static int aicwf_sdio_intr_get_len_bytemode(struct aic_sdio_dev *sdiodev, u8 *byte_len) +static int aicwf_sdio_intr_get_len_bytemode(struct aic_sdio_dev *sdiodev, + u8 *byte_len) { int ret = 0; @@ -893,8 +905,9 @@ static int aicwf_sdio_intr_get_len_bytemode(struct aic_sdio_dev *sdiodev, u8 *by if (sdiodev->bus_if->state == BUS_DOWN_ST) { *byte_len = 0; } else { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.bytemode_len_reg, byte_len); - sdiodev->rx_priv->data_len = (*byte_len)*4; + ret = aicwf_sdio_readb( + sdiodev, sdiodev->sdio_reg.bytemode_len_reg, byte_len); + sdiodev->rx_priv->data_len = (*byte_len) * 4; } return ret; @@ -918,7 +931,7 @@ static void aicwf_sdio_bus_stop(struct device *dev) bus_if->state = BUS_DOWN_ST; ret = down_interruptible(&sdiodev->tx_priv->txctl_sema); if (ret) - sdio_err("down txctl_sema fail\n"); + sdio_err("down txctl_sema fail\n"); #if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(sdiodev, SDIO_SLEEP_ST); @@ -941,7 +954,7 @@ struct sk_buff *aicwf_sdio_readframes(struct aic_sdio_dev *sdiodev, u8 msg) } size = sdiodev->rx_priv->data_len; - skb = __dev_alloc_skb(size, GFP_KERNEL); + skb = __dev_alloc_skb(size, GFP_KERNEL); if (!skb) { return NULL; } @@ -961,7 +974,7 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) u16 len; u8 *payload = sdiodev->tx_priv->cmd_buf; u16 payload_len = sdiodev->tx_priv->cmd_len; - u8 adjust_str[4] = {0, 0, 0, 0}; + u8 adjust_str[4] = { 0, 0, 0, 0 }; int adjust_len = 0; int buffer_cnt = 0; u8 retry = 0; @@ -969,22 +982,27 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) len = payload_len; if ((len % TX_ALIGNMENT) != 0) { adjust_len = roundup(len, TX_ALIGNMENT); - memcpy(payload+payload_len, adjust_str, (adjust_len - len)); + memcpy(payload + payload_len, adjust_str, (adjust_len - len)); payload_len += (adjust_len - len); } len = payload_len; //link tail is necessary if ((len % SDIOWIFI_FUNC_BLOCKSIZE) != 0) { - memset(payload+payload_len, 0, TAIL_LEN); + memset(payload + payload_len, 0, TAIL_LEN); payload_len += TAIL_LEN; - len = (payload_len/SDIOWIFI_FUNC_BLOCKSIZE + 1) * SDIOWIFI_FUNC_BLOCKSIZE; + len = (payload_len / SDIOWIFI_FUNC_BLOCKSIZE + 1) * + SDIOWIFI_FUNC_BLOCKSIZE; } else len = payload_len; - if(sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { buffer_cnt = aicwf_sdio_flow_ctrl(sdiodev); - while ((buffer_cnt <= 0 || (buffer_cnt > 0 && len > (buffer_cnt * BUFFER_SIZE))) && retry < 10) { + while ((buffer_cnt <= 0 || + (buffer_cnt > 0 && len > (buffer_cnt * BUFFER_SIZE))) && + retry < 10) { retry++; buffer_cnt = aicwf_sdio_flow_ctrl(sdiodev); printk("buffer_cnt = %d\n", buffer_cnt); @@ -992,18 +1010,22 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) } down(&sdiodev->tx_priv->cmd_txsema); - if(sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { if (buffer_cnt > 0 && len < (buffer_cnt * BUFFER_SIZE)) { err = aicwf_sdio_send_pkt(sdiodev, payload, len); if (err) { sdio_err("aicwf_sdio_send_pkt fail%d\n", err); } } else { - sdio_err("tx msg fc retry fail:%d, %d\n", buffer_cnt, len); + sdio_err("tx msg fc retry fail:%d, %d\n", buffer_cnt, + len); up(&sdiodev->tx_priv->cmd_txsema); return -1; } - }else if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { err = aicwf_sdio_send_msg(sdiodev, payload, len); if (err) { sdio_err("aicwf_sdio_send_pkt fail%d\n", err); @@ -1071,8 +1093,9 @@ static void aicwf_sdio_tx_process(struct aic_sdio_dev *sdiodev) return; } - if(!aicwf_is_framequeue_empty(&sdiodev->tx_priv->txq)) - sdiodev->tx_priv->fw_avail_bufcnt = aicwf_sdio_flow_ctrl(sdiodev); + if (!aicwf_is_framequeue_empty(&sdiodev->tx_priv->txq)) + sdiodev->tx_priv->fw_avail_bufcnt = + aicwf_sdio_flow_ctrl(sdiodev); while (!aicwf_is_framequeue_empty(&sdiodev->tx_priv->txq)) { aicwf_sdio_send(sdiodev->tx_priv); if (sdiodev->tx_priv->cmd_txstate) @@ -1133,14 +1156,17 @@ static int aicwf_sdio_bus_txmsg(struct device *dev, u8 *msg, uint msglen) if (sdiodev->tx_priv->cmd_txstate) { int timeout = msecs_to_jiffies(CMD_TX_TIMEOUT); - ret = wait_event_timeout(sdiodev->tx_priv->cmd_txdone_wait, \ - !(sdiodev->tx_priv->cmd_txstate), timeout); + ret = wait_event_timeout(sdiodev->tx_priv->cmd_txdone_wait, + !(sdiodev->tx_priv->cmd_txstate), + timeout); } if (!sdiodev->tx_priv->cmd_txstate && sdiodev->tx_priv->cmd_tx_succ) { ret = 0; } else { - sdio_err("send faild:%d, %d,%x\n", sdiodev->tx_priv->cmd_txstate, sdiodev->tx_priv->cmd_tx_succ, ret); + sdio_err("send faild:%d, %d,%x\n", + sdiodev->tx_priv->cmd_txstate, + sdiodev->tx_priv->cmd_tx_succ, ret); ret = -EIO; } @@ -1156,8 +1182,8 @@ int aicwf_sdio_send(struct aicwf_tx_priv *tx_priv) int max_retry_times = 5; aggr_len = (tx_priv->tail - tx_priv->head); - if (((atomic_read(&tx_priv->aggr_count) == 0) && (aggr_len != 0)) - || ((atomic_read(&tx_priv->aggr_count) != 0) && (aggr_len == 0))) { + if (((atomic_read(&tx_priv->aggr_count) == 0) && (aggr_len != 0)) || + ((atomic_read(&tx_priv->aggr_count) != 0) && (aggr_len == 0))) { if (aggr_len > 0) aicwf_sdio_aggrbuf_reset(tx_priv); goto done; @@ -1165,20 +1191,25 @@ int aicwf_sdio_send(struct aicwf_tx_priv *tx_priv) if (tx_priv->fw_avail_bufcnt <= 0) { //flow control failed tx_priv->fw_avail_bufcnt = aicwf_sdio_flow_ctrl(sdiodev); - while (tx_priv->fw_avail_bufcnt <= 0 && retry_times < max_retry_times) { + while (tx_priv->fw_avail_bufcnt <= 0 && + retry_times < max_retry_times) { retry_times++; - tx_priv->fw_avail_bufcnt = aicwf_sdio_flow_ctrl(sdiodev); + tx_priv->fw_avail_bufcnt = + aicwf_sdio_flow_ctrl(sdiodev); } if (tx_priv->fw_avail_bufcnt <= 0) { - sdio_err("fc retry %d fail\n", tx_priv->fw_avail_bufcnt); + sdio_err("fc retry %d fail\n", + tx_priv->fw_avail_bufcnt); goto done; } } if (atomic_read(&tx_priv->aggr_count) == tx_priv->fw_avail_bufcnt) { if (atomic_read(&tx_priv->aggr_count) > 0) { - tx_priv->fw_avail_bufcnt -= atomic_read(&tx_priv->aggr_count); - aicwf_sdio_aggr_send(tx_priv); //send and check the next pkt; + tx_priv->fw_avail_bufcnt -= + atomic_read(&tx_priv->aggr_count); + aicwf_sdio_aggr_send( + tx_priv); //send and check the next pkt; } } else { spin_lock_bh(&sdiodev->tx_priv->txqlock); @@ -1200,8 +1231,10 @@ int aicwf_sdio_send(struct aicwf_tx_priv *tx_priv) } //when aggr finish or there is cmd to send, just send this aggr pkt to fw - if ((int)atomic_read(&sdiodev->tx_priv->tx_pktcnt) == 0 || sdiodev->tx_priv->cmd_txstate) { //no more pkt send it! - tx_priv->fw_avail_bufcnt -= atomic_read(&tx_priv->aggr_count); + if ((int)atomic_read(&sdiodev->tx_priv->tx_pktcnt) == 0 || + sdiodev->tx_priv->cmd_txstate) { //no more pkt send it! + tx_priv->fw_avail_bufcnt -= + atomic_read(&tx_priv->aggr_count); aicwf_sdio_aggr_send(tx_priv); } else goto done; @@ -1216,18 +1249,20 @@ int aicwf_sdio_aggr(struct aicwf_tx_priv *tx_priv, struct sk_buff *pkt) //struct rwnx_txhdr *txhdr = (struct rwnx_txhdr *)pkt->data; u8 *start_ptr = tx_priv->tail; u8 sdio_header[4]; - u8 adjust_str[4] = {0, 0, 0, 0}; + u8 adjust_str[4] = { 0, 0, 0, 0 }; u16 curr_len = 0; int allign_len = 0; //sdio_header[0] =((pkt->len - sizeof(struct rwnx_txhdr) + sizeof(struct txdesc_api)) & 0xff); //sdio_header[1] =(((pkt->len - sizeof(struct rwnx_txhdr) + sizeof(struct txdesc_api)) >> 8)&0x0f); sdio_header[2] = 0x01; //data - if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) - sdio_header[3] = 0; //reserved - else if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80) - sdio_header[3] = crc8_ponl_107(&sdio_header[0], 3); // crc8 + if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) + sdio_header[3] = 0; //reserved + else if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) + sdio_header[3] = crc8_ponl_107(&sdio_header[0], 3); // crc8 memcpy(tx_priv->tail, (u8 *)&sdio_header, sizeof(sdio_header)); tx_priv->tail += sizeof(sdio_header); @@ -1240,26 +1275,27 @@ int aicwf_sdio_aggr(struct aicwf_tx_priv *tx_priv, struct sk_buff *pkt) //word alignment curr_len = tx_priv->tail - tx_priv->head; if (curr_len & (TX_ALIGNMENT - 1)) { - allign_len = roundup(curr_len, TX_ALIGNMENT)-curr_len; + allign_len = roundup(curr_len, TX_ALIGNMENT) - curr_len; memcpy(tx_priv->tail, adjust_str, allign_len); tx_priv->tail += allign_len; } - if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - start_ptr[0] = ((tx_priv->tail - start_ptr - 4) & 0xff); - start_ptr[1] = (((tx_priv->tail - start_ptr - 4)>>8) & 0x0f); - } + if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + start_ptr[0] = ((tx_priv->tail - start_ptr - 4) & 0xff); + start_ptr[1] = (((tx_priv->tail - start_ptr - 4) >> 8) & 0x0f); + } tx_priv->aggr_buf->dev = pkt->dev; - #if 0 +#if 0 if (!txhdr->sw_hdr->need_cfm) { kmem_cache_free(txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, txhdr->sw_hdr); skb_pull(pkt, txhdr->sw_hdr->headroom); consume_skb(pkt); } - #endif +#endif consume_skb(pkt); atomic_inc(&tx_priv->aggr_count); @@ -1303,47 +1339,55 @@ static int aicwf_sdio_bus_start(struct device *dev) struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; int ret = 0; - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { sdio_claim_host(sdiodev->func); sdio_claim_irq(sdiodev->func, aicwf_sdio_hal_irqhandler); //enable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); + ret = aicwf_sdio_writeb( + sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); if (ret != 0) sdio_err("intr register failed:%d\n", ret); sdio_release_host(sdiodev->func); - }else if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { sdio_claim_host(sdiodev->func); //since we have func2 we don't register irq handler sdio_claim_irq(sdiodev->func, NULL); sdio_claim_irq(sdiodev->func_msg, NULL); - sdiodev->func->irq_handler = (sdio_irq_handler_t *)aicwf_sdio_hal_irqhandler; - sdiodev->func_msg->irq_handler = (sdio_irq_handler_t *)aicwf_sdio_hal_irqhandler_func2; + sdiodev->func->irq_handler = + (sdio_irq_handler_t *)aicwf_sdio_hal_irqhandler; + sdiodev->func_msg->irq_handler = + (sdio_irq_handler_t *)aicwf_sdio_hal_irqhandler_func2; sdio_release_host(sdiodev->func); //enable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); + ret = aicwf_sdio_writeb( + sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); if (ret != 0) sdio_err("intr register failed:%d\n", ret); //enable sdio interrupt - ret = aicwf_sdio_writeb_func2(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); + ret = aicwf_sdio_writeb_func2( + sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); if (ret != 0) sdio_err("func2 intr register failed:%d\n", ret); - }else if(sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { sdio_claim_host(sdiodev->func); sdio_claim_irq(sdiodev->func, aicwf_sdio_hal_irqhandler); - sdio_f0_writeb(sdiodev->func, 0x07, 0x04, &ret); - if (ret) { - sdio_err("set func0 int en fail %d\n", ret); - } - sdio_release_host(sdiodev->func); + sdio_f0_writeb(sdiodev->func, 0x07, 0x04, &ret); + if (ret) { + sdio_err("set func0 int en fail %d\n", ret); + } + sdio_release_host(sdiodev->func); //enable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); + ret = aicwf_sdio_writeb( + sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); if (ret != 0) sdio_err("intr register failed:%d\n", ret); } @@ -1354,7 +1398,7 @@ static int aicwf_sdio_bus_start(struct device *dev) int aicwf_sdio_bustx_thread(void *data) { - struct aicwf_bus *bus = (struct aicwf_bus *) data; + struct aicwf_bus *bus = (struct aicwf_bus *)data; struct aic_sdio_dev *sdiodev = bus->bus_priv.sdio; while (1) { @@ -1363,7 +1407,9 @@ int aicwf_sdio_bustx_thread(void *data) break; } if (!wait_for_completion_interruptible(&bus->bustx_trgg)) { - if ((int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) > 0) || (sdiodev->tx_priv->cmd_txstate == true)) + if ((int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) > + 0) || + (sdiodev->tx_priv->cmd_txstate == true)) aicwf_sdio_tx_process(sdiodev); } } @@ -1397,7 +1443,7 @@ static void aicwf_sdio_bus_pwrctl(struct timer_list *t) #else static void aicwf_sdio_bus_pwrctl(ulong data) { - struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *) data; + struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *)data; #endif if (sdiodev->bus_if->state == BUS_DOWN_ST) { sdio_err("bus down\n"); @@ -1410,7 +1456,8 @@ static void aicwf_sdio_bus_pwrctl(ulong data) } #endif -static void aicwf_sdio_enq_rxpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt) +static void aicwf_sdio_enq_rxpkt(struct aic_sdio_dev *sdiodev, + struct sk_buff *pkt) { struct aicwf_rx_priv *rx_priv = sdiodev->rx_priv; unsigned long flags = 0; @@ -1437,148 +1484,180 @@ void aicwf_sdio_hal_irqhandler(struct sdio_func *func) struct sk_buff *pkt = NULL; int ret; - //AICWFDBG(LOGDEBUG,"%s bsp enter \r\n", __func__); + //AICWFDBG(LOGDEBUG,"%s bsp enter \r\n", __func__); - if(aicbsp_sdiodev->sdio_hal_irqhandler){ - aicbsp_sdiodev->sdio_hal_irqhandler(func); - return; - } + if (aicbsp_sdiodev->sdio_hal_irqhandler) { + aicbsp_sdiodev->sdio_hal_irqhandler(func); + return; + } if (!bus_if || bus_if->state == BUS_DOWN_ST) { sdio_err("bus err\n"); return; } - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.block_cnt_reg, + &intstatus); - while(intstatus){ - sdiodev->rx_priv->data_len = intstatus * SDIOWIFI_FUNC_BLOCKSIZE; - if (intstatus > 0) { - if(intstatus < 64) { - pkt = aicwf_sdio_readframes(sdiodev, 0); - } else { - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - sdio_info("byte mode len=%d\r\n", byte_len); - pkt = aicwf_sdio_readframes(sdiodev, 0); - } - } else { - #ifndef CONFIG_PLATFORM_ALLWINNER - sdio_err("Interrupt but no data\n"); - #endif - } + while (intstatus) { + sdiodev->rx_priv->data_len = + intstatus * SDIOWIFI_FUNC_BLOCKSIZE; + if (intstatus > 0) { + if (intstatus < 64) { + pkt = aicwf_sdio_readframes(sdiodev, 0); + } else { + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + sdio_info("byte mode len=%d\r\n", + byte_len); + pkt = aicwf_sdio_readframes(sdiodev, 0); + } + } else { +#ifndef CONFIG_PLATFORM_ALLWINNER + sdio_err("Interrupt but no data\n"); +#endif + } - if (pkt) - aicwf_sdio_enq_rxpkt(sdiodev, pkt); + if (pkt) + aicwf_sdio_enq_rxpkt(sdiodev, pkt); - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); - } - }else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - do { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.misc_int_status_reg, &intstatus); - if (!ret) { - break; - } - sdio_err("ret=%d, intstatus=%x\r\n",ret, intstatus); - } while (1); - if (intstatus & SDIO_OTHER_INTERRUPT) { - u8 int_pending; - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.sleep_reg, &int_pending); - if (ret < 0) { - sdio_err("reg:%d read failed!\n", sdiodev->sdio_reg.sleep_reg); - } - int_pending &= ~0x01; // dev to host soft irq - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, int_pending); - if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.sleep_reg); - } - } + ret = aicwf_sdio_readb(sdiodev, + sdiodev->sdio_reg.block_cnt_reg, + &intstatus); + } + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + do { + ret = aicwf_sdio_readb( + sdiodev, sdiodev->sdio_reg.misc_int_status_reg, + &intstatus); + if (!ret) { + break; + } + sdio_err("ret=%d, intstatus=%x\r\n", ret, intstatus); + } while (1); + if (intstatus & SDIO_OTHER_INTERRUPT) { + u8 int_pending; + ret = aicwf_sdio_readb(sdiodev, + sdiodev->sdio_reg.sleep_reg, + &int_pending); + if (ret < 0) { + sdio_err("reg:%d read failed!\n", + sdiodev->sdio_reg.sleep_reg); + } + int_pending &= ~0x01; // dev to host soft irq + ret = aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.sleep_reg, + int_pending); + if (ret < 0) { + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.sleep_reg); + } + } - if (intstatus > 0) { - uint8_t intmaskf2 = intstatus | (0x1UL << 3); - if (intmaskf2 > 120U) { // func2 - if (intmaskf2 == 127U) { // byte mode - //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 1);//byte_len must<= 128 - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - sdio_info("byte mode len=%d\r\n", byte_len); - pkt = aicwf_sdio_readframes(sdiodev, 1); - } else { // block mode - sdiodev->rx_priv->data_len = (intstatus & 0x7U) * SDIOWIFI_FUNC_BLOCKSIZE; - pkt = aicwf_sdio_readframes(sdiodev, 1); - } - } else { // func1 - if (intstatus == 120U) { // byte mode - //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 0);//byte_len must<= 128 - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - sdio_info("byte mode len=%d\r\n", byte_len); - pkt = aicwf_sdio_readframes(sdiodev, 0); - } else { // block mode - sdiodev->rx_priv->data_len = (intstatus & 0x7FU) * SDIOWIFI_FUNC_BLOCKSIZE; - pkt = aicwf_sdio_readframes(sdiodev, 0); - } - } - } else { - #ifndef CONFIG_PLATFORM_ALLWINNER - sdio_err("Interrupt but no data\n"); - #endif - } + if (intstatus > 0) { + uint8_t intmaskf2 = intstatus | (0x1UL << 3); + if (intmaskf2 > 120U) { // func2 + if (intmaskf2 == 127U) { // byte mode + //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 1);//byte_len must<= 128 + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + sdio_info("byte mode len=%d\r\n", + byte_len); + pkt = aicwf_sdio_readframes(sdiodev, 1); + } else { // block mode + sdiodev->rx_priv->data_len = + (intstatus & 0x7U) * + SDIOWIFI_FUNC_BLOCKSIZE; + pkt = aicwf_sdio_readframes(sdiodev, 1); + } + } else { // func1 + if (intstatus == 120U) { // byte mode + //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 0);//byte_len must<= 128 + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + sdio_info("byte mode len=%d\r\n", + byte_len); + pkt = aicwf_sdio_readframes(sdiodev, 0); + } else { // block mode + sdiodev->rx_priv->data_len = + (intstatus & 0x7FU) * + SDIOWIFI_FUNC_BLOCKSIZE; + pkt = aicwf_sdio_readframes(sdiodev, 0); + } + } + } else { +#ifndef CONFIG_PLATFORM_ALLWINNER + sdio_err("Interrupt but no data\n"); +#endif + } - if (pkt) - aicwf_sdio_enq_rxpkt(sdiodev, pkt); - } + if (pkt) + aicwf_sdio_enq_rxpkt(sdiodev, pkt); + } complete(&bus_if->busrx_trgg); } void aicwf_sdio_hal_irqhandler_func2(struct sdio_func *func) { - struct aicwf_bus *bus_if = dev_get_drvdata(&func->dev); - struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; - u8 intstatus = 0; - u8 byte_len = 0; - #ifdef CONFIG_PREALLOC_RX_SKB + struct aicwf_bus *bus_if = dev_get_drvdata(&func->dev); + struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; + u8 intstatus = 0; + u8 byte_len = 0; +#ifdef CONFIG_PREALLOC_RX_SKB struct rx_buff *pkt = NULL; - #else +#else struct sk_buff *pkt = NULL; - #endif - int ret; +#endif + int ret; - if (!bus_if || bus_if->state == BUS_DOWN_ST) { - sdio_err("bus err\n"); - return; - } + if (!bus_if || bus_if->state == BUS_DOWN_ST) { + sdio_err("bus err\n"); + return; + } - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB if (list_empty(&aic_rx_buff_list.rxbuff_list)) { - printk("%s %d, rxbuff list is empty\n", __func__, __LINE__); - return; - } - #endif + printk("%s %d, rxbuff list is empty\n", __func__, __LINE__); + return; + } +#endif - ret = aicwf_sdio_readb_func2(sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); + ret = aicwf_sdio_readb_func2(sdiodev, sdiodev->sdio_reg.block_cnt_reg, + &intstatus); - while(intstatus) { - sdiodev->rx_priv->data_len = intstatus * SDIOWIFI_FUNC_BLOCKSIZE; - if (intstatus > 0) { - if(intstatus < 64) { - pkt = aicwf_sdio_readframes(sdiodev,1); - } else { - sdio_info("byte mode len=%d\r\n", byte_len); + while (intstatus) { + sdiodev->rx_priv->data_len = + intstatus * SDIOWIFI_FUNC_BLOCKSIZE; + if (intstatus > 0) { + if (intstatus < 64) { + pkt = aicwf_sdio_readframes(sdiodev, 1); + } else { + sdio_info("byte mode len=%d\r\n", byte_len); - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - pkt = aicwf_sdio_readframes(sdiodev,1); - } - } else { - #ifndef CONFIG_PLATFORM_ALLWINNER - sdio_err("Interrupt but no data\n"); - #endif - } + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + pkt = aicwf_sdio_readframes(sdiodev, 1); + } + } else { +#ifndef CONFIG_PLATFORM_ALLWINNER + sdio_err("Interrupt but no data\n"); +#endif + } - if (pkt){ - aicwf_sdio_enq_rxpkt(sdiodev, pkt); - } - ret = aicwf_sdio_readb_func2(sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); + if (pkt) { + aicwf_sdio_enq_rxpkt(sdiodev, pkt); + } + ret = aicwf_sdio_readb_func2( + sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); } complete(&bus_if->busrx_trgg); @@ -1618,13 +1697,14 @@ void aicwf_sdio_release_func2(struct aic_sdio_dev *sdiodev) sdio_dbg("%s\n", __func__); sdio_claim_host(sdiodev->func_msg); //disable sdio interrupt - ret = aicwf_sdio_writeb_func2(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x0); + ret = aicwf_sdio_writeb_func2(sdiodev, + sdiodev->sdio_reg.intr_config_reg, 0x0); if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.intr_config_reg); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.intr_config_reg); } sdio_release_irq(sdiodev->func_msg); sdio_release_host(sdiodev->func_msg); - } void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) @@ -1649,15 +1729,18 @@ void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) sdio_dbg("%s bsp release\n", __func__); sdio_claim_host(sdiodev->func); //disable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x0); + ret = aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.intr_config_reg, 0x0); if (ret < 0) { - sdio_err("reg:%d write failed!, ret=%d\n", sdiodev->sdio_reg.intr_config_reg, ret); + sdio_err("reg:%d write failed!, ret=%d\n", + sdiodev->sdio_reg.intr_config_reg, ret); } sdio_release_irq(sdiodev->func); sdio_release_host(sdiodev->func); } - if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { aicwf_sdio_release_func2(sdiodev); } @@ -1673,52 +1756,56 @@ void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) rwnx_cmd_mgr_deinit(&sdiodev->cmd_mgr); } - - void aicwf_sdio_reg_init(struct aic_sdio_dev *sdiodev) { - sdio_dbg("%s\n", __func__); + sdio_dbg("%s\n", __func__); - if(sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - sdiodev->sdio_reg.bytemode_len_reg = SDIOWIFI_BYTEMODE_LEN_REG; - sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_CONFIG_REG; - sdiodev->sdio_reg.sleep_reg = SDIOWIFI_SLEEP_REG; - sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_WAKEUP_REG; - sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_REG; - sdiodev->sdio_reg.register_block = SDIOWIFI_REGISTER_BLOCK; - sdiodev->sdio_reg.bytemode_enable_reg = SDIOWIFI_BYTEMODE_ENABLE_REG; - sdiodev->sdio_reg.block_cnt_reg = SDIOWIFI_BLOCK_CNT_REG; - sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR; - sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR; - } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - sdiodev->sdio_reg.bytemode_len_reg = SDIOWIFI_BYTEMODE_LEN_REG_V3; - sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_ENABLE_REG_V3; - sdiodev->sdio_reg.sleep_reg = SDIOWIFI_INTR_PENDING_REG_V3; - sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_INTR_TO_DEVICE_REG_V3; - sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_Q1_REG_V3; - sdiodev->sdio_reg.bytemode_enable_reg = SDIOWIFI_BYTEMODE_ENABLE_REG_V3; - sdiodev->sdio_reg.misc_int_status_reg = SDIOWIFI_MISC_INT_STATUS_REG_V3; - sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR_V3; - sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR_V3; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + sdiodev->sdio_reg.bytemode_len_reg = SDIOWIFI_BYTEMODE_LEN_REG; + sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_CONFIG_REG; + sdiodev->sdio_reg.sleep_reg = SDIOWIFI_SLEEP_REG; + sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_WAKEUP_REG; + sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_REG; + sdiodev->sdio_reg.register_block = SDIOWIFI_REGISTER_BLOCK; + sdiodev->sdio_reg.bytemode_enable_reg = + SDIOWIFI_BYTEMODE_ENABLE_REG; + sdiodev->sdio_reg.block_cnt_reg = SDIOWIFI_BLOCK_CNT_REG; + sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR; + sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR; + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + sdiodev->sdio_reg.bytemode_len_reg = + SDIOWIFI_BYTEMODE_LEN_REG_V3; + sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_ENABLE_REG_V3; + sdiodev->sdio_reg.sleep_reg = SDIOWIFI_INTR_PENDING_REG_V3; + sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_INTR_TO_DEVICE_REG_V3; + sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_Q1_REG_V3; + sdiodev->sdio_reg.bytemode_enable_reg = + SDIOWIFI_BYTEMODE_ENABLE_REG_V3; + sdiodev->sdio_reg.misc_int_status_reg = + SDIOWIFI_MISC_INT_STATUS_REG_V3; + sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR_V3; + sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR_V3; + } } int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) { struct mmc_host *host; u8 block_bit0 = 0x1; - u8 byte_mode_disable = 0x1;//1: no byte mode + u8 byte_mode_disable = 0x1; //1: no byte mode int ret = 0; struct aicbsp_feature_t feature; aicbsp_get_feature(&feature, NULL); - aicwf_sdio_reg_init(sdiodev); + aicwf_sdio_reg_init(sdiodev); host = sdiodev->func->card->host; sdio_claim_host(sdiodev->func); -#if 0//SDIO PHASE SETTING +#if 0 //SDIO PHASE SETTING sdiodev->func->card->quirks |= MMC_QUIRK_LENIENT_FN0; sdio_f0_writeb(sdiodev->func, feature.sdio_phase, 0x13, &ret); if (ret < 0) { @@ -1736,64 +1823,75 @@ int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) } ret = sdio_enable_func(sdiodev->func); if (ret < 0) { - sdio_err("enable func fail %d.\n", ret); + sdio_err("enable func fail %d.\n", ret); sdio_release_host(sdiodev->func); return ret; } - udelay(100); -#if 1//SDIO CLOCK SETTING + udelay(100); +#if 1 //SDIO CLOCK SETTING if (feature.sdio_clock > 0) { host->ios.clock = feature.sdio_clock; host->ops->set_ios(host, &host->ios); - sdio_dbg("Set SDIO Clock %d MHz\n", host->ios.clock/1000000); + sdio_dbg("Set SDIO Clock %d MHz\n", host->ios.clock / 1000000); } #endif sdio_release_host(sdiodev->func); - if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - - sdio_claim_host(sdiodev->func_msg); + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + sdio_claim_host(sdiodev->func_msg); //set sdio blocksize - ret = sdio_set_block_size(sdiodev->func_msg, SDIOWIFI_FUNC_BLOCKSIZE); - if (ret < 0) { - AICWFDBG(LOGERROR, "set func2 blocksize fail %d\n", ret); - sdio_release_host(sdiodev->func_msg); - return ret; - } + ret = sdio_set_block_size(sdiodev->func_msg, + SDIOWIFI_FUNC_BLOCKSIZE); + if (ret < 0) { + AICWFDBG(LOGERROR, "set func2 blocksize fail %d\n", + ret); + sdio_release_host(sdiodev->func_msg); + return ret; + } //set sdio enable func - ret = sdio_enable_func(sdiodev->func_msg); - if (ret < 0) { - AICWFDBG(LOGERROR, "enable func2 fail %d.\n", ret); - } + ret = sdio_enable_func(sdiodev->func_msg); + if (ret < 0) { + AICWFDBG(LOGERROR, "enable func2 fail %d.\n", ret); + } - sdio_release_host(sdiodev->func_msg); + sdio_release_host(sdiodev->func_msg); - ret = aicwf_sdio_writeb_func2(sdiodev, sdiodev->sdio_reg.register_block, block_bit0); - if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.register_block); - return ret; - } + ret = aicwf_sdio_writeb_func2( + sdiodev, sdiodev->sdio_reg.register_block, block_bit0); + if (ret < 0) { + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.register_block); + return ret; + } - //1: no byte mode - ret = aicwf_sdio_writeb_func2(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, byte_mode_disable); - if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.bytemode_enable_reg); - return ret; - } + //1: no byte mode + ret = aicwf_sdio_writeb_func2( + sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, + byte_mode_disable); + if (ret < 0) { + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.bytemode_enable_reg); + return ret; + } } - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.register_block, block_bit0); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.register_block, + block_bit0); if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.register_block); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.register_block); return ret; } //1: no byte mode - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, byte_mode_disable); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, + byte_mode_disable); if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.bytemode_enable_reg); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.bytemode_enable_reg); return ret; } @@ -1803,13 +1901,13 @@ int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) { struct mmc_host *host; - u8 byte_mode_disable = 0x1;//1: no byte mode + u8 byte_mode_disable = 0x1; //1: no byte mode int ret = 0; - //u8 val; + //u8 val; struct aicbsp_feature_t feature; aicbsp_get_feature(&feature, NULL); - aicwf_sdio_reg_init(sdiodev); + aicwf_sdio_reg_init(sdiodev); host = sdiodev->func->card->host; @@ -1824,17 +1922,17 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) } ret = sdio_enable_func(sdiodev->func); if (ret < 0) { - sdio_err("enable func fail %d.\n", ret); + sdio_err("enable func fail %d.\n", ret); sdio_release_host(sdiodev->func); return ret; } - sdio_f0_writeb(sdiodev->func, 0x7F, 0xF2, &ret); - if (ret) { - sdio_err("set fn0 0xF2 fail %d\n", ret); - sdio_release_host(sdiodev->func); - return ret; - } + sdio_f0_writeb(sdiodev->func, 0x7F, 0xF2, &ret); + if (ret) { + sdio_err("set fn0 0xF2 fail %d\n", ret); + sdio_release_host(sdiodev->func); + return ret; + } #if 0 if (host->ios.timing == MMC_TIMING_UHS_DDR50) { val = 0x21;//0x1D;//0x5; @@ -1861,7 +1959,7 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) return ret; } msleep(1); -#if 1//SDIO CLOCK SETTING +#if 1 //SDIO CLOCK SETTING if ((feature.sdio_clock > 0) && (host->ios.timing != MMC_TIMING_UHS_DDR50)) { host->ios.clock = feature.sdio_clock; host->ops->set_ios(host, &host->ios); @@ -1872,9 +1970,11 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) sdio_release_host(sdiodev->func); //1: no byte mode - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, byte_mode_disable); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, + byte_mode_disable); if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.bytemode_enable_reg); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.bytemode_enable_reg); return ret; } @@ -1903,15 +2003,14 @@ void aicwf_sdio_func_deinit(struct aic_sdio_dev *sdiodev) sdio_release_host(sdiodev->func); } - if(sdiodev->chipid == PRODUCT_ID_AIC8800DC || sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + if (sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { sdio_claim_host(sdiodev->func_msg); sdio_disable_func(sdiodev->func_msg); sdio_release_host(sdiodev->func_msg); } - } - void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) { int ret; @@ -1960,7 +2059,7 @@ void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) timer_setup(&sdiodev->timer, aicwf_sdio_bus_pwrctl, 0); #else init_timer(&sdiodev->timer); - sdiodev->timer.data = (ulong) sdiodev; + sdiodev->timer.data = (ulong)sdiodev; sdiodev->timer.function = aicwf_sdio_bus_pwrctl; #endif init_completion(&sdiodev->pwrctrl_trgg); @@ -1971,7 +2070,7 @@ void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) goto fail; } - ret = aicwf_bus_start(bus_if); + ret = aicwf_bus_start(bus_if); if (ret != 0) { sdio_err("bus start fail\n"); goto fail; @@ -1984,52 +2083,56 @@ fail: return NULL; } -void get_fw_path(char* fw_path){ +void get_fw_path(char *fw_path) +{ if (strlen(aic_fw_path) > 0) { memcpy(fw_path, aic_fw_path, strlen(aic_fw_path)); - }else{ - memcpy(fw_path, aic_default_fw_path, strlen(aic_default_fw_path)); + } else { + memcpy(fw_path, aic_default_fw_path, + strlen(aic_default_fw_path)); } } -int get_testmode(void){ +int get_testmode(void) +{ return testmode; } -struct sdio_func *get_sdio_func(void){ - return aicbsp_sdiodev->func; +struct sdio_func *get_sdio_func(void) +{ + return aicbsp_sdiodev->func; } -void set_irq_handler(void *fn){ - aicbsp_sdiodev->sdio_hal_irqhandler = (sdio_irq_handler_t *)fn; +void set_irq_handler(void *fn) +{ + aicbsp_sdiodev->sdio_hal_irqhandler = (sdio_irq_handler_t *)fn; } uint8_t crc8_ponl_107(uint8_t *p_buffer, uint16_t cal_size) { - uint8_t i; - uint8_t crc = 0; - if (cal_size==0) { - return crc; - } - while (cal_size--) { - for (i = 0x80; i > 0; i /= 2) { - if (crc & 0x80) { - crc *= 2; - crc ^= 0x07; //polynomial X8 + X2 + X + 1,(0x107) - } else { - crc *= 2; - } - if ((*p_buffer) & i) { - crc ^= 0x07; - } - } - p_buffer++; - } - return crc; + uint8_t i; + uint8_t crc = 0; + if (cal_size == 0) { + return crc; + } + while (cal_size--) { + for (i = 0x80; i > 0; i /= 2) { + if (crc & 0x80) { + crc *= 2; + crc ^= 0x07; //polynomial X8 + X2 + X + 1,(0x107) + } else { + crc *= 2; + } + if ((*p_buffer) & i) { + crc ^= 0x07; + } + } + p_buffer++; + } + return crc; } EXPORT_SYMBOL(get_fw_path); EXPORT_SYMBOL(get_testmode); EXPORT_SYMBOL(get_sdio_func); EXPORT_SYMBOL(set_irq_handler); - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.h index 68efaf5f6..e93c5ff32 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio.h @@ -16,75 +16,76 @@ #include #include "aic_bsp_driver.h" -#define AICBSP_SDIO_NAME "aicbsp_sdio" -#define SDIOWIFI_FUNC_BLOCKSIZE 512 +#define AICBSP_SDIO_NAME "aicbsp_sdio" +#define SDIOWIFI_FUNC_BLOCKSIZE 512 -#define SDIO_VENDOR_ID_AIC 0x8800 -#define SDIO_DEVICE_ID_AIC 0x0001 -#define SDIOWIFI_BYTEMODE_LEN_REG 0x02 -#define SDIOWIFI_INTR_CONFIG_REG 0x04 -#define SDIOWIFI_SLEEP_REG 0x05 -#define SDIOWIFI_WAKEUP_REG 0x09 -#define SDIOWIFI_FLOW_CTRL_REG 0x0A -#define SDIOWIFI_REGISTER_BLOCK 0x0B -#define SDIOWIFI_BYTEMODE_ENABLE_REG 0x11 -#define SDIOWIFI_BLOCK_CNT_REG 0x12 -#define SDIOWIFI_FLOWCTRL_MASK_REG 0x7F -#define SDIOWIFI_WR_FIFO_ADDR 0x07 -#define SDIOWIFI_RD_FIFO_ADDR 0x08 +#define SDIO_VENDOR_ID_AIC 0x8800 +#define SDIO_DEVICE_ID_AIC 0x0001 +#define SDIOWIFI_BYTEMODE_LEN_REG 0x02 +#define SDIOWIFI_INTR_CONFIG_REG 0x04 +#define SDIOWIFI_SLEEP_REG 0x05 +#define SDIOWIFI_WAKEUP_REG 0x09 +#define SDIOWIFI_FLOW_CTRL_REG 0x0A +#define SDIOWIFI_REGISTER_BLOCK 0x0B +#define SDIOWIFI_BYTEMODE_ENABLE_REG 0x11 +#define SDIOWIFI_BLOCK_CNT_REG 0x12 +#define SDIOWIFI_FLOWCTRL_MASK_REG 0x7F +#define SDIOWIFI_WR_FIFO_ADDR 0x07 +#define SDIOWIFI_RD_FIFO_ADDR 0x08 -#define SDIOWIFI_INTR_ENABLE_REG_V3 0x00 -#define SDIOWIFI_INTR_PENDING_REG_V3 0x01 -#define SDIOWIFI_INTR_TO_DEVICE_REG_V3 0x02 -#define SDIOWIFI_FLOW_CTRL_Q1_REG_V3 0x03 -#define SDIOWIFI_MISC_INT_STATUS_REG_V3 0x04 -#define SDIOWIFI_BYTEMODE_LEN_REG_V3 0x05 -#define SDIOWIFI_BYTEMODE_LEN_MSB_REG_V3 0x06 -#define SDIOWIFI_BYTEMODE_ENABLE_REG_V3 0x07 -#define SDIOWIFI_MISC_CTRL_REG_V3 0x08 -#define SDIOWIFI_FLOW_CTRL_Q2_REG_V3 0x09 -#define SDIOWIFI_CLK_TEST_RESULT_REG_V3 0x0A -#define SDIOWIFI_RD_FIFO_ADDR_V3 0x0F -#define SDIOWIFI_WR_FIFO_ADDR_V3 0x10 +#define SDIOWIFI_INTR_ENABLE_REG_V3 0x00 +#define SDIOWIFI_INTR_PENDING_REG_V3 0x01 +#define SDIOWIFI_INTR_TO_DEVICE_REG_V3 0x02 +#define SDIOWIFI_FLOW_CTRL_Q1_REG_V3 0x03 +#define SDIOWIFI_MISC_INT_STATUS_REG_V3 0x04 +#define SDIOWIFI_BYTEMODE_LEN_REG_V3 0x05 +#define SDIOWIFI_BYTEMODE_LEN_MSB_REG_V3 0x06 +#define SDIOWIFI_BYTEMODE_ENABLE_REG_V3 0x07 +#define SDIOWIFI_MISC_CTRL_REG_V3 0x08 +#define SDIOWIFI_FLOW_CTRL_Q2_REG_V3 0x09 +#define SDIOWIFI_CLK_TEST_RESULT_REG_V3 0x0A +#define SDIOWIFI_RD_FIFO_ADDR_V3 0x0F +#define SDIOWIFI_WR_FIFO_ADDR_V3 0x10 -#define SDIOCLK_FREE_RUNNING_BIT (1 << 6) +#define SDIOCLK_FREE_RUNNING_BIT (1 << 6) -#define SDIOWIFI_PWR_CTRL_INTERVAL 30 -#define FLOW_CTRL_RETRY_COUNT 50 -#define BUFFER_SIZE 1536 -#define TAIL_LEN 4 -#define TXQLEN (2048*4) +#define SDIOWIFI_PWR_CTRL_INTERVAL 30 +#define FLOW_CTRL_RETRY_COUNT 50 +#define BUFFER_SIZE 1536 +#define TAIL_LEN 4 +#define TXQLEN (2048 * 4) -#define SDIO_SLEEP_ST 0 -#define SDIO_ACTIVE_ST 1 +#define SDIO_SLEEP_ST 0 +#define SDIO_ACTIVE_ST 1 typedef enum { - SDIO_TYPE_DATA = 0X00, - SDIO_TYPE_CFG = 0X10, - SDIO_TYPE_CFG_CMD_RSP = 0X11, + SDIO_TYPE_DATA = 0X00, + SDIO_TYPE_CFG = 0X10, + SDIO_TYPE_CFG_CMD_RSP = 0X11, SDIO_TYPE_CFG_DATA_CFM = 0X12 } sdio_type; -enum AICWF_IC{ - PRODUCT_ID_AIC8801 = 0, +enum AICWF_IC { + PRODUCT_ID_AIC8801 = 0, PRODUCT_ID_AIC8800DC, PRODUCT_ID_AIC8800DW, - PRODUCT_ID_AIC8800D80 + PRODUCT_ID_AIC8800D80, + PRODUCT_ID_AIC8800D80X2 }; struct aic_sdio_reg { - u8 bytemode_len_reg; - u8 intr_config_reg; - u8 sleep_reg; - u8 wakeup_reg; - u8 flow_ctrl_reg; - u8 flowctrl_mask_reg; - u8 register_block; - u8 bytemode_enable_reg; - u8 block_cnt_reg; - u8 misc_int_status_reg; - u8 rd_fifo_addr; - u8 wr_fifo_addr; + u8 bytemode_len_reg; + u8 intr_config_reg; + u8 sleep_reg; + u8 wakeup_reg; + u8 flow_ctrl_reg; + u8 flowctrl_mask_reg; + u8 register_block; + u8 bytemode_enable_reg; + u8 block_cnt_reg; + u8 misc_int_status_reg; + u8 rd_fifo_addr; + u8 wr_fifo_addr; }; struct aic_sdio_dev { @@ -109,8 +110,8 @@ struct aic_sdio_dev { #endif u16 chipid; u32 fw_version_uint; - struct aic_sdio_reg sdio_reg; - void (*sdio_hal_irqhandler) (struct sdio_func *func); + struct aic_sdio_reg sdio_reg; + void (*sdio_hal_irqhandler)(struct sdio_func *func); }; void *aicbsp_get_drvdata(void *args); @@ -119,19 +120,20 @@ void aicwf_sdio_hal_irqhandler(struct sdio_func *func); void aicwf_sdio_hal_irqhandler_func2(struct sdio_func *func); #if defined(CONFIG_SDIO_PWRCTRL) void aicwf_sdio_pwrctl_timer(struct aic_sdio_dev *sdiodev, uint duration); -int aicwf_sdio_pwr_stctl(struct aic_sdio_dev *sdiodev, uint target); +int aicwf_sdio_pwr_stctl(struct aic_sdio_dev *sdiodev, uint target); #endif void aicwf_sdio_reg_init(struct aic_sdio_dev *sdiodev); int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev); int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev); void aicwf_sdio_func_deinit(struct aic_sdio_dev *sdiodev); int aicwf_sdio_flow_ctrl(struct aic_sdio_dev *sdiodev); -int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, u32 size, u8 msg); +int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, + u32 size, u8 msg); int aicwf_sdio_send_pkt(struct aic_sdio_dev *sdiodev, u8 *buf, uint count); void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev); void aicwf_sdio_release(struct aic_sdio_dev *sdiodev); void aicbsp_sdio_exit(void); -int aicbsp_sdio_init(void); +int aicbsp_sdio_init(void); void aicbsp_sdio_release(struct aic_sdio_dev *sdiodev); int aicwf_sdio_txpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt); int aicwf_sdio_bustx_thread(void *data); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.c index 82bacf945..e05744d77 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.c @@ -40,24 +40,27 @@ int aicwf_bus_init(uint bus_hdrlen, struct device *dev) init_completion(&bus_if->bustx_trgg); init_completion(&bus_if->busrx_trgg); #ifdef AICWF_SDIO_SUPPORT - bus_if->bustx_thread = kthread_run(aicwf_sdio_bustx_thread, (void *)bus_if, "aicwf_bustx_thread"); - bus_if->busrx_thread = kthread_run(aicwf_sdio_busrx_thread, (void *)bus_if->bus_priv.sdio->rx_priv, "aicwf_busrx_thread"); -#endif - + bus_if->bustx_thread = kthread_run( + aicwf_sdio_bustx_thread, (void *)bus_if, "aicwf_bustx_thread"); if (IS_ERR(bus_if->bustx_thread)) { - bus_if->bustx_thread = NULL; + bus_if->bustx_thread = NULL; txrx_err("aicwf_bustx_thread run fail\n"); ret = -1; goto fail; } + bus_if->busrx_thread = + kthread_run(aicwf_sdio_busrx_thread, + (void *)bus_if->bus_priv.sdio->rx_priv, + "aicwf_busrx_thread"); if (IS_ERR(bus_if->busrx_thread)) { - bus_if->busrx_thread = NULL; + bus_if->busrx_thread = NULL; txrx_err("aicwf_bustx_thread run fail\n"); ret = -1; goto fail; } +#endif return ret; fail: aicwf_bus_deinit(dev); @@ -173,15 +176,19 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) data = skb->data; pkt_len = (*skb->data | (*(skb->data + 1) << 8)); - if ((skb->data[2] & SDIO_TYPE_CFG) != SDIO_TYPE_CFG) { // type : data + if ((skb->data[2] & SDIO_TYPE_CFG) != + SDIO_TYPE_CFG) { // type : data aggr_len = pkt_len + RX_HWHRD_LEN; if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); + adjust_len = + roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL);//8 is for ccmp mic or wep icv + skb_inblock = __dev_alloc_skb( + aggr_len + CCMP_OR_WEP_INFO, + GFP_KERNEL); //8 is for ccmp mic or wep icv if (skb_inblock == NULL) { txrx_err("no more space!\n"); aicwf_dev_skb_free(skb); @@ -190,34 +197,41 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) skb_put(skb_inblock, aggr_len); memcpy(skb_inblock->data, data, aggr_len); - #if 0 +#if 0 rwnx_rxdataind_aicwf(rx_priv->sdiodev->rwnx_hw, skb_inblock, (void *)rx_priv); - #endif +#endif skb_pull(skb, adjust_len); } else { // type : config aggr_len = pkt_len; if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); + adjust_len = + roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - skb_inblock = __dev_alloc_skb(aggr_len+4, GFP_KERNEL); - if (skb_inblock == NULL) { - txrx_err("no more space!\n"); - aicwf_dev_skb_free(skb); - return -EBADE; + skb_inblock = __dev_alloc_skb(aggr_len + 4, + GFP_KERNEL); + if (skb_inblock == NULL) { + txrx_err("no more space!\n"); + aicwf_dev_skb_free(skb); + return -EBADE; } - skb_put(skb_inblock, aggr_len+4); - memcpy(skb_inblock->data, data, aggr_len+4); - if ((*(skb_inblock->data + 2) & 0x7f) == SDIO_TYPE_CFG_CMD_RSP) - rwnx_rx_handle_msg(rx_priv->sdiodev, (struct ipc_e2a_msg *)(skb_inblock->data + 4)); - #if 0 + skb_put(skb_inblock, aggr_len + 4); + memcpy(skb_inblock->data, data, aggr_len + 4); + if ((*(skb_inblock->data + 2) & 0x7f) == + SDIO_TYPE_CFG_CMD_RSP) + rwnx_rx_handle_msg( + rx_priv->sdiodev, + (struct ipc_e2a_msg + *)(skb_inblock->data + + 4)); +#if 0 if ((*(skb_inblock->data + 2) & 0x7f) == SDIO_TYPE_CFG_DATA_CFM) aicwf_sdio_host_tx_cfm_handler(&(rx_priv->sdiodev->rwnx_hw->sdio_env), (u32 *)(skb_inblock->data + 4)); - #endif - skb_pull(skb, adjust_len+4); +#endif + skb_pull(skb, adjust_len + 4); } } @@ -234,12 +248,13 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) return ret; } -static struct recv_msdu *aicwf_rxframe_queue_init(struct list_head *q, int qsize) +static struct recv_msdu *aicwf_rxframe_queue_init(struct list_head *q, + int qsize) { int i; struct recv_msdu *req, *reqs; - reqs = vmalloc(qsize*sizeof(struct recv_msdu)); + reqs = vmalloc(qsize * sizeof(struct recv_msdu)); if (reqs == NULL) return NULL; @@ -268,7 +283,8 @@ struct aicwf_rx_priv *aicwf_rx_init(void *arg) INIT_LIST_HEAD(&rx_priv->rxframes_freequeue); spin_lock_init(&rx_priv->freeq_lock); - rx_priv->recv_frames = aicwf_rxframe_queue_init(&rx_priv->rxframes_freequeue, MAX_REORD_RXFRAME); + rx_priv->recv_frames = aicwf_rxframe_queue_init( + &rx_priv->rxframes_freequeue, MAX_REORD_RXFRAME); if (!rx_priv->recv_frames) { txrx_err("no enough buffer for free recv frame queue!\n"); kfree(rx_priv); @@ -280,12 +296,11 @@ struct aicwf_rx_priv *aicwf_rx_init(void *arg) return rx_priv; } - static void aicwf_recvframe_queue_deinit(struct list_head *q) { struct recv_msdu *req, *next; - list_for_each_entry_safe(req, next, q, rxframe_list) { + list_for_each_entry_safe (req, next, q, rxframe_list) { list_del_init(&req->rxframe_list); } } @@ -307,12 +322,12 @@ void aicwf_rx_deinit(struct aicwf_rx_priv *rx_priv) //rx_priv = NULL; } -bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, struct sk_buff *pkt) +bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt) { return aicwf_frame_enq(dev, q, pkt, 0); } - void aicwf_dev_skb_free(struct sk_buff *skb) { if (!skb) @@ -321,7 +336,8 @@ void aicwf_dev_skb_free(struct sk_buff *skb) dev_kfree_skb_any(skb); } -static struct sk_buff *aicwf_frame_queue_penq(struct frame_queue *pq, int prio, struct sk_buff *p) +static struct sk_buff *aicwf_frame_queue_penq(struct frame_queue *pq, int prio, + struct sk_buff *p) { struct sk_buff_head *q; @@ -345,7 +361,8 @@ void aicwf_frame_queue_flush(struct frame_queue *pq) for (prio = 0; prio < pq->num_prio; prio++) { q = &pq->queuelist[prio]; - skb_queue_walk_safe(q, p, next) { + skb_queue_walk_safe(q, p, next) + { skb_unlink(p, q); aicwf_dev_skb_free(p); pq->qcnt--; @@ -357,7 +374,9 @@ void aicwf_frame_queue_init(struct frame_queue *pq, int num_prio, int max_len) { int prio; - memset(pq, 0, offsetof(struct frame_queue, queuelist) + (sizeof(struct sk_buff_head) * num_prio)); + memset(pq, 0, + offsetof(struct frame_queue, queuelist) + + (sizeof(struct sk_buff_head) * num_prio)); pq->num_prio = (u16)num_prio; pq->qmax = (u16)max_len; @@ -366,7 +385,8 @@ void aicwf_frame_queue_init(struct frame_queue *pq, int num_prio, int max_len) } } -struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, int *prio_out) +struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, + int *prio_out) { int prio; @@ -405,7 +425,8 @@ struct sk_buff *aicwf_frame_dequeue(struct frame_queue *pq) if (pq->qcnt == 0) return NULL; - while ((prio = pq->hi_prio) > 0 && skb_queue_empty(&pq->queuelist[prio])) + while ((prio = pq->hi_prio) > 0 && + skb_queue_empty(&pq->queuelist[prio])) pq->hi_prio--; q = &pq->queuelist[prio]; @@ -430,7 +451,8 @@ static struct sk_buff *aicwf_skb_dequeue_tail(struct frame_queue *pq, int prio) return p; } -bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, struct sk_buff *pkt, int prio) +bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt, int prio) { struct sk_buff *p = NULL; int prio_modified = -1; @@ -461,5 +483,3 @@ bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, struct sk_buff * return p != NULL; } - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.h index 801e0ea49..11e733cd1 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicsdio_txrxif.h @@ -13,58 +13,61 @@ #include #include "aicsdio.h" -#define CMD_BUF_MAX 1536 -#define TXPKT_BLOCKSIZE 512 -#define MAX_AGGR_TXPKT_LEN (1536*4) -#define CMD_TX_TIMEOUT 5000 -#define TX_ALIGNMENT 4 +#define CMD_BUF_MAX 1536 +#define TXPKT_BLOCKSIZE 512 +#define MAX_AGGR_TXPKT_LEN (1536 * 4) +#define CMD_TX_TIMEOUT 5000 +#define TX_ALIGNMENT 4 -#define RX_HWHRD_LEN 60 //58->60 word allined -#define CCMP_OR_WEP_INFO 8 -#define MAX_RXQLEN 2000 -#define RX_ALIGNMENT 4 +#define RX_HWHRD_LEN 60 //58->60 word allined +#define CCMP_OR_WEP_INFO 8 +#define MAX_RXQLEN 2000 +#define RX_ALIGNMENT 4 -#define DEBUG_ERROR_LEVEL 0 -#define DEBUG_DEBUG_LEVEL 1 -#define DEBUG_INFO_LEVEL 2 +#define DEBUG_ERROR_LEVEL 0 +#define DEBUG_DEBUG_LEVEL 1 +#define DEBUG_INFO_LEVEL 2 -#define DBG_LEVEL DEBUG_DEBUG_LEVEL +#define DBG_LEVEL DEBUG_DEBUG_LEVEL -#define txrx_err(fmt, ...) pr_err("aicbsp: txrx_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) -#define sdio_err(fmt, ...) pr_err("aicbsp: sdio_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) -#define usb_err(fmt, ...) pr_err("aicbsp: usb_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) +#define txrx_err(fmt, ...) \ + pr_err("aicbsp: txrx_err:<%s,%d>: " fmt, __func__, __LINE__, \ + ##__VA_ARGS__) +#define sdio_err(fmt, ...) \ + pr_err("aicbsp: sdio_err:<%s,%d>: " fmt, __func__, __LINE__, \ + ##__VA_ARGS__) +#define usb_err(fmt, ...) \ + pr_err("aicbsp: usb_err:<%s,%d>: " fmt, __func__, __LINE__, \ + ##__VA_ARGS__) #if DBG_LEVEL >= DEBUG_DEBUG_LEVEL -#define sdio_dbg(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) -#define usb_dbg(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) +#define sdio_dbg(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) +#define usb_dbg(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) #else #define sdio_dbg(fmt, ...) #define usb_dbg(fmt, ...) #endif #if DBG_LEVEL >= DEBUG_INFO_LEVEL -#define sdio_info(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) -#define usb_info(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) +#define sdio_info(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) +#define usb_info(fmt, ...) printk("aicbsp: " fmt, ##__VA_ARGS__) #else #define sdio_info(fmt, ...) #define usb_info(fmt, ...) #endif -enum aicwf_bus_state { - BUS_DOWN_ST, - BUS_UP_ST -}; +enum aicwf_bus_state { BUS_DOWN_ST, BUS_UP_ST }; struct aicwf_bus_ops { - int (*start) (struct device *dev); - void (*stop) (struct device *dev); - int (*txdata) (struct device *dev, struct sk_buff *skb); - int (*txmsg) (struct device *dev, u8 *msg, uint len); + int (*start)(struct device *dev); + void (*stop)(struct device *dev); + int (*txdata)(struct device *dev, struct sk_buff *skb); + int (*txmsg)(struct device *dev, u8 *msg, uint len); }; struct frame_queue { - u16 num_prio; - u16 hi_prio; - u16 qmax; /* max number of queued frames */ - u16 qcnt; + u16 num_prio; + u16 hi_prio; + u16 qmax; /* max number of queued frames */ + u16 qcnt; struct sk_buff_head queuelist[8]; }; @@ -110,12 +113,11 @@ struct aicwf_tx_priv { u8 *tail; }; - -#define MAX_REORD_RXFRAME 250 -#define REORDER_UPDATE_TIME 50 -#define AICWF_REORDER_WINSIZE 64 -#define SN_LESS(a, b) (((a-b)&0x800) != 0) -#define SN_EQUAL(a, b) (a == b) +#define MAX_REORD_RXFRAME 250 +#define REORDER_UPDATE_TIME 50 +#define AICWF_REORDER_WINSIZE 64 +#define SN_LESS(a, b) (((a - b) & 0x800) != 0) +#define SN_EQUAL(a, b) (a == b) struct reord_ctrl { struct aicwf_rx_priv *rx_priv; @@ -135,12 +137,12 @@ struct reord_ctrl_info { }; struct recv_msdu { - struct sk_buff *pkt; - u8 tid; - u16 seq_num; - uint len; - u8 *rx_data; - //for pending rx reorder list + struct sk_buff *pkt; + u8 tid; + u16 seq_num; + uint len; + u8 *rx_data; + //for pending rx reorder list struct list_head reord_pending_list; //for total frame list, when rxframe from busif, dequeue, when submit frame to net, enqueue struct list_head rxframe_list; @@ -203,12 +205,15 @@ struct aicwf_tx_priv *aicwf_tx_init(void *arg); struct aicwf_rx_priv *aicwf_rx_init(void *arg); void aicwf_frame_queue_init(struct frame_queue *pq, int num_prio, int max_len); void aicwf_frame_queue_flush(struct frame_queue *pq); -bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, struct sk_buff *pkt, int prio); -bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, struct sk_buff *pkt); +bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt, int prio); +bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt); bool aicwf_is_framequeue_empty(struct frame_queue *pq); void aicwf_frame_tx(void *dev, struct sk_buff *skb); void aicwf_dev_skb_free(struct sk_buff *skb); struct sk_buff *aicwf_frame_dequeue(struct frame_queue *pq); -struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, int *prio_out); +struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, + int *prio_out); #endif /* _AICWF_TXRXIF_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.c index 77130f76b..1b91677f5 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.c @@ -1,16138 +1,26866 @@ #include char fmacfw[259592] = { -0x00, 0x38, 0x18, 0x00, 0x89, 0x01, 0x12, 0x00, 0xA5, 0xC6, 0x12, 0x00, 0xA1, 0xCA, 0x12, 0x00, 0xA9, 0xCA, 0x12, 0x00, -0xB1, 0xCA, 0x12, 0x00, 0xB9, 0xCA, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xA5, 0xC6, 0x12, 0x00, 0xA5, 0xC6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xC6, 0x12, 0x00, -0xA5, 0xC6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xBB, 0x12, 0x00, 0x19, 0x1E, 0x14, 0x00, 0x35, 0xEE, 0x12, 0x00, -0x49, 0xED, 0x12, 0x00, 0x79, 0x5C, 0x13, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x79, 0x5C, 0x13, 0x00, 0x49, 0x11, 0x12, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x99, 0x1A, 0x12, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x65, 0x5A, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xED, 0x12, 0x00, 0x45, 0xED, 0x12, 0x00, -0x45, 0xED, 0x12, 0x00, 0x45, 0xED, 0x12, 0x00, 0x45, 0xED, 0x12, 0x00, 0x7D, 0x4A, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, -0x99, 0x1A, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x99, 0x1A, 0x12, 0x00, -0x00, 0x00, 0x00, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x8D, 0x52, 0x12, 0x00, 0x79, 0x51, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xCD, 0x5B, 0x12, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x05, 0x48, 0x00, 0x68, 0x10, 0xF0, 0x00, 0x4F, -0x0C, 0xBF, 0x04, 0x48, 0x20, 0xF0, 0x7F, 0x40, 0x80, 0xF3, 0x08, 0x88, 0x02, 0x48, 0x00, 0x47, 0x44, 0x01, 0x50, 0x40, -0x00, 0x38, 0x18, 0x00, 0x05, 0xC7, 0x12, 0x00, 0xF0, 0xB4, 0x86, 0x07, 0x46, 0xD0, 0x54, 0x1E, 0x00, 0x2A, 0x3C, 0xD0, -0xCA, 0xB2, 0x03, 0x46, 0x01, 0xE0, 0x01, 0x3C, 0x37, 0xD3, 0x03, 0xF8, 0x01, 0x2B, 0x9D, 0x07, 0xF9, 0xD1, 0x03, 0x2C, -0x2A, 0xD9, 0xCD, 0xB2, 0x45, 0xEA, 0x05, 0x25, 0x0F, 0x2C, 0x45, 0xEA, 0x05, 0x45, 0x34, 0xD9, 0xA4, 0xF1, 0x10, 0x02, -0x22, 0xF0, 0x0F, 0x0C, 0x03, 0xF1, 0x20, 0x07, 0x16, 0x09, 0x67, 0x44, 0x03, 0xF1, 0x10, 0x02, 0x42, 0xE9, 0x04, 0x55, -0x42, 0xE9, 0x02, 0x55, 0x10, 0x32, 0xBA, 0x42, 0xF8, 0xD1, 0x72, 0x1C, 0x14, 0xF0, 0x0C, 0x0F, 0x03, 0xEB, 0x02, 0x12, -0x04, 0xF0, 0x0F, 0x06, 0x13, 0xD0, 0x33, 0x1F, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x13, 0x44, 0x42, 0xF8, 0x04, 0x5B, -0x93, 0x42, 0xFB, 0xD1, 0x06, 0xF0, 0x03, 0x04, 0x2C, 0xB1, 0xCA, 0xB2, 0x1C, 0x44, 0x03, 0xF8, 0x01, 0x2B, 0x9C, 0x42, -0xFB, 0xD1, 0xF0, 0xBC, 0x70, 0x47, 0x34, 0x46, 0x13, 0x46, 0x00, 0x2C, 0xF3, 0xD1, 0xF8, 0xE7, 0x14, 0x46, 0x03, 0x46, -0xC1, 0xE7, 0x1A, 0x46, 0x26, 0x46, 0xE0, 0xE7, 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x68, 0x91, 0x4F, 0x4F, 0xD9, 0xF8, -0x00, 0x60, 0xDF, 0xF8, 0x64, 0xC1, 0x33, 0x89, 0xD6, 0xF8, 0x34, 0xE0, 0xC7, 0xF8, 0x10, 0xE0, 0xD6, 0xE9, 0x09, 0x10, -0xD6, 0xE9, 0x0B, 0x45, 0x39, 0x60, 0xC9, 0x08, 0x03, 0x29, 0x78, 0x60, 0x4F, 0xEA, 0xD0, 0x00, 0x38, 0xBF, 0x03, 0x21, -0xBC, 0x60, 0x03, 0x28, 0x4F, 0xEA, 0xD4, 0x04, 0x38, 0xBF, 0x03, 0x20, 0xFD, 0x60, 0x03, 0x2C, 0x4F, 0xEA, 0xD5, 0x05, -0x4F, 0xF0, 0x54, 0x02, 0x4F, 0xEA, 0xDE, 0x07, 0x2C, 0xF0, 0x03, 0x0C, 0x38, 0xBF, 0x03, 0x24, 0xDF, 0xF8, 0x1C, 0xE1, -0xDF, 0xF8, 0x1C, 0x81, 0xDF, 0xF8, 0x1C, 0xA1, 0xC8, 0xF8, 0x00, 0x10, 0x03, 0x2D, 0x03, 0xFB, 0x02, 0x22, 0x38, 0xBF, -0x03, 0x25, 0x62, 0x44, 0x03, 0x2F, 0x38, 0xBF, 0x03, 0x27, 0x72, 0x45, 0xC8, 0xE9, 0x01, 0x04, 0xC8, 0xE9, 0x03, 0x57, -0xCA, 0xF8, 0x00, 0xC0, 0x4F, 0xD8, 0x01, 0x33, 0xDF, 0xF8, 0xF4, 0xE0, 0x2E, 0x4A, 0xDF, 0xF8, 0xF4, 0x80, 0xDF, 0xF8, -0xF4, 0x90, 0x4F, 0xF0, 0x58, 0x0C, 0x0C, 0xFB, 0x03, 0xE3, 0xD2, 0xF8, 0x00, 0xC0, 0x2A, 0x4A, 0x13, 0x60, 0x4F, 0xF4, -0xAC, 0x72, 0x02, 0xFB, 0x01, 0x33, 0x02, 0xFB, 0x00, 0x30, 0x02, 0xFB, 0x04, 0x04, 0x02, 0xFB, 0x05, 0x45, 0xDC, 0xF8, -0x00, 0x10, 0xC8, 0xF8, 0x00, 0x50, 0x02, 0xFB, 0x07, 0x52, 0xC9, 0xF8, 0x00, 0x40, 0x21, 0x4F, 0x21, 0x4D, 0x22, 0x4C, -0x38, 0x60, 0x2B, 0x60, 0xC4, 0xF8, 0x00, 0xE0, 0x41, 0xB9, 0xDC, 0xF8, 0x04, 0x30, 0x04, 0x33, 0x11, 0x1D, 0x23, 0xF0, -0x03, 0x03, 0xCC, 0xF8, 0x00, 0x10, 0x1A, 0x44, 0xDC, 0xF8, 0x08, 0x30, 0x13, 0xB9, 0x04, 0x32, 0xCC, 0xF8, 0x08, 0x20, -0x18, 0x4B, 0xF2, 0x68, 0x1A, 0x60, 0x33, 0x78, 0x02, 0x2B, 0x0E, 0xD0, 0x01, 0x2B, 0x01, 0xD0, 0xBD, 0xE8, 0xF0, 0x87, -0x72, 0x69, 0x00, 0x2A, 0xFA, 0xD0, 0x13, 0x49, 0x91, 0x42, 0xF7, 0xD9, 0xBD, 0xE8, 0xF0, 0x47, 0x11, 0x48, 0x05, 0xF0, -0xC1, 0xBF, 0x32, 0x69, 0xF3, 0xE7, 0x71, 0x46, 0x0F, 0x48, 0x05, 0xF0, 0xBB, 0xFF, 0xD9, 0xF8, 0x00, 0x60, 0xD8, 0xF8, -0x00, 0x10, 0x33, 0x89, 0xD8, 0xE9, 0x01, 0x04, 0xD8, 0xE9, 0x03, 0x57, 0x01, 0x33, 0xA1, 0xE7, 0x7C, 0x28, 0x17, 0x00, -0x30, 0x36, 0x17, 0x00, 0xEC, 0x57, 0x18, 0x00, 0xF4, 0x57, 0x18, 0x00, 0xF0, 0x57, 0x18, 0x00, 0x14, 0x63, 0x18, 0x00, -0x00, 0x38, 0x18, 0x00, 0x00, 0x38, 0x18, 0x00, 0x44, 0x76, 0x15, 0x00, 0x18, 0x76, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, -0x2B, 0x07, 0x18, 0x00, 0x00, 0x24, 0x18, 0x00, 0x8C, 0x1F, 0x17, 0x00, 0x40, 0x61, 0x17, 0x00, 0xE0, 0x9F, 0x18, 0x00, -0xFC, 0x57, 0x18, 0x00, 0xF8, 0x57, 0x18, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x49, 0x4C, 0x4A, 0x49, 0x4A, 0x4E, 0x4B, 0x4A, -0x4B, 0x4D, 0x4C, 0x48, 0x0C, 0x60, 0x04, 0xF1, 0x44, 0x07, 0x21, 0x1D, 0xD4, 0xF8, 0xD0, 0x30, 0x37, 0x60, 0x04, 0xF1, -0x80, 0x07, 0x11, 0x60, 0x2F, 0x60, 0x47, 0x49, 0x47, 0x4A, 0x04, 0xF1, 0x90, 0x05, 0x23, 0xF0, 0x7F, 0x43, 0x05, 0x60, -0x04, 0xF1, 0xA8, 0x00, 0x08, 0x60, 0x23, 0xF0, 0xFF, 0x03, 0x04, 0xF1, 0xAA, 0x01, 0x11, 0x60, 0x83, 0xB1, 0x94, 0xF8, -0xD1, 0x30, 0x23, 0xB1, 0x3F, 0x4A, 0x53, 0x6D, 0x23, 0xF0, 0x01, 0x03, 0x53, 0x65, 0x94, 0xF8, 0xD2, 0x30, 0x00, 0x2B, -0x5B, 0xD1, 0x3B, 0x4B, 0x4F, 0xF0, 0x80, 0x62, 0xC3, 0xF8, 0x10, 0x21, 0x39, 0x4D, 0x3A, 0x4F, 0xD5, 0xF8, 0x30, 0x32, -0xDF, 0xF8, 0xF8, 0x80, 0x98, 0x47, 0x01, 0x21, 0x00, 0x20, 0x05, 0xF0, 0x5F, 0xFF, 0x00, 0x20, 0x05, 0xF0, 0x9A, 0xFF, -0x01, 0x21, 0x02, 0x20, 0x05, 0xF0, 0x58, 0xFF, 0x02, 0x20, 0x05, 0xF0, 0x93, 0xFF, 0x01, 0x21, 0x03, 0x20, 0x05, 0xF0, -0x51, 0xFF, 0x03, 0x20, 0x05, 0xF0, 0x8C, 0xFF, 0x3B, 0x68, 0x03, 0xF0, 0x0F, 0x03, 0xA3, 0xF1, 0x0A, 0x03, 0xB3, 0xFA, -0x83, 0xF3, 0x5B, 0x09, 0x88, 0xF8, 0x02, 0x30, 0x25, 0xF0, 0x0E, 0xFA, 0x05, 0xF0, 0x90, 0xFA, 0x06, 0xF0, 0x54, 0xF8, -0xD5, 0xF8, 0x74, 0x32, 0x98, 0x47, 0x94, 0xF8, 0x44, 0x10, 0x23, 0x48, 0x24, 0xF0, 0xEE, 0xF8, 0x07, 0xF0, 0x8C, 0xF8, -0x06, 0xF0, 0xA8, 0xF9, 0x98, 0xF8, 0x02, 0x30, 0x0B, 0xB3, 0xD5, 0xF8, 0x6C, 0x34, 0x98, 0x47, 0x1D, 0x4A, 0x1E, 0x49, -0x13, 0x68, 0x23, 0xF0, 0x08, 0x03, 0x13, 0x60, 0x3B, 0x68, 0x23, 0xF0, 0x0F, 0x03, 0x3B, 0x60, 0x02, 0x20, 0x24, 0xF0, -0x27, 0xF9, 0x33, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x02, 0xD1, 0x17, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD5, 0xF8, 0x80, 0x32, -0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x0D, 0x4A, 0x53, 0x6D, 0x23, 0xF0, 0x02, 0x03, 0x53, 0x65, 0x9D, 0xE7, 0x11, 0x49, -0x02, 0x20, 0x24, 0xF0, 0x11, 0xF9, 0xE8, 0xE7, 0x2C, 0x19, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, -0xC8, 0x35, 0x17, 0x00, 0x30, 0x36, 0x17, 0x00, 0xAC, 0x35, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x00, 0x00, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x00, 0x58, 0x40, 0x70, 0x76, 0x15, 0x00, 0x10, 0x00, 0x58, 0x40, -0x80, 0x76, 0x15, 0x00, 0x00, 0x41, 0x04, 0x40, 0x8C, 0x76, 0x15, 0x00, 0x3C, 0x36, 0x17, 0x00, 0xF8, 0xB5, 0x20, 0x4B, -0x04, 0x46, 0x1E, 0x68, 0x1D, 0x68, 0x00, 0xF0, 0xAB, 0xFE, 0x07, 0x46, 0x00, 0xF0, 0xAA, 0xFE, 0x01, 0x2C, 0xC6, 0xF3, -0x03, 0x26, 0xC5, 0xF3, 0xC0, 0x65, 0x14, 0xD0, 0x02, 0x2C, 0x0E, 0xD0, 0x3C, 0xB1, 0x18, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x1C, 0xDB, 0x00, 0x20, 0xF8, 0xBD, 0x90, 0xB9, 0x05, 0xBB, 0x70, 0x1E, 0x18, 0xBF, 0x01, 0x20, -0xF8, 0xBD, 0x01, 0x2E, 0x0D, 0xD0, 0x68, 0x1D, 0xF8, 0xBD, 0x30, 0xB9, 0x01, 0x2E, 0x17, 0xD0, 0x00, 0x2F, 0x0C, 0xBF, -0x03, 0x20, 0x09, 0x20, 0xF8, 0xBD, 0x0B, 0x20, 0xF8, 0xBD, 0x0A, 0x20, 0xF8, 0xBD, 0x00, 0x2D, 0x14, 0xBF, 0x07, 0x20, -0x04, 0x20, 0xF8, 0xBD, 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0xB5, 0x12, 0x24, 0xF0, 0xDC, 0xFA, 0x00, 0x20, 0xF8, 0xBD, -0x08, 0x20, 0xF8, 0xBD, 0x02, 0x20, 0xF8, 0xBD, 0x00, 0x00, 0x33, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x10, 0xB4, 0x09, 0x49, 0x0B, 0x69, 0x83, 0xB0, 0x18, 0x44, 0x20, 0x24, 0x01, 0x94, 0x01, 0x9B, -0x5A, 0x1E, 0x01, 0x92, 0x00, 0x2B, 0xFA, 0xD1, 0x0B, 0x69, 0x1B, 0x1A, 0x00, 0x2B, 0xF5, 0xDB, 0x03, 0xB0, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x10, 0x50, 0x40, 0x08, 0xB5, 0xFF, 0xF7, 0x9D, 0xFF, 0x03, 0x4B, 0x1A, 0x78, 0x82, 0x42, -0x18, 0xBF, 0x18, 0x70, 0x08, 0xBD, 0x00, 0xBF, 0x60, 0x25, 0x17, 0x00, 0x38, 0xB5, 0x10, 0x4B, 0x10, 0x4C, 0x18, 0x68, -0xC0, 0xF3, 0x01, 0x60, 0xFF, 0xF7, 0x8C, 0xFF, 0x08, 0x22, 0x05, 0x46, 0x00, 0x21, 0x20, 0x46, 0xFF, 0xF7, 0xB6, 0xFD, -0x0B, 0x48, 0x0C, 0x4A, 0x00, 0xEB, 0x05, 0x10, 0xFF, 0x21, 0xC3, 0x88, 0x80, 0x88, 0x10, 0x60, 0xC3, 0xF3, 0x85, 0x12, -0x03, 0xF0, 0x3F, 0x03, 0x1A, 0x44, 0x21, 0x70, 0x4F, 0xF4, 0x96, 0x63, 0xB3, 0xFB, 0xF2, 0xF3, 0x63, 0x70, 0x38, 0xBD, -0x00, 0x00, 0x33, 0x40, 0x60, 0x25, 0x17, 0x00, 0x98, 0x76, 0x15, 0x00, 0x6C, 0x00, 0x34, 0x40, 0x01, 0x4B, 0x58, 0x78, -0x70, 0x47, 0x00, 0xBF, 0x60, 0x25, 0x17, 0x00, 0x10, 0xB4, 0x13, 0x4B, 0x13, 0x49, 0x11, 0x22, 0x1A, 0x60, 0x08, 0x69, -0x83, 0xB0, 0x0A, 0x30, 0x20, 0x24, 0x00, 0x94, 0x00, 0x9B, 0x5A, 0x1E, 0x00, 0x92, 0x00, 0x2B, 0xFA, 0xD1, 0x0A, 0x69, -0x12, 0x1A, 0x00, 0x2A, 0xF5, 0xDB, 0x0A, 0x4A, 0x0A, 0x4C, 0x13, 0x60, 0x09, 0x69, 0x20, 0x20, 0x0A, 0x31, 0x01, 0x90, -0x01, 0x9B, 0x5A, 0x1E, 0x01, 0x92, 0x00, 0x2B, 0xFA, 0xD1, 0x23, 0x69, 0x5B, 0x1A, 0x00, 0x2B, 0xF5, 0xDB, 0x03, 0xB0, -0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x00, 0x34, 0x40, 0x00, 0x10, 0x50, 0x40, 0x16, 0x4A, 0x13, 0x68, -0x43, 0xF4, 0x80, 0x53, 0x10, 0xB4, 0x13, 0x60, 0x00, 0xBF, 0x02, 0xF5, 0x99, 0x42, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x53, -0x13, 0x60, 0x00, 0xBF, 0x10, 0x4B, 0x11, 0x48, 0x03, 0xF5, 0x00, 0x64, 0xC0, 0x1A, 0x1A, 0x18, 0x53, 0xF8, 0x04, 0x1B, -0x11, 0x60, 0xA3, 0x42, 0xF9, 0xD1, 0x00, 0xBF, 0x09, 0x4B, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x00, 0xBF, -0x1A, 0x68, 0x22, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0x00, 0xBF, 0x07, 0x4A, 0x5D, 0xF8, 0x04, 0x4B, 0x13, 0x68, 0x23, 0xF0, -0x00, 0x53, 0x13, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x90, 0xB3, 0x33, 0x40, 0xB0, 0x05, 0x17, 0x00, 0x00, 0xA0, 0x33, 0x40, -0x10, 0x00, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0x07, 0x46, 0x15, 0x46, 0x1C, 0x46, 0x9D, 0xF8, 0x18, 0x80, 0x0E, 0x46, -0xFF, 0xF7, 0x94, 0xFF, 0x6C, 0x4A, 0x13, 0x68, 0x01, 0x2F, 0x23, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x00, 0xF0, 0x98, 0x80, -0x69, 0x4A, 0x6A, 0x49, 0x13, 0x68, 0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0x40, 0x43, 0x13, 0x60, 0x0B, 0x68, 0x02, 0xF5, -0xD9, 0x32, 0x02, 0xF5, 0xA2, 0x72, 0x43, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, -0x61, 0x4A, 0x10, 0x68, 0x20, 0xF4, 0xFF, 0x40, 0x20, 0xF0, 0x7F, 0x00, 0x4F, 0xF0, 0x80, 0x63, 0xB3, 0xFB, 0xF5, 0xF3, -0xC3, 0xF3, 0x0E, 0x03, 0x03, 0x43, 0x01, 0x2C, 0x13, 0x60, 0x60, 0xD0, 0x02, 0x2C, 0x48, 0xD0, 0x00, 0x25, 0x59, 0x4B, -0x1E, 0x68, 0x26, 0xF0, 0x03, 0x06, 0x35, 0x43, 0x1D, 0x60, 0x00, 0x23, 0x56, 0x4A, 0x57, 0x49, 0x13, 0x60, 0x0B, 0x68, -0x56, 0x4D, 0x57, 0x48, 0x57, 0x4E, 0x22, 0x06, 0x02, 0xF0, 0x40, 0x72, 0x23, 0xF0, 0x40, 0x73, 0x13, 0x43, 0x0B, 0x60, -0x29, 0x68, 0x23, 0x04, 0x21, 0xF4, 0x40, 0x31, 0x03, 0xF4, 0x40, 0x33, 0x0B, 0x43, 0x2B, 0x60, 0x03, 0x68, 0x23, 0xF0, -0x80, 0x43, 0x03, 0x60, 0x31, 0x68, 0x05, 0xF5, 0x82, 0x35, 0x04, 0xF0, 0x0F, 0x03, 0x21, 0xF0, 0x0F, 0x01, 0x05, 0xF5, -0x88, 0x75, 0x0B, 0x43, 0x33, 0x60, 0x2B, 0x68, 0x23, 0xF0, 0x40, 0x73, 0x1A, 0x43, 0x2A, 0x60, 0xEC, 0xB9, 0x50, 0xF8, -0x08, 0x3C, 0x45, 0x49, 0x45, 0x4A, 0x23, 0xF0, 0x7F, 0x43, 0x43, 0xF0, 0xC8, 0x53, 0x40, 0xF8, 0x08, 0x3C, 0x0B, 0x68, -0x23, 0xF0, 0x30, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xF4, 0x1C, 0x43, 0x13, 0x60, 0xBD, 0xE8, -0xF0, 0x81, 0xAD, 0x1B, 0x00, 0x2D, 0x42, 0xDD, 0x0A, 0x2D, 0xCC, 0xBF, 0x00, 0x25, 0x01, 0x25, 0xAF, 0xE7, 0x01, 0x2C, -0x41, 0xD0, 0x38, 0x4A, 0x38, 0x49, 0x13, 0x68, 0x38, 0x48, 0x23, 0xF0, 0x7F, 0x43, 0x43, 0xF0, 0x60, 0x63, 0x13, 0x60, -0x08, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x02, 0xF5, 0x28, 0x42, 0xB5, 0x42, 0x53, 0x6B, 0x88, 0xBF, 0x01, 0x21, 0x23, 0xF0, -0x03, 0x03, 0x98, 0xBF, 0x02, 0x21, 0x43, 0xEA, 0x01, 0x03, 0x02, 0xF1, 0x34, 0x02, 0x13, 0x60, 0x94, 0xBF, 0x01, 0x23, -0x00, 0x23, 0x95, 0xE7, 0x1D, 0x49, 0x1E, 0x48, 0x0B, 0x68, 0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0xC0, 0x33, 0x0B, 0x60, -0x03, 0x68, 0x01, 0xF5, 0xD9, 0x31, 0x01, 0xF5, 0xA2, 0x71, 0x23, 0xF0, 0x01, 0x03, 0x03, 0x60, 0x0B, 0x68, 0x18, 0xF0, -0x04, 0x0F, 0x43, 0xF4, 0x80, 0x73, 0x0B, 0x60, 0x3F, 0xF4, 0x64, 0xAF, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x13, 0x60, -0x5E, 0xE7, 0x15, 0xF1, 0x0A, 0x0F, 0xB4, 0xBF, 0x03, 0x25, 0x02, 0x25, 0x6B, 0xE7, 0x1A, 0x48, 0x14, 0x49, 0x03, 0x68, -0x14, 0x4A, 0x23, 0xF0, 0x7F, 0x43, 0x43, 0xF0, 0xC0, 0x53, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x30, 0x03, 0x43, 0xF0, -0x10, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xF4, 0xD8, 0x43, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, -0x24, 0x03, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, 0x20, 0x08, 0x33, 0x40, 0x4C, 0x08, 0x33, 0x40, 0x80, 0xB0, 0x33, 0x40, -0x50, 0x08, 0x33, 0x40, 0x24, 0x08, 0x33, 0x40, 0x10, 0x03, 0x32, 0x40, 0x0C, 0x08, 0x33, 0x40, 0x00, 0x08, 0x33, 0x40, -0x08, 0x00, 0x34, 0x40, 0x8C, 0x08, 0x33, 0x40, 0x34, 0x08, 0x33, 0x40, 0x18, 0x08, 0x33, 0x40, 0x06, 0x0C, 0x8E, 0x01, -0x04, 0x08, 0x33, 0x40, 0x44, 0x49, 0x45, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0xFC, 0x63, 0x70, 0xB4, 0x0B, 0x60, 0x13, 0x68, -0x42, 0x4C, 0x43, 0x4D, 0x43, 0x4E, 0x23, 0xF4, 0xE0, 0x23, 0x43, 0xF4, 0x80, 0x33, 0x13, 0x60, 0x13, 0x68, 0x23, 0xF4, -0xE0, 0x03, 0x43, 0xF4, 0x00, 0x13, 0x13, 0x60, 0x23, 0x68, 0xA1, 0xF5, 0x0F, 0x41, 0x23, 0xF4, 0x00, 0x03, 0x23, 0x60, -0x04, 0x39, 0x0C, 0x23, 0x2B, 0x60, 0x0B, 0x68, 0x32, 0x6A, 0x23, 0xF4, 0xFE, 0x43, 0x23, 0xF0, 0x7F, 0x03, 0x13, 0x43, -0x40, 0xF6, 0xB4, 0x12, 0x90, 0x42, 0x0B, 0x60, 0x34, 0x4B, 0x26, 0xD0, 0x72, 0x6A, 0x1A, 0x60, 0xA0, 0xF6, 0x6C, 0x13, -0x3C, 0x2B, 0x22, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, -0x21, 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, -0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, 0x21, -0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, 0x00, 0x21, 0x4A, 0x1A, 0x60, 0x21, 0x4A, 0x21, 0x49, 0x13, 0x68, -0x91, 0xF8, 0xB4, 0x10, 0x23, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x99, 0xB1, 0x1E, 0x49, 0x1F, 0x4B, 0x0A, 0x68, 0x22, 0xF4, -0xFE, 0x62, 0x0A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x9A, 0x68, 0x22, 0xF0, -0x0F, 0x02, 0x9A, 0x60, 0xDA, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0xDA, 0x60, 0x70, 0xBC, 0x70, 0x47, 0x15, 0x49, 0x16, 0x4B, -0xB0, 0x6A, 0x72, 0x6B, 0x08, 0x60, 0x1A, 0x60, 0xD9, 0xE7, 0x12, 0x4B, 0xF4, 0x6A, 0xB1, 0x6B, 0x11, 0x4A, 0x1C, 0x60, -0x40, 0xF6, 0xA8, 0x13, 0x98, 0x42, 0x11, 0x60, 0xCF, 0xD1, 0x0F, 0x4B, 0x11, 0x22, 0x1A, 0x60, 0xCB, 0xE7, 0x00, 0xBF, -0x04, 0x40, 0x34, 0x40, 0x34, 0x21, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, 0x00, 0xB3, 0x33, 0x40, 0xDC, 0x18, 0x17, 0x00, -0x20, 0x03, 0x33, 0x40, 0x1B, 0x88, 0xB3, 0x01, 0x30, 0x20, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x78, 0x40, 0x34, 0x40, -0x00, 0x30, 0x50, 0x40, 0x30, 0x40, 0x34, 0x40, 0x2C, 0x40, 0x34, 0x40, 0x24, 0x01, 0x58, 0x40, 0x70, 0x47, 0x00, 0xBF, -0x3A, 0x49, 0x3B, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0xFC, 0x63, 0x43, 0xF4, 0xA8, 0x63, 0x30, 0xB4, 0x0B, 0x60, 0x13, 0x68, -0x37, 0x4C, 0x38, 0x4D, 0x23, 0xF4, 0xE0, 0x23, 0x43, 0xF4, 0x00, 0x33, 0x13, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xE0, 0x03, -0x13, 0x60, 0x23, 0x68, 0x33, 0x4A, 0xA1, 0xF5, 0x0F, 0x41, 0x43, 0xF4, 0x00, 0x03, 0x23, 0x60, 0x04, 0x39, 0x0C, 0x23, -0x2B, 0x60, 0x0B, 0x68, 0xD4, 0x6C, 0x23, 0xF4, 0xFE, 0x43, 0x23, 0xF0, 0x7F, 0x03, 0x23, 0x43, 0x41, 0xF2, 0xC8, 0x44, -0xA0, 0x42, 0x0B, 0x60, 0x40, 0xD8, 0x2A, 0x4B, 0x12, 0x6C, 0x1A, 0x60, 0x29, 0x4A, 0x2A, 0x4C, 0x13, 0x68, 0x2A, 0x4D, -0x2A, 0x48, 0x2B, 0x49, 0x23, 0xF0, 0x80, 0x63, 0x13, 0x60, 0x13, 0x68, 0x94, 0xF8, 0xB4, 0x40, 0x23, 0xF0, 0x0F, 0x03, -0x43, 0xF0, 0x08, 0x03, 0x13, 0x60, 0x2B, 0x68, 0x23, 0xF0, 0xC0, 0x63, 0x43, 0xF0, 0x80, 0x63, 0x2B, 0x60, 0x03, 0x68, -0x43, 0xF4, 0x70, 0x63, 0x03, 0x60, 0x0B, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x0B, 0x60, 0xDC, 0xB1, 0x01, 0xF5, 0x01, 0x51, -0x1D, 0x4B, 0x8A, 0x68, 0x22, 0xF4, 0xFE, 0x62, 0x42, 0xF4, 0x88, 0x62, 0x8A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x0F, 0x02, -0x42, 0xF0, 0x03, 0x02, 0x1A, 0x60, 0x9A, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, 0x03, 0x02, 0x9A, 0x60, 0xDA, 0x68, -0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, 0x03, 0x02, 0x08, 0x31, 0xDA, 0x60, 0x30, 0xBC, 0x70, 0x47, 0x41, 0xF2, 0x44, 0x63, -0x98, 0x42, 0x08, 0x4B, 0x94, 0xBF, 0x52, 0x6C, 0x92, 0x6C, 0x1A, 0x60, 0xB8, 0xE7, 0x00, 0xBF, 0x04, 0x40, 0x34, 0x40, -0x34, 0x21, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, 0x00, 0xB3, 0x33, 0x40, 0xDC, 0x18, 0x17, 0x00, 0x30, 0x40, 0x34, 0x40, -0x38, 0x40, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x3C, 0x40, 0x34, 0x40, 0x08, 0x01, 0x58, 0x40, 0x30, 0x20, 0x34, 0x40, -0x00, 0x30, 0x50, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x85, 0xB0, 0x0F, 0x46, 0x9D, 0xF8, 0x3C, 0x10, -0x02, 0x91, 0xCD, 0xE9, 0x00, 0x23, 0x05, 0x46, 0x14, 0x46, 0x1E, 0x46, 0x02, 0x46, 0x3B, 0x46, 0xAE, 0x49, 0xAF, 0x48, -0x9D, 0xF8, 0x38, 0xA0, 0xDF, 0xF8, 0x08, 0x83, 0xDF, 0xF8, 0x08, 0x93, 0x23, 0xF0, 0x4C, 0xFD, 0xAB, 0x49, 0x22, 0x46, -0x04, 0x20, 0x23, 0xF0, 0x97, 0xFD, 0x30, 0x46, 0xFF, 0xF7, 0x06, 0xFD, 0x39, 0x46, 0x33, 0x46, 0xD8, 0xF8, 0x40, 0x71, -0xCD, 0xF8, 0x00, 0xA0, 0x22, 0x46, 0x28, 0x46, 0xB8, 0x47, 0x99, 0xF8, 0x2A, 0x30, 0xAB, 0x42, 0x0A, 0xD0, 0xD8, 0xF8, -0x80, 0x34, 0x28, 0x46, 0x98, 0x47, 0x99, 0xF8, 0x2A, 0x20, 0x9F, 0x49, 0x2B, 0x46, 0x04, 0x20, 0x23, 0xF0, 0x7C, 0xFD, -0x9D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xA8, 0x80, 0x00, 0x2D, 0x00, 0xF0, 0xB7, 0x80, -0x41, 0xF2, 0x43, 0x63, 0x9C, 0x42, 0x00, 0xF2, 0xAE, 0x80, 0x41, 0xF2, 0x7B, 0x53, 0x9C, 0x42, 0x8B, 0xBF, 0x4F, 0xF0, -0xEC, 0x09, 0x4F, 0xF0, 0xFC, 0x09, 0x3B, 0x27, 0x3F, 0x27, 0x20, 0x46, 0x35, 0xF0, 0x0E, 0xFD, 0x02, 0x46, 0x0B, 0x46, -0x82, 0x46, 0x8B, 0x46, 0x35, 0xF0, 0xBC, 0xFB, 0x8D, 0x4B, 0x00, 0x22, 0x35, 0xF0, 0x98, 0xFE, 0x8C, 0x4B, 0x00, 0x22, -0x35, 0xF0, 0x6A, 0xFD, 0x35, 0xF0, 0x62, 0xFB, 0x36, 0xF0, 0x00, 0xF8, 0x52, 0x46, 0x5B, 0x46, 0x88, 0x49, 0x05, 0x46, -0x00, 0x20, 0x35, 0xF0, 0x89, 0xFE, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, 0x35, 0xF0, 0x5A, 0xFD, 0x35, 0xF0, 0x52, 0xFB, -0x35, 0xF0, 0xF0, 0xFF, 0x03, 0x46, 0x38, 0x46, 0x1F, 0x46, 0x35, 0xF0, 0xE7, 0xFC, 0x80, 0x4B, 0x00, 0x22, 0x35, 0xF0, -0x4D, 0xFD, 0x02, 0x46, 0x0B, 0x46, 0x50, 0x46, 0x59, 0x46, 0x35, 0xF0, 0x71, 0xFE, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, -0x35, 0xF0, 0x42, 0xFD, 0x35, 0xF0, 0x3A, 0xFB, 0x35, 0xF0, 0xD8, 0xFF, 0x77, 0x4B, 0x78, 0x4A, 0xD3, 0xF8, 0x00, 0xE0, -0x2E, 0xF4, 0x00, 0x0E, 0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, 0x4E, 0xF4, 0x80, 0x0E, 0xC3, 0xF8, 0x00, 0xE0, -0xD3, 0xF8, 0x00, 0xE0, 0x2E, 0xF4, 0x00, 0x1E, 0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, 0x4E, 0xF0, 0x08, 0x0E, -0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, 0x01, 0x46, 0x2E, 0xF0, 0x04, 0x0E, 0x6A, 0x48, 0xC3, 0xF8, 0x00, 0xE0, -0x03, 0x68, 0x43, 0xF0, 0x80, 0x43, 0x03, 0x60, 0x03, 0x68, 0x43, 0xF0, 0x00, 0x53, 0x03, 0x60, 0x13, 0x68, 0x23, 0xF4, -0xFF, 0x63, 0x23, 0xF0, 0x04, 0x03, 0x43, 0xEA, 0x09, 0x03, 0x13, 0x60, 0x20, 0x46, 0xD8, 0xF8, 0xA8, 0x34, 0x89, 0x46, -0x98, 0x47, 0x20, 0x46, 0xD8, 0xF8, 0xAC, 0x34, 0x64, 0x08, 0x98, 0x47, 0x5C, 0x4B, 0x5D, 0x4A, 0x1D, 0x60, 0x17, 0x60, -0xC3, 0xF8, 0x48, 0x90, 0x00, 0x2E, 0x00, 0xF0, 0x8D, 0x80, 0x01, 0x2E, 0x04, 0xD1, 0x59, 0x4A, 0x13, 0x68, 0x23, 0xF4, -0x00, 0x63, 0x13, 0x60, 0x57, 0x49, 0x58, 0x4B, 0x08, 0x68, 0x58, 0x4A, 0x03, 0x40, 0x43, 0xEA, 0x04, 0x33, 0x01, 0x20, -0x0B, 0x60, 0x10, 0x60, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x2D, 0x7F, 0xF6, 0x55, 0xAF, 0x52, 0x49, 0x53, 0x48, -0x40, 0xF6, 0x4A, 0x22, 0x23, 0xF0, 0xEE, 0xFE, 0x41, 0xF2, 0x43, 0x63, 0x9C, 0x42, 0x7F, 0xF6, 0x52, 0xAF, 0x4F, 0xF0, -0xF0, 0x09, 0x3C, 0x27, 0x57, 0xE7, 0x20, 0x46, 0x35, 0xF0, 0x66, 0xFC, 0x4B, 0x4B, 0x00, 0x22, 0x82, 0x46, 0x8B, 0x46, -0x35, 0xF0, 0xCA, 0xFC, 0x39, 0x4B, 0x00, 0x22, 0x35, 0xF0, 0xF0, 0xFD, 0x38, 0x4B, 0x00, 0x22, 0x35, 0xF0, 0xC2, 0xFC, -0x35, 0xF0, 0xBA, 0xFA, 0x35, 0xF0, 0x58, 0xFF, 0x52, 0x46, 0x5B, 0x46, 0x05, 0x46, 0x42, 0x49, 0x00, 0x20, 0x35, 0xF0, -0xE1, 0xFD, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, 0x35, 0xF0, 0xB2, 0xFC, 0x35, 0xF0, 0xAA, 0xFA, 0x35, 0xF0, 0x48, 0xFF, -0x24, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x07, 0x46, 0x59, 0x46, 0x50, 0x46, 0x35, 0xF0, 0xD0, 0xFD, 0x00, 0x22, 0x4F, 0xF0, -0x83, 0x43, 0x35, 0xF0, 0xA1, 0xFC, 0x35, 0xF0, 0x99, 0xFA, 0x35, 0xF0, 0x37, 0xFF, 0x27, 0x4B, 0x28, 0x4A, 0x19, 0x68, -0x21, 0xF4, 0x00, 0x01, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF4, 0x80, 0x01, 0x19, 0x60, 0x19, 0x68, 0x41, 0xF4, 0x00, 0x11, -0x19, 0x60, 0x19, 0x68, 0x21, 0xF0, 0x08, 0x01, 0x19, 0x60, 0x19, 0x68, 0x41, 0xF0, 0x04, 0x01, 0x19, 0x60, 0x13, 0x68, -0x23, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x81, 0x46, 0x23, 0xF0, 0x00, 0x53, 0x19, 0x48, 0x13, 0x60, 0x03, 0x68, -0x23, 0xF4, 0xFF, 0x63, 0x23, 0xF0, 0x04, 0x03, 0x43, 0xF0, 0xEC, 0x03, 0x03, 0x60, 0xD8, 0xF8, 0xA0, 0x34, 0x20, 0x46, -0x98, 0x47, 0xD8, 0xF8, 0xA4, 0x34, 0x20, 0x46, 0x98, 0x47, 0x69, 0xE7, 0x13, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x63, -0x13, 0x60, 0x73, 0xE7, 0xAF, 0xF3, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xA2, 0x40, 0x78, 0x78, 0x15, 0x00, -0x58, 0x77, 0x15, 0x00, 0x8C, 0x77, 0x15, 0x00, 0x9C, 0x77, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x00, 0x6A, 0x40, -0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xB9, 0x40, 0x00, 0x00, 0x54, 0x40, 0x14, 0x40, 0x34, 0x40, 0x3C, 0x40, 0x34, 0x40, -0x30, 0x40, 0x34, 0x40, 0x10, 0x20, 0x34, 0x40, 0x54, 0x20, 0x34, 0x40, 0x20, 0x40, 0x34, 0x40, 0x1C, 0x20, 0x34, 0x40, -0xFF, 0x0F, 0x00, 0xE0, 0x84, 0x21, 0x34, 0x40, 0x70, 0x79, 0x15, 0x00, 0xB4, 0x77, 0x15, 0x00, 0x00, 0x00, 0x10, 0x40, -0x00, 0x00, 0xA4, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0xF8, 0xB5, 0x43, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x6B, 0xDB, 0xFF, 0xF7, 0xBD, 0xFB, 0x40, 0x49, 0x40, 0x4A, 0x0B, 0x68, 0x40, 0x48, 0x43, 0xF0, -0x00, 0x63, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x08, 0x03, 0x13, 0x60, 0x03, 0x68, 0xC3, 0xF3, 0x03, 0x23, 0x02, 0x2B, -0x06, 0xD1, 0xA2, 0xF5, 0x99, 0x42, 0x04, 0x3A, 0x13, 0x68, 0x43, 0xF0, 0x03, 0x03, 0x13, 0x60, 0x36, 0x4B, 0x1B, 0x68, -0xC3, 0xF3, 0x03, 0x13, 0x02, 0x2B, 0x02, 0xD1, 0x34, 0x4B, 0x35, 0x4A, 0x1A, 0x60, 0x35, 0x4A, 0x35, 0x49, 0x13, 0x68, -0xDF, 0xF8, 0x04, 0xC1, 0x34, 0x4D, 0x35, 0x4F, 0x35, 0x4C, 0x36, 0x48, 0x36, 0x4E, 0x23, 0xF4, 0xFF, 0x63, 0x23, 0xF0, -0x07, 0x03, 0x43, 0xF4, 0xE0, 0x63, 0x13, 0x60, 0x4F, 0xF4, 0x80, 0x73, 0x0B, 0x60, 0x04, 0x23, 0xCC, 0xF8, 0x00, 0x30, -0x01, 0x22, 0xC4, 0x23, 0x3A, 0x60, 0x2B, 0x60, 0x00, 0x23, 0x23, 0x60, 0x6F, 0x24, 0x04, 0x60, 0x2C, 0x4C, 0xB0, 0x27, -0x37, 0x60, 0x23, 0x60, 0xC3, 0x60, 0xAB, 0x61, 0x6B, 0x25, 0xE5, 0x60, 0x29, 0x4D, 0x83, 0x61, 0x2A, 0x60, 0xA3, 0x61, -0x07, 0x24, 0x44, 0x62, 0xEC, 0x26, 0x27, 0x4C, 0xEE, 0x60, 0x03, 0x25, 0xC5, 0x62, 0x23, 0x60, 0xD0, 0xF8, 0xEC, 0x31, -0x93, 0x42, 0x00, 0xF5, 0xF6, 0x70, 0x0F, 0xD9, 0x22, 0x4B, 0xA0, 0xF5, 0x56, 0x70, 0x1A, 0x60, 0x03, 0x68, 0x23, 0xF0, -0x7F, 0x43, 0x43, 0xF0, 0x20, 0x43, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF4, 0x40, 0x73, 0x43, 0xF4, 0x80, 0x73, 0x0B, 0x60, -0xF8, 0xBD, 0x1B, 0x4A, 0x13, 0x68, 0x12, 0x68, 0x1B, 0x0E, 0x02, 0x33, 0x03, 0xEB, 0x83, 0x03, 0xC2, 0xF3, 0x07, 0x42, -0x02, 0xEB, 0x43, 0x03, 0x1E, 0x2B, 0x86, 0xD0, 0x15, 0x49, 0x16, 0x48, 0x40, 0xF6, 0x2C, 0x32, 0x23, 0xF0, 0xBC, 0xFD, -0x7F, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x10, 0x00, 0x34, 0x40, 0x14, 0x00, 0x34, 0x40, 0x00, 0x00, 0x33, 0x40, -0x04, 0xB1, 0x33, 0x40, 0x34, 0x34, 0x34, 0x00, 0xB4, 0xB3, 0x33, 0x40, 0x00, 0x10, 0x34, 0x40, 0x08, 0x12, 0x34, 0x40, -0x04, 0x12, 0x34, 0x40, 0x0C, 0x12, 0x34, 0x40, 0x10, 0x12, 0x34, 0x40, 0x14, 0x12, 0x34, 0x40, 0x18, 0x12, 0x34, 0x40, -0x2C, 0x12, 0x34, 0x40, 0x40, 0x12, 0x34, 0x40, 0x0C, 0x10, 0x34, 0x40, 0x3C, 0x00, 0x33, 0x40, 0x70, 0x79, 0x15, 0x00, -0xC8, 0x77, 0x15, 0x00, 0x00, 0x12, 0x34, 0x40, 0x10, 0xB5, 0x1A, 0x4C, 0x82, 0xB0, 0xD4, 0xF8, 0x3C, 0x31, 0x98, 0x47, -0x18, 0x4B, 0x19, 0x4A, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x00, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x00, 0x2A, 0xFC, 0xDB, -0x15, 0x4A, 0x1A, 0x60, 0x19, 0x68, 0x12, 0x4A, 0x41, 0xF0, 0x00, 0x41, 0x19, 0x60, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xDB, -0x11, 0x4B, 0x13, 0x60, 0x13, 0x68, 0x0D, 0x49, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x0B, 0x68, 0xDB, 0x0F, 0xFC, 0xD1, -0xCD, 0xE9, 0x00, 0x33, 0x40, 0xF6, 0x85, 0x12, 0x11, 0x46, 0x18, 0x46, 0xD4, 0xF8, 0x28, 0x42, 0xA0, 0x47, 0x09, 0x49, -0x09, 0x4B, 0x0A, 0x4A, 0x0C, 0x20, 0x08, 0x60, 0x1A, 0x60, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, -0x20, 0x00, 0x58, 0x40, 0xBF, 0x3F, 0x42, 0x01, 0xA2, 0x30, 0x43, 0x01, 0xDD, 0x1D, 0x44, 0x01, 0x00, 0xB3, 0x33, 0x40, -0xC0, 0xB3, 0x33, 0x40, 0xA0, 0xA0, 0x28, 0x28, 0x70, 0xB5, 0x13, 0x4B, 0x13, 0x4D, 0x04, 0x46, 0xED, 0x1A, 0x03, 0xF2, -0x3C, 0x50, 0x5A, 0x19, 0x53, 0xF8, 0x04, 0x1B, 0x11, 0x60, 0x83, 0x42, 0xF9, 0xD1, 0xFF, 0xF7, 0xEB, 0xFA, 0x0E, 0x4B, -0x0E, 0x4E, 0xD3, 0xF8, 0x24, 0x32, 0x20, 0x46, 0x98, 0x47, 0x00, 0x23, 0x86, 0xF8, 0x2A, 0x30, 0x0F, 0xCC, 0x35, 0x46, -0x0F, 0xC5, 0x0F, 0xCC, 0x0F, 0xC5, 0x23, 0x68, 0x2B, 0x60, 0x05, 0x21, 0x4F, 0xF0, 0xFF, 0x12, 0xFF, 0x23, 0x86, 0xF8, -0x2B, 0x10, 0x72, 0x62, 0x33, 0x85, 0x70, 0xBD, 0xB0, 0x0D, 0x17, 0x00, 0x00, 0x90, 0x33, 0x40, 0x88, 0x1A, 0x17, 0x00, -0xBC, 0x34, 0x17, 0x00, 0x08, 0xB5, 0x05, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x00, 0xD4, 0x08, 0xBD, 0x14, 0xF0, 0xF4, 0xFD, -0x02, 0x4B, 0x08, 0x22, 0x1A, 0x60, 0x08, 0xBD, 0xA8, 0x10, 0x34, 0x40, 0xAC, 0x10, 0x34, 0x40, 0x03, 0x4A, 0x04, 0x4B, -0x12, 0x68, 0x02, 0x60, 0x1B, 0x68, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0x3C, 0x00, 0x33, 0x40, -0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0xB0, 0x9D, 0xF8, 0x38, 0x40, 0xBD, 0xF8, 0x30, 0xA0, 0x9D, 0xF8, 0x34, 0x90, 0x00, 0x2C, -0x43, 0xD1, 0x98, 0x46, 0x25, 0x4B, 0x1B, 0x78, 0x05, 0x46, 0x0E, 0x46, 0x17, 0x46, 0xD3, 0xB1, 0x23, 0x4C, 0x24, 0x4A, -0xCD, 0xF8, 0x00, 0x90, 0x00, 0x23, 0xD2, 0xF8, 0x28, 0xB2, 0x01, 0x93, 0x42, 0x46, 0x33, 0x46, 0x39, 0x46, 0x28, 0x46, -0xD8, 0x47, 0x84, 0xF8, 0x2A, 0x50, 0x84, 0xF8, 0x2B, 0x60, 0x84, 0xF8, 0x2C, 0x90, 0xA7, 0x84, 0xA4, 0xF8, 0x26, 0x80, -0xA4, 0xF8, 0x28, 0xA0, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x18, 0x4A, 0x15, 0x4C, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x73, -0x13, 0x60, 0x94, 0xF8, 0x2A, 0x30, 0x83, 0x42, 0xDB, 0xD1, 0x94, 0xF8, 0x2B, 0x30, 0x8B, 0x42, 0xD7, 0xD1, 0x94, 0xF8, -0x2C, 0x30, 0x4B, 0x45, 0xD3, 0xD1, 0xA3, 0x8C, 0xBB, 0x42, 0xD0, 0xD1, 0xE3, 0x8C, 0x43, 0x45, 0xCD, 0xD1, 0x23, 0x8D, -0x53, 0x45, 0xCA, 0xD1, 0x0B, 0x49, 0x0C, 0x48, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x23, 0xF0, 0x35, 0xBA, 0x08, 0x49, -0x09, 0x48, 0x22, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x23, 0xF0, 0x2D, 0xBA, 0x00, 0xBF, 0x3C, 0x36, 0x17, 0x00, -0xBC, 0x34, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, 0x8C, 0x78, 0x15, 0x00, 0x38, 0x78, 0x15, 0x00, -0x18, 0x78, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x71, 0xB9, 0x0A, 0x4A, 0x93, 0x8C, 0x92, 0xF8, 0x2B, 0x00, 0x92, 0xF8, -0x2A, 0x10, 0xD2, 0xF8, 0x26, 0x20, 0x62, 0x60, 0x1B, 0x04, 0x43, 0xEA, 0x00, 0x23, 0x0B, 0x43, 0x23, 0x60, 0x10, 0xBD, -0x0A, 0x46, 0x03, 0x48, 0x03, 0x49, 0x23, 0xF0, 0x07, 0xFA, 0xEA, 0xE7, 0xBC, 0x34, 0x17, 0x00, 0x18, 0x78, 0x15, 0x00, -0x9C, 0x78, 0x15, 0x00, 0x04, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x00, 0xD1, 0x70, 0x47, 0x03, 0x49, 0x03, 0x48, 0x23, 0xF0, -0xF7, 0xB9, 0x00, 0xBF, 0x38, 0x00, 0x32, 0x40, 0xAC, 0x78, 0x15, 0x00, 0x60, 0x78, 0x15, 0x00, 0x4F, 0xF4, 0x7A, 0x70, -0x70, 0x47, 0x00, 0xBF, 0x01, 0x20, 0x70, 0x47, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x40, 0x50, 0x70, 0x47, 0x00, 0xBF, -0x00, 0x00, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, 0x01, 0x28, 0x94, 0xBF, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x00, 0xBF, -0xFC, 0x13, 0x34, 0x40, 0x04, 0x4A, 0x13, 0x68, 0xC0, 0x00, 0x00, 0xF0, 0x08, 0x00, 0x23, 0xF0, 0x08, 0x03, 0x18, 0x43, -0x10, 0x60, 0x70, 0x47, 0xA0, 0x10, 0x34, 0x40, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x80, 0x60, 0x70, 0x47, 0x00, 0xBF, -0x00, 0x00, 0x33, 0x40, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x00, 0x70, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, -0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x80, 0x70, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0x06, 0x4B, 0x02, 0x68, -0x1A, 0x60, 0x42, 0x68, 0x5A, 0x60, 0x0A, 0x68, 0x9A, 0x60, 0x4A, 0x68, 0xDA, 0x60, 0x8A, 0x68, 0x1A, 0x61, 0xCA, 0x68, -0x5A, 0x61, 0x70, 0x47, 0xA8, 0x08, 0x33, 0x40, 0x30, 0xB4, 0x06, 0x49, 0x06, 0x4D, 0x07, 0x4B, 0x00, 0x24, 0xC0, 0xF3, -0x0A, 0x00, 0x40, 0xF2, 0xFF, 0x72, 0x28, 0x60, 0x0C, 0x60, 0x30, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0xC4, 0x08, 0x33, 0x40, -0xC0, 0x08, 0x33, 0x40, 0xC8, 0x08, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x03, 0x20, 0x01, 0x38, 0xC0, 0xB2, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x03, 0x10, 0x01, 0x38, 0xC0, 0xB2, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0x38, 0xC0, 0xB2, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0xF0, 0xB5, 0xBE, 0x4C, 0x94, 0xF8, 0x2A, 0x30, 0x00, 0x2B, 0x76, 0xD1, -0xBC, 0x4B, 0x93, 0xF8, 0xBD, 0x50, 0x00, 0x2D, 0x66, 0xD0, 0xE0, 0x8C, 0x40, 0xF6, 0x7B, 0x14, 0xA0, 0x42, 0x40, 0xF2, -0xCA, 0x80, 0x40, 0xF6, 0x94, 0x14, 0xA0, 0x42, 0xB6, 0x48, 0x94, 0xBF, 0x90, 0xF9, 0x01, 0x60, 0x90, 0xF9, 0x02, 0x60, -0x93, 0xF8, 0xBE, 0x40, 0xB3, 0x48, 0x06, 0xF1, 0x0F, 0x05, 0x1E, 0x2D, 0x00, 0x5D, 0xA8, 0xBF, 0x1E, 0x25, 0x0A, 0x2C, -0x4F, 0xEA, 0x20, 0x17, 0x00, 0xF0, 0x0F, 0x0C, 0x25, 0xEA, 0xE5, 0x75, 0x00, 0xF3, 0xCF, 0x80, 0x00, 0xF0, 0xE4, 0x80, -0xAB, 0x48, 0x04, 0xEB, 0x44, 0x04, 0x10, 0xF9, 0x14, 0xE0, 0x75, 0x45, 0x00, 0xEB, 0x44, 0x04, 0x00, 0xF3, 0x06, 0x81, -0x64, 0x78, 0xA4, 0xEB, 0x0E, 0x04, 0x2C, 0x44, 0x60, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0xA0, 0x42, 0x07, 0xF1, 0xFF, 0x37, -0xB8, 0xBF, 0x20, 0x46, 0x60, 0x44, 0x80, 0xF3, 0x04, 0x00, 0x40, 0xEA, 0x07, 0x10, 0x08, 0x70, 0x93, 0xF8, 0xBF, 0x10, -0x9D, 0x4B, 0x5B, 0x5C, 0x0A, 0x29, 0x4F, 0xEA, 0x23, 0x10, 0x03, 0xF0, 0x0F, 0x03, 0x17, 0xDC, 0x00, 0xF0, 0xD1, 0x80, -0x01, 0x31, 0x97, 0x4C, 0x01, 0xEB, 0x41, 0x01, 0x14, 0xF9, 0x11, 0x60, 0xAE, 0x42, 0x04, 0xEB, 0x41, 0x01, 0xC0, 0xF2, -0xD2, 0x80, 0x49, 0x78, 0x89, 0x1B, 0x0D, 0x44, 0x6D, 0xB2, 0x6F, 0xF0, 0x04, 0x01, 0x01, 0x38, 0x8D, 0x42, 0xAC, 0xBF, -0x5B, 0x19, 0x5B, 0x18, 0x83, 0xF3, 0x04, 0x03, 0x43, 0xEA, 0x00, 0x13, 0x13, 0x70, 0xF0, 0xBD, 0x93, 0xF8, 0xAC, 0x40, -0xE5, 0x07, 0x68, 0xD5, 0x93, 0xF8, 0xB7, 0x00, 0x08, 0x70, 0x93, 0xF8, 0xAD, 0x30, 0x13, 0x70, 0xF0, 0xBD, 0x81, 0x4B, -0x93, 0xF8, 0xBD, 0x50, 0x00, 0x2D, 0x3A, 0xD0, 0xE0, 0x8C, 0x41, 0xF2, 0xC8, 0x44, 0xA0, 0x42, 0x4F, 0xD9, 0xB0, 0xF5, -0xAF, 0x5F, 0x7D, 0xD8, 0x7F, 0x48, 0x90, 0xF9, 0x01, 0x60, 0x93, 0xF8, 0xC3, 0x00, 0x7E, 0x4B, 0x1B, 0x5C, 0x0A, 0x28, -0x4F, 0xEA, 0x23, 0x15, 0x03, 0xF0, 0x0F, 0x03, 0x1D, 0xDC, 0x06, 0xF1, 0x0F, 0x04, 0x1E, 0x2C, 0xA8, 0xBF, 0x1E, 0x24, -0x0A, 0x28, 0x24, 0xEA, 0xE4, 0x74, 0x7A, 0xD0, 0x76, 0x4E, 0x00, 0xEB, 0x40, 0x00, 0x16, 0xF9, 0x10, 0x70, 0xBC, 0x42, -0x06, 0xEB, 0x40, 0x00, 0x00, 0xF3, 0x9E, 0x80, 0x40, 0x78, 0xC0, 0x1B, 0x04, 0x44, 0x64, 0xB2, 0x6F, 0xF0, 0x04, 0x00, -0x01, 0x3D, 0x84, 0x42, 0xAC, 0xBF, 0x1B, 0x19, 0x1B, 0x18, 0x83, 0xF3, 0x04, 0x03, 0x43, 0xEA, 0x05, 0x13, 0xDB, 0xB2, -0x13, 0x70, 0x0B, 0x70, 0xF0, 0xBD, 0x93, 0xF8, 0xAC, 0x40, 0xA4, 0x07, 0x04, 0xD5, 0x93, 0xF8, 0xAE, 0x30, 0x0B, 0x70, -0x13, 0x70, 0xF0, 0xBD, 0x90, 0xF9, 0x00, 0x30, 0x61, 0x48, 0x6F, 0xF0, 0x04, 0x04, 0xA3, 0x42, 0xB8, 0xBF, 0x23, 0x46, -0x12, 0x2B, 0xA8, 0xBF, 0x12, 0x23, 0x05, 0x33, 0x5B, 0x10, 0xC3, 0x5C, 0x0B, 0x70, 0x13, 0x70, 0xF0, 0xBD, 0x59, 0x48, -0x90, 0xF9, 0x00, 0x60, 0xB1, 0xE7, 0x53, 0x48, 0x90, 0xF9, 0x00, 0x60, 0x3A, 0xE7, 0x90, 0xF9, 0x00, 0x30, 0x51, 0x4D, -0x52, 0x4C, 0x01, 0x2B, 0x6F, 0xF0, 0x01, 0x06, 0x18, 0x46, 0xB8, 0xBF, 0x01, 0x20, 0xB3, 0x42, 0xB8, 0xBF, 0x33, 0x46, -0x17, 0x28, 0xA8, 0xBF, 0x17, 0x20, 0x14, 0x2B, 0xA8, 0xBF, 0x14, 0x23, 0x01, 0x38, 0x02, 0x33, 0x40, 0x10, 0x5B, 0x10, -0x28, 0x5C, 0xE3, 0x5C, 0x08, 0x70, 0x13, 0x70, 0xF0, 0xBD, 0x74, 0x1C, 0x55, 0xDA, 0xA5, 0xF1, 0x0D, 0x00, 0x40, 0xB2, -0x6F, 0xF0, 0x04, 0x04, 0xA0, 0x42, 0xA7, 0xF1, 0x02, 0x07, 0xB8, 0xBF, 0x20, 0x46, 0x3B, 0xE7, 0x41, 0xF2, 0x44, 0x64, -0xA0, 0x42, 0x3F, 0x48, 0x94, 0xBF, 0x90, 0xF9, 0x02, 0x60, 0x90, 0xF9, 0x03, 0x60, 0x7A, 0xE7, 0xB0, 0x1C, 0x53, 0xDB, -0x01, 0x2E, 0x00, 0xF3, 0x8D, 0x80, 0xA5, 0xF1, 0x0F, 0x00, 0x40, 0xB2, 0x28, 0xE7, 0x03, 0x36, 0x43, 0xDA, 0x09, 0x3C, -0x64, 0xB2, 0x6F, 0xF0, 0x04, 0x00, 0x01, 0x3D, 0x84, 0x42, 0xAC, 0xBF, 0x1B, 0x19, 0x1B, 0x18, 0x8D, 0xE7, 0x03, 0x36, -0x30, 0xDA, 0x09, 0x3D, 0x6D, 0xB2, 0x6F, 0xF0, 0x04, 0x01, 0x01, 0x38, 0x8D, 0x42, 0xAC, 0xBF, 0x5B, 0x19, 0x5B, 0x18, -0x38, 0xE7, 0x91, 0xF9, 0x04, 0x40, 0xAC, 0x42, 0x3B, 0xDD, 0xCC, 0x78, 0x89, 0x78, 0x61, 0x1A, 0x0D, 0x44, 0x43, 0xFA, -0x85, 0xF3, 0x2D, 0xE7, 0x94, 0xF9, 0x04, 0xE0, 0x75, 0x45, 0x57, 0xDA, 0xE0, 0x78, 0xA4, 0x78, 0x00, 0x1B, 0x28, 0x44, -0x40, 0xB2, 0xFB, 0xE6, 0x90, 0xF9, 0x04, 0x60, 0xB4, 0x42, 0x43, 0xDA, 0xC6, 0x78, 0x80, 0x78, 0x30, 0x1A, 0x04, 0x44, -0x43, 0xFA, 0x84, 0xF3, 0x61, 0xE7, 0xA5, 0xF1, 0x0F, 0x04, 0x60, 0xB2, 0x03, 0x28, 0xA8, 0xBF, 0x03, 0x20, 0xE9, 0xE6, -0x0F, 0x3D, 0x6D, 0xB2, 0x05, 0x2D, 0xD4, 0xBF, 0x5B, 0x19, 0x05, 0x33, 0x0A, 0xE7, 0x0F, 0x3C, 0x64, 0xB2, 0x05, 0x2C, -0xD4, 0xBF, 0x1B, 0x19, 0x05, 0x33, 0x4C, 0xE7, 0xA5, 0xF1, 0x0A, 0x00, 0x40, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0xA0, 0x42, -0x07, 0xF1, 0xFF, 0x37, 0xB8, 0xBF, 0x20, 0x46, 0xD0, 0xE6, 0x49, 0x79, 0x09, 0x1B, 0x0D, 0x44, 0x6D, 0xB2, 0x05, 0x2D, -0xD4, 0xBF, 0x5B, 0x19, 0x05, 0x33, 0x01, 0x30, 0xEE, 0xE6, 0x00, 0xBF, 0xBC, 0x34, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, -0x68, 0x25, 0x17, 0x00, 0xEC, 0x12, 0x17, 0x00, 0xB8, 0x78, 0x15, 0x00, 0xF8, 0x12, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, -0x04, 0x13, 0x17, 0x00, 0x0C, 0x79, 0x15, 0x00, 0x40, 0x79, 0x80, 0x1B, 0x04, 0x44, 0x64, 0xB2, 0x05, 0x2C, 0xD4, 0xBF, -0x1B, 0x19, 0x05, 0x33, 0x01, 0x35, 0x1A, 0xE7, 0x60, 0x79, 0xA0, 0xEB, 0x0E, 0x00, 0x28, 0x44, 0x40, 0xB2, 0x05, 0x28, -0xA8, 0xBF, 0x05, 0x20, 0x01, 0x37, 0x9F, 0xE6, 0xA5, 0xF1, 0x11, 0x00, 0x40, 0xB2, 0x03, 0x28, 0x07, 0xF1, 0x02, 0x07, -0xA8, 0xBF, 0x03, 0x20, 0x96, 0xE6, 0x00, 0xBF, 0xF0, 0xB4, 0xB9, 0x4B, 0x93, 0xF8, 0x2A, 0x20, 0xDC, 0x8C, 0x52, 0xBB, -0xC0, 0xB9, 0x03, 0x29, 0x00, 0xF2, 0x91, 0x80, 0xB5, 0x4A, 0xB6, 0x4B, 0x92, 0xF8, 0xBE, 0x50, 0x5B, 0x5D, 0x02, 0x46, -0x01, 0x46, 0x07, 0x46, 0x40, 0xF6, 0x7B, 0x10, 0x84, 0x42, 0x00, 0xF2, 0xBA, 0x80, 0xB1, 0x48, 0x90, 0xF9, 0x00, 0x60, -0x00, 0x29, 0x00, 0xF0, 0xC0, 0x80, 0xD8, 0xB2, 0xF0, 0xBC, 0x70, 0x47, 0x04, 0x28, 0x40, 0xF2, 0x8F, 0x80, 0x09, 0x29, -0x40, 0xF2, 0x8E, 0x80, 0xA7, 0x4B, 0x93, 0xF8, 0xC2, 0x50, 0x08, 0x2D, 0x40, 0xF3, 0x17, 0x81, 0x01, 0x21, 0x0F, 0x46, -0x09, 0x25, 0xD4, 0x23, 0xE0, 0xE7, 0x04, 0x28, 0x44, 0xD9, 0x09, 0x29, 0x44, 0xD9, 0xA0, 0x4B, 0xA2, 0x49, 0x93, 0xF8, -0xC6, 0x30, 0x09, 0x2B, 0xA8, 0xBF, 0x09, 0x23, 0x41, 0xF2, 0xC8, 0x42, 0x94, 0x42, 0xC8, 0x5C, 0x4F, 0xF0, 0x00, 0x05, -0x53, 0xD9, 0xB4, 0xF5, 0xAF, 0x5F, 0x00, 0xF2, 0xCC, 0x80, 0x9B, 0x4A, 0x92, 0xF9, 0x01, 0x20, 0x00, 0x2D, 0xD1, 0xD1, -0x0A, 0x2B, 0x4F, 0xEA, 0x20, 0x14, 0x00, 0xF0, 0x0F, 0x00, 0x1E, 0xDC, 0x02, 0xF1, 0x0F, 0x01, 0x1E, 0x29, 0xA8, 0xBF, -0x1E, 0x21, 0x0A, 0x2B, 0x21, 0xEA, 0xE1, 0x71, 0x00, 0xF0, 0x3C, 0x81, 0x91, 0x4A, 0x03, 0xEB, 0x43, 0x03, 0x12, 0xF9, -0x13, 0x50, 0x8D, 0x42, 0x02, 0xEB, 0x43, 0x02, 0x80, 0xF2, 0xF6, 0x80, 0x92, 0xF9, 0x04, 0x50, 0x8D, 0x42, 0x40, 0xF3, -0x40, 0x81, 0xD3, 0x78, 0x92, 0x78, 0x9B, 0x1A, 0x19, 0x44, 0x40, 0xFA, 0x81, 0xF0, 0x80, 0xF3, 0x04, 0x00, 0x40, 0xEA, -0x04, 0x10, 0xC0, 0xB2, 0xF0, 0xBC, 0x70, 0x47, 0x01, 0x28, 0x0C, 0xD9, 0x07, 0x29, 0x2C, 0xD8, 0x04, 0x29, 0x0A, 0xD8, -0x7B, 0x4B, 0x93, 0xF8, 0xC3, 0x30, 0xA3, 0xF1, 0x0B, 0x05, 0xB5, 0xFA, 0x85, 0xF5, 0x6D, 0x09, 0x09, 0xE0, 0x09, 0x29, -0xF4, 0xD9, 0x76, 0x4B, 0x93, 0xF8, 0xC4, 0x30, 0x0A, 0x2B, 0x4F, 0xF0, 0x00, 0x05, 0xA8, 0xBF, 0x0A, 0x23, 0x75, 0x49, -0x41, 0xF2, 0xC8, 0x42, 0x94, 0x42, 0xC8, 0x5C, 0xAB, 0xD8, 0x73, 0x4A, 0x92, 0xF9, 0x00, 0x20, 0xAE, 0xE7, 0x09, 0x29, -0x26, 0xD8, 0x6C, 0x4B, 0x93, 0xF8, 0xBF, 0x50, 0x0B, 0x2D, 0x00, 0xF0, 0xF0, 0x80, 0x6F, 0x4B, 0x00, 0x22, 0x5B, 0x5D, -0x11, 0x46, 0x01, 0x27, 0x68, 0xE7, 0x66, 0x4B, 0x93, 0xF8, 0xC5, 0x30, 0x09, 0x2B, 0x4F, 0xF0, 0x00, 0x05, 0xA8, 0xBF, -0x09, 0x23, 0xDE, 0xE7, 0x01, 0x28, 0xE6, 0xD0, 0x07, 0x29, 0x0B, 0xD9, 0x5F, 0x4A, 0x65, 0x4B, 0x92, 0xF8, 0xC1, 0x50, -0x0A, 0x2D, 0xA8, 0xBF, 0x0A, 0x25, 0x00, 0x22, 0x5B, 0x5D, 0x11, 0x46, 0x01, 0x27, 0x4F, 0xE7, 0x04, 0x29, 0xD8, 0xD9, -0x58, 0x4A, 0x5E, 0x4B, 0x92, 0xF8, 0xC0, 0x50, 0xA5, 0xF1, 0x0B, 0x01, 0xB1, 0xFA, 0x81, 0xF1, 0x5B, 0x5D, 0x00, 0x22, -0x49, 0x09, 0x01, 0x27, 0x40, 0xE7, 0x40, 0xF6, 0x94, 0x10, 0x84, 0x42, 0x52, 0x48, 0x94, 0xBF, 0x90, 0xF9, 0x01, 0x60, -0x90, 0xF9, 0x02, 0x60, 0x00, 0x29, 0x7F, 0xF4, 0x40, 0xAF, 0x06, 0xF1, 0x0F, 0x01, 0x1E, 0x29, 0xA8, 0xBF, 0x1E, 0x21, -0x0B, 0x2D, 0x21, 0xEA, 0xE1, 0x74, 0x4F, 0xEA, 0x23, 0x10, 0x29, 0x46, 0x03, 0xF0, 0x0F, 0x03, 0xA8, 0xBF, 0x0B, 0x21, -0x00, 0x2F, 0x3B, 0xD1, 0x0A, 0x2D, 0x2C, 0xDC, 0x48, 0xD0, 0x49, 0x4D, 0x01, 0xEB, 0x41, 0x01, 0x15, 0xF9, 0x11, 0x60, -0xB4, 0x42, 0x05, 0xEB, 0x41, 0x01, 0x34, 0xDC, 0x49, 0x78, 0x89, 0x1B, 0x21, 0x44, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x04, -0x01, 0x38, 0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, 0x1B, 0x19, 0x83, 0xF3, 0x04, 0x03, 0x43, 0xEA, 0x00, 0x13, 0xD8, 0xB2, -0x00, 0x2A, 0x3F, 0xF4, 0x11, 0xAF, 0x82, 0x42, 0xBF, 0xF6, 0x0E, 0xAF, 0xD0, 0xB2, 0xF0, 0xBC, 0x70, 0x47, 0x41, 0xF2, -0x44, 0x62, 0x94, 0x42, 0x33, 0x4A, 0x94, 0xBF, 0x92, 0xF9, 0x02, 0x20, 0x92, 0xF9, 0x03, 0x20, 0x2C, 0xE7, 0x01, 0x36, -0x2A, 0xDA, 0xA4, 0xF1, 0x0D, 0x01, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0x02, 0x38, 0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, -0x1B, 0x19, 0xDA, 0xE7, 0x0A, 0x2D, 0xD8, 0xDC, 0x58, 0xD0, 0x01, 0x31, 0xC1, 0xE7, 0x91, 0xF9, 0x04, 0x50, 0xAC, 0x42, -0x1E, 0xDA, 0xCD, 0x78, 0x89, 0x78, 0x69, 0x1A, 0x21, 0x44, 0x43, 0xFA, 0x81, 0xF3, 0xCA, 0xE7, 0xB1, 0x1C, 0x2B, 0xDB, -0x01, 0x2E, 0x76, 0xDC, 0xA4, 0xF1, 0x0F, 0x01, 0x43, 0xFA, 0x81, 0xF3, 0xC1, 0xE7, 0x1F, 0x4B, 0x08, 0xBF, 0xD4, 0x22, -0x5B, 0x5D, 0x00, 0x21, 0x01, 0x27, 0xC7, 0xE6, 0xA4, 0xF1, 0x0F, 0x01, 0x49, 0xB2, 0x03, 0x29, 0xD4, 0xBF, 0x5B, 0x18, -0x03, 0x33, 0xB2, 0xE7, 0x49, 0x79, 0x49, 0x1B, 0x21, 0x44, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, 0x5B, 0x18, 0x05, 0x33, -0x01, 0x30, 0xA8, 0xE7, 0x53, 0x78, 0x5B, 0x1B, 0x19, 0x44, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x03, 0x01, 0x3C, 0x99, 0x42, -0xAC, 0xBF, 0x40, 0x18, 0xC0, 0x18, 0x08, 0xE7, 0xA4, 0xF1, 0x0A, 0x01, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0x01, 0x38, -0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, 0x1B, 0x19, 0x91, 0xE7, 0x00, 0xBF, 0xBC, 0x34, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, -0xEC, 0x12, 0x17, 0x00, 0x68, 0x25, 0x17, 0x00, 0x04, 0x13, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, 0x0C, 0x79, 0x15, 0x00, -0xF8, 0x12, 0x17, 0x00, 0xB8, 0x78, 0x15, 0x00, 0x03, 0x36, 0x35, 0xDA, 0xA4, 0xF1, 0x09, 0x01, 0x49, 0xB2, 0x6F, 0xF0, -0x04, 0x04, 0x01, 0x38, 0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, 0x1B, 0x19, 0x71, 0xE7, 0x01, 0x21, 0x0F, 0x46, 0x00, 0x22, -0x0F, 0x23, 0x79, 0xE6, 0x03, 0x32, 0x09, 0xDA, 0x09, 0x39, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x03, 0x01, 0x3C, 0x99, 0x42, -0xAC, 0xBF, 0x40, 0x18, 0xC0, 0x18, 0xCC, 0xE6, 0x0F, 0x39, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, 0x40, 0x18, 0x05, 0x30, -0xC5, 0xE6, 0x53, 0x79, 0x5B, 0x1B, 0x19, 0x44, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, 0x40, 0x18, 0x05, 0x30, 0x01, 0x34, -0xBB, 0xE6, 0xA4, 0xF1, 0x11, 0x01, 0x49, 0xB2, 0x03, 0x29, 0xD4, 0xBF, 0x5B, 0x18, 0x03, 0x33, 0x02, 0x30, 0x46, 0xE7, -0xA4, 0xF1, 0x0F, 0x01, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, 0x5B, 0x18, 0x05, 0x33, 0x3E, 0xE7, 0x14, 0x22, 0xF6, 0x23, -0x02, 0x70, 0x0B, 0x70, 0x70, 0x47, 0x00, 0xBF, 0x08, 0xB5, 0x09, 0x49, 0x09, 0x48, 0x22, 0xF0, 0xF3, 0xFD, 0x09, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x08, 0xBD, 0xBD, 0xE8, 0x08, 0x40, 0x05, 0x49, 0x06, 0x48, -0x39, 0x22, 0x23, 0xF0, 0x5F, 0xB8, 0x00, 0xBF, 0x50, 0x79, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x1F, 0x49, 0x20, 0x4A, 0x88, 0x68, 0x20, 0x4B, 0x10, 0xB4, 0xD2, 0xF8, -0x14, 0x44, 0x04, 0x65, 0x10, 0x20, 0x18, 0x60, 0x88, 0x68, 0xD2, 0xF8, 0xA0, 0x42, 0x44, 0x65, 0x20, 0x20, 0x18, 0x60, -0x88, 0x68, 0xD2, 0xF8, 0xA0, 0x42, 0xC4, 0x65, 0x80, 0x20, 0x18, 0x60, 0x88, 0x68, 0xD2, 0xF8, 0xD8, 0x40, 0x84, 0x64, -0x04, 0x20, 0x18, 0x60, 0x88, 0x68, 0xD2, 0xF8, 0x0C, 0x44, 0xC4, 0x64, 0xF8, 0x24, 0x08, 0x20, 0x83, 0xF8, 0x03, 0x43, -0x18, 0x60, 0x88, 0x68, 0xD2, 0xF8, 0x1C, 0x41, 0xC0, 0xF8, 0x0C, 0x41, 0x4F, 0xF4, 0x00, 0x20, 0x58, 0x60, 0x89, 0x68, -0xD2, 0xF8, 0x2C, 0x21, 0xC1, 0xF8, 0x10, 0x21, 0x4F, 0xF4, 0x80, 0x10, 0x4F, 0xF4, 0x00, 0x41, 0x4F, 0xF4, 0x00, 0x12, -0x58, 0x60, 0x99, 0x60, 0x1A, 0x60, 0x62, 0xB6, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0xBF, 0x00, 0xED, 0x00, 0xE0, -0x88, 0x1A, 0x17, 0x00, 0x00, 0xE1, 0x00, 0xE0, 0x33, 0x49, 0x34, 0x4B, 0x0A, 0x68, 0x00, 0x28, 0x22, 0xF4, 0x00, 0x62, -0xF0, 0xB5, 0x32, 0x4D, 0x0A, 0x60, 0x06, 0xBF, 0x1D, 0x46, 0x30, 0x26, 0x20, 0x26, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, -0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x2A, 0x4F, 0x2C, 0x4C, 0x3A, 0x68, 0x22, 0xF4, 0x80, 0x52, 0x3A, 0x60, 0x3A, 0x68, -0x42, 0xF4, 0x80, 0x62, 0x3A, 0x60, 0x3A, 0x68, 0x42, 0xF4, 0x00, 0x62, 0x3A, 0x60, 0xB6, 0x00, 0x19, 0x46, 0x3A, 0x46, -0x4F, 0xF0, 0xFF, 0x0E, 0xC8, 0x1C, 0xC0, 0xB2, 0xAC, 0x46, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x03, 0x43, 0x13, 0x60, -0x5C, 0xF8, 0x04, 0x3B, 0x23, 0x60, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, -0x00, 0xBF, 0x13, 0x68, 0x9B, 0x04, 0xFC, 0xD5, 0x01, 0x38, 0xC0, 0xB2, 0x70, 0x45, 0xE8, 0xD1, 0x04, 0x31, 0x04, 0x30, -0xB1, 0x42, 0x5F, 0xFA, 0x80, 0xFE, 0x05, 0xF1, 0x10, 0x05, 0xDD, 0xD1, 0x3B, 0x68, 0x23, 0xF4, 0x80, 0x63, 0x3B, 0x60, -0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x0A, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x63, -0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x05, 0x4B, 0x1A, 0x68, 0x42, 0xF4, -0x80, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x62, 0x1A, 0x60, 0xF0, 0xBD, 0x00, 0xBF, 0x60, 0x40, 0x34, 0x40, -0x1C, 0x13, 0x17, 0x00, 0x1C, 0x16, 0x17, 0x00, 0x64, 0x40, 0x34, 0x40, 0x44, 0x4A, 0x45, 0x49, 0x13, 0x68, 0xF0, 0xB4, -0x44, 0x4D, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x00, 0x28, 0x0C, 0xBF, 0x28, 0x46, 0x08, 0x46, 0x32, 0x23, 0x00, 0xBF, -0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x3B, 0x4A, 0x3E, 0x4D, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x53, 0x13, 0x60, -0x13, 0x68, 0x43, 0xF4, 0x80, 0x63, 0x13, 0x60, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x03, 0x21, 0xA0, 0xF1, -0x0C, 0x04, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x54, 0xF8, 0x21, 0x30, 0x2B, 0x60, 0x13, 0x68, -0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x13, 0x68, 0x9E, 0x04, 0xFC, 0xD5, -0x04, 0x31, 0x43, 0x29, 0xE9, 0xD1, 0x28, 0x4B, 0x2B, 0x4E, 0x2A, 0x4D, 0x04, 0x1F, 0x02, 0x21, 0x1A, 0x68, 0x22, 0xF0, -0xFF, 0x02, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, -0x00, 0xBF, 0x1A, 0x68, 0x90, 0x04, 0xFC, 0xD5, 0x37, 0x68, 0x54, 0xF8, 0x21, 0x20, 0x18, 0x68, 0x27, 0xF0, 0x7F, 0x47, -0x02, 0xF0, 0x7F, 0x42, 0x20, 0xF0, 0xFF, 0x00, 0x3A, 0x43, 0x08, 0x43, 0x18, 0x60, 0x2A, 0x60, 0x1A, 0x68, 0x42, 0xF4, -0x80, 0x72, 0x1A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x1A, 0x68, 0x92, 0x04, 0xFC, 0xD5, 0x04, 0x31, -0x42, 0x29, 0xD3, 0xD1, 0x1A, 0x68, 0x22, 0xF4, 0x80, 0x62, 0x1A, 0x60, 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, -0xFF, 0x03, 0xFA, 0xD1, 0x0A, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, -0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x05, 0x4B, 0x1A, 0x68, 0x42, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, -0x00, 0x62, 0xF0, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x60, 0x40, 0x34, 0x40, 0x1C, 0x16, 0x17, 0x00, 0x1C, 0x13, 0x17, 0x00, -0x64, 0x40, 0x34, 0x40, 0x68, 0x40, 0x34, 0x40, 0x2C, 0x49, 0x2D, 0x4B, 0x0A, 0x68, 0x30, 0xB4, 0x2C, 0x4C, 0x00, 0x28, -0x22, 0xF4, 0x80, 0x72, 0x0C, 0xBF, 0x18, 0x46, 0x20, 0x46, 0x0A, 0x60, 0x0C, 0xBF, 0x20, 0x24, 0x10, 0x24, 0x32, 0x23, -0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x22, 0x49, 0x24, 0x4D, 0x0A, 0x68, 0x22, 0xF4, 0x00, 0x72, -0x0A, 0x60, 0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x72, 0x04, 0x38, 0x0A, 0x60, -0x0A, 0x68, 0x22, 0xF0, 0x1F, 0x02, 0x1A, 0x43, 0x0A, 0x60, 0x50, 0xF8, 0x04, 0x2F, 0x2A, 0x60, 0x0A, 0x68, 0x42, 0xF0, -0x20, 0x02, 0x0A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x0A, 0x68, 0x52, 0x05, 0xFC, 0xD5, 0x01, 0x33, -0x9C, 0x42, 0xE9, 0xD1, 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x0B, 0x60, 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, -0xFF, 0x03, 0xFA, 0xD1, 0x0A, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, -0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x05, 0x4B, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, -0x80, 0x72, 0x30, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x6C, 0x40, 0x34, 0x40, 0x1C, 0x18, 0x17, 0x00, 0x9C, 0x18, 0x17, 0x00, -0x70, 0x40, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0xA6, 0x49, 0xA7, 0x4C, 0xA7, 0x4B, 0xA8, 0x4A, 0xDF, 0xF8, 0xE8, 0xE2, -0x00, 0x28, 0x0E, 0xBF, 0xA4, 0x46, 0x8C, 0x46, 0x9E, 0x46, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0xA3, 0x4C, 0xA4, 0x49, -0x23, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x23, 0x60, 0x01, 0x23, 0x13, 0x60, 0x0B, 0x68, 0xA1, 0x4A, 0x23, 0xF4, 0x00, 0x63, -0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x32, 0x24, 0x00, 0xBF, 0x01, 0x3C, 0x14, 0xF0, 0xFF, 0x04, -0xFA, 0xD1, 0xDF, 0xF8, 0x64, 0x82, 0x99, 0x4A, 0xD8, 0xF8, 0x00, 0x30, 0x98, 0x4F, 0x23, 0xF4, 0x80, 0x53, 0xC8, 0xF8, -0x00, 0x30, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x13, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF4, 0x80, 0x63, 0xC8, 0xF8, -0x00, 0x30, 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF4, 0x00, 0x63, 0xC8, 0xF8, 0x00, 0x30, 0x42, 0x46, 0xFF, 0x26, 0xE1, 0x1C, -0xC9, 0xB2, 0x75, 0x46, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x55, 0xF8, 0x04, 0x3B, 0x3B, 0x60, -0x13, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x13, 0x68, 0x9B, 0x04, -0xFC, 0xD5, 0x01, 0x39, 0xC9, 0xB2, 0x8E, 0x42, 0xE8, 0xD1, 0x04, 0x34, 0x04, 0x36, 0x80, 0x2C, 0xF6, 0xB2, 0x0E, 0xF1, -0x10, 0x0E, 0xDE, 0xD1, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF4, 0x80, 0x63, 0xC8, 0xF8, 0x00, 0x30, 0xC8, 0x23, 0x00, 0xBF, -0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x74, 0x4C, 0x75, 0x49, 0x22, 0x68, 0x22, 0xF4, 0x00, 0x62, 0x22, 0x60, -0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x72, 0x10, 0x34, 0xAC, 0xF1, 0x04, 0x0C, -0x0A, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x1F, 0x02, 0x1A, 0x43, 0x0A, 0x60, 0x5C, 0xF8, 0x04, 0x2F, 0x22, 0x60, 0x0A, 0x68, -0x42, 0xF0, 0x20, 0x02, 0x0A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x0A, 0x68, 0x52, 0x05, 0xFC, 0xD5, -0x01, 0x33, 0x10, 0x2B, 0xE9, 0xD1, 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x0B, 0x60, 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, -0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x5D, 0x49, 0x5E, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x0B, 0x60, 0x13, 0x68, -0x43, 0xF4, 0x00, 0x13, 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x54, 0x49, -0x54, 0x4B, 0x0C, 0x68, 0x56, 0x4A, 0x57, 0x4D, 0x44, 0xF4, 0x80, 0x54, 0x0C, 0x60, 0x1C, 0x68, 0x44, 0xF4, 0x00, 0x74, -0x1C, 0x60, 0x0C, 0x68, 0x44, 0xF4, 0x00, 0x64, 0x0C, 0x60, 0x19, 0x68, 0x51, 0x4C, 0x41, 0xF4, 0x80, 0x71, 0x19, 0x60, -0x11, 0x68, 0x50, 0x4B, 0x41, 0xF4, 0x80, 0x51, 0x11, 0x60, 0x29, 0x68, 0x21, 0xF4, 0x80, 0x21, 0x29, 0x60, 0x21, 0x68, -0x21, 0xF0, 0x00, 0x51, 0x21, 0x60, 0xA5, 0xF5, 0xBC, 0x45, 0x1C, 0x68, 0x2C, 0x60, 0x49, 0x49, 0x5D, 0x68, 0x0D, 0x60, -0x48, 0x4C, 0x9D, 0x68, 0x25, 0x60, 0xDD, 0x68, 0x8D, 0x60, 0x1D, 0x69, 0xA5, 0x60, 0x5C, 0x69, 0x0C, 0x61, 0xD3, 0xE9, -0x06, 0x64, 0x44, 0x4D, 0x44, 0x4B, 0x2E, 0x60, 0x8C, 0x61, 0x9B, 0x78, 0x18, 0x31, 0xCB, 0xB1, 0xA5, 0xF6, 0x78, 0x65, -0x41, 0x4C, 0x2B, 0x68, 0x23, 0xF0, 0xC0, 0x63, 0x43, 0xF0, 0x00, 0x73, 0x2B, 0x60, 0x23, 0x68, 0x01, 0xF5, 0xBB, 0x41, -0x7C, 0x31, 0x43, 0xF0, 0x80, 0x63, 0x23, 0x60, 0x0B, 0x68, 0x43, 0xF4, 0x00, 0x63, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, -0x40, 0x63, 0x43, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x36, 0x4B, 0x93, 0xF8, 0xFA, 0x30, 0x38, 0xB9, 0x43, 0xBB, 0x35, 0x4A, -0x13, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0xCB, 0xB1, 0x32, 0x49, 0x32, 0x4A, 0x0B, 0x68, -0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xB5, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xB5, 0x03, -0x13, 0x60, 0x0B, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x32, 0x23, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x23, -0x43, 0xF4, 0x32, 0x23, 0x13, 0x60, 0x24, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, -0x21, 0x49, 0x22, 0x4A, 0x0B, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xC2, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, -0xFF, 0x03, 0x43, 0xF0, 0xC2, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x3F, 0x23, 0x0B, 0x60, -0x13, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x3F, 0x23, 0x13, 0x60, 0xBB, 0xE7, 0x00, 0xBF, 0x9C, 0x18, 0x17, 0x00, -0x1C, 0x18, 0x17, 0x00, 0x1C, 0x16, 0x17, 0x00, 0x40, 0x42, 0x04, 0x40, 0x18, 0x00, 0x58, 0x40, 0x60, 0x40, 0x34, 0x40, -0x6C, 0x40, 0x34, 0x40, 0x64, 0x40, 0x34, 0x40, 0x58, 0x40, 0x34, 0x40, 0x14, 0x20, 0x34, 0x40, 0x18, 0x20, 0x34, 0x40, -0x1C, 0x20, 0x34, 0x40, 0xDC, 0x18, 0x17, 0x00, 0x1C, 0xC2, 0x33, 0x40, 0x20, 0xC2, 0x33, 0x40, 0x30, 0xC2, 0x33, 0x40, -0x3C, 0x36, 0x17, 0x00, 0x38, 0x40, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x94, 0x40, 0x04, 0x40, 0xAC, 0xB3, 0x33, 0x40, -0xD4, 0xB3, 0x33, 0x40, 0x1C, 0x13, 0x17, 0x00, 0x10, 0xB4, 0x1C, 0x4B, 0x1C, 0x4C, 0x0F, 0xCB, 0x85, 0xB0, 0x0D, 0xF1, -0x10, 0x0C, 0x0C, 0xE9, 0x0F, 0x00, 0x63, 0x68, 0xDB, 0x06, 0x16, 0xD5, 0x61, 0x68, 0xA3, 0x69, 0x5C, 0xFA, 0x83, 0xF3, -0xC8, 0x04, 0x13, 0xF8, 0x10, 0x2C, 0x22, 0xD4, 0x60, 0x68, 0x14, 0x49, 0x14, 0x4B, 0x10, 0xF4, 0x80, 0x7F, 0x08, 0xBF, -0x0B, 0x46, 0x11, 0x06, 0x44, 0xBF, 0x5B, 0x00, 0x02, 0xF0, 0x7F, 0x02, 0xB3, 0xFB, 0xF2, 0xF3, 0x00, 0xE0, 0x0F, 0x4B, -0x0B, 0x4A, 0x0F, 0x4C, 0x52, 0x69, 0x0F, 0x48, 0x0F, 0x49, 0xD2, 0xB2, 0xB3, 0xFB, 0xF2, 0xF3, 0x23, 0x60, 0xD0, 0xF8, -0x84, 0x20, 0xD2, 0xB2, 0xB3, 0xFB, 0xF2, 0xF3, 0x0B, 0x60, 0x05, 0xB0, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x09, 0x4B, -0xE1, 0xE7, 0x00, 0xBF, 0x60, 0x79, 0x15, 0x00, 0x00, 0x00, 0x50, 0x40, 0x00, 0x38, 0x9C, 0x1C, 0x00, 0xD0, 0x12, 0x13, -0x00, 0x75, 0x19, 0x03, 0x18, 0x13, 0x17, 0x00, 0x00, 0x00, 0x10, 0x40, 0x14, 0x13, 0x17, 0x00, 0x00, 0x70, 0x38, 0x39, -0x70, 0xB4, 0x5D, 0x4C, 0x5D, 0x48, 0x23, 0x68, 0x5D, 0x4D, 0x5E, 0x49, 0x5E, 0x4A, 0x23, 0xF4, 0xC0, 0x63, 0x43, 0xF4, -0x00, 0x73, 0x23, 0x60, 0x03, 0x68, 0x95, 0xF8, 0xFA, 0x40, 0x23, 0xF4, 0xBC, 0x03, 0x23, 0xF4, 0x70, 0x53, 0x43, 0xF4, -0x60, 0x23, 0x43, 0xF4, 0x80, 0x63, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x60, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, -0xFE, 0x33, 0x43, 0xF4, 0x98, 0x33, 0x13, 0x60, 0x00, 0x2C, 0x00, 0xF0, 0x8F, 0x80, 0xA2, 0xF5, 0x11, 0x12, 0xA2, 0xF6, -0x4C, 0x52, 0x13, 0x68, 0x23, 0xF0, 0xC0, 0x63, 0x13, 0x60, 0x4C, 0x4D, 0x4C, 0x48, 0x2B, 0x68, 0x4C, 0x4C, 0x4D, 0x4A, -0x4D, 0x49, 0x4E, 0x4E, 0x43, 0xF0, 0x80, 0x63, 0x2B, 0x60, 0x03, 0x68, 0x43, 0xF4, 0x00, 0x63, 0x03, 0x60, 0x23, 0x68, -0x23, 0xF4, 0x7F, 0x73, 0x43, 0xF0, 0x04, 0x03, 0x23, 0x60, 0x03, 0x68, 0x23, 0xF4, 0x80, 0x53, 0x43, 0xF4, 0x00, 0x63, -0x03, 0x60, 0x13, 0x68, 0x23, 0xF0, 0xCC, 0x03, 0x43, 0xF0, 0xC4, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x03, 0xF0, 0x7F, 0x43, -0xA5, 0xF5, 0xF8, 0x55, 0x43, 0xF4, 0x78, 0x13, 0x0C, 0x3D, 0x43, 0xF4, 0x78, 0x73, 0x0B, 0x60, 0x2B, 0x68, 0x1B, 0x0C, -0xA4, 0xF5, 0x00, 0x54, 0x1B, 0x04, 0x34, 0x3C, 0x43, 0xF0, 0x84, 0x03, 0x2B, 0x60, 0x23, 0x68, 0x37, 0x4D, 0x23, 0xF4, -0x40, 0x63, 0x43, 0xF4, 0x00, 0x63, 0x23, 0x60, 0xD0, 0xF8, 0x04, 0x31, 0x02, 0xF5, 0xF8, 0x52, 0x23, 0xF4, 0xE0, 0x23, -0x18, 0x32, 0x43, 0xF4, 0x80, 0x33, 0xC0, 0xF8, 0x04, 0x31, 0x13, 0x68, 0x23, 0xF0, 0x76, 0x53, 0x23, 0xF0, 0x07, 0x03, -0x01, 0xF5, 0xF7, 0x51, 0x43, 0xF0, 0x04, 0x53, 0x04, 0x31, 0x43, 0xF0, 0x07, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x04, 0xF5, -0x00, 0x54, 0x02, 0xF1, 0xEF, 0x52, 0x00, 0xF5, 0x01, 0x50, 0x1C, 0x34, 0x02, 0xF5, 0x3D, 0x22, 0x02, 0xF6, 0x44, 0x02, -0x1D, 0x40, 0x08, 0x30, 0x22, 0x4B, 0x0D, 0x60, 0x32, 0x60, 0x23, 0x60, 0x03, 0x68, 0x21, 0x4A, 0x21, 0x4C, 0x23, 0xF4, -0x7F, 0x23, 0x23, 0xF4, 0x00, 0x63, 0x43, 0xF4, 0x32, 0x33, 0x03, 0x60, 0xCB, 0x68, 0x43, 0xF4, 0x00, 0x63, 0xCB, 0x60, -0x13, 0x68, 0x23, 0xF0, 0x09, 0x03, 0x43, 0xF4, 0x80, 0x53, 0x13, 0x60, 0x23, 0x68, 0x1B, 0x07, 0x08, 0xD5, 0xA2, 0xF5, -0x0F, 0x12, 0xA2, 0xF5, 0x03, 0x52, 0x24, 0x3A, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x53, 0x13, 0x60, 0x70, 0xBC, 0x70, 0x47, -0x12, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0xC0, 0x63, 0x43, 0xF0, 0x00, 0x73, 0x13, 0x60, 0x70, 0xE7, 0x20, 0x40, 0x34, 0x40, -0x24, 0x40, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x28, 0x40, 0x34, 0x40, 0x04, 0x01, 0x58, 0x40, 0x38, 0x40, 0x34, 0x40, -0x30, 0x20, 0x34, 0x40, 0x48, 0x40, 0x34, 0x40, 0x28, 0x21, 0x34, 0x40, 0x24, 0x21, 0x34, 0x40, 0x2C, 0x40, 0x34, 0x40, -0x03, 0x00, 0x00, 0xFF, 0x08, 0x51, 0x2E, 0x1A, 0x08, 0x01, 0x58, 0x40, 0x94, 0x40, 0x04, 0x40, 0xB8, 0xB3, 0x33, 0x40, -0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4D, -0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, 0xDE, 0x73, 0x1B, 0x68, -0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x5C, 0x40, 0x04, 0x40, -0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4D, -0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, 0xE6, 0x73, 0x1B, 0x68, -0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x5C, 0x40, 0x04, 0x40, -0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4D, -0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, 0xE8, 0x73, 0x1B, 0x68, -0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x5C, 0x40, 0x04, 0x40, -0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x24, 0x1C, 0x60, 0x0D, 0x4D, -0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, 0xEA, 0x73, 0x1B, 0x68, -0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x5C, 0x40, 0x04, 0x40, -0x2D, 0xE9, 0xF0, 0x47, 0x4C, 0x4B, 0x4D, 0x4D, 0x08, 0x22, 0xC3, 0xF8, 0x00, 0x21, 0xAB, 0x78, 0x33, 0xB9, 0x4B, 0x4A, -0x93, 0x68, 0x23, 0xF4, 0x80, 0x23, 0x43, 0xF4, 0x00, 0x33, 0x93, 0x60, 0x47, 0x4A, 0x13, 0x6B, 0x03, 0xF0, 0x22, 0x03, -0x02, 0x2B, 0xFA, 0xD1, 0x93, 0x68, 0x45, 0x4C, 0x41, 0x49, 0x45, 0x48, 0x23, 0xF4, 0x00, 0x63, 0x43, 0xF0, 0x01, 0x13, -0x43, 0xF4, 0x04, 0x43, 0x93, 0x60, 0x06, 0x23, 0x23, 0x60, 0x53, 0x6D, 0x40, 0x4C, 0x23, 0xF4, 0x40, 0x13, 0x53, 0x65, -0x4F, 0xF4, 0x00, 0x63, 0xC1, 0xF8, 0x34, 0x31, 0x13, 0x68, 0x11, 0x68, 0xC3, 0xF3, 0x09, 0x03, 0x43, 0xF0, 0x80, 0x03, -0x01, 0x40, 0x0B, 0x43, 0x13, 0x60, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x08, 0xD1, 0x13, 0x68, 0x11, 0x68, 0xC3, 0xF3, -0x09, 0x03, 0x43, 0xF0, 0x08, 0x03, 0x08, 0x40, 0x18, 0x43, 0x10, 0x60, 0x2E, 0x49, 0x2C, 0x4E, 0x0B, 0x68, 0x0A, 0x68, -0x30, 0x48, 0xC3, 0xF3, 0x09, 0x03, 0x22, 0xF4, 0x7F, 0x72, 0x22, 0xF0, 0x03, 0x02, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x43, -0x0B, 0x60, 0x73, 0x6F, 0x2B, 0x4A, 0x43, 0xF0, 0x02, 0x03, 0x73, 0x67, 0x03, 0x68, 0x2A, 0x4E, 0x23, 0xF4, 0x00, 0x63, -0x03, 0x60, 0x13, 0x68, 0x96, 0xF8, 0xA9, 0x00, 0x43, 0xF0, 0x80, 0x73, 0x13, 0x60, 0x68, 0xB1, 0x0B, 0x6B, 0x5F, 0x06, -0x05, 0xD4, 0x0B, 0x6B, 0x58, 0x07, 0x02, 0xD5, 0x22, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x1A, 0x4B, 0x1A, 0x6B, 0x52, 0x06, -0x40, 0xF1, 0x10, 0x82, 0x1F, 0x4B, 0xD6, 0xF8, 0xA0, 0x20, 0x1A, 0x60, 0xAB, 0x78, 0x00, 0x2B, 0x3E, 0xD0, 0x1D, 0x4B, -0x1A, 0x68, 0x13, 0x78, 0x02, 0x2B, 0x00, 0xF0, 0x6C, 0x82, 0x11, 0x4B, 0x0E, 0x48, 0x02, 0x21, 0x11, 0x70, 0x1A, 0x6D, -0xA9, 0x78, 0x42, 0xF4, 0x80, 0x22, 0x1A, 0x65, 0x02, 0x69, 0x22, 0xF0, 0x80, 0x02, 0x02, 0x61, 0x5A, 0x6A, 0x22, 0xF0, -0xFF, 0x02, 0x42, 0xF0, 0xDF, 0x02, 0x5A, 0x62, 0x5A, 0x6A, 0x22, 0xF4, 0x7F, 0x42, 0x42, 0xF4, 0x5F, 0x42, 0x5A, 0x62, -0x00, 0x29, 0x33, 0xD0, 0x03, 0xF0, 0xB0, 0xFC, 0x0C, 0x4F, 0x33, 0xE0, 0x00, 0x00, 0x50, 0x40, 0x3C, 0x36, 0x17, 0x00, -0x00, 0x60, 0x50, 0x40, 0x10, 0x00, 0x58, 0x40, 0x00, 0xFC, 0xFF, 0xFF, 0x78, 0x36, 0x17, 0x00, 0x00, 0x01, 0x58, 0x40, -0x20, 0x01, 0x58, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0xE0, 0x50, 0x34, 0x40, 0x74, 0x36, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0xC0, 0x4B, 0xC1, 0x49, 0x1A, 0x6D, 0x42, 0xF4, 0x80, 0x22, 0x1A, 0x65, 0x0A, 0x69, 0x22, 0xF0, -0x80, 0x02, 0x0A, 0x61, 0x5A, 0x6A, 0x22, 0xF0, 0xFF, 0x02, 0x42, 0xF0, 0xDF, 0x02, 0x5A, 0x62, 0x5A, 0x6A, 0x22, 0xF4, -0x7F, 0x42, 0x42, 0xF4, 0x5F, 0x42, 0x5A, 0x62, 0xB7, 0x4F, 0xD7, 0xF8, 0xCC, 0x30, 0x98, 0x47, 0x03, 0xF0, 0xF4, 0xF9, -0xD7, 0xF8, 0x9C, 0x34, 0x98, 0x47, 0xB2, 0x4B, 0xB3, 0x49, 0x1B, 0x68, 0xB3, 0x4A, 0xA8, 0x78, 0x1B, 0x0C, 0x0B, 0x70, -0x04, 0x23, 0x1B, 0x68, 0x1B, 0x09, 0x13, 0x70, 0x10, 0xB9, 0xD7, 0xF8, 0x80, 0x34, 0x98, 0x47, 0xAE, 0x48, 0xAF, 0x4D, -0xFF, 0xF7, 0x78, 0xFE, 0xAE, 0x48, 0xFF, 0xF7, 0x9D, 0xFE, 0x03, 0x46, 0x1A, 0x0C, 0xAD, 0x49, 0x2A, 0x70, 0x1B, 0x0F, -0x02, 0x22, 0x0B, 0x70, 0xAB, 0x48, 0x11, 0x46, 0xFF, 0xF7, 0xE2, 0xFE, 0x4F, 0xF4, 0x80, 0x52, 0x11, 0x46, 0xA9, 0x48, -0xFF, 0xF7, 0xDC, 0xFE, 0xA8, 0x4A, 0xA9, 0x49, 0xA9, 0x48, 0xFF, 0xF7, 0xD7, 0xFE, 0x2B, 0x78, 0x01, 0x2B, 0x00, 0xF0, -0x8E, 0x81, 0xA7, 0x48, 0x4F, 0xF4, 0x7F, 0x52, 0x4F, 0xF4, 0x9E, 0x51, 0xFF, 0xF7, 0xCC, 0xFE, 0x04, 0x22, 0xA4, 0x48, -0x11, 0x46, 0xFF, 0xF7, 0xC7, 0xFE, 0x23, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x04, 0xD0, 0xA1, 0x48, 0x07, 0x22, 0x00, 0x21, -0xFF, 0xF7, 0xBE, 0xFE, 0x01, 0x21, 0x02, 0x20, 0x03, 0xF0, 0x5C, 0xFE, 0x04, 0x22, 0x9D, 0x48, 0x00, 0x21, 0xFF, 0xF7, -0xB5, 0xFE, 0x01, 0x21, 0x03, 0x20, 0x03, 0xF0, 0x53, 0xFE, 0x08, 0x22, 0x98, 0x48, 0x00, 0x21, 0xFF, 0xF7, 0xAC, 0xFE, -0x00, 0x21, 0x05, 0x20, 0x03, 0xF0, 0x4A, 0xFE, 0x95, 0x48, 0x20, 0x22, 0x00, 0x21, 0xFF, 0xF7, 0xA3, 0xFE, 0x20, 0x22, -0x11, 0x46, 0x93, 0x48, 0xFF, 0xF7, 0x9E, 0xFE, 0x20, 0x22, 0x11, 0x46, 0x91, 0x48, 0xFF, 0xF7, 0x99, 0xFE, 0x02, 0x22, -0x90, 0x48, 0x11, 0x46, 0xFF, 0xF7, 0x94, 0xFE, 0x4F, 0xF4, 0xD2, 0x73, 0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, 0x00, 0xF0, -0x60, 0x00, 0x20, 0x28, 0x00, 0xF0, 0x74, 0x81, 0x4F, 0xF4, 0xFC, 0x02, 0x11, 0x46, 0x89, 0x48, 0xFF, 0xF7, 0x84, 0xFE, -0x88, 0x4A, 0x89, 0x48, 0x4F, 0xF0, 0x46, 0x41, 0xFF, 0xF7, 0x7E, 0xFE, 0x87, 0x48, 0x3F, 0x22, 0x1F, 0x21, 0xFF, 0xF7, -0x79, 0xFE, 0x4F, 0xF4, 0x80, 0x22, 0x85, 0x48, 0x00, 0x21, 0xFF, 0xF7, 0x73, 0xFE, 0x84, 0x48, 0x4F, 0xF4, 0x8E, 0x71, -0xFF, 0xF7, 0x46, 0xFE, 0x82, 0x48, 0x4F, 0xF4, 0xF8, 0x22, 0x4F, 0xF4, 0xD8, 0x21, 0xFF, 0xF7, 0x67, 0xFE, 0x40, 0x22, -0x11, 0x46, 0x7F, 0x48, 0xFF, 0xF7, 0x62, 0xFE, 0x4F, 0xF4, 0xC0, 0x32, 0x11, 0x46, 0x7D, 0x48, 0xFF, 0xF7, 0x5C, 0xFE, -0x7C, 0x48, 0x4F, 0xF4, 0xE0, 0x62, 0x4F, 0xF4, 0x00, 0x71, 0xFF, 0xF7, 0x55, 0xFE, 0x96, 0xF8, 0xC7, 0x70, 0xB7, 0xB3, -0x78, 0x4A, 0x96, 0xF8, 0xC8, 0x10, 0x78, 0x4B, 0x96, 0xF8, 0xC9, 0x00, 0x11, 0x70, 0x96, 0xF8, 0xCA, 0x10, 0x50, 0x70, -0x91, 0x70, 0x96, 0xF8, 0xCB, 0x50, 0x96, 0xF8, 0xCC, 0x00, 0x96, 0xF8, 0xCD, 0x10, 0x96, 0xF8, 0xCE, 0x20, 0x1D, 0x70, -0x58, 0x70, 0x99, 0x70, 0xDA, 0x70, 0x4F, 0xF4, 0xD2, 0x73, 0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, 0x10, 0xF4, 0x60, 0x2F, -0xC0, 0xF3, 0x42, 0x41, 0x0E, 0xD0, 0x6A, 0x4A, 0x8D, 0x01, 0x02, 0xF1, 0x40, 0x00, 0x52, 0xF8, 0x04, 0x3F, 0x23, 0xF4, -0xE0, 0x73, 0x2B, 0x43, 0x90, 0x42, 0x13, 0x60, 0xF7, 0xD1, 0x65, 0x48, 0x03, 0xF0, 0x68, 0xFD, 0x23, 0x68, 0x1C, 0x78, -0x01, 0x2C, 0x00, 0xF0, 0xEF, 0x80, 0xBD, 0xE8, 0xF0, 0x87, 0x4F, 0xF4, 0xD2, 0x76, 0x0A, 0x20, 0x33, 0x68, 0xDF, 0xF8, -0x6C, 0xA1, 0x98, 0x47, 0x33, 0x68, 0x05, 0x46, 0x0B, 0x20, 0x98, 0x47, 0x33, 0x68, 0x80, 0x46, 0x0F, 0x20, 0x98, 0x47, -0x5F, 0xEA, 0x95, 0x7C, 0x3A, 0x46, 0x0C, 0xBF, 0x4F, 0xF0, 0x08, 0x09, 0x4F, 0xF0, 0x10, 0x09, 0x4F, 0xEA, 0x15, 0x6E, -0xD3, 0x00, 0x25, 0xFA, 0x03, 0xF3, 0xDF, 0xB2, 0xC3, 0xF3, 0x03, 0x13, 0xBC, 0xF1, 0x00, 0x0F, 0x38, 0xD1, 0x00, 0x2B, -0x54, 0xD1, 0x00, 0x2F, 0x40, 0xF0, 0x1F, 0x81, 0x01, 0x32, 0x03, 0x2A, 0xEE, 0xD1, 0xDF, 0xF8, 0x24, 0xE1, 0x07, 0x0E, -0x00, 0x21, 0xCB, 0x00, 0x28, 0xFA, 0x03, 0xF3, 0xDE, 0xB2, 0xC3, 0xF3, 0x03, 0x13, 0xBC, 0xF1, 0x00, 0x0F, 0x0B, 0xD1, -0xEB, 0xB1, 0x08, 0x22, 0x93, 0x42, 0x28, 0xBF, 0xD3, 0x1A, 0x5B, 0xB2, 0x0E, 0xF8, 0x01, 0x30, 0x01, 0x31, 0x04, 0x29, -0xEB, 0xD1, 0x9C, 0xE7, 0x4D, 0x00, 0x6A, 0x1C, 0x47, 0xFA, 0x02, 0xF2, 0x12, 0x01, 0x02, 0xF0, 0x10, 0x02, 0x13, 0x43, -0x13, 0xF0, 0xFF, 0x03, 0x1F, 0xD1, 0x47, 0xFA, 0x05, 0xF3, 0x1B, 0x01, 0x03, 0xF0, 0x10, 0x03, 0x06, 0xF0, 0x0F, 0x06, -0x1E, 0x43, 0x00, 0x2E, 0xE6, 0xD0, 0x33, 0x46, 0x4A, 0x46, 0xDD, 0xE7, 0x56, 0x00, 0x71, 0x1C, 0x4E, 0xFA, 0x01, 0xF1, -0x09, 0x01, 0x01, 0xF0, 0x10, 0x01, 0x0B, 0x43, 0x13, 0xF0, 0xFF, 0x03, 0x09, 0xD0, 0x10, 0x21, 0x8B, 0x42, 0x28, 0xBF, -0xCB, 0x1A, 0x5B, 0xB2, 0x0A, 0xF8, 0x02, 0x30, 0xB8, 0xE7, 0x10, 0x22, 0xC8, 0xE7, 0x4E, 0xFA, 0x06, 0xF3, 0x1B, 0x01, -0x03, 0xF0, 0x10, 0x03, 0x07, 0xF0, 0x0F, 0x07, 0x1F, 0x43, 0xAA, 0xE7, 0x08, 0x21, 0xEB, 0xE7, 0x00, 0x60, 0x50, 0x40, -0x00, 0x00, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x11, 0x13, 0x17, 0x00, 0x12, 0x13, 0x17, 0x00, 0x04, 0x02, 0x22, 0x03, -0x10, 0x13, 0x17, 0x00, 0x00, 0x00, 0x01, 0x50, 0x70, 0x25, 0x17, 0x00, 0x50, 0x91, 0x01, 0x50, 0x20, 0x91, 0x01, 0x50, -0xC0, 0xFD, 0x01, 0x00, 0xC0, 0xF1, 0x01, 0x00, 0x24, 0x91, 0x01, 0x50, 0x08, 0x88, 0x01, 0x50, 0x18, 0x88, 0x01, 0x50, -0x2C, 0x91, 0x01, 0x50, 0x00, 0x10, 0x01, 0x50, 0x0C, 0x10, 0x01, 0x50, 0x10, 0x10, 0x01, 0x50, 0x18, 0x10, 0x01, 0x50, -0x00, 0x30, 0x01, 0x50, 0x00, 0x88, 0x01, 0x50, 0x00, 0x00, 0xC0, 0xFF, 0x04, 0x88, 0x01, 0x50, 0x28, 0x91, 0x01, 0x50, -0x5C, 0x00, 0x01, 0x50, 0x58, 0x00, 0x01, 0x50, 0x74, 0x91, 0x01, 0x50, 0x18, 0x91, 0x01, 0x50, 0x00, 0x91, 0x01, 0x50, -0x30, 0x88, 0x01, 0x50, 0x68, 0x25, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, 0x18, 0x18, 0x17, 0x00, 0x74, 0x79, 0x15, 0x00, -0x1B, 0x6B, 0x59, 0x07, 0x7F, 0xF5, 0xEC, 0xAD, 0xD6, 0xF8, 0xA0, 0x30, 0x3F, 0x48, 0x40, 0x49, 0x40, 0x4A, 0x43, 0xF0, -0x00, 0x73, 0x01, 0x27, 0x07, 0x70, 0x0B, 0x60, 0x53, 0x6F, 0x43, 0xF0, 0x10, 0x03, 0x53, 0x67, 0xE0, 0xE5, 0x3C, 0x4A, -0x3C, 0x49, 0x3D, 0x48, 0xFF, 0xF7, 0x40, 0xFD, 0x3C, 0x48, 0x4F, 0xF4, 0x08, 0x42, 0x4F, 0xF4, 0x00, 0x41, 0xFF, 0xF7, -0x39, 0xFD, 0x3A, 0x4A, 0x3A, 0x49, 0x3B, 0x48, 0xFF, 0xF7, 0x34, 0xFD, 0x3A, 0x48, 0x8F, 0x22, 0x06, 0x21, 0xFF, 0xF7, -0x2F, 0xFD, 0x66, 0xE6, 0x38, 0x49, 0x39, 0x48, 0x4F, 0xF0, 0xFF, 0x32, 0xFF, 0xF7, 0x28, 0xFD, 0x4F, 0xF0, 0xFF, 0x32, -0x36, 0x48, 0x4F, 0xF0, 0x02, 0x11, 0xFF, 0xF7, 0x21, 0xFD, 0x35, 0x49, 0x35, 0x48, 0xFF, 0xF7, 0xF5, 0xFC, 0x22, 0x46, -0x21, 0x46, 0x34, 0x48, 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, 0x16, 0xBD, 0x32, 0x48, 0x0F, 0x22, 0x01, 0x21, 0xFF, 0xF7, -0x11, 0xFD, 0x02, 0x22, 0x11, 0x46, 0x30, 0x48, 0xFF, 0xF7, 0x0C, 0xFD, 0x02, 0x22, 0x11, 0x46, 0x2E, 0x48, 0xFF, 0xF7, -0x07, 0xFD, 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, 0x2A, 0x48, 0xFF, 0xF7, 0x01, 0xFD, 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, -0x28, 0x48, 0xFF, 0xF7, 0xFB, 0xFC, 0x02, 0x22, 0x11, 0x46, 0x27, 0x48, 0xFF, 0xF7, 0xF6, 0xFC, 0x25, 0x48, 0x4F, 0xF4, -0x00, 0x52, 0x00, 0x21, 0xFF, 0xF7, 0xF0, 0xFC, 0x64, 0xE6, 0x23, 0x4B, 0x0F, 0x49, 0x1A, 0x6D, 0x22, 0x4F, 0x42, 0xF4, -0x80, 0x22, 0x1A, 0x65, 0x0A, 0x69, 0x22, 0xF0, 0x80, 0x02, 0x0A, 0x61, 0x5A, 0x6A, 0x22, 0xF0, 0xFF, 0x02, 0x42, 0xF0, -0xDF, 0x02, 0x5A, 0x62, 0x5A, 0x6A, 0x22, 0xF4, 0x7F, 0x42, 0x42, 0xF4, 0x5F, 0x42, 0x5A, 0x62, 0x03, 0xF0, 0x48, 0xFA, -0xCC, 0xE5, 0x3B, 0x46, 0x49, 0x46, 0x1D, 0xE7, 0x4C, 0x36, 0x17, 0x00, 0xE0, 0x50, 0x34, 0x40, 0x00, 0x00, 0x50, 0x40, -0xC0, 0x3F, 0x00, 0x40, 0x40, 0x12, 0x00, 0x40, 0x08, 0x88, 0x01, 0x50, 0x04, 0x91, 0x01, 0x50, 0xE0, 0x01, 0x00, 0x22, -0xC0, 0x00, 0x00, 0x02, 0x08, 0x91, 0x01, 0x50, 0x00, 0x91, 0x01, 0x50, 0x00, 0x01, 0x00, 0x03, 0x0C, 0x80, 0x01, 0x50, -0x18, 0x80, 0x01, 0x50, 0x0A, 0x33, 0x41, 0x01, 0x38, 0x91, 0x01, 0x50, 0x04, 0x00, 0x01, 0x50, 0x04, 0x20, 0x01, 0x50, -0x04, 0x10, 0x01, 0x50, 0x08, 0x10, 0x01, 0x50, 0x00, 0x10, 0x01, 0x50, 0x00, 0x60, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x10, 0x4B, 0x11, 0x4A, 0x19, 0x68, 0x21, 0xF4, 0x78, 0x11, 0x41, 0xF4, 0x50, 0x11, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF4, -0x78, 0x11, 0x41, 0xF4, 0xA0, 0x11, 0x19, 0x60, 0x11, 0x69, 0x18, 0x68, 0x20, 0xF4, 0x78, 0x10, 0x40, 0xF4, 0x50, 0x10, -0x32, 0x31, 0x18, 0x60, 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x03, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x78, 0x13, -0x43, 0xF4, 0x00, 0x13, 0x13, 0x60, 0x70, 0x47, 0x58, 0x40, 0x34, 0x40, 0x00, 0x10, 0x50, 0x40, 0x1E, 0x49, 0x1F, 0x4A, -0x0B, 0x68, 0x43, 0xF4, 0x00, 0x13, 0x10, 0xB4, 0x0B, 0x60, 0x13, 0x68, 0x59, 0x07, 0x08, 0xD4, 0x32, 0x23, 0x00, 0xBF, -0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x59, 0x07, 0xF6, 0xD5, 0x15, 0x49, 0x15, 0x4A, 0x0B, 0x68, -0x43, 0xF4, 0xC0, 0x23, 0x0B, 0x60, 0x13, 0x68, 0x9B, 0x07, 0x08, 0xD4, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, -0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x9B, 0x07, 0xF6, 0xD5, 0x0E, 0x4C, 0x0E, 0x48, 0x23, 0x68, 0x0E, 0x4A, 0x0F, 0x49, -0x43, 0xF4, 0x00, 0x33, 0x23, 0x60, 0x03, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0x43, 0xF0, 0x80, 0x73, 0x03, 0x60, 0x13, 0x68, -0x43, 0xF4, 0xA4, 0x63, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x4F, 0xF4, 0x00, 0x50, 0x21, 0xF0, 0xA1, 0xBD, 0x00, 0xBF, -0x58, 0x40, 0x34, 0x40, 0x80, 0x40, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, 0x10, 0x00, 0x34, 0x40, 0x30, 0x20, 0x34, 0x40, -0x9C, 0x79, 0x15, 0x00, 0x10, 0xB5, 0x10, 0x4C, 0x10, 0x48, 0x23, 0x68, 0x10, 0x49, 0x11, 0x4A, 0x23, 0xF4, 0x05, 0x43, -0x23, 0xF0, 0xEC, 0x03, 0x23, 0x60, 0x03, 0x68, 0x23, 0xF4, 0x00, 0x33, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x73, -0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xC0, 0x23, 0x0A, 0x20, 0x13, 0x60, 0xFD, 0xF7, 0xD6, 0xFC, 0xBD, 0xE8, 0x10, 0x40, -0x06, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x21, 0xF0, 0x73, 0xBD, 0x00, 0xBF, 0x30, 0x20, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, -0x10, 0x00, 0x34, 0x40, 0x58, 0x40, 0x34, 0x40, 0xB8, 0x79, 0x15, 0x00, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, -0x00, 0x2B, 0xFA, 0xD1, 0x19, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, -0xFA, 0xD1, 0x16, 0x4A, 0x13, 0x68, 0xDB, 0x07, 0x11, 0xD4, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, -0xFA, 0xD1, 0x13, 0x68, 0xDB, 0x07, 0xF6, 0xD5, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, -0x13, 0x68, 0xDB, 0x07, 0xED, 0xD5, 0x0B, 0x4B, 0x1A, 0x68, 0x53, 0x0C, 0x00, 0x2A, 0xBC, 0xBF, 0x6F, 0xEA, 0x43, 0x43, -0x6F, 0xEA, 0x53, 0x43, 0x03, 0x60, 0xC2, 0xF3, 0x4E, 0x03, 0x12, 0x04, 0x44, 0xBF, 0x6F, 0xEA, 0x43, 0x43, 0x6F, 0xEA, -0x53, 0x43, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x84, 0x21, 0x34, 0x40, 0x00, 0x22, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x41, -0x2A, 0x4F, 0x2B, 0x4D, 0x3B, 0x68, 0x2B, 0x4A, 0x23, 0xF4, 0x7F, 0x53, 0x3B, 0x60, 0x2B, 0x68, 0x43, 0xF4, 0x80, 0x63, -0x2B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x01, 0x20, 0xFD, 0xF7, 0x72, 0xFC, 0x00, 0x24, 0x26, 0x46, -0x4F, 0xF0, 0x07, 0x08, 0x02, 0x20, 0xFD, 0xF7, 0x6B, 0xFC, 0x2B, 0x68, 0xDA, 0x05, 0x54, 0xBF, 0x01, 0x36, 0x06, 0xF1, -0xFF, 0x36, 0x76, 0xB2, 0x1B, 0x06, 0x3B, 0x68, 0x54, 0xBF, 0x01, 0x34, 0x04, 0xF1, 0xFF, 0x34, 0x00, 0x2E, 0x23, 0xF4, -0x7F, 0x53, 0xDC, 0xBF, 0x70, 0x42, 0x43, 0xEA, 0x80, 0x23, 0x64, 0xB2, 0xD4, 0xBF, 0x43, 0xF4, 0x00, 0x53, 0x43, 0xEA, -0x86, 0x23, 0x00, 0x2C, 0xDC, 0xBF, 0x60, 0x42, 0x43, 0xEA, 0x80, 0x13, 0x08, 0xF1, 0xFF, 0x32, 0xCC, 0xBF, 0x43, 0xEA, -0x84, 0x13, 0x43, 0xF4, 0x00, 0x73, 0x12, 0xF0, 0xFF, 0x08, 0x3B, 0x60, 0xD2, 0xD1, 0x0A, 0x48, 0x0A, 0x49, 0x02, 0x68, -0x22, 0xF4, 0x80, 0x62, 0x02, 0x60, 0x0A, 0x68, 0xC3, 0xF3, 0x83, 0x10, 0x22, 0xF0, 0x40, 0x02, 0xC3, 0xF3, 0x83, 0x23, -0x0A, 0x60, 0x43, 0xEA, 0x00, 0x10, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x50, 0x40, 0x34, 0x40, 0x14, 0x40, 0x34, 0x40, -0x5C, 0x40, 0x34, 0x40, 0x01, 0x28, 0x15, 0xD0, 0x02, 0x28, 0x05, 0xD0, 0x4B, 0x78, 0x10, 0x2B, 0x19, 0xD8, 0x30, 0x23, -0x8B, 0x70, 0x70, 0x47, 0xD2, 0xE9, 0x00, 0x32, 0x00, 0x2B, 0x24, 0xDD, 0x00, 0x2A, 0x37, 0xDB, 0xB3, 0xEB, 0x42, 0x0F, -0x0B, 0x78, 0xCC, 0xBF, 0x10, 0x3B, 0x18, 0x3B, 0x4B, 0x70, 0x70, 0x47, 0x13, 0x68, 0xB3, 0xF5, 0x00, 0x5F, 0x10, 0xDA, -0x00, 0x2B, 0x1A, 0xDD, 0x40, 0x23, 0x0B, 0x70, 0x70, 0x47, 0x30, 0x2B, 0x0C, 0xD9, 0x60, 0x2B, 0x1A, 0xD8, 0x92, 0x68, -0x00, 0x2A, 0x28, 0xDB, 0x60, 0x2B, 0xDC, 0xD1, 0x20, 0x23, 0x8B, 0x70, 0x70, 0x47, 0x20, 0x23, 0x0B, 0x70, 0x70, 0x47, -0x18, 0x23, 0x8B, 0x70, 0x70, 0x47, 0x00, 0x2A, 0x1E, 0xDD, 0x0B, 0x78, 0x20, 0x3B, 0x4B, 0x70, 0x70, 0x47, 0x13, 0xF5, -0x00, 0x5F, 0xD4, 0xBF, 0xE0, 0x23, 0xC0, 0x23, 0x0B, 0x70, 0x70, 0x47, 0xC0, 0x2B, 0x09, 0xD8, 0x92, 0x68, 0x00, 0x2A, -0x19, 0xDD, 0x60, 0x23, 0x8B, 0x70, 0x70, 0x47, 0x0B, 0x78, 0x20, 0x33, 0x4B, 0x70, 0x70, 0x47, 0xD8, 0x2B, 0x0D, 0xD8, -0xE8, 0x23, 0x8B, 0x70, 0x70, 0x47, 0xA0, 0x23, 0x8B, 0x70, 0x70, 0x47, 0xB3, 0xEB, 0x42, 0x0F, 0x0B, 0x78, 0xB4, 0xBF, -0x10, 0x33, 0x18, 0x33, 0x4B, 0x70, 0x70, 0x47, 0xD0, 0x23, 0x8B, 0x70, 0x70, 0x47, 0xA0, 0x2B, 0xFA, 0xD1, 0xE0, 0x23, -0x8B, 0x70, 0x70, 0x47, 0x01, 0x28, 0x1D, 0xD0, 0x02, 0x28, 0x08, 0xD0, 0x09, 0x78, 0x01, 0x39, 0x05, 0x29, 0x69, 0xD8, -0xDF, 0xE8, 0x01, 0xF0, 0x3C, 0x42, 0x39, 0x33, 0x2D, 0x2A, 0x10, 0xB4, 0x1C, 0x68, 0xB4, 0xF5, 0x00, 0x5F, 0x19, 0xDA, -0x00, 0x2C, 0x4A, 0xDD, 0x5B, 0x68, 0x00, 0x2B, 0x13, 0x78, 0xAA, 0xBF, 0x03, 0x20, 0x10, 0x33, 0x10, 0x3B, 0x53, 0x70, -0x08, 0x70, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x1B, 0x68, 0xB3, 0xF5, 0x00, 0x5F, 0x04, 0xDA, 0x00, 0x2B, 0x2B, 0xDD, -0x50, 0x23, 0x13, 0x70, 0x70, 0x47, 0x30, 0x23, 0x13, 0x70, 0x70, 0x47, 0x13, 0x78, 0x01, 0x20, 0x10, 0x33, 0x53, 0x70, -0x08, 0x70, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0xC8, 0x23, 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, 0x00, 0x2B, 0x21, 0xDD, -0x70, 0x23, 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, 0x00, 0x2B, 0x18, 0xDD, 0x90, 0x23, 0x93, 0x70, 0x70, 0x47, 0x38, 0x23, -0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, 0x00, 0x2B, 0xF0, 0xDD, 0x20, 0x23, 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, 0x00, 0x2B, -0xF0, 0xDD, 0x40, 0x23, 0x93, 0x70, 0x70, 0x47, 0x13, 0xF5, 0x00, 0x5F, 0xD4, 0xBF, 0xD0, 0x23, 0xB0, 0x23, 0x13, 0x70, -0x70, 0x47, 0xE0, 0x23, 0x93, 0x70, 0x70, 0x47, 0xC0, 0x23, 0x93, 0x70, 0x70, 0x47, 0x14, 0xF5, 0x00, 0x5F, 0x05, 0xDC, -0x13, 0x78, 0x04, 0x20, 0x10, 0x3B, 0x53, 0x70, 0x08, 0x70, 0xB4, 0xE7, 0x5B, 0x68, 0x00, 0x2B, 0x13, 0x78, 0xCC, 0xBF, -0x05, 0x20, 0x06, 0x20, 0x10, 0x3B, 0x53, 0x70, 0x08, 0x70, 0xAA, 0xE7, 0x88, 0x23, 0x93, 0x70, 0x70, 0x47, 0x00, 0xBF, -0x30, 0xB4, 0x0F, 0x29, 0x15, 0x46, 0x1C, 0x46, 0x02, 0x9A, 0x03, 0xD0, 0x30, 0xBC, 0x19, 0x46, 0xFF, 0xF7, 0x1C, 0xBF, -0x13, 0x46, 0x29, 0x46, 0x22, 0x46, 0x30, 0xBC, 0xFF, 0xF7, 0x7A, 0xBF, 0x70, 0xB4, 0x50, 0xEA, 0x01, 0x04, 0x02, 0xD1, -0x70, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x08, 0x18, 0x18, 0xBF, 0x00, 0x21, 0x03, 0xD1, 0x20, 0xE0, 0xE9, 0xB2, 0x81, 0x42, -0x1D, 0xDA, 0x53, 0xF8, 0x21, 0x40, 0x94, 0x42, 0x01, 0xF1, 0x01, 0x05, 0x03, 0xEB, 0x81, 0x06, 0xF4, 0xDC, 0xC0, 0xB2, -0x88, 0x42, 0x0F, 0xD9, 0x44, 0x1E, 0x61, 0x1A, 0x1C, 0x1F, 0xC9, 0xB2, 0x04, 0xEB, 0x80, 0x04, 0xA4, 0xEB, 0x81, 0x04, -0x03, 0xEB, 0x80, 0x03, 0x53, 0xF8, 0x04, 0x1C, 0x43, 0xF8, 0x04, 0x19, 0xA3, 0x42, 0xF9, 0xD1, 0x32, 0x60, 0x70, 0xBC, -0x70, 0x47, 0x70, 0xBC, 0x43, 0xF8, 0x20, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x00, 0xF1, 0xFF, 0x3C, -0x85, 0xB0, 0xCC, 0xF3, 0x47, 0x0C, 0x4F, 0xF0, 0x80, 0x34, 0x48, 0xF2, 0x80, 0x03, 0x01, 0x28, 0xCD, 0xE9, 0x01, 0xC4, -0xAD, 0xF8, 0x0C, 0x30, 0x40, 0xF2, 0x83, 0x80, 0x80, 0x24, 0xA2, 0x46, 0x16, 0x46, 0x00, 0x25, 0x01, 0x23, 0x43, 0xF2, -0xB0, 0x69, 0x8E, 0x46, 0x00, 0x92, 0x18, 0xE0, 0x80, 0x2C, 0x04, 0xBF, 0x04, 0xAA, 0x02, 0xEB, 0x45, 0x01, 0x4F, 0xEA, -0x45, 0x07, 0x04, 0xAA, 0x17, 0x44, 0x04, 0xBF, 0x03, 0xF1, 0xFF, 0x34, 0x01, 0xF8, 0x08, 0x4C, 0x07, 0xF8, 0x07, 0x3C, -0x01, 0x33, 0xDB, 0xB2, 0x98, 0x42, 0x22, 0xD0, 0x04, 0xAA, 0x02, 0xEB, 0x45, 0x01, 0x11, 0xF8, 0x08, 0x4C, 0x37, 0x68, -0x56, 0xF8, 0x04, 0x1F, 0x7F, 0x1A, 0x77, 0x45, 0xE0, 0xDD, 0x80, 0x2C, 0xEE, 0xD0, 0x00, 0x9A, 0x52, 0xF8, 0x24, 0x10, -0x49, 0x45, 0x4F, 0xEA, 0x45, 0x07, 0x04, 0xAA, 0x55, 0xDD, 0x02, 0xEB, 0x45, 0x01, 0x11, 0xF8, 0x07, 0x8C, 0x61, 0x46, -0x0C, 0x44, 0xA0, 0x45, 0x61, 0xDB, 0x01, 0x33, 0xDB, 0xB2, 0x01, 0x35, 0x98, 0x42, 0xED, 0xB2, 0xDC, 0xD1, 0x02, 0x2D, -0x00, 0x9A, 0x68, 0xD9, 0x9D, 0xF8, 0x08, 0x10, 0x80, 0x29, 0x3A, 0xD0, 0x9D, 0xF8, 0x09, 0x30, 0x52, 0xF8, 0x21, 0x40, -0x52, 0xF8, 0x23, 0x50, 0x58, 0x1C, 0x40, 0x1A, 0x64, 0x1B, 0xC0, 0xB2, 0x02, 0xAD, 0x94, 0xFB, 0xF0, 0xF4, 0x01, 0x27, -0xA4, 0xB2, 0x00, 0x26, 0x95, 0xF8, 0x02, 0xE0, 0xBE, 0xF1, 0x80, 0x0F, 0x5F, 0xFA, 0x87, 0xFC, 0x16, 0xD0, 0x95, 0xF8, -0x03, 0x80, 0x52, 0xF8, 0x2E, 0x30, 0x08, 0xF1, 0x01, 0x01, 0xA1, 0xEB, 0x0E, 0x01, 0xC9, 0xB2, 0x52, 0xF8, 0x28, 0xE0, -0x81, 0x42, 0xA3, 0xEB, 0x0E, 0x03, 0x93, 0xFB, 0xF1, 0xF3, 0x9B, 0xB2, 0x32, 0xD8, 0x61, 0xD0, 0x02, 0x2F, 0x05, 0xF1, -0x02, 0x05, 0x34, 0xD1, 0x04, 0xAB, 0x03, 0xEB, 0x46, 0x06, 0x16, 0xF8, 0x08, 0x1C, 0x16, 0xF8, 0x07, 0x3C, 0x5B, 0x1A, -0x01, 0x33, 0x01, 0xEB, 0x63, 0x03, 0xDB, 0xB2, 0x01, 0x93, 0x01, 0x9B, 0x52, 0xF8, 0x23, 0x00, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x02, 0xEB, 0x45, 0x08, 0x00, 0x9A, 0x18, 0xF8, 0x07, 0x8C, 0x52, 0xF8, 0x28, 0xB0, 0x25, 0x4A, 0x93, 0x45, -0xA3, 0xDB, 0xB1, 0xF5, 0x7A, 0x7F, 0x02, 0xDA, 0x23, 0x4A, 0x93, 0x45, 0x9D, 0xDA, 0x02, 0x21, 0x0C, 0x44, 0xA0, 0x45, -0x9D, 0xDA, 0x04, 0xAA, 0x17, 0x44, 0x07, 0xF8, 0x08, 0xAC, 0x07, 0xF8, 0x07, 0xAC, 0x75, 0xE7, 0x02, 0x2F, 0x1C, 0x46, -0x08, 0x46, 0x66, 0x46, 0x05, 0xF1, 0x02, 0x05, 0xCA, 0xD0, 0x02, 0x27, 0xAA, 0xE7, 0x04, 0xAB, 0x03, 0xEB, 0x45, 0x01, -0x6D, 0x00, 0x11, 0xF8, 0x08, 0x3C, 0x80, 0x2B, 0x8E, 0xD0, 0x52, 0xF8, 0x23, 0x00, 0x11, 0xF8, 0x07, 0x1C, 0x43, 0xF2, -0xB0, 0x64, 0xA0, 0x42, 0x0A, 0xDC, 0x0F, 0x4E, 0x52, 0xF8, 0x21, 0x40, 0xB4, 0x42, 0x05, 0xDB, 0xB0, 0xF5, 0x7A, 0x7F, -0x13, 0xDA, 0x14, 0xF5, 0x7A, 0x7F, 0x10, 0xDD, 0x9C, 0x44, 0x61, 0x45, 0xBF, 0xF6, 0x78, 0xAF, 0x04, 0xAB, 0x1D, 0x44, -0x80, 0x23, 0x05, 0xF8, 0x08, 0x3C, 0x05, 0xF8, 0x07, 0x3C, 0x6F, 0xE7, 0xA3, 0x42, 0x9B, 0xD2, 0x1C, 0x46, 0x66, 0x46, -0x98, 0xE7, 0x4F, 0xF0, 0x02, 0x0C, 0xEB, 0xE7, 0x50, 0xC9, 0xFF, 0xFF, 0x19, 0xFC, 0xFF, 0xFF, 0xD0, 0xED, 0x00, 0x7A, -0x90, 0xED, 0x01, 0x7A, 0xF4, 0xEE, 0xC7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xD5, 0x91, 0xED, 0x00, 0x6A, 0xD1, 0xED, -0x01, 0x6A, 0xB4, 0xEE, 0xE6, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x5E, 0xDA, 0xF4, 0xEE, 0xC7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, -0x08, 0xDD, 0x91, 0xED, 0x00, 0x6A, 0xD1, 0xED, 0x01, 0x6A, 0xB4, 0xEE, 0xE6, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x50, 0xD9, -0xD0, 0xED, 0x02, 0x6A, 0xF4, 0xEE, 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xD5, 0xD1, 0xED, 0x00, 0x5A, 0x91, 0xED, -0x02, 0x6A, 0xF4, 0xEE, 0xC6, 0x5A, 0xF1, 0xEE, 0x10, 0xFA, 0x40, 0xDA, 0xF4, 0xEE, 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, -0x32, 0xDC, 0xB4, 0xEE, 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xD5, 0x91, 0xED, 0x01, 0x6A, 0xD1, 0xED, 0x02, 0x7A, -0xB4, 0xEE, 0xE7, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x2D, 0xDA, 0xB4, 0xEE, 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xDD, -0x91, 0xED, 0x01, 0x7A, 0xD1, 0xED, 0x02, 0x7A, 0xB4, 0xEE, 0xE7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x1F, 0xD9, 0xD1, 0xED, -0x00, 0x7A, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x1A, 0xDD, 0x91, 0xED, 0x01, 0x7A, 0xB5, 0xEE, 0xC0, 0x7A, -0xF1, 0xEE, 0x10, 0xFA, 0x13, 0xDD, 0x91, 0xED, 0x02, 0x7A, 0xB5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x0C, 0xDD, -0x01, 0x20, 0x70, 0x47, 0x91, 0xED, 0x00, 0x6A, 0xD1, 0xED, 0x02, 0x7A, 0xB4, 0xEE, 0xE7, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, -0xC3, 0xD8, 0x02, 0x20, 0x70, 0x47, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x01, 0xD4, 0x00, 0x20, 0x70, 0x47, -0xD1, 0xED, 0x01, 0x7A, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0xF6, 0xD5, 0xD1, 0xED, 0x02, 0x7A, 0xF5, 0xEE, -0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x4C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x28, 0x00, 0xF0, -0xC7, 0x80, 0x2D, 0xE9, 0xF0, 0x47, 0x00, 0x22, 0xA1, 0xF1, 0x02, 0x08, 0x82, 0xB0, 0x44, 0x46, 0x17, 0x46, 0x94, 0x46, -0x10, 0x46, 0x4F, 0xF0, 0x01, 0x0E, 0x02, 0xE0, 0x05, 0x2E, 0x11, 0xD0, 0x01, 0x32, 0x34, 0xF9, 0x02, 0x5F, 0x0E, 0xFA, -0x02, 0xF3, 0x00, 0x2D, 0xD6, 0xB2, 0x43, 0xEA, 0x00, 0x03, 0xF3, 0xDA, 0x01, 0x2A, 0xD8, 0xB2, 0x40, 0xF2, 0x83, 0x80, -0x01, 0x37, 0x05, 0x2E, 0xFF, 0xB2, 0xED, 0xD1, 0x04, 0x2F, 0x00, 0xF0, 0x81, 0x80, 0x02, 0x2F, 0x00, 0xF2, 0x81, 0x80, -0xBC, 0xF1, 0x00, 0x0F, 0x0B, 0xD1, 0xB1, 0xF9, 0x02, 0x30, 0xB1, 0xF9, 0x00, 0x20, 0x03, 0xF1, 0x09, 0x04, 0x94, 0x42, -0x02, 0xDB, 0x09, 0x3B, 0x9A, 0x42, 0x00, 0xDA, 0x4A, 0x80, 0xB1, 0xF9, 0x04, 0x20, 0xB1, 0xF9, 0x06, 0x30, 0x03, 0x24, -0x40, 0xF2, 0x04, 0x55, 0x9A, 0x42, 0x8D, 0xF8, 0x01, 0x40, 0xAD, 0xF8, 0x02, 0x50, 0xC0, 0xF2, 0x8E, 0x80, 0xB1, 0xF9, -0x08, 0x20, 0xB1, 0xF9, 0x0A, 0x30, 0x9A, 0x42, 0x25, 0x46, 0x4F, 0xF0, 0x06, 0x09, 0x4F, 0xF0, 0x04, 0x07, 0x4F, 0xF0, -0x02, 0x04, 0x80, 0xF2, 0x8E, 0x80, 0x40, 0xF2, 0x05, 0x43, 0xAD, 0xF8, 0x02, 0x30, 0x4F, 0xF0, 0x05, 0x0E, 0x4F, 0xF0, -0x08, 0x08, 0x04, 0x26, 0x0A, 0x22, 0xCB, 0x5F, 0x8F, 0x5E, 0xBB, 0x42, 0x07, 0xDA, 0xBA, 0x46, 0x72, 0x46, 0x8D, 0xF8, -0x02, 0x40, 0x1F, 0x46, 0xA6, 0x46, 0x53, 0x46, 0x14, 0x46, 0x31, 0xF9, 0x09, 0x20, 0x31, 0xF9, 0x08, 0x80, 0x42, 0x45, -0x05, 0xDA, 0x8D, 0xF8, 0x03, 0x50, 0x8D, 0xF8, 0x01, 0x60, 0x42, 0x46, 0x35, 0x46, 0x97, 0x42, 0x05, 0xDD, 0x8D, 0xF8, -0x02, 0x50, 0x8D, 0xF8, 0x01, 0xE0, 0x3A, 0x46, 0x75, 0x46, 0x9D, 0xF8, 0x02, 0xE0, 0x9D, 0xF8, 0x01, 0x60, 0x31, 0xF9, -0x1E, 0x70, 0x31, 0xF9, 0x16, 0x80, 0x07, 0x32, 0xFE, 0x1D, 0x93, 0x42, 0xD4, 0xBF, 0x04, 0x23, 0x00, 0x23, 0xB0, 0x45, -0x9D, 0xF8, 0x03, 0x60, 0x31, 0xF9, 0x16, 0x20, 0x02, 0xF1, 0x07, 0x02, 0xD8, 0xBF, 0x43, 0xF0, 0x02, 0x03, 0xBA, 0x42, -0xA8, 0xBF, 0x43, 0xF0, 0x01, 0x03, 0x06, 0x2B, 0x4E, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x4A, 0xA9, 0xA1, 0x9B, 0x93, 0x4A, -0xB1, 0x00, 0x0C, 0xF1, 0x01, 0x0C, 0x5F, 0xFA, 0x8C, 0xFC, 0x69, 0xE7, 0xBC, 0xF1, 0x02, 0x0F, 0x78, 0xD0, 0x00, 0x23, -0x1C, 0x46, 0x1A, 0x46, 0x40, 0xFA, 0x03, 0xF5, 0xEF, 0x07, 0x05, 0xD4, 0x31, 0xF8, 0x13, 0x50, 0x01, 0x34, 0x2A, 0x44, -0xE4, 0xB2, 0x12, 0xB2, 0x01, 0x33, 0x06, 0x2B, 0xF2, 0xD1, 0x92, 0xFB, 0xF4, 0xF2, 0x00, 0x23, 0x40, 0xFA, 0x03, 0xF4, -0xE6, 0x07, 0x48, 0xBF, 0x21, 0xF8, 0x13, 0x20, 0x01, 0x33, 0x06, 0x2B, 0xF6, 0xD1, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, -0x8B, 0x1E, 0x80, 0x20, 0x0A, 0x31, 0x33, 0xF9, 0x02, 0x2F, 0x00, 0x2A, 0xB8, 0xBF, 0x18, 0x80, 0x99, 0x42, 0xF8, 0xD1, -0x70, 0x47, 0xB1, 0xF9, 0x08, 0x20, 0xB1, 0xF9, 0x0A, 0x30, 0x02, 0x25, 0x9A, 0x42, 0x8D, 0xF8, 0x01, 0x50, 0x4F, 0xF0, -0x04, 0x09, 0x4F, 0xF0, 0x06, 0x07, 0xFF, 0xF6, 0x72, 0xAF, 0x4F, 0xF0, 0x0A, 0x08, 0x08, 0x22, 0x4F, 0xF0, 0x04, 0x0E, -0x75, 0xE7, 0xBC, 0xF1, 0x00, 0x0F, 0x69, 0xD0, 0x00, 0x24, 0x22, 0x46, 0x02, 0x23, 0x40, 0xFA, 0x03, 0xF5, 0xED, 0x07, -0x05, 0xD4, 0x31, 0xF8, 0x13, 0x50, 0x01, 0x34, 0x2A, 0x44, 0xE4, 0xB2, 0x12, 0xB2, 0x01, 0x33, 0x06, 0x2B, 0xF2, 0xD1, -0x64, 0xB9, 0xC3, 0x07, 0x03, 0xD4, 0x0B, 0x88, 0x1A, 0x44, 0x12, 0xB2, 0x01, 0x24, 0x87, 0x07, 0x04, 0xD4, 0x4B, 0x88, -0x01, 0x34, 0x13, 0x44, 0xE4, 0xB2, 0x1A, 0xB2, 0x00, 0x23, 0x92, 0xFB, 0xF4, 0xF4, 0x00, 0xE0, 0x01, 0x33, 0x40, 0xFA, -0x03, 0xF2, 0xD6, 0x07, 0xDD, 0xB2, 0x03, 0xD5, 0x01, 0x2B, 0x14, 0xD9, 0x21, 0xF8, 0x13, 0x40, 0x05, 0x2D, 0xF3, 0xD1, -0xBC, 0xF1, 0x01, 0x0F, 0xA9, 0xD1, 0xC2, 0x07, 0x0F, 0xD4, 0x83, 0x07, 0xA5, 0xD5, 0x0B, 0x88, 0x4B, 0x80, 0xA2, 0xE7, -0x0A, 0x31, 0x80, 0x23, 0x28, 0xF8, 0x02, 0x3F, 0x88, 0x45, 0xFB, 0xD1, 0x9B, 0xE7, 0xBC, 0xF1, 0x02, 0x0F, 0xDF, 0xD1, -0xE6, 0xE7, 0x4B, 0x88, 0x0B, 0x80, 0x94, 0xE7, 0x01, 0x22, 0x02, 0xFA, 0x0E, 0xF3, 0xB2, 0x40, 0x13, 0x43, 0x18, 0x43, -0xC0, 0xB2, 0xB1, 0xE7, 0x01, 0x23, 0x03, 0xFA, 0x04, 0xF4, 0x20, 0x43, 0xC0, 0xB2, 0xAB, 0xE7, 0x01, 0x23, 0x03, 0xFA, -0x06, 0xF6, 0x30, 0x43, 0xA3, 0x40, 0x18, 0x43, 0xC0, 0xB2, 0xA3, 0xE7, 0x01, 0x23, 0x03, 0xFA, 0x04, 0xF4, 0x20, 0x43, -0xAB, 0x40, 0x18, 0x43, 0xC0, 0xB2, 0x9B, 0xE7, 0x01, 0x23, 0x03, 0xFA, 0x06, 0xF6, 0x30, 0x43, 0xC0, 0xB2, 0x95, 0xE7, -0x40, 0xF0, 0x3C, 0x00, 0x92, 0xE7, 0x00, 0xBF, 0xF0, 0xB5, 0xD1, 0xED, 0x01, 0x6A, 0x91, 0xED, 0x00, 0x7A, 0x2D, 0xED, -0x08, 0x8B, 0xF4, 0xEE, 0xC7, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x83, 0xB0, 0x0C, 0x46, 0x07, 0x46, 0x15, 0x46, 0x1E, 0x46, -0x05, 0xDC, 0xF0, 0xEE, 0x66, 0x7A, 0xF0, 0xEE, 0x47, 0x6A, 0xB0, 0xEE, 0x67, 0x7A, 0xD4, 0xED, 0x02, 0x7A, 0xF4, 0xEE, -0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xDC, 0xF4, 0xEE, 0xC7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x48, 0xBF, 0xB0, 0xEE, -0x67, 0x7A, 0xF0, 0xEE, 0x66, 0x7A, 0x77, 0xEE, 0xC7, 0x7A, 0xB0, 0xEE, 0x08, 0xBA, 0xFC, 0xEE, 0xE7, 0x7A, 0x17, 0xEE, -0x90, 0x3A, 0xB3, 0x70, 0xD4, 0xED, 0x00, 0x8A, 0x94, 0xED, 0x01, 0xAA, 0xD4, 0xED, 0x02, 0x9A, 0x6A, 0xEE, 0x0A, 0x7A, -0x28, 0xEE, 0xA8, 0x6A, 0x69, 0xEE, 0xA9, 0xAA, 0x36, 0xEE, 0x27, 0x6A, 0x38, 0xEE, 0x8A, 0x7A, 0x76, 0xEE, 0x2A, 0xAA, -0x37, 0xEE, 0x29, 0x9A, 0x2A, 0xEE, 0x8B, 0xBA, 0x69, 0xEE, 0x09, 0x7A, 0x3B, 0xEE, 0x67, 0xBA, 0xB5, 0xEE, 0xC0, 0xBA, -0xF1, 0xEE, 0x10, 0xFA, 0x40, 0xF3, 0xD0, 0x80, 0x1B, 0xEE, 0x10, 0x0A, 0x33, 0xF0, 0x44, 0xF8, 0x6F, 0xA3, 0xD3, 0xE9, -0x00, 0x23, 0x33, 0xF0, 0x09, 0xFB, 0x80, 0xB1, 0x9F, 0xED, 0x6E, 0xBA, 0x33, 0x78, 0x6E, 0x49, 0x43, 0xF0, 0x04, 0x03, -0x33, 0x70, 0x4F, 0xF4, 0x00, 0x50, 0x21, 0xF0, 0x73, 0xF8, 0xD4, 0xED, 0x00, 0x8A, 0x94, 0xED, 0x01, 0xAA, 0xD4, 0xED, -0x02, 0x9A, 0x95, 0xED, 0x00, 0x4A, 0xD5, 0xED, 0x01, 0x4A, 0x95, 0xED, 0x02, 0x5A, 0xF7, 0xEE, 0x00, 0x7A, 0x87, 0xEE, -0x8B, 0x6A, 0x0D, 0x2F, 0xF0, 0xEE, 0x08, 0x6A, 0x26, 0xEE, 0x49, 0x7A, 0x66, 0xEE, 0x26, 0x6A, 0x2A, 0xEE, 0x86, 0x6A, -0x66, 0xEE, 0xA8, 0x7A, 0x66, 0xEE, 0x8A, 0x5A, 0x67, 0xEE, 0x28, 0x8A, 0x27, 0xEE, 0x0A, 0xAA, 0x77, 0xEE, 0x87, 0x7A, -0x26, 0xEE, 0xA9, 0x8A, 0x78, 0xEE, 0x86, 0x8A, 0x67, 0xEE, 0x29, 0x9A, 0x75, 0xEE, 0x87, 0x5A, 0x3A, 0xEE, 0x06, 0xAA, -0x38, 0xEE, 0x07, 0x8A, 0x67, 0xEE, 0x84, 0x7A, 0x68, 0xEE, 0x84, 0x8A, 0x79, 0xEE, 0x86, 0x9A, 0x25, 0xEE, 0xA4, 0x7A, -0x2A, 0xEE, 0x24, 0xAA, 0x77, 0xEE, 0x87, 0x7A, 0x78, 0xEE, 0x8A, 0x8A, 0x28, 0xEE, 0x05, 0x8A, 0x69, 0xEE, 0x85, 0x9A, -0x37, 0xEE, 0x88, 0x8A, 0x78, 0xEE, 0xA9, 0x8A, 0x2E, 0xD9, 0xF3, 0xEE, 0x04, 0x7A, 0xB4, 0xEE, 0xE7, 0x8A, 0xF1, 0xEE, -0x10, 0xFA, 0x27, 0xD5, 0x33, 0x78, 0x44, 0x49, 0x43, 0xF0, 0x08, 0x03, 0x33, 0x70, 0x4F, 0xF4, 0x00, 0x50, 0x21, 0xF0, -0x1D, 0xF8, 0xB7, 0xEE, 0x00, 0x8A, 0xF0, 0xEE, 0x00, 0x6A, 0xB1, 0xEE, 0x68, 0x7A, 0xC7, 0xEE, 0x08, 0x7A, 0x9F, 0xED, -0x3D, 0x7A, 0xF4, 0xEE, 0xC7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x21, 0xDC, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, -0x4E, 0xD4, 0xB6, 0xEE, 0x00, 0x7A, 0x77, 0xEE, 0x87, 0x7A, 0xFC, 0xEE, 0xE7, 0x7A, 0xCD, 0xED, 0x01, 0x7A, 0x9D, 0xF8, -0x04, 0x30, 0x12, 0xE0, 0x18, 0xEE, 0x10, 0x0A, 0x32, 0xF0, 0xBA, 0xFF, 0x2A, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x33, 0xF0, -0x7F, 0xFA, 0x00, 0x28, 0xCC, 0xD1, 0x68, 0xEE, 0x08, 0x6A, 0xF7, 0xEE, 0x00, 0x7A, 0x76, 0xEE, 0xA7, 0x6A, 0xD2, 0xE7, -0xFF, 0x23, 0x73, 0x70, 0xD4, 0xED, 0x00, 0x7A, 0x94, 0xED, 0x01, 0x7A, 0xD4, 0xED, 0x02, 0x4A, 0x95, 0xED, 0x00, 0x5A, -0xD5, 0xED, 0x01, 0x5A, 0x95, 0xED, 0x02, 0x6A, 0x68, 0xEE, 0x27, 0x7A, 0x28, 0xEE, 0x07, 0x7A, 0x77, 0xEE, 0xA8, 0x7A, -0x37, 0xEE, 0x28, 0x7A, 0x28, 0xEE, 0x24, 0x8A, 0x77, 0xEE, 0xC5, 0x7A, 0x37, 0xEE, 0x65, 0x7A, 0x38, 0xEE, 0x28, 0x8A, -0x27, 0xEE, 0x07, 0x7A, 0x38, 0xEE, 0x46, 0x8A, 0x67, 0xEE, 0xA7, 0x7A, 0x28, 0xEE, 0x08, 0x8A, 0x77, 0xEE, 0x87, 0x7A, -0x37, 0xEE, 0x88, 0x8A, 0xC8, 0xEE, 0x26, 0x7A, 0xC6, 0xED, 0x01, 0x7A, 0x03, 0xB0, 0xBD, 0xEC, 0x08, 0x8B, 0xF0, 0xBD, -0x00, 0x23, 0xCC, 0xE7, 0xF1, 0xEE, 0x4B, 0x7A, 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, 0x72, 0xFF, 0x06, 0xA3, 0xD3, 0xE9, -0x00, 0x23, 0x33, 0xF0, 0x37, 0xFA, 0x00, 0x28, 0x3F, 0xF4, 0x3D, 0xAF, 0x9F, 0xED, 0x08, 0xBA, 0x2A, 0xE7, 0x00, 0xBF, -0xAF, 0xF3, 0x00, 0x80, 0xF1, 0x68, 0xE3, 0x88, 0xB5, 0xF8, 0xE4, 0x3E, 0x00, 0x50, 0xC3, 0x47, 0xD4, 0x79, 0x15, 0x00, -0x00, 0x7A, 0x15, 0x00, 0x00, 0x00, 0x7F, 0x43, 0xAC, 0xC5, 0x27, 0xB7, 0x2D, 0xE9, 0xF0, 0x47, 0x09, 0x29, 0x8E, 0xB0, -0x88, 0x46, 0x1D, 0x46, 0x70, 0xD9, 0x03, 0x28, 0x6E, 0xD0, 0x4F, 0xF0, 0x86, 0x4A, 0x57, 0x1E, 0x00, 0x26, 0x0D, 0xF1, -0x18, 0x09, 0x00, 0x22, 0x10, 0x46, 0xF1, 0xB2, 0xD3, 0xB2, 0x8B, 0x42, 0x19, 0xD0, 0x00, 0x2B, 0x00, 0xF0, 0xAF, 0x80, -0xBB, 0x5C, 0x07, 0xEE, 0x90, 0x3A, 0x0E, 0xAB, 0xF8, 0xEE, 0x67, 0x7A, 0x03, 0xEB, 0x80, 0x03, 0x43, 0xED, 0x0E, 0x7A, -0x84, 0x00, 0x55, 0xF8, 0x22, 0x30, 0x07, 0xEE, 0x90, 0x3A, 0x0E, 0xAB, 0xF8, 0xEE, 0xE7, 0x7A, 0x1C, 0x44, 0x01, 0x30, -0xC0, 0xB2, 0x44, 0xED, 0x0B, 0x7A, 0x01, 0x32, 0x04, 0x2A, 0xDF, 0xD1, 0x00, 0x23, 0x03, 0xA9, 0x68, 0x46, 0x09, 0xF8, -0x36, 0x30, 0xFF, 0xF7, 0x9F, 0xFC, 0x10, 0xF0, 0x0E, 0x0F, 0x09, 0xF8, 0x36, 0x00, 0x00, 0xF0, 0x95, 0x80, 0x01, 0x36, -0x04, 0x2E, 0xCC, 0xD1, 0x07, 0xAD, 0x00, 0x24, 0x2A, 0x46, 0x23, 0x46, 0x80, 0x21, 0x12, 0xF8, 0x04, 0x0C, 0x00, 0x28, -0x40, 0xF0, 0x82, 0x80, 0x0E, 0xA8, 0x80, 0x29, 0x00, 0xEB, 0xC1, 0x00, 0x00, 0xF0, 0x8A, 0x80, 0x92, 0xED, 0x00, 0x7A, -0x50, 0xED, 0x07, 0x7A, 0xB4, 0xEE, 0x67, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x98, 0xBF, 0x19, 0x46, 0x01, 0x33, 0xDB, 0xB2, -0x04, 0x2B, 0x02, 0xF1, 0x08, 0x02, 0xE4, 0xD1, 0x00, 0x2C, 0x00, 0xF0, 0x84, 0x80, 0x80, 0x29, 0x76, 0xD0, 0x0E, 0xAB, -0x03, 0xEB, 0xC1, 0x00, 0x42, 0x46, 0x10, 0xF8, 0x1F, 0x4C, 0x10, 0xF8, 0x20, 0x3C, 0x55, 0x49, 0x4F, 0xF4, 0x00, 0x50, -0x20, 0xF0, 0x22, 0xFF, 0x20, 0x46, 0x0E, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x13, 0x78, 0xD5, 0xED, 0x00, 0x6A, 0x95, 0xED, -0x01, 0x7A, 0xD5, 0xED, 0x02, 0x7A, 0x05, 0xEE, 0x90, 0x3A, 0x53, 0x78, 0x06, 0xEE, 0x10, 0x3A, 0xF8, 0xEE, 0x65, 0x5A, -0xB8, 0xEE, 0x46, 0x6A, 0xF8, 0xEE, 0xE6, 0x6A, 0xB8, 0xEE, 0xC7, 0x7A, 0xF8, 0xEE, 0xE7, 0x7A, 0x4F, 0xF0, 0x86, 0x42, -0x00, 0x23, 0xB8, 0xF1, 0x09, 0x0F, 0xCD, 0xED, 0x01, 0x5A, 0x8D, 0xED, 0x02, 0x6A, 0xCD, 0xED, 0x03, 0x6A, 0x8D, 0xED, -0x04, 0x7A, 0xCD, 0xED, 0x05, 0x7A, 0x00, 0x92, 0x8D, 0xF8, 0x18, 0x30, 0x16, 0xD8, 0x06, 0xAB, 0x03, 0xAA, 0x69, 0x46, -0x40, 0x46, 0xFF, 0xF7, 0x17, 0xFE, 0x9D, 0xF8, 0x18, 0x30, 0x13, 0xF0, 0x0E, 0x0F, 0x4C, 0xD1, 0x9D, 0xF8, 0x19, 0x40, -0x35, 0x49, 0x42, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xE2, 0xFE, 0x20, 0x46, 0x0E, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, -0x03, 0xA9, 0x68, 0x46, 0xFF, 0xF7, 0x1C, 0xFC, 0x10, 0xF0, 0x0E, 0x0F, 0x8D, 0xF8, 0x18, 0x00, 0x18, 0xBF, 0x03, 0x46, -0x49, 0xD0, 0xC8, 0xF1, 0x09, 0x04, 0x64, 0x01, 0xE6, 0xE7, 0x0E, 0xAB, 0x03, 0xEB, 0x80, 0x03, 0x84, 0x00, 0x43, 0xF8, -0x38, 0xAC, 0x54, 0xE7, 0x06, 0x07, 0x1B, 0xD4, 0x01, 0x28, 0x08, 0xBF, 0x01, 0x24, 0x87, 0xE7, 0x09, 0xEB, 0xC6, 0x03, -0x03, 0xAA, 0x69, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0xE3, 0xFD, 0x62, 0xE7, 0x19, 0x46, 0x7D, 0xE7, 0x00, 0x23, 0x15, 0xF8, -0x04, 0x2C, 0x01, 0x2A, 0x17, 0xD0, 0x01, 0x33, 0xDB, 0xB2, 0x04, 0x2B, 0x05, 0xF1, 0x08, 0x05, 0xF5, 0xD1, 0x80, 0x29, -0x7F, 0xF4, 0x7B, 0xAF, 0x17, 0x49, 0x42, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xA4, 0xFE, 0xC8, 0xF1, 0x09, 0x04, -0x64, 0x01, 0x20, 0x46, 0x0E, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x80, 0x24, 0xB2, 0xE7, 0x0E, 0xAA, 0x80, 0x29, 0x02, 0xEB, -0xC1, 0x02, 0x0A, 0xD0, 0x95, 0xED, 0x00, 0x7A, 0x52, 0xED, 0x07, 0x7A, 0xB4, 0xEE, 0x67, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, -0x98, 0xBF, 0x19, 0x46, 0xD7, 0xE7, 0x19, 0x46, 0xD5, 0xE7, 0x06, 0xAB, 0x03, 0xAA, 0x69, 0x46, 0x40, 0x46, 0xFF, 0xF7, -0xAB, 0xFD, 0x9D, 0xF8, 0x18, 0x30, 0x13, 0xF0, 0x0E, 0x0F, 0x93, 0xD0, 0xA9, 0xE7, 0x00, 0xBF, 0x14, 0x7A, 0x15, 0x00, -0x30, 0x7A, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x9A, 0x4A, 0xDF, 0xF8, 0x8C, 0x82, 0x13, 0x68, 0x2D, 0xED, 0x08, 0x8B, -0x23, 0xF4, 0xFF, 0x43, 0x43, 0xF4, 0xCE, 0x35, 0x8B, 0xB0, 0x43, 0xF4, 0x1D, 0x43, 0x0C, 0x46, 0x45, 0xF4, 0x80, 0x75, -0x01, 0x46, 0x13, 0x60, 0x01, 0x20, 0x15, 0x60, 0x0D, 0x46, 0x03, 0x91, 0xFC, 0xF7, 0xBA, 0xFD, 0xA2, 0x7B, 0x8F, 0x48, -0x02, 0xF0, 0x0F, 0x03, 0x01, 0x68, 0x12, 0x09, 0x9B, 0x02, 0x43, 0xEA, 0x82, 0x13, 0x21, 0xF4, 0x7F, 0x52, 0x13, 0x43, -0x03, 0x60, 0x02, 0x20, 0xFC, 0xF7, 0xAA, 0xFD, 0xAB, 0x6B, 0xC3, 0xF3, 0x07, 0x22, 0x02, 0x92, 0x4F, 0xEA, 0x02, 0x4B, -0xDA, 0xB2, 0x01, 0x92, 0x4F, 0xEA, 0x03, 0x6A, 0x4F, 0xF0, 0x00, 0x09, 0xDD, 0xE9, 0x01, 0x32, 0xB9, 0xF1, 0x00, 0x0F, -0x18, 0xBF, 0x13, 0x46, 0xA3, 0xF1, 0x40, 0x02, 0x12, 0xB2, 0x40, 0x33, 0x5F, 0xFA, 0x89, 0xF1, 0x00, 0x2A, 0xAD, 0xF8, -0x14, 0x20, 0xAD, 0xF8, 0x16, 0x30, 0x00, 0x91, 0xC0, 0xF2, 0xEA, 0x80, 0xFF, 0x2B, 0x01, 0xD9, 0x77, 0x4B, 0x05, 0x93, -0x00, 0x25, 0x2E, 0x46, 0x05, 0x24, 0x48, 0xF2, 0x80, 0x07, 0xBD, 0xF9, 0x14, 0x30, 0x08, 0xA9, 0x06, 0xA8, 0xB9, 0xF1, -0x00, 0x0F, 0x00, 0xF0, 0xC3, 0x80, 0x4A, 0xEA, 0x03, 0x43, 0x3B, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0xFF, 0xF7, 0xAE, 0xF8, -0xBD, 0xF9, 0x16, 0x30, 0x4A, 0xEA, 0x03, 0x43, 0x3B, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0x09, 0xA9, 0x07, 0xA8, 0xFF, 0xF7, -0xA3, 0xF8, 0xDD, 0xE9, 0x06, 0x02, 0xDD, 0xE9, 0x08, 0x13, 0x01, 0x3C, 0x12, 0x1A, 0x5B, 0x1A, 0x14, 0xF0, 0xFF, 0x04, -0x16, 0x44, 0x1D, 0x44, 0xD9, 0xD1, 0x62, 0x4B, 0x83, 0xFB, 0x06, 0x12, 0xF6, 0x17, 0xC6, 0xEB, 0x62, 0x06, 0x07, 0xEE, -0x90, 0x6A, 0x83, 0xFB, 0x05, 0x13, 0xED, 0x17, 0xC5, 0xEB, 0x63, 0x05, 0xB8, 0xEE, 0xE7, 0x7A, 0x07, 0xEE, 0x90, 0x5A, -0xF8, 0xEE, 0xE7, 0x7A, 0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x9D, 0x80, 0x00, 0x9B, 0x01, 0x2B, 0x40, 0xF0, 0x9D, 0x80, -0xC7, 0xEE, 0x27, 0x9A, 0x03, 0x9B, 0x54, 0x49, 0x54, 0x4F, 0x4F, 0xF4, 0x00, 0x50, 0x1E, 0x1F, 0x03, 0xF1, 0x3C, 0x08, -0xB6, 0xEE, 0x00, 0xAA, 0x79, 0xEE, 0x88, 0x9A, 0xF7, 0xEE, 0x00, 0xAA, 0x69, 0xEE, 0x8A, 0x9A, 0x8A, 0xEE, 0xA9, 0x8A, -0xFD, 0xEE, 0xC8, 0x8A, 0x18, 0xEE, 0x90, 0x2A, 0x20, 0xF0, 0xCA, 0xFD, 0xF8, 0xEE, 0xE8, 0x8A, 0xDF, 0xED, 0x49, 0x7A, -0x49, 0x49, 0x38, 0xEE, 0x68, 0x8A, 0x4F, 0xF4, 0x00, 0x50, 0x28, 0xEE, 0x27, 0x8A, 0xFD, 0xEE, 0xC8, 0x7A, 0x17, 0xEE, -0x90, 0x2A, 0x20, 0xF0, 0xB9, 0xFD, 0x69, 0xEE, 0xA9, 0x7A, 0x39, 0xEE, 0xAA, 0xBA, 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, -0x71, 0xFD, 0x40, 0x4B, 0x00, 0x22, 0x32, 0xF0, 0x0F, 0xFC, 0x7A, 0xEE, 0xE9, 0xAA, 0x04, 0x46, 0x0D, 0x46, 0x56, 0xF8, -0x04, 0x3F, 0xC3, 0xF3, 0x07, 0x22, 0x08, 0xEE, 0x90, 0x2A, 0xDB, 0xB2, 0x08, 0xEE, 0x10, 0x3A, 0xF8, 0xEE, 0xE8, 0x8A, -0xB8, 0xEE, 0xC8, 0x8A, 0x68, 0xEE, 0xAA, 0x8A, 0x28, 0xEE, 0x0B, 0x8A, 0x69, 0xEE, 0xA8, 0x7A, 0x78, 0xEE, 0x67, 0x7A, -0x29, 0xEE, 0x88, 0x8A, 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, 0x4E, 0xFD, 0x22, 0x46, 0x2B, 0x46, 0x32, 0xF0, 0xCC, 0xFE, -0x33, 0xF0, 0x5A, 0xF8, 0x78, 0xEE, 0x28, 0x7A, 0x09, 0xEE, 0x10, 0x0A, 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, 0x40, 0xFD, -0x22, 0x46, 0x2B, 0x46, 0x32, 0xF0, 0xBE, 0xFE, 0x33, 0xF0, 0x4C, 0xF8, 0x07, 0xEE, 0x90, 0x0A, 0x77, 0xEE, 0x8A, 0x7A, -0x39, 0xEE, 0x0A, 0x9A, 0xFD, 0xEE, 0xE7, 0x7A, 0xB0, 0x45, 0x17, 0xEE, 0x90, 0x3A, 0xFD, 0xEE, 0xC9, 0x7A, 0x4F, 0xEA, -0x03, 0x23, 0xCD, 0xED, 0x00, 0x7A, 0x9D, 0xF8, 0x00, 0x20, 0x03, 0xF4, 0x7F, 0x43, 0x43, 0xEA, 0x02, 0x03, 0x43, 0xEA, -0x07, 0x03, 0x33, 0x60, 0xB5, 0xD1, 0x0B, 0xB0, 0xBD, 0xEC, 0x08, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x4B, 0xEA, 0x03, 0x63, -0x3B, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0x08, 0xA9, 0x06, 0xA8, 0xFE, 0xF7, 0xE9, 0xFF, 0xBD, 0xF9, 0x16, 0x30, 0x4B, 0xEA, -0x03, 0x63, 0x3B, 0x43, 0x39, 0xE7, 0xF1, 0xEE, 0x67, 0x7A, 0x87, 0xEE, 0x87, 0x8A, 0x09, 0xF1, 0x01, 0x09, 0x01, 0xE7, -0x4F, 0xF4, 0x00, 0x03, 0x05, 0x93, 0x15, 0xE7, 0x58, 0x40, 0x34, 0x40, 0x50, 0x40, 0x34, 0x40, 0x80, 0x00, 0xFF, 0x00, -0x67, 0x66, 0x66, 0x66, 0x48, 0x7A, 0x15, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x7A, 0x44, 0x58, 0x7A, 0x15, 0x00, -0x00, 0x00, 0xF0, 0x3F, 0x4C, 0x40, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0xB5, 0x4C, 0x2D, 0xED, 0x04, 0x8B, 0x27, 0x68, -0xAD, 0xF2, 0xE4, 0x7D, 0x06, 0x46, 0x0D, 0x46, 0x14, 0x46, 0xB2, 0x49, 0x0A, 0x94, 0x3A, 0x46, 0x4F, 0xF4, 0x00, 0x50, -0x9A, 0x46, 0xCD, 0xE9, 0x13, 0x56, 0x20, 0xF0, 0x17, 0xFD, 0xAE, 0x4B, 0xAE, 0x49, 0x1A, 0x68, 0x4F, 0xF4, 0x00, 0x50, -0x20, 0xF0, 0x10, 0xFD, 0xAC, 0x4B, 0xAD, 0x49, 0x1A, 0x68, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x09, 0xFD, 0xAB, 0x4B, -0xAB, 0x49, 0x1A, 0x68, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x02, 0xFD, 0xA9, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, -0xFD, 0xFC, 0x16, 0xF0, 0x01, 0x03, 0x15, 0x93, 0x07, 0xD1, 0xA6, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x61, 0x43, 0xF4, -0xC0, 0x53, 0x11, 0x60, 0x13, 0x60, 0x14, 0x9A, 0xC2, 0xF3, 0x40, 0x03, 0x03, 0x33, 0x12, 0xF0, 0x0C, 0x0F, 0x09, 0xEE, -0x10, 0x3A, 0xC2, 0xF3, 0x81, 0x03, 0x00, 0xF0, 0x9C, 0x82, 0x01, 0x2B, 0x14, 0xBF, 0x0A, 0x23, 0x05, 0x23, 0x08, 0xEE, -0x90, 0x3A, 0x9A, 0x4A, 0x9A, 0x4E, 0x14, 0x68, 0xDF, 0xF8, 0x7C, 0xE2, 0x99, 0x4B, 0x9A, 0x49, 0xDF, 0xF8, 0x78, 0x92, -0xDF, 0xF8, 0x78, 0xB2, 0x98, 0x48, 0xDF, 0xF8, 0x78, 0xC2, 0x98, 0x4F, 0xDF, 0xF8, 0x74, 0x82, 0x24, 0xF0, 0x04, 0x04, -0x14, 0x60, 0x35, 0x68, 0x00, 0x24, 0x25, 0xF4, 0x70, 0x45, 0x35, 0x60, 0xCE, 0xF8, 0x00, 0x40, 0x1D, 0x68, 0x45, 0xF0, -0x80, 0x05, 0x1D, 0x60, 0x0D, 0x68, 0x45, 0xF0, 0x00, 0x45, 0x0D, 0x60, 0x15, 0x68, 0x01, 0x26, 0x45, 0xF0, 0x04, 0x05, -0x15, 0x60, 0xCB, 0xF8, 0x00, 0x60, 0xC9, 0xF8, 0x00, 0x40, 0x15, 0x68, 0x25, 0xF0, 0x04, 0x05, 0x15, 0x60, 0x0D, 0x68, -0x25, 0xF0, 0x00, 0x45, 0x0D, 0x60, 0x1D, 0x68, 0x25, 0xF0, 0x80, 0x05, 0x1D, 0x60, 0x15, 0x68, 0x45, 0xF0, 0x04, 0x05, -0x15, 0x60, 0x82, 0x4D, 0x2A, 0x68, 0x42, 0xF0, 0x02, 0x02, 0x2A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0xE0, 0x42, 0x22, 0xF0, -0x04, 0x02, 0x42, 0xF4, 0x80, 0x42, 0x32, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x07, 0x22, 0x42, 0xF0, 0xC0, 0x62, -0x42, 0xF4, 0x84, 0x72, 0x1A, 0x60, 0x0B, 0x68, 0x03, 0xF0, 0x00, 0x43, 0x43, 0xEA, 0x0A, 0x03, 0x0B, 0x60, 0x03, 0x68, -0x43, 0xF0, 0x3F, 0x03, 0x03, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x0B, 0x94, 0x43, 0xF4, 0x00, 0x63, 0x38, 0xAA, 0x78, 0xA9, -0x10, 0x92, 0x0F, 0x91, 0xCC, 0xF8, 0x00, 0x30, 0x0D, 0xF1, 0x7F, 0x03, 0xCD, 0xE9, 0x11, 0x21, 0x0D, 0x93, 0x08, 0xEE, -0x10, 0x4A, 0x0D, 0xF1, 0xAF, 0x03, 0x81, 0x46, 0x0E, 0x93, 0x00, 0x23, 0x0C, 0x93, 0x9D, 0xF8, 0x30, 0x50, 0x18, 0xEE, -0x10, 0x3A, 0x2B, 0x43, 0x09, 0x93, 0x00, 0x24, 0x3D, 0xE0, 0x0C, 0x9B, 0x00, 0x2B, 0x6C, 0xD0, 0x66, 0x00, 0x0D, 0x9B, -0x26, 0x44, 0x48, 0xF2, 0x80, 0x0B, 0x13, 0xF8, 0x06, 0xA0, 0x0E, 0x9B, 0x9E, 0x5D, 0x4F, 0xEA, 0x0A, 0x63, 0x43, 0xEA, -0x0A, 0x43, 0x43, 0xEA, 0x0B, 0x03, 0xC8, 0xF8, 0x00, 0x30, 0x19, 0xA9, 0x18, 0xA8, 0xFE, 0xF7, 0xE3, 0xFE, 0xB2, 0x45, -0x0A, 0xD0, 0x33, 0x06, 0x43, 0xEA, 0x06, 0x46, 0x46, 0xEA, 0x0B, 0x06, 0xC8, 0xF8, 0x00, 0x60, 0x19, 0xA9, 0x17, 0xA8, -0xFE, 0xF7, 0xD6, 0xFE, 0x04, 0xEB, 0x84, 0x03, 0xB8, 0xAA, 0xDE, 0x00, 0x00, 0x21, 0x02, 0xEB, 0xC3, 0x03, 0x28, 0x46, -0x18, 0x9A, 0xFF, 0xF7, 0x51, 0xF8, 0x0D, 0xF5, 0xAC, 0x63, 0x33, 0x44, 0x19, 0x9A, 0x01, 0x34, 0x00, 0x21, 0x28, 0x46, -0xFF, 0xF7, 0x48, 0xF8, 0x10, 0x2C, 0xB8, 0xAE, 0x0D, 0xF5, 0xAC, 0x6B, 0x59, 0xD0, 0x3B, 0x68, 0x23, 0xF4, 0xFF, 0x43, -0x43, 0xEA, 0x44, 0x23, 0x43, 0xF4, 0x01, 0x42, 0x43, 0xF4, 0xC0, 0x33, 0x43, 0xF4, 0x80, 0x73, 0x3A, 0x60, 0x01, 0x20, -0x3B, 0x60, 0xFC, 0xF7, 0x71, 0xFB, 0x09, 0x9B, 0xE6, 0xB2, 0x00, 0x2B, 0x3D, 0xD0, 0x0A, 0x9B, 0xD9, 0xF8, 0x00, 0x10, -0x1A, 0x5D, 0x02, 0xF0, 0x0F, 0x03, 0x9B, 0x02, 0x12, 0x09, 0x43, 0xEA, 0x82, 0x13, 0x21, 0xF4, 0x7F, 0x52, 0x13, 0x43, -0xC9, 0xF8, 0x00, 0x30, 0x02, 0x20, 0xFC, 0xF7, 0x5B, 0xFB, 0x0B, 0x9B, 0x00, 0x2B, 0x98, 0xD1, 0x4F, 0xF0, 0x80, 0x33, -0xC8, 0xF8, 0x00, 0x30, 0x19, 0xA9, 0x18, 0xA8, 0xFE, 0xF7, 0x8C, 0xFE, 0xB4, 0xE7, 0x10, 0x9B, 0x04, 0xEB, 0x44, 0x0B, -0x03, 0xEB, 0x04, 0x12, 0x20, 0xAB, 0x18, 0xEE, 0x10, 0x0A, 0x5B, 0x44, 0x00, 0x92, 0x31, 0x46, 0x0D, 0xF1, 0x5A, 0x02, -0xFE, 0xF7, 0xF2, 0xFF, 0x0F, 0x9B, 0x4F, 0xEA, 0x04, 0x1A, 0x0A, 0xEB, 0x03, 0x02, 0x2C, 0xAB, 0x31, 0x46, 0x00, 0x92, -0x18, 0xEE, 0x10, 0x0A, 0x5B, 0x44, 0x0D, 0xF1, 0x5B, 0x02, 0x66, 0x00, 0xFE, 0xF7, 0xE2, 0xFF, 0x73, 0xE7, 0xFE, 0xF7, -0xA7, 0xFE, 0x0A, 0x9B, 0x18, 0x55, 0x02, 0x20, 0xFC, 0xF7, 0x28, 0xFB, 0xCE, 0xE7, 0x0C, 0x9B, 0x18, 0xEE, 0x90, 0x2A, -0x01, 0x33, 0x93, 0x42, 0x0C, 0x93, 0x7F, 0xF4, 0x58, 0xAF, 0x18, 0xEE, 0x90, 0xAA, 0x00, 0x25, 0x45, 0xE0, 0x00, 0xBF, -0x10, 0x20, 0x34, 0x40, 0x60, 0x7A, 0x15, 0x00, 0x1C, 0x20, 0x34, 0x40, 0x74, 0x7A, 0x15, 0x00, 0x04, 0x22, 0x34, 0x40, -0x88, 0x7A, 0x15, 0x00, 0x18, 0x00, 0x58, 0x40, 0x9C, 0x7A, 0x15, 0x00, 0xB0, 0x7A, 0x15, 0x00, 0x04, 0x40, 0x34, 0x40, -0x30, 0x20, 0x34, 0x40, 0x60, 0x20, 0x34, 0x40, 0x5C, 0x20, 0x34, 0x40, 0x64, 0x20, 0x34, 0x40, 0x50, 0x40, 0x34, 0x40, -0x58, 0x40, 0x34, 0x40, 0x80, 0x21, 0x34, 0x40, 0x68, 0x20, 0x34, 0x40, 0x0C, 0xB6, 0x33, 0x40, 0x08, 0xB6, 0x33, 0x40, -0x20, 0x40, 0x34, 0x40, 0x4C, 0x40, 0x34, 0x40, 0x06, 0x2D, 0x34, 0xBF, 0x32, 0x21, 0x64, 0x21, 0x09, 0x91, 0xFE, 0xF7, -0xDB, 0xFF, 0x11, 0x9B, 0x09, 0x99, 0x84, 0x46, 0x43, 0xF8, 0x04, 0xC0, 0x5A, 0x46, 0x50, 0x46, 0xFE, 0xF7, 0xD2, 0xFF, -0x01, 0x35, 0x12, 0x9B, 0x10, 0x2D, 0x18, 0x51, 0x06, 0xF1, 0x28, 0x06, 0x0B, 0xF1, 0x28, 0x0B, 0x14, 0xD0, 0xBA, 0xF1, -0x01, 0x0F, 0x32, 0x46, 0x4F, 0xEA, 0x05, 0x14, 0x50, 0x46, 0xDF, 0xD1, 0x11, 0x9B, 0x30, 0x68, 0x18, 0x51, 0x01, 0x35, -0x12, 0x9B, 0xDB, 0xF8, 0x00, 0x10, 0x19, 0x51, 0x10, 0x2D, 0x06, 0xF1, 0x28, 0x06, 0x0B, 0xF1, 0x28, 0x0B, 0xEA, 0xD1, -0x11, 0x9A, 0x0B, 0x9B, 0x04, 0x32, 0x11, 0x92, 0x12, 0x9A, 0x04, 0x32, 0x12, 0x92, 0x0D, 0x9A, 0x01, 0x32, 0x0D, 0x92, -0x0E, 0x9A, 0x01, 0x32, 0x01, 0x33, 0x0E, 0x92, 0x19, 0xEE, 0x10, 0x2A, 0x0B, 0x93, 0xDB, 0xB2, 0x9A, 0x42, 0x08, 0xEE, -0x10, 0x3A, 0x3F, 0xF6, 0xE0, 0xAE, 0x20, 0xAD, 0x2C, 0xAC, 0xAB, 0x46, 0x0B, 0x95, 0xDD, 0xF8, 0x40, 0x80, 0x0F, 0x9F, -0x09, 0x94, 0x19, 0xEE, 0x10, 0x5A, 0xA2, 0x46, 0x00, 0x26, 0x09, 0xE0, 0x13, 0x9A, 0x42, 0xF8, 0x26, 0x30, 0x01, 0x36, -0x0B, 0xF1, 0x03, 0x0B, 0x08, 0xF1, 0x10, 0x08, 0x0A, 0xF1, 0x03, 0x0A, 0x5F, 0xFA, 0x86, 0xF9, 0x49, 0x46, 0x43, 0x46, -0x5A, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0x98, 0xFB, 0x07, 0xEB, 0x06, 0x13, 0x04, 0x46, 0x52, 0x46, 0x49, 0x46, 0x28, 0x46, -0xFF, 0xF7, 0x90, 0xFB, 0x03, 0x02, 0xE2, 0xB2, 0x03, 0xF4, 0x7F, 0x43, 0x13, 0x43, 0x43, 0xF0, 0x00, 0x43, 0x09, 0x2E, -0x43, 0xF4, 0x00, 0x03, 0xDA, 0xD9, 0x1A, 0xAB, 0x03, 0xEB, 0x46, 0x02, 0x1D, 0xAB, 0x03, 0xEB, 0x46, 0x03, 0xB9, 0xF1, -0x0F, 0x0F, 0x22, 0xF8, 0x14, 0x4C, 0x23, 0xF8, 0x14, 0x0C, 0xD0, 0xD1, 0x14, 0x9B, 0x09, 0x9C, 0x0B, 0x9D, 0xC3, 0xF3, -0x40, 0x10, 0x1A, 0xA9, 0x09, 0x90, 0xFF, 0xF7, 0xD3, 0xF8, 0x09, 0x98, 0x1D, 0xA9, 0xFF, 0xF7, 0xCF, 0xF8, 0x13, 0x9B, -0xDF, 0xF8, 0x98, 0xC1, 0x1D, 0xA8, 0x1A, 0xA9, 0x03, 0xF1, 0x24, 0x06, 0x03, 0xF1, 0x3C, 0x07, 0x30, 0xF9, 0x02, 0x3B, -0x31, 0xF9, 0x02, 0x2B, 0x1B, 0x02, 0x03, 0xF4, 0x7F, 0x43, 0xD2, 0xB2, 0x13, 0x43, 0x43, 0xEA, 0x0C, 0x03, 0x46, 0xF8, -0x04, 0x3F, 0xBE, 0x42, 0xF0, 0xD1, 0x10, 0x9B, 0xDF, 0xF8, 0x6C, 0x81, 0xDD, 0xF8, 0x3C, 0xA0, 0x03, 0xF5, 0x80, 0x77, -0x00, 0x26, 0x99, 0x46, 0xD9, 0xF8, 0x0C, 0x20, 0xAB, 0x78, 0xD9, 0xF8, 0x08, 0xC0, 0x68, 0x78, 0xD9, 0xF8, 0x04, 0x10, -0x06, 0x92, 0x15, 0xF8, 0x03, 0x2B, 0x05, 0x93, 0x59, 0xF8, 0x10, 0x3B, 0x00, 0x93, 0xCD, 0xE9, 0x03, 0x0C, 0xCD, 0xE9, -0x01, 0x21, 0x80, 0x23, 0x32, 0x46, 0x41, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xC6, 0xFA, 0xDA, 0xF8, 0x0C, 0x20, -0xA3, 0x78, 0x60, 0x78, 0xDA, 0xF8, 0x04, 0x10, 0xDA, 0xF8, 0x08, 0xC0, 0x06, 0x92, 0x14, 0xF8, 0x03, 0x2B, 0x05, 0x93, -0x5A, 0xF8, 0x10, 0x3B, 0x00, 0x93, 0xCD, 0xE9, 0x01, 0x21, 0xCD, 0xE9, 0x03, 0x0C, 0x32, 0x46, 0x36, 0x49, 0x80, 0x23, -0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xAC, 0xFA, 0x4F, 0x45, 0x06, 0xF1, 0x01, 0x06, 0xC7, 0xD1, 0x13, 0x9B, 0x32, 0x4E, -0x1D, 0x1F, 0x00, 0x24, 0x55, 0xF8, 0x04, 0x3F, 0xC3, 0xF3, 0x07, 0x22, 0x00, 0x92, 0xDB, 0xB2, 0x22, 0x46, 0x31, 0x46, -0x01, 0x34, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x97, 0xFA, 0x10, 0x2C, 0xF0, 0xD1, 0x14, 0x9B, 0xDB, 0x06, 0x0D, 0xD5, -0x15, 0x9B, 0x3B, 0xB1, 0x27, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x61, 0x43, 0xF4, 0xC0, 0x53, 0x11, 0x60, 0x13, 0x60, -0x0A, 0x99, 0x13, 0x98, 0xFF, 0xF7, 0x0C, 0xFC, 0x22, 0x49, 0x23, 0x4A, 0x0B, 0x68, 0x23, 0x4E, 0x23, 0x4C, 0x24, 0x48, -0x23, 0xF0, 0x02, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xEE, 0x43, 0x23, 0xF0, 0x09, 0x03, 0x43, 0xF4, 0x58, 0x53, -0xA1, 0xF5, 0xD6, 0x41, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x74, 0x39, 0x02, 0xF5, 0xFF, 0x52, 0x1C, 0x32, 0x00, 0x23, -0x4F, 0xF0, 0x80, 0x35, 0x33, 0x60, 0x25, 0x60, 0x03, 0x60, 0x0B, 0x60, 0x13, 0x68, 0x17, 0x49, 0x23, 0xF4, 0x7F, 0x43, -0x00, 0xF5, 0x09, 0x40, 0x23, 0xF0, 0x80, 0x03, 0xFC, 0x30, 0x43, 0xF4, 0x80, 0x34, 0x13, 0x60, 0x14, 0x60, 0x03, 0x68, -0x23, 0xF4, 0xC0, 0x53, 0x03, 0x60, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x4F, 0xFA, 0x0D, 0xF2, 0xE4, 0x7D, 0xBD, 0xEC, -0x04, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x23, 0x08, 0xEE, 0x90, 0x3A, 0x65, 0xE5, 0x00, 0xBF, 0xF0, 0x7A, 0x15, 0x00, -0x1C, 0x7B, 0x15, 0x00, 0x04, 0x40, 0x34, 0x40, 0x80, 0x21, 0x34, 0x40, 0x5C, 0x20, 0x34, 0x40, 0x50, 0x40, 0x34, 0x40, -0x4C, 0x40, 0x34, 0x40, 0x08, 0xB6, 0x33, 0x40, 0x3C, 0x7B, 0x15, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC4, 0x7A, 0x15, 0x00, -0xF0, 0xB5, 0x07, 0x78, 0x43, 0x68, 0x83, 0xB0, 0x0E, 0x46, 0x3A, 0x46, 0x27, 0x49, 0x01, 0x93, 0x4F, 0xF4, 0x00, 0x50, -0x20, 0xF0, 0x22, 0xFA, 0x01, 0x9B, 0x30, 0x1F, 0x06, 0xF1, 0x3C, 0x01, 0x4F, 0xF0, 0x80, 0x32, 0x40, 0xF8, 0x04, 0x2F, -0x88, 0x42, 0xFB, 0xD1, 0x06, 0xF1, 0x3F, 0x00, 0x06, 0xF1, 0x4F, 0x02, 0x00, 0x24, 0x00, 0xF8, 0x01, 0x4F, 0x82, 0x42, -0xFB, 0xD1, 0x30, 0x46, 0x34, 0x65, 0x06, 0xF1, 0x94, 0x05, 0x40, 0xF8, 0x54, 0x4F, 0x00, 0x24, 0x40, 0xF8, 0x04, 0x4F, -0xA8, 0x42, 0xFB, 0xD1, 0xBA, 0x09, 0x18, 0xD0, 0x15, 0x4C, 0xDF, 0xF8, 0x74, 0xC0, 0x21, 0x68, 0x14, 0x4D, 0x15, 0x4A, -0x15, 0x48, 0x21, 0xF4, 0x00, 0x11, 0x21, 0x60, 0xF9, 0x09, 0x00, 0x29, 0x08, 0xBF, 0x62, 0x46, 0x2A, 0x60, 0x05, 0x68, -0x11, 0x49, 0x12, 0x4C, 0x12, 0x4A, 0x01, 0xEA, 0x05, 0x01, 0x08, 0xBF, 0x22, 0x46, 0x0A, 0x43, 0x02, 0x60, 0x01, 0x93, -0xFE, 0xF7, 0x08, 0xFC, 0x0E, 0x4A, 0x01, 0x9B, 0xD2, 0xF8, 0xBC, 0x44, 0x38, 0x46, 0x06, 0xF1, 0x40, 0x02, 0x31, 0x46, -0xA0, 0x47, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0xFE, 0xF7, 0x44, 0xBC, 0x50, 0x7B, 0x15, 0x00, 0x58, 0x40, 0x34, 0x40, -0x10, 0x20, 0x34, 0x40, 0x76, 0x62, 0xF7, 0x0B, 0x1C, 0x20, 0x34, 0x40, 0xFF, 0x0F, 0x00, 0xE0, 0x00, 0x50, 0x98, 0x00, -0x00, 0x90, 0x9B, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x76, 0x62, 0xB7, 0x0B, 0x17, 0x4B, 0x01, 0x22, 0x30, 0xB4, 0x1A, 0x60, -0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0x08, 0xDB, -0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x00, 0x2B, 0xF6, 0xDA, 0x0E, 0x4A, -0x0C, 0x4B, 0x15, 0x68, 0x1C, 0x68, 0xC5, 0xF3, 0x10, 0x02, 0xED, 0x03, 0x44, 0xBF, 0x6F, 0xEA, 0x02, 0x42, 0x6F, 0xEA, -0x12, 0x42, 0xC4, 0xF3, 0x10, 0x03, 0x02, 0x60, 0xE2, 0x03, 0x44, 0xBF, 0x6F, 0xEA, 0x03, 0x43, 0x6F, 0xEA, 0x13, 0x43, -0x30, 0xBC, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x6C, 0x08, 0x62, 0x40, 0x90, 0x08, 0x62, 0x40, 0x8C, 0x08, 0x62, 0x40, -0x30, 0xB4, 0x11, 0x4C, 0x11, 0x4D, 0x12, 0x4B, 0x04, 0xEA, 0x02, 0x42, 0xC1, 0xF3, 0x0E, 0x01, 0x0A, 0x43, 0x2A, 0x60, -0x1A, 0x68, 0x00, 0xF0, 0x07, 0x00, 0x22, 0xF0, 0xE0, 0x62, 0x02, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x00, 0x42, -0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x1A, 0x68, -0x22, 0xF0, 0x00, 0x42, 0x30, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0xFF, 0x7F, 0x44, 0x05, 0x62, 0x40, -0x28, 0x05, 0x62, 0x40, 0x38, 0xB5, 0x28, 0x4C, 0x28, 0x4A, 0x23, 0x68, 0x28, 0x49, 0x23, 0xF0, 0xFF, 0x03, 0x03, 0x43, -0x43, 0xF0, 0x80, 0x03, 0x23, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x03, 0x02, -0x42, 0xF0, 0x02, 0x03, 0x0B, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x1D, 0x4B, -0x42, 0xF0, 0x03, 0x02, 0x1A, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x19, 0x4A, -0x13, 0x68, 0x98, 0x07, 0x08, 0xD4, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x68, -0x98, 0x07, 0xF6, 0xD5, 0x13, 0x4C, 0x22, 0x68, 0x51, 0x00, 0x0E, 0xD4, 0x12, 0x4D, 0x29, 0x46, 0x4F, 0xF4, 0x00, 0x50, -0x20, 0xF0, 0x28, 0xF9, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x22, 0x68, 0x53, 0x00, -0xF1, 0xD5, 0x0C, 0x4A, 0x0C, 0x49, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x03, 0x13, 0x60, 0x4F, 0xF4, 0x00, 0x50, 0xBD, 0xE8, -0x38, 0x40, 0x20, 0xF0, 0x13, 0xB9, 0x00, 0xBF, 0x08, 0x01, 0x60, 0x40, 0x08, 0x05, 0x62, 0x40, 0x00, 0x00, 0x62, 0x40, -0x80, 0x40, 0x34, 0x40, 0x04, 0x22, 0x34, 0x40, 0x68, 0x7B, 0x15, 0x00, 0x04, 0x00, 0x62, 0x40, 0x7C, 0x7B, 0x15, 0x00, -0x10, 0xB5, 0x0F, 0x4C, 0x0F, 0x4A, 0x23, 0x68, 0x0F, 0x48, 0x10, 0x49, 0x23, 0xF4, 0x80, 0x03, 0x23, 0x60, 0x13, 0x68, -0x23, 0xF0, 0x03, 0x03, 0x13, 0x60, 0x13, 0x60, 0x03, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, -0x01, 0x03, 0x0B, 0x60, 0x14, 0x20, 0xFC, 0xF7, 0x45, 0xF8, 0xBD, 0xE8, 0x10, 0x40, 0x06, 0x49, 0x4F, 0xF4, 0x00, 0x50, -0x20, 0xF0, 0xE2, 0xB8, 0x04, 0x00, 0x62, 0x40, 0x00, 0x00, 0x62, 0x40, 0x08, 0x01, 0x60, 0x40, 0x08, 0x05, 0x62, 0x40, -0x88, 0x7B, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0xB0, 0x07, 0x46, 0x10, 0x1A, 0x0E, 0x46, 0x9B, 0x46, 0xDD, 0xE9, -0x0E, 0x54, 0x9D, 0xF8, 0x30, 0x90, 0x9D, 0xF8, 0x34, 0x80, 0x32, 0xF0, 0x65, 0xFD, 0x82, 0x46, 0xAB, 0xEB, 0x06, 0x00, -0x32, 0xF0, 0x60, 0xFD, 0xBA, 0xF1, 0x00, 0x0F, 0x11, 0xD0, 0x07, 0xFA, 0x09, 0xF7, 0x07, 0xEE, 0x90, 0x7A, 0xB8, 0xEE, -0xE7, 0x7A, 0x07, 0xEE, 0x90, 0xAA, 0xF8, 0xEE, 0xE7, 0x7A, 0xC7, 0xEE, 0x27, 0x6A, 0xFD, 0xEE, 0xE6, 0x7A, 0xCD, 0xED, -0x01, 0x7A, 0x9D, 0xF9, 0x04, 0xA0, 0x85, 0xF8, 0x00, 0xA0, 0xA8, 0xB1, 0x06, 0xFA, 0x08, 0xF6, 0x07, 0xEE, 0x90, 0x6A, -0xB8, 0xEE, 0xE7, 0x7A, 0x07, 0xEE, 0x90, 0x0A, 0xF8, 0xEE, 0xE7, 0x7A, 0xC7, 0xEE, 0x27, 0x6A, 0xFD, 0xEE, 0xE6, 0x7A, -0xCD, 0xED, 0x01, 0x7A, 0x9D, 0xF9, 0x04, 0x30, 0x23, 0x70, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x03, 0x46, 0x23, 0x70, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0xA1, 0x4F, 0xA2, 0x4C, 0x3D, 0x68, 0xA2, 0x4E, -0xAD, 0xB2, 0x25, 0x43, 0x2D, 0xED, 0x02, 0x8B, 0x3D, 0x60, 0x35, 0x68, 0x91, 0xB0, 0x25, 0xF0, 0x01, 0x05, 0x86, 0x46, -0x35, 0x60, 0x8C, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x9B, 0x49, 0xCD, 0xF8, 0x1C, 0xE0, 0xCD, 0xE9, 0x08, 0x23, 0x08, 0xEE, -0x10, 0xCA, 0x75, 0x46, 0x20, 0xF0, 0x72, 0xF8, 0x3B, 0x68, 0x9B, 0xB2, 0x23, 0x43, 0x3B, 0x60, 0x00, 0x2D, 0x00, 0xF0, -0x16, 0x81, 0x00, 0x26, 0x34, 0x46, 0x35, 0x46, 0x0D, 0xF1, 0x34, 0x0B, 0x0D, 0xF1, 0x30, 0x0A, 0x32, 0x23, 0x00, 0xBF, -0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x59, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x96, 0xFE, 0xDD, 0xE9, 0x0C, 0x32, -0x8A, 0x49, 0xCD, 0xE9, 0x00, 0x32, 0x4F, 0xF4, 0x00, 0x50, 0x23, 0x46, 0x2A, 0x46, 0x20, 0xF0, 0x4F, 0xF8, 0x0C, 0x9B, -0x00, 0x2B, 0xC0, 0xF2, 0xA5, 0x80, 0x00, 0x2E, 0x00, 0xF0, 0xB9, 0x80, 0x01, 0x2E, 0x00, 0xF0, 0xDD, 0x80, 0x0D, 0x9B, -0x15, 0xF1, 0x7C, 0x0F, 0xAC, 0xBF, 0x2A, 0x1F, 0x2A, 0x1D, 0x00, 0x2B, 0x80, 0xF2, 0xA1, 0x80, 0x01, 0x2E, 0x4F, 0xF0, -0x02, 0x08, 0x00, 0xF0, 0xDA, 0x80, 0x7B, 0x2C, 0x00, 0xF3, 0xA1, 0x80, 0x23, 0x1D, 0x4F, 0xF0, 0x02, 0x09, 0xA3, 0xF1, -0x80, 0x01, 0x38, 0x68, 0xC9, 0xB2, 0x09, 0x04, 0xA2, 0xF1, 0x80, 0x0C, 0x41, 0xEA, 0x0C, 0x61, 0x80, 0xB2, 0x01, 0x43, -0x39, 0x60, 0x32, 0x21, 0x00, 0xBF, 0x01, 0x39, 0x89, 0xB2, 0x00, 0x29, 0xFA, 0xD1, 0x0F, 0xA9, 0x0E, 0xA8, 0xCD, 0xE9, -0x05, 0x23, 0xFF, 0xF7, 0x55, 0xFE, 0xDD, 0xE9, 0x0E, 0x10, 0xDD, 0xE9, 0x05, 0x23, 0x01, 0x90, 0x00, 0x91, 0x4F, 0xF4, -0x00, 0x50, 0x68, 0x49, 0x20, 0xF0, 0x0E, 0xF8, 0x0D, 0xF1, 0x2F, 0x03, 0x03, 0x93, 0x0D, 0xF1, 0x2E, 0x03, 0xCD, 0xE9, -0x01, 0x93, 0xDD, 0xE9, 0x0C, 0x01, 0xDD, 0xE9, 0x0E, 0x23, 0xCD, 0xF8, 0x00, 0x80, 0xFF, 0xF7, 0x27, 0xFF, 0x9D, 0xF9, -0x2F, 0x30, 0x9D, 0xF9, 0x2E, 0x20, 0x5E, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, 0xF6, 0xFF, 0x9D, 0xF9, 0x2F, 0x30, -0x9D, 0xF9, 0x2E, 0x20, 0x39, 0x68, 0xE4, 0x1A, 0x6F, 0xF0, 0x7F, 0x03, 0x9C, 0x42, 0xB8, 0xBF, 0x1C, 0x46, 0xAD, 0x1A, -0x7F, 0x2C, 0xA8, 0xBF, 0x7F, 0x24, 0x9D, 0x42, 0xB8, 0xBF, 0x1D, 0x46, 0x04, 0xEB, 0x03, 0x08, 0x7F, 0x2D, 0xA8, 0xBF, -0x7F, 0x25, 0x5F, 0xFA, 0x88, 0xF8, 0xA5, 0xF1, 0x80, 0x02, 0x4F, 0xEA, 0x08, 0x43, 0x43, 0xEA, 0x02, 0x63, 0x89, 0xB2, -0x0B, 0x43, 0x01, 0x36, 0x3B, 0x60, 0x07, 0x9B, 0xF6, 0xB2, 0xB3, 0x42, 0x5F, 0xFA, 0x82, 0xF9, 0x7F, 0xF4, 0x68, 0xAF, -0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x59, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0xFE, 0xFD, -0xDD, 0xE9, 0x0C, 0x13, 0x2A, 0x46, 0x01, 0x93, 0x00, 0x91, 0x23, 0x46, 0x3F, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, -0xB7, 0xFF, 0x08, 0x9B, 0x83, 0xF8, 0x00, 0x90, 0x09, 0x9B, 0xDD, 0xE9, 0x0C, 0x12, 0x18, 0xEE, 0x10, 0x0A, 0x83, 0xF8, -0x00, 0x80, 0xFF, 0xF7, 0x1D, 0xFE, 0x11, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x06, 0xB3, 0x01, 0x2E, -0x29, 0xD0, 0x0D, 0x9B, 0x7B, 0x2D, 0xD4, 0xBF, 0x2A, 0x1D, 0x2A, 0x1F, 0x00, 0x2B, 0xFF, 0xF6, 0x5F, 0xAF, 0x01, 0x2E, -0x4F, 0xF0, 0x02, 0x08, 0x26, 0xD0, 0x14, 0xF1, 0x7C, 0x0F, 0xFF, 0xF6, 0x5F, 0xAF, 0x23, 0x1F, 0x4F, 0xF0, 0x02, 0x09, -0x5D, 0xE7, 0x0D, 0x9B, 0x00, 0x2B, 0xA5, 0xF1, 0x20, 0x02, 0x0A, 0xDA, 0x4F, 0xF0, 0x05, 0x08, 0xC1, 0x46, 0x04, 0xF1, -0x20, 0x03, 0x52, 0xE7, 0x0D, 0x9B, 0x00, 0x2B, 0x05, 0xF1, 0x20, 0x02, 0xF4, 0xDB, 0x4F, 0xF0, 0x05, 0x08, 0xC1, 0x46, -0xA4, 0xF1, 0x20, 0x03, 0x47, 0xE7, 0x6F, 0x2D, 0xD3, 0xDC, 0x0D, 0x9B, 0x00, 0x2B, 0x05, 0xF1, 0x10, 0x02, 0x4F, 0xF0, -0x04, 0x08, 0x12, 0xDB, 0x14, 0xF1, 0x70, 0x0F, 0xD5, 0xDB, 0xA4, 0xF1, 0x10, 0x03, 0x4F, 0xF0, 0x04, 0x09, 0x36, 0xE7, -0x15, 0xF1, 0x70, 0x0F, 0xFF, 0xF6, 0x1F, 0xAF, 0x0D, 0x9B, 0x00, 0x2B, 0xA5, 0xF1, 0x10, 0x02, 0x4F, 0xF0, 0x04, 0x08, -0xEC, 0xDA, 0x6F, 0x2C, 0x3F, 0xF7, 0x23, 0xAF, 0x04, 0xF1, 0x10, 0x03, 0x4F, 0xF0, 0x04, 0x09, 0x23, 0xE7, 0x07, 0x9C, -0x4F, 0xF0, 0x80, 0x08, 0x25, 0x46, 0xC1, 0x46, 0x0D, 0xF1, 0x34, 0x0B, 0x0D, 0xF1, 0x30, 0x0A, 0x7E, 0xE7, 0x00, 0xBF, -0x4C, 0x40, 0x34, 0x40, 0x00, 0x00, 0x80, 0x80, 0x1C, 0x40, 0x34, 0x40, 0x94, 0x7B, 0x15, 0x00, 0xA8, 0x7B, 0x15, 0x00, -0xCC, 0x7B, 0x15, 0x00, 0xF0, 0x7B, 0x15, 0x00, 0x0C, 0x7C, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x22, 0x4B, 0x23, 0x4E, -0x1A, 0x68, 0x00, 0x25, 0x22, 0xF4, 0x7F, 0x52, 0x1A, 0x60, 0x98, 0x46, 0x2F, 0x46, 0x4F, 0xF0, 0x07, 0x09, 0x02, 0x20, -0xFB, 0xF7, 0x86, 0xFE, 0x33, 0x68, 0xD8, 0xF8, 0x00, 0x40, 0xDA, 0x05, 0x54, 0xBF, 0x01, 0x37, 0x07, 0xF1, 0xFF, 0x37, -0x7F, 0xB2, 0x1B, 0x06, 0x54, 0xBF, 0x01, 0x35, 0x05, 0xF1, 0xFF, 0x35, 0x00, 0x2F, 0x24, 0xF4, 0x7F, 0x54, 0xDC, 0xBF, -0x7B, 0x42, 0x44, 0xEA, 0x83, 0x24, 0x6D, 0xB2, 0xD4, 0xBF, 0x44, 0xF4, 0x00, 0x54, 0x44, 0xEA, 0x87, 0x24, 0x00, 0x2D, -0xDC, 0xBF, 0x6B, 0x42, 0x44, 0xEA, 0x83, 0x14, 0x09, 0xF1, 0xFF, 0x33, 0xCC, 0xBF, 0x44, 0xEA, 0x85, 0x14, 0x44, 0xF4, -0x00, 0x74, 0x13, 0xF0, 0xFF, 0x09, 0xC8, 0xF8, 0x00, 0x40, 0xD0, 0xD1, 0x07, 0x49, 0x2B, 0x46, 0x3A, 0x46, 0x4F, 0xF4, -0x00, 0x50, 0x1F, 0xF0, 0xF7, 0xFE, 0xC4, 0xF3, 0x87, 0x10, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x50, 0x40, 0x34, 0x40, -0x14, 0x40, 0x34, 0x40, 0x34, 0x7C, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x4E, 0x4A, 0x4F, 0x4D, 0x13, 0x68, 0x87, 0xB0, -0xC1, 0xF3, 0x03, 0x24, 0x03, 0x93, 0x23, 0xF0, 0x00, 0x43, 0x23, 0xF4, 0xE0, 0x03, 0x43, 0xEA, 0x04, 0x53, 0x43, 0xF0, -0x0A, 0x03, 0x13, 0x60, 0x2C, 0x68, 0x48, 0x4B, 0x24, 0xF4, 0xC0, 0x54, 0xC1, 0xF3, 0x01, 0x62, 0x22, 0x43, 0x2A, 0x60, -0x1A, 0x68, 0x01, 0xF0, 0x0F, 0x04, 0xC1, 0xF3, 0x03, 0x15, 0x42, 0xF0, 0x3F, 0x02, 0xA5, 0x42, 0x02, 0x94, 0xC1, 0xF3, -0x03, 0x3A, 0x1A, 0x60, 0x5E, 0xD8, 0xDF, 0xF8, 0x04, 0x81, 0x3E, 0x4E, 0xDF, 0xF8, 0x00, 0xB1, 0x44, 0x19, 0x99, 0x46, -0xEF, 0xB2, 0xD8, 0xF8, 0x00, 0x20, 0x22, 0xF4, 0xFF, 0x42, 0x42, 0xEA, 0x45, 0x22, 0x42, 0xF4, 0x40, 0x40, 0x42, 0xF4, -0xE0, 0x31, 0xC8, 0xF8, 0x00, 0x00, 0x2A, 0x46, 0xC8, 0xF8, 0x00, 0x10, 0x4F, 0xF4, 0x00, 0x50, 0x33, 0x49, 0x1F, 0xF0, -0xA9, 0xFE, 0x32, 0x68, 0x42, 0xF4, 0x80, 0x62, 0x32, 0x60, 0xDB, 0xF8, 0x00, 0x20, 0x42, 0xF0, 0x40, 0x02, 0xCB, 0xF8, -0x00, 0x20, 0x32, 0x22, 0x00, 0xBF, 0x01, 0x3A, 0x92, 0xB2, 0x00, 0x2A, 0xFA, 0xD1, 0xFF, 0xF7, 0x5D, 0xFF, 0x04, 0xF8, -0x01, 0x0B, 0x32, 0x68, 0x22, 0xF4, 0x80, 0x62, 0x32, 0x60, 0xD9, 0xF8, 0x00, 0x20, 0x22, 0xF0, 0x40, 0x02, 0xC9, 0xF8, -0x00, 0x20, 0x32, 0x22, 0x00, 0xBF, 0x01, 0x3A, 0x92, 0xB2, 0x00, 0x2A, 0xFA, 0xD1, 0x0D, 0xF1, 0x17, 0x03, 0x01, 0x93, -0x0D, 0xF1, 0x16, 0x03, 0x39, 0x46, 0x00, 0x93, 0x05, 0xAA, 0x0D, 0xF1, 0x15, 0x03, 0x50, 0x46, 0xFF, 0xF7, 0xE8, 0xFD, -0x01, 0x35, 0x02, 0x9B, 0x9D, 0xF8, 0x16, 0xC0, 0x9D, 0xF8, 0x17, 0x00, 0x9D, 0xF8, 0x14, 0x10, 0x9D, 0xF8, 0x15, 0x20, -0x84, 0xF8, 0x04, 0xC0, 0xEF, 0xB2, 0xBB, 0x42, 0x60, 0x72, 0xA1, 0x73, 0xE2, 0x74, 0xA8, 0xD2, 0x11, 0x4A, 0x0D, 0x48, -0x13, 0x68, 0x0D, 0x49, 0x0A, 0x4C, 0x23, 0xF4, 0x7F, 0x43, 0x23, 0xF0, 0x80, 0x03, 0x13, 0x60, 0x43, 0xF4, 0x80, 0x33, -0x13, 0x60, 0x03, 0x68, 0x23, 0xF4, 0xC0, 0x53, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x3F, 0x03, 0x0B, 0x60, 0x03, 0x9B, -0x23, 0x60, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1C, 0x05, 0x62, 0x40, 0x04, 0x40, 0x34, 0x40, 0x50, 0x40, 0x34, 0x40, -0x14, 0x40, 0x34, 0x40, 0x54, 0x7C, 0x15, 0x00, 0x58, 0x40, 0x34, 0x40, 0x5C, 0x40, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, -0x3C, 0x4D, 0x3D, 0x49, 0x81, 0x46, 0x89, 0xB0, 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, 0x34, 0xFE, 0x2B, 0x68, 0xD9, 0xF8, -0x00, 0x40, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE2, 0xB2, 0x04, 0xF0, 0x7F, 0x0A, 0xC4, 0xF3, 0x03, 0x18, 0x04, 0xF0, -0x0F, 0x04, 0x4A, 0xDB, 0x33, 0x4D, 0x34, 0x4F, 0x2E, 0x68, 0x2B, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x2B, 0x60, 0xD7, 0xF8, -0x00, 0xB0, 0x3B, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x3B, 0x60, 0x50, 0x46, 0xFF, 0xF7, 0xB2, 0xFC, 0xD9, 0xF8, 0x00, 0x10, -0x01, 0xA8, 0xFF, 0xF7, 0x25, 0xFF, 0xFF, 0xF7, 0x0D, 0xFD, 0xC7, 0xF8, 0x00, 0xB0, 0x2B, 0x68, 0x2B, 0x68, 0x06, 0xF4, -0x80, 0x76, 0x1E, 0x43, 0xA0, 0x45, 0x2E, 0x60, 0x26, 0xD8, 0x25, 0x48, 0x0D, 0xF1, 0x05, 0x03, 0xA4, 0xEB, 0x08, 0x04, -0x43, 0x44, 0x01, 0xAA, 0x42, 0x44, 0x53, 0xFA, 0x84, 0xF4, 0x00, 0xEB, 0x08, 0x10, 0x15, 0x78, 0x53, 0x79, 0x92, 0xF8, -0x0A, 0xC0, 0xD7, 0x7B, 0x16, 0x7D, 0x29, 0x06, 0x1B, 0x04, 0x01, 0xF0, 0x70, 0x41, 0x43, 0xEA, 0x0C, 0x63, 0x41, 0xEA, -0x05, 0x51, 0x3B, 0x43, 0x01, 0x32, 0x09, 0x0E, 0x43, 0xEA, 0x06, 0x23, 0xA2, 0x42, 0x80, 0xF8, 0x07, 0x12, 0xC0, 0xF8, -0x00, 0x32, 0x00, 0xF1, 0x10, 0x00, 0xE4, 0xD1, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0xF0, 0x0C, 0x0F, 0x08, 0xD1, -0xA0, 0x45, 0xAF, 0xD9, 0x0E, 0x49, 0x0F, 0x48, 0x41, 0xF2, 0x7F, 0x02, 0x1F, 0xF0, 0xFA, 0xFF, 0xA8, 0xE7, 0x0B, 0x49, -0x0C, 0x48, 0x41, 0xF2, 0x7E, 0x02, 0x1F, 0xF0, 0xF3, 0xFF, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xEB, 0xDB, -0x9C, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x7C, 0x15, 0x00, 0x00, 0x04, 0x60, 0x40, 0x18, 0x00, 0x58, 0x40, -0x1C, 0x13, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x88, 0x7C, 0x15, 0x00, 0x78, 0x7C, 0x15, 0x00, 0x24, 0x4B, 0x25, 0x4A, -0x06, 0x21, 0x10, 0xB4, 0xC3, 0xF8, 0x00, 0x11, 0x53, 0x68, 0x23, 0xF4, 0x80, 0x23, 0x53, 0x60, 0x53, 0x68, 0x43, 0xF4, -0x00, 0x33, 0x53, 0x60, 0x13, 0x6B, 0x03, 0xF0, 0x44, 0x03, 0x04, 0x2B, 0xFA, 0xD1, 0x1D, 0x4B, 0x1D, 0x4C, 0x1B, 0x68, -0x1D, 0x48, 0x19, 0x49, 0xA4, 0xFB, 0x03, 0x43, 0x9B, 0x0C, 0x43, 0xF0, 0x00, 0x44, 0x44, 0xF4, 0xA0, 0x14, 0x43, 0xF4, -0xA0, 0x13, 0x03, 0x60, 0x04, 0x60, 0x03, 0x60, 0x53, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0x43, 0xF4, 0xC4, 0x33, 0x43, 0xF0, -0x02, 0x03, 0x4F, 0xF4, 0x80, 0x50, 0x53, 0x60, 0xC1, 0xF8, 0x34, 0x01, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x13, 0x60, -0x4B, 0x6F, 0x43, 0xF0, 0x01, 0x03, 0x4B, 0x67, 0x53, 0x6C, 0x43, 0xF0, 0x08, 0x43, 0x53, 0x64, 0x53, 0x6D, 0x23, 0xF4, -0x00, 0x13, 0x53, 0x65, 0x53, 0x6D, 0x43, 0xF0, 0x02, 0x03, 0x53, 0x65, 0x53, 0x6D, 0x23, 0xF4, 0x00, 0x63, 0x53, 0x65, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x50, 0x40, 0x00, 0x60, 0x50, 0x40, 0x18, 0x13, 0x17, 0x00, 0x83, 0xDE, 0x1B, 0x43, -0x08, 0x00, 0x58, 0x40, 0x3B, 0x4A, 0x3C, 0x48, 0x13, 0x68, 0x3C, 0x49, 0xDF, 0xF8, 0x24, 0xC1, 0x43, 0xF0, 0x7C, 0x53, -0xF0, 0xB4, 0x13, 0x60, 0x39, 0x4C, 0x3A, 0x4B, 0x23, 0x60, 0x03, 0xF1, 0xBE, 0x43, 0xA3, 0xF5, 0x69, 0x03, 0xA3, 0xF6, -0x77, 0x33, 0x03, 0x60, 0x36, 0x4B, 0x0B, 0x60, 0x36, 0x4F, 0x37, 0x4E, 0x37, 0x4D, 0x40, 0xF6, 0x77, 0x13, 0xCC, 0xF8, -0x00, 0x30, 0x36, 0x4B, 0x3B, 0x60, 0x04, 0xF5, 0x00, 0x24, 0x01, 0xF5, 0x2F, 0x11, 0x00, 0xF5, 0x2F, 0x10, 0x49, 0xF2, -0x02, 0x43, 0x02, 0xF5, 0x00, 0x22, 0x33, 0x60, 0x0C, 0x34, 0x30, 0x4B, 0x2B, 0x60, 0x01, 0xF5, 0x05, 0x61, 0x00, 0xF6, -0x58, 0x00, 0x02, 0xF6, 0x7C, 0x02, 0x07, 0xF5, 0x2F, 0x17, 0x2C, 0x4D, 0x25, 0x60, 0x07, 0xF6, 0x68, 0x07, 0x0B, 0x60, -0x06, 0xF5, 0x37, 0x16, 0x03, 0x60, 0x13, 0x60, 0x40, 0xF6, 0x34, 0x03, 0x3B, 0x60, 0x06, 0xF2, 0xE4, 0x46, 0x26, 0x4B, -0x33, 0x60, 0x01, 0xF5, 0xFE, 0x31, 0x03, 0xF1, 0x50, 0x53, 0x88, 0x31, 0x03, 0xF5, 0x54, 0x13, 0x0F, 0x33, 0x0B, 0x60, -0x00, 0xF5, 0xFE, 0x30, 0x03, 0xF1, 0x48, 0x43, 0x1F, 0x4D, 0x00, 0xF5, 0x90, 0x70, 0x02, 0xF5, 0xFE, 0x32, 0xA3, 0xF5, -0x78, 0x13, 0x02, 0xF5, 0xB4, 0x72, 0xA3, 0xF2, 0x1F, 0x63, 0x4F, 0xF0, 0x36, 0x36, 0x2B, 0x60, 0x06, 0x60, 0x4F, 0xF4, -0x7F, 0x40, 0x10, 0x60, 0x04, 0xF5, 0x01, 0x34, 0x02, 0xF1, 0xAC, 0x42, 0x20, 0x34, 0x15, 0x4B, 0x15, 0x4D, 0x25, 0x60, -0xA2, 0xF5, 0xB5, 0x12, 0x45, 0xF2, 0x55, 0x30, 0xA2, 0xF6, 0x8A, 0x62, 0xC1, 0xF8, 0xA8, 0x00, 0xF0, 0xBC, 0x1A, 0x60, -0x70, 0x47, 0x00, 0xBF, 0x0C, 0x00, 0x58, 0x40, 0x2C, 0x40, 0x34, 0x40, 0x30, 0x40, 0x34, 0x40, 0x04, 0x01, 0x58, 0x40, -0xFB, 0x23, 0x09, 0x00, 0x08, 0x51, 0x2E, 0x1A, 0x24, 0x40, 0x34, 0x40, 0x28, 0x40, 0x34, 0x40, 0x8C, 0x04, 0x60, 0x40, -0x94, 0xC5, 0x2E, 0x00, 0x34, 0x08, 0x50, 0x00, 0x58, 0x00, 0x7E, 0x02, 0x13, 0x20, 0x20, 0x20, 0xA0, 0x05, 0x62, 0x40, -0x1C, 0x05, 0x62, 0x40, 0x0F, 0x12, 0x15, 0x0C, 0x20, 0x40, 0x34, 0x40, 0x63, 0x49, 0x64, 0x4A, 0x0B, 0x68, 0x23, 0xF4, -0x00, 0x63, 0xF0, 0xB4, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, -0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0xDF, 0xF8, 0x6C, 0xC1, 0x5B, 0x4A, 0xDC, 0xF8, 0x00, 0x30, 0x5A, 0x4F, 0x5B, 0x4E, -0x23, 0xF4, 0x80, 0x53, 0xCC, 0xF8, 0x00, 0x30, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x13, 0x60, 0xDC, 0xF8, 0x00, 0x30, -0x43, 0xF4, 0x80, 0x63, 0xCC, 0xF8, 0x00, 0x30, 0xDC, 0xF8, 0x00, 0x30, 0x43, 0xF4, 0x00, 0x63, 0xCC, 0xF8, 0x00, 0x30, -0x62, 0x46, 0xFF, 0x25, 0x2B, 0x1D, 0x2C, 0x46, 0xDD, 0xB2, 0x29, 0x46, 0x38, 0x46, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, -0x0B, 0x43, 0x13, 0x60, 0x50, 0xF8, 0x04, 0x3B, 0x33, 0x60, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, -0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x13, 0x68, 0x9B, 0x04, 0xFC, 0xD5, 0x01, 0x39, 0xC9, 0xB2, 0xA1, 0x42, 0xE8, 0xD1, -0x8F, 0x2D, 0x07, 0xF1, 0x10, 0x07, 0xDF, 0xD1, 0xDC, 0xF8, 0x00, 0x30, 0x23, 0xF4, 0x80, 0x63, 0xCC, 0xF8, 0x00, 0x30, -0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x36, 0x4D, 0x37, 0x49, 0x2A, 0x68, 0x39, 0x48, -0x39, 0x4C, 0x22, 0xF4, 0x00, 0x62, 0x2A, 0x60, 0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, 0x0A, 0x68, 0x42, 0xF4, -0x80, 0x72, 0x0A, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x1F, 0x02, 0x1A, 0x43, 0x0A, 0x60, 0x50, 0xF8, 0x04, 0x2F, 0x22, 0x60, -0x0A, 0x68, 0x42, 0xF0, 0x20, 0x02, 0x0A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x0A, 0x68, 0x52, 0x05, -0xFC, 0xD5, 0x01, 0x33, 0x20, 0x2B, 0xE9, 0xD1, 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x0B, 0x60, 0xC8, 0x23, 0x00, 0xBF, -0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x1F, 0x4C, 0x24, 0x48, 0x22, 0x68, 0x24, 0x49, 0x24, 0x4D, 0x22, 0xF4, -0x80, 0x72, 0x22, 0x60, 0x02, 0x68, 0x22, 0xF0, 0x02, 0x02, 0x02, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x80, 0x62, 0x0A, 0x60, -0x32, 0x22, 0x2B, 0x60, 0x00, 0xBF, 0x01, 0x3A, 0x92, 0xB2, 0x00, 0x2A, 0xFA, 0xD1, 0x13, 0x49, 0x13, 0x4A, 0x08, 0x68, -0x1A, 0x4D, 0x1B, 0x4C, 0x1B, 0x4B, 0x40, 0xF4, 0x80, 0x50, 0x08, 0x60, 0x08, 0x68, 0x40, 0xF4, 0x00, 0x60, 0x08, 0x60, -0x11, 0x68, 0x41, 0xF4, 0x00, 0x71, 0x11, 0x60, 0x11, 0x68, 0x41, 0xF4, 0x80, 0x71, 0x11, 0x60, 0x2A, 0x68, 0x42, 0xF4, -0x80, 0x52, 0x2A, 0x60, 0x22, 0x68, 0x22, 0xF4, 0x80, 0x22, 0x22, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x00, 0x52, 0x1A, 0x60, -0x1A, 0x68, 0x42, 0xF0, 0x80, 0x42, 0xF0, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x60, 0x40, 0x34, 0x40, 0x6C, 0x40, 0x34, 0x40, -0x1C, 0x13, 0x17, 0x00, 0x64, 0x40, 0x34, 0x40, 0x18, 0x18, 0x17, 0x00, 0x70, 0x40, 0x34, 0x40, 0x18, 0x00, 0x58, 0x40, -0x58, 0x40, 0x34, 0x40, 0x08, 0x40, 0x34, 0x40, 0x14, 0x20, 0x34, 0x40, 0x18, 0x20, 0x34, 0x40, 0x1C, 0x20, 0x34, 0x40, -0x10, 0xB5, 0x09, 0x4C, 0x82, 0xB0, 0xD4, 0xF8, 0xC0, 0x34, 0x01, 0x90, 0x98, 0x47, 0xD4, 0xF8, 0xC4, 0x34, 0x98, 0x47, -0xD4, 0xF8, 0xC8, 0x34, 0x98, 0x47, 0xD4, 0xF8, 0xCC, 0x34, 0x00, 0x21, 0x01, 0xA8, 0x98, 0x47, 0x02, 0xB0, 0x10, 0xBD, -0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x2D, 0x4C, 0x23, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x17, 0xD0, 0x0F, 0x24, 0x4F, 0xF4, -0x00, 0x62, 0x11, 0x46, 0x29, 0x48, 0xFD, 0xF7, 0x61, 0xFA, 0x4F, 0xF4, 0x40, 0x72, 0x28, 0x48, 0x00, 0x21, 0xFD, 0xF7, -0x5B, 0xFA, 0x21, 0x46, 0x26, 0x48, 0xFD, 0xF7, 0x2F, 0xFA, 0x02, 0x22, 0xBD, 0xE8, 0x10, 0x40, 0x24, 0x48, 0x11, 0x46, -0xFD, 0xF7, 0x50, 0xBA, 0x04, 0xF0, 0x2E, 0xFD, 0x22, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0xC3, 0xF8, 0x80, 0x20, 0xBF, 0xF3, -0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, 0x1F, 0x48, 0x1F, 0xF0, 0x52, 0xFB, 0x1E, 0x4A, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF0, -0x02, 0x03, 0xC2, 0xF8, 0x04, 0x38, 0x13, 0x69, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x61, 0x13, 0x69, 0xDB, 0x07, 0xFC, 0xD4, -0x18, 0x48, 0x1F, 0xF0, 0x41, 0xFB, 0x18, 0x4A, 0x18, 0x48, 0x4F, 0xF4, 0x00, 0x21, 0xFD, 0xF7, 0x2B, 0xFA, 0x17, 0x4B, -0x4F, 0xF4, 0x80, 0x61, 0x4F, 0xF4, 0x00, 0x02, 0xC3, 0xF8, 0x28, 0x11, 0xC3, 0xF8, 0x18, 0x21, 0x23, 0x68, 0x1B, 0x78, -0x02, 0x2B, 0xB5, 0xD1, 0x04, 0xF0, 0xB6, 0xFE, 0x00, 0x28, 0xB1, 0xD0, 0x0F, 0x4B, 0x10, 0x48, 0xD3, 0xF8, 0x00, 0x41, -0x21, 0x46, 0x1F, 0xF0, 0x23, 0xFB, 0xAA, 0xE7, 0x78, 0x36, 0x17, 0x00, 0x0C, 0x88, 0x01, 0x50, 0x14, 0x88, 0x01, 0x50, -0x00, 0x70, 0x01, 0x50, 0x08, 0x70, 0x01, 0x50, 0x00, 0xE1, 0x00, 0xE0, 0x9C, 0x7C, 0x15, 0x00, 0x00, 0x00, 0x20, 0x40, -0xA8, 0x7C, 0x15, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x90, 0x01, 0x50, 0x00, 0x00, 0x10, 0x40, 0x2C, 0x19, 0x17, 0x00, -0xB8, 0x7C, 0x15, 0x00, 0x38, 0xB5, 0x36, 0x4C, 0x36, 0x48, 0x44, 0x22, 0x00, 0x21, 0xFB, 0xF7, 0x91, 0xF8, 0x23, 0x68, -0x1A, 0x07, 0xC3, 0xF3, 0xC0, 0x01, 0x51, 0xD5, 0x22, 0x46, 0x00, 0xBF, 0x13, 0x68, 0xDB, 0x06, 0xFB, 0xD5, 0x30, 0x4D, -0x30, 0x48, 0x29, 0x68, 0x30, 0x4B, 0x00, 0x68, 0x30, 0x4A, 0xC1, 0xF8, 0x44, 0x02, 0x00, 0x21, 0x19, 0x60, 0x11, 0x60, -0x19, 0x68, 0x2E, 0x48, 0x2E, 0x4C, 0x21, 0xF0, 0x03, 0x01, 0x41, 0xF0, 0x02, 0x01, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF0, -0x0C, 0x01, 0x41, 0xF0, 0x08, 0x01, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF4, 0x40, 0x71, 0x41, 0xF4, 0x00, 0x71, 0x19, 0x60, -0x19, 0x68, 0x21, 0xF4, 0x40, 0x61, 0x41, 0xF4, 0x00, 0x61, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF4, 0x40, 0x51, 0x41, 0xF4, -0x00, 0x51, 0x19, 0x60, 0x11, 0x68, 0x21, 0xF0, 0x40, 0x51, 0x41, 0xF0, 0x00, 0x51, 0x11, 0x60, 0x11, 0x68, 0x21, 0xF0, -0x40, 0x41, 0x41, 0xF0, 0x00, 0x41, 0x11, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x40, 0x32, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, -0x40, 0x22, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x40, 0x12, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x40, 0x02, 0x1A, 0x60, -0x1A, 0x68, 0x42, 0xF0, 0x40, 0x72, 0x1A, 0x60, 0x04, 0x60, 0x38, 0xBD, 0x23, 0x68, 0x09, 0x4D, 0x43, 0xF0, 0x08, 0x03, -0x23, 0x60, 0x28, 0x68, 0x4F, 0xF4, 0x12, 0x72, 0xFB, 0xF7, 0x30, 0xF8, 0x23, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x23, 0x60, -0xA4, 0xE7, 0x00, 0xBF, 0x80, 0x40, 0x04, 0x40, 0x04, 0x35, 0x17, 0x00, 0x00, 0x38, 0x18, 0x00, 0x84, 0x1A, 0x17, 0x00, -0x14, 0x41, 0x04, 0x40, 0x18, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x33, 0x1F, 0x00, 0xC0, 0x0C, 0x4B, 0x10, 0xB5, -0x1C, 0x68, 0x14, 0xF4, 0xF8, 0x54, 0x00, 0xD1, 0x10, 0xBD, 0x60, 0x08, 0x1E, 0xF0, 0x02, 0xF8, 0x08, 0x4A, 0x09, 0x49, -0x09, 0x4B, 0x0C, 0x60, 0x14, 0x60, 0x1A, 0x78, 0x00, 0x2A, 0xF3, 0xD0, 0x07, 0x4A, 0x01, 0x21, 0x59, 0x70, 0x13, 0x68, -0x0B, 0x43, 0x13, 0x60, 0x10, 0xBD, 0x00, 0xBF, 0x1C, 0x41, 0x04, 0x40, 0x08, 0x41, 0x04, 0x40, 0x10, 0x41, 0x04, 0x40, -0x3C, 0x36, 0x17, 0x00, 0x10, 0x00, 0x58, 0x40, 0x2D, 0xE9, 0xF8, 0x4F, 0x29, 0x4B, 0x06, 0x46, 0x53, 0xF8, 0x20, 0x00, -0x1E, 0xF0, 0x04, 0xF8, 0x27, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x26, 0x4B, 0xD3, 0xF8, 0x00, 0xA0, 0xDA, 0xF8, -0x3C, 0x32, 0x0A, 0xF5, 0x0F, 0x7B, 0x8B, 0xB3, 0x23, 0x4D, 0xDF, 0xF8, 0x98, 0x90, 0xDF, 0xF8, 0x98, 0x80, 0x05, 0xF2, -0x14, 0x57, 0x1D, 0xE0, 0x95, 0xF8, 0x10, 0x35, 0x85, 0xF8, 0x11, 0x45, 0x01, 0x33, 0xA9, 0xFB, 0x03, 0x24, 0xA4, 0x09, -0x04, 0xEB, 0xC4, 0x04, 0x04, 0xEB, 0xC4, 0x04, 0x1C, 0x1B, 0x85, 0xF8, 0x10, 0x45, 0x1E, 0xF0, 0xA1, 0xF8, 0xD8, 0xF8, -0x00, 0x20, 0x05, 0xEB, 0x04, 0x11, 0x02, 0x44, 0xC1, 0xE9, 0x01, 0x26, 0x38, 0x46, 0x1E, 0xF0, 0x53, 0xF8, 0xDA, 0xF8, -0x3C, 0x32, 0x5B, 0xB1, 0x95, 0xF8, 0x11, 0x15, 0x95, 0xF8, 0x12, 0x25, 0x91, 0x42, 0x58, 0x46, 0x01, 0xF1, 0x01, 0x04, -0xD8, 0xD3, 0x0D, 0x48, 0x01, 0xF0, 0x54, 0xF8, 0x08, 0x4B, 0x01, 0x24, 0x1C, 0x60, 0x20, 0x20, 0x08, 0x36, 0x1D, 0xF0, -0x9B, 0xFF, 0x04, 0xFA, 0x06, 0xF6, 0x08, 0x4B, 0x06, 0xF4, 0xF8, 0x56, 0x1E, 0x60, 0xBD, 0xE8, 0xF8, 0x8F, 0x00, 0xBF, -0x80, 0x7E, 0x15, 0x00, 0x4C, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0x58, 0x58, 0x17, 0x00, 0xCC, 0x7C, 0x15, 0x00, -0x0C, 0x41, 0x04, 0x40, 0xE7, 0x87, 0x45, 0xCA, 0x84, 0x1A, 0x17, 0x00, 0x1D, 0x4B, 0x10, 0xB5, 0x1C, 0x68, 0xA0, 0x06, -0x2C, 0xD4, 0xE1, 0x06, 0x20, 0xD4, 0xA2, 0x07, 0x16, 0xD4, 0x63, 0x00, 0x08, 0xD5, 0x19, 0x4B, 0x01, 0x20, 0xD3, 0xF8, -0x78, 0x34, 0x98, 0x47, 0x17, 0x4B, 0x4F, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x00, 0x2C, 0x00, 0xDB, 0x10, 0xBD, 0x13, 0x4B, -0xD3, 0xF8, 0x68, 0x34, 0x98, 0x47, 0x12, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x1A, 0x60, 0x10, 0xBD, 0x4F, 0xF0, 0x80, 0x50, -0x1D, 0xF0, 0x5E, 0xFF, 0x0E, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0xE0, 0xE7, 0x0C, 0x49, 0x0B, 0x4A, 0x10, 0x23, 0x0B, 0x60, -0x4F, 0xF4, 0x00, 0x10, 0x13, 0x60, 0x1D, 0xF0, 0x51, 0xFF, 0xD4, 0xE7, 0x07, 0x49, 0x06, 0x4A, 0x20, 0x23, 0x0B, 0x60, -0x4F, 0xF4, 0x80, 0x10, 0x13, 0x60, 0x1D, 0xF0, 0x47, 0xFF, 0xC8, 0xE7, 0x1C, 0x41, 0x04, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x08, 0x41, 0x04, 0x40, 0x10, 0x41, 0x04, 0x40, 0x06, 0x4A, 0x07, 0x49, 0x12, 0x68, 0xD2, 0xF8, 0x24, 0x02, 0x20, 0x23, -0x0B, 0x60, 0x08, 0xB1, 0x01, 0x20, 0x70, 0x47, 0x03, 0x4A, 0x13, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x38, 0x18, 0x00, -0x08, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x10, 0xB5, 0x15, 0x4C, 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x14, 0x4B, -0x18, 0x68, 0xD0, 0xF8, 0x24, 0x32, 0xBB, 0xB1, 0x00, 0xF5, 0x09, 0x70, 0x1E, 0xF0, 0x02, 0xF8, 0x10, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x01, 0x22, 0x00, 0x2B, 0x22, 0x60, 0x01, 0xDB, 0x14, 0x30, 0x10, 0xBD, 0x00, 0x28, 0xFB, 0xD1, -0x0B, 0x49, 0x0C, 0x48, 0x40, 0xF2, 0x92, 0x32, 0x1F, 0xF0, 0x00, 0xFC, 0x14, 0x20, 0x10, 0xBD, 0x06, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x01, 0x22, 0x00, 0x2B, 0x22, 0x60, 0xF5, 0xDA, 0xEE, 0xE7, 0x00, 0xBF, 0x54, 0x40, 0x04, 0x40, -0x00, 0x38, 0x18, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xE4, 0x7C, 0x15, 0x00, 0x10, 0xB5, 0x0A, 0x4C, -0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x09, 0x4B, 0x1B, 0x68, 0xD3, 0xF8, 0x14, 0x02, 0x40, 0xB1, 0x03, 0xF5, 0x05, 0x70, -0x1D, 0xF0, 0xCC, 0xFF, 0x01, 0x23, 0x23, 0x60, 0x00, 0xB1, 0x04, 0x30, 0x10, 0xBD, 0x01, 0x23, 0x23, 0x60, 0x10, 0xBD, -0x58, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0x70, 0x47, 0x00, 0xBF, 0x01, 0x4B, 0x08, 0x22, 0x1A, 0x60, 0x70, 0x47, -0x00, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x4F, 0xF4, 0x80, 0x72, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x41, 0x04, 0x40, -0x01, 0x4B, 0x80, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x00, 0x41, 0x04, 0x40, 0xF8, 0xB5, 0x04, 0x46, 0x40, 0x89, 0x29, 0x4F, -0x10, 0x30, 0x1D, 0xF0, 0xA3, 0xFB, 0x3E, 0x68, 0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x22, 0xDB, 0xA3, 0x88, -0x62, 0x89, 0xE0, 0x88, 0xAB, 0x80, 0x00, 0x21, 0x0C, 0x23, 0x2B, 0x81, 0x6A, 0x81, 0xE8, 0x80, 0x29, 0x60, 0xE3, 0x18, -0x62, 0xB1, 0x01, 0x3A, 0x22, 0xF0, 0x03, 0x02, 0x10, 0x32, 0x14, 0x44, 0x05, 0xF1, 0x08, 0x02, 0x53, 0xF8, 0x04, 0x1B, -0x42, 0xF8, 0x04, 0x1F, 0xA3, 0x42, 0xF9, 0xD1, 0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0F, 0xDB, 0x05, 0xF1, 0x0C, 0x00, -0xBD, 0xE8, 0xF8, 0x40, 0x1D, 0xF0, 0xD8, 0xBA, 0x00, 0x28, 0xDA, 0xD1, 0x12, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x6F, 0x42, -0x1F, 0xF0, 0x82, 0xFB, 0x3E, 0x68, 0xD2, 0xE7, 0x0D, 0x28, 0x0D, 0xD8, 0x0B, 0x28, 0xEB, 0xD9, 0x0C, 0x49, 0x0E, 0x48, -0x4F, 0xF4, 0x90, 0x62, 0x1F, 0xF0, 0x76, 0xFB, 0x05, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, 0xF8, 0x40, 0x1D, 0xF0, 0xBE, 0xBA, -0x06, 0x49, 0x09, 0x48, 0xBB, 0x22, 0x1F, 0xF0, 0x6B, 0xFB, 0x04, 0x49, 0x05, 0x48, 0x4F, 0xF4, 0x90, 0x62, 0x1F, 0xF0, -0x65, 0xFB, 0xED, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x7C, 0x15, 0x00, 0x20, 0x7D, 0x15, 0x00, -0x10, 0x7D, 0x15, 0x00, 0xF8, 0xB5, 0x05, 0x46, 0x40, 0x89, 0x2B, 0x4F, 0x10, 0x30, 0x1D, 0xF0, 0x43, 0xFB, 0x3E, 0x68, -0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x2A, 0xDB, 0xAB, 0x88, 0x6A, 0x89, 0xEF, 0x88, 0xA3, 0x80, 0x00, 0x21, -0x0C, 0x23, 0x23, 0x81, 0x62, 0x81, 0xE7, 0x80, 0x21, 0x60, 0xEB, 0x18, 0x62, 0xB1, 0x01, 0x3A, 0x22, 0xF0, 0x03, 0x02, -0x10, 0x32, 0x2A, 0x44, 0x04, 0xF1, 0x08, 0x01, 0x53, 0xF8, 0x04, 0x0B, 0x41, 0xF8, 0x04, 0x0F, 0x93, 0x42, 0xF9, 0xD1, -0x1A, 0x4A, 0x53, 0x7D, 0x59, 0x1C, 0x51, 0x75, 0x2B, 0x81, 0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x12, 0xDB, 0x17, 0x4B, -0x04, 0x22, 0x04, 0xF1, 0x0C, 0x00, 0x1A, 0x60, 0xBD, 0xE8, 0xF8, 0x40, 0x1D, 0xF0, 0x70, 0xBA, 0x00, 0x28, 0xD2, 0xD1, -0x12, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x8E, 0x42, 0x1F, 0xF0, 0x1A, 0xFB, 0x3E, 0x68, 0xCA, 0xE7, 0x0D, 0x2F, 0x08, 0xD8, -0x0B, 0x2F, 0xE8, 0xD9, 0x0C, 0x49, 0x0E, 0x48, 0x40, 0xF2, 0xA3, 0x42, 0x1F, 0xF0, 0x0E, 0xFB, 0xE1, 0xE7, 0x09, 0x49, -0x0B, 0x48, 0xBB, 0x22, 0x1F, 0xF0, 0x08, 0xFB, 0x06, 0x49, 0x08, 0x48, 0x40, 0xF2, 0xA3, 0x42, 0x1F, 0xF0, 0x02, 0xFB, -0xD5, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x04, 0x35, 0x17, 0x00, 0x00, 0x41, 0x04, 0x40, 0x70, 0x79, 0x15, 0x00, -0xFC, 0x7C, 0x15, 0x00, 0x20, 0x7D, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0xF8, 0xB5, 0x0B, 0x4C, 0x23, 0x68, 0x9A, 0x07, -0x0A, 0xD5, 0x0A, 0x4F, 0x0A, 0x4E, 0x02, 0x25, 0x38, 0x68, 0x35, 0x60, 0x04, 0x30, 0xFF, 0xF7, 0x8B, 0xFF, 0x23, 0x68, -0x9B, 0x07, 0xF7, 0xD4, 0x4F, 0xF0, 0x80, 0x50, 0x1D, 0xF0, 0x0C, 0xFE, 0x04, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0xF8, 0xBD, -0x04, 0x41, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0x08, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x47, -0xDF, 0xF8, 0x20, 0x93, 0xD9, 0xF8, 0x00, 0x20, 0x13, 0x78, 0x03, 0x2B, 0x82, 0xB0, 0x04, 0x46, 0x00, 0xF0, 0x16, 0x81, -0x00, 0x27, 0x3E, 0x46, 0x01, 0x2B, 0x00, 0xF0, 0xC2, 0x80, 0x02, 0x2B, 0x4F, 0xF0, 0x00, 0x05, 0x00, 0xF0, 0xD3, 0x80, -0x62, 0x89, 0xA3, 0x88, 0x33, 0x80, 0xF2, 0x80, 0x7A, 0xB9, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x03, 0x2B, 0x1C, 0xD0, -0x02, 0x2B, 0x2F, 0xD0, 0x01, 0x2B, 0x00, 0xF0, 0x89, 0x80, 0x20, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x47, 0x1D, 0xF0, -0x41, 0xBA, 0xA3, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x20, 0x81, 0x06, 0xF1, 0x0C, 0x00, -0x04, 0xF1, 0x0C, 0x01, 0x31, 0xF0, 0x40, 0xFD, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x03, 0x2B, 0xE2, 0xD1, 0x9B, 0x4E, -0x33, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x9A, 0x4B, 0x18, 0x68, 0x39, 0x1F, 0x00, 0xF5, 0x03, 0x70, 0x1D, 0xF0, 0x36, 0xFE, -0x97, 0x4B, 0x01, 0x21, 0x02, 0x22, 0x31, 0x60, 0x1A, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x02, 0x2B, 0xCF, 0xD1, -0x60, 0x89, 0x10, 0xF0, 0x03, 0x03, 0x40, 0xF0, 0xE9, 0x80, 0x19, 0x46, 0x9C, 0x46, 0x90, 0x4E, 0x42, 0xF2, 0x34, 0x03, -0xF2, 0x5A, 0xB2, 0xF5, 0xC3, 0x7F, 0x00, 0xF2, 0xFD, 0x80, 0x57, 0x1C, 0xBF, 0xB2, 0x4F, 0xEA, 0xC2, 0x0E, 0x8B, 0x4B, -0xA8, 0xF8, 0x0C, 0x20, 0xD3, 0xF8, 0x00, 0xA0, 0x00, 0xF1, 0x10, 0x03, 0x0A, 0xEB, 0x0E, 0x00, 0x0C, 0xEB, 0x03, 0x02, -0x45, 0x60, 0x2A, 0xF8, 0x0E, 0x20, 0xC2, 0x78, 0x02, 0xF0, 0x31, 0x02, 0x42, 0xF0, 0x04, 0x02, 0xC2, 0x70, 0x96, 0xF8, -0x02, 0x2C, 0x42, 0xF2, 0x34, 0x0C, 0x0B, 0x44, 0x01, 0x32, 0x01, 0x21, 0x4F, 0xF0, 0x00, 0x0E, 0x26, 0xF8, 0x0C, 0x70, -0x86, 0xF8, 0x02, 0x2C, 0xC8, 0xE9, 0x01, 0x03, 0x88, 0xF8, 0x0E, 0x10, 0xC8, 0xF8, 0x00, 0xE0, 0xEF, 0xF3, 0x10, 0x83, -0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x76, 0x4B, 0x19, 0x60, 0x76, 0x4E, 0x76, 0x48, 0x33, 0x68, 0x41, 0x46, 0x01, 0x33, -0x33, 0x60, 0x1D, 0xF0, 0xE3, 0xFD, 0x74, 0x4B, 0xD3, 0xF8, 0x44, 0x34, 0x98, 0x47, 0x33, 0x68, 0x33, 0xB1, 0x6E, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x01, 0x2B, -0x7F, 0xF4, 0x77, 0xAF, 0x01, 0xF0, 0xF2, 0xFF, 0x00, 0x28, 0x00, 0xF0, 0x0C, 0x81, 0xA1, 0x7A, 0x68, 0x4A, 0x0C, 0x31, -0x29, 0x70, 0x61, 0x89, 0x0C, 0x31, 0x00, 0x27, 0x09, 0x12, 0x11, 0x26, 0x69, 0x70, 0xAE, 0x70, 0xEF, 0x70, 0x61, 0x89, -0x86, 0x68, 0x47, 0x60, 0x10, 0x31, 0xC1, 0xF3, 0x0B, 0x01, 0x32, 0x40, 0x0A, 0x43, 0x42, 0xF0, 0x00, 0x42, 0x05, 0x60, -0x82, 0x60, 0x03, 0xF0, 0x35, 0xF8, 0x20, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x47, 0x1D, 0xF0, 0x99, 0xB9, 0x63, 0x89, -0x6C, 0x2B, 0x40, 0xF2, 0x8C, 0x80, 0x58, 0x4B, 0x1B, 0x68, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, 0x05, 0x46, -0x00, 0x2D, 0x00, 0xF0, 0x8A, 0x80, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x02, 0x2B, 0x05, 0xF1, 0x04, 0x06, 0x7F, 0xF4, -0x2D, 0xAF, 0x63, 0x89, 0x6C, 0x2B, 0x7A, 0xD9, 0x4D, 0x4B, 0x1B, 0x68, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, -0x05, 0x46, 0x00, 0x2D, 0x75, 0xD0, 0x42, 0x4A, 0x42, 0xF2, 0x24, 0x03, 0xD3, 0x58, 0x00, 0x2B, 0x00, 0xF0, 0x9A, 0x80, -0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x3E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x3D, 0x4E, 0x42, 0x48, -0x33, 0x68, 0x01, 0x33, 0x33, 0x60, 0x1D, 0xF0, 0xB7, 0xFD, 0x33, 0x68, 0x80, 0x46, 0x33, 0xB1, 0x37, 0x4A, 0x01, 0x3B, -0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xA3, 0x7A, 0x0C, 0x33, 0x2B, 0x70, 0x63, 0x89, 0x0C, 0x33, -0x1B, 0x12, 0x11, 0x22, 0x6B, 0x70, 0x00, 0x23, 0xAA, 0x70, 0xEB, 0x70, 0x2E, 0x1D, 0xF3, 0xE6, 0x28, 0x4D, 0x2B, 0x68, -0x00, 0x2B, 0xFC, 0xD0, 0x27, 0x4B, 0x18, 0x68, 0xD0, 0xF8, 0x04, 0x32, 0xD3, 0xB1, 0x00, 0xF5, 0x01, 0x70, 0x1D, 0xF0, -0x93, 0xFD, 0x21, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x01, 0x22, 0x00, 0x2B, 0x2A, 0x60, 0xC0, 0xF2, 0x8B, 0x80, -0x07, 0x1D, 0xD9, 0xF8, 0x00, 0x20, 0x3E, 0x46, 0x27, 0x4B, 0xB3, 0x60, 0x13, 0x78, 0xCD, 0xE6, 0xC3, 0xF1, 0x04, 0x03, -0x5F, 0xFA, 0x83, 0xFC, 0x61, 0x46, 0x12, 0xE7, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x01, 0x21, 0x00, 0x2B, -0x29, 0x60, 0xC0, 0xF2, 0x82, 0x80, 0x04, 0x26, 0x37, 0x46, 0xE9, 0xE7, 0xB2, 0xF5, 0x80, 0x6F, 0x7F, 0xF6, 0xDC, 0xAE, -0x4F, 0xF4, 0xB1, 0x62, 0x1A, 0x49, 0x1B, 0x48, 0x1F, 0xF0, 0x76, 0xF9, 0x62, 0x89, 0xD3, 0xE6, 0x4F, 0xF0, 0x00, 0x0E, -0x72, 0x46, 0x01, 0x27, 0x01, 0xE7, 0x01, 0xF0, 0xCF, 0xFF, 0x05, 0x46, 0x76, 0xE7, 0x05, 0xF0, 0x2B, 0xF8, 0x05, 0x46, -0x87, 0xE7, 0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x11, 0x48, 0x00, 0xF0, 0x1D, 0xFD, 0xB2, 0xE6, 0x38, 0x36, 0x17, 0x00, -0x50, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0x00, 0x41, 0x04, 0x40, 0x7C, 0x36, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0xF0, 0xFF, 0x7F, -0x1C, 0x58, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, 0x2A, 0xDE, 0xDE, 0xAD, 0x70, 0x79, 0x15, 0x00, 0xDC, 0x7D, 0x15, 0x00, -0x68, 0x7D, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x20, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0x1F, 0x4D, 0x20, 0x4A, 0x2B, 0x68, 0xD2, 0xF8, 0x44, 0x24, 0x01, 0x33, 0x2B, 0x60, 0x90, 0x47, -0x2A, 0x68, 0x03, 0x46, 0x32, 0xB1, 0x19, 0x49, 0x01, 0x3A, 0x09, 0x68, 0x2A, 0x60, 0x0A, 0xB9, 0x01, 0xB1, 0x62, 0xB6, -0x18, 0x48, 0x01, 0x93, 0x1D, 0xF0, 0x4E, 0xFD, 0x00, 0x90, 0x17, 0x48, 0x1D, 0xF0, 0x4A, 0xFD, 0xDD, 0xE9, 0x00, 0x13, -0x02, 0x46, 0x15, 0x48, 0x00, 0xF0, 0xD0, 0xFC, 0x65, 0xE6, 0x14, 0x48, 0x00, 0xF0, 0xCC, 0xFC, 0x61, 0xE6, 0x60, 0xB1, -0x07, 0x1D, 0x7F, 0xF4, 0x72, 0xAF, 0x40, 0xF2, 0x31, 0x52, 0x10, 0x49, 0x10, 0x48, 0x1F, 0xF0, 0x05, 0xF9, 0x3E, 0x46, -0xD9, 0xF8, 0x00, 0x20, 0x6A, 0xE7, 0x40, 0xF2, 0x26, 0x32, 0x0B, 0x49, 0x0C, 0x48, 0x04, 0x26, 0x1F, 0xF0, 0xFA, 0xF8, -0x37, 0x46, 0xD9, 0xF8, 0x00, 0x20, 0x5F, 0xE7, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xA0, 0x56, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, 0xA4, 0x7D, 0x15, 0x00, 0x08, 0x7E, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, -0x54, 0x7D, 0x15, 0x00, 0x44, 0x7D, 0x15, 0x00, 0x10, 0xB4, 0x15, 0x49, 0x15, 0x4C, 0x16, 0x4B, 0x4F, 0xF4, 0x4C, 0x02, -0x22, 0x60, 0x0A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x30, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0xC0, 0x02, 0x1A, 0x60, -0x1A, 0x68, 0x22, 0xF4, 0x40, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x4F, 0xF0, 0x60, 0x50, 0x22, 0xF4, 0x40, 0x42, 0x1A, 0x60, -0x20, 0x60, 0x08, 0x60, 0x1A, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0x22, 0xF4, 0x40, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, -0x40, 0x72, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x40, 0x62, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x0C, 0x40, 0x04, 0x40, -0x08, 0x40, 0x04, 0x40, 0x18, 0x40, 0x04, 0x40, 0x10, 0xB5, 0x01, 0x46, 0x04, 0x46, 0x05, 0x48, 0x1E, 0xF0, 0x30, 0xFE, -0x04, 0x4A, 0x05, 0x4B, 0x14, 0x60, 0x4F, 0xF0, 0x80, 0x72, 0x1A, 0x60, 0x10, 0xBD, 0x00, 0xBF, 0x2C, 0x7E, 0x15, 0x00, -0x98, 0x40, 0x04, 0x40, 0x00, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x4F, 0xF0, 0x00, 0x72, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, -0x00, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x4F, 0xF0, 0x80, 0x62, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x40, 0x04, 0x40, -0x08, 0xB5, 0x25, 0x4B, 0x19, 0x68, 0x4A, 0x03, 0x04, 0xD5, 0x4F, 0xF4, 0x80, 0x22, 0x43, 0xF8, 0x14, 0x2C, 0x08, 0xBD, -0x08, 0x03, 0x04, 0xD5, 0x20, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x08, 0xBD, 0x4A, 0x02, 0x0F, 0xD4, 0x0B, 0x02, -0x1D, 0xD4, 0x08, 0x01, 0x10, 0xD5, 0x1C, 0x4B, 0x1A, 0x4A, 0xDB, 0x7D, 0x4F, 0xF0, 0x00, 0x61, 0x01, 0x2B, 0x11, 0x60, -0xE9, 0xD1, 0xBD, 0xE8, 0x08, 0x40, 0x23, 0xF0, 0xED, 0xBE, 0x15, 0x4B, 0x4F, 0xF4, 0x80, 0x02, 0x1A, 0x60, 0x08, 0xBD, -0x11, 0xF0, 0x80, 0x53, 0x16, 0xD0, 0x12, 0x49, 0x10, 0x4B, 0x01, 0x20, 0x4F, 0xF0, 0x80, 0x52, 0x48, 0x75, 0x1A, 0x60, -0x08, 0xBD, 0x0D, 0x4B, 0x0E, 0x48, 0x4F, 0xF4, 0x00, 0x02, 0x1A, 0x60, 0x00, 0xF0, 0x0E, 0xFC, 0x03, 0x20, 0x00, 0xF0, -0x93, 0xFC, 0x0B, 0x4B, 0x4F, 0xF4, 0x80, 0x02, 0x1A, 0x60, 0x08, 0xBD, 0x8A, 0x00, 0xC4, 0xD5, 0x05, 0x49, 0x04, 0x4A, -0x4B, 0x75, 0x4F, 0xF0, 0x00, 0x53, 0x13, 0x60, 0x08, 0xBD, 0x00, 0xBF, 0x1C, 0x40, 0x04, 0x40, 0x08, 0x40, 0x04, 0x40, -0x4C, 0x36, 0x17, 0x00, 0x40, 0x7E, 0x15, 0x00, 0x00, 0x40, 0x04, 0x40, 0x15, 0x4B, 0xD3, 0xF8, 0x24, 0x31, 0x59, 0x06, -0x09, 0xD5, 0x10, 0xB5, 0x13, 0x4C, 0x23, 0x68, 0x1A, 0x07, 0x88, 0xB0, 0xC3, 0xF3, 0xC0, 0x00, 0x03, 0xD4, 0x08, 0xB0, -0x10, 0xBD, 0x01, 0x20, 0x70, 0x47, 0x0F, 0x49, 0x20, 0x22, 0x68, 0x46, 0x31, 0xF0, 0xC6, 0xFA, 0x0D, 0x4B, 0x1B, 0x68, -0x23, 0x68, 0xC3, 0xF3, 0x40, 0x00, 0x9B, 0x07, 0xEF, 0xD5, 0x0B, 0x4B, 0x0B, 0x4A, 0x4F, 0xF4, 0x00, 0x11, 0x19, 0x60, -0x10, 0x68, 0x10, 0xF4, 0x40, 0x13, 0xFB, 0xD0, 0x08, 0x4A, 0xC0, 0xF3, 0x00, 0x50, 0x13, 0x60, 0xE1, 0xE7, 0x00, 0xBF, -0x00, 0x00, 0x50, 0x40, 0x84, 0x40, 0x04, 0x40, 0x30, 0x95, 0x16, 0x00, 0x30, 0x60, 0x50, 0x40, 0x00, 0x40, 0x04, 0x40, -0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x04, 0x40, 0x01, 0x28, 0x06, 0xD0, 0x02, 0x28, 0x09, 0xD1, 0x0B, 0x4B, 0x4F, 0xF4, -0x00, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x09, 0x4B, 0x4F, 0xF4, 0x80, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x07, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x52, 0x72, 0x1E, 0xF0, -0xE1, 0xBF, 0x00, 0xBF, 0x00, 0x40, 0x04, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, -0x38, 0xB5, 0x22, 0x48, 0xFC, 0xF7, 0xFA, 0xFB, 0x83, 0x07, 0x23, 0xD5, 0x20, 0x48, 0x00, 0xF0, 0x8B, 0xFB, 0x20, 0x48, -0xFC, 0xF7, 0xF2, 0xFB, 0x04, 0x46, 0x1F, 0x48, 0xFC, 0xF7, 0xEE, 0xFB, 0x03, 0x46, 0x1D, 0x48, 0x1C, 0x40, 0xFC, 0xF7, -0xE9, 0xFB, 0x84, 0x42, 0x1F, 0xD0, 0x05, 0x20, 0x00, 0xF0, 0x14, 0xFC, 0x01, 0x28, 0x04, 0x46, 0x17, 0xD0, 0x03, 0x20, -0x00, 0xF0, 0x06, 0xFC, 0x02, 0x25, 0x21, 0x46, 0x15, 0x48, 0x00, 0xF0, 0x6F, 0xFB, 0x28, 0x46, 0xBD, 0xE8, 0x38, 0x40, -0xFF, 0xF7, 0xB2, 0xBF, 0x01, 0x46, 0x12, 0x48, 0x00, 0xF0, 0x66, 0xFB, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x08, 0xDB, 0x38, 0xBD, 0x05, 0x46, 0xE9, 0xE7, 0x20, 0x22, 0x0D, 0x48, 0x11, 0x46, 0xFC, 0xF7, 0x12, 0xFC, -0xD9, 0xE7, 0xBD, 0xE8, 0x38, 0x40, 0x0B, 0x49, 0x0B, 0x48, 0x4F, 0xF4, 0xD3, 0x62, 0x1E, 0xF0, 0x93, 0xBF, 0x00, 0xBF, -0x08, 0x30, 0x01, 0x50, 0x54, 0x7E, 0x15, 0x00, 0x20, 0x10, 0x01, 0x50, 0x18, 0x10, 0x01, 0x50, 0x60, 0x7E, 0x15, 0x00, -0x6C, 0x7E, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x24, 0x10, 0x01, 0x50, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, -0x02, 0x48, 0x38, 0x22, 0x00, 0x21, 0xFA, 0xF7, 0x91, 0xBA, 0x00, 0xBF, 0x48, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, -0x5D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x80, 0x46, 0x0F, 0x46, 0x16, 0x46, 0xC0, 0xF2, 0xA8, 0x80, -0x00, 0x23, 0x3B, 0x62, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x56, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0xB5, 0x01, 0x05, 0xF1, 0x80, 0x42, 0x02, 0xF5, 0xE2, 0x24, 0x53, 0x49, 0x23, 0x68, 0x08, 0x68, 0x43, 0xF0, 0x01, 0x03, -0x00, 0xF1, 0x01, 0x0C, 0x02, 0xF5, 0xE0, 0x22, 0x23, 0x60, 0xC1, 0xF8, 0x00, 0xC0, 0x23, 0x68, 0xDB, 0x03, 0xFC, 0xD5, -0xDF, 0xF8, 0x38, 0xE1, 0x5E, 0xF8, 0x26, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x0A, 0xD0, 0x05, 0xF1, 0x80, 0x43, 0x03, 0xF5, -0xE0, 0x23, 0x41, 0xF2, 0x0C, 0x0A, 0x53, 0xF8, 0x0A, 0xA0, 0x1A, 0xF4, 0x00, 0x6F, 0x61, 0xD0, 0x05, 0xF1, 0x80, 0x43, -0x03, 0xF5, 0xE0, 0x23, 0x41, 0xF2, 0x08, 0x09, 0xDF, 0xF8, 0x0C, 0xA1, 0x43, 0xF8, 0x09, 0xA0, 0x41, 0xF2, 0x0C, 0x05, -0x4F, 0xF0, 0x14, 0x0A, 0x43, 0xF8, 0x05, 0xA0, 0x41, 0xF2, 0x10, 0x0B, 0x41, 0xF2, 0x14, 0x0A, 0x00, 0x25, 0x43, 0xF8, -0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, 0x18, 0x0B, 0x41, 0xF2, 0x1C, 0x0A, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, -0x0A, 0x50, 0x03, 0xF5, 0x81, 0x5B, 0x41, 0xF2, 0x24, 0x0A, 0xCB, 0xF8, 0x00, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, -0x28, 0x0B, 0x41, 0xF2, 0x2C, 0x0A, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, 0x34, 0x0B, 0x41, 0xF2, -0x38, 0x0A, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, 0x3C, 0x0B, 0x41, 0xF2, 0x30, 0x0A, 0x43, 0xF8, -0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x80, 0xBD, 0x68, 0x45, 0xF4, 0x00, 0x25, 0xBD, 0x60, 0x53, 0xF8, 0x09, 0x50, 0x45, 0xF0, -0x01, 0x05, 0x43, 0xF8, 0x09, 0x50, 0x41, 0xF2, 0x04, 0x05, 0x53, 0x59, 0x43, 0xF0, 0x01, 0x03, 0x53, 0x51, 0x23, 0x68, -0x4E, 0xF8, 0x26, 0x70, 0x23, 0xF0, 0x01, 0x03, 0x23, 0x60, 0xBC, 0xF1, 0x00, 0x0F, 0x05, 0xD0, 0x14, 0x4B, 0x08, 0x60, -0x1B, 0x68, 0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, 0x41, 0xF2, 0x18, 0x02, 0x9D, 0x58, 0x2D, 0x03, -0x07, 0xD5, 0x9D, 0x58, 0x41, 0xF2, 0x30, 0x0A, 0x25, 0xF4, 0x00, 0x25, 0x9D, 0x50, 0x43, 0xF8, 0x0A, 0x80, 0xD9, 0xF8, -0x08, 0x30, 0x23, 0xF4, 0x00, 0x23, 0xC9, 0xF8, 0x08, 0x30, 0xC9, 0xF8, 0x20, 0x80, 0xD8, 0xE7, 0x0D, 0x2A, 0x7F, 0xF7, -0x55, 0xAF, 0x06, 0x49, 0x06, 0x48, 0x4E, 0x22, 0x1E, 0xF0, 0xBA, 0xFE, 0x4E, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x94, 0x7E, 0x15, 0x00, 0x48, 0x35, 0x17, 0x00, -0x10, 0x00, 0x01, 0x00, 0x03, 0x4B, 0x04, 0x4A, 0x01, 0x30, 0x43, 0xEA, 0x00, 0x43, 0x13, 0x63, 0x70, 0x47, 0x00, 0xBF, -0x3F, 0x00, 0x00, 0x20, 0x00, 0x00, 0x07, 0x40, 0x70, 0xB4, 0x18, 0x4D, 0x18, 0x4C, 0x2E, 0x6B, 0xB1, 0xF5, 0x00, 0x6F, -0x46, 0xF0, 0x80, 0x56, 0x2E, 0x63, 0x60, 0x60, 0xEB, 0x63, 0x20, 0x60, 0x0B, 0x46, 0x28, 0xBF, 0x4F, 0xF4, 0x00, 0x63, -0x80, 0x07, 0x11, 0xD0, 0xC1, 0xF3, 0x10, 0x05, 0x10, 0x48, 0x43, 0xF0, 0x0C, 0x53, 0x21, 0xF0, 0x70, 0x41, 0xA3, 0x60, -0xE5, 0x60, 0x21, 0x61, 0x60, 0x61, 0x0B, 0x49, 0x00, 0x23, 0x23, 0x62, 0x08, 0x46, 0x70, 0xBC, 0xFF, 0xF7, 0x04, 0xBF, -0xC1, 0xF3, 0x10, 0x05, 0x43, 0xF0, 0x23, 0x43, 0x21, 0xF0, 0x70, 0x41, 0x4F, 0xF0, 0x04, 0x10, 0xA3, 0x60, 0xE5, 0x60, -0x21, 0x61, 0x60, 0x61, 0xEB, 0xE7, 0x00, 0xBF, 0x00, 0x00, 0x07, 0x40, 0x74, 0x25, 0x17, 0x00, 0x01, 0x00, 0x04, 0x00, -0x01, 0x23, 0x06, 0x4A, 0x03, 0xFA, 0x00, 0xF0, 0x93, 0x69, 0x03, 0x42, 0xFC, 0xD1, 0x13, 0x6B, 0x23, 0xF0, 0x80, 0x53, -0x13, 0x63, 0x10, 0x6C, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x07, 0x40, 0x08, 0x4A, 0xD3, 0x68, 0x19, 0x04, 0x44, 0xBF, -0x4F, 0xF4, 0x00, 0x01, 0x91, 0x60, 0x5B, 0x05, 0x00, 0xD4, 0x70, 0x47, 0x03, 0x4B, 0x4F, 0xF4, 0x80, 0x22, 0x9A, 0x60, -0x4F, 0xF0, 0x80, 0x40, 0x1D, 0xF0, 0x4E, 0xB9, 0x00, 0x10, 0x50, 0x40, 0x11, 0x4A, 0x13, 0x68, 0x13, 0xF0, 0x01, 0x01, -0x0A, 0xD1, 0x23, 0xF4, 0x40, 0x73, 0x43, 0xF4, 0x90, 0x73, 0x43, 0xF0, 0x01, 0x03, 0x11, 0x20, 0x11, 0x61, 0x51, 0x61, -0x50, 0x60, 0x13, 0x60, 0x5A, 0x04, 0x03, 0xD4, 0x08, 0x4A, 0x43, 0xF4, 0x80, 0x43, 0x13, 0x60, 0x07, 0x4B, 0x08, 0x49, -0x9A, 0x68, 0xD1, 0xF8, 0xD0, 0x10, 0xC2, 0xF8, 0xB4, 0x10, 0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF0, 0x00, 0x52, 0x1A, 0x60, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x06, 0x4B, 0x07, 0x49, -0x9A, 0x68, 0xD1, 0xF8, 0xD0, 0x10, 0xC2, 0xF8, 0xB4, 0x10, 0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF0, 0x00, 0x52, 0x1A, 0x60, -0x70, 0x47, 0x00, 0xBF, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x3E, 0x4B, 0x1A, 0x68, 0x00, 0x2A, 0x6F, 0xD1, -0x3D, 0x49, 0xD1, 0xF8, 0xA4, 0x10, 0x00, 0x29, 0xF0, 0xB4, 0x56, 0xDA, 0x3B, 0x48, 0x00, 0x68, 0x00, 0x28, 0x4E, 0xD0, -0x3A, 0x4D, 0x3B, 0x48, 0x3B, 0x4C, 0x2A, 0x60, 0x01, 0x25, 0x02, 0x60, 0x25, 0x60, 0xC2, 0x68, 0x39, 0x4D, 0x3A, 0x4C, -0x42, 0xF4, 0x80, 0x72, 0xC2, 0x60, 0x03, 0x22, 0x2A, 0x60, 0x62, 0x68, 0x92, 0x07, 0x21, 0xF0, 0x00, 0x41, 0x57, 0xD5, -0x35, 0x4A, 0x12, 0x68, 0x10, 0x09, 0x81, 0x42, 0x4D, 0xD2, 0xB2, 0xFB, 0xF1, 0xF1, 0xC1, 0xF3, 0x42, 0x04, 0x01, 0xF0, -0x0F, 0x02, 0x12, 0x1B, 0xC1, 0xF3, 0x07, 0x1C, 0x04, 0xEB, 0x02, 0x14, 0xC1, 0xF3, 0x07, 0x31, 0x2A, 0x4A, 0x28, 0x4D, -0x10, 0x68, 0x2C, 0x4E, 0x2C, 0x4F, 0x40, 0xF0, 0x80, 0x00, 0x10, 0x60, 0xC7, 0xF8, 0x00, 0xC0, 0x29, 0x60, 0x34, 0x60, -0x11, 0x68, 0x21, 0x4C, 0x22, 0x48, 0x28, 0x4E, 0x21, 0xF0, 0x80, 0x01, 0x11, 0x60, 0x07, 0x22, 0x22, 0x60, 0x02, 0x68, -0x25, 0x4C, 0x26, 0x49, 0xD4, 0xF8, 0xBC, 0x40, 0x22, 0xF4, 0xFF, 0x72, 0x22, 0xF0, 0x01, 0x02, 0x42, 0xF0, 0x01, 0x02, -0x02, 0x60, 0x01, 0x22, 0x2A, 0x60, 0xB0, 0x68, 0x4F, 0xF4, 0x80, 0x32, 0xC0, 0xF8, 0x80, 0x40, 0x0A, 0x60, 0x01, 0x22, -0xF0, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x10, 0x4A, 0x12, 0x68, 0x00, 0x2A, 0xF7, 0xD0, 0x10, 0x48, 0x17, 0x4C, 0x16, 0x49, -0xD4, 0xF8, 0xBC, 0x40, 0x16, 0x4A, 0x01, 0x25, 0x05, 0x60, 0x88, 0x68, 0x4F, 0xF4, 0x80, 0x31, 0xC0, 0xF8, 0x80, 0x40, -0x11, 0x60, 0xE8, 0xE7, 0x70, 0x47, 0x00, 0x24, 0x21, 0x46, 0x4F, 0xF0, 0x01, 0x0C, 0xB9, 0xE7, 0x0F, 0x48, 0x10, 0x4A, -0xA7, 0xE7, 0x00, 0xBF, 0xA4, 0x25, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x68, 0x28, 0x17, 0x00, 0x08, 0x10, 0x04, 0x40, -0x04, 0x10, 0x04, 0x40, 0x24, 0x10, 0x04, 0x40, 0x0C, 0x10, 0x04, 0x40, 0x00, 0x00, 0x10, 0x40, 0x14, 0x13, 0x17, 0x00, -0x28, 0x10, 0x04, 0x40, 0x00, 0x10, 0x04, 0x40, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x00, 0xE1, 0x00, 0xE0, -0x50, 0x97, 0x31, 0x00, 0x00, 0x75, 0x19, 0x03, 0x03, 0x4A, 0x13, 0x68, 0x1B, 0x03, 0xFC, 0xD4, 0x02, 0x4B, 0x18, 0x60, -0x70, 0x47, 0x00, 0xBF, 0x20, 0x10, 0x04, 0x40, 0x00, 0x10, 0x04, 0x40, 0x03, 0x4A, 0x13, 0x68, 0xDB, 0x07, 0xFC, 0xD5, -0x02, 0x4B, 0x18, 0x68, 0xC0, 0xB2, 0x70, 0x47, 0x14, 0x10, 0x04, 0x40, 0x00, 0x10, 0x04, 0x40, 0xF0, 0xB5, 0x03, 0x46, -0xC3, 0xB0, 0xEF, 0xF3, 0x05, 0x85, 0x73, 0x4C, 0x22, 0x68, 0x12, 0x78, 0x02, 0x2A, 0x04, 0xD1, 0x71, 0x4A, 0xB2, 0xF8, -0xAA, 0x20, 0x52, 0x04, 0x56, 0xD4, 0x00, 0x91, 0x00, 0x22, 0x4F, 0xF4, 0x80, 0x71, 0x02, 0xA8, 0x1D, 0xF0, 0x46, 0xFE, -0x06, 0x46, 0x00, 0x2E, 0x31, 0xDD, 0x6B, 0x4B, 0x1B, 0x68, 0x1B, 0xB9, 0x6A, 0x4B, 0xD3, 0xF8, 0x28, 0x33, 0x98, 0x47, -0x1D, 0xB9, 0x69, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x68, 0x4B, 0x1B, 0x68, 0x33, 0xB9, 0x67, 0x4A, 0x13, 0x68, -0x1F, 0x03, 0xFC, 0xD4, 0x66, 0x4B, 0x5F, 0x22, 0x1A, 0x60, 0x5F, 0x4B, 0xB3, 0xF8, 0xAA, 0x30, 0x13, 0xF4, 0x80, 0x43, -0x18, 0xD1, 0x02, 0xA9, 0x60, 0x4A, 0x61, 0x48, 0x77, 0x18, 0x4F, 0xF0, 0x0D, 0x0C, 0x11, 0xF8, 0x01, 0x4B, 0x0A, 0x2C, -0x1C, 0xD0, 0x13, 0x68, 0x1B, 0x03, 0xFC, 0xD4, 0x04, 0x60, 0xB9, 0x42, 0x11, 0xF8, 0x01, 0x3C, 0xF3, 0xD1, 0x15, 0xB9, -0x55, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x30, 0x46, 0x43, 0xB0, 0xF0, 0xBD, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x1C, 0xD0, -0x02, 0x2B, 0xF2, 0xD1, 0x53, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0xED, 0xD0, 0x00, 0x2D, 0xEF, 0xD1, 0x26, 0xE0, -0x0D, 0x2B, 0xE0, 0xD0, 0x13, 0x68, 0x1C, 0x03, 0xFC, 0xD4, 0xC0, 0xF8, 0x00, 0xC0, 0x11, 0xF8, 0x01, 0x4C, 0xD8, 0xE7, -0x00, 0x91, 0x00, 0x22, 0x4F, 0xF4, 0x80, 0x71, 0x03, 0xA8, 0x1D, 0xF0, 0xEF, 0xFD, 0x06, 0x46, 0xA7, 0xE7, 0x46, 0x4F, -0x3B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0xD2, 0xD0, 0x00, 0x2D, 0xD4, 0xD1, 0x43, 0x48, 0x1D, 0xF0, 0x07, 0xF9, 0x04, 0x28, -0x62, 0xD8, 0x23, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0xC8, 0xD1, 0x3B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0xC4, 0xD0, 0x3E, 0x48, -0x1D, 0xF0, 0xFA, 0xF8, 0x04, 0x28, 0xBF, 0xD9, 0x3B, 0x48, 0x3C, 0x4C, 0x1D, 0xF0, 0xB4, 0xF8, 0x42, 0xF2, 0x34, 0x03, -0x13, 0x25, 0xE2, 0x5A, 0x8D, 0xF8, 0x08, 0x60, 0x00, 0x23, 0xB2, 0xF5, 0xC3, 0x7F, 0x02, 0xAF, 0x01, 0x46, 0x7D, 0x80, -0x7B, 0x70, 0x4D, 0xD8, 0x55, 0x1C, 0xAD, 0xB2, 0xD3, 0x00, 0x33, 0x48, 0x8A, 0x81, 0xD0, 0xF8, 0x00, 0xC0, 0x0C, 0xEB, -0x03, 0x00, 0x32, 0x1D, 0x47, 0x60, 0x2C, 0xF8, 0x03, 0x20, 0xC3, 0x78, 0x03, 0xF0, 0x31, 0x03, 0x43, 0xF0, 0x04, 0x03, -0xC3, 0x70, 0x94, 0xF8, 0x02, 0x3C, 0x42, 0xF2, 0x34, 0x0C, 0x01, 0x33, 0x84, 0xF8, 0x02, 0x3C, 0x01, 0x27, 0x00, 0x23, -0x24, 0xF8, 0x0C, 0x50, 0xC1, 0xE9, 0x01, 0x02, 0x8F, 0x73, 0x0B, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, -0x72, 0xB6, 0x22, 0x4B, 0x1F, 0x60, 0x22, 0x4C, 0x22, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1D, 0xF0, 0x32, 0xF8, -0x13, 0x4B, 0xD3, 0xF8, 0x44, 0x34, 0x98, 0x47, 0x23, 0x68, 0x00, 0x2B, 0x3F, 0xF4, 0x76, 0xAF, 0x19, 0x4A, 0x01, 0x3B, -0x12, 0x68, 0x23, 0x60, 0x00, 0x2B, 0x7F, 0xF4, 0x6F, 0xAF, 0x00, 0x2A, 0x3F, 0xF4, 0x6C, 0xAF, 0x62, 0xB6, 0x69, 0xE7, -0x7C, 0x2E, 0x32, 0x46, 0xA8, 0xBF, 0x7C, 0x22, 0x92, 0xB2, 0x02, 0xA9, 0x13, 0x20, 0x02, 0xF0, 0xF9, 0xFA, 0x5F, 0xE7, -0x1A, 0x46, 0x01, 0x25, 0xB1, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xA4, 0x25, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x40, 0x40, 0x04, 0x40, 0x68, 0x28, 0x17, 0x00, 0x20, 0x10, 0x04, 0x40, 0x00, 0x10, 0x04, 0x40, -0x74, 0x36, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x0F, 0xB4, 0x00, 0xB5, 0x83, 0xB0, 0x04, 0xA9, -0x05, 0x4B, 0x51, 0xF8, 0x04, 0x0B, 0xD3, 0xF8, 0x30, 0x34, 0x01, 0x91, 0x98, 0x47, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xEB, -0x04, 0xB0, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x01, 0x22, 0x90, 0x42, 0x10, 0xB4, 0x02, 0xFA, 0x00, 0xF4, 0x11, 0xDD, -0xA0, 0xF1, 0x08, 0x03, 0x93, 0x42, 0x0D, 0xD9, 0x0F, 0x28, 0x25, 0xDD, 0x1F, 0x28, 0x12, 0xDC, 0x15, 0x4A, 0x52, 0xF8, -0x20, 0x30, 0x23, 0xF0, 0x0F, 0x03, 0x43, 0xF0, 0x02, 0x03, 0x42, 0xF8, 0x20, 0x30, 0x08, 0xE0, 0x10, 0x4A, 0x52, 0xF8, -0x20, 0x30, 0x23, 0xF0, 0x0F, 0x03, 0x43, 0xF0, 0x01, 0x03, 0x42, 0xF8, 0x20, 0x30, 0x0D, 0x4B, 0x5A, 0x68, 0x22, 0x43, -0x5A, 0x60, 0x9A, 0x68, 0x29, 0xB9, 0x22, 0xEA, 0x04, 0x02, 0x9A, 0x60, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x22, 0x43, -0x9A, 0x60, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x03, 0x4A, 0x52, 0xF8, 0x20, 0x30, 0x23, 0xF0, 0x0F, 0x03, 0x42, 0xF8, -0x20, 0x30, 0xE6, 0xE7, 0x00, 0x30, 0x50, 0x40, 0x00, 0x40, 0x50, 0x40, 0x04, 0x49, 0x01, 0x22, 0x0B, 0x68, 0x02, 0xFA, -0x00, 0xF0, 0x23, 0xEA, 0x00, 0x03, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x40, 0x50, 0x40, 0x10, 0xB5, 0x01, 0x29, -0x82, 0xB0, 0x04, 0x46, 0x10, 0xD0, 0x20, 0xF0, 0x03, 0x03, 0x0F, 0x22, 0x9A, 0x40, 0x11, 0x46, 0x0D, 0x48, 0xFC, 0xF7, -0x51, 0xF8, 0x01, 0x22, 0xA2, 0x40, 0x0C, 0x48, 0x11, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0xFC, 0xF7, 0x48, 0xB8, -0x01, 0xFA, 0x00, 0xF2, 0x11, 0x46, 0x07, 0x48, 0x01, 0x92, 0xFC, 0xF7, 0x41, 0xF8, 0x01, 0x9A, 0x05, 0x48, 0x11, 0x46, -0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0xFC, 0xF7, 0x39, 0xB8, 0x00, 0xBF, 0x2C, 0x10, 0x01, 0x50, 0x04, 0x10, 0x01, 0x50, -0x08, 0x10, 0x01, 0x50, 0x01, 0x23, 0x03, 0xFA, 0x00, 0xF2, 0x11, 0x46, 0x01, 0x48, 0xFC, 0xF7, 0x2B, 0xB8, 0x00, 0xBF, -0x00, 0x10, 0x01, 0x50, 0x01, 0x22, 0x82, 0x40, 0x00, 0x21, 0x01, 0x48, 0xFC, 0xF7, 0x22, 0xB8, 0x00, 0x10, 0x01, 0x50, -0x10, 0xB5, 0x04, 0x46, 0x03, 0x48, 0xFB, 0xF7, 0xCB, 0xFF, 0xE0, 0x40, 0x00, 0xF0, 0x01, 0x00, 0x10, 0xBD, 0x00, 0xBF, -0x00, 0x10, 0x01, 0x50, 0x70, 0x47, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, 0x0E, 0x48, 0x0F, 0x4A, -0x03, 0x68, 0x0F, 0x49, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xC2, 0x03, 0x03, 0x60, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, -0x43, 0xF0, 0xC2, 0x03, 0x13, 0x60, 0x03, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x3F, 0x23, 0x03, 0x60, 0x13, 0x68, -0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x3F, 0x23, 0xC2, 0x20, 0x13, 0x60, 0xC8, 0x71, 0x70, 0x47, 0xAC, 0xB3, 0x33, 0x40, -0xD4, 0xB3, 0x33, 0x40, 0x80, 0x35, 0x17, 0x00, 0x24, 0x4B, 0x25, 0x48, 0x1B, 0x68, 0x2D, 0xE9, 0xF0, 0x41, 0x24, 0x4D, -0x24, 0x4F, 0x6A, 0x79, 0x95, 0xF9, 0x07, 0x10, 0x3C, 0x68, 0x23, 0x4E, 0x03, 0xF0, 0x0F, 0x03, 0x1A, 0x44, 0x52, 0xB2, -0x89, 0x1A, 0x6F, 0xF0, 0x3D, 0x03, 0x99, 0x42, 0xB8, 0xBF, 0x19, 0x46, 0x5F, 0xFA, 0x81, 0xFC, 0x24, 0xF0, 0xFF, 0x04, -0x44, 0xEA, 0x0C, 0x04, 0x3C, 0x60, 0x33, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xEA, 0x0C, 0x03, 0x33, 0x60, 0x3C, 0x68, -0xCB, 0x1E, 0x5F, 0xFA, 0x83, 0xFC, 0x24, 0xF4, 0x7F, 0x24, 0x44, 0xEA, 0x0C, 0x34, 0x3C, 0x60, 0x33, 0x68, 0x23, 0xF4, -0x7F, 0x23, 0x4C, 0xB2, 0x43, 0xEA, 0x0C, 0x33, 0x33, 0x60, 0x21, 0x46, 0xEC, 0x71, 0x1E, 0xF0, 0xC3, 0xF8, 0x3D, 0x34, -0x0E, 0xDB, 0x0D, 0x4B, 0x29, 0x89, 0x1A, 0x69, 0x0C, 0x4B, 0x47, 0xF2, 0x30, 0x54, 0x05, 0xF1, 0x0C, 0x00, 0x04, 0xFB, -0x01, 0x21, 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xBD, 0xE8, 0xF0, 0x81, 0x1C, 0x01, 0x32, 0x40, -0xB8, 0x7E, 0x15, 0x00, 0x80, 0x35, 0x17, 0x00, 0xAC, 0xB3, 0x33, 0x40, 0xD4, 0xB3, 0x33, 0x40, 0x00, 0x10, 0x50, 0x40, -0x88, 0x1A, 0x17, 0x00, 0x12, 0x4A, 0x12, 0x68, 0xD2, 0xE9, 0x06, 0x01, 0x38, 0xB5, 0x11, 0x4B, 0x15, 0x6A, 0x18, 0x60, -0x59, 0x60, 0x50, 0x6A, 0x0F, 0x4C, 0xD2, 0xE9, 0x0A, 0x12, 0xC3, 0xE9, 0x02, 0x50, 0xC3, 0xE9, 0x04, 0x12, 0xD4, 0xF8, -0x2C, 0x33, 0x98, 0x47, 0xD4, 0xF8, 0xC0, 0x30, 0x98, 0x47, 0xFB, 0xF7, 0xAF, 0xFA, 0x09, 0x4B, 0x1B, 0x68, 0x1B, 0x78, -0x03, 0x2B, 0x02, 0xD1, 0xD4, 0xF8, 0x20, 0x31, 0x98, 0x47, 0xBD, 0xE8, 0x38, 0x40, 0xFF, 0xF7, 0x79, 0xBB, 0x00, 0xBF, -0xC8, 0x35, 0x17, 0x00, 0xB0, 0x35, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0x30, 0xB4, 0x08, 0x4B, -0x08, 0x48, 0x18, 0x60, 0xC2, 0x25, 0x40, 0xF6, 0xEC, 0x20, 0x4F, 0xF4, 0x7A, 0x74, 0x06, 0x49, 0x06, 0x4A, 0xDD, 0x71, -0x98, 0x80, 0x1C, 0x81, 0x19, 0x61, 0x30, 0xBC, 0x1A, 0x62, 0x70, 0x47, 0x80, 0x35, 0x17, 0x00, 0x01, 0x00, 0x00, 0x14, -0x95, 0x64, 0x12, 0x00, 0x4D, 0x64, 0x12, 0x00, 0x90, 0xF8, 0x62, 0x30, 0xCB, 0xB9, 0x0D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x04, 0x46, 0x03, 0xDB, 0x00, 0x23, 0x84, 0xF8, 0xAC, 0x30, 0x10, 0xBD, 0x90, 0xF8, -0xAC, 0x30, 0x01, 0x2B, 0xF7, 0xD0, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF2, 0xE7, 0x12, 0x1E, 0xF0, 0xBB, 0xFA, 0x00, 0x23, -0x84, 0xF8, 0xAC, 0x30, 0x10, 0xBD, 0x70, 0x47, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xCC, 0x7E, 0x15, 0x00, -0x13, 0x4A, 0x90, 0xF8, 0x22, 0x30, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, -0x1B, 0xD1, 0x0F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x04, 0x46, 0x08, 0xDB, 0x94, 0xF8, -0x23, 0x10, 0x0B, 0x48, 0x1E, 0xF0, 0x1E, 0xF8, 0x00, 0x23, 0x84, 0xF8, 0x70, 0x32, 0x10, 0xBD, 0x90, 0xF8, 0x70, 0x32, -0x01, 0x2B, 0xF2, 0xD0, 0x06, 0x49, 0x07, 0x48, 0x40, 0xF2, 0xF3, 0x12, 0x1E, 0xF0, 0x8A, 0xFA, 0xEB, 0xE7, 0x70, 0x47, -0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x10, 0x7F, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0xF0, 0x7E, 0x15, 0x00, -0x2D, 0xE9, 0xF0, 0x41, 0x90, 0xF8, 0x62, 0x40, 0x1C, 0xB9, 0x90, 0xF8, 0x64, 0x30, 0x06, 0x46, 0x0B, 0xB9, 0xBD, 0xE8, -0xF0, 0x81, 0xD0, 0xE9, 0x24, 0x23, 0xD0, 0xF8, 0x98, 0x10, 0x42, 0x48, 0xDF, 0xF8, 0x30, 0x81, 0x1D, 0xF0, 0xF0, 0xFF, -0x45, 0x46, 0x06, 0xF5, 0xB2, 0x77, 0x28, 0x46, 0x06, 0x22, 0x39, 0x46, 0x30, 0xF0, 0xD8, 0xFC, 0x14, 0x35, 0x40, 0xB1, -0x01, 0x34, 0x05, 0x2C, 0xF5, 0xD1, 0x3A, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x5B, 0xDB, 0x04, 0xEB, -0x84, 0x03, 0x08, 0xEB, 0x83, 0x03, 0xA2, 0x00, 0xD9, 0x79, 0x00, 0x29, 0xD9, 0xD1, 0x1B, 0x7A, 0x03, 0xBB, 0xD6, 0xF8, -0x90, 0x30, 0x31, 0x2B, 0x29, 0xD9, 0xD6, 0xF8, 0x94, 0x10, 0xB1, 0xEB, 0x53, 0x0F, 0x3B, 0xD8, 0x14, 0x44, 0x08, 0xEB, -0x84, 0x08, 0x98, 0xF8, 0x06, 0x30, 0x00, 0x2B, 0x48, 0xD1, 0x00, 0x23, 0xC6, 0xE9, 0x24, 0x33, 0x29, 0x4A, 0xC6, 0xF8, -0x98, 0x30, 0x12, 0x69, 0x28, 0x49, 0x29, 0x4B, 0x06, 0xF1, 0x9C, 0x00, 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, -0x11, 0x44, 0x18, 0x47, 0xD6, 0xF8, 0x98, 0x30, 0x53, 0xB3, 0xD6, 0xF8, 0x90, 0x30, 0x00, 0x2B, 0x37, 0xD0, 0x11, 0x19, -0x08, 0xEB, 0x81, 0x01, 0x00, 0x20, 0x08, 0x72, 0xD3, 0xE7, 0x0B, 0x2B, 0x12, 0xD8, 0xD6, 0xF8, 0x98, 0x20, 0x14, 0x2A, -0xDB, 0xD9, 0x00, 0x2B, 0xD9, 0xD1, 0x1B, 0x48, 0x1D, 0xF0, 0x9A, 0xFF, 0x18, 0x4B, 0x01, 0x22, 0x88, 0xF8, 0x06, 0x20, -0x30, 0x46, 0xD3, 0xF8, 0xBC, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xD6, 0xF8, 0x94, 0x10, 0x14, 0x4A, 0xA2, 0xFB, -0x03, 0x02, 0x22, 0xF0, 0x03, 0x00, 0x00, 0xEB, 0x92, 0x02, 0x8A, 0x42, 0xE1, 0xD8, 0xE6, 0xE7, 0xD6, 0xF8, 0x90, 0x30, -0xD5, 0xE7, 0x0F, 0x49, 0x0F, 0x48, 0x40, 0xF2, 0x13, 0x22, 0x1E, 0xF0, 0xF5, 0xF9, 0x9C, 0xE7, 0x00, 0x23, 0x0D, 0x48, -0x88, 0xF8, 0x06, 0x30, 0x1D, 0xF0, 0x74, 0xFF, 0xAF, 0xE7, 0x0B, 0x48, 0xD4, 0xE7, 0x00, 0xBF, 0x1C, 0x7F, 0x15, 0x00, -0x38, 0x36, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x80, 0xC3, 0xC9, 0x01, 0x88, 0x1A, 0x17, 0x00, 0x44, 0x7F, 0x15, 0x00, -0xAB, 0xAA, 0xAA, 0xAA, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x3C, 0x7F, 0x15, 0x00, 0x30, 0x7F, 0x15, 0x00, -0xCC, 0x35, 0x17, 0x00, 0x06, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0x2B, 0x01, 0xD0, 0x04, 0xF0, -0xEF, 0xBC, 0x03, 0xF0, 0xD5, 0xBF, 0x00, 0xF0, 0xD7, 0xBF, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x08, 0xB5, 0x08, 0x46, -0x00, 0xF0, 0x6C, 0xFE, 0x01, 0x20, 0x08, 0xBD, 0x70, 0xB5, 0x30, 0x4C, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x1E, 0xD0, -0x02, 0x2B, 0x14, 0xD1, 0x2D, 0x4B, 0x2E, 0x49, 0x2E, 0x4A, 0xC3, 0xE9, 0x06, 0x12, 0x2E, 0x4D, 0xD5, 0xF8, 0x14, 0x31, -0x98, 0x47, 0xD5, 0xF8, 0x18, 0x31, 0x98, 0x47, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x36, 0xD0, 0x02, 0x2B, 0x1D, 0xD0, -0x03, 0x2B, 0x0E, 0xD0, 0x70, 0xBD, 0x03, 0x2B, 0xED, 0xD1, 0x22, 0x4B, 0x25, 0x49, 0x26, 0x4A, 0xC3, 0xE9, 0x08, 0x12, -0xE7, 0xE7, 0x1F, 0x4B, 0x24, 0x49, 0x25, 0x4A, 0xC3, 0xE9, 0x02, 0x12, 0xE1, 0xE7, 0x24, 0x4B, 0x1B, 0x4C, 0x24, 0x4A, -0x1A, 0x60, 0x04, 0xF0, 0x87, 0xFC, 0x23, 0x6A, 0x22, 0x48, 0x98, 0x47, 0x63, 0x6A, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, -0x1D, 0x4B, 0x20, 0x49, 0x20, 0x4A, 0x19, 0x60, 0x13, 0x4D, 0x42, 0xF2, 0x34, 0x03, 0x00, 0x21, 0xD1, 0x52, 0x04, 0xF0, -0x1B, 0xF8, 0x03, 0xF0, 0x35, 0xFF, 0xAB, 0x69, 0x18, 0x48, 0x98, 0x47, 0xEB, 0x69, 0x98, 0x47, 0x04, 0xF0, 0x1A, 0xFC, -0x23, 0x68, 0x1B, 0x78, 0xCA, 0xE7, 0x12, 0x4B, 0x09, 0x4D, 0x16, 0x4A, 0x1A, 0x60, 0x00, 0xF0, 0xCB, 0xFE, 0x00, 0xF0, -0xE9, 0xFE, 0x00, 0xF0, 0x13, 0xFF, 0xAB, 0x68, 0x0E, 0x48, 0x98, 0x47, 0xEB, 0x68, 0x98, 0x47, 0x23, 0x68, 0x1B, 0x78, -0xB6, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x28, 0x58, 0x17, 0x00, 0xA1, 0xA9, 0x12, 0x00, 0x85, 0xA9, 0x12, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x3D, 0xB2, 0x12, 0x00, 0x29, 0xB2, 0x12, 0x00, 0x0D, 0x7A, 0x12, 0x00, 0xF9, 0x79, 0x12, 0x00, -0x1C, 0x58, 0x17, 0x00, 0xBC, 0x60, 0x17, 0x00, 0xB8, 0x7F, 0x15, 0x00, 0xA4, 0x60, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, -0x28, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x0B, 0x4C, 0x50, 0x22, 0x51, 0x23, 0x04, 0xF2, 0x14, 0x50, 0xA4, 0xF8, 0x10, 0x25, -0x84, 0xF8, 0x12, 0x35, 0x1C, 0xF0, 0xD8, 0xFC, 0x27, 0x22, 0x28, 0x23, 0x04, 0xF5, 0xF4, 0x60, 0xA4, 0xF8, 0x9C, 0x27, -0x84, 0xF8, 0x9E, 0x37, 0xBD, 0xE8, 0x10, 0x40, 0x1C, 0xF0, 0xCC, 0xBC, 0x58, 0x58, 0x17, 0x00, 0x70, 0xB5, 0x41, 0xF6, -0x10, 0x02, 0x25, 0x4D, 0x25, 0x4C, 0x4C, 0xF2, 0xBF, 0x03, 0x41, 0xF6, 0x12, 0x00, 0x00, 0x26, 0xAB, 0x52, 0x41, 0xF6, -0x14, 0x01, 0x05, 0xF5, 0xC1, 0x52, 0xA5, 0xF8, 0x00, 0x3C, 0x2E, 0x54, 0x05, 0xF6, 0x08, 0x40, 0x6E, 0x50, 0x16, 0x70, -0x85, 0xF8, 0x02, 0x6C, 0xC5, 0xF8, 0x04, 0x6C, 0x1C, 0xF0, 0xAE, 0xFC, 0xA4, 0xF1, 0x0C, 0x00, 0x1C, 0xF0, 0xAA, 0xFC, -0x04, 0xF5, 0x00, 0x60, 0x1C, 0xF0, 0xA6, 0xFC, 0x04, 0xF6, 0x08, 0x00, 0x1C, 0xF0, 0xA2, 0xFC, 0x42, 0xF2, 0x34, 0x03, -0x31, 0x46, 0x4F, 0xF4, 0x00, 0x62, 0x20, 0x46, 0xEE, 0x52, 0x85, 0xF8, 0x02, 0x6C, 0xC5, 0xF8, 0x04, 0x6C, 0xF9, 0xF7, -0x05, 0xFC, 0x04, 0xF5, 0x00, 0x65, 0x2E, 0x46, 0x21, 0x46, 0x30, 0x46, 0x10, 0x34, 0x1C, 0xF0, 0x91, 0xFC, 0xAC, 0x42, -0xF8, 0xD1, 0x09, 0x4A, 0x00, 0x21, 0x02, 0xF5, 0xB4, 0x70, 0xA2, 0xF1, 0x24, 0x03, 0x43, 0xF8, 0x04, 0x1B, 0x93, 0x42, -0xFB, 0xD1, 0x03, 0xF1, 0x24, 0x02, 0x82, 0x42, 0xF5, 0xD1, 0x70, 0xBD, 0x7C, 0x36, 0x17, 0x00, 0xA0, 0x4E, 0x17, 0x00, -0xD8, 0x56, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x40, 0x20, 0x85, 0xB0, 0x1C, 0xF0, 0xF6, 0xFB, 0xA7, 0x4B, 0x9B, 0x68, -0x03, 0x93, 0x00, 0x2B, 0x00, 0xF0, 0x80, 0x81, 0xDF, 0xF8, 0xB0, 0x92, 0xDF, 0xF8, 0xB0, 0xB2, 0x09, 0xE0, 0x94, 0xF8, -0x64, 0x30, 0x63, 0xB1, 0x03, 0x9B, 0x1B, 0x68, 0x03, 0x93, 0x03, 0x9B, 0x00, 0x2B, 0x00, 0xF0, 0x71, 0x81, 0x03, 0x9C, -0x20, 0x46, 0x07, 0xF0, 0x33, 0xFF, 0x00, 0x28, 0xEF, 0xD0, 0x03, 0x9B, 0x9A, 0x4C, 0x03, 0xF5, 0xA3, 0x65, 0x01, 0x26, -0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0xC9, 0xF8, 0x00, 0x60, 0x23, 0x68, 0x28, 0x46, 0x01, 0x33, -0x23, 0x60, 0x1C, 0xF0, 0x8B, 0xFC, 0x23, 0x68, 0x5A, 0x1E, 0x2B, 0xB1, 0xD9, 0xF8, 0x00, 0x30, 0x22, 0x60, 0x0A, 0xB9, -0x03, 0xB1, 0x62, 0xB6, 0x05, 0x21, 0x38, 0xB1, 0xDB, 0xF8, 0x24, 0x34, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, -0xE7, 0xD4, 0xE3, 0xE7, 0x89, 0x4B, 0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, 0xC8, 0xD1, 0xDD, 0xF8, 0x0C, 0xA0, 0x87, 0x4E, -0x04, 0x23, 0x01, 0x93, 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, 0x00, 0xF0, 0x8C, 0x80, 0x9D, 0xF8, 0x04, 0x70, 0x0A, 0xF5, -0xA2, 0x68, 0x40, 0x46, 0x1C, 0xF0, 0x62, 0xFC, 0x80, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, -0x43, 0x7F, 0x7F, 0xDB, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x62, 0x92, 0xF8, 0x25, 0x10, 0x19, 0xB9, 0xE9, 0x8B, -0x08, 0x07, 0x40, 0xF1, 0x07, 0x81, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x62, 0x92, 0xF8, 0x24, 0x20, 0x01, 0x2A, -0x00, 0xF0, 0x9E, 0x80, 0xDB, 0xF8, 0x24, 0x34, 0x28, 0x46, 0x39, 0x46, 0x98, 0x47, 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, -0xD7, 0xD1, 0x0A, 0xF5, 0x9D, 0x65, 0xA8, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDD, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, -0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0xDA, 0xF8, 0xE8, 0x14, 0x5A, 0x1C, 0x22, 0x60, 0x2A, 0xB1, 0xD9, 0xF8, 0x00, 0x20, -0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x00, 0x29, 0x34, 0xD0, 0x4A, 0x7F, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x02, 0x63, 0x93, 0xF8, 0x25, 0x00, 0x00, 0x28, 0x00, 0xF0, 0x87, 0x80, 0x93, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x46, 0xD0, -0xC9, 0x7E, 0xDB, 0xF8, 0x34, 0x31, 0x10, 0x46, 0x98, 0x47, 0x00, 0x28, 0x00, 0xF0, 0xD7, 0x80, 0xEF, 0xF3, 0x10, 0x83, -0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x40, 0x46, 0x01, 0x33, 0x23, 0x60, -0x1C, 0xF0, 0x00, 0xFC, 0x23, 0x68, 0x05, 0x46, 0x33, 0xB1, 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x20, 0x23, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0xDB, 0xF8, 0x24, 0x34, 0x39, 0x46, 0x28, 0x46, 0x98, 0x47, 0x00, 0x2D, 0xB4, 0xD1, 0x01, 0x9B, -0x01, 0x3B, 0x1D, 0x46, 0x38, 0x46, 0x01, 0x93, 0x0B, 0xF0, 0x26, 0xFA, 0x2B, 0x46, 0x01, 0x33, 0xAA, 0xF1, 0x08, 0x0A, -0x3F, 0xF4, 0x38, 0xAF, 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, 0x7F, 0xF4, 0x74, 0xAF, 0x9D, 0xF8, 0x04, 0x70, 0x9C, 0xE7, -0x09, 0x2B, 0x7F, 0xF6, 0x7D, 0xAF, 0x3C, 0x49, 0x3C, 0x48, 0x4F, 0xF4, 0x96, 0x72, 0x1D, 0xF0, 0xE1, 0xFF, 0x6B, 0x7F, -0x74, 0xE7, 0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x02, 0x92, -0x01, 0x33, 0x40, 0x46, 0x23, 0x60, 0x1C, 0xF0, 0xC1, 0xFB, 0x23, 0x68, 0x02, 0x9A, 0x05, 0x46, 0x33, 0xB1, 0x01, 0x3B, -0xD9, 0xF8, 0x00, 0x10, 0x23, 0x60, 0x0B, 0xB9, 0x01, 0xB1, 0x62, 0xB6, 0x01, 0x9B, 0x4F, 0x20, 0x00, 0xFB, 0x02, 0x30, -0x41, 0x30, 0x06, 0xEB, 0xC0, 0x00, 0x29, 0x46, 0x1C, 0xF0, 0x68, 0xFB, 0x00, 0x2D, 0x7F, 0xF4, 0x6F, 0xAF, 0xB8, 0xE7, -0x23, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x4D, 0xDB, 0xEA, 0x8B, 0xD2, 0x07, 0x7F, 0xF5, 0x5D, 0xAF, -0x01, 0x9A, 0x4F, 0x20, 0x46, 0x32, 0x10, 0xFB, 0x03, 0x20, 0x29, 0x46, 0x06, 0xEB, 0xC0, 0x00, 0x1C, 0xF0, 0x50, 0xFB, -0x51, 0xE7, 0x93, 0xF8, 0x23, 0x10, 0x1B, 0x48, 0x1D, 0xF0, 0x24, 0xFD, 0xEF, 0xF3, 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x01, 0x23, 0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x40, 0x46, 0x01, 0x33, 0x23, 0x60, 0x1C, 0xF0, 0x80, 0xFB, -0x4F, 0xF0, 0x00, 0x42, 0x39, 0x46, 0x05, 0x46, 0x28, 0xF0, 0x2A, 0xFE, 0x23, 0x68, 0x00, 0x2B, 0x85, 0xD0, 0x01, 0x3B, -0xD9, 0xF8, 0x00, 0x20, 0x23, 0x60, 0x00, 0x2B, 0x7F, 0xF4, 0x7F, 0xAF, 0x00, 0x2A, 0x3F, 0xF4, 0x7C, 0xAF, 0x62, 0xB6, -0x00, 0x2D, 0x7F, 0xF4, 0x2F, 0xAF, 0x78, 0xE7, 0x00, 0x88, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x50, 0x7F, 0x15, 0x00, 0x7C, 0x7F, 0x15, 0x00, -0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xEA, 0x8B, 0xD1, 0x07, 0xB2, 0xD4, 0x11, 0x49, 0x11, 0x48, 0x02, 0x93, -0x40, 0xF2, 0x35, 0x12, 0x1D, 0xF0, 0x5A, 0xFF, 0x02, 0x9B, 0xA5, 0xE7, 0x92, 0xF8, 0x23, 0x10, 0x0D, 0x48, 0x1D, 0xF0, -0xD9, 0xFC, 0x28, 0x46, 0x4F, 0xF0, 0x00, 0x42, 0x39, 0x46, 0x28, 0xF0, 0xED, 0xFD, 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, -0x7F, 0xF4, 0xD3, 0xAE, 0xF9, 0xE6, 0x07, 0x4A, 0x01, 0x23, 0x82, 0xF8, 0x00, 0x32, 0x42, 0xE7, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x00, 0xBF, 0x70, 0x79, 0x15, 0x00, 0x8C, 0x7F, 0x15, 0x00, 0x7C, 0x7F, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, -0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0x2B, 0x07, 0xD0, 0x06, 0x4B, 0xD3, 0xF8, 0x30, 0x31, -0x18, 0x47, 0x04, 0x4B, 0xD3, 0xF8, 0x08, 0x33, 0x18, 0x47, 0x03, 0xF0, 0x8F, 0xBF, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x07, 0xD0, 0x02, 0x2B, 0x03, 0xD1, 0x06, 0x4B, -0xD3, 0xF8, 0x34, 0x34, 0x18, 0x47, 0x04, 0xF0, 0x93, 0xBB, 0x03, 0x4B, 0xD3, 0xF8, 0x00, 0x33, 0x18, 0x47, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x07, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0x2B, -0x01, 0xD0, 0x04, 0xF0, 0x83, 0xBB, 0x04, 0xF0, 0x7B, 0xB8, 0x03, 0x4B, 0xD3, 0xF8, 0x0C, 0x33, 0x18, 0x47, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x07, 0xD0, 0x02, 0x2B, -0x03, 0xD1, 0x06, 0x4B, 0xD3, 0xF8, 0x38, 0x34, 0x18, 0x47, 0x04, 0xF0, 0x6D, 0xBB, 0x03, 0x4B, 0xD3, 0xF8, 0x04, 0x33, -0x18, 0x47, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x06, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, -0x05, 0xD0, 0x02, 0x2B, 0x01, 0xD0, 0x04, 0xF0, 0x5D, 0xBB, 0x04, 0xF0, 0xAD, 0xB9, 0x01, 0xF0, 0x6B, 0xB9, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0x08, 0xB5, 0x0C, 0x22, 0x08, 0x23, 0x01, 0x21, 0x40, 0xF2, 0x0D, 0x40, 0x1B, 0xF0, 0xE6, 0xFD, -0xBD, 0xE8, 0x08, 0x40, 0x1B, 0xF0, 0x12, 0xBE, 0x2D, 0xE9, 0xF0, 0x4F, 0x89, 0xB0, 0x82, 0x46, 0x00, 0x68, 0x05, 0x91, -0x03, 0x90, 0x07, 0x92, 0x62, 0xB1, 0xB0, 0xFB, 0xF2, 0xF3, 0x11, 0x46, 0x02, 0xFB, 0x13, 0x02, 0x0B, 0x46, 0x00, 0x2A, -0x40, 0xF0, 0xDE, 0x80, 0x03, 0x9A, 0x04, 0x3B, 0x1A, 0x44, 0x03, 0x92, 0x9A, 0xF8, 0x08, 0x30, 0x00, 0x2B, 0x00, 0xF0, -0xD2, 0x80, 0x00, 0x23, 0xDF, 0xF8, 0xC0, 0x81, 0xDF, 0xF8, 0xC0, 0x91, 0x00, 0x93, 0x1F, 0x46, 0xD3, 0x46, 0x08, 0xE0, -0x00, 0x9B, 0x9B, 0xF8, 0x08, 0x20, 0x01, 0x33, 0xDF, 0xB2, 0xBA, 0x42, 0x00, 0x93, 0x40, 0xF2, 0xC0, 0x80, 0x05, 0x9B, -0xDB, 0xF8, 0x0C, 0x10, 0x33, 0xF8, 0x27, 0x00, 0x03, 0xEB, 0x87, 0x02, 0x00, 0x24, 0x55, 0x88, 0x07, 0xEB, 0x47, 0x02, -0x01, 0xEB, 0x82, 0x06, 0x41, 0xF8, 0x22, 0x40, 0xB4, 0x80, 0x00, 0x2D, 0xE4, 0xD0, 0x03, 0x1D, 0x01, 0x93, 0x03, 0x9B, -0x75, 0x80, 0x03, 0xF1, 0x04, 0x0A, 0x02, 0x95, 0xB0, 0x80, 0x55, 0x46, 0xCD, 0xF8, 0x18, 0xB0, 0xA2, 0x46, 0x04, 0x97, -0x34, 0xE0, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0x37, 0xD3, 0x04, 0x9B, 0x05, 0xF8, 0x04, 0x3C, 0xD8, 0xF8, -0x00, 0x30, 0xAB, 0x42, 0x41, 0xD8, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0x3C, 0xD3, 0x55, 0x23, 0x05, 0xF8, -0x03, 0x3C, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x46, 0xD8, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0x41, 0xD3, -0x00, 0x23, 0x05, 0xF8, 0x02, 0x3C, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x4B, 0xD8, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, -0xAB, 0x42, 0x46, 0xD3, 0xCB, 0xF8, 0x04, 0x70, 0x33, 0x88, 0x01, 0x99, 0x01, 0x33, 0x01, 0x34, 0x33, 0x80, 0x02, 0x9B, -0xA2, 0xB2, 0x93, 0x42, 0x0D, 0x44, 0x48, 0xD9, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x57, 0x46, 0xA5, 0xF1, 0x04, 0x0B, -0xAA, 0x46, 0xC2, 0xD9, 0xD9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x04, 0xD8, 0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, -0xBE, 0xD2, 0x31, 0x48, 0x29, 0x46, 0xFF, 0xF7, 0xE9, 0xF9, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0xBD, 0xD9, 0xD9, 0xF8, -0x00, 0x30, 0xAB, 0x42, 0x04, 0xD8, 0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0xB9, 0xD2, 0x29, 0x48, 0x29, 0x46, -0xFF, 0xF7, 0xD8, 0xF9, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0xB8, 0xD9, 0xD9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x04, 0xD8, -0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0xB4, 0xD2, 0x22, 0x48, 0x29, 0x46, 0xFF, 0xF7, 0xC7, 0xF9, 0xD8, 0xF8, -0x00, 0x30, 0xAB, 0x42, 0xB3, 0xD9, 0xD9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x04, 0xD8, 0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, -0xAB, 0x42, 0xAF, 0xD2, 0x29, 0x46, 0x1A, 0x48, 0xFF, 0xF7, 0xB6, 0xF9, 0xAC, 0xE7, 0x0A, 0x46, 0x5D, 0x1E, 0x03, 0x99, -0xDD, 0xF8, 0x18, 0xB0, 0xAD, 0xB2, 0x05, 0xFB, 0x02, 0x13, 0x05, 0xFB, 0x02, 0x25, 0x48, 0x19, 0x07, 0x99, 0x03, 0x90, -0x04, 0x33, 0xB3, 0x60, 0x00, 0x29, 0x3F, 0xF4, 0x47, 0xAF, 0xB0, 0xFB, 0xF1, 0xF3, 0x01, 0xFB, 0x13, 0x02, 0x0B, 0x46, -0x22, 0xB1, 0x8B, 0x1A, 0x03, 0x2B, 0x9C, 0xBF, 0x0A, 0x46, 0x9B, 0x18, 0x03, 0x9A, 0x04, 0x3B, 0x1A, 0x44, 0x03, 0x92, -0x36, 0xE7, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x8B, 0x1A, 0x03, 0x2B, 0x9C, 0xBF, 0x0A, 0x46, 0x9B, 0x18, 0x1B, 0xE7, -0xE0, 0x7F, 0x15, 0x00, 0x10, 0x80, 0x15, 0x00, 0x38, 0x80, 0x15, 0x00, 0x64, 0x80, 0x15, 0x00, 0xC8, 0x25, 0x17, 0x00, -0xE4, 0x25, 0x17, 0x00, 0xF8, 0xB5, 0x06, 0x7A, 0x00, 0x2E, 0x00, 0xF0, 0xBC, 0x80, 0xC5, 0x68, 0x00, 0x2D, 0x00, 0xF0, -0x82, 0x80, 0x2C, 0x46, 0x01, 0x23, 0x09, 0xE0, 0x22, 0x88, 0xA2, 0xB9, 0x9E, 0x42, 0x0F, 0xD9, 0x03, 0xEB, 0x43, 0x04, -0x05, 0xEB, 0x84, 0x04, 0x01, 0x33, 0xDB, 0xB2, 0xA0, 0x88, 0x88, 0x42, 0x03, 0xEB, 0x43, 0x02, 0xF0, 0xD2, 0x9E, 0x42, -0x02, 0xD9, 0x05, 0xEB, 0x82, 0x04, 0xF3, 0xE7, 0x9E, 0x42, 0x00, 0xF0, 0x9E, 0x80, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x4E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x4E, 0x4E, 0x23, 0x88, 0x35, 0x68, 0x6A, 0x1C, 0x32, 0x60, -0x00, 0x2B, 0x5D, 0xD0, 0x4B, 0x4F, 0xA5, 0x68, 0x3A, 0x68, 0xAA, 0x42, 0x28, 0xD8, 0x79, 0x68, 0x11, 0x44, 0x8D, 0x42, -0x24, 0xD8, 0x29, 0x68, 0xA1, 0x60, 0x01, 0x3B, 0xAA, 0x42, 0x23, 0x80, 0x32, 0xD8, 0x7B, 0x68, 0x13, 0x44, 0xAB, 0x42, -0x2E, 0xD3, 0x15, 0xF8, 0x03, 0x1C, 0x55, 0x29, 0x53, 0xD1, 0xAA, 0x23, 0x05, 0xF8, 0x03, 0x3C, 0x3B, 0x68, 0x9D, 0x42, -0x5D, 0xD3, 0x7A, 0x68, 0x13, 0x44, 0x9D, 0x42, 0x59, 0xD8, 0x01, 0x23, 0x05, 0xF8, 0x02, 0x3C, 0x33, 0x68, 0x00, 0x2B, -0x34, 0xD0, 0x36, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x7B, 0xBB, 0x72, 0xB3, 0x35, 0xE0, 0x35, 0x48, 0x01, 0x68, -0x8D, 0x42, 0x03, 0xD3, 0x40, 0x68, 0x01, 0x44, 0x8D, 0x42, 0xD2, 0xD9, 0x29, 0x46, 0x32, 0x48, 0xFF, 0xF7, 0x12, 0xF9, -0x23, 0x88, 0x3A, 0x68, 0x00, 0x21, 0x01, 0x3B, 0xAA, 0x42, 0xA1, 0x60, 0x23, 0x80, 0xCC, 0xD9, 0x2B, 0x48, 0x03, 0x68, -0xAB, 0x42, 0x1F, 0xD8, 0x41, 0x68, 0x19, 0x44, 0xA9, 0x42, 0x1B, 0xD3, 0x15, 0xF8, 0x03, 0x1C, 0x55, 0x29, 0x1C, 0xD1, -0xAA, 0x42, 0x37, 0xD9, 0x42, 0x68, 0x13, 0x44, 0x9D, 0x42, 0xC2, 0xD9, 0x29, 0x46, 0x24, 0x48, 0xFF, 0xF7, 0xF4, 0xF8, -0xC0, 0xE7, 0x23, 0x48, 0xFF, 0xF7, 0xF0, 0xF8, 0x28, 0x46, 0xF8, 0xBD, 0xC2, 0xB1, 0x1A, 0x4B, 0x35, 0x60, 0x1B, 0x68, -0xA5, 0xB9, 0x9B, 0xB1, 0x62, 0xB6, 0xF5, 0xE7, 0x29, 0x46, 0x1D, 0x48, 0xFF, 0xF7, 0xE2, 0xF8, 0x00, 0x21, 0x33, 0x68, -0x33, 0xB1, 0x13, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x17, 0x48, 0x2A, 0x46, -0xFF, 0xF7, 0xD4, 0xF8, 0x00, 0x25, 0x28, 0x46, 0xF8, 0xBD, 0x0F, 0x4A, 0x13, 0x68, 0x9D, 0x42, 0x03, 0xD3, 0x52, 0x68, -0x13, 0x44, 0x9D, 0x42, 0x9D, 0xD9, 0x29, 0x46, 0x10, 0x48, 0xFF, 0xF7, 0xC5, 0xF8, 0x9B, 0xE7, 0x79, 0x68, 0x0A, 0x44, -0x95, 0x42, 0x8A, 0xD9, 0x9D, 0x42, 0xC5, 0xD3, 0xC0, 0xE7, 0x0C, 0x48, 0xFF, 0xF7, 0xBA, 0xF8, 0x00, 0x25, 0xC7, 0xE7, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xC8, 0x25, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0xCC, 0x80, 0x15, 0x00, -0x10, 0x80, 0x15, 0x00, 0x98, 0x80, 0x15, 0x00, 0x00, 0x81, 0x15, 0x00, 0x28, 0x81, 0x15, 0x00, 0x38, 0x80, 0x15, 0x00, -0xB4, 0x80, 0x15, 0x00, 0x00, 0x29, 0x00, 0xF0, 0x0F, 0x81, 0x2D, 0xE9, 0xF8, 0x43, 0x03, 0x68, 0x8B, 0x42, 0x05, 0x46, -0x0C, 0x46, 0x59, 0xD8, 0x42, 0x68, 0x13, 0x44, 0x99, 0x42, 0x55, 0xD8, 0x83, 0x4F, 0x3B, 0x68, 0x99, 0x42, 0x55, 0xD3, -0x7A, 0x68, 0x13, 0x44, 0x99, 0x42, 0x51, 0xD8, 0x14, 0xF8, 0x04, 0x6C, 0x2B, 0x7A, 0xB3, 0x42, 0x48, 0xD9, 0xD5, 0xF8, -0x0C, 0x80, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x7A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x7A, 0x4D, -0x38, 0x68, 0x2B, 0x68, 0x84, 0x42, 0x03, 0xF1, 0x01, 0x03, 0x2B, 0x60, 0x25, 0xD3, 0x7B, 0x68, 0x03, 0x44, 0x9C, 0x42, -0x21, 0xD8, 0x14, 0xF8, 0x03, 0x9C, 0xB9, 0xF1, 0xAA, 0x0F, 0x00, 0xF0, 0xAB, 0x80, 0xB9, 0xF1, 0xFF, 0x0F, 0x20, 0xD1, -0x7B, 0x68, 0x18, 0x44, 0x84, 0x42, 0x00, 0xF2, 0xA1, 0x80, 0x14, 0xF8, 0x02, 0x0C, 0x01, 0x38, 0xC0, 0xB2, 0x04, 0xF8, -0x02, 0x0C, 0x00, 0x28, 0x47, 0xD0, 0x2B, 0x68, 0x33, 0xB1, 0x67, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x40, 0xB2, 0xBD, 0xE8, 0xF8, 0x83, 0x64, 0x4B, 0x1A, 0x68, 0x94, 0x42, 0x1E, 0xD2, 0x63, 0x48, -0x21, 0x46, 0xFF, 0xF7, 0x47, 0xF8, 0x2B, 0x68, 0x33, 0xB1, 0x5D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x4F, 0xF0, 0xFF, 0x30, 0xBD, 0xE8, 0xF8, 0x83, 0x59, 0x4B, 0x1A, 0x68, 0x94, 0x42, 0x03, 0xD3, -0x5B, 0x68, 0x1A, 0x44, 0x94, 0x42, 0xA5, 0xD9, 0x57, 0x48, 0x21, 0x46, 0xFF, 0xF7, 0x2E, 0xF8, 0x00, 0x26, 0xA1, 0xE7, -0x59, 0x68, 0x11, 0x44, 0x8C, 0x42, 0xDC, 0xD8, 0x14, 0xF8, 0x03, 0x9C, 0xB9, 0xF1, 0xAA, 0x0F, 0x6C, 0xD0, 0xB9, 0xF1, -0xFF, 0x0F, 0xD8, 0xD1, 0x84, 0x42, 0xB5, 0xD2, 0x1A, 0x68, 0x94, 0x42, 0x03, 0xD3, 0x5B, 0x68, 0x1A, 0x44, 0x94, 0x42, -0xB3, 0xD9, 0x4B, 0x48, 0x21, 0x46, 0xFF, 0xF7, 0x13, 0xF8, 0xB9, 0xF1, 0xFF, 0x0F, 0x5D, 0xD0, 0x06, 0xEB, 0x46, 0x06, -0x08, 0xEB, 0x86, 0x09, 0x38, 0xF8, 0x26, 0x20, 0xB9, 0xF8, 0x02, 0x30, 0x9A, 0x42, 0x4F, 0xEA, 0x86, 0x06, 0xBC, 0xD2, -0x3B, 0x68, 0x9C, 0x42, 0x31, 0xD3, 0x7A, 0x68, 0x13, 0x44, 0x9C, 0x42, 0x2D, 0xD8, 0x55, 0x23, 0x04, 0xF8, 0x03, 0x3C, -0x3B, 0x68, 0x9C, 0x42, 0x1A, 0xD3, 0x7A, 0x68, 0x13, 0x44, 0x9C, 0x42, 0x16, 0xD8, 0xD9, 0xF8, 0x08, 0x30, 0x23, 0x60, -0x38, 0xF8, 0x06, 0x30, 0x28, 0x68, 0xC9, 0xF8, 0x08, 0x40, 0x01, 0x33, 0x28, 0xF8, 0x06, 0x30, 0x38, 0xB1, 0x2E, 0x4B, -0x01, 0x38, 0x1B, 0x68, 0x28, 0x60, 0x10, 0xB9, 0x0B, 0xB1, 0x62, 0xB6, 0xA2, 0xE7, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, -0x2A, 0x4A, 0x13, 0x68, 0x9C, 0x42, 0x03, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x9C, 0x42, 0xE0, 0xD9, 0x21, 0x46, 0x2A, 0x48, -0xFE, 0xF7, 0xD0, 0xFF, 0xDE, 0xE7, 0x24, 0x4A, 0x13, 0x68, 0x9C, 0x42, 0x03, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x9C, 0x42, -0xC9, 0xD9, 0x21, 0x46, 0x24, 0x48, 0xFE, 0xF7, 0xC3, 0xFF, 0xC7, 0xE7, 0x1D, 0x4B, 0xA1, 0xE7, 0x14, 0xF8, 0x02, 0x0C, -0x01, 0x38, 0xC0, 0xB2, 0x04, 0xF8, 0x02, 0x0C, 0x00, 0x28, 0x7F, 0xF4, 0x5C, 0xAF, 0xA5, 0xE7, 0x84, 0x42, 0xBF, 0xF4, -0x4B, 0xAF, 0x96, 0xE7, 0x3B, 0x68, 0x9C, 0x42, 0x11, 0xD3, 0x7A, 0x68, 0x13, 0x44, 0x9C, 0x42, 0x0D, 0xD8, 0x01, 0x23, -0x04, 0xF8, 0x02, 0x3C, 0x2B, 0x68, 0x33, 0xB1, 0x0D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x01, 0x20, 0x60, 0xE7, 0x0B, 0x4A, 0x13, 0x68, 0x9C, 0x42, 0x03, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x9C, 0x42, -0xE9, 0xD9, 0x21, 0x46, 0x0C, 0x48, 0xFE, 0xF7, 0x91, 0xFF, 0xE7, 0xE7, 0x4F, 0xF0, 0xFF, 0x30, 0x70, 0x47, 0x00, 0xBF, -0xC8, 0x25, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x00, 0x81, 0x15, 0x00, -0x50, 0x81, 0x15, 0x00, 0x80, 0x81, 0x15, 0x00, 0x64, 0x80, 0x15, 0x00, 0x10, 0x80, 0x15, 0x00, 0x38, 0x80, 0x15, 0x00, -0x0B, 0x4A, 0x13, 0x68, 0x83, 0x42, 0x05, 0xD8, 0x52, 0x68, 0x13, 0x44, 0x98, 0x42, 0x01, 0xD8, 0x01, 0x20, 0x70, 0x47, -0x07, 0x4A, 0x13, 0x68, 0x98, 0x42, 0x06, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x98, 0x42, 0x8C, 0xBF, 0x00, 0x20, 0x01, 0x20, -0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, 0xC8, 0x25, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x10, 0x4B, 0x70, 0xB5, -0x10, 0x4C, 0xDC, 0x60, 0x15, 0x46, 0x0E, 0x46, 0x03, 0x24, 0x01, 0x46, 0x20, 0x22, 0x18, 0x46, 0x5D, 0x60, 0x1C, 0x72, -0x1E, 0x60, 0xFF, 0xF7, 0xCD, 0xFC, 0x0B, 0x4B, 0x4F, 0xF4, 0x80, 0x32, 0x01, 0x21, 0x4F, 0xF0, 0x02, 0x15, 0x04, 0x24, -0x4F, 0xF4, 0x80, 0x20, 0x5A, 0x60, 0x00, 0x22, 0xC3, 0xE9, 0x05, 0x40, 0xDD, 0x60, 0x19, 0x60, 0x99, 0x60, 0x1A, 0x61, -0x9A, 0x83, 0x70, 0xBD, 0xE4, 0x25, 0x17, 0x00, 0xF4, 0x25, 0x17, 0x00, 0xA8, 0x25, 0x17, 0x00, 0x38, 0xB5, 0x0F, 0x4B, -0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0x46, 0x0D, 0xD0, 0x0D, 0x48, 0x7C, 0x21, 0xFF, 0xF7, 0xAB, 0xFD, 0x04, 0x46, -0x2C, 0xB1, 0x20, 0x46, 0xFF, 0xF7, 0xAC, 0xFF, 0x38, 0xB1, 0x04, 0xF8, 0x01, 0x5C, 0x20, 0x46, 0x38, 0xBD, 0x00, 0xF0, -0xC3, 0xF9, 0x04, 0x46, 0xF2, 0xE7, 0x21, 0x46, 0x04, 0x48, 0xFE, 0xF7, 0x17, 0xFF, 0x20, 0x46, 0x38, 0xBD, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0xAC, 0x81, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0xFF, 0xF7, 0x92, 0xFF, -0x98, 0xB1, 0x31, 0x4B, 0x14, 0xF8, 0x04, 0x2C, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x23, 0xD0, 0x02, 0x2B, 0x2A, 0xD0, -0x03, 0x2B, 0x15, 0xD1, 0x2C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x30, 0xDB, 0x02, 0x2A, 0x30, 0xD0, -0x10, 0xBD, 0x29, 0x48, 0x21, 0x46, 0xFE, 0xF7, 0xF1, 0xFE, 0x25, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x11, 0xD0, -0x02, 0x2B, 0x18, 0xD0, 0x03, 0x2B, 0x29, 0xD0, 0x20, 0x46, 0xFF, 0xF7, 0x6D, 0xFF, 0x90, 0xB3, 0x21, 0x46, 0x21, 0x48, -0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x3C, 0xBE, 0x02, 0x2A, 0x0F, 0xD0, 0x00, 0x2A, 0xE3, 0xD1, 0x20, 0x46, 0xBD, 0xE8, -0x10, 0x40, 0x00, 0xF0, 0x9B, 0xB9, 0x02, 0x2A, 0x26, 0xD0, 0x00, 0x2A, 0xDA, 0xD1, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, -0x03, 0xF0, 0xF2, 0xB9, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x00, 0xF0, 0x45, 0xB9, 0x02, 0x2A, 0x0C, 0xD1, 0x13, 0x4B, -0x20, 0x46, 0xD3, 0xF8, 0xE8, 0x34, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xC1, 0xDA, 0xBD, 0xE8, 0x10, 0x40, 0x0C, 0x49, 0x0D, 0x48, 0xBE, 0x22, 0x1D, 0xF0, 0xF5, 0xBA, 0x21, 0x46, -0x0B, 0x48, 0xFE, 0xF7, 0xAD, 0xFE, 0xC7, 0xE7, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x03, 0xF0, 0x21, 0xB9, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x50, 0x81, 0x15, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xD4, 0x81, 0x15, 0x00, 0xE4, 0x81, 0x15, 0x00, 0x30, 0xB5, 0x1A, 0x4C, 0x1A, 0x4A, 0x23, 0x68, -0x1A, 0x48, 0x5D, 0x88, 0x99, 0x88, 0xB2, 0xF8, 0xD4, 0x20, 0x85, 0xB0, 0x04, 0x3A, 0xAD, 0xF8, 0x02, 0x50, 0xDD, 0x88, -0xAD, 0xF8, 0x06, 0x10, 0x19, 0x89, 0xAD, 0xF8, 0x0A, 0x50, 0xD3, 0xE9, 0x05, 0x35, 0xAD, 0xF8, 0x0E, 0x10, 0x01, 0x21, -0x03, 0x60, 0x01, 0x72, 0x10, 0x4B, 0x45, 0x60, 0x0C, 0x21, 0xC3, 0x60, 0xAD, 0xF8, 0x0C, 0x20, 0x40, 0xF2, 0x3C, 0x63, -0xAD, 0xF8, 0x00, 0x10, 0x7C, 0x25, 0x69, 0x46, 0x20, 0x22, 0xAD, 0xF8, 0x08, 0x30, 0xAD, 0xF8, 0x04, 0x50, 0xFF, 0xF7, -0xE9, 0xFB, 0x23, 0x68, 0x01, 0xA8, 0xD3, 0xE9, 0x07, 0x12, 0xFF, 0xF7, 0x07, 0xFF, 0x05, 0xB0, 0x30, 0xBD, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xC8, 0x25, 0x17, 0x00, 0xD8, 0x25, 0x17, 0x00, 0xF8, 0xB5, 0x0C, 0x4D, -0x0C, 0x48, 0x1B, 0xF0, 0x3F, 0xFE, 0x2B, 0x68, 0x5B, 0x88, 0x83, 0xB1, 0x0A, 0x4F, 0x09, 0x4E, 0x00, 0x24, 0x0C, 0x21, -0x38, 0x46, 0xFF, 0xF7, 0xCB, 0xFC, 0x01, 0x46, 0x30, 0x46, 0x1B, 0xF0, 0x35, 0xFE, 0x2B, 0x68, 0x01, 0x34, 0x5A, 0x88, -0xA3, 0xB2, 0x9A, 0x42, 0xF1, 0xD8, 0xF8, 0xBD, 0x78, 0x36, 0x17, 0x00, 0x08, 0x60, 0x17, 0x00, 0xC8, 0x25, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x41, 0xDF, 0xF8, 0x4C, 0x80, 0x0F, 0x48, 0x1B, 0xF0, 0x1D, 0xFE, 0xD8, 0xF8, 0x00, 0x30, 0x1B, 0x89, -0xB3, 0xB1, 0x0D, 0x4D, 0x0D, 0x4F, 0x0B, 0x4E, 0x00, 0x24, 0x4F, 0xF4, 0xD7, 0x61, 0x38, 0x46, 0xFF, 0xF7, 0xA6, 0xFC, -0x01, 0x46, 0x30, 0x46, 0x1B, 0xF0, 0x10, 0xFE, 0xD8, 0xF8, 0x00, 0x20, 0x2B, 0x68, 0x11, 0x89, 0x01, 0x34, 0xA2, 0xB2, -0x01, 0x33, 0x91, 0x42, 0x2B, 0x60, 0xEC, 0xD8, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x60, 0x17, 0x00, 0x18, 0x26, 0x17, 0x00, -0xE4, 0x25, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0xF8, 0xB5, 0x0C, 0x4D, 0x0C, 0x48, 0x1B, 0xF0, 0xF3, 0xFD, 0x2B, 0x68, -0x9B, 0x88, 0x83, 0xB1, 0x0A, 0x4F, 0x09, 0x4E, 0x00, 0x24, 0x7C, 0x21, 0x38, 0x46, 0xFF, 0xF7, 0x7F, 0xFC, 0x01, 0x46, -0x30, 0x46, 0x1B, 0xF0, 0xE9, 0xFD, 0x2B, 0x68, 0x01, 0x34, 0x9A, 0x88, 0xA3, 0xB2, 0x9A, 0x42, 0xF1, 0xD8, 0xF8, 0xBD, -0x78, 0x36, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x09, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x09, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, -0x1B, 0xF0, 0x10, 0xFE, 0x23, 0x68, 0x33, 0xB1, 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x08, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, -0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x0A, 0x48, -0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0xAB, 0xFD, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, -0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x08, 0x60, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x0C, 0x4C, 0x0C, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0xCE, 0xFD, 0x18, 0xB1, 0x0A, 0x4A, -0x13, 0x68, 0x01, 0x3B, 0x13, 0x60, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x60, 0x17, 0x00, -0x18, 0x26, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0x0B, 0x4C, 0x0C, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0x61, 0xFD, 0x0A, 0x49, -0x23, 0x68, 0x0A, 0x68, 0x01, 0x32, 0x0A, 0x60, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x60, 0x17, 0x00, -0x18, 0x26, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x09, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x09, 0x4C, 0x09, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0x7E, 0xFD, 0x23, 0x68, 0x33, 0xB1, -0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x0A, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, -0x19, 0xFD, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, -0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, -0x41, 0x4B, 0xDF, 0xF8, 0x20, 0xB1, 0x1B, 0x68, 0x40, 0x4D, 0x1F, 0x8E, 0xDF, 0xF8, 0x18, 0x91, 0xDF, 0xF8, 0x18, 0x81, -0x8B, 0x89, 0x0C, 0x46, 0x06, 0x46, 0x9F, 0x42, 0x6A, 0xD9, 0xD8, 0xF8, 0x00, 0x30, 0x04, 0x2B, 0x63, 0xD9, 0xD6, 0xE9, -0x01, 0x03, 0x1B, 0x69, 0x98, 0x47, 0x82, 0x46, 0x00, 0x28, 0x62, 0xD0, 0xFF, 0xF7, 0x0E, 0xFF, 0x00, 0x28, 0x4A, 0xD0, -0x00, 0x22, 0x34, 0x4B, 0x02, 0x60, 0x1B, 0x68, 0x42, 0x60, 0x53, 0x44, 0x82, 0x60, 0x03, 0x60, 0xEF, 0xF3, 0x10, 0x83, -0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2E, 0x4A, 0xDB, 0xF8, 0x00, 0x30, 0xD2, 0xF8, -0x00, 0xC0, 0x43, 0xF0, 0x01, 0x03, 0x0C, 0xF1, 0x01, 0x01, 0x11, 0x60, 0xCB, 0xF8, 0x00, 0x30, 0xDB, 0xF8, 0x00, 0x30, -0x9B, 0x07, 0xFB, 0xD4, 0x2B, 0x68, 0x1B, 0xBB, 0xD9, 0xF8, 0x00, 0x30, 0xC9, 0xF8, 0x00, 0x00, 0x2B, 0x68, 0xB4, 0xF8, -0x0C, 0xE0, 0x60, 0x60, 0x0E, 0xF1, 0x01, 0x0E, 0x98, 0xB2, 0x01, 0x30, 0x1F, 0xFA, 0x8E, 0xF3, 0xA3, 0x81, 0x28, 0x60, -0xDB, 0xF8, 0x00, 0x00, 0x20, 0xF0, 0x01, 0x00, 0xCB, 0xF8, 0x00, 0x00, 0x00, 0x29, 0xB4, 0xD0, 0x18, 0x49, 0xC2, 0xF8, -0x00, 0xC0, 0x0A, 0x68, 0xBC, 0xF1, 0x00, 0x0F, 0xAD, 0xD1, 0x00, 0x2A, 0xAB, 0xD0, 0x62, 0xB6, 0xA3, 0x89, 0xA8, 0xE7, -0x63, 0x68, 0x00, 0x2B, 0xDC, 0xD0, 0x58, 0x60, 0xDA, 0xE7, 0x12, 0x48, 0xFE, 0xF7, 0xAA, 0xFC, 0xD6, 0xE9, 0x01, 0x03, -0x51, 0x46, 0x5B, 0x69, 0x98, 0x47, 0x09, 0x4B, 0xA2, 0x89, 0x1B, 0x68, 0x5B, 0x8E, 0x9A, 0x42, 0x02, 0xD2, 0x04, 0x20, -0x1B, 0xF0, 0xEA, 0xFB, 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x8F, 0xD8, 0xF8, 0x00, 0x10, 0x08, 0x48, 0xFE, 0xF7, 0x94, 0xFC, -0xED, 0xE7, 0x00, 0xBF, 0xC8, 0x35, 0x17, 0x00, 0x64, 0x00, 0x24, 0x40, 0x34, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x24, 0x82, 0x15, 0x00, 0x0C, 0x82, 0x15, 0x00, 0x60, 0x00, 0x24, 0x40, 0x68, 0x00, 0x24, 0x40, -0x18, 0x26, 0x17, 0x00, 0x08, 0xB5, 0x03, 0x4B, 0xD3, 0xF8, 0xF8, 0x32, 0x98, 0x47, 0x01, 0x20, 0x08, 0xBD, 0x00, 0xBF, -0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0A, 0x4A, 0x0A, 0x49, 0x0B, 0x4C, 0x00, 0x23, 0xC2, 0xE9, 0x02, 0x03, 0xC2, 0xE9, -0x04, 0x33, 0xC2, 0xE9, 0x00, 0x33, 0xC1, 0xE9, 0x00, 0x33, 0x8B, 0x81, 0x8B, 0x60, 0x8B, 0x73, 0x10, 0x46, 0xD4, 0xF8, -0x10, 0x31, 0x98, 0x47, 0x01, 0x20, 0x10, 0xBD, 0x28, 0x60, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0x89, 0xB0, 0xB9, 0x4B, 0xD3, 0xF8, 0x14, 0x35, 0x00, 0x2B, 0x00, 0xF0, 0x30, 0x81, 0xEF, 0xF3, -0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0xB4, 0x4A, 0x01, 0x23, 0x13, 0x60, 0xDF, 0xF8, 0x04, 0x93, 0xB1, 0x4B, -0xD9, 0xF8, 0x00, 0x20, 0xD3, 0xF8, 0x14, 0x35, 0x51, 0x1C, 0xC9, 0xF8, 0x00, 0x10, 0x31, 0xB1, 0xAD, 0x49, 0xC9, 0xF8, -0x00, 0x20, 0x09, 0x68, 0x0A, 0xB9, 0x01, 0xB1, 0x62, 0xB6, 0x93, 0xF8, 0x0C, 0xB0, 0x5A, 0x7B, 0x5C, 0x68, 0x05, 0x92, -0xBB, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x38, 0x81, 0x00, 0x2C, 0x00, 0xF0, 0x35, 0x81, 0x9B, 0x68, 0x00, 0x2B, 0x00, 0xF0, -0x31, 0x81, 0xA3, 0x4B, 0x07, 0x93, 0x9B, 0x89, 0x1F, 0xFA, 0x8B, 0xF2, 0x5B, 0x45, 0x06, 0x92, 0xC0, 0xF0, 0x5C, 0x81, -0xDF, 0xF8, 0xB0, 0xA2, 0x00, 0x26, 0xAA, 0xE0, 0xD4, 0xE9, 0x00, 0x53, 0x03, 0x93, 0x6B, 0x1E, 0xB3, 0xF5, 0xE8, 0x1F, -0x27, 0xD3, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x95, 0x4A, 0x01, 0x23, 0x13, 0x60, 0x03, 0x9B, -0xD9, 0xF8, 0x00, 0x70, 0x01, 0x93, 0x23, 0x68, 0x93, 0x48, 0x00, 0x93, 0x5A, 0x46, 0x23, 0x46, 0x31, 0x46, 0x01, 0x37, -0xC9, 0xF8, 0x00, 0x70, 0x1C, 0xF0, 0xC4, 0xFD, 0x4F, 0xF4, 0x80, 0x71, 0xA4, 0xF1, 0x80, 0x00, 0x1D, 0xF0, 0x9C, 0xF9, -0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x88, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x20, 0x46, 0xFF, 0xF7, 0x1A, 0xFE, 0x6B, 0x7E, 0x2F, 0x7E, 0x09, 0x2B, 0x09, 0xD8, 0x83, 0x4A, 0x4F, 0xF4, -0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x25, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0xDD, 0x80, 0x6B, 0x8B, 0x13, 0xF0, -0x08, 0x0F, 0x7E, 0x4B, 0x40, 0xF0, 0xBC, 0x80, 0x1A, 0x46, 0x04, 0x93, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x23, -0x93, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0xCC, 0x80, 0x95, 0xF8, 0x16, 0x80, 0xB8, 0xF1, 0x05, 0x0F, 0x00, 0xF2, -0x09, 0x81, 0x75, 0x4C, 0x75, 0x48, 0x1B, 0xF0, 0xF1, 0xFB, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, -0xC0, 0xF2, 0xA5, 0x80, 0xE1, 0x8B, 0x71, 0x4B, 0xE2, 0x6C, 0x13, 0xF8, 0x08, 0xC0, 0x21, 0xF0, 0x01, 0x01, 0x00, 0x23, -0xE1, 0x83, 0x63, 0x64, 0x13, 0x61, 0xE3, 0x62, 0x6B, 0x4B, 0x29, 0x46, 0x0C, 0xF1, 0x01, 0x0C, 0x1C, 0x22, 0x20, 0x1D, -0x03, 0xF8, 0x08, 0xC0, 0x2F, 0xF0, 0x8A, 0xFA, 0xE1, 0x8B, 0xDA, 0xF8, 0x00, 0x00, 0x00, 0x23, 0x21, 0xF4, 0x00, 0x42, -0x84, 0xF8, 0x42, 0x30, 0x22, 0xF0, 0x02, 0x02, 0x2D, 0x1A, 0x63, 0x62, 0x23, 0x65, 0x0B, 0x07, 0xE2, 0x83, 0xA5, 0x64, -0x00, 0xF1, 0x87, 0x80, 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, -0x13, 0x44, 0x5A, 0x49, 0xA0, 0x88, 0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x02, 0x44, 0x41, 0xF8, 0x23, 0x20, -0xA4, 0x20, 0x04, 0x9B, 0x00, 0xFB, 0x07, 0x80, 0x99, 0x30, 0x21, 0x46, 0x03, 0xEB, 0xC0, 0x00, 0x03, 0x9C, 0x1B, 0xF0, -0x61, 0xFB, 0x01, 0x36, 0xF3, 0xB2, 0x9B, 0x45, 0x16, 0xD9, 0x05, 0x9B, 0x00, 0x2B, 0x3F, 0xF4, 0x51, 0xAF, 0x4D, 0x49, -0x4F, 0xF4, 0x80, 0x60, 0x1C, 0xF0, 0x7E, 0xFD, 0x20, 0x46, 0xD4, 0xE9, 0x00, 0x54, 0xFF, 0xF7, 0x93, 0xFD, 0xDA, 0xF8, -0x00, 0x00, 0x01, 0x36, 0x28, 0x1A, 0xFF, 0xF7, 0x4B, 0xFC, 0xF3, 0xB2, 0x9B, 0x45, 0xE8, 0xD8, 0x07, 0x9A, 0x06, 0x99, -0x93, 0x89, 0x5B, 0x1A, 0x93, 0x81, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x35, 0x4A, 0x01, 0x23, -0x13, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x3D, 0x48, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x1B, 0xF0, 0x75, 0xFB, 0x2F, 0x49, -0x91, 0xF8, 0x11, 0x35, 0xD1, 0xF8, 0x14, 0x25, 0x01, 0x3B, 0x81, 0xF8, 0x11, 0x35, 0x00, 0x2A, 0x00, 0xF0, 0x94, 0x80, -0xD9, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0xDC, 0xAE, 0x28, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, -0x00, 0x2B, 0x7F, 0xF4, 0xD4, 0xAE, 0x00, 0x2A, 0x3F, 0xF4, 0xD1, 0xAE, 0x62, 0xB6, 0x21, 0x4B, 0xD3, 0xF8, 0x14, 0x35, -0x00, 0x2B, 0x7F, 0xF4, 0xD0, 0xAE, 0x40, 0x20, 0x1B, 0xF0, 0x6A, 0xFA, 0x04, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, -0x1B, 0xF0, 0x64, 0xBA, 0x1F, 0x4C, 0x04, 0x93, 0x4F, 0xF0, 0x05, 0x08, 0x50, 0xE7, 0x00, 0x28, 0x7F, 0xF4, 0x58, 0xAF, -0x21, 0x49, 0x22, 0x48, 0x4F, 0xF4, 0xE5, 0x72, 0x1C, 0xF0, 0x4C, 0xFF, 0x50, 0xE7, 0x04, 0x9B, 0x4F, 0xF4, 0xA4, 0x60, -0x00, 0xFB, 0x07, 0x30, 0x21, 0x46, 0x00, 0xF5, 0xA3, 0x60, 0x03, 0x9C, 0x1B, 0xF0, 0xEC, 0xFA, 0x89, 0xE7, 0xDA, 0xF8, -0x00, 0x00, 0x03, 0x9C, 0x28, 0x1A, 0xFF, 0xF7, 0xE7, 0xFB, 0x82, 0xE7, 0x0A, 0x4B, 0x16, 0x48, 0x07, 0x93, 0x1D, 0x46, -0xFE, 0xF7, 0xEE, 0xFA, 0xAB, 0x89, 0x1F, 0xFA, 0x8B, 0xF2, 0x5B, 0x45, 0x06, 0x92, 0x27, 0xD3, 0xBB, 0xF1, 0x00, 0x0F, -0x7F, 0xF4, 0xC8, 0xAE, 0x8C, 0xE7, 0x00, 0xBF, 0x58, 0x58, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, -0x50, 0x82, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x20, 0x58, 0x17, 0x00, -0x74, 0x28, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0xB4, 0x82, 0x15, 0x00, 0x6C, 0x5D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x9C, 0x82, 0x15, 0x00, 0x34, 0x82, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x34, 0x1A, 0x17, 0x00, 0x10, 0x48, 0xFE, 0xF7, -0xBD, 0xFA, 0xBB, 0xF1, 0x00, 0x0F, 0x7F, 0xF4, 0x9D, 0xAE, 0x61, 0xE7, 0x0D, 0x48, 0x0E, 0x4C, 0x1C, 0xF0, 0x7E, 0xFC, -0x80, 0x21, 0xA5, 0xF1, 0x40, 0x00, 0x1D, 0xF0, 0x57, 0xF8, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, -0xE9, 0xAE, 0x08, 0x49, 0x08, 0x48, 0x4F, 0xF4, 0xE3, 0x72, 0x1C, 0xF0, 0xE7, 0xFE, 0xE1, 0xE6, 0x20, 0x20, 0x1B, 0xF0, -0x11, 0xFA, 0x67, 0xE7, 0x44, 0x82, 0x15, 0x00, 0x74, 0x82, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x88, 0x82, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x24, 0x91, 0xDF, 0xF8, 0x24, 0x81, 0x42, 0x4F, 0x43, 0x4B, -0xD3, 0xF8, 0xA0, 0x27, 0x00, 0x2A, 0x5E, 0xD0, 0x15, 0x7B, 0xD2, 0xF8, 0x04, 0xA0, 0x56, 0x7B, 0x65, 0xB3, 0x4F, 0xF0, -0x00, 0x0B, 0x11, 0xE0, 0xDA, 0xE9, 0x00, 0x4A, 0xFF, 0xF7, 0xB0, 0xFC, 0x20, 0x46, 0xFD, 0xF7, 0x03, 0xFB, 0xD8, 0xF8, -0x00, 0x00, 0x0B, 0xF1, 0x01, 0x0B, 0x20, 0x1A, 0xFF, 0xF7, 0x64, 0xFB, 0x5F, 0xFA, 0x8B, 0xF1, 0xA9, 0x42, 0x17, 0xD2, -0x50, 0x46, 0x39, 0x46, 0x00, 0x2E, 0xE9, 0xD0, 0x4F, 0xF4, 0x80, 0x60, 0x1C, 0xF0, 0x80, 0xFC, 0x50, 0x46, 0xDA, 0xE9, -0x00, 0x4A, 0xFF, 0xF7, 0x95, 0xFC, 0xD8, 0xF8, 0x00, 0x00, 0x0B, 0xF1, 0x01, 0x0B, 0x20, 0x1A, 0xFF, 0xF7, 0x4C, 0xFB, -0x5F, 0xFA, 0x8B, 0xF1, 0xA9, 0x42, 0xE7, 0xD3, 0x28, 0x4A, 0x93, 0x89, 0x5D, 0x1B, 0x95, 0x81, 0xEF, 0xF3, 0x10, 0x83, -0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x25, 0x4A, 0x01, 0x23, 0x13, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x23, 0x48, 0x01, 0x33, -0xC9, 0xF8, 0x00, 0x30, 0x1B, 0xF0, 0x76, 0xFA, 0x1D, 0x49, 0xD9, 0xF8, 0x00, 0x20, 0x91, 0xF8, 0x9D, 0x37, 0x01, 0x3B, -0x81, 0xF8, 0x9D, 0x37, 0x00, 0x2A, 0xAA, 0xD0, 0x1A, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC9, 0xF8, 0x00, 0x20, 0x00, 0x2A, -0xA3, 0xD1, 0x00, 0x2B, 0xA1, 0xD0, 0x62, 0xB6, 0x13, 0x4B, 0xD3, 0xF8, 0xA0, 0x27, 0x00, 0x2A, 0xA0, 0xD1, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x4F, 0xF4, -0x00, 0x00, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x1B, 0xF0, 0x8A, 0xF9, 0x04, 0x20, 0x1B, 0xF0, 0x63, 0xF9, 0xD9, 0xF8, -0x00, 0x30, 0x3B, 0xB1, 0x07, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, -0xBD, 0xE8, 0xF8, 0x8F, 0xB0, 0x82, 0x15, 0x00, 0x58, 0x58, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0xF8, 0x5F, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x34, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0xD8, 0x80, -0xDF, 0xF8, 0xD8, 0x90, 0xDF, 0xF8, 0xD8, 0xA0, 0xD9, 0xF8, 0x08, 0x3C, 0x00, 0x2B, 0x41, 0xD0, 0x1F, 0x89, 0x5D, 0x68, -0xBF, 0xB1, 0x00, 0x24, 0x26, 0x46, 0x23, 0x46, 0xB3, 0x42, 0xAB, 0x46, 0x04, 0xF1, 0x01, 0x04, 0x6D, 0x68, 0x08, 0xD1, -0xDA, 0xF8, 0x8C, 0x32, 0x98, 0x47, 0x9B, 0xF8, 0x0B, 0x30, 0x03, 0xF0, 0x7F, 0x03, 0x1E, 0x44, 0xB6, 0xB2, 0x58, 0x46, -0xFF, 0xF7, 0x0A, 0xFC, 0xA3, 0xB2, 0xBB, 0x42, 0xEA, 0xD3, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x1F, 0x4A, 0x01, 0x23, 0x13, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x1E, 0x48, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x1B, 0xF0, -0xF7, 0xF9, 0x99, 0xF8, 0x02, 0x3C, 0xD8, 0xF8, 0x00, 0x20, 0x01, 0x3B, 0x89, 0xF8, 0x02, 0x3C, 0x00, 0x2A, 0xC7, 0xD0, -0x15, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC8, 0xF8, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xD1, 0x00, 0x2B, 0xBE, 0xD0, 0x62, 0xB6, -0xD9, 0xF8, 0x08, 0x3C, 0x00, 0x2B, 0xBD, 0xD1, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x10, 0x20, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x1B, 0xF0, 0x0E, 0xF9, -0xD8, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x05, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x84, 0x42, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x7C, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0xB4, 0x80, 0x2A, 0x4E, 0xC1, 0x46, -0xA8, 0xF1, 0x06, 0x07, 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0x33, 0xD0, 0x1D, 0x89, 0x5C, 0x68, 0x7D, 0xB1, 0x4F, 0xF0, -0x00, 0x0B, 0x20, 0x68, 0xA2, 0x46, 0x0B, 0xF1, 0x01, 0x0B, 0x64, 0x68, 0xFF, 0xF7, 0x5E, 0xFA, 0x50, 0x46, 0xFF, 0xF7, -0x9D, 0xFB, 0x1F, 0xFA, 0x8B, 0xF2, 0xAA, 0x42, 0xF1, 0xD3, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x1B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x33, 0x68, 0x48, 0x46, 0x01, 0x33, 0x33, 0x60, 0x1B, 0xF0, 0x8B, 0xF9, 0x3B, 0x78, -0x32, 0x68, 0x01, 0x3B, 0x3B, 0x70, 0x00, 0x2A, 0xD4, 0xD0, 0x14, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0x32, 0x60, 0x00, 0x2A, -0xCE, 0xD1, 0x00, 0x2B, 0xCC, 0xD0, 0x62, 0xB6, 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0xCB, 0xD1, 0xEF, 0xF3, 0x10, 0x83, -0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x33, 0x68, 0x08, 0x20, 0x01, 0x33, 0x33, 0x60, -0x1B, 0xF0, 0xA8, 0xF8, 0x33, 0x68, 0x33, 0xB1, 0x05, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, 0x00, 0xBF, 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x94, 0x4E, 0x17, 0x00, -0x10, 0xB5, 0x04, 0x20, 0x1B, 0xF0, 0x92, 0xF8, 0x03, 0x4B, 0x04, 0x49, 0xD3, 0xF8, 0x10, 0x31, 0x03, 0x48, 0xBD, 0xE8, -0x10, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, 0x28, 0x60, 0x17, 0x00, 0xF8, 0xB5, 0xA8, 0x4B, -0xA8, 0x4A, 0x1B, 0x68, 0x14, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xB7, 0x81, 0x65, 0x05, 0x18, 0xD5, -0xA4, 0x4A, 0x13, 0x68, 0x98, 0x00, 0xFC, 0xD4, 0xA3, 0x4B, 0xA2, 0x49, 0x13, 0x60, 0x0B, 0x68, 0x13, 0xF0, 0x00, 0x53, -0xFB, 0xD1, 0xA1, 0x49, 0xA1, 0x48, 0x0A, 0x68, 0x42, 0xF0, 0x10, 0x02, 0x0A, 0x60, 0x02, 0x78, 0x02, 0xB1, 0x03, 0x70, -0x9E, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x40, 0xF0, 0xE0, 0x81, 0x21, 0x05, 0x09, 0xD5, 0x97, 0x4A, 0x13, 0x68, 0x9B, 0x00, -0xFC, 0xD4, 0x9A, 0x4B, 0x94, 0x49, 0x13, 0x60, 0x0B, 0x68, 0x9F, 0x00, 0xFC, 0xD4, 0xE2, 0x04, 0x05, 0xD5, 0x94, 0x49, -0x96, 0x4B, 0x97, 0x4A, 0x01, 0x20, 0x08, 0x70, 0x1A, 0x60, 0x66, 0x06, 0x04, 0xD5, 0x95, 0x4B, 0x95, 0x48, 0x19, 0x68, -0x1C, 0xF0, 0x9C, 0xFA, 0x14, 0xF4, 0x9B, 0x7F, 0x40, 0xF0, 0x89, 0x81, 0xA5, 0x05, 0x00, 0xF1, 0x8D, 0x81, 0x20, 0x06, -0x00, 0xF1, 0x94, 0x81, 0x21, 0x04, 0x00, 0xF1, 0x9F, 0x81, 0xE2, 0x02, 0x00, 0xF1, 0xA6, 0x81, 0xA3, 0x02, 0x03, 0xD5, -0x8B, 0x4B, 0x4F, 0xF4, 0x00, 0x12, 0x1A, 0x60, 0xE7, 0x03, 0x41, 0xD5, 0x89, 0x4B, 0x93, 0xF8, 0x11, 0x15, 0x93, 0xF8, -0x12, 0x25, 0x91, 0x42, 0x80, 0xF0, 0xB1, 0x81, 0x93, 0xF8, 0x10, 0x05, 0x85, 0x4A, 0x86, 0x4D, 0x86, 0x4E, 0x01, 0x30, -0xA2, 0xFB, 0x00, 0x72, 0x92, 0x09, 0x02, 0xEB, 0xC2, 0x02, 0x02, 0xEB, 0xC2, 0x02, 0x82, 0x1A, 0x01, 0x31, 0x83, 0xF8, -0x11, 0x15, 0x83, 0xF8, 0x10, 0x25, 0x03, 0xEB, 0x02, 0x11, 0x30, 0x68, 0x2E, 0x68, 0x4E, 0x60, 0x6E, 0x68, 0x8E, 0x60, -0x28, 0x3D, 0xC0, 0xF3, 0x00, 0x26, 0x08, 0x73, 0x4E, 0x73, 0x28, 0x68, 0x40, 0xF0, 0x10, 0x00, 0x11, 0x01, 0x28, 0x60, -0x28, 0x68, 0x86, 0x06, 0xFC, 0xD4, 0x19, 0x44, 0x75, 0x4B, 0x8A, 0x68, 0x75, 0x48, 0x52, 0x68, 0x1A, 0x60, 0x2B, 0x68, -0x23, 0xF0, 0x10, 0x03, 0x2B, 0x60, 0x1B, 0xF0, 0x6F, 0xF8, 0x20, 0x20, 0x1A, 0xF0, 0xCA, 0xFF, 0x69, 0x4B, 0x4F, 0xF4, -0x80, 0x32, 0x1A, 0x60, 0x65, 0x03, 0x4E, 0xD5, 0x67, 0x4B, 0x93, 0xF8, 0x9D, 0x17, 0x93, 0xF8, 0x9E, 0x27, 0x91, 0x42, -0x80, 0xF0, 0x7B, 0x81, 0x93, 0xF8, 0x9C, 0x07, 0x68, 0x4A, 0x69, 0x4F, 0x69, 0x4D, 0xDF, 0xF8, 0xE0, 0xC1, 0x01, 0x30, -0xA2, 0xFB, 0x00, 0x62, 0x56, 0x09, 0x06, 0xEB, 0x86, 0x06, 0xA0, 0xEB, 0xC6, 0x06, 0x4A, 0x1C, 0x83, 0xF8, 0x9D, 0x27, -0x83, 0xF8, 0x9C, 0x67, 0x03, 0xEB, 0x06, 0x11, 0x3A, 0x68, 0x28, 0x68, 0xC1, 0xF8, 0x20, 0x05, 0x06, 0xF1, 0x52, 0x07, -0x03, 0xEB, 0x07, 0x15, 0xDC, 0xF8, 0x00, 0x10, 0x5C, 0x48, 0x69, 0x60, 0xC2, 0xF3, 0x00, 0x21, 0x69, 0x72, 0x2A, 0x72, -0x05, 0x68, 0x45, 0xF0, 0x04, 0x05, 0x05, 0x60, 0x31, 0x01, 0x05, 0x46, 0x2A, 0x68, 0x10, 0x07, 0xFC, 0xD4, 0x03, 0xEB, -0x07, 0x12, 0x01, 0xF2, 0x1C, 0x51, 0x50, 0x68, 0x53, 0x4A, 0x40, 0x68, 0x10, 0x60, 0x2A, 0x68, 0x52, 0x48, 0x22, 0xF0, -0x04, 0x02, 0x19, 0x44, 0x2A, 0x60, 0x1B, 0xF0, 0x1F, 0xF8, 0x4F, 0xF4, 0x00, 0x00, 0x1A, 0xF0, 0x79, 0xFF, 0x41, 0x4B, -0x4F, 0xF4, 0x80, 0x22, 0x1A, 0x60, 0xA2, 0x03, 0x1B, 0xD5, 0x4B, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x40, 0xF0, 0x35, 0x81, -0x49, 0x48, 0x90, 0xF8, 0x02, 0x1C, 0x90, 0xF8, 0x01, 0x2C, 0x91, 0x42, 0xC0, 0xF0, 0xA2, 0x80, 0x46, 0x48, 0x1C, 0xF0, -0xDF, 0xF9, 0x36, 0x4B, 0x4F, 0xF4, 0x00, 0x32, 0x1A, 0x60, 0x44, 0x4B, 0x1B, 0x68, 0x23, 0xB9, 0x43, 0x4A, 0x13, 0x78, -0x23, 0xF0, 0x01, 0x03, 0x13, 0x70, 0x23, 0x03, 0x1D, 0xD5, 0x3C, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x40, 0xF0, 0x09, 0x81, -0x3A, 0x48, 0x41, 0xF6, 0x12, 0x04, 0x41, 0xF6, 0x11, 0x03, 0x02, 0x5D, 0xC3, 0x5C, 0x93, 0x42, 0x10, 0xD8, 0x11, 0x46, -0x39, 0x48, 0x1C, 0xF0, 0xBF, 0xF9, 0x26, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x37, 0x4B, 0x1B, 0x68, 0x23, 0xB9, -0x33, 0x4A, 0x13, 0x78, 0x23, 0xF0, 0x02, 0x03, 0x13, 0x70, 0xF8, 0xBD, 0x41, 0xF6, 0x10, 0x05, 0x32, 0x4B, 0x41, 0x5D, -0x01, 0x31, 0xA3, 0xFB, 0x01, 0x63, 0xDB, 0x09, 0x03, 0xEB, 0x43, 0x03, 0xA1, 0xEB, 0x83, 0x13, 0x43, 0x55, 0x03, 0xF1, -0xC1, 0x01, 0x2D, 0x4E, 0x00, 0xEB, 0x01, 0x11, 0x35, 0x68, 0x4D, 0x60, 0x2B, 0x4D, 0x00, 0xEB, 0x03, 0x13, 0x01, 0x32, -0x2D, 0x68, 0xA3, 0xF8, 0x18, 0x5C, 0x02, 0x55, 0x28, 0x48, 0x1A, 0xF0, 0xB9, 0xFF, 0x08, 0x20, 0x1A, 0xF0, 0x14, 0xFF, -0x0E, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0xCF, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x24, 0x00, 0x24, 0x40, -0x40, 0x00, 0x24, 0x40, 0x01, 0x09, 0x00, 0x32, 0x44, 0x00, 0x24, 0x40, 0x1C, 0x26, 0x17, 0x00, 0x3C, 0x36, 0x17, 0x00, -0x02, 0x09, 0x00, 0x32, 0x2C, 0x00, 0x24, 0x40, 0x09, 0x70, 0x00, 0xCF, 0x08, 0x00, 0x24, 0x40, 0xDC, 0x82, 0x15, 0x00, -0x28, 0x00, 0x24, 0x40, 0x58, 0x58, 0x17, 0x00, 0xE7, 0x87, 0x45, 0xCA, 0x88, 0x00, 0x24, 0x40, 0x90, 0x00, 0x24, 0x40, -0x74, 0x00, 0x24, 0x40, 0x6C, 0x5D, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, 0x84, 0x00, 0x24, 0x40, 0x7C, 0x00, 0x24, 0x40, -0x60, 0x00, 0x24, 0x40, 0x6C, 0x00, 0x24, 0x40, 0xF8, 0x5F, 0x17, 0x00, 0x1D, 0x26, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, -0x80, 0x83, 0x15, 0x00, 0xA0, 0x00, 0x24, 0x40, 0x9C, 0x4E, 0x17, 0x00, 0x98, 0x83, 0x15, 0x00, 0x98, 0x00, 0x24, 0x40, -0xAB, 0xAA, 0xAA, 0xAA, 0xA4, 0x00, 0x24, 0x40, 0xA8, 0x00, 0x24, 0x40, 0x94, 0x4E, 0x17, 0x00, 0x80, 0x00, 0x24, 0x40, -0x90, 0xF8, 0x00, 0x2C, 0x4B, 0x4B, 0x4C, 0x4D, 0x01, 0x32, 0xA3, 0xFB, 0x02, 0x63, 0xDB, 0x09, 0x03, 0xEB, 0x43, 0x03, -0xA2, 0xEB, 0x83, 0x13, 0x00, 0xEB, 0x03, 0x12, 0x2D, 0x68, 0x55, 0x60, 0x46, 0x4D, 0x80, 0xF8, 0x00, 0x3C, 0x2B, 0x68, -0x13, 0x81, 0x01, 0x31, 0x80, 0xF8, 0x02, 0x1C, 0x11, 0x46, 0x00, 0xF6, 0x08, 0x40, 0x1A, 0xF0, 0x49, 0xFF, 0x10, 0x20, -0x1A, 0xF0, 0xA4, 0xFE, 0x3F, 0x4B, 0x4F, 0xF4, 0x00, 0x32, 0x1A, 0x60, 0x3F, 0xE7, 0x00, 0x2C, 0x7F, 0xF4, 0x46, 0xAE, -0x3C, 0x49, 0x3D, 0x48, 0x26, 0x22, 0x1C, 0xF0, 0x8D, 0xFB, 0x14, 0xF4, 0x9B, 0x7F, 0x3F, 0xF4, 0x77, 0xAE, 0x3A, 0x48, -0x21, 0x46, 0x1C, 0xF0, 0x0B, 0xF9, 0xA5, 0x05, 0x7F, 0xF5, 0x73, 0xAE, 0x37, 0x48, 0x1C, 0xF0, 0x05, 0xF9, 0x32, 0x4B, -0x4F, 0xF4, 0x00, 0x72, 0x20, 0x06, 0x1A, 0x60, 0x7F, 0xF5, 0x6C, 0xAE, 0x33, 0x48, 0x1C, 0xF0, 0xFB, 0xF8, 0x33, 0x4A, -0x2C, 0x49, 0x13, 0x68, 0x80, 0x20, 0x23, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x08, 0x60, 0x21, 0x04, 0x7F, 0xF5, 0x61, 0xAE, -0x2E, 0x48, 0x1C, 0xF0, 0xED, 0xF8, 0x26, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0x1A, 0x60, 0xE2, 0x02, 0x7F, 0xF5, 0x5A, 0xAE, -0x2A, 0x4A, 0x2B, 0x4B, 0x15, 0x68, 0x2B, 0x48, 0x1A, 0x78, 0x29, 0x46, 0xFD, 0xF7, 0x14, 0xFF, 0x29, 0x4A, 0x1E, 0x4B, -0x15, 0x60, 0x4F, 0xF4, 0x80, 0x12, 0x1A, 0x60, 0x4A, 0xE6, 0x27, 0x4A, 0x01, 0x21, 0x59, 0x70, 0x13, 0x68, 0x26, 0x49, -0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x02, 0x20, 0x1C, 0xF0, 0x1C, 0xF9, 0x13, 0xE6, 0x23, 0x48, 0x1C, 0xF0, 0xC8, 0xF8, -0x13, 0x4B, 0x4F, 0xF4, 0x80, 0x32, 0x1A, 0x60, 0x80, 0xE6, 0x00, 0x22, 0x02, 0x20, 0x1A, 0x70, 0xFD, 0xF7, 0x86, 0xFF, -0xF0, 0xE6, 0x1D, 0x48, 0x1C, 0xF0, 0xBA, 0xF8, 0x0C, 0x4B, 0x4F, 0xF4, 0x80, 0x22, 0x1A, 0x60, 0xC3, 0xE6, 0x00, 0x22, -0x02, 0x20, 0x1A, 0x70, 0xFD, 0xF7, 0x78, 0xFF, 0x17, 0x48, 0x90, 0xF8, 0x02, 0x1C, 0x90, 0xF8, 0x01, 0x2C, 0x91, 0x42, -0xBF, 0xF4, 0xC6, 0xAE, 0x66, 0xE7, 0x00, 0xBF, 0xAB, 0xAA, 0xAA, 0xAA, 0xAC, 0x00, 0x24, 0x40, 0xB0, 0x00, 0x24, 0x40, -0x28, 0x00, 0x24, 0x40, 0x70, 0x79, 0x15, 0x00, 0xC0, 0x82, 0x15, 0x00, 0xEC, 0x82, 0x15, 0x00, 0x08, 0x83, 0x15, 0x00, -0x1C, 0x83, 0x15, 0x00, 0x4C, 0x00, 0x24, 0x40, 0x30, 0x83, 0x15, 0x00, 0x30, 0x00, 0x24, 0x40, 0x45, 0x00, 0x24, 0x40, -0x48, 0x83, 0x15, 0x00, 0x34, 0x00, 0x24, 0x40, 0x10, 0x00, 0x58, 0x40, 0xD0, 0x82, 0x15, 0x00, 0xCC, 0x7C, 0x15, 0x00, -0x64, 0x83, 0x15, 0x00, 0x7C, 0x36, 0x17, 0x00, 0xF8, 0xB5, 0x47, 0x4B, 0x1A, 0x68, 0x42, 0xF0, 0x10, 0x02, 0x1A, 0x60, -0x1B, 0x68, 0x5A, 0x07, 0x7F, 0xD4, 0x44, 0x49, 0x0B, 0x68, 0x9B, 0x00, 0xFC, 0xD4, 0x43, 0x4B, 0x41, 0x4A, 0x0B, 0x60, -0x13, 0x68, 0x9F, 0x00, 0xFC, 0xD4, 0x13, 0x68, 0x9E, 0x07, 0x03, 0xD4, 0x3C, 0x4A, 0x13, 0x68, 0xDD, 0x07, 0xFC, 0xD5, -0x3A, 0x4A, 0x3D, 0x4D, 0x13, 0x68, 0x3D, 0x48, 0x3D, 0x49, 0x3E, 0x4C, 0x3E, 0x4F, 0x3F, 0x4E, 0x43, 0xF0, 0x02, 0x03, -0x13, 0x60, 0x2B, 0x68, 0x03, 0x40, 0x43, 0xF0, 0x10, 0x03, 0x2B, 0x60, 0x2B, 0x68, 0x9B, 0xB2, 0x43, 0xF4, 0x80, 0x13, -0x2B, 0x60, 0x0B, 0x68, 0x03, 0x40, 0x43, 0xF0, 0x10, 0x03, 0x0B, 0x60, 0x0B, 0x68, 0x9B, 0xB2, 0x43, 0xF4, 0x80, 0x13, -0x0B, 0x60, 0x4F, 0xF6, 0xFF, 0x73, 0x23, 0x60, 0x52, 0xF8, 0x34, 0x3C, 0x03, 0x40, 0x43, 0xF4, 0x88, 0x53, 0x43, 0xF0, -0x11, 0x03, 0x42, 0xF8, 0x34, 0x3C, 0x03, 0x23, 0xAB, 0x64, 0x4F, 0xF4, 0xFC, 0x53, 0x3B, 0x60, 0x4F, 0xF0, 0xFF, 0x33, -0x33, 0x60, 0x2A, 0x48, 0x2A, 0x4B, 0x23, 0x62, 0x00, 0x24, 0x20, 0x23, 0x04, 0x60, 0x41, 0xF8, 0xAC, 0x3C, 0x52, 0xF8, -0x34, 0x3C, 0x27, 0x4C, 0x27, 0x48, 0x23, 0xF4, 0x7F, 0x03, 0x43, 0xF4, 0x80, 0x33, 0x42, 0xF8, 0x34, 0x3C, 0x41, 0xF8, -0x84, 0x4C, 0x1C, 0xF0, 0x1B, 0xF8, 0x17, 0x4B, 0x17, 0x49, 0x1A, 0x68, 0x94, 0x00, 0xFC, 0xD4, 0x19, 0x60, 0x1A, 0x68, -0x90, 0x00, 0xFC, 0xD4, 0x1A, 0x68, 0x12, 0xF0, 0x06, 0x0F, 0xF4, 0xD0, 0x10, 0x4A, 0x13, 0x68, 0x99, 0x00, 0xFC, 0xD4, -0x1A, 0x4B, 0x0E, 0x49, 0x13, 0x60, 0x0B, 0x68, 0x9B, 0x00, 0xFC, 0xD4, 0x18, 0x48, 0x1C, 0xF0, 0x01, 0xF8, 0x18, 0x4B, -0x18, 0x49, 0x9A, 0x68, 0xD1, 0xF8, 0xFC, 0x12, 0x91, 0x67, 0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF4, 0x80, 0x42, 0x1A, 0x60, -0xF8, 0xBD, 0x14, 0x4B, 0x0C, 0x4A, 0x1A, 0x60, 0xFE, 0xF7, 0x9A, 0xFB, 0xED, 0xE7, 0x00, 0xBF, 0x44, 0x00, 0x24, 0x40, -0x40, 0x00, 0x24, 0x40, 0x00, 0x02, 0x00, 0x20, 0x04, 0x00, 0x24, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x24, 0x40, -0x0C, 0x00, 0x24, 0x40, 0xB4, 0x00, 0x24, 0x40, 0x28, 0x00, 0x24, 0x40, 0x38, 0x00, 0x24, 0x40, 0x09, 0x60, 0x00, 0xCF, -0x00, 0x00, 0x20, 0x4E, 0xB8, 0x83, 0x15, 0x00, 0x06, 0x03, 0x00, 0x30, 0xCC, 0x83, 0x15, 0x00, 0x00, 0xED, 0x00, 0xE0, -0x88, 0x1A, 0x17, 0x00, 0x2C, 0x00, 0x24, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0x07, 0x46, 0x82, 0xB0, 0xEF, 0xF3, 0x10, 0x83, -0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x24, 0x4B, 0x01, 0x20, 0x18, 0x60, 0x23, 0x4E, 0x24, 0x4B, 0x35, 0x68, 0x1B, 0x68, -0x01, 0x35, 0x35, 0x60, 0x1C, 0x78, 0x01, 0x2C, 0x2B, 0xD0, 0x21, 0x4C, 0x23, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x23, 0x60, -0x23, 0x68, 0x9B, 0x05, 0xFC, 0xD4, 0x1E, 0x4B, 0x18, 0x68, 0xC8, 0xB1, 0x1D, 0x4B, 0x1E, 0x4C, 0xD3, 0xF8, 0x04, 0x0C, -0x47, 0x60, 0x20, 0x68, 0x01, 0x44, 0x21, 0x60, 0x17, 0x49, 0xC3, 0xF8, 0x04, 0x2C, 0x0B, 0x68, 0x23, 0xF4, 0x80, 0x73, -0x0B, 0x60, 0x35, 0xB1, 0x10, 0x4B, 0x01, 0x3D, 0x1B, 0x68, 0x35, 0x60, 0x0D, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x02, 0xB0, -0xBD, 0xE8, 0xF0, 0x81, 0x11, 0x48, 0x1F, 0x60, 0x04, 0x68, 0x0F, 0x4B, 0x21, 0x44, 0x01, 0x60, 0xE6, 0xE7, 0xDF, 0xF8, -0x3C, 0x80, 0x98, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0xCD, 0xD1, 0x02, 0x20, 0xCD, 0xE9, 0x00, 0x12, 0xFD, 0xF7, 0x3C, 0xFE, -0xDD, 0xE9, 0x00, 0x12, 0x35, 0x68, 0x88, 0xF8, 0x00, 0x40, 0xC2, 0xE7, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x74, 0x36, 0x17, 0x00, 0x60, 0x00, 0x24, 0x40, 0xA0, 0x00, 0x24, 0x40, 0x7C, 0x36, 0x17, 0x00, 0x9C, 0x00, 0x24, 0x40, -0x1D, 0x26, 0x17, 0x00, 0x30, 0xB4, 0x85, 0x68, 0x06, 0x4C, 0xC3, 0xF3, 0x0B, 0x03, 0x2C, 0x40, 0x02, 0x9D, 0x1C, 0x43, -0x44, 0xEA, 0xC5, 0x74, 0x84, 0x60, 0xC0, 0xE9, 0x00, 0x12, 0x30, 0xBC, 0x70, 0x47, 0x00, 0xBF, 0x00, 0xF0, 0xFF, 0x7F, -0xF8, 0xB5, 0x04, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x23, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0x22, 0x4D, 0x23, 0x4B, 0x29, 0x68, 0x1B, 0x68, 0x01, 0x31, 0x29, 0x60, 0x1E, 0x78, 0x01, 0x2E, 0x30, 0xD0, 0x20, 0x4A, -0x13, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x13, 0x68, 0x1B, 0x06, 0xFC, 0xD4, 0x1D, 0x4B, 0x1A, 0x68, 0xF2, 0xB1, -0x1C, 0x4B, 0x1D, 0x48, 0x41, 0xF6, 0x14, 0x02, 0x9A, 0x58, 0x54, 0x60, 0x02, 0x68, 0x01, 0x32, 0x02, 0x60, 0x41, 0xF6, -0x14, 0x02, 0x15, 0x4E, 0x9C, 0x50, 0x18, 0x48, 0x32, 0x68, 0x03, 0x78, 0x22, 0xF0, 0x40, 0x02, 0x43, 0xF0, 0x02, 0x03, -0x32, 0x60, 0x03, 0x70, 0x31, 0xB1, 0x0C, 0x4B, 0x01, 0x39, 0x1B, 0x68, 0x29, 0x60, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, -0xF8, 0xBD, 0x0E, 0x48, 0x1C, 0x60, 0x02, 0x68, 0x0B, 0x4B, 0x01, 0x32, 0x02, 0x60, 0xE2, 0xE7, 0x0C, 0x4F, 0x3B, 0x78, -0x00, 0x2B, 0xCA, 0xD1, 0x02, 0x20, 0xFD, 0xF7, 0xC9, 0xFD, 0x29, 0x68, 0x3E, 0x70, 0xC4, 0xE7, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x60, 0x00, 0x24, 0x40, 0x98, 0x00, 0x24, 0x40, 0x7C, 0x36, 0x17, 0x00, -0x94, 0x00, 0x24, 0x40, 0x9C, 0x4E, 0x17, 0x00, 0x1D, 0x26, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x80, 0x46, 0x04, 0x20, -0x0F, 0x46, 0x15, 0x46, 0xFE, 0xF7, 0xF0, 0xFD, 0x68, 0xB3, 0x04, 0x46, 0xFE, 0xF7, 0x34, 0xFF, 0x06, 0x46, 0x00, 0xB3, -0xC5, 0xF3, 0x03, 0x23, 0x4F, 0xF0, 0x00, 0x09, 0x25, 0x70, 0x63, 0x70, 0x2A, 0x46, 0x84, 0xF8, 0x02, 0x80, 0x39, 0x46, -0x84, 0xF8, 0x03, 0x90, 0x20, 0x1D, 0x2E, 0xF0, 0xF9, 0xFB, 0xB2, 0x68, 0x0E, 0x4B, 0xC6, 0xF8, 0x04, 0x90, 0x04, 0x35, -0x13, 0x40, 0xC5, 0xF3, 0x0B, 0x05, 0x1D, 0x43, 0x45, 0xF0, 0x00, 0x45, 0x34, 0x60, 0xB5, 0x60, 0x30, 0x46, 0xBD, 0xE8, -0xF8, 0x43, 0xFF, 0xF7, 0x71, 0xBF, 0x07, 0x48, 0x1C, 0xF0, 0xCC, 0xFF, 0x20, 0x46, 0xBD, 0xE8, 0xF8, 0x43, 0xFE, 0xF7, -0xE7, 0xBD, 0xBD, 0xE8, 0xF8, 0x43, 0x03, 0x48, 0x1C, 0xF0, 0xC2, 0xBF, 0x00, 0xF0, 0xFF, 0x7F, 0xEC, 0x83, 0x15, 0x00, -0xD8, 0x83, 0x15, 0x00, 0x05, 0x4B, 0x1B, 0x78, 0x33, 0xB9, 0x05, 0x4B, 0x18, 0x68, 0x6F, 0xEA, 0x10, 0x10, 0x00, 0xF0, -0x01, 0x00, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x1C, 0x26, 0x17, 0x00, 0x44, 0x00, 0x24, 0x40, 0x44, 0x4A, 0x13, 0x69, -0x43, 0xF0, 0x01, 0x03, 0x30, 0xB4, 0x13, 0x61, 0x13, 0x69, 0xD9, 0x07, 0xFC, 0xD4, 0x40, 0x4A, 0x13, 0x69, 0x00, 0x2B, -0xFC, 0xDA, 0xD3, 0x68, 0x3E, 0x48, 0x3D, 0x49, 0x43, 0xF0, 0x80, 0x43, 0x43, 0xF0, 0x07, 0x03, 0xD3, 0x60, 0xD3, 0x68, -0x18, 0x43, 0xD0, 0x60, 0xD3, 0x68, 0x23, 0xF4, 0x71, 0x53, 0x23, 0xF0, 0x28, 0x03, 0xD3, 0x60, 0x13, 0x69, 0x43, 0xF0, -0x01, 0x03, 0x13, 0x61, 0x0B, 0x69, 0xDA, 0x07, 0xFC, 0xD4, 0x32, 0x4B, 0x1A, 0x69, 0x00, 0x2A, 0xFC, 0xDA, 0xDA, 0x68, -0x30, 0x48, 0x2F, 0x49, 0x42, 0xF0, 0x80, 0x42, 0x42, 0xF0, 0x07, 0x02, 0xDA, 0x60, 0xDA, 0x68, 0x10, 0x43, 0xD8, 0x60, -0xDA, 0x68, 0x22, 0xF4, 0x71, 0x52, 0x22, 0xF0, 0x28, 0x02, 0xDA, 0x60, 0xD3, 0xF8, 0x00, 0x28, 0x22, 0xF4, 0xC0, 0x52, -0x22, 0xF0, 0x03, 0x02, 0xC3, 0xF8, 0x00, 0x28, 0xD3, 0xF8, 0x00, 0x28, 0x42, 0xF4, 0x00, 0x02, 0x42, 0xF0, 0x04, 0x02, -0xC3, 0xF8, 0x00, 0x28, 0x00, 0x24, 0x4F, 0xF0, 0xFF, 0x35, 0x01, 0x22, 0x9C, 0x61, 0x01, 0x2A, 0x5D, 0x61, 0xC3, 0xF8, -0x1C, 0x48, 0xC3, 0xF8, 0x14, 0x48, 0xC3, 0xF8, 0x10, 0x48, 0xA2, 0xF1, 0x02, 0x03, 0x28, 0x46, 0x01, 0xEB, 0x43, 0x13, -0x0B, 0xD0, 0x05, 0x2A, 0xC3, 0xF8, 0x28, 0x0B, 0xC3, 0xF8, 0x28, 0x09, 0x0A, 0xD0, 0x01, 0x32, 0x93, 0x1E, 0x01, 0x2A, -0x01, 0xEB, 0x43, 0x13, 0xF3, 0xD1, 0xC1, 0xF8, 0x08, 0x0B, 0xC1, 0xF8, 0x08, 0x09, 0xF4, 0xE7, 0x0F, 0x48, 0x10, 0x4B, -0x0C, 0x4A, 0x88, 0x61, 0x4B, 0x63, 0x53, 0x6B, 0x1B, 0x01, 0xFC, 0xD5, 0xD2, 0xF8, 0x04, 0x38, 0x23, 0xF0, 0x02, 0x03, -0xC2, 0xF8, 0x04, 0x38, 0xD2, 0xF8, 0x04, 0x38, 0x2E, 0x21, 0x43, 0xF4, 0x00, 0x43, 0xC2, 0xF8, 0x04, 0x38, 0x91, 0x60, -0x93, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x30, 0xBC, 0x93, 0x60, 0x70, 0x47, 0x00, 0x00, 0x20, 0x40, 0x10, 0x00, 0x06, 0x40, -0x00, 0x38, 0x00, 0x80, 0x41, 0x00, 0x44, 0x02, 0x0A, 0x4B, 0x0B, 0x49, 0x1A, 0x68, 0x08, 0x68, 0x0A, 0x49, 0x0B, 0x4B, -0xC2, 0xE9, 0x00, 0x10, 0xC3, 0xF8, 0x14, 0x2B, 0xD3, 0xF8, 0x08, 0x2B, 0xC3, 0xF8, 0x08, 0x2B, 0xD3, 0xF8, 0x00, 0x2B, -0x42, 0xF0, 0x04, 0x42, 0xC3, 0xF8, 0x00, 0x2B, 0x70, 0x47, 0x00, 0xBF, 0x5C, 0x60, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, -0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x20, 0x40, 0x12, 0x4A, 0x13, 0x4B, 0x11, 0x68, 0x18, 0x68, 0x12, 0x4B, 0x30, 0xB4, -0x12, 0x4C, 0x4F, 0xF0, 0x20, 0x62, 0x00, 0x25, 0x65, 0x81, 0xC1, 0xE9, 0x00, 0x20, 0x1A, 0x69, 0x22, 0xF4, 0xFC, 0x62, -0x42, 0xF0, 0x20, 0x02, 0x1A, 0x61, 0x18, 0x69, 0x10, 0xF0, 0x20, 0x00, 0xFB, 0xD1, 0xD3, 0xF8, 0x08, 0x29, 0xC3, 0xF8, -0x08, 0x29, 0xC3, 0xF8, 0x14, 0x19, 0xD3, 0xF8, 0x00, 0x29, 0x42, 0xF0, 0x04, 0x42, 0x30, 0xBC, 0xC3, 0xF8, 0x00, 0x29, -0x70, 0x47, 0x00, 0xBF, 0x40, 0x60, 0x17, 0x00, 0x58, 0x60, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0xB4, 0x27, 0x17, 0x00, -0x70, 0xB5, 0x0B, 0x4B, 0x04, 0x46, 0x01, 0x38, 0x03, 0xEB, 0x00, 0x10, 0x10, 0x22, 0x05, 0x7A, 0x00, 0x21, 0xF7, 0xF7, -0x4D, 0xFB, 0x55, 0xB1, 0x06, 0x48, 0x00, 0xEB, 0x84, 0x04, 0x23, 0x6A, 0x2B, 0xB1, 0x00, 0x21, 0xBD, 0xE8, 0x70, 0x40, -0x08, 0x46, 0x01, 0x22, 0x18, 0x47, 0x70, 0xBD, 0x08, 0x28, 0x17, 0x00, 0x20, 0x26, 0x17, 0x00, 0x70, 0xB5, 0x0B, 0x4B, -0x04, 0x46, 0x01, 0x38, 0x03, 0xEB, 0x00, 0x10, 0x10, 0x22, 0xC5, 0x7A, 0x00, 0x21, 0xF7, 0xF7, 0x31, 0xFB, 0x55, 0xB1, -0x06, 0x48, 0x00, 0xEB, 0x84, 0x04, 0x23, 0x6B, 0x2B, 0xB1, 0x00, 0x21, 0xBD, 0xE8, 0x70, 0x40, 0x08, 0x46, 0x01, 0x22, -0x18, 0x47, 0x70, 0xBD, 0xC8, 0x27, 0x17, 0x00, 0x20, 0x26, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x24, 0x82, 0xB0, 0xE0, 0xB2, -0x01, 0x90, 0x01, 0x34, 0xFF, 0xF7, 0xC0, 0xFF, 0x01, 0x98, 0xFF, 0xF7, 0xD9, 0xFF, 0x05, 0x2C, 0xF5, 0xD1, 0x02, 0xB0, -0x10, 0xBD, 0x00, 0xBF, 0x38, 0xB5, 0x0C, 0x46, 0x00, 0x28, 0x39, 0xD0, 0x09, 0xBB, 0x1D, 0x4B, 0x1D, 0x4A, 0x1B, 0x68, -0x51, 0x81, 0x1D, 0x4D, 0x4F, 0xF0, 0x42, 0x42, 0x1A, 0x60, 0xDA, 0x78, 0x42, 0xF0, 0x04, 0x02, 0xDA, 0x70, 0xD9, 0x78, -0x28, 0x68, 0x19, 0x4A, 0x58, 0x60, 0x01, 0xF0, 0x07, 0x01, 0x41, 0xF0, 0x08, 0x01, 0xD9, 0x70, 0xD2, 0xF8, 0x08, 0x19, -0xC2, 0xF8, 0x08, 0x19, 0xC2, 0xF8, 0x14, 0x39, 0xD2, 0xF8, 0x00, 0x39, 0x43, 0xF0, 0x04, 0x43, 0xC2, 0xF8, 0x00, 0x39, -0x38, 0xBD, 0x0E, 0x4D, 0x01, 0x46, 0x22, 0x46, 0x28, 0x68, 0x2E, 0xF0, 0x71, 0xFA, 0x09, 0x4B, 0x09, 0x4A, 0x1B, 0x68, -0x54, 0x81, 0x4F, 0xF0, 0x40, 0x41, 0xC2, 0x22, 0x40, 0x2C, 0x19, 0x60, 0x1C, 0x80, 0xDA, 0x70, 0xD3, 0xD1, 0xD2, 0xB2, -0x6F, 0xF3, 0x82, 0x02, 0xDA, 0x70, 0xD2, 0xE7, 0x02, 0x4D, 0xEC, 0xE7, 0x40, 0x60, 0x17, 0x00, 0xB4, 0x27, 0x17, 0x00, -0x58, 0x60, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0xF0, 0xB4, 0x80, 0xB3, 0x27, 0x4D, 0x43, 0x1E, 0x05, 0xEB, 0x43, 0x16, -0x08, 0x36, 0x05, 0xEB, 0x43, 0x15, 0x2F, 0x68, 0x17, 0xF0, 0x80, 0x2F, 0x22, 0xD0, 0x23, 0x4B, 0x3B, 0x40, 0xB3, 0xF5, -0x00, 0x3F, 0x2C, 0xD0, 0x21, 0x4C, 0xD4, 0xF8, 0x04, 0x38, 0x43, 0xF4, 0x00, 0x73, 0xC4, 0xF8, 0x04, 0x38, 0x63, 0x69, -0x1B, 0x06, 0xFC, 0xD5, 0x2B, 0x68, 0x19, 0x43, 0x41, 0xF0, 0x00, 0x61, 0x41, 0xF4, 0x00, 0x41, 0x29, 0x60, 0x1A, 0xB1, -0x2B, 0x68, 0x23, 0xEA, 0x02, 0x02, 0x2A, 0x60, 0x60, 0xB9, 0x16, 0x4A, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF4, 0x80, 0x63, -0xC2, 0xF8, 0x04, 0x38, 0xF0, 0xBC, 0xFF, 0xF7, 0x3D, 0xBF, 0x12, 0x4E, 0x12, 0x4D, 0xD2, 0xE7, 0x00, 0x2F, 0x0C, 0xDB, -0x3B, 0x04, 0xEE, 0xD4, 0x2B, 0x68, 0x23, 0xF4, 0x00, 0x43, 0x2B, 0x60, 0xE9, 0xE7, 0xB1, 0xF1, 0x00, 0x6F, 0xCF, 0xD1, -0x00, 0x2A, 0xCD, 0xD1, 0xEA, 0xE7, 0x02, 0x23, 0x33, 0x60, 0x2B, 0x68, 0x43, 0xF0, 0x80, 0x43, 0x2B, 0x60, 0x33, 0x68, -0x9A, 0x07, 0xFC, 0xD5, 0x3B, 0x04, 0xD8, 0xD4, 0xE8, 0xE7, 0x00, 0xBF, 0x20, 0x0B, 0x20, 0x40, 0x00, 0x00, 0x02, 0x80, -0x00, 0x00, 0x20, 0x40, 0x08, 0x0B, 0x20, 0x40, 0x00, 0x0B, 0x20, 0x40, 0x70, 0xB4, 0x70, 0xB3, 0x44, 0x1E, 0x36, 0x4B, -0x66, 0x01, 0x03, 0xEB, 0x44, 0x14, 0xF5, 0x58, 0x15, 0xF0, 0x80, 0x2F, 0x4D, 0xD0, 0x08, 0x36, 0x33, 0x44, 0x32, 0x4E, -0x2E, 0x40, 0xB6, 0xF5, 0x00, 0x3F, 0x29, 0xD1, 0xB1, 0xF1, 0x00, 0x6F, 0x46, 0xD0, 0x40, 0x26, 0x1E, 0x60, 0x23, 0x68, -0x0B, 0x43, 0x43, 0xF0, 0x00, 0x63, 0x43, 0xF4, 0x00, 0x43, 0x23, 0x60, 0x00, 0x2A, 0x45, 0xD1, 0x29, 0x4A, 0x83, 0x01, -0x43, 0xF0, 0x20, 0x03, 0x13, 0x61, 0x13, 0x69, 0x99, 0x06, 0xFC, 0xD4, 0x2B, 0x04, 0x03, 0xD4, 0x23, 0x68, 0x23, 0xF4, -0x00, 0x43, 0x23, 0x60, 0x48, 0xBB, 0x70, 0xBC, 0x70, 0x47, 0x22, 0x4C, 0x25, 0x68, 0x15, 0xF0, 0x80, 0x2F, 0xF8, 0xD0, -0x1D, 0x4E, 0x20, 0x4B, 0x2E, 0x40, 0xB6, 0xF5, 0x00, 0x3F, 0xD5, 0xD0, 0x40, 0x26, 0x1E, 0x60, 0x26, 0x68, 0x31, 0x43, -0x41, 0xF0, 0x00, 0x61, 0x41, 0xF4, 0x00, 0x41, 0x00, 0x2D, 0x21, 0x60, 0xD6, 0xDA, 0xAE, 0x03, 0x04, 0xD4, 0x19, 0x68, -0x49, 0x06, 0xFC, 0xD5, 0x40, 0x21, 0x19, 0x60, 0xDA, 0xB9, 0x02, 0x22, 0x1A, 0x60, 0x22, 0x68, 0x42, 0xF0, 0x80, 0x42, -0x22, 0x60, 0x1A, 0x68, 0x96, 0x07, 0xFC, 0xD5, 0xC6, 0xE7, 0x70, 0xBC, 0xFF, 0xF7, 0xD4, 0xBE, 0x00, 0x2A, 0xCF, 0xD0, -0x40, 0x21, 0x19, 0x60, 0x23, 0x68, 0x43, 0xF0, 0x00, 0x63, 0x43, 0xF4, 0x00, 0x43, 0x23, 0x60, 0x23, 0x68, 0x23, 0xEA, -0x02, 0x02, 0x22, 0x60, 0xB4, 0xE7, 0x21, 0x68, 0x21, 0xEA, 0x02, 0x02, 0x22, 0x60, 0xDE, 0xE7, 0x20, 0x09, 0x20, 0x40, -0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x20, 0x40, 0x00, 0x09, 0x20, 0x40, 0x08, 0x09, 0x20, 0x40, 0x49, 0xB9, 0x0A, 0x4B, -0x0A, 0x4A, 0x01, 0x28, 0x0C, 0xBF, 0x18, 0x46, 0x10, 0x46, 0x00, 0x68, 0xC0, 0xF3, 0x40, 0x50, 0x70, 0x47, 0x01, 0x28, -0x0C, 0xBF, 0x04, 0x48, 0x04, 0x48, 0x49, 0x01, 0x08, 0x44, 0x00, 0x68, 0xC0, 0xF3, 0x40, 0x50, 0x70, 0x47, 0x00, 0xBF, -0x00, 0x09, 0x20, 0x40, 0x00, 0x0B, 0x20, 0x40, 0x38, 0xB9, 0x04, 0x29, 0x0D, 0xD8, 0x02, 0x46, 0x08, 0x46, 0x4F, 0xF0, -0x00, 0x61, 0xFF, 0xF7, 0x07, 0xBF, 0x04, 0x29, 0x05, 0xD8, 0x08, 0x46, 0x00, 0x22, 0x4F, 0xF0, 0x00, 0x61, 0xFF, 0xF7, -0x5B, 0xBF, 0x70, 0x47, 0x38, 0xB9, 0x04, 0x29, 0x0D, 0xD8, 0x02, 0x46, 0x08, 0x46, 0x4F, 0xF4, 0x00, 0x11, 0xFF, 0xF7, -0xF5, 0xBE, 0x04, 0x29, 0x05, 0xD8, 0x08, 0x46, 0x00, 0x22, 0x4F, 0xF4, 0x00, 0x11, 0xFF, 0xF7, 0x49, 0xBF, 0x70, 0x47, -0x40, 0xB9, 0x04, 0x29, 0x0F, 0xD8, 0x08, 0x46, 0x4F, 0xF4, 0x00, 0x12, 0x4F, 0xF0, 0x00, 0x61, 0xFF, 0xF7, 0xE2, 0xBE, -0x04, 0x29, 0x06, 0xD8, 0x08, 0x46, 0x4F, 0xF4, 0x00, 0x12, 0x4F, 0xF0, 0x00, 0x61, 0xFF, 0xF7, 0x35, 0xBF, 0x70, 0x47, -0xFF, 0xF7, 0xC6, 0xBF, 0x2D, 0xE9, 0xF8, 0x43, 0x04, 0x46, 0x0D, 0x46, 0x57, 0x48, 0x00, 0x21, 0x1B, 0xF0, 0x04, 0xFC, -0x00, 0x2C, 0x00, 0xF0, 0x95, 0x80, 0x23, 0x68, 0x00, 0x2B, 0x7B, 0xD0, 0x63, 0x68, 0x00, 0x2B, 0x78, 0xD0, 0xA3, 0x68, -0x00, 0x2B, 0x75, 0xD0, 0x63, 0x69, 0x00, 0x2B, 0x72, 0xD0, 0x4F, 0x4E, 0x33, 0x78, 0x03, 0xF0, 0xFF, 0x07, 0x00, 0x2B, -0x6F, 0xD1, 0xDF, 0xF8, 0x68, 0x81, 0x21, 0x46, 0x40, 0x46, 0x01, 0x24, 0x48, 0x22, 0x34, 0x70, 0x2E, 0xF0, 0x06, 0xF9, -0x48, 0x4B, 0xD3, 0xF8, 0x94, 0x30, 0x00, 0x2B, 0x77, 0xD0, 0x47, 0x48, 0x1B, 0xF0, 0xDE, 0xFB, 0x46, 0x4B, 0xD3, 0xF8, -0x00, 0x28, 0x12, 0xF4, 0xFE, 0x6F, 0x5B, 0xD0, 0x44, 0x49, 0x45, 0x4A, 0xD1, 0xF8, 0x00, 0xC0, 0x44, 0x49, 0x12, 0x68, -0xDF, 0xF8, 0x30, 0x91, 0x09, 0x68, 0xC9, 0xF8, 0x04, 0x70, 0x04, 0x20, 0xC9, 0xF8, 0x08, 0x70, 0x89, 0xF8, 0x00, 0x70, -0xC2, 0xF8, 0x04, 0xC0, 0x30, 0x70, 0xC3, 0xF8, 0x14, 0x2B, 0xC8, 0x78, 0x3C, 0x4A, 0x40, 0xF0, 0xC0, 0x00, 0xD2, 0xF8, -0x00, 0xC0, 0xC8, 0x70, 0x9C, 0xF8, 0x03, 0x00, 0x39, 0x4A, 0x40, 0xF0, 0xC0, 0x00, 0x17, 0x68, 0x8C, 0xF8, 0x03, 0x00, -0xF8, 0x78, 0xD2, 0xF8, 0x04, 0xE0, 0x40, 0xF0, 0xC0, 0x00, 0xF8, 0x70, 0x9E, 0xF8, 0x03, 0x00, 0xD2, 0xE9, 0x02, 0xC7, -0x40, 0xF0, 0xC0, 0x02, 0x8E, 0xF8, 0x03, 0x20, 0x9C, 0xF8, 0x03, 0x20, 0x42, 0xF0, 0xC0, 0x02, 0x8C, 0xF8, 0x03, 0x20, -0xFA, 0x78, 0x42, 0xF0, 0xC0, 0x02, 0xFA, 0x70, 0xC3, 0xF8, 0x14, 0x19, 0xFF, 0xF7, 0x86, 0xFD, 0xD8, 0xF8, 0x44, 0x30, -0x89, 0xF8, 0x00, 0x40, 0x03, 0xB1, 0x98, 0x47, 0x26, 0x4B, 0x27, 0x49, 0x9A, 0x68, 0xD1, 0xF8, 0x04, 0x11, 0xD1, 0x67, -0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF4, 0x00, 0x42, 0x01, 0x2D, 0x1A, 0x60, 0x23, 0xD0, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, -0x02, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x03, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x9A, 0x68, 0xD2, 0x07, 0x14, 0xD5, 0x9A, 0x68, -0x22, 0xF0, 0x01, 0x02, 0x9A, 0x60, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF0, 0x02, 0x02, 0xC3, 0xF8, 0x04, 0x28, 0xFF, 0xF7, -0xC9, 0xFC, 0xD9, 0xE7, 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x14, 0x48, 0xFD, 0xF7, 0x9C, 0xF9, 0x04, 0x20, 0xE2, 0xE7, -0xFF, 0xF7, 0xBE, 0xFC, 0xCE, 0xE7, 0x11, 0x4B, 0x11, 0x48, 0x1B, 0x69, 0x1B, 0xF0, 0x5C, 0xFB, 0x33, 0x78, 0x04, 0x2B, -0xFC, 0xD1, 0xD2, 0xE7, 0xFC, 0x83, 0x15, 0x00, 0x6F, 0x26, 0x17, 0x00, 0x00, 0x00, 0x10, 0x40, 0x08, 0x84, 0x15, 0x00, -0x00, 0x00, 0x20, 0x40, 0x60, 0x60, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, 0x40, 0x60, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, -0x44, 0x60, 0x17, 0x00, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x84, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, -0x34, 0x84, 0x15, 0x00, 0x20, 0x26, 0x17, 0x00, 0xB4, 0x27, 0x17, 0x00, 0x14, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0xC3, 0xF8, -0x80, 0x20, 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, 0x11, 0x4A, 0x11, 0x4B, 0x12, 0x48, 0x00, 0x21, 0x11, 0x70, -0x9A, 0x68, 0x22, 0xF0, 0x01, 0x02, 0x9A, 0x60, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF0, 0x02, 0x02, 0xC3, 0xF8, 0x04, 0x28, -0x1A, 0x69, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x61, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF0, 0x02, 0x02, 0xC3, 0xF8, 0x04, 0x28, -0x1A, 0x69, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x61, 0x48, 0x22, 0xF7, 0xF7, 0x9F, 0xB8, 0x00, 0xBF, 0x00, 0xE1, 0x00, 0xE0, -0x6F, 0x26, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0x20, 0x26, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x4E, 0x1E, 0xF7, 0xB2, -0x03, 0x2F, 0x41, 0xD8, 0x14, 0x46, 0x0D, 0x46, 0x9B, 0x46, 0x02, 0x46, 0x00, 0x28, 0x3D, 0xD0, 0x04, 0xF0, 0xFD, 0x01, -0x01, 0x29, 0x5B, 0xD0, 0xDF, 0x1C, 0xBF, 0x10, 0x7F, 0x00, 0xBF, 0xB2, 0xBA, 0x46, 0x4F, 0xEA, 0x07, 0x49, 0x4F, 0xEA, -0x45, 0x18, 0x08, 0xF1, 0x80, 0x48, 0x08, 0xF5, 0x00, 0x18, 0xD8, 0xF8, 0x00, 0x19, 0x11, 0xF0, 0x80, 0x2F, 0x68, 0xD1, -0xA2, 0x04, 0x02, 0xF4, 0x40, 0x22, 0xCB, 0xF3, 0x0A, 0x03, 0x3B, 0x4C, 0x13, 0x43, 0x43, 0xEA, 0x85, 0x53, 0x21, 0x88, -0x43, 0xF0, 0xC0, 0x53, 0x43, 0xF4, 0x00, 0x43, 0xC8, 0xF8, 0x00, 0x39, 0x01, 0xEB, 0x0A, 0x03, 0xB3, 0xF5, 0xC0, 0x6F, -0x5E, 0xDC, 0x34, 0x4A, 0x40, 0x36, 0x02, 0xEB, 0x86, 0x06, 0x41, 0xEA, 0x09, 0x03, 0x73, 0x60, 0xD2, 0xF8, 0x1C, 0x38, -0x0F, 0x44, 0x01, 0x21, 0x01, 0xFA, 0x05, 0xF5, 0x1D, 0x43, 0x27, 0x80, 0xC2, 0xF8, 0x1C, 0x58, 0xBD, 0xE8, 0xF8, 0x8F, -0x4E, 0x01, 0x06, 0xF1, 0x80, 0x46, 0x06, 0xF5, 0x00, 0x16, 0xD6, 0xF8, 0x00, 0x2B, 0x12, 0xF0, 0x80, 0x2F, 0x33, 0xD1, -0xA4, 0x04, 0x04, 0xF4, 0x40, 0x24, 0xCB, 0xF3, 0x0A, 0x03, 0x23, 0x43, 0x43, 0xF0, 0xC0, 0x53, 0x21, 0x4A, 0x43, 0xF4, -0x00, 0x43, 0xC6, 0xF8, 0x00, 0x3B, 0xD2, 0xF8, 0x1C, 0x38, 0x4F, 0xF4, 0x80, 0x31, 0x01, 0xFA, 0x05, 0xF5, 0x1D, 0x43, -0xC2, 0xF8, 0x1C, 0x58, 0xBD, 0xE8, 0xF8, 0x8F, 0xB3, 0xF5, 0x48, 0x7F, 0x20, 0xD8, 0xDF, 0x1C, 0xBF, 0x10, 0x7F, 0x00, -0xBF, 0xB2, 0xBA, 0x46, 0x4F, 0xEA, 0x07, 0x49, 0xBB, 0xF5, 0x80, 0x6F, 0x9D, 0xD9, 0x6F, 0xF4, 0x80, 0x63, 0x0B, 0xEB, -0x03, 0x01, 0xB1, 0xF5, 0x80, 0x6F, 0x25, 0xBF, 0x10, 0x4B, 0xA3, 0xFB, 0x0B, 0x13, 0x4F, 0xEA, 0x5B, 0x0B, 0xC3, 0xF3, -0x4F, 0x0B, 0x8E, 0xE7, 0xFF, 0xF7, 0x34, 0xFE, 0xC8, 0xE7, 0x10, 0x46, 0x29, 0x46, 0xFF, 0xF7, 0x2F, 0xFE, 0x91, 0xE7, -0x4F, 0xF4, 0xC8, 0x7A, 0x57, 0x46, 0x4F, 0xF0, 0xC8, 0x79, 0xDF, 0xE7, 0x06, 0x48, 0x52, 0x46, 0x4F, 0xF4, 0xC0, 0x63, -0xFD, 0xF7, 0x9E, 0xF8, 0x21, 0x88, 0x98, 0xE7, 0x48, 0x28, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0xAB, 0xAA, 0xAA, 0xAA, -0x40, 0x84, 0x15, 0x00, 0xF8, 0xB5, 0x27, 0x4B, 0x1B, 0x78, 0x04, 0x2B, 0x3C, 0xD1, 0x44, 0x1E, 0xDF, 0xB2, 0xE3, 0xB2, -0x04, 0x2B, 0x39, 0xD8, 0x8D, 0x07, 0x3D, 0xD1, 0x22, 0x4E, 0x4F, 0xEA, 0x04, 0x1E, 0x06, 0xEB, 0x04, 0x1C, 0x56, 0xF8, -0x0E, 0x50, 0x8D, 0xBB, 0x43, 0x01, 0x03, 0xF1, 0x80, 0x43, 0x03, 0xF5, 0x00, 0x13, 0xD3, 0xF8, 0x00, 0x0B, 0x00, 0x04, -0x2A, 0xD5, 0x1B, 0x48, 0x46, 0xF8, 0x0E, 0x10, 0x50, 0xF8, 0x24, 0x00, 0x19, 0x4F, 0x01, 0x26, 0x8C, 0xF8, 0x08, 0x60, -0xC6, 0x78, 0x64, 0x01, 0x04, 0xF1, 0x80, 0x44, 0xBA, 0x42, 0x04, 0xF5, 0x00, 0x14, 0x06, 0xF0, 0x31, 0x06, 0x28, 0xBF, -0x3A, 0x46, 0x46, 0xF0, 0x0E, 0x06, 0xCC, 0xF8, 0x04, 0x20, 0x02, 0x80, 0x41, 0x60, 0xC6, 0x70, 0xC4, 0xF8, 0x34, 0x0B, -0xD3, 0xF8, 0x00, 0x2B, 0x42, 0xF0, 0x04, 0x42, 0x28, 0x46, 0xC3, 0xF8, 0x00, 0x2B, 0xF8, 0xBD, 0x01, 0x20, 0xF8, 0xBD, -0x02, 0x20, 0xF8, 0xBD, 0x38, 0x46, 0xF8, 0xBD, 0x05, 0x20, 0xF8, 0xBD, 0x06, 0x48, 0xFD, 0xF7, 0x47, 0xF8, 0x03, 0x20, -0xF8, 0xBD, 0x00, 0xBF, 0x6F, 0x26, 0x17, 0x00, 0x08, 0x28, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, 0xFF, 0xFF, 0x07, 0x00, -0x80, 0x84, 0x15, 0x00, 0xF8, 0xB5, 0x28, 0x4B, 0x1B, 0x78, 0x04, 0x2B, 0x3E, 0xD1, 0x44, 0x1E, 0xDF, 0xB2, 0xE3, 0xB2, -0x04, 0x2B, 0x3B, 0xD8, 0x8D, 0x07, 0x3F, 0xD1, 0x23, 0x4E, 0x4F, 0xEA, 0x04, 0x1E, 0x06, 0xEB, 0x04, 0x1C, 0x56, 0xF8, -0x0E, 0x50, 0x9D, 0xBB, 0x43, 0x01, 0x03, 0xF1, 0x80, 0x43, 0x03, 0xF5, 0x00, 0x13, 0xD3, 0xF8, 0x00, 0x0B, 0x00, 0x04, -0x2C, 0xD5, 0x1C, 0x48, 0x46, 0xF8, 0x0E, 0x10, 0x50, 0xF8, 0x24, 0x00, 0x1A, 0x4F, 0x01, 0x26, 0x8C, 0xF8, 0x08, 0x60, -0xC6, 0x78, 0x64, 0x01, 0x04, 0xF1, 0x80, 0x44, 0xBA, 0x42, 0x04, 0xF5, 0x00, 0x14, 0x06, 0xF0, 0x31, 0x06, 0x28, 0xBF, -0x3A, 0x46, 0x46, 0xF0, 0x0E, 0x06, 0xCC, 0xF8, 0x04, 0x20, 0x02, 0x80, 0x41, 0x60, 0xC6, 0x70, 0xC4, 0xF8, 0x34, 0x0B, -0xD3, 0xF8, 0x00, 0x2B, 0x22, 0xF0, 0x04, 0x42, 0x42, 0xF0, 0x00, 0x42, 0x28, 0x46, 0xC3, 0xF8, 0x00, 0x2B, 0xF8, 0xBD, -0x01, 0x20, 0xF8, 0xBD, 0x02, 0x20, 0xF8, 0xBD, 0x38, 0x46, 0xF8, 0xBD, 0x05, 0x20, 0xF8, 0xBD, 0x06, 0x48, 0xFC, 0xF7, -0xEB, 0xFF, 0x03, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x6F, 0x26, 0x17, 0x00, 0x08, 0x28, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, -0xFF, 0xFF, 0x07, 0x00, 0x80, 0x84, 0x15, 0x00, 0x10, 0xB5, 0x0C, 0x4C, 0x0C, 0x4B, 0xE0, 0x89, 0x18, 0x80, 0x20, 0xB9, -0x0B, 0x4B, 0x03, 0x22, 0x1A, 0x70, 0x01, 0x20, 0x10, 0xBD, 0x0A, 0x4B, 0x5B, 0x69, 0x4B, 0xB1, 0xC0, 0xB2, 0x98, 0x47, -0x30, 0xB1, 0x06, 0x4A, 0x04, 0x21, 0x07, 0x23, 0x11, 0x70, 0x23, 0x70, 0x01, 0x20, 0x10, 0xBD, 0x00, 0x20, 0x10, 0xBD, -0xB4, 0x27, 0x17, 0x00, 0x6C, 0x26, 0x17, 0x00, 0x6F, 0x26, 0x17, 0x00, 0x20, 0x26, 0x17, 0x00, 0xF8, 0xB5, 0x0C, 0x46, -0x00, 0x28, 0x70, 0xD1, 0x01, 0xF0, 0x21, 0x03, 0x21, 0x2B, 0x7F, 0xD0, 0xE1, 0x07, 0x76, 0xD5, 0x14, 0xF0, 0x08, 0x01, -0x00, 0xF0, 0x8B, 0x80, 0xB5, 0x4D, 0x2B, 0x78, 0x00, 0x2B, 0x40, 0xF0, 0x76, 0x82, 0x63, 0x06, 0x40, 0xF1, 0x15, 0x81, -0xB2, 0x4B, 0xD3, 0xF8, 0x14, 0x3B, 0x08, 0x3B, 0x00, 0x22, 0xC5, 0xE9, 0x01, 0x22, 0x02, 0x20, 0x28, 0x70, 0x1A, 0x78, -0x29, 0x7B, 0xD2, 0x09, 0x62, 0xF3, 0xC7, 0x11, 0x29, 0x73, 0x19, 0x78, 0x2A, 0x7B, 0x49, 0x11, 0x61, 0xF3, 0x46, 0x12, -0x2A, 0x73, 0x19, 0x78, 0x61, 0xF3, 0x04, 0x02, 0x2A, 0x73, 0x5A, 0x78, 0x6A, 0x73, 0xD9, 0x78, 0x9A, 0x78, 0x42, 0xEA, -0x01, 0x22, 0xEA, 0x81, 0x59, 0x79, 0x1A, 0x79, 0x42, 0xEA, 0x01, 0x22, 0x2A, 0x82, 0xDA, 0x79, 0x9B, 0x79, 0x43, 0xEA, -0x02, 0x23, 0x6B, 0x82, 0x23, 0xB9, 0x95, 0xF9, 0x0C, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x73, 0x82, 0x9A, 0x4B, 0x9B, 0x4C, -0xD3, 0xF8, 0x14, 0x28, 0xE1, 0x68, 0x22, 0xF0, 0x10, 0x02, 0xC3, 0xF8, 0x14, 0x28, 0xD3, 0xF8, 0x10, 0x28, 0x22, 0xF0, -0x10, 0x02, 0xC3, 0xF8, 0x10, 0x28, 0x21, 0xB1, 0x91, 0x48, 0x88, 0x47, 0x00, 0x28, 0x40, 0xF0, 0xB5, 0x80, 0x92, 0x4F, -0x2B, 0x7B, 0x3A, 0x78, 0x13, 0xF0, 0x60, 0x0F, 0xD6, 0xB2, 0x40, 0xF0, 0xCF, 0x80, 0x68, 0x7B, 0x0B, 0x28, 0x00, 0xF2, -0xDA, 0x80, 0xDF, 0xE8, 0x10, 0xF0, 0xDE, 0x00, 0x27, 0x01, 0xD8, 0x00, 0xFA, 0x00, 0xD8, 0x00, 0x8C, 0x00, 0x5D, 0x01, -0xD8, 0x00, 0x4F, 0x01, 0x44, 0x01, 0x98, 0x01, 0x85, 0x01, 0x82, 0x4D, 0x2B, 0x78, 0x02, 0x2B, 0x53, 0xD0, 0xCA, 0x07, -0x55, 0xD4, 0xA1, 0x06, 0x02, 0xD5, 0x2B, 0x78, 0x06, 0x2B, 0x3D, 0xD0, 0xF8, 0xBD, 0x7C, 0x4D, 0x22, 0x07, 0x2B, 0x78, -0x35, 0xD5, 0x01, 0x2B, 0x8B, 0xD0, 0xF8, 0xBD, 0x79, 0x4A, 0xD2, 0xF8, 0x10, 0x3B, 0x03, 0xF0, 0x7F, 0x03, 0x40, 0x2B, -0x7F, 0xF4, 0x78, 0xAF, 0xD2, 0xF8, 0x10, 0x3B, 0x18, 0x03, 0x7F, 0xF5, 0x73, 0xAF, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, -0xDB, 0xBA, 0x74, 0x4B, 0x6F, 0x4D, 0x1E, 0x68, 0xF3, 0x78, 0x13, 0xF0, 0x01, 0x03, 0x40, 0xF0, 0xE2, 0x81, 0x2A, 0x78, -0x02, 0x2A, 0x3F, 0xF4, 0x6E, 0xAF, 0x03, 0x2A, 0x00, 0xF0, 0xE6, 0x81, 0x05, 0x2A, 0x0D, 0xD1, 0x68, 0x4A, 0x2B, 0x70, -0xD2, 0xF8, 0x14, 0x38, 0x23, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x14, 0x38, 0xD2, 0xF8, 0x10, 0x38, 0x23, 0xF0, 0x10, 0x03, -0xC2, 0xF8, 0x10, 0x38, 0xFF, 0xF7, 0xBA, 0xFA, 0xBF, 0xE7, 0x02, 0x2B, 0xBD, 0xD1, 0x54, 0xE7, 0xFF, 0xF7, 0xB4, 0xFA, -0x5D, 0x4A, 0x07, 0x23, 0x2B, 0x70, 0xD2, 0xF8, 0x14, 0x38, 0x43, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x14, 0x38, 0xBD, 0xE8, -0xF8, 0x40, 0xFF, 0xF7, 0xC5, 0xBA, 0x5B, 0x48, 0xFC, 0xF7, 0xEC, 0xFE, 0x41, 0xE7, 0x04, 0x2B, 0x00, 0xF0, 0xDD, 0x81, -0x07, 0x2B, 0xA4, 0xD1, 0x52, 0x4B, 0x57, 0x49, 0x00, 0x20, 0x28, 0x70, 0xD3, 0xF8, 0x14, 0x28, 0x22, 0xF0, 0x10, 0x02, -0xC3, 0xF8, 0x14, 0x28, 0xD3, 0xF8, 0x10, 0x28, 0x22, 0xF0, 0x10, 0x02, 0xC3, 0xF8, 0x10, 0x28, 0x0A, 0x78, 0x00, 0x2A, -0x96, 0xD0, 0xD3, 0xF8, 0x04, 0x48, 0x12, 0x01, 0x02, 0xF0, 0x70, 0x02, 0x24, 0xF0, 0x70, 0x04, 0x22, 0x43, 0xC3, 0xF8, -0x04, 0x28, 0x08, 0x70, 0xF8, 0xBD, 0x43, 0x48, 0xE9, 0x89, 0xD0, 0xF8, 0x00, 0x28, 0x0B, 0x01, 0x22, 0xF4, 0xFE, 0x62, -0x03, 0xF4, 0xFE, 0x63, 0x13, 0x43, 0x07, 0x22, 0xC0, 0xF8, 0x00, 0x38, 0x2A, 0x70, 0x00, 0x29, 0x40, 0xF0, 0xF2, 0x81, -0x02, 0x23, 0x3B, 0x70, 0x04, 0x2E, 0x40, 0xF0, 0x9F, 0x80, 0x3B, 0x78, 0x04, 0x2B, 0x01, 0xD0, 0xFF, 0xF7, 0xE8, 0xFA, -0x2B, 0x78, 0x03, 0x2B, 0x26, 0xD0, 0x04, 0x2B, 0x00, 0xF0, 0xAB, 0x80, 0x07, 0x2B, 0x00, 0xF0, 0x91, 0x80, 0x00, 0x24, -0x22, 0x46, 0x20, 0x46, 0x4F, 0xF4, 0x00, 0x11, 0x2C, 0x70, 0xFF, 0xF7, 0x2F, 0xFB, 0x22, 0x46, 0x20, 0x46, 0x4F, 0xF4, -0x00, 0x11, 0xFF, 0xF7, 0x85, 0xFB, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0x49, 0xBA, 0x2B, 0x4B, 0x1B, 0x68, 0x5B, 0x68, -0xEA, 0xE6, 0x2C, 0x48, 0xFC, 0xF7, 0x8A, 0xFE, 0x04, 0x2E, 0xE4, 0xD1, 0x3B, 0x78, 0x04, 0x2B, 0xE1, 0xD0, 0xFF, 0xF7, -0xBF, 0xFA, 0xDE, 0xE7, 0x6B, 0x68, 0x00, 0x2B, 0x7F, 0xF4, 0x57, 0xAF, 0x25, 0x4B, 0x6B, 0x60, 0x53, 0xE7, 0x04, 0x2E, -0xD5, 0xD1, 0x3B, 0x78, 0x04, 0x2B, 0xF0, 0xD1, 0xD1, 0xE7, 0x3B, 0x78, 0x04, 0x2B, 0x00, 0xF0, 0xCB, 0x81, 0x2B, 0x8A, -0x00, 0x2B, 0xE3, 0xD1, 0x2B, 0x7B, 0x03, 0xF0, 0x1F, 0x03, 0x01, 0x2B, 0x00, 0xF0, 0xCF, 0x81, 0x02, 0x2B, 0x00, 0xF0, -0xC1, 0x80, 0x00, 0x2B, 0xE7, 0xD1, 0x19, 0x4A, 0x19, 0x4B, 0x12, 0x78, 0x1A, 0x80, 0x02, 0x21, 0x04, 0x22, 0x6B, 0x60, -0x29, 0x81, 0x2A, 0x70, 0x5A, 0xE0, 0x3B, 0x78, 0x04, 0x2B, 0x02, 0xD0, 0x2B, 0x8A, 0x00, 0x2B, 0xC8, 0xD1, 0x2B, 0x7B, -0x13, 0xF0, 0x1F, 0x03, 0x00, 0xF0, 0xB9, 0x81, 0x02, 0x2B, 0x03, 0xD1, 0xEB, 0x89, 0x00, 0x2B, 0x00, 0xF0, 0xBF, 0x81, -0x07, 0x23, 0x04, 0x2E, 0x2B, 0x70, 0xA0, 0xD1, 0xC9, 0xE7, 0x00, 0xBF, 0xB4, 0x27, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, -0x20, 0x26, 0x17, 0x00, 0x6F, 0x26, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, 0x98, 0x84, 0x15, 0x00, 0x70, 0x26, 0x17, 0x00, -0xD8, 0x84, 0x15, 0x00, 0x74, 0x26, 0x17, 0x00, 0x6E, 0x26, 0x17, 0x00, 0x50, 0x28, 0x17, 0x00, 0x3B, 0x78, 0x04, 0x2B, -0x02, 0xD0, 0x2B, 0x8A, 0x00, 0x2B, 0x9B, 0xD1, 0x2B, 0x7B, 0x03, 0xF0, 0x1F, 0x03, 0x02, 0x2B, 0xD8, 0xD1, 0xEB, 0x89, -0x00, 0x2B, 0xD5, 0xD1, 0x28, 0x8A, 0x00, 0xF0, 0x0F, 0x01, 0xC0, 0xF3, 0xC0, 0x10, 0xFF, 0xF7, 0xBF, 0xFB, 0x07, 0x23, -0x04, 0x2E, 0x2B, 0x70, 0x00, 0xF0, 0x95, 0x81, 0xFF, 0xF7, 0xE6, 0xF9, 0xE7, 0xE6, 0xA9, 0x4B, 0xD3, 0xF8, 0xE0, 0x34, -0x98, 0x47, 0x04, 0x46, 0x04, 0x2E, 0x5A, 0xD0, 0x00, 0x2C, 0x7F, 0xF4, 0x59, 0xAF, 0x60, 0xE7, 0xA4, 0x4B, 0x6B, 0x60, -0x02, 0x22, 0x04, 0x23, 0x2A, 0x81, 0x2B, 0x70, 0x04, 0x2E, 0x3F, 0xF4, 0x4A, 0xAF, 0x29, 0x89, 0x68, 0x68, 0xFF, 0xF7, -0x43, 0xFA, 0xCE, 0xE6, 0xE8, 0x89, 0x03, 0x0A, 0x01, 0x3B, 0x01, 0x0A, 0x0E, 0x2B, 0x3F, 0xF6, 0x62, 0xAF, 0x01, 0xA2, -0x52, 0xF8, 0x23, 0xF0, 0xC1, 0x97, 0x12, 0x00, 0x05, 0x98, 0x12, 0x00, 0xF1, 0x97, 0x12, 0x00, 0xFF, 0x95, 0x12, 0x00, -0xFF, 0x95, 0x12, 0x00, 0x65, 0x98, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, -0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, -0x45, 0x98, 0x12, 0x00, 0xA3, 0x69, 0x00, 0x2B, 0x3F, 0xF4, 0x40, 0xAF, 0xE9, 0x89, 0x28, 0x8A, 0x98, 0x47, 0x00, 0x28, -0x3F, 0xF4, 0x3A, 0xAF, 0x85, 0x4A, 0x86, 0x4B, 0x29, 0x8A, 0x11, 0x80, 0xEA, 0x89, 0x1A, 0x70, 0x07, 0x23, 0x2B, 0x70, -0x06, 0xE7, 0x3B, 0x78, 0x04, 0x2B, 0xDA, 0xB2, 0x7F, 0xF4, 0x2C, 0xAF, 0x7E, 0x4B, 0x7F, 0x49, 0x18, 0x88, 0x2A, 0x70, -0x01, 0x23, 0x28, 0x82, 0x69, 0x60, 0x2B, 0x81, 0xAE, 0xE7, 0x3B, 0x78, 0x04, 0x2B, 0xA1, 0xD0, 0xFF, 0xF7, 0xE4, 0xF9, -0x00, 0x2C, 0x7F, 0xF4, 0xF9, 0xAE, 0x00, 0xE7, 0x01, 0x46, 0xFF, 0xF7, 0x0B, 0xFB, 0x00, 0x28, 0x00, 0xF0, 0x05, 0x81, -0x74, 0x4B, 0x01, 0x22, 0x1A, 0x80, 0x3A, 0xE7, 0x23, 0x68, 0x01, 0x20, 0x98, 0x47, 0x00, 0x28, 0x3F, 0xF4, 0x0A, 0xAF, -0x03, 0x78, 0x12, 0x2B, 0x7F, 0xF4, 0x06, 0xAF, 0x42, 0x78, 0x01, 0x2A, 0x7F, 0xF4, 0x02, 0xAF, 0x2B, 0x81, 0x68, 0x60, -0x6B, 0x8A, 0x2A, 0x89, 0x9A, 0x42, 0x88, 0xBF, 0x2B, 0x81, 0x04, 0x23, 0x2B, 0x70, 0x83, 0xE7, 0xA3, 0x68, 0xC0, 0xB2, -0x98, 0x47, 0x68, 0x60, 0x00, 0x28, 0x3F, 0xF4, 0xF1, 0xAE, 0x03, 0x78, 0x2B, 0x81, 0xED, 0xE7, 0x63, 0x68, 0x00, 0x20, -0x98, 0x47, 0x00, 0x28, 0x3F, 0xF4, 0xE8, 0xAE, 0x03, 0x78, 0x09, 0x2B, 0x7F, 0xF4, 0xE4, 0xAE, 0x43, 0x78, 0x02, 0x2B, -0x7F, 0xF4, 0xE0, 0xAE, 0xC2, 0x78, 0x83, 0x78, 0x68, 0x60, 0x43, 0xEA, 0x02, 0x23, 0x2B, 0x81, 0xC3, 0x79, 0x58, 0x4A, -0x13, 0xF0, 0x40, 0x0F, 0x13, 0x78, 0x14, 0xBF, 0x43, 0xF0, 0x01, 0x03, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x70, 0xCD, 0xE7, -0x23, 0x68, 0x0F, 0x20, 0x98, 0x47, 0x00, 0x28, 0x3F, 0xF4, 0xC8, 0xAE, 0x03, 0x78, 0x05, 0x2B, 0x7F, 0xF4, 0xC4, 0xAE, -0x43, 0x78, 0x0F, 0x2B, 0x7F, 0xF4, 0xC0, 0xAE, 0x83, 0x78, 0xBB, 0xE7, 0x23, 0x68, 0x06, 0x20, 0x98, 0x47, 0x00, 0x28, -0x3F, 0xF4, 0xB8, 0xAE, 0x03, 0x78, 0x0A, 0x2B, 0x7F, 0xF4, 0xB4, 0xAE, 0x42, 0x78, 0x06, 0x2A, 0x7F, 0xF4, 0xB0, 0xAE, -0xAC, 0xE7, 0x2B, 0x78, 0x00, 0x2B, 0x51, 0xD1, 0x01, 0x23, 0x2B, 0x70, 0xF8, 0xBD, 0x00, 0x21, 0x01, 0x20, 0xFF, 0xF7, -0xB3, 0xFA, 0x84, 0xE5, 0x68, 0x89, 0x2B, 0x89, 0x36, 0x88, 0x6A, 0x68, 0x3C, 0x49, 0x1B, 0x1A, 0xC6, 0xF1, 0x40, 0x06, -0x9B, 0xB2, 0x9E, 0x42, 0xA8, 0xBF, 0x1E, 0x46, 0x10, 0x44, 0x09, 0x68, 0xB2, 0xB2, 0x2D, 0xF0, 0x07, 0xFC, 0x6A, 0x89, -0x2B, 0x89, 0x16, 0x44, 0xB6, 0xB2, 0xB3, 0x42, 0x6E, 0x81, 0x7F, 0xF4, 0x11, 0xAE, 0x33, 0x4B, 0x1B, 0x69, 0x0B, 0xB1, -0x28, 0x46, 0x98, 0x47, 0xA0, 0x06, 0x35, 0xD4, 0x06, 0x23, 0x2B, 0x70, 0xF8, 0xBD, 0x29, 0x89, 0x6A, 0x89, 0x88, 0x1A, -0x80, 0xB2, 0x30, 0xB9, 0x05, 0x23, 0x2B, 0x70, 0xF8, 0xBD, 0x2B, 0x48, 0xFC, 0xF7, 0x00, 0xFD, 0x88, 0xE5, 0x40, 0x28, -0x22, 0xD0, 0x40, 0x28, 0x28, 0xBF, 0x40, 0x20, 0x00, 0x26, 0x02, 0x44, 0x92, 0xB2, 0x91, 0x42, 0x6A, 0x81, 0x29, 0xD3, -0x89, 0x1A, 0x89, 0xB2, 0x40, 0x29, 0x0F, 0xD8, 0x79, 0xB9, 0x66, 0xBB, 0x21, 0x4A, 0x05, 0x23, 0x2B, 0x70, 0xD2, 0xF8, -0x10, 0x38, 0x43, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x10, 0x38, 0xF8, 0xBD, 0x01, 0x20, 0xFF, 0xF7, 0x65, 0xFA, 0xA9, 0xE7, -0x40, 0x21, 0x68, 0x68, 0x10, 0x44, 0xFF, 0xF7, 0x27, 0xF9, 0x98, 0xE5, 0x01, 0x26, 0xDE, 0xE7, 0xFF, 0xF7, 0x8E, 0xF8, -0x15, 0x4A, 0x07, 0x23, 0x2B, 0x70, 0xD2, 0xF8, 0x14, 0x38, 0x43, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x14, 0x38, 0xFF, 0xF7, -0xA1, 0xF8, 0x8A, 0xE5, 0x10, 0x48, 0xFC, 0xF7, 0xC7, 0xFC, 0x29, 0x89, 0x6A, 0x89, 0xCF, 0xE7, 0x03, 0x23, 0x3B, 0x70, -0x0C, 0xE6, 0x08, 0x46, 0xFF, 0xF7, 0x0A, 0xF9, 0x7B, 0xE5, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x6C, 0x26, 0x17, 0x00, -0x6A, 0x26, 0x17, 0x00, 0x68, 0x26, 0x17, 0x00, 0x50, 0x28, 0x17, 0x00, 0x6E, 0x26, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, -0x20, 0x26, 0x17, 0x00, 0xB4, 0x84, 0x15, 0x00, 0x00, 0x00, 0x20, 0x40, 0xF0, 0x84, 0x15, 0x00, 0x2B, 0x7B, 0x03, 0xF0, -0x1F, 0x03, 0x01, 0x2B, 0x07, 0xD0, 0x02, 0x2B, 0x7F, 0xF4, 0x39, 0xAE, 0x28, 0x8A, 0x00, 0xF0, 0x0F, 0x01, 0x04, 0x29, -0x2A, 0xD9, 0x17, 0x4B, 0x00, 0x22, 0x1A, 0x80, 0x35, 0xE6, 0xE8, 0x89, 0x02, 0x28, 0x19, 0xD0, 0x00, 0xF1, 0xFF, 0x3C, -0x07, 0x23, 0xDC, 0xF1, 0x00, 0x04, 0x44, 0xEB, 0x0C, 0x04, 0x2B, 0x70, 0x7E, 0xE6, 0x28, 0x8A, 0x00, 0xF0, 0x0F, 0x01, -0xC0, 0xF3, 0xC0, 0x10, 0xFF, 0xF7, 0x18, 0xFA, 0x07, 0x23, 0x04, 0x2E, 0x2B, 0x70, 0x7F, 0xF4, 0x6B, 0xAE, 0x3B, 0x78, -0x04, 0x2B, 0x3F, 0xF4, 0x67, 0xAE, 0xC9, 0xE5, 0x2B, 0x8A, 0x07, 0x49, 0x1B, 0x0A, 0x07, 0x22, 0x04, 0x2E, 0x0B, 0x70, -0x2A, 0x70, 0x7F, 0xF4, 0x5D, 0xAE, 0xF0, 0xE7, 0xC0, 0xF3, 0xC0, 0x10, 0xC7, 0xE6, 0x00, 0xBF, 0x50, 0x28, 0x17, 0x00, -0x70, 0x26, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0xB4, 0x4B, 0xB5, 0x4D, 0xD3, 0xF8, 0x00, 0x38, 0x13, 0xF4, 0xFE, 0x6F, -0x03, 0xD0, 0x2B, 0x78, 0x04, 0x2B, 0x00, 0xF0, 0x8F, 0x81, 0xAF, 0x4C, 0xB0, 0x4A, 0xB1, 0x48, 0x00, 0x21, 0x02, 0x23, -0x2B, 0x70, 0x11, 0x70, 0x1A, 0xF0, 0x1A, 0xFE, 0xD4, 0xF8, 0x00, 0x3E, 0x23, 0xF0, 0x01, 0x03, 0xC4, 0xF8, 0x00, 0x3E, -0xD4, 0xF8, 0x04, 0x38, 0x23, 0xF0, 0x01, 0x03, 0xC4, 0xF8, 0x04, 0x38, 0xFF, 0xF7, 0x7E, 0xF8, 0xA3, 0x69, 0x1D, 0x06, -0x03, 0xD5, 0xA3, 0x69, 0x23, 0xF0, 0x80, 0x03, 0xA3, 0x61, 0xA0, 0x4B, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF4, 0x00, 0x72, -0xC3, 0xF8, 0x04, 0x28, 0x5A, 0x69, 0x14, 0x06, 0xFC, 0xD5, 0x01, 0x23, 0x01, 0x2B, 0x9E, 0x4C, 0x9E, 0x4D, 0x9F, 0x4A, -0x9F, 0x4F, 0x4F, 0xF0, 0x02, 0x0C, 0x1C, 0xD0, 0x4F, 0xEA, 0x43, 0x1E, 0x5E, 0xF8, 0x02, 0x10, 0x11, 0xF0, 0x80, 0x2F, -0x10, 0xD0, 0x5E, 0xF8, 0x02, 0x00, 0x00, 0x29, 0x40, 0xEA, 0x05, 0x00, 0x4E, 0xF8, 0x02, 0x00, 0xC0, 0xF2, 0x0F, 0x81, -0x08, 0x04, 0x05, 0xD4, 0x5E, 0xF8, 0x02, 0x10, 0x21, 0xF4, 0x00, 0x41, 0x4E, 0xF8, 0x02, 0x10, 0x05, 0x2B, 0x0A, 0xD0, -0x01, 0x33, 0x01, 0x2B, 0xE2, 0xD1, 0x21, 0x68, 0x11, 0xF0, 0x80, 0x2F, 0xF8, 0xD0, 0x21, 0x68, 0x29, 0x43, 0x21, 0x60, -0xF4, 0xE7, 0x84, 0x4B, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF4, 0x80, 0x62, 0xC3, 0xF8, 0x04, 0x28, 0xD3, 0xF8, 0x04, 0x28, -0x42, 0xF0, 0x80, 0x02, 0xC3, 0xF8, 0x04, 0x28, 0x5A, 0x69, 0x51, 0x06, 0xFC, 0xD5, 0x01, 0x23, 0x01, 0x2B, 0x83, 0x4F, -0xDF, 0xF8, 0x40, 0x82, 0xDF, 0xF8, 0xF8, 0xC1, 0x81, 0x4D, 0xDF, 0xF8, 0x3C, 0xE2, 0x4F, 0xF0, 0x40, 0x06, 0x4F, 0xF0, -0x02, 0x09, 0x19, 0xD0, 0x5A, 0x01, 0x05, 0xEB, 0x43, 0x10, 0x51, 0x59, 0x11, 0xF0, 0x80, 0x2F, 0x0D, 0xD0, 0x72, 0x44, -0x16, 0x60, 0x04, 0x68, 0x00, 0x29, 0x44, 0xEA, 0x0C, 0x04, 0x04, 0x60, 0x11, 0xDB, 0x0A, 0x04, 0x03, 0xD4, 0x02, 0x68, -0x22, 0xF4, 0x00, 0x42, 0x02, 0x60, 0x05, 0x2B, 0x1A, 0xD0, 0x01, 0x33, 0x01, 0x2B, 0xE5, 0xD1, 0x39, 0x68, 0x11, 0xF0, -0x80, 0x2F, 0xF8, 0xD0, 0x42, 0x46, 0x38, 0x46, 0xE6, 0xE7, 0x8C, 0x03, 0x09, 0xD5, 0xC2, 0xF8, 0x00, 0x90, 0x04, 0x68, -0x44, 0xF0, 0x80, 0x44, 0x04, 0x60, 0x14, 0x68, 0xA4, 0x07, 0xFC, 0xD5, 0xE1, 0xE7, 0x14, 0x68, 0x64, 0x06, 0xFC, 0xD5, -0x16, 0x60, 0xF0, 0xE7, 0x5B, 0x4B, 0x4F, 0xF4, 0x86, 0x62, 0x1A, 0x61, 0x1A, 0x69, 0x12, 0xF0, 0x30, 0x0F, 0xFB, 0xD1, -0xD3, 0xF8, 0x04, 0x28, 0x4F, 0xF0, 0x01, 0x14, 0x42, 0xF4, 0x80, 0x72, 0x29, 0x20, 0x09, 0x21, 0xC3, 0xF8, 0x04, 0x28, -0xC3, 0xF8, 0x1C, 0x48, 0xC3, 0xF8, 0x14, 0x08, 0xC3, 0xF8, 0x10, 0x18, 0x9A, 0x69, 0x42, 0xF4, 0x40, 0x22, 0x9A, 0x61, -0x9A, 0x6C, 0x14, 0x03, 0x4C, 0xD4, 0x4C, 0x4D, 0x55, 0x4B, 0xD5, 0xF8, 0x00, 0x28, 0x55, 0x48, 0x00, 0x24, 0x22, 0xF4, -0xFE, 0x62, 0xC5, 0xF8, 0x00, 0x28, 0x21, 0x46, 0xC3, 0xE9, 0x01, 0x44, 0x40, 0x22, 0x1C, 0x70, 0xF6, 0xF7, 0xDE, 0xFA, -0x21, 0x46, 0x40, 0x22, 0x4E, 0x48, 0xF6, 0xF7, 0xD9, 0xFA, 0x4E, 0x4A, 0x4E, 0x4B, 0x11, 0x68, 0x4E, 0x4A, 0x1B, 0x68, -0x12, 0x68, 0x59, 0x60, 0xC5, 0xF8, 0x14, 0x3B, 0xD1, 0x78, 0x4C, 0x4B, 0x4C, 0x48, 0x1F, 0x68, 0x4C, 0x4B, 0x06, 0x6A, -0x18, 0x68, 0xD3, 0xF8, 0x04, 0xC0, 0x41, 0xF0, 0xC0, 0x01, 0xD1, 0x70, 0xF9, 0x78, 0x41, 0xF0, 0xC0, 0x01, 0xF9, 0x70, -0xC1, 0x78, 0x41, 0xF0, 0xC0, 0x01, 0xC1, 0x70, 0x9C, 0xF8, 0x03, 0x10, 0xD3, 0xE9, 0x02, 0x70, 0x41, 0xF0, 0xC0, 0x03, -0x8C, 0xF8, 0x03, 0x30, 0xFB, 0x78, 0x43, 0xF0, 0xC0, 0x03, 0xFB, 0x70, 0xC3, 0x78, 0x43, 0xF0, 0xC0, 0x03, 0xC3, 0x70, -0xC5, 0xF8, 0x14, 0x29, 0x0E, 0xB1, 0x20, 0x46, 0xB0, 0x47, 0xBD, 0xE8, 0xF8, 0x43, 0x3A, 0x48, 0x1A, 0xF0, 0x10, 0xBD, -0x39, 0x49, 0x3A, 0x4C, 0x24, 0x4A, 0x40, 0xF2, 0x17, 0x15, 0x5D, 0x62, 0x4F, 0xF4, 0x9C, 0x70, 0x9C, 0x62, 0x08, 0x80, -0xD3, 0xF8, 0x04, 0x18, 0x41, 0xF0, 0x80, 0x01, 0xC3, 0xF8, 0x04, 0x18, 0x53, 0x69, 0x58, 0x06, 0xFC, 0xD5, 0x1C, 0x49, -0x0B, 0x69, 0x00, 0x2B, 0xFC, 0xDA, 0x4F, 0xF4, 0x84, 0x63, 0x19, 0x4A, 0x0B, 0x61, 0x13, 0x69, 0x99, 0x06, 0xFC, 0xD4, -0xD2, 0xF8, 0x04, 0x38, 0x15, 0x49, 0x43, 0xF4, 0x80, 0x73, 0xC2, 0xF8, 0x04, 0x38, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF4, -0x00, 0x73, 0xC2, 0xF8, 0x04, 0x38, 0x4B, 0x69, 0x1A, 0x06, 0xFC, 0xD5, 0x0B, 0x69, 0x0E, 0x4A, 0x43, 0xF0, 0x10, 0x03, -0x0B, 0x61, 0x13, 0x69, 0xDB, 0x06, 0xFC, 0xD4, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF4, 0x80, 0x63, 0xC2, 0xF8, 0x04, 0x38, -0x75, 0xE7, 0x4E, 0xF8, 0x07, 0xC0, 0x5E, 0xF8, 0x02, 0x00, 0x40, 0xF0, 0x80, 0x40, 0x4E, 0xF8, 0x02, 0x00, 0x0E, 0xEB, -0x07, 0x06, 0x30, 0x68, 0x80, 0x07, 0xFC, 0xD5, 0xE2, 0xE6, 0x00, 0xBF, 0x00, 0x00, 0x20, 0x40, 0x6F, 0x26, 0x17, 0x00, -0x6E, 0x26, 0x17, 0x00, 0x20, 0x85, 0x15, 0x00, 0x00, 0x0B, 0x20, 0x40, 0x00, 0x80, 0x00, 0x08, 0xE0, 0x0A, 0x20, 0x40, -0xE8, 0x0A, 0x20, 0x40, 0x00, 0x09, 0x20, 0x40, 0xE0, 0x08, 0x20, 0x40, 0xB4, 0x27, 0x17, 0x00, 0x08, 0x28, 0x17, 0x00, -0xC8, 0x27, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, 0x40, 0x60, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, -0x20, 0x26, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, 0x28, 0x85, 0x15, 0x00, 0x48, 0x28, 0x17, 0x00, 0x17, 0x01, 0x21, 0x00, -0x08, 0x09, 0x20, 0x40, 0xE8, 0x08, 0x20, 0x40, 0x05, 0x48, 0x1E, 0x21, 0x1A, 0xF0, 0x90, 0xFC, 0x4F, 0xF4, 0xF0, 0x42, -0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0x18, 0xF0, 0x7F, 0xFC, 0x64, 0xE6, 0x0C, 0x85, 0x15, 0x00, 0x08, 0xB5, 0x04, 0x49, -0x04, 0x48, 0x1A, 0xF0, 0x81, 0xFC, 0x04, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x08, 0xBD, 0x00, 0xBF, 0x54, 0x85, 0x15, 0x00, -0xCC, 0xB5, 0x15, 0x00, 0x52, 0x28, 0x17, 0x00, 0x01, 0x4B, 0x18, 0x78, 0x70, 0x47, 0x00, 0xBF, 0x52, 0x28, 0x17, 0x00, -0x08, 0xB5, 0x07, 0x48, 0x1A, 0xF0, 0x6C, 0xFC, 0x06, 0x4B, 0x07, 0x4A, 0x00, 0x21, 0x19, 0x70, 0xD2, 0xF8, 0x00, 0x3E, -0x23, 0xF0, 0x01, 0x03, 0xC2, 0xF8, 0x00, 0x3E, 0x08, 0xBD, 0x00, 0xBF, 0x30, 0x85, 0x15, 0x00, 0x52, 0x28, 0x17, 0x00, -0x00, 0x00, 0x20, 0x40, 0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x1A, 0x4C, 0x1A, 0x4D, 0x23, 0x68, 0x2A, 0x78, 0x01, 0x33, 0x23, 0x60, 0x1A, 0xB1, 0x18, 0x4A, 0x12, 0x78, -0x04, 0x2A, 0x08, 0xD0, 0x33, 0xB1, 0x13, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, -0x38, 0xBD, 0x13, 0x4A, 0x13, 0x49, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF0, 0x01, 0x03, 0xC2, 0xF8, 0x04, 0x38, 0x0A, 0x69, -0x02, 0xF5, 0x0C, 0x52, 0x28, 0x32, 0x0B, 0x69, 0xD3, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x0B, 0x4A, 0x0C, 0x48, 0xD2, 0xF8, -0x04, 0x38, 0x23, 0xF0, 0x01, 0x03, 0xC2, 0xF8, 0x04, 0x38, 0x1A, 0xF0, 0x23, 0xFC, 0x00, 0x22, 0x23, 0x68, 0x2A, 0x70, -0xD8, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x52, 0x28, 0x17, 0x00, 0x6F, 0x26, 0x17, 0x00, -0x00, 0x00, 0x20, 0x40, 0x00, 0x10, 0x50, 0x40, 0x3C, 0x85, 0x15, 0x00, 0x38, 0xB5, 0x04, 0x46, 0x0D, 0x46, 0xFF, 0xF7, -0xB1, 0xFF, 0x15, 0x4B, 0x1B, 0x78, 0x04, 0x2B, 0x20, 0xD1, 0x62, 0x1E, 0xD3, 0xB2, 0x04, 0x2B, 0x1E, 0xD8, 0x60, 0x01, -0x00, 0xF1, 0x80, 0x40, 0x00, 0xF5, 0x00, 0x10, 0xD0, 0xF8, 0x00, 0x39, 0x1B, 0x04, 0x17, 0xD5, 0x0D, 0x49, 0x53, 0x01, -0x03, 0xF1, 0x80, 0x43, 0x01, 0xEB, 0x02, 0x12, 0x03, 0xF5, 0x00, 0x13, 0x01, 0x21, 0xD1, 0x72, 0xC3, 0xF8, 0x34, 0x59, -0xD0, 0xF8, 0x00, 0x39, 0x43, 0xF0, 0x04, 0x43, 0xC0, 0xF8, 0x00, 0x39, 0x00, 0x20, 0x38, 0xBD, 0x01, 0x20, 0x38, 0xBD, -0x02, 0x20, 0x38, 0xBD, 0x05, 0x20, 0x38, 0xBD, 0x6F, 0x26, 0x17, 0x00, 0xC8, 0x27, 0x17, 0x00, 0x93, 0x4B, 0x5A, 0x69, -0x2D, 0xE9, 0xF0, 0x4F, 0x5A, 0x61, 0x9C, 0x69, 0x14, 0x40, 0xE1, 0x04, 0x85, 0xB0, 0x0A, 0xD5, 0x8F, 0x4B, 0xD3, 0xF8, -0xDC, 0x34, 0x98, 0x47, 0x14, 0xF4, 0x00, 0x5A, 0x40, 0xF0, 0xAB, 0x80, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDF, 0xF8, -0x44, 0xA2, 0xA2, 0x04, 0x04, 0xEA, 0x0A, 0x0A, 0x04, 0xF4, 0x80, 0x25, 0x04, 0xF4, 0x00, 0x29, 0x04, 0xF4, 0x00, 0x6B, -0x00, 0xF1, 0x9F, 0x80, 0x00, 0x2D, 0x42, 0xD0, 0x81, 0x4D, 0x83, 0x4E, 0xD5, 0xF8, 0x18, 0x28, 0xD5, 0xF8, 0x1C, 0x38, -0x00, 0x24, 0x02, 0xEA, 0x03, 0x08, 0x01, 0x20, 0x00, 0xFA, 0x04, 0xF3, 0x13, 0xEA, 0x08, 0x0F, 0xE7, 0xB2, 0x2D, 0xD0, -0x00, 0x2C, 0x00, 0xF0, 0xA0, 0x80, 0x63, 0x1E, 0x05, 0xEB, 0x43, 0x13, 0xD3, 0xF8, 0x28, 0x29, 0xC3, 0xF8, 0x28, 0x29, -0xD5, 0xF8, 0x10, 0x18, 0x11, 0x40, 0x11, 0xF0, 0x09, 0x0F, 0x74, 0xD0, 0x16, 0xF8, 0x05, 0x3C, 0xD3, 0xB1, 0x56, 0xF8, -0x0C, 0x3C, 0x01, 0x93, 0xD2, 0x43, 0x56, 0xF8, 0x10, 0x3C, 0x02, 0x93, 0x12, 0xF0, 0x01, 0x03, 0x00, 0x93, 0x40, 0xF0, -0xB6, 0x80, 0x10, 0x22, 0x00, 0x21, 0xA6, 0xF1, 0x10, 0x00, 0xF6, 0xF7, 0x15, 0xF9, 0x6A, 0x4B, 0x03, 0xEB, 0x84, 0x03, -0x1B, 0x6B, 0x1B, 0xB1, 0xDD, 0xE9, 0x00, 0x21, 0x02, 0x98, 0x98, 0x47, 0x04, 0x2F, 0x02, 0xD0, 0x01, 0x34, 0x10, 0x36, -0xC5, 0xE7, 0xB9, 0xF1, 0x00, 0x0F, 0x3C, 0xD0, 0x5E, 0x4D, 0x62, 0x4E, 0xD5, 0xF8, 0x18, 0x78, 0xD5, 0xF8, 0x1C, 0x38, -0xDF, 0xF8, 0x90, 0x81, 0xDF, 0xF8, 0x74, 0x91, 0x1F, 0x40, 0x00, 0x24, 0x4F, 0xF4, 0x80, 0x33, 0xA3, 0x40, 0x3B, 0x42, -0x0C, 0xD0, 0xC4, 0xB1, 0x63, 0x1E, 0x05, 0xEB, 0x43, 0x13, 0xD3, 0xF8, 0x28, 0x2B, 0xC3, 0xF8, 0x28, 0x2B, 0xD5, 0xF8, -0x14, 0x38, 0x13, 0x40, 0xDB, 0x07, 0x5F, 0xD4, 0xE3, 0xB2, 0x04, 0x2B, 0x1B, 0xD0, 0x01, 0x34, 0x4F, 0xF4, 0x80, 0x33, -0xA3, 0x40, 0x3B, 0x42, 0x06, 0xF1, 0x10, 0x06, 0xF4, 0xD0, 0x00, 0x2C, 0xE6, 0xD1, 0xD5, 0xF8, 0x08, 0x1B, 0xC5, 0xF8, -0x08, 0x1B, 0xD5, 0xF8, 0x14, 0x38, 0x0B, 0x40, 0xDA, 0x06, 0x7B, 0xD4, 0x13, 0xF0, 0x29, 0x0F, 0xE9, 0xD0, 0x44, 0x4B, -0x20, 0x46, 0xD3, 0xF8, 0x00, 0x31, 0x98, 0x47, 0xE3, 0xE7, 0xBB, 0xF1, 0x00, 0x0F, 0x03, 0xD0, 0x3F, 0x4B, 0xD3, 0xF8, -0x8C, 0x34, 0x98, 0x47, 0xBA, 0xF1, 0x00, 0x0F, 0xBF, 0xF6, 0x60, 0xAF, 0x3B, 0x4B, 0xD3, 0xF8, 0x90, 0x34, 0x05, 0xB0, -0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x3C, 0x48, 0xFC, 0xF7, 0x56, 0xF9, 0xA4, 0xE7, 0x4F, 0xF0, 0x00, 0x0B, 0xD9, 0x46, -0x5D, 0x46, 0x33, 0x4B, 0xD3, 0xF8, 0x08, 0x38, 0x13, 0xF0, 0x06, 0x0F, 0xC3, 0xF3, 0x47, 0x02, 0x04, 0xD0, 0xD3, 0x07, -0x02, 0xD5, 0x34, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2C, 0x4B, 0x33, 0x4A, 0xC3, 0xF8, 0x00, 0x29, 0xC3, 0xF8, 0x00, 0x2B, -0xFE, 0xF7, 0xF4, 0xFC, 0x4A, 0xE7, 0xD5, 0xF8, 0x08, 0x19, 0xC5, 0xF8, 0x08, 0x19, 0xD5, 0xF8, 0x10, 0x38, 0x0B, 0x40, -0x13, 0xF0, 0x18, 0x0F, 0x2B, 0xD1, 0xDF, 0x07, 0x80, 0xD5, 0x23, 0x4B, 0xD3, 0xF8, 0x00, 0x31, 0x98, 0x47, 0x7B, 0xE7, -0x16, 0xF8, 0x08, 0x3C, 0x00, 0x2B, 0x9B, 0xD0, 0x58, 0xF8, 0x24, 0x30, 0x56, 0xF8, 0x0C, 0x1C, 0x1B, 0x88, 0x02, 0x93, -0x30, 0x46, 0xA3, 0x00, 0x50, 0xF8, 0x10, 0x2D, 0x03, 0x92, 0x01, 0x91, 0x10, 0x22, 0x00, 0x21, 0x00, 0x93, 0xF6, 0xF7, -0x71, 0xF8, 0x00, 0x9B, 0x4B, 0x44, 0x1B, 0x6A, 0x00, 0x2B, 0x85, 0xD0, 0xDD, 0xE9, 0x01, 0x01, 0x00, 0x22, 0x41, 0x1A, -0x03, 0x98, 0x98, 0x47, 0x7E, 0xE7, 0x39, 0x46, 0xFE, 0xF7, 0x8A, 0xFE, 0x45, 0xE7, 0xD5, 0xF8, 0x10, 0x38, 0x23, 0xF0, -0x10, 0x03, 0xC5, 0xF8, 0x10, 0x38, 0x22, 0x46, 0x4F, 0xF4, 0x00, 0x11, 0x20, 0x46, 0xFE, 0xF7, 0xE9, 0xFD, 0x49, 0xE7, -0xD5, 0xF8, 0x14, 0x38, 0x23, 0xF0, 0x10, 0x03, 0xC5, 0xF8, 0x14, 0x38, 0x22, 0x46, 0x4F, 0xF4, 0x00, 0x11, 0x20, 0x46, -0xFE, 0xF7, 0x80, 0xFD, 0x63, 0xE7, 0x00, 0xBF, 0x00, 0x00, 0x20, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x27, 0x17, 0x00, -0x20, 0x26, 0x17, 0x00, 0x08, 0x28, 0x17, 0x00, 0x48, 0x85, 0x15, 0x00, 0x4C, 0x28, 0x17, 0x00, 0x00, 0x80, 0x00, 0x08, -0x00, 0x3C, 0x0C, 0x88, 0x40, 0x60, 0x17, 0x00, 0x38, 0xB9, 0x0C, 0x4A, 0x0C, 0x4B, 0x10, 0x70, 0x18, 0x70, 0x0C, 0x4B, -0x1B, 0x68, 0x5B, 0xB1, 0x18, 0x47, 0x01, 0x28, 0x09, 0xD0, 0x09, 0x4B, 0x02, 0x38, 0x1B, 0x68, 0x01, 0x28, 0x94, 0xBF, -0x02, 0x20, 0x03, 0x20, 0x00, 0x2B, 0xF3, 0xD1, 0x70, 0x47, 0x05, 0x4A, 0x05, 0x4B, 0x10, 0x70, 0x18, 0x70, 0xEA, 0xE7, -0x59, 0x28, 0x17, 0x00, 0x5A, 0x28, 0x17, 0x00, 0x60, 0x28, 0x17, 0x00, 0x5B, 0x28, 0x17, 0x00, 0x5C, 0x28, 0x17, 0x00, -0x00, 0x48, 0x70, 0x47, 0x54, 0x86, 0x15, 0x00, 0x01, 0x28, 0x15, 0xD1, 0x08, 0xB5, 0x0B, 0x4B, 0x1B, 0x68, 0x0B, 0xB1, -0x04, 0x20, 0x98, 0x47, 0x02, 0x22, 0x11, 0x46, 0x4F, 0xF4, 0x00, 0x73, 0x01, 0x20, 0xFE, 0xF7, 0x65, 0xFF, 0x4F, 0xF4, -0x00, 0x73, 0x02, 0x22, 0x01, 0x21, 0x00, 0x20, 0xFE, 0xF7, 0x5E, 0xFF, 0x01, 0x20, 0x08, 0xBD, 0x00, 0x20, 0x70, 0x47, -0x60, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x58, 0x4E, 0xDF, 0xF8, 0x9C, 0xE1, 0x33, 0x88, 0x57, 0x4C, 0x00, 0x2A, -0x03, 0xF1, 0x01, 0x03, 0x0C, 0xBF, 0x02, 0x25, 0x03, 0x25, 0x9B, 0xB2, 0x00, 0x27, 0x33, 0x80, 0x8E, 0xF8, 0x00, 0x50, -0x27, 0x70, 0x9E, 0xF8, 0x00, 0xC0, 0xBC, 0xF1, 0x02, 0x0F, 0x4C, 0xD1, 0x03, 0x29, 0x04, 0x46, 0x0D, 0x46, 0x8E, 0xF8, -0x00, 0x70, 0x55, 0xD9, 0x43, 0x78, 0x4C, 0x4A, 0x07, 0x78, 0x12, 0x78, 0x90, 0xF8, 0x02, 0x80, 0x1B, 0x02, 0x03, 0xF4, -0x70, 0x63, 0x1F, 0x43, 0x00, 0x2A, 0x78, 0xD1, 0xB8, 0xF1, 0x01, 0x0F, 0x64, 0xD0, 0xB8, 0xF1, 0x11, 0x0F, 0x55, 0xD1, -0xDF, 0xF8, 0x44, 0x81, 0x98, 0xF8, 0x9D, 0x27, 0x98, 0xF8, 0x9E, 0x37, 0x9A, 0x42, 0x77, 0xD2, 0x3B, 0x1D, 0xAB, 0x42, -0x02, 0xD0, 0x7B, 0x1D, 0x9D, 0x42, 0x6E, 0xD1, 0x3D, 0x4B, 0xD3, 0xF8, 0x3C, 0x34, 0x98, 0x47, 0x98, 0xF8, 0x9C, 0x37, -0x3B, 0x49, 0x98, 0xF8, 0x9D, 0x27, 0x01, 0x33, 0xA1, 0xFB, 0x03, 0x01, 0x49, 0x09, 0x01, 0xEB, 0x81, 0x01, 0xA3, 0xEB, -0xC1, 0x01, 0x08, 0xEB, 0x01, 0x15, 0x04, 0x34, 0x53, 0x1C, 0x88, 0xF8, 0x9C, 0x17, 0x34, 0x48, 0xC5, 0xF8, 0x20, 0x45, -0x05, 0xF2, 0x1C, 0x51, 0xC5, 0xF8, 0x24, 0x75, 0x88, 0xF8, 0x9D, 0x37, 0x19, 0xF0, 0x22, 0xF8, 0x4F, 0xF4, 0x00, 0x00, -0x18, 0xF0, 0x7C, 0xFF, 0x0B, 0xE0, 0x9E, 0xF8, 0x00, 0x10, 0x2C, 0x48, 0xFC, 0xF7, 0x28, 0xF8, 0x47, 0xF2, 0x30, 0x52, -0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0x18, 0xF0, 0xE1, 0xF9, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x31, 0x88, 0x26, 0x48, -0x89, 0xB2, 0x2A, 0x46, 0xFC, 0xF7, 0x18, 0xF8, 0x24, 0x4B, 0x18, 0x68, 0x20, 0x1A, 0xFD, 0xF7, 0x05, 0xF9, 0x1D, 0x4B, -0xD3, 0xF8, 0x3C, 0x34, 0x98, 0x47, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x41, 0x46, 0x1F, 0x48, 0xFC, 0xF7, 0x08, 0xF8, -0x31, 0x88, 0x1E, 0x48, 0x89, 0xB2, 0x2B, 0x46, 0x3A, 0x46, 0xFC, 0xF7, 0x01, 0xF8, 0xE7, 0xE7, 0xBD, 0x42, 0x02, 0xD0, -0x7B, 0x1C, 0xAB, 0x42, 0x12, 0xD1, 0x11, 0x4D, 0xD5, 0xF8, 0x3C, 0x34, 0x98, 0x47, 0x20, 0x1D, 0xD5, 0xF8, 0x0C, 0x31, -0x98, 0x47, 0x40, 0x20, 0x18, 0xF0, 0x3E, 0xFF, 0xCD, 0xE7, 0x0A, 0x46, 0x4F, 0xF4, 0x00, 0x70, 0x11, 0x49, 0x1A, 0xF0, -0x03, 0xFA, 0x7F, 0xE7, 0x31, 0x88, 0x10, 0x48, 0xDE, 0xE7, 0x31, 0x88, 0x0F, 0x48, 0xDB, 0xE7, 0x0F, 0x48, 0xFB, 0xF7, -0xDF, 0xFF, 0xC5, 0xE7, 0x56, 0x28, 0x17, 0x00, 0x58, 0x28, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xCD, 0xCC, 0xCC, 0xCC, 0xF8, 0x5F, 0x17, 0x00, 0xD0, 0x85, 0x15, 0x00, 0xC0, 0x85, 0x15, 0x00, 0x80, 0x1A, 0x17, 0x00, -0xB0, 0x85, 0x15, 0x00, 0x78, 0x85, 0x15, 0x00, 0x68, 0x85, 0x15, 0x00, 0x70, 0x85, 0x15, 0x00, 0x84, 0x85, 0x15, 0x00, -0x98, 0x85, 0x15, 0x00, 0x59, 0x28, 0x17, 0x00, 0x58, 0x58, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x00, 0x2A, 0x2A, 0x4B, -0x0C, 0xBF, 0x02, 0x21, 0x03, 0x21, 0x19, 0x70, 0x19, 0x78, 0x02, 0x29, 0x3D, 0xD1, 0x27, 0x4C, 0x22, 0x78, 0x00, 0x21, -0x19, 0x70, 0x52, 0xB3, 0x25, 0x4D, 0x26, 0x4F, 0xA5, 0xF1, 0x08, 0x06, 0x0A, 0xE0, 0x01, 0x2A, 0x41, 0x46, 0x38, 0x46, -0x28, 0xD1, 0x13, 0x2B, 0x40, 0x46, 0x01, 0xD0, 0xFD, 0xF7, 0x90, 0xF8, 0x23, 0x78, 0xD3, 0xB1, 0x28, 0x46, 0x18, 0xF0, -0xCD, 0xFF, 0x42, 0x68, 0x23, 0x78, 0xD2, 0xF8, 0x04, 0x80, 0x01, 0x3B, 0x01, 0x46, 0x30, 0x46, 0x23, 0x70, 0x18, 0xF0, -0x7F, 0xFF, 0x98, 0xF8, 0x02, 0x30, 0x1A, 0x09, 0xE3, 0xD1, 0x17, 0x4A, 0x13, 0x88, 0x10, 0x20, 0x01, 0x33, 0x13, 0x80, -0x18, 0xF0, 0xD2, 0xFE, 0x23, 0x78, 0x00, 0x2B, 0xE4, 0xD1, 0x13, 0x4B, 0xD3, 0xF8, 0x44, 0x34, 0x98, 0x47, 0x01, 0x20, -0xBD, 0xE8, 0xF0, 0x81, 0xFB, 0xF7, 0x78, 0xFF, 0x40, 0x46, 0x20, 0x21, 0x1A, 0xF0, 0x1C, 0xFD, 0xD4, 0xE7, 0x19, 0x78, -0x0C, 0x48, 0xFB, 0xF7, 0x6F, 0xFF, 0x47, 0xF2, 0x30, 0x52, 0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0x18, 0xF0, 0x28, 0xF9, -0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x5A, 0x28, 0x17, 0x00, 0x64, 0x60, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, -0xF0, 0x85, 0x15, 0x00, 0x54, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x86, 0x15, 0x00, 0x10, 0x4B, 0x11, 0x49, -0x11, 0x4A, 0x2D, 0xE9, 0xF0, 0x41, 0x05, 0x46, 0x00, 0x68, 0x18, 0x60, 0xDF, 0xF8, 0x44, 0x80, 0x0E, 0x4F, 0x0F, 0x4E, -0x00, 0x23, 0x0B, 0x70, 0x13, 0x70, 0x29, 0x7A, 0xD8, 0xF8, 0x08, 0x31, 0x00, 0x39, 0x18, 0xBF, 0x01, 0x21, 0x38, 0x46, -0x98, 0x47, 0x04, 0x46, 0x01, 0x46, 0x30, 0x46, 0x1A, 0xF0, 0x04, 0xF9, 0x00, 0x2C, 0xF0, 0xD1, 0x20, 0x46, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0xBF, 0x60, 0x28, 0x17, 0x00, 0x59, 0x28, 0x17, 0x00, 0x5A, 0x28, 0x17, 0x00, 0x38, 0x1A, 0x17, 0x00, -0x20, 0x86, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x1D, 0x4D, 0x2B, 0x78, 0xFB, 0xB9, 0xD8, 0xB1, 0x0A, 0x46, -0xC9, 0xB1, 0x1B, 0x4F, 0x3B, 0x78, 0xE3, 0xB9, 0x1A, 0x4C, 0x01, 0x26, 0x3E, 0x70, 0xD4, 0xF8, 0x30, 0x3B, 0x23, 0xF0, -0xFF, 0x53, 0x23, 0xF4, 0xC0, 0x13, 0x01, 0x46, 0xC4, 0xF8, 0x30, 0x3B, 0x30, 0x46, 0xFE, 0xF7, 0x7B, 0xFE, 0x04, 0x46, -0xC8, 0xB9, 0x13, 0x4B, 0x1E, 0x70, 0x2B, 0x78, 0x73, 0xB9, 0x20, 0x46, 0xF8, 0xBD, 0x6F, 0xF0, 0x0A, 0x04, 0xFA, 0xE7, -0x6F, 0xF0, 0x0D, 0x04, 0xF7, 0xE7, 0x39, 0x78, 0x0D, 0x48, 0xFB, 0xF7, 0xFD, 0xFE, 0x6F, 0xF0, 0x02, 0x04, 0xF0, 0xE7, -0x31, 0x46, 0xFE, 0xF7, 0xB3, 0xFC, 0x3C, 0x70, 0x6F, 0xF0, 0x0D, 0x04, 0xE9, 0xE7, 0x01, 0x46, 0x07, 0x48, 0xFB, 0xF7, -0xEF, 0xFE, 0x4F, 0xF0, 0xFF, 0x34, 0xE2, 0xE7, 0x5B, 0x28, 0x17, 0x00, 0x59, 0x28, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, -0x58, 0x28, 0x17, 0x00, 0x30, 0x86, 0x15, 0x00, 0x48, 0x86, 0x15, 0x00, 0xF8, 0xB5, 0x20, 0x4D, 0x2B, 0x78, 0x2B, 0xBB, -0x08, 0xB3, 0x0A, 0x46, 0xF9, 0xB1, 0x1E, 0x4F, 0x3B, 0x78, 0x13, 0xBB, 0x1D, 0x4C, 0x01, 0x26, 0x3E, 0x70, 0xD4, 0xF8, -0x30, 0x3B, 0x23, 0xF0, 0xFF, 0x53, 0x23, 0xF4, 0xC0, 0x13, 0xC4, 0xF8, 0x30, 0x3B, 0xD4, 0xF8, 0x00, 0x38, 0x43, 0xF4, -0x00, 0x53, 0x01, 0x46, 0xC4, 0xF8, 0x00, 0x38, 0x30, 0x46, 0xFE, 0xF7, 0x87, 0xFE, 0x04, 0x46, 0xC8, 0xB9, 0x13, 0x4B, -0x1E, 0x70, 0x2B, 0x78, 0x73, 0xB9, 0x20, 0x46, 0xF8, 0xBD, 0x6F, 0xF0, 0x0A, 0x04, 0xFA, 0xE7, 0x6F, 0xF0, 0x0D, 0x04, -0xF7, 0xE7, 0x39, 0x78, 0x0D, 0x48, 0xFB, 0xF7, 0xAF, 0xFE, 0x6F, 0xF0, 0x02, 0x04, 0xF0, 0xE7, 0x31, 0x46, 0xFE, 0xF7, -0x65, 0xFC, 0x3C, 0x70, 0x6F, 0xF0, 0x0D, 0x04, 0xE9, 0xE7, 0x01, 0x46, 0x07, 0x48, 0xFB, 0xF7, 0xA1, 0xFE, 0x4F, 0xF0, -0xFF, 0x34, 0xE2, 0xE7, 0x5B, 0x28, 0x17, 0x00, 0x59, 0x28, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0x58, 0x28, 0x17, 0x00, -0x30, 0x86, 0x15, 0x00, 0x48, 0x86, 0x15, 0x00, 0xF8, 0xB5, 0x26, 0x4C, 0xFF, 0xF7, 0xFE, 0xFB, 0x23, 0x78, 0x00, 0x2B, -0x42, 0xD1, 0x24, 0x4D, 0x28, 0x46, 0x18, 0xF0, 0xFB, 0xFE, 0xDF, 0xF8, 0x90, 0xC0, 0xC0, 0xB2, 0x8C, 0xF8, 0x00, 0x00, -0x00, 0x28, 0x31, 0xD0, 0x1F, 0x4A, 0x2F, 0x68, 0x42, 0xF2, 0x30, 0x03, 0x01, 0x28, 0xD6, 0x58, 0x28, 0xD0, 0xBD, 0x89, -0xB3, 0x89, 0xAB, 0x42, 0x11, 0xD2, 0x39, 0x46, 0x03, 0x46, 0x03, 0xE0, 0x53, 0xB1, 0x95, 0x89, 0x0E, 0x46, 0x11, 0x46, -0xC2, 0x1A, 0xD2, 0xB2, 0x01, 0x3B, 0xF5, 0xB1, 0x0A, 0x68, 0xDB, 0xB2, 0x00, 0x2A, 0xF3, 0xD1, 0x8C, 0xF8, 0x00, 0x30, -0x0E, 0x46, 0xB3, 0x7B, 0x72, 0x68, 0x79, 0x68, 0x01, 0x3B, 0x02, 0xEB, 0xC3, 0x02, 0x01, 0x20, 0xD3, 0x78, 0x20, 0x70, -0x23, 0xF0, 0x0A, 0x03, 0x43, 0xF0, 0x0A, 0x03, 0xD3, 0x70, 0x02, 0x20, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0x0A, 0xBC, -0x00, 0x2E, 0xEA, 0xD1, 0x6F, 0xF0, 0x61, 0x00, 0xF8, 0xBD, 0x8C, 0xF8, 0x00, 0x20, 0xE4, 0xE7, 0x6F, 0xF0, 0x62, 0x00, -0xF8, 0xBD, 0x00, 0xBF, 0x5A, 0x28, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x64, 0x60, 0x17, 0x00, -0x01, 0x28, 0x07, 0xD0, 0x06, 0x28, 0x07, 0xD0, 0x04, 0x4B, 0x0F, 0x28, 0x0C, 0xBF, 0x18, 0x46, 0x00, 0x20, 0x70, 0x47, -0x02, 0x48, 0x70, 0x47, 0x02, 0x48, 0x70, 0x47, 0x74, 0x86, 0x15, 0x00, 0x80, 0x86, 0x15, 0x00, 0x94, 0x86, 0x15, 0x00, -0x06, 0x28, 0x0B, 0xD8, 0x01, 0x38, 0x05, 0x28, 0x16, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x05, 0x03, 0x13, 0x0F, 0x11, 0x03, -0x09, 0x48, 0x70, 0x47, 0x09, 0x48, 0x70, 0x47, 0x12, 0x30, 0xC0, 0xB2, 0x06, 0x4B, 0x02, 0x28, 0x34, 0xBF, 0x18, 0x46, -0x00, 0x20, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, -0xC4, 0x86, 0x15, 0x00, 0xB4, 0x86, 0x15, 0x00, 0xA0, 0x86, 0x15, 0x00, 0xA8, 0x86, 0x15, 0x00, 0xD8, 0x86, 0x15, 0x00, -0xEC, 0x86, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x1D, 0x4F, 0x1E, 0x48, 0x18, 0xF0, 0xE4, 0xFD, 0x3B, 0x68, 0x1B, 0x89, -0x93, 0xB3, 0xDF, 0xF8, 0x7C, 0x90, 0x1B, 0x4E, 0xDF, 0xF8, 0x78, 0x80, 0xDF, 0xF8, 0x78, 0xB0, 0xDF, 0xF8, 0x78, 0xA0, -0x00, 0x25, 0x0C, 0xE0, 0x21, 0x46, 0x15, 0x48, 0x18, 0xF0, 0xD6, 0xFD, 0x3A, 0x68, 0x33, 0x88, 0x11, 0x89, 0x01, 0x35, -0xAA, 0xB2, 0x01, 0x33, 0x91, 0x42, 0x33, 0x80, 0x1A, 0xD9, 0xB9, 0xF8, 0xD4, 0x10, 0x04, 0x39, 0x89, 0xB2, 0x40, 0x46, -0xFC, 0xF7, 0x58, 0xFC, 0x04, 0x46, 0x00, 0x28, 0xE8, 0xD1, 0xA9, 0xB2, 0x58, 0x46, 0x19, 0xF0, 0x99, 0xFF, 0xDA, 0xF8, -0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDE, 0xDA, 0x07, 0x49, 0x07, 0x48, 0x4F, 0xF4, 0xFB, 0x72, 0x1A, 0xF0, -0x07, 0xFA, 0xD7, 0xE7, 0xBD, 0xE8, 0xF8, 0x8F, 0x78, 0x36, 0x17, 0x00, 0x80, 0x60, 0x17, 0x00, 0x66, 0x28, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0xF0, 0x86, 0x15, 0x00, -0x38, 0x36, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x0C, 0x4C, 0x0C, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0xD2, 0xFD, 0x18, 0xB1, 0x0A, 0x4A, -0x13, 0x88, 0x01, 0x3B, 0x13, 0x80, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x80, 0x60, 0x17, 0x00, -0x66, 0x28, 0x17, 0x00, 0x38, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x28, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0x27, 0x4C, 0x28, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x65, 0xFD, 0x26, 0x4A, -0x26, 0x49, 0x13, 0x88, 0x0D, 0x78, 0x01, 0x33, 0x9B, 0xB2, 0x13, 0x80, 0x24, 0x4A, 0x11, 0x78, 0x9D, 0xB9, 0x49, 0xB9, -0x23, 0x68, 0x33, 0xB1, 0x1C, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, -0x1E, 0x49, 0x09, 0x78, 0x99, 0x42, 0xF1, 0xD8, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0x15, 0x70, 0x1B, 0xE0, 0x00, 0x29, -0xEA, 0xD0, 0x19, 0x49, 0x09, 0x78, 0x99, 0x42, 0xE6, 0xD8, 0x18, 0x4B, 0x00, 0x21, 0x11, 0x70, 0xD3, 0xF8, 0x00, 0x28, -0x22, 0xF4, 0x00, 0x52, 0xC3, 0xF8, 0x00, 0x28, 0xD3, 0xF8, 0x20, 0x2B, 0x8A, 0x42, 0x05, 0xDA, 0xD3, 0xF8, 0x20, 0x2B, -0x42, 0xF0, 0x80, 0x62, 0xC3, 0xF8, 0x20, 0x2B, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0x17, 0xF0, 0xA9, 0xFF, 0x0D, 0x49, -0x4F, 0xF4, 0x00, 0x70, 0x19, 0xF0, 0x4E, 0xFF, 0x0B, 0x4B, 0xD3, 0xF8, 0x3C, 0x34, 0x98, 0x47, 0xC4, 0xE7, 0x00, 0xBF, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x80, 0x60, 0x17, 0x00, 0x66, 0x28, 0x17, 0x00, 0x68, 0x60, 0x17, 0x00, -0x64, 0x28, 0x17, 0x00, 0x88, 0x60, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0x20, 0x87, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xF8, 0xB5, 0x0C, 0x4D, 0x0C, 0x48, 0x18, 0xF0, 0x01, 0xFD, 0x2B, 0x68, 0x9B, 0x88, 0x83, 0xB1, 0x0A, 0x4F, 0x09, 0x4E, -0x00, 0x24, 0x7C, 0x21, 0x38, 0x46, 0xFC, 0xF7, 0x8D, 0xFB, 0x01, 0x46, 0x30, 0x46, 0x18, 0xF0, 0xF7, 0xFC, 0x2B, 0x68, -0x01, 0x34, 0x9A, 0x88, 0xA3, 0xB2, 0x9A, 0x42, 0xF1, 0xD8, 0xF8, 0xBD, 0x78, 0x36, 0x17, 0x00, 0x70, 0x60, 0x17, 0x00, -0xE4, 0x25, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x09, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x09, 0x4C, 0x09, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x1E, 0xFD, 0x23, 0x68, 0x33, 0xB1, -0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x70, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x0A, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, -0xB9, 0xFC, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, -0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x70, 0x60, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x48, -0xFF, 0xF7, 0x5E, 0xFD, 0x03, 0x48, 0x19, 0xF0, 0x7B, 0xFE, 0x01, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0xFC, 0x87, 0x15, 0x00, -0x28, 0x87, 0x15, 0x00, 0x70, 0xB5, 0x3C, 0x4D, 0x3C, 0x4C, 0x2A, 0x68, 0x3C, 0x49, 0x12, 0x69, 0x3C, 0x4B, 0x22, 0x60, -0x02, 0xF1, 0x40, 0x06, 0x00, 0x24, 0x0E, 0x60, 0x3A, 0x4E, 0x98, 0x60, 0xC3, 0xE9, 0x00, 0x44, 0x21, 0x46, 0x10, 0x46, -0x4F, 0xF4, 0xA0, 0x72, 0xC3, 0xE9, 0x04, 0x44, 0xDC, 0x60, 0xB4, 0x81, 0xF5, 0xF7, 0xEC, 0xFB, 0x2B, 0x68, 0x34, 0x49, -0x58, 0x69, 0x34, 0x4A, 0x34, 0x4B, 0x08, 0x60, 0x21, 0x46, 0x00, 0xF1, 0x08, 0x04, 0x14, 0x60, 0x00, 0xF1, 0x10, 0x02, -0x1A, 0x60, 0x00, 0xF1, 0x18, 0x02, 0x5A, 0x60, 0x00, 0xF1, 0x20, 0x02, 0x9A, 0x60, 0x2E, 0x4C, 0x00, 0xF1, 0x28, 0x02, -0xDA, 0x60, 0x00, 0xF1, 0x30, 0x03, 0x4F, 0xF4, 0x4B, 0x62, 0x23, 0x60, 0xF5, 0xF7, 0xCE, 0xFB, 0x29, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x2E, 0xDB, 0x27, 0x4B, 0x28, 0x49, 0xB3, 0xF8, 0xD4, 0x20, 0x0C, 0x68, 0xB3, 0xF8, -0xD6, 0x00, 0xB3, 0xF8, 0xE6, 0x10, 0x25, 0x4D, 0x25, 0x4E, 0x12, 0x1B, 0x25, 0x4C, 0x04, 0x3A, 0x22, 0x60, 0x04, 0x38, -0x24, 0x4C, 0x30, 0x60, 0x05, 0xFB, 0x01, 0xF1, 0x93, 0xF8, 0xE0, 0x00, 0x22, 0x4D, 0x20, 0x70, 0x22, 0x4A, 0x93, 0xF8, -0xE1, 0x00, 0x28, 0x70, 0x93, 0xF8, 0xE2, 0x50, 0x20, 0x48, 0x15, 0x70, 0x20, 0x4C, 0x21, 0x4A, 0x93, 0xF8, 0xE3, 0x50, -0x93, 0xF8, 0xE4, 0x30, 0x03, 0x70, 0x1F, 0x4B, 0x25, 0x70, 0x91, 0x42, 0xD4, 0xBF, 0x19, 0x60, 0x1A, 0x60, 0x01, 0x20, -0x70, 0xBD, 0x2B, 0x68, 0x9B, 0x69, 0xB3, 0xF5, 0x4B, 0x6F, 0xCB, 0xD2, 0x19, 0x49, 0x1A, 0x48, 0x40, 0xF2, 0xF2, 0x22, -0x1A, 0xF0, 0x76, 0xF8, 0xC4, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, 0x58, 0x60, 0x17, 0x00, -0xA4, 0x60, 0x17, 0x00, 0x8C, 0x60, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, 0x40, 0x60, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, -0x54, 0x60, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x80, 0x1A, 0x17, 0x00, 0x40, 0x42, 0x0F, 0x00, -0x9C, 0x60, 0x17, 0x00, 0x78, 0x60, 0x17, 0x00, 0x7C, 0x60, 0x17, 0x00, 0x88, 0x60, 0x17, 0x00, 0xA0, 0x60, 0x17, 0x00, -0x68, 0x60, 0x17, 0x00, 0xA1, 0x60, 0x17, 0x00, 0xFF, 0xA2, 0xE1, 0x11, 0x6C, 0x60, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x3C, 0x87, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x43, 0x7E, 0x07, 0x7E, 0x09, 0x2B, 0x05, 0x46, 0x09, 0xD8, 0x49, 0x4A, -0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x25, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0x81, 0x80, 0x6B, 0x8B, -0xDF, 0xF8, 0x30, 0x81, 0x1A, 0x07, 0x5A, 0xD4, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x83, 0x93, 0xF8, 0x64, 0x30, -0x00, 0x2B, 0x73, 0xD0, 0x3E, 0x4B, 0xAE, 0x7D, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x63, 0xDB, 0x3C, 0x48, -0x18, 0xF0, 0x0C, 0xFC, 0x04, 0x46, 0x00, 0x28, 0x4C, 0xD0, 0x3A, 0x48, 0xE1, 0x8B, 0x83, 0x5D, 0xE2, 0x6C, 0x4F, 0xF0, -0x00, 0x09, 0x01, 0x33, 0x21, 0xF0, 0x01, 0x01, 0x83, 0x55, 0xE1, 0x83, 0xC4, 0xF8, 0x44, 0x90, 0x29, 0x46, 0xC2, 0xF8, -0x10, 0x90, 0x20, 0x1D, 0x1C, 0x22, 0xC4, 0xF8, 0x2C, 0x90, 0x2C, 0xF0, 0xA9, 0xFA, 0x30, 0x4B, 0xE1, 0x8B, 0x1B, 0x68, -0x84, 0xF8, 0x42, 0x90, 0xEB, 0x1A, 0x04, 0x3B, 0x21, 0xF4, 0x00, 0x42, 0x22, 0xF0, 0x02, 0x02, 0xA3, 0x64, 0x0B, 0x07, -0xC4, 0xF8, 0x24, 0x90, 0xC4, 0xF8, 0x50, 0x90, 0xE2, 0x83, 0x29, 0xD4, 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, -0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x23, 0x49, 0xA0, 0x88, 0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, -0x23, 0x20, 0x02, 0x44, 0x41, 0xF8, 0x23, 0x20, 0xA4, 0x20, 0x00, 0xFB, 0x07, 0x60, 0x99, 0x30, 0x21, 0x46, 0x08, 0xEB, -0xC0, 0x00, 0xBD, 0xE8, 0xF8, 0x43, 0x18, 0xF0, 0x7F, 0xBB, 0x16, 0x48, 0x18, 0xF0, 0xC0, 0xFB, 0x05, 0x26, 0x04, 0x46, -0x00, 0x28, 0xB2, 0xD1, 0x13, 0x4B, 0x16, 0x48, 0x99, 0x5D, 0xFB, 0xF7, 0x83, 0xFB, 0xFE, 0xE7, 0x4F, 0xF4, 0xA4, 0x60, -0x00, 0xFB, 0x07, 0x80, 0x21, 0x46, 0x00, 0xF5, 0xA3, 0x60, 0xBD, 0xE8, 0xF8, 0x43, 0x18, 0xF0, 0x67, 0xBB, 0x05, 0x2E, -0x99, 0xD9, 0x0E, 0x49, 0x0E, 0x48, 0x40, 0xF2, 0x5F, 0x32, 0x19, 0xF0, 0xB3, 0xFF, 0x92, 0xE7, 0x07, 0x4B, 0x18, 0x68, -0x28, 0x1A, 0x04, 0x38, 0xBD, 0xE8, 0xF8, 0x43, 0xFC, 0xF7, 0x58, 0xBC, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x20, 0x58, 0x17, 0x00, 0x74, 0x28, 0x17, 0x00, 0x80, 0x1A, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x60, 0x87, 0x15, 0x00, -0x70, 0x79, 0x15, 0x00, 0x88, 0x82, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x48, 0x81, -0xDF, 0xF8, 0x48, 0x91, 0xDF, 0xF8, 0x48, 0xA1, 0x59, 0xE0, 0x47, 0x48, 0x18, 0xF0, 0x7A, 0xFB, 0x04, 0x46, 0xDF, 0xF8, -0x40, 0xE1, 0x1C, 0x22, 0x29, 0x46, 0x04, 0x30, 0x00, 0x2C, 0x63, 0xD0, 0xB4, 0xF8, 0x1E, 0xB0, 0x1E, 0xF8, 0x07, 0xC0, -0xE3, 0x6C, 0x66, 0x64, 0x2B, 0xF0, 0x01, 0x0B, 0x0C, 0xF1, 0x01, 0x0C, 0xA4, 0xF8, 0x1E, 0xB0, 0x1E, 0x61, 0xE6, 0x62, -0x0E, 0xF8, 0x07, 0xC0, 0x2C, 0xF0, 0x16, 0xFA, 0x95, 0xF8, 0x20, 0x20, 0xE3, 0x8B, 0x38, 0x48, 0x12, 0xF0, 0x01, 0x0F, -0x14, 0xBF, 0x4F, 0xF4, 0x00, 0x52, 0x4F, 0xF4, 0x08, 0x52, 0x2A, 0x61, 0x84, 0xF8, 0x42, 0x60, 0xC5, 0xE9, 0x05, 0x66, -0x62, 0x7F, 0x10, 0x32, 0x92, 0x02, 0x45, 0xF8, 0x18, 0x2C, 0x21, 0x7F, 0x26, 0x65, 0xA4, 0x22, 0x99, 0x37, 0x23, 0xF4, -0x00, 0x43, 0x12, 0xFB, 0x01, 0x77, 0x23, 0xF0, 0x02, 0x03, 0x4C, 0x3D, 0xA5, 0x64, 0x00, 0xEB, 0xC7, 0x00, 0xE3, 0x83, -0x21, 0x46, 0x18, 0xF0, 0xF5, 0xFA, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x24, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x24, 0x4C, 0x24, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x2A, 0xFB, 0x98, 0xF8, 0x11, 0x35, -0x22, 0x68, 0x01, 0x3B, 0x88, 0xF8, 0x11, 0x35, 0x3A, 0xBB, 0xD8, 0xF8, 0x14, 0x35, 0x00, 0x26, 0xDB, 0xB1, 0xD9, 0xF8, -0x00, 0x20, 0x5D, 0x68, 0xB2, 0xF9, 0x00, 0x30, 0xAF, 0x7D, 0x00, 0x2B, 0x99, 0xDA, 0x05, 0x2F, 0x97, 0xD9, 0x18, 0x49, -0x4F, 0xF4, 0x66, 0x72, 0x50, 0x46, 0x19, 0xF0, 0x1F, 0xFF, 0x90, 0xE7, 0x15, 0x48, 0x1E, 0xF8, 0x07, 0x10, 0xFB, 0xF7, -0xD5, 0xFA, 0x14, 0x4B, 0x18, 0x68, 0x28, 0x1A, 0x04, 0x38, 0xFC, 0xF7, 0xC1, 0xFB, 0x20, 0x20, 0x18, 0xF0, 0x3E, 0xFA, -0xBD, 0xE8, 0xF8, 0x4F, 0x40, 0x20, 0x18, 0xF0, 0x15, 0xBA, 0x08, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0x22, 0x60, 0x00, 0x2A, -0x7F, 0xF4, 0x74, 0xAF, 0x00, 0x2B, 0x3F, 0xF4, 0x71, 0xAF, 0x62, 0xB6, 0x6E, 0xE7, 0x00, 0xBF, 0x20, 0x58, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x6C, 0x5D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x60, 0x87, 0x15, 0x00, 0x80, 0x1A, 0x17, 0x00, 0x58, 0x58, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x82, 0x15, 0x00, -0x74, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0xB8, 0x90, 0x29, 0x4D, 0x2A, 0x4F, 0xDF, 0xF8, 0xAC, 0x80, -0x29, 0x4E, 0x20, 0xE0, 0x5C, 0x68, 0x20, 0x46, 0xFA, 0xF7, 0x1E, 0xFB, 0x38, 0x68, 0x20, 0x1A, 0x04, 0x38, 0xFC, 0xF7, -0x81, 0xFB, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xD9, 0xF8, -0x00, 0x30, 0x30, 0x46, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x18, 0xF0, 0xB3, 0xFA, 0x95, 0xF8, 0x9D, 0x37, 0xD9, 0xF8, -0x00, 0x20, 0x01, 0x3B, 0x85, 0xF8, 0x9D, 0x37, 0x0A, 0xBB, 0xD5, 0xF8, 0xA0, 0x37, 0x00, 0x2B, 0xDA, 0xD1, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x14, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x4F, 0xF4, -0x00, 0x00, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x18, 0xF0, 0xD4, 0xF9, 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x0D, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x01, 0x3A, -0xD8, 0xF8, 0x00, 0x30, 0xC9, 0xF8, 0x00, 0x20, 0x00, 0x2A, 0xB3, 0xD1, 0x00, 0x2B, 0xB1, 0xD0, 0x62, 0xB6, 0xAF, 0xE7, -0x58, 0x58, 0x17, 0x00, 0x80, 0x1A, 0x17, 0x00, 0xF8, 0x5F, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x0E, 0x4B, 0x10, 0xB5, 0xD3, 0xF8, 0x90, 0x32, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0A, 0x4C, 0x23, 0x68, 0x10, 0x20, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x9E, 0xF9, -0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, -0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xF8, 0xB5, 0x16, 0x4C, 0x16, 0x4E, 0x17, 0x4F, -0x14, 0x4D, 0x15, 0xE0, 0x58, 0x68, 0xFC, 0xF7, 0x05, 0xFB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, -0x01, 0x23, 0x33, 0x60, 0x3B, 0x68, 0x28, 0x46, 0x01, 0x33, 0x3B, 0x60, 0x18, 0xF0, 0x3A, 0xFA, 0x0E, 0x4A, 0x39, 0x68, -0x13, 0x78, 0x01, 0x3B, 0x13, 0x70, 0x39, 0xB9, 0x23, 0x68, 0x00, 0x2B, 0xE6, 0xD1, 0xBD, 0xE8, 0xF8, 0x40, 0x08, 0x20, -0x18, 0xF0, 0x6A, 0xB9, 0x01, 0x39, 0x33, 0x68, 0x39, 0x60, 0x00, 0x29, 0xDA, 0xD1, 0x00, 0x2B, 0xD8, 0xD0, 0x62, 0xB6, -0xD6, 0xE7, 0x00, 0xBF, 0x94, 0x4E, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x8E, 0x4E, 0x17, 0x00, -0x59, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x67, 0xD1, 0x2D, 0xE9, 0xF0, 0x47, 0x57, 0x4D, 0x2B, 0x78, 0x00, 0x2B, 0x47, 0xD1, -0x56, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x5B, 0xD1, 0x55, 0x49, 0x56, 0x4A, 0x09, 0x78, 0x12, 0x88, 0x91, 0x42, 0x5E, 0xD2, -0x54, 0x4B, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, 0x04, 0x46, 0x00, 0x28, 0x78, 0xD0, 0x2B, 0x78, 0x00, 0x2B, -0x4D, 0xD0, 0x4C, 0x4B, 0xDF, 0xF8, 0x60, 0xA1, 0x1B, 0x78, 0x4E, 0x4F, 0xDA, 0xF8, 0x00, 0x00, 0x00, 0x2B, 0x7B, 0xD1, -0x4C, 0x4B, 0x39, 0x68, 0xD3, 0xF8, 0x40, 0x34, 0x20, 0x44, 0x98, 0x47, 0x00, 0x28, 0x39, 0xD0, 0x01, 0x46, 0x49, 0x48, -0xDF, 0xF8, 0x08, 0x91, 0xDF, 0xF8, 0x18, 0x81, 0xFB, 0xF7, 0xAE, 0xF9, 0x05, 0x26, 0x2B, 0x78, 0x00, 0x2B, 0x48, 0xD1, -0xDA, 0xF8, 0x00, 0x00, 0xD8, 0xF8, 0x40, 0x34, 0x39, 0x68, 0x20, 0x44, 0x98, 0x47, 0x28, 0xB3, 0x01, 0x3E, 0xF2, 0xD1, -0x05, 0x21, 0x3F, 0x48, 0xFB, 0xF7, 0x9C, 0xF9, 0x20, 0x46, 0xFC, 0xF7, 0x8B, 0xFA, 0xBD, 0xE8, 0xF0, 0x47, 0x04, 0x20, -0x18, 0xF0, 0xE2, 0xB8, 0x34, 0x4B, 0x1B, 0x88, 0x00, 0x2B, 0x46, 0xD0, 0x31, 0x4A, 0x12, 0x78, 0x9A, 0x42, 0xB9, 0xD3, -0x36, 0x4A, 0x2E, 0x4B, 0x12, 0x68, 0x01, 0x21, 0x19, 0x70, 0x00, 0x2A, 0x47, 0xD1, 0x34, 0x4B, 0x34, 0x49, 0x1A, 0x88, -0x4F, 0xF4, 0x00, 0x70, 0x92, 0xB2, 0x19, 0xF0, 0x97, 0xFB, 0xA9, 0xE7, 0xBD, 0xE8, 0xF0, 0x87, 0x70, 0x47, 0xDF, 0xF8, -0xC8, 0xA0, 0x28, 0x4F, 0xDA, 0xF8, 0x00, 0x00, 0xB4, 0xE7, 0x1A, 0x78, 0x00, 0x2A, 0x9D, 0xD1, 0x28, 0x4A, 0x12, 0x68, -0x01, 0x21, 0x19, 0x70, 0x92, 0xBB, 0x27, 0x4B, 0x27, 0x49, 0x1A, 0x88, 0xBD, 0xE8, 0xF0, 0x47, 0x4F, 0xF4, 0x00, 0x70, -0x92, 0xB2, 0x19, 0xF0, 0x7B, 0xBB, 0x99, 0xF8, 0x00, 0x30, 0xDA, 0xF8, 0x00, 0x00, 0x2B, 0xB9, 0xD8, 0xF8, 0x40, 0x34, -0x39, 0x68, 0x20, 0x44, 0x98, 0x47, 0xB2, 0xE7, 0x39, 0x68, 0x20, 0x44, 0xFF, 0xF7, 0x72, 0xFA, 0xAD, 0xE7, 0x04, 0x20, -0x18, 0xF0, 0x9C, 0xF8, 0xBD, 0xE8, 0xF0, 0x47, 0x19, 0x48, 0xFB, 0xF7, 0x49, 0xB9, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x49, -0x4F, 0xF4, 0x00, 0x70, 0x19, 0xF0, 0x5C, 0xBB, 0x39, 0x68, 0x20, 0x44, 0xFF, 0xF7, 0x5E, 0xFA, 0x84, 0xE7, 0x40, 0xF2, -0x1F, 0x40, 0x17, 0xF0, 0xF9, 0xFA, 0xB2, 0xE7, 0x40, 0xF2, 0x1F, 0x40, 0x17, 0xF0, 0xF4, 0xFA, 0xC7, 0xE7, 0x00, 0xBF, -0x58, 0x28, 0x17, 0x00, 0x68, 0x60, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, 0x7C, 0x60, 0x17, 0x00, 0x66, 0x28, 0x17, 0x00, -0xA4, 0x60, 0x17, 0x00, 0x78, 0x60, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x8C, 0x87, 0x15, 0x00, 0xAC, 0x87, 0x15, 0x00, -0x6C, 0x60, 0x17, 0x00, 0x56, 0x28, 0x17, 0x00, 0x7C, 0x87, 0x15, 0x00, 0x98, 0x87, 0x15, 0x00, 0x84, 0x87, 0x15, 0x00, -0x80, 0x1A, 0x17, 0x00, 0x08, 0xB5, 0x0F, 0x48, 0x19, 0xF0, 0xD8, 0xFA, 0x0E, 0x4B, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, -0x98, 0x47, 0x80, 0xB1, 0x0C, 0x4B, 0x0D, 0x49, 0x1A, 0x68, 0x0D, 0x4B, 0x09, 0x68, 0xD3, 0xF8, 0x40, 0x34, 0x10, 0x44, -0x98, 0x47, 0x01, 0x1E, 0x00, 0xDB, 0x08, 0xBD, 0xBD, 0xE8, 0x08, 0x40, 0x08, 0x48, 0xFB, 0xF7, 0xF7, 0xB8, 0xBD, 0xE8, -0x08, 0x40, 0x07, 0x48, 0xFB, 0xF7, 0xF2, 0xB8, 0xC0, 0x87, 0x15, 0x00, 0xA4, 0x60, 0x17, 0x00, 0x80, 0x1A, 0x17, 0x00, -0x78, 0x60, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xCC, 0x87, 0x15, 0x00, 0xE4, 0x87, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x20, -0x18, 0xF0, 0x52, 0xF8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0x09, 0x4C, 0x0A, 0x4A, 0x23, 0x68, 0xD2, 0xF8, 0x3C, 0x24, 0x01, 0x33, 0x23, 0x60, 0x90, 0x47, 0x23, 0x68, 0x33, 0xB1, -0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x11, 0x4D, 0x11, 0x4F, 0x28, 0x68, 0x00, 0xF5, 0x0D, 0x70, -0x18, 0xF0, 0xA4, 0xF8, 0x28, 0x68, 0x00, 0xF5, 0x0F, 0x70, 0x18, 0xF0, 0x9F, 0xF8, 0x3B, 0x68, 0x1B, 0x89, 0x93, 0xB1, -0x0B, 0x4E, 0x00, 0x24, 0x4F, 0xF4, 0xD7, 0x61, 0x30, 0x46, 0xFB, 0xF7, 0x2B, 0xFF, 0x01, 0x46, 0x28, 0x68, 0x00, 0xF5, -0x0D, 0x70, 0x18, 0xF0, 0x93, 0xF8, 0x3B, 0x68, 0x01, 0x34, 0x1A, 0x89, 0xA3, 0xB2, 0x9A, 0x42, 0xEE, 0xD8, 0xF8, 0xBD, -0x00, 0x38, 0x18, 0x00, 0x78, 0x36, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x12, 0x4A, -0x01, 0x46, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0E, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4C, 0x0E, 0x4A, 0x23, 0x68, 0x10, 0x68, 0x01, 0x33, 0x00, 0xF5, 0x0D, 0x70, 0x23, 0x60, -0x18, 0xF0, 0x6C, 0xF8, 0x23, 0x68, 0x33, 0xB1, 0x06, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x02, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x10, 0xBD, 0x00, 0xBF, 0x4C, 0x40, 0x04, 0x40, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x00, 0x38, 0x18, 0x00, 0x08, 0xB5, 0x03, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0x19, 0xF0, 0x7A, 0xFA, -0x01, 0x20, 0x08, 0xBD, 0x08, 0x88, 0x15, 0x00, 0x05, 0x4A, 0x06, 0x49, 0x00, 0x23, 0xC2, 0xE9, 0x02, 0x03, 0xC2, 0xE9, -0x04, 0x33, 0xC2, 0xE9, 0x00, 0x33, 0x8B, 0x81, 0x01, 0x20, 0x70, 0x47, 0xBC, 0x60, 0x17, 0x00, 0xD4, 0x60, 0x17, 0x00, -0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x0C, 0x92, 0xDF, 0xF8, 0x0C, 0x82, 0xD9, 0xF8, 0x14, 0x35, 0x00, 0x2B, 0x00, 0xF0, -0x8F, 0x80, 0xDF, 0xF8, 0xE8, 0xA1, 0xDF, 0xF8, 0x00, 0xB2, 0x78, 0xE0, 0x71, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, -0x06, 0x12, 0x92, 0xF8, 0x64, 0x20, 0x00, 0x2A, 0x00, 0xF0, 0xB2, 0x80, 0x6D, 0x4A, 0x1F, 0x7A, 0x13, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xA1, 0x80, 0x6A, 0x48, 0x18, 0xF0, 0x5B, 0xF8, 0x04, 0x46, 0x00, 0x28, 0x6C, 0xD0, -0xC2, 0x8B, 0xC1, 0x6C, 0x1A, 0xF8, 0x07, 0xC0, 0x00, 0x23, 0x22, 0xF0, 0x01, 0x02, 0xC2, 0x83, 0x43, 0x64, 0x0C, 0xF1, -0x01, 0x0C, 0x0B, 0x61, 0x1C, 0x22, 0xC3, 0x62, 0x29, 0x46, 0x04, 0x30, 0x0A, 0xF8, 0x07, 0xC0, 0x2B, 0xF0, 0xFA, 0xFE, -0xE2, 0x8B, 0xDB, 0xF8, 0x00, 0x10, 0x6D, 0x1A, 0xC2, 0xF3, 0x0E, 0x01, 0x00, 0x23, 0xE1, 0x83, 0x11, 0x07, 0x84, 0xF8, -0x42, 0x30, 0x23, 0x65, 0xA5, 0x64, 0x6F, 0xD4, 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, -0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x53, 0x49, 0xA0, 0x88, 0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x02, 0x44, -0x41, 0xF8, 0x23, 0x20, 0xA4, 0x20, 0x00, 0xFB, 0x06, 0x76, 0x4A, 0x48, 0x99, 0x36, 0x21, 0x46, 0x00, 0xEB, 0xC6, 0x00, -0x17, 0xF0, 0xD6, 0xFF, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x48, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0xD8, 0xF8, 0x00, 0x30, 0x46, 0x48, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x18, 0xF0, 0x0A, 0xF8, 0x99, 0xF8, 0x11, 0x35, -0xD8, 0xF8, 0x00, 0x20, 0x01, 0x3B, 0x89, 0xF8, 0x11, 0x35, 0x3A, 0xB1, 0x3E, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC8, 0xF8, -0x00, 0x20, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xD9, 0xF8, 0x14, 0x35, 0x83, 0xB1, 0x5D, 0x68, 0x6A, 0x8B, 0x2E, 0x7E, -0x14, 0x07, 0x81, 0xD5, 0x34, 0x48, 0x17, 0xF0, 0xEF, 0xFF, 0x05, 0x27, 0x04, 0x46, 0x00, 0x28, 0x92, 0xD1, 0x35, 0x4B, -0x35, 0x48, 0xD9, 0x5D, 0xFA, 0xF7, 0xB2, 0xFF, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2E, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x20, 0x20, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x17, 0xF0, 0x14, 0xFF, -0x40, 0x20, 0x17, 0xF0, 0xED, 0xFE, 0xD8, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x25, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, -0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, 0x24, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, 0x21, 0x46, -0x00, 0xFB, 0x06, 0x30, 0x17, 0xF0, 0x7A, 0xFF, 0xA2, 0xE7, 0x05, 0x2F, 0x7F, 0xF6, 0x5C, 0xAF, 0x1F, 0x49, 0x20, 0x48, -0xB8, 0x22, 0x19, 0xF0, 0xC5, 0xFB, 0x55, 0xE7, 0xDB, 0xF8, 0x00, 0x00, 0x28, 0x1A, 0xFC, 0xF7, 0x6D, 0xF8, 0xEF, 0xF3, -0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x12, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x11, 0x48, -0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x17, 0xF0, 0x9F, 0xFF, 0x99, 0xF8, 0x11, 0x25, 0xD8, 0xF8, 0x00, 0x30, 0x01, 0x3A, -0x89, 0xF8, 0x11, 0x25, 0x00, 0x2B, 0x9B, 0xD0, 0x08, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x00, 0x2B, -0x94, 0xD1, 0x00, 0x2A, 0x92, 0xD0, 0x90, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x20, 0x58, 0x17, 0x00, -0x7C, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x5D, 0x17, 0x00, 0x74, 0x28, 0x17, 0x00, 0x1C, 0x88, 0x15, 0x00, -0x30, 0x8D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x88, 0x82, 0x15, 0x00, 0x58, 0x58, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x84, 0x1A, 0x17, 0x00, 0x70, 0x47, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, 0x04, 0x20, 0x17, 0xF0, -0xA5, 0xBE, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x43, 0xD0, 0xF8, 0xA8, 0x44, 0xD1, 0xF8, 0xB0, 0x50, 0x07, 0x46, 0x0E, 0x46, -0x00, 0x2C, 0x00, 0xF0, 0x8F, 0x80, 0xA2, 0x49, 0xA2, 0x4A, 0x4F, 0xF0, 0xFF, 0x33, 0x0B, 0x60, 0x13, 0x60, 0x94, 0xF8, -0x60, 0x80, 0xB8, 0xF1, 0x04, 0x0F, 0x00, 0xF2, 0xB9, 0x81, 0xDF, 0xE8, 0x18, 0xF0, 0x49, 0x00, 0xF3, 0x00, 0x45, 0x01, -0x03, 0x01, 0x05, 0x00, 0x9A, 0x4B, 0x62, 0x6E, 0x1A, 0x60, 0xA2, 0x6E, 0x5A, 0x60, 0xE2, 0x6E, 0x9A, 0x60, 0x22, 0x6F, -0xDA, 0x60, 0x22, 0x6D, 0xDA, 0x61, 0x62, 0x6D, 0x1A, 0x62, 0xA2, 0x6D, 0x5A, 0x62, 0x94, 0x4B, 0x94, 0x4A, 0xE1, 0x6D, -0x1B, 0x68, 0x11, 0x60, 0x1B, 0x78, 0x13, 0xF0, 0x02, 0x0F, 0xC1, 0x46, 0x4F, 0xF4, 0x80, 0x63, 0x4F, 0xF4, 0x80, 0x51, -0x4F, 0xF0, 0x01, 0x08, 0x48, 0xD0, 0x97, 0xF8, 0x63, 0xC0, 0x94, 0xF8, 0x62, 0x00, 0x8C, 0x4A, 0x43, 0xEA, 0x0C, 0x13, -0x43, 0xEA, 0x00, 0x43, 0x0B, 0x43, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x5C, 0x00, 0xFC, 0xD4, 0x00, 0x2D, -0x48, 0xD0, 0x81, 0x4B, 0x7F, 0x49, 0xD6, 0xF8, 0x26, 0x00, 0x72, 0x8D, 0x08, 0x60, 0x1A, 0x60, 0x95, 0xF8, 0x60, 0x30, -0x04, 0x2B, 0x00, 0xF2, 0x68, 0x81, 0xDF, 0xE8, 0x13, 0xF0, 0x78, 0x00, 0x41, 0x00, 0xD4, 0x00, 0xCF, 0x00, 0xC5, 0x00, -0x00, 0x21, 0x4F, 0xF0, 0x01, 0x09, 0x77, 0x4B, 0x62, 0x6E, 0x1A, 0x60, 0xA2, 0x6E, 0x5A, 0x60, 0xE2, 0x6E, 0x9A, 0x60, -0x22, 0x6F, 0xDA, 0x60, 0x73, 0x4B, 0x1B, 0x68, 0xB9, 0xF1, 0x02, 0x0F, 0x1B, 0x78, 0x40, 0xF0, 0xF2, 0x80, 0xD8, 0x07, -0x40, 0xF1, 0x20, 0x81, 0x71, 0x48, 0x22, 0x6D, 0x02, 0x60, 0x62, 0x6D, 0x42, 0x60, 0xA2, 0x6D, 0x82, 0x60, 0xE2, 0x6D, -0xC2, 0x60, 0x9B, 0x07, 0x00, 0xF1, 0xFF, 0x80, 0x4F, 0xF4, 0x00, 0x73, 0x97, 0xF8, 0x63, 0xC0, 0x94, 0xF8, 0x62, 0x00, -0x67, 0x4A, 0x43, 0xEA, 0x0C, 0x13, 0x43, 0xEA, 0x00, 0x43, 0x0B, 0x43, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, -0x58, 0x00, 0xFC, 0xD4, 0x00, 0x2D, 0xB6, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0xA1, 0x46, 0x4F, 0xF0, 0x01, 0x08, 0xAE, 0xE7, -0x4F, 0xF0, 0x02, 0x09, 0x59, 0x4B, 0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, 0xEA, 0x6E, 0x9A, 0x60, 0x2A, 0x6F, -0xDA, 0x60, 0xB9, 0xF1, 0x04, 0x0F, 0x40, 0xF0, 0x96, 0x80, 0x57, 0x4B, 0x2A, 0x6D, 0x1A, 0x60, 0x6A, 0x6D, 0x5A, 0x60, -0xAA, 0x6D, 0x9A, 0x60, 0x50, 0x4B, 0x51, 0x4A, 0xE9, 0x6D, 0x1B, 0x68, 0x11, 0x60, 0x1B, 0x78, 0x99, 0x07, 0x40, 0xF1, -0xD6, 0x80, 0x4F, 0xEA, 0x08, 0x38, 0x4F, 0xF4, 0x80, 0x69, 0x97, 0xF8, 0x63, 0x30, 0x95, 0xF8, 0x62, 0x10, 0x4A, 0x4A, -0x1B, 0x01, 0x43, 0xEA, 0x01, 0x43, 0x43, 0xEA, 0x08, 0x03, 0x43, 0xEA, 0x09, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, -0x13, 0x68, 0x58, 0x00, 0xFC, 0xD4, 0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF0, 0x00, 0x08, 0x4F, 0xF0, 0x01, 0x09, 0x3D, 0x4B, -0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, 0xEA, 0x6E, 0x9A, 0x60, 0x2A, 0x6F, 0xDA, 0x60, 0xB9, 0xF1, 0x02, 0x0F, -0x62, 0xD1, 0x38, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0xDA, 0x07, 0x40, 0xF1, 0xB3, 0x80, 0x38, 0x4A, 0x29, 0x6D, 0x11, 0x60, -0x69, 0x6D, 0x51, 0x60, 0xA9, 0x6D, 0x91, 0x60, 0xE9, 0x6D, 0xD1, 0x60, 0x9A, 0x07, 0x7A, 0xD4, 0x4F, 0xF4, 0x00, 0x79, -0x97, 0xF8, 0x63, 0x30, 0x95, 0xF8, 0x62, 0x10, 0x2E, 0x4A, 0x1B, 0x01, 0x43, 0xEA, 0x01, 0x43, 0x43, 0xEA, 0x08, 0x03, -0x43, 0xEA, 0x09, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x59, 0x00, 0xFC, 0xD4, 0xBD, 0xE8, 0xF8, 0x83, -0x4F, 0xF0, 0x02, 0x09, 0x22, 0x4B, 0x62, 0x6E, 0x1A, 0x60, 0xA2, 0x6E, 0x5A, 0x60, 0xE2, 0x6E, 0x9A, 0x60, 0x22, 0x6F, -0xDA, 0x60, 0x4F, 0xF4, 0x80, 0x51, 0x4F, 0xF0, 0x01, 0x08, 0x51, 0xE7, 0x4F, 0xF0, 0x01, 0x09, 0xC8, 0x46, 0x4F, 0xF4, -0x80, 0x51, 0x42, 0xE7, 0x18, 0x4B, 0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, 0xEA, 0x6E, 0x9A, 0x60, 0x2A, 0x6F, -0xDA, 0x60, 0x80, 0xE7, 0x4F, 0xEA, 0x08, 0x38, 0x4F, 0xF0, 0x01, 0x09, 0xA7, 0xE7, 0x95, 0xF8, 0x74, 0x30, 0x10, 0x2B, -0x00, 0xF0, 0x83, 0x80, 0x20, 0x2B, 0x7B, 0xD0, 0x0D, 0x4B, 0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, 0xEA, 0x6E, -0x9A, 0x60, 0x2A, 0x6F, 0xDA, 0x60, 0x4F, 0xF0, 0x03, 0x09, 0xB9, 0xF1, 0x02, 0x0F, 0x4F, 0xEA, 0x08, 0x38, 0x9C, 0xD0, -0x06, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x9E, 0x07, 0x56, 0xD4, 0x4F, 0xEA, 0x09, 0x29, 0xA7, 0xE7, 0xBC, 0x00, 0x32, 0x40, -0xC0, 0x00, 0x32, 0x40, 0xAC, 0x00, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0xD4, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, -0xC8, 0x00, 0x32, 0x40, 0x94, 0xF8, 0x74, 0x30, 0x10, 0x2B, 0x5B, 0xD0, 0x20, 0x2B, 0x4A, 0xD0, 0x4F, 0xF0, 0x03, 0x09, -0xA6, 0xE7, 0x9A, 0x07, 0x42, 0xD5, 0x09, 0xF1, 0xFF, 0x33, 0xDB, 0xB2, 0x01, 0x2B, 0x14, 0xD9, 0x4F, 0xEA, 0x09, 0x23, -0xCB, 0xE6, 0x97, 0xF8, 0x63, 0x30, 0x95, 0xF8, 0x62, 0x10, 0x3A, 0x4A, 0x1B, 0x01, 0x43, 0xEA, 0x01, 0x43, 0x43, 0xEA, -0x08, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x5C, 0x00, 0xFC, 0xD4, 0xBD, 0xE8, 0xF8, 0x83, 0x97, 0xF8, -0x63, 0x30, 0x94, 0xF8, 0x62, 0x00, 0x31, 0x4A, 0x41, 0xEA, 0x03, 0x13, 0x43, 0xEA, 0x00, 0x43, 0x43, 0xF0, 0x80, 0x43, -0x13, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, 0xB9, 0xE6, 0x4F, 0xEA, 0x08, 0x38, 0x4F, 0xF4, 0x80, 0x69, 0x5F, 0xE7, -0x29, 0x48, 0x02, 0x68, 0x22, 0xF0, 0x01, 0x02, 0x02, 0x60, 0xE2, 0xE6, 0x26, 0x49, 0x0A, 0x68, 0x22, 0xF0, 0x01, 0x02, -0x0A, 0x60, 0x4F, 0xE7, 0x09, 0xF1, 0xFF, 0x33, 0xDB, 0xB2, 0x01, 0x2B, 0xC7, 0xD9, 0x4F, 0xEA, 0x09, 0x29, 0x14, 0xE7, -0x4F, 0xEA, 0x09, 0x23, 0xD6, 0xE6, 0x4F, 0xF4, 0x00, 0x51, 0x4F, 0xF0, 0x03, 0x09, 0xB0, 0xE6, 0x4F, 0xF4, 0x00, 0x58, -0x4F, 0xF0, 0x03, 0x09, 0x1F, 0xE7, 0x4F, 0xF0, 0x00, 0x08, 0x4F, 0xF0, 0x03, 0x09, 0x1A, 0xE7, 0x00, 0x21, 0x88, 0x46, -0x4F, 0xF0, 0x03, 0x09, 0xA1, 0xE6, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xD6, 0xAE, -0x12, 0x49, 0x13, 0x48, 0xA6, 0x22, 0x19, 0xF0, 0xA7, 0xF9, 0xCF, 0xE6, 0x0E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x06, 0xDB, 0x4F, 0xF4, 0x80, 0x51, 0x4F, 0xF0, 0x00, 0x09, 0x4F, 0xF0, 0x01, 0x08, 0x87, 0xE6, 0x09, 0x49, -0x09, 0x48, 0x4F, 0x22, 0x19, 0xF0, 0x94, 0xF9, 0x4F, 0xF0, 0x00, 0x09, 0x4F, 0xF4, 0x80, 0x51, 0x4F, 0xF0, 0x01, 0x08, -0x7B, 0xE6, 0x00, 0xBF, 0xC4, 0x00, 0x32, 0x40, 0x64, 0x05, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xA3, 0x4E, 0x0D, 0x46, 0xD6, 0xF8, 0xF0, 0x70, 0x04, 0x46, 0xF4, 0xF7, -0xF7, 0xFE, 0xB8, 0x47, 0xA0, 0x4A, 0xA1, 0x49, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x0A, 0x68, 0x9F, 0x4B, -0x42, 0xF4, 0x80, 0x32, 0x0A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x7F, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x02, -0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0xFE, 0x02, 0x42, 0xF4, 0x80, 0x12, 0x1A, 0x60, 0x97, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x4F, 0xF4, 0x40, 0x52, 0x00, 0x2B, 0xC1, 0xF8, 0x04, 0x21, 0xC0, 0xF2, 0xAD, 0x80, 0x92, 0x4B, 0x8E, 0x4A, -0x92, 0x49, 0x19, 0x60, 0x13, 0x68, 0x92, 0x4F, 0x43, 0xF4, 0x00, 0x53, 0x13, 0x60, 0xF5, 0xF7, 0x49, 0xFD, 0xDF, 0xF8, -0x9C, 0xC2, 0x8F, 0x49, 0xDC, 0xF8, 0x00, 0x20, 0x43, 0x1C, 0x9B, 0x06, 0x22, 0xF0, 0xE0, 0x52, 0x03, 0xF0, 0xE0, 0x53, -0x13, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0x0B, 0x68, 0x89, 0x4A, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, -0x02, 0x03, 0x13, 0x60, 0x3B, 0x68, 0x9A, 0x03, 0x00, 0xF1, 0xAF, 0x80, 0x84, 0x4A, 0x28, 0x8C, 0x13, 0x68, 0x80, 0x49, -0x9B, 0xB2, 0x43, 0xEA, 0x00, 0x43, 0x13, 0x60, 0x0B, 0x68, 0x1F, 0x04, 0x00, 0xF1, 0x87, 0x80, 0x75, 0x4B, 0xDF, 0xF8, -0x50, 0xE2, 0x1A, 0x68, 0xDF, 0xF8, 0x4C, 0xC2, 0x7C, 0x48, 0x7D, 0x4F, 0x7D, 0x49, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, -0x4F, 0xF4, 0x40, 0x72, 0xCE, 0xF8, 0x00, 0x20, 0xE2, 0x6D, 0xCC, 0xF8, 0x00, 0x20, 0xB4, 0xF8, 0x60, 0x20, 0x02, 0x60, -0xA2, 0x6B, 0xA0, 0x8F, 0x3A, 0x60, 0xD4, 0xF8, 0x90, 0x21, 0x08, 0x60, 0x91, 0x78, 0x74, 0x4A, 0x02, 0xEB, 0x81, 0x01, -0x50, 0x68, 0x49, 0x69, 0xC7, 0xF8, 0xBC, 0x10, 0x19, 0x68, 0x21, 0xF4, 0xE0, 0x61, 0x19, 0x60, 0x13, 0x68, 0x6F, 0x49, -0x6F, 0x4A, 0x03, 0x43, 0x3B, 0x64, 0x6F, 0x48, 0x6F, 0x4B, 0x08, 0x60, 0x13, 0x60, 0xD6, 0xF8, 0xB0, 0x31, 0x94, 0xF8, -0x63, 0x10, 0x95, 0xF8, 0x23, 0x00, 0x98, 0x47, 0x29, 0x46, 0x20, 0x46, 0xFF, 0xF7, 0x70, 0xFD, 0x09, 0xF0, 0xAC, 0xFB, -0x68, 0x4B, 0x93, 0xF8, 0xB6, 0x30, 0x23, 0xB1, 0x67, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0xD6, 0xF8, -0x60, 0x32, 0x98, 0x47, 0x64, 0x4A, 0x65, 0x49, 0xD6, 0xF8, 0x9C, 0x34, 0x11, 0x60, 0x98, 0x47, 0x4D, 0x4A, 0x63, 0x48, -0x13, 0x68, 0x30, 0x24, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x01, 0x21, 0x04, 0x60, 0x00, 0x20, 0x17, 0xF0, 0xDE, 0xF9, -0x5E, 0x4B, 0x1B, 0x68, 0x5A, 0x78, 0x22, 0xB1, 0x5D, 0x49, 0x0A, 0x68, 0x42, 0xF0, 0x40, 0x02, 0x0A, 0x60, 0x5C, 0x49, -0x9B, 0x78, 0x0A, 0x68, 0xD8, 0x06, 0x4C, 0xBF, 0x22, 0xF0, 0x00, 0x42, 0x42, 0xF0, 0x00, 0x42, 0x0A, 0x60, 0x58, 0x4A, -0x13, 0xF0, 0x01, 0x0F, 0x13, 0x68, 0x14, 0xBF, 0x43, 0xF4, 0x80, 0x23, 0x23, 0xF4, 0x80, 0x23, 0x13, 0x60, 0xBD, 0xE8, -0xF0, 0x81, 0x3C, 0x4B, 0x1B, 0x68, 0xB3, 0xF1, 0xC8, 0x5F, 0xBF, 0xF4, 0x4D, 0xAF, 0x50, 0x49, 0x50, 0x48, 0xF3, 0x22, -0x19, 0xF0, 0x9C, 0xF8, 0x46, 0xE7, 0xF5, 0xF7, 0x35, 0xFC, 0x00, 0x28, 0x3F, 0xF4, 0x74, 0xAF, 0x6B, 0x68, 0x9A, 0x06, -0x7F, 0xF5, 0x70, 0xAF, 0x28, 0x8C, 0xF5, 0xF7, 0x71, 0xFC, 0x07, 0xF0, 0xB9, 0xFF, 0xD6, 0xF8, 0xE0, 0x33, 0x98, 0x47, -0x94, 0xF8, 0x62, 0x30, 0x04, 0x2B, 0x3F, 0xF4, 0x63, 0xAF, 0xD6, 0xF8, 0x30, 0x33, 0x94, 0xF8, 0x63, 0x00, 0x98, 0x47, -0x5C, 0xE7, 0xF5, 0xF7, 0x3F, 0xFC, 0x00, 0x28, 0x3F, 0xF4, 0x4C, 0xAF, 0xF5, 0xF7, 0x6E, 0xFC, 0xDF, 0xF8, 0xF4, 0x80, -0xD8, 0xF8, 0x00, 0x30, 0x00, 0x02, 0x23, 0xF4, 0xE0, 0x63, 0x00, 0xF4, 0xE0, 0x60, 0x18, 0x43, 0xC8, 0xF8, 0x00, 0x00, -0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, 0x60, 0x03, 0xC8, 0xF8, 0x00, 0x30, 0xD8, 0xF8, 0x00, 0x30, -0x43, 0xF0, 0x04, 0x03, 0xC8, 0xF8, 0x00, 0x30, 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF0, 0x01, 0x03, 0xC8, 0xF8, 0x00, 0x30, -0x3B, 0x68, 0x1B, 0x04, 0x0F, 0xD4, 0x15, 0x4B, 0x1B, 0x68, 0x9B, 0x03, 0x7F, 0xF5, 0x22, 0xAF, 0xF5, 0xF7, 0x18, 0xFC, -0x00, 0x28, 0x3F, 0xF4, 0x1D, 0xAF, 0x27, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x16, 0xE7, 0xF5, 0xF7, -0xDF, 0xFB, 0x00, 0x28, 0xEB, 0xD0, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0x60, 0x63, 0x43, 0xF0, 0x80, 0x63, 0xC8, 0xF8, -0x00, 0x30, 0xE2, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x54, 0x00, 0x32, 0x40, 0x64, 0x00, 0x32, 0x40, -0x38, 0x36, 0x17, 0x00, 0xD8, 0x00, 0x32, 0x40, 0x10, 0x19, 0x04, 0x00, 0x04, 0x00, 0x32, 0x40, 0x48, 0x80, 0x32, 0x40, -0x6C, 0x00, 0x32, 0x40, 0x68, 0x00, 0x32, 0x40, 0x14, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, -0x98, 0x9C, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, 0x4C, 0xF1, 0x73, 0x8B, 0xC0, 0x07, 0xF9, 0x80, -0x2C, 0x19, 0x17, 0x00, 0x8C, 0x00, 0x32, 0x40, 0xC0, 0xB3, 0x33, 0x40, 0xA0, 0xA0, 0x28, 0x28, 0x38, 0x00, 0x32, 0x40, -0x34, 0x36, 0x17, 0x00, 0x24, 0x02, 0x32, 0x40, 0x80, 0x04, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, -0x40, 0x88, 0x15, 0x00, 0x50, 0x03, 0x32, 0x40, 0x9C, 0x00, 0x32, 0x40, 0x1C, 0x00, 0x32, 0x40, 0x10, 0x00, 0x32, 0x40, -0x2D, 0xE9, 0xF0, 0x47, 0x5B, 0x4B, 0x5C, 0x4A, 0x1D, 0x68, 0xD2, 0xF8, 0x20, 0x80, 0x15, 0xF0, 0x01, 0x05, 0xD8, 0xF8, -0xE4, 0x90, 0x84, 0xB0, 0x00, 0xF0, 0x83, 0x80, 0x1A, 0x68, 0x57, 0x4F, 0x22, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x00, 0x23, -0x7B, 0x70, 0x01, 0x22, 0x54, 0x48, 0x55, 0x49, 0x03, 0x68, 0x55, 0x4C, 0x43, 0xF0, 0x10, 0x03, 0x03, 0x60, 0x0B, 0x68, -0x00, 0xF5, 0xEC, 0x10, 0x00, 0xF6, 0x6C, 0x70, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x23, 0x68, 0x01, 0x69, 0x00, 0x91, -0x02, 0x20, 0x4E, 0x49, 0x4E, 0x4C, 0x18, 0xF0, 0x9D, 0xFD, 0x3B, 0x78, 0x00, 0x2B, 0x42, 0xD0, 0xD4, 0xF8, 0x3C, 0x31, -0xD8, 0xF8, 0x40, 0x60, 0x00, 0x20, 0x98, 0x47, 0x49, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x62, 0xDB, -0xD4, 0xF8, 0x9C, 0x34, 0xDF, 0xF8, 0x38, 0xA1, 0x98, 0x47, 0xD4, 0xF8, 0x80, 0x34, 0x30, 0x79, 0x98, 0x47, 0x4F, 0xF0, -0x00, 0x0C, 0x33, 0x89, 0xF2, 0x88, 0x71, 0x79, 0x30, 0x79, 0xCD, 0xF8, 0x08, 0xC0, 0x96, 0xF8, 0x0D, 0xC0, 0xCD, 0xF8, -0x04, 0xC0, 0xB6, 0xF8, 0x0A, 0xC0, 0xCD, 0xF8, 0x00, 0xC0, 0xF5, 0xF7, 0x9F, 0xFA, 0xD4, 0xF8, 0x3C, 0x33, 0x96, 0xF9, -0x0C, 0x00, 0x98, 0x47, 0x9A, 0xF8, 0x2A, 0x30, 0x00, 0x2B, 0x33, 0xD0, 0xD4, 0xF8, 0xA8, 0x34, 0xBA, 0xF8, 0x26, 0x00, -0x98, 0x47, 0xBA, 0xF8, 0x26, 0x00, 0xD4, 0xF8, 0xAC, 0x34, 0x98, 0x47, 0xD4, 0xF8, 0xD8, 0x34, 0x49, 0x46, 0x40, 0x46, -0x98, 0x47, 0x00, 0x23, 0xC7, 0xE9, 0x01, 0x33, 0x3B, 0x70, 0x00, 0x2D, 0x33, 0xD0, 0x2B, 0x49, 0x2B, 0x4A, 0x0B, 0x68, -0x23, 0xF4, 0x00, 0x73, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x28, 0x4A, 0x28, 0x48, 0x13, 0x68, -0x28, 0x49, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x83, 0x68, 0xD4, 0xF8, 0xA0, 0x22, 0x5A, 0x65, -0x20, 0x23, 0x0B, 0x60, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x16, 0x4F, 0x2A, 0x46, 0x81, 0xE7, 0xD4, 0xF8, 0xA0, 0x34, -0xBA, 0xF8, 0x26, 0x00, 0x98, 0x47, 0xBA, 0xF8, 0x26, 0x00, 0xD4, 0xF8, 0xA4, 0x34, 0x98, 0x47, 0xCA, 0xE7, 0x33, 0x7E, -0xFF, 0x2B, 0x99, 0xD1, 0x19, 0x49, 0x1A, 0x48, 0x40, 0xF2, 0x89, 0x12, 0x18, 0xF0, 0x4C, 0xFF, 0x92, 0xE7, 0x40, 0x46, -0x0B, 0xF0, 0xF6, 0xF8, 0xD8, 0xF8, 0x04, 0x30, 0x15, 0x4A, 0x43, 0xF0, 0x01, 0x03, 0xC8, 0xF8, 0x04, 0x30, 0x92, 0xF8, -0xB6, 0x30, 0x00, 0x2B, 0xC7, 0xD0, 0x03, 0xF0, 0x99, 0xF8, 0xC4, 0xE7, 0x10, 0x00, 0x58, 0x40, 0x1C, 0x9E, 0x17, 0x00, -0x3C, 0x36, 0x17, 0x00, 0x94, 0x80, 0x32, 0x40, 0x84, 0x40, 0x04, 0x40, 0x88, 0x00, 0x32, 0x40, 0x88, 0x88, 0x15, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, 0x8C, 0x00, 0x32, 0x40, 0x78, 0x00, 0x32, 0x40, -0x00, 0xED, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xE0, 0x70, 0x79, 0x15, 0x00, 0xA4, 0x88, 0x15, 0x00, 0x2C, 0x19, 0x17, 0x00, -0xBC, 0x34, 0x17, 0x00, 0xF8, 0xB5, 0x3F, 0x4F, 0x3F, 0x4C, 0x3E, 0x6A, 0x3F, 0x49, 0xD6, 0xF8, 0xE4, 0x50, 0x4F, 0xF4, -0xBE, 0x72, 0x20, 0x46, 0x2B, 0xF0, 0xB0, 0xF9, 0x31, 0x46, 0x4F, 0xF4, 0xA4, 0x62, 0x04, 0xF5, 0xBE, 0x70, 0x2B, 0xF0, -0xA9, 0xF9, 0x29, 0x46, 0x4F, 0xF4, 0x1E, 0x72, 0x04, 0xF2, 0x9C, 0x60, 0x2B, 0xF0, 0xA2, 0xF9, 0x06, 0xF1, 0xEC, 0x01, -0xE8, 0x22, 0x04, 0xF6, 0x14, 0x10, 0x2B, 0xF0, 0x9B, 0xF9, 0x31, 0x6C, 0x1C, 0x22, 0x04, 0xF6, 0xFC, 0x10, 0x2B, 0xF0, -0x95, 0xF9, 0x2F, 0x49, 0x34, 0x22, 0x04, 0xF6, 0x18, 0x20, 0x2B, 0xF0, 0x8F, 0xF9, 0x2D, 0x49, 0x18, 0x22, 0x04, 0xF6, -0x4C, 0x20, 0x2B, 0xF0, 0x89, 0xF9, 0x2B, 0x49, 0x4F, 0xF4, 0x40, 0x72, 0x04, 0xF6, 0x64, 0x20, 0x2B, 0xF0, 0x82, 0xF9, -0x28, 0x49, 0x4F, 0xF4, 0x98, 0x62, 0x04, 0xF6, 0x64, 0x50, 0x2B, 0xF0, 0x7B, 0xF9, 0x26, 0x49, 0x26, 0x48, 0x40, 0x22, -0x2B, 0xF0, 0x76, 0xF9, 0x39, 0x46, 0x28, 0x22, 0x24, 0x48, 0x2B, 0xF0, 0x71, 0xF9, 0x24, 0x49, 0x24, 0x48, 0x60, 0x22, -0x2B, 0xF0, 0x6C, 0xF9, 0x23, 0x4A, 0x24, 0x4B, 0x12, 0x68, 0xD3, 0xF8, 0x84, 0x60, 0xB2, 0xF8, 0x3C, 0xC0, 0xD3, 0xF8, -0x80, 0x20, 0xD3, 0xE9, 0x22, 0x07, 0x41, 0xF2, 0x10, 0x33, 0x41, 0xF2, 0x30, 0x31, 0x24, 0xF8, 0x03, 0xC0, 0x41, 0xF2, -0x2C, 0x33, 0x66, 0x50, 0xE2, 0x50, 0x41, 0xF2, 0x38, 0x36, 0x41, 0xF2, 0x3C, 0x33, 0x41, 0xF2, 0x34, 0x31, 0x18, 0x4A, -0xE2, 0x50, 0xA7, 0x51, 0x17, 0x4B, 0x60, 0x50, 0x05, 0xF5, 0xBC, 0x70, 0x05, 0xF5, 0xCE, 0x71, 0x50, 0xF8, 0x04, 0x2F, -0x1A, 0xB1, 0x14, 0x7B, 0x9C, 0x70, 0x12, 0x89, 0x1A, 0x80, 0x88, 0x42, 0x03, 0xF1, 0x04, 0x03, 0xF4, 0xD1, 0xF8, 0xBD, -0x1C, 0x9E, 0x17, 0x00, 0x00, 0x40, 0x1E, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, -0xF4, 0xE4, 0x17, 0x00, 0x34, 0xE0, 0x17, 0x00, 0xF4, 0xDF, 0x17, 0x00, 0x24, 0x52, 0x1E, 0x00, 0x64, 0x52, 0x1E, 0x00, -0x30, 0x9D, 0x17, 0x00, 0x8C, 0x52, 0x1E, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xEC, 0x34, 0x17, 0x00, -0xEC, 0x52, 0x1E, 0x00, 0x70, 0xB5, 0x65, 0x4A, 0x53, 0x78, 0x00, 0x2B, 0x7F, 0xD1, 0x64, 0x4B, 0x1B, 0x68, 0x3B, 0xB1, -0x63, 0x48, 0xD9, 0x68, 0x00, 0x69, 0x09, 0x1A, 0xB1, 0xF5, 0xFA, 0x6F, 0x00, 0xF1, 0xA5, 0x80, 0x13, 0x78, 0x00, 0x2B, -0x68, 0xD0, 0xD2, 0xE9, 0x01, 0x35, 0x5D, 0x48, 0x5D, 0x4A, 0x5E, 0x49, 0x04, 0x69, 0x0E, 0x68, 0xB2, 0xF8, 0xB0, 0x00, -0xB2, 0xF8, 0xB2, 0x10, 0xB2, 0x8E, 0x2B, 0x44, 0x1B, 0x1B, 0x1B, 0x1A, 0x5B, 0x1A, 0x9B, 0x1A, 0x00, 0x2B, 0xC0, 0xF2, -0x98, 0x80, 0xFF, 0xF7, 0x37, 0xFF, 0x56, 0x4B, 0x1B, 0x6A, 0x1C, 0x6C, 0x23, 0x79, 0x20, 0x89, 0x00, 0x2B, 0x56, 0xD0, -0x2A, 0xF0, 0xC8, 0xFB, 0x02, 0x46, 0x0B, 0x46, 0x2A, 0xF0, 0x78, 0xFA, 0x50, 0x4B, 0x00, 0x22, 0x2A, 0xF0, 0x54, 0xFD, -0x4F, 0x4B, 0x00, 0x22, 0x2A, 0xF0, 0x26, 0xFC, 0x2A, 0xF0, 0x1E, 0xFA, 0x2A, 0xF0, 0xBC, 0xFE, 0x05, 0x46, 0x20, 0x89, -0x2A, 0xF0, 0xB4, 0xFB, 0x02, 0x46, 0x0B, 0x46, 0x00, 0x20, 0x49, 0x49, 0x2A, 0xF0, 0x42, 0xFD, 0x00, 0x22, 0x4F, 0xF0, -0x83, 0x43, 0x2A, 0xF0, 0x13, 0xFC, 0x2A, 0xF0, 0x0B, 0xFA, 0x2A, 0xF0, 0xA9, 0xFE, 0x03, 0x46, 0x20, 0x89, 0x1C, 0x46, -0x2A, 0xF0, 0xA0, 0xFB, 0x34, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x2A, 0xF0, 0x2F, 0xFD, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, -0x2A, 0xF0, 0x00, 0xFC, 0x2A, 0xF0, 0xF8, 0xF9, 0x2A, 0xF0, 0x96, 0xFE, 0x3A, 0x4B, 0x3B, 0x49, 0x03, 0xF5, 0x99, 0x56, -0x02, 0x46, 0x35, 0x60, 0x41, 0xF2, 0x24, 0x30, 0x41, 0xF2, 0x28, 0x35, 0x1C, 0x50, 0x5A, 0x51, 0x02, 0x20, 0x18, 0xF0, -0xD5, 0xFB, 0x35, 0x4B, 0x4F, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x70, 0xBD, 0x33, 0x49, 0x02, 0x20, 0x18, 0xF0, 0xCC, 0xFB, -0x30, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x1A, 0x60, 0x70, 0xBD, 0x30, 0x49, 0xF5, 0xE7, 0x2A, 0xF0, 0x71, 0xFB, 0x2F, 0x4B, -0x00, 0x22, 0x2A, 0xF0, 0xD7, 0xFB, 0x25, 0x4B, 0x00, 0x22, 0x2A, 0xF0, 0xFD, 0xFC, 0x24, 0x4B, 0x00, 0x22, 0x2A, 0xF0, -0xCF, 0xFB, 0x2A, 0xF0, 0xC7, 0xF9, 0x2A, 0xF0, 0x65, 0xFE, 0x05, 0x46, 0x20, 0x89, 0x2A, 0xF0, 0x5D, 0xFB, 0x02, 0x46, -0x0B, 0x46, 0x00, 0x20, 0x24, 0x49, 0x2A, 0xF0, 0xEB, 0xFC, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, 0x2A, 0xF0, 0xBC, 0xFB, -0x2A, 0xF0, 0xB4, 0xF9, 0x2A, 0xF0, 0x52, 0xFE, 0x03, 0x46, 0x20, 0x89, 0x1C, 0x46, 0x2A, 0xF0, 0x49, 0xFB, 0x0B, 0xA3, -0xD3, 0xE9, 0x00, 0x23, 0xA7, 0xE7, 0x5A, 0x68, 0x1A, 0x49, 0x02, 0x20, 0x18, 0xF0, 0x92, 0xFB, 0x13, 0x4B, 0x4F, 0xF0, -0x00, 0x42, 0x1A, 0x60, 0x70, 0xBD, 0x17, 0x49, 0xBB, 0xE7, 0x00, 0xBF, 0xAF, 0xF3, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, -0x00, 0x10, 0xB3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xA2, 0x40, 0x3C, 0x36, 0x17, 0x00, 0xD0, 0x9C, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x2C, 0x19, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x00, 0x6A, 0x40, -0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xB9, 0x40, 0x00, 0x40, 0x1E, 0x00, 0x20, 0x89, 0x15, 0x00, 0x00, 0x41, 0x04, 0x40, -0x1C, 0x89, 0x15, 0x00, 0xC4, 0x88, 0x15, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0xA4, 0x40, 0xE8, 0x88, 0x15, 0x00, -0x00, 0x89, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x2D, 0xED, 0x02, 0x8B, 0x56, 0x4E, 0xDF, 0xF8, 0x90, 0x81, 0x96, 0xF8, -0xDF, 0x31, 0x96, 0xF8, 0xBF, 0x56, 0xDF, 0xF8, 0x88, 0xB1, 0x53, 0x4C, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xF7, -0x83, 0xB0, 0x08, 0xEB, 0x07, 0x09, 0x06, 0xF5, 0xBE, 0x71, 0x48, 0x46, 0x01, 0x93, 0x4F, 0xF4, 0x1E, 0x7A, 0x00, 0x97, -0x2B, 0xF0, 0x0E, 0xF8, 0x07, 0xF1, 0xEC, 0x00, 0x0A, 0xFB, 0x05, 0xF5, 0x06, 0xF6, 0x14, 0x11, 0xE8, 0x22, 0x40, 0x44, -0x2B, 0xF0, 0x04, 0xF8, 0x05, 0xEB, 0x0B, 0x03, 0x18, 0x46, 0x52, 0x46, 0x06, 0xF2, 0x9C, 0x61, 0x08, 0xEE, 0x10, 0x3A, -0x2A, 0xF0, 0xFA, 0xFF, 0x06, 0xF6, 0xFC, 0x11, 0x1C, 0x22, 0xD9, 0xF8, 0x40, 0x00, 0x3F, 0x4F, 0xDF, 0xF8, 0x30, 0xA1, -0x2A, 0xF0, 0xF0, 0xFF, 0x06, 0xF6, 0x18, 0x21, 0x34, 0x22, 0x3C, 0x48, 0x2A, 0xF0, 0xEA, 0xFF, 0x31, 0x46, 0x4F, 0xF4, -0xBE, 0x72, 0x3A, 0x48, 0x2A, 0xF0, 0xE4, 0xFF, 0x06, 0xF6, 0x4C, 0x21, 0x18, 0x22, 0x38, 0x48, 0x2A, 0xF0, 0xDE, 0xFF, -0x06, 0xF6, 0x64, 0x21, 0x4F, 0xF4, 0x18, 0x62, 0x35, 0x48, 0x2A, 0xF0, 0xD7, 0xFF, 0x06, 0xF6, 0x64, 0x51, 0x4F, 0xF4, -0x98, 0x62, 0x33, 0x48, 0x33, 0x4E, 0x2A, 0xF0, 0xCF, 0xFF, 0x40, 0x22, 0xA4, 0xF1, 0xC8, 0x01, 0x31, 0x48, 0x2A, 0xF0, -0xC9, 0xFF, 0x28, 0x22, 0xA4, 0xF1, 0x88, 0x01, 0x2F, 0x48, 0x2A, 0xF0, 0xC3, 0xFF, 0x2F, 0x48, 0x60, 0x22, 0xA4, 0xF1, -0x60, 0x01, 0x2A, 0xF0, 0xBD, 0xFF, 0x05, 0xF5, 0xBE, 0x75, 0xAB, 0x44, 0x5B, 0xF8, 0x04, 0x3B, 0x50, 0x46, 0x19, 0x46, -0x4B, 0xB1, 0xA2, 0x78, 0x1A, 0x73, 0xD7, 0xF8, 0xDC, 0x22, 0x25, 0x88, 0x1D, 0x81, 0xC3, 0xE9, 0x45, 0x23, 0x17, 0xF0, -0x01, 0xF9, 0x04, 0x34, 0xB4, 0x42, 0xED, 0xD1, 0x1B, 0x48, 0x22, 0x4D, 0x49, 0x46, 0x17, 0xF0, 0xF9, 0xF8, 0x21, 0x48, -0x49, 0x46, 0x17, 0xF0, 0xA5, 0xF8, 0x00, 0x9E, 0x06, 0xF1, 0xE4, 0x00, 0x18, 0xEE, 0x10, 0x1A, 0x40, 0x44, 0x17, 0xF0, -0x9D, 0xF8, 0x01, 0x9A, 0xA4, 0x24, 0x99, 0x23, 0x14, 0xFB, 0x02, 0x34, 0x08, 0xEB, 0xC4, 0x04, 0x35, 0x44, 0x20, 0x46, -0x17, 0xF0, 0x8E, 0xF8, 0x04, 0xF1, 0x28, 0x00, 0x08, 0x34, 0x17, 0xF0, 0x89, 0xF8, 0xAC, 0x42, 0xF5, 0xD1, 0x00, 0x9B, -0x03, 0xF5, 0xA3, 0x60, 0x40, 0x44, 0x03, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x4F, 0x17, 0xF0, 0x7C, 0xB8, -0x00, 0x40, 0x1E, 0x00, 0xEC, 0x52, 0x1E, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, -0x00, 0x88, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x34, 0xE0, 0x17, 0x00, 0x10, 0x53, 0x1E, 0x00, 0xF4, 0xDF, 0x17, 0x00, -0x1C, 0x9E, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x08, 0x8D, 0x17, 0x00, 0x08, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0xF8, 0xDE, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x6C, 0x4E, 0x6D, 0x4A, 0x33, 0x68, 0xDF, 0xF8, -0x00, 0x82, 0x0D, 0x46, 0x09, 0x8C, 0x9B, 0xB2, 0x43, 0xEA, 0x01, 0x43, 0xD0, 0xF8, 0x90, 0x11, 0x33, 0x60, 0x8B, 0x78, -0x67, 0x49, 0x02, 0xEB, 0x83, 0x03, 0x1C, 0x3E, 0x5B, 0x69, 0x0B, 0x60, 0x31, 0x68, 0x21, 0xF4, 0xE0, 0x61, 0x04, 0x46, -0x50, 0x68, 0x31, 0x60, 0x13, 0x68, 0x62, 0x49, 0x62, 0x4A, 0x03, 0x43, 0x0B, 0x60, 0x62, 0x4B, 0x62, 0x49, 0x11, 0x60, -0x62, 0x4A, 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x9F, 0x03, 0x70, 0xD4, 0x60, 0x4B, 0x1B, 0x68, 0x1A, 0x68, 0xE2, 0xB1, -0x5F, 0x49, 0x0A, 0x60, 0x5A, 0x68, 0xF2, 0xB1, 0xC2, 0xF3, 0x0B, 0x01, 0x00, 0x29, 0x61, 0xD1, 0xE1, 0x68, 0x5C, 0x48, -0x22, 0xF4, 0x7F, 0x62, 0x22, 0xF0, 0x0F, 0x02, 0xC1, 0xF3, 0x0B, 0x01, 0x0A, 0x43, 0x02, 0x60, 0x9A, 0x68, 0xA2, 0xB9, -0x57, 0x4A, 0x21, 0x69, 0x11, 0x60, 0xDB, 0x68, 0xA3, 0xB9, 0x56, 0x4B, 0x62, 0x69, 0x1A, 0x60, 0x12, 0xE0, 0x51, 0x4A, -0xA1, 0x68, 0x11, 0x60, 0x5A, 0x68, 0x00, 0x2A, 0xE0, 0xD1, 0x4F, 0x4A, 0xE1, 0x68, 0x11, 0x60, 0x9A, 0x68, 0x00, 0x2A, -0xEA, 0xD0, 0x4D, 0x49, 0x0A, 0x60, 0xDB, 0x68, 0x00, 0x2B, 0xEA, 0xD0, 0x4B, 0x4A, 0x13, 0x60, 0x4B, 0x4B, 0xD3, 0xF8, -0x60, 0x32, 0x98, 0x47, 0x4A, 0x4B, 0x1B, 0x68, 0x9C, 0x01, 0x06, 0xD4, 0x49, 0x4B, 0x3E, 0x4A, 0x01, 0x21, 0x19, 0x60, -0x13, 0x68, 0x0B, 0x43, 0x13, 0x60, 0x28, 0x46, 0x1B, 0xF0, 0xE4, 0xFA, 0x43, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, -0x13, 0x60, 0x01, 0x21, 0x00, 0x20, 0x16, 0xF0, 0x51, 0xFD, 0x41, 0x4B, 0x1B, 0x68, 0x5A, 0x78, 0x22, 0xB1, 0x40, 0x49, -0x0A, 0x68, 0x42, 0xF0, 0x40, 0x02, 0x0A, 0x60, 0x3E, 0x49, 0x9B, 0x78, 0x0A, 0x68, 0xD8, 0x06, 0x4C, 0xBF, 0x22, 0xF0, -0x00, 0x42, 0x42, 0xF0, 0x00, 0x42, 0x0A, 0x60, 0x3A, 0x4A, 0x13, 0xF0, 0x01, 0x0F, 0x13, 0x68, 0x14, 0xBF, 0x43, 0xF4, -0x80, 0x23, 0x23, 0xF4, 0x80, 0x23, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x2B, 0x49, 0x0A, 0x60, 0xB8, 0xE7, 0xF4, 0xF7, -0xD7, 0xFF, 0x00, 0x28, 0x8A, 0xD0, 0xF5, 0xF7, 0x07, 0xF8, 0x31, 0x4F, 0x3B, 0x68, 0x00, 0x02, 0x23, 0xF4, 0xE0, 0x63, -0x00, 0xF4, 0xE0, 0x60, 0x18, 0x43, 0x38, 0x60, 0x3B, 0x68, 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, 0x60, 0x03, 0x3B, 0x60, -0x3B, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x3B, 0x60, 0x3B, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x3B, 0x60, 0xD8, 0xF8, 0x00, 0x30, -0x1B, 0x04, 0x0F, 0xD4, 0x24, 0x4B, 0x1B, 0x68, 0x9E, 0x03, 0x7F, 0xF5, 0x69, 0xAF, 0xF4, 0xF7, 0xB9, 0xFF, 0x00, 0x28, -0x3F, 0xF4, 0x64, 0xAF, 0x1E, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x5D, 0xE7, 0xF4, 0xF7, 0x80, 0xFF, -0x00, 0x28, 0xEB, 0xD0, 0x33, 0x68, 0x43, 0xF4, 0x00, 0x23, 0x33, 0x60, 0x3B, 0x68, 0x23, 0xF0, 0x60, 0x63, 0x43, 0xF0, -0x80, 0x63, 0x3B, 0x60, 0xE0, 0xE7, 0x00, 0xBF, 0x68, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0xDC, 0x00, 0x32, 0x40, -0x60, 0x00, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, 0x4C, 0xF1, 0x73, 0x8B, 0xC0, 0x07, 0xF9, 0x80, -0xAC, 0x35, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x08, 0x02, 0x32, 0x40, 0x0C, 0x02, 0x32, 0x40, -0x88, 0x1A, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x24, 0x02, 0x32, 0x40, -0x80, 0x04, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, 0x50, 0x03, 0x32, 0x40, 0x04, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x41, -0x33, 0x4D, 0xDF, 0xF8, 0xE4, 0x80, 0xD5, 0xF8, 0xD0, 0x34, 0x32, 0x4E, 0x41, 0xF2, 0x12, 0x32, 0x18, 0xF8, 0x02, 0x70, -0x98, 0x47, 0xD5, 0xF8, 0x9C, 0x34, 0x98, 0x47, 0xD8, 0xF8, 0xBC, 0x41, 0xF4, 0xF7, 0x46, 0xF9, 0x2C, 0x49, 0xD5, 0xF8, -0x88, 0x24, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x0B, 0x60, 0x20, 0x79, 0x90, 0x47, 0x23, 0x79, 0x86, 0xF8, 0x2A, 0x30, -0x62, 0x79, 0x86, 0xF8, 0x2B, 0x20, 0x62, 0x7B, 0x86, 0xF8, 0x2C, 0x20, 0xE1, 0x88, 0x20, 0x89, 0x62, 0x89, 0x32, 0x85, -0xFF, 0xB2, 0xB1, 0x84, 0xF0, 0x84, 0xD3, 0xB9, 0xD5, 0xF8, 0xA0, 0x34, 0x98, 0x47, 0xF0, 0x8C, 0xD5, 0xF8, 0xA4, 0x34, -0x98, 0x47, 0x1D, 0x4E, 0x94, 0xF9, 0x0C, 0x00, 0xD5, 0xF8, 0x3C, 0x33, 0x98, 0x47, 0xD5, 0xF8, 0xD4, 0x34, 0x06, 0xF5, -0xA4, 0x61, 0x30, 0x46, 0x98, 0x47, 0x17, 0xF0, 0x0D, 0x0F, 0x0C, 0xD0, 0xD5, 0xF8, 0x54, 0x32, 0xBD, 0xE8, 0xF0, 0x41, -0x18, 0x47, 0xD5, 0xF8, 0xA8, 0x34, 0x98, 0x47, 0xF0, 0x8C, 0xD5, 0xF8, 0xAC, 0x34, 0x98, 0x47, 0xE3, 0xE7, 0xBB, 0x07, -0x14, 0xD5, 0x0F, 0x4A, 0xD8, 0xF8, 0x80, 0x31, 0x11, 0x69, 0x0E, 0x48, 0xD5, 0xF8, 0xE0, 0x21, 0x46, 0x61, 0x05, 0x24, -0x44, 0x77, 0x01, 0xF5, 0x1C, 0x51, 0x43, 0xF0, 0x02, 0x03, 0xC8, 0xF8, 0x80, 0x31, 0x10, 0x31, 0xBD, 0xE8, 0xF0, 0x41, -0x0C, 0x30, 0x10, 0x47, 0xBD, 0xE8, 0xF0, 0x81, 0x88, 0x1A, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, -0x7C, 0x41, 0x1E, 0x00, 0x00, 0x10, 0x50, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x40, 0x1E, 0x00, 0x38, 0xB5, 0x50, 0xBB, -0x1A, 0x4B, 0x1A, 0x68, 0x52, 0xB1, 0x1A, 0x4B, 0x1A, 0x49, 0x18, 0x69, 0xD3, 0x68, 0xB1, 0xF8, 0xB0, 0x10, 0x1B, 0x1A, -0x5B, 0x1A, 0xB3, 0xF5, 0xFA, 0x6F, 0x17, 0xD4, 0x16, 0x4A, 0x13, 0x78, 0x7B, 0xB1, 0xD2, 0xE9, 0x01, 0x34, 0x12, 0x48, -0x14, 0x4D, 0x12, 0x49, 0x00, 0x69, 0x2A, 0x68, 0xB1, 0xF8, 0xB0, 0x10, 0x92, 0x8E, 0x23, 0x44, 0x1B, 0x1A, 0x5B, 0x1A, -0x9B, 0x1A, 0x00, 0x2B, 0x0E, 0xDB, 0x0F, 0x4B, 0x4F, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x38, 0xBD, 0x52, 0x68, 0x0D, 0x49, -0x02, 0x20, 0x18, 0xF0, 0xDB, 0xF8, 0x0A, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x1A, 0x60, 0x38, 0xBD, 0x09, 0x49, 0x02, 0x20, -0x18, 0xF0, 0xD2, 0xF8, 0xF5, 0xE7, 0x00, 0xBF, 0xD0, 0x9C, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x2C, 0x19, 0x17, 0x00, -0x3C, 0x36, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x41, 0x04, 0x40, 0xE8, 0x88, 0x15, 0x00, 0x28, 0x89, 0x15, 0x00, -0xF0, 0xB5, 0x1B, 0x4B, 0x01, 0x22, 0x85, 0xB0, 0xDA, 0x60, 0xEF, 0xF3, 0x14, 0x81, 0xEF, 0xF3, 0x03, 0x82, 0xEF, 0xF3, -0x09, 0x85, 0xEF, 0xF3, 0x08, 0x84, 0xEF, 0xF3, 0x10, 0x83, 0x70, 0x46, 0xCD, 0xE9, 0x01, 0x30, 0x00, 0x94, 0x13, 0x48, -0x2B, 0x46, 0x18, 0xF0, 0x59, 0xF8, 0x15, 0xB9, 0x34, 0xB9, 0x05, 0xB0, 0xF0, 0xBD, 0x10, 0x48, 0x18, 0xF0, 0x52, 0xF8, -0x00, 0x2C, 0xF8, 0xD0, 0x0E, 0x48, 0x0F, 0x4F, 0x0F, 0x4E, 0x24, 0xF0, 0x0F, 0x04, 0x18, 0xF0, 0x49, 0xF8, 0x04, 0xF5, -0x80, 0x75, 0x06, 0xE0, 0x54, 0xF8, 0x04, 0x1B, 0x30, 0x46, 0x18, 0xF0, 0x41, 0xF8, 0xA5, 0x42, 0xE7, 0xD0, 0x23, 0x07, -0xF6, 0xD1, 0x21, 0x46, 0x38, 0x46, 0x18, 0xF0, 0x39, 0xF8, 0xF1, 0xE7, 0x00, 0xA0, 0x10, 0x40, 0x40, 0x89, 0x15, 0x00, -0x94, 0x89, 0x15, 0x00, 0xA0, 0x89, 0x15, 0x00, 0xAC, 0x89, 0x15, 0x00, 0xB8, 0x89, 0x15, 0x00, 0x30, 0xB4, 0x0C, 0x4C, -0x0C, 0x49, 0xD4, 0xF8, 0x3C, 0x31, 0x0C, 0x4A, 0x0C, 0x4D, 0x43, 0xF0, 0x04, 0x03, 0xC4, 0xF8, 0x3C, 0x31, 0xC0, 0x03, -0x03, 0x24, 0xF4, 0x23, 0x08, 0x60, 0x8C, 0x60, 0x82, 0xF8, 0x44, 0x33, 0xAB, 0x68, 0x07, 0x49, 0xC3, 0xF8, 0x50, 0x11, -0x10, 0x23, 0x30, 0xBC, 0x93, 0x60, 0x70, 0x47, 0x00, 0x00, 0x50, 0x40, 0x00, 0xA0, 0x10, 0x40, 0x00, 0xE1, 0x00, 0xE0, -0x00, 0xED, 0x00, 0xE0, 0xA9, 0xC5, 0x12, 0x00, 0x01, 0x4B, 0x1A, 0x68, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xA0, 0x10, 0x40, -0x02, 0x4A, 0x93, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x93, 0x60, 0x70, 0x47, 0x00, 0xA0, 0x10, 0x40, 0x02, 0x4A, 0x93, 0x68, -0x43, 0xF0, 0x02, 0x03, 0x93, 0x60, 0x70, 0x47, 0x00, 0xA0, 0x10, 0x40, 0x08, 0xB5, 0x06, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0xFE, 0xE7, 0x03, 0x49, 0x04, 0x48, 0xBA, 0x22, 0x18, 0xF0, 0x5F, 0xFA, 0xF8, 0xE7, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x0B, 0x4B, 0x41, 0xF2, 0x1C, 0x32, 0x41, 0xF2, -0x18, 0x31, 0x9A, 0x58, 0x5B, 0x58, 0x72, 0xB1, 0x10, 0xB4, 0x08, 0x4C, 0x00, 0x22, 0x19, 0x68, 0x58, 0x68, 0x08, 0x60, -0x21, 0x68, 0x02, 0x32, 0x91, 0x42, 0x03, 0xF1, 0x08, 0x03, 0xF6, 0xD8, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x70, 0x47, -0x00, 0x40, 0x1E, 0x00, 0x1C, 0x53, 0x1E, 0x00, 0x32, 0x49, 0x33, 0x4B, 0x99, 0x42, 0x10, 0xB5, 0x0C, 0xD2, 0x01, 0x3B, -0x5B, 0x1A, 0x31, 0x4A, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x13, 0x44, 0x52, 0xF8, 0x04, 0x0B, 0x41, 0xF8, 0x04, 0x0B, -0x9A, 0x42, 0xF9, 0xD1, 0x2C, 0x4A, 0x2D, 0x4B, 0x9A, 0x42, 0x0A, 0xD2, 0x01, 0x3B, 0x9B, 0x1A, 0x23, 0xF0, 0x03, 0x03, -0x04, 0x33, 0x13, 0x44, 0x00, 0x21, 0x42, 0xF8, 0x04, 0x1B, 0x9A, 0x42, 0xFB, 0xD1, 0x27, 0x49, 0x27, 0x4B, 0x99, 0x42, -0x0D, 0xD2, 0x01, 0x3B, 0x5B, 0x1A, 0x26, 0x4A, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x13, 0x44, 0x08, 0x46, 0x52, 0xF8, -0x04, 0x4B, 0x40, 0xF8, 0x04, 0x4B, 0x9A, 0x42, 0xF9, 0xD1, 0x21, 0x4A, 0x21, 0x48, 0xD2, 0xF8, 0x88, 0x30, 0x43, 0xF4, -0x70, 0x03, 0xC2, 0xF8, 0x88, 0x30, 0x91, 0x60, 0x00, 0x23, 0xFF, 0x21, 0xC2, 0x18, 0x01, 0x33, 0x50, 0x2B, 0x82, 0xF8, -0x00, 0x13, 0xF9, 0xD1, 0x1A, 0x4B, 0x1B, 0x68, 0x13, 0xF0, 0x80, 0x6F, 0x16, 0x4B, 0x1B, 0x68, 0x4F, 0xF6, 0xF0, 0x72, -0x03, 0xEA, 0x02, 0x03, 0x0D, 0xD0, 0x4C, 0xF2, 0x40, 0x22, 0x93, 0x42, 0x0D, 0xD0, 0x14, 0x4C, 0xF5, 0xF7, 0xBC, 0xFC, -0xD4, 0xF8, 0x7C, 0x34, 0x98, 0x47, 0xD4, 0xF8, 0x74, 0x34, 0x98, 0x47, 0xFE, 0xE7, 0x4D, 0xF2, 0x10, 0x22, 0x93, 0x42, -0xF1, 0xD1, 0x0E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xED, 0xE7, 0x00, 0xBF, 0x80, 0x01, 0x17, 0x00, 0x5C, 0x25, 0x17, 0x00, -0x2C, 0xD2, 0x15, 0x00, 0x60, 0x25, 0x17, 0x00, 0x28, 0x07, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x80, 0x01, 0x17, 0x00, -0x00, 0x00, 0x12, 0x00, 0x00, 0xED, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xE0, 0x00, 0x00, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x68, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x72, 0x4F, 0x73, 0x4E, 0x86, 0xB0, 0x3D, 0x46, 0x00, 0x24, 0x21, 0x46, -0x55, 0xF8, 0x04, 0x2B, 0x30, 0x46, 0x01, 0x34, 0xF9, 0xF7, 0x6A, 0xFD, 0x0D, 0x2C, 0xF6, 0xD1, 0xD7, 0xE9, 0x11, 0x21, -0x3B, 0x6C, 0x6C, 0x4D, 0x00, 0x93, 0xCD, 0xE9, 0x01, 0x21, 0x6B, 0x48, 0x79, 0x6B, 0xD7, 0xE9, 0x0E, 0x23, 0xF9, 0xF7, -0x5B, 0xFD, 0x29, 0x68, 0x6A, 0x68, 0xAB, 0x68, 0xE8, 0x68, 0x00, 0x90, 0x66, 0x48, 0xF9, 0xF7, 0x53, 0xFD, 0x69, 0x6A, -0xAA, 0x6A, 0xEB, 0x6A, 0x28, 0x6B, 0xEC, 0x6B, 0xCD, 0xE9, 0x00, 0x04, 0x62, 0x48, 0xF9, 0xF7, 0x49, 0xFD, 0xAC, 0x6A, -0x14, 0xF0, 0xFF, 0x01, 0x68, 0xD1, 0xC4, 0xF3, 0x07, 0x25, 0x14, 0xF4, 0x7F, 0x4F, 0x29, 0x46, 0x44, 0xD1, 0x21, 0x0C, -0x2E, 0xD1, 0xFB, 0x6C, 0x1C, 0x07, 0x23, 0xD5, 0x5A, 0x48, 0xF9, 0xF7, 0x37, 0xFD, 0x3B, 0x6D, 0xD8, 0x07, 0x21, 0xD4, -0x58, 0x48, 0xF9, 0xF7, 0x31, 0xFD, 0xFB, 0x6C, 0x59, 0x07, 0x4C, 0xBF, 0x56, 0x48, 0x57, 0x48, 0xF9, 0xF7, 0x2A, 0xFD, -0x39, 0x6D, 0xEF, 0xF3, 0x10, 0x82, 0xEF, 0xF3, 0x13, 0x83, 0xEF, 0xF3, 0x11, 0x80, 0x00, 0x90, 0x52, 0x48, 0xF9, 0xF7, -0x1F, 0xFD, 0xBC, 0x6C, 0x00, 0x2C, 0x71, 0xD1, 0x7C, 0x6C, 0x00, 0x2C, 0x56, 0xD1, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, -0x4D, 0x48, 0xF9, 0xF7, 0x13, 0xFD, 0xDD, 0xE7, 0x4C, 0x48, 0xF9, 0xF7, 0x0F, 0xFD, 0xDC, 0xE7, 0xC4, 0xF3, 0x40, 0x63, -0xC4, 0xF3, 0x00, 0x60, 0xC4, 0xF3, 0xC0, 0x42, 0x03, 0x93, 0xC4, 0xF3, 0x80, 0x43, 0xCD, 0xE9, 0x01, 0x20, 0x00, 0x93, -0xC4, 0xF3, 0x00, 0x42, 0xC4, 0xF3, 0x40, 0x43, 0x43, 0x48, 0xF9, 0xF7, 0xFB, 0xFC, 0xBC, 0xE7, 0xC4, 0xF3, 0xC0, 0x33, -0xC4, 0xF3, 0x00, 0x30, 0xC4, 0xF3, 0xC0, 0x22, 0x04, 0x93, 0xC4, 0xF3, 0x40, 0x36, 0xC4, 0xF3, 0x80, 0x23, 0xCD, 0xE9, -0x00, 0x32, 0xCD, 0xE9, 0x02, 0x06, 0xC4, 0xF3, 0x40, 0x23, 0x3A, 0x48, 0xC4, 0xF3, 0x00, 0x22, 0xF9, 0xF7, 0xE4, 0xFC, -0x2D, 0x06, 0xA2, 0xD5, 0x2A, 0x4B, 0x37, 0x48, 0x99, 0x6B, 0xF9, 0xF7, 0xDD, 0xFC, 0x9C, 0xE7, 0xC4, 0xF3, 0xC0, 0x16, -0xC4, 0xF3, 0x40, 0x10, 0xC4, 0xF3, 0x00, 0x12, 0xC4, 0xF3, 0xC0, 0x03, 0xCD, 0xE9, 0x02, 0x06, 0xCD, 0xE9, 0x00, 0x32, -0x2F, 0x48, 0xC4, 0xF3, 0x40, 0x03, 0x04, 0xF0, 0x01, 0x02, 0xF9, 0xF7, 0xC9, 0xFC, 0x26, 0x06, 0x81, 0xD5, 0x69, 0x6B, -0x2B, 0x48, 0xF9, 0xF7, 0xC3, 0xFC, 0x7C, 0xE7, 0x2A, 0x48, 0x2B, 0x4F, 0x2B, 0x4E, 0x24, 0xF0, 0x0F, 0x04, 0xF9, 0xF7, -0xBB, 0xFC, 0x04, 0xF5, 0x80, 0x75, 0x06, 0xE0, 0x54, 0xF8, 0x04, 0x1B, 0x30, 0x46, 0xF9, 0xF7, 0xB3, 0xFC, 0xA5, 0x42, -0x97, 0xD0, 0x23, 0x07, 0xF6, 0xD1, 0x21, 0x46, 0x38, 0x46, 0xF9, 0xF7, 0xAB, 0xFC, 0xF1, 0xE7, 0x21, 0x48, 0xDF, 0xF8, -0x7C, 0x80, 0x1F, 0x4E, 0x24, 0xF0, 0x0F, 0x04, 0xF9, 0xF7, 0xA2, 0xFC, 0x04, 0xF5, 0x80, 0x75, 0x07, 0xE0, 0x54, 0xF8, -0x04, 0x1B, 0x30, 0x46, 0xF9, 0xF7, 0x9A, 0xFC, 0xA5, 0x42, 0x3F, 0xF4, 0x7B, 0xAF, 0x22, 0x07, 0xF5, 0xD1, 0x21, 0x46, -0x40, 0x46, 0xF9, 0xF7, 0x91, 0xFC, 0xF0, 0xE7, 0xE4, 0x60, 0x17, 0x00, 0xC0, 0x89, 0x15, 0x00, 0x00, 0xED, 0x00, 0xE0, -0xD0, 0x89, 0x15, 0x00, 0x1C, 0x8A, 0x15, 0x00, 0x50, 0x8A, 0x15, 0x00, 0xF0, 0x8B, 0x15, 0x00, 0x10, 0x8C, 0x15, 0x00, -0x34, 0x8C, 0x15, 0x00, 0x40, 0x8C, 0x15, 0x00, 0x4C, 0x8C, 0x15, 0x00, 0x24, 0x8C, 0x15, 0x00, 0x00, 0x8C, 0x15, 0x00, -0x8C, 0x8B, 0x15, 0x00, 0x04, 0x8B, 0x15, 0x00, 0x7C, 0x8B, 0x15, 0x00, 0x90, 0x8A, 0x15, 0x00, 0xF4, 0x8A, 0x15, 0x00, -0x80, 0x8C, 0x15, 0x00, 0xAC, 0x89, 0x15, 0x00, 0xB8, 0x89, 0x15, 0x00, 0xA0, 0x89, 0x15, 0x00, 0x08, 0xB5, 0x02, 0x48, -0xF9, 0xF7, 0x60, 0xFC, 0xFE, 0xE7, 0x00, 0xBF, 0x8C, 0x8C, 0x15, 0x00, 0x04, 0x46, 0x08, 0xB5, 0x10, 0x48, 0xF9, 0xF7, -0x57, 0xFC, 0x30, 0x2C, 0x10, 0xD0, 0x40, 0x2C, 0x16, 0xD0, 0x20, 0x2C, 0x10, 0xD0, 0x0D, 0x48, 0xF9, 0xF7, 0x4E, 0xFC, -0x0C, 0x48, 0xF9, 0xF7, 0x4B, 0xFC, 0xFF, 0xF7, 0xD1, 0xFE, 0x0B, 0x48, 0xF9, 0xF7, 0x46, 0xFC, 0xFF, 0xF7, 0xE0, 0xFF, -0x09, 0x48, 0xF9, 0xF7, 0x41, 0xFC, 0xF1, 0xE7, 0x08, 0x48, 0xF9, 0xF7, 0x3D, 0xFC, 0xED, 0xE7, 0x07, 0x48, 0xF9, 0xF7, -0x39, 0xFC, 0xE9, 0xE7, 0x98, 0x8C, 0x15, 0x00, 0xE8, 0x8C, 0x15, 0x00, 0xF4, 0x8C, 0x15, 0x00, 0x00, 0x8D, 0x15, 0x00, -0xD0, 0x8C, 0x15, 0x00, 0xC0, 0x8C, 0x15, 0x00, 0xDC, 0x8C, 0x15, 0x00, 0x4F, 0xF0, 0x10, 0x03, 0x00, 0xF0, 0x0C, 0xB8, -0x4F, 0xF0, 0x20, 0x03, 0x00, 0xF0, 0x08, 0xB8, 0x4F, 0xF0, 0x30, 0x03, 0x00, 0xF0, 0x04, 0xB8, 0x4F, 0xF0, 0x40, 0x03, -0x00, 0xF0, 0x00, 0xB8, 0xEF, 0xF3, 0x08, 0x80, 0x4F, 0xF0, 0x04, 0x01, 0x72, 0x46, 0x0A, 0x42, 0x01, 0xD0, 0xEF, 0xF3, -0x09, 0x80, 0x9C, 0x46, 0x24, 0x49, 0x02, 0x68, 0x0A, 0x60, 0x04, 0x31, 0x42, 0x68, 0x0A, 0x60, 0x04, 0x31, 0x82, 0x68, -0x0A, 0x60, 0x04, 0x31, 0xC2, 0x68, 0x0A, 0x60, 0x04, 0x31, 0xF0, 0xC1, 0x47, 0x46, 0x0F, 0x60, 0x04, 0x31, 0x4F, 0x46, -0x0F, 0x60, 0x04, 0x31, 0x57, 0x46, 0x0F, 0x60, 0x04, 0x31, 0x5F, 0x46, 0x0F, 0x60, 0x04, 0x31, 0x02, 0x69, 0x0A, 0x60, -0x08, 0x31, 0x42, 0x69, 0x0A, 0x60, 0x04, 0x31, 0x82, 0x69, 0x0A, 0x60, 0x04, 0x31, 0xC2, 0x69, 0x0A, 0x60, 0x04, 0x31, -0x03, 0x46, 0x20, 0x33, 0x4F, 0xF4, 0x00, 0x76, 0x32, 0x42, 0x00, 0xD0, 0x04, 0x33, 0x75, 0x46, 0x4F, 0xF0, 0x10, 0x06, -0x35, 0x42, 0x00, 0xD1, 0x48, 0x33, 0x0C, 0x46, 0x10, 0x3C, 0x23, 0x60, 0xEF, 0xF3, 0x09, 0x82, 0x0A, 0x60, 0x04, 0x31, -0xEF, 0xF3, 0x08, 0x82, 0x0A, 0x60, 0x04, 0x31, 0x72, 0x46, 0x0A, 0x60, 0x04, 0x31, 0xEF, 0xF3, 0x14, 0x82, 0x0A, 0x60, -0x03, 0x4B, 0x60, 0x46, 0x01, 0x49, 0x98, 0x47, 0xFE, 0xE7, 0x00, 0x00, 0xE4, 0x60, 0x17, 0x00, 0x3D, 0xCA, 0x12, 0x00, -0x08, 0xB5, 0x08, 0x4B, 0x00, 0x22, 0x5A, 0x70, 0x18, 0xF0, 0x3E, 0xF8, 0x1A, 0xF0, 0x14, 0xFC, 0x05, 0x4B, 0xD3, 0xF8, -0xA8, 0x31, 0x98, 0x47, 0x16, 0xF0, 0x88, 0xFB, 0xBD, 0xE8, 0x08, 0x40, 0x18, 0xF0, 0x42, 0xB8, 0x70, 0x28, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x4B, 0x4E, 0x4C, 0x4A, 0x4C, 0x49, 0x4D, 0x48, 0x17, 0xF0, 0x6E, 0xFD, -0x33, 0x68, 0xDB, 0x78, 0x00, 0x2B, 0x40, 0xF0, 0x89, 0x80, 0x62, 0xB6, 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, -0xDF, 0xF8, 0x3C, 0x81, 0xDF, 0xF8, 0x3C, 0x91, 0x45, 0x4D, 0x46, 0x4F, 0x46, 0x4C, 0xDF, 0xF8, 0x38, 0xB1, 0x4F, 0xF0, -0x01, 0x0A, 0x33, 0x68, 0xDB, 0x78, 0xFB, 0xB9, 0x98, 0xF8, 0x00, 0x30, 0x13, 0xB3, 0x18, 0xF0, 0x71, 0xFE, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0xC9, 0xF8, 0x00, 0xA0, 0x2B, 0x68, 0x3A, 0x68, 0x01, 0x33, 0x2B, 0x60, -0xBA, 0xB1, 0x00, 0x2B, 0xE9, 0xD0, 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x20, 0x2B, 0x60, 0x00, 0x2B, 0xE3, 0xD1, 0x00, 0x2A, -0xE1, 0xD0, 0x62, 0xB6, 0x33, 0x68, 0xDB, 0x78, 0x00, 0x2B, 0xDF, 0xD0, 0xFF, 0xF7, 0x2C, 0xFD, 0x98, 0xF8, 0x00, 0x30, -0x00, 0x2B, 0xDC, 0xD1, 0x16, 0xF0, 0xF8, 0xFA, 0xD9, 0xE7, 0xD4, 0xF8, 0x7C, 0x32, 0x98, 0x47, 0x33, 0x68, 0xDB, 0x78, -0x00, 0x2B, 0x37, 0xD1, 0xDB, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x01, 0x2B, 0x17, 0xD0, 0xBF, 0xF3, 0x4F, 0x8F, 0x30, 0xBF, -0xBF, 0xF3, 0x6F, 0x8F, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0xD4, 0xF8, 0x78, 0x32, 0x98, 0x47, 0x00, 0x28, -0xF1, 0xD0, 0x33, 0x68, 0xDB, 0x78, 0x23, 0xBB, 0xD4, 0xF8, 0x84, 0x32, 0x98, 0x47, 0x2B, 0x68, 0x00, 0x2B, 0xB0, 0xD0, -0xC5, 0xE7, 0x1D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xE3, 0xD0, 0x1C, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x17, 0xD0, -0x01, 0x2B, 0x05, 0xD0, 0x00, 0x2B, 0xDA, 0xD1, 0x18, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xD6, 0xD0, 0x17, 0x4B, 0x5B, 0x78, -0x00, 0x2B, 0xD2, 0xD0, 0x16, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x53, 0x13, 0x60, 0xCC, 0xE7, 0xFF, 0xF7, 0xEA, 0xFC, -0xC4, 0xE7, 0xFF, 0xF7, 0xEF, 0xFC, 0xD7, 0xE7, 0xFB, 0xF7, 0x32, 0xFE, 0x00, 0x28, 0xEF, 0xD1, 0x0B, 0x4B, 0x1B, 0x68, -0x1B, 0x78, 0xDF, 0xE7, 0x10, 0x20, 0xFF, 0xF7, 0xB1, 0xFC, 0x72, 0xE7, 0x34, 0x36, 0x17, 0x00, 0xDC, 0xD1, 0x15, 0x00, -0x00, 0xD2, 0x15, 0x00, 0x1C, 0x8D, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x3D, 0x61, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x3C, 0x61, 0x17, 0x00, 0x70, 0x28, 0x17, 0x00, 0x00, 0x60, 0x50, 0x40, -0x3C, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xEF, 0xF3, 0x10, 0x83, -0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x72, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x71, 0x4C, 0x72, 0x4A, 0x23, 0x68, 0x72, 0x49, -0x72, 0x4D, 0x01, 0x33, 0x4F, 0xF4, 0x80, 0x60, 0x23, 0x60, 0x17, 0xF0, 0xF9, 0xFC, 0x4F, 0xF0, 0x00, 0x40, 0x16, 0xF0, -0x4D, 0xFA, 0xD5, 0xF8, 0xEC, 0x30, 0x98, 0x47, 0x6C, 0x4B, 0x6D, 0x4A, 0x19, 0x68, 0x21, 0xF0, 0x7F, 0x41, 0x19, 0x60, -0x19, 0x68, 0x41, 0xF0, 0x10, 0x01, 0x19, 0x60, 0x11, 0x69, 0x64, 0x31, 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, -0x66, 0x4E, 0xD5, 0xF8, 0x10, 0x24, 0x33, 0x68, 0x40, 0xF2, 0x11, 0x17, 0x3B, 0x43, 0x33, 0x60, 0x90, 0x47, 0x60, 0x49, -0x62, 0x4A, 0x0B, 0x68, 0xDF, 0xF8, 0xAC, 0xC1, 0x23, 0xF0, 0x10, 0x03, 0x0B, 0x60, 0x33, 0x68, 0x23, 0xF4, 0x88, 0x73, -0x23, 0xF0, 0x01, 0x03, 0x33, 0x60, 0x0B, 0x23, 0x10, 0x68, 0x13, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0xDB, 0x06, 0x18, 0xD5, -0x59, 0x4B, 0x40, 0xF2, 0x01, 0x2C, 0x19, 0x68, 0xC3, 0xF8, 0x00, 0xC0, 0x19, 0x60, 0x33, 0x68, 0xA2, 0xF5, 0x7C, 0x72, -0x1F, 0x43, 0x37, 0x60, 0x11, 0x68, 0x02, 0x31, 0x13, 0x68, 0x5B, 0x1A, 0x00, 0x2B, 0xFB, 0xDB, 0x4E, 0x4A, 0x13, 0x68, -0x23, 0xF4, 0x88, 0x73, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x4C, 0x4B, 0x18, 0x60, 0x0A, 0xF0, 0xBD, 0xFF, 0x00, 0x20, -0x16, 0xF0, 0x8E, 0xF8, 0x00, 0x28, 0x6C, 0xD0, 0x49, 0x4E, 0x09, 0xF0, 0xA1, 0xFB, 0xB3, 0x79, 0x00, 0x2B, 0x4F, 0xD0, -0x47, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x66, 0xD0, 0x33, 0x78, 0x00, 0x2B, 0x47, 0xD0, 0x44, 0x4B, 0x77, 0x79, -0x1A, 0x68, 0x96, 0xF9, 0x07, 0x30, 0x96, 0xF9, 0x04, 0xE0, 0xDF, 0xF8, 0x20, 0xC1, 0x41, 0x48, 0xDC, 0xF8, 0x00, 0x10, -0xD5, 0xF8, 0xE0, 0x81, 0x37, 0x4D, 0x02, 0xF0, 0x0F, 0x02, 0x17, 0x44, 0x7F, 0xB2, 0x3B, 0x44, 0x73, 0x45, 0xA8, 0xBF, -0x73, 0x46, 0x5F, 0xFA, 0x83, 0xFE, 0x21, 0xF0, 0xFF, 0x01, 0x41, 0xEA, 0x0E, 0x01, 0xCC, 0xF8, 0x00, 0x10, 0x02, 0x68, -0x22, 0xF0, 0xFF, 0x02, 0x42, 0xEA, 0x0E, 0x02, 0x02, 0x60, 0xDC, 0xF8, 0x00, 0x10, 0xDA, 0x1E, 0x5F, 0xFA, 0x82, 0xFE, -0x21, 0xF4, 0x7F, 0x21, 0x41, 0xEA, 0x0E, 0x31, 0xCC, 0xF8, 0x00, 0x10, 0x02, 0x68, 0xB6, 0xF8, 0x08, 0xC0, 0x22, 0xF4, -0x7F, 0x22, 0x42, 0xEA, 0x0E, 0x32, 0x02, 0x60, 0x2A, 0x69, 0x2A, 0x48, 0x5D, 0xB2, 0x4E, 0xF6, 0x60, 0x21, 0x01, 0xFB, -0x0C, 0x21, 0xF5, 0x71, 0xC0, 0x47, 0x00, 0x23, 0x26, 0x48, 0xB3, 0x71, 0x29, 0x46, 0x3A, 0x46, 0x17, 0xF0, 0xFC, 0xFB, -0x24, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x17, 0xF0, 0x47, 0xFC, 0x08, 0xF0, 0x85, 0xFE, 0x18, 0xB1, 0x4F, 0xF4, 0x80, 0x10, -0x16, 0xF0, 0x74, 0xF9, 0x23, 0x68, 0x33, 0xB1, 0x0D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0xBD, 0xE8, 0xF0, 0x81, 0x4F, 0xF0, 0x80, 0x60, 0x16, 0xF0, 0x89, 0xF9, 0x8D, 0xE7, 0x17, 0x4B, 0x1B, 0x68, -0x00, 0x22, 0x1A, 0x60, 0xF8, 0xF7, 0x8C, 0xFA, 0x33, 0x78, 0x00, 0x2B, 0xDA, 0xD0, 0xB3, 0x79, 0x00, 0x2B, 0x8F, 0xD1, -0xD6, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x30, 0x8E, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x00, 0x04, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x18, 0x00, 0x34, 0x40, 0x10, 0x05, 0x32, 0x40, -0x00, 0x10, 0x34, 0x40, 0x80, 0x35, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0x1C, 0x01, 0x32, 0x40, 0xD4, 0xB3, 0x33, 0x40, -0x8C, 0x35, 0x17, 0x00, 0x30, 0x8D, 0x15, 0x00, 0x40, 0x8D, 0x15, 0x00, 0x00, 0x38, 0x18, 0x00, 0x0C, 0x05, 0x32, 0x40, -0xAC, 0xB3, 0x33, 0x40, 0x22, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x01, 0xD0, 0x01, 0x20, 0x70, 0x47, 0x20, 0x4B, -0xD3, 0xF8, 0x04, 0x31, 0x1A, 0x03, 0x10, 0xB5, 0x16, 0xD4, 0x00, 0x22, 0x93, 0x00, 0x03, 0xF1, 0x60, 0x43, 0x03, 0xF5, -0x61, 0x43, 0x01, 0x2A, 0xD3, 0xF8, 0x00, 0x01, 0x1B, 0x68, 0x00, 0xEA, 0x03, 0x00, 0x04, 0xD0, 0x30, 0xB9, 0x02, 0x2A, -0x05, 0xD0, 0x01, 0x32, 0xEE, 0xE7, 0x30, 0xF4, 0x00, 0x23, 0xFA, 0xD0, 0x01, 0x20, 0x10, 0xBD, 0x12, 0x4B, 0x1C, 0x68, -0x41, 0xF6, 0x33, 0x70, 0x20, 0x40, 0xF7, 0xD1, 0x63, 0x00, 0x0F, 0xD4, 0x00, 0x2C, 0x07, 0xDA, 0x0E, 0x4B, 0xD3, 0xF8, -0x68, 0x34, 0x98, 0x47, 0x0D, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x1A, 0x60, 0x08, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0xC3, 0xF8, -0x84, 0x21, 0xD0, 0xE7, 0x07, 0x4B, 0xD3, 0xF8, 0x78, 0x34, 0x98, 0x47, 0x06, 0x4B, 0x4F, 0xF0, 0x80, 0x42, 0x1A, 0x60, -0xE6, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x00, 0xE1, 0x00, 0xE0, 0x1C, 0x41, 0x04, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x08, 0x41, 0x04, 0x40, 0x38, 0xB5, 0x3F, 0x4C, 0x3F, 0x4D, 0x23, 0x68, 0x3F, 0x49, 0x03, 0xF0, 0x0F, 0x03, 0x02, 0x20, -0x2B, 0x70, 0x17, 0xF0, 0x9F, 0xFB, 0x23, 0x68, 0x18, 0x07, 0x40, 0xD0, 0x3B, 0x49, 0x3C, 0x4A, 0x0B, 0x68, 0x00, 0x20, -0x23, 0xF0, 0x00, 0x43, 0x0B, 0x60, 0x20, 0x60, 0x13, 0x68, 0x59, 0x07, 0xFC, 0xD5, 0x38, 0x4B, 0x35, 0x49, 0x38, 0x4A, -0x04, 0x20, 0x18, 0x60, 0x0B, 0x68, 0x43, 0xF0, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x63, 0x13, 0x60, -0x33, 0x4B, 0x1B, 0x78, 0x01, 0x22, 0x6A, 0x70, 0x9B, 0xB1, 0x32, 0x49, 0x32, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x13, -0x0B, 0x60, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x2F, 0x4B, 0x19, 0x68, 0x21, 0xF0, 0x01, 0x01, 0x19, 0x60, 0x19, 0x68, -0x01, 0x20, 0x41, 0xF0, 0x02, 0x01, 0x19, 0x60, 0x10, 0x60, 0x20, 0x4B, 0x2A, 0x4A, 0x2B, 0x49, 0x20, 0x20, 0x18, 0x60, -0x13, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x26, 0xD0, 0x01, 0x2B, 0x06, 0xD0, -0x38, 0xBD, 0x1E, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x63, 0x13, 0x60, 0xD0, 0xE7, 0x22, 0x4A, 0x13, 0x68, 0x5B, 0x03, -0xFC, 0xD5, 0x21, 0x4A, 0x11, 0x69, 0x1C, 0x31, 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x1E, 0x49, 0x1F, 0x4A, -0x0B, 0x68, 0x43, 0xF4, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x6D, 0x43, 0xF4, 0x00, 0x43, 0x13, 0x65, 0xD3, 0x6D, 0x23, 0xF0, -0x03, 0x03, 0x43, 0xF0, 0x00, 0x43, 0x43, 0xF0, 0x01, 0x03, 0xD3, 0x65, 0x38, 0xBD, 0x17, 0x4B, 0x1A, 0x68, 0x42, 0xF0, -0x01, 0x02, 0x1A, 0x60, 0x1B, 0x68, 0x5A, 0x07, 0xD2, 0xD5, 0x14, 0x4B, 0x4F, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0x38, 0xBD, -0x38, 0x00, 0x32, 0x40, 0x70, 0x28, 0x17, 0x00, 0x50, 0x8D, 0x15, 0x00, 0x74, 0x80, 0x32, 0x40, 0x6C, 0x80, 0x32, 0x40, -0x70, 0x80, 0x32, 0x40, 0x48, 0x80, 0x32, 0x40, 0x3D, 0x61, 0x17, 0x00, 0x58, 0x40, 0x34, 0x40, 0x40, 0x42, 0x04, 0x40, -0x18, 0x00, 0x58, 0x40, 0x10, 0x00, 0x58, 0x40, 0x78, 0x36, 0x17, 0x00, 0x20, 0x10, 0x04, 0x40, 0x00, 0x10, 0x50, 0x40, -0x14, 0x00, 0x24, 0x40, 0x00, 0x60, 0x50, 0x40, 0x84, 0x40, 0x04, 0x40, 0x00, 0x41, 0x04, 0x40, 0x00, 0x28, 0x00, 0xF0, -0xE7, 0x80, 0x2D, 0xE9, 0xF8, 0x4F, 0x90, 0xF8, 0x64, 0x30, 0x04, 0x46, 0x0B, 0xB9, 0xBD, 0xE8, 0xF8, 0x8F, 0x83, 0x4B, -0x83, 0x4A, 0x84, 0x4F, 0xDF, 0xF8, 0x2C, 0x92, 0xDF, 0xF8, 0x64, 0x82, 0x82, 0x4E, 0x83, 0x48, 0x0D, 0x46, 0x83, 0x49, -0x4F, 0xF0, 0x02, 0x0B, 0xD1, 0xF8, 0x70, 0xC4, 0xC3, 0xF8, 0x80, 0xB1, 0x92, 0x68, 0x80, 0x49, 0xC2, 0xF8, 0x44, 0xC0, -0x01, 0x22, 0xC3, 0xF8, 0x00, 0xB0, 0x3A, 0x70, 0xD9, 0xF8, 0x10, 0x20, 0x0B, 0x68, 0x7A, 0x60, 0x23, 0xF0, 0x02, 0x03, -0x0B, 0x60, 0xD8, 0xF8, 0x00, 0x10, 0xB6, 0xF8, 0xB2, 0xC0, 0x8B, 0x8F, 0x01, 0x68, 0x63, 0x44, 0xB3, 0xEB, 0x41, 0x1F, -0x4F, 0xEA, 0x41, 0x1A, 0xD1, 0xD2, 0x74, 0x49, 0x58, 0x46, 0x17, 0xF0, 0xC9, 0xFA, 0xD9, 0xF8, 0x10, 0x20, 0xFB, 0x68, -0x9B, 0x1A, 0x00, 0x2B, 0x80, 0xF2, 0xB6, 0x80, 0xB4, 0xF8, 0x68, 0x20, 0x6E, 0x4B, 0xA8, 0x68, 0x41, 0xF2, 0x13, 0x31, -0x01, 0x2A, 0x5C, 0x5C, 0x40, 0xF2, 0x9F, 0x80, 0x01, 0x3A, 0x00, 0xFB, 0x02, 0xAA, 0x41, 0xF2, 0x13, 0x31, 0x52, 0x46, -0x5B, 0x5C, 0x68, 0x49, 0x02, 0x20, 0x17, 0xF0, 0xAD, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB6, 0xF8, 0xB2, 0x00, 0x9A, 0x8F, -0x60, 0x49, 0x64, 0x4B, 0xDF, 0xF8, 0xA8, 0xC1, 0x1C, 0x69, 0x0B, 0x68, 0x02, 0x44, 0xAA, 0xEB, 0x02, 0x02, 0x22, 0xF0, -0x03, 0x05, 0x03, 0xF0, 0x03, 0x03, 0x2B, 0x43, 0x5E, 0x4D, 0x0B, 0x60, 0x2B, 0x68, 0xBA, 0x60, 0x43, 0xF0, 0x01, 0x03, -0x2B, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0xDC, 0xF8, 0x00, 0x10, 0xC3, 0xF3, 0x09, 0x03, 0x21, 0xF4, 0x7F, 0x71, 0x43, 0xF0, -0x01, 0x03, 0x21, 0xF0, 0x03, 0x01, 0x0B, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0x2B, 0x68, 0x22, 0x44, 0x5B, 0x07, 0xFA, 0x60, -0x03, 0xD5, 0x52, 0x4B, 0x4F, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0x51, 0x49, 0x51, 0x4A, 0x0B, 0x68, 0x43, 0xF0, 0x08, 0x03, -0x0B, 0x60, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4E, 0x4C, 0x45, 0x49, 0x23, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x23, 0x60, -0x01, 0x23, 0x13, 0x60, 0x0B, 0x68, 0x45, 0x4A, 0x43, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x11, 0x69, 0x01, 0xF5, 0x96, 0x71, -0x13, 0x69, 0x5B, 0x1A, 0x00, 0x2B, 0xFB, 0xDB, 0x45, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x7F, 0xF4, 0x5D, 0xAF, -0x43, 0x49, 0x44, 0x4C, 0x4B, 0x6A, 0x24, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xDF, 0x03, 0x4B, 0x62, 0x4B, 0x6A, -0x23, 0xF4, 0x7F, 0x43, 0x43, 0xF4, 0x5F, 0x43, 0x4B, 0x62, 0xB4, 0xB1, 0x3D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x3F, 0xDB, 0xE3, 0x68, 0x62, 0x68, 0x3A, 0x49, 0x02, 0x20, 0x17, 0xF0, 0x3C, 0xFA, 0xB6, 0xF8, 0xB2, 0x10, -0xE2, 0x68, 0x2D, 0x4B, 0x52, 0x1A, 0x4F, 0xF4, 0x80, 0x20, 0x04, 0x21, 0x98, 0x60, 0x1A, 0x63, 0x99, 0x60, 0x34, 0x49, -0x2F, 0x4A, 0x0B, 0x68, 0x43, 0xF4, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x6D, 0x43, 0xF4, 0x00, 0x43, 0x13, 0x65, 0xD3, 0x6D, -0x23, 0xF0, 0x03, 0x03, 0x43, 0xF0, 0x00, 0x43, 0x43, 0xF0, 0x01, 0x03, 0xD3, 0x65, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x53, -0x13, 0x60, 0x1E, 0xE7, 0x70, 0x47, 0x41, 0xF2, 0x14, 0x32, 0x9C, 0x5C, 0x01, 0x2C, 0x7F, 0xF6, 0x5E, 0xAF, 0x5C, 0x5C, -0xDC, 0xB1, 0x5A, 0x5C, 0x01, 0x3A, 0x00, 0xFB, 0x02, 0xAA, 0x56, 0xE7, 0x14, 0x4A, 0x22, 0x49, 0x41, 0xF2, 0x13, 0x33, -0x58, 0x46, 0xD3, 0x5C, 0x52, 0x46, 0x17, 0xF0, 0x03, 0xFA, 0x54, 0xE7, 0x12, 0x69, 0xE3, 0x68, 0x9A, 0x1A, 0x10, 0x1A, -0x00, 0x28, 0xBA, 0xDA, 0x1B, 0x49, 0x1C, 0x48, 0x40, 0xF2, 0x4F, 0x22, 0x17, 0xF0, 0x20, 0xFC, 0xB2, 0xE7, 0x9A, 0x5C, -0x3A, 0xE7, 0x00, 0xBF, 0x00, 0xE1, 0x00, 0xE0, 0x00, 0xED, 0x00, 0xE0, 0x3C, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, -0x40, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x84, 0x00, 0x32, 0x40, 0x54, 0x8D, 0x15, 0x00, 0x00, 0x40, 0x1E, 0x00, -0x70, 0x8D, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x84, 0x40, 0x04, 0x40, 0x00, 0x41, 0x04, 0x40, 0x10, 0x00, 0x58, 0x40, -0x40, 0x42, 0x04, 0x40, 0x18, 0x00, 0x58, 0x40, 0x78, 0x36, 0x17, 0x00, 0x00, 0x60, 0x50, 0x40, 0xD0, 0x9C, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0xC8, 0x8D, 0x15, 0x00, 0x14, 0x00, 0x24, 0x40, 0x5C, 0x8D, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, -0x80, 0x8D, 0x15, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x70, 0xB5, 0x45, 0x4C, 0x21, 0x68, 0x0B, 0x78, 0x73, 0xB9, 0x44, 0x4B, -0x44, 0x4D, 0x9B, 0x68, 0x01, 0x22, 0x2A, 0x70, 0x00, 0x2B, 0x3E, 0xD1, 0x0A, 0x78, 0x42, 0x49, 0x01, 0x23, 0x02, 0x20, -0x17, 0xF0, 0xAC, 0xF9, 0x01, 0x23, 0x2B, 0x70, 0x3F, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x40, 0xD0, 0x02, 0x2B, -0x28, 0xD0, 0x11, 0xF0, 0x8F, 0xFD, 0x28, 0xB3, 0x3B, 0x4B, 0xD3, 0xF8, 0xF8, 0x31, 0x0B, 0xBB, 0x3A, 0x4B, 0x3B, 0x4D, -0x1B, 0x68, 0x95, 0xF8, 0x24, 0x20, 0xC3, 0xF3, 0x40, 0x63, 0x13, 0x43, 0x18, 0xD0, 0x6B, 0x7F, 0xB3, 0xB9, 0x37, 0x4E, -0xD6, 0xF8, 0xF4, 0x30, 0x98, 0x47, 0x88, 0xB1, 0xF8, 0xF7, 0x7E, 0xFB, 0x34, 0x4A, 0xC0, 0xB2, 0x10, 0x70, 0x00, 0x28, -0x35, 0xD0, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD8, 0xD6, 0xF8, 0xB4, 0x34, 0x98, 0x47, 0x23, 0x68, 0x1B, 0x78, -0x02, 0x2B, 0x22, 0xD0, 0x70, 0xBD, 0x93, 0xF8, 0x64, 0x20, 0x42, 0xB9, 0x1B, 0x68, 0x00, 0x2B, 0xC0, 0xD0, 0x93, 0xF8, -0x62, 0x20, 0x00, 0x2A, 0xF5, 0xD0, 0x02, 0x2A, 0xF6, 0xD1, 0x0A, 0x78, 0x1F, 0x49, 0x00, 0x23, 0x02, 0x20, 0x17, 0xF0, -0x67, 0xF9, 0x00, 0x23, 0x2B, 0x70, 0x70, 0xBD, 0x23, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x15, 0xD0, 0xFB, 0xF7, 0x5A, 0xFA, -0x00, 0x28, 0xE1, 0xD0, 0x1E, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xB4, 0xD0, 0x70, 0xBD, 0x28, 0x6A, 0xD6, 0xF8, 0xB8, 0x34, -0xD0, 0xF8, 0xE4, 0x10, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x19, 0x49, 0x02, 0x20, 0x17, 0xF0, 0x4B, 0xF9, 0xC4, 0xE7, -0xF8, 0xF7, 0x3C, 0xFB, 0x13, 0x4B, 0x18, 0x70, 0xFB, 0xF7, 0x40, 0xFA, 0x18, 0xB1, 0x10, 0x4B, 0xD3, 0xF8, 0xB4, 0x34, -0x98, 0x47, 0x12, 0x4A, 0x13, 0x68, 0x5B, 0x03, 0xFC, 0xD5, 0x11, 0x4A, 0x11, 0x69, 0x1C, 0x31, 0x13, 0x69, 0xCB, 0x1A, -0x00, 0x2B, 0xFB, 0xDA, 0x70, 0xBD, 0x00, 0xBF, 0x74, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x3C, 0x61, 0x17, 0x00, -0xD8, 0x8D, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x3D, 0x61, 0x17, 0x00, 0x9C, 0x4E, 0x17, 0x00, 0xD4, 0x8D, 0x15, 0x00, 0x20, 0x10, 0x04, 0x40, -0x00, 0x10, 0x50, 0x40, 0x38, 0xB5, 0x43, 0x4D, 0x6B, 0x78, 0x03, 0xB9, 0x38, 0xBD, 0x42, 0x48, 0x42, 0x49, 0x03, 0x68, -0x42, 0x4A, 0x23, 0xF0, 0x10, 0x03, 0x03, 0x60, 0x4B, 0x6F, 0x43, 0xF0, 0x10, 0x03, 0x4B, 0x67, 0x13, 0x68, 0x23, 0xF0, -0x00, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x3C, 0x4C, 0x3C, 0x49, 0x23, 0x68, 0x43, 0xF0, 0x00, 0x43, -0x23, 0x60, 0x02, 0x20, 0x17, 0xF0, 0xF6, 0xF8, 0x00, 0x23, 0x22, 0x46, 0x6B, 0x70, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD5, -0x36, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x3C, 0xDB, 0x31, 0x4B, 0x34, 0x4A, 0x19, 0x68, 0x21, 0xF0, -0x80, 0x41, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF0, 0x00, 0x41, 0x19, 0x60, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x2F, 0x4B, -0x2F, 0x48, 0x19, 0x68, 0x2F, 0x4C, 0x41, 0xF0, 0x01, 0x01, 0x19, 0x60, 0x19, 0x68, 0x01, 0x25, 0x21, 0xF0, 0x02, 0x01, -0x19, 0x60, 0x15, 0x60, 0x03, 0x68, 0x43, 0xF4, 0x00, 0x13, 0x03, 0x60, 0x23, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x2E, 0xD0, -0x01, 0x2B, 0x26, 0xD0, 0x26, 0x4B, 0x1B, 0x78, 0x53, 0xB1, 0x1D, 0x4A, 0x25, 0x49, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x73, -0x13, 0x60, 0x02, 0x20, 0xBD, 0xE8, 0x38, 0x40, 0x17, 0xF0, 0xB8, 0xB8, 0x16, 0x4A, 0x20, 0x49, 0x53, 0x6F, 0x23, 0xF0, -0x10, 0x03, 0x53, 0x67, 0x02, 0x20, 0xBD, 0xE8, 0x38, 0x40, 0x17, 0xF0, 0xAD, 0xB8, 0x1C, 0x4B, 0x2A, 0x78, 0x1B, 0x68, -0x03, 0xF0, 0x0F, 0x03, 0x9A, 0x42, 0xBB, 0xD0, 0x19, 0x49, 0x1A, 0x48, 0x4F, 0xF4, 0x3A, 0x72, 0x17, 0xF0, 0xCA, 0xFA, -0xB4, 0xE7, 0x18, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x43, 0x13, 0x60, 0xD2, 0xE7, 0x16, 0x4A, 0x13, 0x68, 0x23, 0xF0, -0x01, 0x03, 0x13, 0x60, 0x0D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xCC, 0xD1, 0xD6, 0xE7, 0x00, 0xBF, 0x70, 0x28, 0x17, 0x00, -0x10, 0x00, 0x58, 0x40, 0x00, 0x00, 0x50, 0x40, 0xE0, 0x50, 0x34, 0x40, 0x48, 0x80, 0x32, 0x40, 0xEC, 0x8D, 0x15, 0x00, -0x38, 0x36, 0x17, 0x00, 0x40, 0x42, 0x04, 0x40, 0x18, 0x00, 0x58, 0x40, 0x58, 0x40, 0x34, 0x40, 0x78, 0x36, 0x17, 0x00, -0x4C, 0x36, 0x17, 0x00, 0x28, 0x8E, 0x15, 0x00, 0x38, 0x00, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0xF0, 0x8D, 0x15, 0x00, -0x14, 0x00, 0x24, 0x40, 0x84, 0x40, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x47, 0x1F, 0x48, 0x20, 0x4D, 0x15, 0xF0, 0x36, 0xFE, -0x1F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0x1D, 0x4E, 0x28, 0x68, 0xDF, 0xF8, 0x7C, 0x90, -0xDF, 0xF8, 0x60, 0x80, 0xD9, 0xF8, 0x00, 0x30, 0x1A, 0x89, 0x54, 0x24, 0x02, 0xFB, 0x04, 0x42, 0x00, 0x21, 0xF2, 0xF7, -0x91, 0xFD, 0x4F, 0xF0, 0x00, 0x0A, 0x58, 0x27, 0x29, 0x68, 0x33, 0x68, 0x1F, 0xFA, 0x8A, 0xF2, 0x04, 0xFB, 0x02, 0x11, -0x07, 0xFB, 0x02, 0x33, 0xCB, 0x64, 0x40, 0x46, 0x15, 0xF0, 0x16, 0xFE, 0xD9, 0xF8, 0x00, 0x30, 0x0A, 0xF1, 0x01, 0x0A, -0x1A, 0x89, 0x1F, 0xFA, 0x8A, 0xF3, 0x9A, 0x42, 0xEA, 0xD2, 0xBD, 0xE8, 0xF0, 0x87, 0x28, 0x68, 0x08, 0x4E, 0x10, 0xB1, -0x33, 0x68, 0x00, 0x2B, 0xD2, 0xD1, 0x07, 0x48, 0x07, 0x49, 0x5B, 0x22, 0x17, 0xF0, 0x54, 0xFA, 0x28, 0x68, 0xCB, 0xE7, -0x20, 0x58, 0x17, 0x00, 0x40, 0x61, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x14, 0x63, 0x18, 0x00, 0x40, 0x8E, 0x15, 0x00, -0x70, 0x79, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, 0x0D, 0x49, 0x00, 0xEB, 0xC0, 0x03, 0x10, 0xB4, 0x9C, 0x00, 0x00, 0x22, -0x01, 0xEB, 0x83, 0x03, 0x16, 0x30, 0x0A, 0x51, 0x01, 0xEB, 0xC0, 0x00, 0x4F, 0xF4, 0x55, 0x64, 0x4F, 0xF0, 0xFF, 0x31, -0xC3, 0xE9, 0x02, 0x41, 0xC0, 0xE9, 0x01, 0x22, 0x5D, 0xF8, 0x04, 0x4B, 0x5A, 0x60, 0x83, 0xF8, 0x20, 0x20, 0x5A, 0x61, -0x19, 0x61, 0x70, 0x47, 0x44, 0x61, 0x17, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x80, 0x6C, 0x18, 0xB1, 0xF9, 0xF7, 0xCE, 0xFE, -0x00, 0x23, 0xA3, 0x64, 0x10, 0xBD, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x41, 0x38, 0x4C, 0xDF, 0xF8, 0xF0, 0x80, 0x38, 0x4F, -0x38, 0x4D, 0x04, 0xF5, 0x20, 0x76, 0xC4, 0xF8, 0x00, 0x80, 0xF3, 0xF7, 0x0F, 0xFE, 0x80, 0x03, 0x60, 0x60, 0xF3, 0xF7, -0x0B, 0xFE, 0x01, 0x23, 0x01, 0x30, 0x03, 0xFA, 0x00, 0xF0, 0x01, 0x38, 0x00, 0x23, 0xC4, 0xE9, 0x02, 0x03, 0xC4, 0xE9, -0x05, 0x33, 0xC4, 0xE9, 0x07, 0x33, 0x27, 0x61, 0x2B, 0x68, 0x2A, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, -0x63, 0x62, 0x2B, 0x68, 0x2A, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0xA3, 0x62, 0x2B, 0x68, 0x2A, 0x68, -0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0xE3, 0x62, 0x2B, 0x68, 0x2A, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, -0x13, 0x43, 0x4F, 0xF4, 0x08, 0x51, 0x4F, 0xF4, 0x7C, 0x12, 0xA2, 0x63, 0xC4, 0xE9, 0x0C, 0x31, 0x40, 0x34, 0xB4, 0x42, -0xC5, 0xD1, 0x1B, 0x4C, 0x1B, 0x4F, 0x18, 0x4E, 0xDF, 0xF8, 0x60, 0x80, 0x04, 0xF5, 0x80, 0x75, 0x27, 0x60, 0xF3, 0xF7, -0xCF, 0xFD, 0x80, 0x03, 0x60, 0x60, 0xF3, 0xF7, 0xCB, 0xFD, 0x01, 0x23, 0x01, 0x30, 0x03, 0xFA, 0x00, 0xF0, 0x01, 0x38, -0x00, 0x23, 0xC4, 0xE9, 0x02, 0x03, 0xC4, 0xE9, 0x05, 0x33, 0xC4, 0xE9, 0x07, 0x33, 0x26, 0x61, 0xD8, 0xF8, 0x00, 0x20, -0xD8, 0xF8, 0x00, 0x10, 0xA3, 0x62, 0x12, 0x02, 0xC9, 0xB2, 0x92, 0xB2, 0x0A, 0x43, 0x4F, 0xF4, 0x7C, 0x11, 0x62, 0x62, -0xC4, 0xE9, 0x0B, 0x33, 0xC4, 0xE9, 0x0D, 0x31, 0x40, 0x34, 0xAC, 0x42, 0xD8, 0xD1, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, -0x04, 0x39, 0x18, 0x00, 0x04, 0x07, 0xFF, 0xFF, 0xA0, 0x00, 0x32, 0x40, 0x04, 0x38, 0x18, 0x00, 0x1E, 0xAB, 0xDC, 0xBA, -0xF0, 0xB5, 0x16, 0x4C, 0x24, 0x68, 0x24, 0x78, 0x1D, 0x46, 0xE3, 0x07, 0x87, 0xB0, 0x16, 0x46, 0x06, 0xD5, 0x50, 0x19, -0x00, 0x21, 0x08, 0x22, 0xF2, 0xF7, 0xA8, 0xFC, 0x07, 0xB0, 0xF0, 0xBD, 0xC3, 0x7E, 0x00, 0x93, 0x02, 0xAC, 0x07, 0x46, -0x07, 0xF1, 0x12, 0x03, 0x20, 0x46, 0x07, 0xF1, 0x0C, 0x02, 0x1A, 0xF0, 0xE7, 0xFF, 0x2A, 0x46, 0x31, 0x46, 0x20, 0x46, -0x1B, 0xF0, 0x08, 0xF8, 0x20, 0x46, 0x1B, 0xF0, 0xA3, 0xF8, 0x35, 0x44, 0x21, 0x46, 0x04, 0xAA, 0x60, 0x1A, 0x14, 0xF8, -0x01, 0x3B, 0x43, 0x55, 0x94, 0x42, 0xF9, 0xD1, 0x07, 0xB0, 0xF0, 0xBD, 0x34, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x83, 0x6C, 0x90, 0xF8, 0x42, 0xA0, 0x90, 0xF8, 0x33, 0x40, 0x90, 0xF8, 0x35, 0x20, 0x87, 0x88, 0x90, 0xF8, 0x32, 0x80, -0xD3, 0xF8, 0x24, 0xC0, 0xC6, 0x6C, 0x93, 0xF8, 0x20, 0xE0, 0xA3, 0xEB, 0x0A, 0x05, 0xA8, 0x35, 0x22, 0x44, 0x01, 0x3F, -0xAA, 0xEB, 0x04, 0x04, 0x3A, 0x44, 0x08, 0xEB, 0x05, 0x09, 0x2C, 0xF0, 0x02, 0x07, 0x04, 0xEB, 0x09, 0x0B, 0x5F, 0x62, -0x54, 0x19, 0x03, 0xF1, 0x0C, 0x0A, 0xB8, 0xF1, 0x00, 0x0F, 0x03, 0xD0, 0x09, 0xF1, 0xFF, 0x32, 0xC6, 0xE9, 0x09, 0x52, -0xF2, 0x6C, 0xC3, 0xF8, 0x14, 0xB0, 0x00, 0x25, 0x42, 0xF4, 0x80, 0x72, 0x1C, 0xF0, 0x01, 0x0F, 0x9C, 0x61, 0x1D, 0x61, -0xC6, 0xF8, 0x20, 0xA0, 0xDD, 0x61, 0xF2, 0x64, 0x16, 0xD1, 0x40, 0x6A, 0x00, 0xF4, 0x60, 0x14, 0xB4, 0xF5, 0x60, 0x1F, -0x01, 0xD0, 0x80, 0x02, 0x0E, 0xD4, 0x09, 0x48, 0x71, 0x44, 0x01, 0xEB, 0xC1, 0x01, 0x00, 0xEB, 0x81, 0x01, 0x47, 0xF0, -0x01, 0x07, 0x91, 0xF8, 0x20, 0x00, 0x5F, 0x62, 0x01, 0x30, 0x81, 0xF8, 0x20, 0x00, 0xF2, 0x64, 0x00, 0x22, 0x1A, 0x61, -0xBD, 0xE8, 0xF0, 0x8F, 0x44, 0x61, 0x17, 0x00, 0x0A, 0x88, 0x03, 0x7F, 0x0A, 0x49, 0x12, 0xF4, 0x00, 0x5F, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x03, 0x12, 0x4F, 0xF4, 0xA4, 0x60, 0x92, 0xF8, 0xDA, 0x20, 0x00, 0xFB, 0x03, 0x13, 0x14, 0xBF, -0x42, 0xF0, 0x02, 0x02, 0x02, 0xF0, 0xFD, 0x02, 0x83, 0xF8, 0xDA, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x43, 0x6A, 0x2D, 0xE9, 0xF0, 0x47, 0x91, 0x46, 0x9A, 0x02, 0xD0, 0xF8, 0x48, 0x80, 0x06, 0x46, 0x0F, 0x46, 0x29, 0xD5, -0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x24, 0xD0, 0x50, 0x4C, 0x88, 0xF8, 0x20, 0x90, 0xD4, 0xF8, 0x80, 0x33, -0x39, 0x46, 0x30, 0x46, 0x98, 0x47, 0x31, 0x8B, 0x48, 0xF6, 0x88, 0x63, 0x99, 0x42, 0x68, 0xD0, 0x4A, 0x4B, 0xB1, 0x6C, -0x93, 0xF8, 0x05, 0x31, 0x00, 0x2B, 0x59, 0xD1, 0xB3, 0x68, 0x00, 0x2B, 0x49, 0xDB, 0x4B, 0x6A, 0x46, 0x4A, 0xCA, 0x60, -0x23, 0xF0, 0x10, 0x03, 0x4B, 0x62, 0x30, 0x46, 0xD4, 0xF8, 0x04, 0x34, 0x8E, 0x60, 0x3A, 0x46, 0x98, 0x47, 0x00, 0x20, -0xBD, 0xE8, 0xF0, 0x87, 0xD6, 0xF8, 0x2C, 0xA0, 0x08, 0xF1, 0x24, 0x04, 0x0A, 0xF1, 0x40, 0x00, 0x53, 0x46, 0x53, 0xF8, -0x04, 0x5B, 0x44, 0xF8, 0x04, 0x5F, 0x83, 0x42, 0xF9, 0xD1, 0xF3, 0x8B, 0x9D, 0x04, 0xCA, 0xD5, 0x38, 0x4B, 0x39, 0x49, -0x1A, 0x68, 0x73, 0x7F, 0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, 0x00, 0x2A, 0xD3, 0xF8, -0x4C, 0x41, 0x38, 0xDB, 0x41, 0x46, 0xDA, 0xF8, 0x14, 0x20, 0xD4, 0xF8, 0x9C, 0x30, 0xC8, 0xF8, 0x40, 0x20, 0xDA, 0xF8, -0x24, 0x20, 0xC8, 0xF8, 0x50, 0x20, 0xC3, 0xF3, 0xC2, 0x22, 0x05, 0x2A, 0xC8, 0xF8, 0x3C, 0x30, 0x31, 0xD0, 0xDA, 0xF8, -0x3C, 0x30, 0x5C, 0x07, 0x5E, 0xBF, 0xD8, 0xF8, 0x2C, 0x30, 0x23, 0xF4, 0xC0, 0x73, 0xC8, 0xF8, 0x2C, 0x30, 0x88, 0x46, -0x9F, 0xE7, 0x32, 0x8B, 0x33, 0x65, 0x48, 0xF6, 0x88, 0x63, 0x9A, 0x42, 0xAF, 0xD1, 0x8B, 0x6B, 0x23, 0xF4, 0x7F, 0x43, -0x43, 0xF4, 0x60, 0x63, 0x8B, 0x63, 0xA8, 0xE7, 0xF2, 0x8B, 0x10, 0x07, 0xA5, 0xD4, 0xB2, 0x68, 0x52, 0x00, 0x58, 0xBF, -0x81, 0xF8, 0x39, 0x30, 0x9F, 0xE7, 0xF3, 0x6C, 0x19, 0x48, 0xDA, 0x6A, 0x16, 0xF0, 0xFA, 0xFD, 0x90, 0xE7, 0x00, 0x2C, -0xC4, 0xD1, 0x17, 0x49, 0x17, 0x48, 0x40, 0xF2, 0x4B, 0x12, 0x17, 0xF0, 0x6B, 0xF8, 0xB1, 0x6C, 0xBD, 0xE7, 0x03, 0xF4, -0xC0, 0x63, 0xD8, 0xF8, 0x4C, 0x20, 0x94, 0xF8, 0xA1, 0x00, 0xB3, 0xF5, 0x80, 0x6F, 0x14, 0xBF, 0x4F, 0xF4, 0x80, 0x34, -0x4F, 0xF4, 0x00, 0x34, 0x22, 0xF4, 0x40, 0x33, 0x23, 0x43, 0x20, 0xB1, 0x43, 0xF4, 0x80, 0x23, 0xC8, 0xF8, 0x4C, 0x30, -0xB7, 0xE7, 0x23, 0xF4, 0x80, 0x23, 0xC8, 0xF8, 0x4C, 0x30, 0xB2, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, -0xDE, 0xFA, 0xFE, 0xCA, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x78, 0x8E, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, -0x68, 0x8E, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x43, 0x43, 0x6A, 0x85, 0x6C, 0x13, 0xF4, 0x00, 0x18, 0x83, 0xB0, 0x04, 0x46, -0x05, 0xF1, 0x28, 0x07, 0x08, 0xD0, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x00, 0xF0, 0x93, 0x80, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x83, 0xC3, 0x8B, 0xC6, 0x6C, 0x1A, 0x07, 0x38, 0xD5, 0xDF, 0xF8, 0x58, 0x92, 0xD9, 0xF8, 0x00, 0x20, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0xCF, 0x80, 0x71, 0x6A, 0x09, 0xB9, 0x32, 0x6A, 0x91, 0x68, 0x18, 0x06, -0x09, 0xD5, 0x94, 0xF8, 0x33, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xDD, 0x80, 0x94, 0xF8, 0x35, 0x30, 0x00, 0x2B, 0x40, 0xF0, -0xDF, 0x80, 0xF3, 0x6C, 0x23, 0xF4, 0xF0, 0x03, 0xF3, 0x64, 0x0B, 0x79, 0xB7, 0x63, 0x13, 0xF0, 0x01, 0x0F, 0x08, 0xBF, -0x4F, 0xF4, 0x00, 0x78, 0x00, 0x23, 0xC6, 0xF8, 0x48, 0x80, 0x33, 0x65, 0xEB, 0x6A, 0x2A, 0x6E, 0x72, 0x63, 0x43, 0xF0, -0x02, 0x03, 0xEB, 0x62, 0x20, 0x46, 0x06, 0xF0, 0xBB, 0xF8, 0xA2, 0x6C, 0x53, 0x6A, 0x43, 0xF0, 0x10, 0x03, 0x53, 0x62, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x74, 0x4B, 0xD3, 0xF8, 0x28, 0x34, 0x98, 0x47, 0xEB, 0x6D, 0xB3, 0x64, 0x22, 0x7F, -0x71, 0x49, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x12, 0x92, 0xF8, 0x62, 0x20, 0x5A, 0xBB, 0x6E, 0x49, 0x62, 0x7F, -0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x02, 0x12, 0x52, 0x68, 0x91, 0x06, 0x22, 0xD5, 0xE2, 0x8B, 0x12, 0xF4, 0x00, 0x5F, -0xE2, 0x6A, 0xD2, 0x6B, 0x14, 0xBF, 0xC2, 0xF3, 0x00, 0x12, 0xC2, 0xF3, 0xC0, 0x02, 0xBA, 0xB9, 0x70, 0x6A, 0x02, 0x88, -0x91, 0xB2, 0x12, 0x04, 0x12, 0xD5, 0xC1, 0xF3, 0x0E, 0x01, 0x01, 0x80, 0x94, 0xF8, 0x33, 0x10, 0x94, 0xF8, 0x32, 0x20, -0x04, 0x39, 0x04, 0x3A, 0x84, 0xF8, 0x33, 0x10, 0x84, 0xF8, 0x32, 0x20, 0xD6, 0xE9, 0x0A, 0x21, 0x04, 0x39, 0x04, 0x3A, -0xC6, 0xE9, 0x0A, 0x21, 0xDF, 0xF8, 0x70, 0x81, 0xB7, 0x63, 0xD8, 0xF8, 0x00, 0x20, 0xE7, 0x6C, 0xB2, 0xF9, 0x00, 0x20, -0x00, 0x2A, 0x4F, 0xDB, 0x7A, 0x6A, 0x0A, 0xB9, 0x3A, 0x6A, 0x92, 0x68, 0x23, 0xF4, 0xC0, 0x63, 0xB3, 0x64, 0x12, 0x79, -0xD2, 0x07, 0x5C, 0xBF, 0x43, 0xF4, 0x00, 0x73, 0xB3, 0x64, 0x9B, 0xE7, 0x83, 0x6A, 0x46, 0x6C, 0xC3, 0xF3, 0xC2, 0x22, -0x05, 0x2A, 0x37, 0x63, 0x15, 0xD1, 0x03, 0xF4, 0xC0, 0x63, 0xEA, 0x6C, 0x90, 0xF8, 0x36, 0x10, 0xB3, 0xF5, 0x80, 0x6F, -0x14, 0xBF, 0x4F, 0xF4, 0x80, 0x33, 0x4F, 0xF4, 0x00, 0x33, 0x22, 0xF4, 0x40, 0x32, 0x1A, 0x43, 0x89, 0x06, 0x4C, 0xBF, -0x42, 0xF4, 0x80, 0x22, 0x22, 0xF4, 0x80, 0x22, 0xEA, 0x64, 0x04, 0xF1, 0x28, 0x00, 0x04, 0xF0, 0xDD, 0xF9, 0xD4, 0xF8, -0x48, 0xC0, 0xA2, 0x6A, 0xB0, 0x88, 0xDC, 0xF8, 0x24, 0x30, 0xE9, 0x6D, 0xEA, 0x63, 0xEA, 0x6A, 0x40, 0xF0, 0x08, 0x04, -0xB4, 0x80, 0x41, 0xF4, 0xC0, 0x60, 0x2C, 0x6E, 0xF4, 0x62, 0x42, 0xF0, 0x02, 0x02, 0x30, 0x64, 0x43, 0xF0, 0x10, 0x03, -0xEA, 0x62, 0x39, 0x46, 0x06, 0xF5, 0x82, 0x70, 0x34, 0x22, 0xCC, 0xF8, 0x24, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, -0x29, 0xF0, 0xFE, 0xB9, 0xA2, 0x6C, 0x00, 0x2A, 0x3C, 0xD0, 0x7A, 0x6A, 0x00, 0x2A, 0xAD, 0xD1, 0x3A, 0x6A, 0x92, 0xB1, -0xB3, 0x6C, 0xA8, 0xE7, 0x2D, 0xB3, 0x71, 0x6A, 0x00, 0x29, 0x7F, 0xF4, 0x30, 0xAF, 0x32, 0x6A, 0x0A, 0xB1, 0xE3, 0x8B, -0x2A, 0xE7, 0x23, 0x49, 0x23, 0x48, 0x40, 0xF2, 0xB9, 0x12, 0x16, 0xF0, 0x3F, 0xFF, 0x32, 0x6A, 0xF5, 0xE7, 0x1F, 0x49, -0x1F, 0x48, 0x40, 0xF2, 0xB9, 0x12, 0x16, 0xF0, 0x37, 0xFF, 0x3A, 0x6A, 0xE4, 0xE7, 0x20, 0x22, 0x20, 0x46, 0x01, 0x91, -0x22, 0xF0, 0xD8, 0xF8, 0x01, 0x99, 0x20, 0xE7, 0xA2, 0x88, 0x01, 0x91, 0x20, 0x46, 0x23, 0xF0, 0x87, 0xFA, 0x01, 0x99, -0x19, 0xE7, 0x14, 0x49, 0x15, 0x48, 0x4F, 0xF4, 0xD9, 0x72, 0x16, 0xF0, 0x21, 0xFF, 0x71, 0x6A, 0xA9, 0xB9, 0xD9, 0xF8, -0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xCF, 0xDB, 0xD8, 0xE7, 0x4F, 0xF4, 0xD9, 0x72, 0x0B, 0x49, 0x0D, 0x48, -0x16, 0xF0, 0x12, 0xFF, 0x7A, 0x6A, 0x42, 0xB9, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xB7, 0xDB, -0xD1, 0xE7, 0xE3, 0x8B, 0xED, 0xE6, 0xB3, 0x6C, 0x60, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xAC, 0x8E, 0x15, 0x00, 0x8C, 0x8E, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, -0x05, 0x28, 0x1C, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x07, 0x0B, 0x0F, 0x13, 0x17, 0x03, 0x12, 0x4B, 0x20, 0x22, 0x1A, 0x60, -0x70, 0x47, 0x10, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x0E, 0x4B, 0x04, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x0C, 0x4B, -0x08, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x0A, 0x4B, 0x10, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x08, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0x70, 0x47, 0x07, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x04, 0x49, 0x05, 0x48, -0x4F, 0xF4, 0x77, 0x72, 0x16, 0xF0, 0xCA, 0xBE, 0x80, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x05, 0x28, 0x85, 0xB0, 0x06, 0x46, 0x00, 0xF0, 0xE5, 0x81, 0xAE, 0x4C, -0x00, 0xEB, 0x40, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x04, 0xEB, 0x83, 0x04, 0xAB, 0x4B, 0xAC, 0x4F, 0xDF, 0xF8, 0xD4, 0x92, -0x01, 0x22, 0x19, 0x46, 0xB2, 0x40, 0x71, 0x18, 0x00, 0x92, 0xA3, 0x7E, 0x02, 0x91, 0xD2, 0x43, 0x4F, 0xEA, 0x81, 0x08, -0x01, 0x92, 0x00, 0x2B, 0x3A, 0xD0, 0x3B, 0x68, 0x65, 0x6A, 0x5B, 0x78, 0xD5, 0xF8, 0x8C, 0x20, 0x00, 0x2B, 0x00, 0xF0, -0x8B, 0x80, 0x69, 0x6D, 0x00, 0x29, 0x00, 0xF0, 0x11, 0x81, 0x00, 0x2A, 0x80, 0xF2, 0x29, 0x81, 0x9D, 0x49, 0xD9, 0xF8, -0x00, 0x30, 0x51, 0xF8, 0x26, 0x10, 0x0B, 0x44, 0x11, 0x02, 0xC8, 0xF8, 0x00, 0x30, 0x40, 0xF1, 0xA2, 0x80, 0xAB, 0x88, -0x99, 0x06, 0x40, 0xF1, 0x43, 0x81, 0x97, 0x4A, 0x43, 0xF0, 0x10, 0x03, 0x52, 0xF8, 0x26, 0x00, 0xAB, 0x80, 0x15, 0xF0, -0x87, 0xF9, 0x94, 0xF8, 0x50, 0x30, 0x3A, 0x68, 0x01, 0x3B, 0x84, 0xF8, 0x50, 0x30, 0x00, 0x23, 0xA3, 0x76, 0x63, 0x62, -0x53, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0x6B, 0x6D, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0xA5, 0x62, 0xEB, 0x7A, -0x01, 0x33, 0xEB, 0x72, 0xE5, 0x68, 0x00, 0x2D, 0x00, 0xF0, 0x90, 0x81, 0xD5, 0xF8, 0x4C, 0xB0, 0xDB, 0xF8, 0x50, 0xA0, -0xBA, 0xF1, 0x00, 0x0F, 0x80, 0xF2, 0xA9, 0x81, 0x30, 0x46, 0xCB, 0xF8, 0x10, 0xA0, 0x04, 0xF0, 0x03, 0xF9, 0x6A, 0x6A, -0x12, 0xF4, 0x00, 0x10, 0x11, 0xD1, 0xDB, 0xF8, 0x18, 0x10, 0x00, 0x29, 0x00, 0xF0, 0x97, 0x80, 0x8B, 0x6B, 0x03, 0xF4, -0x60, 0x13, 0xB3, 0xF5, 0x00, 0x1F, 0x8C, 0x46, 0x00, 0xF0, 0x29, 0x81, 0xDC, 0xF8, 0x3C, 0x30, 0x00, 0x2B, 0x80, 0xF2, -0x9D, 0x81, 0x1A, 0xF4, 0x00, 0x0F, 0x0B, 0xD0, 0x6B, 0x7F, 0x0D, 0x2B, 0x08, 0xD8, 0x73, 0x48, 0x73, 0x49, 0x4F, 0xF4, -0x1E, 0x7C, 0x0C, 0xFB, 0x03, 0x03, 0x09, 0x69, 0xC3, 0xF8, 0x58, 0x12, 0x02, 0xF4, 0x60, 0x12, 0xB2, 0xF5, 0x60, 0x1F, -0x00, 0xF0, 0x9E, 0x80, 0x04, 0xF1, 0x0C, 0x00, 0x15, 0xF0, 0x18, 0xFA, 0x6B, 0x6A, 0x9B, 0x02, 0x04, 0xD4, 0x94, 0xF8, -0x50, 0x30, 0x01, 0x3B, 0x84, 0xF8, 0x50, 0x30, 0xAB, 0x88, 0x00, 0x2B, 0x5F, 0xD1, 0x28, 0x46, 0x02, 0xF0, 0x4C, 0xF8, -0x60, 0x4A, 0xD9, 0xF8, 0x00, 0x30, 0x52, 0xF8, 0x26, 0x20, 0x13, 0x44, 0xC8, 0xF8, 0x00, 0x30, 0xA3, 0x7E, 0x6A, 0xE7, -0x29, 0x69, 0x00, 0x29, 0x00, 0xF0, 0xA4, 0x80, 0xAB, 0x6C, 0x00, 0x2B, 0x80, 0xF2, 0x9D, 0x80, 0x57, 0x4B, 0xD9, 0xF8, -0x00, 0x20, 0x53, 0xF8, 0x26, 0x10, 0xAB, 0x88, 0x0A, 0x44, 0xC8, 0xF8, 0x00, 0x20, 0x9A, 0x06, 0x3F, 0xF5, 0x77, 0xAF, -0xDF, 0xF8, 0x6C, 0xB1, 0xDB, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0x4F, 0xF0, 0x04, 0x0A, 0xAB, 0x88, 0x99, 0x06, 0x3F, 0xF5, -0x6C, 0xAF, 0xDB, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0xBA, 0xF1, 0x01, 0x0A, 0xF5, 0xD1, 0xAB, 0x88, 0x9A, 0x06, 0x3F, 0xF5, -0x62, 0xAF, 0x04, 0xF1, 0x1C, 0x00, 0x15, 0xF0, 0xD3, 0xF9, 0xAB, 0x88, 0x5B, 0xE7, 0x2B, 0x69, 0x00, 0x2B, 0x7F, 0xF4, -0x71, 0xAF, 0x46, 0x4B, 0x1B, 0x68, 0xEF, 0xF3, 0x10, 0x82, 0xD0, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x43, 0x4A, 0x01, 0x21, -0x11, 0x60, 0x43, 0x4A, 0x01, 0x99, 0x10, 0x68, 0x3F, 0x4D, 0x0B, 0x40, 0x41, 0x1C, 0x11, 0x60, 0x2B, 0x60, 0x29, 0xB1, -0x3D, 0x4B, 0x10, 0x60, 0x1B, 0x68, 0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x3C, 0x4B, 0x00, 0x9A, 0x1A, 0x60, 0x00, 0x22, -0xA3, 0x7E, 0x22, 0x60, 0x17, 0xE7, 0x51, 0x46, 0x28, 0x46, 0x32, 0x46, 0x01, 0xF0, 0xC6, 0xF9, 0x9C, 0xE7, 0x33, 0x4B, -0x1B, 0x68, 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x30, 0x4A, 0x01, 0x21, 0x11, 0x60, 0xDF, 0xF8, -0xC0, 0xC0, 0x01, 0x99, 0xDC, 0xF8, 0x00, 0x00, 0x2B, 0x4A, 0x0B, 0x40, 0x41, 0x1C, 0xCC, 0xF8, 0x00, 0x10, 0x13, 0x60, -0x39, 0xB1, 0x29, 0x4B, 0xCC, 0xF8, 0x00, 0x00, 0x1B, 0x68, 0x10, 0xB9, 0x00, 0x2B, 0x40, 0xF0, 0xA2, 0x80, 0x27, 0x4B, -0x00, 0x9A, 0x1A, 0x60, 0x94, 0xF8, 0x50, 0x30, 0x00, 0x22, 0x01, 0x2B, 0x22, 0x60, 0x7C, 0xD0, 0x6A, 0x6A, 0x4C, 0xE7, -0x6B, 0x6C, 0x63, 0x62, 0x01, 0x23, 0x40, 0x20, 0xA3, 0x76, 0x15, 0xF0, 0x91, 0xF8, 0x59, 0xE7, 0x94, 0xF8, 0x50, 0x10, -0x01, 0x29, 0x7F, 0xF4, 0xEA, 0xAE, 0xE1, 0x6A, 0x00, 0x29, 0x3F, 0xF4, 0xE6, 0xAE, 0x21, 0x6B, 0x19, 0x48, 0x09, 0x7F, -0x4F, 0xF0, 0xA4, 0x0C, 0x0C, 0xFB, 0x01, 0x61, 0x99, 0x31, 0x50, 0xF8, 0x31, 0x10, 0x00, 0x29, 0x7B, 0xD0, 0x00, 0x2B, -0x3F, 0xF4, 0x62, 0xAF, 0x00, 0x2A, 0xFF, 0xF6, 0xD7, 0xAE, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x94, 0xF8, 0x50, 0x10, -0x01, 0x29, 0x7F, 0xF4, 0x57, 0xAF, 0xE1, 0x6A, 0x00, 0x29, 0xE2, 0xD1, 0x52, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, -0x4A, 0x80, 0x0C, 0x10, 0x34, 0x36, 0x17, 0x00, 0xB0, 0x35, 0x17, 0x00, 0xC4, 0x90, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x80, 0x32, 0x40, -0x18, 0x88, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xDF, 0xF8, 0x68, 0xB1, 0xDB, 0xF8, 0x9C, 0x32, -0x98, 0x47, 0x4F, 0xF0, 0x04, 0x0A, 0xAB, 0x88, 0x9A, 0x06, 0x3F, 0xF5, 0xB2, 0xAE, 0xDB, 0xF8, 0x9C, 0x32, 0x98, 0x47, -0xBA, 0xF1, 0x01, 0x0A, 0xF5, 0xD1, 0x4D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xAB, 0x88, 0xBF, 0xF6, -0xA4, 0xAE, 0x98, 0x06, 0x3F, 0xF5, 0xA1, 0xAE, 0x48, 0x49, 0x49, 0x48, 0x4F, 0xF4, 0xAC, 0x62, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x4F, 0x16, 0xF0, 0xEB, 0xBC, 0x43, 0x48, 0x8B, 0x68, 0x01, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0x00, 0x29, 0x33, 0xDB, -0x60, 0x46, 0x9C, 0x46, 0xCC, 0xE6, 0xE3, 0x6A, 0x00, 0x2B, 0x3F, 0xF4, 0x7F, 0xAF, 0x23, 0x6B, 0x3E, 0x4A, 0x1B, 0x7F, -0xA4, 0x21, 0x01, 0xFB, 0x03, 0x63, 0x99, 0x33, 0x52, 0xF8, 0x33, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x73, 0xAF, 0x3A, 0x4B, -0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, 0x7F, 0xF4, 0x6D, 0xAF, 0x38, 0x4B, 0x30, 0x46, 0xD3, 0xF8, 0x5C, 0x33, 0x98, 0x47, -0x66, 0xE7, 0x62, 0xB6, 0x5B, 0xE7, 0x33, 0x49, 0x91, 0xF8, 0xFF, 0x11, 0x00, 0x29, 0x7F, 0xF4, 0x7E, 0xAF, 0x31, 0x4B, -0x03, 0x92, 0xD3, 0xF8, 0x5C, 0x33, 0x30, 0x46, 0x98, 0x47, 0x3B, 0x68, 0x03, 0x9A, 0x5B, 0x78, 0x00, 0x2B, 0x7F, 0xF4, -0x75, 0xAF, 0xD5, 0xE6, 0x00, 0x2B, 0xC9, 0xD1, 0x25, 0x49, 0x2A, 0x48, 0x00, 0x93, 0x40, 0xF2, 0x56, 0x42, 0x16, 0xF0, -0xD9, 0xFC, 0x00, 0x9B, 0xDB, 0x6B, 0xFF, 0xDE, 0x26, 0x4C, 0x1F, 0xE6, 0x26, 0x4B, 0x25, 0x60, 0x1B, 0x68, 0xEF, 0xF3, -0x10, 0x82, 0xD0, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x23, 0x4A, 0x01, 0x21, 0x11, 0x60, 0x23, 0x4A, 0x01, 0x99, 0x10, 0x68, -0x1F, 0x4C, 0x19, 0x40, 0x0B, 0x46, 0x41, 0x1C, 0x11, 0x60, 0x23, 0x60, 0x29, 0xB1, 0x1D, 0x4B, 0x10, 0x60, 0x1B, 0x68, -0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x1C, 0x4B, 0x00, 0x9A, 0x1A, 0x60, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x6B, 0x6A, -0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x7F, 0xF4, 0x41, 0xAF, 0x68, 0x6C, 0x31, 0x46, 0x0C, 0x30, 0x05, 0xB0, -0xBD, 0xE8, 0xF0, 0x4F, 0x03, 0xF0, 0x28, 0xBF, 0x10, 0xB1, 0x31, 0x46, 0x03, 0xF0, 0x24, 0xFF, 0x10, 0x4B, 0x11, 0x4A, -0x53, 0xF8, 0x26, 0x10, 0x02, 0x9B, 0x12, 0x68, 0x9B, 0x00, 0x0A, 0x44, 0x1A, 0x60, 0x2A, 0xE7, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xD4, 0x8E, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xC0, 0x8E, 0x15, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x88, 0x80, 0x32, 0x40, 0xB0, 0x35, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, 0x43, 0x6A, 0x9B, 0x02, 0x03, 0xD5, 0x4B, 0x6A, -0x5B, 0x07, 0x07, 0xD4, 0x70, 0x47, 0xC1, 0x6C, 0x05, 0x4B, 0x14, 0x31, 0xD3, 0xF8, 0x9C, 0x33, 0x08, 0x46, 0x18, 0x47, -0x42, 0x6C, 0x93, 0x88, 0x43, 0xF0, 0x02, 0x03, 0x93, 0x80, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x43, 0x7F, -0x0B, 0x4E, 0x4F, 0xF4, 0x1E, 0x75, 0x04, 0x46, 0x05, 0xFB, 0x03, 0xF5, 0x05, 0xF5, 0xFE, 0x70, 0x01, 0x23, 0xE1, 0x76, -0x84, 0xF8, 0x5D, 0x30, 0x30, 0x44, 0x21, 0x46, 0x14, 0xF0, 0xFE, 0xFF, 0x04, 0x4B, 0x71, 0x19, 0x20, 0x46, 0x5B, 0x69, -0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x83, 0x88, 0x2D, 0xE9, -0xF0, 0x41, 0x04, 0x46, 0x0E, 0x46, 0x15, 0x46, 0xEB, 0xB1, 0x3A, 0x4B, 0xD0, 0xF8, 0x4C, 0x80, 0x1A, 0x68, 0xB2, 0xF9, -0x00, 0x20, 0x00, 0x2A, 0x23, 0xDB, 0xD8, 0xF8, 0x24, 0x70, 0x17, 0xB9, 0xD8, 0xF8, 0x20, 0x30, 0x9F, 0x68, 0x04, 0x2D, -0x03, 0xD1, 0x39, 0x46, 0x20, 0x46, 0xFF, 0xF7, 0x13, 0xFB, 0xE3, 0x7E, 0xFF, 0x2B, 0x25, 0xD0, 0x2F, 0x4F, 0x29, 0x46, -0xD7, 0xF8, 0x00, 0x34, 0x20, 0x46, 0x98, 0x47, 0x05, 0xE0, 0x82, 0x6C, 0x2B, 0x4F, 0x53, 0x6A, 0x43, 0xF0, 0x10, 0x03, -0x53, 0x62, 0xD7, 0xF8, 0xA4, 0x33, 0x2A, 0x46, 0x31, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x82, 0x6C, -0x5A, 0xB3, 0xD8, 0xF8, 0x24, 0x70, 0x00, 0x2F, 0xDB, 0xD1, 0xD8, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0xD6, 0xD1, 0x21, 0x49, -0x21, 0x48, 0x40, 0xF2, 0xB9, 0x12, 0x16, 0xF0, 0x03, 0xFC, 0xCD, 0xE7, 0xE3, 0x8B, 0x1A, 0x07, 0x04, 0xD5, 0x3A, 0x88, -0x02, 0xF0, 0xDC, 0x02, 0x10, 0x2A, 0x25, 0xD0, 0xBB, 0x7D, 0x13, 0xF0, 0x0F, 0x03, 0x07, 0xF1, 0x16, 0x07, 0x06, 0xD0, -0x18, 0x4A, 0xB2, 0xF8, 0xFC, 0x21, 0x43, 0xEA, 0x02, 0x13, 0x3B, 0x80, 0xC4, 0xE7, 0x15, 0x49, 0xB1, 0xF8, 0xFC, 0x21, -0x01, 0x32, 0x92, 0xB2, 0xA1, 0xF8, 0xFC, 0x21, 0xF3, 0xE7, 0x0F, 0x49, 0x11, 0x48, 0x4F, 0xF4, 0xD9, 0x72, 0x16, 0xF0, -0xDF, 0xFB, 0xD8, 0xF8, 0x24, 0x70, 0x00, 0x2F, 0xA9, 0xD1, 0x08, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xC7, 0xDB, 0x9F, 0xE7, 0x7A, 0x8B, 0x00, 0x2A, 0xD6, 0xD1, 0x43, 0xF0, 0x20, 0x03, 0xE3, 0x83, 0x38, 0x1D, 0x20, 0xF0, -0xF9, 0xFE, 0xCF, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xAC, 0x8E, 0x15, 0x00, -0x20, 0x62, 0x17, 0x00, 0x8C, 0x8E, 0x15, 0x00, 0x38, 0xB5, 0x0C, 0x46, 0x05, 0x29, 0x00, 0xF2, 0x33, 0x81, 0xDF, 0xE8, -0x01, 0xF0, 0x36, 0x44, 0x51, 0x5E, 0x6B, 0x03, 0x9D, 0x4A, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x63, 0x02, 0x2B, 0x00, 0xF0, -0x04, 0x81, 0x9B, 0x4A, 0x9B, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x42, 0x1A, 0x60, 0x9A, 0x49, 0x9A, 0x4A, 0x9B, 0x4B, -0x51, 0xF8, 0x24, 0x50, 0x12, 0x68, 0x9A, 0x48, 0x23, 0x44, 0x9B, 0x00, 0x01, 0x21, 0x2A, 0x44, 0x01, 0xFA, 0x04, 0xF4, -0x1A, 0x60, 0x04, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x94, 0x4B, 0x19, 0x60, 0x94, 0x4B, -0x94, 0x49, 0x18, 0x68, 0x0D, 0x68, 0x42, 0x1C, 0x2C, 0x43, 0x1A, 0x60, 0x0C, 0x60, 0x2A, 0xB1, 0x8E, 0x4A, 0x18, 0x60, -0x13, 0x68, 0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x84, 0x4A, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x13, 0x02, 0x2B, -0x00, 0xF0, 0xAE, 0x80, 0x8A, 0x4A, 0x82, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0xCB, 0xE7, 0x7D, 0x4A, -0x13, 0x68, 0xC3, 0xF3, 0x01, 0x23, 0x02, 0x2B, 0x7D, 0xD0, 0x85, 0x4A, 0x7B, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x62, -0x1A, 0x60, 0xBE, 0xE7, 0x76, 0x4A, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x33, 0x02, 0x2B, 0x4F, 0xD0, 0x7F, 0x4A, 0x75, 0x4B, -0x10, 0x60, 0x4F, 0xF4, 0x00, 0x62, 0x1A, 0x60, 0xB1, 0xE7, 0x70, 0x4A, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x43, 0x02, 0x2B, -0x21, 0xD0, 0x7A, 0x4A, 0x6E, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0xA4, 0xE7, 0x77, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x06, 0xDB, 0x75, 0x4A, 0x68, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x72, 0x1A, 0x60, -0x97, 0xE7, 0x63, 0x4B, 0x1B, 0x68, 0x03, 0xF0, 0x03, 0x03, 0x02, 0x2B, 0xF2, 0xD1, 0xBD, 0xE8, 0x38, 0x40, 0x6F, 0x49, -0x6F, 0x48, 0x4F, 0xF4, 0xEC, 0x62, 0x16, 0xF0, 0xFF, 0xBA, 0x60, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, 0x0B, 0x68, -0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x43, 0x02, 0x2B, 0xF6, 0xD0, 0x63, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xCA, 0xDA, 0x52, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, 0x01, 0x43, 0x02, 0x2B, 0xC4, 0xD1, -0xBD, 0xE8, 0x38, 0x40, 0x5E, 0x49, 0x60, 0x48, 0x40, 0xF2, 0x6C, 0x72, 0x16, 0xF0, 0xDE, 0xBA, 0x4F, 0x49, 0x0D, 0x68, -0x02, 0x35, 0x03, 0xE0, 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x33, 0x02, 0x2B, -0xF6, 0xD0, 0x53, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x9C, 0xDA, 0x42, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, -0x01, 0x33, 0x02, 0x2B, 0x96, 0xD1, 0xBD, 0xE8, 0x38, 0x40, 0x4E, 0x49, 0x50, 0x48, 0x4F, 0xF4, 0xEF, 0x62, 0x16, 0xF0, -0xBD, 0xBA, 0x3F, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, -0xC3, 0xF3, 0x01, 0x23, 0x02, 0x2B, 0xF6, 0xD0, 0x42, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, -0x6E, 0xAF, 0x31, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, 0x01, 0x23, 0x02, 0x2B, 0x7F, 0xF4, 0x67, 0xAF, 0xBD, 0xE8, 0x38, 0x40, -0x3C, 0x49, 0x40, 0x48, 0x40, 0xF2, 0x84, 0x72, 0x16, 0xF0, 0x9A, 0xBA, 0x2D, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, -0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x13, 0x02, 0x2B, 0xF6, 0xD0, 0x31, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x3E, 0xAF, 0x1F, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, 0x01, 0x13, -0x02, 0x2B, 0x7F, 0xF4, 0x37, 0xAF, 0xBD, 0xE8, 0x38, 0x40, 0x2B, 0x49, 0x2F, 0x48, 0x4F, 0xF4, 0xF2, 0x62, 0x16, 0xF0, -0x77, 0xBA, 0x1C, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, -0xC3, 0xF3, 0x01, 0x63, 0x02, 0x2B, 0xF6, 0xD0, 0x1F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, -0xE8, 0xAE, 0x0E, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, 0x01, 0x63, 0x02, 0x2B, 0x7F, 0xF4, 0xE1, 0xAE, 0xBD, 0xE8, 0x38, 0x40, -0x19, 0x49, 0x1F, 0x48, 0x40, 0xF2, 0x9C, 0x72, 0x16, 0xF0, 0x54, 0xBA, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xBF, 0xF6, 0xD8, 0xAE, 0x13, 0x49, 0x19, 0x48, 0x40, 0xF2, 0xA2, 0x72, 0x16, 0xF0, 0x79, 0xFA, 0xD0, 0xE6, -0x88, 0x81, 0x32, 0x40, 0x34, 0x83, 0x32, 0x40, 0x80, 0x81, 0x32, 0x40, 0xB0, 0x35, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, -0x4A, 0x80, 0x0C, 0x10, 0x88, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, -0x9C, 0x81, 0x32, 0x40, 0xA0, 0x81, 0x32, 0x40, 0xA4, 0x81, 0x32, 0x40, 0xA8, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, -0x98, 0x81, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0xF8, 0x8E, 0x15, 0x00, 0x18, 0x8F, 0x15, 0x00, 0x38, 0x8F, 0x15, 0x00, -0x58, 0x8F, 0x15, 0x00, 0x78, 0x8F, 0x15, 0x00, 0x98, 0x8F, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x05, 0x2A, 0xF8, 0xB5, -0x06, 0x46, 0x0D, 0x46, 0x35, 0xD0, 0x54, 0x21, 0x33, 0x4C, 0x01, 0xFB, 0x02, 0xF1, 0x02, 0xEB, 0x42, 0x03, 0x61, 0x58, -0xC3, 0xEB, 0xC3, 0x03, 0x04, 0xEB, 0x83, 0x04, 0x00, 0x29, 0x37, 0xD0, 0x2E, 0x4F, 0x3B, 0x68, 0x5B, 0x78, 0xF3, 0xB1, -0x4E, 0x60, 0x05, 0x2A, 0x0B, 0xD0, 0x2C, 0x48, 0x02, 0xEB, 0x42, 0x01, 0x00, 0xEB, 0x81, 0x01, 0x91, 0xF8, 0x2E, 0x10, -0x41, 0xB9, 0x90, 0xF8, 0x8C, 0x10, 0x00, 0x29, 0x3E, 0xD1, 0x10, 0x46, 0xFF, 0xF7, 0x2A, 0xFB, 0x3B, 0x68, 0x5B, 0x78, -0x3B, 0xB9, 0xAA, 0x6B, 0x92, 0x02, 0x46, 0xBF, 0x01, 0x23, 0xC4, 0xE9, 0x01, 0x63, 0xC4, 0xE9, 0x01, 0x33, 0x25, 0x60, -0xF8, 0xBD, 0xA0, 0x68, 0x00, 0x28, 0xDD, 0xD0, 0x61, 0x68, 0x4E, 0x60, 0xDB, 0xE7, 0x19, 0x4C, 0xD4, 0xF8, 0xA4, 0x11, -0x04, 0xF5, 0xD2, 0x74, 0x00, 0x29, 0xCF, 0xD1, 0x11, 0x46, 0x30, 0x46, 0xFF, 0xF7, 0x44, 0xFE, 0x14, 0x4B, 0x1B, 0x68, -0x5B, 0x78, 0xDF, 0xE7, 0x13, 0x4B, 0x02, 0xEB, 0x42, 0x00, 0x03, 0xEB, 0x80, 0x00, 0x51, 0x00, 0x90, 0xF8, 0x2E, 0x00, -0x38, 0xB9, 0x93, 0xF8, 0x8C, 0x00, 0x93, 0xF8, 0x7E, 0x70, 0x00, 0x28, 0xE8, 0xD0, 0xBA, 0x42, 0xE6, 0xD1, 0x0A, 0x44, -0x03, 0xEB, 0x82, 0x03, 0x5A, 0x6A, 0x42, 0xB1, 0x07, 0x4B, 0x1B, 0x68, 0x5B, 0x78, 0xC5, 0xE7, 0x90, 0xF8, 0x7E, 0x10, -0x91, 0x42, 0xBC, 0xD1, 0xC0, 0xE7, 0x03, 0x4A, 0x5E, 0x62, 0x13, 0x68, 0x5B, 0x78, 0xBB, 0xE7, 0x20, 0x62, 0x17, 0x00, -0x34, 0x36, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x38, 0xB5, 0x83, 0x88, 0x33, 0xB1, 0x04, 0x46, 0x80, 0x6C, 0x18, 0xB1, -0x63, 0x6A, 0x13, 0xF4, 0x00, 0x15, 0x00, 0xD0, 0x38, 0xBD, 0xF8, 0xF7, 0x75, 0xFE, 0xA5, 0x64, 0x38, 0xBD, 0x00, 0xBF, -0x70, 0xB5, 0x20, 0x4C, 0x20, 0x4D, 0x02, 0xF0, 0xD9, 0xFC, 0xD4, 0xF8, 0x44, 0x33, 0x98, 0x47, 0xFE, 0xF7, 0x9E, 0xFF, -0x00, 0xF0, 0xA8, 0xFD, 0xD4, 0xF8, 0xA8, 0x33, 0x00, 0x20, 0x98, 0x47, 0x04, 0xF0, 0xBA, 0xFE, 0x4F, 0xF4, 0x01, 0x72, -0x00, 0x21, 0xA5, 0xF1, 0x0C, 0x00, 0xF1, 0xF7, 0xC3, 0xFC, 0x05, 0xF5, 0xD2, 0x76, 0x00, 0x24, 0x28, 0x46, 0x14, 0xF0, -0x4D, 0xFD, 0x45, 0xF8, 0x0C, 0x4C, 0xAC, 0x73, 0x85, 0xF8, 0x44, 0x40, 0xC5, 0xE9, 0x06, 0x44, 0x05, 0xF1, 0x10, 0x00, -0x54, 0x35, 0x14, 0xF0, 0x41, 0xFD, 0xB5, 0x42, 0xEE, 0xD1, 0x0C, 0x4D, 0x05, 0xF5, 0xD8, 0x70, 0x14, 0xF0, 0x3A, 0xFD, -0x05, 0xF5, 0xE0, 0x70, 0xC5, 0xE9, 0x72, 0x44, 0xC5, 0xF8, 0xA4, 0x41, 0x85, 0xF8, 0xBE, 0x41, 0x85, 0xF8, 0xF4, 0x41, -0x14, 0xF0, 0x2E, 0xFD, 0xA5, 0xF8, 0xFC, 0x41, 0x70, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x62, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x0C, 0x4B, 0x93, 0xF8, 0xFE, 0x31, 0x0B, 0xB1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x04, 0x46, -0x10, 0xF0, 0xBC, 0xF8, 0x20, 0xB1, 0x94, 0xF8, 0xC0, 0x34, 0x1B, 0xB9, 0x01, 0x20, 0x10, 0xBD, 0x00, 0x20, 0x10, 0xBD, -0x94, 0xF8, 0xC1, 0x04, 0x11, 0xF0, 0x16, 0xFD, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x10, 0xBD, 0x20, 0x62, 0x17, 0x00, -0x45, 0x4B, 0x01, 0x22, 0x70, 0xB4, 0x1B, 0x68, 0x02, 0xFA, 0x00, 0xF6, 0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x02, 0xD4, -0x72, 0xB6, 0x41, 0x49, 0x0A, 0x60, 0x41, 0x4A, 0x3E, 0x4D, 0x14, 0x68, 0x23, 0xEA, 0x06, 0x03, 0x61, 0x1C, 0x11, 0x60, -0x2B, 0x60, 0x29, 0xB1, 0x3B, 0x4B, 0x14, 0x60, 0x1B, 0x68, 0x0C, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x3A, 0x4B, 0x1E, 0x60, -0x05, 0x28, 0x5D, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x12, 0x21, 0x3F, 0x30, 0x4E, 0x03, 0x37, 0x4B, 0x37, 0x4A, 0x4F, 0xF4, -0x00, 0x11, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF0, 0x40, 0x7F, 0xFB, 0xD1, 0x34, 0x4B, 0x4F, 0xF4, 0x00, 0x12, 0x70, 0xBC, -0x1A, 0x60, 0x70, 0x47, 0x2F, 0x4B, 0x30, 0x4A, 0x4F, 0xF4, 0x80, 0x31, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF0, 0x30, 0x0F, -0xFB, 0xD1, 0x2D, 0x4B, 0x4F, 0xF4, 0x80, 0x32, 0x70, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x28, 0x4B, 0x28, 0x4A, 0x4F, 0xF4, -0x00, 0x31, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF4, 0x40, 0x7F, 0xFB, 0xD1, 0x25, 0x4B, 0x4F, 0xF4, 0x00, 0x32, 0x70, 0xBC, -0x1A, 0x60, 0x70, 0x47, 0x20, 0x4B, 0x21, 0x4A, 0x4F, 0xF4, 0x00, 0x21, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF4, 0x40, 0x3F, -0xFB, 0xD1, 0x1E, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x70, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x19, 0x4B, 0x19, 0x4A, 0x4F, 0xF4, -0x80, 0x21, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF4, 0x40, 0x5F, 0xFB, 0xD1, 0x16, 0x4B, 0x4F, 0xF4, 0x80, 0x22, 0x70, 0xBC, -0x1A, 0x60, 0x70, 0x47, 0x11, 0x4B, 0x12, 0x4A, 0x4F, 0xF4, 0x00, 0x41, 0x19, 0x60, 0x13, 0x68, 0x9B, 0x07, 0xFC, 0xD1, -0x0F, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0x1A, 0x60, 0x70, 0xBC, 0x70, 0x47, 0x0D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xF7, 0xDA, 0x70, 0xBC, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF6, 0xE7, 0x02, 0x16, 0xF0, 0xD5, 0xB8, 0x00, 0xBF, -0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x80, 0x32, 0x40, 0x80, 0x81, 0x32, 0x40, -0x88, 0x81, 0x32, 0x40, 0x84, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, -0x70, 0xB5, 0x05, 0x28, 0x82, 0xB0, 0x04, 0x46, 0x0A, 0x46, 0x3B, 0xD0, 0x1E, 0x4B, 0x00, 0xEB, 0x40, 0x05, 0xC5, 0xEB, -0xC5, 0x05, 0x03, 0xEB, 0x85, 0x05, 0x1C, 0x4E, 0x1C, 0x49, 0xD6, 0xF8, 0x84, 0x33, 0x01, 0x92, 0x01, 0xEB, 0xC4, 0x01, -0x20, 0x46, 0x98, 0x47, 0x01, 0x9A, 0xD6, 0xF8, 0x84, 0x33, 0x05, 0xF1, 0x0C, 0x01, 0x20, 0x46, 0x98, 0x47, 0x00, 0x23, -0x20, 0x46, 0x2B, 0x60, 0x6B, 0x61, 0xFE, 0xF7, 0x59, 0xFE, 0x13, 0x4B, 0x01, 0x22, 0x1B, 0x68, 0x02, 0xFA, 0x04, 0xF4, -0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x0F, 0x49, 0x0A, 0x60, 0x0F, 0x4A, 0x0C, 0x4D, 0x11, 0x68, -0x23, 0xEA, 0x04, 0x03, 0x48, 0x1C, 0x10, 0x60, 0x2B, 0x60, 0x28, 0xB1, 0x09, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, -0x03, 0xB1, 0x62, 0xB6, 0x08, 0x4B, 0x1C, 0x60, 0x02, 0xB0, 0x70, 0xBD, 0x07, 0x4D, 0xC8, 0xE7, 0x20, 0x62, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x24, 0x64, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x88, 0x80, 0x32, 0x40, 0xC4, 0x63, 0x17, 0x00, 0x70, 0xB5, 0x0E, 0x4E, 0x82, 0xB0, 0x00, 0xF5, 0x9E, 0x64, 0x00, 0x25, -0xE8, 0xB2, 0x21, 0x46, 0xD6, 0xF8, 0x84, 0x33, 0x01, 0x90, 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, 0x01, 0x35, 0xA4, 0xF1, -0x28, 0x01, 0x01, 0x98, 0xD6, 0xF8, 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, 0x05, 0x2D, 0x04, 0xF1, 0x08, 0x04, -0xEA, 0xD1, 0x02, 0xB0, 0x70, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x05, 0x29, 0x2D, 0xE9, 0xF0, 0x41, 0x0E, 0x46, -0x04, 0x46, 0x64, 0xD0, 0x33, 0x4D, 0x01, 0xEB, 0x41, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x05, 0xEB, 0x83, 0x05, 0x94, 0xF8, -0x35, 0x10, 0x94, 0xF8, 0x33, 0x20, 0xA3, 0x88, 0x2E, 0x48, 0x0A, 0x44, 0x1A, 0x44, 0xE3, 0x6C, 0xE1, 0x8B, 0x58, 0x61, -0x04, 0x32, 0xDA, 0x62, 0x00, 0x22, 0xC3, 0xE9, 0x0F, 0x22, 0xC3, 0xE9, 0x06, 0x22, 0xC3, 0xE9, 0x08, 0x22, 0x5A, 0x64, -0x9A, 0x62, 0x9A, 0x63, 0xDA, 0x64, 0x1A, 0x63, 0x1A, 0x65, 0xCA, 0x07, 0x05, 0xD4, 0x22, 0x4A, 0xD2, 0xF8, 0xF8, 0x31, -0x01, 0x33, 0xC2, 0xF8, 0xF8, 0x31, 0x21, 0x4B, 0x1B, 0x6A, 0x23, 0xB1, 0x20, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x33, -0x13, 0x60, 0xDF, 0xF8, 0x88, 0x80, 0x61, 0x7F, 0x20, 0x7F, 0x00, 0x22, 0x12, 0xF0, 0x5A, 0xF9, 0xD8, 0xF8, 0x48, 0x32, -0xE1, 0x7E, 0x60, 0x7F, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x16, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x16, 0x4F, 0xD8, 0xF8, 0x68, 0x33, 0x3A, 0x68, 0x01, 0x32, 0x3A, 0x60, 0x31, 0x46, 0x20, 0x46, 0x98, 0x47, -0xD8, 0xF8, 0x08, 0x34, 0x31, 0x46, 0x00, 0x22, 0x20, 0x46, 0x98, 0x47, 0x21, 0x46, 0x05, 0xF1, 0x0C, 0x00, 0x14, 0xF0, -0x99, 0xFB, 0x3B, 0x68, 0x33, 0xB1, 0x0A, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, -0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x07, 0x4D, 0x9F, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0xBE, 0xBA, 0xFE, 0xCA, -0x1C, 0x9E, 0x17, 0x00, 0x80, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x03, 0x4A, 0xD2, 0xF8, 0xF8, 0x31, 0x01, 0x33, 0xC2, 0xF8, 0xF8, 0x31, 0x70, 0x47, 0x00, 0xBF, -0x20, 0x62, 0x17, 0x00, 0x05, 0x29, 0x2D, 0xE9, 0xF0, 0x41, 0x0D, 0x46, 0x04, 0x46, 0x1C, 0xD0, 0x47, 0x4E, 0x01, 0xEB, -0x41, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x06, 0xEB, 0x83, 0x06, 0x22, 0x7F, 0x44, 0x4B, 0xE7, 0x6C, 0x4F, 0xF4, 0xA4, 0x60, -0x00, 0xFB, 0x02, 0x30, 0xFF, 0xF7, 0x32, 0xFE, 0x68, 0xB9, 0x63, 0x7F, 0xFF, 0x2B, 0x67, 0xD0, 0x3F, 0x4B, 0x20, 0x46, -0xD3, 0xF8, 0x90, 0x33, 0x29, 0x46, 0x98, 0x47, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x3C, 0x4E, 0xE7, 0xE7, 0x20, 0x46, -0x1C, 0xF0, 0xEE, 0xFF, 0x00, 0x28, 0xEC, 0xD0, 0xFB, 0x6C, 0x43, 0xF4, 0x80, 0x73, 0xFB, 0x64, 0xEF, 0xF3, 0x10, 0x83, -0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x35, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x34, 0x4F, 0x96, 0xF8, 0x50, 0x30, 0x3A, 0x68, -0xF1, 0x6A, 0xDF, 0xF8, 0xBC, 0x80, 0x01, 0x32, 0x01, 0x33, 0x3A, 0x60, 0x86, 0xF8, 0x50, 0x30, 0x19, 0xB1, 0xD8, 0xF8, -0x5C, 0x33, 0x28, 0x46, 0x98, 0x47, 0x73, 0x69, 0x00, 0x2B, 0x42, 0xD0, 0x06, 0xF1, 0x0C, 0x00, 0x21, 0x46, 0x14, 0xF0, -0x21, 0xFB, 0x3B, 0x68, 0x2B, 0xB1, 0x26, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x00, 0x2B, 0x31, 0xD0, 0x1F, 0x4A, -0x24, 0x49, 0xD2, 0xF8, 0xF8, 0x31, 0x09, 0x6A, 0x01, 0x33, 0xC2, 0xF8, 0xF8, 0x31, 0x21, 0xB1, 0x21, 0x4A, 0x13, 0x68, -0x43, 0xF4, 0x80, 0x33, 0x13, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x19, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x3B, 0x68, 0xD8, 0xF8, 0x04, 0x64, 0xA1, 0x6C, 0x01, 0x33, 0x3B, 0x60, 0x2A, 0x46, 0x20, 0x46, 0xB0, 0x47, -0x3B, 0x68, 0x33, 0xB1, 0x12, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x01, 0x20, -0xBD, 0xE8, 0xF0, 0x81, 0x20, 0x46, 0x00, 0x21, 0x01, 0xF0, 0x7E, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x2A, -0xCB, 0xD0, 0x62, 0xB6, 0xC9, 0xE7, 0xA3, 0x6C, 0x0B, 0x49, 0x5A, 0x6A, 0x9C, 0x60, 0x22, 0xF0, 0x10, 0x02, 0x5A, 0x62, -0xD9, 0x60, 0xB3, 0xE7, 0x20, 0x62, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x80, 0x00, 0x32, 0x40, 0xDE, 0xFA, 0xFE, 0xCA, -0x70, 0x47, 0x00, 0xBF, 0x20, 0x4B, 0x70, 0xB5, 0x1C, 0x68, 0xE1, 0x04, 0x2C, 0xD4, 0x1F, 0x4D, 0x2C, 0x42, 0x24, 0xD1, -0x1E, 0x4B, 0x23, 0x40, 0x20, 0xD0, 0x22, 0x03, 0x0B, 0xD5, 0x1D, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x05, 0x24, -0x1B, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0xA0, 0x33, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x19, 0x4A, 0x12, 0x68, 0xB2, 0xF9, -0x00, 0x20, 0xB3, 0xFA, 0x83, 0xF3, 0xC3, 0xF1, 0x19, 0x04, 0x00, 0x2A, 0xE4, 0xB2, 0x14, 0xDB, 0x05, 0x2C, 0xE6, 0xD0, -0x10, 0x4A, 0xA1, 0x1D, 0x01, 0x23, 0x8B, 0x40, 0x13, 0x60, 0xE5, 0xE7, 0x70, 0xBD, 0x04, 0xF0, 0x07, 0xFB, 0x0C, 0x4B, -0x1D, 0x60, 0xD5, 0xE7, 0x04, 0xF0, 0x56, 0xFA, 0x09, 0x4B, 0x4F, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0xCB, 0xE7, 0x06, 0x2C, -0xE8, 0xD9, 0x09, 0x49, 0x09, 0x48, 0x40, 0xF6, 0xC2, 0x22, 0x15, 0xF0, 0xD9, 0xFE, 0xE3, 0xE7, 0x78, 0x80, 0x32, 0x40, -0x00, 0x08, 0x00, 0x20, 0xC0, 0x07, 0x08, 0x00, 0x7C, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xB8, 0x8F, 0x15, 0x00, 0x38, 0xB5, 0x0D, 0x4B, 0x0D, 0x4D, 0x1C, 0x68, 0xE3, 0x06, 0x05, 0xEA, -0x04, 0x05, 0x03, 0xD5, 0x0B, 0x4B, 0xD3, 0xF8, 0xF0, 0x33, 0x98, 0x47, 0x14, 0xF4, 0x70, 0x04, 0x08, 0xD0, 0x08, 0x4B, -0xB4, 0xFA, 0x84, 0xF4, 0xC4, 0xF1, 0x0B, 0x00, 0xD3, 0xF8, 0x48, 0x33, 0xC0, 0xB2, 0x98, 0x47, 0x04, 0x4B, 0x1D, 0x60, -0x38, 0xBD, 0x00, 0xBF, 0x78, 0x80, 0x32, 0x40, 0x1F, 0x00, 0xF0, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x7C, 0x80, 0x32, 0x40, -0xFF, 0xF7, 0xDA, 0xBF, 0x2D, 0xE9, 0xF8, 0x43, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1C, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x70, 0x90, 0x1A, 0x4F, 0xD9, 0xF8, 0x00, 0x30, 0xDF, 0xF8, 0x6C, 0x80, 0x01, 0x33, -0xC9, 0xF8, 0x00, 0x30, 0x3D, 0x46, 0x46, 0x46, 0x04, 0x24, 0x95, 0xF8, 0x5E, 0x30, 0xE2, 0xB2, 0x63, 0xB9, 0x97, 0xF8, -0x8C, 0x30, 0x97, 0xF8, 0x7E, 0x10, 0x10, 0x46, 0x0B, 0xB1, 0x91, 0x42, 0x04, 0xD0, 0xD6, 0xF8, 0x50, 0x31, 0x0B, 0xB1, -0xFF, 0xF7, 0x1A, 0xFD, 0x01, 0x3C, 0x63, 0x1C, 0xA5, 0xF1, 0x0C, 0x05, 0xA6, 0xF1, 0x54, 0x06, 0xE7, 0xD1, 0xD9, 0xF8, -0x00, 0x30, 0x01, 0x22, 0x88, 0xF8, 0xFF, 0x21, 0x3B, 0xB1, 0x05, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, -0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x31, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x31, 0x4E, 0x31, 0x4D, 0x33, 0x68, 0x31, 0x4F, 0xDF, 0xF8, -0xD0, 0xB0, 0xDF, 0xF8, 0xD0, 0xA0, 0xDF, 0xF8, 0xD0, 0x80, 0x01, 0x33, 0x00, 0x22, 0x33, 0x60, 0x85, 0xF8, 0xFF, 0x21, -0xB9, 0x46, 0x04, 0x24, 0x99, 0xF8, 0x5E, 0x30, 0xE0, 0xB2, 0x00, 0x2B, 0x34, 0xD1, 0x97, 0xF8, 0x8C, 0x30, 0x97, 0xF8, -0x7E, 0x20, 0x0B, 0xB1, 0x82, 0x42, 0x2D, 0xD0, 0xD5, 0xF8, 0x50, 0x31, 0x43, 0xB3, 0x01, 0x90, 0xFE, 0xF7, 0x36, 0xFF, -0x5A, 0xF8, 0x24, 0x30, 0xDB, 0xF8, 0x00, 0x20, 0x20, 0x48, 0x1A, 0x44, 0x40, 0xF8, 0x24, 0x20, 0x01, 0x21, 0x1F, 0x4A, -0x01, 0xFA, 0x04, 0xF3, 0x13, 0x60, 0xEF, 0xF3, 0x10, 0x82, 0x12, 0xF0, 0x01, 0x0F, 0x01, 0x98, 0x02, 0xD1, 0x72, 0xB6, -0x14, 0x4A, 0x11, 0x60, 0x32, 0x68, 0xD8, 0xF8, 0x00, 0xC0, 0x51, 0x1C, 0x43, 0xEA, 0x0C, 0x03, 0x31, 0x60, 0xC8, 0xF8, -0x00, 0x30, 0x29, 0xB1, 0x0E, 0x4B, 0x32, 0x60, 0x1B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x03, 0xF0, 0x32, 0xF8, -0x01, 0x3C, 0x63, 0x1C, 0xA9, 0xF1, 0x0C, 0x09, 0xA5, 0xF1, 0x54, 0x05, 0xBE, 0xD1, 0x33, 0x68, 0x33, 0xB1, 0x06, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x40, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, -0x14, 0xF0, 0xF8, 0xB8, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, -0x28, 0x01, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, 0x20, 0x01, 0x32, 0x40, 0xB0, 0x35, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, -0x2D, 0xE9, 0xF0, 0x4F, 0x5D, 0x4E, 0xDF, 0xF8, 0x90, 0x91, 0xB6, 0xF8, 0xFC, 0x31, 0x83, 0xB0, 0x4F, 0xF4, 0x78, 0x30, -0x00, 0x93, 0x06, 0xF1, 0x0C, 0x05, 0x14, 0xF0, 0xFB, 0xF8, 0x01, 0x23, 0x86, 0xF8, 0xFE, 0x31, 0xAA, 0x46, 0x4F, 0xF4, -0x9E, 0x67, 0x4F, 0xF0, 0x00, 0x0B, 0x01, 0x95, 0x53, 0x49, 0xD9, 0xF8, 0x84, 0x33, 0x5F, 0xFA, 0x8B, 0xF8, 0x40, 0x46, -0x4F, 0xF0, 0x80, 0x42, 0x39, 0x44, 0x98, 0x47, 0x4F, 0x4B, 0x9D, 0x68, 0xA7, 0xF1, 0x28, 0x04, 0xC5, 0xB1, 0xE9, 0x19, -0xD9, 0xF8, 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x40, 0x46, 0x98, 0x47, 0x29, 0x19, 0xD9, 0xF8, 0x84, 0x33, 0x4F, 0xF0, -0x80, 0x42, 0x40, 0x46, 0x98, 0x47, 0x05, 0xF5, 0xA3, 0x61, 0xD9, 0xF8, 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x40, 0x46, -0x98, 0x47, 0x2D, 0x68, 0x00, 0x2D, 0xE6, 0xD1, 0x51, 0x46, 0xD9, 0xF8, 0x84, 0x33, 0x40, 0x46, 0x08, 0x37, 0x4F, 0xF0, -0x80, 0x42, 0x98, 0x47, 0xB7, 0xF5, 0xA3, 0x6F, 0x0B, 0xF1, 0x01, 0x0B, 0x0A, 0xF1, 0x54, 0x0A, 0xC8, 0xD1, 0xD9, 0xF8, -0x84, 0x33, 0x39, 0x49, 0x01, 0x9D, 0x4F, 0xF0, 0x80, 0x42, 0x05, 0x20, 0x98, 0x47, 0x37, 0x49, 0xD9, 0xF8, 0x84, 0x33, -0x4F, 0xF0, 0x80, 0x42, 0x05, 0x20, 0x98, 0x47, 0x02, 0xF0, 0x30, 0xF9, 0x00, 0xF0, 0x6A, 0xF9, 0xD9, 0xF8, 0xCC, 0x33, -0x98, 0x47, 0x2C, 0x48, 0x4F, 0xF4, 0x01, 0x72, 0x00, 0x21, 0xF1, 0xF7, 0x89, 0xF8, 0x2B, 0x4B, 0xD3, 0xF8, 0x08, 0x80, -0x00, 0x9B, 0xA6, 0xF8, 0xFC, 0x31, 0xB8, 0xF1, 0x00, 0x0F, 0x17, 0xD0, 0x2B, 0x46, 0x45, 0x46, 0x98, 0x46, 0x05, 0xF5, -0x9E, 0x64, 0x05, 0xF5, 0xA3, 0x67, 0x20, 0x46, 0x14, 0xF0, 0x06, 0xF9, 0xA4, 0xF1, 0x28, 0x00, 0x08, 0x34, 0x14, 0xF0, -0x01, 0xF9, 0xBC, 0x42, 0xF5, 0xD1, 0x20, 0x46, 0x14, 0xF0, 0xFC, 0xF8, 0x2D, 0x68, 0x00, 0x2D, 0xEB, 0xD1, 0x45, 0x46, -0x1B, 0x4F, 0x00, 0x24, 0x28, 0x46, 0x14, 0xF0, 0xF3, 0xF8, 0x45, 0xF8, 0x0C, 0x4C, 0xAC, 0x73, 0x85, 0xF8, 0x44, 0x40, -0xC5, 0xE9, 0x06, 0x44, 0x05, 0xF1, 0x10, 0x00, 0x54, 0x35, 0x14, 0xF0, 0xE7, 0xF8, 0xAF, 0x42, 0xEE, 0xD1, 0x12, 0x48, -0x14, 0xF0, 0xE2, 0xF8, 0x12, 0x48, 0xC6, 0xF8, 0xA4, 0x41, 0xC6, 0xE9, 0x72, 0x44, 0x86, 0xF8, 0xBE, 0x41, 0x86, 0xF8, -0xF4, 0x41, 0x14, 0xF0, 0xD7, 0xF8, 0x0E, 0x4A, 0x00, 0x21, 0x02, 0xF5, 0xB4, 0x70, 0xA2, 0xF1, 0x24, 0x03, 0x43, 0xF8, -0x04, 0x1B, 0x93, 0x42, 0xFB, 0xD1, 0x03, 0xF1, 0x24, 0x02, 0x90, 0x42, 0xF5, 0xD1, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x20, 0x62, 0x17, 0x00, 0x34, 0x5F, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0xD0, 0x63, 0x17, 0x00, 0x4C, 0x64, 0x17, 0x00, -0xE0, 0x63, 0x17, 0x00, 0xD8, 0x56, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x03, 0x8C, 0x08, 0x8C, 0x83, 0x42, 0x08, 0xD8, -0x05, 0xD2, 0xC0, 0x1A, 0x3F, 0x28, 0xCC, 0xBF, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, -0x70, 0x47, 0x00, 0xBF, 0x51, 0xB9, 0x81, 0x6C, 0x90, 0xF8, 0x42, 0x30, 0xCB, 0x1A, 0x93, 0xF8, 0xB8, 0x30, 0xDB, 0x07, -0x02, 0xD4, 0x03, 0x8B, 0x08, 0x2B, 0x00, 0xD0, 0x70, 0x47, 0x91, 0xF8, 0xA8, 0x30, 0x03, 0xF0, 0xF0, 0x03, 0x40, 0x2B, -0xF8, 0xD1, 0x91, 0xF8, 0xB1, 0x30, 0x06, 0x2B, 0x01, 0xD0, 0x01, 0x2B, 0xF2, 0xD1, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, -0xEE, 0xE7, 0x00, 0xBF, 0x03, 0x6D, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x43, 0x56, 0x4A, 0x12, 0x68, -0x12, 0x78, 0x02, 0x2A, 0x83, 0xB0, 0x04, 0x46, 0x0D, 0x46, 0x07, 0xD0, 0x01, 0x2A, 0x7E, 0xD0, 0x03, 0x2A, 0x00, 0xF0, -0x8D, 0x80, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0xFB, 0xF7, 0x8A, 0xFB, 0x06, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x94, 0x80, -0xDF, 0xF8, 0x60, 0x91, 0x42, 0xF2, 0x24, 0x03, 0x59, 0xF8, 0x03, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0x87, 0x80, 0x48, 0x48, -0x14, 0xF0, 0xA8, 0xF8, 0x4F, 0xF0, 0x00, 0x08, 0x08, 0x22, 0x12, 0x23, 0x32, 0x70, 0x86, 0xF8, 0x01, 0x80, 0x86, 0xF8, -0x03, 0x80, 0xB3, 0x70, 0x23, 0x6D, 0x29, 0x68, 0x00, 0x91, 0x23, 0xF0, 0x40, 0x43, 0x07, 0x46, 0x69, 0x46, 0x30, 0x1D, -0x01, 0x93, 0x27, 0xF0, 0x49, 0xFF, 0x42, 0xF2, 0x34, 0x03, 0x39, 0xF8, 0x03, 0x30, 0xB3, 0xF5, 0xC3, 0x7F, 0x62, 0xD8, -0x03, 0xF1, 0x01, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, 0xDA, 0x00, 0x37, 0x49, 0xBB, 0x81, 0x09, 0x68, 0x36, 0x4B, 0x01, 0xEB, -0x02, 0x0C, 0x42, 0xF2, 0x34, 0x08, 0xCC, 0xF8, 0x04, 0x60, 0x88, 0x58, 0x03, 0x40, 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF0, -0x0C, 0x03, 0x8B, 0x50, 0x99, 0xF8, 0x02, 0x3C, 0x29, 0xF8, 0x08, 0xE0, 0x01, 0x33, 0x01, 0x22, 0x00, 0x20, 0x0C, 0x21, -0x89, 0xF8, 0x02, 0x3C, 0xC7, 0xF8, 0x04, 0xC0, 0xBA, 0x73, 0x38, 0x60, 0xB9, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x02, 0xD4, 0x72, 0xB6, 0x26, 0x4B, 0x1A, 0x60, 0x26, 0x4E, 0x2B, 0x68, 0x31, 0x68, 0x22, 0x8C, 0x25, 0x48, 0x4D, 0x1C, -0x21, 0x46, 0x35, 0x60, 0x15, 0xF0, 0xEC, 0xF9, 0x23, 0x48, 0x39, 0x46, 0x14, 0xF0, 0x0E, 0xF8, 0x22, 0x4B, 0xD3, 0xF8, -0x44, 0x34, 0x98, 0x47, 0x33, 0x68, 0x00, 0x2B, 0x8D, 0xD0, 0x1B, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x00, 0x2B, -0x87, 0xD1, 0x00, 0x2A, 0x85, 0xD0, 0x62, 0xB6, 0x83, 0xE7, 0x0E, 0x68, 0x00, 0x96, 0x23, 0xF0, 0x40, 0x43, 0x69, 0x46, -0x08, 0x22, 0x12, 0x20, 0x01, 0x93, 0xF9, 0xF7, 0xD7, 0xFA, 0x2B, 0x68, 0x22, 0x8C, 0x15, 0x48, 0x21, 0x46, 0x15, 0xF0, -0xC7, 0xF9, 0x72, 0xE7, 0x13, 0x4B, 0x0A, 0x68, 0x1B, 0x68, 0x1A, 0x60, 0xF6, 0xF7, 0x72, 0xF8, 0x6B, 0xE7, 0x42, 0x46, -0x43, 0x46, 0x4F, 0xF0, 0x01, 0x0E, 0x9C, 0xE7, 0x0E, 0x48, 0xF6, 0xF7, 0xED, 0xFF, 0x62, 0xE7, 0x0D, 0x48, 0xF6, 0xF7, -0xE9, 0xFF, 0x5E, 0xE7, 0x78, 0x36, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, 0x00, 0x00, 0xFF, 0x31, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x90, 0x15, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x20, 0x90, 0x15, 0x00, 0x00, 0x38, 0x18, 0x00, 0xDC, 0x8F, 0x15, 0x00, 0xD8, 0x83, 0x15, 0x00, 0x7C, 0x36, 0x17, 0x00, -0x10, 0xB5, 0x0D, 0x4C, 0x30, 0x22, 0x00, 0x21, 0x20, 0x46, 0xF0, 0xF7, 0x21, 0xFF, 0x20, 0x46, 0x13, 0xF0, 0xAE, 0xFF, -0x04, 0xF1, 0x08, 0x00, 0x13, 0xF0, 0xAA, 0xFF, 0x04, 0xF1, 0x10, 0x00, 0x13, 0xF0, 0xA6, 0xFF, 0x04, 0xF1, 0x18, 0x00, -0x13, 0xF0, 0xA2, 0xFF, 0x04, 0xF1, 0x20, 0x00, 0xBD, 0xE8, 0x10, 0x40, 0x13, 0xF0, 0x9C, 0xBF, 0x24, 0x64, 0x17, 0x00, -0x38, 0xB5, 0xC3, 0x6C, 0x04, 0x46, 0x09, 0x48, 0x19, 0x61, 0x00, 0xEB, 0xC2, 0x00, 0x21, 0x46, 0x15, 0x46, 0x13, 0xF0, -0x93, 0xFF, 0x63, 0x6A, 0x9B, 0x02, 0x00, 0xD5, 0x38, 0xBD, 0x04, 0x4B, 0x53, 0xF8, 0x25, 0x00, 0xBD, 0xE8, 0x38, 0x40, -0x13, 0xF0, 0xE6, 0xBE, 0x24, 0x64, 0x17, 0x00, 0xC4, 0x90, 0x15, 0x00, 0x38, 0xB5, 0x38, 0x4B, 0x93, 0xF8, 0x8C, 0x20, -0x05, 0x46, 0x00, 0x2A, 0x42, 0xD1, 0x43, 0x6D, 0xC3, 0xF3, 0xC1, 0x23, 0x54, 0x22, 0x1C, 0x21, 0x33, 0x48, 0x12, 0xFB, -0x03, 0x13, 0x18, 0x44, 0x13, 0xF0, 0xB6, 0xFF, 0x04, 0x46, 0x31, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x2A, -0x01, 0xDB, 0x14, 0xB9, 0x38, 0xBD, 0x00, 0x2C, 0x4C, 0xD0, 0xA2, 0x88, 0x68, 0x6D, 0x42, 0xF0, 0x20, 0x02, 0x81, 0x01, -0xA2, 0x80, 0xF5, 0xD5, 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF3, 0xCF, 0x31, 0xC0, 0xF3, 0xC9, 0x33, 0x26, 0xDB, -0x62, 0x7A, 0x10, 0x3B, 0x93, 0x42, 0xE9, 0xD1, 0xEB, 0x69, 0x99, 0x68, 0x0B, 0x8A, 0x03, 0xF0, 0x1E, 0x02, 0x16, 0x2A, -0x25, 0xD0, 0x82, 0x05, 0xE0, 0xD4, 0x2A, 0x8E, 0x1C, 0x2A, 0xDD, 0xD1, 0xA2, 0x7A, 0xB2, 0xEB, 0x13, 0x3F, 0xD9, 0xD1, -0x04, 0xF1, 0xE0, 0x05, 0x12, 0x31, 0x28, 0x46, 0x0A, 0x22, 0x27, 0xF0, 0x37, 0xFE, 0xC4, 0xF8, 0xDC, 0x50, 0x1A, 0xE0, -0x93, 0xF8, 0x7E, 0x30, 0x05, 0x2B, 0xBB, 0xD1, 0x14, 0x48, 0x13, 0xF0, 0x77, 0xFF, 0x04, 0x46, 0xBF, 0xE7, 0x11, 0xF4, -0x7C, 0x7F, 0xD5, 0xD1, 0xBD, 0xE8, 0x38, 0x40, 0x10, 0x49, 0x11, 0x48, 0xD0, 0x22, 0x15, 0xF0, 0x49, 0xBB, 0x10, 0x4B, -0x28, 0x46, 0xD3, 0xF8, 0xB4, 0x33, 0x21, 0x46, 0x98, 0x47, 0x00, 0x28, 0xB4, 0xD0, 0xA3, 0x88, 0x43, 0xF0, 0x40, 0x03, -0xA3, 0x80, 0x38, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x06, 0x49, 0x09, 0x48, 0x40, 0xF2, 0x5F, 0x12, 0x15, 0xF0, 0x34, 0xBB, -0x94, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0xE0, 0x63, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x50, 0x90, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x3C, 0x90, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xB0, 0x4B, 0xB1, 0x4C, -0x1B, 0x68, 0xB1, 0x4A, 0xB3, 0xF9, 0x00, 0x30, 0x2D, 0xED, 0x02, 0x8B, 0x87, 0xB0, 0x01, 0x46, 0x01, 0x90, 0x00, 0x2B, -0x04, 0xEB, 0xC0, 0x00, 0x08, 0xEE, 0x10, 0x0A, 0x52, 0xF8, 0x21, 0x40, 0xC0, 0xF2, 0x38, 0x83, 0x20, 0x46, 0x13, 0xF0, -0x6B, 0xFE, 0xA6, 0x4B, 0x01, 0x9A, 0x53, 0xF8, 0x32, 0x40, 0x00, 0x2C, 0x00, 0xF0, 0xAD, 0x80, 0x00, 0x23, 0xCD, 0xE9, -0x04, 0x33, 0x9B, 0x46, 0x98, 0x46, 0xA2, 0x4B, 0x62, 0x7F, 0x93, 0xF8, 0x00, 0x32, 0x03, 0x92, 0x01, 0x2B, 0x22, 0x7F, -0xE6, 0x6C, 0x67, 0x6C, 0x02, 0x92, 0x00, 0xF0, 0xA1, 0x80, 0x00, 0x2F, 0x00, 0xF0, 0xA8, 0x80, 0x3B, 0x79, 0xD8, 0x06, -0x40, 0xF1, 0x95, 0x80, 0x35, 0x69, 0x59, 0x06, 0x25, 0xF4, 0x00, 0x05, 0x0B, 0xF1, 0x01, 0x0B, 0x35, 0x61, 0x00, 0xF1, -0x9B, 0x81, 0xDF, 0xF8, 0x70, 0xA2, 0x00, 0x21, 0xDA, 0xF8, 0x18, 0x34, 0x20, 0x46, 0x98, 0x47, 0x63, 0x6A, 0x03, 0xF4, -0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x08, 0xBF, 0xA0, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x8B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x38, 0x92, 0xD9, 0xF8, 0x00, 0x30, 0x18, 0xEE, 0x10, 0x0A, 0x01, 0x33, -0xC9, 0xF8, 0x00, 0x30, 0x13, 0xF0, 0xE4, 0xFE, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x60, 0x1F, 0x00, 0xF0, -0x5F, 0x81, 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x7F, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x22, 0x8B, 0x48, 0xF6, 0x88, 0x63, 0x9A, 0x42, 0x00, 0xF0, 0x30, 0x81, 0xE2, 0x6A, 0xD3, 0x6B, -0x98, 0x06, 0x40, 0xF1, 0xFD, 0x80, 0x15, 0xF4, 0x00, 0x05, 0x00, 0xF0, 0x7E, 0x81, 0xE1, 0x6C, 0x4F, 0x6A, 0x39, 0x88, -0x88, 0xB2, 0x09, 0x04, 0x00, 0xF1, 0xEB, 0x81, 0x71, 0x4F, 0x3B, 0x68, 0x1B, 0x78, 0x00, 0x2B, 0x36, 0xD0, 0x63, 0x7F, -0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x6B, 0x49, 0xA0, 0x88, -0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x12, 0x1A, 0x41, 0xF8, 0x23, 0x20, 0x68, 0x4B, 0x93, 0xF8, 0x04, 0x31, -0x13, 0xB1, 0x00, 0x2D, 0x40, 0xF0, 0x33, 0x82, 0x06, 0xF1, 0x10, 0x01, 0x20, 0x46, 0xFF, 0xF7, 0xC9, 0xFD, 0xE3, 0x8B, -0xDA, 0x07, 0x00, 0xF1, 0x93, 0x81, 0xA0, 0x6C, 0x30, 0xB1, 0xF7, 0xF7, 0x4F, 0xFF, 0x3B, 0x68, 0x1D, 0x78, 0x01, 0x2D, -0x00, 0xF0, 0xCB, 0x81, 0x9D, 0xF8, 0x04, 0x00, 0x21, 0x46, 0x15, 0xF0, 0x5B, 0xFB, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, -0xB3, 0xF5, 0x60, 0x1F, 0x00, 0xF0, 0x74, 0x81, 0x4F, 0x4B, 0x01, 0x9A, 0x53, 0xF8, 0x32, 0x40, 0x00, 0x2C, 0x7F, 0xF4, -0x58, 0xAF, 0x07, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x4B, 0x4A, 0x00, 0x23, 0x40, 0x20, 0x82, 0xF8, -0x00, 0x32, 0x13, 0xF0, 0x87, 0xFD, 0x00, 0x2F, 0x7F, 0xF4, 0x58, 0xAF, 0xEF, 0xF3, 0x10, 0x83, 0xDD, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x45, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x47, 0x4D, 0x2B, 0x68, 0x18, 0xEE, 0x10, 0x0A, 0x01, 0x33, 0x2B, 0x60, -0x13, 0xF0, 0x5A, 0xFE, 0x2B, 0x68, 0x3B, 0xB1, 0x3E, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x13, 0xB9, 0x00, 0x2A, -0x40, 0xF0, 0xF3, 0x81, 0x20, 0x46, 0xD6, 0xF8, 0x10, 0x90, 0x94, 0xF8, 0x1C, 0xA0, 0x23, 0xF0, 0x95, 0xFF, 0xE2, 0x6A, -0xD3, 0x6B, 0x98, 0x06, 0x40, 0xF1, 0x8C, 0x80, 0x19, 0xF4, 0x00, 0x0F, 0x0C, 0xD0, 0xE1, 0x6C, 0x4D, 0x6A, 0x29, 0x88, -0x88, 0xB2, 0x09, 0x04, 0x00, 0xF1, 0xFE, 0x81, 0x32, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x00, 0x2B, 0x40, 0xF0, 0x86, 0x80, -0x31, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x53, 0x93, 0xF8, 0xC0, 0x24, 0x42, 0xB1, 0x93, 0xF8, 0xC1, 0x34, -0x2D, 0x4F, 0x03, 0xEB, 0x83, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x07, 0xEB, 0x83, 0x07, 0x63, 0x7F, 0x09, 0x2B, 0x08, 0xD8, -0xE3, 0x8B, 0x18, 0x07, 0x05, 0xD4, 0x09, 0xF4, 0x01, 0x09, 0xB9, 0xF5, 0x80, 0x3F, 0x00, 0xF0, 0x2B, 0x82, 0x25, 0x4F, -0x9D, 0xF8, 0x04, 0x50, 0xD7, 0xF8, 0x18, 0x34, 0x00, 0x21, 0x20, 0x46, 0x98, 0x47, 0xD7, 0xF8, 0xAC, 0x33, 0x00, 0x22, -0x29, 0x46, 0x20, 0x46, 0x98, 0x47, 0x22, 0x8B, 0x48, 0xF6, 0x88, 0x63, 0x9A, 0x42, 0x00, 0xF0, 0x05, 0x81, 0x63, 0x7F, -0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x11, 0x49, 0xA0, 0x88, -0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x12, 0x1A, 0x41, 0xF8, 0x23, 0x20, 0x06, 0xF1, 0x10, 0x01, 0x20, 0x46, -0xFF, 0xF7, 0x1C, 0xFD, 0xE3, 0x8B, 0xDB, 0x07, 0x00, 0xF1, 0x08, 0x81, 0x21, 0x46, 0x28, 0x46, 0x15, 0xF0, 0xB8, 0xFA, -0x62, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x24, 0x64, 0x17, 0x00, 0xC4, 0x90, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xB7, 0x4F, 0x3B, 0x68, 0x1B, 0x78, 0x00, 0x2B, -0x3F, 0xF4, 0x44, 0xAF, 0x15, 0xF4, 0x00, 0x05, 0x7F, 0xF4, 0x09, 0xAF, 0xB4, 0xF9, 0x1E, 0x30, 0xE2, 0x8B, 0x00, 0x2B, -0xC0, 0xF2, 0x81, 0x80, 0x00, 0x25, 0x00, 0xE7, 0xAF, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x00, 0x2B, 0x3F, 0xF4, 0x7E, 0xAF, -0x19, 0xF4, 0x00, 0x0F, 0x3F, 0xF4, 0x7A, 0xAF, 0xE3, 0x8B, 0x1D, 0x07, 0x3F, 0xF5, 0x76, 0xAF, 0x23, 0x7F, 0xA9, 0x4D, -0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x53, 0x03, 0xF1, 0x98, 0x02, 0x93, 0xF8, 0x62, 0x10, 0x20, 0x46, 0xFF, 0xF7, -0xAF, 0xFC, 0x68, 0xE7, 0x33, 0x69, 0x03, 0xF0, 0x0F, 0x03, 0x09, 0x2B, 0x7F, 0xF4, 0xCA, 0xAE, 0x03, 0x9B, 0xA0, 0x48, -0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x00, 0x90, 0xF8, 0x5D, 0x32, 0x01, 0x2B, 0x3F, 0xF6, 0xBF, 0xAE, 0xE2, 0x6C, -0xB0, 0xF8, 0x5E, 0x12, 0xD2, 0x6A, 0x8A, 0x42, 0x3F, 0xF4, 0xB8, 0xAE, 0x01, 0x33, 0x80, 0xF8, 0x5D, 0x32, 0xA0, 0xF8, -0x5E, 0x22, 0xB1, 0xE6, 0x95, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9B, 0x80, 0x59, 0x46, -0x40, 0x46, 0x04, 0x9A, 0x23, 0xF0, 0xCA, 0xFE, 0x38, 0x46, 0x02, 0xF0, 0x9D, 0xF8, 0x00, 0x23, 0x04, 0x93, 0x9B, 0x46, -0x98, 0x46, 0x8C, 0xE6, 0xD7, 0xF8, 0xDC, 0x20, 0xDA, 0xB1, 0x11, 0x88, 0x23, 0x8C, 0xA3, 0xEB, 0x11, 0x13, 0xC3, 0xF3, -0x0B, 0x03, 0x40, 0xF2, 0xFE, 0x71, 0x8B, 0x42, 0x0C, 0xD8, 0x3F, 0x2B, 0x4F, 0xEA, 0x13, 0x11, 0x08, 0xD8, 0x02, 0xEB, -0x41, 0x02, 0x03, 0xF0, 0x0F, 0x03, 0x52, 0x88, 0x42, 0xFA, 0x03, 0xF3, 0xDA, 0x07, 0x04, 0xD4, 0x4F, 0xF4, 0x80, 0x23, -0x1D, 0x43, 0x35, 0x61, 0x45, 0xE6, 0x04, 0x9B, 0x01, 0x33, 0x04, 0x93, 0x4F, 0xF4, 0x04, 0x03, 0xF6, 0xE7, 0x75, 0x4F, -0x3B, 0x68, 0x1B, 0x78, 0x00, 0x2B, 0x3F, 0xF4, 0xBF, 0xAE, 0xB4, 0xF9, 0x1E, 0x30, 0xE2, 0x8B, 0x00, 0x2B, 0xBF, 0xF6, -0x7F, 0xAF, 0x71, 0x4D, 0x02, 0x99, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x01, 0x53, 0x93, 0xF8, 0x64, 0x30, 0x00, 0x2B, -0x3F, 0xF4, 0x74, 0xAF, 0xE6, 0x6C, 0x01, 0x98, 0x00, 0x21, 0xC2, 0xF3, 0x0E, 0x03, 0x31, 0x65, 0x43, 0xF0, 0x01, 0x03, -0x61, 0x64, 0x31, 0x61, 0x02, 0x9E, 0xE3, 0x83, 0x9E, 0x30, 0xA4, 0x23, 0x13, 0xFB, 0x06, 0x00, 0xE1, 0x62, 0x61, 0x62, -0x65, 0x4A, 0x05, 0xEB, 0xC0, 0x00, 0x21, 0x46, 0x13, 0xF0, 0x60, 0xFD, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, -0x60, 0x1F, 0x00, 0xF0, 0xE4, 0x80, 0x01, 0x23, 0x05, 0x93, 0x8B, 0xE6, 0x05, 0x9B, 0x00, 0x2B, 0x40, 0xF0, 0xDC, 0x80, -0x40, 0x20, 0x13, 0xF0, 0x1F, 0xFC, 0x00, 0x23, 0x05, 0x93, 0x81, 0xE6, 0x40, 0x20, 0x13, 0xF0, 0x19, 0xFC, 0x68, 0xE6, -0x33, 0x69, 0x03, 0xF0, 0x0F, 0x03, 0x09, 0x2B, 0x7F, 0xF4, 0xF5, 0xAE, 0x03, 0x9B, 0x51, 0x48, 0x4F, 0xF4, 0x1E, 0x72, -0x02, 0xFB, 0x03, 0x00, 0x90, 0xF8, 0x5D, 0x32, 0x01, 0x2B, 0x3F, 0xF6, 0xEA, 0xAE, 0xE2, 0x6C, 0xB0, 0xF8, 0x5E, 0x12, -0xD2, 0x6A, 0x8A, 0x42, 0x3F, 0xF4, 0xE3, 0xAE, 0x01, 0x33, 0x80, 0xF8, 0x5D, 0x32, 0xA0, 0xF8, 0x5E, 0x22, 0xDC, 0xE6, -0x40, 0x20, 0x13, 0xF0, 0xF7, 0xFB, 0xF3, 0xE6, 0xB8, 0xF1, 0x00, 0x0F, 0x7F, 0xF4, 0x61, 0xAF, 0x44, 0x49, 0x45, 0x48, -0x40, 0xF2, 0x3D, 0x22, 0x15, 0xF0, 0xE2, 0xF8, 0x59, 0xE7, 0x00, 0xF0, 0x0C, 0x00, 0x08, 0x28, 0x7F, 0xF4, 0x10, 0xAE, -0xD7, 0xF8, 0x1A, 0x10, 0x01, 0xF0, 0x3F, 0x01, 0x07, 0x29, 0x7F, 0xF4, 0x09, 0xAE, 0x23, 0xF0, 0x20, 0x03, 0xD3, 0x63, -0x04, 0xE6, 0x3B, 0x4B, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, 0x06, 0x46, 0x00, 0x28, 0x3F, 0xF4, 0x2C, 0xAE, -0xF7, 0xF7, 0x96, 0xFE, 0x07, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x02, 0x81, 0x00, 0x22, 0x34, 0x4B, 0x02, 0x60, 0x1B, 0x68, -0x42, 0x60, 0x1E, 0x44, 0x82, 0x60, 0x06, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x2F, 0x4B, -0x1D, 0x60, 0x2F, 0x49, 0xD9, 0xF8, 0x00, 0x20, 0x0B, 0x68, 0x01, 0x32, 0x43, 0xF0, 0x01, 0x03, 0xC9, 0xF8, 0x00, 0x20, -0x0B, 0x60, 0x2A, 0x4B, 0x1B, 0x68, 0x9E, 0x07, 0xFB, 0xD4, 0x29, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x40, 0xF0, 0xE4, 0x80, -0x27, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x40, 0xF0, 0xF0, 0x80, 0x25, 0x4B, 0x25, 0x4D, 0x1F, 0x60, 0x22, 0x48, 0xA9, 0x89, -0x03, 0x68, 0x6F, 0x60, 0x01, 0x31, 0xA9, 0x81, 0x01, 0x33, 0x1E, 0x49, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, -0x0B, 0x60, 0x00, 0x2A, 0x3F, 0xF4, 0xEC, 0xAD, 0x18, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC9, 0xF8, 0x00, 0x20, 0x00, 0x2A, -0x7F, 0xF4, 0xE4, 0xAD, 0x00, 0x2B, 0x3F, 0xF4, 0xE1, 0xAD, 0x62, 0xB6, 0xDE, 0xE5, 0x23, 0x7F, 0x09, 0x4D, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x03, 0x55, 0x05, 0xF1, 0x98, 0x02, 0x95, 0xF8, 0x62, 0x10, 0x20, 0x46, 0xFF, 0xF7, 0x70, 0xFB, -0xBE, 0xE5, 0x62, 0xB6, 0x0A, 0xE6, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x61, 0xF1, 0x12, 0x00, 0x70, 0x79, 0x15, 0x00, 0x90, 0x90, 0x15, 0x00, -0x28, 0x60, 0x17, 0x00, 0x34, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x60, 0x00, 0x24, 0x40, 0x64, 0x00, 0x24, 0x40, -0x68, 0x00, 0x24, 0x40, 0x10, 0x60, 0x17, 0x00, 0x00, 0xF0, 0x0C, 0x00, 0x08, 0x28, 0x7F, 0xF4, 0xFD, 0xAD, 0xD5, 0xF8, -0x1A, 0x10, 0x01, 0xF0, 0x3F, 0x01, 0x07, 0x29, 0x7F, 0xF4, 0xF6, 0xAD, 0x23, 0xF0, 0x20, 0x03, 0xD3, 0x63, 0xF1, 0xE5, -0x4E, 0x4D, 0x02, 0x9B, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x03, 0x50, 0xFE, 0xF7, 0xB8, 0xFE, 0x00, 0x28, 0x3F, 0xF4, -0x19, 0xAF, 0x4A, 0x4B, 0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, 0x7F, 0xF4, 0x13, 0xAF, 0x01, 0x9A, 0x02, 0x99, 0xA4, 0x23, -0x02, 0xF1, 0x9E, 0x06, 0x13, 0xFB, 0x01, 0x66, 0x03, 0xFB, 0x01, 0x23, 0x03, 0xF1, 0x9E, 0x04, 0x05, 0xEB, 0xC6, 0x06, -0xD7, 0xB2, 0xA1, 0x46, 0x0C, 0xE0, 0x13, 0xF0, 0x09, 0xFC, 0xDA, 0xF8, 0x24, 0x34, 0x20, 0x46, 0x39, 0x46, 0x98, 0x47, -0x3B, 0x4B, 0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, 0x7F, 0xF4, 0xF6, 0xAE, 0x55, 0xF8, 0x39, 0x40, 0x30, 0x46, 0x00, 0x2C, -0xED, 0xD1, 0xEF, 0xE6, 0x36, 0x4B, 0x1B, 0x68, 0x1C, 0x42, 0x7F, 0xF4, 0xC3, 0xAC, 0x35, 0x49, 0x35, 0x48, 0x4F, 0xF4, -0xF2, 0x72, 0x14, 0xF0, 0xFD, 0xFF, 0xBB, 0xE4, 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, 0x0A, 0x59, 0x99, 0xF8, 0x64, 0x10, -0x00, 0x29, 0x3F, 0xF4, 0xCC, 0xAD, 0x2F, 0x48, 0x03, 0x99, 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, 0x01, 0x01, 0x91, 0xF8, -0x24, 0x10, 0x01, 0x29, 0x0F, 0xD0, 0x99, 0x07, 0x2F, 0xD4, 0x00, 0x2A, 0x3F, 0xF4, 0xBD, 0xAD, 0x97, 0xF8, 0x70, 0x30, -0x01, 0x2B, 0x7F, 0xF4, 0xB8, 0xAD, 0x97, 0xF8, 0x85, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0xB3, 0xAD, 0xE3, 0x8B, 0xE1, 0x6C, -0x01, 0x98, 0x22, 0x4A, 0xC3, 0xF3, 0x0E, 0x03, 0x00, 0x26, 0x43, 0xF0, 0x01, 0x03, 0x0E, 0x65, 0x0E, 0x61, 0x9E, 0x30, -0xE3, 0x83, 0xA4, 0x23, 0x13, 0xFB, 0x0A, 0x00, 0x05, 0xEB, 0xC0, 0x00, 0xE6, 0x62, 0x21, 0x46, 0x13, 0xF0, 0xFE, 0xFB, -0x40, 0x20, 0x13, 0xF0, 0xCB, 0xFA, 0x2F, 0xE5, 0x30, 0x46, 0xF7, 0xF7, 0x6B, 0xFC, 0x1F, 0xE5, 0x15, 0x4D, 0x6B, 0x68, -0x9B, 0xB1, 0x5F, 0x60, 0x1E, 0xE7, 0xB4, 0xF8, 0x40, 0x00, 0x20, 0xF0, 0x75, 0xFC, 0x00, 0x28, 0xD6, 0xD0, 0x99, 0xF8, -0xC0, 0x24, 0x00, 0x2A, 0x3F, 0xF4, 0x85, 0xAD, 0xC6, 0xE7, 0x0E, 0x48, 0x14, 0xF0, 0x2E, 0xFD, 0xD9, 0xF8, 0x00, 0x20, -0x09, 0xE7, 0x0C, 0x48, 0x14, 0xF0, 0x28, 0xFD, 0xD9, 0xF8, 0x00, 0x20, 0x06, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x78, 0x90, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, -0x61, 0xF1, 0x12, 0x00, 0x10, 0x60, 0x17, 0x00, 0xA8, 0x90, 0x15, 0x00, 0xB0, 0x90, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x47, -0x27, 0x4F, 0xDF, 0xF8, 0xA0, 0xA0, 0x91, 0x46, 0x06, 0x46, 0x0D, 0x46, 0x42, 0xF0, 0x70, 0x58, 0x28, 0x46, 0x13, 0xF0, -0x6D, 0xFB, 0x04, 0x46, 0x80, 0xB1, 0x42, 0x6C, 0xC1, 0x6C, 0x00, 0x2A, 0x38, 0xD0, 0xC1, 0xF8, 0x10, 0x80, 0xA2, 0x88, -0x62, 0xB9, 0x20, 0x46, 0x00, 0xF0, 0xA2, 0xF9, 0x28, 0x46, 0x13, 0xF0, 0x5D, 0xFB, 0x04, 0x46, 0x00, 0x28, 0xEE, 0xD1, -0xBD, 0xE8, 0xF0, 0x47, 0x00, 0xF0, 0xBC, 0xB9, 0x0A, 0x69, 0x42, 0xF4, 0x00, 0x02, 0x41, 0xF8, 0x10, 0x2F, 0x20, 0x46, -0xFF, 0xF7, 0x7E, 0xFA, 0xD7, 0xF8, 0x18, 0x34, 0x01, 0x21, 0x20, 0x46, 0x98, 0x47, 0x63, 0x7F, 0x09, 0x2B, 0x0D, 0xD8, -0xE2, 0x7E, 0x08, 0x2A, 0x0A, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x03, 0xF6, 0x0E, 0x03, 0xA1, 0x88, 0x5A, 0xF8, -0x23, 0x20, 0x52, 0x1A, 0x4A, 0xF8, 0x23, 0x20, 0x31, 0x46, 0x20, 0x46, 0xD7, 0xF8, 0x78, 0x33, 0x98, 0x47, 0x21, 0x46, -0x30, 0x46, 0x15, 0xF0, 0x03, 0xF8, 0xBD, 0xE7, 0x0A, 0x69, 0x00, 0x2A, 0xA8, 0xBF, 0xC1, 0xF8, 0x10, 0x90, 0xC2, 0xE7, -0x88, 0x1A, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x6C, 0x80, 0x92, 0x46, 0x06, 0x46, -0x0F, 0x46, 0x42, 0xF0, 0x70, 0x59, 0x38, 0x46, 0x13, 0xF0, 0x18, 0xFB, 0x04, 0x46, 0xF0, 0xB1, 0x42, 0x6C, 0xC3, 0x6C, -0x12, 0xB3, 0xC3, 0xF8, 0x10, 0x90, 0xA2, 0x88, 0x00, 0x21, 0x20, 0x46, 0xCA, 0xB1, 0x1D, 0x69, 0x45, 0xF4, 0x00, 0x05, -0x1D, 0x61, 0xD8, 0xF8, 0x18, 0x34, 0x98, 0x47, 0xD8, 0xF8, 0x78, 0x33, 0x20, 0x46, 0x31, 0x46, 0x98, 0x47, 0x21, 0x46, -0x30, 0x46, 0x14, 0xF0, 0xD1, 0xFF, 0x38, 0x46, 0x13, 0xF0, 0xFA, 0xFA, 0x04, 0x46, 0x00, 0x28, 0xE0, 0xD1, 0xBD, 0xE8, -0xF0, 0x47, 0x00, 0xF0, 0x59, 0xB9, 0x00, 0xF0, 0x33, 0xF9, 0xD4, 0xE7, 0x1A, 0x69, 0x00, 0x2A, 0xA8, 0xBF, 0xC3, 0xF8, -0x10, 0xA0, 0xD8, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x14, 0x46, 0x05, 0x46, 0x0F, 0x46, 0x60, 0x22, 0x00, 0x21, -0x1E, 0x46, 0xF0, 0xF7, 0x07, 0xFA, 0x4F, 0xF0, 0x01, 0x0C, 0x85, 0xF8, 0x5C, 0xC0, 0x00, 0x23, 0x07, 0x49, 0x08, 0x4A, -0xAF, 0x64, 0x07, 0xF1, 0x68, 0x00, 0xEE, 0x62, 0xEC, 0x64, 0xC4, 0xE9, 0x0F, 0x33, 0x60, 0x62, 0x61, 0x61, 0x23, 0x63, -0x63, 0x64, 0x32, 0x60, 0xF8, 0xBD, 0x00, 0xBF, 0xBE, 0xBA, 0xFE, 0xCA, 0x1E, 0xAB, 0xDC, 0xBA, 0x2D, 0xE9, 0xF8, 0x4F, -0x07, 0x46, 0x3C, 0x48, 0x3C, 0x4C, 0xDF, 0xF8, 0x08, 0xA1, 0x3C, 0x4E, 0x3C, 0x4D, 0xDF, 0xF8, 0x04, 0xB1, 0x81, 0x46, -0x13, 0xF0, 0x70, 0xFA, 0x09, 0xF1, 0x08, 0x00, 0x13, 0xF0, 0x6C, 0xFA, 0x04, 0xF5, 0xC0, 0x78, 0x00, 0x21, 0x20, 0x46, -0x60, 0x22, 0x17, 0xB1, 0x94, 0xF8, 0x5D, 0x30, 0xC3, 0xB9, 0xF0, 0xF7, 0xD1, 0xF9, 0x00, 0x22, 0x32, 0x4B, 0xC4, 0xF8, -0x48, 0xA0, 0x0A, 0xF1, 0x68, 0x0C, 0xC5, 0xE9, 0x0F, 0x22, 0x21, 0x46, 0x48, 0x46, 0xE6, 0x62, 0xE5, 0x64, 0xC5, 0xF8, -0x14, 0xB0, 0x33, 0x60, 0x84, 0xF8, 0x5C, 0x20, 0x2A, 0x63, 0x6A, 0x64, 0xC5, 0xF8, 0x24, 0xC0, 0x13, 0xF0, 0x4E, 0xFA, -0x60, 0x34, 0xA0, 0x45, 0x0A, 0xF5, 0xF4, 0x7A, 0x06, 0xF1, 0x40, 0x06, 0x05, 0xF1, 0x58, 0x05, 0xD6, 0xD1, 0x24, 0x4E, -0xDF, 0xF8, 0x88, 0x90, 0xC6, 0xF8, 0x00, 0x90, 0x00, 0x24, 0xC6, 0xE9, 0x0D, 0x44, 0xF4, 0x63, 0xF1, 0xF7, 0x8E, 0xFA, -0x80, 0x03, 0x70, 0x60, 0xF1, 0xF7, 0x8A, 0xFA, 0x01, 0x27, 0x43, 0x1C, 0x07, 0xFA, 0x03, 0xF3, 0x1B, 0x4D, 0xDF, 0xF8, -0x78, 0x80, 0xF4, 0x60, 0x01, 0x3B, 0xB3, 0x60, 0x4F, 0xF4, 0x80, 0x63, 0xC6, 0xE9, 0x04, 0x83, 0xC6, 0xE9, 0x06, 0x44, -0x34, 0x62, 0xC5, 0xF8, 0x00, 0x90, 0xC6, 0xE9, 0x0A, 0x44, 0xC5, 0xE9, 0x0D, 0x44, 0x34, 0x63, 0xEC, 0x63, 0xF1, 0xF7, -0x6F, 0xFA, 0x80, 0x03, 0x68, 0x60, 0xF1, 0xF7, 0x6B, 0xFA, 0x38, 0x44, 0x87, 0x40, 0x01, 0x3F, 0x04, 0x23, 0xC5, 0xE9, -0x02, 0x74, 0xC5, 0xE9, 0x06, 0x44, 0xC5, 0xE9, 0x0A, 0x44, 0xC5, 0xF8, 0x10, 0x80, 0x2C, 0x62, 0x2C, 0x63, 0x6B, 0x61, -0xBD, 0xE8, 0xF8, 0x8F, 0x54, 0x64, 0x17, 0x00, 0x90, 0x28, 0x17, 0x00, 0x84, 0x3B, 0x18, 0x00, 0x04, 0x3D, 0x18, 0x00, -0x1E, 0xAB, 0xDC, 0xBA, 0xC4, 0x3C, 0x18, 0x00, 0x84, 0x3C, 0x18, 0x00, 0x4C, 0x50, 0x18, 0x00, 0xBE, 0xBA, 0xFE, 0xCA, -0x04, 0x07, 0xFF, 0xFF, 0xF8, 0xB5, 0xD0, 0xE9, 0x12, 0x64, 0x63, 0x6A, 0x05, 0x46, 0x50, 0x1E, 0x03, 0x44, 0x04, 0x32, -0xC4, 0xE9, 0x0A, 0x32, 0xC1, 0xB1, 0x01, 0x29, 0x1A, 0xD0, 0x06, 0xF1, 0x28, 0x01, 0x0F, 0x46, 0x34, 0x22, 0x38, 0x46, -0x27, 0xF0, 0xD8, 0xF8, 0x0B, 0x4A, 0x13, 0x68, 0x12, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0x00, 0x22, -0xF3, 0x64, 0xC4, 0xE9, 0x0D, 0x27, 0xE2, 0x64, 0x22, 0x62, 0xC5, 0xE9, 0x15, 0x22, 0xF8, 0xBD, 0x04, 0x49, 0x06, 0xF1, -0x28, 0x07, 0xE7, 0xE7, 0x03, 0x49, 0x06, 0xF1, 0x28, 0x07, 0xE3, 0xE7, 0xA0, 0x00, 0x32, 0x40, 0xC4, 0x3C, 0x18, 0x00, -0x84, 0x3C, 0x18, 0x00, 0x70, 0xB5, 0x05, 0x46, 0x05, 0x48, 0x0E, 0x46, 0x13, 0xF0, 0xFE, 0xF9, 0x04, 0x46, 0x18, 0xB1, -0x32, 0x46, 0x29, 0x46, 0xFF, 0xF7, 0xC2, 0xFF, 0x20, 0x46, 0x70, 0xBD, 0x54, 0x64, 0x17, 0x00, 0x16, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x2D, 0xE9, 0xF0, 0x41, 0xC4, 0x6C, 0x00, 0x2B, 0x62, 0x6A, 0x05, 0x46, 0x0E, 0x46, 0x16, 0xDB, -0xE3, 0x6C, 0x11, 0x4F, 0x23, 0xF4, 0xF0, 0x03, 0xE3, 0x64, 0x00, 0x23, 0xC4, 0xE9, 0x06, 0x33, 0x12, 0x79, 0x23, 0x65, -0x12, 0xF0, 0x01, 0x0F, 0x08, 0xBF, 0x4F, 0xF4, 0x00, 0x73, 0xA3, 0x64, 0xD7, 0xF8, 0x98, 0x33, 0x31, 0x46, 0x28, 0x46, -0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xD3, 0x07, 0xE6, 0xD5, 0x4F, 0xF4, 0xB1, 0x72, 0x05, 0x49, 0x05, 0x48, 0x14, 0xF0, -0xD9, 0xFD, 0x62, 0x6A, 0xDE, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xDC, 0x90, 0x15, 0x00, 0x08, 0xB5, 0x01, 0x46, 0x04, 0x48, 0x13, 0xF0, 0x75, 0xF9, 0xBD, 0xE8, 0x08, 0x40, 0x4F, 0xF4, -0x80, 0x20, 0x13, 0xF0, 0xCD, 0xB8, 0x00, 0xBF, 0x5C, 0x64, 0x17, 0x00, 0x70, 0xB5, 0x90, 0xF8, 0x5C, 0x30, 0x04, 0x46, -0x0D, 0x46, 0x43, 0xB1, 0x35, 0xB1, 0x63, 0x6D, 0x23, 0xB1, 0xA0, 0x6D, 0x00, 0x21, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, -0x70, 0xBD, 0x01, 0x46, 0x01, 0x48, 0x13, 0xF0, 0x59, 0xF9, 0xF1, 0xE7, 0x54, 0x64, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x4F, 0xF4, 0x80, 0x20, 0x13, 0xF0, 0xD2, 0xF8, 0xDF, 0xF8, 0x88, 0x80, 0x1D, 0x4F, 0x1E, 0x4E, 0x1E, 0x4D, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0x3B, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x30, 0x46, 0x01, 0x33, -0xC8, 0xF8, 0x00, 0x30, 0x13, 0xF0, 0x80, 0xF9, 0xD8, 0xF8, 0x00, 0x30, 0x04, 0x46, 0x33, 0xB1, 0x01, 0x3B, 0x3A, 0x68, -0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD4, 0xB1, 0xD5, 0xF8, 0xF8, 0x31, 0x62, 0x6D, 0x01, 0x3B, -0xC5, 0xF8, 0xF8, 0x31, 0x32, 0xB1, 0xE3, 0x6C, 0xA0, 0x6D, 0x19, 0x6D, 0x90, 0x47, 0x94, 0xF8, 0x5E, 0x30, 0x43, 0xB9, -0x94, 0xF8, 0x5C, 0x30, 0x00, 0x2B, 0xD2, 0xD1, 0x08, 0x48, 0x21, 0x46, 0x13, 0xF0, 0x1A, 0xF9, 0xCD, 0xE7, 0x00, 0x23, -0x84, 0xF8, 0x5E, 0x30, 0xC9, 0xE7, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x5C, 0x64, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x54, 0x64, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x78, 0x91, -0x58, 0x4D, 0x80, 0x46, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x08, 0x90, 0x4F, 0xF4, 0xA4, 0x63, 0x90, 0xF8, 0x22, 0xA0, -0x03, 0xFB, 0x0A, 0x53, 0x0F, 0x46, 0x1B, 0x6C, 0x16, 0x46, 0x00, 0x2B, 0x00, 0xF0, 0x98, 0x80, 0x50, 0x49, 0x1A, 0x79, -0x0B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x5A, 0xDB, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x53, 0x18, 0x21, -0x93, 0xF8, 0xC0, 0x34, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xFF, 0xF7, 0x1E, 0xFF, 0x04, 0x46, 0x00, 0x28, -0x59, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x55, 0x28, 0x46, 0x21, 0x46, 0x12, 0xF0, 0x11, 0xF8, 0x95, 0xF8, -0x62, 0x20, 0xA3, 0x6C, 0x02, 0x2A, 0x4F, 0xD0, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x08, 0x92, 0xE8, 0x6D, 0x52, 0xF8, -0x26, 0x1F, 0xB5, 0xF8, 0x60, 0xC0, 0xB2, 0xF8, 0x04, 0xE0, 0x15, 0x68, 0xD9, 0x66, 0x91, 0x88, 0xA3, 0xF8, 0x7C, 0x10, -0x00, 0x22, 0x9D, 0x67, 0x01, 0x21, 0x48, 0x25, 0xA3, 0xF8, 0x70, 0xE0, 0xC3, 0xF8, 0x72, 0x00, 0xA3, 0xF8, 0x76, 0xC0, -0x83, 0xF8, 0x6A, 0x20, 0x83, 0xF8, 0x6B, 0x20, 0x83, 0xF8, 0x68, 0x50, 0x83, 0xF8, 0x69, 0x10, 0x2E, 0x49, 0xB1, 0xF8, -0xFC, 0x51, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x08, 0x99, 0x01, 0x35, 0xAD, 0xB2, 0xA1, 0xF8, 0xFC, 0x51, 0x99, 0xF8, -0x22, 0x20, 0x2D, 0x01, 0xA3, 0xF8, 0x7E, 0x50, 0x20, 0x46, 0xC4, 0xE9, 0x15, 0x76, 0x22, 0x77, 0x84, 0xF8, 0x1D, 0x80, -0x05, 0x21, 0xFF, 0xF7, 0xE3, 0xFE, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x02, 0x2A, 0xA2, 0xD1, 0x20, 0x49, 0x21, 0x48, -0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0xDC, 0xFC, 0x01, 0x20, 0x18, 0x21, 0xFF, 0xF7, 0xC4, 0xFE, 0x04, 0x46, 0x00, 0x28, -0xA5, 0xD1, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x08, 0x91, 0xE8, 0x6D, 0x51, 0xF8, -0x26, 0xEF, 0x83, 0xF8, 0x69, 0x20, 0x89, 0x88, 0xA3, 0xF8, 0x70, 0x10, 0x00, 0x22, 0xB5, 0xF8, 0x60, 0x10, 0xC3, 0xF8, -0x72, 0x00, 0x4F, 0xF0, 0x48, 0x0C, 0xE8, 0x6D, 0x83, 0xF8, 0x6A, 0x20, 0x83, 0xF8, 0x6B, 0x20, 0xB5, 0xF8, 0x60, 0x20, -0xC3, 0xF8, 0x6C, 0xE0, 0x83, 0xF8, 0x68, 0xC0, 0xA3, 0xF8, 0x76, 0x10, 0x98, 0x67, 0xA3, 0xF8, 0x7C, 0x20, 0xAD, 0xE7, -0x04, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xCB, 0xDA, 0xC4, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, -0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x38, 0xB1, 0x49, 0x4C, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0xB5, 0x06, 0x46, -0x95, 0xF8, 0x22, 0x70, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x07, 0x40, 0x98, 0x46, 0x00, 0x6C, 0x43, 0x4B, 0x8A, 0x46, -0x91, 0x46, 0x00, 0x28, 0x7A, 0xD0, 0x1B, 0x68, 0x02, 0x79, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x62, 0xDB, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x07, 0x43, 0x1A, 0x21, 0x93, 0xF8, 0xC0, 0x34, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, -0xFF, 0xF7, 0x5C, 0xFE, 0x05, 0x46, 0x00, 0x28, 0x61, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x47, 0x38, 0x46, -0x29, 0x46, 0x11, 0xF0, 0x4F, 0xFF, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0xB3, 0xAC, 0x6C, 0x53, 0xF8, 0x26, 0x1F, -0x97, 0xF8, 0x62, 0xC0, 0xB3, 0xF8, 0x04, 0xE0, 0xF8, 0x6D, 0xB7, 0xF8, 0x60, 0x20, 0xA4, 0xF8, 0x76, 0x20, 0x00, 0x23, -0xA4, 0xF8, 0x70, 0xE0, 0xE1, 0x66, 0xC4, 0xF8, 0x72, 0x00, 0x84, 0xF8, 0x6A, 0x30, 0x84, 0xF8, 0x6B, 0x30, 0xBC, 0xF1, -0x00, 0x0F, 0x22, 0xD0, 0xF8, 0x6D, 0xA0, 0x67, 0x6F, 0xF0, 0x37, 0x01, 0x02, 0x23, 0xA4, 0xF8, 0x7C, 0x20, 0x84, 0xF8, -0x68, 0x10, 0x84, 0xF8, 0x69, 0x30, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0xBB, 0x00, 0x27, 0x9B, 0xF8, 0x22, 0x30, -0xA4, 0xF8, 0x80, 0xA0, 0x84, 0xF8, 0x7E, 0x70, 0x84, 0xF8, 0x7F, 0x70, 0x28, 0x46, 0xC5, 0xE9, 0x15, 0x98, 0x2B, 0x77, -0x6E, 0x77, 0x05, 0x21, 0xFF, 0xF7, 0x24, 0xFE, 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, 0x6F, 0xF0, 0x37, 0x02, 0x01, 0x23, -0xA1, 0x67, 0xA4, 0xF8, 0x7C, 0xE0, 0x84, 0xF8, 0x68, 0x20, 0x84, 0xF8, 0x69, 0x30, 0xDC, 0xE7, 0x02, 0x2A, 0x9A, 0xD1, -0x0C, 0x49, 0x0D, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0x12, 0xFC, 0x01, 0x20, 0x1A, 0x21, 0xFF, 0xF7, 0xFA, 0xFD, -0x05, 0x46, 0x00, 0x28, 0x9D, 0xD1, 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x8F, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xF0, 0xDA, 0xE9, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, -0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x9C, 0xA1, 0xDF, 0xF8, 0x9C, 0x81, 0x4F, 0xF4, 0x1E, 0x76, -0x06, 0xFB, 0x00, 0xA6, 0x05, 0x46, 0x96, 0xF8, 0x22, 0x90, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x09, 0x80, 0x83, 0xB0, -0x00, 0x6C, 0x00, 0x93, 0x0E, 0x1E, 0x17, 0x46, 0x9D, 0xF8, 0x30, 0x40, 0x9D, 0xF8, 0x34, 0xB0, 0x55, 0x4A, 0x0C, 0xBF, -0x1E, 0x23, 0x1D, 0x23, 0x00, 0x28, 0x00, 0xF0, 0x9D, 0x80, 0x12, 0x68, 0x01, 0x79, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, -0xC0, 0xF2, 0x85, 0x80, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x09, 0x82, 0x92, 0xF8, 0xC0, 0x24, 0x0A, 0x43, 0x14, 0xBF, -0x01, 0x20, 0x00, 0x20, 0x19, 0x46, 0xFF, 0xF7, 0xAF, 0xFD, 0x03, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x81, 0x80, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x09, 0x88, 0xD0, 0xF8, 0x48, 0x90, 0x01, 0x93, 0x40, 0x46, 0x19, 0x46, 0x11, 0xF0, 0x9E, 0xFE, -0xD9, 0xF8, 0x38, 0x00, 0x01, 0x9B, 0x40, 0x4A, 0x99, 0x6C, 0xB8, 0xF8, 0x60, 0xE0, 0x00, 0x0C, 0x4F, 0xF0, 0x00, 0x0C, -0x46, 0xEA, 0x07, 0x17, 0x00, 0x04, 0xC9, 0xF8, 0x38, 0x00, 0xD8, 0xF8, 0x5C, 0x00, 0x8F, 0x67, 0x81, 0xF8, 0x7C, 0xC0, -0x81, 0xF8, 0x7D, 0xC0, 0x81, 0xF8, 0x7E, 0xC0, 0x81, 0xF8, 0x7F, 0xC0, 0x92, 0xF8, 0x43, 0x70, 0xDF, 0xF8, 0xE8, 0x80, -0xC1, 0xF8, 0x72, 0x00, 0x24, 0x20, 0xB8, 0xF8, 0x04, 0x20, 0xA1, 0xF8, 0x76, 0xE0, 0x81, 0xF8, 0x68, 0x00, 0xD8, 0xF8, -0x00, 0xE0, 0xA1, 0xF8, 0x70, 0x20, 0xB8, 0x06, 0xC1, 0xF8, 0x6C, 0xE0, 0x81, 0xF8, 0x69, 0xC0, 0x81, 0xF8, 0x6A, 0xC0, -0x81, 0xF8, 0x6B, 0xC0, 0xC7, 0xF3, 0x40, 0x12, 0x0B, 0xD5, 0x27, 0x48, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x05, 0x02, -0x52, 0x78, 0x12, 0xF0, 0x20, 0x0F, 0x0C, 0xBF, 0x62, 0x46, 0x4F, 0xF4, 0x80, 0x12, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, -0x05, 0xA5, 0x64, 0x05, 0x28, 0x8C, 0x00, 0x9D, 0x44, 0xEA, 0x45, 0x34, 0x04, 0x43, 0x14, 0x43, 0xD8, 0x22, 0xC1, 0xF8, -0x80, 0x40, 0x81, 0xF8, 0x84, 0x20, 0x6E, 0xB1, 0x0E, 0x9A, 0x5A, 0x65, 0x0F, 0x9A, 0x9A, 0x65, 0x59, 0x46, 0x18, 0x46, -0xFF, 0xF7, 0x54, 0xFD, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0x4A, 0x12, 0xF8, -0x0B, 0x20, 0x92, 0x01, 0x81, 0xF8, 0x85, 0x20, 0xEA, 0xE7, 0x02, 0x29, 0x7F, 0xF4, 0x78, 0xAF, 0x0E, 0x48, 0x0F, 0x49, -0x01, 0x93, 0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0x41, 0xFB, 0x01, 0x9B, 0x01, 0x20, 0x77, 0xE7, 0x01, 0x20, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xEC, 0xDB, 0x01, 0x20, 0x6C, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x62, 0x66, 0x17, 0x00, 0xA0, 0xB2, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, -0x70, 0x79, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xAC, 0xB2, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, -0x90, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x77, 0xD1, 0x03, 0x6C, 0x04, 0x46, 0x89, 0x46, 0x00, 0x2B, 0x79, 0xD0, 0x40, 0x4A, -0x1B, 0x79, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x51, 0xDB, 0x94, 0xF8, 0xC0, 0x24, 0xDF, 0xF8, 0x08, 0x81, -0x13, 0x43, 0xB8, 0xF8, 0x00, 0x10, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xFF, 0xF7, 0xEE, 0xFC, 0x06, 0x46, 0x00, 0x28, -0x54, 0xD0, 0x01, 0x46, 0x20, 0x46, 0x11, 0xF0, 0xE5, 0xFD, 0xB5, 0x6C, 0x00, 0x27, 0x50, 0x23, 0x49, 0x46, 0x85, 0xF8, -0x68, 0x30, 0x85, 0xF8, 0x69, 0x70, 0x85, 0xF8, 0x6A, 0x70, 0x85, 0xF8, 0x6B, 0x70, 0x05, 0xF1, 0x6C, 0x00, 0x06, 0x22, -0x26, 0xF0, 0x90, 0xFD, 0x2B, 0x49, 0xE0, 0x6D, 0xB1, 0xF8, 0xFC, 0x31, 0xB4, 0xF8, 0x60, 0xC0, 0xB8, 0xF8, 0x00, 0x20, -0xB4, 0xF8, 0x60, 0xE0, 0xC5, 0xF8, 0x72, 0x00, 0x01, 0x33, 0x9B, 0xB2, 0xE0, 0x6D, 0xA5, 0xF8, 0x76, 0xC0, 0x4F, 0xEA, -0x03, 0x1C, 0xA8, 0x67, 0xA5, 0xF8, 0x7C, 0xE0, 0x18, 0x3A, 0xA1, 0xF8, 0xFC, 0x31, 0x05, 0xF1, 0x80, 0x00, 0xA5, 0xF8, -0x7E, 0xC0, 0x1E, 0x49, 0x26, 0xF0, 0x70, 0xFD, 0xC6, 0xE9, 0x15, 0x77, 0x94, 0xF8, 0x63, 0x30, 0x33, 0x77, 0xFF, 0x23, -0x73, 0x77, 0x30, 0x46, 0x05, 0x21, 0xFF, 0xF7, 0xBB, 0xFC, 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x02, 0x2B, 0xAB, 0xD1, -0x15, 0x49, 0x16, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0xB4, 0xFA, 0xDF, 0xF8, 0x58, 0x80, 0x01, 0x20, 0xB8, 0xF8, -0x00, 0x10, 0xFF, 0xF7, 0x99, 0xFC, 0x06, 0x46, 0x00, 0x28, 0xAA, 0xD1, 0xB8, 0xF8, 0x00, 0x10, 0x0E, 0x48, 0x14, 0xF0, -0x2B, 0xF8, 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x0C, 0x48, 0x19, 0x46, 0x14, 0xF0, 0x24, 0xF8, 0x01, 0x20, 0xBD, 0xE8, -0xF8, 0x83, 0x03, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE0, 0xDA, 0xD9, 0xE7, 0x38, 0x36, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x2C, 0x2A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0x28, 0x91, 0x15, 0x00, -0x14, 0x91, 0x15, 0x00, 0x14, 0x2C, 0x17, 0x00, 0x02, 0x4B, 0x40, 0xEA, 0x41, 0x01, 0x33, 0xF8, 0x11, 0x00, 0x70, 0x47, -0xA0, 0x92, 0x15, 0x00, 0x02, 0x4B, 0x40, 0xEA, 0x41, 0x01, 0x58, 0x5C, 0x70, 0x47, 0x00, 0xBF, 0x40, 0x93, 0x15, 0x00, -0xF0, 0xB4, 0x1D, 0x4C, 0x1D, 0x4D, 0x1E, 0x4F, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x02, 0x42, 0x16, 0x46, 0x92, 0xF8, -0x22, 0x40, 0x4F, 0xF4, 0xA4, 0x6C, 0x0C, 0xFB, 0x04, 0x54, 0x56, 0xF8, 0x26, 0x5F, 0xB4, 0xF8, 0x60, 0xC0, 0x02, 0x46, -0xE0, 0x6D, 0xB4, 0x88, 0xA2, 0xF8, 0x9C, 0x40, 0x00, 0x24, 0x54, 0x65, 0xC2, 0xF8, 0x8C, 0x40, 0x3C, 0x68, 0x3E, 0x68, -0x9D, 0xF8, 0x10, 0x70, 0xC2, 0xF8, 0x9E, 0x00, 0x24, 0x02, 0xF6, 0xB2, 0x1B, 0x03, 0xA4, 0xB2, 0x40, 0xF6, 0x08, 0x00, -0x34, 0x43, 0x40, 0xEA, 0xC7, 0x10, 0x43, 0xF0, 0x04, 0x03, 0x09, 0x01, 0xC2, 0xF8, 0x98, 0x50, 0xC2, 0xF8, 0xCC, 0x40, -0xA2, 0xF8, 0xA2, 0xC0, 0xF0, 0xBC, 0xA2, 0xF8, 0xA4, 0x30, 0xA2, 0xF8, 0xA6, 0x10, 0xC2, 0xF8, 0xBC, 0x00, 0x70, 0x47, -0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xA0, 0x00, 0x32, 0x40, 0xC2, 0x6C, 0x53, 0x6A, 0x13, 0xB3, 0x12, 0x49, -0x12, 0x4B, 0xC9, 0x6E, 0x10, 0xB5, 0x04, 0x46, 0x18, 0x68, 0x63, 0x6A, 0x92, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, -0x60, 0x1F, 0x42, 0xF8, 0x03, 0x1C, 0x08, 0xD0, 0xB0, 0xF9, 0x00, 0x30, 0x24, 0x68, 0x00, 0x2B, 0x04, 0xDB, 0xE2, 0x6C, -0x53, 0x6A, 0x00, 0x2B, 0xED, 0xD1, 0x10, 0xBD, 0x00, 0x2C, 0xF8, 0xD1, 0x06, 0x49, 0x07, 0x48, 0x40, 0xF2, 0xF9, 0x22, -0x14, 0xF0, 0x0E, 0xFA, 0xE3, 0x6C, 0xFF, 0xDE, 0x70, 0x47, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x89, 0xB0, 0x04, 0x46, 0x9D, 0xF8, 0x48, 0x00, -0x67, 0x6C, 0x07, 0x90, 0x9B, 0x46, 0x05, 0x28, 0x4F, 0xF0, 0x00, 0x03, 0x06, 0x91, 0x03, 0x92, 0x9A, 0x46, 0x00, 0xF0, -0x12, 0x81, 0xAA, 0x4A, 0x00, 0xEB, 0x40, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x02, 0xEB, 0x83, 0x03, 0x04, 0x93, 0xDF, 0xF8, -0xC8, 0x92, 0xA6, 0x48, 0x12, 0xF0, 0xD4, 0xFD, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, -0xC0, 0xF2, 0xF3, 0x80, 0xBB, 0x88, 0xAB, 0x80, 0x7B, 0x7A, 0x6B, 0x72, 0xBB, 0x7A, 0xAB, 0x72, 0x01, 0x23, 0xEB, 0x72, -0xD7, 0xE9, 0x10, 0xC0, 0xFE, 0x6A, 0x79, 0x69, 0x3A, 0x6B, 0xEE, 0x62, 0x00, 0x23, 0x1E, 0x46, 0x69, 0x61, 0x6B, 0x62, -0x19, 0x46, 0x98, 0x46, 0x02, 0x93, 0x05, 0xF1, 0x0C, 0x03, 0xC5, 0xE9, 0x10, 0xC0, 0x2A, 0x63, 0x05, 0x93, 0x01, 0x96, -0x53, 0xE0, 0x9B, 0x45, 0x40, 0xF2, 0xB4, 0x80, 0xAB, 0xEB, 0x03, 0x0A, 0x1F, 0xFA, 0x8A, 0xFA, 0x0A, 0xF1, 0x03, 0x0A, -0x4F, 0xEA, 0x9A, 0x0A, 0x03, 0xEB, 0x8A, 0x03, 0x9B, 0xB2, 0x03, 0x9E, 0x19, 0x44, 0xB1, 0x42, 0x5A, 0xD8, 0xB8, 0xF1, -0x00, 0x0F, 0x57, 0xD1, 0xDE, 0xF8, 0x24, 0x00, 0x28, 0xB1, 0x87, 0x4E, 0xDE, 0xF8, 0x28, 0x00, 0xF6, 0x6E, 0x40, 0xF8, -0x03, 0x6C, 0xDC, 0x45, 0x65, 0x64, 0x0D, 0xD2, 0xDE, 0xF8, 0x4C, 0x20, 0x22, 0xF4, 0xFF, 0x22, 0x22, 0xF4, 0xC0, 0x62, -0x42, 0xEA, 0x4A, 0x22, 0x42, 0xF4, 0x80, 0x70, 0x62, 0x62, 0x63, 0x46, 0xCE, 0xF8, 0x4C, 0x00, 0x69, 0x62, 0x79, 0x6A, -0x02, 0xF4, 0x60, 0x12, 0xCB, 0x1A, 0xB2, 0xF5, 0x60, 0x1F, 0x7B, 0x62, 0x00, 0xF0, 0xAA, 0x80, 0x77, 0x4A, 0xD9, 0xF8, -0x00, 0x30, 0x11, 0x68, 0x76, 0x4A, 0x91, 0xF8, 0x3E, 0x80, 0x12, 0x68, 0xB3, 0xF9, 0x00, 0x10, 0x23, 0x68, 0x02, 0xF0, -0x3F, 0x02, 0x90, 0x45, 0x94, 0xBF, 0x4F, 0xF0, 0x00, 0x08, 0x4F, 0xF0, 0x01, 0x08, 0x00, 0x29, 0x5D, 0xDB, 0x01, 0x9A, -0x69, 0x6A, 0x02, 0x94, 0x01, 0x32, 0x01, 0x92, 0x1C, 0x46, 0xD4, 0xF8, 0x4C, 0xE0, 0x62, 0x6A, 0xDE, 0xF8, 0x2C, 0x30, -0x9D, 0xF8, 0x04, 0x00, 0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0xC2, 0xF3, 0x49, 0x2C, 0x03, 0xEB, -0x8C, 0x0C, 0x1F, 0xFA, 0x8C, 0xFC, 0xDC, 0x45, 0x97, 0xD3, 0x03, 0x9E, 0x63, 0x46, 0x19, 0x44, 0xB1, 0x42, 0xA4, 0xD9, -0x02, 0x9B, 0x00, 0x2B, 0x00, 0xF0, 0xA2, 0x80, 0x02, 0x9B, 0x5B, 0x6A, 0x03, 0xF4, 0x60, 0x12, 0xB2, 0xF5, 0x20, 0x1F, -0x41, 0xD0, 0x02, 0x9E, 0xF2, 0x6C, 0x43, 0xF4, 0x60, 0x11, 0x43, 0xF4, 0x60, 0x13, 0x50, 0x73, 0xC5, 0xF8, 0x38, 0x61, -0x73, 0x62, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x41, 0xF4, 0x80, 0x71, 0x00, 0x20, 0x00, 0x2B, 0xD1, 0x64, -0xD0, 0x61, 0x3D, 0xDB, 0x04, 0x9A, 0x92, 0xF8, 0x50, 0x30, 0x01, 0x33, 0x82, 0xF8, 0x50, 0x30, 0x63, 0x6A, 0x03, 0xF4, -0x60, 0x13, 0xB3, 0xF5, 0x60, 0x1F, 0x73, 0xD0, 0x1C, 0x32, 0x16, 0x46, 0x48, 0x4B, 0x06, 0x9A, 0x1B, 0x68, 0x14, 0x60, -0x5B, 0x78, 0x13, 0xB9, 0x63, 0x6C, 0x0C, 0x33, 0x2B, 0x61, 0x29, 0x46, 0x30, 0x46, 0x12, 0xF0, 0xE7, 0xFC, 0x05, 0x98, -0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2B, 0x9F, 0xD1, 0x40, 0x49, 0x40, 0x48, 0x02, 0x93, 0x40, 0xF2, 0xBD, 0x32, -0x14, 0xF0, 0x0A, 0xF9, 0x02, 0x9B, 0x96, 0xE7, 0x4F, 0xF0, 0x00, 0x0A, 0x53, 0xE7, 0x02, 0x9E, 0x3B, 0x4B, 0x01, 0x21, -0xD3, 0xF8, 0x58, 0x33, 0x30, 0x46, 0x98, 0x47, 0xF3, 0x6C, 0x75, 0x64, 0x14, 0x33, 0x05, 0x93, 0xD9, 0xF8, 0x00, 0x30, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC1, 0xDA, 0x04, 0x9B, 0xDB, 0x69, 0x9F, 0x42, 0xBD, 0xD0, 0x2F, 0x49, 0x32, 0x48, -0x40, 0xF2, 0xC3, 0x32, 0x14, 0xF0, 0xEA, 0xF8, 0xB6, 0xE7, 0x00, 0x28, 0x7F, 0xF4, 0x0A, 0xAF, 0x2A, 0x49, 0x2E, 0x48, -0x40, 0xF2, 0x27, 0x32, 0x14, 0xF0, 0xE0, 0xF8, 0x02, 0xE7, 0x2C, 0x4B, 0x04, 0x93, 0xF2, 0xE6, 0xD9, 0xF8, 0x00, 0x30, -0xC5, 0xF8, 0x38, 0x41, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x16, 0xDB, 0x04, 0x9E, 0x1C, 0x36, 0x30, 0x46, 0x12, 0xF0, -0xBF, 0xFC, 0x1E, 0x4B, 0x1B, 0x68, 0x5B, 0x78, 0x0B, 0xB9, 0x3B, 0x69, 0x2B, 0x61, 0x39, 0x46, 0xD7, 0xF8, 0x48, 0x01, -0x12, 0xF0, 0x70, 0xFC, 0x06, 0x99, 0x22, 0x68, 0xE3, 0x6C, 0x0A, 0x60, 0x00, 0x22, 0xDA, 0x61, 0xA1, 0xE7, 0x04, 0x9B, -0xDB, 0x69, 0xBB, 0x42, 0xE4, 0xD0, 0x14, 0x49, 0x16, 0x48, 0x40, 0xF2, 0xC3, 0x32, 0x14, 0xF0, 0xB3, 0xF8, 0xDD, 0xE7, -0x04, 0x9E, 0x1C, 0x36, 0x30, 0x46, 0x12, 0xF0, 0x9D, 0xFC, 0x87, 0xE7, 0x0F, 0x4B, 0x07, 0x99, 0xD3, 0xF8, 0xBC, 0x33, -0x07, 0xF1, 0x0C, 0x00, 0x98, 0x47, 0x02, 0x9B, 0xD5, 0xF8, 0x48, 0x01, 0x05, 0x93, 0x29, 0x46, 0x12, 0xF0, 0x4A, 0xFC, -0x85, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x8C, 0x64, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, -0x54, 0x83, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x64, 0x91, 0x15, 0x00, 0x4C, 0x91, 0x15, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x0C, 0x46, 0x41, 0x7F, 0x63, 0x7F, 0x99, 0x42, 0x85, 0xB0, 0x05, 0xD1, 0xE3, 0x7E, 0x16, 0x46, 0xC2, 0x7E, 0x9A, 0x42, -0x05, 0x46, 0x03, 0xD0, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD4, 0xE9, 0x11, 0x73, 0x00, 0x2B, 0x00, 0xF0, -0x8F, 0x80, 0xBB, 0x88, 0x13, 0xF0, 0x08, 0x00, 0xF3, 0xD0, 0x13, 0xF0, 0x02, 0x00, 0xF0, 0xD0, 0x13, 0xF0, 0x01, 0x00, -0x40, 0xF0, 0x86, 0x80, 0xDF, 0xF8, 0x4C, 0x91, 0x54, 0x23, 0x03, 0xFB, 0x06, 0x93, 0x93, 0xF8, 0x4D, 0x20, 0x01, 0x2A, -0xE3, 0xD0, 0xD3, 0xF8, 0x34, 0x80, 0xD8, 0xE9, 0x12, 0xBA, 0xBB, 0xF1, 0x00, 0x0F, 0x05, 0xD0, 0xDA, 0xF8, 0x20, 0x20, -0x46, 0x4B, 0x12, 0x68, 0x9A, 0x42, 0xD6, 0xD1, 0x45, 0x4A, 0x46, 0x4B, 0x11, 0x68, 0x1A, 0x68, 0x91, 0xF8, 0x3E, 0x30, -0x91, 0xF8, 0x3F, 0x10, 0x02, 0xF0, 0x3F, 0x02, 0x0B, 0x44, 0x9A, 0x42, 0xC8, 0xDD, 0xD8, 0xF8, 0x24, 0x20, 0x54, 0x23, -0x03, 0xFB, 0x06, 0x93, 0x42, 0xF4, 0x60, 0x12, 0x18, 0x6B, 0xC8, 0xF8, 0x24, 0x20, 0xC7, 0xF8, 0x38, 0x81, 0x03, 0x93, -0x03, 0xF0, 0xE0, 0xF8, 0x39, 0x4A, 0x03, 0x9B, 0x12, 0x68, 0x93, 0xF8, 0x4D, 0x10, 0x8A, 0xF8, 0x0D, 0x10, 0x52, 0x78, -0x00, 0x2A, 0x4F, 0xD1, 0xEB, 0x6C, 0x3A, 0x61, 0xD9, 0x6C, 0xCA, 0xE9, 0x06, 0x22, 0x8A, 0x02, 0x44, 0xD5, 0x6B, 0x6C, -0x07, 0xF1, 0x0C, 0x01, 0x19, 0x61, 0x54, 0x23, 0x03, 0xFB, 0x06, 0xF3, 0x0A, 0xF1, 0x14, 0x00, 0x09, 0xEB, 0x03, 0x02, -0x49, 0xF8, 0x03, 0x00, 0x01, 0x23, 0xC2, 0xE9, 0x01, 0x13, 0xD8, 0xF8, 0x24, 0x30, 0xBA, 0x88, 0x43, 0xF4, 0x80, 0x73, -0xCA, 0xF8, 0x4C, 0x30, 0x42, 0xF0, 0x01, 0x03, 0xBB, 0x80, 0xBB, 0xF1, 0x00, 0x0F, 0x08, 0xD0, 0x50, 0x07, 0x06, 0xD4, -0x11, 0x07, 0x37, 0xD4, 0xA1, 0x6C, 0x4A, 0x6A, 0x42, 0xF0, 0x04, 0x02, 0x4A, 0x62, 0x9B, 0x07, 0x06, 0xD5, 0x54, 0x23, -0x03, 0xFB, 0x06, 0x93, 0x3A, 0x6B, 0x1B, 0x6B, 0x9B, 0x6A, 0x53, 0x61, 0x54, 0x24, 0x04, 0xFB, 0x06, 0x90, 0x04, 0xFB, -0x06, 0x96, 0x1C, 0x30, 0x39, 0x46, 0x12, 0xF0, 0x91, 0xFB, 0x96, 0xF8, 0x50, 0x30, 0x00, 0x22, 0x01, 0x33, 0xF2, 0x62, -0x86, 0xF8, 0x50, 0x30, 0x01, 0x20, 0x68, 0xE7, 0xBB, 0x88, 0x72, 0xE7, 0x01, 0x20, 0x64, 0xE7, 0x07, 0xF1, 0x0C, 0x01, -0x99, 0x61, 0xBA, 0xE7, 0xB8, 0x7A, 0x93, 0xF8, 0x4E, 0x30, 0x7A, 0x7A, 0xB8, 0xF8, 0x22, 0x10, 0x00, 0x93, 0x03, 0x46, -0x38, 0x46, 0xFF, 0xF7, 0x55, 0xFD, 0x07, 0xF1, 0x50, 0x03, 0xCA, 0xF8, 0x1C, 0x30, 0xB6, 0xE7, 0x42, 0xF0, 0x03, 0x03, -0xBB, 0x80, 0xC8, 0xE7, 0xDE, 0xFA, 0xFE, 0xCA, 0xC8, 0x35, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x45, 0x6C, 0x0C, 0x68, 0x6E, 0x7A, 0x60, 0x7F, 0x9D, 0xF8, 0x20, 0x70, -0x86, 0x42, 0x03, 0xD1, 0xAE, 0x7A, 0xE0, 0x7E, 0x86, 0x42, 0x02, 0xD0, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xE6, 0x6C, -0xD5, 0xF8, 0x38, 0xE1, 0xD6, 0xF8, 0x24, 0xC0, 0xDE, 0xF8, 0x4C, 0x80, 0xBC, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x82, 0x80, -0xBC, 0xF8, 0x00, 0x90, 0x19, 0xF4, 0x00, 0x4F, 0x1F, 0xFA, 0x89, 0xF0, 0x7A, 0xD1, 0x6F, 0xEA, 0x40, 0x40, 0x6F, 0xEA, -0x50, 0x40, 0xAC, 0xF8, 0x00, 0x00, 0x94, 0xF8, 0x33, 0x90, 0x94, 0xF8, 0x32, 0x00, 0x09, 0xF1, 0x04, 0x09, 0x04, 0x30, -0x84, 0xF8, 0x33, 0x90, 0x84, 0xF8, 0x32, 0x00, 0xF0, 0x6A, 0x00, 0xF1, 0x04, 0x0A, 0xB0, 0x6A, 0x00, 0xF1, 0x04, 0x09, -0xC6, 0xE9, 0x0A, 0x9A, 0x0A, 0xF1, 0x03, 0x00, 0x20, 0xF0, 0x03, 0x00, 0x04, 0x30, 0x80, 0xB2, 0x83, 0x42, 0x5C, 0xD9, -0xA3, 0xEB, 0x00, 0x09, 0x1F, 0xFA, 0x89, 0xF9, 0x09, 0xF1, 0x03, 0x09, 0x4F, 0xEA, 0x99, 0x09, 0x00, 0xEB, 0x89, 0x00, -0x80, 0xB2, 0x6B, 0x6A, 0x18, 0x44, 0x90, 0x42, 0xBA, 0xD8, 0x28, 0x4A, 0xDE, 0xF8, 0x24, 0x30, 0x4F, 0xF0, 0x54, 0x0A, -0x0A, 0xFB, 0x07, 0x27, 0x23, 0xF4, 0xC0, 0x13, 0x97, 0xF8, 0x50, 0x20, 0xDF, 0xF8, 0x90, 0xA0, 0x01, 0x3A, 0x87, 0xF8, -0x50, 0x20, 0x43, 0xF4, 0x40, 0x12, 0xCE, 0xF8, 0x24, 0x20, 0x62, 0x6A, 0xDA, 0xF8, 0x00, 0x70, 0xD4, 0xF8, 0x00, 0xE0, -0x22, 0xF4, 0xC0, 0x12, 0x42, 0xEA, 0x49, 0x29, 0x43, 0xF4, 0x40, 0x13, 0x49, 0xF4, 0xF0, 0x0A, 0x43, 0xF4, 0x80, 0x73, -0xC8, 0xF8, 0x4C, 0x30, 0x49, 0xF4, 0xF0, 0x02, 0x00, 0x23, 0x4A, 0xF4, 0x80, 0x7A, 0x06, 0xF1, 0x14, 0x09, 0xC8, 0xF8, -0x1C, 0x90, 0x62, 0x62, 0xC6, 0xF8, 0x4C, 0xA0, 0xB3, 0x61, 0xB3, 0x63, 0x68, 0x62, 0x65, 0x64, 0xC5, 0xF8, 0x38, 0x41, -0xC1, 0xF8, 0x00, 0xE0, 0x7B, 0x78, 0x03, 0xB9, 0x2B, 0x61, 0xBC, 0xF1, 0x00, 0x0F, 0x04, 0xD0, 0x09, 0x4A, 0xB3, 0x6A, -0xD2, 0x6E, 0x43, 0xF8, 0x03, 0x2C, 0x98, 0xF8, 0x0D, 0x30, 0x01, 0x33, 0x73, 0x73, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, -0xD6, 0xF8, 0x2C, 0xA0, 0x9A, 0xE7, 0x4F, 0xF0, 0x00, 0x09, 0xAA, 0xE7, 0x20, 0x62, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, -0x34, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x85, 0xB0, 0xD1, 0xF8, 0x00, 0xB0, 0x9D, 0xF8, 0x38, 0x90, 0xDF, 0xF8, -0x20, 0xA1, 0xDB, 0xF8, 0x44, 0x60, 0xDA, 0xF8, 0x60, 0x43, 0x03, 0x93, 0x0F, 0x46, 0x90, 0x46, 0x59, 0x46, 0x4A, 0x46, -0x05, 0x46, 0xA0, 0x47, 0x00, 0x28, 0x60, 0xD0, 0xE9, 0x6C, 0x03, 0x9B, 0xCA, 0x6A, 0x02, 0xF1, 0x03, 0x0E, 0x2E, 0xF0, -0x03, 0x0E, 0x0E, 0xF1, 0x04, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, 0x73, 0x45, 0x01, 0xF1, 0x14, 0x0C, 0x54, 0xD8, 0x00, 0x20, -0x72, 0x6A, 0x0E, 0xEB, 0x02, 0x03, 0x43, 0x45, 0x05, 0xD9, 0x34, 0x4A, 0x12, 0x68, 0x02, 0xF0, 0x3F, 0x02, 0x11, 0x2A, -0x5D, 0xD9, 0x32, 0x4A, 0x6C, 0x6A, 0x4F, 0xF0, 0x54, 0x0E, 0x0E, 0xFB, 0x09, 0x22, 0x24, 0xF4, 0xC0, 0x14, 0x92, 0xF8, -0x50, 0xE0, 0x44, 0xEA, 0x40, 0x24, 0x0E, 0xF1, 0xFF, 0x30, 0x82, 0xF8, 0x50, 0x00, 0x44, 0xF4, 0xD0, 0x0E, 0x72, 0x69, -0xCA, 0x61, 0xC6, 0xF8, 0x14, 0xC0, 0x73, 0x62, 0xC5, 0xF8, 0x24, 0xE0, 0xDB, 0xF8, 0x24, 0x20, 0xD6, 0xF8, 0x38, 0xC1, -0x6E, 0x64, 0x22, 0xF4, 0xC0, 0x12, 0x74, 0x46, 0x42, 0xF4, 0x40, 0x10, 0xDB, 0xF8, 0x4C, 0xE0, 0xDC, 0xF8, 0x4C, 0xC0, -0x44, 0xF4, 0x80, 0x74, 0xCC, 0x64, 0x42, 0xF4, 0x40, 0x12, 0x40, 0xF4, 0x80, 0x70, 0x00, 0x24, 0x8C, 0x63, 0xCB, 0xF8, -0x24, 0x20, 0xCE, 0xF8, 0x4C, 0x00, 0x9C, 0xF8, 0x0D, 0x20, 0x43, 0x45, 0x02, 0xF1, 0x01, 0x02, 0x8C, 0xF8, 0x0D, 0x20, -0x16, 0xD9, 0xDA, 0xF8, 0x70, 0x63, 0x03, 0x9B, 0xCD, 0xF8, 0x00, 0x90, 0x42, 0x46, 0x39, 0x46, 0x28, 0x46, 0xB0, 0x47, -0x20, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xA3, 0xEB, 0x0E, 0x04, 0xA4, 0xB2, 0x03, 0x34, 0xA0, 0x08, 0x0E, 0xEB, -0x80, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, 0xA1, 0xE7, 0x58, 0x46, 0xFF, 0xF7, 0x53, 0xFC, 0xD6, 0xF8, 0x38, 0x31, 0x1B, 0x68, -0x3B, 0x60, 0x01, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, -0x54, 0x83, 0x32, 0x40, 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x2D, 0xED, 0x02, 0x8B, -0x05, 0x46, 0x89, 0xB0, 0x6E, 0x6C, 0x9D, 0xF8, 0x50, 0x40, 0x04, 0x91, 0x0F, 0x46, 0x1C, 0x20, 0x54, 0x21, 0x11, 0xFB, -0x04, 0x01, 0xD6, 0xF8, 0x38, 0x01, 0x06, 0x90, 0xAB, 0x48, 0x05, 0x94, 0x41, 0x18, 0x3C, 0x68, 0x01, 0x92, 0x08, 0x46, -0x08, 0xEE, 0x10, 0x1A, 0x07, 0x93, 0xD4, 0xF8, 0x44, 0x80, 0xD4, 0xF8, 0x4C, 0x90, 0x12, 0xF0, 0x41, 0xFA, 0xA5, 0x4B, -0x05, 0x9A, 0xD3, 0xF8, 0x60, 0x33, 0x28, 0x46, 0x21, 0x46, 0x98, 0x47, 0x00, 0x23, 0x02, 0x93, 0x00, 0x28, 0x00, 0xF0, -0xF8, 0x80, 0xDF, 0xF8, 0x98, 0xA2, 0x9F, 0x48, 0xDA, 0xF8, 0x00, 0x20, 0x03, 0x68, 0x92, 0xF8, 0x3E, 0x20, 0x03, 0xF0, -0x3F, 0x03, 0x9A, 0x42, 0x00, 0xF2, 0xFD, 0x80, 0x06, 0x9A, 0x04, 0x9D, 0x53, 0x6A, 0x2D, 0x68, 0x03, 0x90, 0x17, 0x46, -0x23, 0xF4, 0xC0, 0x13, 0xD2, 0x6C, 0x43, 0xF4, 0x40, 0x11, 0x09, 0xF1, 0x14, 0x0C, 0x92, 0xF8, 0x0D, 0xB0, 0xC2, 0xF8, -0x1C, 0xC0, 0x79, 0x62, 0x61, 0x6A, 0x07, 0x9F, 0x43, 0xF4, 0x40, 0x13, 0x21, 0xF4, 0xC0, 0x11, 0x43, 0xF4, 0x80, 0x73, -0x41, 0xF4, 0x40, 0x11, 0xD3, 0x64, 0x61, 0x62, 0x6B, 0x6A, 0x43, 0xF4, 0x80, 0x73, 0xC9, 0xF8, 0x4C, 0x30, 0x02, 0x9B, -0x99, 0x46, 0x4C, 0xE0, 0x9F, 0x42, 0x40, 0xF2, 0x93, 0x80, 0xFA, 0x1A, 0x92, 0xB2, 0x03, 0x32, 0x4F, 0xEA, 0x92, 0x09, -0x03, 0xEB, 0x89, 0x03, 0x9B, 0xB2, 0x72, 0x6A, 0x01, 0x98, 0x1A, 0x44, 0x82, 0x42, 0x53, 0xD8, 0x03, 0x9D, 0xDA, 0xF8, -0x00, 0x00, 0x2D, 0x68, 0x90, 0xF8, 0x3E, 0x00, 0x05, 0xF0, 0x3F, 0x05, 0xA8, 0x42, 0x49, 0xD8, 0xDC, 0xF8, 0x24, 0x00, -0x28, 0xB1, 0x79, 0x4D, 0xDC, 0xF8, 0x28, 0x00, 0xED, 0x6E, 0x40, 0xF8, 0x03, 0x5C, 0xBE, 0x45, 0x66, 0x64, 0x0D, 0xD2, -0xDC, 0xF8, 0x4C, 0x10, 0x21, 0xF4, 0xFF, 0x21, 0x21, 0xF4, 0xC0, 0x61, 0x41, 0xEA, 0x49, 0x21, 0x41, 0xF4, 0x80, 0x70, -0x61, 0x62, 0x73, 0x46, 0xCC, 0xF8, 0x4C, 0x00, 0x72, 0x62, 0xD8, 0xF8, 0x24, 0x20, 0x01, 0xF4, 0x60, 0x11, 0xD3, 0x1A, -0xB1, 0xF5, 0x60, 0x1F, 0xC8, 0xF8, 0x24, 0x30, 0x59, 0xD0, 0x69, 0x4B, 0x25, 0x68, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x0B, 0xF1, 0x01, 0x0B, 0x00, 0x2B, 0x5F, 0xFA, 0x8B, 0xFB, 0x42, 0xDB, 0x69, 0x6A, 0x02, 0x94, 0x2C, 0x46, 0xD4, 0xF8, -0x4C, 0xC0, 0xDC, 0xF8, 0x2C, 0x30, 0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0xC1, 0xF3, 0x49, 0x2E, -0x03, 0xEB, 0x8E, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, 0xBE, 0x45, 0xA1, 0xD3, 0x72, 0x6A, 0x01, 0x98, 0x73, 0x46, 0x1A, 0x44, -0x82, 0x42, 0xAB, 0xD9, 0xDD, 0xF8, 0x08, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x7E, 0xD0, 0xD9, 0xF8, 0x4C, 0x10, 0x81, 0xF8, -0x0D, 0xB0, 0xD9, 0xF8, 0x24, 0x30, 0xC6, 0xF8, 0x38, 0x91, 0x43, 0xF4, 0x60, 0x12, 0xC9, 0xF8, 0x24, 0x20, 0x62, 0x6A, -0x43, 0xF4, 0x60, 0x13, 0x02, 0xF4, 0x60, 0x12, 0x43, 0xF4, 0x80, 0x73, 0x00, 0x20, 0xB2, 0xF5, 0x60, 0x1F, 0xCB, 0x64, -0xC8, 0x61, 0x60, 0xD0, 0x48, 0x4B, 0x04, 0x9A, 0x1B, 0x68, 0x14, 0x60, 0x5D, 0x78, 0x00, 0x2D, 0x47, 0xD1, 0x63, 0x6C, -0x0C, 0x33, 0x33, 0x61, 0x2C, 0xE0, 0x00, 0x2D, 0xBA, 0xD1, 0x43, 0x49, 0x43, 0x48, 0x40, 0xF2, 0xF4, 0x52, 0x13, 0xF0, -0x7D, 0xFD, 0xB3, 0xE7, 0x4F, 0xF0, 0x00, 0x09, 0x71, 0xE7, 0x05, 0x9A, 0x11, 0x46, 0x37, 0x4A, 0x54, 0x23, 0x03, 0xFB, -0x01, 0x23, 0x3A, 0x49, 0x93, 0xF8, 0x50, 0x20, 0x09, 0x68, 0xC6, 0xF8, 0x38, 0x41, 0x01, 0x3A, 0x83, 0xF8, 0x50, 0x20, -0x4B, 0x78, 0x43, 0xB3, 0x18, 0xEE, 0x10, 0x0A, 0x12, 0xF0, 0x54, 0xF9, 0x41, 0x46, 0xD8, 0xF8, 0x48, 0x01, 0x12, 0xF0, -0x0B, 0xF9, 0x04, 0x99, 0x22, 0x68, 0xE3, 0x6C, 0x0A, 0x60, 0x00, 0x22, 0xDA, 0x61, 0x01, 0x25, 0x18, 0xEE, 0x10, 0x0A, -0x31, 0x46, 0x12, 0xF0, 0x23, 0xF9, 0x28, 0x46, 0x09, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x05, 0x46, -0x31, 0x46, 0x18, 0xEE, 0x10, 0x0A, 0x12, 0xF0, 0x17, 0xF9, 0x28, 0x46, 0x09, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, -0xF0, 0x8F, 0x00, 0x25, 0xE6, 0xE7, 0xD8, 0xF8, 0x10, 0x30, 0x33, 0x61, 0xD2, 0xE7, 0x18, 0xEE, 0x10, 0x0A, 0x31, 0x46, -0x12, 0xF0, 0x06, 0xF9, 0x02, 0x9D, 0x28, 0x46, 0x09, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x18, 0xEE, -0x10, 0x0A, 0x12, 0xF0, 0x1B, 0xF9, 0x99, 0xE7, 0x06, 0x99, 0x4A, 0x6A, 0xCD, 0x6C, 0x42, 0xF4, 0x60, 0x13, 0xC5, 0xF8, -0x1C, 0x90, 0x4B, 0x62, 0x63, 0x6A, 0x23, 0xF4, 0xC0, 0x13, 0x43, 0xF4, 0x20, 0x17, 0x42, 0xF4, 0x60, 0x12, 0x43, 0xF4, -0x20, 0x13, 0x42, 0xF4, 0x80, 0x72, 0x47, 0xF4, 0x80, 0x77, 0xEA, 0x64, 0x18, 0xEE, 0x10, 0x0A, 0x63, 0x62, 0x31, 0x46, -0xCC, 0xF8, 0x4C, 0x70, 0x12, 0xF0, 0xDC, 0xF8, 0x04, 0x9B, 0x4D, 0x46, 0x1C, 0x60, 0xB4, 0xE7, 0x20, 0x62, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, 0x94, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xA4, 0x91, 0x15, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x82, 0x69, 0x03, 0x32, 0x22, 0xF0, 0x03, 0x02, -0x04, 0x32, 0x93, 0xB2, 0x99, 0x42, 0x04, 0xD9, 0xC8, 0x1A, 0x80, 0xB2, 0x03, 0x30, 0x80, 0x08, 0x70, 0x47, 0x00, 0x20, -0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x4F, 0x43, 0x4A, 0x44, 0x4B, 0x11, 0x68, 0x18, 0x68, 0x88, 0x42, 0x08, 0xD0, -0xD2, 0xE9, 0x01, 0x54, 0xD2, 0xE9, 0x03, 0x02, 0xC3, 0xE9, 0x00, 0x15, 0xC3, 0xE9, 0x02, 0x40, 0x1A, 0x61, 0x3E, 0x48, -0x3C, 0x4D, 0x3E, 0x4F, 0xDF, 0xF8, 0x04, 0x81, 0x30, 0x22, 0x00, 0x21, 0x06, 0x46, 0xEE, 0xF7, 0xE3, 0xFF, 0x05, 0xF1, -0x18, 0x09, 0x3B, 0x68, 0x55, 0xF8, 0x04, 0x0B, 0x4F, 0xF4, 0xAC, 0x72, 0x02, 0xFB, 0x03, 0xF2, 0x00, 0x21, 0xEE, 0xF7, -0xD7, 0xFF, 0x57, 0xF8, 0x04, 0x3B, 0x00, 0x2B, 0x58, 0xDD, 0x4F, 0xF0, 0x00, 0x0B, 0xDA, 0x46, 0x55, 0xF8, 0x04, 0x4C, -0x30, 0x4B, 0x5C, 0x44, 0x05, 0x20, 0x04, 0xF1, 0xA8, 0x01, 0x63, 0x64, 0x2E, 0x4B, 0xC4, 0xF8, 0xA8, 0x30, 0x84, 0xF8, -0x97, 0x00, 0x04, 0xF1, 0x94, 0x03, 0x04, 0xF1, 0xAB, 0x00, 0x61, 0x67, 0x18, 0x21, 0x6F, 0xF0, 0x7B, 0x0C, 0x23, 0x66, -0x60, 0x66, 0x4F, 0xF4, 0xC0, 0x63, 0x40, 0xF2, 0x43, 0x10, 0xA1, 0x66, 0x00, 0x21, 0xC4, 0xE9, 0x21, 0x30, 0xC4, 0xE9, -0x0D, 0x11, 0xC4, 0xE9, 0x16, 0x11, 0xC4, 0xE9, 0x1E, 0x11, 0x84, 0xF8, 0x94, 0xC0, 0x84, 0xF8, 0x95, 0x10, 0x84, 0xF8, -0x96, 0x10, 0xA1, 0x62, 0xE1, 0x63, 0xE1, 0x66, 0xC4, 0xF8, 0x80, 0x10, 0x21, 0x67, 0xC4, 0xF8, 0x48, 0x61, 0xC4, 0xF8, -0x0C, 0x80, 0xC4, 0xF8, 0x50, 0x80, 0xF0, 0xF7, 0x7F, 0xF8, 0x80, 0x03, 0xC4, 0xF8, 0xAC, 0x00, 0xF0, 0xF7, 0x7A, 0xF8, -0x4F, 0xF0, 0x01, 0x0C, 0x01, 0x30, 0x0C, 0xFA, 0x00, 0xF0, 0x12, 0x4B, 0xC4, 0xF8, 0xB8, 0x30, 0x01, 0x38, 0x00, 0x21, -0xC4, 0xE9, 0x2C, 0x01, 0x21, 0x46, 0x30, 0x46, 0x12, 0xF0, 0x16, 0xF8, 0x57, 0xF8, 0x04, 0x1C, 0x0A, 0xF1, 0x01, 0x0A, -0x8A, 0x45, 0x0B, 0xF5, 0xAC, 0x7B, 0xA9, 0xDB, 0x4D, 0x45, 0x06, 0xF1, 0x08, 0x06, 0x94, 0xD1, 0xBD, 0xE8, 0xF8, 0x8F, -0xEC, 0x57, 0x18, 0x00, 0x74, 0x1F, 0x17, 0x00, 0x64, 0x64, 0x17, 0x00, 0x8C, 0x1F, 0x17, 0x00, 0x00, 0x01, 0x20, 0x00, -0x1E, 0xAB, 0xDC, 0xBA, 0x04, 0x07, 0xFF, 0xFF, 0xBE, 0xBA, 0xFE, 0xCA, 0x2D, 0xE9, 0xF8, 0x43, 0x18, 0x4A, 0x19, 0x4B, -0x11, 0x68, 0x18, 0x68, 0x88, 0x42, 0x08, 0xD0, 0xD2, 0xE9, 0x01, 0x54, 0xD2, 0xE9, 0x03, 0x02, 0xC3, 0xE9, 0x00, 0x15, -0xC3, 0xE9, 0x02, 0x40, 0x1A, 0x61, 0x13, 0x4C, 0x13, 0x4F, 0x11, 0x4E, 0x04, 0xF1, 0x30, 0x09, 0x20, 0x46, 0x11, 0xF0, -0xDB, 0xFF, 0x57, 0xF8, 0x04, 0x3B, 0x00, 0x2B, 0x0E, 0xDD, 0x00, 0x25, 0xA8, 0x46, 0x31, 0x68, 0x20, 0x46, 0x29, 0x44, -0x11, 0xF0, 0xD4, 0xFF, 0x57, 0xF8, 0x04, 0x3C, 0x08, 0xF1, 0x01, 0x08, 0x98, 0x45, 0x05, 0xF5, 0xAC, 0x75, 0xF2, 0xDB, -0x08, 0x34, 0x4C, 0x45, 0x06, 0xF1, 0x04, 0x06, 0xE4, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0xEC, 0x57, 0x18, 0x00, -0x74, 0x1F, 0x17, 0x00, 0x64, 0x64, 0x17, 0x00, 0x8C, 0x1F, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x28, 0x82, 0xB0, -0x06, 0x46, 0x00, 0xF0, 0xBD, 0x80, 0x6A, 0x4C, 0x00, 0xEB, 0x40, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x04, 0xEB, 0x83, 0x04, -0x94, 0xF8, 0x4D, 0x30, 0xE7, 0x6A, 0x65, 0x6B, 0x01, 0x2B, 0x69, 0xD1, 0xD5, 0xE9, 0x12, 0x38, 0x00, 0x22, 0x4F, 0xF4, -0x80, 0x71, 0x6A, 0x62, 0xC8, 0xF8, 0x1C, 0x20, 0xC8, 0xF8, 0x4C, 0x10, 0x00, 0x2B, 0x4C, 0xD0, 0xBA, 0x88, 0x11, 0x07, -0x49, 0xD5, 0xD3, 0xE9, 0x17, 0x21, 0x28, 0x33, 0xC8, 0xF8, 0x34, 0x10, 0xC8, 0xF8, 0x48, 0x20, 0xC8, 0xF8, 0x38, 0x30, -0x2B, 0x7F, 0x58, 0x4A, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x63, 0xBB, 0x55, 0x4A, -0x6B, 0x7F, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x5B, 0x68, 0x9A, 0x06, 0x23, 0xD5, 0xEB, 0x8B, 0x13, 0xF4, -0x00, 0x5F, 0xEB, 0x6A, 0xDB, 0x6B, 0x14, 0xBF, 0xC3, 0xF3, 0x00, 0x13, 0xC3, 0xF3, 0xC0, 0x03, 0xC3, 0xB9, 0xD8, 0xF8, -0x24, 0x10, 0x0B, 0x88, 0x9A, 0xB2, 0x1B, 0x04, 0x12, 0xD5, 0xC2, 0xF3, 0x0E, 0x02, 0x0A, 0x80, 0x95, 0xF8, 0x33, 0x20, -0x95, 0xF8, 0x32, 0x30, 0x04, 0x3A, 0x04, 0x3B, 0x85, 0xF8, 0x33, 0x20, 0x85, 0xF8, 0x32, 0x30, 0xD8, 0xE9, 0x0A, 0x32, -0x04, 0x3A, 0x04, 0x3B, 0xC8, 0xE9, 0x0A, 0x32, 0x28, 0x46, 0x02, 0xF0, 0x71, 0xFC, 0x3E, 0x4B, 0x08, 0xF1, 0x14, 0x01, -0xD3, 0xF8, 0x9C, 0x33, 0x32, 0x46, 0x08, 0x46, 0x98, 0x47, 0xD7, 0xF8, 0x48, 0x01, 0x39, 0x46, 0x11, 0xF0, 0x4A, 0xFF, -0x00, 0x23, 0x6B, 0x64, 0x94, 0xF8, 0x50, 0x30, 0x00, 0x22, 0x01, 0x33, 0x84, 0xF8, 0x50, 0x30, 0xE2, 0x62, 0x02, 0xB0, -0xBD, 0xE8, 0xF0, 0x87, 0x6B, 0x6A, 0xDF, 0xF8, 0xCC, 0x90, 0x20, 0x6B, 0xD5, 0xE9, 0x12, 0xA8, 0x43, 0xF4, 0x60, 0x13, -0x6B, 0x62, 0xC7, 0xF8, 0x38, 0x51, 0x02, 0xF0, 0x37, 0xFC, 0x94, 0xF8, 0x4D, 0x20, 0xD9, 0xF8, 0x00, 0x30, 0x88, 0xF8, -0x0D, 0x20, 0x5B, 0x78, 0x00, 0x2B, 0x34, 0xD1, 0x3B, 0x61, 0x6B, 0x6A, 0xB9, 0x88, 0x43, 0xF4, 0x80, 0x73, 0x41, 0xF0, -0x01, 0x02, 0xC8, 0xF8, 0x4C, 0x30, 0xBA, 0x80, 0xBA, 0xF1, 0x00, 0x0F, 0x09, 0xD0, 0x4D, 0x07, 0x07, 0xD4, 0x08, 0x07, -0x31, 0xD4, 0x23, 0x6B, 0x99, 0x6C, 0x4B, 0x6A, 0x43, 0xF0, 0x04, 0x03, 0x4B, 0x62, 0x93, 0x07, 0x10, 0xD5, 0xD9, 0xF8, -0x00, 0x30, 0x5B, 0x78, 0xA3, 0xB9, 0x08, 0xF1, 0x14, 0x01, 0x23, 0x6B, 0x3A, 0x6B, 0x98, 0x6A, 0x15, 0x4B, 0x50, 0x61, -0xD3, 0xF8, 0x9C, 0x33, 0x32, 0x46, 0x07, 0xF1, 0x0C, 0x00, 0x98, 0x47, 0x39, 0x46, 0x04, 0xF1, 0x1C, 0x00, 0x11, 0xF0, -0xF9, 0xFE, 0xAF, 0xE7, 0x0F, 0x4C, 0x47, 0xE7, 0x07, 0xF1, 0x50, 0x01, 0xE9, 0xE7, 0x94, 0xF8, 0x4E, 0x00, 0xBB, 0x7A, -0x7A, 0x7A, 0x69, 0x8C, 0x00, 0x90, 0x38, 0x46, 0xFF, 0xF7, 0xCA, 0xF8, 0x07, 0xF1, 0x50, 0x03, 0xC8, 0xF8, 0x1C, 0x30, -0xBD, 0xE7, 0x41, 0xF0, 0x03, 0x02, 0xBA, 0x80, 0xCF, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0xD0, 0xF8, 0x4C, 0x90, 0x8B, 0xB0, 0x09, 0xF1, 0x14, 0x03, 0x05, 0x29, 0x04, 0x46, 0x0E, 0x46, 0x00, 0x93, 0x00, 0xF0, -0xAD, 0x81, 0x57, 0x4D, 0x01, 0xEB, 0x41, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x05, 0xEB, 0x83, 0x05, 0x94, 0xF8, 0x1B, 0xB0, -0x94, 0xF8, 0x1D, 0xA0, 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x50, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0xDF, 0xF8, 0x40, 0x81, 0xEA, 0x6A, 0xD8, 0xF8, 0x00, 0x30, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x00, 0x2A, 0x79, 0xD0, -0x4A, 0x4F, 0x06, 0xE0, 0xD7, 0xF8, 0x5C, 0x33, 0x30, 0x46, 0x98, 0x47, 0xEA, 0x6A, 0x00, 0x2A, 0x70, 0xD0, 0x63, 0x6A, -0x99, 0x02, 0xF5, 0xD5, 0x03, 0xF4, 0x60, 0x11, 0xB1, 0xF5, 0x20, 0x1F, 0xF0, 0xD0, 0x50, 0x7A, 0x61, 0x7F, 0x88, 0x42, -0xEC, 0xD1, 0x90, 0x7A, 0xE1, 0x7E, 0x88, 0x42, 0xE8, 0xD1, 0xD9, 0xF8, 0x2C, 0x10, 0xB5, 0xF8, 0x48, 0x00, 0x03, 0x31, -0x21, 0xF0, 0x03, 0x01, 0x04, 0x31, 0x89, 0xB2, 0x88, 0x42, 0x00, 0xF2, 0x5D, 0x81, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90, -0x86, 0x46, 0x68, 0x6B, 0x01, 0x90, 0x50, 0x6A, 0x02, 0x90, 0x01, 0x98, 0x95, 0xF8, 0x4F, 0xC0, 0xC0, 0x6C, 0x04, 0x90, -0x03, 0x98, 0xA5, 0xF8, 0x4A, 0xE0, 0x08, 0x44, 0x02, 0x99, 0x05, 0xEB, 0x8C, 0x0E, 0x08, 0x44, 0x4F, 0xEA, 0x8C, 0x01, -0x03, 0x91, 0xDE, 0xF8, 0x38, 0x10, 0x88, 0x42, 0x40, 0xF2, 0x82, 0x81, 0x95, 0xF8, 0x4E, 0x10, 0x61, 0x45, 0xBB, 0xD9, -0x95, 0xF8, 0x4D, 0x10, 0x01, 0x29, 0xB7, 0xD0, 0xDE, 0xF8, 0x3C, 0xE0, 0x70, 0x45, 0xB3, 0xD8, 0x03, 0x9F, 0x17, 0x44, -0xBB, 0x46, 0x01, 0x9F, 0xCB, 0xF8, 0x3C, 0x71, 0x0C, 0xF1, 0x01, 0x0C, 0x02, 0x9F, 0xCB, 0xF8, 0x34, 0x70, 0x85, 0xF8, -0x4F, 0xC0, 0x05, 0x9F, 0x62, 0x64, 0x43, 0xEA, 0x47, 0x23, 0x23, 0xF4, 0xC0, 0x13, 0x43, 0xF4, 0xE0, 0x03, 0x63, 0x62, -0xC9, 0xF8, 0x4C, 0x30, 0x04, 0x9B, 0x1F, 0x46, 0x00, 0x9B, 0xFB, 0x61, 0x50, 0x62, 0x95, 0xF8, 0x4C, 0x20, 0x6C, 0x63, -0x4B, 0x1C, 0xDB, 0xB2, 0x9A, 0x42, 0x85, 0xF8, 0x4D, 0x30, 0x0D, 0xD8, 0x10, 0x4B, 0x30, 0x46, 0xD3, 0xF8, 0x5C, 0x33, -0x98, 0x47, 0x07, 0xE0, 0x63, 0x6A, 0x98, 0x02, 0x1C, 0xD4, 0x95, 0xF8, 0x50, 0x30, 0x01, 0x33, 0x85, 0xF8, 0x50, 0x30, -0xD8, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x07, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x00, 0x20, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA3, 0x6A, 0xDB, 0x0A, 0x13, 0xF0, 0x06, 0x0F, 0xDD, 0xD0, 0xB0, 0x48, -0x00, 0xEB, 0xC6, 0x00, 0x11, 0xF0, 0x4A, 0xFE, 0xE8, 0x62, 0x00, 0x28, 0x00, 0xF0, 0xEA, 0x80, 0xAC, 0x4F, 0x80, 0xF8, -0x0A, 0xB0, 0x00, 0x23, 0x01, 0x21, 0x3A, 0x68, 0x80, 0xF8, 0x09, 0xA0, 0x03, 0x72, 0x43, 0x60, 0xC1, 0x72, 0xA3, 0x6A, -0xB2, 0xF9, 0x00, 0x20, 0x61, 0x7F, 0x03, 0x91, 0xC3, 0xF3, 0xC1, 0x1B, 0xC3, 0xF3, 0xC7, 0x21, 0x00, 0x2A, 0xC3, 0xF3, -0xC2, 0x23, 0x01, 0x93, 0xC0, 0xF2, 0xD2, 0x80, 0x01, 0x9B, 0x05, 0x2B, 0x00, 0xF0, 0xD9, 0x80, 0xD4, 0xF8, 0x28, 0xA0, -0x63, 0x7F, 0x05, 0x93, 0x0A, 0xF0, 0x7F, 0x03, 0x04, 0x93, 0xCA, 0xF3, 0x40, 0x23, 0x06, 0x93, 0x01, 0x9B, 0x04, 0x2B, -0x3B, 0x68, 0x00, 0xF0, 0xF2, 0x80, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x01, 0x81, 0x94, 0x4A, 0x05, 0x99, -0x02, 0x92, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x23, 0x04, 0x9A, 0x9B, 0x8A, 0x08, 0x93, 0xC2, 0xF3, 0xC1, 0x02, -0x01, 0x32, 0x09, 0x92, 0x0A, 0xF0, 0x07, 0x0A, 0x8D, 0x4B, 0x05, 0x93, 0x8D, 0x4B, 0x9C, 0x46, 0x06, 0x9B, 0x00, 0x27, -0x43, 0xEA, 0xCA, 0x0A, 0x5F, 0xFA, 0x8B, 0xF3, 0x19, 0x46, 0x05, 0xF1, 0x38, 0x0B, 0x04, 0x93, 0x85, 0xF8, 0x4E, 0x10, -0x00, 0x23, 0x31, 0x1D, 0xCD, 0xF8, 0x18, 0x90, 0x07, 0x94, 0xD1, 0x46, 0x85, 0xF8, 0x4F, 0x30, 0xDA, 0x46, 0x1E, 0x46, -0x64, 0x46, 0x8B, 0x46, 0x01, 0x2A, 0xF1, 0xB2, 0x00, 0xF0, 0xA8, 0x80, 0x48, 0x46, 0xA0, 0x47, 0x7E, 0x4B, 0x09, 0x9A, -0x33, 0xF8, 0x1B, 0xC0, 0x08, 0x99, 0x02, 0xFB, 0x0C, 0xFC, 0x00, 0xFB, 0x0C, 0xF0, 0xF8, 0x40, 0x81, 0x42, 0x28, 0xBF, -0x01, 0x46, 0x4A, 0xF8, 0x04, 0x1B, 0x95, 0xF8, 0x4E, 0x10, 0x01, 0x36, 0x8E, 0x42, 0xE5, 0xDD, 0xCA, 0x46, 0x04, 0x99, -0x05, 0x9B, 0x50, 0x46, 0xDD, 0xE9, 0x06, 0x94, 0x98, 0x47, 0x03, 0x9B, 0xD5, 0xF8, 0x38, 0xC0, 0x1E, 0x46, 0x02, 0x9B, -0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x06, 0x32, 0x09, 0x9B, 0x16, 0x7F, 0xEA, 0x6A, 0x03, 0xFB, 0x06, 0xF6, 0x00, 0xFB, -0x06, 0xF6, 0xFE, 0x40, 0xB6, 0xB2, 0xA5, 0xF8, 0x48, 0x60, 0xE1, 0x7E, 0x63, 0x7F, 0xEF, 0x6B, 0x9E, 0x20, 0x00, 0xFB, -0x03, 0x13, 0x02, 0x99, 0x28, 0x6C, 0x01, 0xEB, 0x83, 0x03, 0x4F, 0xF0, 0x01, 0x0E, 0x93, 0xF8, 0x5A, 0x31, 0x85, 0xF8, -0x4C, 0x30, 0xD9, 0xF8, 0x2C, 0x10, 0x00, 0x9B, 0x53, 0x61, 0x03, 0x31, 0x21, 0xF0, 0x03, 0x01, 0x04, 0x31, 0x00, 0x23, -0x89, 0xB2, 0x51, 0x62, 0xC2, 0xF8, 0x54, 0x01, 0xC2, 0xE9, 0x53, 0xC7, 0xC2, 0xE9, 0x0D, 0x33, 0x93, 0x64, 0x93, 0x61, -0xD3, 0x63, 0x85, 0xF8, 0x4D, 0xE0, 0xD9, 0xF8, 0x2C, 0x00, 0x03, 0x30, 0x20, 0xF0, 0x03, 0x00, 0x04, 0x30, 0x80, 0xB2, -0xB0, 0x42, 0x57, 0xD2, 0x30, 0x1A, 0x80, 0xB2, 0x03, 0x30, 0x83, 0x10, 0x01, 0xEB, 0x83, 0x01, 0x80, 0x08, 0x5B, 0x02, -0x66, 0x6A, 0xA5, 0xF8, 0x4A, 0x00, 0x33, 0x43, 0x23, 0xF4, 0xC0, 0x13, 0x43, 0xF4, 0xD0, 0x03, 0x51, 0x62, 0xC5, 0xE9, -0x0C, 0x44, 0x63, 0x62, 0x62, 0x64, 0xC9, 0xF8, 0x4C, 0x30, 0xFF, 0xE6, 0xA0, 0xEB, 0x01, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, -0x0E, 0xF1, 0x03, 0x0E, 0x4F, 0xEA, 0xAE, 0x00, 0x05, 0x90, 0x80, 0x00, 0x4F, 0xEA, 0x9E, 0x0E, 0x03, 0x90, 0x98, 0xE6, -0x3D, 0x4D, 0x57, 0xE6, 0x60, 0x62, 0xE8, 0xE6, 0x11, 0xF0, 0x06, 0x0F, 0x7F, 0xF4, 0x2A, 0xAF, 0x3A, 0x49, 0x3B, 0x48, -0x4F, 0xF4, 0xEA, 0x72, 0x13, 0xF0, 0x60, 0xF9, 0x22, 0xE7, 0x09, 0xAB, 0x08, 0xAA, 0x01, 0x99, 0x20, 0x46, 0x02, 0xF0, -0x39, 0xF9, 0x36, 0x4B, 0x05, 0x93, 0x36, 0x4B, 0x94, 0xF8, 0x36, 0x70, 0x09, 0x9A, 0x9C, 0x46, 0x2B, 0x4B, 0x02, 0x93, -0x82, 0x46, 0xC7, 0xF3, 0x40, 0x17, 0x3F, 0xE7, 0x01, 0x9B, 0x04, 0x2B, 0x7F, 0xF4, 0x54, 0xAF, 0x4F, 0xEA, 0xE9, 0x02, -0x00, 0x2E, 0x7F, 0xF4, 0x4F, 0xAF, 0x09, 0x2A, 0x04, 0xBF, 0x09, 0xF0, 0x07, 0x03, 0x43, 0xF0, 0x40, 0x09, 0x47, 0xE7, -0x18, 0x46, 0xAD, 0xE7, 0x95, 0xF8, 0x4D, 0x10, 0x93, 0xE6, 0x04, 0x9A, 0xB3, 0xF9, 0x00, 0x30, 0x11, 0x09, 0x4A, 0x1C, -0x00, 0x2B, 0x0A, 0xF0, 0x0F, 0x0A, 0x09, 0x92, 0x14, 0xDB, 0x19, 0x49, 0x05, 0x98, 0x02, 0x91, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x00, 0x13, 0x1B, 0x69, 0x08, 0x93, 0x0E, 0xE7, 0x1A, 0xF0, 0x60, 0x0F, 0x3F, 0xF4, 0xFB, 0xAE, 0x17, 0x49, -0x1A, 0x48, 0x4F, 0xF4, 0xD2, 0x72, 0x13, 0xF0, 0x19, 0xF9, 0xF3, 0xE6, 0x03, 0x29, 0x04, 0xD8, 0xBA, 0xF1, 0x09, 0x0F, -0x0D, 0xD8, 0x09, 0x9A, 0xE3, 0xE7, 0x10, 0x49, 0x14, 0x48, 0x40, 0xF2, 0x9B, 0x12, 0x13, 0xF0, 0x0B, 0xF9, 0x3B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xEF, 0xDB, 0xF1, 0xE7, 0x0A, 0x49, 0x0F, 0x48, 0x4F, 0xF4, 0xCE, 0x72, 0x13, 0xF0, -0xFF, 0xF8, 0xEA, 0xE7, 0x64, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x85, 0x06, 0x13, 0x00, -0x75, 0x06, 0x13, 0x00, 0x98, 0x9C, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xB8, 0x91, 0x15, 0x00, -0x21, 0x3B, 0x13, 0x00, 0x05, 0x3B, 0x13, 0x00, 0x0C, 0x92, 0x15, 0x00, 0xE0, 0x91, 0x15, 0x00, 0xFC, 0x91, 0x15, 0x00, -0xC3, 0x7A, 0x01, 0x3B, 0xDB, 0xB2, 0xC3, 0x72, 0x03, 0xB1, 0x70, 0x47, 0x01, 0x46, 0xD0, 0xF8, 0x48, 0x01, 0x11, 0xF0, -0x83, 0xBC, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x47, 0xD0, 0xE9, 0x12, 0x67, 0x00, 0x23, 0x4F, 0xF4, 0x80, 0x72, 0x43, 0x62, -0x43, 0x64, 0xFB, 0x61, 0xFA, 0x64, 0x00, 0x2E, 0x00, 0xF0, 0x81, 0x80, 0xD0, 0xF8, 0x2C, 0x80, 0x8A, 0x46, 0x05, 0x46, -0x06, 0xF1, 0x28, 0x09, 0x08, 0xF1, 0x40, 0x01, 0x43, 0x46, 0x06, 0xF1, 0x24, 0x02, 0x53, 0xF8, 0x04, 0x4B, 0x42, 0xF8, -0x04, 0x4F, 0x8B, 0x42, 0xF9, 0xD1, 0xEB, 0x8B, 0x9C, 0x04, 0x22, 0xD5, 0x48, 0x4B, 0x49, 0x49, 0x1A, 0x68, 0x6B, 0x7F, -0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x41, 0x61, 0xDB, -0xD8, 0xF8, 0x14, 0x20, 0xD4, 0xF8, 0x9C, 0x30, 0x32, 0x64, 0xD8, 0xF8, 0x24, 0x20, 0x32, 0x65, 0xC3, 0xF3, 0xC2, 0x22, -0x05, 0x2A, 0xF3, 0x63, 0x5D, 0xD0, 0xD8, 0xF8, 0x3C, 0x30, 0x58, 0x07, 0x03, 0xD4, 0xF3, 0x6A, 0x23, 0xF4, 0xC0, 0x73, -0xF3, 0x62, 0x39, 0x4A, 0x2B, 0x7F, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x7B, 0xB1, -0x73, 0x6A, 0x43, 0xF0, 0x10, 0x03, 0x28, 0x46, 0x73, 0x62, 0x02, 0xF0, 0x47, 0xF9, 0xD6, 0xE9, 0x17, 0x23, 0x07, 0xF1, -0x14, 0x00, 0xC7, 0xE9, 0x0D, 0x39, 0xBA, 0x64, 0xBD, 0xE8, 0xF0, 0x87, 0x2B, 0x4A, 0x6B, 0x7F, 0x4F, 0xF4, 0x1E, 0x71, -0x01, 0xFB, 0x03, 0x23, 0x5B, 0x68, 0x99, 0x06, 0xE6, 0xD5, 0xBA, 0xF1, 0x00, 0x0F, 0xE3, 0xD1, 0xEB, 0x8B, 0x13, 0xF4, -0x00, 0x5F, 0xEB, 0x6A, 0xDB, 0x6B, 0x14, 0xBF, 0xC3, 0xF3, 0x00, 0x13, 0xC3, 0xF3, 0xC0, 0x03, 0x00, 0x2B, 0xD7, 0xD1, -0x79, 0x6A, 0x0A, 0x88, 0x93, 0xB2, 0x12, 0x04, 0xD2, 0xD5, 0xC3, 0xF3, 0x0E, 0x03, 0x0B, 0x80, 0x95, 0xF8, 0x33, 0x20, -0x95, 0xF8, 0x32, 0x30, 0x04, 0x3A, 0x04, 0x3B, 0x85, 0xF8, 0x33, 0x20, 0x85, 0xF8, 0x32, 0x30, 0xD7, 0xE9, 0x0A, 0x32, -0x04, 0x3A, 0x04, 0x3B, 0xC7, 0xE9, 0x0A, 0x32, 0xBE, 0xE7, 0x30, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x2C, 0x9B, 0xD1, -0x12, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x4B, 0x12, 0x13, 0xF0, 0x3C, 0xF8, 0x94, 0xE7, 0x03, 0xF4, 0xC0, 0x63, 0xF2, 0x6C, -0x94, 0xF8, 0xA1, 0x10, 0xB3, 0xF5, 0x80, 0x6F, 0x14, 0xBF, 0x4F, 0xF4, 0x80, 0x30, 0x4F, 0xF4, 0x00, 0x30, 0x22, 0xF4, -0x40, 0x33, 0x03, 0x43, 0x19, 0xB1, 0x43, 0xF4, 0x80, 0x23, 0xF3, 0x64, 0x8D, 0xE7, 0x23, 0xF4, 0x80, 0x23, 0xF3, 0x64, -0x89, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x68, 0x8E, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x05, 0x28, 0x89, 0xB0, 0x81, 0x46, 0x00, 0xF0, 0x79, 0x81, 0xBE, 0x4A, -0x00, 0xEB, 0x40, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x02, 0xEB, 0x83, 0x03, 0x03, 0x93, 0x03, 0x9B, 0xDC, 0x68, 0xBA, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x09, 0xDA, 0x5D, 0xE1, 0xE3, 0x6C, 0x1B, 0x6D, 0x00, 0x2B, 0x80, 0xF2, -0xFE, 0x80, 0x24, 0x68, 0x00, 0x2C, 0x00, 0xF0, 0xFA, 0x80, 0x63, 0x6A, 0x9A, 0x02, 0xF3, 0xD5, 0xB0, 0x4D, 0x2A, 0x68, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0x80, 0x81, 0xAE, 0x4B, 0x67, 0x6C, 0x1B, 0x68, 0xDB, 0xB2, 0x07, 0xEB, -0x83, 0x03, 0xD3, 0xF8, 0x3C, 0x41, 0xE5, 0x6C, 0x63, 0x6A, 0xAA, 0x49, 0x43, 0xF4, 0x60, 0x10, 0x09, 0x68, 0x60, 0x62, -0x49, 0x78, 0x23, 0xF4, 0xC0, 0x13, 0x00, 0x29, 0x40, 0xF0, 0x58, 0x81, 0x43, 0xF4, 0x60, 0x13, 0x43, 0xF4, 0x80, 0x73, -0x00, 0x2A, 0x26, 0x68, 0xEB, 0x64, 0xE9, 0x61, 0xC0, 0xF2, 0x57, 0x81, 0x72, 0x6A, 0x02, 0xF4, 0x60, 0x1A, 0xBA, 0xF5, -0x60, 0x1F, 0x00, 0xF0, 0xEC, 0x80, 0x9D, 0x48, 0x50, 0xF8, 0x39, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0xE6, 0x80, 0x00, 0xEB, -0xC9, 0x00, 0x11, 0xF0, 0xAD, 0xFB, 0xBB, 0x88, 0x83, 0x80, 0x7B, 0x7A, 0x43, 0x72, 0xBB, 0x7A, 0x83, 0x72, 0x01, 0x23, -0xC3, 0x72, 0x72, 0x6A, 0xD6, 0xF8, 0x4C, 0xA0, 0xF9, 0x6A, 0xD7, 0xF8, 0x4C, 0xB1, 0xB5, 0x6C, 0x05, 0x95, 0x04, 0x46, -0xD7, 0xE9, 0x10, 0x03, 0x22, 0xF4, 0xC0, 0x12, 0xE1, 0x62, 0x42, 0xF4, 0x20, 0x12, 0x00, 0x21, 0xC4, 0xE9, 0x10, 0x03, -0xA1, 0x64, 0x3B, 0x6B, 0x72, 0x62, 0xCA, 0xF8, 0x4C, 0x20, 0xC4, 0xF8, 0x4C, 0xB1, 0x06, 0x93, 0xD7, 0xF8, 0x50, 0x31, -0xC4, 0xF8, 0x50, 0x31, 0xD7, 0xF8, 0x54, 0x31, 0xC4, 0xF8, 0x54, 0x31, 0x04, 0xF1, 0x0C, 0x03, 0x0A, 0xF1, 0x14, 0x0C, -0x28, 0x35, 0xC4, 0xE9, 0x0D, 0x11, 0xA1, 0x61, 0xE1, 0x63, 0x61, 0x62, 0x04, 0x93, 0x04, 0xF5, 0x82, 0x73, 0xC4, 0xF8, -0x14, 0xC0, 0x25, 0x63, 0xBC, 0x46, 0x08, 0x46, 0x57, 0x46, 0x07, 0x93, 0xAA, 0x46, 0x8E, 0x46, 0x25, 0x46, 0x0C, 0x46, -0x06, 0xE0, 0x5A, 0x6A, 0xDF, 0x6C, 0xD8, 0xF8, 0x34, 0x00, 0xD8, 0xF8, 0x4C, 0xB1, 0x1E, 0x46, 0xFB, 0x6A, 0x03, 0x33, -0xC2, 0xF3, 0x49, 0x28, 0x23, 0xF0, 0x03, 0x03, 0x03, 0xEB, 0x88, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0x18, 0x44, 0x01, 0x31, -0x58, 0x45, 0x02, 0xF4, 0x60, 0x12, 0xC9, 0xB2, 0x06, 0xD9, 0x05, 0xEB, 0x8E, 0x00, 0x0E, 0xF1, 0x01, 0x0E, 0x44, 0x63, -0x5F, 0xFA, 0x8E, 0xFE, 0x05, 0xEB, 0x8E, 0x08, 0x1C, 0x44, 0xC8, 0xF8, 0x3C, 0x61, 0xB2, 0xF5, 0x60, 0x1F, 0x33, 0x68, -0x75, 0x64, 0x6C, 0x62, 0x00, 0xF0, 0x18, 0x81, 0x00, 0x2B, 0xD2, 0xD1, 0x2C, 0x46, 0x98, 0x46, 0x55, 0x46, 0xC4, 0xF8, -0x38, 0x61, 0xBA, 0x46, 0x67, 0x46, 0x03, 0x98, 0x8A, 0xF8, 0x0D, 0x10, 0x90, 0xF8, 0x50, 0x30, 0x03, 0xF1, 0x01, 0x0C, -0x03, 0x46, 0x22, 0x46, 0x1C, 0x30, 0x83, 0xF8, 0x50, 0xC0, 0x39, 0x46, 0x11, 0xF0, 0xA0, 0xFB, 0x53, 0x4B, 0x1B, 0x68, -0x58, 0x78, 0x00, 0x28, 0x40, 0xF0, 0x11, 0x81, 0xD7, 0xF8, 0x38, 0x11, 0xF2, 0x6C, 0xDF, 0xF8, 0x30, 0xC1, 0xC9, 0x6C, -0xD0, 0x61, 0x54, 0x23, 0x03, 0xFB, 0x09, 0xF3, 0x3A, 0x69, 0x5C, 0xF8, 0x03, 0x00, 0x22, 0x61, 0x14, 0x31, 0x04, 0x9A, -0x3A, 0x61, 0x88, 0x42, 0x63, 0x44, 0x00, 0xF0, 0x2A, 0x81, 0x06, 0x9B, 0x07, 0x9A, 0xA3, 0xF1, 0x28, 0x00, 0x05, 0x9B, -0xC0, 0x1A, 0x03, 0xF1, 0x5C, 0x01, 0x2B, 0x18, 0x1C, 0x68, 0x45, 0xF8, 0x04, 0x4B, 0x1B, 0x68, 0x42, 0xF8, 0x04, 0x3B, -0x8D, 0x42, 0xF6, 0xD1, 0x3B, 0x4C, 0x48, 0x46, 0xFC, 0xF7, 0x10, 0xF8, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xD7, 0xF8, 0x38, 0x31, 0x04, 0xDB, 0xB3, 0x42, 0x1C, 0xD1, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB3, 0x42, 0xFA, 0xD0, -0x36, 0x49, 0x37, 0x48, 0x40, 0xF6, 0x2A, 0x42, 0x12, 0xF0, 0xF2, 0xFE, 0xD7, 0xF8, 0x38, 0x31, 0xB3, 0x42, 0xF0, 0xD0, -0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x08, 0xDA, 0xB8, 0xF1, 0x00, 0x0F, 0x05, 0xD1, 0x2D, 0x49, 0x2F, 0x48, -0x4F, 0xF4, 0x43, 0x62, 0x12, 0xF0, 0xE0, 0xFE, 0xD8, 0xF8, 0x24, 0x20, 0x46, 0x46, 0x02, 0xF4, 0x60, 0x1A, 0x26, 0x4B, -0x1B, 0x68, 0x5B, 0x78, 0x00, 0x2B, 0x58, 0xD1, 0xD7, 0xF8, 0x38, 0x31, 0xD7, 0xF8, 0x10, 0x80, 0xDB, 0x6C, 0x07, 0xF1, -0x0C, 0x05, 0x03, 0xF1, 0x14, 0x07, 0x1C, 0x4B, 0x04, 0x97, 0x54, 0x24, 0x04, 0xFB, 0x09, 0x34, 0x57, 0x46, 0xDF, 0xF8, -0x88, 0xB0, 0xDF, 0xF8, 0x7C, 0x90, 0xA2, 0x46, 0x03, 0x9C, 0x94, 0xF8, 0x50, 0x10, 0xDB, 0xF8, 0x58, 0x33, 0x01, 0x31, -0x84, 0xF8, 0x50, 0x10, 0x30, 0x46, 0x00, 0x21, 0x98, 0x47, 0x58, 0xB1, 0x13, 0x4B, 0x68, 0x60, 0x1B, 0x68, 0x59, 0x78, -0xDA, 0xF8, 0x00, 0x30, 0x00, 0x29, 0x65, 0xD0, 0xAB, 0x42, 0x00, 0xF0, 0xAD, 0x80, 0x05, 0x46, 0xB7, 0xF5, 0x60, 0x1F, -0x65, 0xD1, 0xC0, 0xF8, 0x04, 0x80, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2C, 0x7F, 0xF4, 0xA8, 0xAE, 0x0A, 0x49, -0x0B, 0x48, 0x40, 0xF6, 0x8B, 0x32, 0x12, 0xF0, 0x99, 0xFE, 0xA0, 0xE6, 0x09, 0x4B, 0x03, 0x93, 0x8B, 0xE6, 0x00, 0xBF, -0x20, 0x62, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x30, 0x83, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x64, 0x64, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x4C, 0x92, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x07, 0xF1, 0x50, 0x01, 0xA4, 0xE6, 0xD7, 0xF8, 0x54, 0x80, 0x07, 0xF1, 0x50, 0x05, 0x00, 0x27, 0xA9, 0xE7, 0x00, 0x2E, -0x7F, 0xF4, 0xA6, 0xAE, 0x49, 0x49, 0x4A, 0x48, 0x40, 0xF6, 0xB6, 0x32, 0x12, 0xF0, 0x6E, 0xFE, 0x9E, 0xE6, 0x03, 0xF4, -0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x3E, 0xD0, 0x40, 0xF6, 0x9B, 0x32, 0x42, 0x49, 0x44, 0x48, 0x12, 0xF0, 0x62, 0xFE, -0x43, 0x4B, 0x67, 0x6C, 0x1B, 0x68, 0x2A, 0x68, 0xDB, 0xB2, 0x07, 0xEB, 0x83, 0x03, 0xB2, 0xF9, 0x00, 0x20, 0xD3, 0xF8, -0x3C, 0x41, 0x00, 0x2A, 0xE5, 0x6C, 0xBF, 0xF6, 0x6F, 0xAE, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x12, 0xB2, 0xF5, 0x60, 0x1F, -0x60, 0xD0, 0x3A, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x64, 0xE6, 0x04, 0x9A, 0x93, 0x42, 0x99, 0xD1, 0xCA, 0xE9, -0x01, 0x11, 0x05, 0x46, 0x96, 0xE7, 0x34, 0x4B, 0x36, 0x68, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x3F, 0xDB, -0x77, 0x6A, 0x07, 0xF4, 0x60, 0x17, 0x74, 0xE7, 0x20, 0x46, 0x2C, 0x46, 0x04, 0xEB, 0x8E, 0x0E, 0x55, 0x46, 0xC4, 0xF8, -0x38, 0x61, 0xBA, 0x46, 0x98, 0x46, 0x67, 0x46, 0xCE, 0xF8, 0x34, 0x00, 0xE3, 0xE6, 0x27, 0x4B, 0x67, 0x6C, 0x1B, 0x68, -0xDB, 0xB2, 0x07, 0xEB, 0x83, 0x03, 0xD3, 0xF8, 0x3C, 0x41, 0xE5, 0x6C, 0xCB, 0xE7, 0xB0, 0x6A, 0xA3, 0x7A, 0x62, 0x7A, -0x71, 0x8C, 0xC0, 0xF3, 0xC1, 0x10, 0x00, 0x90, 0x20, 0x46, 0xFE, 0xF7, 0xA1, 0xFB, 0x54, 0x23, 0x1E, 0x49, 0xF2, 0x6C, -0xD7, 0xF8, 0x54, 0xE0, 0x03, 0xFB, 0x09, 0xF3, 0x04, 0xF1, 0x50, 0x00, 0x51, 0xF8, 0x03, 0xC0, 0xD0, 0x61, 0x07, 0xF1, -0x50, 0x02, 0xC4, 0xF8, 0x54, 0xE0, 0x94, 0x45, 0x04, 0x9C, 0x7C, 0x65, 0x7F, 0xF4, 0xE5, 0xAE, 0xC8, 0x50, 0xE2, 0xE6, -0xCA, 0xF8, 0x00, 0x00, 0x05, 0x46, 0x4F, 0xE7, 0x00, 0x2E, 0xBD, 0xD1, 0x0B, 0x49, 0x40, 0xF6, 0x62, 0x42, 0x48, 0x46, -0x12, 0xF0, 0xF2, 0xFD, 0xB6, 0xE7, 0x04, 0x99, 0x01, 0x22, 0xC3, 0xE9, 0x01, 0x12, 0xD0, 0xE6, 0x40, 0xF6, 0xA5, 0x32, -0x04, 0x49, 0x0A, 0x48, 0x12, 0xF0, 0xE6, 0xFD, 0x06, 0x4B, 0x1A, 0x68, 0x63, 0x6A, 0xB2, 0xF9, 0x00, 0x20, 0xFC, 0xE5, -0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, 0x1C, 0x92, 0x15, 0x00, 0x30, 0x83, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x34, 0x92, 0x15, 0x00, 0x05, 0x28, 0x10, 0xB5, 0x25, 0xD0, 0x14, 0x4A, 0x00, 0xEB, 0x40, 0x03, -0xC3, 0xEB, 0xC3, 0x03, 0x02, 0xEB, 0x83, 0x02, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0F, 0x4B, -0x01, 0x21, 0x19, 0x60, 0x0E, 0x4C, 0x92, 0xF8, 0x50, 0x10, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x31, 0xB9, 0xD2, 0x6A, -0x22, 0xB1, 0x0B, 0x4B, 0xD3, 0xF8, 0x5C, 0x33, 0x98, 0x47, 0x23, 0x68, 0x33, 0xB1, 0x06, 0x4A, 0x01, 0x3B, 0x12, 0x68, -0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x05, 0x4A, 0xDE, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x03, 0x68, 0x13, 0xF4, -0xE0, 0x3F, 0x1A, 0xD1, 0x9A, 0x04, 0x4C, 0xBF, 0x03, 0xF0, 0x0F, 0x02, 0x03, 0xF0, 0x07, 0x02, 0x02, 0x2A, 0xC3, 0xF3, -0xC1, 0x11, 0x88, 0xBF, 0x4F, 0xF4, 0x80, 0x12, 0x23, 0xF0, 0xFF, 0x53, 0x98, 0xBF, 0x4F, 0xF4, 0x00, 0x22, 0x23, 0xF4, -0xFE, 0x13, 0x42, 0xEA, 0x01, 0x62, 0x13, 0x43, 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF4, 0x00, 0x43, 0x03, 0x60, 0x70, 0x47, -0xC3, 0x6B, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x10, 0xB4, 0x0E, 0x4C, 0x42, 0x6A, 0x24, 0x68, 0xB4, 0xF9, 0x00, 0x40, -0x00, 0x2C, 0x01, 0xDA, 0xDB, 0x03, 0x0B, 0xD5, 0x53, 0x69, 0x23, 0xF4, 0xE0, 0x33, 0x00, 0x24, 0x43, 0xF4, 0x80, 0x43, -0xC4, 0x63, 0x5D, 0xF8, 0x04, 0x4B, 0x53, 0x61, 0xFC, 0xF7, 0xA4, 0xB9, 0x04, 0x49, 0x05, 0x48, 0x5D, 0xF8, 0x04, 0x4B, -0x40, 0xF6, 0xD9, 0x42, 0x12, 0xF0, 0x28, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x78, 0x92, 0x15, 0x00, -0x05, 0x28, 0x10, 0xB5, 0x17, 0xD0, 0x0D, 0x4C, 0x00, 0xEB, 0x40, 0x00, 0xC0, 0xEB, 0xC0, 0x00, 0x04, 0xEB, 0x80, 0x04, -0xA1, 0x6A, 0x31, 0xB1, 0xCB, 0x7A, 0x01, 0x3B, 0xDB, 0xB2, 0xCB, 0x72, 0x13, 0xB1, 0x00, 0x23, 0xA3, 0x62, 0x10, 0xBD, -0xD1, 0xF8, 0x48, 0x01, 0x11, 0xF0, 0xE8, 0xF8, 0x00, 0x23, 0xA3, 0x62, 0xF7, 0xE7, 0x02, 0x4C, 0xEC, 0xE7, 0x00, 0xBF, -0x20, 0x62, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0xF0, 0xB4, 0xC5, 0x6C, 0x42, 0x6A, 0xEB, 0x6C, 0xD0, 0xE9, 0x11, 0x67, -0x22, 0xF4, 0xC0, 0x12, 0x23, 0xF4, 0x60, 0x13, 0x05, 0xF1, 0x14, 0x0C, 0x42, 0xF4, 0x20, 0x14, 0x43, 0xF4, 0x20, 0x12, -0x06, 0xF5, 0x82, 0x73, 0xC6, 0xF8, 0x14, 0xC0, 0x33, 0x63, 0x44, 0x62, 0xEA, 0x64, 0x06, 0xF1, 0x0C, 0x00, 0x07, 0xF1, -0x24, 0x02, 0x06, 0xF5, 0x9C, 0x75, 0x53, 0xF8, 0x04, 0x4B, 0x42, 0xF8, 0x04, 0x4F, 0xAB, 0x42, 0xF9, 0xD1, 0x77, 0xB1, -0x09, 0x4B, 0x1B, 0x68, 0x5B, 0x78, 0x33, 0xB9, 0xD6, 0xF8, 0x38, 0x31, 0xDB, 0x6C, 0x14, 0x33, 0x0B, 0x60, 0xF0, 0xBC, -0x70, 0x47, 0x50, 0x36, 0x0E, 0x60, 0xF0, 0xBC, 0x70, 0x47, 0x01, 0x23, 0x38, 0x46, 0x73, 0x60, 0xF5, 0xE7, 0x00, 0xBF, -0x34, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x47, 0x6A, 0xD0, 0xF8, 0x4C, 0xE0, 0x85, 0xB0, 0x17, 0xF4, 0x00, 0x1C, -0x9D, 0xF8, 0x38, 0x90, 0x04, 0x46, 0x0E, 0xF1, 0x14, 0x08, 0x0D, 0x46, 0x16, 0x46, 0x9A, 0x46, 0x2A, 0xD0, 0x07, 0xF4, -0x60, 0x17, 0xB7, 0xF5, 0x20, 0x1F, 0x40, 0xF0, 0xBB, 0x80, 0xD0, 0xF8, 0x44, 0xB0, 0xBB, 0xF8, 0x04, 0x70, 0x07, 0xF0, -0x03, 0x07, 0x03, 0x2F, 0x40, 0xF0, 0xB2, 0x80, 0xDF, 0xF8, 0x30, 0xC2, 0x83, 0x4F, 0xDC, 0xF8, 0x00, 0xC0, 0x3F, 0x68, -0x9C, 0xF8, 0x3E, 0xC0, 0x07, 0xF0, 0x3F, 0x07, 0xBC, 0x45, 0x00, 0xF2, 0xA5, 0x80, 0xDB, 0xF8, 0x24, 0x70, 0x97, 0x42, -0x40, 0xF2, 0xC1, 0x80, 0x7C, 0x4C, 0xCD, 0xF8, 0x38, 0x90, 0xD4, 0xF8, 0x70, 0x43, 0xA4, 0x46, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x4F, 0x60, 0x47, 0x83, 0x6C, 0x00, 0x2B, 0x00, 0xF0, 0x92, 0x80, 0x5B, 0x6A, 0x13, 0xF0, 0x10, 0x03, 0x00, 0xF0, -0x8D, 0x80, 0x82, 0x88, 0x00, 0x2A, 0x00, 0xF0, 0x8F, 0x80, 0xC3, 0x8B, 0x1F, 0x07, 0x00, 0xF1, 0x8B, 0x80, 0xDE, 0xF8, -0x24, 0x10, 0x00, 0x29, 0x00, 0xF0, 0xB9, 0x80, 0x08, 0x88, 0x83, 0xB2, 0x00, 0x04, 0x00, 0xF1, 0xB4, 0x80, 0x6F, 0xEA, -0x43, 0x43, 0x6F, 0xEA, 0x53, 0x43, 0x0B, 0x80, 0x94, 0xF8, 0x33, 0x20, 0x94, 0xF8, 0x32, 0x30, 0x04, 0x32, 0x04, 0x33, -0x84, 0xF8, 0x32, 0x30, 0x84, 0xF8, 0x33, 0x20, 0xDE, 0xE9, 0x0A, 0x12, 0xD3, 0x1D, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, -0x9B, 0xB2, 0x04, 0x32, 0x04, 0x31, 0xB3, 0x42, 0xCE, 0xE9, 0x0A, 0x12, 0x6D, 0xD8, 0xA2, 0x88, 0x32, 0xB1, 0xE3, 0x8B, -0x1F, 0x07, 0x03, 0xD4, 0x5A, 0x4B, 0xDB, 0x6E, 0x41, 0xF8, 0x03, 0x3C, 0x23, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0x36, 0xD0, -0x11, 0x46, 0xDF, 0xF8, 0x70, 0xB1, 0x54, 0x4F, 0x32, 0x46, 0x00, 0x29, 0x2C, 0xD0, 0xE1, 0x8B, 0x0E, 0x07, 0x29, 0xD4, -0x99, 0x88, 0x39, 0xB3, 0xD9, 0x8B, 0x08, 0x07, 0x24, 0xD4, 0x4D, 0x49, 0xDB, 0xF8, 0x00, 0x00, 0x09, 0x68, 0x90, 0xF8, -0x3E, 0x60, 0x01, 0xF0, 0x3F, 0x01, 0x8E, 0x42, 0x1A, 0xD8, 0x5B, 0x6A, 0xBC, 0xF1, 0x00, 0x0F, 0x4C, 0xD1, 0x9B, 0x02, -0x17, 0xD5, 0xCD, 0xF8, 0x00, 0x90, 0xD7, 0xF8, 0x54, 0x63, 0x03, 0x92, 0x53, 0x46, 0x29, 0x46, 0x20, 0x46, 0xB0, 0x47, -0x03, 0x9A, 0x00, 0x28, 0x77, 0xD0, 0x2B, 0x68, 0x00, 0x2B, 0x74, 0xD0, 0x60, 0x6A, 0xA1, 0x88, 0x00, 0xF4, 0x00, 0x1C, -0x00, 0x29, 0xD2, 0xD1, 0xBC, 0xF1, 0x00, 0x0F, 0x47, 0xD1, 0x63, 0x6C, 0xD3, 0xB9, 0x3B, 0x48, 0x11, 0xF0, 0x2C, 0xF8, -0x3A, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x56, 0xDB, 0x54, 0x23, 0x1C, 0x22, 0x37, 0x48, -0x13, 0xFB, 0x09, 0x29, 0x00, 0x22, 0x01, 0x23, 0xAA, 0x80, 0xEB, 0x72, 0x48, 0x44, 0x29, 0x46, 0x65, 0x64, 0x10, 0xF0, -0xF7, 0xFF, 0x01, 0xE0, 0x4F, 0xF0, 0x00, 0x08, 0x40, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDE, 0xF8, 0x2C, 0x30, -0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0x9E, 0x42, 0x9A, 0xD2, 0x25, 0x4B, 0x40, 0x46, 0xD3, 0xF8, -0xBC, 0x33, 0x49, 0x46, 0x98, 0x47, 0x4F, 0xF0, 0x00, 0x08, 0xE9, 0xE7, 0xCD, 0xF8, 0x00, 0x90, 0x99, 0x02, 0x54, 0xBF, -0xD7, 0xF8, 0x50, 0x63, 0xD7, 0xF8, 0x4C, 0x63, 0xAF, 0xE7, 0xFE, 0xF7, 0xD1, 0xF9, 0xDB, 0xF8, 0x38, 0x31, 0x67, 0x6A, -0x1B, 0x68, 0x2B, 0x60, 0x5B, 0xB3, 0xA2, 0x88, 0x07, 0xF4, 0x00, 0x1C, 0x80, 0xE7, 0x63, 0x6C, 0xD3, 0xF8, 0x38, 0x21, -0x03, 0xF1, 0x0C, 0x08, 0xD2, 0x6C, 0x00, 0x21, 0x40, 0x46, 0xD1, 0x61, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDE, 0xF8, -0x2C, 0x30, 0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0x9E, 0x42, 0xCC, 0xD3, 0x00, 0x29, 0x3F, 0xF4, -0x65, 0xAF, 0xDE, 0xF8, 0x28, 0x10, 0x5D, 0xE7, 0x00, 0x28, 0xA6, 0xD1, 0x0C, 0x49, 0x0D, 0x48, 0x40, 0xF6, 0x92, 0x52, -0x12, 0xF0, 0xD6, 0xFB, 0x9F, 0xE7, 0x67, 0x6A, 0x07, 0xF4, 0x00, 0x1C, 0x8C, 0xE7, 0x07, 0xF4, 0x00, 0x1C, 0x89, 0xE7, -0x54, 0x83, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x8C, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x90, 0x15, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x28, -0x2C, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x0B, 0x23, 0x13, 0x1B, 0x03, 0x00, 0x1B, 0x4B, 0x1B, 0x68, 0x13, 0xF0, 0x03, 0x0F, -0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, 0x17, 0x4B, 0x1B, 0x68, 0x13, 0xF0, 0x30, 0x0F, 0x0C, 0xBF, 0x01, 0x20, -0x00, 0x20, 0x08, 0xBD, 0x13, 0x4B, 0x1B, 0x68, 0x13, 0xF4, 0x40, 0x5F, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, -0x0F, 0x4B, 0x1B, 0x68, 0x13, 0xF4, 0x40, 0x3F, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, 0x0B, 0x4B, 0x1B, 0x68, -0x13, 0xF4, 0x40, 0x7F, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, 0x08, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x01, 0xDB, 0x00, 0x20, 0x08, 0xBD, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0xF3, 0x12, 0x12, 0xF0, 0x7E, 0xFB, -0x00, 0x20, 0x08, 0xBD, 0x88, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, -0x90, 0xF8, 0x25, 0x30, 0xE3, 0xB1, 0x10, 0xB5, 0x0F, 0x4A, 0x10, 0x4B, 0x11, 0x69, 0xD3, 0xF8, 0xE0, 0x31, 0x01, 0xF5, -0x9C, 0x51, 0x84, 0xB0, 0x04, 0x46, 0x08, 0x31, 0x0C, 0x48, 0x98, 0x47, 0x00, 0x21, 0x02, 0x22, 0x05, 0x23, 0x94, 0xF8, -0x23, 0x00, 0xCD, 0xE9, 0x00, 0x32, 0xCD, 0xE9, 0x02, 0x11, 0x25, 0x23, 0x40, 0xF6, 0xC4, 0x12, 0xFD, 0xF7, 0x5E, 0xFF, -0x04, 0xB0, 0x10, 0xBD, 0x03, 0x4A, 0xC2, 0xE9, 0x01, 0x33, 0x70, 0x47, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x94, 0x64, 0x17, 0x00, 0x03, 0x68, 0x70, 0xB4, 0xC3, 0xF3, 0xC2, 0x24, 0x05, 0x2C, 0x01, 0xD0, 0x70, 0xBC, 0x70, 0x47, -0xC3, 0xF3, 0x00, 0x26, 0x75, 0x00, 0x03, 0xF0, 0x7F, 0x04, 0x35, 0x44, 0x04, 0xEB, 0x44, 0x04, 0x05, 0xEB, 0x44, 0x04, -0xC3, 0xF3, 0x41, 0x25, 0x2C, 0x44, 0x16, 0x4D, 0x35, 0xF8, 0x14, 0x50, 0xC3, 0xF3, 0xC0, 0x14, 0x05, 0xFA, 0x04, 0xF4, -0x01, 0x3A, 0x02, 0xFB, 0x04, 0xF2, 0x8A, 0x42, 0xC3, 0xF3, 0xC1, 0x14, 0xE2, 0xD2, 0x13, 0xF4, 0xE0, 0x3F, 0x06, 0xD0, -0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0x00, 0x43, 0x70, 0xBC, 0x03, 0x60, 0x70, 0x47, 0x03, 0xF0, 0x0F, 0x02, 0x02, 0x2A, -0x23, 0xF0, 0xFF, 0x53, 0x8C, 0xBF, 0x4F, 0xF4, 0x80, 0x12, 0x4F, 0xF4, 0x00, 0x22, 0x23, 0xF4, 0xFE, 0x13, 0x42, 0xEA, -0x04, 0x62, 0x13, 0x43, 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF4, 0x00, 0x43, 0xE8, 0xE7, 0x00, 0xBF, 0xE0, 0x94, 0x15, 0x00, -0x70, 0xB5, 0x0C, 0x4D, 0x00, 0xEB, 0x40, 0x03, 0x05, 0xEB, 0x83, 0x03, 0x93, 0xF8, 0x2E, 0x20, 0x72, 0xB1, 0x04, 0x46, -0x46, 0x00, 0x58, 0x6A, 0x00, 0x22, 0x83, 0xF8, 0x2E, 0x20, 0x10, 0xB1, 0x21, 0x46, 0xFB, 0xF7, 0x35, 0xFF, 0x34, 0x44, -0x05, 0xEB, 0x84, 0x05, 0x00, 0x23, 0x6B, 0x62, 0x70, 0xBD, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x83, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x41, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x41, 0x4F, -0x41, 0x4E, 0x3B, 0x68, 0xDF, 0xF8, 0x0C, 0x81, 0x01, 0x33, 0x00, 0x24, 0x3B, 0x60, 0x35, 0x46, 0xA2, 0x46, 0x4F, 0xF0, -0x01, 0x0B, 0x96, 0xF8, 0x60, 0x10, 0x0B, 0xFA, 0x04, 0xF3, 0x0B, 0x42, 0x5F, 0xFA, 0x83, 0xF9, 0x4D, 0xD1, 0x96, 0xF8, -0x61, 0x10, 0x11, 0xEA, 0x09, 0x0F, 0x30, 0xD0, 0xA8, 0x6A, 0x21, 0xEA, 0x03, 0x03, 0x86, 0xF8, 0x61, 0x30, 0x03, 0x07, -0x4F, 0xD0, 0x33, 0x4B, 0x43, 0xF8, 0x24, 0x00, 0xE0, 0xB2, 0xD8, 0xF8, 0xD0, 0x33, 0x98, 0x47, 0x95, 0xF8, 0x2C, 0x30, -0x85, 0xF8, 0x2D, 0x30, 0x49, 0xEA, 0x0A, 0x0A, 0x01, 0x34, 0x04, 0x2C, 0x05, 0xF1, 0x0C, 0x05, 0xD9, 0xD1, 0xBA, 0xF1, -0x00, 0x0F, 0x47, 0xD0, 0x29, 0x4A, 0x2A, 0x4B, 0x11, 0x69, 0xD3, 0xF8, 0xE0, 0x31, 0x29, 0x48, 0x01, 0xF5, 0x00, 0x51, -0x98, 0x47, 0x3B, 0x68, 0x33, 0xB1, 0x20, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x95, 0xF8, 0x2D, 0x30, 0x00, 0x2B, 0xDE, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, 0x85, 0xF8, -0x2D, 0x30, 0x5B, 0xB9, 0x32, 0x69, 0xA3, 0x1C, 0xE0, 0xB2, 0x52, 0xF8, 0x23, 0x30, 0x17, 0x4A, 0x42, 0xF8, 0x24, 0x30, -0xD8, 0xF8, 0xD0, 0x33, 0x98, 0x47, 0xCD, 0xE7, 0x49, 0xEA, 0x0A, 0x0A, 0xCA, 0xE7, 0xE0, 0xB2, 0x01, 0x93, 0xFF, 0xF7, -0xBD, 0xFE, 0x01, 0x9B, 0x00, 0x28, 0xF5, 0xD0, 0x96, 0xF8, 0x60, 0x10, 0x21, 0xEA, 0x03, 0x01, 0x86, 0xF8, 0x60, 0x10, -0xA3, 0xE7, 0x95, 0xF8, 0x2E, 0x30, 0x00, 0x2B, 0xB2, 0xD1, 0x85, 0xF8, 0x2E, 0xB0, 0x96, 0xF8, 0x60, 0x30, 0x49, 0xEA, -0x03, 0x03, 0x86, 0xF8, 0x60, 0x30, 0xA9, 0xE7, 0xC6, 0xF8, 0x18, 0xA0, 0xBD, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0xA8, 0x64, 0x17, 0x00, 0x70, 0xB5, 0x14, 0x4C, 0x94, 0xF8, 0x62, 0x20, 0x4A, 0xB1, 0x94, 0xF8, 0x61, 0x20, 0xA5, 0x69, -0x01, 0x21, 0x01, 0xFA, 0x00, 0xF3, 0x13, 0x43, 0x84, 0xF8, 0x61, 0x30, 0x05, 0xB1, 0x70, 0xBD, 0x0D, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x07, 0xDB, 0x0B, 0x4B, 0x0C, 0x48, 0xD3, 0xF8, 0xC8, 0x33, 0xA3, 0x61, 0xBD, 0xE8, -0x70, 0x40, 0x18, 0x47, 0xFF, 0xF7, 0x74, 0xFE, 0x00, 0x28, 0xF3, 0xD1, 0xBD, 0xE8, 0x70, 0x40, 0x06, 0x49, 0x07, 0x48, -0x4F, 0xF4, 0x22, 0x72, 0x12, 0xF0, 0xF4, 0xB9, 0x94, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xA8, 0x64, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x90, 0x93, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x1D, 0x4D, 0x1E, 0x4E, -0x1E, 0x4F, 0xDF, 0xF8, 0x80, 0x80, 0xDF, 0xF8, 0x80, 0x90, 0x2B, 0x68, 0x00, 0x24, 0x01, 0x2C, 0x11, 0xD0, 0x53, 0xF8, -0x24, 0x30, 0x1B, 0xB9, 0x33, 0x69, 0xA2, 0x1C, 0x53, 0xF8, 0x22, 0x30, 0x47, 0xF8, 0x24, 0x30, 0xE0, 0xB2, 0xFF, 0xF7, -0xFB, 0xFE, 0x03, 0x2C, 0x0D, 0xD0, 0x01, 0x34, 0x01, 0x2C, 0x2B, 0x68, 0xED, 0xD1, 0x5B, 0x68, 0x73, 0xB9, 0x33, 0x69, -0xDB, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x01, 0x20, 0xFF, 0xF7, 0xEC, 0xFE, 0xF1, 0xE7, 0x0D, 0x48, 0x08, 0xF0, 0x3C, 0xFC, -0x00, 0x23, 0xB3, 0x61, 0xBD, 0xE8, 0xF8, 0x83, 0xC3, 0xF3, 0x0B, 0x02, 0x00, 0x2A, 0xEE, 0xD1, 0x32, 0x69, 0xD2, 0x68, -0x03, 0xEA, 0x09, 0x03, 0xC2, 0xF3, 0x0B, 0x02, 0x13, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0xE6, 0xE7, 0xAC, 0x35, 0x17, 0x00, -0x94, 0x64, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0xA8, 0x64, 0x17, 0x00, 0x04, 0x02, 0x32, 0x40, 0x00, 0xF0, 0xFF, 0xFF, -0x1A, 0x4A, 0x1B, 0x4B, 0xF0, 0xB4, 0x02, 0xF1, 0x74, 0x04, 0x94, 0xE8, 0x03, 0x00, 0x16, 0x69, 0xC3, 0xF8, 0xE0, 0x03, -0xF0, 0x6D, 0xA3, 0xF8, 0xE4, 0x13, 0xB6, 0xF8, 0x60, 0x10, 0xC3, 0xF8, 0xE6, 0x03, 0xA3, 0xF8, 0xEA, 0x13, 0x94, 0xE8, -0x03, 0x00, 0xD3, 0xF8, 0xD4, 0x53, 0xA3, 0xF8, 0xF0, 0x13, 0xD1, 0x6E, 0xC3, 0xF8, 0xEC, 0x03, 0xC3, 0xF8, 0xF6, 0x13, -0x0D, 0x4F, 0x0E, 0x48, 0x03, 0xF5, 0x88, 0x64, 0x00, 0x21, 0x82, 0xF8, 0x88, 0x10, 0xC3, 0xF8, 0xBC, 0x43, 0x05, 0xF4, -0x7F, 0x45, 0x03, 0xF5, 0x66, 0x74, 0x4F, 0xF4, 0x00, 0x52, 0xC3, 0xF8, 0xD4, 0x53, 0xC3, 0xF8, 0x9C, 0x13, 0x3C, 0x60, -0xF0, 0xBC, 0x02, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x60, 0x5D, 0x18, 0x00, 0xAC, 0x81, 0x32, 0x40, -0x80, 0x81, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x68, 0xB2, 0x03, 0x68, 0x90, 0x4C, 0xDB, 0xF8, 0x10, 0x20, -0x80, 0x46, 0x53, 0xF8, 0x26, 0x0F, 0xA0, 0x64, 0xD0, 0x6D, 0x9D, 0x88, 0xC4, 0xF8, 0x4E, 0x00, 0x18, 0x68, 0xB8, 0xF8, -0x12, 0x10, 0x9B, 0x88, 0xB2, 0xF8, 0x60, 0x20, 0x60, 0x65, 0x00, 0x27, 0x83, 0xB0, 0x04, 0xF1, 0x5C, 0x00, 0xA4, 0xF8, -0x4C, 0x50, 0xA4, 0xF8, 0x52, 0x20, 0xA4, 0xF8, 0x58, 0x30, 0xA7, 0x61, 0xFE, 0xF7, 0x78, 0xFC, 0x63, 0x6F, 0xD8, 0xF8, -0x00, 0x10, 0x80, 0x4A, 0x91, 0xF8, 0x23, 0xC0, 0xA5, 0x69, 0xDE, 0x1C, 0x42, 0xF2, 0x38, 0x0E, 0x26, 0xF0, 0x03, 0x06, -0x24, 0x23, 0x39, 0x46, 0x04, 0x36, 0x13, 0xFB, 0x0C, 0xE7, 0x06, 0xEB, 0x80, 0x06, 0x4F, 0xEA, 0x40, 0x2E, 0x17, 0x44, -0xB6, 0xB2, 0x89, 0x46, 0x04, 0xF1, 0x5C, 0x02, 0xA4, 0x46, 0x4F, 0xF4, 0x20, 0x10, 0xF2, 0x46, 0x01, 0x97, 0x1C, 0xE0, -0x0F, 0x33, 0x1B, 0x09, 0x1B, 0x02, 0x43, 0xF0, 0x30, 0x03, 0x9B, 0xB2, 0x4A, 0xEA, 0x00, 0x00, 0x0B, 0x43, 0x90, 0x63, -0xC2, 0xF8, 0x24, 0x90, 0xC2, 0xF8, 0x3C, 0x90, 0xA2, 0xF8, 0x58, 0x30, 0xCC, 0xF8, 0x08, 0x20, 0xA5, 0x69, 0x35, 0x44, -0xA5, 0x61, 0x94, 0x46, 0x4F, 0xF4, 0x40, 0x10, 0x01, 0x31, 0x09, 0x29, 0x02, 0xF1, 0x5C, 0x02, 0x22, 0xD0, 0x01, 0x9F, -0x57, 0xF8, 0x04, 0x3B, 0x01, 0x97, 0x00, 0x2B, 0xF4, 0xD0, 0xD8, 0xF8, 0x08, 0x70, 0x06, 0xEB, 0x05, 0x0E, 0xBE, 0x45, -0x16, 0xD8, 0xB3, 0xF5, 0x7C, 0x7F, 0xD3, 0xD9, 0xB3, 0xF5, 0x80, 0x6F, 0x0D, 0xD9, 0xB3, 0xF5, 0x86, 0x4F, 0x45, 0xD8, -0x6F, 0xF4, 0x7C, 0x75, 0x2B, 0x44, 0xC3, 0xF3, 0x07, 0x13, 0x1B, 0x02, 0x43, 0xF4, 0x80, 0x43, 0x43, 0xF0, 0x30, 0x03, -0xC8, 0xE7, 0x44, 0xF2, 0x30, 0x03, 0xC5, 0xE7, 0x00, 0x2D, 0x3B, 0xD0, 0xDC, 0xF8, 0x38, 0x30, 0x03, 0xF4, 0x60, 0x11, -0x00, 0x22, 0xB1, 0xF5, 0x20, 0x1F, 0xCC, 0xF8, 0x08, 0x20, 0x63, 0xD0, 0x4C, 0x49, 0x4D, 0x4A, 0x4D, 0x4E, 0x43, 0xF4, -0x60, 0x13, 0xCC, 0xF8, 0x38, 0x30, 0x0D, 0x68, 0x10, 0x68, 0x04, 0x35, 0xC0, 0xF3, 0x05, 0x20, 0x06, 0xE0, 0x33, 0x68, -0xDB, 0x04, 0x08, 0xD4, 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0x03, 0xF0, 0x3F, 0x03, 0x98, 0x42, -0xF3, 0xD0, 0xE3, 0x6B, 0x42, 0x48, 0x43, 0x49, 0x43, 0x4A, 0x04, 0x60, 0x03, 0xF4, 0x7F, 0x43, 0xE3, 0x63, 0x4F, 0xF4, -0x00, 0x50, 0x00, 0x23, 0x08, 0x60, 0x63, 0x60, 0x8B, 0xF8, 0x88, 0x30, 0x62, 0x62, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0xB3, 0xF5, 0x88, 0x4F, 0x1F, 0xD8, 0x48, 0xF2, 0x30, 0x03, 0x87, 0xE7, 0xD4, 0xF8, 0x98, 0x30, 0x37, 0x4A, 0x35, 0x4E, -0x35, 0x49, 0xC4, 0xF8, 0x94, 0x50, 0x03, 0xF4, 0x7F, 0x43, 0xC4, 0xF8, 0x98, 0x30, 0xA2, 0xF5, 0x79, 0x73, 0xC4, 0xE9, -0x18, 0x55, 0x8B, 0xF8, 0x88, 0x50, 0x4F, 0xF4, 0x00, 0x50, 0x33, 0x60, 0x30, 0x23, 0x08, 0x60, 0xA4, 0xF8, 0xB4, 0x30, -0xC4, 0xF8, 0x80, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB3, 0xF5, 0x0F, 0x3F, 0x2A, 0xD9, 0xB3, 0xF5, 0x11, 0x3F, -0x32, 0xD9, 0x28, 0x4D, 0xAB, 0x42, 0x32, 0xD8, 0xA3, 0xF1, 0x01, 0x13, 0xA3, 0xF5, 0x44, 0x43, 0xC3, 0xF3, 0xC7, 0x33, -0x1B, 0x02, 0x43, 0xF4, 0x40, 0x43, 0x43, 0xF0, 0x30, 0x03, 0x55, 0xE7, 0xDC, 0xF8, 0x3C, 0x30, 0xCC, 0xF8, 0x38, 0x20, -0xCC, 0xF8, 0x04, 0x20, 0x8B, 0xF8, 0x88, 0x20, 0x19, 0x48, 0x1A, 0x49, 0x1A, 0x4A, 0xCC, 0xF8, 0x24, 0x20, 0x03, 0xF4, -0x7F, 0x43, 0xCC, 0xF8, 0x3C, 0x30, 0x4F, 0xF4, 0x00, 0x53, 0xC0, 0xF8, 0x00, 0xC0, 0x0B, 0x60, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0xA3, 0xF5, 0x70, 0x53, 0x01, 0x3B, 0xC3, 0xF3, 0xC7, 0x23, 0x1B, 0x02, 0x43, 0xF4, 0x00, 0x43, 0x43, 0xF0, -0x30, 0x03, 0x31, 0xE7, 0x4C, 0xF2, 0x30, 0x03, 0x2E, 0xE7, 0x4F, 0xF6, 0x30, 0x65, 0x4F, 0xF6, 0x30, 0x77, 0xB3, 0xF1, -0xFF, 0x3F, 0x08, 0xBF, 0x3D, 0x46, 0x2B, 0x46, 0x24, 0xE7, 0x00, 0xBF, 0x60, 0x5D, 0x18, 0x00, 0x7C, 0x36, 0x17, 0x00, -0x20, 0x01, 0x32, 0x40, 0x54, 0x83, 0x32, 0x40, 0x78, 0x80, 0x32, 0x40, 0xAC, 0x81, 0x32, 0x40, 0x80, 0x81, 0x32, 0x40, -0xA0, 0x61, 0x18, 0x00, 0x00, 0xC4, 0x20, 0x00, 0x94, 0x64, 0x17, 0x00, 0x1C, 0x4A, 0x1D, 0x49, 0x13, 0x68, 0xF0, 0xB4, -0x03, 0xF5, 0xDA, 0x53, 0x1B, 0x4F, 0x1C, 0x4E, 0x1C, 0x4C, 0x1D, 0x4D, 0x18, 0x33, 0x3B, 0x60, 0x40, 0x23, 0x33, 0x60, -0x23, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x23, 0x60, 0x17, 0x68, 0x0C, 0x68, 0x01, 0x23, 0x10, 0x3E, 0x04, 0x37, 0xC4, 0xF3, -0x05, 0x24, 0x85, 0xF8, 0x8C, 0x30, 0x06, 0xE0, 0x33, 0x68, 0xDB, 0x04, 0x08, 0xD4, 0x13, 0x68, 0xDB, 0x1B, 0x00, 0x2B, -0x04, 0xDA, 0x0B, 0x68, 0x03, 0xF0, 0x3F, 0x03, 0x9C, 0x42, 0xF3, 0xD0, 0xC3, 0x6B, 0x0E, 0x4C, 0x0E, 0x4A, 0x0F, 0x49, -0x42, 0x62, 0x03, 0xF4, 0x7F, 0x43, 0xC3, 0x63, 0x00, 0x22, 0x4F, 0xF4, 0x00, 0x53, 0x42, 0x60, 0x85, 0xF8, 0x88, 0x20, -0x20, 0x60, 0xF0, 0xBC, 0x0B, 0x60, 0x70, 0x47, 0x20, 0x01, 0x32, 0x40, 0x54, 0x83, 0x32, 0x40, 0x40, 0x01, 0x32, 0x40, -0x88, 0x80, 0x32, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x94, 0x64, 0x17, 0x00, 0xAC, 0x81, 0x32, 0x40, 0xA0, 0x61, 0x18, 0x00, -0x80, 0x81, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0x10, 0x4F, 0x0C, 0x23, 0x0E, 0x46, 0x54, 0x25, 0x04, 0x46, 0x15, 0xFB, -0x01, 0x30, 0x05, 0xFB, 0x06, 0x75, 0x38, 0x44, 0xD4, 0xF8, 0x4C, 0x80, 0x10, 0xF0, 0xEC, 0xFB, 0x95, 0xF8, 0x50, 0x30, -0xA2, 0x88, 0x01, 0x3B, 0x85, 0xF8, 0x50, 0x30, 0x22, 0xB9, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xFD, 0xF7, 0x22, 0xBA, -0xD8, 0xF8, 0x50, 0x10, 0x32, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xFC, 0xF7, 0xF6, 0xBB, 0x20, 0x62, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x00, 0x23, 0x2E, 0x4D, 0x03, 0x60, 0x95, 0xF8, 0x8C, 0x30, 0x82, 0xB0, 0x00, 0x2B, 0x37, 0xD1, -0x95, 0xF8, 0x85, 0x30, 0x03, 0x2B, 0x33, 0xD8, 0x29, 0x4E, 0xDF, 0xF8, 0xB4, 0xA0, 0x81, 0x46, 0x4F, 0xF0, 0x03, 0x08, -0x14, 0xE0, 0x95, 0xF8, 0x7E, 0x30, 0xDA, 0xF8, 0x64, 0x73, 0x00, 0x93, 0x2A, 0x6F, 0xB5, 0xF8, 0x7A, 0x30, 0x49, 0x46, -0x20, 0x46, 0xB8, 0x47, 0x07, 0x46, 0x20, 0xBB, 0x95, 0xF8, 0x85, 0x30, 0x08, 0xF1, 0xFF, 0x38, 0x98, 0x45, 0xA6, 0xF1, -0x54, 0x06, 0x17, 0xDB, 0x96, 0xF8, 0x16, 0x31, 0x5F, 0xFA, 0x88, 0xF7, 0x01, 0x2B, 0x85, 0xF8, 0x7E, 0x70, 0x0F, 0xD0, -0xD6, 0xF8, 0x08, 0x41, 0x00, 0x2C, 0xEB, 0xD0, 0x63, 0x6A, 0x9B, 0x02, 0xDB, 0xD4, 0xE3, 0x6C, 0x1B, 0x6D, 0x00, 0x2B, -0xD7, 0xDA, 0x20, 0x46, 0x39, 0x46, 0xFF, 0xF7, 0x99, 0xFF, 0xEF, 0xE7, 0x00, 0x27, 0x38, 0x46, 0x02, 0xB0, 0xBD, 0xE8, -0xF0, 0x87, 0x0E, 0x4B, 0x64, 0x6C, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x07, 0xDB, 0xA3, 0x88, 0x38, 0x46, -0x43, 0xF4, 0x00, 0x73, 0xA3, 0x80, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x2C, 0xF5, 0xD1, 0x06, 0x49, 0x07, 0x48, -0x40, 0xF2, 0xDF, 0x42, 0x11, 0xF0, 0x88, 0xFF, 0xEE, 0xE7, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x90, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0xDF, 0xF8, 0x8C, 0x92, 0x99, 0xF8, 0x7E, 0x80, 0x83, 0xB0, 0x04, 0x46, 0x00, 0x27, 0x40, 0x46, 0x01, 0x97, 0xFB, 0xF7, -0x0D, 0xFE, 0x99, 0xF8, 0x7E, 0x00, 0xFF, 0xF7, 0x15, 0xFA, 0x00, 0x2C, 0x00, 0xF0, 0xA4, 0x80, 0x63, 0x6A, 0x9E, 0x02, -0x76, 0xD5, 0x03, 0xF4, 0x60, 0x10, 0xB0, 0xF5, 0x60, 0x1F, 0x65, 0x6C, 0x00, 0xF0, 0xE1, 0x80, 0xB0, 0xF5, 0x40, 0x1F, -0x00, 0xF0, 0xCE, 0x80, 0xAA, 0x88, 0x02, 0xF0, 0x03, 0x02, 0x03, 0x2A, 0x8E, 0x4A, 0x12, 0x68, 0x92, 0xF8, 0x01, 0xC0, -0x00, 0xF0, 0xFF, 0x80, 0x2A, 0x6B, 0x52, 0x69, 0x00, 0x21, 0xC2, 0xF3, 0xC1, 0x1E, 0xC5, 0xE9, 0x0E, 0x11, 0x69, 0x63, -0x0E, 0x46, 0x0A, 0x46, 0x14, 0xE0, 0xD1, 0xF8, 0x4C, 0x31, 0x9A, 0x45, 0x02, 0xF1, 0x01, 0x03, 0x22, 0xD9, 0xDA, 0xB2, -0x05, 0xEB, 0x82, 0x03, 0xB0, 0xF5, 0x60, 0x1F, 0x4E, 0x63, 0x56, 0x46, 0xC3, 0xF8, 0x3C, 0x41, 0x20, 0xD0, 0x24, 0x68, -0x34, 0xB3, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x10, 0xE1, 0x6C, 0xD1, 0xF8, 0x2C, 0xA0, 0xC3, 0xF3, 0x49, 0x2B, 0x0A, 0xF1, -0x03, 0x03, 0x23, 0xF0, 0x03, 0x03, 0x0B, 0xF1, 0x01, 0x0A, 0x03, 0xEB, 0x8A, 0x03, 0x9B, 0xB2, 0x96, 0x45, 0x05, 0xEB, -0x82, 0x01, 0x03, 0xEB, 0x06, 0x0A, 0xD6, 0xD8, 0x05, 0xEB, 0x82, 0x03, 0xB0, 0xF5, 0x60, 0x1F, 0x56, 0x46, 0xC3, 0xF8, -0x3C, 0x41, 0xDE, 0xD1, 0x6B, 0x6A, 0xB3, 0x42, 0x00, 0xF0, 0xCE, 0x80, 0x00, 0x23, 0xC5, 0xE9, 0x0D, 0x33, 0xEB, 0x63, -0x00, 0x2F, 0x49, 0xD0, 0x08, 0xEB, 0x48, 0x03, 0x09, 0xEB, 0x83, 0x09, 0x01, 0x9A, 0xC9, 0xF8, 0x24, 0x70, 0xBC, 0xF1, -0x00, 0x0F, 0x30, 0xD1, 0x93, 0x6B, 0x9B, 0x02, 0x00, 0xF1, 0x97, 0x80, 0x53, 0x68, 0x00, 0x2B, 0x4B, 0xD1, 0x61, 0x49, -0x54, 0x23, 0x03, 0xFB, 0x08, 0xF8, 0x01, 0xEB, 0x08, 0x03, 0xC3, 0xE9, 0x01, 0xCC, 0x41, 0xF8, 0x08, 0x20, 0x40, 0xE0, -0xA3, 0x6C, 0x3B, 0xB3, 0xE3, 0x8B, 0xE2, 0x6C, 0x13, 0xF4, 0x00, 0x5F, 0xE3, 0x6A, 0xDB, 0x6B, 0x02, 0xF1, 0x14, 0x07, -0x14, 0xBF, 0xC3, 0xF3, 0x00, 0x13, 0xC3, 0xF3, 0xC0, 0x03, 0x01, 0x97, 0x93, 0xB3, 0x52, 0x4B, 0x1B, 0x68, 0x93, 0xF8, -0x01, 0xC0, 0x3A, 0x46, 0x08, 0xEB, 0x48, 0x03, 0x09, 0xEB, 0x83, 0x09, 0xC9, 0xF8, 0x24, 0x70, 0xBC, 0xF1, 0x00, 0x0F, -0xCE, 0xD0, 0x53, 0x68, 0xFB, 0xB9, 0x54, 0x23, 0x03, 0xFB, 0x08, 0xF8, 0x49, 0x4B, 0x43, 0xF8, 0x08, 0x20, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x45, 0x4B, 0x1B, 0x68, 0x93, 0xF8, 0x01, 0xC0, 0x44, 0x4B, 0x54, 0x22, 0x08, 0xEB, 0x48, 0x01, -0x09, 0xEB, 0x81, 0x09, 0x02, 0xFB, 0x08, 0xF8, 0x00, 0x22, 0x43, 0xF8, 0x08, 0x20, 0xC9, 0xF8, 0x24, 0x20, 0x43, 0x44, -0xBC, 0xF1, 0x00, 0x0F, 0x01, 0xD1, 0xC3, 0xE9, 0x01, 0xCC, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x50, 0x6A, 0x03, 0x88, -0x1D, 0x04, 0x99, 0xB2, 0xC7, 0xD5, 0xC1, 0xF3, 0x0E, 0x01, 0x01, 0x80, 0x94, 0xF8, 0x33, 0x10, 0x94, 0xF8, 0x32, 0x30, -0x32, 0x48, 0x04, 0x39, 0x04, 0x3B, 0x84, 0xF8, 0x33, 0x10, 0x84, 0xF8, 0x32, 0x30, 0xD2, 0xE9, 0x0A, 0x31, 0x04, 0x39, -0x04, 0x3B, 0xC2, 0xE9, 0x0A, 0x31, 0x00, 0x68, 0x3A, 0x46, 0x90, 0xF8, 0x01, 0xC0, 0xB3, 0xE7, 0x2B, 0x4B, 0x01, 0xA9, -0xD3, 0xF8, 0x6C, 0x33, 0x20, 0x46, 0x98, 0x47, 0x26, 0x4A, 0x63, 0x6A, 0x12, 0x68, 0x07, 0x46, 0x92, 0xF8, 0x01, 0xC0, -0x03, 0xF4, 0x60, 0x10, 0x2C, 0xE7, 0x24, 0x4B, 0x21, 0x4E, 0xD3, 0xF8, 0x58, 0x33, 0x39, 0x46, 0x20, 0x46, 0x98, 0x47, -0x33, 0x68, 0x01, 0x90, 0x5B, 0x78, 0x07, 0x46, 0xD3, 0xB1, 0x08, 0xB1, 0x6B, 0x6D, 0x43, 0x60, 0xD5, 0xF8, 0x48, 0x01, -0x29, 0x46, 0x10, 0xF0, 0x13, 0xFA, 0x33, 0x68, 0x93, 0xF8, 0x01, 0xC0, 0x58, 0xE7, 0x7B, 0x68, 0x00, 0x2B, 0xB4, 0xD1, -0x15, 0x49, 0x54, 0x23, 0x03, 0xFB, 0x08, 0xF8, 0x01, 0xEB, 0x08, 0x03, 0x01, 0x20, 0xC3, 0xE9, 0x01, 0x70, 0x41, 0xF8, -0x08, 0x20, 0xA8, 0xE7, 0x00, 0x28, 0xE5, 0xD0, 0x2B, 0x69, 0x43, 0x60, 0xE2, 0xE7, 0x05, 0xF1, 0x0C, 0x07, 0xBC, 0xF1, -0x00, 0x0F, 0x03, 0xD0, 0x05, 0xF1, 0x50, 0x02, 0x01, 0x92, 0xF7, 0xE6, 0xD5, 0xF8, 0x38, 0x21, 0xD2, 0x6C, 0x14, 0x32, -0x01, 0x92, 0xF1, 0xE6, 0xD5, 0xF8, 0x38, 0x31, 0xA3, 0x42, 0x7F, 0xF4, 0x2D, 0xAF, 0x05, 0xEB, 0x82, 0x02, 0x56, 0x63, -0x2C, 0xE7, 0x00, 0xBF, 0x34, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, -0x70, 0xB5, 0x1E, 0x48, 0x82, 0xB0, 0x90, 0xF8, 0x88, 0x30, 0x00, 0x22, 0x01, 0x92, 0x93, 0xB1, 0x90, 0xF8, 0x7F, 0x30, -0x04, 0x2B, 0x2A, 0xD0, 0x19, 0x4C, 0x01, 0xA8, 0xD4, 0xF8, 0xE8, 0x33, 0x98, 0x47, 0x08, 0xB3, 0xD4, 0xF8, 0xF8, 0x33, -0x98, 0x47, 0xD4, 0xF8, 0xD4, 0x33, 0x01, 0x98, 0x98, 0x47, 0x02, 0xB0, 0x70, 0xBD, 0x13, 0x4A, 0x13, 0x4D, 0xD2, 0xF8, -0x38, 0x14, 0x13, 0x4C, 0x80, 0xF8, 0x88, 0x30, 0xC2, 0xF8, 0x00, 0x34, 0x01, 0xF4, 0x7F, 0x41, 0x02, 0xF5, 0x88, 0x66, -0x02, 0xF5, 0x7F, 0x70, 0x4F, 0xF4, 0x00, 0x53, 0xC2, 0xF8, 0x38, 0x14, 0xC2, 0xF8, 0x20, 0x64, 0x28, 0x60, 0x23, 0x60, -0x02, 0xB0, 0x70, 0xBD, 0xFF, 0xF7, 0x28, 0xFC, 0xE1, 0xE7, 0x04, 0x4B, 0x68, 0x30, 0xD3, 0xF8, 0xF4, 0x33, 0x98, 0x47, -0x02, 0xB0, 0x70, 0xBD, 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x60, 0x5D, 0x18, 0x00, 0xAC, 0x81, 0x32, 0x40, -0x80, 0x81, 0x32, 0x40, 0xF8, 0xB5, 0x2C, 0x4C, 0x2C, 0x4D, 0x40, 0xF2, 0x74, 0x42, 0x20, 0x46, 0x00, 0x21, 0x26, 0x46, -0xED, 0xF7, 0xF4, 0xF8, 0x4F, 0xF4, 0xE4, 0x73, 0x28, 0x4A, 0x26, 0xF8, 0x44, 0x3F, 0x4F, 0xF6, 0x30, 0x70, 0x48, 0xF2, -0xC8, 0x13, 0x04, 0xF5, 0x77, 0x77, 0x4F, 0xF0, 0x22, 0x0C, 0x04, 0xF2, 0xFD, 0x31, 0xC4, 0xF8, 0x40, 0x24, 0xA4, 0xF8, -0xDC, 0x33, 0xA4, 0xF8, 0xF4, 0x03, 0x04, 0xF5, 0x88, 0x63, 0x00, 0x20, 0x4F, 0xF4, 0x00, 0x12, 0xDF, 0xF8, 0x74, 0xE0, -0xC4, 0xF8, 0xB0, 0xC3, 0xC4, 0xE9, 0xEA, 0x71, 0xC4, 0xF8, 0xBC, 0x33, 0xC4, 0xF8, 0x20, 0x34, 0x63, 0x62, 0xA2, 0x63, -0xC4, 0xF8, 0x98, 0x53, 0xC4, 0xF8, 0xFC, 0x53, 0x25, 0x60, 0xC4, 0xF8, 0xA4, 0x03, 0xC4, 0xF8, 0xCC, 0x03, 0xC4, 0xF8, -0x30, 0x04, 0x04, 0xF1, 0x5B, 0x0C, 0x04, 0xF1, 0xB4, 0x03, 0x1E, 0x27, 0x04, 0xF5, 0x7C, 0x74, 0xA3, 0xF1, 0x14, 0x01, -0x5A, 0x1C, 0x43, 0xF8, 0x58, 0x5C, 0x43, 0xF8, 0x40, 0x7C, 0x43, 0xF8, 0x24, 0x0C, 0x43, 0xF8, 0x14, 0xEC, 0x43, 0xF8, -0x4C, 0x1C, 0x43, 0xF8, 0x08, 0x2C, 0x43, 0xE9, 0x12, 0x6C, 0x43, 0xF8, 0x0C, 0x3C, 0x5C, 0x33, 0x9C, 0x42, 0xE9, 0xD1, -0xF8, 0xBD, 0x00, 0xBF, 0x60, 0x5D, 0x18, 0x00, 0xBE, 0xBA, 0xFE, 0xCA, 0x1E, 0xAB, 0xDC, 0xBA, 0xDE, 0xFA, 0xFE, 0xCA, -0x2D, 0xE9, 0xF0, 0x41, 0x13, 0x4A, 0x14, 0x4B, 0x92, 0xF8, 0x7E, 0x40, 0xD3, 0xF8, 0xAC, 0x33, 0x12, 0x4F, 0x00, 0x22, -0x0E, 0x46, 0x21, 0x46, 0x05, 0x46, 0x4F, 0xF0, 0x54, 0x08, 0x98, 0x47, 0x0C, 0x20, 0x18, 0xFB, 0x04, 0x00, 0x38, 0x44, -0x10, 0xF0, 0x5E, 0xF9, 0x22, 0x46, 0x31, 0x46, 0x28, 0x46, 0xFC, 0xF7, 0x77, 0xF9, 0x6B, 0x6A, 0x03, 0xF4, 0x60, 0x13, -0xB3, 0xF5, 0x60, 0x1F, 0x05, 0xD1, 0x08, 0xFB, 0x04, 0x74, 0x6B, 0x6C, 0x63, 0x62, 0x02, 0x23, 0xA3, 0x76, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x90, 0xF8, 0x62, 0x40, 0x87, 0xB0, 0x84, 0xB9, 0x90, 0xF8, 0x64, 0x30, 0x6B, 0xB1, 0x90, 0xF8, 0x6C, 0x30, 0x58, 0x4A, -0x01, 0x93, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x03, 0x25, 0x95, 0xF8, 0x25, 0x30, 0x13, 0xB1, 0x6B, 0x68, 0x9B, 0x06, -0x02, 0xD4, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x10, 0x22, 0x21, 0x46, 0x02, 0xA8, 0xED, 0xF7, 0x4D, 0xF8, 0x95, 0xF8, -0x23, 0x30, 0x4E, 0x4A, 0x4E, 0x49, 0x00, 0x94, 0x42, 0xF2, 0x34, 0x06, 0x03, 0xEB, 0xC3, 0x03, 0x06, 0xEB, 0x83, 0x03, -0x9E, 0x18, 0x01, 0xF1, 0x08, 0x0B, 0xA6, 0x46, 0x22, 0x46, 0xA2, 0x46, 0x20, 0x46, 0x56, 0xF8, 0x04, 0x3F, 0xB3, 0xF5, -0xFE, 0x0F, 0x1F, 0x46, 0x04, 0xF1, 0x01, 0x08, 0x28, 0xBF, 0x4F, 0xF4, 0xFE, 0x07, 0xF3, 0xB1, 0x42, 0x4C, 0x0B, 0x78, -0xE3, 0x5C, 0x06, 0xAC, 0x04, 0xEB, 0x83, 0x0C, 0x22, 0xFA, 0x03, 0xF9, 0x5C, 0xF8, 0x10, 0x5C, 0x3D, 0x44, 0x55, 0x45, -0x84, 0xBF, 0xAA, 0x46, 0x00, 0x93, 0x19, 0xF0, 0x01, 0x0F, 0x5F, 0xFA, 0x88, 0xF4, 0x38, 0x44, 0x4C, 0xF8, 0x10, 0x5C, -0x07, 0xD1, 0x01, 0x25, 0x05, 0xFA, 0x03, 0xF3, 0x1A, 0x43, 0xAE, 0x44, 0xD2, 0xB2, 0x5F, 0xFA, 0x8E, 0xFE, 0x01, 0x31, -0x8B, 0x45, 0xD2, 0xD1, 0x08, 0x2C, 0x41, 0xD0, 0xA4, 0xEB, 0x0E, 0x04, 0xE4, 0xB2, 0xA4, 0x02, 0x92, 0x01, 0xB0, 0xF5, -0x7D, 0x6F, 0x1E, 0xD8, 0x0F, 0x30, 0x0A, 0xF1, 0x0F, 0x0A, 0xC0, 0xF3, 0x07, 0x13, 0xCA, 0xF3, 0x07, 0x1A, 0x00, 0x21, -0x00, 0x98, 0x1B, 0x06, 0x43, 0xEA, 0x00, 0x33, 0x13, 0x43, 0x23, 0x43, 0x0B, 0x43, 0x01, 0x99, 0x08, 0x46, 0x21, 0x49, -0x4F, 0xF4, 0x1E, 0x72, 0x43, 0xEA, 0x0A, 0x43, 0x02, 0xFB, 0x00, 0x12, 0x43, 0xF0, 0x0F, 0x03, 0xC2, 0xF8, 0x04, 0x32, -0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB0, 0xF5, 0x7D, 0x4F, 0x0D, 0xD9, 0xB0, 0xF5, 0xFD, 0x2F, 0x18, 0xD8, 0x00, 0xF2, -0xFF, 0x70, 0x0A, 0xF2, 0xFF, 0x7A, 0xC0, 0xF3, 0xC7, 0x23, 0xCA, 0xF3, 0xC7, 0x2A, 0x4F, 0xF4, 0x00, 0x41, 0xD7, 0xE7, -0xFF, 0x30, 0x0A, 0xF1, 0xFF, 0x0A, 0xC0, 0xF3, 0x07, 0x23, 0xCA, 0xF3, 0x07, 0x2A, 0x4F, 0xF4, 0x80, 0x41, 0xCD, 0xE7, -0x4F, 0xF4, 0x40, 0x64, 0x00, 0x22, 0xBE, 0xE7, 0x47, 0xF6, 0xFF, 0x73, 0xBA, 0xF5, 0xFE, 0x0F, 0x94, 0xBF, 0x9A, 0x44, -0x03, 0xF5, 0xFE, 0x0A, 0xB0, 0xF5, 0xFE, 0x0F, 0x94, 0xBF, 0x18, 0x18, 0x03, 0xF5, 0xFE, 0x00, 0xC0, 0xF3, 0xC7, 0x33, -0xCA, 0xF3, 0xC7, 0x3A, 0x4F, 0xF4, 0x40, 0x41, 0xB4, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, -0xC0, 0xB2, 0x15, 0x00, 0xA0, 0xB2, 0x15, 0x00, 0x49, 0x4B, 0x4A, 0x4A, 0x4F, 0xF4, 0x80, 0x11, 0x2D, 0xE9, 0xF0, 0x47, -0x19, 0x60, 0x13, 0x68, 0x13, 0xF4, 0x40, 0x1F, 0xFB, 0xD1, 0xDF, 0xF8, 0x34, 0x81, 0x45, 0x4A, 0x98, 0xF8, 0x8C, 0x30, -0x4F, 0xF4, 0x80, 0x11, 0x11, 0x60, 0x00, 0x2B, 0x6E, 0xD0, 0x98, 0xF8, 0x7E, 0x60, 0xDF, 0xF8, 0x20, 0x91, 0x54, 0x23, -0x03, 0xFB, 0x06, 0x93, 0x9A, 0x7E, 0x00, 0x2A, 0x38, 0xD0, 0x54, 0x20, 0x00, 0xFB, 0x06, 0x94, 0x20, 0x46, 0x62, 0x6A, -0x93, 0x88, 0x43, 0xF0, 0x10, 0x03, 0x93, 0x80, 0x1C, 0x30, 0x10, 0xF0, 0x55, 0xF8, 0x37, 0x4B, 0x53, 0xF8, 0x26, 0x00, -0x0F, 0xF0, 0x6A, 0xFF, 0x00, 0x23, 0xA3, 0x76, 0x63, 0x62, 0x06, 0xEB, 0x46, 0x04, 0x08, 0xEB, 0x84, 0x04, 0x94, 0xF8, -0x2E, 0x50, 0x2D, 0xB9, 0x60, 0x6A, 0x18, 0xB1, 0x31, 0x46, 0xFB, 0xF7, 0x93, 0xF8, 0x65, 0x62, 0x2D, 0x4A, 0x2E, 0x49, -0x13, 0x68, 0x23, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x54, 0x23, 0x03, 0xFB, 0x06, 0x99, 0x40, 0x22, 0x0A, 0x60, 0x99, 0xF8, -0x50, 0x30, 0x00, 0x22, 0x01, 0x3B, 0x30, 0x46, 0x89, 0xF8, 0x50, 0x30, 0x88, 0xF8, 0x8C, 0x20, 0xBD, 0xE8, 0xF0, 0x47, -0xFE, 0xF7, 0x66, 0xBE, 0xDC, 0x68, 0x62, 0x6A, 0x92, 0x02, 0x2D, 0xD4, 0x54, 0x25, 0xDF, 0xF8, 0x98, 0xA0, 0x20, 0x4F, -0x05, 0xFB, 0x06, 0x95, 0x11, 0xE0, 0xE3, 0x6C, 0x62, 0x6A, 0x19, 0x6D, 0x41, 0xF0, 0x00, 0x41, 0x41, 0xF4, 0x80, 0x01, -0x19, 0x65, 0x93, 0x02, 0x20, 0x46, 0x17, 0xD5, 0xD7, 0xF8, 0xD8, 0x33, 0x98, 0x47, 0xAB, 0x7E, 0xEC, 0x68, 0x00, 0x2B, -0xA9, 0xD1, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE7, 0xDA, 0x00, 0x2C, 0xE5, 0xD1, 0x12, 0x49, -0x12, 0x48, 0x40, 0xF2, 0xB3, 0x72, 0x11, 0xF0, 0x0D, 0xFC, 0xDE, 0xE7, 0xBD, 0xE8, 0xF0, 0x87, 0xD7, 0xF8, 0xE4, 0x33, -0x98, 0x47, 0xA8, 0xE7, 0x5A, 0x69, 0x61, 0x6C, 0x52, 0x6C, 0x8A, 0x42, 0xCC, 0xD1, 0xD2, 0xF8, 0x38, 0x21, 0x12, 0x68, -0x5A, 0x61, 0xC7, 0xE7, 0x80, 0x81, 0x32, 0x40, 0x88, 0x81, 0x32, 0x40, 0x84, 0x81, 0x32, 0x40, 0xC4, 0x90, 0x15, 0x00, -0x8C, 0x80, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, -0x94, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x69, 0x4F, 0xDF, 0xF8, -0xCC, 0x81, 0x97, 0xF8, 0x7E, 0x60, 0x54, 0x25, 0x05, 0xFB, 0x06, 0x85, 0xAB, 0x7E, 0x53, 0xBB, 0xDF, 0xF8, 0xA0, 0xA1, -0xDF, 0xF8, 0xAC, 0x91, 0x15, 0xE0, 0xD4, 0xF8, 0x4C, 0xC0, 0xDF, 0xF8, 0xA0, 0xE1, 0xDC, 0xF8, 0x50, 0x30, 0x43, 0xF4, -0x80, 0x02, 0x00, 0x2B, 0x20, 0x46, 0x11, 0x46, 0x26, 0xDA, 0x63, 0x6A, 0xCC, 0xF8, 0x50, 0x20, 0x9C, 0x02, 0x23, 0xD5, -0xDE, 0xF8, 0xD8, 0x33, 0x98, 0x47, 0xAB, 0x7E, 0x7B, 0xB9, 0xDA, 0xF8, 0x00, 0x30, 0xEC, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xE2, 0xDA, 0x00, 0x2C, 0xE0, 0xD1, 0x53, 0x48, 0x4F, 0xF4, 0x02, 0x62, 0x49, 0x46, 0x11, 0xF0, 0xAE, 0xFB, -0xD9, 0xE7, 0x54, 0x22, 0x02, 0xFB, 0x06, 0x82, 0x02, 0x2B, 0x54, 0x6A, 0x0C, 0xBF, 0x04, 0xF1, 0x0C, 0x03, 0x04, 0xF1, -0x50, 0x03, 0xDB, 0x6B, 0x00, 0x2B, 0x29, 0xDB, 0xBD, 0xE8, 0xF0, 0x87, 0xDE, 0xF8, 0xE4, 0x33, 0x98, 0x47, 0x06, 0xEB, -0x46, 0x04, 0x07, 0xEB, 0x84, 0x04, 0x94, 0xF8, 0x2E, 0x50, 0x2D, 0xB9, 0x60, 0x6A, 0x18, 0xB1, 0x31, 0x46, 0xFA, 0xF7, -0xD1, 0xFF, 0x65, 0x62, 0x41, 0x4A, 0x42, 0x49, 0x13, 0x68, 0x23, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x54, 0x23, 0x03, 0xFB, -0x06, 0x88, 0x40, 0x22, 0x0A, 0x60, 0x98, 0xF8, 0x50, 0x30, 0x00, 0x22, 0x01, 0x3B, 0x30, 0x46, 0x88, 0xF8, 0x50, 0x30, -0x87, 0xF8, 0x8C, 0x20, 0xBD, 0xE8, 0xF0, 0x47, 0xFE, 0xF7, 0xA4, 0xBD, 0x18, 0x02, 0x35, 0xD5, 0xA3, 0x88, 0x99, 0x06, -0x13, 0xD4, 0xDF, 0xF8, 0xE0, 0x90, 0xD9, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0x04, 0x25, 0xA3, 0x88, 0x9A, 0x06, 0x0A, 0xD4, -0xD9, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0x01, 0x3D, 0xF7, 0xD1, 0x2E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x42, 0xDB, 0x97, 0xF8, 0x87, 0x30, 0x00, 0x2B, 0x37, 0xD0, 0x2A, 0x49, 0x97, 0xF8, 0x64, 0x30, 0x0A, 0x68, 0x1B, 0x06, -0x22, 0xF0, 0xE0, 0x62, 0x03, 0xF0, 0xE0, 0x63, 0x13, 0x43, 0x0B, 0x60, 0xA3, 0x88, 0x25, 0x4A, 0x43, 0xF0, 0x10, 0x03, -0x52, 0xF8, 0x26, 0x00, 0xA3, 0x80, 0x0F, 0xF0, 0x4F, 0xFE, 0x54, 0x23, 0x03, 0xFB, 0x06, 0x83, 0x00, 0x22, 0x9A, 0x76, -0x5A, 0x62, 0xA2, 0xE7, 0x54, 0x20, 0x00, 0xFB, 0x06, 0x80, 0x1C, 0x30, 0x0F, 0xF0, 0x28, 0xFF, 0x97, 0xF8, 0x87, 0x30, -0x00, 0x2B, 0xE5, 0xD0, 0x17, 0x4A, 0x97, 0xF8, 0x65, 0x00, 0x13, 0x68, 0x11, 0x68, 0xC3, 0xF3, 0x02, 0x63, 0x01, 0x33, -0x83, 0x42, 0x28, 0xBF, 0x03, 0x46, 0x1B, 0x06, 0x03, 0xF0, 0xE0, 0x63, 0x21, 0xF0, 0xE0, 0x61, 0x0B, 0x43, 0x13, 0x60, -0xD2, 0xE7, 0x10, 0x4B, 0x97, 0xF8, 0x7E, 0x00, 0xD3, 0xF8, 0xC0, 0x33, 0x98, 0x47, 0xCB, 0xE7, 0xA3, 0x88, 0x9B, 0x06, -0xB9, 0xD4, 0xBD, 0xE8, 0xF0, 0x47, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF6, 0x6A, 0x02, 0x11, 0xF0, 0xDD, 0xBA, 0x00, 0xBF, -0x94, 0x64, 0x17, 0x00, 0x3C, 0x91, 0x15, 0x00, 0x8C, 0x80, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, -0x54, 0x83, 0x32, 0x40, 0xC4, 0x90, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD4, 0x8E, 0x15, 0x00, -0x20, 0x62, 0x17, 0x00, 0x10, 0xB5, 0x0D, 0x4C, 0x90, 0x22, 0x00, 0x21, 0x20, 0x46, 0xEC, 0xF7, 0x09, 0xFE, 0xFF, 0xF7, -0x09, 0xFD, 0x40, 0xF2, 0xD3, 0x13, 0xE3, 0x66, 0xED, 0xF7, 0xA4, 0xFE, 0x07, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x70, 0x43, -0x18, 0xB1, 0x43, 0xF0, 0x30, 0x43, 0x13, 0x60, 0x10, 0xBD, 0x43, 0xF0, 0x10, 0x43, 0x13, 0x60, 0x10, 0xBD, 0x00, 0xBF, -0x94, 0x64, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x43, 0x2A, 0x4C, 0x65, 0x68, 0x95, 0xB0, 0x00, 0x2D, -0x44, 0xD0, 0x29, 0x4E, 0xA7, 0x68, 0xD6, 0xF8, 0xD8, 0x31, 0x20, 0x46, 0x98, 0x47, 0xD4, 0xF8, 0x10, 0x80, 0xB8, 0xF1, -0x00, 0x0F, 0x26, 0xD0, 0x01, 0x25, 0x24, 0x49, 0x68, 0x46, 0x50, 0x22, 0x23, 0xF0, 0x66, 0xFD, 0xA3, 0x69, 0x94, 0xF8, -0x62, 0x90, 0x23, 0xB1, 0x1E, 0x4E, 0x1F, 0x48, 0xD6, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0xFF, 0xF7, 0xBD, 0xFF, 0xC4, 0xF8, -0x10, 0x80, 0x84, 0xF8, 0x62, 0x90, 0x18, 0x4C, 0x6B, 0x46, 0x22, 0x46, 0x0C, 0xAE, 0x58, 0x69, 0x19, 0x7E, 0x90, 0x62, -0x0C, 0x33, 0xB3, 0x42, 0x82, 0xF8, 0x2C, 0x10, 0x02, 0xF1, 0x0C, 0x02, 0xF5, 0xD1, 0xFD, 0xB9, 0x15, 0xB0, 0xBD, 0xE8, -0xF0, 0x83, 0xFF, 0xF7, 0xA5, 0xFF, 0xC4, 0xF8, 0x10, 0x80, 0x10, 0x4B, 0x10, 0x4A, 0x19, 0x69, 0x0B, 0x48, 0xD6, 0xF8, -0xE0, 0x31, 0xA7, 0x60, 0x01, 0xF5, 0x9C, 0x51, 0x08, 0x31, 0x62, 0x60, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, -0xD4, 0xF8, 0x10, 0x80, 0xB8, 0xF1, 0x00, 0x0F, 0xC1, 0xD1, 0xFF, 0xF7, 0x8D, 0xFF, 0xC4, 0xF8, 0x10, 0x80, 0xDF, 0xE7, -0x01, 0x4E, 0xE4, 0xE7, 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xA8, 0x64, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, -0x95, 0x24, 0x13, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x42, 0x6D, 0xC3, 0x69, 0x91, 0xF8, 0x09, 0xC0, 0x9D, 0x68, 0x03, 0x8E, -0x88, 0x46, 0x91, 0x05, 0x02, 0xD5, 0x12, 0xF4, 0x80, 0x60, 0x3B, 0xD0, 0x12, 0x3B, 0x01, 0x2B, 0x05, 0xF1, 0x12, 0x05, -0x3A, 0xDD, 0x28, 0x4A, 0xDF, 0xF8, 0xA0, 0x90, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x0C, 0x2C, 0x40, 0xF2, 0xFD, 0x7E, -0x15, 0xE0, 0x03, 0x2B, 0x2A, 0xDD, 0x6A, 0x88, 0x12, 0xF0, 0x08, 0x06, 0xC2, 0xF3, 0x42, 0x01, 0x24, 0xD1, 0x19, 0xF8, -0x01, 0x20, 0x04, 0x32, 0x9A, 0x42, 0x2B, 0xDC, 0xBC, 0xF8, 0x20, 0x10, 0xB9, 0x42, 0xA3, 0xEB, 0x02, 0x03, 0x11, 0xD0, -0x01, 0x2B, 0x15, 0x44, 0x1A, 0xDD, 0x2C, 0x88, 0xC4, 0xF3, 0x0A, 0x07, 0x77, 0x45, 0x13, 0xD0, 0x14, 0xF4, 0x00, 0x60, -0xE1, 0xD0, 0xBC, 0xF8, 0x20, 0x10, 0x02, 0x22, 0xB9, 0x42, 0xA3, 0xEB, 0x02, 0x03, 0xED, 0xD1, 0x14, 0xF4, 0x00, 0x60, -0x0B, 0xD1, 0x98, 0xF8, 0x0A, 0x30, 0xB3, 0xEB, 0x14, 0x3F, 0x0D, 0xD0, 0xBD, 0xE8, 0xF8, 0x83, 0x0C, 0x22, 0xDB, 0xE7, -0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0x23, 0xC8, 0xF8, 0xDC, 0x30, 0x01, 0x20, 0xF3, 0xE7, 0x30, 0x46, 0xF1, 0xE7, -0x08, 0xF1, 0xE0, 0x04, 0x02, 0x3A, 0xA9, 0x1C, 0x20, 0x46, 0x23, 0xF0, 0xBD, 0xFC, 0xC8, 0xF8, 0xDC, 0x40, 0x01, 0x20, -0xE6, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x00, 0x96, 0x15, 0x00, 0x85, 0x4B, 0x86, 0x4A, 0x19, 0x68, 0x43, 0x6D, -0x2D, 0xE9, 0xF0, 0x4F, 0x00, 0x24, 0xC5, 0x69, 0x82, 0xF8, 0x88, 0x40, 0xB1, 0xF9, 0x00, 0x10, 0xA1, 0x42, 0x83, 0xB0, -0xC0, 0xF2, 0xC6, 0x80, 0x9E, 0x01, 0x40, 0xF1, 0xAD, 0x80, 0x00, 0x29, 0xC3, 0xF3, 0xCF, 0x30, 0xC3, 0xF3, 0xC9, 0x33, -0xC0, 0xF2, 0xB3, 0x80, 0x7A, 0x49, 0x10, 0x3B, 0xDB, 0xB2, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x03, 0x14, 0x94, 0xF8, -0x25, 0x00, 0x00, 0x28, 0x00, 0xF0, 0x9A, 0x80, 0x94, 0xF8, 0x22, 0x50, 0x54, 0xF8, 0x26, 0x0F, 0x50, 0x67, 0x73, 0x48, -0x73, 0x4E, 0xA4, 0x88, 0x84, 0x80, 0x4F, 0xF4, 0xA4, 0x67, 0x10, 0x69, 0x07, 0xFB, 0x05, 0x65, 0xA8, 0x42, 0x40, 0xF0, -0x93, 0x80, 0x6F, 0x48, 0x00, 0x68, 0x00, 0xF0, 0x3F, 0x00, 0x09, 0x28, 0x40, 0xF2, 0x8C, 0x80, 0x6C, 0x4C, 0x6D, 0x48, -0x24, 0x68, 0x05, 0x68, 0xD2, 0xF8, 0x68, 0x80, 0xC4, 0xF3, 0x0B, 0x10, 0x04, 0xF0, 0x0F, 0x09, 0xC4, 0xF3, 0x01, 0x4E, -0x24, 0x03, 0x00, 0x90, 0xA2, 0xF8, 0x7C, 0x00, 0x82, 0xF8, 0x7F, 0x90, 0x82, 0xF8, 0x83, 0xE0, 0xC5, 0xF3, 0x03, 0x10, -0x05, 0xF0, 0x07, 0x06, 0x40, 0xF1, 0x8B, 0x80, 0x4F, 0xF0, 0x02, 0x0B, 0x4F, 0xF4, 0x80, 0x64, 0x5F, 0x46, 0x01, 0x94, -0xC5, 0xF3, 0x00, 0x34, 0xC5, 0xF3, 0x42, 0x2C, 0x82, 0xF8, 0x80, 0x70, 0xF7, 0xB2, 0x82, 0xF8, 0x81, 0x00, 0x82, 0xF8, -0x87, 0x40, 0x82, 0xF8, 0x82, 0xC0, 0x82, 0xF8, 0x84, 0x70, 0xB9, 0xF1, 0x00, 0x0F, 0x79, 0xD0, 0x92, 0xF8, 0x86, 0x50, -0xDF, 0xF8, 0x64, 0x91, 0xD9, 0xF8, 0x00, 0x40, 0x00, 0x2C, 0xFB, 0xDA, 0xD9, 0xF8, 0x00, 0x90, 0x50, 0x4C, 0x02, 0x2E, -0x09, 0xEA, 0x04, 0x04, 0x76, 0xD8, 0x4F, 0x4F, 0x00, 0xEB, 0x40, 0x09, 0x57, 0xF8, 0x26, 0x70, 0xD9, 0x44, 0x37, 0xF8, -0x19, 0x90, 0xD8, 0xF8, 0x0C, 0x70, 0xDF, 0xF8, 0x3C, 0xA1, 0xBC, 0x42, 0x28, 0xBF, 0x3C, 0x46, 0x14, 0x67, 0xDA, 0xF8, -0x00, 0xB0, 0x01, 0x9F, 0x98, 0xF8, 0x1C, 0x80, 0x4F, 0xF4, 0x1E, 0x7A, 0x0A, 0xFB, 0x03, 0x13, 0x07, 0x43, 0x01, 0x21, -0x47, 0xEA, 0xCE, 0x1E, 0x01, 0xFA, 0x05, 0xF5, 0x4F, 0xEA, 0x1B, 0x67, 0xD3, 0xF8, 0x4C, 0x11, 0x93, 0x66, 0x00, 0x9B, -0x27, 0x2C, 0x4E, 0xEA, 0x0C, 0x1C, 0x4F, 0xEA, 0x87, 0x17, 0x18, 0xFB, 0x05, 0xF8, 0x4C, 0xF4, 0x40, 0x5C, 0x46, 0xEA, -0xC3, 0x06, 0x94, 0xBF, 0x00, 0x24, 0x01, 0x24, 0x47, 0xF0, 0x13, 0x07, 0x18, 0xFB, 0x09, 0xF9, 0x82, 0xF8, 0x88, 0x40, -0xD7, 0x66, 0xA1, 0xF8, 0x82, 0xC0, 0xA1, 0xF8, 0x84, 0x60, 0xA2, 0xF8, 0x7A, 0x90, 0x09, 0xE0, 0xAB, 0x68, 0x59, 0x89, -0xA2, 0xF8, 0x74, 0x10, 0x99, 0x89, 0xA2, 0xF8, 0x76, 0x10, 0xDB, 0x89, 0xA2, 0xF8, 0x78, 0x30, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x10, 0xF4, 0x7C, 0x7F, 0x7F, 0xF4, 0x49, 0xAF, 0x27, 0x49, 0x27, 0x48, 0x40, 0xF6, 0x53, 0x12, 0x07, 0xE0, -0x00, 0x8E, 0x1C, 0x28, 0x3F, 0xF6, 0x36, 0xAF, 0x22, 0x49, 0x24, 0x48, 0x40, 0xF6, 0x46, 0x12, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x4F, 0x11, 0xF0, 0xF9, 0xB8, 0x4F, 0xF0, 0x01, 0x0B, 0x4F, 0xF4, 0x00, 0x74, 0x5F, 0x46, 0x01, 0x94, 0x73, 0xE7, -0xAC, 0x0F, 0xDF, 0xF8, 0x7C, 0x90, 0xC5, 0xF3, 0x01, 0x65, 0x19, 0xF8, 0x04, 0x40, 0x82, 0xF8, 0x85, 0x40, 0x82, 0xF8, -0x86, 0x50, 0x7B, 0xE7, 0x03, 0x3F, 0x00, 0xEB, 0x40, 0x09, 0xC7, 0xF3, 0x46, 0x0A, 0x0B, 0xEB, 0x49, 0x09, 0x4F, 0xF0, -0x03, 0x0B, 0x1B, 0xFB, 0x0A, 0x99, 0xDF, 0xF8, 0x54, 0xA0, 0x3A, 0xF8, 0x19, 0x90, 0x07, 0xF0, 0x01, 0x07, 0x09, 0xFA, -0x07, 0xF9, 0x1F, 0xFA, 0x89, 0xF9, 0x7A, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x08, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, 0x58, 0x83, 0x32, 0x40, 0x5C, 0x83, 0x32, 0x40, -0xFC, 0xFF, 0x0F, 0x00, 0x04, 0x96, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x50, 0x90, 0x15, 0x00, 0xB0, 0x93, 0x15, 0x00, -0x60, 0x83, 0x32, 0x40, 0x64, 0x83, 0x32, 0x40, 0xA8, 0xB2, 0x15, 0x00, 0x70, 0x95, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x4C, -0xD4, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0xD4, 0xF8, 0xEC, 0x33, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, -0x10, 0xB5, 0x03, 0xF0, 0x85, 0xFB, 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x04, 0x03, 0xD4, 0x07, 0x4B, 0x00, 0x24, 0x1C, 0x61, -0x10, 0xBD, 0x04, 0x46, 0xED, 0xF7, 0x62, 0xFC, 0x00, 0x28, 0xF6, 0xD0, 0x02, 0x4B, 0x1C, 0x61, 0x10, 0xBD, 0x00, 0xBF, -0x04, 0x00, 0x32, 0x40, 0x94, 0x64, 0x17, 0x00, 0x18, 0x4B, 0x1B, 0x69, 0x63, 0xB3, 0x93, 0xF8, 0x64, 0x20, 0x4A, 0xB3, -0x16, 0x4A, 0x93, 0xF8, 0x6C, 0x30, 0x10, 0x68, 0x15, 0x49, 0x40, 0xF0, 0x10, 0x00, 0x30, 0xB4, 0x10, 0x60, 0x10, 0x68, -0x13, 0x4D, 0x14, 0x4C, 0x40, 0xF4, 0x00, 0x60, 0x10, 0x60, 0x10, 0x68, 0x40, 0xF4, 0x80, 0x50, 0x10, 0x60, 0x2A, 0x68, -0x10, 0x48, 0xC4, 0xF8, 0x50, 0x04, 0x42, 0xF4, 0x00, 0x72, 0x2A, 0x60, 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x32, 0x0A, 0x60, -0x0A, 0x68, 0x10, 0x33, 0xDB, 0xB2, 0x43, 0xEA, 0x83, 0x23, 0x22, 0xF4, 0x00, 0x32, 0xC4, 0xF8, 0x4C, 0x34, 0x30, 0xBC, -0x0A, 0x60, 0x70, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x80, 0x80, 0x32, 0x40, 0x54, 0x83, 0x32, 0x40, -0x24, 0x03, 0x32, 0x40, 0x60, 0x5D, 0x18, 0x00, 0x04, 0x07, 0xFF, 0xFF, 0x08, 0xB5, 0x0F, 0x4B, 0x1B, 0x69, 0x1B, 0xB1, -0x0E, 0x4B, 0xD3, 0xF8, 0xC4, 0x33, 0x98, 0x47, 0x0D, 0x48, 0x0E, 0x4B, 0x02, 0x68, 0x0E, 0x49, 0x22, 0xF4, 0x00, 0x72, -0x02, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x10, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0x00, 0x62, 0x1A, 0x60, 0x1A, 0x68, -0x22, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0x0B, 0x68, 0x23, 0xF4, 0x80, 0x33, 0x0B, 0x60, 0x08, 0xBD, 0x94, 0x64, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x24, 0x03, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, 0x54, 0x83, 0x32, 0x40, 0x43, 0x6C, 0x13, 0xB1, -0x9B, 0x88, 0x9A, 0x05, 0x0C, 0xD4, 0xC3, 0x6A, 0xDB, 0x6B, 0x9B, 0x06, 0x43, 0xBF, 0x91, 0xF8, 0x2D, 0x31, 0x48, 0xF2, -0x07, 0x00, 0x40, 0xEA, 0x43, 0x20, 0xD1, 0xF8, 0x04, 0x02, 0x70, 0x47, 0x01, 0x4B, 0xD8, 0x6E, 0x70, 0x47, 0x00, 0xBF, -0x94, 0x64, 0x17, 0x00, 0x4B, 0x08, 0x03, 0x22, 0x02, 0xFB, 0x03, 0x00, 0x03, 0x4B, 0x33, 0xF8, 0x10, 0x00, 0x01, 0xF0, -0x01, 0x01, 0x88, 0x40, 0x70, 0x47, 0x00, 0xBF, 0xE0, 0x94, 0x15, 0x00, 0x4B, 0x08, 0x03, 0x22, 0x02, 0xFB, 0x03, 0x00, -0x03, 0x4B, 0x33, 0xF8, 0x10, 0x00, 0x01, 0xF0, 0x01, 0x01, 0x88, 0x40, 0x80, 0xB2, 0x70, 0x47, 0x70, 0x95, 0x15, 0x00, -0x2D, 0xE9, 0xF8, 0x43, 0x2B, 0x4F, 0x84, 0x6A, 0x3D, 0x68, 0x90, 0xF8, 0x1D, 0x80, 0xB5, 0xF9, 0x00, 0xC0, 0xBC, 0xF1, -0x00, 0x0F, 0x16, 0x46, 0x99, 0x46, 0xC4, 0xF3, 0x41, 0x25, 0x12, 0xDB, 0xC4, 0xF3, 0x02, 0x12, 0x01, 0x32, 0x1A, 0x60, -0x04, 0xF0, 0x0F, 0x04, 0x22, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x08, 0x23, 0x04, 0xEB, 0x44, 0x04, 0xDB, 0x68, -0x33, 0x60, 0x05, 0xEB, 0x44, 0x00, 0xBD, 0xE8, 0xF8, 0x83, 0x05, 0x29, 0x1E, 0xD0, 0x1C, 0x49, 0x1C, 0x48, 0x40, 0xF6, -0xF5, 0x12, 0x10, 0xF0, 0xF5, 0xFF, 0x39, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0xC4, 0xF3, 0x02, 0x12, 0x01, 0x32, 0x00, 0x29, -0x4F, 0xEA, 0x14, 0x13, 0xC9, 0xF8, 0x00, 0x20, 0x04, 0xF0, 0x0F, 0x04, 0xDC, 0xDA, 0x5B, 0x07, 0x11, 0xD4, 0x0B, 0x2C, -0xD8, 0xD9, 0x10, 0x49, 0x11, 0x48, 0x40, 0xF6, 0xFF, 0x12, 0x10, 0xF0, 0xDD, 0xFF, 0xD1, 0xE7, 0xC4, 0xF3, 0x02, 0x12, -0x01, 0x32, 0x1A, 0x60, 0x23, 0x09, 0x5B, 0x07, 0x04, 0xF0, 0x0F, 0x04, 0xED, 0xD5, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF6, -0xFE, 0x12, 0x10, 0xF0, 0xCD, 0xFF, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE2, 0xDB, 0xBC, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD8, 0x93, 0x15, 0x00, 0xF8, 0x93, 0x15, 0x00, -0xE0, 0x91, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x14, 0x4E, 0xDF, 0xF8, 0x54, 0xC0, 0x35, 0x69, 0x04, 0x38, 0x31, 0x46, -0x05, 0xF1, 0x08, 0x04, 0x05, 0xF1, 0x18, 0x0E, 0x00, 0x27, 0x50, 0xF8, 0x04, 0x2F, 0x13, 0x09, 0x02, 0xF0, 0x0F, 0x08, -0x03, 0xF4, 0x7F, 0x63, 0x43, 0xEA, 0x08, 0x03, 0x12, 0x0C, 0x8B, 0x62, 0x81, 0xF8, 0x2C, 0x20, 0x25, 0xB1, 0x22, 0x68, -0x02, 0xEA, 0x0C, 0x02, 0x13, 0x43, 0x8B, 0x62, 0x04, 0x34, 0xA6, 0x45, 0x4F, 0x62, 0x01, 0xF1, 0x0C, 0x01, 0xE6, 0xD1, -0x01, 0x23, 0x86, 0xF8, 0x62, 0x30, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x00, 0xF0, 0xFF, 0xFF, -0x03, 0x4B, 0x02, 0x78, 0x83, 0xF8, 0x64, 0x20, 0x42, 0x78, 0x83, 0xF8, 0x65, 0x20, 0x70, 0x47, 0x94, 0x64, 0x17, 0x00, -0x0A, 0x4B, 0x9A, 0x69, 0x8A, 0xB1, 0x30, 0xB4, 0x01, 0xEB, 0x41, 0x02, 0x03, 0xEB, 0x82, 0x02, 0x4C, 0x00, 0x92, 0xF8, -0x2E, 0x50, 0x05, 0xB1, 0x50, 0x62, 0x21, 0x44, 0x03, 0xEB, 0x81, 0x03, 0x01, 0x22, 0x30, 0xBC, 0x83, 0xF8, 0x2D, 0x20, -0x70, 0x47, 0x70, 0x47, 0x94, 0x64, 0x17, 0x00, 0x08, 0x4A, 0x09, 0x4B, 0x11, 0x69, 0x09, 0x4A, 0x10, 0xB4, 0x01, 0xF5, -0x9C, 0x51, 0x08, 0x4C, 0x5C, 0x60, 0x98, 0x60, 0x5D, 0xF8, 0x04, 0x4B, 0x18, 0x46, 0x08, 0x31, 0xD2, 0xF8, 0xE0, 0x31, -0x18, 0x47, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x95, 0x24, 0x13, 0x00, -0x08, 0x4A, 0x03, 0x7F, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x40, 0xF2, 0xFF, 0x31, 0xB3, 0xF8, 0xBE, 0x24, -0x8A, 0x42, 0x00, 0xD1, 0x70, 0x47, 0x43, 0x6C, 0x28, 0x30, 0x59, 0x6A, 0xFE, 0xF7, 0xF2, 0xBB, 0x18, 0x88, 0x17, 0x00, -0xF8, 0xB5, 0x0E, 0x4A, 0x03, 0x7F, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x40, 0xF2, 0xFF, 0x31, 0xB3, 0xF8, -0xBE, 0x24, 0x8A, 0x42, 0x0F, 0xD0, 0xD0, 0xE9, 0x12, 0x67, 0x1D, 0x46, 0x06, 0xF1, 0x3C, 0x04, 0x4C, 0x36, 0x20, 0x46, -0xF9, 0x6A, 0x04, 0x34, 0xFE, 0xF7, 0xD8, 0xFB, 0xB4, 0x42, 0x02, 0xD0, 0xB5, 0xF8, 0xBE, 0x24, 0xF5, 0xE7, 0xF8, 0xBD, -0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x9C, 0x4E, 0xD0, 0xF8, 0x44, 0xB0, 0xC7, 0x6C, 0x96, 0xF8, 0x7E, 0x50, -0x96, 0xF8, 0x87, 0x30, 0x11, 0xF4, 0x00, 0x09, 0x83, 0xB0, 0x04, 0x46, 0x8A, 0x46, 0x3E, 0xD0, 0x7B, 0xBB, 0xDF, 0xF8, -0x58, 0x82, 0x28, 0x46, 0xD8, 0xF8, 0xC0, 0x33, 0x98, 0x47, 0xD8, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0xBB, 0xF8, 0x04, 0x30, -0x99, 0x06, 0x49, 0xD5, 0x13, 0xF0, 0x40, 0x02, 0x69, 0xD0, 0x58, 0x46, 0xFD, 0xF7, 0x14, 0xFE, 0x00, 0x23, 0xDF, 0xF8, -0x4C, 0x82, 0x63, 0x64, 0xB9, 0xF1, 0x00, 0x0F, 0x4D, 0xD0, 0x89, 0x4B, 0x00, 0x22, 0xD3, 0xF8, 0xAC, 0x33, 0x29, 0x46, -0x20, 0x46, 0x98, 0x47, 0x54, 0x20, 0x00, 0xFB, 0x05, 0x80, 0x0C, 0x30, 0x0F, 0xF0, 0xD2, 0xFA, 0xA3, 0x88, 0x00, 0x2B, -0x47, 0xD1, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xFC, 0xF7, 0x0B, 0xB9, 0x7F, 0x48, 0x96, 0xF8, 0x64, 0x30, -0x01, 0x68, 0xDF, 0xF8, 0xF0, 0x81, 0x1B, 0x06, 0x21, 0xF0, 0xE0, 0x61, 0x03, 0xF0, 0xE0, 0x63, 0x0B, 0x43, 0x03, 0x60, -0xC7, 0xE7, 0x00, 0x2B, 0xC8, 0xD0, 0x77, 0x48, 0x96, 0xF8, 0x65, 0xE0, 0x01, 0x68, 0x02, 0x68, 0xC1, 0xF3, 0x02, 0x61, -0x4B, 0x1C, 0x73, 0x45, 0x28, 0xBF, 0x73, 0x46, 0x1B, 0x06, 0x03, 0xF0, 0xE0, 0x63, 0x22, 0xF0, 0xE0, 0x6C, 0x43, 0xEA, -0x0C, 0x03, 0x03, 0x60, 0xBB, 0xF8, 0x04, 0x30, 0x99, 0x06, 0xB5, 0xD4, 0x1C, 0x23, 0xDF, 0xF8, 0xC4, 0x81, 0x54, 0x20, -0x10, 0xFB, 0x05, 0x30, 0x40, 0x44, 0x0F, 0xF0, 0x99, 0xFA, 0x58, 0x46, 0xFD, 0xF7, 0xC4, 0xFD, 0x00, 0x23, 0x63, 0x64, -0xB9, 0xF1, 0x00, 0x0F, 0xB1, 0xD1, 0xCA, 0xF3, 0x07, 0x29, 0xB9, 0xF1, 0x04, 0x0F, 0x1F, 0xD9, 0x3B, 0x6D, 0x43, 0xF4, -0x80, 0x33, 0x3B, 0x65, 0xA7, 0xE7, 0x2A, 0x46, 0x51, 0x46, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xFB, 0xF7, -0x9D, 0xBA, 0x3B, 0x6D, 0x00, 0x92, 0x23, 0xF4, 0x00, 0x03, 0x2A, 0xF4, 0x00, 0x0A, 0x58, 0x46, 0x3B, 0x65, 0xCA, 0xF3, -0x07, 0x29, 0xFD, 0xF7, 0xA1, 0xFD, 0x00, 0x9A, 0xDF, 0xF8, 0x64, 0x81, 0x62, 0x64, 0xB9, 0xF1, 0x04, 0x0F, 0xDF, 0xD8, -0xD4, 0xF8, 0x48, 0xA0, 0xB9, 0xF1, 0x00, 0x0F, 0x25, 0xD0, 0x0A, 0xF1, 0x28, 0x0B, 0x05, 0xEB, 0x45, 0x03, 0x06, 0xEB, -0x83, 0x03, 0x09, 0xF1, 0x01, 0x09, 0x59, 0x6A, 0xDA, 0xE9, 0x17, 0x32, 0xBB, 0x64, 0x4F, 0xEA, 0x09, 0x23, 0xC7, 0xE9, -0x0D, 0x2B, 0x3B, 0x65, 0x07, 0xF1, 0x14, 0x02, 0x6B, 0x00, 0x00, 0x29, 0x4B, 0xD0, 0xB9, 0x61, 0x54, 0x20, 0x00, 0xFB, -0x05, 0x88, 0x1D, 0x44, 0x98, 0xF8, 0x50, 0x30, 0x06, 0xEB, 0x85, 0x06, 0x01, 0x33, 0x72, 0x62, 0x88, 0xF8, 0x50, 0x30, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xE3, 0x6A, 0x0A, 0xF1, 0x28, 0x0B, 0x03, 0xF1, 0x40, 0x0C, 0x1A, 0x46, 0x0A, 0xF1, -0x24, 0x01, 0x52, 0xF8, 0x04, 0x0B, 0x41, 0xF8, 0x04, 0x0F, 0x62, 0x45, 0xF9, 0xD1, 0xE2, 0x8B, 0x92, 0x04, 0x26, 0xD5, -0x33, 0x4A, 0x34, 0x48, 0x11, 0x68, 0x62, 0x7F, 0xB1, 0xF9, 0x00, 0x10, 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, 0x02, 0x02, -0x00, 0x29, 0xD2, 0xF8, 0x4C, 0x21, 0x00, 0x92, 0x29, 0xDB, 0x00, 0x9A, 0x59, 0x69, 0xD2, 0xF8, 0x9C, 0x20, 0xCA, 0xF8, -0x40, 0x10, 0x59, 0x6A, 0xCA, 0xF8, 0x50, 0x10, 0xC2, 0xF3, 0xC2, 0x21, 0x05, 0x29, 0xCA, 0xF8, 0x3C, 0x20, 0x25, 0xD0, -0xDB, 0x6B, 0x5B, 0x07, 0x05, 0xD4, 0xDA, 0xF8, 0x2C, 0x30, 0x23, 0xF4, 0xC0, 0x73, 0xCA, 0xF8, 0x2C, 0x30, 0x20, 0x46, -0xFF, 0xF7, 0xDC, 0xFE, 0x9F, 0xE7, 0x54, 0x21, 0x01, 0xFB, 0x05, 0xF1, 0x1E, 0x48, 0x48, 0xF8, 0x01, 0x20, 0x00, 0x68, -0x40, 0x78, 0x41, 0x44, 0x00, 0x28, 0xA9, 0xD1, 0xC1, 0xE9, 0x01, 0x00, 0xA6, 0xE7, 0x00, 0x2A, 0xD3, 0xD1, 0x19, 0x49, -0x19, 0x48, 0x01, 0x93, 0x40, 0xF2, 0x4B, 0x12, 0x10, 0xF0, 0xFE, 0xFD, 0x01, 0x9B, 0xCA, 0xE7, 0x00, 0x98, 0xDA, 0xF8, -0x4C, 0x10, 0x90, 0xF8, 0xA1, 0x00, 0x02, 0xF4, 0xC0, 0x62, 0xB2, 0xF5, 0x80, 0x6F, 0x14, 0xBF, 0x4F, 0xF4, 0x80, 0x3C, -0x4F, 0xF4, 0x00, 0x3C, 0x21, 0xF4, 0x40, 0x32, 0x42, 0xEA, 0x0C, 0x02, 0x20, 0xB1, 0x42, 0xF4, 0x80, 0x22, 0xCA, 0xF8, -0x4C, 0x20, 0xC1, 0xE7, 0x22, 0xF4, 0x80, 0x22, 0xCA, 0xF8, 0x4C, 0x20, 0xBC, 0xE7, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, 0x10, 0xB5, 0x05, 0x4C, 0x20, 0x46, 0x0F, 0xF0, -0x6F, 0xF9, 0x10, 0xF0, 0x25, 0xFE, 0x01, 0x38, 0xC0, 0xB2, 0xE0, 0x72, 0xA0, 0x72, 0x10, 0xBD, 0x24, 0x65, 0x17, 0x00, -0xC2, 0x4B, 0x2D, 0xE9, 0xF0, 0x4F, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x02, 0x38, 0x85, 0xB0, 0x98, 0xF8, 0x62, 0x30, -0x02, 0x2B, 0x17, 0xD1, 0x4F, 0xF4, 0x1E, 0x79, 0x93, 0x46, 0x0C, 0x46, 0x09, 0xFB, 0x01, 0xF2, 0xBA, 0x49, 0x01, 0x92, -0x8E, 0x18, 0xB0, 0xF8, 0x00, 0xA0, 0x96, 0xF8, 0x24, 0x90, 0xB9, 0xF1, 0x01, 0x0F, 0x05, 0x46, 0x41, 0xF2, 0x04, 0x42, -0x07, 0xD0, 0x0A, 0xEA, 0x02, 0x0A, 0xBA, 0xF5, 0x80, 0x5F, 0x5A, 0xD0, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1A, 0xEA, -0x02, 0x02, 0x00, 0xF0, 0x6B, 0x81, 0x0A, 0xF0, 0xFC, 0x03, 0xA4, 0x2B, 0x00, 0xF0, 0x75, 0x82, 0x0A, 0xF0, 0x8C, 0x03, -0x88, 0x2B, 0xEF, 0xD1, 0x0A, 0xF4, 0x40, 0x7A, 0xBA, 0xF5, 0x40, 0x7F, 0x0C, 0xBF, 0xEF, 0x8B, 0x2F, 0x8B, 0xA7, 0x4B, -0xA5, 0x49, 0xA7, 0x4A, 0x07, 0xF0, 0x07, 0x07, 0x4F, 0xF4, 0x1E, 0x75, 0xDB, 0x5D, 0x05, 0xFB, 0x04, 0x15, 0xD2, 0x5C, -0x95, 0xF8, 0x2E, 0x31, 0x1A, 0x42, 0xD9, 0xD0, 0x95, 0xF8, 0x31, 0x30, 0x13, 0xF0, 0x0C, 0x0F, 0x00, 0xF0, 0x7E, 0x82, -0x95, 0xF8, 0x32, 0x20, 0x12, 0xF0, 0x06, 0x0F, 0xCE, 0xD1, 0x18, 0x07, 0x95, 0xF8, 0x2F, 0x91, 0x40, 0xF1, 0x8A, 0x82, -0x99, 0x4B, 0x02, 0x22, 0x85, 0xF8, 0x32, 0x20, 0xD3, 0xF8, 0x20, 0x33, 0x31, 0x46, 0x40, 0x46, 0x4A, 0x46, 0x98, 0x47, -0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x7A, 0x82, 0xA9, 0xEB, 0x00, 0x09, 0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF3, 0x74, 0x82, -0x8C, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x24, 0x00, 0x23, 0x1A, 0x46, 0x94, 0xF8, 0x23, 0x00, 0x47, 0xF0, -0x10, 0x01, 0xFC, 0xF7, 0xA9, 0xF8, 0x00, 0x23, 0x84, 0xF8, 0x32, 0x30, 0xA4, 0xE7, 0x00, 0x22, 0x0C, 0x21, 0x49, 0x20, -0x0E, 0xF0, 0x58, 0xFC, 0x4F, 0xF0, 0x01, 0x09, 0x86, 0xF8, 0x24, 0x90, 0x04, 0x70, 0x80, 0xF8, 0x01, 0x90, 0x0E, 0xF0, -0x7F, 0xFC, 0x96, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x58, 0xD1, 0x96, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0x54, 0xD8, 0x96, 0xF8, -0x22, 0x20, 0x77, 0x48, 0x7B, 0x4D, 0xCD, 0xF8, 0x08, 0x90, 0x9E, 0x23, 0xA4, 0x21, 0x11, 0xFB, 0x02, 0x31, 0x07, 0xFB, -0x02, 0x07, 0x4F, 0x23, 0x46, 0x22, 0x13, 0xFB, 0x04, 0x24, 0x71, 0x4A, 0x02, 0xF5, 0x16, 0x73, 0x02, 0xEB, 0xC4, 0x04, -0x01, 0x9A, 0x1A, 0x44, 0x00, 0xEB, 0xC1, 0x0A, 0x91, 0x46, 0xD6, 0xF8, 0x08, 0x32, 0x1B, 0xB3, 0xEF, 0xF3, 0x10, 0x83, -0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x6D, 0x4B, 0x02, 0x9A, 0x1A, 0x60, 0x2B, 0x68, 0xA4, 0xF1, 0x28, 0x00, 0x01, 0x33, -0xAA, 0xF1, 0x28, 0x01, 0x01, 0x90, 0x2B, 0x60, 0x0F, 0xF0, 0x98, 0xF9, 0xD6, 0xE9, 0x82, 0x23, 0x01, 0x98, 0xC7, 0xF8, -0xC8, 0x24, 0xC7, 0xF8, 0xCC, 0x34, 0x0F, 0xF0, 0x99, 0xF8, 0x2B, 0x68, 0x5A, 0x1E, 0x2B, 0xB1, 0x60, 0x4B, 0x2A, 0x60, -0x1B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xD6, 0xF8, 0x30, 0x32, 0x50, 0x46, 0x21, 0x46, 0x08, 0x36, 0x0A, 0xF1, -0x08, 0x0A, 0x08, 0x37, 0x23, 0xB1, 0x0F, 0xF0, 0x7B, 0xF9, 0x20, 0x46, 0x0F, 0xF0, 0x82, 0xF8, 0x08, 0x34, 0x4C, 0x45, -0xC7, 0xD1, 0x40, 0x20, 0x0E, 0xF0, 0xDE, 0xFF, 0x4D, 0x4B, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x36, 0x96, 0xF8, -0xDE, 0x20, 0x00, 0x2A, 0x40, 0xF0, 0x82, 0x80, 0x0B, 0xF1, 0x0A, 0x05, 0x48, 0x4B, 0xED, 0xB2, 0x4F, 0xF4, 0x1E, 0x79, -0x09, 0xFB, 0x05, 0xF9, 0x03, 0xEB, 0x09, 0x04, 0x94, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x73, 0xD0, 0x02, 0x23, 0x0C, 0x21, -0x49, 0x20, 0x0E, 0xF0, 0xD5, 0xFB, 0x4F, 0xF0, 0x01, 0x0A, 0x84, 0xF8, 0x24, 0xA0, 0x05, 0x70, 0x80, 0xF8, 0x01, 0xA0, -0x0E, 0xF0, 0xFC, 0xFB, 0x94, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xA9, 0x81, 0x94, 0xF8, 0x23, 0x30, 0x09, 0x2B, -0x00, 0xF2, 0xA4, 0x81, 0x94, 0xF8, 0x22, 0x00, 0xCD, 0xF8, 0x08, 0xA0, 0xA4, 0x21, 0x9E, 0x23, 0x11, 0xFB, 0x00, 0x33, -0x4F, 0xF0, 0x46, 0x0A, 0x4F, 0x21, 0x11, 0xFB, 0x05, 0xAA, 0x36, 0x4A, 0x2E, 0x4E, 0x2E, 0x49, 0x07, 0xFB, 0x00, 0x67, -0x01, 0xEB, 0xC3, 0x05, 0x30, 0x4E, 0xA2, 0xF5, 0x16, 0x73, 0x03, 0xEB, 0xCA, 0x0A, 0x91, 0x44, 0xD4, 0xF8, 0x08, 0x32, -0x1B, 0xB3, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2A, 0x4B, 0x02, 0x9A, 0x1A, 0x60, 0x33, 0x68, -0xAA, 0xF1, 0x28, 0x00, 0x01, 0x33, 0xA5, 0xF1, 0x28, 0x01, 0x01, 0x90, 0x33, 0x60, 0x0F, 0xF0, 0x13, 0xF9, 0xD4, 0xE9, -0x82, 0x23, 0x01, 0x98, 0xC7, 0xF8, 0xC8, 0x24, 0xC7, 0xF8, 0xCC, 0x34, 0x0F, 0xF0, 0x14, 0xF8, 0x33, 0x68, 0x5A, 0x1E, -0x2B, 0xB1, 0x1E, 0x4B, 0x32, 0x60, 0x1B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xD4, 0xF8, 0x30, 0x32, 0x28, 0x46, -0x51, 0x46, 0x08, 0x34, 0x08, 0x35, 0x08, 0x37, 0x23, 0xB1, 0x0F, 0xF0, 0xF7, 0xF8, 0x50, 0x46, 0x0E, 0xF0, 0xFE, 0xFF, -0x0A, 0xF1, 0x08, 0x0A, 0xCA, 0x45, 0xC7, 0xD1, 0x40, 0x20, 0x0E, 0xF0, 0x59, 0xFF, 0x0B, 0x4A, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x0B, 0x23, 0x93, 0xF8, 0xDE, 0x20, 0x07, 0x48, 0x0B, 0x49, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0x03, -0x01, 0x32, 0x83, 0xF8, 0xDE, 0x20, 0xD1, 0xF8, 0x0C, 0x32, 0x40, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, -0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xC0, 0xB2, 0x15, 0x00, 0xA4, 0xB2, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0xC0, 0x67, 0x17, 0x00, 0x0C, 0x21, 0x49, 0x20, 0x02, 0x92, 0x0E, 0xF0, -0x41, 0xFB, 0x02, 0x9A, 0x86, 0xF8, 0x24, 0x20, 0x04, 0x70, 0x42, 0x70, 0x0E, 0xF0, 0x6A, 0xFB, 0x96, 0xF8, 0x24, 0x30, -0x00, 0x2B, 0x60, 0xD1, 0x96, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0x5C, 0xD8, 0x96, 0xF8, 0x22, 0x20, 0xA8, 0x48, 0xCD, 0xF8, -0x08, 0x90, 0xA4, 0x21, 0x9E, 0x23, 0x11, 0xFB, 0x02, 0x33, 0xA6, 0x49, 0xDF, 0xF8, 0xA0, 0xA2, 0x03, 0x94, 0x07, 0xFB, -0x02, 0x19, 0x4F, 0x25, 0x01, 0xEB, 0xC3, 0x07, 0x46, 0x22, 0x01, 0x9B, 0x15, 0xFB, 0x04, 0x25, 0x00, 0xF5, 0x16, 0x72, -0x13, 0x44, 0x3C, 0x46, 0x00, 0xEB, 0xC5, 0x05, 0x1F, 0x46, 0xD6, 0xF8, 0x08, 0x22, 0x3A, 0xB3, 0xEF, 0xF3, 0x10, 0x82, -0xD2, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x99, 0x4B, 0x02, 0x9A, 0x1A, 0x60, 0xDA, 0xF8, 0x00, 0x20, 0xA5, 0xF1, 0x28, 0x00, -0x01, 0x32, 0xA4, 0xF1, 0x28, 0x01, 0x01, 0x90, 0xCA, 0xF8, 0x00, 0x20, 0x0F, 0xF0, 0x7E, 0xF8, 0xD6, 0xE9, 0x82, 0x21, -0x01, 0x98, 0xC9, 0xF8, 0xC8, 0x24, 0xC9, 0xF8, 0xCC, 0x14, 0x0E, 0xF0, 0x7F, 0xFF, 0xDA, 0xF8, 0x00, 0x20, 0x51, 0x1E, -0x32, 0xB1, 0x8B, 0x4B, 0xCA, 0xF8, 0x00, 0x10, 0x1A, 0x68, 0x09, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD6, 0xF8, 0x30, 0x22, -0x20, 0x46, 0x29, 0x46, 0x08, 0x36, 0x08, 0x34, 0x09, 0xF1, 0x08, 0x09, 0x22, 0xB1, 0x0F, 0xF0, 0x5F, 0xF8, 0x28, 0x46, -0x0E, 0xF0, 0x66, 0xFF, 0x08, 0x35, 0xBD, 0x42, 0xC3, 0xD1, 0x40, 0x20, 0x03, 0x9C, 0x0E, 0xF0, 0xC1, 0xFE, 0x7E, 0x4D, -0x21, 0x46, 0xEB, 0x68, 0x40, 0x46, 0x98, 0x47, 0x79, 0x4B, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x33, 0x93, 0xF8, -0xDE, 0xA0, 0x0A, 0xF1, 0xFF, 0x3A, 0x5F, 0xFA, 0x8A, 0xFA, 0x83, 0xF8, 0xDE, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, -0x84, 0x80, 0x0B, 0xF1, 0x0A, 0x06, 0x6F, 0x49, 0xF6, 0xB2, 0x4F, 0xF4, 0x1E, 0x79, 0x09, 0xFB, 0x06, 0xF9, 0x01, 0xEB, -0x09, 0x04, 0x94, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x71, 0xD0, 0x02, 0x23, 0x52, 0x46, 0x0C, 0x21, 0x49, 0x20, 0x0E, 0xF0, -0xAB, 0xFA, 0x84, 0xF8, 0x24, 0xA0, 0x06, 0x70, 0x80, 0xF8, 0x01, 0xA0, 0x0E, 0xF0, 0xD4, 0xFA, 0x94, 0xF8, 0x24, 0x30, -0x00, 0x2B, 0x60, 0xD1, 0x94, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0x5C, 0xD8, 0x94, 0xF8, 0x22, 0x10, 0x5E, 0x4A, 0xDF, 0xF8, -0x88, 0xC1, 0xDF, 0xF8, 0x80, 0xA1, 0x02, 0x96, 0x9E, 0x23, 0xA4, 0x20, 0x10, 0xFB, 0x01, 0x30, 0x07, 0xFB, 0x01, 0x27, -0x4F, 0x23, 0x46, 0x21, 0x13, 0xFB, 0x06, 0x13, 0xAC, 0xF5, 0x16, 0x71, 0x02, 0xEB, 0xC0, 0x0B, 0xE1, 0x44, 0x01, 0xEB, -0xC3, 0x03, 0x5E, 0x46, 0xCB, 0x46, 0xB9, 0x46, 0x1F, 0x46, 0xD4, 0xF8, 0x08, 0x22, 0x3A, 0xB3, 0xEF, 0xF3, 0x10, 0x82, -0xD3, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x4E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDA, 0xF8, 0x00, 0x20, 0xA7, 0xF1, 0x28, 0x00, -0x01, 0x32, 0xA6, 0xF1, 0x28, 0x01, 0x01, 0x90, 0xCA, 0xF8, 0x00, 0x20, 0x0E, 0xF0, 0xE8, 0xFF, 0xD4, 0xE9, 0x82, 0x21, -0x01, 0x98, 0xC9, 0xF8, 0xC8, 0x24, 0xC9, 0xF8, 0xCC, 0x14, 0x0E, 0xF0, 0xE9, 0xFE, 0xDA, 0xF8, 0x00, 0x20, 0x51, 0x1E, -0x32, 0xB1, 0x40, 0x4B, 0xCA, 0xF8, 0x00, 0x10, 0x1A, 0x68, 0x09, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD4, 0xF8, 0x30, 0x22, -0x30, 0x46, 0x39, 0x46, 0x08, 0x34, 0x08, 0x36, 0x09, 0xF1, 0x08, 0x09, 0x22, 0xB1, 0x0E, 0xF0, 0xC9, 0xFF, 0x38, 0x46, -0x0E, 0xF0, 0xD0, 0xFE, 0x08, 0x37, 0x5F, 0x45, 0xC3, 0xD1, 0x40, 0x20, 0x02, 0x9E, 0x0E, 0xF0, 0x2B, 0xFE, 0xEB, 0x68, -0x31, 0x46, 0x40, 0x46, 0x98, 0x47, 0xD5, 0xF8, 0x0C, 0x32, 0x40, 0x46, 0xDC, 0xE6, 0x96, 0xF8, 0x31, 0x20, 0x12, 0xF0, -0x02, 0x07, 0x16, 0xD0, 0x96, 0xF8, 0x32, 0x30, 0x2B, 0x49, 0x43, 0xF0, 0x01, 0x03, 0x86, 0xF8, 0x32, 0x30, 0x4A, 0x46, -0xD1, 0xF8, 0x20, 0x33, 0x40, 0x46, 0x31, 0x46, 0x98, 0x47, 0x96, 0xF8, 0x32, 0x30, 0x23, 0xF0, 0x01, 0x03, 0x86, 0xF8, -0x32, 0x30, 0x71, 0xE5, 0x96, 0xF8, 0xDE, 0x20, 0xB4, 0xE6, 0x04, 0x23, 0x3A, 0x46, 0x0C, 0x21, 0x4A, 0x20, 0x0E, 0xF0, -0x15, 0xFA, 0x04, 0x70, 0x80, 0xF8, 0x01, 0x90, 0x87, 0x70, 0x0E, 0xF0, 0x3F, 0xFA, 0x61, 0xE5, 0x95, 0xF8, 0x32, 0x30, -0x13, 0xF0, 0x06, 0x04, 0x7F, 0xF4, 0x50, 0xAD, 0x02, 0x26, 0x95, 0xF8, 0x23, 0x00, 0x85, 0xF8, 0x32, 0x60, 0x47, 0xF0, -0x10, 0x01, 0x23, 0x46, 0x22, 0x46, 0xFB, 0xF7, 0x45, 0xFE, 0x85, 0xF8, 0x32, 0x40, 0x41, 0xE5, 0x95, 0xF8, 0x31, 0x30, -0x59, 0x07, 0x7F, 0xF5, 0x87, 0xAD, 0x0B, 0x4B, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x04, 0x30, 0x04, 0x23, 0x80, 0xF8, -0x32, 0x30, 0x00, 0x22, 0x0C, 0x21, 0x4A, 0x20, 0x0E, 0xF0, 0xE8, 0xF9, 0x01, 0x22, 0x04, 0x70, 0x80, 0xF8, 0x01, 0x90, -0x82, 0x70, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x0E, 0xF0, 0x0E, 0xBA, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xC0, 0x67, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x05, 0x8E, 0x87, 0xB0, 0xAD, 0xB1, 0x7A, 0x4B, 0xC6, 0x69, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, -0x11, 0xDB, 0x77, 0x4A, 0x65, 0x6D, 0x12, 0x68, 0x12, 0x78, 0x92, 0x07, 0x03, 0xD5, 0x05, 0xF0, 0x3C, 0x02, 0x3C, 0x2A, -0x77, 0xD0, 0x73, 0x4A, 0xAA, 0x43, 0x0E, 0xD0, 0x01, 0x25, 0x28, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2E, -0xEB, 0xD1, 0x6F, 0x49, 0x6F, 0x48, 0x4F, 0xF4, 0xD4, 0x72, 0x35, 0x46, 0x10, 0xF0, 0x5A, 0xFA, 0xF1, 0xE7, 0x00, 0x2B, -0xC5, 0xF3, 0xCF, 0x30, 0xC5, 0xF3, 0xC9, 0x31, 0x68, 0xDB, 0x6A, 0x4A, 0x10, 0x39, 0xC9, 0xB2, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x25, 0x00, 0x00, 0x28, 0x68, 0xD0, 0xD6, 0xF8, 0x08, 0xB0, 0x0D, 0x29, 0xBB, 0xF8, -0x00, 0x00, 0x00, 0x90, 0x69, 0xD9, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x22, 0x13, 0x8C, 0xFF, 0x2B, 0x67, 0xD0, -0x01, 0x92, 0x01, 0x9B, 0xDF, 0xF8, 0x88, 0x81, 0x93, 0xF8, 0x22, 0x90, 0xDF, 0xF8, 0x84, 0xA1, 0x02, 0x91, 0x4F, 0xF4, -0xA4, 0x67, 0x07, 0xFB, 0x09, 0x87, 0xDA, 0xF8, 0xB8, 0x32, 0x97, 0xF8, 0x63, 0x20, 0x58, 0x46, 0x98, 0x47, 0x97, 0xF8, -0x64, 0x30, 0x00, 0x2B, 0xBA, 0xD0, 0x00, 0x9B, 0x13, 0xF0, 0x04, 0x03, 0x03, 0x93, 0x05, 0xD1, 0x02, 0x99, 0x97, 0xF8, -0x63, 0x00, 0x01, 0x22, 0x0C, 0xF0, 0x96, 0xFB, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x09, 0x88, 0x98, 0xF8, 0x62, 0x30, -0x00, 0x2B, 0xA7, 0xD1, 0x00, 0x9A, 0x02, 0xF0, 0xFC, 0x07, 0x80, 0x2F, 0x4A, 0xD0, 0x50, 0x2F, 0x67, 0xD0, 0x03, 0x9B, -0x00, 0x2B, 0x9D, 0xD1, 0xDA, 0xF8, 0x44, 0x32, 0x29, 0x46, 0x58, 0x46, 0x42, 0x46, 0x98, 0x47, 0x98, 0xF8, 0xC0, 0x34, -0x00, 0x2B, 0x93, 0xD0, 0xD0, 0x2F, 0x91, 0xD1, 0xB1, 0x68, 0x63, 0x6B, 0x22, 0x8E, 0x40, 0x46, 0x0B, 0xF0, 0x5C, 0xFF, -0x8A, 0xE7, 0x37, 0x4A, 0x25, 0xF0, 0x40, 0x05, 0x45, 0xF4, 0x00, 0x55, 0xAA, 0x43, 0x65, 0x65, 0x82, 0xD1, 0x90, 0xE7, -0x10, 0xF4, 0x7C, 0x73, 0x93, 0xD1, 0x32, 0x49, 0x34, 0x48, 0x40, 0xF2, 0xE3, 0x12, 0x1D, 0x46, 0x10, 0xF0, 0xE0, 0xF9, -0x77, 0xE7, 0x25, 0xF0, 0x00, 0x75, 0x65, 0x65, 0x01, 0x25, 0x28, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x2E, 0x48, -0x00, 0x69, 0xC3, 0xF8, 0x58, 0x02, 0x90, 0xE7, 0x00, 0x9B, 0x03, 0xF0, 0xFC, 0x03, 0x80, 0x2B, 0xED, 0xD1, 0xD3, 0x6A, -0x01, 0x93, 0x93, 0xF8, 0x23, 0x20, 0x25, 0xF0, 0xFF, 0x73, 0x10, 0x32, 0x23, 0xF4, 0xC0, 0x33, 0x43, 0xEA, 0xC2, 0x33, -0x63, 0x65, 0x86, 0xE7, 0x04, 0xF1, 0x14, 0x07, 0x01, 0x9A, 0xDA, 0xF8, 0x98, 0x51, 0x05, 0x93, 0x41, 0x46, 0x05, 0xAB, -0x38, 0x46, 0xA8, 0x47, 0xDA, 0xF8, 0x40, 0x32, 0x21, 0x8E, 0x05, 0x46, 0x42, 0x46, 0x05, 0x98, 0x98, 0x47, 0xDA, 0xF8, -0x4C, 0x34, 0x40, 0x46, 0x98, 0x47, 0x00, 0x2D, 0x3F, 0xF4, 0x41, 0xAF, 0xDA, 0xF8, 0xE4, 0x31, 0x3A, 0x46, 0x31, 0x46, -0x40, 0x46, 0x98, 0x47, 0x39, 0xE7, 0x14, 0x4B, 0x5A, 0x7F, 0x07, 0x2A, 0x7F, 0xF4, 0x34, 0xAF, 0x93, 0xF8, 0x24, 0x00, -0x00, 0x28, 0x7F, 0xF4, 0x2F, 0xAF, 0x10, 0x4C, 0x10, 0x4D, 0x58, 0x77, 0xD4, 0xE9, 0x00, 0x12, 0x22, 0xF4, 0x00, 0x72, -0x01, 0x20, 0x11, 0x43, 0x62, 0x60, 0x29, 0x60, 0x83, 0xF8, 0x24, 0x00, 0x05, 0x46, 0x20, 0xE7, 0x38, 0x36, 0x17, 0x00, -0x34, 0x36, 0x17, 0x00, 0x00, 0x20, 0x00, 0x02, 0x70, 0x79, 0x15, 0x00, 0x10, 0x96, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, -0x50, 0x90, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, -0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x07, 0x4C, 0xA3, 0x7A, 0xE2, 0x7A, 0x01, 0x33, 0xDB, 0xB2, -0x9A, 0x42, 0xA3, 0x72, 0x00, 0xD3, 0x10, 0xBD, 0x10, 0xF0, 0xF6, 0xF9, 0x00, 0x23, 0xA3, 0x72, 0x10, 0xBD, 0x00, 0xBF, -0x24, 0x65, 0x17, 0x00, 0x10, 0xB5, 0x10, 0x4C, 0xA3, 0x7A, 0xD3, 0xB9, 0xE3, 0x7A, 0xA3, 0x72, 0xEF, 0xF3, 0x10, 0x83, -0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0B, 0x4A, 0x0C, 0x4C, 0x11, 0x68, 0x23, 0x68, -0x48, 0x1C, 0x23, 0xF4, 0x80, 0x73, 0x10, 0x60, 0x23, 0x60, 0x28, 0xB1, 0x05, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, -0x03, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x10, 0xF0, 0xCF, 0xF9, 0xE1, 0xE7, 0x24, 0x65, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, 0x08, 0xB5, 0x00, 0xF0, 0x29, 0xFC, 0xFF, 0xF7, 0x93, 0xFB, 0xBD, 0xE8, -0x08, 0x40, 0x1A, 0xF0, 0x9F, 0xB8, 0x00, 0xBF, 0x0A, 0x4A, 0x0B, 0x4B, 0x10, 0xB5, 0xD2, 0xE9, 0x20, 0x04, 0xD2, 0xE9, -0x22, 0x12, 0x04, 0x44, 0x0A, 0x44, 0xC3, 0xE9, 0x01, 0x40, 0xC3, 0xE9, 0x03, 0x12, 0x18, 0x60, 0x59, 0x61, 0xFF, 0xF7, -0x7D, 0xFB, 0xBD, 0xE8, 0x10, 0x40, 0x1A, 0xF0, 0x89, 0xB8, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, 0xEC, 0x34, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x68, 0x81, 0xDF, 0xF8, 0x68, 0x91, 0xDF, 0xF8, 0x68, 0xA1, 0xDF, 0xF8, 0x68, 0xB1, -0x4D, 0x4F, 0x87, 0xB0, 0x00, 0x25, 0x3C, 0xE0, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF5, 0x80, 0x1F, 0x4E, 0xD8, 0x20, 0x2D, -0x4C, 0xD0, 0x10, 0xF0, 0x8D, 0xF9, 0x00, 0x28, 0x61, 0xD0, 0x1A, 0xF0, 0x81, 0xFC, 0x00, 0x28, 0x5D, 0xD0, 0x62, 0x69, -0x5A, 0x45, 0x0E, 0xD0, 0x43, 0x4B, 0xB9, 0x68, 0x1E, 0x68, 0x53, 0xF8, 0x04, 0x0C, 0x7B, 0x68, 0xCD, 0xE9, 0x02, 0x60, -0xCD, 0xE9, 0x00, 0x31, 0x3F, 0x48, 0x3B, 0x68, 0x21, 0x46, 0x0F, 0xF0, 0x97, 0xFE, 0x20, 0x46, 0x3D, 0x4E, 0x01, 0xF0, -0x41, 0xF9, 0x00, 0x22, 0xD6, 0xF8, 0x94, 0x32, 0x8D, 0xF8, 0x17, 0x20, 0x0D, 0xF1, 0x17, 0x01, 0x20, 0x46, 0x98, 0x47, -0x58, 0xBB, 0x9D, 0xF8, 0x17, 0x30, 0x73, 0xB3, 0x36, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x31, 0xD0, 0x03, 0x2B, -0x02, 0xD1, 0xD6, 0xF8, 0x8C, 0x32, 0x98, 0x47, 0x01, 0x35, 0x01, 0xF0, 0x09, 0xF9, 0x4F, 0xF4, 0x80, 0x33, 0xC9, 0xF8, -0x00, 0x30, 0x04, 0x46, 0x4F, 0xF4, 0x80, 0x10, 0x0E, 0xF0, 0x18, 0xFC, 0x98, 0xF8, 0xB8, 0x30, 0x94, 0xB3, 0x00, 0x2B, -0xB2, 0xD1, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF5, 0x80, 0x1F, 0x01, 0xD8, 0x03, 0x2D, 0xB2, 0xDD, 0x4F, 0xF4, 0x80, 0x10, -0x0E, 0xF0, 0xE4, 0xFB, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD6, 0xF8, 0xC8, 0x32, 0x20, 0x46, 0x98, 0x47, 0x00, 0x28, -0xD0, 0xD1, 0x20, 0x46, 0x01, 0xF0, 0xC4, 0xF8, 0x1D, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0xCD, 0xD1, 0xD6, 0xF8, -0x90, 0x32, 0x98, 0x47, 0xCE, 0xE7, 0x1A, 0x4B, 0x01, 0x22, 0x83, 0xF8, 0x45, 0x20, 0x1A, 0xF0, 0x1B, 0xFC, 0xB0, 0xFA, -0x80, 0xF2, 0x17, 0x49, 0x52, 0x09, 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, 0x8D, 0xFE, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x1B, 0xB1, 0x13, 0x4D, 0x95, 0xF8, 0x21, 0x30, 0x3B, 0xB9, 0x12, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x33, 0x13, 0x60, -0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD5, 0xE9, 0x05, 0x12, 0x28, 0x69, 0xF3, 0xF7, 0x5E, 0xFE, 0x6C, 0x61, 0xEC, 0x61, -0x2C, 0x61, 0xAC, 0x61, 0x85, 0xF8, 0x21, 0x40, 0xEB, 0xE7, 0x00, 0xBF, 0xEC, 0x34, 0x17, 0x00, 0xD4, 0x81, 0x32, 0x40, -0x3C, 0x96, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x28, 0x96, 0x15, 0x00, -0x30, 0x65, 0x17, 0x00, 0x80, 0x80, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x7C, 0x80, 0x32, 0x40, 0x80, 0xB6, 0x17, 0x00, -0x0D, 0xF0, 0xAD, 0xBA, 0x4F, 0xF4, 0x80, 0x00, 0x0E, 0xF0, 0x86, 0xBB, 0x2D, 0xE9, 0xF8, 0x43, 0x30, 0x4D, 0x2C, 0x68, -0x4F, 0xF4, 0x80, 0x00, 0x0E, 0xF0, 0xA2, 0xFB, 0x00, 0x2C, 0x31, 0xD0, 0xDF, 0xF8, 0xC4, 0x90, 0x2C, 0x4F, 0x2E, 0x46, -0x4F, 0xF0, 0x01, 0x08, 0x23, 0x7C, 0xD9, 0x07, 0x02, 0xD4, 0x2B, 0x89, 0x01, 0x33, 0x2B, 0x81, 0x30, 0x46, 0x0E, 0xF0, -0x53, 0xFC, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0xC7, 0xF8, 0x00, 0x80, 0xD9, 0xF8, 0x00, 0x30, -0x62, 0x68, 0x01, 0x33, 0x00, 0x21, 0xC9, 0xF8, 0x00, 0x30, 0x21, 0x74, 0x0A, 0xB1, 0xA0, 0x68, 0x90, 0x47, 0xE0, 0x68, -0x08, 0xB1, 0x00, 0xF0, 0x77, 0xFB, 0xD9, 0xF8, 0x00, 0x30, 0x33, 0xB1, 0x01, 0x3B, 0x3A, 0x68, 0xC9, 0xF8, 0x00, 0x30, -0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x2C, 0x68, 0x00, 0x2C, 0xD3, 0xD1, 0xAA, 0x7A, 0xEB, 0x7A, 0x9A, 0x42, 0x20, 0xD0, -0x13, 0x4B, 0x14, 0x48, 0x1B, 0x69, 0x14, 0x4A, 0xC8, 0x33, 0x4F, 0xF4, 0x80, 0x71, 0x03, 0x60, 0x11, 0x60, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0E, 0x4A, 0x0E, 0x4C, 0x11, 0x68, -0x23, 0x68, 0x48, 0x1C, 0x43, 0xF4, 0x80, 0x73, 0x10, 0x60, 0x23, 0x60, 0x28, 0xB1, 0x05, 0x4B, 0x11, 0x60, 0x1B, 0x68, -0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x24, 0x65, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x48, 0x01, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, 0x6C, 0x28, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, -0x2D, 0xE9, 0xF8, 0x43, 0x27, 0x4D, 0x2C, 0x68, 0x4F, 0xF4, 0x80, 0x00, 0x0E, 0xF0, 0x30, 0xFB, 0x9C, 0xB3, 0xDF, 0xF8, -0x9C, 0x80, 0xDF, 0xF8, 0x9C, 0x90, 0x00, 0x27, 0x2E, 0x46, 0x27, 0xE0, 0x01, 0x27, 0x30, 0x46, 0x0E, 0xF0, 0xE6, 0xFB, -0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xD9, 0xF8, 0x00, 0x30, -0x62, 0x68, 0x01, 0x33, 0x00, 0x21, 0xC9, 0xF8, 0x00, 0x30, 0x21, 0x74, 0x0A, 0xB1, 0xA0, 0x68, 0x90, 0x47, 0xE0, 0x68, -0x08, 0xB1, 0x00, 0xF0, 0x09, 0xFB, 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x01, 0x3B, 0xD8, 0xF8, 0x00, 0x20, 0xC9, 0xF8, -0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x2C, 0x68, 0x24, 0xB1, 0x23, 0x7C, 0xDA, 0x07, 0xD5, 0xD4, 0x00, 0x2F, -0xD2, 0xD0, 0x0B, 0x4C, 0x94, 0xF8, 0x45, 0x30, 0x0B, 0xB9, 0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF4, 0x80, 0x10, 0x0E, 0xF0, -0xCD, 0xFA, 0x07, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, 0x94, 0xFD, 0x00, 0x23, 0x84, 0xF8, 0x45, 0x30, 0xBD, 0xE8, -0xF8, 0x83, 0x00, 0xBF, 0x24, 0x65, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x96, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x2B, 0x4E, 0x34, 0x68, 0x4F, 0xF4, 0x80, 0x00, 0x0E, 0xF0, 0xD4, 0xFA, -0x00, 0x2C, 0x3F, 0xD0, 0x28, 0x4D, 0x2B, 0x88, 0x00, 0x2B, 0x3B, 0xD0, 0xDF, 0xF8, 0xA4, 0x80, 0xDF, 0xF8, 0xA4, 0x90, -0x37, 0x46, 0x23, 0x7C, 0xD9, 0x07, 0x01, 0xD4, 0x2B, 0x88, 0x6B, 0xB3, 0x38, 0x46, 0x0E, 0xF0, 0x83, 0xFB, 0xEF, 0xF3, -0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xD9, 0xF8, 0x00, 0x30, 0x22, 0x7C, -0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0xD3, 0x07, 0x02, 0xD4, 0x2B, 0x88, 0x01, 0x3B, 0x2B, 0x80, 0x63, 0x68, 0x00, 0x22, -0x22, 0x74, 0x0B, 0xB1, 0xA0, 0x68, 0x98, 0x47, 0xE0, 0x68, 0x08, 0xB1, 0x00, 0xF0, 0xA0, 0xFA, 0xD9, 0xF8, 0x00, 0x30, -0x3B, 0xB1, 0x01, 0x3B, 0xD8, 0xF8, 0x00, 0x20, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x34, 0x68, -0x00, 0x2C, 0xCC, 0xD1, 0x0B, 0x4C, 0x94, 0xF8, 0x45, 0x30, 0x0B, 0xB9, 0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF4, 0x80, 0x10, -0x0E, 0xF0, 0x68, 0xFA, 0x07, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, 0x2F, 0xFD, 0x00, 0x23, 0x84, 0xF8, 0x45, 0x30, -0xBD, 0xE8, 0xF8, 0x83, 0x24, 0x65, 0x17, 0x00, 0x54, 0x28, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x96, 0x15, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xF8, 0xB5, 0x0D, 0x4E, 0x35, 0x68, 0x95, 0xB1, 0x34, 0x89, 0x01, 0x34, -0xA4, 0xB2, 0x37, 0x46, 0x38, 0x46, 0x0E, 0xF0, 0x2D, 0xFB, 0x6B, 0x68, 0x0B, 0xB1, 0xA8, 0x68, 0x98, 0x47, 0x0F, 0xF0, -0x99, 0xFF, 0x35, 0x68, 0x34, 0x81, 0x01, 0x34, 0xA4, 0xB2, 0x00, 0x2D, 0xF0, 0xD1, 0xBD, 0xE8, 0xF8, 0x40, 0x00, 0xF0, -0xF5, 0xB9, 0x00, 0xBF, 0x24, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x44, 0x4F, 0x06, 0x68, 0x15, 0x88, 0xDF, 0xF8, -0x20, 0x91, 0xDF, 0xF8, 0x20, 0xA1, 0xDF, 0xF8, 0x20, 0xB1, 0x85, 0xB0, 0x4F, 0xF0, 0x00, 0x08, 0xCD, 0xE9, 0x02, 0x02, -0x87, 0xF8, 0x02, 0x80, 0xCD, 0xF8, 0x04, 0x80, 0x4A, 0xE0, 0xC4, 0x1A, 0x2C, 0x44, 0x0C, 0x44, 0x55, 0x1B, 0xA9, 0xB2, -0xA4, 0xB2, 0x00, 0x25, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x36, 0x4A, 0x01, 0x23, 0x13, 0x60, -0xBA, 0xF8, 0x00, 0x30, 0xDB, 0xF8, 0x00, 0x20, 0xD9, 0xF8, 0x00, 0xC0, 0x00, 0x92, 0x02, 0xEB, 0xC3, 0x00, 0xB2, 0x68, -0x42, 0x60, 0x00, 0x9A, 0x0C, 0xF1, 0x01, 0x0E, 0xC9, 0xF8, 0x00, 0xE0, 0x42, 0xF8, 0x33, 0x10, 0xFA, 0x78, 0x01, 0x33, -0x01, 0x32, 0x88, 0x44, 0xAA, 0xF8, 0x00, 0x30, 0xFA, 0x70, 0x64, 0xBB, 0xC3, 0x78, 0xA7, 0xF8, 0x00, 0x80, 0x43, 0xF0, -0x04, 0x03, 0x01, 0x22, 0xC3, 0x70, 0xBA, 0x70, 0xB8, 0x60, 0xBE, 0xF1, 0x00, 0x0F, 0x38, 0xD0, 0x21, 0x4B, 0xC9, 0xF8, -0x00, 0xC0, 0x1B, 0x68, 0xBC, 0xF1, 0x00, 0x0F, 0x31, 0xD1, 0x00, 0x2B, 0x2F, 0xD0, 0x62, 0xB6, 0x00, 0x2C, 0x2C, 0xD0, -0x1C, 0x4B, 0x1A, 0x68, 0x73, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x1A, 0xDB, 0x01, 0x96, 0x21, 0x46, 0x1E, 0x46, -0xF3, 0x68, 0x30, 0x89, 0x01, 0x33, 0x9B, 0xB2, 0x1A, 0x1A, 0x92, 0xB2, 0x4C, 0x19, 0x94, 0x42, 0xAB, 0xDA, 0x00, 0x24, -0xB0, 0xE7, 0xBE, 0xF1, 0x00, 0x0F, 0xE7, 0xD0, 0x0F, 0x4B, 0xC9, 0xF8, 0x00, 0xC0, 0x1B, 0x68, 0xBC, 0xF1, 0x00, 0x0F, -0xE0, 0xD1, 0x00, 0x2B, 0xDB, 0xD1, 0xDD, 0xE7, 0x00, 0x2B, 0xE2, 0xD1, 0x0B, 0x49, 0x0C, 0x48, 0x00, 0x93, 0x4F, 0xF4, -0x17, 0x72, 0x0F, 0xF0, 0xA9, 0xFE, 0x00, 0x9B, 0xD9, 0xE7, 0x02, 0x9B, 0x01, 0x98, 0x1E, 0x60, 0x03, 0x9B, 0x1D, 0x80, -0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, 0x54, 0x65, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xB0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0x41, 0x4F, 0xB2, 0xF8, 0x00, 0xA0, 0x06, 0x68, 0xDF, 0xF8, 0x0C, 0xB1, 0x87, 0xB0, 0x4F, 0xF0, -0x00, 0x08, 0xCD, 0xE9, 0x04, 0x02, 0x01, 0x22, 0x0B, 0x46, 0x87, 0xF8, 0x20, 0x20, 0xC1, 0x46, 0xCD, 0xF8, 0x0C, 0x80, -0x39, 0xE0, 0x05, 0x44, 0xAD, 0x1A, 0xA1, 0xEB, 0x0A, 0x03, 0xAD, 0xB2, 0x9B, 0xB2, 0x00, 0x2D, 0x02, 0x93, 0x08, 0xBF, -0x4F, 0xF0, 0x01, 0x09, 0xF2, 0xF7, 0x3C, 0xFC, 0x4F, 0xF0, 0x00, 0x0A, 0x02, 0x9B, 0x04, 0x46, 0x00, 0x28, 0x3A, 0xD0, -0x7A, 0x68, 0x02, 0xB9, 0x38, 0x60, 0xDB, 0xF8, 0x00, 0x00, 0xF9, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x19, 0x44, 0x01, 0x32, -0x00, 0x28, 0xF9, 0x60, 0x7A, 0x60, 0xB1, 0x68, 0x36, 0xDB, 0xCD, 0xF8, 0x00, 0x90, 0x00, 0x22, 0x20, 0x46, 0xF3, 0xF7, -0x6F, 0xFC, 0xB8, 0xF1, 0x00, 0x0F, 0x01, 0xD0, 0xC8, 0xF8, 0x04, 0x40, 0xBC, 0x60, 0x05, 0xB3, 0xDB, 0xF8, 0x00, 0x20, -0x73, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x2E, 0xDB, 0x03, 0x96, 0xA0, 0x46, 0x1E, 0x46, 0x2B, 0x46, 0xF2, 0x68, -0x35, 0x89, 0x01, 0x32, 0x92, 0xB2, 0x51, 0x1B, 0x89, 0xB2, 0x03, 0xEB, 0x0A, 0x00, 0x88, 0x42, 0xBB, 0xDA, 0x02, 0x93, -0xF2, 0xF7, 0x02, 0xFC, 0x00, 0x25, 0x02, 0x9B, 0x4F, 0xF0, 0x01, 0x09, 0x04, 0x46, 0x00, 0x28, 0xC4, 0xD1, 0x87, 0xF8, -0x20, 0x00, 0x04, 0x9B, 0x03, 0x98, 0x1E, 0x60, 0x05, 0x9B, 0xA3, 0xF8, 0x00, 0xA0, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x00, 0x29, 0xC6, 0xD1, 0x0B, 0x49, 0x0C, 0x48, 0x02, 0x93, 0x40, 0xF2, 0x9E, 0x22, 0x0F, 0xF0, 0x17, 0xFE, 0xB1, 0x68, -0x02, 0x9B, 0xBC, 0xE7, 0x00, 0x2B, 0xCE, 0xD1, 0x05, 0x49, 0x07, 0x48, 0x02, 0x93, 0x40, 0xF2, 0xB3, 0x22, 0x0F, 0xF0, -0x0B, 0xFE, 0x02, 0x9B, 0xC5, 0xE7, 0x00, 0xBF, 0x30, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xAC, 0x96, 0x15, 0x00, -0xA0, 0x96, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x08, 0x91, 0x07, 0x68, 0xD9, 0xF8, -0x00, 0x40, 0x1D, 0x88, 0x94, 0xF8, 0x00, 0xC0, 0xDF, 0xF8, 0xFC, 0xA0, 0x85, 0xB0, 0xB1, 0xF5, 0xC8, 0x6F, 0x0E, 0x9E, -0x03, 0x93, 0x06, 0xEB, 0x46, 0x06, 0x28, 0xBF, 0x4F, 0xF4, 0xC8, 0x61, 0xBC, 0xF1, 0x03, 0x0F, 0x08, 0xBF, 0x34, 0x4B, -0x02, 0x90, 0x07, 0xEB, 0x06, 0x16, 0x06, 0xF1, 0x14, 0x06, 0x90, 0x46, 0x08, 0xBF, 0x1E, 0x60, 0x00, 0x20, 0x2C, 0xE0, -0xAE, 0xEB, 0x03, 0x04, 0x2C, 0x44, 0x0C, 0x44, 0x52, 0x1B, 0xA4, 0xB2, 0x91, 0xB2, 0x00, 0x25, 0xBC, 0xF1, 0x03, 0x0F, -0x0D, 0xD1, 0xB1, 0xF5, 0x00, 0x6F, 0x0B, 0x46, 0x28, 0xBF, 0x4F, 0xF4, 0x00, 0x63, 0x43, 0xF0, 0x23, 0x43, 0x4F, 0xF0, -0x04, 0x12, 0xB3, 0x60, 0xF1, 0x60, 0x31, 0x61, 0x72, 0x61, 0x88, 0x44, 0xA4, 0xB3, 0xDA, 0xF8, 0x00, 0x20, 0x7B, 0x68, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x03, 0xF1, 0x14, 0x0B, 0x1C, 0xDB, 0xBC, 0xF1, 0x03, 0x0F, 0x01, 0xD1, 0xC6, 0xF8, -0x20, 0xB0, 0x38, 0x46, 0x5E, 0x46, 0x1F, 0x46, 0x21, 0x46, 0xD7, 0xE9, 0x02, 0x43, 0x01, 0x33, 0x1F, 0xFA, 0x84, 0xFE, -0x9B, 0xB2, 0xA3, 0xEB, 0x0E, 0x02, 0x05, 0xEB, 0x04, 0x0B, 0x92, 0xB2, 0x4C, 0x19, 0x94, 0x42, 0xC6, 0xF8, 0x04, 0x80, -0xC6, 0xF8, 0x00, 0xB0, 0xC0, 0xDA, 0x00, 0x24, 0xC6, 0xE7, 0x00, 0x2B, 0xE0, 0xD1, 0x4F, 0xF4, 0x4A, 0x72, 0x0D, 0x49, -0x0D, 0x48, 0x01, 0x93, 0x0F, 0xF0, 0x90, 0xFD, 0xD9, 0xF8, 0x00, 0x20, 0x01, 0x9B, 0x92, 0xF8, 0x00, 0xC0, 0xD3, 0xE7, -0xBC, 0xF1, 0x03, 0x0F, 0x02, 0xD1, 0x05, 0x4B, 0x34, 0x62, 0x5E, 0x60, 0x02, 0x9B, 0x1F, 0x60, 0x03, 0x9B, 0x1D, 0x80, -0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, 0x60, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, -0x78, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x61, 0xB3, 0x0B, 0x8A, 0xDA, 0x07, 0x12, 0xD4, 0x16, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x20, 0x02, 0xE0, 0x0B, 0x8A, 0xDB, 0x07, 0x0A, 0xD4, 0x00, 0x2A, 0x49, 0x68, 0xF9, 0xDA, 0x00, 0x29, -0xF7, 0xD1, 0x11, 0x49, 0x11, 0x48, 0x40, 0xF2, 0xE6, 0x32, 0x0F, 0xF0, 0x29, 0xBD, 0xCB, 0x68, 0x23, 0xF0, 0x03, 0x03, -0x04, 0x33, 0x0E, 0x49, 0x4A, 0x68, 0x9A, 0x42, 0x8A, 0x68, 0x08, 0xBF, 0x0B, 0x68, 0xC0, 0xF8, 0x98, 0x30, 0x22, 0xF0, -0x00, 0x40, 0x83, 0x42, 0x02, 0xF0, 0x00, 0x42, 0x38, 0xBF, 0x02, 0xF1, 0x00, 0x42, 0x13, 0x43, 0x8B, 0x60, 0x70, 0x47, -0x00, 0xF1, 0xA0, 0x03, 0xE9, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, -0xEC, 0x34, 0x17, 0x00, 0x18, 0x4B, 0x19, 0x4A, 0x18, 0x68, 0x19, 0x49, 0xDF, 0xF8, 0x7C, 0xC0, 0xF0, 0xB5, 0xD0, 0xE9, -0x00, 0x34, 0x17, 0x4D, 0x13, 0x60, 0x1C, 0x44, 0x2B, 0x60, 0x25, 0x1F, 0x0D, 0x60, 0x15, 0x4E, 0x15, 0x4D, 0x11, 0x68, -0x31, 0x60, 0x29, 0x60, 0xD0, 0xE9, 0x02, 0x10, 0xDF, 0xF8, 0x5C, 0xE0, 0x12, 0x4F, 0x54, 0x60, 0x08, 0x44, 0x69, 0x60, -0x11, 0x4C, 0x93, 0x60, 0x11, 0x4E, 0x03, 0x1F, 0xCE, 0xF8, 0x00, 0x30, 0xCC, 0xF8, 0x00, 0x10, 0x39, 0x60, 0x6E, 0x61, -0x23, 0x68, 0x10, 0x61, 0x03, 0xF4, 0x00, 0x23, 0x43, 0xF4, 0xF0, 0x23, 0x43, 0xF0, 0x25, 0x03, 0xD1, 0x60, 0x51, 0x61, -0x23, 0x60, 0xF0, 0xBD, 0x30, 0x36, 0x17, 0x00, 0xEC, 0x34, 0x17, 0x00, 0xCC, 0x81, 0x32, 0x40, 0xC8, 0x81, 0x32, 0x40, -0xD0, 0x81, 0x32, 0x40, 0xD4, 0x81, 0x32, 0x40, 0xE4, 0x81, 0x32, 0x40, 0x0C, 0x01, 0x32, 0x40, 0x05, 0x12, 0x00, 0x0C, -0xE0, 0x81, 0x32, 0x40, 0xDC, 0x81, 0x32, 0x40, 0x10, 0xB4, 0x0A, 0x4C, 0x0A, 0x49, 0x22, 0x68, 0x83, 0x02, 0x03, 0xF4, -0x80, 0x63, 0x22, 0xF4, 0x80, 0x62, 0x13, 0x43, 0x23, 0x60, 0x0B, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0xC0, 0x04, 0x00, 0xF4, -0x00, 0x20, 0x23, 0xF4, 0x00, 0x23, 0x18, 0x43, 0x08, 0x60, 0x70, 0x47, 0x24, 0x03, 0x32, 0x40, 0x0C, 0x01, 0x32, 0x40, -0x90, 0xF8, 0x9C, 0x20, 0xD0, 0xF8, 0x98, 0x30, 0x6A, 0xB9, 0x0E, 0x4A, 0x12, 0x68, 0x22, 0xF0, 0x00, 0x41, 0x8B, 0x42, -0x02, 0xF0, 0x00, 0x42, 0x0A, 0x49, 0x38, 0xBF, 0x02, 0xF1, 0x00, 0x42, 0x13, 0x43, 0x0B, 0x60, 0x70, 0x47, 0x08, 0x4A, -0x12, 0x68, 0x22, 0xF0, 0x00, 0x41, 0x8B, 0x42, 0x02, 0xF0, 0x00, 0x42, 0x04, 0x49, 0x38, 0xBF, 0x02, 0xF1, 0x00, 0x42, -0x13, 0x43, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0xD0, 0x81, 0x32, 0x40, 0xE0, 0x81, 0x32, 0x40, 0x10, 0xB5, 0x03, 0x8E, -0x82, 0xB0, 0xC3, 0xB1, 0x2D, 0x4B, 0xC4, 0x69, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x38, 0xDB, 0xA3, 0x68, -0x42, 0x6D, 0x1B, 0x88, 0x03, 0xF0, 0xFC, 0x03, 0x24, 0x2B, 0x43, 0xD0, 0x94, 0x2B, 0x03, 0xD1, 0x42, 0xF2, 0x02, 0x03, -0x93, 0x43, 0x36, 0xD0, 0xE3, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x07, 0xE0, 0x21, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x18, 0xDB, 0x00, 0xF1, 0xA0, 0x03, 0x1E, 0x49, 0x0A, 0x69, 0x9A, 0x42, 0x4A, 0x69, 0x08, 0xBF, -0xCB, 0x68, 0xC0, 0xF8, 0x98, 0x30, 0x22, 0xF0, 0x00, 0x44, 0xA3, 0x42, 0x02, 0xF0, 0x00, 0x42, 0x38, 0xBF, 0x02, 0xF1, -0x00, 0x42, 0x13, 0x43, 0x4B, 0x61, 0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x9E, 0xBF, 0xC3, 0x69, 0x00, 0x2B, -0xE3, 0xD0, 0x12, 0x49, 0x12, 0x48, 0x4F, 0xF4, 0xD7, 0x72, 0x05, 0xE0, 0x00, 0x2C, 0xC4, 0xD1, 0x0E, 0x49, 0x10, 0x48, -0x4F, 0xF4, 0xC2, 0x72, 0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0x0F, 0xF0, 0x2F, 0xBC, 0x0D, 0x4B, 0x01, 0x90, 0xD3, 0xF8, -0x74, 0x33, 0x98, 0x47, 0x01, 0x98, 0xC1, 0xE7, 0x93, 0x04, 0xBF, 0xD5, 0x08, 0x4B, 0x01, 0x90, 0xD3, 0xF8, 0xFC, 0x33, -0x98, 0x47, 0x01, 0x98, 0xB8, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xEC, 0x34, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xC8, 0x96, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x29, 0x46, 0xD0, 0x2D, 0xE9, 0xF8, 0x4F, -0x07, 0x46, 0xDF, 0xF8, 0x8C, 0xA0, 0xDF, 0xF8, 0x8C, 0xB0, 0x08, 0x46, 0x1F, 0x49, 0x99, 0x46, 0x4F, 0xF0, 0x00, 0x08, -0xD7, 0xE9, 0x02, 0x45, 0x01, 0x35, 0xAB, 0xB2, 0xA6, 0xB2, 0x9D, 0x1B, 0xAD, 0xB2, 0xAD, 0x1A, 0xA8, 0x42, 0x23, 0xDB, -0xF6, 0x1A, 0x16, 0x44, 0x06, 0x44, 0xB6, 0xB2, 0xA8, 0xB2, 0xC5, 0x1C, 0x4F, 0xEA, 0x98, 0x03, 0xAD, 0x08, 0x14, 0x44, -0x09, 0xEB, 0x83, 0x03, 0x08, 0xD0, 0x1A, 0x46, 0x03, 0xEB, 0x85, 0x05, 0xE3, 0x1A, 0xD4, 0x58, 0x42, 0xF8, 0x04, 0x4B, -0xAA, 0x42, 0xFA, 0xD1, 0xBE, 0xB1, 0xDA, 0xF8, 0x00, 0x30, 0x7F, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x80, 0x44, 0x00, 0x2B, -0x1F, 0xFA, 0x88, 0xF8, 0x04, 0xDB, 0x30, 0x46, 0x00, 0x22, 0xD1, 0xE7, 0x00, 0x26, 0xDE, 0xE7, 0x00, 0x2F, 0xF8, 0xD1, -0x40, 0xF2, 0x2D, 0x42, 0x58, 0x46, 0x0F, 0xF0, 0xFF, 0xFB, 0x02, 0x49, 0xF1, 0xE7, 0xBD, 0xE8, 0xF8, 0x8F, 0x70, 0x47, -0x70, 0x79, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0xEC, 0x96, 0x15, 0x00, 0x38, 0xB5, 0x13, 0x4C, 0x94, 0xF8, 0x21, 0x30, -0xA3, 0xB9, 0x20, 0x61, 0x11, 0x48, 0xE3, 0x69, 0xE2, 0x68, 0x61, 0x69, 0x65, 0x68, 0x90, 0xF8, 0xB9, 0x00, 0x13, 0x44, -0x29, 0x44, 0xA2, 0x68, 0x61, 0x61, 0x01, 0x25, 0xB3, 0xEB, 0x40, 0x2F, 0xE3, 0x61, 0x84, 0xF8, 0x21, 0x50, 0xA2, 0x61, -0x03, 0xD2, 0x38, 0xBD, 0xA3, 0x69, 0x58, 0x60, 0xE8, 0xE7, 0x20, 0x69, 0xF3, 0xF7, 0x90, 0xF9, 0x00, 0x23, 0xC4, 0xE9, -0x04, 0x33, 0xC4, 0xE9, 0x06, 0x33, 0x84, 0xF8, 0x21, 0x30, 0x38, 0xBD, 0x30, 0x65, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0xAB, 0x4E, 0xD0, 0xF8, 0x1C, 0xC0, 0x35, 0x68, 0x86, 0xB0, 0x04, 0x46, 0xCD, 0xF8, 0x14, 0xC0, -0xAD, 0xF8, 0x0E, 0x30, 0x2B, 0x78, 0x02, 0x2B, 0x91, 0x46, 0x00, 0xF0, 0xAD, 0x80, 0x01, 0x2B, 0xDF, 0xF8, 0xC4, 0x82, -0x22, 0xD0, 0x01, 0x20, 0x00, 0x23, 0xD8, 0xF8, 0xAC, 0x52, 0x4A, 0x46, 0xCD, 0xE9, 0x00, 0x30, 0x0D, 0xF1, 0x0E, 0x03, -0x05, 0xA8, 0xA8, 0x47, 0x33, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x05, 0x46, 0x1F, 0xD0, 0x01, 0x2B, 0x59, 0xD0, 0xD8, 0xF8, -0x98, 0x32, 0x05, 0x99, 0x20, 0x46, 0x2A, 0x46, 0x98, 0x47, 0x0E, 0x9B, 0x63, 0x60, 0x0F, 0x9B, 0x95, 0x48, 0xA3, 0x60, -0x21, 0x46, 0x0D, 0xF0, 0x3F, 0xFF, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0xD8, 0xF8, 0xB0, 0x52, 0x00, 0x23, 0x00, 0x93, -0x0D, 0xF1, 0x0E, 0x02, 0x05, 0xA8, 0xA8, 0x47, 0x33, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x05, 0x46, 0xDF, 0xD1, 0xDF, 0xF8, -0x64, 0x92, 0x99, 0xF8, 0x02, 0x30, 0x00, 0x2B, 0xDB, 0xD0, 0xB9, 0xF8, 0x00, 0x30, 0x7A, 0x68, 0x3A, 0x33, 0xBB, 0x60, -0xD3, 0x78, 0x6F, 0xF3, 0x87, 0x13, 0xD3, 0x70, 0x99, 0xF8, 0x03, 0x30, 0xBB, 0x73, 0x00, 0x23, 0x3B, 0x60, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x7F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x20, 0xA2, 0x7E, 0x48, -0xDA, 0xF8, 0x00, 0x30, 0x39, 0x46, 0x01, 0x33, 0xCA, 0xF8, 0x00, 0x30, 0x0D, 0xF0, 0x08, 0xFF, 0xD8, 0xF8, 0x44, 0x34, -0x98, 0x47, 0xDA, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x75, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCA, 0xF8, 0x00, 0x30, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x00, 0x23, 0xC9, 0xE9, 0x00, 0x33, 0x32, 0x68, 0x13, 0x78, 0x01, 0x2B, 0xA5, 0xD1, 0xF2, 0xF7, -0x15, 0xF9, 0x07, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x92, 0x80, 0x6D, 0x4E, 0x96, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x00, 0xF0, -0x96, 0x80, 0x73, 0x68, 0x81, 0x68, 0x32, 0x68, 0x03, 0xF1, 0x01, 0x0C, 0x4F, 0xEA, 0x0C, 0x63, 0x21, 0xF0, 0xFE, 0x41, -0x03, 0xF0, 0xFE, 0x43, 0x0B, 0x43, 0x00, 0x21, 0x83, 0x60, 0x00, 0x91, 0x3A, 0x23, 0x04, 0xF1, 0x30, 0x01, 0xC6, 0xF8, -0x04, 0xC0, 0xF3, 0xF7, 0x43, 0xF9, 0x60, 0x4A, 0xF3, 0x68, 0x92, 0xF8, 0xB8, 0x20, 0x3A, 0x33, 0xF3, 0x60, 0x38, 0x46, -0x00, 0x2A, 0x40, 0xF0, 0xA7, 0x80, 0xD6, 0xE9, 0x01, 0x12, 0xF3, 0xF7, 0xD3, 0xF8, 0x5A, 0x49, 0x0A, 0x78, 0x00, 0x23, -0x42, 0xF0, 0x01, 0x02, 0x0A, 0x70, 0x73, 0x60, 0xF3, 0x60, 0x33, 0x60, 0xB3, 0x60, 0x86, 0xF8, 0x20, 0x30, 0x68, 0xE7, -0x54, 0x4D, 0x42, 0xF2, 0x24, 0x03, 0xEA, 0x58, 0x00, 0x2A, 0x68, 0xD0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x4A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x42, 0xF2, 0x34, 0x02, 0xDF, 0xF8, 0x44, 0x81, 0xA8, 0x5A, 0xD8, 0xF8, -0x00, 0x30, 0x02, 0x91, 0x01, 0x33, 0xB0, 0xF5, 0xC3, 0x7F, 0xC8, 0xF8, 0x00, 0x30, 0x48, 0x48, 0xDF, 0xF8, 0x3C, 0xA1, -0x84, 0xBF, 0x00, 0x23, 0xAB, 0x52, 0x0D, 0xF0, 0xD7, 0xFE, 0x45, 0x4A, 0x02, 0x99, 0xD2, 0xF8, 0x00, 0xC0, 0x42, 0xF2, -0x34, 0x0E, 0x07, 0x46, 0x35, 0xF8, 0x0E, 0x30, 0xBB, 0x81, 0x0C, 0xEB, 0xC3, 0x00, 0x04, 0xF1, 0x30, 0x02, 0x42, 0x60, -0x4C, 0xF8, 0x33, 0xA0, 0xDF, 0xF8, 0x08, 0xC1, 0x78, 0x60, 0x95, 0xF8, 0x02, 0xAC, 0x9C, 0xF8, 0x03, 0x00, 0xD8, 0xF8, -0x00, 0x20, 0x01, 0x33, 0x0A, 0xF1, 0x01, 0x0A, 0x01, 0x30, 0x25, 0xF8, 0x0E, 0x30, 0x85, 0xF8, 0x02, 0xAC, 0x8C, 0xF8, -0x03, 0x00, 0x3A, 0xB1, 0x2B, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC8, 0xF8, 0x00, 0x20, 0x0A, 0xB9, 0x00, 0x2B, 0x48, 0xD1, -0x33, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x7F, 0xF4, 0xFE, 0xAE, 0xDF, 0xF8, 0xC4, 0x80, 0x00, 0x23, 0xD8, 0xF8, 0xB4, 0x52, -0x21, 0xE7, 0x23, 0x7C, 0x29, 0x48, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, 0x0F, 0xF0, 0x2E, 0xF8, 0x20, 0x4B, 0x83, 0xF8, -0x20, 0x70, 0x26, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, 0x76, 0xF8, 0x23, 0x7C, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, -0xF9, 0xE6, 0x03, 0x7C, 0xDF, 0xF8, 0x8C, 0x80, 0x43, 0xF0, 0x01, 0x03, 0x03, 0x74, 0xD8, 0xF8, 0x98, 0x32, 0x61, 0x46, -0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x19, 0x4C, -0xD8, 0xF8, 0x44, 0x24, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x90, 0x47, 0x23, 0x68, 0x01, 0x46, 0x33, 0xB1, 0x0A, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x11, 0x48, 0xF0, 0xF7, 0x31, 0xFE, 0xE0, 0xE6, -0xFF, 0xF7, 0x7E, 0xFE, 0x59, 0xE7, 0x62, 0xB6, 0xB4, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x24, 0x65, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x30, 0x65, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x9C, 0x4E, 0x17, 0x00, -0x7C, 0x36, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, 0x0C, 0x97, 0x15, 0x00, 0x20, 0x97, 0x15, 0x00, -0x6C, 0x28, 0x17, 0x00, 0xF8, 0x96, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x54, 0x65, 0x17, 0x00, 0x3C, 0x00, 0x00, 0xC0, -0x2D, 0xE9, 0xF0, 0x4F, 0xAE, 0x4B, 0xDF, 0xF8, 0x00, 0xA3, 0xC1, 0x69, 0x9A, 0xF8, 0x32, 0x20, 0x1B, 0x68, 0x87, 0xB0, -0x04, 0x46, 0x05, 0x91, 0xAD, 0xF8, 0x12, 0x20, 0x1B, 0x78, 0x03, 0x2B, 0x00, 0xF0, 0x3F, 0x81, 0x02, 0x2B, 0x77, 0xD0, -0xA6, 0x4A, 0x27, 0x8E, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0xBF, 0x80, 0x01, 0x2B, 0xA3, 0x4E, -0x4F, 0xF0, 0x00, 0x03, 0x00, 0xF0, 0x3A, 0x81, 0xCD, 0xE9, 0x00, 0x33, 0x39, 0x46, 0xD6, 0xF8, 0xAC, 0x52, 0x0D, 0xF1, -0x12, 0x03, 0x5A, 0x46, 0x05, 0xA8, 0xA8, 0x47, 0x07, 0xEB, 0x0B, 0x01, 0xCA, 0xF8, 0x1C, 0x10, 0x07, 0x46, 0x00, 0x21, -0x04, 0xF1, 0x58, 0x00, 0xEB, 0xF7, 0x7E, 0xFD, 0x94, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x00, 0xF0, 0xB8, 0x80, -0x01, 0x2B, 0x00, 0xF0, 0x49, 0x81, 0x02, 0x2B, 0x41, 0xD1, 0xDF, 0xF8, 0x88, 0xA2, 0x9A, 0xF8, 0x02, 0x30, 0x00, 0x2B, -0x3B, 0xD0, 0xBA, 0xF8, 0x00, 0x30, 0xD8, 0xF8, 0x04, 0x20, 0x3A, 0x33, 0xC8, 0xF8, 0x08, 0x30, 0xD3, 0x78, 0x6F, 0xF3, -0x87, 0x13, 0xD3, 0x70, 0x9A, 0xF8, 0x03, 0x30, 0x88, 0xF8, 0x0E, 0x30, 0x00, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xEF, 0xF3, -0x10, 0x83, 0xDD, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x83, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x14, 0xB2, 0x82, 0x48, -0xDB, 0xF8, 0x00, 0x30, 0x41, 0x46, 0x01, 0x33, 0xCB, 0xF8, 0x00, 0x30, 0x0D, 0xF0, 0x8C, 0xFD, 0xD6, 0xF8, 0x44, 0x34, -0x98, 0x47, 0xDB, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x79, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x72, 0x4B, 0x1A, 0x68, 0x00, 0x23, 0xCA, 0xE9, 0x00, 0x33, 0x13, 0x78, 0x03, 0x2B, 0x00, 0xF0, -0x9E, 0x81, 0xD6, 0xF8, 0x98, 0x32, 0x05, 0x99, 0x3A, 0x46, 0x20, 0x46, 0x98, 0x47, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x6E, 0x4E, 0x42, 0xF2, 0x24, 0x03, 0xF2, 0x58, 0x00, 0x2A, 0x00, 0xF0, 0x60, 0x81, 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x66, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x42, 0xF2, 0x34, 0x02, 0x67, 0x4F, 0xB1, 0x5A, 0x3B, 0x68, -0x66, 0x48, 0x01, 0x33, 0xB1, 0xF5, 0xC3, 0x7F, 0x3B, 0x60, 0x84, 0xBF, 0x00, 0x23, 0xB3, 0x52, 0x0D, 0xF0, 0x92, 0xFD, -0x62, 0x4A, 0x42, 0xF2, 0x34, 0x0E, 0xD2, 0xF8, 0x00, 0xC0, 0x36, 0xF8, 0x0E, 0x30, 0x83, 0x81, 0x0C, 0xEB, 0xC3, 0x01, -0x04, 0xF1, 0x30, 0x02, 0x4A, 0x60, 0x5D, 0x4A, 0x4C, 0xF8, 0x33, 0x20, 0xDF, 0xF8, 0x94, 0xC1, 0x41, 0x60, 0x96, 0xF8, -0x02, 0x1C, 0x9C, 0xF8, 0x03, 0x20, 0x80, 0x46, 0x38, 0x68, 0x01, 0x33, 0x01, 0x31, 0x01, 0x32, 0x26, 0xF8, 0x0E, 0x30, -0x86, 0xF8, 0x02, 0x1C, 0x8C, 0xF8, 0x03, 0x20, 0x30, 0xB1, 0x4C, 0x4B, 0x01, 0x38, 0x1B, 0x68, 0x38, 0x60, 0x08, 0xB9, -0x03, 0xB1, 0x62, 0xB6, 0x46, 0x4B, 0x27, 0x8E, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x06, 0xDA, 0x00, 0x2F, -0x00, 0xF0, 0x07, 0x81, 0xB7, 0xF5, 0x40, 0x5F, 0x00, 0xF2, 0x0A, 0x81, 0x3E, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, -0x7F, 0xF4, 0x34, 0xAF, 0x3D, 0x4E, 0x39, 0x46, 0xD6, 0xF8, 0xB4, 0x72, 0x00, 0x23, 0x00, 0x93, 0x0D, 0xF1, 0x12, 0x02, -0x05, 0xA8, 0xB8, 0x47, 0x07, 0x46, 0x3C, 0xE7, 0x3F, 0x4A, 0x40, 0x48, 0x53, 0x68, 0x60, 0x66, 0x04, 0xF1, 0x30, 0x00, -0xA0, 0x66, 0x04, 0xF1, 0x68, 0x00, 0x3D, 0x49, 0xC4, 0xF8, 0x6C, 0x90, 0x18, 0x62, 0x3A, 0x23, 0x21, 0x67, 0x63, 0x67, -0x4F, 0xF0, 0x04, 0x11, 0xA3, 0x67, 0x00, 0x23, 0x03, 0x90, 0xE1, 0x67, 0xC4, 0xF8, 0x88, 0x30, 0x10, 0x68, 0x03, 0x99, -0x05, 0x22, 0xF0, 0xF7, 0xC5, 0xF9, 0x34, 0x4A, 0x13, 0x68, 0x18, 0x05, 0xFC, 0xD5, 0x13, 0x68, 0x59, 0x03, 0x03, 0xD5, -0x11, 0x68, 0x41, 0xF0, 0x80, 0x61, 0x11, 0x60, 0x1A, 0x05, 0x21, 0xD5, 0xEF, 0xF3, 0x05, 0x80, 0x2D, 0x49, 0x41, 0xF2, -0x4C, 0x12, 0x8B, 0x58, 0x43, 0xF0, 0x00, 0x63, 0x8B, 0x50, 0x00, 0x28, 0x40, 0xF0, 0xF3, 0x80, 0xEF, 0xF3, 0x10, 0x83, -0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x1C, 0x4B, 0x25, 0x48, 0x19, 0x68, 0x00, 0x25, -0x4A, 0x1C, 0x1A, 0x60, 0x45, 0x61, 0x2A, 0xB1, 0x15, 0x4A, 0x19, 0x60, 0x13, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, -0x1F, 0x4D, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x1E, 0x4B, 0x18, 0x68, 0xA9, 0xF1, 0x14, 0x01, 0x00, 0xF5, 0x0B, 0x70, -0x0D, 0xF0, 0xAC, 0xFC, 0x01, 0x23, 0x2B, 0x60, 0xEF, 0xF7, 0x2E, 0xFD, 0x31, 0xE7, 0x0A, 0xF1, 0x40, 0x00, 0x0F, 0xF0, -0x67, 0xF9, 0x05, 0x4B, 0x1B, 0x68, 0x81, 0x46, 0x1B, 0x78, 0x00, 0xF1, 0x3C, 0x0B, 0xB5, 0xE6, 0x39, 0x46, 0xD6, 0xF8, -0xB0, 0x72, 0x8C, 0xE7, 0x78, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0xA8, 0x56, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, -0x3C, 0x00, 0x00, 0xC0, 0x60, 0x65, 0x17, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0x3A, 0x00, 0x00, 0xA3, 0x4C, 0x11, 0x07, 0x40, -0x00, 0x00, 0x07, 0x40, 0x48, 0x35, 0x17, 0x00, 0x54, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0xB0, 0xDE, 0x17, 0x00, -0x54, 0x65, 0x17, 0x00, 0xF1, 0xF7, 0x92, 0xFE, 0x83, 0x46, 0x00, 0x28, 0x3D, 0xD0, 0xDF, 0xF8, 0x38, 0xA1, 0x9A, 0xF8, -0x20, 0x30, 0x00, 0x2B, 0x41, 0xD0, 0xDA, 0xF8, 0x04, 0x30, 0x81, 0x68, 0xDA, 0xF8, 0x00, 0x20, 0x03, 0xF1, 0x01, 0x0C, -0x4F, 0xEA, 0x0C, 0x63, 0x21, 0xF0, 0xFE, 0x41, 0x03, 0xF0, 0xFE, 0x43, 0x0B, 0x43, 0x00, 0x21, 0x83, 0x60, 0x00, 0x91, -0x3A, 0x23, 0x04, 0xF1, 0x30, 0x01, 0xCA, 0xF8, 0x04, 0xC0, 0xF2, 0xF7, 0xBF, 0xFE, 0x3C, 0x4A, 0xDA, 0xF8, 0x0C, 0x30, -0x92, 0xF8, 0xB8, 0x20, 0x3A, 0x33, 0xCA, 0xF8, 0x0C, 0x30, 0x58, 0x46, 0x00, 0x2A, 0x63, 0xD1, 0xDA, 0xE9, 0x01, 0x12, -0xF2, 0xF7, 0x4E, 0xFE, 0x35, 0x49, 0x0A, 0x78, 0x00, 0x23, 0x42, 0xF0, 0x01, 0x02, 0x0A, 0x70, 0xCA, 0xF8, 0x04, 0x30, -0xCA, 0xF8, 0x0C, 0x30, 0xCA, 0xF8, 0x00, 0x30, 0xCA, 0xF8, 0x08, 0x30, 0x8A, 0xF8, 0x20, 0x30, 0x12, 0xE0, 0x23, 0x7C, -0x2D, 0x48, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, 0x0E, 0xF0, 0x00, 0xFE, 0x2B, 0x4B, 0x83, 0xF8, 0x20, 0xB0, 0x2B, 0x49, -0x4F, 0xF4, 0x80, 0x60, 0x0E, 0xF0, 0x48, 0xFE, 0x23, 0x7C, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, 0x27, 0x4B, 0x1B, 0x68, -0x1B, 0x78, 0x02, 0x2B, 0x3F, 0xF4, 0x5D, 0xAE, 0x9A, 0xE6, 0x25, 0x49, 0x25, 0x48, 0x40, 0xF2, 0x21, 0x52, 0x0F, 0xF0, -0x2F, 0xF8, 0x9C, 0xE6, 0x21, 0x49, 0x23, 0x48, 0x40, 0xF2, 0x23, 0x52, 0x0F, 0xF0, 0x28, 0xF8, 0x95, 0xE6, 0x23, 0x7C, -0x20, 0x4E, 0x05, 0x99, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, 0xD6, 0xF8, 0x98, 0x32, 0x20, 0x46, 0x98, 0x47, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x1A, 0x4C, 0xD6, 0xF8, 0x44, 0x24, -0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x90, 0x47, 0x23, 0x68, 0x01, 0x46, 0x33, 0xB1, 0x14, 0x4A, 0x01, 0x3B, 0x12, 0x68, -0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x12, 0x48, 0xF0, 0xF7, 0xEF, 0xFB, 0x6E, 0xE6, 0xFF, 0xF7, 0x3C, 0xFC, -0x9C, 0xE7, 0x10, 0x4B, 0x00, 0x22, 0x5A, 0x61, 0x1E, 0xE7, 0x0F, 0x4A, 0xE8, 0xE6, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, -0x9C, 0x4E, 0x17, 0x00, 0x0C, 0x97, 0x15, 0x00, 0x30, 0x65, 0x17, 0x00, 0x20, 0x97, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x34, 0x97, 0x15, 0x00, 0x44, 0x97, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0xFC, 0x96, 0x15, 0x00, 0x48, 0x35, 0x17, 0x00, 0x60, 0x65, 0x17, 0x00, 0x0D, 0x4B, 0xC1, 0x69, -0xD3, 0xF8, 0x98, 0x32, 0x10, 0xB5, 0x00, 0x22, 0x04, 0x46, 0x98, 0x47, 0x0A, 0x48, 0x03, 0x68, 0x53, 0xB1, 0x23, 0x7C, -0x43, 0xF0, 0x01, 0x03, 0x00, 0x22, 0x23, 0x74, 0x62, 0x60, 0x21, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x0D, 0xF0, 0xA0, 0xBB, -0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x19, 0xBB, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x24, 0x65, 0x17, 0x00, -0x0C, 0x4A, 0x0D, 0x49, 0x93, 0x68, 0x09, 0x68, 0x8B, 0x42, 0x11, 0xD0, 0x51, 0x68, 0x23, 0xF0, 0x00, 0x40, 0x09, 0x1A, -0x9F, 0x29, 0x0C, 0xD8, 0x11, 0x68, 0x03, 0xF0, 0x00, 0x43, 0x88, 0x42, 0x88, 0xBF, 0x03, 0xF1, 0x00, 0x43, 0x0B, 0x43, -0x93, 0x60, 0x23, 0xF0, 0x00, 0x40, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0xEC, 0x34, 0x17, 0x00, 0xD4, 0x81, 0x32, 0x40, -0x1E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x04, 0x46, 0x21, 0xDB, 0x1B, 0x4B, 0x1B, 0x68, -0x1B, 0x78, 0x9B, 0x07, 0x04, 0xD5, 0x63, 0x6D, 0x03, 0xF0, 0x3C, 0x03, 0x3C, 0x2B, 0x25, 0xD0, 0x23, 0x8E, 0x53, 0xB1, -0x62, 0x6D, 0x02, 0xF0, 0x7C, 0x02, 0x08, 0x2A, 0x0D, 0xD0, 0x0C, 0x2A, 0x19, 0xD0, 0x04, 0x2A, 0x09, 0xD0, 0x04, 0x3B, -0x23, 0x86, 0x00, 0x23, 0x10, 0x4A, 0x23, 0x74, 0x84, 0xF8, 0x9C, 0x30, 0xE4, 0x60, 0x62, 0x60, 0x10, 0xBD, 0x08, 0x3B, -0x23, 0x86, 0xF4, 0xE7, 0x0C, 0x4B, 0x42, 0x69, 0x9A, 0x42, 0xD9, 0xD0, 0x0B, 0x49, 0x0C, 0x48, 0x40, 0xF2, 0x14, 0x62, -0x0E, 0xF0, 0x98, 0xFF, 0xD2, 0xE7, 0x0C, 0x3B, 0x23, 0x86, 0xE6, 0xE7, 0x23, 0x8E, 0x04, 0x3B, 0x9B, 0xB2, 0x23, 0x86, -0xD5, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x3D, 0x48, 0x13, 0x00, 0x0D, 0xF0, 0xAD, 0xBA, -0x70, 0x79, 0x15, 0x00, 0x64, 0x97, 0x15, 0x00, 0x06, 0x4B, 0x07, 0x4A, 0x4F, 0xF4, 0x80, 0x31, 0x19, 0x60, 0x13, 0x68, -0x23, 0xF4, 0x80, 0x33, 0x13, 0x60, 0x4F, 0xF4, 0x80, 0x10, 0x0D, 0xF0, 0x7F, 0xBA, 0x00, 0xBF, 0x7C, 0x80, 0x32, 0x40, -0x80, 0x80, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x47, 0x21, 0x4D, 0x22, 0x4E, 0x6B, 0x69, 0x32, 0x68, 0x93, 0x42, 0x84, 0xB0, -0x38, 0xD0, 0xDF, 0xF8, 0x88, 0x80, 0x1F, 0x4F, 0xDF, 0xF8, 0x84, 0x90, 0x20, 0xE0, 0x6B, 0x69, 0x1D, 0x48, 0x23, 0xF0, -0x00, 0x44, 0x21, 0x46, 0x62, 0x69, 0xBA, 0x42, 0x0A, 0xD0, 0xD6, 0xF8, 0x00, 0xE0, 0xD9, 0xF8, 0x00, 0xA0, 0xCD, 0xE9, -0x00, 0xC3, 0xCD, 0xE9, 0x02, 0xEA, 0xEB, 0x68, 0x0E, 0xF0, 0xD4, 0xFC, 0x20, 0x46, 0xFF, 0xF7, 0x7F, 0xFF, 0x01, 0x23, -0x84, 0xF8, 0x9C, 0x30, 0xD8, 0xF8, 0xC0, 0x32, 0x20, 0x46, 0x98, 0x47, 0x6B, 0x69, 0x32, 0x68, 0x93, 0x42, 0x11, 0xD0, -0xD5, 0xF8, 0x10, 0xC0, 0x23, 0xF0, 0x00, 0x41, 0xAC, 0xEB, 0x01, 0x02, 0x9F, 0x2A, 0x03, 0xF0, 0x00, 0x43, 0xD4, 0xD8, -0xEA, 0x68, 0x91, 0x42, 0x88, 0xBF, 0x03, 0xF1, 0x00, 0x43, 0x13, 0x43, 0x6B, 0x61, 0xCD, 0xE7, 0x04, 0xB0, 0xBD, 0xE8, -0xF0, 0x87, 0x00, 0xBF, 0xEC, 0x34, 0x17, 0x00, 0xE4, 0x81, 0x32, 0x40, 0x0D, 0xF0, 0xAD, 0xBA, 0x90, 0x97, 0x15, 0x00, -0x88, 0x1A, 0x17, 0x00, 0xE0, 0x81, 0x32, 0x40, 0x00, 0xB5, 0x10, 0x4A, 0x10, 0x4B, 0x12, 0x68, 0x89, 0xB0, 0x08, 0x33, -0x03, 0x92, 0x53, 0xF8, 0x08, 0x2C, 0x04, 0x92, 0x53, 0xF8, 0x04, 0x2C, 0x05, 0x92, 0x1B, 0x68, 0x06, 0x93, 0x01, 0xA8, -0x00, 0x21, 0xEB, 0xF7, 0x73, 0xFA, 0x03, 0x9B, 0x03, 0xF0, 0x0F, 0x03, 0x02, 0x2B, 0x02, 0xD0, 0x09, 0xB0, 0x5D, 0xF8, -0x04, 0xFB, 0x01, 0xA8, 0x0E, 0xF0, 0x8C, 0xFF, 0x09, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x00, 0xBF, 0xB0, 0x10, 0x34, 0x40, -0xB4, 0x10, 0x34, 0x40, 0x38, 0xB5, 0xD0, 0xF8, 0xFC, 0x31, 0x04, 0x46, 0x00, 0xF5, 0xFE, 0x75, 0x4B, 0xB1, 0x28, 0x46, -0x0D, 0xF0, 0xDE, 0xFA, 0x01, 0x21, 0xFA, 0xF7, 0x2B, 0xF9, 0xD4, 0xF8, 0xFC, 0x31, 0x00, 0x2B, 0xF5, 0xD1, 0x4F, 0xF4, -0x1E, 0x72, 0x00, 0x21, 0x20, 0x46, 0xEA, 0xF7, 0xF9, 0xF9, 0x23, 0x46, 0x04, 0xF1, 0x48, 0x01, 0x21, 0x22, 0x83, 0xF8, -0xA4, 0x21, 0x83, 0xF8, 0xA5, 0x21, 0x08, 0x33, 0x8B, 0x42, 0xF8, 0xD1, 0xFF, 0x23, 0x84, 0xF8, 0x22, 0x30, 0x38, 0xBD, -0x2D, 0xE9, 0xF0, 0x43, 0x49, 0x48, 0x4A, 0x4F, 0x83, 0xB0, 0x81, 0x46, 0x0D, 0xF0, 0x72, 0xFA, 0x07, 0xF5, 0x0C, 0x75, -0x00, 0x26, 0x40, 0xF2, 0x16, 0x38, 0xA5, 0xF5, 0x0C, 0x71, 0x08, 0x46, 0x01, 0x91, 0xFF, 0xF7, 0xC7, 0xFF, 0x01, 0x99, -0x48, 0x46, 0x0D, 0xF0, 0x67, 0xFA, 0xA5, 0xF1, 0x28, 0x04, 0x20, 0x46, 0x0D, 0xF0, 0x5E, 0xFA, 0x04, 0xF1, 0x28, 0x00, -0x08, 0x34, 0x0D, 0xF0, 0x59, 0xFA, 0xAC, 0x42, 0xF5, 0xD1, 0x4F, 0x36, 0x46, 0x45, 0x04, 0xF5, 0x1E, 0x75, 0xE4, 0xD1, -0x38, 0x4D, 0x40, 0xF2, 0x52, 0x48, 0xA5, 0xF1, 0x28, 0x04, 0x20, 0x46, 0x0D, 0xF0, 0x4A, 0xFA, 0x04, 0xF1, 0x28, 0x00, -0x08, 0x34, 0x0D, 0xF0, 0x45, 0xFA, 0xAC, 0x42, 0xF5, 0xD1, 0x4F, 0x36, 0x46, 0x45, 0x04, 0xF5, 0x1E, 0x75, 0xEE, 0xD1, -0x2F, 0x48, 0x30, 0x4D, 0x30, 0x4C, 0x00, 0xF1, 0x30, 0x06, 0xFF, 0xF7, 0x97, 0xFF, 0x41, 0xF6, 0xF8, 0x12, 0x4F, 0xF0, -0x00, 0x08, 0x41, 0xF6, 0x64, 0x11, 0x41, 0xF6, 0xD0, 0x03, 0xBD, 0x50, 0x06, 0xF5, 0x12, 0x70, 0x86, 0xF8, 0x00, 0x80, -0x4F, 0xF0, 0x20, 0x62, 0x7C, 0x50, 0xFA, 0x50, 0xFF, 0xF7, 0x84, 0xFF, 0x41, 0xF6, 0x58, 0x30, 0x41, 0xF6, 0x70, 0x41, -0x07, 0xF8, 0x00, 0x80, 0x41, 0xF6, 0xDC, 0x32, 0x05, 0xF1, 0x40, 0x00, 0x78, 0x50, 0x41, 0xF6, 0x48, 0x33, 0x04, 0xF5, -0xA4, 0x61, 0xB9, 0x50, 0x06, 0xF5, 0x98, 0x60, 0x1C, 0x4A, 0xFA, 0x50, 0xFF, 0xF7, 0x6E, 0xFF, 0x41, 0xF6, 0xD0, 0x52, -0x41, 0xF6, 0xE8, 0x61, 0x41, 0xF6, 0x54, 0x63, 0x18, 0x48, 0x07, 0xF8, 0x02, 0x80, 0xC6, 0xF8, 0xE0, 0x04, 0x04, 0xF5, -0x24, 0x62, 0x06, 0xF5, 0xE7, 0x60, 0x05, 0xF1, 0x80, 0x06, 0x7E, 0x50, 0xFA, 0x50, 0xFF, 0xF7, 0x59, 0xFF, 0x42, 0xF2, -0x60, 0x16, 0x11, 0x4A, 0x42, 0xF2, 0xCC, 0x00, 0x42, 0xF2, 0x48, 0x01, 0x42, 0xF2, 0x38, 0x03, 0xC0, 0x35, 0x04, 0xF5, -0x76, 0x64, 0xBD, 0x51, 0x3C, 0x50, 0x07, 0xF8, 0x01, 0x80, 0xFA, 0x50, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x00, 0xBF, -0xF8, 0x87, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x48, 0x80, 0x17, 0x00, 0x18, 0x7E, 0x17, 0x00, 0x04, 0x38, 0x18, 0x00, -0xC0, 0x8C, 0x17, 0x00, 0x00, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x02, 0x0C, 0x00, 0x00, 0x03, 0x0D, 0x2D, 0xE9, 0xF0, 0x41, -0x05, 0x46, 0x79, 0x48, 0x95, 0xF8, 0x19, 0x80, 0x0E, 0x46, 0x0D, 0xF0, 0x11, 0xFA, 0x00, 0x28, 0x00, 0xF0, 0xE1, 0x80, -0x6B, 0x7F, 0x04, 0x46, 0x00, 0x2B, 0x40, 0xF0, 0xA5, 0x80, 0x73, 0x4F, 0x05, 0xF1, 0x12, 0x02, 0x11, 0x68, 0x2B, 0x68, -0x92, 0x88, 0x62, 0x85, 0xC4, 0xF8, 0x26, 0x10, 0x63, 0x60, 0x28, 0x7E, 0x6E, 0x4B, 0x6F, 0x4A, 0x6F, 0x49, 0x10, 0x28, -0x38, 0xBF, 0x10, 0x20, 0x20, 0x77, 0x28, 0x8A, 0xA0, 0x82, 0xA8, 0x68, 0x20, 0x61, 0x68, 0x68, 0xE0, 0x60, 0xE8, 0x68, -0xA0, 0x61, 0xE0, 0x1B, 0xC0, 0x10, 0x03, 0xFB, 0x00, 0xF3, 0xDB, 0xB2, 0x68, 0x7E, 0x84, 0xF8, 0x22, 0x00, 0x33, 0x70, -0x4F, 0xF4, 0x80, 0x70, 0x84, 0xF8, 0x23, 0x30, 0x0E, 0xF0, 0xC6, 0xFB, 0x62, 0x48, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, -0x08, 0x03, 0x4F, 0xF4, 0xC8, 0x31, 0x93, 0xF8, 0xC0, 0x24, 0xA1, 0x60, 0x22, 0xB1, 0x93, 0xF8, 0xC2, 0x24, 0x01, 0x32, -0x83, 0xF8, 0xC2, 0x24, 0x4F, 0xF6, 0xFF, 0x71, 0xA4, 0xF8, 0xE8, 0x11, 0x04, 0xF5, 0xF4, 0x72, 0x23, 0x46, 0x04, 0xF5, -0xFD, 0x75, 0x22, 0xF8, 0x02, 0x1F, 0xAA, 0x42, 0xFB, 0xD1, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x08, 0xF8, 0x00, 0xEB, -0x08, 0x05, 0x00, 0x22, 0x31, 0x78, 0x84, 0xF8, 0x30, 0x20, 0xD5, 0xF8, 0xB0, 0x54, 0x4F, 0x4A, 0x02, 0xEB, 0x81, 0x12, -0x29, 0x07, 0xC4, 0xF8, 0x48, 0x21, 0x4D, 0x49, 0x56, 0xBF, 0x08, 0xF5, 0x95, 0x62, 0x04, 0xF1, 0xB0, 0x02, 0x12, 0x18, -0xC4, 0xF8, 0xB4, 0x20, 0x0A, 0x69, 0xA2, 0xF5, 0x74, 0x22, 0xA2, 0xF5, 0x10, 0x72, 0x04, 0xF1, 0x48, 0x01, 0xC3, 0xF8, -0xA0, 0x21, 0x08, 0x33, 0x8B, 0x42, 0xFA, 0xD1, 0xEA, 0x06, 0x03, 0xD5, 0x63, 0x68, 0x43, 0xF0, 0x08, 0x03, 0x63, 0x60, -0x08, 0xF1, 0xE4, 0x08, 0x40, 0x44, 0x21, 0x46, 0x0D, 0xF0, 0x4C, 0xF9, 0x3D, 0x4B, 0xC4, 0xF8, 0x04, 0x32, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x3A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x3A, 0x4B, 0xE0, 0x6A, 0x1A, 0x68, -0x01, 0x25, 0x51, 0x19, 0x19, 0x60, 0x84, 0xF8, 0x25, 0x50, 0x08, 0xB1, 0x80, 0xF8, 0x25, 0x50, 0x21, 0xB1, 0x33, 0x49, -0x1A, 0x60, 0x0B, 0x68, 0x00, 0x2A, 0x42, 0xD0, 0xF6, 0xB2, 0x0D, 0x2E, 0x07, 0xD8, 0x4F, 0xF4, 0x1E, 0x73, 0x2C, 0x4A, -0x06, 0xFB, 0x03, 0x76, 0x13, 0x69, 0xC6, 0xF8, 0x58, 0x32, 0x00, 0x20, 0x84, 0xF8, 0x5C, 0x02, 0xBD, 0xE8, 0xF0, 0x81, -0x1F, 0x48, 0x0D, 0xF0, 0x61, 0xF9, 0x00, 0x28, 0x34, 0xD0, 0x2A, 0x46, 0xE0, 0x62, 0xC4, 0x62, 0xA9, 0x7F, 0x52, 0xF8, -0x12, 0x3F, 0x95, 0xF8, 0x1D, 0xC0, 0xC0, 0xF8, 0x26, 0x30, 0x01, 0x23, 0x8B, 0x40, 0x91, 0x88, 0x41, 0x85, 0x01, 0x3B, -0x41, 0x8D, 0x16, 0x4F, 0x1B, 0x02, 0x1B, 0xB2, 0x21, 0xEA, 0x03, 0x01, 0x09, 0xB2, 0x41, 0x85, 0xB5, 0xF8, 0x16, 0xE0, -0xAE, 0xEB, 0x0C, 0x2C, 0x03, 0xEA, 0x0C, 0x03, 0xA0, 0xEB, 0x07, 0x0E, 0xDF, 0xF8, 0x3C, 0xC0, 0x4F, 0xEA, 0xEE, 0x0E, -0x0B, 0x43, 0x0C, 0xFB, 0x0E, 0xF1, 0x4F, 0xF0, 0xFF, 0x0C, 0x43, 0x85, 0x80, 0xF8, 0x23, 0x10, 0xA0, 0xF8, 0x20, 0xC0, -0x2A, 0xE7, 0x00, 0x2B, 0xBA, 0xD0, 0x62, 0xB6, 0xB8, 0xE7, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x02, 0x48, 0x21, 0x46, -0x0D, 0xF0, 0xE2, 0xF8, 0x01, 0x20, 0xBD, 0xE7, 0xF8, 0x87, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xAF, 0x16, 0x37, 0x61, -0xEC, 0x97, 0x15, 0x00, 0xDC, 0x97, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x04, 0x39, 0x18, 0x00, 0x00, 0x10, 0x50, 0x40, -0x0F, 0xCC, 0xFF, 0xFF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x33, 0x4F, 0xDF, 0xF8, -0xE4, 0x80, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x00, 0x74, 0x4F, 0xF4, 0xA4, 0x63, 0x94, 0xF8, 0x22, 0x60, 0x03, 0xFB, -0x06, 0x83, 0x05, 0x46, 0x93, 0xF8, 0xC0, 0x24, 0x22, 0xB1, 0x93, 0xF8, 0xC2, 0x24, 0x01, 0x3A, 0x83, 0xF8, 0xC2, 0x24, -0x29, 0x4A, 0x2A, 0x49, 0x2B, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x0E, 0xF0, 0xD5, 0xFA, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, -0x06, 0x80, 0xE4, 0x30, 0x21, 0x46, 0x0D, 0xF0, 0xF3, 0xF8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x21, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x21, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x73, 0x11, 0x68, 0xD8, 0x6A, -0x4E, 0x1C, 0x4F, 0xF0, 0x00, 0x0C, 0x16, 0x60, 0x83, 0xF8, 0x25, 0xC0, 0xD8, 0xB1, 0x80, 0xF8, 0x25, 0xC0, 0x96, 0xB9, -0xFF, 0xF7, 0xE4, 0xFD, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x75, 0x16, 0x48, 0xE9, 0x6A, 0x0D, 0xF0, 0x80, 0xF8, -0x20, 0x46, 0xFF, 0xF7, 0xD9, 0xFD, 0x21, 0x46, 0x12, 0x48, 0xBD, 0xE8, 0xF0, 0x41, 0x0D, 0xF0, 0x77, 0xB8, 0x0E, 0x48, -0x11, 0x60, 0x02, 0x68, 0x41, 0xB1, 0xD8, 0x6A, 0xE6, 0xE7, 0x00, 0x2E, 0xEE, 0xD0, 0x0A, 0x4B, 0x11, 0x60, 0x1A, 0x68, -0x00, 0x29, 0xE9, 0xD1, 0x02, 0xB1, 0x62, 0xB6, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x73, 0xD8, 0x6A, 0x00, 0x28, -0xE0, 0xD0, 0xD5, 0xE7, 0x68, 0x65, 0x17, 0x00, 0x00, 0x98, 0x15, 0x00, 0xDC, 0x97, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0xF8, 0x87, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x44, 0x78, 0xDF, 0xF8, -0x14, 0x81, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x04, 0xF6, 0x08, 0xEB, 0x06, 0x07, 0x38, 0x36, 0x87, 0xF8, 0x9A, 0x10, -0x90, 0xF8, 0x28, 0x30, 0x87, 0xF8, 0x98, 0x30, 0x03, 0x78, 0x87, 0xF8, 0x99, 0x30, 0x46, 0x44, 0x05, 0x46, 0x48, 0x22, -0x30, 0x46, 0x00, 0x21, 0x97, 0xF8, 0x22, 0x90, 0xE9, 0xF7, 0xA0, 0xFF, 0x97, 0xF8, 0x98, 0x30, 0x04, 0x2B, 0x55, 0xD8, -0xDF, 0xE8, 0x03, 0xF0, 0x03, 0x3F, 0x54, 0x03, 0x27, 0x00, 0x21, 0xF0, 0x29, 0xF8, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x04, 0x83, 0x03, 0xF1, 0x80, 0x02, 0x20, 0xF0, 0x7F, 0x40, 0xC3, 0xF8, 0x80, 0x00, 0x00, 0x23, 0x53, 0x60, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x04, 0x83, 0x01, 0x22, 0xD5, 0xE9, 0x02, 0x40, 0x29, 0x69, 0x83, 0xF8, 0x9B, 0x20, 0x6A, 0x69, -0xC3, 0xF8, 0xB0, 0x60, 0xC3, 0xE9, 0x27, 0x40, 0xC3, 0xE9, 0x29, 0x12, 0x2A, 0x79, 0x83, 0xF8, 0xAC, 0x20, 0xBD, 0xE8, -0xF8, 0x83, 0x20, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x09, 0x39, 0x19, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x99, 0xF8, -0x62, 0x00, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x04, 0x81, 0x02, 0x28, 0xC1, 0xE9, 0x20, 0x23, 0xD7, 0xD1, 0x15, 0xA3, -0xD3, 0xE9, 0x00, 0x23, 0xC1, 0xE9, 0x20, 0x23, 0xD1, 0xE7, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x83, 0xAA, 0x69, -0xC3, 0xF8, 0x88, 0x20, 0xEA, 0x69, 0xC3, 0xF8, 0x8C, 0x20, 0x2A, 0x6A, 0xC3, 0xF8, 0x90, 0x20, 0x00, 0x20, 0x6A, 0x6A, -0xC3, 0xF8, 0x94, 0x20, 0x00, 0x21, 0xC3, 0xE9, 0x20, 0x01, 0xBC, 0xE7, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x83, -0x00, 0x20, 0x00, 0x21, 0xC3, 0xE9, 0x20, 0x01, 0xB3, 0xE7, 0x00, 0xBF, 0xAF, 0xF3, 0x00, 0x80, 0x36, 0x5C, 0x36, 0x5C, -0x36, 0x5C, 0x36, 0x5C, 0x37, 0x5C, 0x36, 0x5C, 0x36, 0x5C, 0x36, 0x5C, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x00, 0x23, 0x01, 0x22, 0x80, 0xF8, 0x30, 0x20, 0x80, 0xF8, 0x9B, 0x30, 0xC0, 0xF8, 0xB0, 0x30, 0x70, 0x47, 0x00, 0xBF, -0x2D, 0xE9, 0xF0, 0x47, 0xD1, 0xF8, 0xFC, 0xA1, 0x82, 0xB0, 0xBA, 0xF1, 0x00, 0x0F, 0x32, 0xD0, 0x00, 0x24, 0xDF, 0xF8, -0x6C, 0x80, 0x0D, 0x46, 0x06, 0x46, 0x91, 0x46, 0x27, 0x46, 0x10, 0xE0, 0x80, 0xF8, 0x5D, 0x70, 0xD8, 0xF8, 0x98, 0x33, -0xC1, 0x7E, 0x01, 0x34, 0x98, 0x47, 0xB9, 0xF1, 0x00, 0x0F, 0x01, 0xD0, 0x4C, 0x45, 0x1F, 0xD0, 0xD5, 0xF8, 0xFC, 0xA1, -0xBA, 0xF1, 0x00, 0x0F, 0x1A, 0xD0, 0x30, 0x46, 0x01, 0x97, 0xF8, 0xF7, 0x6B, 0xFA, 0x03, 0x46, 0x50, 0x46, 0x9B, 0xB1, -0x15, 0xF0, 0x34, 0xFC, 0x03, 0x46, 0x01, 0xAA, 0x29, 0x46, 0x30, 0x46, 0x63, 0xB1, 0xD8, 0xF8, 0x10, 0x30, 0x98, 0x47, -0x01, 0x9B, 0x3B, 0xB9, 0x00, 0x28, 0xD9, 0xD1, 0x05, 0xF5, 0xFE, 0x70, 0x0C, 0xF0, 0xC2, 0xFF, 0xD4, 0xE7, 0x54, 0x46, -0x20, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x88, 0x1A, 0x17, 0x00, 0x0A, 0x4B, 0x9B, 0x68, 0x93, 0xF8, 0x62, 0x20, -0x7A, 0xB9, 0x93, 0xF8, 0x64, 0x20, 0x62, 0xB1, 0x93, 0xF8, 0x6D, 0x20, 0x4A, 0xB1, 0x93, 0xF8, 0x6E, 0x20, 0x08, 0x2A, -0x05, 0xD8, 0x01, 0x23, 0x93, 0x40, 0x01, 0x3B, 0x02, 0x4A, 0x1B, 0x02, 0x13, 0x60, 0x70, 0x47, 0x00, 0x88, 0x17, 0x00, -0x2C, 0x00, 0x32, 0x40, 0x10, 0xB5, 0x90, 0xF8, 0xC0, 0x34, 0x04, 0x46, 0x00, 0x2B, 0x2D, 0xD1, 0x23, 0x6C, 0x1B, 0xB1, -0x1B, 0x4B, 0x20, 0x46, 0x1B, 0x6B, 0x98, 0x47, 0x63, 0x68, 0xD8, 0x07, 0x1A, 0xD5, 0x19, 0x4A, 0x11, 0x68, 0x89, 0x01, -0x17, 0xD5, 0x23, 0xF0, 0x01, 0x03, 0x63, 0x60, 0x16, 0x4A, 0x41, 0xF2, 0x14, 0x33, 0xD3, 0x5C, 0x01, 0x2B, 0x41, 0xF2, -0x13, 0x33, 0x8C, 0xBF, 0x01, 0x21, 0x00, 0x21, 0xD1, 0x54, 0x12, 0x4B, 0x93, 0xF8, 0xB6, 0x30, 0x23, 0xB1, 0x11, 0x4B, -0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x0C, 0xD0, 0x10, 0xBD, 0x12, 0x68, 0x92, 0x01, 0xFB, 0xD4, 0x0D, 0x4A, 0x92, 0xF8, -0x24, 0x20, 0x00, 0x2A, 0xF6, 0xD0, 0xDE, 0xE7, 0x0A, 0xF0, 0x34, 0xF8, 0xCE, 0xE7, 0xF8, 0xF7, 0x1D, 0xFD, 0x09, 0x4A, -0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, -0x00, 0x40, 0x1E, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x8C, 0x00, 0x32, 0x40, -0x19, 0x48, 0x2D, 0xE9, 0xF0, 0x41, 0x18, 0x22, 0x80, 0x46, 0x00, 0x21, 0xE9, 0xF7, 0x72, 0xFE, 0x40, 0x46, 0x0C, 0xF0, -0xFF, 0xFE, 0x08, 0xF1, 0x08, 0x00, 0x14, 0x4C, 0x14, 0x4F, 0x0C, 0xF0, 0xF9, 0xFE, 0x04, 0xF5, 0xA4, 0x56, 0x45, 0x46, -0x4F, 0xF4, 0xA4, 0x62, 0x00, 0x21, 0x20, 0x46, 0xE9, 0xF7, 0x60, 0xFE, 0x7F, 0x23, 0xD7, 0xF8, 0x50, 0x24, 0x24, 0x63, -0x05, 0x21, 0x84, 0xF8, 0x62, 0x10, 0x84, 0xF8, 0x65, 0x30, 0x84, 0xF8, 0x66, 0x30, 0xE2, 0x62, 0x21, 0x46, 0x28, 0x46, -0x04, 0xF5, 0xA4, 0x64, 0x0C, 0xF0, 0xE2, 0xFE, 0xB4, 0x42, 0xE5, 0xD1, 0xFF, 0x23, 0x88, 0xF8, 0x10, 0x30, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x06, 0x4B, -0x9C, 0x68, 0x3C, 0xB1, 0x05, 0x4D, 0xD5, 0xF8, 0x5C, 0x34, 0x20, 0x46, 0x98, 0x47, 0x24, 0x68, 0x00, 0x2C, 0xF8, 0xD1, -0x38, 0xBD, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xAC, 0x4D, 0x8D, 0xB0, -0x2C, 0x68, 0x05, 0x90, 0x88, 0x46, 0x17, 0x46, 0x04, 0x93, 0x00, 0x2C, 0x00, 0xF0, 0xA4, 0x80, 0x00, 0x2A, 0x40, 0xF0, -0x9E, 0x80, 0xAC, 0x68, 0x00, 0x2C, 0x00, 0xF0, 0x42, 0x81, 0x05, 0x9B, 0xA4, 0x48, 0x1A, 0x68, 0x9B, 0x88, 0x06, 0x92, -0x4F, 0xF0, 0x00, 0x09, 0x07, 0x93, 0xCB, 0x46, 0xBA, 0x46, 0xE7, 0x6D, 0xB4, 0xF8, 0x60, 0x60, 0x94, 0xF8, 0xC0, 0x34, -0x39, 0x46, 0x32, 0x46, 0x0E, 0xF0, 0x76, 0xF8, 0x94, 0xF8, 0xC0, 0x34, 0x9A, 0x48, 0x1B, 0xB9, 0x8B, 0xEA, 0x07, 0x0B, -0x89, 0xEA, 0x06, 0x09, 0x24, 0x68, 0x00, 0x2C, 0xEB, 0xD1, 0x57, 0x46, 0x00, 0x2F, 0x00, 0xF0, 0x99, 0x80, 0x95, 0x4B, -0x95, 0x48, 0x49, 0xF4, 0x40, 0x74, 0xDD, 0xE9, 0x06, 0x12, 0x1C, 0x60, 0xC0, 0xF8, 0x00, 0xB0, 0x5B, 0x46, 0xCD, 0xE9, -0x00, 0x97, 0x91, 0x48, 0x0E, 0xF0, 0x58, 0xF8, 0x8B, 0x48, 0x0C, 0xF0, 0xBF, 0xFE, 0x05, 0x99, 0x8E, 0x4A, 0x80, 0xF8, -0x62, 0x80, 0x04, 0x46, 0x8D, 0x4B, 0x82, 0x1A, 0x08, 0x68, 0xE0, 0x65, 0x52, 0x11, 0x89, 0x88, 0xA4, 0xF8, 0x60, 0x10, -0x03, 0xFB, 0x02, 0xF2, 0xD3, 0xB2, 0x40, 0xF6, 0x47, 0x21, 0x40, 0xF6, 0x43, 0x22, 0xA1, 0x60, 0xE2, 0x60, 0x86, 0x49, -0x86, 0x4A, 0x21, 0x61, 0x62, 0x61, 0x40, 0xF2, 0xFF, 0x31, 0x00, 0x22, 0x84, 0xF8, 0xC0, 0x74, 0xA4, 0xF8, 0xBE, 0x14, -0x84, 0xF8, 0x63, 0x30, 0x84, 0xF8, 0x4C, 0x30, 0x22, 0x64, 0x84, 0xF8, 0x84, 0x20, 0x17, 0xB1, 0xEA, 0x7C, 0x01, 0x32, -0xEA, 0x74, 0xB8, 0xF1, 0x02, 0x0F, 0x00, 0xF0, 0x89, 0x80, 0xB8, 0xF1, 0x04, 0x0F, 0x00, 0xF0, 0xC3, 0x80, 0xB8, 0xF1, -0x00, 0x0F, 0x00, 0xF0, 0x9C, 0x80, 0x6B, 0x7C, 0xAA, 0x7C, 0x13, 0x44, 0x01, 0x2B, 0x78, 0xDD, 0x74, 0x48, 0x75, 0x4E, -0xD0, 0xE9, 0x00, 0x12, 0x42, 0xF4, 0x80, 0x72, 0x11, 0x43, 0x42, 0x60, 0x31, 0x60, 0x01, 0x2B, 0x4D, 0xD0, 0x00, 0x2F, -0x52, 0xD1, 0x04, 0x9A, 0x94, 0xF8, 0x63, 0x30, 0x6E, 0x48, 0x13, 0x70, 0x21, 0x46, 0x0C, 0xF0, 0x29, 0xFE, 0x04, 0xF5, -0x99, 0x66, 0x04, 0xF5, 0x9E, 0x69, 0x30, 0x46, 0x0C, 0xF0, 0x1E, 0xFE, 0x06, 0xF1, 0x28, 0x00, 0x08, 0x36, 0x0C, 0xF0, -0x19, 0xFE, 0x4E, 0x45, 0xF5, 0xD1, 0x04, 0xF5, 0xA3, 0x60, 0x0C, 0xF0, 0x13, 0xFE, 0x00, 0x24, 0x03, 0xE0, 0x63, 0x4B, -0x1B, 0x78, 0x23, 0xB3, 0x01, 0x24, 0xAA, 0x7C, 0x6B, 0x7C, 0x61, 0x49, 0x13, 0x44, 0x00, 0x20, 0x01, 0x2B, 0x08, 0x60, -0x04, 0xDC, 0xFF, 0xF7, 0x91, 0xFE, 0xAA, 0x7C, 0x6B, 0x7C, 0x13, 0x44, 0x04, 0x99, 0x09, 0x78, 0x4F, 0xF4, 0x80, 0x70, -0xCD, 0xE9, 0x02, 0x71, 0xCD, 0xE9, 0x00, 0x28, 0x58, 0x49, 0x59, 0x4A, 0x0E, 0xF0, 0x22, 0xF8, 0x20, 0x46, 0x0D, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x06, 0x9B, 0x8B, 0xEA, 0x03, 0x0B, 0x07, 0x9B, 0x89, 0xEA, 0x03, 0x09, 0x5F, 0xE7, 0xAC, 0x68, -0x00, 0x2C, 0x7C, 0xD0, 0xEB, 0x7C, 0x02, 0x2B, 0x7F, 0xF4, 0x37, 0xAF, 0xD2, 0xE7, 0x4F, 0x4A, 0x13, 0x68, 0x43, 0xF0, -0x01, 0x03, 0x13, 0x60, 0x00, 0x2F, 0xAC, 0xD0, 0xB8, 0xF1, 0x00, 0x01, 0x18, 0xBF, 0x01, 0x21, 0x94, 0xF8, 0x63, 0x00, -0x09, 0xF0, 0x22, 0xFD, 0x48, 0x4B, 0x84, 0xF8, 0xC1, 0x04, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x9C, 0xDA, -0xFF, 0x28, 0x9A, 0xD1, 0x44, 0x49, 0x45, 0x48, 0x40, 0xF2, 0x0B, 0x22, 0x0E, 0xF0, 0x1A, 0xFA, 0x93, 0xE7, 0x00, 0x2A, -0x8D, 0xD0, 0x83, 0xE7, 0xAA, 0x7C, 0x00, 0x2A, 0x00, 0xF0, 0xA8, 0x80, 0x39, 0x46, 0x3F, 0x48, 0x0A, 0x33, 0x4F, 0xF4, -0x1E, 0x76, 0x06, 0xFB, 0x03, 0x03, 0x01, 0x32, 0x01, 0x20, 0xAA, 0x74, 0x83, 0xF8, 0x25, 0x00, 0x11, 0xB1, 0x3A, 0x4B, -0xC4, 0xE9, 0x07, 0x34, 0x39, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x80, 0x31, 0x98, 0x47, 0x6B, 0x7C, 0x64, 0xE7, 0x36, 0x4B, -0x36, 0x49, 0xD3, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0xFF, 0x23, 0x84, 0xF8, 0x6C, 0x30, 0x34, 0x4A, 0x6B, 0x7C, 0x24, 0x62, -0xA4, 0xF8, 0x8A, 0x80, 0xC4, 0xF8, 0xB8, 0x40, 0xC4, 0xF8, 0xB4, 0x10, 0x01, 0x33, 0x92, 0xF8, 0x04, 0x21, 0xDB, 0xB2, -0x6B, 0x74, 0x00, 0x2A, 0x3F, 0xF4, 0x4C, 0xAF, 0x2C, 0x4A, 0xC4, 0xF8, 0xA4, 0x40, 0xC4, 0xE9, 0x24, 0x88, 0xC4, 0xF8, -0x98, 0x80, 0xC4, 0xF8, 0xA0, 0x20, 0x41, 0xE7, 0x2A, 0x7C, 0xFF, 0x2A, 0x17, 0xD1, 0xAA, 0x68, 0x2B, 0x74, 0x00, 0x2A, -0x4C, 0xD0, 0x14, 0x49, 0x24, 0x4B, 0x4E, 0x68, 0x12, 0x6C, 0x13, 0x48, 0x0B, 0x60, 0x33, 0x43, 0x03, 0x60, 0x00, 0x2A, -0x3F, 0xF4, 0x2F, 0xAF, 0x1B, 0x4B, 0x10, 0x7E, 0x1B, 0x6D, 0x98, 0x47, 0x29, 0xE7, 0x05, 0x98, 0x01, 0xF0, 0x4E, 0xFE, -0xEA, 0xE6, 0x01, 0x24, 0x6E, 0xE7, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x14, 0x98, 0x15, 0x00, 0x1C, 0x00, 0x32, 0x40, -0x18, 0x00, 0x32, 0x40, 0x2C, 0x98, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x19, 0x9C, 0x8F, 0xC1, 0x32, 0xE4, 0x05, 0x00, -0x22, 0xF3, 0x02, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, 0x08, 0x88, 0x17, 0x00, 0x44, 0x9E, 0x17, 0x00, -0x2C, 0x00, 0x32, 0x40, 0x74, 0x98, 0x15, 0x00, 0xC8, 0x98, 0x15, 0x00, 0x94, 0x40, 0x04, 0x40, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x50, 0x98, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0xB1, 0x7F, 0x13, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xD5, 0x65, 0x12, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x81, 0x66, 0x12, 0x00, 0xDC, 0xFF, 0xFF, 0x7F, 0x10, 0x4E, 0x11, 0x4A, -0x09, 0x92, 0x40, 0xF6, 0x85, 0x12, 0xD6, 0xF8, 0xE8, 0x30, 0x0A, 0x92, 0x98, 0x47, 0x73, 0x6C, 0x0D, 0xF1, 0x23, 0x01, -0x09, 0xA8, 0x98, 0x47, 0x00, 0x28, 0xB6, 0xD1, 0x63, 0x68, 0x32, 0x6D, 0x9D, 0xF8, 0x23, 0x00, 0x43, 0xF0, 0x80, 0x03, -0x63, 0x60, 0x90, 0x47, 0x6B, 0x7C, 0xD3, 0xE6, 0x01, 0xF0, 0x32, 0xFE, 0xAA, 0x7C, 0x94, 0xF8, 0x63, 0x30, 0x94, 0xF8, -0xC0, 0x14, 0x50, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x00, 0x85, 0x09, 0x2D, 0xE9, 0xF0, 0x4F, 0x02, 0x46, 0x6A, 0x4D, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xF3, 0x8B, 0xB0, 0xEF, 0x18, 0x04, 0x90, 0x39, 0x46, 0x66, 0x48, 0x06, 0x93, -0x0C, 0xF0, 0x4A, 0xFD, 0x97, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x00, 0xF0, 0xDD, 0x80, 0x04, 0x2B, 0x00, 0xF0, 0x98, 0x80, -0xDF, 0xF8, 0x98, 0xA1, 0x60, 0x4C, 0x00, 0x2B, 0x00, 0xF0, 0x89, 0x80, 0x9A, 0xF8, 0x12, 0x30, 0x9A, 0xF8, 0x11, 0x20, -0x1A, 0x44, 0x01, 0x2A, 0x5E, 0xD0, 0x0A, 0xB9, 0x5B, 0x4B, 0x1A, 0x60, 0x06, 0x9E, 0xD4, 0xF8, 0xD8, 0x31, 0x06, 0xF1, -0x18, 0x00, 0x28, 0x44, 0x98, 0x47, 0x06, 0xF1, 0x28, 0x00, 0xD4, 0xF8, 0xD8, 0x31, 0x28, 0x44, 0x98, 0x47, 0x04, 0x9A, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x53, 0x93, 0xF8, 0xC0, 0x24, 0x00, 0x2A, 0x3A, 0xD1, 0x04, 0x9A, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x02, 0x53, 0x05, 0x26, 0x93, 0xF8, 0x63, 0x00, 0x0A, 0xF0, 0x02, 0xFA, 0x4B, 0x4B, 0x1A, 0x69, -0xBA, 0x42, 0x04, 0xBF, 0x00, 0x22, 0x1A, 0x61, 0x00, 0x21, 0x4F, 0xF4, 0xA4, 0x62, 0x38, 0x46, 0xE9, 0xF7, 0x22, 0xFC, -0x04, 0x99, 0x9A, 0xF8, 0x11, 0x20, 0x9A, 0xF8, 0x12, 0x30, 0xD4, 0xF8, 0x50, 0xC4, 0x01, 0x91, 0x4F, 0xF4, 0xA4, 0x60, -0x00, 0xFB, 0x01, 0x55, 0x7F, 0x24, 0x00, 0x93, 0x3F, 0x49, 0xC5, 0xF8, 0x2C, 0xC0, 0x13, 0x44, 0x4F, 0xF4, 0x80, 0x70, -0x3D, 0x4A, 0x2F, 0x63, 0x85, 0xF8, 0x62, 0x60, 0x85, 0xF8, 0x65, 0x40, 0x85, 0xF8, 0x66, 0x40, 0x0D, 0xF0, 0xC2, 0xFE, -0x39, 0x48, 0x39, 0x46, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x0C, 0xF0, 0x91, 0xBC, 0x93, 0xF8, 0xC1, 0x04, 0x01, 0x21, -0x09, 0xF0, 0x2E, 0xFC, 0x9A, 0xF8, 0x13, 0x30, 0x01, 0x3B, 0x8A, 0xF8, 0x13, 0x30, 0xB9, 0xE7, 0x31, 0x4A, 0xDA, 0xF8, -0x08, 0x60, 0xDF, 0xF8, 0xC8, 0xE0, 0xDF, 0xF8, 0xC8, 0x90, 0xDF, 0xF8, 0xC8, 0x80, 0xD2, 0xE9, 0x00, 0x01, 0x21, 0xF0, -0x10, 0x0C, 0x4C, 0xEA, 0x00, 0x00, 0xC2, 0xF8, 0x04, 0xC0, 0xCE, 0xF8, 0x00, 0x00, 0xB0, 0x6B, 0xB6, 0x8F, 0xC9, 0xF8, -0x00, 0x00, 0xC8, 0xF8, 0x00, 0x60, 0x00, 0x2B, 0x88, 0xD1, 0x13, 0x68, 0x21, 0xF4, 0x88, 0x71, 0x0B, 0x43, 0x51, 0x60, -0xCE, 0xF8, 0x00, 0x30, 0x80, 0xE7, 0x9A, 0xF8, 0x11, 0x20, 0x9A, 0xF8, 0x12, 0x30, 0x01, 0x3A, 0xD2, 0xB2, 0x8A, 0xF8, -0x11, 0x20, 0x71, 0xE7, 0xEA, 0xF7, 0x50, 0xFC, 0x00, 0x28, 0x40, 0xF0, 0x28, 0x81, 0xDF, 0xF8, 0x60, 0xA0, 0x12, 0x4C, -0x9A, 0xF8, 0x10, 0x00, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x53, 0x5A, 0x68, 0x19, 0x6C, 0x22, 0xF0, 0x80, 0x02, -0x5A, 0x60, 0x09, 0xB1, 0x63, 0x6D, 0x98, 0x47, 0x9A, 0xF8, 0x12, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x0D, 0x81, 0x0E, 0x48, -0x0E, 0x49, 0x42, 0x68, 0x0E, 0x4E, 0x01, 0x60, 0x0A, 0x43, 0x32, 0x60, 0xFF, 0x21, 0x9A, 0xF8, 0x11, 0x20, 0x8A, 0xF8, -0x10, 0x10, 0x49, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x08, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x94, 0x40, 0x04, 0x40, -0x94, 0x64, 0x17, 0x00, 0xB8, 0x98, 0x15, 0x00, 0xDC, 0x98, 0x15, 0x00, 0x00, 0x88, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, -0x8C, 0x84, 0x03, 0x35, 0x60, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x04, 0x9E, 0xDF, 0xF8, -0x28, 0xA2, 0x7F, 0x49, 0x9A, 0xF8, 0x12, 0x20, 0x7E, 0x4C, 0xDF, 0xF8, 0x20, 0xB2, 0x06, 0xF1, 0x0A, 0x08, 0x08, 0xEB, -0x88, 0x03, 0x4F, 0xF4, 0x1E, 0x70, 0xC8, 0xEB, 0x03, 0x13, 0x4F, 0xF0, 0xA4, 0x0C, 0x00, 0xFB, 0x08, 0x18, 0x46, 0x33, -0x9E, 0x20, 0xCD, 0xE9, 0x08, 0x7A, 0x1C, 0xFB, 0x06, 0x06, 0x01, 0x3A, 0x00, 0x20, 0x01, 0xEB, 0xC3, 0x03, 0x03, 0x93, -0x8A, 0xF8, 0x12, 0x20, 0x88, 0xF8, 0x25, 0x00, 0x05, 0x90, 0x05, 0xEB, 0xC6, 0x06, 0xB9, 0x46, 0xD8, 0xF8, 0x08, 0x32, -0x9D, 0xF8, 0x14, 0x70, 0x3B, 0xB1, 0x03, 0x99, 0xD4, 0xF8, 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x28, 0x39, 0x38, 0x46, -0x98, 0x47, 0xD8, 0xF8, 0x30, 0x32, 0x33, 0xB1, 0xD4, 0xF8, 0x84, 0x33, 0x03, 0x99, 0x4F, 0xF0, 0x80, 0x42, 0x38, 0x46, -0x98, 0x47, 0xD9, 0xF8, 0xF0, 0x34, 0x00, 0x2B, 0x00, 0xF0, 0x93, 0x80, 0x30, 0x46, 0x0C, 0xF0, 0x55, 0xFC, 0xA6, 0xF1, -0x28, 0x0A, 0x07, 0x90, 0x50, 0x46, 0x0C, 0xF0, 0x4F, 0xFC, 0x07, 0x99, 0x02, 0x46, 0x5B, 0x48, 0x0D, 0xF0, 0xA0, 0xFD, -0xEF, 0xF3, 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x58, 0x4A, 0x01, 0x23, 0x13, 0x60, 0xDB, 0xF8, 0x00, 0x20, -0xD4, 0xF8, 0x84, 0x33, 0x01, 0x32, 0xCB, 0xF8, 0x00, 0x20, 0x31, 0x46, 0x4F, 0xF0, 0x80, 0x42, 0x38, 0x46, 0x98, 0x47, -0xD4, 0xF8, 0x84, 0x33, 0x51, 0x46, 0x38, 0x46, 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, 0xDB, 0xF8, 0x00, 0x30, 0x3B, 0xB1, -0x4B, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x00, 0x2A, 0x66, 0xD1, 0x05, 0x9B, 0x03, 0x9A, -0x01, 0x33, 0x08, 0x32, 0x05, 0x2B, 0x05, 0x93, 0x08, 0xF1, 0x08, 0x08, 0x06, 0xF1, 0x08, 0x06, 0x09, 0xF1, 0x08, 0x09, -0x03, 0x92, 0xA1, 0xD1, 0x04, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x53, 0xDD, 0xE9, 0x08, 0x7A, 0xD3, 0xF8, -0x18, 0x35, 0x00, 0x2B, 0x4F, 0xD0, 0x06, 0x9B, 0x03, 0xF5, 0xA3, 0x66, 0x2E, 0x44, 0x30, 0x46, 0x0C, 0xF0, 0x04, 0xFC, -0x01, 0x46, 0x38, 0x48, 0x0D, 0xF0, 0x56, 0xFD, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x33, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0xDB, 0xF8, 0x00, 0x20, 0xD4, 0xF8, 0x84, 0x33, 0x01, 0x32, 0xCB, 0xF8, 0x00, 0x20, 0x31, 0x46, -0x4F, 0xF0, 0x80, 0x42, 0x05, 0x20, 0x98, 0x47, 0xDB, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x2A, 0x4A, 0x01, 0x3B, 0x12, 0x68, -0xCB, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x00, 0x2A, 0x43, 0xD1, 0x9A, 0xF8, 0x12, 0x20, 0x00, 0x2A, 0x3C, 0xD0, 0x9A, 0xF8, -0x11, 0x30, 0x13, 0x44, 0x01, 0x2B, 0x7F, 0xF4, 0x71, 0xAE, 0x23, 0x49, 0xDA, 0xF8, 0x08, 0x00, 0x22, 0x4E, 0xD1, 0xE9, -0x00, 0x23, 0x23, 0xF0, 0x10, 0x03, 0x4B, 0x60, 0x1A, 0x43, 0x20, 0x49, 0x20, 0x4B, 0x32, 0x60, 0x86, 0x6B, 0x82, 0x8F, -0x0E, 0x60, 0x1A, 0x60, 0x5E, 0xE6, 0xD9, 0xF8, 0xC8, 0x34, 0x00, 0x2B, 0x7F, 0xF4, 0x68, 0xAF, 0xA6, 0xF1, 0x28, 0x0A, -0x72, 0xE7, 0x62, 0xB6, 0x96, 0xE7, 0x06, 0x9B, 0x03, 0xF5, 0xA3, 0x66, 0x2E, 0x44, 0xB5, 0xE7, 0x01, 0xF0, 0x4E, 0xFC, -0x9A, 0xF8, 0x12, 0x30, 0xF4, 0xE6, 0x00, 0x20, 0xEA, 0xF7, 0x2C, 0xFB, 0x12, 0x4B, 0x1A, 0x68, 0xD2, 0x05, 0x7F, 0xF5, -0xD0, 0xAE, 0x4F, 0xF4, 0x80, 0x72, 0xC3, 0xF8, 0x80, 0x20, 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, 0xC6, 0xE6, -0x01, 0xF0, 0x5E, 0xFC, 0x2C, 0xE6, 0x62, 0xB6, 0xB9, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x88, 0x98, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, 0xA0, 0x98, 0x15, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, -0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x00, 0xE1, 0x00, 0xE0, 0x00, 0x88, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x46, 0x4F, 0xF4, 0xA4, 0x60, 0x2E, 0x78, 0x95, 0xF8, 0x29, 0x80, 0x4F, 0x4C, 0x00, 0xFB, -0x08, 0xF0, 0xC6, 0xEB, 0x06, 0x17, 0x00, 0xEB, 0xC7, 0x07, 0x27, 0x44, 0x4F, 0xF0, 0x78, 0x0A, 0x1A, 0xFB, 0x06, 0x0A, -0x87, 0xF8, 0x3A, 0x12, 0x0A, 0xF5, 0xEC, 0x79, 0x95, 0xF8, 0x28, 0x30, 0x87, 0xF8, 0x38, 0x32, 0xA1, 0x44, 0x87, 0xF8, -0x39, 0x62, 0x48, 0x46, 0x48, 0x22, 0x00, 0x21, 0xE9, 0xF7, 0x46, 0xFA, 0x97, 0xF8, 0x38, 0x32, 0x37, 0x01, 0x05, 0x2B, -0x0C, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x41, 0x51, 0x0B, 0x41, 0x6A, 0x03, 0x0A, 0xF5, 0x0A, 0x70, 0x20, 0x44, 0x10, 0x22, -0x05, 0xF1, 0x08, 0x01, 0x20, 0xF0, 0xC2, 0xF9, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF3, 0xBA, 0x1B, 0x03, 0xEB, -0xC2, 0x03, 0x23, 0x44, 0x00, 0x20, 0x00, 0x21, 0xC3, 0xE9, 0x88, 0x01, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF3, -0xBA, 0x1B, 0x03, 0xEB, 0xC2, 0x02, 0x22, 0x44, 0x23, 0x44, 0x92, 0xF8, 0x38, 0x12, 0x05, 0x29, 0x4F, 0xF0, 0x01, 0x00, -0x0C, 0xBF, 0xC3, 0xF8, 0xAC, 0x94, 0xC3, 0xF8, 0xA8, 0x94, 0x4F, 0xF4, 0xA4, 0x63, 0x82, 0xF8, 0x3B, 0x02, 0x03, 0xFB, -0x08, 0xF8, 0xD5, 0xE9, 0x02, 0x01, 0xD5, 0xE9, 0x04, 0x23, 0xBF, 0x1B, 0x08, 0xEB, 0xC7, 0x07, 0x3C, 0x44, 0xC4, 0xE9, -0x8F, 0x01, 0xC4, 0xE9, 0x91, 0x23, 0x2B, 0x79, 0x84, 0xF8, 0x4C, 0x32, 0xBD, 0xE8, 0xF0, 0x87, 0x20, 0xF0, 0x90, 0xFA, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF3, 0xBA, 0x1B, 0x03, 0xEB, 0xC2, 0x03, 0x23, 0x44, 0x20, 0xF0, 0x7F, 0x40, -0x00, 0x21, 0xC3, 0xE9, 0x88, 0x01, 0xC5, 0xE7, 0x4F, 0xF4, 0xA4, 0x60, 0xBB, 0x1B, 0x00, 0xFB, 0x08, 0xF0, 0x00, 0xEB, -0xC3, 0x00, 0x20, 0x44, 0xA9, 0x69, 0xC0, 0xF8, 0x28, 0x12, 0xE9, 0x69, 0xC0, 0xF8, 0x2C, 0x12, 0x29, 0x6A, 0xC0, 0xF8, -0x30, 0x12, 0x00, 0x22, 0x69, 0x6A, 0xC0, 0xF8, 0x34, 0x12, 0x00, 0x23, 0xC0, 0xE9, 0x88, 0x23, 0xAC, 0xE7, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF2, 0x05, 0xA1, 0xD1, 0xE9, 0x00, 0x01, 0xBB, 0x1B, 0x02, 0xEB, 0xC3, 0x03, 0x23, 0x44, -0xC3, 0xE9, 0x88, 0x01, 0x9E, 0xE7, 0x00, 0xBF, 0x36, 0x5C, 0x36, 0x5C, 0x36, 0x5C, 0x36, 0x5C, 0x18, 0x88, 0x17, 0x00, -0x78, 0x22, 0x10, 0xB4, 0xC1, 0xEB, 0x01, 0x13, 0xD0, 0xF8, 0xA8, 0x44, 0x02, 0xFB, 0x01, 0x01, 0x00, 0xEB, 0xC3, 0x03, -0x01, 0xF5, 0xEC, 0x71, 0x00, 0x22, 0x8C, 0x42, 0x83, 0xF8, 0x3B, 0x22, 0x06, 0xD0, 0xD0, 0xF8, 0xAC, 0x34, 0x8B, 0x42, -0x1C, 0xD0, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x90, 0xF8, 0x3B, 0x32, 0xC0, 0xF8, 0xA8, 0x24, 0x00, 0xF5, 0xEC, 0x71, -0x7B, 0xB9, 0x90, 0xF8, 0xB3, 0x32, 0x00, 0xF5, 0x14, 0x71, 0x53, 0xB9, 0x90, 0xF8, 0x2B, 0x33, 0x00, 0xF5, 0x32, 0x71, -0x2B, 0xB9, 0x90, 0xF8, 0xA3, 0x33, 0x00, 0xF5, 0x50, 0x71, 0x00, 0x2B, 0xE1, 0xD0, 0xC0, 0xF8, 0xA8, 0x14, 0xE2, 0xE7, -0x90, 0xF8, 0x1B, 0x34, 0x00, 0x22, 0xC0, 0xF8, 0xAC, 0x24, 0x43, 0xB9, 0x90, 0xF8, 0x93, 0x34, 0x00, 0x2B, 0xD8, 0xD0, -0x00, 0xF5, 0x86, 0x63, 0xC0, 0xF8, 0xAC, 0x34, 0xD3, 0xE7, 0x00, 0xF5, 0x6E, 0x73, 0xF9, 0xE7, 0x70, 0xB5, 0xD0, 0xF8, -0xE4, 0x40, 0x54, 0xB1, 0x05, 0x4E, 0x05, 0x46, 0x21, 0x46, 0xD6, 0xF8, 0x20, 0x33, 0x00, 0x22, 0x28, 0x46, 0x98, 0x47, -0x24, 0x68, 0x00, 0x2C, 0xF6, 0xD1, 0x70, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0x04, 0x4A, 0x05, 0x4B, 0x11, 0x69, 0xD3, 0xF8, -0xE0, 0x31, 0x01, 0xF5, 0x1C, 0x51, 0x28, 0x30, 0x10, 0x31, 0x18, 0x47, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x0B, 0x4B, 0x1A, 0x78, 0x02, 0xB9, 0x70, 0x47, 0x5B, 0x68, 0x1B, 0x07, 0xFB, 0xD4, 0x43, 0x68, 0x70, 0xB5, 0x04, 0x46, -0x03, 0xB1, 0x70, 0xBD, 0x06, 0x4D, 0x28, 0x30, 0xD5, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0xD5, 0xF8, 0x50, 0x34, 0x20, 0x46, -0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF0, 0xB4, 0xA0, 0xF8, -0xD2, 0x10, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x1F, 0x4D, -0x1F, 0x4B, 0x2E, 0x68, 0x9A, 0x7C, 0x77, 0x1C, 0x01, 0x2A, 0x2F, 0x60, 0x2B, 0xD9, 0x1D, 0x4C, 0x1A, 0x7D, 0x4F, 0xF4, -0xA4, 0x6C, 0x0C, 0xFB, 0x02, 0x42, 0xB2, 0xF8, 0xD2, 0x40, 0xA1, 0x42, 0x1C, 0xD3, 0x9B, 0x68, 0x5B, 0xB1, 0x01, 0x21, -0xB3, 0xF8, 0xD2, 0x20, 0x83, 0xF8, 0xD5, 0x10, 0xB2, 0xFB, 0xF4, 0xF2, 0x83, 0xF8, 0xD4, 0x20, 0x1B, 0x68, 0x00, 0x2B, -0xF4, 0xD1, 0x12, 0x4A, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x23, 0x43, 0x13, 0x60, 0x2F, 0xB1, 0x0A, 0x4B, 0x2E, 0x60, -0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xF0, 0xBC, 0x70, 0x47, 0x90, 0xF8, 0x63, 0x20, 0x1A, 0x75, 0x0C, 0x46, -0xDD, 0xE7, 0x90, 0xF8, 0x63, 0x20, 0x1A, 0x75, 0x40, 0xF2, 0x01, 0x13, 0x0C, 0x46, 0xA0, 0xF8, 0xD4, 0x30, 0xE2, 0xE7, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x64, 0x00, 0x32, 0x40, -0x2D, 0xE9, 0xF0, 0x41, 0x0C, 0x21, 0x04, 0x46, 0x82, 0xB0, 0x03, 0x23, 0x00, 0x22, 0x58, 0x20, 0x0B, 0xF0, 0xEA, 0xFC, -0x3B, 0x4F, 0xFF, 0x22, 0x7B, 0x6D, 0x8D, 0xF8, 0x07, 0x20, 0x05, 0x46, 0x94, 0xF8, 0x63, 0x00, 0x98, 0x47, 0xB4, 0xF8, -0xB6, 0x14, 0x94, 0xF8, 0xB4, 0x04, 0x10, 0xF0, 0xED, 0xF9, 0x94, 0xF8, 0xB5, 0x24, 0xB4, 0xF8, 0xB8, 0x64, 0xB4, 0xF8, -0xBA, 0x14, 0x84, 0xF8, 0xC5, 0x21, 0x04, 0x2A, 0x08, 0xBF, 0x03, 0x22, 0x03, 0x46, 0xC4, 0xF8, 0x90, 0x01, 0xA4, 0xF8, -0x94, 0x61, 0xA4, 0xF8, 0x96, 0x11, 0x84, 0xF8, 0xC4, 0x21, 0x00, 0x28, 0x50, 0xD0, 0x1B, 0x79, 0x84, 0xF8, 0xBC, 0x34, -0x7B, 0x6C, 0x0D, 0xF1, 0x07, 0x01, 0x04, 0xF2, 0xB4, 0x40, 0x98, 0x47, 0x9D, 0xF8, 0x07, 0x10, 0x68, 0x70, 0xA9, 0x70, -0x06, 0x46, 0x94, 0xF8, 0x63, 0x00, 0x28, 0x70, 0x94, 0xF8, 0x62, 0x30, 0x2B, 0xBB, 0x84, 0xF8, 0x8A, 0x30, 0x7E, 0xBB, -0xFB, 0x6C, 0x94, 0xF8, 0x6C, 0x80, 0x98, 0x47, 0xD7, 0xF8, 0xD8, 0x31, 0x04, 0xF1, 0x28, 0x00, 0x98, 0x47, 0x1A, 0x4A, -0x1A, 0x49, 0xD7, 0xF8, 0xE0, 0x31, 0x09, 0x69, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x08, 0x28, 0x04, 0xF1, 0x18, 0x00, -0xD8, 0xF8, 0x08, 0x20, 0x11, 0x44, 0x98, 0x47, 0x01, 0x23, 0x84, 0xF8, 0x78, 0x60, 0x84, 0xF8, 0x8B, 0x30, 0x28, 0x46, -0x0B, 0xF0, 0xBE, 0xFC, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x02, 0x2B, 0xF7, 0xD1, 0x00, 0x23, 0x84, 0xF8, 0xDB, 0x30, -0x00, 0x2E, 0xF2, 0xD1, 0xFB, 0x6C, 0x98, 0x47, 0x0A, 0x4B, 0x01, 0x22, 0x5A, 0x72, 0xEC, 0xE7, 0xD7, 0xF8, 0xBC, 0x31, -0x20, 0x46, 0x98, 0x47, 0x28, 0x46, 0x0B, 0xF0, 0xA7, 0xFC, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x1B, 0x79, 0xFF, 0xDE, -0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0xD8, 0x9C, 0x17, 0x00, 0x07, 0x4A, 0x93, 0x7C, -0x51, 0x7C, 0x0B, 0x44, 0x01, 0x2B, 0x06, 0xD1, 0x90, 0x68, 0x90, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0x18, 0xBF, 0x00, 0x20, -0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x05, 0x4A, 0x06, 0x49, 0x93, 0x7C, 0x50, 0x7C, -0x03, 0x44, 0x00, 0x22, 0x01, 0x2B, 0x0A, 0x60, 0x01, 0xDC, 0xFF, 0xF7, 0x65, 0xB9, 0x70, 0x47, 0x00, 0x88, 0x17, 0x00, -0x2C, 0x00, 0x32, 0x40, 0x13, 0x4B, 0x00, 0x22, 0x02, 0x70, 0x9B, 0x68, 0x03, 0xB3, 0x10, 0xB4, 0x01, 0x46, 0x01, 0x24, -0x10, 0x46, 0x08, 0xE0, 0x93, 0xF8, 0x64, 0x20, 0x1A, 0xB1, 0x93, 0xF8, 0xC0, 0x24, 0x72, 0xB9, 0x01, 0x30, 0x1B, 0x68, -0x7B, 0xB1, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0xF2, 0xD0, 0x93, 0xF8, 0x64, 0x20, 0x00, 0x2A, 0xF5, 0xD0, 0x93, 0xF8, -0xC0, 0x24, 0x00, 0x2A, 0xF1, 0xD0, 0x0C, 0x70, 0x1B, 0x68, 0x00, 0x2B, 0xEF, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x18, 0x46, 0x70, 0x47, 0x00, 0x88, 0x17, 0x00, 0x10, 0xB5, 0x04, 0x23, 0x04, 0x46, 0xFF, 0x22, 0x00, 0x21, 0x87, 0x20, -0x0B, 0xF0, 0x16, 0xFC, 0x04, 0x60, 0xBD, 0xE8, 0x10, 0x40, 0x0B, 0xF0, 0x41, 0xBC, 0x00, 0xBF, 0x11, 0xF4, 0x00, 0x01, -0x70, 0xB5, 0x04, 0x46, 0x16, 0xD0, 0x00, 0x25, 0x2A, 0x4B, 0x80, 0xF8, 0x78, 0x50, 0x19, 0x69, 0x29, 0x48, 0x2A, 0x4B, -0x80, 0xF8, 0x24, 0x50, 0x40, 0xF2, 0x01, 0x72, 0x01, 0xF5, 0x1C, 0x51, 0x44, 0x61, 0x82, 0x83, 0xD3, 0xF8, 0xE0, 0x31, -0x10, 0x31, 0x0C, 0x30, 0x98, 0x47, 0x84, 0xF8, 0x6B, 0x50, 0x70, 0xBD, 0x90, 0xF8, 0x6B, 0x30, 0x21, 0x4A, 0x01, 0x33, -0xDB, 0xB2, 0x12, 0x68, 0x80, 0xF8, 0x6B, 0x30, 0x52, 0x78, 0x9A, 0x42, 0x25, 0xD0, 0x90, 0xF8, 0x64, 0x30, 0xC3, 0xB9, -0x1C, 0x4B, 0x5B, 0x78, 0x23, 0xB1, 0x1C, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x15, 0x4B, 0x1A, 0x7A, -0x0A, 0xB1, 0x01, 0x3A, 0x1A, 0x72, 0x14, 0x4A, 0x17, 0x48, 0xD2, 0xF8, 0xD8, 0x21, 0x01, 0x21, 0x99, 0x83, 0x90, 0x47, -0x63, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x63, 0x60, 0x70, 0xBD, 0x0E, 0x4B, 0x90, 0xF8, 0x63, 0x00, 0xD3, 0xF8, 0x94, 0x34, -0x10, 0x49, 0x22, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x80, 0xF8, 0x6B, 0x10, 0x4F, 0xF4, 0x80, 0x60, 0x0D, 0x49, -0x0D, 0xF0, 0x74, 0xFA, 0x05, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0xBC, 0x31, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, -0x00, 0x10, 0x50, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, -0x34, 0x04, 0x32, 0x40, 0x28, 0x9E, 0x17, 0x00, 0x99, 0x71, 0x13, 0x00, 0xF0, 0x98, 0x15, 0x00, 0x30, 0xB4, 0x01, 0x25, -0x00, 0x24, 0x1D, 0x70, 0x14, 0x70, 0x04, 0x28, 0x20, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x03, 0x18, 0x09, 0x05, 0x14, 0x00, -0x00, 0x21, 0x19, 0x70, 0x01, 0x23, 0x13, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x09, 0x78, 0x10, 0x29, 0x0F, 0xD0, 0x20, 0x29, -0x01, 0xD1, 0x02, 0x21, 0x19, 0x70, 0x03, 0x23, 0x13, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x04, 0x23, 0x13, 0x70, 0x30, 0xBC, -0x70, 0x47, 0x02, 0x23, 0x13, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x00, 0x21, 0x19, 0x70, 0xF0, 0xE7, 0x05, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE1, 0xDA, 0x30, 0xBC, 0x03, 0x49, 0x03, 0x48, 0xAD, 0x22, 0x0D, 0xF0, 0x50, 0xBC, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x22, 0x4A, 0x13, 0x68, 0xC3, 0xF3, 0x0F, 0x33, -0x23, 0xB1, 0x13, 0x68, 0xC3, 0xF3, 0x0F, 0x33, 0x96, 0x2B, 0x36, 0xD9, 0x96, 0x20, 0x1E, 0x49, 0x1E, 0x4B, 0x0A, 0x68, -0x18, 0x81, 0xC2, 0xF3, 0x0F, 0x32, 0x22, 0xB1, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0x96, 0x2A, 0x25, 0xD9, 0x96, 0x22, -0x19, 0x49, 0x5A, 0x81, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0x22, 0xB1, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0x96, 0x2A, -0x15, 0xD9, 0x96, 0x22, 0x14, 0x49, 0x9A, 0x81, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0x22, 0xB1, 0x0A, 0x68, 0xC2, 0xF3, -0x0F, 0x32, 0x96, 0x2A, 0x03, 0xD9, 0x96, 0x22, 0xDA, 0x81, 0x1A, 0x82, 0x70, 0x47, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, -0xDA, 0x81, 0x1A, 0x82, 0x70, 0x47, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0xE6, 0xE7, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, -0xD6, 0xE7, 0x10, 0x68, 0xC0, 0xF3, 0x0F, 0x30, 0xC5, 0xE7, 0x00, 0xBF, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, -0x98, 0x9C, 0x17, 0x00, 0x08, 0x02, 0x32, 0x40, 0x0C, 0x02, 0x32, 0x40, 0x38, 0xB5, 0x0B, 0x4C, 0x34, 0x22, 0x00, 0x21, -0x20, 0x46, 0xE8, 0xF7, 0x0B, 0xFF, 0x09, 0x48, 0x09, 0x4A, 0x0A, 0x49, 0x22, 0x60, 0x01, 0x25, 0x00, 0x23, 0xE5, 0x77, -0x02, 0x60, 0x63, 0x82, 0x63, 0x60, 0xD1, 0xF8, 0xA0, 0x31, 0x98, 0x47, 0x05, 0x4B, 0x63, 0x62, 0x38, 0xBD, 0x00, 0xBF, -0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, 0xDE, 0xFF, 0xFF, 0x7F, 0x88, 0x1A, 0x17, 0x00, 0x7D, 0x71, 0x13, 0x00, -0x38, 0xB5, 0x51, 0x4D, 0x51, 0x4C, 0xAB, 0x78, 0x13, 0xB9, 0xD4, 0xF8, 0xE4, 0x30, 0x98, 0x47, 0xFF, 0xF7, 0xD4, 0xFF, -0xFF, 0xF7, 0x6A, 0xF8, 0xFE, 0xF7, 0xF8, 0xFC, 0x09, 0xF0, 0xDC, 0xFC, 0x07, 0xF0, 0x78, 0xFD, 0x08, 0xF0, 0xAA, 0xFE, -0xD4, 0xF8, 0x8C, 0x33, 0x98, 0x47, 0xAB, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x82, 0x80, 0xFD, 0xF7, 0x61, 0xFA, 0x45, 0x4D, -0x2B, 0x68, 0x1B, 0x78, 0x9B, 0x07, 0x7D, 0xD4, 0x03, 0xF0, 0x70, 0xFD, 0x09, 0xF0, 0x7C, 0xFE, 0x63, 0x6E, 0x98, 0x47, -0xD4, 0xF8, 0x7C, 0x31, 0x98, 0x47, 0xEF, 0xF7, 0x0D, 0xF8, 0xEF, 0xF7, 0x0D, 0xF8, 0xEF, 0xF7, 0x0D, 0xF8, 0x3C, 0x4B, -0x93, 0xF8, 0xFA, 0x30, 0x00, 0x2B, 0x62, 0xD1, 0xD4, 0xF8, 0xE4, 0x34, 0x98, 0x47, 0x39, 0x4A, 0x29, 0x68, 0x13, 0x68, -0x38, 0x48, 0x39, 0x4D, 0xC3, 0xF3, 0x15, 0x03, 0x43, 0xF0, 0x20, 0x73, 0x13, 0x60, 0x8B, 0x78, 0x02, 0x68, 0xDC, 0x06, -0x4C, 0xBF, 0x22, 0xF0, 0x00, 0x42, 0x42, 0xF0, 0x00, 0x42, 0x02, 0x60, 0x32, 0x4A, 0x33, 0x4C, 0x33, 0x48, 0x13, 0xF0, -0x01, 0x0F, 0x13, 0x68, 0x14, 0xBF, 0x43, 0xF4, 0x80, 0x23, 0x23, 0xF4, 0x80, 0x23, 0x13, 0x60, 0x22, 0x68, 0x2F, 0x4B, -0x42, 0xF0, 0x00, 0x62, 0x22, 0x60, 0x02, 0x68, 0x2D, 0x4C, 0x22, 0xF4, 0x70, 0x02, 0x42, 0xF4, 0x00, 0x12, 0x02, 0x60, -0x1A, 0x68, 0x22, 0xF4, 0xE0, 0x62, 0x42, 0xF4, 0xC0, 0x62, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0x60, 0x52, 0x42, 0xF4, -0x00, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0xE0, 0x32, 0x42, 0xF4, 0x40, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, -0x60, 0x22, 0x1A, 0x60, 0x2B, 0x68, 0x20, 0x4A, 0x23, 0x40, 0x43, 0xF4, 0xBB, 0x63, 0xA0, 0xF5, 0x66, 0x70, 0x43, 0xF0, -0x04, 0x03, 0x2B, 0x60, 0x03, 0x68, 0xA5, 0xF1, 0xF6, 0x55, 0xA5, 0xF5, 0x32, 0x25, 0x23, 0x40, 0x43, 0xF0, 0x3F, 0x03, -0xA5, 0xF6, 0xFF, 0x15, 0x03, 0x60, 0x15, 0x60, 0x4B, 0x78, 0x2B, 0xB1, 0xD2, 0xF8, 0x24, 0x31, 0x43, 0xF0, 0x40, 0x03, -0xC2, 0xF8, 0x24, 0x31, 0x38, 0xBD, 0x12, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x9B, 0xE7, 0xFD, 0xF7, 0xD5, 0xF9, 0x7C, 0xE7, -0x03, 0x20, 0xEE, 0xF7, 0x8B, 0xFC, 0x7D, 0xE7, 0x3C, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, -0x2C, 0x19, 0x17, 0x00, 0xF0, 0x00, 0x32, 0x40, 0x80, 0x04, 0x32, 0x40, 0x20, 0x04, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, -0x40, 0x04, 0x32, 0x40, 0x34, 0x04, 0x32, 0x40, 0x2C, 0x04, 0x32, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x01, 0x32, 0x40, -0x80, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x1C, 0x46, 0x05, 0x8C, 0x93, 0xF8, 0x62, 0x30, 0xD2, 0xF8, 0x20, 0x90, -0x87, 0x69, 0xD0, 0xF8, 0x1C, 0xB0, 0x89, 0xB0, 0x16, 0x46, 0xAD, 0x02, 0xDD, 0xE9, 0x12, 0x20, 0xD3, 0xB9, 0xB4, 0xF8, -0x68, 0xC0, 0xBC, 0xF1, 0x00, 0x0F, 0x15, 0xD0, 0xD2, 0x8B, 0xB3, 0x6A, 0x0C, 0xFB, 0x02, 0xF2, 0x05, 0x92, 0x18, 0x07, -0x05, 0xFB, 0x0C, 0xF2, 0x06, 0x92, 0x19, 0xD0, 0x00, 0x23, 0xB7, 0xEB, 0x09, 0x0A, 0x4F, 0xF4, 0xFA, 0x76, 0x07, 0x93, -0x05, 0x9B, 0x03, 0xF5, 0xC8, 0x73, 0xC4, 0xE9, 0x1F, 0xA3, 0x74, 0xE0, 0x00, 0x28, 0x40, 0xF0, 0xC1, 0x80, 0x06, 0x95, -0x4F, 0xF0, 0x01, 0x0A, 0xD0, 0x8B, 0xB2, 0x6A, 0x0A, 0xFB, 0x00, 0xF0, 0x12, 0x07, 0x05, 0x90, 0x40, 0xF0, 0x32, 0x81, -0xF2, 0x6A, 0xDF, 0xF8, 0x94, 0xC2, 0xDF, 0xF8, 0xD4, 0x82, 0xDC, 0xF8, 0x00, 0x30, 0x9F, 0x48, 0xC2, 0xF3, 0x03, 0x12, -0x23, 0xF0, 0x7F, 0x03, 0x18, 0xF8, 0x02, 0x20, 0x02, 0xF0, 0x7F, 0x02, 0x13, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0xB3, 0x6A, -0x99, 0x4A, 0xC3, 0xF3, 0xC0, 0x13, 0x41, 0xEA, 0x03, 0x51, 0x4F, 0xF0, 0x00, 0x43, 0x01, 0x60, 0x13, 0x60, 0xBF, 0xF3, -0x4F, 0x8F, 0x00, 0xBF, 0x13, 0x68, 0x58, 0x00, 0xFC, 0xD5, 0x93, 0x4B, 0x19, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0x00, 0x29, -0xC0, 0xF2, 0xB4, 0x80, 0x8E, 0x4A, 0x12, 0x68, 0x1F, 0xFA, 0x82, 0xFA, 0xB2, 0x6A, 0x12, 0x07, 0x40, 0xF0, 0xA3, 0x80, -0xF2, 0x6A, 0x8C, 0x49, 0x88, 0x48, 0xD1, 0xF8, 0x00, 0xC0, 0xC2, 0xF3, 0x03, 0x12, 0x2C, 0xF0, 0x7F, 0x0C, 0x18, 0xF8, -0x02, 0x20, 0x02, 0xF0, 0x7F, 0x02, 0x42, 0xEA, 0x0C, 0x02, 0x0A, 0x60, 0xB2, 0x6A, 0xC2, 0xF3, 0xC0, 0x12, 0x08, 0x31, -0x12, 0x05, 0x42, 0xF0, 0x18, 0x02, 0x4F, 0xF0, 0x00, 0x46, 0x02, 0x60, 0x0E, 0x60, 0xBF, 0xF3, 0x4F, 0x8F, 0x00, 0xBF, -0x0A, 0x68, 0x56, 0x00, 0xFC, 0xD5, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x73, 0xDB, 0x77, 0x4A, 0x94, 0xF8, -0x62, 0x30, 0x16, 0x68, 0x00, 0x22, 0xB6, 0xB2, 0xAA, 0xEB, 0x06, 0x0A, 0x07, 0x92, 0xB7, 0xEB, 0x09, 0x09, 0x19, 0xEB, -0x0A, 0x0A, 0x00, 0x2B, 0x84, 0xD0, 0x4F, 0xEA, 0xE5, 0x79, 0x2A, 0x46, 0x4B, 0x46, 0x38, 0x46, 0x59, 0x46, 0x1F, 0xF0, -0x67, 0xFB, 0xBA, 0x1B, 0x02, 0x92, 0x07, 0x9A, 0x00, 0xFB, 0x09, 0xF3, 0x6B, 0xEB, 0x02, 0x02, 0x05, 0xFB, 0x01, 0x33, -0x03, 0x92, 0xA0, 0xFB, 0x05, 0x01, 0x19, 0x44, 0xDD, 0xE9, 0x02, 0x23, 0x99, 0x42, 0x08, 0xBF, 0x90, 0x42, 0x38, 0xBF, -0xCD, 0xE9, 0x02, 0x01, 0x64, 0x4B, 0x06, 0x9A, 0x1B, 0x68, 0xDD, 0xE9, 0x02, 0x67, 0xB6, 0x18, 0x99, 0x01, 0x34, 0xD4, -0x05, 0x9B, 0xF1, 0x1A, 0xA1, 0xF5, 0xC8, 0x71, 0x5F, 0x4F, 0x60, 0x4B, 0x3E, 0x69, 0x1B, 0x68, 0xF6, 0x1A, 0x0E, 0x44, -0xE9, 0xF7, 0xDC, 0xFD, 0x3B, 0x69, 0xF3, 0x1A, 0xA3, 0xF5, 0x86, 0x53, 0x0C, 0x3B, 0x18, 0x1A, 0x00, 0x28, 0x63, 0x6A, -0xB8, 0xBF, 0x76, 0x19, 0xB3, 0x42, 0x24, 0xD0, 0x57, 0x4B, 0x1A, 0x6A, 0xA2, 0x42, 0x43, 0xD0, 0x56, 0x4D, 0x31, 0x46, -0xD5, 0xF8, 0xE0, 0x31, 0x04, 0xF1, 0x18, 0x00, 0x98, 0x47, 0xD5, 0xF8, 0xA8, 0x30, 0x20, 0x46, 0x09, 0xB0, 0xBD, 0xE8, -0xF0, 0x4F, 0x18, 0x47, 0x90, 0xF8, 0x02, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x01, 0xD1, 0x90, 0xF8, 0x03, 0xA0, 0x05, 0xFB, -0x0A, 0xF0, 0x06, 0x90, 0x36, 0xE7, 0x4B, 0x49, 0x05, 0x9B, 0xC9, 0x1A, 0xA1, 0xEB, 0x0A, 0x0A, 0x0A, 0xEB, 0x06, 0x01, -0xC6, 0xE7, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x0B, 0x68, 0x58, 0x00, 0x88, 0xD4, 0x45, 0x49, 0x45, 0x48, 0x4F, 0xF4, -0xBE, 0x72, 0x0D, 0xF0, 0xD7, 0xF9, 0x00, 0x22, 0x94, 0xF8, 0x62, 0x30, 0x07, 0x92, 0xAA, 0xF5, 0xFA, 0x7A, 0x4F, 0xF4, -0xFA, 0x76, 0x82, 0xE7, 0x12, 0x68, 0x51, 0x00, 0x3F, 0xF5, 0x48, 0xAF, 0x3B, 0x49, 0x3C, 0x48, 0x4F, 0xF4, 0xBE, 0x72, -0x0D, 0xF0, 0xC4, 0xF9, 0x4F, 0xF4, 0xFA, 0x7A, 0x2F, 0x4B, 0x41, 0xE7, 0x30, 0x4A, 0x66, 0x62, 0x12, 0x68, 0x92, 0x01, -0xB6, 0xD4, 0x36, 0x4A, 0x36, 0x4D, 0x12, 0x68, 0x93, 0xF8, 0x24, 0x10, 0x41, 0xF2, 0x13, 0x30, 0xC2, 0xF3, 0x07, 0x42, -0x2A, 0x54, 0x00, 0x29, 0x32, 0xD1, 0x32, 0x4A, 0x32, 0x49, 0x12, 0x68, 0x09, 0x68, 0x41, 0xF2, 0x14, 0x30, 0xD2, 0xB2, -0x2A, 0x54, 0x01, 0x22, 0x83, 0xF8, 0x24, 0x20, 0x0B, 0x78, 0x93, 0x42, 0x06, 0xD1, 0x2D, 0x49, 0x2D, 0x4A, 0x0B, 0x60, -0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x41, 0xF2, 0x13, 0x32, 0x41, 0xF2, 0x14, 0x33, 0xA8, 0x5C, 0xE9, 0x5C, -0x88, 0x42, 0x1D, 0xD2, 0x17, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0F, 0xDA, 0x41, 0xF2, 0x13, 0x32, -0x41, 0xF2, 0x14, 0x33, 0xAA, 0x5C, 0xEB, 0x5C, 0x9A, 0x42, 0x07, 0xD3, 0x18, 0x49, 0x20, 0x48, 0x15, 0x4D, 0x40, 0xF2, -0xD7, 0x12, 0x0D, 0xF0, 0xAF, 0xF9, 0x7E, 0xE7, 0x12, 0x4D, 0x7C, 0xE7, 0x00, 0x22, 0x4F, 0xF4, 0xFA, 0x76, 0x07, 0x92, -0x92, 0x46, 0x28, 0xE7, 0x12, 0x4E, 0x14, 0x48, 0xA9, 0x5C, 0xEA, 0x5C, 0x33, 0x68, 0x06, 0x68, 0x16, 0x48, 0xF6, 0xB2, -0x1B, 0x0C, 0x00, 0x96, 0x0C, 0xF0, 0x20, 0xFF, 0xD4, 0xE7, 0x00, 0xBF, 0x60, 0x81, 0x32, 0x40, 0x6C, 0x81, 0x32, 0x40, -0x38, 0x36, 0x17, 0x00, 0x64, 0x81, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0xA4, 0x80, 0x32, 0x40, -0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xFE, 0xFF, 0xFF, 0x70, 0x79, 0x15, 0x00, 0x04, 0x99, 0x15, 0x00, -0x44, 0x80, 0x32, 0x40, 0x00, 0x40, 0x1E, 0x00, 0x90, 0x00, 0x32, 0x40, 0x74, 0x36, 0x17, 0x00, 0x70, 0x80, 0x32, 0x40, -0x74, 0x80, 0x32, 0x40, 0x3C, 0x99, 0x15, 0x00, 0x28, 0x99, 0x15, 0x00, 0x40, 0xA9, 0x15, 0x00, 0x0B, 0x02, 0x10, 0xB5, -0x04, 0x46, 0x03, 0xD5, 0x00, 0x23, 0x80, 0xF8, 0x78, 0x30, 0x10, 0xBD, 0x4F, 0xF4, 0x80, 0x60, 0x04, 0x49, 0x0C, 0xF0, -0x37, 0xFF, 0x04, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0xBC, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0xB0, 0x99, 0x15, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x70, 0x93, 0xD9, 0xF8, 0x20, 0xB0, 0x83, 0xB0, 0x4F, 0xF4, -0x00, 0x20, 0x0B, 0xF0, 0x79, 0xFC, 0xBB, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0xF5, 0x80, 0xBA, 0x4C, 0xDF, 0xF8, 0x58, 0xA3, -0xA1, 0x7F, 0xB9, 0x4F, 0xDF, 0xF8, 0x54, 0x83, 0xB8, 0x4E, 0x00, 0x29, 0x00, 0xF0, 0xEA, 0x80, 0x08, 0x07, 0x0E, 0xD5, -0xB6, 0x4B, 0xDB, 0xF8, 0x70, 0x00, 0x1B, 0x68, 0xDA, 0xF8, 0x10, 0x20, 0x5B, 0x68, 0x03, 0x44, 0x9B, 0x1A, 0x00, 0x2B, -0xC0, 0xF2, 0xCB, 0x80, 0x01, 0xF0, 0xF7, 0x01, 0xA1, 0x77, 0x4A, 0x07, 0x00, 0xF1, 0x99, 0x80, 0x8B, 0x07, 0x15, 0xD5, -0xDB, 0xF8, 0x04, 0x30, 0x23, 0xF0, 0x02, 0x03, 0xCB, 0xF8, 0x04, 0x30, 0x99, 0xF8, 0x1D, 0x30, 0x05, 0x2B, 0x08, 0xD1, -0xA8, 0x4D, 0xA9, 0x48, 0xD5, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x00, 0x23, 0xA1, 0x7F, 0x89, 0xF8, 0x1D, 0x30, 0x01, 0xF0, -0xFD, 0x01, 0xA1, 0x77, 0xCD, 0x07, 0x2E, 0xD5, 0x33, 0x68, 0x58, 0x01, 0x40, 0xF1, 0xA3, 0x80, 0x31, 0x68, 0x09, 0x0C, -0x11, 0xF4, 0x7C, 0x7F, 0x00, 0xF0, 0xAA, 0x80, 0x9E, 0x4A, 0x10, 0x39, 0x01, 0xF0, 0xFF, 0x01, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x25, 0x20, 0x00, 0x2A, 0x00, 0xF0, 0xA1, 0x80, 0x99, 0x4A, 0x93, 0xF8, 0x22, 0x10, -0x13, 0x68, 0x98, 0x4A, 0xB3, 0xF9, 0x00, 0x30, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x01, 0x22, 0x00, 0x2B, 0x00, 0x92, -0xC0, 0xF2, 0x9F, 0x80, 0x3B, 0x68, 0x13, 0xF4, 0xE0, 0x2F, 0x00, 0xF0, 0xA8, 0x80, 0xA1, 0x7F, 0x01, 0xF0, 0xFE, 0x01, -0xA1, 0x77, 0x8A, 0x06, 0x9D, 0xD5, 0x8E, 0x4E, 0x8E, 0x49, 0x35, 0x68, 0xC5, 0xF3, 0x41, 0x17, 0x3A, 0x46, 0x02, 0x20, -0x0C, 0xF0, 0xAA, 0xFE, 0x00, 0x23, 0xC5, 0xF3, 0x47, 0x15, 0x8B, 0xF8, 0x78, 0x30, 0x00, 0x2F, 0x40, 0xF0, 0xB2, 0x80, -0x87, 0x4B, 0x80, 0x4E, 0x5A, 0x78, 0x1A, 0x70, 0x86, 0x4A, 0x87, 0x4D, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x13, 0x60, -0xDB, 0xF8, 0x04, 0x30, 0xD6, 0xF8, 0xD8, 0x21, 0x23, 0xF0, 0x01, 0x03, 0xCB, 0xF8, 0x04, 0x30, 0x0B, 0xF1, 0x28, 0x00, -0x90, 0x47, 0x2A, 0x68, 0x13, 0x78, 0x02, 0x2B, 0x00, 0xF0, 0x24, 0x81, 0x78, 0x49, 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, -0x0B, 0x60, 0x13, 0x78, 0x01, 0x2B, 0x12, 0xD1, 0x01, 0xF5, 0xFF, 0x41, 0x34, 0x31, 0x78, 0x4A, 0xDA, 0xF8, 0x10, 0x30, -0x08, 0x68, 0xB2, 0xF8, 0xB2, 0x10, 0xD6, 0xF8, 0xE0, 0x21, 0x03, 0xEB, 0x40, 0x13, 0x59, 0x1A, 0x0B, 0xF1, 0x18, 0x00, -0x90, 0x47, 0x2B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x00, 0xF0, 0x00, 0x81, 0xA1, 0x7F, 0x01, 0xF0, 0xDF, 0x01, 0xA1, 0x77, -0x4B, 0xE7, 0x6D, 0x49, 0x61, 0x4D, 0x02, 0x20, 0x0C, 0xF0, 0x60, 0xFE, 0x6B, 0x49, 0x63, 0x68, 0x0A, 0x68, 0x22, 0xF0, -0x04, 0x02, 0x0A, 0x60, 0x22, 0x68, 0x43, 0xF4, 0x00, 0x73, 0x1A, 0x43, 0x4A, 0x61, 0xD5, 0xF8, 0x98, 0x14, 0x63, 0x60, -0x9B, 0xF8, 0x63, 0x00, 0xD5, 0xF8, 0x94, 0x34, 0x5A, 0x46, 0x98, 0x47, 0x3B, 0x68, 0xA1, 0x7F, 0x23, 0xF0, 0x7C, 0x73, -0x3B, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x01, 0xF0, 0xFB, 0x01, 0x43, 0xF4, 0x80, 0x03, 0xC8, 0xF8, 0x00, 0x30, 0xA1, 0x77, -0x3E, 0xE7, 0x5B, 0x48, 0x0C, 0xF0, 0xEA, 0xFD, 0x7F, 0xE7, 0x00, 0x22, 0x9B, 0xF8, 0x6C, 0x00, 0x11, 0x46, 0xF8, 0xF7, -0x01, 0xFB, 0x60, 0xB1, 0xA1, 0x7F, 0x2B, 0xE7, 0x55, 0x48, 0x0C, 0xF0, 0xDD, 0xFD, 0x72, 0xE7, 0x54, 0x48, 0x0C, 0xF0, -0xD9, 0xFD, 0x6E, 0xE7, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDA, 0xF8, 0x10, 0x30, 0xA1, 0x7F, 0xCB, 0xF8, 0x70, 0x30, -0x1A, 0xE7, 0x93, 0x45, 0x3F, 0xF4, 0x5E, 0xAF, 0x4D, 0x49, 0x4E, 0x48, 0x40, 0xF2, 0x22, 0x32, 0x0D, 0xF0, 0x40, 0xF8, -0x3B, 0x68, 0x13, 0xF4, 0xE0, 0x2F, 0x7F, 0xF4, 0x58, 0xAF, 0x32, 0x68, 0x33, 0x68, 0x49, 0x49, 0xD0, 0x0F, 0xC3, 0xF3, -0x80, 0x73, 0x05, 0x46, 0x02, 0x46, 0x02, 0x20, 0x01, 0x93, 0x0C, 0xF0, 0x05, 0xFE, 0x01, 0x9B, 0x53, 0xEA, 0x05, 0x02, -0x28, 0x46, 0x3F, 0xF4, 0x46, 0xAF, 0x2F, 0x4D, 0x00, 0x9A, 0x19, 0x46, 0xD5, 0xF8, 0x3C, 0x32, 0x98, 0x47, 0x33, 0x68, -0x23, 0xF0, 0x00, 0x43, 0x33, 0x60, 0x33, 0x68, 0x23, 0xF0, 0x80, 0x43, 0x33, 0x60, 0x36, 0xE7, 0xDA, 0xF8, 0x10, 0x10, -0x01, 0xF5, 0x9C, 0x51, 0x32, 0x46, 0x08, 0x31, 0x05, 0xE0, 0xDA, 0xF8, 0x10, 0x30, 0xCB, 0x1A, 0x00, 0x2B, 0xC0, 0xF2, -0xC2, 0x80, 0x13, 0x68, 0x1B, 0x07, 0xF6, 0xD5, 0xDF, 0xF8, 0x90, 0x80, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0x08, 0x03, -0xC8, 0xF8, 0x00, 0x30, 0xD8, 0xF8, 0x00, 0x30, 0xDE, 0x06, 0x19, 0xD5, 0x2C, 0x49, 0x19, 0x4E, 0x02, 0x20, 0x0C, 0xF0, -0xCF, 0xFD, 0x2B, 0x4B, 0xDF, 0xF8, 0x74, 0xC0, 0x1A, 0x68, 0xD6, 0xF8, 0x3C, 0x32, 0x12, 0x0C, 0x8C, 0xF8, 0x00, 0x20, -0x05, 0xF0, 0x01, 0x01, 0x78, 0x08, 0x5A, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0x10, 0x03, 0xC8, 0xF8, -0x00, 0x30, 0x1B, 0xE7, 0x21, 0x4B, 0x22, 0x49, 0x0B, 0x4E, 0x01, 0x25, 0x1D, 0x60, 0x02, 0x20, 0x0C, 0xF0, 0xB2, 0xFD, -0x0F, 0x4A, 0x1F, 0x49, 0x53, 0x78, 0x0D, 0x60, 0xAB, 0x42, 0x94, 0xBF, 0x00, 0x23, 0x01, 0x23, 0x13, 0x70, 0x09, 0xE7, -0x98, 0x9C, 0x17, 0x00, 0x74, 0x00, 0x32, 0x40, 0x70, 0x00, 0x32, 0x40, 0xC8, 0x35, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x28, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x8C, 0x00, 0x32, 0x40, -0x20, 0x9A, 0x15, 0x00, 0x13, 0x53, 0x1E, 0x00, 0x90, 0xB3, 0x33, 0x40, 0x74, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, -0xC0, 0x99, 0x15, 0x00, 0x4C, 0x00, 0x32, 0x40, 0xC4, 0x99, 0x15, 0x00, 0xDC, 0x99, 0x15, 0x00, 0xF0, 0x99, 0x15, 0x00, -0x70, 0x79, 0x15, 0x00, 0x04, 0x9A, 0x15, 0x00, 0x14, 0x9A, 0x15, 0x00, 0x40, 0x9A, 0x15, 0x00, 0x44, 0x80, 0x32, 0x40, -0x64, 0x85, 0x32, 0x40, 0x4C, 0x9A, 0x15, 0x00, 0x68, 0x85, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, -0x6C, 0x00, 0x32, 0x40, 0x36, 0x4B, 0x30, 0x22, 0x1A, 0x60, 0xF7, 0xF7, 0x35, 0xF9, 0xF9, 0xE6, 0xEF, 0xF3, 0x10, 0x83, -0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x32, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x31, 0x4B, 0x2F, 0x4F, 0x1A, 0x68, 0x01, 0x32, -0x1A, 0x60, 0x00, 0x21, 0x3A, 0x68, 0x39, 0x60, 0x02, 0xF0, 0x0F, 0x08, 0xDA, 0xF8, 0x10, 0x20, 0x31, 0x46, 0x16, 0x46, -0x0A, 0x46, 0x47, 0xF2, 0x30, 0x50, 0x04, 0xE0, 0xDA, 0xF8, 0x10, 0x10, 0x89, 0x1B, 0x81, 0x42, 0x1B, 0xD8, 0x39, 0x68, -0x09, 0x07, 0xF7, 0xD1, 0x25, 0x48, 0x26, 0x49, 0xD0, 0xF8, 0x00, 0xC0, 0x0F, 0x68, 0x16, 0x46, 0xDA, 0xF8, 0x10, 0x20, -0xB8, 0xF1, 0x00, 0x0F, 0x1A, 0xD1, 0x22, 0x4A, 0x04, 0x21, 0x11, 0x60, 0x1A, 0x68, 0x32, 0xB1, 0x1B, 0x49, 0x01, 0x3A, -0x1A, 0x60, 0x0B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x2A, 0x68, 0xA0, 0xE6, 0x1C, 0x49, 0x00, 0x92, 0x02, 0x20, -0x0C, 0xF0, 0x24, 0xFD, 0x15, 0x4B, 0x00, 0x9A, 0xD3, 0xE7, 0x19, 0x49, 0x02, 0x20, 0x0C, 0xF0, 0x1D, 0xFD, 0x3B, 0xE7, -0x07, 0xEA, 0x0C, 0x07, 0x7F, 0x07, 0xE0, 0xD4, 0xCD, 0xE9, 0x00, 0x16, 0x80, 0x46, 0x16, 0x46, 0x01, 0xE0, 0x7A, 0x07, -0x12, 0xD4, 0x00, 0x9A, 0xD8, 0xF8, 0x00, 0x70, 0x12, 0x68, 0xDA, 0xF8, 0x10, 0x10, 0x47, 0xF2, 0x30, 0x50, 0x89, 0x1B, -0x81, 0x42, 0x07, 0xEA, 0x02, 0x07, 0xF0, 0xD9, 0x0B, 0x49, 0x02, 0x20, 0x0C, 0xF0, 0x00, 0xFD, 0x03, 0x4B, 0xEA, 0xE7, -0x01, 0x9E, 0xC4, 0xE7, 0x38, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x6C, 0x80, 0x32, 0x40, -0x74, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x5C, 0x9A, 0x15, 0x00, 0x2C, 0x9A, 0x15, 0x00, 0x68, 0x9A, 0x15, 0x00, -0x10, 0xB5, 0x00, 0x20, 0x0B, 0xF0, 0xD0, 0xF8, 0x01, 0x28, 0x05, 0xD1, 0x05, 0x4B, 0xBD, 0xE8, 0x10, 0x40, 0xD3, 0xF8, -0x60, 0x31, 0x18, 0x47, 0x00, 0x21, 0xBD, 0xE8, 0x10, 0x40, 0x08, 0x46, 0x0B, 0xF0, 0x1A, 0xB8, 0x88, 0x1A, 0x17, 0x00, -0x03, 0x4B, 0x30, 0x22, 0x1A, 0x60, 0x01, 0x21, 0x00, 0x20, 0x0B, 0xF0, 0x11, 0xB8, 0x00, 0xBF, 0x38, 0x00, 0x32, 0x40, -0xF8, 0xB5, 0x90, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x46, 0xD0, 0x90, 0xF8, 0x8A, 0x30, 0x04, 0x46, 0x00, 0x2B, 0x42, 0xD1, -0x3D, 0x4E, 0x3E, 0x49, 0x94, 0xF8, 0x6C, 0x30, 0x3D, 0x4A, 0x67, 0x6A, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, -0x9D, 0x68, 0x13, 0x6A, 0xA3, 0x42, 0x3D, 0x44, 0x54, 0xD0, 0xD6, 0xF8, 0xE0, 0x31, 0x29, 0x46, 0x04, 0xF1, 0x18, 0x00, -0x98, 0x47, 0x20, 0x46, 0xFF, 0xF7, 0x82, 0xF8, 0xD4, 0xF8, 0x80, 0x10, 0xD6, 0xF8, 0x14, 0x32, 0x39, 0x44, 0x20, 0x46, -0x98, 0x47, 0xD6, 0xF8, 0xA4, 0x30, 0x2A, 0x46, 0x39, 0x46, 0x20, 0x46, 0x98, 0x47, 0xD8, 0xB9, 0x94, 0xF8, 0x78, 0x30, -0x62, 0x68, 0x2C, 0x49, 0x01, 0x33, 0xDB, 0xB2, 0x42, 0xF0, 0x01, 0x02, 0x09, 0x68, 0x84, 0xF8, 0x78, 0x30, 0x62, 0x60, -0x0A, 0x78, 0x93, 0x42, 0x21, 0xD8, 0x39, 0xD0, 0xB3, 0xEB, 0x52, 0x0F, 0x26, 0xD0, 0xB3, 0xEB, 0x92, 0x0F, 0x4F, 0xEA, -0x92, 0x01, 0x21, 0xD0, 0x01, 0xEB, 0x41, 0x01, 0x8B, 0x42, 0x1D, 0xD0, 0xF8, 0xBD, 0x90, 0xF8, 0x8C, 0x20, 0x00, 0x2A, -0xB8, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, 0x01, 0x2B, 0x80, 0xF8, 0x8A, 0x30, 0x29, 0xD9, 0x02, 0x2B, 0x16, 0x4E, 0xB0, 0xD1, -0x90, 0xF8, 0x63, 0x00, 0xD6, 0xF8, 0xC0, 0x31, 0x00, 0x21, 0x98, 0x47, 0xA9, 0xE7, 0xD6, 0xF8, 0x64, 0x11, 0x94, 0xF8, -0x6C, 0x00, 0x22, 0x46, 0xBD, 0xE8, 0xF8, 0x40, 0xF8, 0xF7, 0x30, 0xB9, 0xBD, 0xE8, 0xF8, 0x40, 0xEA, 0xF7, 0x5A, 0xBE, -0x0F, 0x4B, 0x65, 0x62, 0x93, 0xF8, 0xB5, 0x30, 0x00, 0x2B, 0xAA, 0xD1, 0x0D, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, -0x9F, 0xD1, 0xA4, 0xE7, 0xEA, 0xF7, 0x4C, 0xFE, 0x20, 0x46, 0xBD, 0xE8, 0xF8, 0x40, 0x06, 0xF0, 0x47, 0xBD, 0xBD, 0xE8, -0xF8, 0x40, 0xFF, 0xF7, 0x9B, 0xB8, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0xC8, 0x35, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x38, 0x4B, 0x2D, 0xE9, 0xF0, 0x47, 0x9C, 0x68, -0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x35, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x34, 0x4D, 0x2B, 0x68, -0x04, 0x20, 0x01, 0x33, 0x2B, 0x60, 0xF6, 0xF7, 0xF1, 0xFC, 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, 0xF6, 0xF7, 0x8C, 0xFD, -0x2B, 0x68, 0x2B, 0xB1, 0x2C, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0x4C, 0xD0, 0xDF, 0xF8, 0xB4, 0x80, -0x00, 0x2C, 0x43, 0xD0, 0x29, 0x4F, 0x2A, 0x4E, 0x40, 0xF6, 0xE7, 0x35, 0x02, 0xE0, 0x24, 0x68, 0x00, 0x2C, 0x3B, 0xD0, -0x94, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0xF8, 0xD1, 0x94, 0xF8, 0xD5, 0x30, 0x01, 0x3B, 0xDB, 0xB2, 0x84, 0xF8, 0xD5, 0x30, -0x00, 0x2B, 0xF0, 0xD1, 0x94, 0xF8, 0xD4, 0x30, 0x84, 0xF8, 0xD5, 0x30, 0x20, 0x46, 0xFE, 0xF7, 0xD3, 0xFF, 0x61, 0x6A, -0xD8, 0xF8, 0x14, 0x32, 0x01, 0xF6, 0xE8, 0x31, 0x20, 0x46, 0x98, 0x47, 0x3B, 0x68, 0xB4, 0xF8, 0xD2, 0x20, 0x59, 0x01, -0xB5, 0xEB, 0x43, 0x1F, 0x28, 0xBF, 0x01, 0xEB, 0x82, 0x21, 0x32, 0x69, 0x23, 0x6C, 0xA2, 0xF6, 0xE8, 0x39, 0x89, 0x44, -0x20, 0x46, 0x4A, 0x46, 0x1B, 0xB1, 0xD8, 0xF8, 0xA4, 0x30, 0x61, 0x6A, 0x98, 0x47, 0x94, 0xF8, 0xC0, 0x34, 0x04, 0xF1, -0x18, 0x00, 0x49, 0x46, 0x00, 0x2B, 0xC6, 0xD0, 0xD8, 0xF8, 0xE0, 0x31, 0x98, 0x47, 0x24, 0x68, 0x00, 0x2C, 0xC3, 0xD1, -0xD8, 0xF8, 0x84, 0x31, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x00, 0x2A, 0xB0, 0xD0, 0x62, 0xB6, 0xAE, 0xE7, 0x00, 0xBF, -0x00, 0x88, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x40, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, -0x88, 0x1A, 0x17, 0x00, 0x08, 0xF0, 0x4A, 0xBE, 0x14, 0x4B, 0x15, 0x4A, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x10, 0xB5, -0x14, 0x68, 0x00, 0x2B, 0x04, 0xF0, 0x40, 0x74, 0x14, 0xDB, 0x20, 0x46, 0x0B, 0xF0, 0x04, 0xF9, 0x0F, 0x4B, 0x9B, 0x7C, -0x3B, 0xB9, 0x0F, 0x4A, 0x0F, 0x4B, 0x10, 0x6A, 0xD3, 0xF8, 0xCC, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x0C, 0x4B, -0x20, 0x46, 0xD3, 0xF8, 0x68, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0xB4, 0xF1, 0x40, 0x7F, 0xE7, 0xD1, 0x08, 0x49, -0x08, 0x48, 0x4F, 0xF4, 0x9D, 0x62, 0x0C, 0xF0, 0xBB, 0xFD, 0xE0, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, -0x00, 0x88, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x78, 0x9A, 0x15, 0x00, -0xF0, 0xB5, 0x2D, 0x4E, 0x2D, 0x4B, 0xDF, 0xF8, 0xC8, 0xE0, 0xDF, 0xF8, 0xC8, 0xC0, 0x2C, 0x4F, 0x4F, 0xF4, 0x1E, 0x72, -0x02, 0xFB, 0x00, 0x62, 0x15, 0x8D, 0xD4, 0x8C, 0x44, 0xEA, 0x05, 0x44, 0x1C, 0x60, 0x52, 0x8D, 0x27, 0x4D, 0x5A, 0x60, -0x00, 0x24, 0x27, 0x4A, 0xCE, 0xF8, 0x00, 0x40, 0x4F, 0xF0, 0x00, 0x53, 0xCC, 0xF8, 0x00, 0x40, 0x2C, 0x60, 0x00, 0xF1, -0x10, 0x05, 0x3C, 0x60, 0xEC, 0xB2, 0x13, 0x60, 0x13, 0x68, 0x9F, 0x00, 0xFC, 0xD4, 0xDD, 0x00, 0x26, 0xD4, 0x15, 0x68, -0xC5, 0xF3, 0x07, 0x43, 0xA3, 0x42, 0x4F, 0xEA, 0x15, 0x45, 0x1F, 0xD0, 0xED, 0xB2, 0xDF, 0xF8, 0x5C, 0xE0, 0xDF, 0xF8, -0x68, 0xC0, 0x18, 0x4F, 0x2D, 0x04, 0x4F, 0xF0, 0xFF, 0x33, 0x45, 0xF0, 0x80, 0x45, 0xCE, 0xF8, 0x00, 0x30, 0xCC, 0xF8, -0x00, 0x30, 0x15, 0x60, 0x3B, 0x68, 0x5A, 0x00, 0xFC, 0xD4, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x00, 0x63, 0x0C, 0x48, -0x1D, 0x8D, 0xDA, 0x8C, 0x42, 0xEA, 0x05, 0x42, 0x02, 0x60, 0x0D, 0x4A, 0x5B, 0x8D, 0x13, 0x60, 0x0B, 0x01, 0x43, 0xEA, -0x04, 0x43, 0x09, 0x4A, 0x43, 0xF0, 0x80, 0x43, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, -0x20, 0x46, 0xF0, 0xBD, 0x68, 0x65, 0x17, 0x00, 0xBC, 0x00, 0x32, 0x40, 0xB8, 0x00, 0x32, 0x40, 0xB4, 0x00, 0x32, 0x40, -0xC4, 0x00, 0x32, 0x40, 0xC0, 0x00, 0x32, 0x40, 0xAC, 0x00, 0x32, 0x40, 0xB0, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x41, -0x82, 0xB0, 0x47, 0x78, 0x90, 0xF8, 0x29, 0x60, 0x01, 0x23, 0x8D, 0xF8, 0x06, 0x30, 0xFF, 0x2F, 0x4F, 0xF0, 0x00, 0x03, -0x04, 0x46, 0x00, 0xF1, 0x04, 0x08, 0x8D, 0xF8, 0x07, 0x30, 0x00, 0xF0, 0x83, 0x80, 0x74, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x73, 0xDB, 0x3A, 0x46, 0x94, 0xF8, 0x28, 0x30, 0x70, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0x0C, 0xF0, -0xF5, 0xFA, 0x07, 0xF1, 0x10, 0x05, 0x6E, 0x4B, 0xED, 0xB2, 0xD3, 0xF8, 0x18, 0x33, 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, -0x6B, 0x4A, 0x6C, 0x48, 0x6C, 0x49, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0x22, 0x17, 0x8D, 0xD3, 0x8C, 0x43, 0xEA, -0x07, 0x43, 0x03, 0x60, 0x53, 0x8D, 0x0B, 0x60, 0x0D, 0xF1, 0x06, 0x03, 0x0D, 0xF1, 0x07, 0x02, 0x94, 0xF8, 0x28, 0x00, -0x41, 0x46, 0xFF, 0xF7, 0x7B, 0xF8, 0x63, 0x4B, 0xA2, 0x68, 0x1A, 0x60, 0xE2, 0x68, 0x5A, 0x60, 0x22, 0x69, 0x9A, 0x60, -0x62, 0x69, 0xDA, 0x60, 0x9D, 0xF8, 0x07, 0x30, 0x04, 0x2B, 0x65, 0xD0, 0x5D, 0x4A, 0x12, 0x68, 0x02, 0x2B, 0x12, 0x78, -0x1F, 0xD1, 0xD1, 0x07, 0x00, 0xF1, 0x85, 0x80, 0x5A, 0x48, 0x01, 0x68, 0x21, 0xF0, 0x01, 0x01, 0x01, 0x60, 0x92, 0x07, -0x17, 0xD5, 0x9D, 0xF8, 0x06, 0x00, 0x94, 0xF8, 0x2A, 0x10, 0x56, 0x4A, 0x2B, 0x04, 0x43, 0xEA, 0x00, 0x33, 0x43, 0xEA, -0x06, 0x13, 0x43, 0xEA, 0x81, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x5C, 0x00, 0xFC, 0xD4, 0x28, 0x46, -0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x97, 0x07, 0x6F, 0xD4, 0x9D, 0xF8, 0x06, 0x00, 0x94, 0xF8, 0x2A, 0x10, 0x4A, 0x4A, -0x1B, 0x02, 0x43, 0xEA, 0x00, 0x33, 0x43, 0xEA, 0x05, 0x43, 0x43, 0xEA, 0x06, 0x13, 0x43, 0xEA, 0x81, 0x03, 0x43, 0xF0, -0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x59, 0x00, 0xFC, 0xD4, 0x28, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x0D, 0x2F, -0x89, 0xD9, 0x40, 0x49, 0x40, 0x48, 0x40, 0xF2, 0x5C, 0x52, 0x0C, 0xF0, 0xAB, 0xFC, 0x82, 0xE7, 0x90, 0xF8, 0x28, 0x30, -0x05, 0x2B, 0x4E, 0xD0, 0x34, 0x48, 0x35, 0x4A, 0x25, 0x78, 0x3B, 0x49, 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x60, 0x13, 0x60, -0x94, 0xF8, 0x28, 0x30, 0x94, 0xF8, 0x29, 0x20, 0x4F, 0xF4, 0x80, 0x70, 0x0C, 0xF0, 0x6C, 0xFA, 0x05, 0xEB, 0x86, 0x05, -0x29, 0x4B, 0xED, 0xB2, 0xD3, 0xF8, 0x48, 0x34, 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, 0x83, 0xE7, 0x30, 0x4A, 0xA1, 0x69, -0x11, 0x60, 0xE1, 0x69, 0x51, 0x60, 0x21, 0x6A, 0x91, 0x60, 0x27, 0x4A, 0x2D, 0x49, 0x60, 0x6A, 0x12, 0x68, 0x08, 0x60, -0x12, 0x78, 0x90, 0x07, 0xB1, 0xD5, 0x9D, 0xF8, 0x06, 0x00, 0x94, 0xF8, 0x2A, 0x10, 0x23, 0x4A, 0x1B, 0x02, 0x43, 0xEA, -0x00, 0x33, 0x43, 0xEA, 0x05, 0x43, 0x43, 0xEA, 0x06, 0x13, 0x43, 0xEA, 0x81, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, -0x13, 0x68, 0x58, 0x00, 0xFC, 0xD4, 0x28, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x1D, 0x49, 0xA0, 0x69, 0x08, 0x60, -0xE0, 0x69, 0x48, 0x60, 0x20, 0x6A, 0x88, 0x60, 0x60, 0x6A, 0xC8, 0x60, 0x75, 0xE7, 0x5A, 0x1E, 0x01, 0x2A, 0xDA, 0xD8, -0x73, 0xE7, 0x18, 0x4B, 0x05, 0x78, 0x1B, 0x68, 0x09, 0x4A, 0x1B, 0x0E, 0x03, 0x3B, 0x2B, 0x44, 0x03, 0xEB, 0x46, 0x03, -0xDD, 0xB2, 0x29, 0x46, 0xD2, 0xF8, 0x48, 0x34, 0x98, 0x47, 0x28, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0xB4, 0x9A, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xBC, 0x00, 0x32, 0x40, -0xC0, 0x00, 0x32, 0x40, 0xAC, 0x00, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x64, 0x05, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, -0x70, 0x79, 0x15, 0x00, 0xA0, 0x9A, 0x15, 0x00, 0x90, 0x9A, 0x15, 0x00, 0xC8, 0x00, 0x32, 0x40, 0xD4, 0x00, 0x32, 0x40, -0xD8, 0x00, 0x32, 0x40, 0x33, 0x4A, 0x13, 0x68, 0xB0, 0xEB, 0x13, 0x6F, 0x70, 0xB5, 0x04, 0x46, 0x46, 0xD8, 0x0F, 0x28, -0x24, 0xD8, 0x30, 0x4B, 0x30, 0x4D, 0x31, 0x49, 0x31, 0x48, 0x4F, 0xF0, 0xFF, 0x32, 0x1A, 0x60, 0xA3, 0x10, 0x2A, 0x60, -0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x00, 0xD1, 0xF8, 0x54, 0x34, 0x04, 0xF0, 0x03, 0x01, 0x98, 0x47, 0x2B, 0x4A, -0x2B, 0x49, 0x2C, 0x4E, 0x2C, 0x4D, 0x2D, 0x48, 0x24, 0x04, 0x00, 0x23, 0x44, 0xF0, 0x80, 0x44, 0x33, 0x60, 0x2B, 0x60, -0x13, 0x60, 0x03, 0x60, 0x0A, 0x46, 0x0C, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, 0x70, 0xBD, 0xA0, 0xF1, 0x10, 0x05, -0x25, 0x48, 0x4F, 0xF4, 0x1E, 0x73, 0xED, 0xB2, 0x03, 0xFB, 0x05, 0x05, 0x28, 0x46, 0x95, 0xF8, 0x22, 0x60, 0xFD, 0xF7, -0xD3, 0xFF, 0x1A, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x06, 0x36, 0x96, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0xE8, 0xD0, -0x28, 0x8D, 0xEB, 0x8C, 0x11, 0x49, 0x12, 0x4A, 0x43, 0xEA, 0x00, 0x43, 0x0B, 0x60, 0x6B, 0x8D, 0x13, 0x60, 0xCC, 0xE7, -0x13, 0x68, 0x15, 0x68, 0x0F, 0x48, 0x0E, 0x4A, 0x1B, 0x0E, 0x01, 0x33, 0xE3, 0x1A, 0x61, 0x1E, 0xA1, 0xEB, 0x15, 0x61, -0x03, 0xEB, 0xD3, 0x73, 0x5B, 0x10, 0x4F, 0xF4, 0xA4, 0x64, 0x01, 0xF0, 0x01, 0x01, 0x04, 0xFB, 0x03, 0x00, 0x04, 0x31, -0xBD, 0xE8, 0x70, 0x40, 0xD2, 0xF8, 0x54, 0x34, 0x18, 0x47, 0x00, 0xBF, 0xD8, 0x00, 0x32, 0x40, 0xBC, 0x00, 0x32, 0x40, -0xC0, 0x00, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xB4, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, -0xAC, 0x00, 0x32, 0x40, 0xB0, 0x00, 0x32, 0x40, 0xB8, 0x00, 0x32, 0x40, 0x68, 0x65, 0x17, 0x00, 0xF0, 0xB4, 0x0E, 0x49, -0x0E, 0x4F, 0x0F, 0x4E, 0x0F, 0x4D, 0x10, 0x4C, 0x4F, 0xF0, 0xFF, 0x32, 0x00, 0xF1, 0x10, 0x03, 0x0E, 0x48, 0x3A, 0x60, -0xDB, 0xB2, 0x0A, 0x60, 0x00, 0x21, 0x01, 0x60, 0x1B, 0x04, 0x18, 0x30, 0x43, 0xF0, 0x80, 0x43, 0x31, 0x60, 0x02, 0x46, -0x29, 0x60, 0x21, 0x60, 0x03, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, 0xF0, 0xBC, 0x70, 0x47, 0xC0, 0x00, 0x32, 0x40, -0xBC, 0x00, 0x32, 0x40, 0xB0, 0x00, 0x32, 0x40, 0xB4, 0x00, 0x32, 0x40, 0xB8, 0x00, 0x32, 0x40, 0xAC, 0x00, 0x32, 0x40, -0x08, 0xB5, 0x4F, 0xF0, 0x80, 0x60, 0x0A, 0xF0, 0xA5, 0xFE, 0x00, 0x21, 0xBD, 0xE8, 0x08, 0x40, 0x08, 0x46, 0x0A, 0xF0, -0x89, 0xBC, 0x00, 0xBF, 0x14, 0x4B, 0x15, 0x49, 0x1A, 0x68, 0x22, 0xF0, 0x02, 0x02, 0xF0, 0xB4, 0x1A, 0x60, 0x1A, 0x68, -0x12, 0x4F, 0x13, 0x4E, 0x13, 0x4D, 0x14, 0x4C, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x4F, 0xF4, 0x40, 0x72, 0x3A, 0x60, -0x07, 0x68, 0x82, 0x88, 0x00, 0x20, 0x30, 0x60, 0x28, 0x60, 0x27, 0x60, 0x0E, 0x4C, 0x0A, 0x60, 0x19, 0x68, 0x62, 0x68, -0x0D, 0x4D, 0xA6, 0xF5, 0x00, 0x46, 0x44, 0x3E, 0x2A, 0x43, 0x21, 0xF4, 0xE0, 0x61, 0x19, 0x60, 0x25, 0x60, 0x32, 0x60, -0xF0, 0xBC, 0xFC, 0xF7, 0x57, 0xBE, 0x00, 0xBF, 0x4C, 0x00, 0x32, 0x40, 0x14, 0x00, 0x32, 0x40, 0x1C, 0x00, 0x32, 0x40, -0xA4, 0x80, 0x32, 0x40, 0xA8, 0x80, 0x32, 0x40, 0x10, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x8C, 0x84, 0x03, 0x35, -0x0B, 0x49, 0x0C, 0x48, 0x38, 0xB5, 0x02, 0x68, 0x4B, 0x68, 0x0B, 0x4C, 0x0B, 0x4D, 0x42, 0xF0, 0x02, 0x02, 0x23, 0x43, -0x02, 0x60, 0x0C, 0x60, 0x00, 0x20, 0x2B, 0x60, 0xFC, 0xF7, 0x36, 0xFE, 0x07, 0x4B, 0x08, 0x49, 0x08, 0x4A, 0x19, 0x60, -0x13, 0x68, 0x0B, 0x43, 0x13, 0x60, 0x38, 0xBD, 0x98, 0x9C, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x8C, 0xA4, 0x07, 0x35, -0x60, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x01, 0x00, 0x04, 0x00, 0x74, 0x80, 0x32, 0x40, 0x0D, 0x49, 0x0E, 0x48, -0x38, 0xB5, 0x02, 0x68, 0x4B, 0x68, 0x0D, 0x4C, 0x0D, 0x4D, 0x22, 0xF0, 0x02, 0x02, 0x23, 0x43, 0x02, 0x60, 0x0C, 0x60, -0x00, 0x20, 0x2B, 0x60, 0xFC, 0xF7, 0x10, 0xFE, 0x09, 0x4B, 0x0A, 0x4A, 0x0A, 0x49, 0x19, 0x60, 0x13, 0x68, 0x23, 0xF4, -0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x38, 0xBD, 0x00, 0xBF, 0x98, 0x9C, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, -0x8C, 0x84, 0x03, 0x35, 0x60, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, 0x01, 0x00, 0x04, 0x00, -0x00, 0xEB, 0x80, 0x03, 0xC0, 0xEB, 0x03, 0x10, 0x04, 0x4B, 0x08, 0x44, 0x03, 0xEB, 0xC0, 0x00, 0x90, 0xF8, 0xA5, 0x01, -0x21, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x70, 0x47, 0x68, 0x65, 0x17, 0x00, 0x00, 0xEB, 0x80, 0x03, 0xC0, 0xEB, 0x03, 0x10, -0x04, 0x4B, 0x08, 0x44, 0x03, 0xEB, 0xC0, 0x00, 0x90, 0xF8, 0xA4, 0x01, 0x21, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x70, 0x47, -0x68, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x37, 0x4A, 0x37, 0x4B, 0x92, 0xF8, 0x30, 0x10, 0x1B, 0x68, 0x00, 0x29, 0x45, 0xD1, -0x00, 0x28, 0x40, 0xD0, 0x9B, 0xB2, 0x01, 0x21, 0x80, 0xEA, 0xE0, 0x76, 0x00, 0x28, 0x4F, 0xEA, 0x83, 0x23, 0x82, 0xF8, -0x30, 0x10, 0xA6, 0xEB, 0xE0, 0x76, 0x4E, 0xDD, 0xB6, 0xEB, 0x53, 0x0F, 0x23, 0xFA, 0x01, 0xF4, 0x98, 0xBF, 0x04, 0x46, -0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x29, 0x49, 0x01, 0x20, 0x08, 0x60, 0x28, 0x4D, 0x29, 0x4F, -0x29, 0x68, 0x29, 0x48, 0x01, 0x31, 0x00, 0x68, 0x29, 0x60, 0x39, 0x69, 0x00, 0x2C, 0x4F, 0xEA, 0x40, 0x17, 0x01, 0xEB, -0x40, 0x11, 0x4F, 0xEA, 0x93, 0x00, 0x25, 0xDD, 0xB8, 0x42, 0x1A, 0xD8, 0x64, 0x36, 0xDB, 0x1B, 0x9E, 0x42, 0x31, 0xD9, -0x20, 0x4B, 0x94, 0x62, 0x09, 0x1A, 0xD3, 0xF8, 0xE0, 0x31, 0x1F, 0x48, 0x98, 0x47, 0x2B, 0x68, 0x43, 0xB1, 0x18, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x1B, 0xB9, 0x12, 0xB1, 0x62, 0xB6, 0x00, 0xE0, 0x04, 0x46, 0x20, 0x46, 0xF8, 0xBD, -0x00, 0x24, 0x20, 0x46, 0xF8, 0xBD, 0x15, 0x4E, 0x94, 0x62, 0x19, 0x44, 0x09, 0x1A, 0xD6, 0xF8, 0xE0, 0x31, 0x13, 0x48, -0x98, 0x47, 0xE6, 0xE7, 0x30, 0x44, 0xB8, 0x42, 0x0E, 0xD3, 0x0F, 0x4B, 0x0F, 0x48, 0xD3, 0xF8, 0xE0, 0x31, 0x94, 0x62, -0x64, 0x31, 0x98, 0x47, 0xDB, 0xE7, 0x5C, 0x08, 0xB6, 0xEB, 0x53, 0x0F, 0x8C, 0xBF, 0x64, 0x42, 0x04, 0x46, 0xAF, 0xE7, -0x20, 0x46, 0xFE, 0xF7, 0x57, 0xFD, 0xD0, 0xE7, 0x98, 0x9C, 0x17, 0x00, 0x64, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x40, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xB8, 0x9C, 0x17, 0x00, -0x13, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x0E, 0xDB, 0x11, 0x4B, 0xDB, 0x7F, 0x2B, 0xB1, -0x10, 0x4A, 0x93, 0x7C, 0x52, 0x7C, 0x13, 0x44, 0x01, 0x2B, 0x11, 0xDD, 0x0E, 0x4B, 0xBD, 0xE8, 0x10, 0x40, 0xD3, 0xF8, -0x60, 0x31, 0x18, 0x47, 0x00, 0x20, 0x0A, 0xF0, 0xED, 0xFB, 0x03, 0x28, 0xEB, 0xD0, 0x0A, 0x49, 0x0A, 0x48, 0x40, 0xF2, -0x06, 0x72, 0x0C, 0xF0, 0x25, 0xFA, 0xE4, 0xE7, 0x00, 0x21, 0xBD, 0xE8, 0x10, 0x40, 0x08, 0x46, 0x0A, 0xF0, 0x36, 0xBB, -0x38, 0x36, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xC4, 0x9A, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x39, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x61, 0xDB, -0x37, 0x49, 0x04, 0x20, 0x0B, 0xF0, 0xDC, 0xFF, 0xEF, 0xF3, 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x34, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0xFC, 0x80, 0x32, 0x4C, 0xD8, 0xF8, 0x00, 0x30, 0x32, 0x4D, 0x01, 0x33, 0x00, 0x22, -0xC8, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x22, 0x60, 0x2F, 0x69, 0x03, 0xF0, 0x0F, 0x09, 0x47, 0xF2, 0x30, 0x56, 0x05, 0xE0, -0xF6, 0xF7, 0x22, 0xFB, 0x2B, 0x69, 0xDB, 0x1B, 0xB3, 0x42, 0x2C, 0xD8, 0x23, 0x68, 0x19, 0x07, 0xF6, 0xD1, 0x28, 0x4A, -0x28, 0x48, 0x53, 0x68, 0x28, 0x49, 0x04, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x53, 0x60, 0x0B, 0x68, 0xB9, 0xF1, 0x00, 0x0F, -0x22, 0xD1, 0x25, 0x4B, 0x25, 0x49, 0x04, 0x20, 0x18, 0x60, 0x0B, 0xF0, 0xA7, 0xFF, 0x24, 0x4B, 0x93, 0xF8, 0x5A, 0x30, -0x0B, 0xBB, 0x03, 0x21, 0x00, 0x20, 0x0A, 0xF0, 0xE1, 0xFA, 0x21, 0x4A, 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x21, 0x51, 0x82, -0x3B, 0xB1, 0x15, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, -0xF8, 0x83, 0x1A, 0x49, 0x04, 0x20, 0x0B, 0xF0, 0x8B, 0xFF, 0xC4, 0xE7, 0x23, 0x40, 0x5A, 0x07, 0xD9, 0xD4, 0x02, 0x68, -0x0B, 0x68, 0x13, 0x40, 0x5B, 0x07, 0xFA, 0xD5, 0xD3, 0xE7, 0xF6, 0xF7, 0x07, 0xFB, 0xDA, 0xE7, 0x00, 0x20, 0x0A, 0xF0, -0x65, 0xFB, 0x04, 0x28, 0x98, 0xD1, 0x10, 0x49, 0x10, 0x48, 0x40, 0xF2, 0x14, 0x72, 0x0C, 0xF0, 0x9D, 0xF9, 0x91, 0xE7, -0x38, 0x36, 0x17, 0x00, 0x14, 0x9B, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, 0x38, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, -0x1C, 0x9E, 0x17, 0x00, 0x6C, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x28, 0x9B, 0x15, 0x00, -0x30, 0x9D, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x5C, 0x9A, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0xF0, 0x9A, 0x15, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x24, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x31, 0xDB, 0x00, 0x20, -0x0A, 0xF0, 0x32, 0xFB, 0x02, 0x28, 0x05, 0xD0, 0xBD, 0xE8, 0x10, 0x40, 0x04, 0x21, 0x00, 0x20, 0x0A, 0xF0, 0x82, 0xBA, -0x1C, 0x4B, 0x30, 0x22, 0x1A, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x19, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x19, 0x4C, 0x23, 0x68, 0x4F, 0xF0, 0x80, 0x60, 0x01, 0x33, 0x23, 0x60, 0x0A, 0xF0, 0x85, 0xFC, 0x16, 0x4B, -0x1B, 0x68, 0x5B, 0x07, 0x02, 0xD5, 0x15, 0x4B, 0x04, 0x22, 0x1A, 0x60, 0x23, 0x68, 0x00, 0x2B, 0xDC, 0xD0, 0x0F, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x00, 0x2B, 0xD6, 0xD1, 0x00, 0x2A, 0xD4, 0xD0, 0x62, 0xB6, 0xD2, 0xE7, 0x00, 0x20, -0x0A, 0xF0, 0x00, 0xFB, 0x03, 0x28, 0x04, 0xD0, 0x00, 0x20, 0x0A, 0xF0, 0xFB, 0xFA, 0x00, 0x28, 0xC3, 0xD1, 0x09, 0x49, -0x09, 0x48, 0x40, 0xF2, 0x4F, 0x72, 0x0C, 0xF0, 0x33, 0xF9, 0xBC, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x38, 0x00, 0x32, 0x40, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x6C, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, -0x3C, 0x9B, 0x15, 0x00, 0x08, 0xB5, 0x00, 0x20, 0x0A, 0xF0, 0xDE, 0xFA, 0x04, 0x28, 0x00, 0xD0, 0x08, 0xBD, 0xBD, 0xE8, -0x08, 0x40, 0x01, 0x21, 0x00, 0x20, 0x0A, 0xF0, 0x2D, 0xBA, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x78, 0xA0, -0xDA, 0xF8, 0x1C, 0x33, 0x17, 0x46, 0x05, 0x46, 0x0E, 0x46, 0x98, 0x47, 0x04, 0x46, 0x60, 0xBB, 0x96, 0xF8, 0x00, 0x90, -0x16, 0x4A, 0x95, 0xF8, 0x19, 0x80, 0xDA, 0xF8, 0xB0, 0x31, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x09, 0x29, 0x41, 0x46, -0x89, 0xF8, 0x5D, 0x02, 0xA9, 0xF8, 0x5E, 0x02, 0x30, 0x78, 0x98, 0x47, 0x38, 0x70, 0xD9, 0xF8, 0x2C, 0x30, 0x2B, 0xB1, -0xDA, 0xF8, 0xB0, 0x21, 0x93, 0xF8, 0x23, 0x00, 0x69, 0x7E, 0x90, 0x47, 0x0A, 0x49, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, -0x08, 0x11, 0x91, 0xF8, 0x62, 0x30, 0x43, 0xB9, 0x33, 0x78, 0x81, 0xF8, 0x6C, 0x30, 0x6B, 0x7F, 0x81, 0xF8, 0x6D, 0x30, -0xAB, 0x7F, 0x81, 0xF8, 0x6E, 0x30, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x7C, 0x4E, 0x7D, 0x4C, 0x4F, 0xF4, 0x1E, 0x77, 0x07, 0xFB, 0x00, 0x67, -0x4F, 0xF0, 0x4F, 0x08, 0x46, 0x23, 0x18, 0xFB, 0x00, 0x38, 0x97, 0xF8, 0x22, 0xB0, 0x85, 0xB0, 0x05, 0x46, 0x06, 0xEB, -0xC8, 0x08, 0x4F, 0xF0, 0x00, 0x09, 0xD7, 0xF8, 0x08, 0x32, 0x5F, 0xFA, 0x89, 0xFA, 0xA8, 0xF1, 0x28, 0x01, 0x4F, 0xF0, -0x80, 0x42, 0x09, 0xF1, 0x01, 0x09, 0x50, 0x46, 0x13, 0xB1, 0xD4, 0xF8, 0x84, 0x33, 0x98, 0x47, 0xD7, 0xF8, 0x30, 0x32, -0x41, 0x46, 0x08, 0x37, 0x08, 0xF1, 0x08, 0x08, 0x4F, 0xF0, 0x80, 0x42, 0x50, 0x46, 0x13, 0xB1, 0xD4, 0xF8, 0x84, 0x33, -0x98, 0x47, 0xB9, 0xF1, 0x05, 0x0F, 0xE0, 0xD1, 0x65, 0x4B, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x33, 0x93, 0xF8, -0x62, 0x10, 0xC1, 0xB9, 0xFF, 0x22, 0x83, 0xF8, 0x6C, 0x20, 0xD4, 0xF8, 0xAC, 0x31, 0x28, 0x46, 0x98, 0x47, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x05, 0x66, 0xF3, 0x6A, 0x23, 0xB1, 0x93, 0xF8, 0x23, 0x00, 0xD4, 0xF8, 0xAC, 0x31, 0x98, 0x47, -0xD4, 0xF8, 0x24, 0x33, 0x28, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x4F, 0xF4, 0x1E, 0x78, 0x08, 0xFB, -0x05, 0x62, 0x92, 0xF8, 0x24, 0x90, 0xB9, 0xF1, 0x01, 0x0F, 0x02, 0xD0, 0x02, 0x29, 0xED, 0xD0, 0xDD, 0xE7, 0x93, 0xF8, -0xDE, 0x20, 0x01, 0x3A, 0xD2, 0xB2, 0x83, 0xF8, 0xDE, 0x20, 0x00, 0x2A, 0xF4, 0xD1, 0x93, 0xF8, 0x63, 0xA0, 0x0A, 0xF1, -0x0A, 0x0A, 0x5F, 0xFA, 0x8A, 0xFA, 0x08, 0xFB, 0x0A, 0xF3, 0x06, 0xEB, 0x03, 0x08, 0x00, 0x93, 0x98, 0xF8, 0x24, 0x30, -0x73, 0xB9, 0x44, 0x4B, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x37, 0x38, 0x46, 0x97, 0xF8, 0x63, 0x10, 0xE3, 0x68, -0x0A, 0x31, 0xC9, 0xB2, 0x98, 0x47, 0x97, 0xF8, 0x62, 0x10, 0xD7, 0xE7, 0x02, 0x23, 0x0C, 0x21, 0x49, 0x20, 0x01, 0x92, -0x09, 0xF0, 0x64, 0xFF, 0x01, 0x9A, 0x88, 0xF8, 0x24, 0x20, 0x80, 0xF8, 0x00, 0xA0, 0x42, 0x70, 0x09, 0xF0, 0x8C, 0xFF, -0x98, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0xDE, 0xD1, 0x98, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0xDA, 0xD8, 0x98, 0xF8, 0x22, 0x00, -0x31, 0x4B, 0xCD, 0xF8, 0x04, 0x90, 0x9E, 0x22, 0xA4, 0x21, 0x11, 0xFB, 0x00, 0x21, 0x2D, 0x4A, 0x03, 0x95, 0x07, 0xFB, -0x00, 0x27, 0x2B, 0x48, 0x02, 0x97, 0x4F, 0xF0, 0x4F, 0x0C, 0x46, 0x27, 0x1C, 0xFB, 0x0A, 0x77, 0x00, 0xEB, 0xC1, 0x0A, -0x00, 0x99, 0x28, 0x4A, 0x02, 0x9D, 0xC1, 0x46, 0x88, 0x46, 0x06, 0xEB, 0xC7, 0x07, 0x98, 0x44, 0xD9, 0xF8, 0x08, 0x12, -0x31, 0xB3, 0xEF, 0xF3, 0x10, 0x81, 0xCB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x21, 0x4B, 0x01, 0x99, 0x19, 0x60, 0x11, 0x68, -0xA7, 0xF1, 0x28, 0x00, 0x4B, 0x1C, 0xAA, 0xF1, 0x28, 0x01, 0x13, 0x60, 0x00, 0x90, 0x0A, 0xF0, 0xA1, 0xFC, 0xD9, 0xF8, -0x08, 0x12, 0xD9, 0xF8, 0x0C, 0x32, 0x00, 0x98, 0xC5, 0xF8, 0xC8, 0x14, 0xC5, 0xF8, 0xCC, 0x34, 0x0A, 0xF0, 0xA0, 0xFB, -0x14, 0x4A, 0x11, 0x68, 0x48, 0x1E, 0x29, 0xB1, 0x13, 0x4B, 0x10, 0x60, 0x19, 0x68, 0x08, 0xB9, 0x01, 0xB1, 0x62, 0xB6, -0xD9, 0xF8, 0x30, 0x32, 0x50, 0x46, 0x39, 0x46, 0x09, 0xF1, 0x08, 0x09, 0x0A, 0xF1, 0x08, 0x0A, 0x08, 0x35, 0x2B, 0xB1, -0x0A, 0xF0, 0x80, 0xFC, 0x38, 0x46, 0x0A, 0xF0, 0x87, 0xFB, 0x08, 0x4A, 0x08, 0x37, 0x47, 0x45, 0xC2, 0xD1, 0x40, 0x20, -0x03, 0x9D, 0x0A, 0xF0, 0xE1, 0xFA, 0x7A, 0xE7, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0xC0, 0x67, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x23, 0x04, 0x46, 0x00, 0x22, -0x06, 0x21, 0x43, 0x20, 0x09, 0xF0, 0xE0, 0xFE, 0x94, 0xF8, 0x63, 0x30, 0x03, 0x70, 0xBD, 0xE8, 0x10, 0x40, 0x09, 0xF0, -0x09, 0xBF, 0x00, 0xBF, 0x70, 0xB5, 0x90, 0xF9, 0x87, 0x30, 0x04, 0x46, 0x90, 0xF9, 0x86, 0x00, 0x94, 0xF8, 0x88, 0x20, -0x94, 0xF8, 0x89, 0x60, 0x84, 0xF8, 0x86, 0x10, 0xBB, 0xB1, 0x0D, 0x46, 0x52, 0xB2, 0xAE, 0xB9, 0x88, 0x42, 0x10, 0xDD, -0x9B, 0x1A, 0x99, 0x42, 0x0D, 0xDA, 0x01, 0x26, 0x00, 0x22, 0x03, 0x23, 0x0C, 0x21, 0x57, 0x20, 0x09, 0xF0, 0xBC, 0xFE, -0x94, 0xF8, 0x63, 0x20, 0x02, 0x70, 0x46, 0x70, 0x85, 0x70, 0x09, 0xF0, 0xE5, 0xFE, 0x84, 0xF8, 0x89, 0x60, 0x70, 0xBD, -0x01, 0x2E, 0xFA, 0xD1, 0x88, 0x42, 0xF8, 0xDA, 0x13, 0x44, 0x99, 0x42, 0xF5, 0xDD, 0x00, 0x26, 0xE6, 0xE7, 0x00, 0xBF, -0x14, 0x4B, 0x93, 0xF9, 0x00, 0x20, 0x22, 0xB3, 0x30, 0xB4, 0x9C, 0x78, 0x90, 0xF9, 0x86, 0x00, 0x93, 0xF9, 0x01, 0x50, -0x6C, 0xB9, 0x88, 0x42, 0x08, 0xDD, 0x52, 0x1B, 0x91, 0x42, 0x05, 0xDA, 0x0D, 0x49, 0x0A, 0x68, 0x42, 0xF4, 0x00, 0x72, -0x0A, 0x60, 0x01, 0x24, 0x9C, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x01, 0x2C, 0xFA, 0xD1, 0x88, 0x42, 0xF8, 0xDA, 0x2A, 0x44, -0x91, 0x42, 0xF5, 0xDD, 0x05, 0x49, 0x0A, 0x68, 0x00, 0x24, 0x22, 0xF4, 0x00, 0x72, 0x0A, 0x60, 0x9C, 0x70, 0x30, 0xBC, -0x70, 0x47, 0x70, 0x47, 0xA4, 0x1F, 0x17, 0x00, 0xB0, 0xB3, 0x33, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x0C, 0x46, 0x06, 0x46, -0x80, 0x68, 0x91, 0xF8, 0x8B, 0x10, 0xD0, 0xF8, 0x08, 0x80, 0x60, 0x6F, 0xB6, 0xF8, 0x1C, 0xB0, 0xDF, 0xF8, 0x1C, 0xA1, -0x87, 0xB0, 0x00, 0x25, 0x05, 0x90, 0x03, 0x92, 0x1F, 0x46, 0x84, 0xF8, 0x78, 0x50, 0x49, 0xB1, 0x94, 0xF8, 0x63, 0x00, -0xDA, 0xF8, 0xC0, 0x31, 0x01, 0x21, 0x98, 0x47, 0xA4, 0xF8, 0x8A, 0x50, 0x84, 0xF8, 0x8C, 0x50, 0x3A, 0x4B, 0x3B, 0x4D, -0x1B, 0x68, 0x22, 0x6F, 0x5B, 0x68, 0x01, 0x21, 0x84, 0xF8, 0x85, 0x10, 0x29, 0x69, 0x5B, 0x1A, 0xD3, 0x42, 0x58, 0xD4, -0x96, 0xF9, 0x2D, 0x10, 0x04, 0x91, 0xE8, 0xF7, 0x35, 0xFB, 0x34, 0x4B, 0x04, 0x99, 0x5B, 0x7C, 0x01, 0x2B, 0x59, 0xD0, -0xDA, 0xF8, 0x9C, 0x31, 0x20, 0x46, 0xAB, 0xF1, 0x24, 0x05, 0x98, 0x47, 0xAD, 0xB2, 0x00, 0x22, 0x04, 0x21, 0x08, 0xF1, -0x20, 0x00, 0x0A, 0xF0, 0x19, 0xFC, 0x00, 0x23, 0x01, 0x2D, 0x3B, 0x60, 0x08, 0xF1, 0x24, 0x02, 0x22, 0xD9, 0x04, 0x96, -0x3E, 0x46, 0x27, 0x46, 0x2C, 0x46, 0x09, 0xE0, 0x32, 0x60, 0xC9, 0xF5, 0x7F, 0x42, 0xFE, 0x32, 0x14, 0x44, 0xA4, 0xB2, -0x01, 0x2C, 0x05, 0xEB, 0x09, 0x02, 0x10, 0xD9, 0x92, 0xF8, 0x01, 0x90, 0x15, 0x46, 0x09, 0xF1, 0x01, 0x0C, 0xA4, 0x45, -0x15, 0xF8, 0x02, 0x1B, 0x07, 0xDA, 0x05, 0x29, 0xEA, 0xD0, 0x02, 0x46, 0x49, 0x46, 0x28, 0x46, 0x0A, 0xF0, 0xF4, 0xFB, -0xE5, 0xE7, 0x3C, 0x46, 0x37, 0x46, 0x04, 0x9E, 0x60, 0x67, 0x3B, 0x68, 0x01, 0x93, 0x03, 0x9B, 0x00, 0x93, 0x32, 0x46, -0x59, 0x46, 0x40, 0x46, 0x23, 0x46, 0xDA, 0xF8, 0xD0, 0x51, 0xA8, 0x47, 0x04, 0x20, 0x0A, 0xF0, 0xA1, 0xF8, 0x01, 0x28, -0x04, 0xD0, 0x60, 0x6F, 0x05, 0x9B, 0xC0, 0x1A, 0x18, 0xBF, 0x01, 0x20, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x22, -0x94, 0xF8, 0x6C, 0x00, 0x11, 0x46, 0xF7, 0xF7, 0x75, 0xF9, 0x00, 0x28, 0x9E, 0xD1, 0x2B, 0x69, 0x23, 0x67, 0x9B, 0xE7, -0x20, 0x46, 0xFF, 0xF7, 0x3F, 0xFF, 0x04, 0x99, 0xA0, 0xE7, 0x00, 0xBF, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, -0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x00, 0x22, 0x05, 0x46, 0x0C, 0x46, 0x02, 0x23, 0x0C, 0x21, -0x59, 0x20, 0x09, 0xF0, 0xD3, 0xFD, 0x05, 0x70, 0x44, 0x70, 0xBD, 0xE8, 0x38, 0x40, 0x09, 0xF0, 0xFD, 0xBD, 0x00, 0xBF, -0x08, 0xB5, 0x03, 0x4B, 0x08, 0x46, 0xD3, 0xF8, 0x74, 0x31, 0x98, 0x47, 0x01, 0x20, 0x08, 0xBD, 0x88, 0x1A, 0x17, 0x00, -0x08, 0xB5, 0x04, 0x4A, 0x08, 0x78, 0xD2, 0xF8, 0x5C, 0x22, 0x19, 0x46, 0x90, 0x47, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, -0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x0E, 0x46, 0x2F, 0x20, 0x19, 0x46, 0x02, 0x23, 0x34, 0x78, 0x09, 0xF0, 0xAE, 0xFD, -0x0D, 0x49, 0x76, 0x78, 0x0D, 0x4B, 0x4F, 0xF4, 0xA4, 0x67, 0x05, 0x46, 0x07, 0xFB, 0x04, 0x10, 0x29, 0x46, 0x90, 0xF8, -0x65, 0x20, 0x80, 0xF8, 0x66, 0x60, 0x01, 0xF8, 0x01, 0x2F, 0x7F, 0x22, 0xD3, 0xF8, 0x40, 0x33, 0x80, 0xF8, 0x65, 0x20, -0x2A, 0x46, 0x98, 0x47, 0x28, 0x46, 0x09, 0xF0, 0xC5, 0xFD, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x18, 0x46, 0x38, 0xB5, 0x0D, 0x46, 0x03, 0x23, 0x01, 0x46, 0x0B, 0x20, 0x09, 0xF0, 0x86, 0xFD, -0x06, 0x4B, 0x04, 0x46, 0xD3, 0xF8, 0xC4, 0x31, 0xA2, 0x1C, 0x61, 0x1C, 0x28, 0x46, 0x98, 0x47, 0x20, 0x70, 0x20, 0x46, -0x09, 0xF0, 0xAA, 0xFD, 0x00, 0x20, 0x38, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x0E, 0x4E, 0x0D, 0x46, 0x1C, 0x46, -0x19, 0x46, 0x28, 0x46, 0xD6, 0xF8, 0x80, 0x30, 0x17, 0x46, 0x98, 0x47, 0x0C, 0xB9, 0x00, 0x20, 0xF8, 0xBD, 0x06, 0x46, -0x3A, 0x46, 0x21, 0x46, 0x03, 0x23, 0x47, 0x20, 0x09, 0xF0, 0x62, 0xFD, 0x2A, 0x78, 0x02, 0x70, 0x04, 0x22, 0x46, 0x70, -0x82, 0x70, 0x09, 0xF0, 0x8B, 0xFD, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x0C, 0x46, -0x76, 0x20, 0x19, 0x46, 0x0C, 0x23, 0x09, 0xF0, 0x4F, 0xFD, 0x23, 0x78, 0x0C, 0x4A, 0x0D, 0x4C, 0x4F, 0xF4, 0x1E, 0x71, -0x01, 0xFB, 0x03, 0x23, 0x4F, 0xF4, 0xA4, 0x65, 0x93, 0xF8, 0x22, 0x20, 0xD3, 0xF8, 0x48, 0x11, 0x05, 0xFB, 0x02, 0x42, -0x49, 0x69, 0x92, 0xF8, 0x86, 0x20, 0x02, 0x72, 0x00, 0x24, 0xC0, 0xE9, 0x00, 0x14, 0x09, 0xF0, 0x67, 0xFD, 0x20, 0x46, -0x38, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xF0, 0xB5, 0x00, 0x22, 0x0D, 0x46, 0x85, 0xB0, -0x01, 0x23, 0x0C, 0x21, 0x53, 0x20, 0x09, 0xF0, 0x27, 0xFD, 0x01, 0x22, 0x02, 0x70, 0x04, 0x46, 0x28, 0x78, 0x04, 0x28, -0x28, 0xD8, 0x1D, 0x4B, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC0, 0x34, 0x03, 0xB3, 0xAB, 0x78, -0x23, 0xB3, 0x19, 0x4A, 0x19, 0x49, 0x16, 0x68, 0x09, 0x69, 0x17, 0x68, 0xB0, 0xF8, 0xD2, 0x20, 0xC9, 0x1B, 0x92, 0x02, -0xEF, 0x68, 0xB6, 0xFB, 0xF2, 0xF6, 0x06, 0xFB, 0x02, 0x22, 0x14, 0x4E, 0x39, 0x44, 0x6F, 0x68, 0xD6, 0xF8, 0x04, 0x62, -0x01, 0x97, 0x0A, 0x44, 0xA9, 0x68, 0x00, 0x91, 0x02, 0x92, 0xEA, 0x78, 0x00, 0x21, 0xB0, 0x47, 0xFF, 0x28, 0x01, 0xD0, -0x00, 0x23, 0x23, 0x70, 0x20, 0x46, 0x09, 0xF0, 0x25, 0xFD, 0x00, 0x20, 0x05, 0xB0, 0xF0, 0xBD, 0x08, 0x4B, 0x69, 0x78, -0xD3, 0xF8, 0x08, 0x32, 0x98, 0x47, 0x20, 0x70, 0x20, 0x46, 0x09, 0xF0, 0x19, 0xFD, 0x00, 0x20, 0x05, 0xB0, 0xF0, 0xBD, -0x18, 0x88, 0x17, 0x00, 0xA4, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x19, 0x46, -0x05, 0x20, 0x1C, 0x23, 0x09, 0xF0, 0xD8, 0xFC, 0x2C, 0x4D, 0x2D, 0x4B, 0x03, 0x60, 0x2A, 0x68, 0x2C, 0x4B, 0x42, 0x60, -0x1B, 0x68, 0x83, 0x60, 0x0A, 0x22, 0x04, 0x23, 0x83, 0x76, 0x02, 0x83, 0x04, 0x46, 0x00, 0xF1, 0x10, 0x01, 0x0C, 0x30, -0xE8, 0xF7, 0x9E, 0xF8, 0x26, 0x4B, 0x63, 0x61, 0x2B, 0x68, 0x98, 0x03, 0x24, 0xD4, 0x21, 0x4B, 0x1B, 0x68, 0x99, 0x03, -0x2C, 0xD4, 0x1F, 0x4B, 0x1B, 0x68, 0x9A, 0x04, 0x03, 0xD5, 0x63, 0x69, 0x43, 0xF4, 0x00, 0x23, 0x63, 0x61, 0xE8, 0xF7, -0x2F, 0xF9, 0x18, 0xB1, 0x63, 0x69, 0x43, 0xF4, 0x80, 0x33, 0x63, 0x61, 0x17, 0x4B, 0x1B, 0x68, 0x1B, 0x04, 0x22, 0xD4, -0xE8, 0xF7, 0x2E, 0xF9, 0x63, 0x69, 0x08, 0xB1, 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF0, 0x40, 0x53, 0x20, 0x46, 0x63, 0x61, -0x09, 0xF0, 0xCE, 0xFC, 0x00, 0x20, 0x38, 0xBD, 0xE8, 0xF7, 0x3E, 0xF9, 0x00, 0x28, 0xD6, 0xD0, 0x63, 0x69, 0x43, 0xF4, -0x00, 0x33, 0x63, 0x61, 0x0A, 0x4B, 0x1B, 0x68, 0x99, 0x03, 0xD2, 0xD5, 0xE8, 0xF7, 0x3A, 0xF9, 0x00, 0x28, 0xCE, 0xD0, -0x63, 0x69, 0x43, 0xF4, 0x00, 0x13, 0x63, 0x61, 0xC9, 0xE7, 0xE8, 0xF7, 0x03, 0xF9, 0x00, 0x28, 0xD8, 0xD0, 0x63, 0x69, -0x43, 0xF0, 0x80, 0x43, 0x63, 0x61, 0xD3, 0xE7, 0x04, 0x00, 0x32, 0x40, 0x01, 0x03, 0x04, 0x06, 0x08, 0x00, 0x32, 0x40, -0x5F, 0xFA, 0x10, 0x00, 0xF0, 0xB5, 0x23, 0x48, 0x4D, 0x79, 0x00, 0x68, 0x8C, 0x79, 0x50, 0xF8, 0x25, 0xC0, 0x21, 0x4F, -0x0E, 0x68, 0x4F, 0xF4, 0xA4, 0x70, 0x00, 0xFB, 0x04, 0x50, 0x02, 0x30, 0x83, 0xB0, 0x47, 0xF8, 0x20, 0x60, 0x19, 0x46, -0xBC, 0xF1, 0x00, 0x0F, 0x0A, 0xD0, 0xCC, 0xF3, 0x0B, 0x03, 0x1B, 0xBB, 0x2C, 0xF4, 0x7F, 0x6C, 0x2C, 0xF0, 0x0F, 0x0C, -0xC6, 0xF3, 0x0B, 0x06, 0x4C, 0xEA, 0x06, 0x06, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x74, 0x94, 0xF8, 0x64, 0x30, -0x73, 0xB1, 0x01, 0x2D, 0x1A, 0xD0, 0x02, 0x2D, 0x12, 0xD0, 0xA5, 0xB1, 0x0F, 0x4B, 0x1E, 0x60, 0x0F, 0x4B, 0xD3, 0xF8, -0xA0, 0x31, 0xCD, 0xE9, 0x00, 0x21, 0x98, 0x47, 0xDD, 0xE9, 0x00, 0x21, 0x1B, 0x20, 0x09, 0xF0, 0xA5, 0xFC, 0x00, 0x20, -0x03, 0xB0, 0xF0, 0xBD, 0x66, 0x46, 0xE1, 0xE7, 0x08, 0x4B, 0x1E, 0x60, 0xEC, 0xE7, 0x08, 0x4B, 0x1E, 0x60, 0xE9, 0xE7, -0x07, 0x4B, 0x1E, 0x60, 0xE6, 0xE7, 0x00, 0xBF, 0xAC, 0x35, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x0C, 0x02, 0x32, 0x40, -0x88, 0x1A, 0x17, 0x00, 0x08, 0x02, 0x32, 0x40, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x38, 0xB5, 0x07, 0x48, -0x8C, 0x78, 0x0D, 0x88, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x04, 0x04, 0x19, 0x46, 0x70, 0x20, 0xA4, 0xF8, 0xBE, 0x54, -0x09, 0xF0, 0x7A, 0xFC, 0x00, 0x20, 0x38, 0xBD, 0x18, 0x88, 0x17, 0x00, 0x10, 0xB5, 0x08, 0x4C, 0x08, 0x78, 0xD4, 0xF8, -0xC8, 0x41, 0x82, 0xB0, 0x01, 0x92, 0x00, 0x93, 0xA0, 0x47, 0xDD, 0xE9, 0x00, 0x12, 0x0D, 0x20, 0x09, 0xF0, 0x68, 0xFC, -0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x07, 0x4C, 0x08, 0x78, 0x64, 0x6D, -0x82, 0xB0, 0x01, 0x92, 0x00, 0x93, 0xA0, 0x47, 0xDD, 0xE9, 0x00, 0x12, 0x3A, 0x20, 0x09, 0xF0, 0x55, 0xFC, 0x00, 0x20, -0x02, 0xB0, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x0C, 0x78, 0x08, 0x46, 0x19, 0x46, 0x24, 0xB1, 0x25, 0x4B, -0x93, 0xF8, 0xA9, 0x30, 0x00, 0x2B, 0x36, 0xD1, 0x23, 0x4B, 0x24, 0x4E, 0x24, 0x4D, 0x00, 0x24, 0x1C, 0x70, 0x34, 0x68, -0x24, 0xF0, 0x00, 0x74, 0x34, 0x60, 0x6C, 0x6F, 0x24, 0xF0, 0x10, 0x04, 0x6C, 0x67, 0x1E, 0x4D, 0x2C, 0x68, 0x24, 0xF4, -0x00, 0x64, 0x2C, 0x60, 0xC4, 0x78, 0x9C, 0x70, 0x84, 0x78, 0x00, 0x25, 0x5D, 0x70, 0xC4, 0xB1, 0x1A, 0x4C, 0x23, 0x68, -0x43, 0xF0, 0x00, 0x43, 0x23, 0x60, 0x03, 0x79, 0x63, 0xB1, 0x18, 0x4C, 0x85, 0x68, 0x18, 0x4B, 0x25, 0x60, 0x1C, 0x68, -0xC4, 0xF3, 0x13, 0x04, 0x1C, 0x60, 0xC4, 0x68, 0x18, 0x68, 0x40, 0xEA, 0x04, 0x50, 0x18, 0x60, 0x66, 0x20, 0x09, 0xF0, -0x17, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x0E, 0x4C, 0x23, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x23, 0x60, 0xE5, 0xE7, 0x08, 0x4B, -0x08, 0x4E, 0x09, 0x4D, 0x01, 0x24, 0x1C, 0x70, 0x34, 0x68, 0x44, 0xF0, 0x00, 0x74, 0x34, 0x60, 0x6C, 0x6F, 0x44, 0xF0, -0x10, 0x04, 0x6C, 0x67, 0xC7, 0xE7, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0xE0, 0x50, 0x34, 0x40, -0x00, 0x00, 0x50, 0x40, 0x48, 0x30, 0x34, 0x40, 0xF4, 0x00, 0x60, 0x40, 0xF8, 0x00, 0x60, 0x40, 0x70, 0xB5, 0x08, 0x46, -0x07, 0x4C, 0x09, 0x68, 0x46, 0x68, 0x05, 0x89, 0xC4, 0xF8, 0xBD, 0x10, 0x78, 0x20, 0x19, 0x46, 0xC4, 0xF8, 0xC1, 0x60, -0xA4, 0xF8, 0xC5, 0x50, 0x09, 0xF0, 0xE2, 0xFB, 0x00, 0x20, 0x70, 0xBD, 0x2C, 0x19, 0x17, 0x00, 0x38, 0xB5, 0x08, 0x46, -0x0E, 0x49, 0x44, 0x78, 0x0C, 0x70, 0x84, 0x78, 0x4C, 0x70, 0xC4, 0x78, 0x8C, 0x70, 0x0C, 0x4C, 0x05, 0x79, 0x41, 0x79, -0x61, 0x70, 0x25, 0x70, 0xC1, 0x79, 0x85, 0x79, 0xA5, 0x70, 0xE1, 0x70, 0x08, 0x4C, 0x41, 0x68, 0x05, 0x68, 0xC4, 0xF8, -0xCB, 0x10, 0x7A, 0x20, 0x19, 0x46, 0xC4, 0xF8, 0xC7, 0x50, 0x09, 0xF0, 0xC1, 0xFB, 0x00, 0x20, 0x38, 0xBD, 0x00, 0xBF, -0x68, 0x25, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x48, 0x09, 0x68, 0x01, 0x60, -0x19, 0x46, 0x72, 0x20, 0x09, 0xF0, 0xB0, 0xFB, 0x00, 0x20, 0x08, 0xBD, 0x34, 0x00, 0x32, 0x40, 0x30, 0xB5, 0x19, 0x46, -0x83, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x16, 0x4B, 0x01, 0x20, 0x18, 0x60, 0x16, 0x4C, -0x16, 0x4D, 0x23, 0x68, 0x01, 0x33, 0xCD, 0xE9, 0x00, 0x21, 0x23, 0x60, 0x08, 0xF0, 0x12, 0xFA, 0xE7, 0xF7, 0x96, 0xFF, -0x09, 0xF0, 0x02, 0xFB, 0x0E, 0xF0, 0x22, 0xF8, 0xD5, 0xF8, 0x10, 0x34, 0x98, 0x47, 0xD5, 0xF8, 0xA8, 0x31, 0x98, 0x47, -0x23, 0x68, 0xDD, 0xE9, 0x00, 0x21, 0x33, 0xB1, 0x08, 0x48, 0x01, 0x3B, 0x00, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x00, 0xB1, -0x62, 0xB6, 0x01, 0x20, 0x09, 0xF0, 0x7E, 0xFB, 0x00, 0x21, 0x08, 0x46, 0x09, 0xF0, 0x0C, 0xFD, 0x00, 0x20, 0x03, 0xB0, -0x30, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x18, 0x46, -0x21, 0x4E, 0x02, 0x23, 0x0D, 0x46, 0x01, 0x46, 0x25, 0x20, 0x09, 0xF0, 0xFF, 0xFA, 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x04, 0x46, 0x0C, 0xDB, 0x1C, 0x4B, 0x28, 0x46, 0xD3, 0xF8, 0xB8, 0x31, 0x98, 0x47, 0x00, 0x25, 0x60, 0x70, -0x25, 0x70, 0x20, 0x46, 0x09, 0xF0, 0x1E, 0xFB, 0x28, 0x46, 0x70, 0xBD, 0x2B, 0x78, 0x05, 0x2B, 0x19, 0xD8, 0x2B, 0x79, -0x20, 0x2B, 0x0A, 0xD8, 0x95, 0xF8, 0x28, 0x30, 0x05, 0x2B, 0xE8, 0xD9, 0x11, 0x49, 0x12, 0x48, 0x40, 0xF2, 0xFB, 0x62, -0x0B, 0xF0, 0xBE, 0xFB, 0xE1, 0xE7, 0x0E, 0x49, 0x0F, 0x48, 0x4F, 0xF4, 0xDF, 0x62, 0x0B, 0xF0, 0xB7, 0xFB, 0x33, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE9, 0xDB, 0xD5, 0xE7, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF2, 0xF2, 0x62, 0x0B, 0xF0, -0xAB, 0xFB, 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDA, 0xDB, 0xC9, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xE4, 0x9B, 0x15, 0x00, 0xBC, 0x9B, 0x15, 0x00, 0x90, 0x9B, 0x15, 0x00, -0x11, 0x48, 0x00, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x00, 0x28, 0x70, 0xB5, 0x0C, 0x46, 0x16, 0x46, 0x1D, 0x46, 0x0B, 0xDB, -0x20, 0x78, 0x0D, 0x4B, 0xD3, 0xF8, 0xB4, 0x31, 0x98, 0x47, 0x32, 0x46, 0x29, 0x46, 0x27, 0x20, 0x09, 0xF0, 0x0A, 0xFB, -0x00, 0x20, 0x70, 0xBD, 0x08, 0x4B, 0x08, 0x78, 0x1B, 0x68, 0x1B, 0x0E, 0x09, 0x33, 0x98, 0x42, 0xED, 0xDD, 0x06, 0x49, -0x06, 0x48, 0x40, 0xF2, 0x22, 0x72, 0x0B, 0xF0, 0x75, 0xFB, 0xE5, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xD8, 0x00, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0x14, 0x9C, 0x15, 0x00, 0x16, 0x48, 0x2D, 0xE9, 0xF0, 0x41, 0x00, 0x68, -0x15, 0x4F, 0x0C, 0x46, 0xB0, 0xF9, 0x00, 0x10, 0x25, 0x78, 0x00, 0x29, 0x16, 0x46, 0x98, 0x46, 0x11, 0xDB, 0x4F, 0xF4, -0xA4, 0x60, 0x00, 0xFB, 0x05, 0x70, 0x62, 0x88, 0xA0, 0xF8, 0x68, 0x20, 0x23, 0x79, 0x80, 0xF8, 0x6A, 0x30, 0x32, 0x46, -0x41, 0x46, 0x4C, 0x20, 0x09, 0xF0, 0xD4, 0xFA, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, -0x05, 0x72, 0x92, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0xE5, 0xD0, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF6, 0x5B, 0x22, 0x0B, 0xF0, -0x3D, 0xFB, 0xDE, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, -0x13, 0x4B, 0x70, 0xB5, 0x1B, 0x68, 0x0C, 0x78, 0xB3, 0xF9, 0x00, 0x30, 0x11, 0x4E, 0x00, 0x2B, 0x0D, 0x46, 0x0D, 0xDB, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x63, 0x6A, 0x78, 0x83, 0xF8, 0x87, 0x20, 0xAA, 0x78, 0x83, 0xF8, 0x88, 0x20, -0x00, 0x20, 0x83, 0xF8, 0x89, 0x00, 0x70, 0xBD, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x63, 0x93, 0xF8, 0x62, 0x30, -0x00, 0x2B, 0xE9, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF6, 0x78, 0x52, 0x0B, 0xF0, 0x0E, 0xFB, 0xE2, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, 0x20, 0x48, 0x2D, 0xE9, -0xF0, 0x41, 0x00, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x00, 0x28, 0x84, 0xB0, 0x0E, 0x46, 0x15, 0x46, 0x98, 0x46, 0x29, 0xDB, -0x30, 0x46, 0xE7, 0xF7, 0xAB, 0xFD, 0x00, 0x24, 0x19, 0x4F, 0x00, 0x94, 0x40, 0xF6, 0xB4, 0x13, 0x21, 0x46, 0x1A, 0x46, -0x20, 0x46, 0xCD, 0xE9, 0x01, 0x44, 0xE7, 0xF7, 0xEB, 0xFD, 0xD7, 0xF8, 0x3C, 0x33, 0x0F, 0x20, 0x98, 0x47, 0x13, 0x4B, -0xB6, 0xF8, 0x44, 0x20, 0x9A, 0x83, 0x41, 0x46, 0x2A, 0x46, 0x03, 0x20, 0x09, 0xF0, 0x62, 0xFA, 0xD7, 0xF8, 0x60, 0x31, -0x98, 0x47, 0xD7, 0xF8, 0xE0, 0x30, 0x98, 0x47, 0x28, 0x46, 0x02, 0x21, 0x09, 0xF0, 0xEA, 0xFB, 0x20, 0x46, 0x04, 0xB0, -0xBD, 0xE8, 0xF0, 0x81, 0x10, 0x46, 0x09, 0xF0, 0x8B, 0xFC, 0x00, 0x28, 0xD0, 0xD0, 0x06, 0x49, 0x06, 0x48, 0x4F, 0xF4, -0xA7, 0x72, 0x0B, 0xF0, 0xC3, 0xFA, 0xC9, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x58, 0x9C, 0x15, 0x00, 0x70, 0xB5, 0x0C, 0x46, 0x49, 0x78, 0x16, 0x46, 0x1D, 0x46, 0xE1, 0xB1, -0x01, 0x29, 0x63, 0x88, 0x3C, 0xD0, 0x02, 0x29, 0x32, 0xD0, 0x03, 0x29, 0x0C, 0xBF, 0x20, 0x48, 0x20, 0x48, 0xA2, 0x88, -0x18, 0x44, 0x04, 0xF1, 0x08, 0x01, 0x1D, 0xF0, 0x49, 0xFD, 0xE3, 0x88, 0x23, 0xB1, 0x1D, 0x4B, 0x20, 0x78, 0xD3, 0xF8, -0x80, 0x34, 0x98, 0x47, 0x32, 0x46, 0x29, 0x46, 0x68, 0x20, 0x09, 0xF0, 0x1D, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x04, 0xF1, -0x08, 0x01, 0x4F, 0xF4, 0x40, 0x72, 0x16, 0x48, 0x1D, 0xF0, 0x34, 0xFD, 0x04, 0xF5, 0x42, 0x71, 0x4F, 0xF4, 0x00, 0x72, -0x13, 0x48, 0x1D, 0xF0, 0x2D, 0xFD, 0x04, 0xF5, 0xA1, 0x61, 0x80, 0x22, 0x0C, 0x48, 0x1D, 0xF0, 0x27, 0xFD, 0x40, 0x22, -0x04, 0xF5, 0xB1, 0x61, 0x0A, 0x48, 0x1D, 0xF0, 0x21, 0xFD, 0xD6, 0xE7, 0x0B, 0x48, 0xA2, 0x88, 0x18, 0x44, 0x04, 0xF1, -0x08, 0x01, 0x1D, 0xF0, 0x19, 0xFD, 0xCE, 0xE7, 0x06, 0x48, 0xA2, 0x88, 0x18, 0x44, 0x04, 0xF1, 0x08, 0x01, 0x1D, 0xF0, -0x11, 0xFD, 0xC6, 0xE7, 0x1C, 0x18, 0x17, 0x00, 0x9C, 0x18, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x13, 0x17, 0x00, -0x1C, 0x16, 0x17, 0x00, 0x38, 0xB5, 0x19, 0x46, 0x81, 0x20, 0x40, 0x23, 0x09, 0xF0, 0x78, 0xF9, 0x00, 0x25, 0x04, 0x46, -0x08, 0x49, 0x00, 0xF8, 0x01, 0x5B, 0x24, 0x22, 0x1D, 0xF0, 0xF8, 0xFC, 0x23, 0x78, 0x24, 0x33, 0xDB, 0xB2, 0xE2, 0x18, -0x23, 0x70, 0x20, 0x46, 0x55, 0x70, 0x09, 0xF0, 0x97, 0xF9, 0x28, 0x46, 0x38, 0xBD, 0x00, 0xBF, 0xDC, 0xD1, 0x15, 0x00, -0x10, 0xB5, 0x82, 0xB0, 0x08, 0x46, 0x1C, 0x46, 0x01, 0x92, 0xFA, 0xF7, 0x83, 0xFA, 0x06, 0x49, 0x4F, 0xF4, 0x80, 0x70, -0x0B, 0xF0, 0x0E, 0xF8, 0x01, 0x9A, 0x21, 0x46, 0x6C, 0x20, 0x09, 0xF0, 0xB9, 0xF9, 0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, -0x7C, 0x9C, 0x15, 0x00, 0x25, 0x48, 0x2D, 0xE9, 0xF8, 0x43, 0x00, 0x68, 0xDF, 0xF8, 0xA0, 0x90, 0x0C, 0x46, 0xB0, 0xF9, -0x00, 0x10, 0x65, 0x79, 0x00, 0x29, 0x17, 0x46, 0x1E, 0x46, 0x2D, 0xDB, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x05, 0xF0, -0x09, 0xEB, 0x00, 0x08, 0x21, 0x79, 0x98, 0xF8, 0xAC, 0x20, 0x23, 0x68, 0xC8, 0xF8, 0xC4, 0x34, 0x01, 0x2A, 0x88, 0xF8, -0xC3, 0x14, 0x0A, 0xD1, 0x17, 0x4B, 0xB0, 0x30, 0xD3, 0xF8, 0xD8, 0x31, 0x48, 0x44, 0x98, 0x47, 0x00, 0x22, 0xD8, 0xF8, -0xC4, 0x34, 0x88, 0xF8, 0xAC, 0x20, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x05, 0x95, 0x11, 0x49, 0x95, 0xF8, 0xC3, 0x24, -0x4F, 0xF4, 0x80, 0x70, 0x0A, 0xF0, 0xD0, 0xFF, 0x3A, 0x46, 0x31, 0x46, 0x62, 0x20, 0x09, 0xF0, 0x7B, 0xF9, 0x00, 0x20, -0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x05, 0x93, 0x93, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xC9, 0xD0, -0x06, 0x49, 0x07, 0x48, 0x4F, 0xF4, 0x27, 0x62, 0x0B, 0xF0, 0xE4, 0xF9, 0xC2, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x8C, 0x9C, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, -0x00, 0xB5, 0x83, 0xB0, 0x08, 0x46, 0x01, 0x92, 0x00, 0x93, 0xFA, 0xF7, 0x45, 0xFA, 0xDD, 0xE9, 0x00, 0x12, 0x6E, 0x20, -0x09, 0xF0, 0x50, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0xF0, 0xB5, 0x0C, 0x46, 0x0E, 0x78, 0x60, 0x78, -0x89, 0x78, 0x83, 0xB0, 0x1D, 0x46, 0x01, 0x92, 0x9E, 0xB9, 0xFE, 0xF7, 0xD5, 0xFE, 0x01, 0x9A, 0x00, 0xBB, 0x03, 0x26, -0x29, 0x46, 0x03, 0x23, 0x2B, 0x20, 0x09, 0xF0, 0xD1, 0xF8, 0x62, 0x78, 0x02, 0x70, 0xA2, 0x78, 0x42, 0x70, 0x86, 0x70, -0x09, 0xF0, 0xFA, 0xF8, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0xFE, 0xF7, 0xD1, 0xFE, 0x01, 0x9A, 0x00, 0x28, 0xEA, 0xD0, -0x60, 0x78, 0x14, 0x4B, 0xA1, 0x78, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x00, 0x30, 0x15, 0xF0, 0x9D, 0xFC, 0x02, 0x26, -0x01, 0x9A, 0xDF, 0xE7, 0x61, 0x78, 0x94, 0xF8, 0x02, 0xC0, 0x0D, 0x48, 0x0D, 0x4F, 0x01, 0xEB, 0x81, 0x03, 0xC1, 0xEB, -0x03, 0x13, 0x63, 0x44, 0x00, 0xEB, 0xC3, 0x03, 0x4F, 0xF0, 0x9E, 0x0E, 0x93, 0xF8, 0xA5, 0x31, 0x0E, 0xFB, 0x01, 0xC1, -0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x81, 0x01, 0x07, 0xEB, 0xC3, 0x03, 0x81, 0xF8, 0x5A, 0x61, 0x1E, 0x81, 0x02, 0x26, -0xC2, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x08, 0xB5, 0x08, 0x46, 0x02, 0xF0, 0x0C, 0xFA, -0x01, 0x20, 0x08, 0xBD, 0x70, 0xB5, 0x48, 0x78, 0xFF, 0x28, 0x0C, 0x46, 0x16, 0x46, 0x1D, 0x46, 0x01, 0xD0, 0x17, 0xF0, -0xB3, 0xF9, 0x21, 0x78, 0xA0, 0x78, 0x0A, 0x4B, 0x0A, 0x4A, 0x00, 0x39, 0x18, 0xBF, 0x01, 0x21, 0x00, 0x38, 0x18, 0xBF, -0x01, 0x20, 0x18, 0x70, 0x11, 0x70, 0x02, 0x46, 0x06, 0x48, 0x0A, 0xF0, 0xDD, 0xFE, 0x32, 0x46, 0x29, 0x46, 0x64, 0x20, -0x09, 0xF0, 0xD8, 0xF8, 0x00, 0x20, 0x70, 0xBD, 0xB9, 0x34, 0x17, 0x00, 0xB8, 0x34, 0x17, 0x00, 0x9C, 0x9C, 0x15, 0x00, -0xF8, 0xB5, 0x19, 0x46, 0x74, 0x20, 0x06, 0x23, 0x09, 0xF0, 0x62, 0xF8, 0x4F, 0xF4, 0xD2, 0x77, 0x04, 0x46, 0x3B, 0x68, -0x08, 0x20, 0x98, 0x47, 0x3B, 0x68, 0x06, 0x46, 0x09, 0x20, 0x98, 0x47, 0x36, 0x0C, 0x36, 0x04, 0x56, 0xEA, 0x00, 0x03, -0x1A, 0xD1, 0x3B, 0x68, 0x07, 0x20, 0x98, 0x47, 0x3B, 0x68, 0x05, 0x46, 0x08, 0x20, 0x98, 0x47, 0x83, 0xB2, 0x19, 0x0A, -0x28, 0x0A, 0x2A, 0x0C, 0x63, 0x70, 0x2B, 0x0E, 0x21, 0x70, 0x20, 0x71, 0xE2, 0x70, 0xA3, 0x70, 0xEA, 0xB2, 0x07, 0x48, -0x65, 0x71, 0x0A, 0xF0, 0xA5, 0xFE, 0x20, 0x46, 0x09, 0xF0, 0x6A, 0xF8, 0x00, 0x20, 0xF8, 0xBD, 0x05, 0x04, 0x45, 0xEA, -0x16, 0x45, 0x03, 0x0C, 0xE7, 0xE7, 0x00, 0xBF, 0xC0, 0x9C, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x0C, 0x46, 0x48, 0x7A, -0x09, 0x7A, 0x16, 0x46, 0xE2, 0x88, 0x84, 0xB0, 0xCD, 0xE9, 0x00, 0x21, 0x02, 0x90, 0x62, 0x88, 0x5E, 0x48, 0x21, 0x88, -0x1D, 0x46, 0xA3, 0x88, 0x0A, 0xF0, 0x86, 0xFE, 0xB4, 0xF8, 0x00, 0xC0, 0x67, 0x88, 0xA0, 0x88, 0xE2, 0x88, 0x5A, 0x4B, -0xBC, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x9E, 0x80, 0x19, 0x68, 0xDF, 0xF8, 0x70, 0x81, 0x0B, 0x68, 0xDF, 0xF8, 0x6C, 0xE1, -0x03, 0xEA, 0x08, 0x03, 0x43, 0xEA, 0x0C, 0x33, 0x0B, 0x60, 0xDE, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x08, 0x03, 0x43, 0xEA, -0x0C, 0x33, 0xCE, 0xF8, 0x00, 0x30, 0x00, 0x2F, 0x79, 0xD0, 0x4B, 0x68, 0xDF, 0xF8, 0x44, 0xE1, 0xDF, 0xF8, 0x48, 0xC1, -0x03, 0xEA, 0x0E, 0x03, 0x43, 0xEA, 0x07, 0x33, 0x4B, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x0E, 0x03, 0x43, 0xEA, -0x07, 0x33, 0xCC, 0xF8, 0x00, 0x30, 0x00, 0x28, 0x3F, 0xD0, 0x8F, 0x68, 0xDF, 0xF8, 0x1C, 0xE1, 0xDF, 0xF8, 0x14, 0xC1, -0x07, 0xEA, 0x0E, 0x07, 0x47, 0xEA, 0x00, 0x37, 0x8F, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x0E, 0x03, 0x43, 0xEA, -0x00, 0x33, 0xCC, 0xF8, 0x00, 0x30, 0x00, 0x2A, 0x38, 0xD0, 0xC8, 0x68, 0xDF, 0xF8, 0xF4, 0xC0, 0x38, 0x4F, 0x00, 0xEA, -0x0C, 0x00, 0x40, 0xEA, 0x02, 0x30, 0xC8, 0x60, 0x3B, 0x68, 0x03, 0xEA, 0x0C, 0x03, 0x43, 0xEA, 0x02, 0x33, 0x3B, 0x60, -0x23, 0x7A, 0x33, 0x4A, 0x00, 0x2B, 0x31, 0xD0, 0x13, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x63, 0x7A, 0x2F, 0x4A, -0x00, 0x2B, 0x31, 0xD0, 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x2C, 0x4B, 0xD3, 0xF8, 0xA0, 0x31, 0x98, 0x47, -0x32, 0x46, 0x29, 0x46, 0x7F, 0x20, 0x09, 0xF0, 0x17, 0xF8, 0x00, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x88, 0x68, -0xDF, 0xF8, 0x9C, 0xC0, 0x25, 0x4F, 0x00, 0xEA, 0x0C, 0x00, 0x88, 0x60, 0x3B, 0x68, 0x03, 0xEA, 0x0C, 0x03, 0x3B, 0x60, -0x00, 0x2A, 0xC6, 0xD1, 0xCA, 0x68, 0x21, 0x4F, 0x1C, 0x48, 0x3A, 0x40, 0xCA, 0x60, 0x03, 0x68, 0x1B, 0x4A, 0x3B, 0x40, -0x03, 0x60, 0x23, 0x7A, 0x00, 0x2B, 0xCD, 0xD1, 0x13, 0x68, 0x23, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x63, 0x7A, 0x16, 0x4A, -0x00, 0x2B, 0xCD, 0xD1, 0x13, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x13, 0x60, 0xCC, 0xE7, 0x4F, 0x68, 0xDF, 0xF8, 0x50, 0xE0, -0xDF, 0xF8, 0x54, 0xC0, 0x07, 0xEA, 0x0E, 0x07, 0x4F, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x0E, 0x03, 0xCC, 0xF8, -0x00, 0x30, 0x88, 0xE7, 0x19, 0x68, 0xDF, 0xF8, 0x34, 0xE0, 0x0B, 0x68, 0xDF, 0xF8, 0x30, 0xC0, 0x03, 0xEA, 0x0E, 0x03, -0x0B, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x0E, 0x03, 0xCC, 0xF8, 0x00, 0x30, 0x64, 0xE7, 0xD8, 0x9C, 0x15, 0x00, -0xAC, 0x35, 0x17, 0x00, 0x0C, 0x02, 0x32, 0x40, 0x24, 0x02, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x08, 0x02, 0x32, 0x40, -0xFF, 0x0F, 0x00, 0xF0, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x8A, 0x46, 0x83, 0xB0, -0x49, 0x7C, 0x28, 0x48, 0xDF, 0xF8, 0xBC, 0x90, 0x27, 0x4F, 0x16, 0x46, 0xDA, 0xF8, 0x0C, 0x20, 0x00, 0x92, 0x01, 0x91, -0x9A, 0xF8, 0x10, 0xB0, 0xDA, 0xF8, 0x00, 0x10, 0x1D, 0x46, 0xDA, 0xE9, 0x01, 0x23, 0x0A, 0xF0, 0xA5, 0xFD, 0x21, 0x4A, -0x21, 0x49, 0x9A, 0xF8, 0x11, 0x00, 0x82, 0xF8, 0x05, 0x01, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0xF3, 0x03, 0xF1, -0x08, 0x02, 0x01, 0xEB, 0x02, 0x08, 0x01, 0xEB, 0x03, 0x0B, 0xAA, 0xF1, 0x04, 0x0A, 0x00, 0x24, 0x5A, 0xF8, 0x04, 0x0F, -0xE3, 0xB2, 0x90, 0xB1, 0x48, 0xF8, 0x24, 0x00, 0x16, 0x4A, 0x9B, 0xF8, 0x64, 0x10, 0x12, 0x68, 0x42, 0xF8, 0x24, 0x00, -0x49, 0xB1, 0x01, 0x2C, 0x13, 0xD0, 0x02, 0x2B, 0x17, 0xD0, 0x9B, 0xB1, 0x38, 0x60, 0x11, 0x4B, 0xD3, 0xF8, 0xA0, 0x31, -0x98, 0x47, 0x01, 0x34, 0x04, 0x2C, 0xE5, 0xD1, 0x32, 0x46, 0x29, 0x46, 0x83, 0x20, 0x08, 0xF0, 0x73, 0xFF, 0x00, 0x20, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xC9, 0xF8, 0x00, 0x00, 0xEC, 0xE7, 0x08, 0x4B, 0x18, 0x60, 0xE9, 0xE7, 0x08, 0x4B, -0x18, 0x60, 0xE6, 0xE7, 0x18, 0x9D, 0x15, 0x00, 0x0C, 0x02, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0xAC, 0x35, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0x08, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, -0xF8, 0xB5, 0x7C, 0x20, 0x0C, 0x46, 0x19, 0x46, 0x02, 0x23, 0x08, 0xF0, 0xE5, 0xFE, 0x23, 0x78, 0x05, 0x46, 0x00, 0x2B, -0x5F, 0xD0, 0x35, 0x48, 0x0A, 0xF0, 0x46, 0xFD, 0x34, 0x4B, 0x1B, 0x68, 0x00, 0x22, 0x1A, 0x70, 0x4F, 0xF4, 0xD2, 0x73, -0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, 0x68, 0x70, 0x62, 0x78, 0x06, 0x46, 0x00, 0x2A, 0x45, 0xD0, 0x2E, 0x4F, 0xC0, 0xF3, -0x40, 0x11, 0x42, 0x06, 0x87, 0xF8, 0xB4, 0x10, 0x4F, 0xD4, 0x2C, 0x48, 0x0F, 0x22, 0x01, 0x21, 0xE8, 0xF7, 0x1C, 0xFC, -0x02, 0x22, 0x11, 0x46, 0x29, 0x48, 0xE8, 0xF7, 0x17, 0xFC, 0x02, 0x22, 0x11, 0x46, 0x28, 0x48, 0xE8, 0xF7, 0x12, 0xFC, -0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, 0x24, 0x48, 0xE8, 0xF7, 0x0C, 0xFC, 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, 0x22, 0x48, -0xE8, 0xF7, 0x06, 0xFC, 0x02, 0x22, 0x11, 0x46, 0x20, 0x48, 0xE8, 0xF7, 0x01, 0xFC, 0x4F, 0xF4, 0x00, 0x52, 0x00, 0x21, -0x1D, 0x48, 0xE8, 0xF7, 0xFB, 0xFB, 0x97, 0xF8, 0xB4, 0x10, 0x01, 0x22, 0x23, 0x78, 0x6B, 0xB1, 0xE3, 0x78, 0x2B, 0xB1, -0xB7, 0xF8, 0xAA, 0x30, 0x43, 0xF4, 0x80, 0x43, 0xA7, 0xF8, 0xAA, 0x30, 0x16, 0x48, 0xF3, 0xB2, 0x0A, 0xF0, 0xFA, 0xFC, -0x97, 0xF8, 0xB4, 0x10, 0x29, 0x70, 0x28, 0x46, 0x08, 0xF0, 0xBC, 0xFE, 0x00, 0x20, 0xF8, 0xBD, 0xA3, 0x78, 0x0B, 0x4F, -0xC3, 0xF3, 0x40, 0x11, 0x5B, 0x06, 0x87, 0xF8, 0xB4, 0x10, 0xB8, 0xD5, 0xE0, 0xE7, 0x0D, 0x48, 0x0A, 0xF0, 0xE6, 0xFC, -0x04, 0x4B, 0x1B, 0x68, 0x03, 0x22, 0x1A, 0x70, 0x9E, 0xE7, 0x00, 0x22, 0xD6, 0xE7, 0x00, 0xBF, 0x48, 0x9D, 0x15, 0x00, -0x74, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x04, 0x20, 0x01, 0x50, 0x04, 0x10, 0x01, 0x50, 0x08, 0x10, 0x01, 0x50, -0x00, 0x10, 0x01, 0x50, 0x68, 0x9D, 0x15, 0x00, 0x58, 0x9D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x18, 0x46, 0xB1, 0xB0, -0x0C, 0x46, 0x10, 0x23, 0x01, 0x46, 0x6A, 0x20, 0x04, 0x94, 0x08, 0xF0, 0x59, 0xFE, 0x4F, 0xF4, 0xD2, 0x73, 0x02, 0x46, -0x1B, 0x68, 0x05, 0x92, 0x06, 0x20, 0x98, 0x47, 0x04, 0x46, 0x01, 0x46, 0x91, 0x48, 0x0A, 0xF0, 0xB5, 0xFC, 0x14, 0xF4, -0x7F, 0x4F, 0xC4, 0xF3, 0x07, 0x25, 0x6F, 0xD1, 0x26, 0x0E, 0xE5, 0xB2, 0x6E, 0xD0, 0xF4, 0xB2, 0x00, 0x2D, 0x6F, 0xD1, -0x04, 0x9B, 0x19, 0x7D, 0x00, 0x29, 0x40, 0xF0, 0x83, 0x80, 0x00, 0x2E, 0x40, 0xF0, 0x89, 0x80, 0x59, 0x7D, 0x31, 0xB1, -0x86, 0x48, 0x0A, 0xF0, 0x9D, 0xFC, 0x04, 0x9B, 0x5C, 0x7D, 0x00, 0x2C, 0x7F, 0xD1, 0x04, 0x9B, 0xDB, 0x68, 0x00, 0x2B, -0x40, 0xF0, 0x8D, 0x80, 0x04, 0x9B, 0xDF, 0xF8, 0x40, 0xB2, 0x99, 0x68, 0x1A, 0x68, 0x7F, 0x4B, 0xDF, 0xF8, 0x38, 0xA2, -0xD3, 0xF8, 0x70, 0x32, 0x7D, 0x4C, 0xCD, 0xE9, 0x08, 0x21, 0x08, 0xA8, 0x0A, 0xA9, 0x98, 0x47, 0x1A, 0xAE, 0x6F, 0xF0, -0x3F, 0x08, 0x09, 0xAF, 0x0A, 0xAB, 0x07, 0x97, 0xA8, 0xEB, 0x03, 0x08, 0x35, 0x46, 0x0D, 0xF1, 0x78, 0x09, 0x06, 0x96, -0xE3, 0x79, 0x00, 0x93, 0x08, 0xEB, 0x05, 0x02, 0x23, 0x68, 0x03, 0x92, 0x59, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x0A, 0xF0, -0xBD, 0xFC, 0x15, 0xF8, 0x01, 0x6B, 0x57, 0xF8, 0x04, 0x3F, 0x03, 0x9A, 0x00, 0x96, 0x51, 0x46, 0x23, 0x60, 0xE6, 0x71, -0x4F, 0xF4, 0x00, 0x50, 0x0A, 0xF0, 0xB0, 0xFC, 0x4D, 0x45, 0x04, 0xF1, 0x10, 0x04, 0xE3, 0xD1, 0xDF, 0xF8, 0xD8, 0xB1, -0x06, 0x9E, 0x9B, 0xF8, 0xB4, 0x30, 0x00, 0x2B, 0x52, 0xD1, 0xDF, 0xF8, 0xD0, 0xA1, 0x61, 0x4B, 0x00, 0x20, 0xD3, 0xF8, -0xB0, 0x34, 0x98, 0x47, 0x05, 0x98, 0x5F, 0x4C, 0x5F, 0x4A, 0x60, 0x4B, 0x82, 0x60, 0xC0, 0xE9, 0x00, 0x4A, 0xC3, 0x60, -0x08, 0xF0, 0x0C, 0xFE, 0x00, 0x20, 0x31, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x23, 0x0E, 0x0B, 0xD1, 0x26, 0x0C, 0xF4, 0xB2, -0x00, 0x2D, 0x8F, 0xD0, 0x3C, 0xB9, 0x04, 0x9B, 0x59, 0x7D, 0x00, 0x29, 0x40, 0xF0, 0x99, 0x80, 0x00, 0x24, 0x00, 0xE0, -0xDC, 0xB2, 0x1F, 0x2D, 0x28, 0xBF, 0x1F, 0x25, 0xE9, 0x06, 0x41, 0xEA, 0x85, 0x51, 0x51, 0x4A, 0x51, 0x48, 0xE8, 0xF7, -0x17, 0xFB, 0x51, 0x48, 0x29, 0x46, 0x0A, 0xF0, 0x23, 0xFC, 0x86, 0xE7, 0x4F, 0x48, 0x0A, 0xF0, 0x1F, 0xFC, 0x04, 0x9B, -0x1D, 0x7D, 0x00, 0x2E, 0x70, 0xD0, 0x00, 0x2D, 0xE7, 0xD1, 0x3F, 0x2C, 0x21, 0x46, 0x4B, 0x48, 0x28, 0xBF, 0x3F, 0x21, -0x3F, 0x22, 0x03, 0x91, 0xE8, 0xF7, 0x00, 0xFB, 0x03, 0x99, 0x48, 0x48, 0x0A, 0xF0, 0x0C, 0xFC, 0x04, 0x9B, 0xDB, 0x68, -0x00, 0x2B, 0x3F, 0xF4, 0x73, 0xAF, 0x04, 0x9B, 0x18, 0x69, 0xEB, 0xF7, 0x6F, 0xF8, 0x6D, 0xE7, 0x42, 0x4A, 0x38, 0x4D, -0x93, 0x69, 0xD5, 0xF8, 0x28, 0x42, 0xDF, 0xF8, 0x20, 0xA1, 0x40, 0x4F, 0x43, 0xF0, 0x01, 0x03, 0x93, 0x61, 0x04, 0x9B, -0x5B, 0x68, 0x08, 0x93, 0x41, 0xF2, 0x7C, 0x52, 0x00, 0x23, 0x11, 0x46, 0xCD, 0xE9, 0x00, 0x33, 0x01, 0x20, 0xA0, 0x47, -0x39, 0x4A, 0x01, 0x23, 0x82, 0xF8, 0x2A, 0x30, 0x0A, 0xA9, 0xD5, 0xF8, 0x70, 0x32, 0x37, 0x4D, 0x08, 0xA8, 0x98, 0x47, -0x54, 0x46, 0xCD, 0xF8, 0x10, 0xA0, 0xDD, 0xF8, 0x1C, 0xA0, 0xE3, 0x79, 0x00, 0x93, 0x06, 0xEB, 0x08, 0x02, 0x23, 0x68, -0x03, 0x92, 0x39, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x0A, 0xF0, 0x22, 0xFC, 0x16, 0xF8, 0x01, 0xCB, 0x5A, 0xF8, 0x04, 0x3F, -0x03, 0x9A, 0xCD, 0xF8, 0x00, 0xC0, 0x29, 0x46, 0x23, 0x60, 0x84, 0xF8, 0x07, 0xC0, 0x4F, 0xF4, 0x00, 0x50, 0x0A, 0xF0, -0x13, 0xFC, 0x4E, 0x45, 0x04, 0xF1, 0x10, 0x04, 0xE1, 0xD1, 0x9B, 0xF8, 0xB4, 0x30, 0xDD, 0xF8, 0x10, 0xA0, 0x00, 0x2B, -0x3F, 0xF4, 0x65, 0xAF, 0x13, 0x4B, 0x00, 0x20, 0xD3, 0xF8, 0x80, 0x34, 0x98, 0x47, 0x1D, 0x4B, 0x1E, 0x49, 0x93, 0xF8, -0x2A, 0x20, 0x08, 0x20, 0x00, 0x23, 0x0A, 0xF0, 0xFB, 0xFB, 0x5B, 0xE7, 0x59, 0x7D, 0x1C, 0x46, 0x39, 0xB1, 0x0A, 0x48, -0x0A, 0xF0, 0xA4, 0xFB, 0x64, 0x7D, 0x00, 0x2D, 0x3F, 0xF4, 0x05, 0xAF, 0x6D, 0xE7, 0x00, 0x2D, 0x3F, 0xF4, 0x03, 0xAF, -0x66, 0xE7, 0x04, 0x48, 0x0A, 0xF0, 0x98, 0xFB, 0x04, 0x9B, 0x5C, 0x7D, 0x63, 0xE7, 0x00, 0xBF, 0x90, 0x9D, 0x15, 0x00, -0xBC, 0x9D, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x13, 0x17, 0x00, 0x1C, 0x18, 0x17, 0x00, 0x9C, 0x18, 0x17, 0x00, -0x00, 0x00, 0xC0, 0xFF, 0x04, 0x88, 0x01, 0x50, 0xD0, 0x9D, 0x15, 0x00, 0xAC, 0x9D, 0x15, 0x00, 0x28, 0x91, 0x01, 0x50, -0xE4, 0x9D, 0x15, 0x00, 0x00, 0x80, 0x50, 0x40, 0x44, 0x9E, 0x15, 0x00, 0xBC, 0x34, 0x17, 0x00, 0x64, 0x9E, 0x15, 0x00, -0x9C, 0x77, 0x15, 0x00, 0xFC, 0x9D, 0x15, 0x00, 0x20, 0x9E, 0x15, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x1C, 0x16, 0x17, 0x00, -0x38, 0xB5, 0x00, 0x22, 0x0D, 0x46, 0x01, 0x23, 0x0C, 0x21, 0x54, 0x20, 0x08, 0xF0, 0xFA, 0xFC, 0x01, 0x23, 0x03, 0x70, -0x04, 0x46, 0x28, 0x78, 0x04, 0x28, 0x0D, 0xD8, 0x0C, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, -0xC0, 0x34, 0x2B, 0xB1, 0x00, 0x23, 0x23, 0x70, 0x69, 0x78, 0x31, 0xB1, 0x06, 0xF0, 0xA2, 0xFB, 0x20, 0x46, 0x08, 0xF0, -0x13, 0xFD, 0x00, 0x20, 0x38, 0xBD, 0x06, 0xF0, 0xBD, 0xFB, 0x20, 0x46, 0x08, 0xF0, 0x0C, 0xFD, 0x00, 0x20, 0x38, 0xBD, -0x18, 0x88, 0x17, 0x00, 0x70, 0xB5, 0x10, 0x46, 0x14, 0x46, 0x0D, 0x46, 0x1E, 0x46, 0x08, 0xF0, 0x73, 0xFF, 0x03, 0x28, -0x25, 0xD0, 0x20, 0x46, 0x08, 0xF0, 0x6E, 0xFF, 0x04, 0x28, 0x20, 0xD0, 0x2A, 0x78, 0x1B, 0x4D, 0x20, 0x46, 0xEA, 0x77, -0x72, 0xB9, 0x08, 0xF0, 0x65, 0xFF, 0x02, 0x28, 0x17, 0xD0, 0x18, 0x4B, 0xD3, 0xF8, 0x60, 0x31, 0x98, 0x47, 0x23, 0x20, -0x22, 0x46, 0x31, 0x46, 0x08, 0xF0, 0x20, 0xFD, 0x00, 0x20, 0x70, 0xBD, 0x08, 0xF0, 0x56, 0xFF, 0x58, 0xB1, 0x02, 0x28, -0xF9, 0xD0, 0x10, 0x4B, 0xD3, 0xF8, 0xE0, 0x30, 0x98, 0x47, 0x20, 0x46, 0x02, 0x21, 0x08, 0xF0, 0xA3, 0xFE, 0x02, 0x20, -0x70, 0xBD, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x02, 0xDB, 0x00, 0x23, 0x6B, 0x82, 0xE0, 0xE7, -0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0xF8, 0xD0, 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x31, 0x62, 0x0A, 0xF0, 0x76, 0xFD, -0xF1, 0xE7, 0x00, 0xBF, 0x98, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x38, 0x00, 0x32, 0x40, -0x70, 0x79, 0x15, 0x00, 0x84, 0x9E, 0x15, 0x00, 0x70, 0xB5, 0x1E, 0x4D, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x0E, 0x46, 0x14, 0x46, 0x1C, 0xDB, 0x20, 0x46, 0x08, 0xF0, 0x1C, 0xFF, 0x58, 0xB1, 0x02, 0x28, 0x08, 0xD0, 0x18, 0x4B, -0xD3, 0xF8, 0xE0, 0x30, 0x98, 0x47, 0x20, 0x46, 0x02, 0x21, 0x08, 0xF0, 0x69, 0xFE, 0x02, 0x20, 0x70, 0xBD, 0x2B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x13, 0xDB, 0x20, 0x46, 0x03, 0x21, 0x08, 0xF0, 0x5E, 0xFE, 0x33, 0x68, 0x98, 0x47, -0x00, 0x20, 0x70, 0xBD, 0x10, 0x46, 0x08, 0xF0, 0xFF, 0xFE, 0x04, 0x28, 0xDD, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF2, -0x71, 0x62, 0x0A, 0xF0, 0x37, 0xFD, 0xD6, 0xE7, 0x09, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0xE7, 0xD0, 0x05, 0x49, 0x08, 0x48, -0x4F, 0xF4, 0xCF, 0x62, 0x0A, 0xF0, 0x2C, 0xFD, 0xE0, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xAC, 0x9E, 0x15, 0x00, 0x38, 0x00, 0x32, 0x40, 0x84, 0x9E, 0x15, 0x00, 0x70, 0xB5, 0x12, 0x4C, -0x88, 0x78, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x00, 0x40, 0x82, 0xB0, 0x90, 0xF8, 0x62, 0x40, 0x1E, 0x46, 0x84, 0xB9, -0x90, 0xF8, 0x6C, 0x00, 0x0C, 0x4D, 0x0C, 0x88, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x00, 0x51, 0xA4, 0x02, 0x8C, 0x60, -0x31, 0x46, 0x15, 0x20, 0x08, 0xF0, 0x8A, 0xFC, 0x00, 0x20, 0x02, 0xB0, 0x70, 0xBD, 0x06, 0x4C, 0x09, 0x88, 0xD4, 0xF8, -0x60, 0x44, 0x01, 0x92, 0xA0, 0x47, 0x01, 0x9A, 0xF0, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x88, 0x79, 0x19, 0x4D, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x00, 0xF6, -0x06, 0xF1, 0x38, 0x00, 0x28, 0x44, 0x35, 0x44, 0x82, 0xB0, 0x90, 0x46, 0x06, 0x22, 0x1F, 0x46, 0x0C, 0x46, 0x1C, 0xF0, -0x85, 0xFF, 0x95, 0xF8, 0xC0, 0x34, 0x73, 0xB9, 0x10, 0x49, 0x11, 0x4B, 0x20, 0x68, 0xA2, 0x88, 0x08, 0x60, 0x1A, 0x60, -0x42, 0x46, 0x39, 0x46, 0x19, 0x20, 0x08, 0xF0, 0x57, 0xFC, 0x00, 0x20, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x0D, 0xF1, -0x07, 0x00, 0xFC, 0xF7, 0x9F, 0xFF, 0x00, 0x28, 0xF0, 0xD1, 0x08, 0x49, 0x08, 0x48, 0xD1, 0xE9, 0x00, 0x23, 0x43, 0xF0, -0x10, 0x03, 0x1A, 0x43, 0x4B, 0x60, 0x02, 0x60, 0xE6, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x20, 0x00, 0x32, 0x40, -0x24, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x0D, 0x46, 0x9E, 0x4F, -0x95, 0xF8, 0x03, 0xA0, 0x4F, 0xF4, 0xA4, 0x61, 0x89, 0xB0, 0x01, 0xFB, 0x0A, 0xFB, 0x07, 0xEB, 0x0B, 0x06, 0x00, 0x24, -0x0D, 0xF1, 0x1F, 0x00, 0x90, 0x46, 0x99, 0x46, 0x8D, 0xF8, 0x1F, 0x40, 0xFC, 0xF7, 0x72, 0xFF, 0x96, 0xF8, 0x62, 0x30, -0xAA, 0x78, 0x86, 0xF8, 0x64, 0x20, 0x04, 0x46, 0x00, 0x2B, 0x40, 0xF0, 0xED, 0x80, 0x96, 0xF8, 0x6C, 0x10, 0x02, 0x91, -0x00, 0x2A, 0x00, 0xF0, 0x45, 0x81, 0x8E, 0x4A, 0x8E, 0x4B, 0x03, 0x92, 0x8C, 0x46, 0x8E, 0x49, 0x18, 0x69, 0xD2, 0xF8, -0xE0, 0x31, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x0C, 0x12, 0x0B, 0xF1, 0x18, 0x01, 0x79, 0x18, 0x04, 0x91, 0x91, 0x68, -0x05, 0x92, 0x41, 0x18, 0x04, 0x98, 0x98, 0x47, 0x05, 0x9A, 0x2B, 0x88, 0x13, 0x84, 0xFC, 0xF7, 0x39, 0xFF, 0x05, 0x9A, -0x96, 0xF8, 0xC0, 0x14, 0x01, 0x94, 0x13, 0x8C, 0x92, 0xF8, 0x23, 0x20, 0x00, 0x91, 0x4F, 0xF4, 0x80, 0x70, 0x7F, 0x49, -0x0A, 0xF0, 0x3C, 0xFA, 0x96, 0xF8, 0xC0, 0x34, 0x33, 0xB9, 0x7D, 0x4A, 0x29, 0x88, 0x13, 0x68, 0x9B, 0xB2, 0x43, 0xEA, -0x01, 0x43, 0x13, 0x60, 0x7A, 0x4B, 0x1B, 0x68, 0x18, 0x04, 0x00, 0xF1, 0xD2, 0x81, 0x79, 0x49, 0x79, 0x4B, 0xB1, 0xF8, -0x1C, 0xC0, 0x02, 0x99, 0x08, 0x46, 0x72, 0x49, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x00, 0x12, 0x4F, 0xF4, 0xA4, 0x6B, -0x90, 0x68, 0x02, 0x92, 0x0B, 0xFB, 0x0A, 0x7B, 0x0C, 0xF1, 0x14, 0x0C, 0x00, 0xFB, 0x0C, 0xFC, 0xA3, 0xFB, 0x0C, 0x3C, -0xDB, 0xF8, 0x04, 0x00, 0x4F, 0xEA, 0x9C, 0x4C, 0x00, 0x23, 0xA2, 0xF8, 0x1E, 0xC0, 0x40, 0xF0, 0x01, 0x00, 0xDF, 0xF8, -0x90, 0xC1, 0xAB, 0xF8, 0x68, 0x30, 0x8B, 0xF8, 0x6A, 0x30, 0x8B, 0xF8, 0x8C, 0x30, 0x8B, 0xF8, 0x78, 0x30, 0xCB, 0xF8, -0x74, 0x30, 0xCB, 0xF8, 0x04, 0x00, 0xDC, 0xF8, 0x10, 0x00, 0xCB, 0xF8, 0x70, 0x00, 0x30, 0x46, 0x04, 0xF0, 0xF4, 0xFA, -0x9B, 0xF8, 0xC0, 0x04, 0x5D, 0x49, 0x00, 0x23, 0x00, 0x28, 0x40, 0xF0, 0x76, 0x81, 0x5D, 0x4B, 0x02, 0x9A, 0x9B, 0x7C, -0x00, 0x2B, 0x40, 0xF0, 0x8B, 0x81, 0x00, 0x2C, 0x40, 0xF0, 0xD5, 0x81, 0xDF, 0xF8, 0x7C, 0xB1, 0xDB, 0xF8, 0x20, 0x30, -0x00, 0x2B, 0x40, 0xF0, 0x81, 0x81, 0x9D, 0xF8, 0x1F, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x87, 0x82, 0x53, 0x49, 0x93, 0x68, -0x0A, 0x68, 0xCB, 0xF8, 0x20, 0x60, 0x12, 0x0C, 0x12, 0x04, 0xC3, 0xF3, 0x8F, 0x23, 0x13, 0x43, 0x0B, 0x60, 0xDD, 0xE9, -0x03, 0x30, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x03, 0x9B, 0x8B, 0xF8, 0x24, 0x40, 0xD3, 0xF8, 0x60, 0x32, 0x98, 0x47, -0xAA, 0x78, 0x11, 0x46, 0x30, 0x46, 0x05, 0xF0, 0x5B, 0xFF, 0xAB, 0x78, 0x00, 0x2B, 0x38, 0xD0, 0x45, 0x4B, 0x1B, 0x68, -0x1A, 0x68, 0x00, 0x2A, 0x00, 0xF0, 0xE0, 0x80, 0x43, 0x49, 0x0A, 0x60, 0x5A, 0x68, 0x00, 0x2A, 0x00, 0xF0, 0xE5, 0x80, -0xC2, 0xF3, 0x0B, 0x01, 0x00, 0x29, 0x40, 0xF0, 0x4F, 0x81, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x0A, 0x71, 0x22, 0xF4, -0x7F, 0x62, 0xC9, 0x68, 0x3B, 0x48, 0x22, 0xF0, 0x0F, 0x02, 0xC1, 0xF3, 0x0B, 0x01, 0x0A, 0x43, 0x02, 0x60, 0x9A, 0x68, -0x00, 0x2A, 0x40, 0xF0, 0xD9, 0x80, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, 0x35, 0x49, 0x12, 0x69, 0x0A, 0x60, -0xDB, 0x68, 0x00, 0x2B, 0x40, 0xF0, 0xD4, 0x80, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x77, 0x30, 0x4B, 0x7A, 0x69, -0x1A, 0x60, 0x21, 0x4B, 0xD3, 0xF8, 0xA0, 0x31, 0x98, 0x47, 0x42, 0x46, 0x49, 0x46, 0x1F, 0x20, 0x08, 0xF0, 0x30, 0xFB, -0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x80, 0xB1, 0x22, 0x4B, 0x9C, 0x68, 0x6C, 0xB1, 0x94, 0xF8, 0x62, 0x30, -0x3B, 0xB9, 0x94, 0xF8, 0x64, 0x30, 0x23, 0xB1, 0xA6, 0x42, 0x02, 0xD0, 0x94, 0xF8, 0xC0, 0x34, 0x13, 0xB1, 0x24, 0x68, -0x00, 0x2C, 0xF1, 0xD1, 0x00, 0x2A, 0x00, 0xF0, 0xB2, 0x80, 0x1F, 0x4B, 0x19, 0x6A, 0xA1, 0x42, 0x9D, 0xD1, 0x0E, 0x49, -0x1D, 0x4C, 0xD1, 0xF8, 0x64, 0x12, 0x00, 0x22, 0x1A, 0x62, 0x83, 0xF8, 0x24, 0x20, 0x88, 0x47, 0x0F, 0x4A, 0x1A, 0x48, -0xD2, 0xE9, 0x00, 0x13, 0x43, 0xF0, 0x10, 0x03, 0x19, 0x43, 0x01, 0x60, 0x17, 0x48, 0x18, 0x49, 0x20, 0x60, 0x53, 0x60, -0x0B, 0x68, 0x03, 0x43, 0x0B, 0x60, 0xAA, 0x78, 0x83, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, 0xD0, 0x9E, 0x15, 0x00, 0x68, 0x00, 0x32, 0x40, 0x04, 0x00, 0x32, 0x40, -0x98, 0x9C, 0x17, 0x00, 0x83, 0xDE, 0x1B, 0x43, 0x00, 0x88, 0x17, 0x00, 0x64, 0x00, 0x32, 0x40, 0xAC, 0x35, 0x17, 0x00, -0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x08, 0x02, 0x32, 0x40, 0x0C, 0x02, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, -0x70, 0x80, 0x32, 0x40, 0x60, 0x00, 0x32, 0x40, 0x01, 0x00, 0x04, 0x00, 0x74, 0x80, 0x32, 0x40, 0xAC, 0x4B, 0x03, 0x93, -0x0B, 0xF1, 0x18, 0x00, 0x38, 0x44, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x03, 0x9B, 0xD3, 0xF8, 0xDC, 0x33, 0x98, 0x47, -0xA7, 0x49, 0x96, 0xF8, 0xC0, 0x24, 0x23, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x0A, 0xF0, 0x0A, 0xF9, 0xA4, 0x4B, 0x1B, 0x68, -0x19, 0x04, 0x00, 0xF1, 0xD8, 0x80, 0xA3, 0x4B, 0x9B, 0x7F, 0x3B, 0xB9, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, -0x82, 0xF8, 0xC3, 0x34, 0xC2, 0xF8, 0xC4, 0x34, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x73, 0x93, 0xF8, 0xC0, 0x34, -0x00, 0x2B, 0x00, 0xF0, 0x8C, 0x80, 0x00, 0x2C, 0x00, 0xF0, 0x8E, 0x80, 0x98, 0x4B, 0x9C, 0x68, 0x00, 0x2C, 0x00, 0xF0, -0x89, 0x80, 0x94, 0xF8, 0x62, 0x30, 0x4B, 0xB9, 0x94, 0xF8, 0x64, 0x30, 0x33, 0xB1, 0xA6, 0x42, 0x04, 0xD0, 0x94, 0xF8, -0xC0, 0x34, 0x00, 0x2B, 0x00, 0xF0, 0x4A, 0x81, 0x24, 0x68, 0x00, 0x2C, 0xEF, 0xD1, 0x77, 0xE0, 0x4F, 0xF4, 0xA4, 0x62, -0x02, 0xFB, 0x0A, 0x72, 0x8C, 0x49, 0x92, 0x68, 0x0A, 0x60, 0x5A, 0x68, 0x00, 0x2A, 0x7F, 0xF4, 0x1B, 0xAF, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, 0x88, 0x49, 0xD2, 0x68, 0x0A, 0x60, 0x9A, 0x68, 0x00, 0x2A, 0x3F, 0xF4, 0x27, 0xAF, -0x85, 0x49, 0x0A, 0x60, 0xDB, 0x68, 0x00, 0x2B, 0x3F, 0xF4, 0x2C, 0xAF, 0x83, 0x4A, 0x13, 0x60, 0x7A, 0x4B, 0xD3, 0xF8, -0xA0, 0x31, 0x98, 0x47, 0x2F, 0xE7, 0x81, 0x48, 0x81, 0x49, 0x03, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x03, 0x60, 0x0B, 0x6A, -0x00, 0x2B, 0x7F, 0xF4, 0xE6, 0xAE, 0x00, 0x2C, 0x3F, 0xF4, 0xE3, 0xAE, 0xDF, 0xF8, 0xC4, 0xB1, 0x0C, 0x62, 0x81, 0xF8, -0x24, 0x20, 0x04, 0xF1, 0x18, 0x00, 0xDB, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0xDB, 0xF8, 0x60, 0x32, 0x98, 0x47, 0x76, 0x49, -0xDF, 0xF8, 0xE4, 0xC1, 0x75, 0x48, 0xD4, 0xF8, 0x38, 0xE0, 0xA4, 0x8F, 0xD1, 0xE9, 0x00, 0x32, 0x22, 0xF0, 0x10, 0x02, -0x13, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0xC0, 0xF8, 0x00, 0xE0, 0x70, 0x4B, 0x4C, 0xF8, 0x3C, 0x4C, 0x00, 0xF5, 0x00, 0x40, -0x54, 0x30, 0x6E, 0x4C, 0x1C, 0x60, 0x03, 0x68, 0x4A, 0x60, 0x23, 0xF4, 0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, 0x03, 0x60, -0x1A, 0xE0, 0xCC, 0xB1, 0x64, 0x4A, 0x10, 0x6A, 0xB0, 0xB1, 0x13, 0x62, 0x82, 0xF8, 0x24, 0x30, 0x03, 0x9B, 0xD3, 0xF8, -0x64, 0x32, 0x98, 0x47, 0x60, 0x49, 0x64, 0x48, 0xD1, 0xE9, 0x00, 0x23, 0x43, 0xF0, 0x10, 0x03, 0x1A, 0x43, 0x4B, 0x60, -0x02, 0x60, 0xAA, 0x78, 0x9F, 0xE6, 0x02, 0x2C, 0x65, 0xD0, 0x01, 0x2C, 0x00, 0xF0, 0xC0, 0x80, 0xAA, 0x78, 0x98, 0xE6, -0x52, 0x49, 0x0A, 0x60, 0x94, 0xE7, 0xE6, 0xF7, 0x1F, 0xFE, 0x00, 0x28, 0x3F, 0xF4, 0x29, 0xAE, 0x02, 0x9A, 0x11, 0x46, -0x57, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x23, 0x5B, 0x68, 0x9A, 0x06, 0x7F, 0xF5, 0x1E, 0xAE, 0x28, 0x88, -0xE6, 0xF7, 0x54, 0xFE, 0xF9, 0xF7, 0x9C, 0xF9, 0x51, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0x0A, 0xF0, 0x41, 0xF8, 0x03, 0x9B, -0xD3, 0xF8, 0xE0, 0x33, 0x98, 0x47, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x73, 0x93, 0xF8, 0x62, 0x20, 0x04, 0x2A, -0x3F, 0xF4, 0x07, 0xAE, 0x93, 0xF8, 0x63, 0x00, 0x03, 0x9B, 0xD3, 0xF8, 0x30, 0x33, 0x98, 0x47, 0xFF, 0xE5, 0xE6, 0xF7, -0xF1, 0xFD, 0x00, 0x28, 0x3F, 0xF4, 0x23, 0xAF, 0x41, 0x4B, 0x02, 0x99, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x01, 0x3B, -0xDB, 0xF8, 0x04, 0x30, 0x9B, 0x06, 0x7F, 0xF5, 0x18, 0xAF, 0x96, 0xF8, 0x62, 0x30, 0x04, 0x2B, 0x3F, 0xF4, 0x13, 0xAF, -0x96, 0xF8, 0x63, 0x00, 0x06, 0xF0, 0x2A, 0xFB, 0x0D, 0xE7, 0x01, 0x2C, 0xB0, 0xD1, 0x30, 0x4C, 0x22, 0x6A, 0xB2, 0x42, -0xAC, 0xD0, 0x23, 0x62, 0x02, 0x93, 0xDD, 0xE9, 0x03, 0x30, 0xD3, 0xF8, 0xD8, 0x21, 0x90, 0x47, 0x02, 0x9B, 0x84, 0xF8, -0x24, 0x30, 0x03, 0x9B, 0xD3, 0xF8, 0x64, 0x32, 0x98, 0x47, 0xAA, 0x78, 0x37, 0xE6, 0x26, 0x4C, 0x23, 0x6A, 0x00, 0x2B, -0x98, 0xD1, 0x1E, 0x4B, 0x98, 0x68, 0x20, 0xB9, 0xA3, 0xE0, 0x00, 0x68, 0x00, 0x28, 0x00, 0xF0, 0xA0, 0x80, 0x90, 0xF8, -0x62, 0x30, 0x00, 0x2B, 0xF7, 0xD1, 0x90, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xF3, 0xD0, 0x86, 0x42, 0xF1, 0xD0, 0x90, 0xF8, -0xC0, 0x34, 0x00, 0x2B, 0xED, 0xD1, 0x1F, 0x49, 0x17, 0x4A, 0x20, 0x62, 0x9B, 0x46, 0x90, 0xF8, 0x6C, 0x30, 0x4F, 0xF4, -0x1E, 0x7C, 0x0C, 0xFB, 0x03, 0x13, 0x11, 0x68, 0x9B, 0x68, 0x09, 0x0C, 0x09, 0x04, 0xC3, 0xF3, 0x8F, 0x23, 0x0B, 0x43, -0x13, 0x60, 0x03, 0x9B, 0x18, 0x30, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x03, 0x9B, 0x84, 0xF8, 0x24, 0xB0, 0xD3, 0xF8, -0x60, 0x32, 0x98, 0x47, 0xAA, 0x78, 0xFE, 0xE5, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x9F, 0x15, 0x00, 0x04, 0x00, 0x32, 0x40, -0x64, 0xBA, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x08, 0x02, 0x32, 0x40, -0x0C, 0x02, 0x32, 0x40, 0x64, 0x00, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x20, 0x00, 0x32, 0x40, -0x70, 0x80, 0x32, 0x40, 0x01, 0x00, 0x04, 0x00, 0x60, 0x00, 0x32, 0x40, 0x68, 0x65, 0x17, 0x00, 0xF0, 0x9E, 0x15, 0x00, -0x29, 0x4A, 0x11, 0x6A, 0xB1, 0x42, 0x7F, 0xF4, 0x3B, 0xAF, 0x13, 0x62, 0x82, 0xF8, 0x24, 0x30, 0x03, 0x9B, 0xD3, 0xF8, -0x64, 0x32, 0x98, 0x47, 0xAA, 0x78, 0xCC, 0xE5, 0xDF, 0xF8, 0x88, 0xB0, 0xDB, 0xF8, 0x20, 0x20, 0x00, 0x2A, 0x7F, 0xF4, -0x2B, 0xAF, 0x94, 0xF8, 0x6C, 0x30, 0x1F, 0x48, 0x1F, 0x49, 0xCB, 0xF8, 0x20, 0x40, 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, -0x03, 0x03, 0x08, 0x68, 0x9B, 0x68, 0x02, 0x92, 0x00, 0x0C, 0x00, 0x04, 0xC3, 0xF3, 0x8F, 0x23, 0x03, 0x43, 0x0B, 0x60, -0x03, 0x9B, 0x04, 0xF1, 0x18, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x03, 0x9B, 0x02, 0x9A, 0x8B, 0xF8, 0x24, 0x20, -0xD3, 0xF8, 0x60, 0x32, 0xDF, 0xF8, 0x50, 0xB0, 0x98, 0x47, 0x11, 0x49, 0xDF, 0xF8, 0x4C, 0xC0, 0x10, 0x48, 0xD4, 0xF8, -0x38, 0xE0, 0xA4, 0x8F, 0xD1, 0xE9, 0x00, 0x23, 0x23, 0xF0, 0x10, 0x03, 0x1A, 0x43, 0x4B, 0x60, 0xCB, 0xF8, 0x00, 0x20, -0xCC, 0xF8, 0x00, 0xE0, 0x04, 0x60, 0xAA, 0x78, 0x8F, 0xE5, 0x01, 0x2B, 0x7F, 0xF4, 0xF2, 0xAE, 0xE1, 0xE6, 0x00, 0x23, -0x93, 0xF8, 0x6C, 0x30, 0xFF, 0xDE, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x64, 0x00, 0x32, 0x40, -0x98, 0x9C, 0x17, 0x00, 0x24, 0x00, 0x32, 0x40, 0x60, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x38, 0xB5, 0x07, 0x20, -0x0C, 0x46, 0x19, 0x46, 0x02, 0x23, 0x08, 0xF0, 0x7F, 0xF8, 0x23, 0x46, 0x07, 0x4D, 0x13, 0xF8, 0x02, 0x1B, 0x22, 0x7A, -0xD5, 0xF8, 0x58, 0x54, 0x04, 0x46, 0x18, 0x46, 0x63, 0x1C, 0xA8, 0x47, 0x20, 0x70, 0x20, 0x46, 0x08, 0xF0, 0xA0, 0xF8, -0x00, 0x20, 0x38, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0x00, 0xB5, 0x08, 0x78, 0x03, 0x28, 0x83, 0xB0, 0x19, 0x46, 0x07, 0xD8, -0xCD, 0xE9, 0x00, 0x23, 0x0C, 0x4B, 0xD3, 0xF8, 0x64, 0x34, 0x98, 0x47, 0xDD, 0xE9, 0x00, 0x21, 0x0A, 0x4B, 0x9B, 0x68, -0x33, 0xB1, 0x09, 0x20, 0x08, 0xF0, 0xC0, 0xF8, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x04, 0x4B, 0xD3, 0xF8, -0xE8, 0x30, 0xCD, 0xE9, 0x00, 0x21, 0x98, 0x47, 0xDD, 0xE9, 0x00, 0x21, 0xEF, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, -0x00, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x0D, 0x78, 0x0C, 0x46, 0x16, 0x46, 0x98, 0x46, 0x00, 0x2D, 0x3B, 0xD1, -0x91, 0xF8, 0x02, 0xC0, 0x26, 0x49, 0x27, 0x4A, 0x11, 0xF8, 0x0C, 0x00, 0xE1, 0x78, 0x52, 0xF8, 0x20, 0x20, 0x60, 0x78, -0x24, 0x4F, 0x25, 0x4B, 0x91, 0x42, 0xB8, 0xBF, 0x4A, 0x08, 0x00, 0xEB, 0x80, 0x01, 0xC0, 0xEB, 0x01, 0x11, 0x61, 0x44, -0x07, 0xEB, 0xC1, 0x01, 0x4F, 0xF0, 0x9E, 0x0E, 0x91, 0xF8, 0xA5, 0x11, 0x0E, 0xFB, 0x00, 0xC0, 0xA8, 0xBF, 0x02, 0xEB, -0xD2, 0x72, 0x07, 0xEB, 0x80, 0x00, 0xA8, 0xBF, 0xC2, 0xF3, 0x47, 0x02, 0x01, 0xEB, 0x41, 0x01, 0x80, 0xF8, 0x5A, 0x21, -0x03, 0xEB, 0xC1, 0x01, 0xA2, 0x88, 0x0A, 0x81, 0x32, 0x46, 0x41, 0x46, 0x03, 0x23, 0x29, 0x20, 0x08, 0xF0, 0x0C, 0xF8, -0x62, 0x78, 0x02, 0x70, 0xA2, 0x78, 0x42, 0x70, 0x85, 0x70, 0x08, 0xF0, 0x35, 0xF8, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, -0x48, 0x78, 0x0B, 0x49, 0xA2, 0x88, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0x10, 0xA1, 0x78, 0x14, 0xF0, 0xA0, 0xFB, -0x08, 0xB9, 0x04, 0x25, 0xE2, 0xE7, 0x07, 0x49, 0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, 0x00, 0x25, 0xDB, 0xE7, -0xC0, 0xB2, 0x15, 0x00, 0x7C, 0x28, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x54, 0x00, 0x32, 0x40, -0x2D, 0xE9, 0xF0, 0x43, 0x04, 0x46, 0x87, 0xB0, 0x10, 0x46, 0x15, 0x46, 0x0E, 0x46, 0x1F, 0x46, 0x08, 0xF0, 0x7C, 0xFA, -0x40, 0xB1, 0x02, 0x38, 0x80, 0xB2, 0x02, 0x28, 0x4D, 0xD8, 0x02, 0x24, 0x20, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, -0xDF, 0xF8, 0x88, 0x83, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x65, 0xDB, 0x3B, 0x2C, 0x00, 0xF2, -0xA7, 0x80, 0x05, 0x2C, 0x40, 0xF2, 0xE3, 0x80, 0x06, 0x3C, 0x35, 0x2C, 0x4A, 0xD8, 0xDF, 0xE8, 0x14, 0xF0, 0xBF, 0x01, -0x49, 0x00, 0xB5, 0x01, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x88, 0x01, 0x49, 0x00, 0x6E, 0x01, -0x49, 0x00, 0x5A, 0x01, 0x49, 0x00, 0x50, 0x01, 0x49, 0x00, 0x3A, 0x01, 0x49, 0x00, 0x30, 0x01, 0x49, 0x00, 0x49, 0x00, -0x49, 0x00, 0x1D, 0x01, 0x49, 0x00, 0x13, 0x01, 0x49, 0x00, 0x00, 0x01, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, -0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0xF6, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, -0x49, 0x00, 0xEF, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, -0x49, 0x00, 0x49, 0x00, 0xE2, 0x00, 0xB1, 0x4B, 0xB1, 0x4C, 0x1B, 0x68, 0x28, 0x46, 0x03, 0xF0, 0x0F, 0x03, 0xE3, 0x74, -0x08, 0xF0, 0x20, 0xFA, 0xAE, 0x4B, 0xA0, 0x74, 0xD3, 0xF8, 0xE0, 0x30, 0x98, 0x47, 0x28, 0x46, 0x02, 0x21, 0x08, 0xF0, -0x6F, 0xF9, 0x9E, 0xE7, 0xDF, 0xF8, 0xA0, 0x82, 0x02, 0x24, 0x98, 0xF8, 0x13, 0x30, 0xA5, 0x4A, 0x1B, 0x01, 0xDB, 0xB2, -0x13, 0x60, 0x28, 0x46, 0x98, 0xF8, 0x12, 0x10, 0x08, 0xF0, 0x60, 0xF9, 0x20, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, -0x9E, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x40, 0xF0, 0x6F, 0x81, 0x3B, 0x2C, 0x67, 0xD8, 0x05, 0x2C, 0x67, 0xD9, 0x06, 0x3C, -0x35, 0x2C, 0x64, 0xD8, 0xDF, 0xE8, 0x14, 0xF0, 0x56, 0x01, 0x63, 0x00, 0x4C, 0x01, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, -0x63, 0x00, 0x63, 0x00, 0x1F, 0x01, 0x63, 0x00, 0x05, 0x01, 0x63, 0x00, 0xF1, 0x00, 0x63, 0x00, 0xE7, 0x00, 0x63, 0x00, -0xD1, 0x00, 0x63, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0xB4, 0x00, 0x63, 0x00, 0xAA, 0x00, 0x63, 0x00, -0x97, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x8D, 0x00, 0x63, 0x00, -0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x86, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, -0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x79, 0x00, 0x87, 0x2C, 0x3C, 0xD1, -0xDF, 0xF8, 0xF0, 0x81, 0xDF, 0xF8, 0xF0, 0x91, 0x00, 0x27, 0x88, 0xF8, 0x30, 0x70, 0x30, 0x68, 0xD9, 0xF8, 0xF8, 0x30, -0x98, 0x47, 0x04, 0x46, 0x00, 0x28, 0x40, 0xF0, 0x19, 0x81, 0x98, 0xF8, 0x31, 0x30, 0x00, 0x2B, 0x97, 0xD0, 0x05, 0xA8, -0x88, 0xF8, 0x31, 0x40, 0x01, 0xF0, 0x74, 0xFD, 0x00, 0x28, 0x90, 0xD0, 0x05, 0x9A, 0x71, 0x49, 0x92, 0xF8, 0x63, 0x30, -0x92, 0xF8, 0xC1, 0x04, 0x03, 0xEB, 0xC3, 0x02, 0x03, 0xEB, 0x42, 0x03, 0x01, 0xEB, 0x43, 0x01, 0x05, 0xF0, 0x9C, 0xFF, -0x81, 0xE7, 0x87, 0x2C, 0xD4, 0xD0, 0x6A, 0x49, 0x6A, 0x48, 0xDF, 0xF8, 0x98, 0x81, 0x40, 0xF6, 0x06, 0x22, 0x09, 0xF0, -0xCB, 0xFF, 0x02, 0x24, 0x75, 0xE7, 0x87, 0x2C, 0xC8, 0xD0, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xED, 0xDB, 0xDF, 0xF8, 0x78, 0x81, 0x02, 0x24, 0x69, 0xE7, 0x5D, 0x4B, 0xDF, 0xF8, 0x6C, 0x81, 0x9B, 0x6D, 0x30, 0x46, -0x98, 0x47, 0x2A, 0x46, 0x39, 0x46, 0x3C, 0x20, 0x07, 0xF0, 0x38, 0xFF, 0x00, 0x24, 0x5C, 0xE7, 0x30, 0x46, 0x09, 0xF0, -0xD3, 0xFF, 0xDF, 0xF8, 0x50, 0x81, 0x00, 0x24, 0x55, 0xE7, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x28, 0x20, 0xFF, 0xF7, -0x7B, 0xFE, 0xDF, 0xF8, 0x3C, 0x81, 0x04, 0x46, 0x4B, 0xE7, 0x52, 0x4B, 0x32, 0x78, 0x1B, 0x68, 0x51, 0x48, 0xDF, 0xF8, -0x2C, 0x81, 0xDB, 0xB2, 0x03, 0xFB, 0x02, 0xF3, 0x42, 0xEA, 0x03, 0x23, 0x03, 0x60, 0x39, 0x46, 0x2A, 0x46, 0x21, 0x20, -0x07, 0xF0, 0x14, 0xFF, 0x00, 0x24, 0x38, 0xE7, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x1E, 0x20, 0xFF, 0xF7, 0xD4, 0xFA, -0xDF, 0xF8, 0x00, 0x81, 0x04, 0x46, 0x2E, 0xE7, 0x45, 0x48, 0x33, 0x78, 0x02, 0x68, 0xDF, 0xF8, 0xF4, 0x80, 0x9B, 0x03, -0x22, 0xF4, 0xE0, 0x32, 0x03, 0xF4, 0xE0, 0x33, 0x13, 0x43, 0x03, 0x60, 0x39, 0x46, 0x2A, 0x46, 0x1D, 0x20, 0x07, 0xF0, -0xF7, 0xFE, 0x00, 0x24, 0x1B, 0xE7, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x18, 0x20, 0xFF, 0xF7, 0x77, 0xFA, 0xDF, 0xF8, -0xC8, 0x80, 0x04, 0x46, 0x11, 0xE7, 0x73, 0x79, 0xDF, 0xF8, 0xBC, 0x80, 0x36, 0x4A, 0x31, 0x68, 0x92, 0x6A, 0x08, 0xEB, -0x83, 0x00, 0x41, 0x61, 0x22, 0xB1, 0x12, 0x79, 0x9A, 0x42, 0x04, 0xBF, 0x32, 0x4B, 0x19, 0x60, 0x39, 0x46, 0x2A, 0x46, -0x17, 0x20, 0x07, 0xF0, 0xD7, 0xFE, 0x00, 0x24, 0xFB, 0xE6, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x14, 0x20, 0xFF, 0xF7, -0x2B, 0xFA, 0xDF, 0xF8, 0x88, 0x80, 0x04, 0x46, 0xF1, 0xE6, 0x2A, 0x4A, 0x31, 0x78, 0x13, 0x68, 0xDF, 0xF8, 0x78, 0x80, -0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x39, 0x46, 0x2A, 0x46, -0x13, 0x20, 0x07, 0xF0, 0xB9, 0xFE, 0x00, 0x24, 0xDD, 0xE6, 0x39, 0x46, 0x02, 0x23, 0x2A, 0x46, 0x11, 0x20, 0x07, 0xF0, -0x49, 0xFE, 0x72, 0x7A, 0xF3, 0x88, 0xB1, 0x7A, 0x02, 0x91, 0xCD, 0xE9, 0x00, 0x32, 0x04, 0x46, 0xB3, 0x88, 0x72, 0x88, -0x71, 0x78, 0x30, 0x78, 0xDF, 0xF8, 0x34, 0x80, 0xE6, 0xF7, 0x1E, 0xFA, 0x20, 0x46, 0x07, 0xF0, 0x67, 0xFE, 0x00, 0x24, -0xC3, 0xE6, 0xDF, 0xF8, 0x24, 0x80, 0x33, 0x68, 0xD8, 0xF8, 0x04, 0x10, 0x11, 0x4A, 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0x43, -0x13, 0x60, 0x39, 0x46, 0x2A, 0x46, 0x0F, 0x20, 0x07, 0xF0, 0x8E, 0xFE, 0x00, 0x24, 0xB2, 0xE6, 0x38, 0x00, 0x32, 0x40, -0x98, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x64, 0x3E, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, -0xE4, 0x00, 0x32, 0x40, 0xE8, 0x00, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, 0x30, 0x9D, 0x17, 0x00, 0xDC, 0x00, 0x32, 0x40, -0x90, 0x00, 0x32, 0x40, 0x60, 0x00, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x08, 0x20, -0xFF, 0xF7, 0x96, 0xFD, 0xDF, 0xF8, 0x2C, 0x81, 0x04, 0x46, 0x8C, 0xE6, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x06, 0x20, -0xFF, 0xF7, 0x72, 0xFD, 0xDF, 0xF8, 0x18, 0x81, 0x04, 0x46, 0x82, 0xE6, 0xD9, 0xF8, 0x6C, 0x31, 0x30, 0x68, 0x98, 0x47, -0x3C, 0x46, 0x7C, 0xE6, 0x3F, 0x49, 0x40, 0x48, 0x40, 0xF6, 0xC9, 0x12, 0x09, 0xF0, 0xCA, 0xFE, 0x3B, 0x2C, 0x3F, 0xF6, -0xFE, 0xAE, 0x05, 0x2C, 0x7F, 0xF6, 0xFD, 0xAE, 0x06, 0x3C, 0x35, 0x2C, 0x3F, 0xF6, 0xF9, 0xAE, 0x01, 0xA3, 0x53, 0xF8, -0x24, 0xF0, 0x00, 0xBF, 0xBD, 0xAD, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xA9, 0xAD, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x4F, 0xAD, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0x1B, 0xAD, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xF3, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0xDF, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xB3, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x9F, 0xAC, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x79, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0x65, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x3F, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0x2B, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x1D, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, -0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x03, 0xAC, 0x13, 0x00, -0x70, 0x79, 0x15, 0x00, 0x84, 0x9E, 0x15, 0x00, 0x98, 0x9C, 0x17, 0x00, 0xC0, 0x68, 0xCB, 0x68, 0xC0, 0x1A, 0xC0, 0x0F, -0x70, 0x47, 0x00, 0xBF, 0x01, 0x48, 0x08, 0xF0, 0xE9, 0xB9, 0x00, 0xBF, 0xD0, 0x9C, 0x17, 0x00, 0x06, 0x4B, 0x38, 0xB1, -0xC1, 0x68, 0x04, 0x22, 0x4F, 0xF4, 0x80, 0x20, 0x98, 0x60, 0x19, 0x63, 0x9A, 0x60, 0x70, 0x47, 0x4F, 0xF4, 0x80, 0x62, -0x9A, 0x60, 0x70, 0x47, 0x00, 0x10, 0x50, 0x40, 0x33, 0x4A, 0xF8, 0xB5, 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0x0C, 0x46, -0x05, 0x46, 0x57, 0xDB, 0x30, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x46, 0xDB, 0xEF, 0xF3, 0x10, 0x83, -0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2B, 0x4F, 0x2C, 0x4E, 0x3B, 0x68, 0x32, 0x68, -0x01, 0x33, 0x95, 0x42, 0x3B, 0x60, 0x19, 0xD0, 0x29, 0x46, 0x30, 0x46, 0x08, 0xF0, 0x08, 0xFA, 0x30, 0x46, 0x27, 0x4A, -0xEC, 0x60, 0x29, 0x46, 0x08, 0xF0, 0x40, 0xFA, 0x30, 0x68, 0x85, 0x42, 0x16, 0xD0, 0x3B, 0x68, 0x23, 0xB1, 0x1F, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0xA3, 0xB1, 0x1A, 0x4B, 0x19, 0x69, 0x64, 0x1A, 0x00, 0x2C, 0x17, 0xDB, 0xF8, 0xBD, -0x30, 0x46, 0x08, 0xF0, 0xE3, 0xF9, 0x30, 0x46, 0x1A, 0x4A, 0xEC, 0x60, 0x29, 0x46, 0x08, 0xF0, 0x27, 0xFA, 0x30, 0x68, -0x18, 0x4B, 0xD3, 0xF8, 0xDC, 0x31, 0x98, 0x47, 0xE3, 0xE7, 0x00, 0x2A, 0xE8, 0xD0, 0x62, 0xB6, 0x0E, 0x4B, 0x19, 0x69, -0x64, 0x1A, 0x00, 0x2C, 0xE7, 0xDA, 0xBD, 0xE8, 0xF8, 0x40, 0x4F, 0xF0, 0x80, 0x40, 0x08, 0xF0, 0xE3, 0xB8, 0x09, 0x4B, -0x1B, 0x69, 0xE3, 0x1A, 0x00, 0x2B, 0xB3, 0xDA, 0x0D, 0x49, 0x0E, 0x48, 0x7D, 0x22, 0x09, 0xF0, 0xCF, 0xFD, 0xAD, 0xE7, -0x13, 0x69, 0x41, 0x68, 0x0B, 0x48, 0x22, 0x46, 0x09, 0xF0, 0x4E, 0xFB, 0xA0, 0xE7, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, -0x38, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xD0, 0x9C, 0x17, 0x00, 0xE9, 0xAE, 0x13, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x74, 0x9F, 0x15, 0x00, 0x4C, 0x9F, 0x15, 0x00, 0x38, 0xB5, 0x01, 0x46, -0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0F, 0x4C, 0x10, 0x4D, -0x23, 0x68, 0x2A, 0x68, 0x01, 0x33, 0x8A, 0x42, 0x23, 0x60, 0x28, 0x46, 0x0B, 0xD0, 0x08, 0xF0, 0x99, 0xF9, 0x23, 0x68, -0x33, 0xB1, 0x08, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x08, 0xF0, -0x81, 0xF9, 0x06, 0x4B, 0x28, 0x68, 0xD3, 0xF8, 0xDC, 0x31, 0x98, 0x47, 0xED, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0xD0, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x2C, 0x4F, 0x2D, 0x4D, -0xDF, 0xF8, 0xC8, 0xA0, 0xDF, 0xF8, 0xC0, 0x80, 0x2B, 0x4E, 0xB9, 0x46, 0x01, 0xE0, 0xA0, 0x68, 0x98, 0x47, 0x4F, 0xF0, -0x80, 0x40, 0x08, 0xF0, 0x9F, 0xF8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, -0x00, 0x30, 0x2B, 0x68, 0x3C, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x4C, 0xB3, 0x32, 0x69, 0xE3, 0x68, 0x9B, 0x1A, 0x32, 0x2B, -0x08, 0xD4, 0xDA, 0xF8, 0xDC, 0x31, 0x20, 0x46, 0x98, 0x47, 0x32, 0x69, 0xE3, 0x68, 0x9B, 0x1A, 0x00, 0x2B, 0x2A, 0xDA, -0x48, 0x46, 0x08, 0xF0, 0x43, 0xF9, 0x2B, 0x68, 0x33, 0xB1, 0x01, 0x3B, 0xD8, 0xF8, 0x00, 0x20, 0x2B, 0x60, 0x0B, 0xB9, -0x02, 0xB1, 0x62, 0xB6, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x63, 0x68, 0xCB, 0xDA, 0x00, 0x2B, -0xC9, 0xD1, 0x11, 0x49, 0x11, 0x48, 0xEB, 0x22, 0x09, 0xF0, 0x3C, 0xFD, 0x63, 0x68, 0xC2, 0xE7, 0xDA, 0xF8, 0xDC, 0x31, -0x20, 0x46, 0x98, 0x47, 0x2B, 0x68, 0x33, 0xB1, 0x0C, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0xBD, 0xE8, 0xF0, 0x87, 0x2B, 0x68, 0x00, 0x2B, 0xFA, 0xD0, 0xF2, 0xE7, 0x00, 0xBF, 0xD0, 0x9C, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x90, 0x9F, 0x15, 0x00, -0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x11, 0xF4, 0x00, 0x05, 0x04, 0x46, 0x0E, 0xD1, 0x90, 0xF8, -0x5C, 0x22, 0x1E, 0x49, 0x1E, 0x48, 0x01, 0x32, 0xD2, 0xB2, 0x84, 0xF8, 0x5C, 0x22, 0x09, 0xF0, 0x8D, 0xFA, 0x94, 0xF8, -0x5C, 0x32, 0x09, 0x2B, 0x15, 0xD8, 0x70, 0xBD, 0x17, 0x49, 0x19, 0x48, 0x09, 0xF0, 0x84, 0xFA, 0x94, 0xF8, 0x23, 0x30, -0x00, 0x22, 0x0D, 0x2B, 0x84, 0xF8, 0x5C, 0x22, 0xF3, 0xD8, 0x15, 0x49, 0x15, 0x4A, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, -0x03, 0x13, 0x12, 0x69, 0xC3, 0xF8, 0x58, 0x22, 0x70, 0xBD, 0x2A, 0x46, 0x08, 0x23, 0x0C, 0x21, 0x7D, 0x20, 0x07, 0xF0, -0x05, 0xFC, 0x94, 0xF8, 0x23, 0x30, 0x03, 0x70, 0x94, 0xF8, 0x22, 0x30, 0x43, 0x70, 0x06, 0x46, 0x04, 0xF1, 0x26, 0x01, -0x84, 0xF8, 0x5C, 0x52, 0x02, 0x30, 0x06, 0x22, 0x1B, 0xF0, 0x7E, 0xFF, 0x30, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x07, 0xF0, -0x21, 0xBC, 0x00, 0xBF, 0x34, 0xA0, 0x15, 0x00, 0x9C, 0x9F, 0x15, 0x00, 0xB4, 0x9F, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x63, 0x30, 0x63, 0x4A, 0x4F, 0xF4, 0x1E, 0x74, 0x0A, 0x33, -0x04, 0xFB, 0x03, 0xF3, 0x11, 0x46, 0x02, 0xF1, 0x28, 0x04, 0x1C, 0x44, 0x1A, 0x44, 0x83, 0xB0, 0x0B, 0x46, 0xD2, 0xF8, -0x08, 0x12, 0x00, 0x29, 0x40, 0xF0, 0xA2, 0x80, 0xD2, 0xF8, 0x30, 0x12, 0x08, 0x32, 0x00, 0x29, 0x40, 0xF0, 0x9C, 0x80, -0xA2, 0x42, 0xF2, 0xD1, 0x57, 0x4A, 0x58, 0x4C, 0xDF, 0xF8, 0x70, 0xB1, 0x4F, 0xF4, 0xA4, 0x61, 0x93, 0xF8, 0x25, 0x60, -0x2E, 0xB1, 0x93, 0xF8, 0x22, 0x60, 0x01, 0xFB, 0x06, 0x46, 0xB0, 0x42, 0x06, 0xD0, 0x03, 0xF5, 0x1E, 0x73, 0x9A, 0x42, -0xF2, 0xD1, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x93, 0xF8, 0x23, 0x60, 0x0D, 0x2E, 0x77, 0xD9, 0x4F, 0xF0, 0x00, 0x08, -0xDB, 0xF8, 0x10, 0xE0, 0x1E, 0x46, 0x03, 0xF1, 0x28, 0x0C, 0xD6, 0xF8, 0x08, 0x72, 0x77, 0xB9, 0xD6, 0xF8, 0x30, 0x72, -0x08, 0x36, 0x57, 0xB9, 0xB4, 0x45, 0xF6, 0xD1, 0xCE, 0xF5, 0x64, 0x0E, 0x0E, 0xF5, 0x61, 0x4E, 0x0E, 0xF1, 0xC0, 0x0E, -0x1E, 0xEB, 0x08, 0x0F, 0xDB, 0xD5, 0x90, 0xF8, 0x63, 0x60, 0x93, 0xF8, 0x20, 0xE0, 0x00, 0x96, 0x35, 0x46, 0xC6, 0xEB, -0x86, 0x17, 0x3C, 0x4E, 0x4F, 0xEA, 0xDE, 0x08, 0x06, 0xEB, 0x87, 0x07, 0x0E, 0xF0, 0x07, 0x0C, 0x01, 0x26, 0x18, 0xF8, -0x07, 0x90, 0x06, 0xFA, 0x0C, 0xFC, 0x1C, 0xEA, 0x09, 0x0F, 0x07, 0xEB, 0xDE, 0x06, 0x01, 0x96, 0x5F, 0xFA, 0x8C, 0xFA, -0x0F, 0xFA, 0x85, 0xFE, 0xBD, 0xD1, 0x4A, 0xEA, 0x09, 0x09, 0x08, 0xF8, 0x07, 0x90, 0xB0, 0xF8, 0xD0, 0x90, 0x90, 0xF8, -0xD8, 0xC0, 0x09, 0xF1, 0x01, 0x09, 0xC4, 0x45, 0xA0, 0xF8, 0xD0, 0x90, 0x3E, 0xD8, 0xAF, 0x00, 0x90, 0xF8, 0xD9, 0x90, -0xC1, 0x45, 0x0B, 0xD2, 0x00, 0x9D, 0x28, 0x4E, 0x80, 0xF8, 0xD9, 0x80, 0x07, 0xEB, 0x05, 0x0A, 0x06, 0xEB, 0xCA, 0x0A, -0x01, 0x9E, 0xCA, 0xF8, 0x20, 0x60, 0xC1, 0x46, 0x23, 0x4E, 0x00, 0x9D, 0xCC, 0xF1, 0x06, 0x0C, 0xCC, 0x44, 0x06, 0xEB, -0xCE, 0x0E, 0x1F, 0xFA, 0x8C, 0xFC, 0x1E, 0x4E, 0xA0, 0xF8, 0xCE, 0xC0, 0xAC, 0xF1, 0x02, 0x08, 0x8E, 0xF8, 0x01, 0x80, -0x4F, 0xF0, 0x28, 0x0C, 0x2F, 0x44, 0x06, 0xEB, 0xC7, 0x07, 0x0C, 0xFB, 0x05, 0x66, 0x90, 0xF8, 0xD8, 0xC0, 0x8E, 0xF8, -0x04, 0xC0, 0x14, 0x36, 0x0E, 0xF1, 0x04, 0x0E, 0xC7, 0xF8, 0x0C, 0xE0, 0x7E, 0x60, 0x7C, 0xE7, 0x0D, 0x4D, 0x4F, 0xF4, -0x1E, 0x77, 0x07, 0xFB, 0x06, 0x56, 0xD6, 0xF8, 0x58, 0x82, 0x81, 0xE7, 0x0F, 0x4A, 0x01, 0x21, 0x11, 0x70, 0x61, 0xE7, -0x00, 0x9D, 0x0B, 0x4E, 0x05, 0xEB, 0x85, 0x09, 0x08, 0xF0, 0x1E, 0x0C, 0x06, 0xEB, 0xC9, 0x09, 0x67, 0x44, 0x80, 0xF8, -0xD8, 0xC0, 0xC9, 0xF8, 0x1C, 0x70, 0xAF, 0x00, 0xB2, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x18, 0x7E, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x3C, 0x4C, 0x18, 0x00, 0x9C, 0x4B, 0x18, 0x00, 0x2C, 0x50, 0x18, 0x00, 0x16, 0x2C, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x2D, 0xE9, 0xF8, 0x43, 0x02, 0x88, 0xC3, 0x78, 0x04, 0x46, 0xB2, 0xB9, 0x82, 0x78, 0x00, 0x2A, -0x40, 0xF0, 0xAD, 0x80, 0x88, 0x48, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x03, 0x83, 0xF8, 0xDA, 0x20, 0x34, 0xF8, -0x04, 0x1C, 0x42, 0x20, 0x00, 0x22, 0x07, 0xF0, 0x5B, 0xFB, 0xA4, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, 0xF8, 0x43, 0x07, 0xF0, -0x69, 0xBB, 0x80, 0x48, 0x80, 0x4D, 0x94, 0xF8, 0x02, 0xE0, 0xC3, 0xEB, 0x83, 0x11, 0x00, 0xEB, 0x81, 0x00, 0x01, 0x26, -0xC2, 0xF3, 0xC7, 0x01, 0x02, 0xF0, 0x07, 0x02, 0x06, 0xFA, 0x02, 0xF2, 0x0F, 0x5C, 0x0E, 0x18, 0x5F, 0xFA, 0x82, 0xFC, -0x05, 0xEB, 0xC3, 0x05, 0xBE, 0xF1, 0x00, 0x0F, 0x4D, 0xD0, 0x1C, 0xEA, 0x07, 0x0F, 0xD8, 0xD1, 0xDF, 0xF8, 0xC4, 0xE1, -0x4F, 0xF4, 0xA4, 0x62, 0x4C, 0xEA, 0x07, 0x07, 0x02, 0xFB, 0x03, 0xE2, 0x37, 0x70, 0xB2, 0xF8, 0xD0, 0x70, 0x92, 0xF8, -0xD8, 0xC0, 0x01, 0x37, 0x8C, 0x45, 0xA2, 0xF8, 0xD0, 0x70, 0x6C, 0x4F, 0x0A, 0xD9, 0x03, 0xEB, 0x83, 0x0C, 0x01, 0xF0, -0xFE, 0x08, 0x07, 0xEB, 0xCC, 0x0C, 0x40, 0x44, 0xCC, 0xF8, 0x1C, 0x00, 0x82, 0xF8, 0xD8, 0x80, 0x4F, 0xF4, 0xA4, 0x60, -0x00, 0xFB, 0x03, 0xE0, 0x4F, 0xEA, 0x83, 0x0C, 0x90, 0xF8, 0xD9, 0x80, 0x88, 0x45, 0x07, 0xD2, 0x0C, 0xEB, 0x03, 0x02, -0x07, 0xEB, 0xC2, 0x02, 0x80, 0xF8, 0xD9, 0x10, 0x88, 0x46, 0x16, 0x62, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xEE, -0x0C, 0xEB, 0x03, 0x01, 0x9E, 0xF8, 0xD8, 0x20, 0x2A, 0x71, 0xC2, 0xF1, 0x06, 0x02, 0x28, 0x20, 0x42, 0x44, 0x07, 0xEB, -0xC1, 0x01, 0x00, 0xFB, 0x03, 0x73, 0x92, 0xB2, 0x2E, 0x1D, 0x14, 0x33, 0x90, 0x1E, 0xCE, 0x60, 0x4B, 0x60, 0xAE, 0xF8, -0xCE, 0x20, 0x68, 0x70, 0x8D, 0xE7, 0x1C, 0xEA, 0x07, 0x0F, 0x8A, 0xD0, 0xDF, 0xF8, 0x28, 0xE1, 0x4F, 0xF4, 0xA4, 0x68, -0x08, 0xFB, 0x03, 0xF8, 0x27, 0xEA, 0x02, 0x02, 0x0E, 0xEB, 0x08, 0x0C, 0x32, 0x70, 0xBC, 0xF8, 0xD0, 0x70, 0x01, 0x3F, -0xBF, 0xB2, 0xAC, 0xF8, 0xD0, 0x70, 0x00, 0x2F, 0x4D, 0xD0, 0x9C, 0xF8, 0xD8, 0x70, 0x01, 0xF0, 0xFE, 0x02, 0x97, 0x42, -0x29, 0xD0, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xE2, 0x92, 0xF8, 0xD9, 0x70, 0x8F, 0x42, 0x35, 0xD0, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x03, 0xE3, 0x93, 0xF8, 0xD8, 0x10, 0x29, 0x71, 0xC1, 0xF1, 0x06, 0x01, 0x39, 0x44, 0x89, 0xB2, -0x8A, 0x1E, 0xA3, 0xF8, 0xCE, 0x10, 0x6A, 0x70, 0x59, 0xE7, 0x32, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x13, -0x01, 0x22, 0x83, 0xF8, 0xDA, 0x20, 0x50, 0xE7, 0x3A, 0x5C, 0x07, 0xF1, 0x01, 0x08, 0x00, 0x2A, 0x51, 0xD1, 0x5F, 0xFA, -0x88, 0xF7, 0x8C, 0xF8, 0xD8, 0x70, 0xFB, 0x2F, 0xF4, 0xD1, 0xFA, 0x22, 0x17, 0x46, 0xDF, 0xF8, 0xA8, 0x90, 0x03, 0xEB, -0x83, 0x08, 0x4F, 0xF4, 0xA4, 0x6C, 0x09, 0xEB, 0xC8, 0x08, 0x0C, 0xFB, 0x03, 0xEC, 0x02, 0x44, 0xC8, 0xF8, 0x1C, 0x20, -0x8C, 0xF8, 0xD8, 0x70, 0xC1, 0xE7, 0x41, 0xB3, 0x37, 0x78, 0x01, 0x39, 0xB4, 0x46, 0xC9, 0xB2, 0x01, 0x3E, 0x57, 0xBB, -0x82, 0xF8, 0xD9, 0x10, 0xF5, 0xE7, 0x0E, 0xF1, 0xD8, 0x02, 0x06, 0x21, 0xAC, 0xF8, 0xCE, 0x10, 0xFF, 0x21, 0x28, 0xF8, -0x02, 0x10, 0x19, 0x4A, 0x9C, 0xF8, 0xCE, 0x10, 0x2F, 0x71, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0xC3, 0x03, 0x6E, 0x1D, -0x8A, 0x1E, 0xDE, 0x60, 0x6A, 0x70, 0xE2, 0x78, 0x9C, 0xF8, 0xD9, 0x50, 0x12, 0x49, 0x02, 0xEB, 0x82, 0x02, 0x28, 0x44, -0x01, 0xEB, 0x82, 0x02, 0x18, 0x62, 0x5A, 0x60, 0x09, 0xE7, 0x0F, 0x46, 0x0C, 0x4A, 0x03, 0xEB, 0x83, 0x01, 0x02, 0xEB, -0xC1, 0x02, 0x10, 0x62, 0x97, 0xE7, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xE2, 0x60, 0x46, 0x92, 0xF8, 0xD9, 0x70, -0xF0, 0xE7, 0x07, 0xF0, 0xFE, 0x07, 0x3A, 0x46, 0xB1, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x3C, 0x4C, 0x18, 0x00, -0x2C, 0x50, 0x18, 0x00, 0x9C, 0x4B, 0x18, 0x00, 0x4C, 0x40, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x89, 0x46, 0xD0, 0xF8, -0xB8, 0x50, 0x89, 0x88, 0x99, 0xF8, 0x08, 0xA0, 0x90, 0xF8, 0x63, 0xB0, 0xD5, 0xF8, 0x24, 0x80, 0x2A, 0x4B, 0xB9, 0xF8, -0x06, 0x70, 0xD3, 0xF8, 0x54, 0x31, 0x29, 0x4E, 0xA1, 0xEB, 0x0A, 0x0A, 0x04, 0x46, 0x42, 0x46, 0xA0, 0xF8, 0xCC, 0xA0, -0x58, 0x46, 0x98, 0x47, 0xB9, 0xF8, 0x06, 0x30, 0x6A, 0x6A, 0x21, 0x6C, 0x23, 0x48, 0x03, 0xF1, 0xFF, 0x3C, 0x62, 0x44, -0xAA, 0x62, 0x99, 0xF8, 0x08, 0xC0, 0x06, 0xEB, 0xCB, 0x06, 0xDB, 0x43, 0x0B, 0xEB, 0x8B, 0x0B, 0x0C, 0xF1, 0x01, 0x0C, -0x00, 0xEB, 0x8B, 0x0B, 0x62, 0x44, 0x53, 0x44, 0x13, 0x44, 0x00, 0x20, 0xCB, 0xE9, 0x02, 0x23, 0x03, 0x37, 0xCB, 0xF8, -0x10, 0x00, 0x31, 0xB3, 0x94, 0xF8, 0xC0, 0x34, 0x0A, 0x79, 0x16, 0x49, 0xE3, 0xB1, 0x16, 0x4A, 0x16, 0x48, 0x13, 0x68, -0x12, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0x00, 0x22, 0x4B, 0x62, 0xC5, 0xE9, 0x0D, 0x21, 0xE8, 0x64, -0x94, 0xF8, 0x63, 0x30, 0x10, 0x4A, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0xC3, 0x03, 0x01, 0x22, 0x2B, 0x62, 0x84, 0xF8, -0xD6, 0x20, 0x18, 0xF8, 0x07, 0x30, 0xF3, 0x70, 0xBD, 0xE8, 0xF8, 0x8F, 0x0A, 0x4B, 0x82, 0x42, 0x08, 0xBF, 0x19, 0x46, -0xDD, 0xE7, 0x04, 0x49, 0xDB, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x50, 0x18, 0x00, 0x4C, 0x40, 0x18, 0x00, -0x84, 0x3C, 0x18, 0x00, 0xA0, 0x00, 0x32, 0x40, 0x41, 0x00, 0x00, 0x01, 0x9C, 0x4B, 0x18, 0x00, 0xC4, 0x3C, 0x18, 0x00, -0x2D, 0xE9, 0xF8, 0x43, 0x4D, 0x4D, 0x90, 0xF8, 0x63, 0x30, 0xD0, 0xF8, 0xB8, 0x80, 0x05, 0xEB, 0xC3, 0x05, 0x04, 0x46, -0x2F, 0x79, 0x00, 0xF1, 0x6C, 0x06, 0xFF, 0xF7, 0x7D, 0xFD, 0xB0, 0xF8, 0xCC, 0x30, 0xB0, 0xF8, 0xCE, 0x20, 0x13, 0x44, -0x04, 0x33, 0xC8, 0xF8, 0x2C, 0x30, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x54, 0xD1, 0x42, 0x4A, 0xD8, 0xF8, 0x24, 0x10, -0xB2, 0xF8, 0xFC, 0x31, 0x01, 0x33, 0x9B, 0xB2, 0x18, 0x01, 0xA2, 0xF8, 0xFC, 0x31, 0xC8, 0x82, 0x94, 0xF8, 0xD7, 0x30, -0xAB, 0x70, 0x94, 0xF8, 0xDA, 0x90, 0xCB, 0xBB, 0xB9, 0xF1, 0x00, 0x0F, 0x31, 0xD1, 0x07, 0xF0, 0xFE, 0x07, 0x38, 0x4B, -0x1B, 0x78, 0x0B, 0xB1, 0x47, 0xF0, 0x01, 0x07, 0xEB, 0x78, 0x84, 0xF8, 0xD7, 0x30, 0x2F, 0x71, 0x94, 0xF8, 0xD7, 0x30, -0x94, 0xF8, 0xDB, 0x50, 0x01, 0x3B, 0x84, 0xF8, 0xD7, 0x30, 0xBD, 0xB1, 0x01, 0x3D, 0x94, 0xF8, 0xDC, 0x30, 0xED, 0xB2, -0x84, 0xF8, 0xDB, 0x50, 0x63, 0xB1, 0xD8, 0xF8, 0x24, 0x20, 0xD5, 0x54, 0x94, 0xF8, 0xDD, 0x30, 0x23, 0xB1, 0xD8, 0xF8, -0x24, 0x20, 0x94, 0xF8, 0xDB, 0x10, 0xD1, 0x54, 0x94, 0xF8, 0xDB, 0x50, 0x7D, 0xBB, 0x01, 0x23, 0x84, 0xF8, 0xDB, 0x30, -0x20, 0x46, 0x31, 0x46, 0x06, 0xF0, 0xE0, 0xFC, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x47, 0xF0, 0x01, 0x07, 0x4F, 0xF0, -0x01, 0x09, 0xCA, 0xE7, 0x19, 0xF0, 0x02, 0x09, 0x1A, 0xBF, 0x47, 0xF0, 0x01, 0x07, 0x4F, 0xF0, 0x01, 0x09, 0x07, 0xF0, -0xFE, 0x07, 0xC8, 0xE7, 0x90, 0xF8, 0xC1, 0x04, 0x05, 0xF0, 0x7E, 0xF9, 0x00, 0x28, 0xA4, 0xD0, 0x94, 0xF8, 0x63, 0x10, -0x15, 0x4A, 0xD8, 0xF8, 0x2C, 0x30, 0x01, 0xEB, 0x81, 0x01, 0x02, 0xEB, 0x81, 0x02, 0x19, 0x18, 0x93, 0x68, 0xC8, 0xF8, -0x2C, 0x10, 0x01, 0x3B, 0x18, 0x44, 0xD0, 0x60, 0x93, 0xE7, 0x02, 0x23, 0x00, 0x22, 0x0C, 0x21, 0x4E, 0x20, 0x94, 0xF8, -0x63, 0x70, 0x07, 0xF0, 0xE3, 0xF8, 0x07, 0x70, 0x45, 0x70, 0x07, 0xF0, 0x0F, 0xF9, 0x94, 0xF8, 0xDB, 0x30, 0x00, 0x2B, -0xBF, 0xD0, 0x20, 0x46, 0x31, 0x46, 0x06, 0xF0, 0xA3, 0xFC, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x2C, 0x50, 0x18, 0x00, -0x20, 0x62, 0x17, 0x00, 0x16, 0x2C, 0x17, 0x00, 0xFC, 0x3E, 0x18, 0x00, 0xF8, 0xB5, 0x18, 0x4D, 0x18, 0x4F, 0x2E, 0x68, -0x04, 0x46, 0x36, 0xF8, 0x04, 0x1C, 0x00, 0x22, 0x40, 0x20, 0x07, 0xF0, 0x29, 0xF9, 0xD7, 0xF8, 0x78, 0x31, 0x29, 0x68, -0x20, 0x46, 0x98, 0x47, 0x2A, 0x68, 0x00, 0x23, 0x84, 0xF8, 0xDB, 0x30, 0x93, 0x7A, 0x84, 0xF8, 0xDC, 0x30, 0xD2, 0x7A, -0x84, 0xF8, 0xDD, 0x20, 0x0C, 0x3E, 0xD4, 0xF8, 0xB8, 0x20, 0x23, 0xB1, 0x52, 0x6A, 0xD3, 0x5C, 0x01, 0x33, 0x84, 0xF8, -0xDB, 0x30, 0x2B, 0x7A, 0x00, 0x22, 0x6A, 0x72, 0x13, 0xB1, 0xD7, 0xF8, 0x84, 0x31, 0x98, 0x47, 0x00, 0x23, 0x30, 0x46, -0x2B, 0x60, 0xBD, 0xE8, 0xF8, 0x40, 0x07, 0xF0, 0x17, 0xB9, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x70, 0xB5, 0x0E, 0x4D, 0x44, 0x7A, 0x0E, 0x4A, 0x0E, 0x49, 0x03, 0x46, 0x4F, 0xF4, 0x1A, 0x70, 0x00, 0xFB, 0x04, 0x50, -0x01, 0x25, 0x55, 0x72, 0x00, 0x25, 0x95, 0x72, 0x9A, 0x88, 0x68, 0x30, 0x1B, 0xF0, 0x0C, 0xFC, 0x08, 0x4A, 0x09, 0x4B, -0x4F, 0xF4, 0xA4, 0x60, 0x29, 0x46, 0x00, 0xFB, 0x04, 0x20, 0xD3, 0xF8, 0x94, 0x31, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, -0xFC, 0x41, 0x18, 0x00, 0xD8, 0x9C, 0x17, 0x00, 0x14, 0x2A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x7E, 0x4B, 0x2D, 0xE9, 0xF0, 0x4F, 0x1B, 0x68, 0x7D, 0x4D, 0xB3, 0xF9, 0x00, 0x30, 0x6E, 0x68, 0x00, 0x2B, 0x83, 0xB0, -0x04, 0x46, 0x44, 0xDB, 0x01, 0x3E, 0x6E, 0x60, 0x00, 0x2E, 0x4D, 0xD0, 0xDF, 0xF8, 0xE0, 0x91, 0x77, 0x4D, 0x78, 0x4E, -0x78, 0x4F, 0xDF, 0xF8, 0x00, 0xA2, 0xDF, 0xF8, 0x00, 0x82, 0x03, 0xE0, 0x05, 0xF5, 0x1E, 0x75, 0xB5, 0x42, 0x2F, 0xD0, -0x95, 0xF8, 0x25, 0x20, 0x4F, 0xF4, 0xA4, 0x61, 0x00, 0x2A, 0xF5, 0xD0, 0x95, 0xF8, 0x22, 0x30, 0x01, 0xFB, 0x03, 0x73, -0x9C, 0x42, 0xEF, 0xD1, 0x95, 0xF8, 0x23, 0x30, 0x0D, 0x2B, 0x9B, 0xBF, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x93, -0x00, 0x22, 0xD3, 0xF8, 0x58, 0x22, 0xDA, 0xF8, 0x10, 0x30, 0xA8, 0xEB, 0x03, 0x03, 0xD3, 0x42, 0xDE, 0xD5, 0x20, 0x46, -0xF2, 0xF7, 0x96, 0xFF, 0x00, 0x28, 0xD9, 0xD0, 0x63, 0x49, 0x95, 0xF8, 0x23, 0x00, 0x2A, 0x46, 0xF4, 0xF7, 0xAE, 0xFB, -0x00, 0x28, 0xD1, 0xD1, 0x95, 0xF8, 0x23, 0x10, 0x5F, 0x48, 0x08, 0xF0, 0x89, 0xFE, 0xCB, 0xE7, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x00, 0x2E, 0xB8, 0xD1, 0x5C, 0x49, 0x5C, 0x48, 0x4F, 0xF4, 0x3F, 0x72, 0x09, 0xF0, 0xF7, 0xF8, 0x6E, 0x68, -0x01, 0x3E, 0x6E, 0x60, 0x00, 0x2E, 0xB1, 0xD1, 0xDF, 0xF8, 0x74, 0xB1, 0xFC, 0xF7, 0xCC, 0xFF, 0x94, 0xF8, 0x63, 0x30, -0x9B, 0xF8, 0x00, 0x20, 0x03, 0xF1, 0x0A, 0x08, 0x00, 0x2A, 0x58, 0xD1, 0xDF, 0xF8, 0x2C, 0x91, 0x51, 0x4B, 0x1B, 0x78, -0x53, 0xB3, 0x08, 0xEB, 0x88, 0x02, 0x4F, 0xF4, 0x1E, 0x73, 0xC8, 0xEB, 0x02, 0x12, 0x4E, 0x4F, 0x01, 0x92, 0x03, 0xFB, -0x08, 0x9B, 0x4F, 0xF0, 0x00, 0x0A, 0xDB, 0xF8, 0x08, 0x32, 0x5F, 0xFA, 0x8A, 0xF6, 0x0B, 0xF5, 0x02, 0x78, 0x53, 0xB1, -0x40, 0x46, 0x07, 0xF0, 0xBB, 0xFC, 0xD7, 0xF8, 0x24, 0x34, 0x31, 0x46, 0x98, 0x47, 0xDB, 0xF8, 0x08, 0x32, 0x00, 0x2B, -0xF4, 0xD1, 0xDB, 0xF8, 0x30, 0x22, 0x00, 0x2A, 0x5B, 0xD1, 0x0A, 0xF1, 0x01, 0x0A, 0xBA, 0xF1, 0x04, 0x0F, 0x0B, 0xF1, -0x08, 0x0B, 0xE2, 0xD1, 0x3B, 0x4B, 0x1A, 0x70, 0xAB, 0x7A, 0x03, 0xBB, 0xEB, 0x68, 0x63, 0xB1, 0x39, 0x4F, 0xDF, 0xF8, -0xF8, 0x80, 0xD7, 0xF8, 0xD4, 0x61, 0x40, 0x46, 0x07, 0xF0, 0x9A, 0xFC, 0x0C, 0x30, 0xB0, 0x47, 0xEB, 0x68, 0x00, 0x2B, -0xF5, 0xD1, 0x94, 0xF8, 0x63, 0x00, 0x05, 0x44, 0x29, 0x7D, 0x19, 0xB1, 0x30, 0x4B, 0xD3, 0xF8, 0x90, 0x31, 0x98, 0x47, -0x94, 0xF8, 0xDB, 0x30, 0x01, 0x2B, 0x7F, 0xF4, 0x59, 0xAF, 0x20, 0x46, 0xFB, 0xF7, 0xBE, 0xFA, 0x54, 0xE7, 0x2A, 0x4F, -0x28, 0x68, 0xD7, 0xF8, 0x8C, 0x31, 0x98, 0x47, 0xD8, 0xE7, 0x04, 0x23, 0x32, 0x46, 0x0C, 0x21, 0x4A, 0x20, 0x06, 0xF0, -0xA5, 0xFF, 0x80, 0xF8, 0x00, 0x80, 0x46, 0x70, 0x86, 0x70, 0x06, 0xF0, 0xCF, 0xFF, 0x9B, 0xF8, 0x00, 0x30, 0xDF, 0xF8, -0x60, 0x90, 0x00, 0x2B, 0x96, 0xD0, 0x4F, 0xF4, 0x1E, 0x7A, 0x0A, 0xFB, 0x08, 0x9A, 0x9A, 0xF8, 0x31, 0x30, 0x9B, 0x07, -0x0B, 0xD5, 0x1A, 0x4F, 0x09, 0x22, 0x8A, 0xF8, 0x32, 0x20, 0xD7, 0xF8, 0x20, 0x33, 0x32, 0x46, 0x51, 0x46, 0x20, 0x46, -0x98, 0x47, 0x8A, 0xF8, 0x32, 0x60, 0x00, 0x23, 0x8B, 0xF8, 0x00, 0x30, 0x7E, 0xE7, 0x01, 0x98, 0x46, 0x30, 0x50, 0x44, -0x09, 0xEB, 0xC0, 0x00, 0x07, 0xF0, 0x4C, 0xFC, 0x0E, 0x4B, 0x31, 0x46, 0xD3, 0xF8, 0x24, 0x34, 0x98, 0x47, 0x0D, 0x48, -0x08, 0xF0, 0xDA, 0xFD, 0xFE, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xD8, 0x9C, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x18, 0x7E, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x51, 0xB1, 0x13, 0x00, 0xF8, 0x9F, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, -0xC8, 0x9F, 0x15, 0x00, 0x16, 0x2C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xDC, 0x9F, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, -0xC0, 0xE1, 0xE4, 0x00, 0x10, 0x2A, 0x17, 0x00, 0xE4, 0x9C, 0x17, 0x00, 0x38, 0xB5, 0x0E, 0x4D, 0x0E, 0x4C, 0x18, 0x22, -0x00, 0x21, 0x28, 0x46, 0xE4, 0xF7, 0x42, 0xFB, 0x05, 0xF1, 0x0C, 0x00, 0x07, 0xF0, 0xCE, 0xFB, 0x20, 0x46, 0x04, 0xF0, -0xD9, 0xFF, 0x04, 0xF1, 0x26, 0x00, 0x04, 0xF0, 0xD5, 0xFF, 0x04, 0xF1, 0x4C, 0x00, 0x04, 0xF0, 0xD1, 0xFF, 0x04, 0xF1, -0x72, 0x00, 0xBD, 0xE8, 0x38, 0x40, 0x04, 0xF0, 0xCB, 0xBF, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, 0x64, 0x3E, 0x18, 0x00, -0x2D, 0xE9, 0xF8, 0x43, 0x90, 0xF8, 0x63, 0x30, 0x3F, 0x4D, 0x40, 0x49, 0x40, 0x4F, 0xDF, 0xF8, 0x1C, 0x91, 0x04, 0x46, -0x03, 0xEB, 0x83, 0x02, 0x3E, 0x48, 0x4F, 0xF4, 0x1A, 0x76, 0x03, 0xEB, 0x42, 0x02, 0x06, 0xFB, 0x03, 0x11, 0x05, 0xEB, -0xC2, 0x02, 0x00, 0xEB, 0x83, 0x13, 0x04, 0xF1, 0x6C, 0x00, 0xF4, 0xF7, 0xFD, 0xF8, 0x94, 0xF8, 0x63, 0x30, 0x37, 0x49, -0xDF, 0xF8, 0xF0, 0xC0, 0x36, 0x48, 0x06, 0x22, 0xA4, 0xF8, 0xCE, 0x20, 0x00, 0x25, 0x01, 0xEB, 0xC3, 0x02, 0x4F, 0xF0, -0x05, 0x0E, 0xFF, 0x26, 0xA4, 0xF8, 0xD8, 0x60, 0x84, 0xF8, 0xD7, 0x50, 0xA4, 0xF8, 0xD0, 0x50, 0x84, 0xF8, 0xDA, 0x50, -0x04, 0x26, 0x01, 0xF8, 0x33, 0xE0, 0x56, 0x70, 0x94, 0xF8, 0xD7, 0x10, 0x91, 0x70, 0x01, 0x21, 0x15, 0x71, 0x55, 0x71, -0xD1, 0x70, 0x94, 0xF8, 0xD9, 0x10, 0x03, 0xEB, 0x83, 0x08, 0xC3, 0xEB, 0x83, 0x16, 0x00, 0xEB, 0x86, 0x00, 0x0C, 0xEB, -0xC8, 0x06, 0x01, 0x44, 0x07, 0xEB, 0x88, 0x03, 0x31, 0x62, 0x02, 0xEB, 0x0E, 0x01, 0xC6, 0xE9, 0x03, 0x15, 0x4C, 0xF8, -0x38, 0x90, 0xB2, 0x60, 0x73, 0x60, 0xB3, 0x61, 0x29, 0x46, 0xFC, 0x22, 0xC6, 0xF8, 0x14, 0x90, 0xE4, 0xF7, 0xCE, 0xFA, -0x07, 0xEB, 0x88, 0x03, 0x47, 0xF8, 0x28, 0x90, 0x5D, 0x60, 0x1D, 0x61, 0x94, 0xF8, 0xC0, 0x34, 0x93, 0xB1, 0x94, 0xF8, -0x63, 0x30, 0x15, 0x48, 0x15, 0x49, 0x03, 0xEB, 0xC3, 0x02, 0x03, 0xEB, 0x42, 0x02, 0x03, 0xEB, 0x83, 0x03, 0x01, 0xEB, -0x42, 0x01, 0x00, 0xEB, 0x83, 0x02, 0xC2, 0xE9, 0x01, 0x51, 0x40, 0xF8, 0x23, 0x90, 0x15, 0x61, 0xD4, 0xF8, 0xB8, 0x30, -0x0D, 0x49, 0x00, 0x22, 0x5A, 0x63, 0xDA, 0x64, 0x1A, 0x62, 0xD1, 0xF8, 0x88, 0x31, 0xC4, 0xE9, 0x30, 0x34, 0xBD, 0xE8, -0xF8, 0x83, 0x00, 0xBF, 0x9C, 0x40, 0x18, 0x00, 0xFC, 0x41, 0x18, 0x00, 0x4C, 0x40, 0x18, 0x00, 0x4C, 0x3F, 0x18, 0x00, -0x2C, 0x50, 0x18, 0x00, 0x3C, 0x4C, 0x18, 0x00, 0xFC, 0x3E, 0x18, 0x00, 0x64, 0x3E, 0x18, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xDE, 0xFA, 0xFE, 0xCA, 0x9C, 0x4B, 0x18, 0x00, 0x05, 0x4B, 0x5A, 0x68, 0x18, 0x60, 0x12, 0xB1, 0x01, 0x22, 0x9A, 0x72, -0x70, 0x47, 0x03, 0x4B, 0xD3, 0xF8, 0x8C, 0x31, 0x18, 0x47, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x06, 0x4B, 0x5A, 0x68, 0x1A, 0xB9, 0x06, 0x4B, 0xD3, 0xF8, 0xD4, 0x31, 0x18, 0x47, 0xA0, 0xF1, 0x0C, 0x01, 0x03, 0xF1, -0x0C, 0x00, 0x07, 0xF0, 0x05, 0xBB, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, -0x40, 0x4B, 0x41, 0x4A, 0x1B, 0x68, 0x94, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x3F, 0x4E, 0x00, 0x2B, 0x41, 0xDB, 0x75, 0x7A, -0x00, 0x2D, 0x4A, 0xD1, 0x3D, 0x4A, 0x35, 0x72, 0x17, 0x68, 0x7F, 0x01, 0x6C, 0xB1, 0xDF, 0xF8, 0xF8, 0x90, 0xDF, 0xF8, -0xF8, 0x80, 0xAA, 0x46, 0x4F, 0xF0, 0x01, 0x0B, 0x94, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x04, 0xD0, 0x24, 0x68, 0x00, 0x2C, -0xF8, 0xD1, 0xBD, 0xE8, 0xF8, 0x8F, 0x94, 0xF8, 0xD6, 0x30, 0x00, 0x2B, 0xF6, 0xD0, 0x94, 0xF8, 0x64, 0x30, 0x00, 0x2B, -0xF2, 0xD0, 0x94, 0xF8, 0xD5, 0x20, 0x94, 0xF8, 0xD4, 0x30, 0x9A, 0x42, 0xEC, 0xD1, 0xD9, 0xF8, 0x70, 0x31, 0x20, 0x46, -0x98, 0x47, 0x20, 0xB1, 0x98, 0xF8, 0x00, 0x30, 0x01, 0x33, 0x88, 0xF8, 0x00, 0x30, 0xBB, 0xF1, 0x00, 0x0F, 0x05, 0xD0, -0xA7, 0xF1, 0x32, 0x02, 0x40, 0xF6, 0xB6, 0x33, 0x9A, 0x42, 0x18, 0xD8, 0xD5, 0xB9, 0x20, 0x46, 0x02, 0xF0, 0x7A, 0xFE, -0x83, 0x46, 0xF0, 0xB9, 0x88, 0xF8, 0x00, 0x50, 0xD0, 0xE7, 0x73, 0x68, 0x00, 0x2B, 0xBA, 0xD0, 0x1D, 0x49, 0x1E, 0x48, -0x40, 0xF2, 0x2F, 0x42, 0x08, 0xF0, 0xFE, 0xFE, 0x75, 0x7A, 0x00, 0x2D, 0xB4, 0xD0, 0x01, 0x23, 0x33, 0x72, 0xBD, 0xE8, -0xF8, 0x8F, 0x20, 0x46, 0x02, 0xF0, 0x62, 0xFE, 0x88, 0xF8, 0x00, 0xA0, 0x24, 0x68, 0x4F, 0xF0, 0x00, 0x0B, 0x01, 0x25, -0x00, 0x2C, 0xB1, 0xD1, 0xB7, 0xE7, 0x94, 0xF8, 0x63, 0x30, 0x84, 0xF8, 0x88, 0x30, 0xFF, 0x23, 0x84, 0xF8, 0x89, 0x30, -0x04, 0x21, 0x04, 0xF1, 0x6C, 0x00, 0xF4, 0xF7, 0xDB, 0xF8, 0x73, 0x68, 0x08, 0xB1, 0x01, 0x33, 0x73, 0x60, 0x01, 0x2B, -0x02, 0xD0, 0x4F, 0xF0, 0x00, 0x0B, 0x9F, 0xE7, 0xFC, 0xF7, 0x58, 0xFD, 0x4F, 0xF0, 0x00, 0x0B, 0x9A, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0xD8, 0x9C, 0x17, 0x00, 0x40, 0x80, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, -0x20, 0xA0, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x10, 0x2A, 0x17, 0x00, 0xF8, 0xB5, 0x27, 0x4F, 0x7B, 0x68, 0x04, 0x46, -0x0E, 0x46, 0x13, 0xB1, 0x3C, 0x44, 0x21, 0x75, 0xF8, 0xBD, 0x02, 0x29, 0x34, 0xD0, 0x03, 0x29, 0x21, 0xD0, 0x01, 0x29, -0x14, 0xD0, 0x21, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x32, 0xDB, 0x1F, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x04, 0x53, 0x3C, 0x44, 0x00, 0x22, 0x22, 0x75, 0x93, 0xF8, 0xC1, 0x04, 0x31, 0x46, 0xBD, 0xE8, 0xF8, 0x40, -0x04, 0xF0, 0xC6, 0xBE, 0x18, 0x4B, 0x19, 0x4A, 0x16, 0x4D, 0x00, 0xEB, 0x80, 0x01, 0x03, 0xEB, 0x81, 0x03, 0x02, 0xEB, -0x81, 0x02, 0x5A, 0x60, 0xE6, 0xE7, 0x12, 0x4D, 0x14, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x52, 0x00, 0xEB, -0xC0, 0x03, 0x00, 0xEB, 0x43, 0x03, 0x01, 0xEB, 0x43, 0x01, 0x92, 0xF8, 0xC1, 0x04, 0x04, 0xF0, 0x47, 0xFE, 0xD5, 0xE7, -0x0A, 0x4A, 0x09, 0x4D, 0x00, 0xEB, 0x80, 0x01, 0x02, 0xEB, 0x81, 0x02, 0x53, 0x60, 0xCD, 0xE7, 0x09, 0x49, 0x0A, 0x48, -0x04, 0x4D, 0x40, 0xF2, 0xC6, 0x42, 0x08, 0xF0, 0x71, 0xFE, 0xC5, 0xE7, 0xD8, 0x9C, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x4C, 0x40, 0x18, 0x00, 0xFC, 0x3E, 0x18, 0x00, 0x64, 0x3E, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x04, 0x23, 0x00, 0x22, 0x0C, 0x21, 0x44, 0x20, 0x06, 0xF0, 0x76, 0xFD, -0x23, 0x7E, 0x03, 0x70, 0x04, 0x2B, 0x09, 0xD0, 0x00, 0x23, 0x00, 0x22, 0x43, 0x70, 0xC2, 0x70, 0xA3, 0x7E, 0x83, 0x70, -0xBD, 0xE8, 0x10, 0x40, 0x06, 0xF0, 0x98, 0xBD, 0xE3, 0x89, 0x00, 0x3B, 0x18, 0xBF, 0x01, 0x23, 0xF1, 0xE7, 0x00, 0xBF, -0x38, 0xB5, 0x05, 0xF0, 0xE1, 0xFA, 0x0C, 0x23, 0x05, 0x46, 0x19, 0x46, 0x00, 0x22, 0x4F, 0x20, 0x06, 0xF0, 0x58, 0xFD, -0x2B, 0x88, 0x03, 0x80, 0x04, 0x46, 0x28, 0x46, 0x05, 0xF0, 0xDE, 0xFA, 0x10, 0x4A, 0x11, 0x4D, 0x11, 0x49, 0xA2, 0xFB, -0x00, 0x03, 0x9B, 0x09, 0x63, 0x60, 0x2B, 0x68, 0xA2, 0xFB, 0x03, 0x23, 0x9B, 0x09, 0x00, 0x22, 0xA3, 0x60, 0xA2, 0x70, -0x0A, 0x23, 0x0A, 0x68, 0x52, 0xB2, 0x01, 0x3B, 0x3A, 0xB9, 0x13, 0xF0, 0xFF, 0x03, 0xF8, 0xD1, 0x20, 0x46, 0xBD, 0xE8, -0x38, 0x40, 0x06, 0xF0, 0x67, 0xBD, 0xA2, 0x70, 0x20, 0x46, 0xBD, 0xE8, 0x38, 0x40, 0x06, 0xF0, 0x61, 0xBD, 0x00, 0xBF, -0xD3, 0x4D, 0x62, 0x10, 0x20, 0x02, 0x32, 0x40, 0x0C, 0xB2, 0x33, 0x40, 0x10, 0xB5, 0xC1, 0x89, 0x04, 0x46, 0x02, 0x23, -0x00, 0x22, 0x48, 0x20, 0x06, 0xF0, 0x22, 0xFD, 0x22, 0x7E, 0x42, 0x70, 0xA1, 0x7E, 0x05, 0x4A, 0x01, 0x70, 0x13, 0x68, -0x23, 0xF0, 0x04, 0x03, 0xBD, 0xE8, 0x10, 0x40, 0x13, 0x60, 0x06, 0xF0, 0x45, 0xBD, 0x00, 0xBF, 0x94, 0x40, 0x04, 0x40, -0xF0, 0xB5, 0x04, 0x68, 0x0E, 0x68, 0xA5, 0x1B, 0x32, 0xD4, 0x8E, 0x46, 0xAB, 0x42, 0x0C, 0xD2, 0xDE, 0xE9, 0x00, 0x76, -0xDC, 0x19, 0xF6, 0x1B, 0xED, 0x1A, 0xAB, 0x42, 0x06, 0xEB, 0x04, 0x07, 0xA4, 0x46, 0x1C, 0x44, 0xF8, 0xD3, 0xCE, 0xE9, -0x00, 0xC7, 0xB5, 0xEB, 0x53, 0x0F, 0x05, 0xD9, 0xDE, 0xE9, 0x00, 0x54, 0x1D, 0x44, 0x23, 0x44, 0xCE, 0xE9, 0x00, 0x53, -0x43, 0x68, 0x4C, 0x68, 0x1D, 0x1B, 0x00, 0x2D, 0x09, 0xDB, 0xB2, 0xB1, 0x05, 0x68, 0x09, 0x68, 0x53, 0x60, 0x68, 0x1A, -0x00, 0x28, 0x17, 0xDA, 0x58, 0x1B, 0x15, 0x60, 0xF0, 0xBD, 0xAA, 0xB1, 0x05, 0x68, 0x09, 0x68, 0x54, 0x60, 0x6B, 0x1A, -0x00, 0x2B, 0xA8, 0xBF, 0x60, 0x1A, 0x18, 0xDB, 0x11, 0x60, 0xF0, 0xBD, 0x35, 0x1B, 0x86, 0x46, 0xCA, 0xE7, 0x00, 0x68, -0x0A, 0x68, 0x81, 0x1A, 0x00, 0x29, 0x0C, 0xDA, 0x18, 0x1A, 0xF0, 0xBD, 0x58, 0x1A, 0xF1, 0xE7, 0x00, 0x68, 0x0B, 0x68, -0xC1, 0x1A, 0x00, 0x29, 0xA8, 0xBF, 0xE0, 0x1A, 0xE0, 0xDA, 0x20, 0x1A, 0xF0, 0xBD, 0x98, 0x1A, 0xF0, 0xBD, 0x60, 0x1B, -0xD9, 0xE7, 0x00, 0xBF, 0x70, 0xB5, 0x19, 0x4E, 0x90, 0xF8, 0xC1, 0x44, 0x8C, 0x23, 0x03, 0xFB, 0x04, 0x63, 0x05, 0x46, -0x93, 0xF8, 0x20, 0x20, 0x0A, 0xB9, 0x1B, 0x7C, 0xFB, 0xB9, 0x8C, 0x23, 0x03, 0xFB, 0x04, 0x64, 0x94, 0xF8, 0x50, 0x20, -0x12, 0xB9, 0x94, 0xF8, 0x40, 0x30, 0x7B, 0xB9, 0x0F, 0x4B, 0x9B, 0x68, 0x5B, 0xB1, 0x95, 0xF8, 0x63, 0x10, 0xFF, 0x20, -0x93, 0xF8, 0x4E, 0x20, 0x8A, 0x42, 0x08, 0xBF, 0x83, 0xF8, 0x4E, 0x00, 0x1B, 0x68, 0x00, 0x2B, 0xF6, 0xD1, 0x70, 0xBD, -0x08, 0x4B, 0x01, 0x21, 0xD3, 0xF8, 0x08, 0x32, 0x28, 0x46, 0x98, 0x47, 0xE8, 0xE7, 0x05, 0x4B, 0x11, 0x46, 0xD3, 0xF8, -0x08, 0x32, 0x98, 0x47, 0xD9, 0xE7, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0x48, 0x4B, 0x93, 0xF8, 0x5A, 0x30, 0x9B, 0xB0, 0x01, 0x2B, 0x08, 0x90, 0x40, 0xF2, 0x93, 0x81, -0xDF, 0xF8, 0x20, 0x91, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xB7, 0x81, 0x08, 0x9C, -0x40, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x94, 0x30, 0x98, 0x47, 0x23, 0x6C, 0x94, 0xF8, 0x63, 0x20, 0xDA, 0x76, 0x94, 0xF8, -0x62, 0x20, 0x00, 0x2A, 0x00, 0xF0, 0xB9, 0x81, 0x02, 0x2A, 0x08, 0xBF, 0x08, 0x9A, 0x39, 0x48, 0x0A, 0xBF, 0xB2, 0xF8, -0xD2, 0x20, 0x4F, 0xF4, 0xC8, 0x32, 0x92, 0x02, 0x0A, 0x92, 0x1A, 0x7E, 0x02, 0x2A, 0x02, 0xF1, 0x01, 0x03, 0x00, 0xF0, -0xB9, 0x81, 0xC3, 0xEB, 0xC3, 0x04, 0x00, 0xEB, 0x84, 0x04, 0xD9, 0x00, 0x24, 0x7E, 0xFF, 0x2C, 0x0D, 0xD1, 0x01, 0x2A, -0x02, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, 0xC3, 0xEB, 0xC3, 0x02, 0x00, 0xEB, 0x82, 0x02, 0xD9, 0x00, 0x12, 0x7E, -0xFF, 0x2A, 0x00, 0xF0, 0x98, 0x82, 0x28, 0x4A, 0xCB, 0x1A, 0x00, 0xEB, 0x83, 0x03, 0x96, 0x68, 0x5B, 0x7E, 0x06, 0x93, -0x00, 0x2E, 0x00, 0xF0, 0x4A, 0x81, 0x0A, 0x9B, 0x4F, 0xF0, 0x00, 0x0B, 0x5B, 0x00, 0x0B, 0x93, 0x5F, 0x46, 0x03, 0xE0, -0x36, 0x68, 0x00, 0x2E, 0x00, 0xF0, 0x9A, 0x80, 0x33, 0x6C, 0x00, 0x2B, 0xF8, 0xD0, 0x08, 0x9A, 0x12, 0x6C, 0x93, 0x42, -0xF4, 0xD0, 0x96, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0x93, 0x81, 0x02, 0x2B, 0x0A, 0xBF, 0xB6, 0xF8, 0xD2, 0x30, -0x4F, 0xF4, 0xC8, 0x3B, 0x4F, 0xEA, 0x83, 0x2B, 0x0B, 0x9B, 0x5B, 0x45, 0x04, 0xD8, 0x0A, 0x9B, 0xBB, 0xFB, 0xF3, 0xF2, -0xBB, 0xFB, 0xF2, 0xFB, 0x06, 0x9B, 0x4F, 0xEA, 0x5B, 0x00, 0xB0, 0xFB, 0xF3, 0xF5, 0x09, 0x95, 0xE5, 0xF7, 0x7C, 0xF8, -0x43, 0xF2, 0xB0, 0x64, 0x20, 0x44, 0xA8, 0x42, 0x00, 0xF2, 0x18, 0x81, 0x00, 0x2F, 0x00, 0xF0, 0x1C, 0x81, 0x06, 0x9B, -0x09, 0x9A, 0x03, 0xFB, 0x02, 0xF3, 0x07, 0x93, 0x10, 0xAC, 0x00, 0x25, 0x10, 0xE0, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x01, 0x35, 0xAF, 0x42, -0x04, 0xF1, 0x14, 0x04, 0x00, 0xF0, 0x03, 0x81, 0x22, 0x68, 0x5A, 0x45, 0xF6, 0xD1, 0x72, 0x6A, 0x0C, 0x92, 0xD4, 0xE9, -0x02, 0x01, 0x0D, 0xF1, 0x38, 0x0C, 0x0D, 0xF1, 0x30, 0x0A, 0x02, 0xF5, 0x1C, 0x5E, 0x8C, 0xE8, 0x03, 0x00, 0x0E, 0xF1, -0x10, 0x0E, 0x52, 0x46, 0x61, 0x46, 0x50, 0x46, 0x5B, 0x46, 0xCD, 0xF8, 0x34, 0xE0, 0xFF, 0xF7, 0xB7, 0xFE, 0xD9, 0xF8, -0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x80, 0x46, 0xC0, 0xF2, 0x2D, 0x81, 0x06, 0x9B, 0x5A, 0x1E, 0x07, 0x9B, -0xB3, 0xFB, 0xF2, 0xF2, 0x05, 0x92, 0xE5, 0xF7, 0x31, 0xF8, 0x05, 0x9A, 0x61, 0x68, 0xA2, 0xF5, 0x7A, 0x62, 0x12, 0x1A, -0x8A, 0x42, 0x38, 0xBF, 0x0A, 0x46, 0x42, 0x45, 0xC6, 0xD9, 0x05, 0x92, 0x05, 0xEB, 0x85, 0x05, 0xE5, 0xF7, 0x22, 0xF8, -0x1A, 0xAB, 0x03, 0xEB, 0x85, 0x05, 0x96, 0xF8, 0x63, 0x10, 0x05, 0x9A, 0x55, 0xF8, 0x18, 0x3C, 0x36, 0x68, 0x01, 0x24, -0x8C, 0x40, 0x02, 0x44, 0x9A, 0xE8, 0x03, 0x00, 0x23, 0x43, 0x02, 0xF5, 0x7A, 0x62, 0xA5, 0xF1, 0x20, 0x04, 0x84, 0xE8, -0x03, 0x00, 0x45, 0xF8, 0x24, 0x2C, 0x45, 0xF8, 0x18, 0x3C, 0x00, 0x2E, 0x7F, 0xF4, 0x66, 0xAF, 0x00, 0x2F, 0x00, 0xF0, -0xA2, 0x80, 0xDF, 0xF8, 0x88, 0xA3, 0xDD, 0xF8, 0x20, 0xB0, 0x05, 0x96, 0x09, 0x96, 0x0B, 0x96, 0x07, 0x96, 0x12, 0xAC, -0x06, 0x97, 0x54, 0xF8, 0x08, 0x7C, 0x0A, 0x9B, 0xB7, 0xFB, 0xF3, 0xF2, 0x03, 0xFB, 0x12, 0x72, 0x00, 0x2A, 0x00, 0xF0, -0x3A, 0x81, 0xE4, 0xF7, 0xED, 0xFF, 0x54, 0xE9, 0x01, 0x63, 0xA3, 0xF5, 0xBB, 0x53, 0x10, 0x3B, 0x1D, 0x1A, 0xE4, 0xF7, -0xE5, 0xFF, 0xDA, 0xF8, 0x10, 0x30, 0x54, 0xF8, 0x08, 0x1C, 0xEB, 0x1A, 0x06, 0xF5, 0x7A, 0x66, 0x00, 0x2B, 0x06, 0xEB, -0x00, 0x07, 0xC0, 0xF2, 0xEA, 0x80, 0xDA, 0xF8, 0x10, 0x20, 0x6B, 0x1A, 0x9A, 0x1A, 0x00, 0x2A, 0x80, 0xF2, 0xDB, 0x80, -0xCD, 0xE9, 0x01, 0x75, 0xBE, 0x4B, 0x00, 0x91, 0xD3, 0xF8, 0x04, 0x32, 0xDF, 0xF8, 0x1C, 0x83, 0x1E, 0x46, 0x00, 0x22, -0xFF, 0x23, 0x01, 0x21, 0x58, 0x46, 0xB0, 0x47, 0xEB, 0x19, 0xB9, 0x4E, 0x25, 0x60, 0x63, 0x60, 0x07, 0x46, 0x00, 0x25, -0xA3, 0x68, 0xEB, 0x40, 0xDB, 0x07, 0x22, 0xD5, 0x72, 0x6A, 0x54, 0xF8, 0x08, 0x3C, 0x0E, 0x92, 0x02, 0xF5, 0x1C, 0x5C, -0x0C, 0xF1, 0x10, 0x0C, 0x00, 0x22, 0x0E, 0xA9, 0x20, 0x46, 0xCD, 0xF8, 0x3C, 0xC0, 0xFF, 0xF7, 0x21, 0xFE, 0xD9, 0xF8, -0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xC3, 0x80, 0x0E, 0x9A, 0x63, 0x68, 0x9B, 0xF8, 0x63, 0x10, -0x86, 0xF8, 0x4E, 0x10, 0x9B, 0x1A, 0x00, 0x22, 0x73, 0x65, 0x86, 0xF8, 0x4F, 0x70, 0xA6, 0xF8, 0x58, 0x20, 0x01, 0x35, -0x04, 0x2D, 0x06, 0xF5, 0xA4, 0x66, 0xD3, 0xD1, 0x05, 0x9B, 0x06, 0x9A, 0x01, 0x33, 0x9A, 0x42, 0x05, 0x93, 0x04, 0xF1, -0x14, 0x04, 0x90, 0xD1, 0x07, 0x9B, 0x33, 0xB3, 0x0B, 0x9B, 0x0A, 0x99, 0x03, 0xF5, 0x9C, 0x50, 0x09, 0x9B, 0x08, 0x30, -0x83, 0x42, 0xA8, 0xBF, 0x03, 0x46, 0x18, 0x46, 0x01, 0xEB, 0xD1, 0x73, 0xB0, 0xEB, 0x63, 0x0F, 0x4F, 0xEA, 0x63, 0x02, -0x00, 0xF3, 0x18, 0x81, 0x52, 0x42, 0x82, 0x42, 0xC4, 0xBF, 0x0A, 0x9B, 0xC0, 0x18, 0x8F, 0x4B, 0xD3, 0xF8, 0x6C, 0x31, -0x98, 0x47, 0x08, 0x9C, 0x8E, 0x4A, 0x94, 0xF8, 0x4D, 0x30, 0x20, 0x65, 0x43, 0xF0, 0x20, 0x03, 0x01, 0x21, 0x84, 0xF8, -0x4D, 0x30, 0x82, 0xF8, 0x31, 0x10, 0x1B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xE4, 0xF7, 0x5C, 0xFF, 0x03, 0x19, 0x09, 0x93, -0x00, 0x2F, 0x7F, 0xF4, 0xE4, 0xAE, 0xD9, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x7B, 0xDB, 0x1A, 0xAB, -0x07, 0xEB, 0x87, 0x02, 0x70, 0x6A, 0x03, 0xEB, 0x82, 0x02, 0x09, 0x9B, 0x42, 0xF8, 0x28, 0xBC, 0x00, 0xF5, 0x1C, 0x51, -0x42, 0xE9, 0x09, 0x30, 0x10, 0x31, 0x42, 0xF8, 0x1C, 0x1C, 0xBC, 0x00, 0x96, 0xF8, 0x63, 0x20, 0x3C, 0x44, 0x1A, 0xAB, -0x03, 0xEB, 0x84, 0x04, 0x01, 0x23, 0x93, 0x40, 0x01, 0x37, 0x44, 0xF8, 0x18, 0x3C, 0x8F, 0xE6, 0x03, 0x6C, 0xDB, 0x7E, -0xFF, 0x2B, 0x3F, 0xF4, 0x44, 0xAE, 0x90, 0xF8, 0x63, 0x20, 0x9A, 0x42, 0x3F, 0xF4, 0x3F, 0xAE, 0x6E, 0x49, 0x6F, 0x48, -0x40, 0xF2, 0xA7, 0x22, 0x08, 0xF0, 0x8E, 0xFB, 0x37, 0xE6, 0x08, 0x9A, 0x6C, 0x49, 0x92, 0xF8, 0x6C, 0x20, 0x4F, 0xF4, -0x1E, 0x70, 0x00, 0xFB, 0x02, 0x12, 0x6A, 0x48, 0x92, 0x68, 0x0A, 0x92, 0x1A, 0x7E, 0x02, 0x2A, 0x02, 0xF1, 0x01, 0x03, -0x7F, 0xF4, 0x47, 0xAE, 0x03, 0x7E, 0xFF, 0x2B, 0x40, 0xF0, 0xEE, 0x80, 0x01, 0x23, 0x4D, 0xE6, 0x06, 0x9B, 0x01, 0x2B, -0x3F, 0xF6, 0xCF, 0xAE, 0x5D, 0x49, 0x61, 0x48, 0x40, 0xF2, 0xD3, 0x22, 0x08, 0xF0, 0x6C, 0xFB, 0xC7, 0xE6, 0x5C, 0x4A, -0x96, 0xF8, 0x6C, 0x30, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0xD3, 0xF8, 0x08, 0xB0, 0x6A, 0xE6, 0xDA, 0xF8, -0x10, 0x20, 0x1D, 0x46, 0x5B, 0x1A, 0x9A, 0x1A, 0x00, 0x2A, 0xF8, 0xDA, 0x1C, 0xE7, 0xDA, 0xF8, 0x10, 0x30, 0x0D, 0x44, -0xEB, 0x1A, 0x00, 0x2B, 0xBF, 0xF6, 0x16, 0xAF, 0xDA, 0xF8, 0x10, 0x30, 0x0D, 0x44, 0xEB, 0x1A, 0x00, 0x2B, 0xF2, 0xDB, -0x0E, 0xE7, 0x96, 0xF8, 0x4E, 0x30, 0xFF, 0x2B, 0x3F, 0xF4, 0x38, 0xAF, 0x47, 0x49, 0x4F, 0xF4, 0x58, 0x72, 0x40, 0x46, -0x08, 0xF0, 0x40, 0xFB, 0x30, 0xE7, 0x02, 0x2F, 0x00, 0xF0, 0x98, 0x80, 0x1A, 0xAB, 0x07, 0xEB, 0x87, 0x02, 0x70, 0x6A, -0x03, 0xEB, 0x82, 0x02, 0x09, 0x9B, 0x42, 0xF8, 0x28, 0xBC, 0x00, 0xF5, 0x1C, 0x51, 0x42, 0xE9, 0x09, 0x30, 0x10, 0x31, -0x42, 0xF8, 0x1C, 0x1C, 0xBC, 0x00, 0x96, 0xF8, 0x63, 0x20, 0x1F, 0x2A, 0x7F, 0xF6, 0x7E, 0xAF, 0x37, 0x49, 0x3C, 0x48, -0x40, 0xF2, 0xED, 0x22, 0x08, 0xF0, 0x20, 0xFB, 0x74, 0xE7, 0x3A, 0x4B, 0xDA, 0xF8, 0x10, 0x00, 0x19, 0x68, 0x0A, 0x9B, -0x00, 0xEB, 0x41, 0x10, 0x9F, 0x42, 0x28, 0xBF, 0x1F, 0x46, 0x00, 0xF5, 0x1C, 0x55, 0x10, 0x35, 0x3B, 0x46, 0x0E, 0xA9, -0x0E, 0x90, 0x20, 0x46, 0x0F, 0x95, 0xFF, 0xF7, 0x17, 0xFD, 0x0E, 0x9E, 0x23, 0x68, 0x54, 0xF8, 0x04, 0x5C, 0x9A, 0x1B, -0x00, 0x2A, 0x1D, 0x44, 0x62, 0x68, 0xA5, 0xF5, 0xFA, 0x65, 0xB4, 0xBF, 0xB6, 0x1A, 0x3E, 0x1A, 0xAD, 0x1A, 0xE4, 0xF7, -0x91, 0xFE, 0x00, 0xF5, 0x7A, 0x60, 0xA8, 0x42, 0x34, 0xDC, 0x54, 0xE9, 0x02, 0x78, 0xE4, 0xF7, 0x89, 0xFE, 0xA7, 0xF5, -0x5A, 0x53, 0x30, 0x3B, 0xA3, 0xEB, 0x08, 0x03, 0x07, 0x9A, 0xAD, 0x1B, 0x1B, 0x1A, 0x2B, 0x44, 0xDA, 0xB1, 0x09, 0x9A, -0xAA, 0x42, 0x1F, 0xDB, 0x0B, 0x9A, 0x9A, 0x42, 0x0A, 0xDD, 0x0A, 0x9A, 0x13, 0x44, 0x15, 0x44, 0x09, 0x9A, 0xAA, 0x42, -0xFF, 0xF6, 0x83, 0xAE, 0x0B, 0x9A, 0x9A, 0x42, 0x3F, 0xF7, 0x7F, 0xAE, 0x0B, 0x9A, 0xAA, 0x42, 0xB8, 0xBF, 0x2A, 0x46, -0x0B, 0x92, 0x09, 0x9A, 0x9A, 0x42, 0xA8, 0xBF, 0x1A, 0x46, 0x09, 0x92, 0x73, 0xE6, 0x09, 0x93, 0x01, 0x23, 0x0B, 0x95, -0x07, 0x93, 0x6E, 0xE6, 0x40, 0x1A, 0xEA, 0xE6, 0x0A, 0x9A, 0xAD, 0x1A, 0x9B, 0x1A, 0xE1, 0xE7, 0xE4, 0xF7, 0x56, 0xFE, -0x00, 0xF5, 0x7A, 0x65, 0xC5, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x48, 0xA0, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0xD0, 0xA0, 0x15, 0x00, -0x00, 0xA1, 0x15, 0x00, 0x40, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x10, 0xA1, 0x15, 0x00, 0x40, 0xF2, 0xE7, 0x22, -0x14, 0x49, 0x15, 0x48, 0x08, 0xF0, 0x9E, 0xFA, 0xD9, 0xF8, 0x00, 0x20, 0x09, 0x9B, 0xB2, 0xF9, 0x00, 0x20, 0xCD, 0xF8, -0x68, 0xB0, 0x1B, 0x93, 0x73, 0x6A, 0x1C, 0x93, 0x03, 0xF5, 0x1C, 0x53, 0x10, 0x33, 0x00, 0x2A, 0x1D, 0x93, 0x4F, 0xF0, -0x08, 0x04, 0xFF, 0xF6, 0x60, 0xAF, 0xDF, 0xE6, 0x00, 0x23, 0x19, 0x46, 0x67, 0xE5, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x05, 0xDA, 0x04, 0x49, 0x05, 0x48, 0x40, 0xF2, 0xAE, 0x22, 0x08, 0xF0, 0x7B, 0xFA, 0x00, 0x23, -0x5B, 0x7E, 0xFF, 0xDE, 0x70, 0x79, 0x15, 0x00, 0xE4, 0xA0, 0x15, 0x00, 0xC4, 0xA0, 0x15, 0x00, 0x0A, 0x4B, 0x03, 0xF1, -0x54, 0x01, 0x1A, 0x7E, 0xFF, 0x2A, 0x02, 0xD0, 0xDA, 0x7E, 0xFF, 0x2A, 0x04, 0xD1, 0x1C, 0x33, 0x8B, 0x42, 0xF6, 0xD1, -0x00, 0x20, 0x70, 0x47, 0x04, 0x4B, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x02, 0x32, 0x02, 0x60, 0x01, 0x20, 0x70, 0x47, -0x90, 0x9D, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x0E, 0x46, 0x85, 0xB0, 0x14, 0x46, 0x05, 0x46, -0x00, 0x28, 0x54, 0xD0, 0x07, 0x46, 0x00, 0x2C, 0x3A, 0xD0, 0xA3, 0x7A, 0xFF, 0x2B, 0x37, 0xD0, 0x3D, 0x4A, 0x23, 0x7A, -0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0x5E, 0xD0, 0x02, 0x2A, 0x52, 0xD0, -0x4F, 0xF4, 0x48, 0x4A, 0x4F, 0xF4, 0xC8, 0x39, 0x60, 0x68, 0xDF, 0xF8, 0xE0, 0x80, 0x00, 0xF5, 0x1C, 0x5B, 0xE4, 0xF7, -0xC9, 0xFD, 0x0B, 0xF1, 0x10, 0x0B, 0x03, 0x46, 0xE1, 0x7A, 0xD8, 0xF8, 0xFC, 0x21, 0x28, 0x46, 0x9B, 0x44, 0x90, 0x47, -0x83, 0x1B, 0x13, 0xEB, 0x0A, 0x0F, 0x05, 0xD5, 0xAA, 0xEB, 0x06, 0x03, 0x48, 0x44, 0xC3, 0x42, 0xFC, 0xD4, 0x83, 0x1B, -0x00, 0x2B, 0x0B, 0xF5, 0x0C, 0x53, 0xB8, 0xBF, 0x00, 0xF1, 0xFF, 0x36, 0x28, 0x33, 0x9B, 0x1B, 0x00, 0x2B, 0x31, 0xDB, -0x0B, 0xF5, 0x7A, 0x60, 0x80, 0x1B, 0x06, 0xE0, 0xE4, 0xF7, 0xA6, 0xFD, 0xDF, 0xF8, 0x8C, 0x80, 0x00, 0xF5, 0x5A, 0x50, -0x30, 0x30, 0x00, 0x22, 0x01, 0x23, 0xCD, 0xE9, 0x01, 0x06, 0xD8, 0xF8, 0x04, 0x42, 0x00, 0x92, 0x38, 0x46, 0x19, 0x46, -0xA0, 0x47, 0xFF, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x17, 0x4B, 0x03, 0xF1, 0x54, 0x01, -0x1A, 0x7E, 0xFF, 0x2A, 0x02, 0xD0, 0xDF, 0x7E, 0xFF, 0x2F, 0x1C, 0xD1, 0x1C, 0x33, 0x99, 0x42, 0xF6, 0xD1, 0x00, 0x20, -0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB3, 0xF8, 0xD2, 0x30, 0x4F, 0xEA, 0x83, 0x29, 0x4F, 0xEA, 0x43, 0x2A, 0xA9, 0xE7, -0x41, 0xF2, 0x88, 0x30, 0xD5, 0xE7, 0x93, 0xF8, 0x6C, 0x30, 0x0A, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, -0xD3, 0xF8, 0x08, 0x90, 0x4F, 0xEA, 0x59, 0x0A, 0x9A, 0xE7, 0x03, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x37, -0x7F, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x70, 0xB5, 0x0C, 0x46, 0x02, 0x7A, 0x17, 0x49, 0x23, 0x7A, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x02, 0x12, 0x05, 0xFB, -0x03, 0x13, 0x12, 0x6C, 0x1B, 0x6C, 0x9A, 0x42, 0x0D, 0xD0, 0x45, 0x68, 0xE4, 0xF7, 0x4A, 0xFD, 0x64, 0x68, 0x06, 0x46, -0xE4, 0xF7, 0x46, 0xFD, 0x2A, 0x1B, 0x06, 0xD4, 0x63, 0x1B, 0x00, 0x2B, 0x0C, 0xDB, 0xA5, 0x42, 0x08, 0xD0, 0x00, 0x20, -0x70, 0xBD, 0xA4, 0xF5, 0x5A, 0x53, 0x30, 0x3B, 0x5B, 0x1B, 0x9E, 0x1B, 0x00, 0x2E, 0xF1, 0xDA, 0x01, 0x20, 0x70, 0xBD, -0xA2, 0xF5, 0x5A, 0x53, 0x30, 0x3B, 0x1B, 0x1A, 0x00, 0x2B, 0xF7, 0xDB, 0xA5, 0x42, 0xEC, 0xD1, 0xF4, 0xE7, 0x00, 0xBF, -0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x07, 0x46, 0x83, 0xB0, 0x0D, 0x46, 0x00, 0xF1, 0x44, 0x08, 0x91, 0x46, -0x22, 0xB9, 0x90, 0xF8, 0x4D, 0x30, 0xDB, 0x07, 0x00, 0xF1, 0xA3, 0x80, 0xDF, 0xF8, 0x64, 0xA1, 0xD7, 0xF8, 0x40, 0xB0, -0xDA, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x79, 0xD1, 0xDA, 0xF8, 0x50, 0x30, 0x0B, 0xB1, 0x9B, 0x45, 0x2E, 0xD1, 0xBD, 0x64, -0xE4, 0xF7, 0x0A, 0xFD, 0x05, 0xF5, 0x5A, 0x53, 0xDA, 0xF8, 0x10, 0x40, 0x2F, 0x33, 0x1E, 0x18, 0x00, 0x2C, 0x00, 0xF0, -0x88, 0x80, 0xDF, 0xF8, 0x38, 0xA1, 0x0B, 0xE0, 0xDA, 0xF8, 0xA0, 0x30, 0x98, 0x47, 0xD3, 0x46, 0x40, 0xBB, 0x63, 0x68, -0xEB, 0x1A, 0x00, 0x2B, 0x08, 0xDB, 0x24, 0x68, 0x00, 0x2C, 0x78, 0xD0, 0x63, 0x68, 0xF3, 0x1A, 0x00, 0x2B, 0x21, 0x46, -0x40, 0x46, 0xED, 0xDA, 0x3F, 0x48, 0x42, 0x46, 0x21, 0x46, 0x06, 0xF0, 0xD9, 0xFD, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, -0x01, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDA, 0xF8, 0x54, 0x60, 0xE4, 0xF7, 0xDA, 0xFC, -0xAE, 0x1B, 0xA6, 0xF5, 0x7A, 0x66, 0x30, 0x1A, 0xC4, 0x0F, 0x00, 0x2C, 0xC5, 0xD0, 0xDF, 0xF8, 0xDC, 0xB0, 0x00, 0x24, -0x97, 0xF8, 0xC0, 0x34, 0x4B, 0xB1, 0x31, 0x4A, 0x97, 0xF8, 0xC1, 0x34, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, -0x70, 0x30, 0x01, 0x2B, 0x1D, 0xD0, 0x97, 0xF8, 0x62, 0x30, 0xDB, 0xF8, 0x2C, 0x40, 0x7B, 0xB1, 0x02, 0x2B, 0x0A, 0xBF, -0xB7, 0xF8, 0xD2, 0x10, 0x4F, 0xF4, 0xC8, 0x31, 0x89, 0x02, 0x09, 0xF1, 0x01, 0x02, 0x29, 0x44, 0x38, 0x46, 0x23, 0x46, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x22, 0x4A, 0x97, 0xF8, 0x6C, 0x30, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, -0x03, 0x23, 0x99, 0x68, 0xED, 0xE7, 0xDB, 0xF8, 0x90, 0x30, 0x22, 0x46, 0x29, 0x46, 0x38, 0x46, 0x98, 0x47, 0x97, 0xF8, -0x62, 0x30, 0xDB, 0xF8, 0x2C, 0x40, 0x00, 0x2B, 0xDA, 0xD1, 0xE9, 0xE7, 0xDA, 0xF8, 0x24, 0x20, 0x01, 0x92, 0x56, 0x68, -0xE4, 0xF7, 0x92, 0xFC, 0x01, 0x9A, 0x93, 0x68, 0x06, 0xF5, 0x7A, 0x66, 0x9B, 0x45, 0x06, 0xEB, 0x00, 0x04, 0x0A, 0xD0, -0xE4, 0xF7, 0x88, 0xFC, 0x01, 0x9A, 0xD3, 0x68, 0x04, 0xF5, 0x7A, 0x64, 0x04, 0x44, 0x13, 0xB1, 0x04, 0xF5, 0x1C, 0x54, -0x10, 0x34, 0x2C, 0x1B, 0xE4, 0x0F, 0x00, 0x2C, 0x3F, 0xF4, 0x6D, 0xAF, 0xA5, 0xE7, 0x00, 0x24, 0x8A, 0xE7, 0x05, 0x48, -0x41, 0x46, 0x06, 0xF0, 0xD9, 0xFC, 0x97, 0xF8, 0x4D, 0x30, 0x23, 0xF0, 0x01, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x51, 0xE7, -0x40, 0x9D, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x81, 0x46, 0x1A, 0x48, 0x88, 0x46, 0x17, 0x46, 0x06, 0xF0, 0xB4, 0xFC, 0x18, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x0C, 0xDB, 0x16, 0x4D, 0x28, 0x46, 0x21, 0x46, 0x50, 0xF8, 0x20, 0x6F, -0xE7, 0x60, 0xC4, 0xE9, 0x01, 0x98, 0x06, 0xF0, 0x5F, 0xFC, 0x4E, 0xB1, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x28, 0xF0, 0xD1, -0x0F, 0x49, 0x10, 0x48, 0xD6, 0x22, 0x08, 0xF0, 0xA9, 0xF8, 0xEA, 0xE7, 0x0E, 0x4B, 0x61, 0x68, 0x1B, 0x69, 0xAC, 0x64, -0xCB, 0x1A, 0x14, 0x2B, 0x07, 0xD4, 0x0C, 0x4B, 0x05, 0xF1, 0x40, 0x00, 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x47, -0x18, 0x47, 0x6B, 0x6C, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x48, 0x9D, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x30, 0x9D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x48, 0xA1, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0xC1, 0x4B, 0xDF, 0xF8, 0x0C, 0x83, 0x1D, 0x69, 0xD0, 0xF8, 0x40, 0x90, 0x2F, 0x7A, 0x6B, 0x68, -0x89, 0xB0, 0x4F, 0xF4, 0xA4, 0x6A, 0xA3, 0xF5, 0x7A, 0x63, 0x0A, 0xFB, 0x07, 0x8B, 0x0C, 0x46, 0x03, 0x92, 0x01, 0x93, -0x06, 0x46, 0xE4, 0xF7, 0x05, 0xFC, 0x01, 0x9B, 0xDB, 0xF8, 0x40, 0x20, 0x1B, 0x1B, 0x1B, 0x1A, 0x4A, 0x45, 0x01, 0x93, -0x66, 0xD0, 0x6B, 0x68, 0x02, 0x93, 0xE4, 0xF7, 0xF9, 0xFB, 0x02, 0x9B, 0x99, 0xF8, 0x1B, 0x20, 0x04, 0x90, 0xA3, 0xF5, -0x7A, 0x63, 0x19, 0x1A, 0xFF, 0x2A, 0x02, 0x91, 0x20, 0xD1, 0x96, 0xF8, 0x4E, 0x60, 0x05, 0x93, 0xFF, 0x2E, 0x40, 0xF0, -0x8F, 0x80, 0x01, 0x9B, 0x03, 0x9A, 0x18, 0x46, 0x10, 0x44, 0xB2, 0xEB, 0x50, 0x0F, 0x4F, 0xEA, 0x50, 0x03, 0x00, 0xF2, -0xA9, 0x80, 0x03, 0x9A, 0xA4, 0x4E, 0xA4, 0x1A, 0x1C, 0x44, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x87, 0x2A, 0x46, -0xD6, 0xF8, 0x88, 0x30, 0x39, 0x6C, 0x20, 0x46, 0x98, 0x47, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x0A, 0xFB, 0x02, 0x8A, -0x50, 0x46, 0x07, 0xAA, 0x06, 0xA9, 0xDB, 0xF8, 0x40, 0x90, 0x01, 0x93, 0x03, 0xF0, 0xE8, 0xFB, 0x83, 0x46, 0x00, 0x28, -0x00, 0xF0, 0x8C, 0x80, 0x07, 0x9C, 0x02, 0x99, 0x01, 0x9B, 0x0A, 0x1B, 0x00, 0x2A, 0xC0, 0xF2, 0x41, 0x81, 0x06, 0x9A, -0xD1, 0x1A, 0x04, 0x9B, 0xD9, 0x42, 0x7D, 0xD5, 0x14, 0x1B, 0xE4, 0xF7, 0xB1, 0xFB, 0x00, 0xF5, 0x0C, 0x50, 0x28, 0x30, -0x84, 0x42, 0x40, 0xF2, 0x3B, 0x81, 0x8B, 0x4E, 0x07, 0x98, 0xD6, 0xF8, 0x88, 0x30, 0x49, 0x46, 0x00, 0x22, 0x98, 0x47, -0x06, 0x9C, 0xD6, 0xF8, 0x88, 0x90, 0xE4, 0xF7, 0x9F, 0xFB, 0xA4, 0xF5, 0x7A, 0x64, 0x20, 0x1A, 0xDA, 0xF8, 0x40, 0x10, -0x02, 0x9C, 0x00, 0x22, 0xC8, 0x47, 0xBA, 0xE7, 0xE4, 0xF7, 0x94, 0xFB, 0x01, 0x9B, 0xA3, 0xF5, 0x7A, 0x62, 0x12, 0x1A, -0x41, 0xF2, 0x87, 0x33, 0x9A, 0x42, 0x01, 0x92, 0xB9, 0xDD, 0x6F, 0x68, 0xE4, 0xF7, 0x88, 0xFB, 0x99, 0xF8, 0x1B, 0xB0, -0x02, 0x97, 0x3B, 0x1A, 0xBB, 0xF1, 0xFF, 0x0F, 0x01, 0x9A, 0x04, 0x90, 0xA3, 0xF5, 0x7A, 0x67, 0x70, 0xD0, 0x0A, 0xFB, -0x0B, 0x80, 0x07, 0xAA, 0x06, 0xA9, 0x03, 0xF0, 0x9B, 0xFB, 0x00, 0x28, 0x40, 0xF0, 0xE6, 0x80, 0xE4, 0xF7, 0x72, 0xFB, -0x06, 0x9E, 0xC6, 0xF5, 0x9C, 0x52, 0x08, 0x32, 0x00, 0xF5, 0x7A, 0x60, 0x22, 0x44, 0x12, 0xEB, 0x40, 0x03, 0x00, 0xF1, -0xF9, 0x80, 0xE4, 0xF7, 0x65, 0xFB, 0x07, 0x9C, 0x04, 0xF5, 0x0C, 0x53, 0x28, 0x33, 0xDB, 0x1B, 0xC3, 0x42, 0x8C, 0xD5, -0x64, 0x4E, 0xDF, 0xF8, 0x98, 0xA1, 0x5F, 0xE0, 0x07, 0xAA, 0x0A, 0xFB, 0x06, 0x80, 0x06, 0xA9, 0x03, 0xF0, 0x78, 0xFB, -0x83, 0x46, 0xE4, 0xF7, 0x51, 0xFB, 0x06, 0x9A, 0xA2, 0xF5, 0x7A, 0x62, 0x10, 0x1A, 0xDD, 0xE9, 0x04, 0x23, 0x06, 0x90, -0xA2, 0xEB, 0x03, 0x0A, 0xBB, 0xF1, 0x00, 0x0F, 0x05, 0xD1, 0x02, 0x9B, 0x10, 0xEB, 0x0A, 0x0F, 0x54, 0xBF, 0x1C, 0x46, -0x04, 0x46, 0xE4, 0xF7, 0x3D, 0xFB, 0x07, 0x9B, 0x03, 0xF5, 0x0C, 0x53, 0x28, 0x33, 0x53, 0x44, 0xC3, 0x42, 0x65, 0xD4, -0x50, 0x4E, 0x58, 0xE7, 0x06, 0x9E, 0x02, 0x9B, 0x9A, 0x1B, 0x00, 0x2A, 0xF8, 0xDB, 0xE4, 0xF7, 0x2D, 0xFB, 0x00, 0xF5, -0x0C, 0x50, 0x36, 0x1B, 0x28, 0x30, 0x86, 0x42, 0x49, 0x4E, 0x11, 0xD9, 0x49, 0x46, 0x20, 0x46, 0x5A, 0x46, 0xD6, 0xF8, -0x88, 0x30, 0x98, 0x47, 0x06, 0x9C, 0xD6, 0xF8, 0x88, 0x90, 0xE4, 0xF7, 0x1B, 0xFB, 0xA4, 0xF5, 0x7A, 0x64, 0xDA, 0xF8, -0x40, 0x10, 0x20, 0x1A, 0x5A, 0x46, 0xC8, 0x47, 0x07, 0x9C, 0x02, 0x9B, 0x1B, 0x1B, 0x00, 0x2B, 0xBF, 0xF6, 0x33, 0xAF, -0x02, 0x9C, 0x30, 0xE7, 0x96, 0xF8, 0x4E, 0x00, 0x01, 0x93, 0xFF, 0x28, 0x51, 0xD1, 0x03, 0x99, 0x0A, 0x44, 0xB1, 0xEB, -0x52, 0x0F, 0x4F, 0xEA, 0x52, 0x03, 0xA1, 0xD8, 0x03, 0x9A, 0x35, 0x4E, 0xDF, 0xF8, 0xD8, 0xA0, 0xA4, 0x1A, 0x1C, 0x44, -0x99, 0xF8, 0x18, 0x30, 0xD6, 0xF8, 0x88, 0x80, 0x02, 0x2B, 0x03, 0xF1, 0x01, 0x01, 0x7B, 0xD0, 0xC1, 0xEB, 0xC1, 0x01, -0x0A, 0xEB, 0x81, 0x01, 0x0A, 0x7E, 0xFF, 0x2A, 0x0E, 0xD1, 0x01, 0x2B, 0x03, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, -0xC3, 0xEB, 0xC3, 0x03, 0x0A, 0xEB, 0x83, 0x0A, 0x9A, 0xF8, 0x18, 0x30, 0xFF, 0x2B, 0x14, 0xBF, 0x51, 0x46, 0x00, 0x21, -0x20, 0x46, 0x00, 0x22, 0xC0, 0x47, 0xD6, 0xF8, 0x88, 0x30, 0x2A, 0x46, 0x49, 0x46, 0x38, 0x46, 0x98, 0x47, 0x09, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x06, 0x83, 0x1B, 0x4E, 0x19, 0x6C, 0xD6, 0xF8, 0x88, 0x30, -0x20, 0x46, 0x00, 0x22, 0x98, 0x47, 0xD6, 0xF8, 0x88, 0x30, 0x07, 0x98, 0x49, 0x46, 0x00, 0x22, 0x98, 0x47, 0xBB, 0xF1, -0x00, 0x0F, 0xAD, 0xD0, 0x06, 0x9C, 0x02, 0x9B, 0x1A, 0xEB, 0x04, 0x0F, 0x58, 0xBF, 0x1C, 0x46, 0xD9, 0xE6, 0x07, 0xAA, -0x06, 0xA9, 0x0A, 0xFB, 0x00, 0x80, 0x03, 0xF0, 0xD3, 0xFA, 0x06, 0x9C, 0xE4, 0xF7, 0xAC, 0xFA, 0x01, 0x9B, 0x1B, 0x1B, -0xC3, 0x42, 0x3F, 0xF5, 0xD6, 0xAE, 0x06, 0x9C, 0x08, 0x4E, 0xDF, 0xF8, 0x28, 0xA0, 0xE4, 0xF7, 0xA1, 0xFA, 0x07, 0x9B, -0xA4, 0xF5, 0x7A, 0x64, 0xFA, 0x1A, 0x24, 0x1A, 0x17, 0xEA, 0x22, 0x07, 0x38, 0xBF, 0x1F, 0x46, 0x9C, 0xE7, 0x00, 0xBF, -0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0xDD, 0xE9, 0x06, 0x64, -0xE4, 0xF7, 0x8A, 0xFA, 0x02, 0x9B, 0x04, 0x9A, 0xF6, 0x1A, 0x32, 0x44, 0x13, 0x1A, 0x00, 0x2B, 0x5B, 0xDB, 0xE4, 0xF7, -0x81, 0xFA, 0x3B, 0x1B, 0xA3, 0xF5, 0x0C, 0x53, 0x28, 0x3B, 0x18, 0x1A, 0x00, 0x28, 0xBF, 0xF6, 0x1B, 0xAF, 0xA6, 0xE6, -0x37, 0x4E, 0x67, 0xE7, 0x9A, 0xF8, 0x18, 0x30, 0xFF, 0x2B, 0x5F, 0xD1, 0x01, 0x23, 0x89, 0xE7, 0x02, 0x9C, 0x37, 0xE7, -0xE4, 0xF7, 0x6C, 0xFA, 0x02, 0x9B, 0xF6, 0x1A, 0x04, 0x9B, 0x33, 0x44, 0x1B, 0x1A, 0x00, 0x2B, 0x4A, 0xDB, 0x01, 0x97, -0xE4, 0xF7, 0x62, 0xFA, 0x07, 0x9B, 0x03, 0xF5, 0x0C, 0x53, 0x28, 0x33, 0xDB, 0x1B, 0xC3, 0x42, 0x4A, 0xD5, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x0B, 0x83, 0x27, 0x4E, 0x1A, 0x6C, 0xDF, 0xF8, 0x9C, 0xA0, 0x11, 0x7E, 0xD6, 0xF8, 0x88, 0x30, -0x02, 0x29, 0x01, 0xF1, 0x01, 0x02, 0x2B, 0xD0, 0xC2, 0xEB, 0xC2, 0x00, 0x0A, 0xEB, 0x80, 0x00, 0x00, 0x7E, 0xFF, 0x28, -0x37, 0xD1, 0x01, 0x29, 0x01, 0xF1, 0x02, 0x02, 0x08, 0xBF, 0x00, 0x22, 0xC2, 0xEB, 0xC2, 0x01, 0x0A, 0xEB, 0x81, 0x01, -0x09, 0x7E, 0xFF, 0x29, 0x08, 0xBF, 0x00, 0x21, 0x29, 0xD1, 0x20, 0x46, 0x00, 0x22, 0x98, 0x47, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x0B, 0x88, 0x01, 0x98, 0xD8, 0xF8, 0x40, 0x10, 0xD6, 0xF8, 0x88, 0x30, 0x00, 0x22, 0x98, 0x47, 0x07, 0x9C, -0x2C, 0xE7, 0x06, 0x9E, 0xE4, 0xF7, 0x24, 0xFA, 0xA6, 0xF5, 0x7A, 0x66, 0x37, 0x1A, 0x9C, 0xE7, 0x9A, 0xF8, 0x18, 0x20, -0xFF, 0x2A, 0x0D, 0xD1, 0x01, 0x22, 0xD9, 0xE7, 0x06, 0x9E, 0xE4, 0xF7, 0x17, 0xFA, 0xA6, 0xF5, 0x7A, 0x66, 0x33, 0x1A, -0x01, 0x93, 0xAD, 0xE7, 0x05, 0x49, 0x33, 0xE7, 0x01, 0x9F, 0xAF, 0xE6, 0x00, 0x22, 0x1C, 0x21, 0x01, 0xFB, 0x02, 0xA1, -0xD1, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x30, 0xB5, 0x0E, 0x48, 0x83, 0xB0, 0x06, 0xF0, -0x59, 0xFA, 0x01, 0x90, 0xA0, 0xB1, 0x0C, 0x4B, 0x0C, 0x4C, 0xD3, 0xF8, 0xD8, 0x31, 0x0C, 0x48, 0x98, 0x47, 0x00, 0x23, -0x01, 0x99, 0xA3, 0x64, 0x04, 0xF1, 0x18, 0x05, 0x20, 0x34, 0x28, 0x46, 0x06, 0xF0, 0x04, 0xFA, 0x20, 0x46, 0x06, 0xF0, -0x45, 0xFA, 0x01, 0x46, 0x00, 0x28, 0xF6, 0xD1, 0x03, 0xB0, 0x30, 0xBD, 0x50, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x30, 0x9D, 0x17, 0x00, 0x70, 0x9D, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x4C, 0x4B, 0x42, 0x69, 0x1F, 0x69, 0x4C, 0x4B, -0x4C, 0x4C, 0x98, 0x42, 0x83, 0xB0, 0x05, 0x46, 0x17, 0x44, 0x6F, 0xD0, 0xA3, 0x6A, 0xAB, 0x42, 0x04, 0xD0, 0xE4, 0xF7, -0xCD, 0xF9, 0x07, 0xF5, 0x7A, 0x67, 0x07, 0x44, 0x94, 0xF8, 0x5B, 0x80, 0x94, 0xF8, 0x58, 0x30, 0xC4, 0xE9, 0x14, 0x57, -0xB8, 0xF1, 0x00, 0x0F, 0x57, 0xD1, 0x42, 0x4E, 0x23, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x73, 0x6B, 0x98, 0x47, -0xD6, 0xF8, 0x88, 0x30, 0x42, 0x46, 0x41, 0x46, 0x38, 0x46, 0x98, 0x47, 0xD4, 0xF8, 0x10, 0xB0, 0xBB, 0xF1, 0x00, 0x0F, -0x3A, 0xD0, 0x3A, 0x4B, 0xDF, 0xF8, 0xF8, 0x90, 0xDB, 0x1B, 0x01, 0x93, 0x4F, 0xF4, 0xA4, 0x68, 0x0C, 0xE0, 0x02, 0x2A, -0x04, 0xBF, 0xB0, 0xF8, 0xD2, 0x20, 0x91, 0x02, 0x61, 0x44, 0x00, 0x22, 0x98, 0x47, 0xD4, 0xF8, 0x10, 0xB0, 0xBB, 0xF1, -0x00, 0x0F, 0x25, 0xD0, 0xDB, 0xF8, 0x04, 0xA0, 0xE4, 0xF7, 0x96, 0xF9, 0x01, 0x9B, 0xAA, 0xEB, 0x00, 0x00, 0xD8, 0x42, -0x1C, 0xD5, 0x9B, 0xF8, 0x08, 0x00, 0xDB, 0xF8, 0x04, 0xC0, 0xF3, 0x6A, 0x08, 0xFB, 0x00, 0x90, 0x4F, 0xF4, 0xC8, 0x31, -0x90, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0xDC, 0xD1, 0x90, 0xF8, 0x6C, 0x20, 0x24, 0x4F, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, -0x02, 0x72, 0x91, 0x68, 0x00, 0x22, 0x61, 0x44, 0x98, 0x47, 0xD4, 0xF8, 0x10, 0xB0, 0xBB, 0xF1, 0x00, 0x0F, 0xD9, 0xD1, -0xE3, 0x6A, 0xD3, 0xB1, 0x1D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x1B, 0xDB, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x43, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x94, 0xF8, 0x58, 0x30, -0x5A, 0x07, 0x8B, 0xD4, 0x23, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD6, 0xF8, -0x9C, 0x30, 0x28, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x94, 0xF8, 0x58, 0x30, 0x13, 0xF0, 0x0C, 0x0F, -0xDE, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF2, 0x86, 0x62, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x07, 0xF0, 0xAC, 0xBD, -0x00, 0x10, 0x50, 0x40, 0x00, 0x9E, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x60, 0xF0, 0xFF, 0xFF, -0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x5C, 0xA1, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, -0x10, 0xB5, 0x22, 0x4C, 0x94, 0xF8, 0x58, 0x30, 0xD8, 0x07, 0x11, 0xD5, 0x20, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, -0x00, 0x2A, 0x22, 0xDB, 0x23, 0xF0, 0x01, 0x03, 0x43, 0xF0, 0x04, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x1B, 0x4B, 0x1C, 0x48, -0xDB, 0x6D, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x03, 0xF0, 0x06, 0x02, 0x02, 0x2A, 0x11, 0xD1, 0x15, 0x4A, 0x12, 0x68, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x17, 0xDB, 0x23, 0xF0, 0x02, 0x03, 0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x58, 0x30, -0x10, 0x4B, 0x12, 0x48, 0xDB, 0x6D, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x10, 0xBD, 0x59, 0x07, 0xDA, 0xD5, 0x0F, 0x49, -0x0F, 0x48, 0x40, 0xF2, 0x9B, 0x62, 0x07, 0xF0, 0x61, 0xFD, 0x94, 0xF8, 0x58, 0x30, 0xD1, 0xE7, 0x1A, 0x07, 0xE5, 0xD5, -0x09, 0x49, 0x0B, 0x48, 0x40, 0xF2, 0xA6, 0x62, 0x07, 0xF0, 0x56, 0xFD, 0x94, 0xF8, 0x58, 0x30, 0xDC, 0xE7, 0x00, 0xBF, -0x30, 0x9D, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x9E, 0x17, 0x00, 0xE4, 0x9D, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x8C, 0xA1, 0x15, 0x00, 0xC0, 0xA1, 0x15, 0x00, 0x0D, 0x4A, 0x92, 0xF8, 0x58, 0x30, 0xD9, 0x06, -0x14, 0xD4, 0x92, 0xF8, 0x5A, 0x00, 0x43, 0xF0, 0x10, 0x03, 0x82, 0xF8, 0x58, 0x30, 0x50, 0xB1, 0x08, 0x49, 0x09, 0x4B, -0x09, 0x69, 0xD3, 0xF8, 0xE0, 0x31, 0x01, 0xF5, 0xEA, 0x41, 0x02, 0xF1, 0x30, 0x00, 0x30, 0x31, 0x18, 0x47, 0x04, 0x4B, -0xDB, 0x6B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x70, 0xB5, 0x32, 0x4C, 0x00, 0x23, 0x05, 0x46, 0xA3, 0x62, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x2E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2E, 0x4A, 0x2E, 0x4E, 0x11, 0x68, 0x73, 0x68, 0x48, 0x1C, 0x23, 0xF0, 0x02, 0x03, -0x10, 0x60, 0x73, 0x60, 0x18, 0xB1, 0x28, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0xF9, 0xB1, 0x29, 0x49, 0x94, 0xF8, 0x5C, 0x30, -0x0A, 0x68, 0x9B, 0x00, 0x22, 0xF0, 0x04, 0x02, 0x03, 0xF0, 0x04, 0x03, 0x13, 0x43, 0x0B, 0x60, 0x2B, 0x7E, 0x03, 0x2B, -0x26, 0xD0, 0x04, 0x2B, 0x94, 0xF8, 0x58, 0x30, 0x19, 0xD0, 0x23, 0xF0, 0x10, 0x02, 0xFF, 0x21, 0x9B, 0x07, 0x29, 0x76, -0x84, 0xF8, 0x58, 0x20, 0x02, 0xD0, 0x1D, 0x4B, 0x1B, 0x6C, 0x98, 0x47, 0xE3, 0x6A, 0x23, 0xB1, 0x70, 0xBD, 0x00, 0x2B, -0xDD, 0xD0, 0x62, 0xB6, 0xDB, 0xE7, 0x18, 0x4B, 0xD3, 0xF8, 0xA4, 0x31, 0x98, 0x47, 0xBD, 0xE8, 0x70, 0x40, 0xFB, 0xF7, -0x93, 0xBA, 0x23, 0xF0, 0x04, 0x02, 0x84, 0xF8, 0x58, 0x20, 0xEA, 0x89, 0x92, 0xB9, 0x03, 0xF0, 0xDB, 0x03, 0xDC, 0xE7, -0x94, 0xF8, 0x58, 0x30, 0x23, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x58, 0x30, 0xFE, 0xF7, 0x84, 0xFE, 0xFF, 0x22, 0x02, 0x21, -0x86, 0x20, 0x05, 0xF0, 0x49, 0xFC, 0x94, 0xF8, 0x58, 0x30, 0xCC, 0xE7, 0x28, 0x46, 0xFE, 0xF7, 0xB1, 0xFE, 0x94, 0xF8, -0x58, 0x30, 0xC6, 0xE7, 0x30, 0x9D, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0x4C, 0x00, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x6B, 0x4F, 0x6C, 0x4E, 0x04, 0x46, 0x6C, 0x48, -0x06, 0xF0, 0x96, 0xF8, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0xC0, 0xF2, 0x85, 0x80, 0x33, 0x78, -0x00, 0x2B, 0x44, 0xD0, 0x66, 0x4C, 0x01, 0x2B, 0x42, 0xD1, 0x94, 0xF8, 0x58, 0x30, 0x19, 0x07, 0x00, 0xF1, 0x9D, 0x80, -0x5A, 0x07, 0x40, 0xF1, 0xB0, 0x80, 0x62, 0x4F, 0xE3, 0x6A, 0xBB, 0x42, 0x02, 0xD0, 0x0B, 0xB1, 0x01, 0x22, 0x1A, 0x74, -0xA3, 0x6A, 0x0B, 0xB1, 0x01, 0x22, 0x1A, 0x74, 0x00, 0x23, 0xC4, 0xE9, 0x0A, 0x73, 0x39, 0x7E, 0x04, 0x23, 0x03, 0x29, -0x3B, 0x74, 0x00, 0xF0, 0xA0, 0x80, 0x02, 0x29, 0x24, 0xD9, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x55, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x55, 0x4A, 0x55, 0x48, 0x17, 0x68, 0x43, 0x68, 0x79, 0x1C, 0x43, 0xF0, 0x02, 0x03, -0x11, 0x60, 0x43, 0x60, 0x29, 0xB1, 0x4F, 0x4B, 0x17, 0x60, 0x1B, 0x68, 0x0F, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x4F, 0x4A, -0xA3, 0x6A, 0x11, 0x68, 0xC1, 0xF3, 0x80, 0x01, 0x84, 0xF8, 0x5C, 0x10, 0x11, 0x68, 0x21, 0xF0, 0x04, 0x01, 0x11, 0x60, -0x01, 0xE0, 0x44, 0x4C, 0xA3, 0x6A, 0x01, 0x22, 0x1A, 0x74, 0x22, 0x6D, 0x00, 0x23, 0x33, 0x70, 0x00, 0x2A, 0x31, 0xD0, -0x94, 0xF8, 0x5A, 0x20, 0x23, 0x65, 0x00, 0x2A, 0x53, 0xD0, 0x01, 0x2A, 0x53, 0xD0, 0x23, 0x69, 0x00, 0x2B, 0x50, 0xD0, -0x1B, 0x7A, 0x40, 0x4A, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x18, 0x6C, 0xA8, 0x60, 0x18, 0xB1, 0x3D, 0x4B, -0xD3, 0xF8, 0x9C, 0x30, 0x98, 0x47, 0x3C, 0x48, 0x29, 0x46, 0x05, 0xF0, 0xDF, 0xFF, 0xA0, 0x6A, 0x03, 0x7E, 0x02, 0x2B, -0x02, 0xD9, 0x37, 0x4B, 0x9B, 0x6B, 0x98, 0x47, 0x20, 0x6A, 0xA0, 0x64, 0x58, 0xB3, 0x36, 0x4B, 0x41, 0x68, 0x1B, 0x69, -0xCB, 0x1A, 0x14, 0x2B, 0x27, 0xD4, 0x31, 0x4B, 0x33, 0x48, 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, -0xA8, 0x68, 0xDD, 0xE7, 0x84, 0x42, 0x32, 0xD0, 0x2F, 0x49, 0x30, 0x48, 0x40, 0xF2, 0x4F, 0x72, 0x07, 0xF0, 0x12, 0xFC, -0x33, 0x78, 0x00, 0x2B, 0x7F, 0xF4, 0x72, 0xAF, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xB1, 0xDA, 0x1D, 0x4C, -0xA3, 0x6A, 0x00, 0x2B, 0xAF, 0xD1, 0x26, 0x49, 0x27, 0x48, 0x40, 0xF2, 0x51, 0x72, 0x07, 0xF0, 0xFF, 0xFB, 0x33, 0x78, -0x61, 0xE7, 0xBD, 0xE8, 0xF0, 0x81, 0x63, 0x6C, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x22, 0x4F, 0x64, 0xE7, 0xAA, 0x60, -0xBB, 0xE7, 0x21, 0x48, 0x02, 0x7E, 0xFF, 0x2A, 0xB1, 0xD1, 0x90, 0xF8, 0x34, 0x20, 0xFF, 0x2A, 0x12, 0xD1, 0x90, 0xF8, -0x50, 0x20, 0xFF, 0x2A, 0x10, 0xD1, 0xAB, 0x60, 0xAD, 0xE7, 0x33, 0x78, 0x00, 0x2B, 0xD8, 0xD0, 0x44, 0xE7, 0xE7, 0x6A, -0x00, 0x2F, 0x87, 0xD0, 0x52, 0xE7, 0x02, 0x20, 0x05, 0xF0, 0xF2, 0xFC, 0x39, 0x7E, 0x5A, 0xE7, 0x1C, 0x30, 0x98, 0xE7, -0x38, 0x30, 0x96, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x17, 0x2C, 0x17, 0x00, 0x50, 0x9D, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, -0x00, 0x9E, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, -0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x48, 0x9D, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x9D, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xF4, 0xA1, 0x15, 0x00, 0x10, 0xA2, 0x15, 0x00, 0xE4, 0x9D, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, -0x0D, 0x4B, 0x93, 0xF8, 0x58, 0x20, 0x11, 0x07, 0x03, 0xD4, 0x52, 0x07, 0x0D, 0xD5, 0x0B, 0x49, 0x00, 0xE0, 0x0B, 0x49, -0xDA, 0x6A, 0x8A, 0x42, 0x03, 0xD0, 0x0A, 0xB1, 0x01, 0x20, 0x10, 0x74, 0xD9, 0x62, 0x08, 0x4B, 0xD3, 0xF8, 0x98, 0x30, -0x18, 0x47, 0xDB, 0x6A, 0x00, 0x2B, 0xF8, 0xD1, 0x05, 0x49, 0x08, 0x20, 0x07, 0xF0, 0x68, 0xB9, 0x30, 0x9D, 0x17, 0x00, -0x00, 0x9E, 0x17, 0x00, 0xE4, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x28, 0xA2, 0x15, 0x00, 0x0B, 0x4A, 0x92, 0xF8, -0x59, 0x30, 0x43, 0xB1, 0x01, 0x3B, 0xDB, 0xB2, 0x82, 0xF8, 0x59, 0x30, 0x1B, 0xB9, 0x08, 0x4A, 0x11, 0x78, 0x01, 0x29, -0x00, 0xD0, 0x70, 0x47, 0x10, 0xB5, 0x06, 0x4C, 0x13, 0x70, 0xD4, 0xF8, 0xA4, 0x31, 0x98, 0x47, 0xE3, 0x6F, 0xBD, 0xE8, -0x10, 0x40, 0x18, 0x47, 0x30, 0x9D, 0x17, 0x00, 0x17, 0x2C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x1D, 0x4B, -0x1D, 0x49, 0x1E, 0x4A, 0xD3, 0xF8, 0xE0, 0x33, 0x8C, 0x68, 0x95, 0x6A, 0x98, 0x47, 0x1C, 0x4B, 0x5B, 0x78, 0x23, 0xB1, -0x1B, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x1A, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x13, 0x60, -0x1C, 0xB3, 0x18, 0x4F, 0x8C, 0x26, 0x01, 0xE0, 0x24, 0x68, 0xF4, 0xB1, 0x23, 0x6C, 0xAB, 0x42, 0xFA, 0xD1, 0x94, 0xF8, -0x62, 0x30, 0x00, 0x2B, 0xF6, 0xD1, 0x94, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xF2, 0xD0, 0x94, 0xF8, 0xC0, 0x34, 0x00, 0x22, -0x11, 0x46, 0x3B, 0xB1, 0x94, 0xF8, 0xC1, 0x34, 0x06, 0xFB, 0x03, 0x73, 0x93, 0xF8, 0x85, 0x30, 0x00, 0x2B, 0xE5, 0xD0, -0x94, 0xF8, 0x6C, 0x00, 0xF2, 0xF7, 0xD6, 0xFD, 0x24, 0x68, 0x00, 0x2C, 0xE0, 0xD1, 0xF8, 0xBD, 0x88, 0x1A, 0x17, 0x00, -0x00, 0x88, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, -0x48, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x08, 0x81, 0x3D, 0x4A, 0x3E, 0x4E, 0xD8, 0xF8, 0xDC, 0x33, -0x94, 0x68, 0x96, 0xF8, 0x59, 0x90, 0x83, 0xB0, 0x98, 0x47, 0xB5, 0x6A, 0x00, 0x2D, 0x5E, 0xD0, 0x39, 0x4A, 0x3A, 0x49, -0x13, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x4B, 0x78, 0x4F, 0x46, 0x00, 0x2B, 0x4D, 0xD1, 0x00, 0x2C, 0x3A, 0xD0, -0xDF, 0xF8, 0xD8, 0xB0, 0xDF, 0xF8, 0xD8, 0xA0, 0x4F, 0xF0, 0x06, 0x09, 0x01, 0xE0, 0x24, 0x68, 0x7C, 0xB3, 0x23, 0x6C, -0x9D, 0x42, 0xFA, 0xD1, 0x94, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xF6, 0xD1, 0x94, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xF2, 0xD0, -0x94, 0xF8, 0x6C, 0x00, 0xFF, 0x28, 0x4F, 0xF0, 0x8C, 0x01, 0x4F, 0xF0, 0x00, 0x02, 0xEA, 0xD0, 0x94, 0xF8, 0xC0, 0x34, -0x3B, 0xB1, 0x94, 0xF8, 0xC1, 0x34, 0x01, 0xFB, 0x03, 0xA3, 0x93, 0xF8, 0x85, 0x30, 0x00, 0x2B, 0xDF, 0xD0, 0x2B, 0x7C, -0x85, 0xF8, 0x10, 0x90, 0xD8, 0xF8, 0xB0, 0x10, 0x01, 0x93, 0xF2, 0xF7, 0x79, 0xFD, 0x01, 0x9B, 0x00, 0xB9, 0x01, 0x37, -0x01, 0x22, 0x2B, 0x74, 0x8B, 0xF8, 0x00, 0x20, 0x24, 0x68, 0x00, 0x2C, 0xCF, 0xD1, 0x5F, 0xFA, 0x87, 0xF9, 0x96, 0xF8, -0x59, 0x40, 0xF5, 0x6A, 0x86, 0xF8, 0x59, 0x90, 0x3C, 0x1B, 0xAD, 0xB1, 0x27, 0xB1, 0x03, 0x23, 0x2B, 0x74, 0xD8, 0xF8, -0x60, 0x31, 0x98, 0x47, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD2, 0xF8, 0xE8, 0x33, 0x43, 0xF0, 0x00, 0x43, -0xC2, 0xF8, 0xE8, 0x33, 0xAA, 0xE7, 0x00, 0x24, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD8, 0xF8, 0x60, 0x31, -0x98, 0x47, 0x00, 0x2F, 0xF5, 0xD0, 0x96, 0xF8, 0x59, 0x30, 0x01, 0x3B, 0x2C, 0x46, 0x86, 0xF8, 0x59, 0x30, 0xE3, 0xE7, -0x00, 0x88, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x4C, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x17, 0x2C, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x10, 0xB5, 0x06, 0x4C, 0xD4, 0xF8, 0xA4, 0x31, 0x98, 0x47, 0xA3, 0x6E, -0x98, 0x47, 0x18, 0xB9, 0xE3, 0x6F, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x43, 0x4D, 0x4E, 0x4E, 0x4F, 0xF4, 0x6A, 0x85, 0xB0, 0x00, 0x25, 0xE2, 0x88, 0x61, 0x79, 0x23, 0x89, -0x20, 0x79, 0x02, 0x95, 0x65, 0x7B, 0x01, 0x95, 0x65, 0x89, 0x00, 0x95, 0xE3, 0xF7, 0x72, 0xFD, 0xD7, 0xF8, 0x3C, 0x33, -0x94, 0xF9, 0x0C, 0x00, 0x98, 0x47, 0x21, 0x79, 0x44, 0x4B, 0x45, 0x4A, 0x03, 0xEB, 0x81, 0x03, 0x5B, 0x69, 0x13, 0x60, -0x23, 0x7E, 0x03, 0x2B, 0x02, 0xD0, 0x20, 0x46, 0xFE, 0xF7, 0xFE, 0xFB, 0xB3, 0x6A, 0x0B, 0xB1, 0x01, 0x22, 0x1A, 0x74, -0x00, 0x23, 0xC6, 0xE9, 0x0A, 0x43, 0x23, 0x7E, 0x04, 0x22, 0x02, 0x2B, 0x22, 0x74, 0x4E, 0xD9, 0x96, 0xF8, 0x5A, 0x20, -0x00, 0x2A, 0x4A, 0xD0, 0x03, 0x2B, 0x52, 0xD0, 0x04, 0x2B, 0x24, 0xD0, 0xFB, 0x6E, 0x98, 0x47, 0x23, 0x7E, 0x02, 0x2B, -0x1F, 0xD8, 0x34, 0x4B, 0x9D, 0x68, 0x00, 0x2D, 0x37, 0xD0, 0xDF, 0xF8, 0xE4, 0x90, 0x4F, 0xF0, 0x01, 0x08, 0x01, 0xE0, -0x2D, 0x68, 0x8D, 0xB1, 0x2B, 0x6C, 0xA3, 0x42, 0xFA, 0xD1, 0x95, 0xF8, 0x63, 0x30, 0xD7, 0xF8, 0x5C, 0x24, 0xC3, 0xEB, -0xC3, 0x03, 0x09, 0xEB, 0x83, 0x03, 0x28, 0x46, 0x83, 0xF8, 0x1B, 0x80, 0x90, 0x47, 0x2D, 0x68, 0x00, 0x2D, 0xED, 0xD1, -0x23, 0x7E, 0x02, 0x2B, 0x1B, 0xD9, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x22, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x22, 0x4A, 0x22, 0x4C, 0x11, 0x68, 0x63, 0x68, 0x48, 0x1C, 0x43, 0xF0, 0x02, 0x03, 0x10, 0x60, 0x63, 0x60, -0x28, 0xBB, 0x1F, 0x4B, 0x19, 0x68, 0x1A, 0x68, 0xC1, 0xF3, 0x80, 0x01, 0x22, 0xF0, 0x04, 0x02, 0x86, 0xF8, 0x5C, 0x10, -0x1A, 0x60, 0xD7, 0xF8, 0x60, 0x31, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, 0x18, 0x4A, 0x92, 0xF8, 0xFF, 0x21, -0x00, 0x2A, 0xAF, 0xD0, 0xF1, 0xF7, 0xA2, 0xFB, 0x23, 0x7E, 0x03, 0x2B, 0xAC, 0xD1, 0x14, 0x4B, 0x00, 0x22, 0x1A, 0x60, -0x02, 0x21, 0xFF, 0x22, 0x85, 0x20, 0x05, 0xF0, 0x77, 0xF9, 0x23, 0x7E, 0x02, 0x2B, 0xE4, 0xD9, 0xC7, 0xE7, 0x09, 0x4B, -0x11, 0x60, 0x1B, 0x68, 0x00, 0x29, 0xD4, 0xD1, 0x00, 0x2B, 0xD2, 0xD0, 0x62, 0xB6, 0xD0, 0xE7, 0x30, 0x9D, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0xDC, 0x00, 0x32, 0x40, 0x00, 0x88, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x20, 0x62, 0x17, 0x00, 0x20, 0x02, 0x32, 0x40, -0x80, 0x9F, 0x17, 0x00, 0x70, 0xB5, 0x25, 0x4D, 0xEA, 0x6A, 0x04, 0x46, 0x0A, 0xB1, 0xE8, 0x62, 0x70, 0xBD, 0xAE, 0x6A, -0x86, 0x42, 0x3D, 0xD0, 0x5E, 0xB1, 0x33, 0x7E, 0x03, 0x2B, 0x08, 0xD0, 0x01, 0x23, 0x0C, 0x21, 0x45, 0x20, 0x05, 0xF0, -0xD7, 0xF8, 0x33, 0x7E, 0x03, 0x70, 0x05, 0xF0, 0x03, 0xF9, 0x1B, 0x4B, 0x5B, 0x68, 0x00, 0x2B, 0x1C, 0xDD, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x17, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x17, 0x4E, 0x33, 0x68, 0x04, 0x20, -0x01, 0x33, 0x33, 0x60, 0xF1, 0xF7, 0x42, 0xF8, 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, 0xF1, 0xF7, 0xDD, 0xF8, 0x33, 0x68, -0x33, 0xB1, 0x0F, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x02, 0x22, 0xEC, 0x62, -0x04, 0x23, 0x22, 0x74, 0x00, 0x21, 0xFF, 0x22, 0x84, 0x20, 0x05, 0xF0, 0xA9, 0xF8, 0x09, 0x4B, 0x1B, 0x6E, 0x03, 0x60, -0xBD, 0xE8, 0x70, 0x40, 0x05, 0xF0, 0xD2, 0xB8, 0x04, 0x23, 0x33, 0x74, 0x70, 0xBD, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, -0xD8, 0x9C, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x0A, 0x4D, -0x04, 0x46, 0xD5, 0xF8, 0x6C, 0x31, 0x00, 0x6D, 0x98, 0x47, 0xD5, 0xF8, 0x00, 0x32, 0x20, 0x65, 0x01, 0x46, 0x20, 0x46, -0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, 0x23, 0xF0, 0x40, 0x03, 0x43, 0xF0, 0x20, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0x38, 0xBD, -0x88, 0x1A, 0x17, 0x00, 0x02, 0x6D, 0x41, 0x6A, 0x70, 0xB5, 0x17, 0x4D, 0x04, 0x46, 0xD5, 0xF8, 0xE0, 0x31, 0x11, 0x44, -0x18, 0x30, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, 0x23, 0xF0, 0x20, 0x02, 0xDB, 0x07, 0x84, 0xF8, 0x4D, 0x20, 0x0E, 0xD5, -0x10, 0x4B, 0x5B, 0x6A, 0x23, 0xB1, 0xDA, 0x68, 0x04, 0xF1, 0x44, 0x03, 0x9A, 0x42, 0x07, 0xD0, 0xEB, 0x6A, 0x61, 0x6A, -0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x70, 0xBD, 0x6B, 0x6B, 0x98, 0x47, 0xEB, 0x6A, 0x61, 0x6A, -0x20, 0x46, 0x00, 0x22, 0x98, 0x47, 0x06, 0x4A, 0xD5, 0xF8, 0x84, 0x30, 0x11, 0x69, 0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, -0x70, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x2D, 0xE9, 0xF8, 0x43, -0xDF, 0xF8, 0xB8, 0x80, 0x90, 0xF8, 0x4E, 0x70, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x07, 0x85, 0x95, 0xF8, 0x4D, 0x60, -0x16, 0xF0, 0x60, 0x06, 0x1F, 0xD1, 0x26, 0x4B, 0x04, 0x46, 0xD3, 0xF8, 0xFC, 0x31, 0x89, 0x46, 0x90, 0xF8, 0x4F, 0x10, -0x28, 0x46, 0x98, 0x47, 0x63, 0x6D, 0xA0, 0xEB, 0x09, 0x01, 0x58, 0x1A, 0x00, 0xB2, 0x80, 0xEA, 0xE0, 0x73, 0xA3, 0xEB, -0xE0, 0x73, 0x9B, 0xB2, 0xB3, 0xF5, 0xFA, 0x6F, 0xA4, 0xF8, 0x58, 0x00, 0x09, 0xD9, 0x95, 0xF8, 0x4D, 0x30, 0x23, 0xF0, -0x40, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x85, 0xF8, 0x4D, 0x30, 0xBD, 0xE8, 0xF8, 0x83, 0xC8, 0x2B, 0xFB, 0xD9, 0x15, 0x4B, -0x9B, 0x68, 0x9B, 0xB1, 0x95, 0xF8, 0x63, 0x10, 0x30, 0x46, 0x93, 0xF8, 0x4E, 0x20, 0x8A, 0x42, 0x07, 0xD1, 0xB3, 0xF9, -0x58, 0x20, 0x90, 0x42, 0xA8, 0xBF, 0x10, 0x46, 0x96, 0x42, 0xB8, 0xBF, 0x16, 0x46, 0x1B, 0x68, 0x00, 0x2B, 0xF0, 0xD1, -0x60, 0xB9, 0x73, 0x10, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x87, 0x97, 0xF8, 0x4D, 0x20, 0x3B, 0x65, 0x42, 0xF0, -0x40, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0xD8, 0xE7, 0x00, 0x2E, 0xD6, 0xD1, 0x00, 0xEB, 0xD0, 0x73, 0x5B, 0x10, 0xED, 0xE7, -0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x23, 0x48, 0x2D, 0xE9, 0xF0, 0x41, 0x60, 0x22, -0x00, 0x21, 0x22, 0x4F, 0x06, 0x46, 0xE2, 0xF7, 0xD3, 0xFB, 0x00, 0x25, 0x3C, 0x46, 0xA8, 0x46, 0x00, 0x21, 0x1C, 0x22, -0x20, 0x46, 0xE2, 0xF7, 0xCB, 0xFB, 0xFF, 0x23, 0x02, 0x2D, 0xE3, 0x81, 0x23, 0x76, 0xE3, 0x76, 0x21, 0x46, 0x30, 0x46, -0x04, 0xD8, 0x05, 0xF0, 0x55, 0xFC, 0x01, 0x35, 0x1C, 0x34, 0xED, 0xE7, 0x03, 0x2D, 0x22, 0xD0, 0x04, 0x2D, 0xF8, 0xD1, -0x14, 0x48, 0x05, 0xF0, 0x47, 0xFC, 0x14, 0x48, 0x05, 0xF0, 0x44, 0xFC, 0x13, 0x49, 0x11, 0x48, 0x05, 0xF0, 0x44, 0xFC, -0x12, 0x49, 0x0F, 0x48, 0x05, 0xF0, 0x40, 0xFC, 0x11, 0x49, 0x0D, 0x48, 0x05, 0xF0, 0x3C, 0xFC, 0x10, 0x49, 0x0B, 0x48, -0x05, 0xF0, 0x38, 0xFC, 0x0F, 0x4A, 0x07, 0x4B, 0xD2, 0xF8, 0xAC, 0x10, 0xD0, 0x6B, 0x58, 0x63, 0x00, 0x22, 0xC3, 0xE9, -0x11, 0x12, 0xBD, 0xE8, 0xF0, 0x81, 0xA7, 0xF8, 0x5E, 0x80, 0x87, 0xF8, 0x59, 0x80, 0xD2, 0xE7, 0x30, 0x9D, 0x17, 0x00, -0x90, 0x9D, 0x17, 0x00, 0x48, 0x9D, 0x17, 0x00, 0x50, 0x9D, 0x17, 0x00, 0xF0, 0x9C, 0x17, 0x00, 0x00, 0x9D, 0x17, 0x00, -0x10, 0x9D, 0x17, 0x00, 0x20, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x43, 0x21, 0x4C, 0x24, 0x68, -0xB4, 0xF9, 0x00, 0x40, 0x83, 0xB0, 0x00, 0x2C, 0x9D, 0xF8, 0x28, 0x90, 0x9D, 0xF8, 0x2C, 0x80, 0x1D, 0x4C, 0x07, 0x46, -0x0D, 0x46, 0x16, 0x46, 0x27, 0xDB, 0x1C, 0x49, 0x84, 0xF8, 0x58, 0x70, 0x91, 0xF8, 0x58, 0x20, 0xA4, 0xF8, 0x5C, 0x50, -0xA4, 0xF8, 0x5A, 0x50, 0x42, 0xF0, 0x02, 0x07, 0x84, 0xF8, 0x60, 0x60, 0xFF, 0x25, 0x03, 0x26, 0x01, 0x20, 0xA3, 0x66, -0xD3, 0x06, 0x84, 0xF8, 0x61, 0x90, 0x84, 0xF8, 0x6E, 0x80, 0x81, 0xF8, 0x58, 0x70, 0x84, 0xF8, 0x6C, 0x60, 0xA4, 0xF8, -0x62, 0x50, 0x84, 0xF8, 0x64, 0x00, 0x05, 0xD4, 0x0D, 0x4B, 0x1B, 0x6C, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x94, 0xF8, 0x6C, 0x20, 0xFF, 0x2A, 0xD3, 0xD0, 0x08, 0x49, 0x08, 0x48, 0x01, 0x93, -0x40, 0xF6, 0x8C, 0x22, 0x07, 0xF0, 0x26, 0xF8, 0x01, 0x9B, 0xCA, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, -0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x48, 0xA2, 0x15, 0x00, 0xF0, 0xB5, 0x65, 0x4F, -0x04, 0x46, 0x83, 0xB0, 0x97, 0xF8, 0x80, 0x00, 0xE3, 0x68, 0x22, 0x78, 0x00, 0x90, 0x0E, 0x46, 0x08, 0x20, 0x61, 0x49, -0x06, 0xF0, 0xE0, 0xFD, 0x25, 0x78, 0x25, 0xB3, 0x01, 0x2D, 0x2F, 0xD1, 0x97, 0xF8, 0x88, 0x30, 0xFF, 0x2B, 0x1A, 0xD0, -0x97, 0xF8, 0x80, 0x30, 0x03, 0x2B, 0x2B, 0xD8, 0x01, 0x2B, 0x5A, 0x4C, 0x44, 0xD8, 0x09, 0xD1, 0x94, 0xF8, 0x58, 0x30, -0x07, 0xF1, 0x70, 0x00, 0x23, 0xF0, 0x05, 0x03, 0x84, 0xF8, 0x58, 0x30, 0xFE, 0xF7, 0xE4, 0xF9, 0x94, 0xF8, 0x58, 0x30, -0x03, 0xF0, 0x12, 0x02, 0xFF, 0x21, 0x10, 0x2A, 0x87, 0xF8, 0x88, 0x10, 0x24, 0xD0, 0x00, 0x25, 0x28, 0x46, 0x03, 0xB0, -0xF0, 0xBD, 0x97, 0xF8, 0x88, 0x30, 0xFF, 0x2B, 0x3A, 0xD0, 0x4B, 0x4A, 0x92, 0xF8, 0x58, 0x30, 0x99, 0x06, 0x03, 0xD5, -0x23, 0xF0, 0x20, 0x03, 0x82, 0xF8, 0x58, 0x30, 0x01, 0x25, 0x28, 0x46, 0x03, 0xB0, 0xF0, 0xBD, 0x04, 0x2B, 0x17, 0xD1, -0x44, 0x48, 0x45, 0x4D, 0xA0, 0xF1, 0x40, 0x04, 0xD5, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x00, 0x22, 0xD5, 0xF8, 0xAC, 0x30, -0x20, 0x6A, 0xA2, 0x64, 0x98, 0x47, 0xD1, 0xE7, 0x3E, 0x4A, 0x3F, 0x48, 0xD2, 0xF8, 0xD8, 0x21, 0x23, 0xF0, 0x10, 0x03, -0x84, 0xF8, 0x58, 0x30, 0x90, 0x47, 0xD0, 0xE7, 0x37, 0x4C, 0xC5, 0xE7, 0x94, 0xF8, 0x58, 0x30, 0xE2, 0x6A, 0x23, 0xF0, -0x04, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x2A, 0xB1, 0x07, 0xF1, 0x70, 0x03, 0x9A, 0x42, 0x50, 0xD0, 0x00, 0x23, 0xE3, 0x62, -0x33, 0x48, 0xFE, 0xF7, 0x99, 0xF9, 0xB3, 0xE7, 0x97, 0xF8, 0x80, 0x30, 0x04, 0x2B, 0xC0, 0xD0, 0x04, 0x20, 0x05, 0xF0, -0x5D, 0xF9, 0x01, 0x28, 0xBB, 0xD0, 0x04, 0x23, 0x87, 0xF8, 0x88, 0x30, 0xA3, 0x78, 0x87, 0xF8, 0x74, 0x30, 0xE3, 0x78, -0x87, 0xF8, 0x75, 0x30, 0xA3, 0x88, 0xE2, 0x88, 0xA7, 0xF8, 0x76, 0x30, 0x01, 0x21, 0x23, 0x89, 0x87, 0xF8, 0x80, 0x10, -0xA7, 0xF8, 0x78, 0x20, 0xE2, 0x68, 0xA7, 0xF8, 0x7A, 0x30, 0x4F, 0xF4, 0x7A, 0x73, 0x03, 0xFB, 0x02, 0xF3, 0x23, 0x2A, -0x84, 0xBF, 0xA3, 0xF5, 0x08, 0x43, 0xB8, 0x3B, 0xA7, 0xF8, 0x7E, 0x60, 0xC7, 0xF8, 0x84, 0x30, 0x63, 0x78, 0x17, 0x4A, -0x87, 0xF8, 0x8A, 0x30, 0x23, 0x7C, 0x87, 0xF8, 0x7C, 0x30, 0x16, 0x49, 0x92, 0xF8, 0x58, 0x30, 0x66, 0xB9, 0x43, 0xF0, -0x04, 0x03, 0xC9, 0x6D, 0x14, 0x48, 0x82, 0xF8, 0x58, 0x30, 0x88, 0x47, 0x13, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x04, 0x03, -0x13, 0x60, 0x8A, 0xE7, 0x43, 0xF0, 0x01, 0x03, 0x09, 0x6C, 0x82, 0xF8, 0x58, 0x30, 0x88, 0x47, 0xF2, 0xE7, 0x23, 0x6D, -0x93, 0x42, 0xAB, 0xD1, 0x08, 0x4B, 0x04, 0xF1, 0x40, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x00, 0x23, 0xA3, 0x64, -0xA2, 0xE7, 0x00, 0xBF, 0x90, 0x9D, 0x17, 0x00, 0x68, 0xA2, 0x15, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x70, 0x9D, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x60, 0x9D, 0x17, 0x00, 0x00, 0x9E, 0x17, 0x00, 0x94, 0x40, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x41, -0x36, 0x4E, 0x84, 0xB0, 0x04, 0x46, 0x0F, 0x46, 0x33, 0x46, 0x00, 0x25, 0x1A, 0x7E, 0xFF, 0x2A, 0x03, 0xD0, 0x1A, 0x79, -0x20, 0x78, 0x90, 0x42, 0x1B, 0xD0, 0x01, 0x35, 0x03, 0x2D, 0x03, 0xF1, 0x1C, 0x03, 0xF3, 0xD1, 0x2E, 0x48, 0x05, 0xF0, -0x15, 0xFB, 0x03, 0x46, 0x70, 0xB3, 0x2D, 0x4A, 0x86, 0x1B, 0xB6, 0x10, 0x02, 0xFB, 0x06, 0xF6, 0xF6, 0xB2, 0x06, 0x76, -0x3E, 0x70, 0x20, 0x68, 0x61, 0x68, 0x04, 0x33, 0x03, 0xC3, 0x22, 0x89, 0x1A, 0x80, 0x00, 0x20, 0x04, 0xB0, 0xBD, 0xE8, -0xF0, 0x81, 0xD9, 0x88, 0x62, 0x88, 0x8A, 0x42, 0xDF, 0xD1, 0x93, 0xF8, 0x05, 0xC0, 0x61, 0x78, 0x8C, 0x45, 0x08, 0xD0, -0x02, 0xD2, 0xBC, 0xF1, 0x03, 0x0F, 0x13, 0xD1, 0x8C, 0x45, 0xD4, 0xD9, 0x03, 0x29, 0xD2, 0xD0, 0x07, 0xE0, 0x19, 0x89, -0xA2, 0x88, 0x91, 0x42, 0xCD, 0xD1, 0x59, 0x89, 0xE2, 0x88, 0x91, 0x42, 0xC9, 0xD1, 0x3D, 0x70, 0x00, 0x20, 0xDF, 0xE7, -0x01, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0xDF, 0xF8, 0x48, 0xE0, 0xB4, 0xF8, 0x04, 0x80, 0xB4, 0xF8, 0x06, 0xC0, -0xDE, 0xF8, 0x28, 0x30, 0xC5, 0xEB, 0xC5, 0x04, 0x06, 0xEB, 0x84, 0x04, 0xA3, 0x42, 0x61, 0x71, 0xA4, 0xF8, 0x08, 0x80, -0xA4, 0xF8, 0x0A, 0xC0, 0xE5, 0xD1, 0x9E, 0xF8, 0x5A, 0x40, 0x01, 0x2C, 0xE1, 0xD1, 0x1C, 0x24, 0x04, 0xFB, 0x05, 0x66, -0x00, 0x24, 0x76, 0x7B, 0xCD, 0xF8, 0x00, 0xC0, 0xCD, 0xE9, 0x01, 0x64, 0x43, 0x46, 0xE3, 0xF7, 0xCF, 0xF9, 0xD4, 0xE7, -0x90, 0x9D, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0xB7, 0x6D, 0xDB, 0xB6, 0x2D, 0xE9, 0xF0, 0x41, 0xDF, 0xF8, 0x98, 0x80, -0x20, 0x4D, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0xC0, 0xEB, 0xC0, 0x06, 0x00, 0x2B, 0x04, 0x46, 0x05, 0xEB, -0x86, 0x06, 0x12, 0xDB, 0xC7, 0x00, 0x1B, 0x48, 0x31, 0x46, 0x3C, 0x1B, 0x05, 0xF0, 0x5C, 0xFA, 0x05, 0xEB, 0x84, 0x04, -0x30, 0x46, 0x1C, 0x22, 0x00, 0x21, 0xE2, 0xF7, 0xC1, 0xF9, 0xFF, 0x23, 0xE3, 0x81, 0x23, 0x76, 0xE3, 0x76, 0xBD, 0xE8, -0xF0, 0x81, 0xC0, 0xEB, 0xC0, 0x03, 0x05, 0xEB, 0x83, 0x03, 0xC7, 0x00, 0x1B, 0x7E, 0xFF, 0x2B, 0x0C, 0xD0, 0x3B, 0x1B, -0x05, 0xEB, 0x83, 0x03, 0x5B, 0x7E, 0x00, 0x2B, 0xDF, 0xD0, 0x0C, 0x49, 0x0C, 0x48, 0x40, 0xF6, 0x5C, 0x32, 0x06, 0xF0, -0x8F, 0xFE, 0xD8, 0xE7, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF6, 0x5A, 0x32, 0x06, 0xF0, 0x88, 0xFE, 0xD8, 0xF8, 0x00, 0x30, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE6, 0xDB, 0xCB, 0xE7, 0x00, 0xBF, 0x90, 0x9D, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x84, 0xA2, 0x15, 0x00, 0xA4, 0x88, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0xDF, 0xF8, 0x4C, 0x82, 0xDF, 0xF8, 0x24, 0xA2, 0xD8, 0xF8, 0x00, 0x20, 0x84, 0x4F, 0xB2, 0xF9, 0x00, 0x30, 0xC1, 0xEB, -0xC1, 0x06, 0x00, 0x2B, 0x85, 0xB0, 0x0C, 0x46, 0x05, 0x46, 0x0A, 0xEB, 0x86, 0x06, 0x5F, 0xDB, 0x4F, 0xEA, 0xC4, 0x0B, -0xAB, 0xEB, 0x04, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x4F, 0xF4, 0xA4, 0x63, 0x4A, 0x7E, 0xDF, 0xF8, 0x1C, 0x92, 0x01, 0x32, -0x03, 0xFB, 0x05, 0x73, 0xD2, 0xB2, 0x00, 0x20, 0x01, 0x2A, 0x4A, 0x76, 0x1E, 0x64, 0x83, 0xF8, 0x4D, 0x00, 0x6B, 0xD0, -0xDF, 0xF8, 0x04, 0x82, 0x99, 0xF8, 0x5B, 0x10, 0x99, 0xF8, 0x5A, 0x30, 0x4F, 0xF4, 0x80, 0x70, 0xCD, 0xE9, 0x00, 0x31, -0x6F, 0x49, 0x23, 0x46, 0x06, 0xF0, 0x12, 0xFC, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x05, 0x73, 0xFF, 0x21, 0x93, 0xF8, -0xC0, 0x24, 0x83, 0xF8, 0x4E, 0x10, 0x4A, 0xB1, 0x69, 0x49, 0x93, 0xF8, 0xC1, 0x24, 0x8C, 0x20, 0x00, 0xFB, 0x02, 0x12, -0x92, 0xF8, 0x70, 0x20, 0x01, 0x2A, 0x20, 0xD0, 0x65, 0x4B, 0x03, 0xF1, 0x54, 0x01, 0x1A, 0x7E, 0xFF, 0x2A, 0x03, 0xD0, -0xDA, 0x7E, 0xFF, 0x2A, 0x40, 0xF0, 0xAA, 0x80, 0x1C, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0xD8, 0xF8, 0xB4, 0x30, 0x30, 0x46, -0x98, 0x47, 0x5E, 0x4B, 0x1B, 0x7C, 0xAB, 0x42, 0x08, 0xD0, 0xFF, 0x2B, 0x06, 0xD0, 0xD8, 0xF8, 0x50, 0x30, 0x20, 0x46, -0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x93, 0xF8, 0x4D, 0x20, 0x42, 0xF0, -0x10, 0x02, 0x83, 0xF8, 0x4D, 0x20, 0xE4, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x73, 0x1B, 0x6C, 0x5B, 0xB1, -0x50, 0x49, 0x51, 0x48, 0x40, 0xF6, 0x6B, 0x32, 0x06, 0xF0, 0xF4, 0xFD, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x8D, 0xDA, 0xC4, 0xEB, 0xC4, 0x03, 0x0A, 0xEB, 0x83, 0x03, 0x4F, 0xEA, 0xC4, 0x0B, 0x1B, 0x7E, 0xFF, 0x2B, -0x86, 0xD1, 0x46, 0x49, 0x47, 0x48, 0x40, 0xF6, 0x6C, 0x32, 0x06, 0xF0, 0xDF, 0xFD, 0x7F, 0xE7, 0x99, 0xF8, 0x5A, 0x00, -0x0A, 0x74, 0x42, 0x1C, 0xD8, 0xF8, 0x00, 0x30, 0xD2, 0xB2, 0x89, 0xF8, 0x5A, 0x20, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x28, 0xDB, 0x02, 0x2A, 0x3C, 0xD0, 0x3E, 0x48, 0x31, 0x46, 0x05, 0xF0, 0x77, 0xF9, 0x99, 0xF8, 0x58, 0x30, 0x13, 0xF0, -0x0C, 0x0F, 0x0F, 0xD0, 0xD8, 0xF8, 0x00, 0x20, 0xD9, 0xF8, 0x20, 0x30, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x20, 0xDB, -0xAB, 0xEB, 0x04, 0x0B, 0x0A, 0xEB, 0x8B, 0x0A, 0x9E, 0x60, 0x9A, 0xF8, 0x19, 0x20, 0x6B, 0xE7, 0xD9, 0xF8, 0x2C, 0x30, -0x8B, 0xB3, 0xAB, 0xEB, 0x04, 0x0B, 0x0A, 0xEB, 0x8B, 0x0A, 0xDF, 0xF8, 0xD0, 0x80, 0x9A, 0xF8, 0x19, 0x20, 0xC9, 0xF8, -0x2C, 0x60, 0x5F, 0xE7, 0x02, 0x2A, 0xD4, 0xD9, 0x40, 0xF6, 0x81, 0x32, 0x25, 0x49, 0x29, 0x48, 0x06, 0xF0, 0xA0, 0xFD, -0x99, 0xF8, 0x5A, 0x20, 0xCB, 0xE7, 0x00, 0x2B, 0xDC, 0xD1, 0x21, 0x49, 0x25, 0x48, 0x03, 0x93, 0x4F, 0xF4, 0x39, 0x62, -0x06, 0xF0, 0x94, 0xFD, 0x03, 0x9B, 0xD3, 0xE7, 0x22, 0x48, 0x05, 0xF0, 0x37, 0xF9, 0x16, 0x4B, 0x03, 0xF5, 0xA4, 0x51, -0x93, 0xF8, 0x4D, 0x20, 0x22, 0xF0, 0x01, 0x02, 0x83, 0xF8, 0x4D, 0x20, 0x03, 0xF5, 0xA4, 0x63, 0x99, 0x42, 0xF5, 0xD1, -0xB1, 0xE7, 0xDF, 0xF8, 0x74, 0x80, 0xAB, 0xEB, 0x04, 0x0B, 0x0A, 0xEB, 0x8B, 0x0A, 0xD8, 0xF8, 0x9C, 0x30, 0x30, 0x46, -0x98, 0x47, 0x9A, 0xF8, 0x19, 0x20, 0x2B, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x72, 0x12, 0x6C, 0xB2, 0x42, -0x3F, 0xF4, 0x51, 0xAF, 0x03, 0xFB, 0x05, 0x77, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x10, 0x03, 0x87, 0xF8, 0x4D, 0x30, -0x47, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0xE0, 0xA2, 0x15, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, -0x00, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0xA2, 0x15, 0x00, 0xA4, 0x88, 0x15, 0x00, 0x38, 0x9D, 0x17, 0x00, -0xB8, 0xA2, 0x15, 0x00, 0xD4, 0xA2, 0x15, 0x00, 0x40, 0x9D, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0xBC, 0xA2, 0xDF, 0xF8, 0xB4, 0x82, 0xDA, 0xF8, 0x00, 0x30, -0x4F, 0xF4, 0xA4, 0x69, 0xB3, 0xF9, 0x00, 0x30, 0x09, 0xFB, 0x00, 0xF9, 0x08, 0xEB, 0x09, 0x02, 0x00, 0x2B, 0x14, 0x6C, -0x85, 0xB0, 0x05, 0x46, 0xC0, 0xF2, 0x99, 0x80, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x05, 0x86, 0x9A, 0x4F, 0x96, 0xF8, -0x4D, 0x00, 0x21, 0x7C, 0x97, 0xF8, 0x5A, 0x30, 0x62, 0x7E, 0x00, 0x93, 0xCD, 0xE9, 0x01, 0x01, 0x97, 0xF8, 0x5B, 0x30, -0x95, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0x06, 0xF0, 0xEF, 0xFA, 0x09, 0xF1, 0x44, 0x01, 0x07, 0xF1, 0x10, 0x00, 0x41, 0x44, -0x05, 0xF0, 0x0E, 0xF9, 0x96, 0xF8, 0x4D, 0x30, 0x23, 0xF0, 0x01, 0x02, 0x86, 0xF8, 0x4D, 0x20, 0x9A, 0x07, 0x09, 0xD5, -0x97, 0xF8, 0x5B, 0x30, 0x97, 0xF8, 0x5A, 0x20, 0x01, 0x3B, 0xDB, 0xB2, 0x01, 0x2A, 0x87, 0xF8, 0x5B, 0x30, 0x5D, 0xD9, -0xDF, 0xF8, 0x3C, 0xB2, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x05, 0x85, 0x00, 0x23, 0x85, 0xF8, 0x4D, 0x30, 0x2B, 0x64, -0x66, 0x7E, 0x23, 0x7C, 0x01, 0x3E, 0xF6, 0xB2, 0x66, 0x76, 0x00, 0x2B, 0x45, 0xD0, 0x95, 0xF8, 0x63, 0x30, 0xE2, 0x7E, -0x9A, 0x42, 0x00, 0xF0, 0x85, 0x80, 0x7C, 0x4B, 0x03, 0xF1, 0x54, 0x01, 0x1A, 0x7E, 0xFF, 0x2A, 0x03, 0xD0, 0xD8, 0x7E, -0xFF, 0x28, 0x40, 0xF0, 0xBD, 0x80, 0x1C, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0x00, 0x2E, 0x4E, 0xD0, 0xDB, 0xF8, 0xB4, 0x30, -0x20, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x97, 0xF8, 0x5A, 0x30, 0x00, 0x20, 0xB8, 0x62, 0x00, 0x2B, -0x59, 0xD0, 0x21, 0x7E, 0xDB, 0xF8, 0x9C, 0x50, 0x6C, 0x4A, 0x02, 0x29, 0x01, 0xF1, 0x01, 0x03, 0x00, 0xF0, 0xC0, 0x80, -0xC3, 0xEB, 0xC3, 0x06, 0x02, 0xEB, 0x86, 0x06, 0xD8, 0x00, 0x36, 0x7E, 0xFF, 0x2E, 0x40, 0xF0, 0xC3, 0x80, 0x01, 0x29, -0x01, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, 0xC3, 0xEB, 0xC3, 0x01, 0x02, 0xEB, 0x81, 0x01, 0xD8, 0x00, 0x09, 0x7E, -0xFF, 0x29, 0x08, 0xBF, 0x00, 0x20, 0x40, 0xF0, 0xB3, 0x80, 0xA8, 0x47, 0x66, 0x7E, 0x00, 0x2E, 0xCC, 0xD1, 0xDB, 0xF8, -0x48, 0x30, 0x20, 0x7E, 0x98, 0x47, 0xC7, 0xE7, 0x00, 0x2B, 0x9F, 0xD1, 0x97, 0xF8, 0x58, 0x30, 0xDF, 0xF8, 0x78, 0xB1, -0x5B, 0x06, 0x9B, 0xD5, 0x38, 0x6D, 0xDB, 0xF8, 0x5C, 0x30, 0x98, 0x47, 0x96, 0xE7, 0x00, 0x2C, 0x7F, 0xF4, 0x64, 0xAF, -0x51, 0x49, 0x52, 0x48, 0x40, 0xF6, 0xC4, 0x32, 0x06, 0xF0, 0x8C, 0xFC, 0x5C, 0xE7, 0x50, 0x48, 0x21, 0x46, 0x05, 0xF0, -0x83, 0xF8, 0x26, 0x74, 0x97, 0xF8, 0x5A, 0x30, 0xDA, 0xF8, 0x00, 0x20, 0x01, 0x3B, 0xDB, 0xB2, 0x87, 0xF8, 0x5A, 0x30, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x0A, 0xDB, 0x03, 0xBB, 0xBB, 0x6A, 0xA3, 0x42, 0xA2, 0xD0, 0xFB, 0x6A, 0xA3, 0x42, -0x31, 0xD0, 0x66, 0x7E, 0x00, 0x2E, 0xC8, 0xD0, 0x94, 0xE7, 0x01, 0x2B, 0xF2, 0xD9, 0x3F, 0x49, 0x41, 0x48, 0x4F, 0xF4, -0x40, 0x62, 0x06, 0xF0, 0x67, 0xFC, 0x97, 0xF8, 0x5A, 0x30, 0xE9, 0xE7, 0xDB, 0xF8, 0x94, 0x30, 0x08, 0xEB, 0x09, 0x00, -0x98, 0x47, 0x66, 0x7E, 0xFF, 0x23, 0xE3, 0x76, 0x00, 0x2E, 0x7F, 0xF4, 0x7F, 0xAF, 0xCC, 0xE7, 0x38, 0x48, 0x04, 0xF0, -0xFD, 0xFF, 0x38, 0x4B, 0x03, 0xF5, 0xA4, 0x51, 0x93, 0xF8, 0x4D, 0x20, 0x22, 0xF0, 0x01, 0x02, 0x83, 0xF8, 0x4D, 0x20, -0x03, 0xF5, 0xA4, 0x63, 0x99, 0x42, 0xF5, 0xD1, 0x3B, 0x6D, 0x00, 0x2B, 0xCB, 0xD1, 0xDB, 0xF8, 0x34, 0x30, 0x98, 0x47, -0xC7, 0xE7, 0x21, 0x7E, 0x27, 0x4A, 0x02, 0x29, 0x01, 0xF1, 0x01, 0x03, 0x29, 0xD0, 0xC3, 0xEB, 0xC3, 0x05, 0x02, 0xEB, -0x85, 0x05, 0xD8, 0x00, 0x2D, 0x7E, 0xFF, 0x2D, 0x35, 0xD1, 0x01, 0x29, 0x01, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, -0xC3, 0xEB, 0xC3, 0x01, 0x02, 0xEB, 0x81, 0x01, 0xD8, 0x00, 0x09, 0x7E, 0xFF, 0x29, 0x08, 0xBF, 0x00, 0x22, 0x26, 0xD1, -0xFA, 0x62, 0xAE, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x80, 0x03, 0x6C, 0xA3, 0x42, 0x3F, 0xF4, 0x3E, 0xAF, -0x66, 0xB1, 0xDB, 0xF8, 0x8C, 0x30, 0x98, 0x47, 0x66, 0x7E, 0x00, 0x2E, 0x7F, 0xF4, 0x38, 0xAF, 0x85, 0xE7, 0x13, 0x7E, -0xFF, 0x2B, 0x0E, 0xD1, 0x01, 0x23, 0xDD, 0xE7, 0xDB, 0xF8, 0x94, 0x30, 0x98, 0x47, 0x66, 0x7E, 0x00, 0x2E, 0x7F, 0xF4, -0x2B, 0xAF, 0x78, 0xE7, 0x13, 0x7E, 0xFF, 0x2B, 0x07, 0xD1, 0x01, 0x23, 0x48, 0xE7, 0x00, 0x23, 0x18, 0x46, 0xC3, 0x1A, -0x02, 0xEB, 0x83, 0x02, 0xD4, 0xE7, 0x03, 0x46, 0xC0, 0x1A, 0x02, 0xEB, 0x80, 0x00, 0x48, 0xE7, 0x30, 0x9D, 0x17, 0x00, -0x08, 0xA3, 0x15, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xF8, 0xA2, 0x15, 0x00, 0x38, 0x9D, 0x17, 0x00, -0x28, 0xA3, 0x15, 0x00, 0x40, 0x9D, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x43, 0x03, 0x46, 0x05, 0x78, 0x29, 0x4E, 0x2A, 0x4A, 0x04, 0x46, 0x53, 0xF8, 0x02, 0x0F, 0x97, 0x6A, -0x59, 0x68, 0xB3, 0xF8, 0x08, 0xC0, 0xC5, 0xEB, 0xC5, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x04, 0x33, 0x03, 0xC3, 0xC5, 0xEB, -0xC5, 0x02, 0x06, 0xEB, 0x82, 0x02, 0x97, 0x42, 0x85, 0xB0, 0xA3, 0xF8, 0x00, 0xC0, 0x02, 0xD0, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x83, 0x4F, 0xEA, 0xC5, 0x08, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x1A, 0x4F, 0xDF, 0xF8, 0x68, 0x90, 0x3B, 0x68, 0xD9, 0xF8, 0xA0, 0x22, 0x01, 0x33, 0x3B, 0x60, 0x90, 0x47, -0xD9, 0xF8, 0x88, 0x32, 0x00, 0x20, 0x98, 0x47, 0x3B, 0x68, 0x33, 0xB1, 0x11, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, -0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xE2, 0x7A, 0x23, 0x89, 0x00, 0x93, 0x00, 0x21, 0xCD, 0xE9, 0x01, 0x21, 0xA8, 0xEB, -0x05, 0x05, 0xE3, 0x88, 0xA0, 0x78, 0xA2, 0x88, 0xE1, 0x78, 0x06, 0xEB, 0x85, 0x06, 0xE2, 0xF7, 0x91, 0xFE, 0xD9, 0xF8, -0x3C, 0x33, 0x96, 0xF9, 0x0C, 0x00, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, 0x00, 0xBF, 0x90, 0x9D, 0x17, 0x00, -0x30, 0x9D, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x12, 0x4D, -0x12, 0x4A, 0x2B, 0x7C, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x03, 0x24, 0x06, 0x46, 0x22, 0x6C, 0x4A, 0xB1, 0x0F, 0x4C, -0x18, 0x46, 0x63, 0x6D, 0x98, 0x47, 0xE3, 0x6C, 0x28, 0x7C, 0x31, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x05, 0x22, -0x11, 0x46, 0x02, 0x23, 0x41, 0xF2, 0x17, 0x40, 0x04, 0xF0, 0x7E, 0xFA, 0x01, 0x22, 0x02, 0x70, 0x94, 0xF8, 0x63, 0x20, -0x42, 0x70, 0x04, 0xF0, 0xA7, 0xFA, 0x03, 0x4C, 0xE9, 0xE7, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x6B, 0x4D, 0x2C, 0x69, 0x07, 0x46, 0x8B, 0x46, 0x91, 0x46, 0x8C, 0xB3, -0x63, 0x68, 0xD0, 0xF8, 0x40, 0xA0, 0xD5, 0xF8, 0x28, 0x80, 0x8B, 0x42, 0x12, 0xD0, 0x05, 0xF1, 0x10, 0x06, 0xA3, 0xEB, -0x0B, 0x03, 0x00, 0x2B, 0x21, 0x46, 0x30, 0x46, 0x26, 0xDA, 0x04, 0xF0, 0x33, 0xFF, 0x63, 0x7A, 0x23, 0xF0, 0x01, 0x03, -0x63, 0x72, 0x2C, 0x69, 0xF4, 0xB1, 0x63, 0x68, 0x5B, 0x45, 0xEE, 0xD1, 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x4F, 0xF0, -0x00, 0x04, 0x1B, 0xD8, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x02, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x95, 0xF8, 0x5B, 0x30, -0xB8, 0xEB, 0x0A, 0x00, 0x03, 0xF1, 0x01, 0x03, 0x18, 0xBF, 0x01, 0x20, 0x85, 0xF8, 0x5B, 0x30, 0xBD, 0xE8, 0xF8, 0x8F, -0xD0, 0xF8, 0x40, 0xA0, 0xD5, 0xF8, 0x28, 0x80, 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x4F, 0xF0, 0x01, 0x04, 0xE3, 0xD9, -0x97, 0xF8, 0x4E, 0x30, 0xFF, 0x2B, 0x26, 0xD0, 0x49, 0x4E, 0x59, 0x46, 0x73, 0x6F, 0x38, 0x46, 0x98, 0x47, 0x00, 0x2C, -0x41, 0xD0, 0x97, 0xF8, 0x4D, 0x30, 0x97, 0xF8, 0xC0, 0x24, 0x43, 0xF0, 0x04, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x82, 0xB1, -0x42, 0x4A, 0x97, 0xF8, 0xC1, 0x34, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x06, 0xD1, -0xBB, 0x6C, 0x4B, 0x45, 0x03, 0xD0, 0xA3, 0xEB, 0x09, 0x02, 0x32, 0x2A, 0x5D, 0xD4, 0xB8, 0xEB, 0x0A, 0x00, 0x18, 0xBF, -0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x8F, 0x97, 0xF8, 0xC0, 0x34, 0xB3, 0xB3, 0x35, 0x4A, 0x97, 0xF8, 0xC1, 0x34, 0x8C, 0x21, -0x01, 0xFB, 0x03, 0x21, 0x91, 0xF8, 0x70, 0x10, 0x01, 0x29, 0x35, 0xD0, 0x00, 0x2C, 0x4F, 0xD1, 0x30, 0x48, 0x07, 0xF1, -0x44, 0x01, 0x04, 0xF0, 0xC9, 0xFE, 0x97, 0xF8, 0x4D, 0x30, 0x03, 0xF0, 0xFE, 0x03, 0x43, 0xF0, 0x02, 0x03, 0x87, 0xF8, -0x4D, 0x30, 0x95, 0xF8, 0x5B, 0x30, 0x01, 0x33, 0x85, 0xF8, 0x5B, 0x30, 0xD7, 0xE7, 0x97, 0xF8, 0xC0, 0x34, 0x00, 0x2B, -0xE8, 0xD0, 0x24, 0x4A, 0x97, 0xF8, 0xC1, 0x34, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x70, 0x30, 0x01, 0x2B, -0xDE, 0xD1, 0xF3, 0x6A, 0x49, 0x46, 0x00, 0x22, 0x38, 0x46, 0x98, 0x47, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x08, 0x03, -0xDD, 0xE7, 0x00, 0x2C, 0xD2, 0xD0, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x04, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0xB6, 0xE7, -0x97, 0xF8, 0x4D, 0x10, 0xC8, 0x06, 0x0B, 0xD5, 0x12, 0x4E, 0x38, 0x46, 0xD6, 0xF8, 0x8C, 0x30, 0x98, 0x47, 0x97, 0xF8, -0x4D, 0x30, 0x23, 0xF0, 0x10, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x8A, 0xE7, 0x4E, 0x06, 0x10, 0xD4, 0x54, 0xB9, 0x0B, 0x4E, -0xD7, 0xE7, 0xA9, 0xEB, 0x03, 0x03, 0x32, 0x2B, 0x9D, 0xD5, 0xC7, 0xF8, 0x48, 0x90, 0x9A, 0xE7, 0x97, 0xF8, 0x4D, 0x10, -0x41, 0xF0, 0x04, 0x01, 0x87, 0xF8, 0x4D, 0x10, 0x85, 0xE7, 0x03, 0x4E, 0x38, 0x46, 0x33, 0x6F, 0x98, 0x47, 0x72, 0xE7, -0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x40, 0x9D, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x4D, 0x4D, 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x2B, 0xD9, 0x90, 0xF8, 0x4D, 0x20, 0x04, 0x46, 0xD0, 0x06, 0x0F, 0xD5, -0x49, 0x4B, 0x03, 0xF1, 0x54, 0x00, 0x19, 0x7E, 0xFF, 0x29, 0x02, 0xD0, 0xD9, 0x7E, 0xFF, 0x29, 0x3B, 0xD1, 0x1C, 0x33, -0x98, 0x42, 0xF6, 0xD1, 0x02, 0xF0, 0xEF, 0x02, 0x84, 0xF8, 0x4D, 0x20, 0x91, 0x07, 0x14, 0xD4, 0x53, 0x07, 0x6E, 0x6A, -0x44, 0xBF, 0x22, 0xF0, 0x04, 0x02, 0x84, 0xF8, 0x4D, 0x20, 0x26, 0xB1, 0xF2, 0x68, 0x04, 0xF1, 0x44, 0x03, 0x9A, 0x42, -0x09, 0xD0, 0x3B, 0x4B, 0x61, 0x6A, 0xDB, 0x6A, 0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xBD, 0xE8, -0xF0, 0x81, 0xD4, 0xF8, 0x48, 0x80, 0x67, 0x6A, 0xA8, 0xEB, 0x07, 0x03, 0x00, 0x2B, 0x20, 0xDB, 0xA7, 0xEB, 0x08, 0x03, -0x00, 0x2B, 0x29, 0xDB, 0x30, 0x4D, 0x6B, 0x6B, 0x98, 0x47, 0xEB, 0x6A, 0x61, 0x6A, 0x20, 0x46, 0x00, 0x22, 0x98, 0x47, -0x2D, 0x4A, 0xD5, 0xF8, 0x84, 0x30, 0x11, 0x69, 0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x2A, 0x4A, -0x27, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x01, 0x20, 0xD3, 0xF8, 0x8C, 0x30, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x20, -0xBA, 0xE7, 0xE2, 0xF7, 0xA5, 0xFD, 0xA7, 0xF5, 0x7A, 0x67, 0xA7, 0xEB, 0x08, 0x07, 0x38, 0x1A, 0x00, 0x28, 0x0C, 0xDB, -0x67, 0x6A, 0xD4, 0xF8, 0x48, 0x80, 0xD1, 0xE7, 0xE2, 0xF7, 0x98, 0xFD, 0xA8, 0xF5, 0x7A, 0x68, 0xA8, 0xEB, 0x07, 0x07, -0x3F, 0x1A, 0x00, 0x2F, 0xCC, 0xDA, 0x67, 0x6A, 0xA7, 0x64, 0xE2, 0xF7, 0x8D, 0xFD, 0x73, 0x68, 0xFF, 0x1A, 0x3F, 0x1A, -0xB7, 0xF5, 0x7A, 0x6F, 0xB5, 0xD5, 0xA4, 0x6C, 0xE2, 0xF7, 0x84, 0xFD, 0xAB, 0x6C, 0xA4, 0xF5, 0x7A, 0x64, 0x24, 0x1A, -0xB3, 0x42, 0x74, 0x60, 0xAB, 0xD1, 0x0D, 0x4C, 0x0F, 0x48, 0xD4, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x0B, 0x4B, 0x71, 0x68, -0x1B, 0x69, 0xAE, 0x64, 0xCB, 0x1A, 0x14, 0x2B, 0x05, 0xD4, 0xD4, 0xF8, 0xE0, 0x31, 0x09, 0x48, 0xBD, 0xE8, 0xF0, 0x41, -0x18, 0x47, 0x6B, 0x6C, 0x30, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x30, 0x9D, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x18, 0x88, 0x17, 0x00, 0x70, 0x9D, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x45, 0x4D, 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x04, 0x46, 0x90, 0xF8, 0x4D, 0x30, 0x51, 0xD9, 0x9E, 0x06, 0x04, 0xD5, -0x41, 0x4B, 0x9B, 0x6F, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, 0x67, 0x6A, 0x13, 0xF0, 0x04, 0x06, 0x3D, 0xD1, 0x99, 0x07, -0x42, 0xD5, 0x03, 0xF0, 0xFD, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0x95, 0xF8, 0x5B, 0x20, 0x01, 0x3A, 0xD2, 0xB2, 0x85, 0xF8, -0x5B, 0x20, 0x4A, 0xB9, 0x95, 0xF8, 0x58, 0x20, 0x52, 0x06, 0x5B, 0xD5, 0x34, 0x4B, 0x28, 0x6D, 0xDB, 0x6D, 0x98, 0x47, -0x94, 0xF8, 0x4D, 0x30, 0xD4, 0xF8, 0x48, 0x80, 0x13, 0xF0, 0x08, 0x02, 0x42, 0xD0, 0x94, 0xF8, 0x62, 0x20, 0x23, 0xF0, -0x08, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0x00, 0x2A, 0x4A, 0xD0, 0x02, 0x2A, 0x0A, 0xBF, 0xB4, 0xF8, 0xD2, 0x30, 0x4F, 0xF4, -0xC8, 0x33, 0x9B, 0x02, 0xA8, 0xEB, 0x03, 0x08, 0xB6, 0xB1, 0xEB, 0x6A, 0x26, 0x4A, 0x15, 0x69, 0x93, 0xB9, 0x24, 0x4E, -0x73, 0x6B, 0x98, 0x47, 0xD6, 0xF8, 0x84, 0x30, 0xA5, 0xEB, 0x08, 0x02, 0x29, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, -0x18, 0x47, 0x13, 0xF0, 0x01, 0x02, 0x23, 0xD0, 0x23, 0xF0, 0x04, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0xBD, 0xE8, 0xF0, 0x81, -0x9A, 0x07, 0xFB, 0xD5, 0x23, 0xF0, 0x02, 0x03, 0x80, 0xF8, 0x4D, 0x30, 0x95, 0xF8, 0x5B, 0x30, 0x01, 0x3B, 0xDB, 0xB2, -0x85, 0xF8, 0x5B, 0x30, 0x00, 0x2B, 0xEF, 0xD1, 0x95, 0xF8, 0x58, 0x30, 0x5F, 0x06, 0xEB, 0xD5, 0x10, 0x4B, 0x28, 0x6D, -0xDB, 0x6D, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x0D, 0x4B, 0x39, 0x46, 0xDB, 0x6A, 0x20, 0x46, 0x98, 0x47, 0xC7, 0xE7, -0x0A, 0x4B, 0x39, 0x46, 0xDB, 0x6A, 0x20, 0x46, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, 0xD3, 0xE7, 0x01, 0x26, 0xA7, 0xE7, -0x07, 0x4A, 0x94, 0xF8, 0x6C, 0x30, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x9B, 0x68, 0xB2, 0xE7, 0x00, 0xBF, -0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, 0x28, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x2D, 0xE9, 0xF0, 0x41, 0x07, 0x6C, 0x05, 0x46, 0x3E, 0xDB, 0x24, 0x4E, 0x96, 0xF8, -0x58, 0x20, 0x12, 0xF0, 0x20, 0x04, 0x03, 0xD1, 0x96, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x01, 0xD8, 0xBD, 0xE8, 0xF0, 0x81, -0x14, 0x23, 0x22, 0x46, 0x21, 0x46, 0x46, 0x20, 0x95, 0xF8, 0x6C, 0x80, 0x04, 0xF0, 0x2E, 0xF8, 0x04, 0x70, 0x95, 0xF8, -0x63, 0x10, 0x41, 0x70, 0x39, 0x79, 0x19, 0x4A, 0x81, 0x70, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x08, 0x28, 0x7A, 0x79, -0xC2, 0x70, 0xD8, 0xF8, 0x08, 0x20, 0x15, 0x4D, 0xB7, 0xF8, 0x06, 0xC0, 0x3C, 0x89, 0x79, 0x89, 0x01, 0x81, 0xA2, 0xF5, -0x9C, 0x52, 0x08, 0x3A, 0xA5, 0xFB, 0x02, 0x52, 0x92, 0x09, 0xA0, 0xF8, 0x04, 0xC0, 0xC4, 0x80, 0xC2, 0x60, 0x3A, 0x7B, -0x02, 0x74, 0x04, 0xF0, 0x3B, 0xF8, 0x96, 0xF8, 0x58, 0x30, 0x43, 0xF0, 0x20, 0x03, 0x86, 0xF8, 0x58, 0x30, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0x2F, 0xBE, 0xD1, 0x07, 0x49, 0x07, 0x48, 0x40, 0xF6, 0x71, 0x52, 0x06, 0xF0, 0xDD, 0xF8, 0xB7, 0xE7, -0x38, 0x36, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xD3, 0x4D, 0x62, 0x10, 0x70, 0x79, 0x15, 0x00, -0xC8, 0xA0, 0x15, 0x00, 0x70, 0x47, 0x00, 0xBF, 0x0A, 0x4B, 0x9B, 0x6A, 0x83, 0xB1, 0x1A, 0x7E, 0x02, 0x2A, 0x05, 0xD8, -0x00, 0x6C, 0xC0, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x9B, 0x7E, 0x90, 0xF8, 0x63, 0x00, 0x18, 0x1A, -0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x18, 0x46, 0x70, 0x47, 0x30, 0x9D, 0x17, 0x00, 0x10, 0x4A, 0x93, 0x6A, -0xDB, 0xB1, 0x19, 0x7E, 0x02, 0x29, 0x0E, 0xD8, 0x00, 0x6C, 0xC0, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x88, 0xB1, -0xD2, 0x6A, 0x7A, 0xB1, 0x18, 0x7C, 0xA0, 0xF1, 0x06, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x90, 0xF8, -0x63, 0x10, 0x98, 0x7E, 0x40, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x00, 0x28, 0xED, 0xD1, 0x70, 0x47, 0x18, 0x46, -0x70, 0x47, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, 0x0E, 0x4B, 0x9B, 0x6A, 0x23, 0xB1, 0x02, 0x6C, 0x98, 0x88, 0x91, 0x88, -0x88, 0x42, 0x01, 0xD0, 0x00, 0x20, 0x70, 0x47, 0x58, 0x7B, 0x51, 0x7B, 0x88, 0x42, 0xF9, 0xD1, 0xD8, 0x88, 0xD1, 0x88, -0x88, 0x42, 0xF5, 0xD1, 0x18, 0x89, 0x11, 0x89, 0x88, 0x42, 0xF1, 0xD1, 0x5B, 0x89, 0x50, 0x89, 0x18, 0x1A, 0xB0, 0xFA, -0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, 0x43, 0x7E, 0xDB, 0xB1, 0x0E, 0x4B, 0x30, 0xB4, -0x7F, 0x21, 0x03, 0xF5, 0xA4, 0x54, 0x1A, 0x6C, 0x82, 0x42, 0x08, 0xD0, 0x03, 0xF5, 0xA4, 0x63, 0xA3, 0x42, 0xF8, 0xD1, -0x7F, 0x29, 0x30, 0xBC, 0x18, 0xBF, 0x01, 0x73, 0x70, 0x47, 0x93, 0xF9, 0x66, 0x20, 0x93, 0xF9, 0x65, 0x50, 0xAA, 0x42, -0xA8, 0xBF, 0x2A, 0x46, 0x91, 0x42, 0xA8, 0xBF, 0x11, 0x46, 0xEB, 0xE7, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x70, 0xB5, 0x11, 0x4E, 0x11, 0x4A, 0xD6, 0xF8, 0x4C, 0x32, 0x04, 0x46, 0x98, 0x47, 0xD0, 0xB1, 0x0F, 0x4B, 0x10, 0x4D, -0x5B, 0x78, 0x00, 0x22, 0x2A, 0x77, 0x23, 0xB1, 0x0E, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x2B, 0x7A, -0x0B, 0xB1, 0x01, 0x3B, 0x2B, 0x72, 0xD6, 0xF8, 0xD8, 0x31, 0x0A, 0x48, 0x98, 0x47, 0x00, 0x23, 0x6B, 0x77, 0x63, 0x68, -0x23, 0xF4, 0x01, 0x73, 0x23, 0xF0, 0x02, 0x03, 0x63, 0x60, 0x70, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0xDD, 0xEA, 0x13, 0x00, -0x4C, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, 0x28, 0x9E, 0x17, 0x00, 0x70, 0xB5, 0x14, 0x4D, -0x14, 0x4A, 0xD5, 0xF8, 0x4C, 0x32, 0x04, 0x46, 0x98, 0x47, 0xF8, 0xB1, 0x12, 0x4A, 0x13, 0x4B, 0x52, 0x78, 0x01, 0x21, -0x19, 0x77, 0x22, 0xB1, 0x11, 0x49, 0x0A, 0x68, 0x22, 0xF0, 0x00, 0x42, 0x0A, 0x60, 0x1A, 0x7A, 0x0A, 0xB1, 0x01, 0x3A, -0x1A, 0x72, 0x0E, 0x4A, 0x0E, 0x49, 0x12, 0x68, 0x09, 0x69, 0xD0, 0x8E, 0x5C, 0x61, 0x04, 0x26, 0x5E, 0x77, 0x01, 0x44, -0xD5, 0xF8, 0xE0, 0x21, 0x0A, 0x48, 0x90, 0x47, 0x63, 0x68, 0x43, 0xF4, 0x00, 0x73, 0x63, 0x60, 0x70, 0xBD, 0x00, 0xBF, -0x88, 0x1A, 0x17, 0x00, 0x3D, 0xEB, 0x13, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, -0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x28, 0x9E, 0x17, 0x00, 0x38, 0xB5, 0x10, 0x4A, 0x0B, 0x46, 0x0C, 0x46, -0x05, 0x46, 0x0F, 0x49, 0x02, 0x20, 0x05, 0xF0, 0xB3, 0xFD, 0x0E, 0x4B, 0x0E, 0x4A, 0xD3, 0xF8, 0x4C, 0x32, 0x21, 0x46, -0x28, 0x46, 0x98, 0x47, 0x30, 0xB1, 0x0C, 0x4A, 0x13, 0x7A, 0x23, 0xB1, 0x01, 0x3B, 0xDB, 0xB2, 0x13, 0x72, 0x03, 0xB1, -0x38, 0xBD, 0x01, 0x23, 0x13, 0x70, 0x51, 0x88, 0xBD, 0xE8, 0x38, 0x40, 0x00, 0x22, 0x32, 0x20, 0x03, 0xF0, 0x4A, 0xBF, -0x68, 0xA3, 0x15, 0x00, 0x44, 0xA3, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xB1, 0xEB, 0x13, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0x38, 0xB5, 0x18, 0x4A, 0x0B, 0x46, 0x0C, 0x46, 0x05, 0x46, 0x17, 0x49, 0x02, 0x20, 0x05, 0xF0, 0x87, 0xFD, 0x16, 0x4B, -0x16, 0x4A, 0xD3, 0xF8, 0x4C, 0x32, 0x21, 0x46, 0x28, 0x46, 0x98, 0x47, 0xF8, 0xB1, 0x14, 0x48, 0x03, 0x7A, 0xBB, 0xB9, -0x13, 0x4B, 0x9B, 0x68, 0x63, 0xB1, 0x93, 0xF8, 0x62, 0x20, 0x32, 0xB9, 0x93, 0xF8, 0x64, 0x20, 0x1A, 0xB1, 0x5A, 0x68, -0x22, 0xF0, 0x0E, 0x02, 0x5A, 0x60, 0x1B, 0x68, 0x00, 0x2B, 0xF2, 0xD1, 0x00, 0x22, 0x02, 0x70, 0x41, 0x88, 0xBD, 0xE8, -0x38, 0x40, 0x32, 0x20, 0x03, 0xF0, 0x14, 0xBF, 0x01, 0x3B, 0xDB, 0xB2, 0x03, 0x72, 0x00, 0x2B, 0xE2, 0xD0, 0x38, 0xBD, -0x78, 0xA3, 0x15, 0x00, 0x44, 0xA3, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x09, 0xEC, 0x13, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0x00, 0x88, 0x17, 0x00, 0x38, 0xB5, 0x11, 0xF4, 0x00, 0x03, 0x04, 0x46, 0x2A, 0xD1, 0x90, 0xF8, 0x6B, 0x00, 0x25, 0x49, -0x01, 0x30, 0xC0, 0xB2, 0x09, 0x68, 0x84, 0xF8, 0x6B, 0x00, 0x49, 0x78, 0x81, 0x42, 0x29, 0xD0, 0x94, 0xF8, 0x64, 0x50, -0x00, 0x2D, 0x34, 0xD1, 0x1F, 0x4A, 0x20, 0x4B, 0x52, 0x78, 0x01, 0x21, 0x19, 0x77, 0x22, 0xB1, 0x1E, 0x49, 0x0A, 0x68, -0x22, 0xF0, 0x00, 0x42, 0x0A, 0x60, 0x1A, 0x7A, 0x0A, 0xB1, 0x01, 0x3A, 0x1A, 0x72, 0x1B, 0x4A, 0x1B, 0x48, 0xD2, 0xF8, -0xD8, 0x21, 0x00, 0x21, 0x59, 0x77, 0x90, 0x47, 0x63, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x63, 0x60, 0x28, 0x46, 0x38, 0xBD, -0x28, 0xB1, 0x00, 0x23, 0x01, 0x25, 0x80, 0xF8, 0x6B, 0x30, 0x28, 0x46, 0x38, 0xBD, 0x01, 0x25, 0x28, 0x46, 0x38, 0xBD, -0x11, 0x49, 0x84, 0xF8, 0x6B, 0x30, 0x4F, 0xF4, 0x80, 0x60, 0x05, 0xF0, 0x11, 0xFD, 0x0C, 0x4B, 0x20, 0x46, 0xD3, 0xF8, -0xBC, 0x31, 0x01, 0x25, 0x98, 0x47, 0x28, 0x46, 0x38, 0xBD, 0x11, 0x46, 0x1D, 0x46, 0x94, 0xF8, 0x6C, 0x00, 0x22, 0x46, -0xF1, 0xF7, 0xD0, 0xF9, 0x28, 0x46, 0x38, 0xBD, 0xC8, 0x35, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0x34, 0x04, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x28, 0x9E, 0x17, 0x00, 0x4C, 0xA3, 0x15, 0x00, 0x70, 0xB5, 0x13, 0x4D, -0x2B, 0x78, 0x13, 0xB3, 0x2B, 0x7F, 0x03, 0xB3, 0x11, 0x4A, 0x12, 0x49, 0x13, 0x68, 0x8C, 0x68, 0x43, 0xF0, 0x04, 0x03, -0x00, 0x21, 0x13, 0x60, 0x29, 0x72, 0xB4, 0xB1, 0x0E, 0x4E, 0x94, 0xF8, 0x62, 0x30, 0x7B, 0xB9, 0x94, 0xF8, 0x64, 0x30, -0x63, 0xB1, 0x94, 0xF8, 0x6C, 0x00, 0xFF, 0x28, 0x22, 0x46, 0x07, 0xD0, 0xD6, 0xF8, 0x34, 0x12, 0xF1, 0xF7, 0xA0, 0xF9, -0x10, 0xB9, 0x2B, 0x7A, 0x01, 0x33, 0x2B, 0x72, 0x24, 0x68, 0x00, 0x2C, 0xE9, 0xD1, 0x70, 0xBD, 0x1C, 0x9E, 0x17, 0x00, -0x4C, 0x00, 0x32, 0x40, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x12, 0x4D, 0x2B, 0x7F, 0xFB, 0xB9, -0x11, 0x49, 0x12, 0x48, 0x0A, 0x68, 0x84, 0x68, 0x2B, 0x72, 0x22, 0xF0, 0x04, 0x02, 0x0A, 0x60, 0xB4, 0xB1, 0x0F, 0x4E, -0x94, 0xF8, 0x62, 0x30, 0x7B, 0xB9, 0x94, 0xF8, 0x64, 0x30, 0x63, 0xB1, 0x94, 0xF8, 0x6C, 0x00, 0xFF, 0x28, 0x22, 0x46, -0x07, 0xD0, 0xD6, 0xF8, 0x58, 0x12, 0xF1, 0xF7, 0x73, 0xF9, 0x10, 0xB9, 0x2B, 0x7A, 0x01, 0x33, 0x2B, 0x72, 0x24, 0x68, -0x00, 0x2C, 0xE9, 0xD1, 0x70, 0xBD, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x00, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x2E, 0x4B, 0x2E, 0x4D, 0x1B, 0x68, 0x2E, 0x4A, 0x1B, 0x78, 0xD2, 0xF8, 0xF8, 0x21, -0x01, 0x2B, 0x6B, 0x68, 0x04, 0x46, 0x03, 0xF0, 0x20, 0x03, 0x44, 0xD0, 0x13, 0x43, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, -0x94, 0xF8, 0xAC, 0x30, 0x53, 0xB1, 0x27, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x13, 0xB1, 0x94, 0xF8, 0x64, 0x30, 0x33, 0xBB, -0x00, 0x23, 0x6B, 0x77, 0x63, 0x60, 0x70, 0xBD, 0x21, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x00, 0x2B, 0xF6, 0xD0, 0x94, 0xF8, -0x64, 0x30, 0x00, 0x2B, 0xF2, 0xD0, 0xC0, 0xB1, 0x1D, 0x4B, 0x1A, 0x68, 0x92, 0x01, 0x05, 0xD4, 0x1B, 0x68, 0x9B, 0x01, -0x11, 0xD4, 0x95, 0xF8, 0x24, 0x30, 0x73, 0xB1, 0x6B, 0x7F, 0x05, 0x2B, 0x05, 0xD1, 0x63, 0x68, 0x00, 0x22, 0x23, 0xF0, -0x02, 0x03, 0x63, 0x60, 0x6A, 0x77, 0x15, 0x4B, 0xBD, 0xE8, 0x70, 0x40, 0xD3, 0xF8, 0x50, 0x32, 0x18, 0x47, 0x13, 0x4B, -0x13, 0x4A, 0x19, 0x68, 0x10, 0x4B, 0xC9, 0x8E, 0x6C, 0x61, 0x01, 0x20, 0x68, 0x77, 0x12, 0x69, 0xD3, 0xF8, 0xE0, 0x31, -0x0F, 0x48, 0xBD, 0xE8, 0x70, 0x40, 0x11, 0x44, 0x18, 0x47, 0x13, 0x43, 0x01, 0xD0, 0x00, 0x20, 0xBA, 0xE7, 0xE9, 0xF7, -0x37, 0xFD, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0xB4, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x28, 0x9E, 0x17, 0x00, 0x10, 0xB5, 0x06, 0x4C, 0x28, 0x22, 0x20, 0x46, 0x00, 0x21, 0xE1, 0xF7, -0x5F, 0xF9, 0x04, 0x4A, 0x01, 0x23, 0xD2, 0xF8, 0x38, 0x22, 0x22, 0x61, 0x23, 0x77, 0x10, 0xBD, 0x1C, 0x9E, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0C, 0x4C, 0x23, 0x78, 0x33, 0xB9, 0x0B, 0x4B, 0xD3, 0xF8, 0xF8, 0x31, 0x98, 0x47, -0x08, 0xB9, 0x00, 0x20, 0x10, 0xBD, 0x63, 0x68, 0x00, 0x2B, 0xFA, 0xD1, 0x07, 0x4B, 0x9B, 0x68, 0x13, 0xB9, 0x05, 0xE0, -0x1B, 0x68, 0x1B, 0xB1, 0x5A, 0x68, 0x00, 0x2A, 0xFA, 0xD0, 0xF0, 0xE7, 0x01, 0x20, 0x10, 0xBD, 0x1C, 0x9E, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x08, 0x4B, 0x09, 0x4A, 0x1B, 0x68, 0x51, 0x80, 0x1B, 0x78, 0x02, 0x2B, -0x07, 0x4B, 0x03, 0xD0, 0x07, 0x49, 0x00, 0x28, 0x18, 0xBF, 0x0B, 0x46, 0x00, 0x20, 0x10, 0x72, 0x4F, 0xF4, 0x00, 0x01, -0x18, 0x47, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x09, 0xEC, 0x13, 0x00, 0xB1, 0xEB, 0x13, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x92, 0xF8, 0x6C, 0x30, 0x42, 0x4C, 0x43, 0x4E, 0x51, 0x68, 0x4F, 0xF4, 0x1E, 0x75, 0x91, 0x46, -0x05, 0xFB, 0x03, 0x43, 0x32, 0x78, 0x1D, 0x8C, 0x21, 0xF0, 0x01, 0x07, 0xC9, 0xF8, 0x04, 0x70, 0x00, 0x2A, 0x49, 0xD0, -0x04, 0x46, 0x00, 0x28, 0x46, 0xD0, 0x99, 0xF8, 0x6A, 0x30, 0x00, 0x2B, 0x44, 0xD0, 0x00, 0xF1, 0x04, 0x08, 0x98, 0xF8, -0x00, 0x30, 0x03, 0xF0, 0xFE, 0x03, 0xB3, 0xEB, 0xD5, 0x0F, 0x4F, 0xEA, 0xD5, 0x00, 0x31, 0xD8, 0x61, 0x78, 0x04, 0x39, -0x19, 0x44, 0x88, 0x42, 0x2C, 0xD8, 0x20, 0x44, 0xC3, 0x1A, 0x05, 0xF0, 0x07, 0x05, 0x59, 0x79, 0x01, 0x23, 0x03, 0xFA, -0x05, 0xF5, 0x29, 0x42, 0x22, 0xD0, 0x2C, 0x4B, 0x19, 0x68, 0x8A, 0x05, 0x03, 0xD5, 0x19, 0x68, 0x21, 0xF4, 0x00, 0x71, -0x19, 0x60, 0x29, 0x4C, 0xD4, 0xF8, 0x54, 0x32, 0x98, 0x47, 0x28, 0x48, 0xD9, 0xF8, 0x04, 0x30, 0x00, 0x68, 0x27, 0x49, -0xD4, 0xF8, 0xE0, 0x41, 0x40, 0x8F, 0x43, 0xF0, 0x04, 0x03, 0xC9, 0xF8, 0x04, 0x30, 0x09, 0x69, 0xC6, 0xF8, 0x14, 0x90, -0x06, 0x23, 0x73, 0x77, 0x01, 0x44, 0x23, 0x46, 0x20, 0x48, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0xD9, 0xF8, 0x04, 0x30, -0x23, 0xF0, 0x04, 0x03, 0xC9, 0xF8, 0x04, 0x30, 0xBD, 0xE8, 0xF0, 0x87, 0x03, 0x79, 0x00, 0xF1, 0x04, 0x08, 0xD8, 0x07, -0x1E, 0xD5, 0x14, 0x4B, 0x47, 0xF0, 0x02, 0x07, 0xC9, 0xF8, 0x04, 0x70, 0x19, 0x68, 0x89, 0x05, 0x03, 0xD5, 0x19, 0x68, -0x21, 0xF4, 0x00, 0x71, 0x19, 0x60, 0x73, 0x7F, 0x00, 0x2B, 0xA8, 0xD1, 0x0E, 0x4B, 0x0F, 0x49, 0x1B, 0x68, 0x09, 0x69, -0x1F, 0x8F, 0x0B, 0x4B, 0xC6, 0xF8, 0x14, 0x90, 0x05, 0x20, 0x70, 0x77, 0xD3, 0xF8, 0xE0, 0x31, 0x0A, 0x48, 0x39, 0x44, -0x98, 0x47, 0x98, 0xE7, 0x21, 0xF0, 0x03, 0x01, 0xC9, 0xF8, 0x04, 0x10, 0x93, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, -0x1C, 0x9E, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, -0x28, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x21, 0x4E, 0x14, 0x46, 0x52, 0x68, 0x35, 0x78, 0x22, 0xF0, 0x01, 0x03, -0x63, 0x60, 0x00, 0x2D, 0x32, 0xD0, 0x0F, 0x46, 0x94, 0xF8, 0x6A, 0x10, 0xA1, 0xB9, 0x00, 0x28, 0x2E, 0xD0, 0x1B, 0x4A, -0x1B, 0x49, 0x10, 0x68, 0x1B, 0x4A, 0x00, 0x8F, 0xD2, 0xF8, 0xE0, 0x21, 0x43, 0xF0, 0x02, 0x03, 0x63, 0x60, 0x09, 0x69, -0x74, 0x61, 0x05, 0x23, 0x01, 0x44, 0x73, 0x77, 0x06, 0xF1, 0x0C, 0x00, 0x90, 0x47, 0x63, 0x68, 0xAF, 0xB1, 0x13, 0x4D, -0x43, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xD5, 0xF8, 0x54, 0x32, 0x98, 0x47, 0x0D, 0x4B, 0x0E, 0x4A, 0x1B, 0x68, 0x11, 0x69, -0x58, 0x8F, 0x74, 0x61, 0x06, 0x22, 0xD5, 0xF8, 0xE0, 0x31, 0x72, 0x77, 0x01, 0x44, 0xBD, 0xE8, 0xF0, 0x41, 0x0A, 0x48, -0x18, 0x47, 0x23, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x22, 0xF0, 0x03, 0x03, 0x00, 0x2F, 0xF6, 0xD0, -0xDF, 0xE7, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x28, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x21, 0x4D, 0x2B, 0x78, 0xAB, 0xB1, 0x03, 0x79, 0x06, 0x88, 0xDF, 0x07, -0x14, 0x46, 0x12, 0xD5, 0x6B, 0x7F, 0x05, 0x2B, 0x07, 0xD1, 0x1D, 0x4B, 0x05, 0xF1, 0x0C, 0x00, 0xD3, 0xF8, 0xD8, 0x31, -0x98, 0x47, 0x00, 0x23, 0x6B, 0x77, 0xB5, 0x04, 0x23, 0xD4, 0x63, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x63, 0x60, 0xBD, 0xE8, -0xF0, 0x81, 0x88, 0x05, 0xFB, 0xD4, 0x15, 0x4A, 0x15, 0x4B, 0x12, 0x68, 0x1B, 0x69, 0xD1, 0x8E, 0x11, 0x4F, 0x6C, 0x61, -0x02, 0x22, 0x19, 0x44, 0x6A, 0x77, 0xD7, 0xF8, 0xE0, 0x31, 0x05, 0xF1, 0x0C, 0x00, 0x98, 0x47, 0xB1, 0x04, 0x63, 0x68, -0x0E, 0xD5, 0x5A, 0x07, 0x5C, 0xBF, 0x43, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xD7, 0xF8, 0x54, 0x32, 0xBD, 0xE8, 0xF0, 0x41, -0x18, 0x47, 0x94, 0xF8, 0x6A, 0x30, 0x00, 0x2B, 0xDB, 0xD0, 0xD6, 0xE7, 0x23, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, -0x38, 0xB5, 0x23, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x3F, 0xD0, 0xFF, 0x28, 0x3D, 0xD0, 0xFF, 0x29, 0x3B, 0xD0, 0x20, 0x4A, -0x20, 0x49, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x00, 0x20, 0x4F, 0xF4, 0xA4, 0x64, 0x90, 0xF8, 0x22, 0x20, 0x04, 0xFB, -0x02, 0x12, 0x92, 0xF8, 0x62, 0x10, 0x00, 0x29, 0x2B, 0xD1, 0x92, 0xF8, 0x64, 0x10, 0x41, 0xB3, 0x18, 0x48, 0x19, 0x49, -0x00, 0x68, 0x09, 0x69, 0xC5, 0x8E, 0x18, 0x4C, 0x5A, 0x61, 0x03, 0x20, 0x58, 0x77, 0xD4, 0xF8, 0xE0, 0x21, 0x03, 0xF1, -0x0C, 0x00, 0x29, 0x44, 0x90, 0x47, 0x14, 0x4B, 0x1B, 0x68, 0x5B, 0x07, 0x15, 0xD5, 0x13, 0x4B, 0x93, 0xF8, 0xB6, 0x30, -0x73, 0xB1, 0x12, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x09, 0xD1, 0x10, 0x49, 0x11, 0x4A, 0x0B, 0x68, 0x23, 0xF4, -0x00, 0x73, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0xD4, 0xF8, 0x54, 0x32, 0x98, 0x47, 0x00, 0x20, -0x38, 0xBD, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, -0x90, 0xB3, 0x33, 0x40, 0x8C, 0x00, 0x32, 0x40, 0x3B, 0x4A, 0xDF, 0xF8, 0x1C, 0xC1, 0x13, 0x68, 0x3A, 0x49, 0xF0, 0xB5, -0x3A, 0x4F, 0x3B, 0x4C, 0xB7, 0xF8, 0xB2, 0x00, 0x3A, 0x4D, 0x3B, 0x4E, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x23, 0x68, -0x39, 0x4A, 0x43, 0xF0, 0x80, 0x53, 0x23, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x23, 0xF4, 0x70, 0x23, 0xCC, 0xF8, 0x00, 0x30, -0xDC, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0x10, 0x03, 0xCC, 0xF8, 0x00, 0x30, 0x2B, 0x68, 0x23, 0xF0, -0xFC, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x2B, 0x60, 0x0B, 0x68, 0x40, 0x09, 0x00, 0xF1, 0x20, 0x0C, 0xC3, 0xF3, 0x15, 0x03, -0x43, 0xEA, 0x8C, 0x53, 0x0B, 0x60, 0x83, 0xB0, 0x33, 0x68, 0x29, 0x49, 0x1B, 0x78, 0xCD, 0xF8, 0x00, 0xC0, 0x02, 0x20, -0x05, 0xF0, 0x0A, 0xFA, 0x32, 0x68, 0x13, 0x78, 0x01, 0x2B, 0x15, 0xD0, 0x02, 0x2B, 0x11, 0xD1, 0x23, 0x48, 0x24, 0x49, -0x03, 0x68, 0x24, 0x4C, 0x1D, 0x4A, 0x43, 0xF4, 0x80, 0x33, 0x03, 0x60, 0x0B, 0x68, 0x3F, 0x20, 0x23, 0xF0, 0x00, 0x73, -0x0B, 0x60, 0x20, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x03, 0xB0, 0xF0, 0xBD, 0x97, 0xF8, 0xB5, 0x10, -0x69, 0xB1, 0x19, 0x49, 0x19, 0x48, 0x0B, 0x68, 0x23, 0xF0, 0x00, 0x73, 0x0B, 0x60, 0x2B, 0x68, 0x24, 0x21, 0x43, 0xF4, -0x00, 0x13, 0x2B, 0x60, 0x01, 0x60, 0x13, 0x78, 0xD8, 0xE7, 0x12, 0x48, 0x12, 0x4E, 0x01, 0x68, 0x12, 0x4D, 0x41, 0xF0, -0x00, 0x71, 0x01, 0x60, 0x04, 0x21, 0x31, 0x60, 0x2B, 0x60, 0x23, 0x68, 0x23, 0xF4, 0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, -0x23, 0x60, 0x13, 0x78, 0xC6, 0xE7, 0x00, 0xBF, 0x90, 0x00, 0x32, 0x40, 0xF0, 0x00, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, -0x74, 0x80, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, 0x74, 0x36, 0x17, 0x00, 0x88, 0xA3, 0x15, 0x00, 0x5C, 0xA3, 0x15, 0x00, -0x44, 0x00, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, 0x98, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x78, 0x00, 0x32, 0x40, -0x15, 0x48, 0x16, 0x4A, 0x16, 0x49, 0x38, 0xB5, 0x03, 0x68, 0x43, 0xF0, 0x00, 0x73, 0x03, 0x60, 0x02, 0x20, 0x05, 0xF0, -0xA7, 0xF9, 0x13, 0x4B, 0x9B, 0x7C, 0x23, 0xB9, 0x12, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x11, 0x4C, -0x11, 0x48, 0x23, 0x68, 0x0E, 0x49, 0x11, 0x4D, 0x11, 0x4A, 0x23, 0xF4, 0x80, 0x33, 0x23, 0x60, 0x03, 0x68, 0x23, 0xF0, -0x80, 0x43, 0x03, 0x60, 0x0B, 0x68, 0x00, 0x20, 0x23, 0xF0, 0x80, 0x53, 0x0B, 0x60, 0x28, 0x60, 0x13, 0x68, 0x23, 0xF0, -0x01, 0x03, 0x13, 0x60, 0x38, 0xBD, 0x00, 0xBF, 0x4C, 0x00, 0x32, 0x40, 0x98, 0xA3, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, -0x00, 0x88, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, 0x44, 0x00, 0x32, 0x40, 0x90, 0x00, 0x32, 0x40, 0x98, 0x80, 0x32, 0x40, -0x6C, 0x00, 0x32, 0x40, 0x70, 0xB5, 0x90, 0xF8, 0x72, 0x30, 0x01, 0x2B, 0x04, 0x46, 0x11, 0xD0, 0x02, 0x2B, 0x00, 0xD0, -0x70, 0xBD, 0x0C, 0x4D, 0x41, 0x6F, 0x01, 0x23, 0x80, 0xF8, 0x72, 0x30, 0xD5, 0xF8, 0xE0, 0x31, 0x60, 0x30, 0x98, 0x47, -0xD5, 0xF8, 0x18, 0x32, 0x20, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x04, 0x4B, 0x00, 0x22, 0x80, 0xF8, 0x72, 0x20, -0xBD, 0xE8, 0x70, 0x40, 0xD3, 0xF8, 0x18, 0x32, 0x18, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x4F, 0xF0, 0x00, 0x0C, 0x4F, 0xF0, 0x01, 0x0E, 0x83, 0xB0, 0x06, 0x46, 0x04, 0x46, 0x00, 0xF1, 0x60, 0x05, 0x03, 0x46, -0x67, 0x46, 0x71, 0x46, 0x1A, 0x7C, 0x02, 0x2A, 0x13, 0xD1, 0xDA, 0x7C, 0x01, 0x2A, 0x10, 0xD8, 0x96, 0xF8, 0x87, 0x20, -0x32, 0xB1, 0x93, 0xF8, 0x21, 0x20, 0x1A, 0xB1, 0x93, 0xF8, 0x20, 0x20, 0x01, 0x2A, 0x06, 0xD0, 0xDA, 0x68, 0x00, 0x29, -0x00, 0xF0, 0xC0, 0x80, 0x01, 0x37, 0x94, 0x46, 0x00, 0x21, 0x30, 0x33, 0x9D, 0x42, 0xE5, 0xD1, 0x01, 0x22, 0x8E, 0x46, -0x33, 0x46, 0x4F, 0xF0, 0x00, 0x09, 0x00, 0x92, 0xA0, 0x46, 0x1A, 0x7C, 0x02, 0x2A, 0x1D, 0xD1, 0xD9, 0x7C, 0x01, 0x29, -0x1A, 0xD9, 0x96, 0xF8, 0x87, 0x20, 0x32, 0xB1, 0x93, 0xF8, 0x21, 0x20, 0x1A, 0xB1, 0x93, 0xF8, 0x20, 0x20, 0x01, 0x2A, -0x10, 0xD0, 0xD3, 0xE9, 0x06, 0x04, 0xDA, 0x68, 0x04, 0xEB, 0x02, 0x0A, 0xAA, 0xEB, 0x00, 0x00, 0xBE, 0xF1, 0x00, 0x0F, -0x42, 0xD0, 0x00, 0x21, 0x00, 0x91, 0x01, 0x37, 0x81, 0x46, 0x94, 0x46, 0x4F, 0xF0, 0x00, 0x0E, 0x30, 0x33, 0x9D, 0x42, -0xDB, 0xD1, 0x01, 0x96, 0x44, 0x46, 0x00, 0x9E, 0x18, 0xE0, 0x00, 0x2F, 0x5F, 0xD1, 0xA1, 0xEB, 0x09, 0x02, 0x00, 0x2A, -0x58, 0xDB, 0xAC, 0xEB, 0x03, 0x02, 0x00, 0x2A, 0x0B, 0xDB, 0xA3, 0xEB, 0x09, 0x00, 0xAC, 0xEB, 0x01, 0x02, 0x39, 0xEA, -0x20, 0x09, 0x28, 0xBF, 0x99, 0x46, 0x3C, 0xEA, 0x22, 0x0C, 0x28, 0xBF, 0x8C, 0x46, 0x30, 0x34, 0xA5, 0x42, 0x0F, 0xD0, -0x23, 0x7C, 0x01, 0x2B, 0xF9, 0xD1, 0xE3, 0x68, 0xA1, 0x69, 0x19, 0x44, 0xBE, 0xF1, 0x00, 0x0F, 0xDD, 0xD0, 0x30, 0x34, -0x00, 0x26, 0xA5, 0x42, 0x99, 0x46, 0x8C, 0x46, 0xB6, 0x46, 0xEF, 0xD1, 0x33, 0x46, 0x01, 0x9E, 0xC6, 0xF8, 0x80, 0xC0, -0x0B, 0xB1, 0x0C, 0xF1, 0x0A, 0x09, 0xC6, 0xF8, 0x7C, 0x90, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xA0, 0xEB, 0x0C, 0x0A, -0xBA, 0xF1, 0x00, 0x0F, 0x80, 0xF2, 0x88, 0x80, 0xA4, 0xEB, 0x02, 0x0B, 0x02, 0xEB, 0x0C, 0x0A, 0x01, 0x39, 0x83, 0x44, -0xA0, 0xEB, 0x0A, 0x0A, 0x01, 0xE0, 0x01, 0x39, 0xB2, 0xD0, 0x0B, 0xEB, 0x02, 0x00, 0x22, 0x44, 0x1A, 0xEB, 0x02, 0x0F, -0xF7, 0xD4, 0xAC, 0xEB, 0x02, 0x04, 0x3C, 0xEA, 0x24, 0x0C, 0x28, 0xBF, 0x94, 0x46, 0x01, 0x29, 0x3D, 0xD0, 0x62, 0x46, -0x00, 0x99, 0x00, 0x29, 0x99, 0xD1, 0xA0, 0xEB, 0x09, 0x01, 0x10, 0xEA, 0x21, 0x00, 0x38, 0xBF, 0x48, 0x46, 0x94, 0xE7, -0x99, 0x46, 0x8C, 0x46, 0xB3, 0xE7, 0xA1, 0xEB, 0x0C, 0x02, 0x00, 0x2A, 0x94, 0xF8, 0x13, 0x80, 0x61, 0xDA, 0x08, 0xF1, -0xFF, 0x30, 0xB8, 0xF1, 0x00, 0x0F, 0xA8, 0xD0, 0xD4, 0xF8, 0x1C, 0xB0, 0x9A, 0x46, 0x03, 0xE0, 0x42, 0x1E, 0x00, 0x28, -0xA1, 0xD0, 0x10, 0x46, 0xDA, 0x44, 0x01, 0xEB, 0x0A, 0x08, 0xA8, 0xEB, 0x0C, 0x02, 0xD2, 0x1A, 0x00, 0x2A, 0xA8, 0xEB, -0x03, 0x08, 0xF1, 0xDB, 0xA6, 0xB1, 0xAC, 0xEB, 0x0A, 0x03, 0x00, 0x2B, 0x29, 0xDB, 0x58, 0xB3, 0xE3, 0x69, 0xC4, 0x46, -0x0A, 0xEB, 0x03, 0x09, 0x00, 0x26, 0x8A, 0xE7, 0xAC, 0xEB, 0x02, 0x01, 0x12, 0xEA, 0x21, 0x02, 0x38, 0xBF, 0x62, 0x46, -0x38, 0xE7, 0x48, 0x46, 0x62, 0x46, 0x5E, 0xE7, 0xA9, 0xEB, 0x0A, 0x03, 0x00, 0x2B, 0x11, 0xDB, 0xAC, 0xEB, 0x0A, 0x03, -0x00, 0x2B, 0x15, 0xDB, 0xA8, 0xEB, 0x09, 0x03, 0x00, 0x2B, 0x14, 0xDB, 0x1B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x29, 0xDB, 0xE3, 0x69, 0xC4, 0x46, 0x0A, 0xEB, 0x03, 0x09, 0x4F, 0xF0, 0x00, 0x0E, 0x67, 0xE7, 0xD1, 0x46, -0x00, 0x26, 0x64, 0xE7, 0xC4, 0x46, 0x62, 0xE7, 0xD1, 0x46, 0xB6, 0x46, 0x5F, 0xE7, 0x01, 0x28, 0x15, 0xDD, 0xE3, 0x69, -0x9A, 0x44, 0xAA, 0xEB, 0x09, 0x03, 0xC4, 0x46, 0x39, 0xEA, 0x23, 0x09, 0x28, 0xBF, 0xD1, 0x46, 0xB6, 0x46, 0x52, 0xE7, -0xAC, 0xEB, 0x02, 0x01, 0x12, 0xEA, 0x21, 0x02, 0x38, 0xBF, 0x62, 0x46, 0x8A, 0xE7, 0x40, 0x46, 0x9A, 0x46, 0x88, 0x46, -0xB0, 0xE7, 0xC4, 0x46, 0xB6, 0x46, 0x44, 0xE7, 0x04, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x4D, 0x12, 0x05, 0xF0, 0x64, 0xFA, -0xCE, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x03, 0x7C, 0x02, 0x2B, 0x83, 0xB0, 0x04, 0x46, 0x69, 0xD0, 0x90, 0xF8, 0x40, 0x30, 0x02, 0x2B, 0x54, 0xD0, 0x94, 0xF8, -0x73, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x18, 0xD1, 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x40, 0xF0, 0xD2, 0x80, 0x94, 0xF8, -0x70, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xB8, 0x80, 0xDF, 0xF8, 0x24, 0x93, 0xC3, 0x4B, 0x94, 0xF8, 0x71, 0x20, 0xD3, 0xF8, -0x5C, 0x34, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x90, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x94, 0xF8, -0x72, 0x30, 0x01, 0x2B, 0x00, 0xF0, 0x54, 0x81, 0x94, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x00, 0xF0, 0xB9, 0x81, 0xB9, 0x4A, -0x92, 0xF8, 0x00, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0xA8, 0x80, 0x52, 0x68, 0x11, 0x07, 0x00, 0xF1, 0xD4, 0x81, -0x94, 0xF8, 0x85, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, 0xD0, 0x92, 0x02, 0x23, -0x0C, 0x21, 0x00, 0x22, 0x4D, 0x20, 0x03, 0xF0, 0x15, 0xF9, 0x01, 0x25, 0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, 0x45, 0x70, -0x03, 0xF0, 0x3E, 0xF9, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, 0x00, 0x22, 0x84, 0xF8, 0x85, 0x20, 0x18, 0x6C, -0x29, 0x46, 0xFF, 0xF7, 0x15, 0xF9, 0x55, 0xE0, 0x90, 0xF8, 0x87, 0x30, 0x00, 0x2B, 0x7B, 0xD0, 0xFF, 0x23, 0x00, 0x21, -0x94, 0xF8, 0x51, 0x20, 0x00, 0x2A, 0x6F, 0xD0, 0x94, 0xF8, 0x50, 0x20, 0x01, 0x2A, 0x6B, 0xD1, 0x00, 0x29, 0x9A, 0xD0, -0x11, 0xE0, 0x90, 0xF8, 0x87, 0x30, 0x00, 0x2B, 0x5F, 0xD0, 0x90, 0xF8, 0x21, 0x30, 0x23, 0xB1, 0x90, 0xF8, 0x20, 0x30, -0x01, 0x2B, 0x00, 0xF0, 0xA6, 0x81, 0x94, 0xF8, 0x40, 0x20, 0x23, 0x7D, 0x02, 0x2A, 0x00, 0xF0, 0x9E, 0x81, 0x01, 0x2B, -0xB8, 0xD0, 0x94, 0xF8, 0x86, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x0D, 0x81, 0x94, 0xF8, 0x72, 0x50, 0x94, 0xF8, -0x85, 0x30, 0xA5, 0xF1, 0x01, 0x06, 0xB6, 0xFA, 0x86, 0xF6, 0x76, 0x09, 0xB3, 0x42, 0x00, 0xF0, 0x4C, 0x81, 0x02, 0x23, -0x0C, 0x21, 0x52, 0x46, 0x4D, 0x20, 0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, 0x20, 0x92, 0x03, 0xF0, 0xC1, 0xF8, 0x6F, 0x1E, -0x18, 0xBF, 0x01, 0x27, 0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, 0x47, 0x70, 0x03, 0xF0, 0xE8, 0xF8, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x08, 0x93, 0x84, 0xF8, 0x85, 0x60, 0x18, 0x6C, 0x39, 0x46, 0xFF, 0xF7, 0xC0, 0xF8, 0x01, 0x2D, 0x4C, 0xD0, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, 0x93, 0xF8, 0x62, 0x20, 0x02, 0x2A, 0x00, 0xF0, 0xF1, 0x80, 0x94, 0xF8, -0x70, 0x30, 0x7B, 0xB9, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x98, 0x98, 0xF8, 0x6C, 0x30, 0xFF, 0x2B, 0x07, 0xD0, -0x6E, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x01, 0x22, 0x83, 0xF8, 0x24, 0x20, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x90, 0xF8, 0x40, 0x20, 0x03, 0x7D, 0x02, 0x2A, 0xA8, 0xD1, 0x94, 0xF8, 0x44, 0x20, 0x93, 0x42, 0x28, 0xBF, -0x13, 0x46, 0xA2, 0xE7, 0xFF, 0x23, 0xF7, 0xE7, 0x94, 0xF8, 0x85, 0x20, 0x01, 0x2A, 0x3F, 0xF4, 0x30, 0xAF, 0x94, 0xF8, -0x71, 0x80, 0xDF, 0xF8, 0x88, 0x91, 0x02, 0x23, 0x0C, 0x21, 0x00, 0x22, 0x4D, 0x20, 0x03, 0xF0, 0x71, 0xF8, 0x00, 0x25, -0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, 0x45, 0x70, 0x03, 0xF0, 0x9A, 0xF8, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, -0x01, 0x22, 0x84, 0xF8, 0x85, 0x20, 0x18, 0x6C, 0x29, 0x46, 0xFF, 0xF7, 0x71, 0xF8, 0x94, 0xF8, 0x70, 0xE0, 0xBE, 0xF1, -0x00, 0x0F, 0x40, 0xF0, 0xD4, 0x80, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x08, 0x97, 0x97, 0xF8, 0x6C, 0x10, 0xFF, 0x29, -0x00, 0xF0, 0xF0, 0x80, 0x4A, 0x4D, 0x01, 0x94, 0x4F, 0xF4, 0x1E, 0x7B, 0xA4, 0x23, 0x0B, 0xFB, 0x01, 0xF0, 0x03, 0xFB, -0x08, 0xF3, 0x05, 0xF5, 0x16, 0x7B, 0x2E, 0x18, 0x9E, 0x33, 0x58, 0x44, 0x00, 0x90, 0x09, 0xEB, 0xC3, 0x0B, 0x4F, 0xF0, -0x4F, 0x0C, 0x46, 0x20, 0x1C, 0xFB, 0x01, 0x01, 0x5C, 0x46, 0x40, 0x4A, 0xDD, 0xF8, 0x00, 0xB0, 0x86, 0xF8, 0x24, 0xE0, -0x05, 0xEB, 0xC1, 0x05, 0xD6, 0xF8, 0x08, 0x12, 0x39, 0xB3, 0xEF, 0xF3, 0x10, 0x81, 0xCB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x39, 0x4B, 0x01, 0x21, 0x19, 0x60, 0x11, 0x68, 0xA5, 0xF1, 0x28, 0x00, 0x4B, 0x1C, 0xA4, 0xF1, 0x28, 0x01, 0x13, 0x60, -0x00, 0x90, 0x03, 0xF0, 0x9D, 0xFD, 0xD6, 0xF8, 0x08, 0x12, 0xD6, 0xF8, 0x0C, 0x32, 0x00, 0x98, 0xC7, 0xF8, 0xC8, 0x14, -0xC7, 0xF8, 0xCC, 0x34, 0x03, 0xF0, 0x9C, 0xFC, 0x2C, 0x4A, 0x11, 0x68, 0x48, 0x1E, 0x31, 0xB1, 0x2B, 0x4B, 0x10, 0x60, -0x19, 0x68, 0x10, 0xB9, 0x00, 0x29, 0x40, 0xF0, 0xB5, 0x80, 0xD6, 0xF8, 0x30, 0x32, 0x20, 0x46, 0x29, 0x46, 0x08, 0x36, -0x08, 0x34, 0x08, 0x37, 0x2B, 0xB1, 0x03, 0xF0, 0x7D, 0xFD, 0x28, 0x46, 0x03, 0xF0, 0x84, 0xFC, 0x20, 0x4A, 0x08, 0x35, -0x5D, 0x45, 0xC3, 0xD1, 0x01, 0x9C, 0x40, 0x20, 0x03, 0xF0, 0xDE, 0xFB, 0x94, 0xF8, 0x70, 0x20, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x08, 0x98, 0x98, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x13, 0xD0, 0x00, 0x2A, 0x7F, 0xF4, 0x55, 0xAF, 0xBA, 0xF1, -0x00, 0x0F, 0x7F, 0xF4, 0x51, 0xAF, 0x99, 0xE6, 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x3F, 0xF4, 0x8E, 0xAE, 0x94, 0xF8, -0x71, 0x80, 0xDF, 0xF8, 0x48, 0x90, 0x4F, 0xF0, 0x00, 0x0A, 0x5C, 0xE7, 0xD8, 0xF8, 0x04, 0x30, 0x43, 0xF0, 0x20, 0x03, -0xC8, 0xF8, 0x04, 0x30, 0x00, 0x2A, 0x7F, 0xF4, 0x3B, 0xAF, 0xE4, 0xE7, 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x3F, 0xF4, -0x35, 0xAF, 0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, 0x1C, 0x90, 0x4F, 0xF0, 0x01, 0x0A, 0x46, 0xE7, 0x88, 0x1A, 0x17, 0x00, -0x1C, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x3C, 0x49, 0x5A, 0x68, 0x49, 0x68, 0x22, 0xF0, 0x20, 0x02, 0x00, 0x29, 0x5A, 0x60, 0x7F, 0xF7, 0x06, 0xAF, 0xEF, 0xF3, -0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x36, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x36, 0x4D, 0x2B, 0x68, 0x04, 0x20, -0x01, 0x33, 0x2B, 0x60, 0xEE, 0xF7, 0x1C, 0xFF, 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, 0xEE, 0xF7, 0xB7, 0xFF, 0x2B, 0x68, -0x00, 0x2B, 0x3F, 0xF4, 0xEE, 0xAE, 0x2D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0x7F, 0xF4, 0xE7, 0xAE, -0x00, 0x2A, 0x3F, 0xF4, 0xE4, 0xAE, 0x62, 0xB6, 0xE1, 0xE6, 0x40, 0x20, 0x03, 0xF0, 0x6E, 0xFB, 0x94, 0xF8, 0x70, 0x20, -0x8E, 0xE7, 0x94, 0xF8, 0x70, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0xEA, 0xAE, 0x01, 0x2D, 0x7F, 0xF4, 0xE7, 0xAE, 0x2D, 0xE6, -0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, 0x80, 0x90, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, 0x93, 0xF8, 0xDE, 0x20, -0x93, 0xF8, 0xC2, 0x34, 0x9A, 0x42, 0x20, 0xD0, 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x3F, 0xF4, 0xD3, 0xAE, 0x4F, 0xF0, -0x00, 0x0A, 0xE8, 0xE6, 0x97, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x7F, 0xF4, 0x76, 0xAF, 0x7B, 0x68, 0x43, 0xF0, 0x20, 0x03, -0x7B, 0x60, 0xBA, 0xF1, 0x00, 0x0F, 0x7F, 0xF4, 0xC3, 0xAE, 0x0B, 0xE6, 0x62, 0xB6, 0x48, 0xE7, 0x94, 0xF8, 0x85, 0x20, -0x01, 0x2A, 0x7F, 0xF4, 0x70, 0xAF, 0x00, 0x2B, 0x3F, 0xF4, 0x00, 0xAE, 0xB6, 0xE6, 0x94, 0xF8, 0x85, 0x30, 0x00, 0x2B, -0x7F, 0xF4, 0x27, 0xAE, 0xB0, 0xE6, 0x01, 0x21, 0x42, 0xE6, 0x90, 0xF8, 0x40, 0x30, 0x02, 0x2B, 0x7F, 0xF4, 0xE3, 0xAD, -0x3A, 0xE6, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0xF4, 0x92, 0x47, 0x7C, 0xB6, 0x49, 0x90, 0xF8, 0x10, 0xB0, 0x8C, 0x23, 0x03, 0xFB, -0x07, 0x93, 0x83, 0xB0, 0x93, 0xF8, 0x71, 0x20, 0x93, 0xF8, 0x70, 0x30, 0x00, 0x92, 0x07, 0xEB, 0x87, 0x06, 0x4F, 0xF4, -0xA4, 0x6A, 0xC6, 0xEB, 0xC6, 0x06, 0x01, 0x2B, 0x05, 0x46, 0x0A, 0xFB, 0x02, 0x1A, 0x09, 0xEB, 0x86, 0x06, 0x00, 0xF0, -0x0B, 0x81, 0xAA, 0x4B, 0xC4, 0x6A, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xD3, 0x80, 0xDA, 0xF8, -0x7C, 0x30, 0xE4, 0x1A, 0xA4, 0x4B, 0xA5, 0x49, 0xDF, 0xF8, 0x94, 0x82, 0xBB, 0xF1, 0x01, 0x0F, 0x17, 0xD0, 0xBB, 0xF1, -0x02, 0x0F, 0x00, 0xF0, 0x82, 0x80, 0x1A, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x7F, 0xDB, 0xD8, 0xF8, 0x10, 0x20, -0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, 0x00, 0x2A, 0x80, 0xF2, 0xE9, 0x80, 0xBB, 0xF1, 0x00, 0x0F, 0xE7, 0xD1, -0xDF, 0xF8, 0x70, 0x82, 0x20, 0xE0, 0xA8, 0x69, 0xDF, 0xF8, 0x68, 0x82, 0x95, 0x4B, 0x1B, 0x69, 0x04, 0x44, 0xE3, 0x1A, -0xA3, 0xF5, 0x9C, 0x53, 0x08, 0x3B, 0x00, 0x2B, 0x80, 0xF2, 0xFA, 0x80, 0xEA, 0x7C, 0xFF, 0x2A, 0x1B, 0xD0, 0x01, 0x3A, -0xD2, 0xB2, 0xEA, 0x74, 0xBA, 0xB9, 0x8C, 0x23, 0x03, 0xFB, 0x07, 0x97, 0x97, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x5D, 0xD0, -0xD8, 0xF8, 0xE8, 0x31, 0x28, 0x46, 0x98, 0x47, 0x87, 0x4B, 0x1B, 0x69, 0xD8, 0xF8, 0x1C, 0x32, 0x30, 0x46, 0x98, 0x47, -0xD8, 0xF8, 0x18, 0x32, 0x30, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x4F, 0xF0, 0x8C, 0x0E, 0x0E, 0xFB, -0x07, 0x9E, 0xD5, 0xE9, 0x06, 0x0B, 0x9E, 0xF8, 0x70, 0x30, 0xAB, 0xEB, 0x00, 0x01, 0x01, 0x2B, 0x0C, 0x44, 0x47, 0xD0, -0x7A, 0x4A, 0x12, 0x69, 0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, 0x00, 0x2A, 0xA8, 0xBF, 0x4F, 0xF0, 0x01, 0x0B, -0xBE, 0xDB, 0x53, 0xB9, 0x72, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xB0, 0x80, 0xDA, 0xF8, -0x7C, 0x30, 0x23, 0x44, 0xEB, 0x62, 0x21, 0x46, 0xD8, 0xF8, 0xE0, 0x31, 0x28, 0x46, 0x98, 0x47, 0x85, 0xF8, 0x10, 0xB0, -0xD8, 0xF8, 0x1C, 0x32, 0x30, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0x18, 0x32, 0x30, 0x46, 0x98, 0x47, 0x00, 0x9A, 0x11, 0x46, -0x63, 0x4A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x00, 0xF0, 0xA4, 0x80, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDF, 0xF8, 0x90, 0x81, 0x9B, 0xE7, 0x5F, 0x48, 0x4F, 0xF4, 0x31, 0x72, 0x04, 0xF0, -0x53, 0xFF, 0x5A, 0x4B, 0x5A, 0x49, 0x77, 0xE7, 0xD8, 0xF8, 0x08, 0x32, 0xA9, 0x7C, 0x50, 0x46, 0x98, 0x47, 0x58, 0x4B, -0x1B, 0x69, 0x9F, 0xE7, 0x9E, 0xF8, 0x84, 0x10, 0x00, 0x29, 0x36, 0xD0, 0xA9, 0x6A, 0x01, 0x91, 0x69, 0x6A, 0x01, 0xEB, -0x0B, 0x0C, 0x01, 0x99, 0x01, 0x39, 0xC5, 0xE9, 0x09, 0xC1, 0x00, 0x29, 0x5E, 0xD1, 0x2A, 0x75, 0xBB, 0xF1, 0x00, 0x0F, -0x05, 0xD0, 0x4F, 0xF0, 0x00, 0x43, 0xB3, 0xFB, 0xFB, 0xF3, 0x01, 0x3B, 0xAB, 0x62, 0x00, 0x9B, 0x19, 0x46, 0x46, 0x4B, -0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0x32, 0xD8, 0xF8, 0x90, 0x31, 0x92, 0xF8, 0x63, 0x00, 0x03, 0x21, 0x98, 0x47, -0x43, 0x4B, 0x1B, 0x69, 0xE3, 0x1A, 0xA3, 0xF5, 0x9C, 0x53, 0x08, 0x3B, 0x00, 0x2B, 0x71, 0xDA, 0xA8, 0x69, 0x51, 0xE7, -0x9A, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x28, 0xAF, 0x3B, 0x49, 0x3D, 0x48, 0x58, 0x22, 0x04, 0xF0, 0x0E, 0xFF, -0x21, 0xE7, 0x39, 0x4A, 0x12, 0x69, 0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, 0x00, 0x2A, 0xFF, 0xF6, 0x3E, 0xAF, -0xD8, 0xF8, 0xE0, 0x21, 0x01, 0x93, 0x21, 0x46, 0x28, 0x46, 0x90, 0x47, 0x01, 0x9B, 0x2B, 0x74, 0xD8, 0xF8, 0x1C, 0x32, -0x30, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0x18, 0x32, 0x30, 0x46, 0x98, 0x47, 0x00, 0x9A, 0x11, 0x46, 0x28, 0x4A, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x8A, 0xD1, 0x31, 0xE0, 0xC4, 0x68, 0xFD, 0xE6, -0xBB, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x16, 0xAF, 0x8C, 0x23, 0x03, 0xFB, 0x07, 0x97, 0xDF, 0xF8, 0x98, 0x80, 0x97, 0xF8, -0x70, 0x30, 0x54, 0xE7, 0x1F, 0x4A, 0x12, 0x69, 0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, 0x00, 0x2A, 0xFF, 0xF6, -0x0B, 0xAF, 0x9B, 0x46, 0x9E, 0xF8, 0x70, 0x30, 0x47, 0xE7, 0x9A, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x4B, 0xAF, -0x15, 0x49, 0x18, 0x48, 0x49, 0x22, 0x04, 0xF0, 0xC3, 0xFE, 0x44, 0xE7, 0x8C, 0x23, 0x03, 0xFB, 0x07, 0x97, 0x4F, 0xF0, -0x02, 0x0B, 0x97, 0xF8, 0x70, 0x30, 0x34, 0xE7, 0xBB, 0xF1, 0x01, 0x0F, 0x7F, 0xF4, 0x58, 0xAF, 0x00, 0x9A, 0x11, 0x46, -0x09, 0x4A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x01, 0x23, 0x5A, 0x68, 0x42, 0xF0, 0x20, 0x02, 0x5A, 0x60, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x8C, 0x23, 0x03, 0xFB, 0x07, 0x97, 0x4F, 0xF0, 0x01, 0x0B, 0x97, 0xF8, 0x70, 0x30, 0x1A, 0xE7, -0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x64, 0x7D, 0x15, 0x00, -0x40, 0x9C, 0x15, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x00, 0x22, 0x04, 0x46, 0x0D, 0x46, -0x10, 0x23, 0x0C, 0x21, 0x55, 0x20, 0x02, 0xF0, 0xA5, 0xFD, 0x05, 0xEB, 0x45, 0x03, 0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, -0x04, 0xEB, 0x03, 0x13, 0x45, 0x70, 0x1A, 0x7C, 0x22, 0xB9, 0xC2, 0x70, 0xBD, 0xE8, 0x38, 0x40, 0x02, 0xF0, 0xC6, 0xBD, -0x1A, 0x7D, 0xC2, 0x70, 0x00, 0x2A, 0xF7, 0xD0, 0x93, 0xF8, 0x20, 0x20, 0x82, 0x70, 0xD3, 0xE9, 0x06, 0x12, 0x5B, 0x6A, -0xC3, 0x60, 0xC0, 0xE9, 0x01, 0x12, 0xBD, 0xE8, 0x38, 0x40, 0x02, 0xF0, 0xB5, 0xBD, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x41, -0x16, 0x46, 0x2D, 0x4D, 0x4F, 0xF4, 0xA4, 0x62, 0xB3, 0x42, 0x04, 0x46, 0x02, 0xFB, 0x01, 0x58, 0x0B, 0xD3, 0xC2, 0x7C, -0x01, 0x2A, 0x30, 0xD0, 0xC5, 0x69, 0x9B, 0x1B, 0xB3, 0xFB, 0xF5, 0xF3, 0x03, 0xFB, 0x05, 0x55, 0x2E, 0x44, 0x5F, 0x1C, -0x00, 0xE0, 0x00, 0x27, 0x23, 0x4B, 0xE6, 0x62, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0xE3, 0x7C, -0xD8, 0xF8, 0x7C, 0x00, 0xFF, 0x2B, 0xA6, 0xEB, 0x00, 0x00, 0x31, 0xD0, 0xBB, 0x42, 0x94, 0xBF, 0xDB, 0x1A, 0xDB, 0x1B, -0x1B, 0x4A, 0xDB, 0xB2, 0xE3, 0x74, 0x12, 0x69, 0x82, 0x1A, 0x00, 0x2A, 0x0C, 0xDA, 0x18, 0x49, 0x5B, 0xB1, 0xE5, 0x69, -0xFF, 0x2B, 0x28, 0x44, 0x0A, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, 0xE3, 0x74, 0x0A, 0x69, 0x82, 0x1A, 0x00, 0x2A, 0xF3, 0xDB, -0x03, 0xB9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x0A, 0x69, 0x82, 0x1A, 0x00, 0x2A, 0xED, 0xDB, 0xBD, 0xE8, 0xF0, 0x81, -0x98, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xD2, 0xD0, 0x0B, 0x48, 0x0C, 0x49, 0x58, 0x22, 0x04, 0xF0, 0x15, 0xFE, 0xE3, 0x7C, -0xD8, 0xF8, 0x7C, 0x00, 0xFF, 0x2B, 0xA6, 0xEB, 0x00, 0x00, 0xCD, 0xD1, 0x04, 0x4A, 0x12, 0x69, 0x82, 0x1A, 0x00, 0x2A, -0xD3, 0xDB, 0xE1, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x40, 0x9C, 0x15, 0x00, -0x70, 0x79, 0x15, 0x00, 0x70, 0xB5, 0x08, 0x4E, 0xD6, 0xF8, 0xEC, 0x41, 0x05, 0x46, 0xA0, 0x47, 0x04, 0x46, 0x30, 0xB1, -0xD6, 0xF8, 0xE0, 0x31, 0x01, 0x46, 0x28, 0x46, 0x98, 0x47, 0x01, 0x23, 0x2B, 0x74, 0xE0, 0xB2, 0x70, 0xBD, 0x00, 0xBF, -0x88, 0x1A, 0x17, 0x00, 0x03, 0x7C, 0x43, 0xB1, 0x10, 0xB5, 0x04, 0x4B, 0x04, 0x46, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, -0x00, 0x23, 0x23, 0x74, 0x10, 0xBD, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x5C, 0x4F, 0x00, 0xEB, -0x80, 0x04, 0xC4, 0xEB, 0xC4, 0x04, 0x4F, 0xEA, 0x84, 0x0A, 0x83, 0xB0, 0x05, 0x46, 0x07, 0xEB, 0x84, 0x04, 0x0E, 0x46, -0x00, 0x29, 0x74, 0xD0, 0x8C, 0x23, 0x03, 0xFB, 0x00, 0x73, 0x91, 0x46, 0xCA, 0x78, 0x93, 0xF8, 0x84, 0x10, 0x00, 0x29, -0x40, 0xF0, 0x8A, 0x80, 0x4F, 0xF0, 0x8C, 0x08, 0x08, 0xFB, 0x05, 0x78, 0x01, 0x21, 0x98, 0xF8, 0x79, 0x30, 0x88, 0xF8, -0x78, 0x20, 0x88, 0xF8, 0x84, 0x10, 0xAB, 0xB1, 0xDF, 0xF8, 0x30, 0xB1, 0x20, 0x46, 0xDB, 0xF8, 0xE8, 0x31, 0x98, 0x47, -0x00, 0x22, 0x0A, 0xF1, 0x30, 0x00, 0xDB, 0xF8, 0xE8, 0x31, 0x88, 0xF8, 0x79, 0x20, 0x38, 0x44, 0x98, 0x47, 0x00, 0x22, -0xDB, 0xF8, 0x18, 0x32, 0x88, 0xF8, 0x79, 0x20, 0x20, 0x46, 0x98, 0x47, 0xB6, 0xF8, 0x01, 0x20, 0x3F, 0x49, 0x02, 0x3A, -0x81, 0xFB, 0x02, 0x31, 0xD3, 0x17, 0xC3, 0xEB, 0xA1, 0x03, 0x13, 0xF0, 0xFF, 0x0B, 0x2E, 0xD0, 0x8C, 0x23, 0x03, 0xFB, -0x05, 0x73, 0x00, 0x93, 0x06, 0xF1, 0x05, 0x08, 0x4F, 0xF0, 0x00, 0x0A, 0x01, 0x95, 0x98, 0xF8, 0x00, 0x20, 0x36, 0x49, -0x22, 0x75, 0x0A, 0xF1, 0x01, 0x0A, 0x20, 0x46, 0x4B, 0x46, 0x9A, 0xB1, 0x01, 0x2A, 0xD8, 0xF8, 0x05, 0x50, 0x00, 0xD9, -0x75, 0xB1, 0xD8, 0xF8, 0x01, 0xC0, 0xE2, 0x74, 0xC4, 0xE9, 0x06, 0xC5, 0x00, 0x9A, 0xD1, 0xF8, 0xF4, 0x51, 0x92, 0xF8, -0x71, 0x10, 0xD8, 0xF8, 0x09, 0x20, 0xA8, 0x47, 0x00, 0x28, 0x45, 0xD1, 0x5F, 0xFA, 0x8A, 0xF3, 0x5B, 0x45, 0x08, 0xF1, -0x0D, 0x08, 0x04, 0xF1, 0x30, 0x04, 0xDA, 0xD3, 0x01, 0x9D, 0x96, 0xF9, 0x04, 0x20, 0x33, 0x79, 0x00, 0x2A, 0x2D, 0xDB, -0x8C, 0x20, 0x00, 0xFB, 0x05, 0x75, 0x00, 0x23, 0x85, 0xF8, 0x73, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xF0, -0x8C, 0x08, 0x08, 0xFB, 0x00, 0x78, 0x98, 0xF8, 0x79, 0x30, 0x88, 0xF8, 0x84, 0x10, 0x00, 0x2B, 0xEC, 0xD0, 0xDF, 0xF8, -0x60, 0x90, 0x20, 0x46, 0xD9, 0xF8, 0xE8, 0x31, 0x98, 0x47, 0x0A, 0xF1, 0x30, 0x00, 0xD9, 0xF8, 0xE8, 0x31, 0x88, 0xF8, -0x79, 0x60, 0x38, 0x44, 0x98, 0x47, 0xD9, 0xF8, 0x18, 0x32, 0x88, 0xF8, 0x79, 0x60, 0x20, 0x46, 0x98, 0x47, 0xD7, 0xE7, -0x93, 0xF8, 0x78, 0x30, 0x93, 0x42, 0x7F, 0xF4, 0x71, 0xAF, 0xD7, 0xE7, 0x8C, 0x20, 0x00, 0xFB, 0x05, 0x75, 0x03, 0xF0, -0x7F, 0x03, 0x85, 0xF8, 0x73, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x9A, 0x92, 0xF8, 0x79, 0x30, 0x01, 0x33, -0x82, 0xF8, 0x79, 0x30, 0xB2, 0xE7, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, 0x4F, 0xEC, 0xC4, 0x4E, 0x88, 0x1A, 0x17, 0x00, -0x08, 0xB5, 0x01, 0x22, 0x05, 0x48, 0x00, 0x21, 0xE0, 0xF7, 0x2C, 0xF8, 0x04, 0x4B, 0xFF, 0x22, 0x83, 0xF8, 0x71, 0x20, -0x83, 0xF8, 0xFD, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x44, 0x9E, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, -0x25, 0x4C, 0x94, 0xF8, 0x71, 0x30, 0xFF, 0x2B, 0x07, 0x46, 0x0E, 0x46, 0x08, 0xD0, 0x94, 0xF8, 0xFD, 0x30, 0xFF, 0x2B, -0x18, 0xBF, 0xFF, 0x25, 0x36, 0xD0, 0x28, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x25, 0xA8, 0x46, 0x4F, 0xF0, 0x30, 0x0A, -0xA1, 0x46, 0x8C, 0x22, 0x00, 0x21, 0x48, 0x46, 0xE0, 0xF7, 0x04, 0xF8, 0x8C, 0x23, 0x03, 0xFB, 0x08, 0x43, 0x01, 0x2E, -0x83, 0xF8, 0x71, 0x70, 0x83, 0xF8, 0x70, 0x60, 0x03, 0xD1, 0x15, 0x4A, 0x13, 0x78, 0x01, 0x33, 0x13, 0x70, 0x8C, 0x23, -0x03, 0xFB, 0x08, 0x43, 0x12, 0x4A, 0xC3, 0xF8, 0x08, 0x90, 0x54, 0x44, 0x00, 0x21, 0x01, 0x26, 0x9C, 0x63, 0x99, 0x74, -0x0F, 0x4C, 0xD2, 0xF8, 0x10, 0x12, 0x5D, 0x74, 0x83, 0xF8, 0x41, 0x50, 0xC3, 0xF8, 0x68, 0x90, 0x83, 0xF8, 0x42, 0x60, -0x5C, 0x66, 0x59, 0x60, 0x59, 0x63, 0x48, 0x46, 0xD2, 0xF8, 0x18, 0x32, 0x98, 0x47, 0xC8, 0xE7, 0x01, 0x25, 0xA8, 0x46, -0x4F, 0xF0, 0xBC, 0x0A, 0x04, 0xF1, 0x8C, 0x09, 0xC9, 0xE7, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, 0x44, 0x9E, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x41, 0xF4, 0x13, 0x00, 0x0E, 0x4A, 0x8C, 0x23, 0x03, 0xFB, 0x00, 0x23, 0x10, 0xB4, 0x93, 0xF8, -0x71, 0x40, 0xFF, 0x2C, 0x0A, 0xD0, 0x93, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x09, 0xD0, 0x29, 0xB1, 0x8C, 0x23, 0x03, 0xFB, -0x00, 0x20, 0xFF, 0x23, 0x80, 0xF8, 0x71, 0x30, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x04, 0x4C, 0x23, 0x78, 0x01, 0x3B, -0x23, 0x70, 0x00, 0x29, 0xF6, 0xD0, 0xEF, 0xE7, 0x48, 0x9E, 0x17, 0x00, 0x44, 0x9E, 0x17, 0x00, 0x90, 0xF8, 0xC0, 0x34, -0xBB, 0xB3, 0x2D, 0xE9, 0xF0, 0x47, 0x90, 0xF8, 0x62, 0x40, 0x0C, 0x43, 0x2F, 0xD1, 0x90, 0xF8, 0xC1, 0x54, 0xDF, 0xF8, -0x64, 0x80, 0x17, 0x4F, 0x05, 0xEB, 0x85, 0x00, 0xC0, 0xEB, 0xC0, 0x00, 0x08, 0xEB, 0x80, 0x09, 0xD7, 0xF8, 0xE8, 0x31, -0x86, 0x00, 0x48, 0x46, 0x98, 0x47, 0x06, 0xF1, 0x30, 0x00, 0xD7, 0xF8, 0xE8, 0x31, 0x40, 0x44, 0x98, 0x47, 0x8C, 0x23, -0x03, 0xFB, 0x05, 0x85, 0x95, 0xF8, 0x72, 0x30, 0x85, 0xF8, 0x73, 0x40, 0x85, 0xF8, 0x78, 0x40, 0x85, 0xF8, 0x84, 0x40, -0x3B, 0xB1, 0x06, 0xF1, 0x60, 0x00, 0xD7, 0xF8, 0xD8, 0x31, 0x40, 0x44, 0x98, 0x47, 0x85, 0xF8, 0x72, 0x40, 0xD7, 0xF8, -0x18, 0x32, 0x48, 0x46, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0xBD, 0xE8, 0xF0, 0x87, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, -0x48, 0x9E, 0x17, 0x00, 0x03, 0x4B, 0x8C, 0x22, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0x85, 0x00, 0x70, 0x47, 0x00, 0xBF, -0x48, 0x9E, 0x17, 0x00, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x70, 0xB5, 0x05, 0x46, 0x0C, 0x46, -0x16, 0x46, 0x0E, 0xDB, 0x95, 0xF8, 0xC1, 0x34, 0x0C, 0x4A, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0xD3, 0xF8, 0x80, 0x20, -0x22, 0x60, 0xD8, 0x6F, 0x30, 0x60, 0x23, 0x68, 0xC0, 0x1A, 0xC0, 0x0F, 0x70, 0xBD, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, -0xEC, 0xD1, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x06, 0x52, 0x04, 0xF0, 0x23, 0xFC, 0xE5, 0xE7, 0x38, 0x36, 0x17, 0x00, -0x48, 0x9E, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA4, 0xA3, 0x15, 0x00, 0x70, 0xB5, 0x35, 0x4E, 0x33, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x0C, 0x46, 0x12, 0xDB, 0x90, 0xF8, 0xC1, 0x24, 0x31, 0x48, 0x8C, 0x23, 0x01, 0xEB, -0x41, 0x01, 0x03, 0xFB, 0x02, 0xF3, 0x03, 0xEB, 0x01, 0x13, 0x03, 0x44, 0x61, 0x00, 0x1B, 0x7C, 0x01, 0x2B, 0x28, 0xD0, -0x02, 0x2B, 0x1D, 0xD0, 0x00, 0x20, 0x70, 0xBD, 0x90, 0xF8, 0xC0, 0x34, 0x0B, 0xB1, 0x01, 0x29, 0x30, 0xD9, 0x27, 0x49, -0x27, 0x48, 0x40, 0xF2, 0x14, 0x52, 0x04, 0xF0, 0xF3, 0xFB, 0x95, 0xF8, 0xC1, 0x24, 0x22, 0x48, 0x8C, 0x23, 0x04, 0xEB, -0x44, 0x01, 0x03, 0xFB, 0x02, 0xF3, 0x03, 0xEB, 0x01, 0x13, 0x03, 0x44, 0x61, 0x00, 0x1B, 0x7C, 0x01, 0x2B, 0x0A, 0xD0, -0x02, 0x2B, 0x13, 0xD1, 0x8C, 0x23, 0x0C, 0x44, 0x03, 0xFB, 0x02, 0xF1, 0x01, 0xEB, 0x04, 0x11, 0x01, 0x44, 0xC8, 0x68, -0x70, 0xBD, 0x8C, 0x23, 0x0C, 0x44, 0x03, 0xFB, 0x02, 0xF1, 0x01, 0xEB, 0x04, 0x14, 0x01, 0x19, 0xC8, 0x68, 0x8B, 0x69, -0x18, 0x44, 0x70, 0xBD, 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC8, 0xDA, 0x10, 0xE0, 0x90, 0xF8, 0xC1, 0x24, -0x0C, 0x48, 0x8C, 0x23, 0x01, 0xEB, 0x41, 0x01, 0x03, 0xFB, 0x02, 0xF3, 0x03, 0xEB, 0x01, 0x13, 0x03, 0x44, 0x61, 0x00, -0x1B, 0x7C, 0x01, 0x2B, 0xDF, 0xD0, 0x02, 0x2B, 0xD4, 0xD0, 0x06, 0x49, 0x07, 0x48, 0x4F, 0xF4, 0xA4, 0x62, 0x04, 0xF0, -0xC9, 0xFB, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xB0, 0xA3, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x43, 0xD0, 0x2D, 0xE9, 0xF0, 0x41, -0x28, 0x4F, 0x90, 0xF8, 0xC1, 0x24, 0x44, 0x68, 0x8C, 0x26, 0x06, 0xFB, 0x02, 0x76, 0x02, 0xEB, 0x82, 0x03, 0x96, 0xF8, -0x73, 0xC0, 0x01, 0x25, 0xC3, 0xEB, 0xC3, 0x03, 0x24, 0xF0, 0x40, 0x04, 0x86, 0xF8, 0x86, 0x50, 0x4F, 0xEA, 0x83, 0x0E, -0x07, 0xEB, 0x83, 0x05, 0x44, 0x60, 0xBC, 0xF1, 0x00, 0x0F, 0x06, 0xD1, 0x1C, 0x4E, 0x28, 0x46, 0xD6, 0xF8, 0x18, 0x32, -0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x96, 0xF8, 0x70, 0x30, 0x01, 0xEB, 0x8C, 0x24, 0x3B, 0xB9, 0x17, 0x4B, 0x18, 0x69, -0x01, 0xF5, 0x96, 0x73, 0xC1, 0x1A, 0x11, 0xF1, 0x32, 0x0F, 0x14, 0xD4, 0x8C, 0x23, 0x03, 0xFB, 0x02, 0x72, 0x11, 0x4E, -0x0E, 0xF1, 0x60, 0x00, 0x01, 0x23, 0x38, 0x44, 0x21, 0x46, 0x82, 0xF8, 0x72, 0x30, 0xD6, 0xF8, 0xE0, 0x31, 0x98, 0x47, -0xD6, 0xF8, 0x18, 0x32, 0x28, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x70, 0x47, 0x08, 0x4D, 0x74, 0x67, 0x0E, 0xF1, -0x60, 0x00, 0x02, 0x22, 0x38, 0x44, 0x19, 0x46, 0x86, 0xF8, 0x72, 0x20, 0xD5, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, -0x18, 0x47, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x30, 0xB4, 0x0A, 0x49, -0x90, 0xF8, 0xC1, 0x34, 0x09, 0x4C, 0x8C, 0x20, 0x03, 0xEB, 0x83, 0x02, 0x00, 0xFB, 0x03, 0x13, 0x00, 0x25, 0xC2, 0xEB, -0xC2, 0x02, 0x83, 0xF8, 0x86, 0x50, 0x01, 0xEB, 0x82, 0x00, 0xD4, 0xF8, 0x18, 0x32, 0x30, 0xBC, 0x18, 0x47, 0x00, 0xBF, -0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x90, 0xF8, 0xC0, 0x44, 0x00, 0x2C, 0x3E, 0xD0, -0x90, 0xF8, 0x62, 0x30, 0x05, 0x46, 0x00, 0x2B, 0x3C, 0xD1, 0x27, 0x4B, 0x90, 0xF8, 0xC1, 0x74, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x88, 0x46, 0x16, 0x46, 0x36, 0xDB, 0xD8, 0xF8, 0x08, 0x00, 0xB2, 0x8B, 0x00, 0xF1, 0x24, 0x03, -0x10, 0x44, 0x83, 0x42, 0x02, 0xD3, 0x38, 0xE0, 0x98, 0x42, 0x36, 0xD9, 0x5D, 0x78, 0x1A, 0x78, 0xA9, 0x1C, 0xDD, 0x2A, -0x1C, 0x46, 0x0B, 0x44, 0xF6, 0xD1, 0x62, 0x79, 0x09, 0x2A, 0xF3, 0xD1, 0x06, 0x34, 0x04, 0x3D, 0x14, 0xFA, 0x85, 0xF5, -0xAC, 0x42, 0x06, 0xD3, 0xEC, 0xE7, 0xB4, 0xF8, 0x01, 0x10, 0x03, 0x31, 0x0C, 0x44, 0xA5, 0x42, 0xE6, 0xD9, 0x22, 0x78, -0x0C, 0x2A, 0xF6, 0xD1, 0x00, 0x2C, 0xE1, 0xD0, 0xB2, 0x68, 0x0F, 0x4B, 0x92, 0x68, 0xD3, 0xF8, 0xF0, 0x31, 0x92, 0x69, -0x38, 0x46, 0x21, 0x46, 0x98, 0x47, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x24, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, -0x01, 0x2F, 0xC6, 0xD9, 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x73, 0x52, 0x04, 0xF0, 0xD8, 0xFA, 0x95, 0xF8, 0xC1, 0x74, -0xBD, 0xE7, 0x00, 0x24, 0xE2, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xD8, 0xA3, 0x15, 0x00, 0xF0, 0xB5, 0x0C, 0x7E, 0x7F, 0x2C, 0x83, 0xB0, 0x23, 0xD1, 0x4A, 0x7F, 0x0A, 0xBB, 0xCA, 0x7F, -0xDD, 0x2A, 0x1E, 0xD1, 0x91, 0xF8, 0x24, 0x20, 0x09, 0x2A, 0x1A, 0xD1, 0x91, 0xF8, 0x25, 0x20, 0x0C, 0x2A, 0x01, 0xF1, -0x25, 0x04, 0x14, 0xD1, 0x11, 0x4A, 0x12, 0x49, 0x12, 0x68, 0xD1, 0xF8, 0xF0, 0x61, 0xB2, 0xF9, 0x00, 0x20, 0x90, 0xF8, -0xC1, 0x74, 0x00, 0x2A, 0x05, 0x46, 0x0A, 0xDB, 0xEA, 0x6F, 0x21, 0x46, 0x1A, 0x44, 0x38, 0x46, 0x33, 0x46, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x40, 0x18, 0x47, 0x03, 0xB0, 0xF0, 0xBD, 0x90, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0xF0, 0xD0, 0x06, 0x49, -0x06, 0x48, 0x01, 0x93, 0x49, 0x22, 0x04, 0xF0, 0x95, 0xFA, 0x01, 0x9B, 0xE8, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, 0x12, 0x4B, 0x18, 0x78, 0xF8, 0xB1, 0x12, 0x4B, -0x58, 0x7C, 0xD8, 0xB9, 0x9A, 0x7C, 0x01, 0x2A, 0x19, 0xD8, 0x9B, 0x68, 0x13, 0xB9, 0x16, 0xE0, 0x1B, 0x68, 0xAB, 0xB1, -0x93, 0xF8, 0x62, 0x20, 0x02, 0x2A, 0xF9, 0xD1, 0x93, 0xF8, 0xC0, 0x24, 0x00, 0x2A, 0xF5, 0xD0, 0x93, 0xF8, 0xC1, 0x34, -0x08, 0x4A, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x85, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, -0x00, 0x20, 0x70, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x44, 0x9E, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, -0x18, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC0, 0x34, 0x1B, 0xB1, 0x90, 0xF8, 0x62, 0x30, -0x02, 0x2B, 0x00, 0xD0, 0x70, 0x47, 0x70, 0xB5, 0x90, 0xF8, 0xC1, 0x34, 0x11, 0x4C, 0x8C, 0x22, 0x02, 0xFB, 0x03, 0x42, -0x00, 0x39, 0x03, 0xEB, 0x83, 0x03, 0x92, 0xF8, 0x84, 0x50, 0x18, 0xBF, 0x01, 0x21, 0xC3, 0xEB, 0xC3, 0x03, 0x82, 0xF8, -0x87, 0x10, 0x04, 0xEB, 0x83, 0x04, 0x35, 0xB9, 0x09, 0x4D, 0xD5, 0xF8, 0x18, 0x32, 0x20, 0x46, 0xBD, 0xE8, 0x70, 0x40, -0x18, 0x47, 0x06, 0x4D, 0x92, 0xF8, 0x71, 0x00, 0xD5, 0xF8, 0x90, 0x31, 0x03, 0x21, 0x98, 0x47, 0xF1, 0xE7, 0x00, 0xBF, -0x18, 0x88, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x0E, 0x4E, 0x90, 0xF8, 0xC1, 0x44, -0x0D, 0x4D, 0x8C, 0x23, 0x03, 0xFB, 0x04, 0x63, 0x01, 0x22, 0x04, 0xEB, 0x84, 0x04, 0x93, 0xF8, 0x71, 0x00, 0x83, 0xF8, -0x73, 0x10, 0x83, 0xF8, 0x72, 0x20, 0xC4, 0xEB, 0xC4, 0x04, 0xD5, 0xF8, 0x90, 0x31, 0x03, 0x21, 0x98, 0x47, 0xD5, 0xF8, -0x18, 0x32, 0x06, 0xEB, 0x84, 0x00, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x1D, 0x4F, 0x90, 0xF8, 0xC1, 0x44, 0x8C, 0x26, 0x06, 0xFB, 0x04, 0x76, 0x04, 0xEB, 0x84, 0x00, -0x96, 0xF8, 0x72, 0x20, 0xC0, 0xEB, 0xC0, 0x00, 0x4F, 0xF0, 0x00, 0x09, 0x07, 0xEB, 0x80, 0x05, 0x86, 0xF8, 0x73, 0x90, -0x9A, 0xB9, 0xDF, 0xF8, 0x54, 0x80, 0xD8, 0xF8, 0x18, 0x32, 0x28, 0x46, 0x98, 0x47, 0x8C, 0x23, 0x03, 0xFB, 0x04, 0x74, -0x94, 0xF8, 0x79, 0x30, 0x9B, 0xB9, 0xD8, 0xF8, 0x90, 0x31, 0x94, 0xF8, 0x71, 0x00, 0x02, 0x21, 0xBD, 0xE8, 0xF0, 0x47, -0x18, 0x47, 0x83, 0x00, 0xDF, 0xF8, 0x28, 0x80, 0x03, 0xF1, 0x60, 0x00, 0x38, 0x44, 0xD8, 0xF8, 0xD8, 0x31, 0x98, 0x47, -0x86, 0xF8, 0x72, 0x90, 0xE1, 0xE7, 0xD8, 0xF8, 0x90, 0x31, 0x94, 0xF8, 0x71, 0x00, 0x03, 0x21, 0xBD, 0xE8, 0xF0, 0x47, -0x18, 0x47, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x90, 0xF8, 0xC0, 0x34, 0x63, 0xB1, 0x90, 0xF8, -0xC1, 0x34, 0x06, 0x4A, 0x06, 0x48, 0x03, 0xEB, 0x83, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x00, 0xEB, 0x83, 0x00, 0xD2, 0xF8, -0x18, 0x32, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, -0x42, 0x4E, 0x90, 0xF8, 0xC1, 0x84, 0xDD, 0xF8, 0x30, 0xC0, 0x8C, 0x24, 0x04, 0xFB, 0x08, 0x64, 0x94, 0xF8, 0x70, 0x70, -0x01, 0x2F, 0x0F, 0xD1, 0x08, 0xEB, 0x88, 0x05, 0x94, 0xF8, 0x10, 0x90, 0xC5, 0xEB, 0xC5, 0x05, 0xA8, 0x00, 0x06, 0xEB, -0x85, 0x05, 0xB9, 0xF1, 0x00, 0x0F, 0x08, 0xD0, 0x94, 0xF8, 0x40, 0x40, 0x00, 0x2C, 0x64, 0xD0, 0x4F, 0xF0, 0xFF, 0x09, -0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, 0x28, 0x46, 0xCA, 0x46, 0x8C, 0x24, 0x4F, 0xEA, 0x4A, 0x07, 0x04, 0xFB, 0x08, 0xF4, -0x07, 0xEB, 0x0A, 0x0B, 0x06, 0xEB, 0x04, 0x0E, 0x04, 0xEB, 0x0B, 0x14, 0x00, 0x29, 0x06, 0xEB, 0x04, 0x01, 0x9E, 0xF8, -0x79, 0xB0, 0xCB, 0x74, 0x0B, 0x75, 0x0A, 0x9B, 0xCB, 0x61, 0x0B, 0xF1, 0x01, 0x0B, 0x0B, 0x9B, 0x8B, 0x61, 0x0C, 0xBF, -0x01, 0x24, 0x00, 0x24, 0xC1, 0xF8, 0x24, 0xC0, 0x81, 0xF8, 0x21, 0x20, 0x81, 0xF8, 0x20, 0x40, 0x8E, 0xF8, 0x79, 0xB0, -0x04, 0xD0, 0x9E, 0xF8, 0x7A, 0x30, 0x01, 0x33, 0x8E, 0xF8, 0x7A, 0x30, 0x0A, 0x9B, 0x73, 0xB1, 0x8C, 0x23, 0x07, 0xEB, -0x0A, 0x02, 0x03, 0xFB, 0x08, 0xF3, 0x03, 0xEB, 0x02, 0x13, 0x33, 0x44, 0x0A, 0x99, 0x4F, 0xF0, 0x00, 0x42, 0xB2, 0xFB, -0xF1, 0xF2, 0x01, 0x3A, 0x9A, 0x62, 0x15, 0x4C, 0x61, 0x46, 0xD4, 0xF8, 0xE0, 0x31, 0x98, 0x47, 0x8C, 0x23, 0x03, 0xFB, -0x08, 0xF8, 0x57, 0x44, 0x08, 0xEB, 0x07, 0x17, 0x37, 0x44, 0x46, 0x44, 0x01, 0x23, 0x96, 0xF8, 0x71, 0x00, 0x3B, 0x74, -0x03, 0x21, 0xD4, 0xF8, 0x90, 0x31, 0x98, 0x47, 0x49, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0xA4, 0xFA, 0xD4, 0xF8, 0x1C, 0x32, -0x28, 0x46, 0x98, 0x47, 0x28, 0x46, 0xD4, 0xF8, 0x18, 0x32, 0x98, 0x47, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, 0x30, 0x30, -0xB9, 0x46, 0x30, 0x44, 0xBA, 0x46, 0x9C, 0xE7, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, -0x90, 0xF8, 0xC1, 0x64, 0x37, 0x4D, 0x8C, 0x23, 0x03, 0xFB, 0x06, 0xF3, 0xE8, 0x18, 0x90, 0xF8, 0x70, 0x00, 0x01, 0x28, -0x5C, 0xD1, 0x01, 0x29, 0x0C, 0x46, 0x57, 0xD8, 0x01, 0xEB, 0x41, 0x01, 0x03, 0xEB, 0x01, 0x13, 0x2B, 0x44, 0x4F, 0xEA, -0x44, 0x08, 0x19, 0x7C, 0x00, 0x29, 0x4D, 0xD0, 0x1A, 0xB1, 0x93, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x48, 0xD0, 0x06, 0xEB, -0x86, 0x07, 0x04, 0xEB, 0x44, 0x00, 0xDF, 0xF8, 0xA4, 0x90, 0xC7, 0xEB, 0xC7, 0x07, 0x00, 0x01, 0x00, 0xEB, 0x87, 0x00, -0xD9, 0xF8, 0xD8, 0x31, 0x28, 0x44, 0x98, 0x47, 0x8C, 0x23, 0x03, 0xFB, 0x06, 0xFA, 0xA0, 0x44, 0x0A, 0xEB, 0x08, 0x18, -0xA8, 0x44, 0x00, 0x23, 0x05, 0xEB, 0x87, 0x07, 0x88, 0xF8, 0x10, 0x30, 0xD9, 0xF8, 0x1C, 0x22, 0x38, 0x46, 0x90, 0x47, -0xD9, 0xF8, 0x18, 0x22, 0x38, 0x46, 0x90, 0x47, 0x05, 0xEB, 0x0A, 0x03, 0x98, 0xF8, 0x20, 0x10, 0x93, 0xF8, 0x79, 0x20, -0x01, 0x3A, 0xD2, 0xB2, 0x01, 0x29, 0x83, 0xF8, 0x79, 0x20, 0x04, 0xD1, 0x93, 0xF8, 0x7A, 0x10, 0x01, 0x39, 0x83, 0xF8, -0x7A, 0x10, 0x8C, 0x23, 0x03, 0xFB, 0x06, 0x53, 0x93, 0xF8, 0x73, 0x10, 0x01, 0xB9, 0x92, 0xB1, 0x8C, 0x23, 0x03, 0xFB, -0x06, 0x55, 0x03, 0x21, 0xD9, 0xF8, 0x90, 0x31, 0x95, 0xF8, 0x71, 0x00, 0x98, 0x47, 0x38, 0x46, 0x21, 0x46, 0xFF, 0xF7, -0x29, 0xFA, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xD9, 0xF8, 0x90, 0x21, 0x93, 0xF8, -0x71, 0x00, 0x02, 0x21, 0x90, 0x47, 0xEE, 0xE7, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, -0x1F, 0x4F, 0x90, 0xF8, 0xC1, 0x84, 0x8C, 0x25, 0x05, 0xFB, 0x08, 0x75, 0x08, 0xEB, 0x88, 0x03, 0x95, 0xF8, 0x20, 0x20, -0xC3, 0xEB, 0xC3, 0x03, 0x0E, 0x46, 0x9C, 0x00, 0xAA, 0xB9, 0x2B, 0x7C, 0x9B, 0xB1, 0xE9, 0x68, 0xDF, 0xF8, 0x5C, 0x90, -0x31, 0x44, 0xD9, 0xF8, 0xE0, 0x31, 0x38, 0x19, 0x98, 0x47, 0x95, 0xF8, 0x50, 0x30, 0x13, 0xB9, 0x95, 0xF8, 0x40, 0x30, -0x6B, 0xB9, 0xD9, 0xF8, 0x1C, 0x32, 0x38, 0x19, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x95, 0xF8, 0x50, 0x30, 0xAB, 0xB9, -0x95, 0xF8, 0x40, 0x30, 0x93, 0xB1, 0xDF, 0xF8, 0x2C, 0x90, 0x8C, 0x23, 0x03, 0xFB, 0x08, 0x73, 0x04, 0xF1, 0x30, 0x00, -0xD9, 0x6B, 0xD9, 0xF8, 0xE0, 0x31, 0x38, 0x44, 0x31, 0x44, 0x98, 0x47, 0xD9, 0xF8, 0x1C, 0x32, 0x38, 0x19, 0xBD, 0xE8, -0xF0, 0x47, 0x18, 0x47, 0xBD, 0xE8, 0xF0, 0x87, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x0A, 0x4B, 0x8C, 0x22, -0x02, 0xFB, 0x00, 0x33, 0x93, 0xF8, 0x71, 0x20, 0xFF, 0x2A, 0x0B, 0xD0, 0x93, 0xF8, 0x84, 0x00, 0x48, 0xB1, 0x93, 0xF8, -0x88, 0x00, 0x00, 0xEB, 0x40, 0x03, 0x00, 0xEB, 0x83, 0x00, 0x0B, 0x30, 0xC0, 0xB2, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, -0x48, 0x9E, 0x17, 0x00, 0x30, 0xB4, 0xDD, 0x23, 0x50, 0x25, 0x6F, 0x24, 0x9A, 0x21, 0x09, 0x22, 0x03, 0x70, 0x0C, 0x23, -0x85, 0x70, 0xC4, 0x70, 0x01, 0x71, 0x42, 0x71, 0x83, 0x71, 0x30, 0xBC, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x43, -0x2D, 0x4E, 0x8C, 0x23, 0x03, 0xFB, 0x00, 0x63, 0x93, 0xF8, 0x78, 0x20, 0x4A, 0x72, 0x93, 0xF8, 0x73, 0x40, 0x01, 0x32, -0x83, 0xF8, 0x78, 0x20, 0x00, 0x2C, 0x46, 0xD0, 0x64, 0xF0, 0x7F, 0x04, 0x8C, 0x72, 0x00, 0xEB, 0x80, 0x03, 0xC3, 0xEB, -0xC3, 0x03, 0x4F, 0xF0, 0x8C, 0x0C, 0xDF, 0xF8, 0x8C, 0x90, 0xDF, 0xF8, 0x8C, 0x80, 0x06, 0xEB, 0x83, 0x03, 0x0C, 0xFB, -0x00, 0x6C, 0x01, 0xF1, 0x0B, 0x02, 0x01, 0xF1, 0x25, 0x0E, 0x00, 0x24, 0x1D, 0x7C, 0xC5, 0xB1, 0x9C, 0xF8, 0x87, 0x50, -0x15, 0xB1, 0x93, 0xF8, 0x21, 0x50, 0x55, 0xBB, 0x1D, 0x7D, 0x15, 0x70, 0xD3, 0xE9, 0x06, 0x57, 0xC2, 0xF8, 0x01, 0x50, -0xC2, 0xF8, 0x05, 0x70, 0xD9, 0xF8, 0x00, 0x50, 0xD8, 0xF8, 0x10, 0x70, 0xED, 0x1B, 0x5F, 0x6A, 0x01, 0x34, 0x3D, 0x44, -0xE4, 0xB2, 0xC2, 0xF8, 0x09, 0x50, 0x0D, 0x32, 0x72, 0x45, 0x03, 0xF1, 0x30, 0x03, 0xDF, 0xD1, 0x8C, 0x22, 0x04, 0xEB, -0x44, 0x03, 0x04, 0xEB, 0x83, 0x03, 0x02, 0xFB, 0x00, 0x60, 0x03, 0xF1, 0x09, 0x02, 0x80, 0xF8, 0x88, 0x40, 0x02, 0x33, -0x4A, 0x70, 0xA1, 0xF8, 0x07, 0x30, 0xBD, 0xE8, 0xF0, 0x83, 0x8C, 0x72, 0xB9, 0xE7, 0x93, 0xF8, 0x20, 0x50, 0x01, 0x2D, -0xD0, 0xD1, 0xE2, 0xE7, 0x48, 0x9E, 0x17, 0x00, 0xA4, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x02, 0x29, 0x20, 0xD0, -0x03, 0x29, 0x0F, 0xD0, 0x01, 0x29, 0x06, 0xD0, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x1E, 0xDB, -0x70, 0x47, 0x13, 0x4B, 0x8C, 0x22, 0x02, 0xFB, 0x00, 0x30, 0x80, 0xF8, 0x84, 0x10, 0x70, 0x47, 0x0F, 0x4B, 0x8C, 0x22, -0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0x84, 0x30, 0x00, 0x2B, 0xEF, 0xD1, 0x0C, 0x4B, 0x90, 0xF8, 0x71, 0x00, 0xD3, 0xF8, -0x90, 0x31, 0x01, 0x21, 0x18, 0x47, 0x08, 0x4B, 0x8C, 0x22, 0x02, 0xFB, 0x00, 0x30, 0x00, 0x23, 0x80, 0xF8, 0x84, 0x30, -0x70, 0x47, 0x06, 0x49, 0x06, 0x48, 0x4F, 0xF4, 0xEA, 0x62, 0x03, 0xF0, 0xA5, 0xBF, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x90, 0xF8, 0xC0, 0x34, -0x33, 0xB1, 0x90, 0xF8, 0x64, 0x30, 0x1B, 0xB1, 0x43, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x43, 0x60, 0x70, 0x47, 0x00, 0xBF, -0x2D, 0xE9, 0xF0, 0x47, 0x36, 0x4F, 0x02, 0x7E, 0xDF, 0xF8, 0xE0, 0x80, 0x35, 0x49, 0xD8, 0xF8, 0xB0, 0x33, 0x0E, 0x69, -0x05, 0x46, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x70, 0x98, 0x47, 0xEB, 0x7E, 0x00, 0x2B, 0x3A, 0xD0, 0xD5, 0xE9, -0x04, 0x43, 0x02, 0x2C, 0x8C, 0xBF, 0x01, 0x24, 0x00, 0x24, 0x02, 0x2B, 0x6B, 0x7E, 0x95, 0xF8, 0x18, 0xA0, 0x88, 0xBF, -0x44, 0xF0, 0x02, 0x04, 0x63, 0x40, 0x9B, 0x07, 0x44, 0xD1, 0xD1, 0x46, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x0A, 0x7A, -0x6C, 0x76, 0xDA, 0xF8, 0xE4, 0x00, 0x18, 0xB3, 0xDF, 0xF8, 0x94, 0xC0, 0x4F, 0xF0, 0x00, 0x0E, 0x90, 0xF8, 0x23, 0x10, -0x00, 0x68, 0x01, 0xEB, 0x41, 0x04, 0x64, 0x44, 0x4B, 0x00, 0x62, 0x78, 0xA4, 0x78, 0x02, 0x2A, 0x0B, 0x44, 0x88, 0xBF, -0x01, 0x22, 0x0C, 0xEB, 0x03, 0x01, 0x98, 0xBF, 0x00, 0x22, 0x02, 0x2C, 0x88, 0xBF, 0x42, 0xF0, 0x02, 0x02, 0x0C, 0xF8, -0x03, 0x20, 0x81, 0xF8, 0x01, 0xE0, 0x81, 0xF8, 0x02, 0xE0, 0x00, 0x28, 0xE2, 0xD1, 0x01, 0xE0, 0x95, 0xF8, 0x18, 0x90, -0x11, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x09, 0x77, 0x9B, 0x6A, 0x39, 0x6C, 0x00, 0x22, 0x5B, 0x1A, 0xC5, 0xE9, -0x04, 0x22, 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, 0x06, 0xF5, 0xC3, 0x31, 0xEB, 0x76, 0xD8, 0xF8, 0xE0, 0x31, 0x28, 0x46, -0xA0, 0x31, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x21, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0xC4, 0xFC, 0x95, 0xF8, 0x18, 0x90, -0xB4, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x60, 0x9F, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x10, 0x4D, 0xDF, 0xF8, 0x44, 0x80, 0xC0, 0xEB, 0xC0, 0x03, 0x05, 0xEB, -0x83, 0x03, 0xC0, 0xEB, 0xC0, 0x06, 0x9B, 0x7E, 0x04, 0x46, 0x05, 0xEB, 0x86, 0x06, 0xC7, 0x00, 0x1B, 0xB1, 0xD8, 0xF8, -0xD8, 0x31, 0x30, 0x46, 0x98, 0x47, 0x3F, 0x1B, 0x05, 0xEB, 0x87, 0x05, 0x1C, 0x22, 0x00, 0x21, 0x30, 0x46, 0xDF, 0xF7, -0x0F, 0xFA, 0xD8, 0xF8, 0x34, 0x33, 0xAE, 0x60, 0x2C, 0x76, 0x6B, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x80, 0x9F, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x08, 0xB5, 0x00, 0x20, 0xFF, 0xF7, 0xD4, 0xFF, 0x01, 0x20, 0xFF, 0xF7, 0xD1, 0xFF, 0x02, 0x20, -0xFF, 0xF7, 0xCE, 0xFF, 0x03, 0x20, 0xFF, 0xF7, 0xCB, 0xFF, 0x05, 0x4B, 0x00, 0x22, 0x03, 0xF1, 0x1E, 0x01, 0x5A, 0x70, -0x9A, 0x70, 0x03, 0xF8, 0x03, 0x2B, 0x8B, 0x42, 0xF9, 0xD1, 0x08, 0xBD, 0x60, 0x9F, 0x17, 0x00, 0x0B, 0x4A, 0xC0, 0xEB, -0xC0, 0x03, 0x02, 0xEB, 0x83, 0x03, 0x99, 0x7E, 0x71, 0xB9, 0x30, 0xB4, 0x08, 0x49, 0x09, 0x4C, 0x09, 0x69, 0xD4, 0xF8, -0xE0, 0x41, 0x01, 0x25, 0x01, 0xF5, 0xC3, 0x31, 0x9D, 0x76, 0x18, 0x46, 0xA0, 0x31, 0x23, 0x46, 0x30, 0xBC, 0x18, 0x47, -0x70, 0x47, 0x00, 0xBF, 0x80, 0x9F, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x09, 0x29, 0x08, 0xB5, -0x09, 0xD9, 0x6A, 0xBB, 0x21, 0x4B, 0xC0, 0xEB, 0xC0, 0x00, 0x03, 0xEB, 0x80, 0x00, 0x03, 0x69, 0x01, 0x33, 0x03, 0x61, -0x08, 0xBD, 0x8A, 0xB1, 0x1C, 0x4B, 0x1D, 0x4A, 0xC0, 0xEB, 0xC0, 0x00, 0x01, 0xEB, 0x41, 0x01, 0x03, 0xEB, 0x80, 0x00, -0x11, 0x44, 0x42, 0x69, 0x8B, 0x78, 0x01, 0x32, 0x02, 0x2B, 0x42, 0x61, 0xEE, 0xD8, 0x01, 0x33, 0x8B, 0x70, 0x08, 0xBD, -0x13, 0x4B, 0x14, 0x4A, 0xC0, 0xEB, 0xC0, 0x00, 0x01, 0xEB, 0x41, 0x01, 0x03, 0xEB, 0x80, 0x00, 0x11, 0x44, 0x03, 0x69, -0x4A, 0x78, 0x01, 0x33, 0x02, 0x2A, 0x03, 0x61, 0xDC, 0xD8, 0x01, 0x32, 0x4A, 0x70, 0x08, 0xBD, 0x0A, 0x4A, 0x0C, 0x4B, -0x1C, 0x21, 0x01, 0xFB, 0x00, 0x20, 0x1A, 0x68, 0x43, 0x69, 0xB2, 0xF9, 0x00, 0x20, 0x01, 0x33, 0x00, 0x2A, 0x43, 0x61, -0x05, 0xDA, 0x07, 0x49, 0x07, 0x48, 0x40, 0xF2, 0x69, 0x12, 0x03, 0xF0, 0x6F, 0xFE, 0x00, 0x23, 0x9B, 0x78, 0xFF, 0xDE, -0x80, 0x9F, 0x17, 0x00, 0x60, 0x9F, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xF8, 0xA3, 0x15, 0x00, -0x70, 0xB5, 0x1E, 0x46, 0x0D, 0x46, 0x01, 0x23, 0x31, 0x46, 0x40, 0xF6, 0x01, 0x00, 0x01, 0xF0, 0x77, 0xFD, 0x04, 0x46, -0x02, 0x20, 0x02, 0xF0, 0x15, 0xF8, 0x18, 0x4A, 0x18, 0x49, 0x03, 0x46, 0x04, 0x20, 0x03, 0xF0, 0x25, 0xFC, 0x02, 0x20, -0x02, 0xF0, 0x0C, 0xF8, 0xA0, 0xB9, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x16, 0xDB, 0x13, 0x4A, -0x00, 0x23, 0x23, 0x70, 0x28, 0x46, 0x15, 0x60, 0x93, 0x72, 0x16, 0x81, 0x01, 0x25, 0x00, 0xF0, 0x7D, 0xF9, 0x20, 0x46, -0x01, 0xF0, 0x86, 0xFD, 0x28, 0x46, 0x70, 0xBD, 0x08, 0x23, 0x20, 0x46, 0x23, 0x70, 0x00, 0x25, 0x01, 0xF0, 0x7E, 0xFD, -0x28, 0x46, 0x70, 0xBD, 0x95, 0xF8, 0x6F, 0x31, 0x00, 0x2B, 0xE4, 0xD1, 0x06, 0x49, 0x07, 0x48, 0x46, 0x22, 0x03, 0xF0, -0x25, 0xFE, 0xDE, 0xE7, 0x84, 0xA4, 0x15, 0x00, 0x00, 0xA4, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0xF4, 0x9F, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x08, 0xA4, 0x15, 0x00, 0x17, 0x4A, 0x18, 0x4B, 0x12, 0x68, 0x70, 0xB5, 0xB2, 0xF9, 0x00, 0x20, -0x1D, 0x68, 0x9C, 0x7A, 0x00, 0x2A, 0x19, 0xDB, 0x14, 0x4A, 0x15, 0x48, 0xD2, 0xE9, 0x00, 0x63, 0x04, 0xEB, 0x44, 0x04, -0x05, 0xEB, 0x44, 0x04, 0x43, 0xF4, 0x08, 0x53, 0xE1, 0x78, 0x53, 0x60, 0x33, 0x43, 0x03, 0x60, 0xCB, 0x07, 0x03, 0xD4, -0x0E, 0x4B, 0xD3, 0xF8, 0xEC, 0x32, 0x98, 0x47, 0x03, 0x21, 0x02, 0x20, 0x01, 0xF0, 0x0E, 0xFF, 0x00, 0x20, 0x70, 0xBD, -0x02, 0x20, 0x01, 0xF0, 0xB1, 0xFF, 0x02, 0x28, 0xE0, 0xD0, 0x08, 0x49, 0x08, 0x48, 0x9C, 0x22, 0x03, 0xF0, 0xEA, 0xFD, -0xDA, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xF4, 0x9F, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, -0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x1C, 0xA4, 0x15, 0x00, 0x38, 0xB5, 0x22, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x32, 0xDB, 0x20, 0x49, 0x20, 0x48, 0x21, 0x4C, 0xD1, 0xE9, 0x00, 0x32, 0x22, 0xF4, 0x08, 0x52, -0x13, 0x43, 0x03, 0x60, 0xA3, 0x7A, 0x20, 0x68, 0x4A, 0x60, 0x90, 0xF8, 0x6F, 0x51, 0x01, 0x33, 0xDB, 0xB2, 0x9D, 0x42, -0xA3, 0x72, 0x01, 0xD9, 0xE3, 0x7A, 0x93, 0xB1, 0x0C, 0x38, 0x01, 0xF0, 0x55, 0xFD, 0xE3, 0x7A, 0x8B, 0xB1, 0x16, 0x4B, -0x21, 0x89, 0xD3, 0xF8, 0xF0, 0x32, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, 0xE3, 0x72, 0x00, 0x21, 0x02, 0x20, 0x01, 0xF0, -0xC5, 0xFE, 0x00, 0x20, 0x38, 0xBD, 0x00, 0xF0, 0x8D, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x21, 0x89, 0x02, 0x22, 0x40, 0xF6, -0x02, 0x00, 0x01, 0xF0, 0x27, 0xFD, 0xEE, 0xE7, 0x02, 0x20, 0x01, 0xF0, 0x5D, 0xFF, 0x03, 0x28, 0xC7, 0xD0, 0x08, 0x49, -0x08, 0x48, 0xC2, 0x22, 0x03, 0xF0, 0x96, 0xFD, 0xC1, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, -0x60, 0x00, 0x32, 0x40, 0xF4, 0x9F, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x4C, 0xA4, 0x15, 0x00, -0x38, 0xB5, 0x02, 0x20, 0x1D, 0x46, 0x01, 0xF0, 0x41, 0xFF, 0x0A, 0x4A, 0x0A, 0x49, 0x04, 0x46, 0x03, 0x46, 0x04, 0x20, -0x03, 0xF0, 0x50, 0xFB, 0x24, 0xB1, 0x08, 0x4B, 0x01, 0x22, 0xDA, 0x72, 0x00, 0x20, 0x38, 0xBD, 0x06, 0x4B, 0x29, 0x46, -0xD3, 0xF8, 0xF0, 0x32, 0x01, 0x20, 0x98, 0x47, 0x00, 0x20, 0x38, 0xBD, 0x9C, 0xA4, 0x15, 0x00, 0x00, 0xA4, 0x15, 0x00, -0xF4, 0x9F, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x15, 0x4A, 0x03, 0x88, 0x11, 0x68, 0x40, 0xF6, 0x6C, 0x12, 0x93, 0x42, -0x08, 0x69, 0x1F, 0xD0, 0x40, 0xF6, 0x85, 0x12, 0x93, 0x42, 0x1B, 0xD0, 0x40, 0xF6, 0x9E, 0x12, 0x93, 0x42, 0x17, 0xD0, -0x40, 0xF6, 0xA8, 0x12, 0x93, 0x42, 0x13, 0xD0, 0x41, 0xF2, 0x3C, 0x42, 0x93, 0x42, 0x0F, 0xD0, 0x41, 0xF2, 0x64, 0x42, -0x93, 0x42, 0x0B, 0xD0, 0x41, 0xF2, 0x85, 0x62, 0x93, 0x42, 0x07, 0xD0, 0x41, 0xF2, 0x99, 0x62, 0x93, 0x42, 0x03, 0xD0, -0x41, 0xF2, 0xAD, 0x62, 0x93, 0x42, 0x02, 0xD1, 0x00, 0xF5, 0x9C, 0x40, 0x20, 0x30, 0x70, 0x47, 0xC8, 0x35, 0x17, 0x00, -0x08, 0xB5, 0x0C, 0x22, 0x00, 0x21, 0x08, 0x48, 0xDF, 0xF7, 0x48, 0xF8, 0x00, 0x21, 0x02, 0x20, 0x01, 0xF0, 0x44, 0xFE, -0x05, 0x4B, 0x06, 0x4A, 0x1A, 0x60, 0x03, 0xF1, 0x14, 0x01, 0x00, 0x22, 0x99, 0x60, 0x1A, 0x61, 0x5A, 0x60, 0x08, 0xBD, -0xF4, 0x9F, 0x17, 0x00, 0xD4, 0x61, 0x18, 0x00, 0xDE, 0xFA, 0xFE, 0xCA, 0x2D, 0xE9, 0xF0, 0x41, 0x2A, 0x4F, 0xBB, 0x7A, -0x3E, 0x68, 0x03, 0xEB, 0x43, 0x03, 0x06, 0xEB, 0x43, 0x05, 0x82, 0xB0, 0x95, 0xF8, 0x03, 0x80, 0x18, 0xF0, 0x05, 0x0F, -0x4F, 0xEA, 0x43, 0x04, 0x28, 0xD0, 0x24, 0x4B, 0x1B, 0x68, 0x5B, 0x69, 0x96, 0xF8, 0x6E, 0xC1, 0x95, 0xF9, 0x04, 0x20, -0x31, 0x5B, 0xA8, 0x78, 0xCD, 0xE9, 0x00, 0x8C, 0xFC, 0xF7, 0x94, 0xFC, 0x7B, 0x68, 0x93, 0xB1, 0xAA, 0x78, 0x31, 0x5B, -0xDA, 0xB9, 0xA1, 0xF6, 0x6C, 0x10, 0x48, 0x28, 0x0A, 0xD8, 0x40, 0xF6, 0xB4, 0x12, 0x91, 0x42, 0x28, 0xD0, 0x18, 0x48, -0xA1, 0xF6, 0x67, 0x12, 0xA0, 0xFB, 0x02, 0x12, 0xC2, 0xF3, 0x87, 0x02, 0x9A, 0x70, 0x02, 0x21, 0x08, 0x46, 0x02, 0xB0, -0xBD, 0xE8, 0xF0, 0x41, 0x01, 0xF0, 0xFA, 0xBD, 0x28, 0x46, 0xFF, 0xF7, 0x7B, 0xFF, 0x03, 0x46, 0xD4, 0xE7, 0x01, 0x2A, -0x02, 0xD0, 0x00, 0x22, 0x9A, 0x70, 0xEE, 0xE7, 0xA1, 0xF5, 0x9C, 0x51, 0xA1, 0xF1, 0x0D, 0x02, 0x92, 0xB2, 0xB2, 0xF5, -0x4D, 0x7F, 0xF4, 0xD8, 0x07, 0x4A, 0x08, 0x39, 0xA2, 0xFB, 0x01, 0x12, 0xC2, 0xF3, 0x87, 0x02, 0x9A, 0x70, 0xDE, 0xE7, -0x0E, 0x22, 0x9A, 0x70, 0xDB, 0xE7, 0x00, 0xBF, 0xF4, 0x9F, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, -0x70, 0xB5, 0x0B, 0x4E, 0x0B, 0x4C, 0x33, 0x68, 0x05, 0x46, 0xB3, 0xF8, 0x6C, 0x11, 0x20, 0x46, 0x02, 0xF0, 0x7A, 0xFB, -0x70, 0x60, 0xFF, 0xF7, 0x95, 0xFF, 0x54, 0xF8, 0x0C, 0x2C, 0xB5, 0xF8, 0x6C, 0x11, 0x01, 0x3A, 0x0A, 0x44, 0x00, 0x21, -0x44, 0xE9, 0x02, 0x21, 0x70, 0xBD, 0x00, 0xBF, 0xF4, 0x9F, 0x17, 0x00, 0xE8, 0x61, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x43, -0xDF, 0xF8, 0xD8, 0x90, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x93, 0x06, 0x46, 0x93, 0xF8, 0xC0, 0x04, 0x93, 0xF8, -0x6C, 0x50, 0x88, 0x46, 0x17, 0x46, 0x00, 0x28, 0x52, 0xD1, 0x1B, 0x6C, 0x18, 0x79, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, -0x1A, 0x21, 0xEE, 0xF7, 0x75, 0xFE, 0x04, 0x46, 0x00, 0x28, 0x4E, 0xD0, 0x28, 0x4A, 0xDF, 0xF8, 0xA8, 0xE0, 0x4F, 0xF4, -0x1E, 0x71, 0x01, 0xFB, 0x05, 0x21, 0xD0, 0xE9, 0x12, 0x3C, 0x0A, 0x46, 0xBE, 0xF8, 0xFC, 0x51, 0x52, 0xF8, 0x26, 0x0F, -0xD8, 0x66, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x06, 0x99, 0x40, 0x20, 0x83, 0xF8, 0x68, 0x00, 0x90, 0x88, 0xA3, 0xF8, -0x70, 0x00, 0xD9, 0xF8, 0x5C, 0x00, 0xB9, 0xF8, 0x60, 0x90, 0xC3, 0xF8, 0x72, 0x00, 0x01, 0x35, 0x90, 0x88, 0xA3, 0xF8, -0x76, 0x90, 0xAD, 0xB2, 0xD2, 0xF8, 0x00, 0x90, 0xA3, 0xF8, 0x7C, 0x00, 0x00, 0x20, 0x83, 0xF8, 0x69, 0x00, 0x83, 0xF8, -0x6A, 0x00, 0x83, 0xF8, 0x6B, 0x00, 0xC3, 0xF8, 0x78, 0x90, 0xAE, 0xF8, 0xFC, 0x51, 0x2D, 0x01, 0x83, 0xF8, 0x80, 0x00, -0x83, 0xF8, 0x81, 0x00, 0xA3, 0xF8, 0x7E, 0x50, 0xCC, 0xF8, 0x20, 0x00, 0x26, 0x77, 0x91, 0xF8, 0x23, 0x30, 0x63, 0x77, -0xC4, 0xE9, 0x15, 0x87, 0x20, 0x46, 0x05, 0x21, 0xBD, 0xE8, 0xF8, 0x43, 0xEE, 0xF7, 0x3A, 0xBE, 0x01, 0x20, 0x1A, 0x21, -0xEE, 0xF7, 0x26, 0xFE, 0x04, 0x46, 0x00, 0x28, 0xB0, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x52, 0x4B, 0x83, 0xB0, 0x1D, 0x68, 0x9B, 0x7A, -0x01, 0x93, 0x95, 0xF8, 0x70, 0x31, 0x95, 0xF8, 0x6E, 0x81, 0x00, 0x2B, 0x00, 0xF0, 0x8B, 0x80, 0x4D, 0x4B, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x08, 0x38, 0x08, 0xF1, 0x5C, 0x07, 0x05, 0xF1, 0xFD, 0x09, 0x00, 0x26, 0x98, 0xF8, 0xC0, 0x34, -0x00, 0x2B, 0x7F, 0xD1, 0x01, 0x9B, 0x03, 0xEB, 0x43, 0x03, 0x05, 0xEB, 0x43, 0x03, 0x9B, 0x78, 0x00, 0x2B, 0x77, 0xD1, -0x95, 0xF8, 0x71, 0x01, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x19, 0xF8, 0x01, 0x3C, 0xB5, 0xF8, 0x6C, 0x11, 0x1A, 0x33, -0x19, 0x44, 0xEE, 0xF7, 0xE9, 0xFD, 0x4A, 0x46, 0x01, 0x46, 0x00, 0x28, 0x63, 0xD0, 0xD0, 0xE9, 0x12, 0x3C, 0x40, 0x24, -0x00, 0x20, 0x83, 0xF8, 0x68, 0x40, 0x83, 0xF8, 0x69, 0x00, 0x83, 0xF8, 0x6A, 0x00, 0x83, 0xF8, 0x6B, 0x00, 0x95, 0xF8, -0x60, 0x01, 0xC0, 0x07, 0x58, 0xD4, 0xD5, 0xF8, 0x60, 0x01, 0xB5, 0xF8, 0x64, 0x41, 0xA3, 0xF8, 0x70, 0x40, 0xD8, 0x66, -0x05, 0xF5, 0xB0, 0x7A, 0xDF, 0xF8, 0xC0, 0xE0, 0x38, 0x68, 0xBE, 0xF8, 0xFC, 0x41, 0xB7, 0xF8, 0x04, 0xB0, 0xC3, 0xF8, -0x72, 0x00, 0x01, 0x34, 0xDA, 0xF8, 0x00, 0x00, 0xBA, 0xF8, 0x04, 0xA0, 0xA3, 0xF8, 0x76, 0xB0, 0xA4, 0xB2, 0x4F, 0xF0, -0x00, 0x0B, 0x98, 0x67, 0xA3, 0xF8, 0x7C, 0xA0, 0xAE, 0xF8, 0xFC, 0x41, 0x83, 0xF8, 0x80, 0xB0, 0x19, 0xF8, 0x01, 0x0C, -0x83, 0xF8, 0x81, 0x00, 0x19, 0xF8, 0x01, 0x0C, 0x24, 0x01, 0xA3, 0xF8, 0x7E, 0x40, 0x40, 0xB1, 0x81, 0x33, 0x09, 0xEB, -0x00, 0x04, 0x12, 0xF8, 0x01, 0x0B, 0x03, 0xF8, 0x01, 0x0F, 0xA2, 0x42, 0xF9, 0xD1, 0xB5, 0xF8, 0x6C, 0x21, 0xDC, 0xF8, -0x28, 0x30, 0x16, 0x48, 0xCC, 0xF8, 0x20, 0x00, 0x9B, 0x1A, 0x00, 0x22, 0xCC, 0xF8, 0x28, 0x30, 0xC1, 0xE9, 0x15, 0x22, -0x95, 0xF8, 0x6E, 0x31, 0x0B, 0x77, 0xFF, 0x23, 0x4B, 0x77, 0x08, 0x46, 0x05, 0x21, 0xEE, 0xF7, 0x99, 0xFD, 0x95, 0xF8, -0x70, 0x31, 0x01, 0x36, 0xB3, 0x42, 0x09, 0xF1, 0x21, 0x09, 0x3F, 0xF7, 0x7F, 0xAF, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x01, 0x20, 0x8A, 0xE7, 0x07, 0x48, 0x04, 0x68, 0x80, 0x88, 0xDC, 0x66, 0xA3, 0xF8, 0x70, 0x00, 0x05, 0xF5, 0xB0, 0x7A, -0xA6, 0xE7, 0x00, 0xBF, 0xF4, 0x9F, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xD4, 0x61, 0x18, 0x00, 0xAC, 0xB2, 0x15, 0x00, -0x20, 0x62, 0x17, 0x00, 0x38, 0xB5, 0x02, 0x22, 0x05, 0x46, 0x01, 0x23, 0x40, 0xF6, 0x04, 0x00, 0x01, 0xF0, 0x92, 0xFA, -0x04, 0x46, 0x02, 0x20, 0x01, 0xF0, 0x30, 0xFD, 0x05, 0x4A, 0x06, 0x49, 0x03, 0x46, 0x04, 0x20, 0x03, 0xF0, 0x40, 0xF9, -0x25, 0x70, 0x20, 0x46, 0xBD, 0xE8, 0x38, 0x40, 0x01, 0xF0, 0xB2, 0xBA, 0xBC, 0xA4, 0x15, 0x00, 0x00, 0xA4, 0x15, 0x00, -0x03, 0x4A, 0x93, 0x7A, 0x10, 0x68, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x43, 0x00, 0x70, 0x47, 0xF4, 0x9F, 0x17, 0x00, -0xC3, 0x78, 0x13, 0xF0, 0x05, 0x0F, 0x03, 0xD0, 0x02, 0x4B, 0x1B, 0x68, 0x58, 0x69, 0x70, 0x47, 0xFF, 0xF7, 0xE8, 0xBD, -0xC8, 0x35, 0x17, 0x00, 0x0E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDA, 0x0C, 0x4B, 0x1B, 0x68, -0x1B, 0x07, 0x0D, 0xD1, 0x0B, 0x48, 0x0C, 0x49, 0x02, 0x68, 0x4B, 0x68, 0x22, 0xF0, 0x80, 0x02, 0x02, 0x60, 0x23, 0xF0, -0x04, 0x03, 0x4F, 0xF0, 0x80, 0x60, 0x4B, 0x60, 0x01, 0xF0, 0x3C, 0xBE, 0x06, 0x49, 0x07, 0x48, 0x84, 0x22, 0x03, 0xF0, -0xFB, 0xBA, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x38, 0x00, 0x32, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x84, 0x9E, 0x15, 0x00, 0x5A, 0x4A, 0x5B, 0x49, 0x13, 0x68, 0xF0, 0xB4, 0x14, 0x68, 0x5A, 0x4E, -0x5A, 0x4D, 0x24, 0xF0, 0xFF, 0x04, 0x04, 0x43, 0x14, 0x60, 0x14, 0x68, 0x17, 0x68, 0xC4, 0xF3, 0x09, 0x24, 0x27, 0xF4, -0x7F, 0x37, 0xDB, 0xB2, 0x00, 0xFB, 0x04, 0xF4, 0x27, 0xF4, 0x40, 0x77, 0xB4, 0xFB, 0xF3, 0xF4, 0x01, 0xEA, 0x04, 0x24, -0x3C, 0x43, 0x14, 0x60, 0x11, 0x68, 0x14, 0x68, 0xC1, 0xF3, 0x89, 0x41, 0x2C, 0x40, 0x00, 0xFB, 0x01, 0xF1, 0xB1, 0xFB, -0xF3, 0xF1, 0x06, 0xEA, 0x81, 0x41, 0x21, 0x43, 0x11, 0x60, 0x11, 0x68, 0x49, 0x4E, 0x4A, 0x4C, 0x0D, 0x40, 0x45, 0xF0, -0x89, 0x65, 0x15, 0x60, 0x32, 0x68, 0x35, 0x68, 0x47, 0x49, 0xC2, 0xF3, 0x0F, 0x22, 0x25, 0xF4, 0x7F, 0x05, 0x25, 0xF4, -0x7F, 0x45, 0x00, 0xFB, 0x02, 0xF2, 0xB2, 0xFB, 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x22, 0x2A, 0x43, 0x32, 0x60, 0x0A, 0x68, -0x0D, 0x68, 0x40, 0x4C, 0xC2, 0xF3, 0x09, 0x52, 0x25, 0xF0, 0x7F, 0x55, 0x00, 0xFB, 0x02, 0xF2, 0x25, 0xF4, 0x40, 0x15, -0xB2, 0xFB, 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x52, 0x2A, 0x43, 0x0A, 0x60, 0x0A, 0x68, 0x0C, 0x68, 0xC2, 0xF3, 0x09, 0x02, -0x24, 0xF4, 0x7F, 0x74, 0x00, 0xFB, 0x02, 0xF2, 0x24, 0xF0, 0x03, 0x04, 0xB2, 0xFB, 0xF3, 0xF2, 0xC2, 0xF3, 0x09, 0x02, -0x22, 0x43, 0x1D, 0x28, 0x0A, 0x60, 0x44, 0xD8, 0x4A, 0x68, 0x42, 0xF0, 0x03, 0x02, 0x4A, 0x60, 0x2E, 0x49, 0x2B, 0x4C, -0x0A, 0x68, 0x2E, 0x4E, 0x0F, 0x68, 0x2E, 0x4D, 0xC2, 0xF3, 0x0F, 0x22, 0x37, 0x40, 0x00, 0xFB, 0x02, 0xF2, 0xB2, 0xFB, -0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x22, 0x3A, 0x43, 0x0A, 0x60, 0x2A, 0x68, 0x2F, 0x68, 0xC2, 0xF3, 0x0F, 0x22, 0x00, 0xFB, -0x02, 0xF2, 0x3E, 0x40, 0xB2, 0xFB, 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x22, 0x32, 0x43, 0x2A, 0x60, 0x0A, 0x69, 0x0D, 0x69, -0x1D, 0x4C, 0xC2, 0xF3, 0x09, 0x52, 0x25, 0xF0, 0x7F, 0x55, 0x00, 0xFB, 0x02, 0xF2, 0x25, 0xF4, 0x40, 0x15, 0xB2, 0xFB, -0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x52, 0x2A, 0x43, 0x0A, 0x61, 0x0C, 0x69, 0x0A, 0x69, 0xC4, 0xF3, 0x09, 0x04, 0x22, 0xF4, -0x7F, 0x72, 0x00, 0xFB, 0x04, 0xF0, 0x22, 0xF0, 0x03, 0x02, 0xB0, 0xFB, 0xF3, 0xF0, 0xC0, 0xF3, 0x09, 0x00, 0x10, 0x43, -0xF0, 0xBC, 0x08, 0x61, 0x70, 0x47, 0x11, 0x49, 0x0A, 0x68, 0x3B, 0x28, 0x22, 0xF0, 0x03, 0x02, 0x94, 0xBF, 0x42, 0xF0, -0x02, 0x02, 0x42, 0xF0, 0x01, 0x02, 0x0A, 0x60, 0xB2, 0xE7, 0x00, 0xBF, 0xE4, 0x00, 0x32, 0x40, 0x00, 0xFF, 0x03, 0x00, -0x00, 0x00, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xF0, 0xE8, 0x00, 0x32, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0xEC, 0x00, 0x32, 0x40, -0x00, 0x00, 0xF0, 0x3F, 0xF4, 0x00, 0x32, 0x40, 0xFF, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x32, 0x40, 0xF0, 0x00, 0x32, 0x40, -0x1D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x2C, 0xDB, 0xF0, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x18, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x18, 0x4B, 0x18, 0x49, 0x1B, 0x68, 0x0E, 0x68, 0x18, 0x4C, -0x18, 0x4A, 0x19, 0x4D, 0x19, 0x4F, 0x03, 0xF5, 0xC3, 0x43, 0x28, 0x33, 0x70, 0x1C, 0x08, 0x60, 0x23, 0x60, 0x17, 0x4C, -0x80, 0x23, 0x13, 0x60, 0x2A, 0x68, 0x63, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x43, 0xF0, 0x04, 0x03, 0x2A, 0x60, 0x63, 0x60, -0x00, 0x23, 0x3B, 0x60, 0x28, 0xB1, 0x09, 0x4B, 0x0E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xF0, 0xBC, -0x70, 0x47, 0x0B, 0x4B, 0x1B, 0x68, 0x1A, 0x07, 0xCE, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0xD9, 0x22, 0x03, 0xF0, 0xE4, 0xB9, -0x38, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, 0x6C, 0x28, 0x17, 0x00, 0x44, 0x01, 0x32, 0x40, -0x88, 0x80, 0x32, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x38, 0x00, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xD4, 0xA4, 0x15, 0x00, 0x03, 0x4A, 0x01, 0x23, 0x13, 0x60, 0x13, 0x68, 0x13, 0xF0, 0xFF, 0x0F, 0xFB, 0xD1, 0x70, 0x47, -0x50, 0x80, 0x32, 0x40, 0x70, 0xB5, 0x76, 0x4A, 0x01, 0x23, 0x82, 0xB0, 0x13, 0x60, 0x13, 0x68, 0x13, 0xF0, 0xFF, 0x0F, -0xFB, 0xD1, 0x73, 0x4B, 0xD3, 0xF8, 0xF0, 0x40, 0xDE, 0xF7, 0x66, 0xFF, 0xA0, 0x47, 0x71, 0x4B, 0x71, 0x49, 0x72, 0x4A, -0x19, 0x60, 0x13, 0x68, 0x71, 0x49, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x0B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xC0, 0xF2, 0x86, 0x80, 0x6D, 0x48, 0x6E, 0x4B, 0x6A, 0x49, 0x6E, 0x4C, 0x6E, 0x4A, 0x04, 0x60, 0x1A, 0x60, 0x0A, 0x68, -0x6D, 0x4C, 0x6E, 0x4D, 0x42, 0xF0, 0x80, 0x62, 0x42, 0xF4, 0xF8, 0x62, 0x0A, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x80, 0x62, -0x0A, 0x60, 0x50, 0xF8, 0x84, 0x2C, 0x69, 0x49, 0xA3, 0xF5, 0x00, 0x43, 0x1C, 0x3B, 0x42, 0xF4, 0x80, 0x32, 0x40, 0xF8, -0x84, 0x2C, 0x25, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x7F, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x02, 0x1A, 0x60, -0x1A, 0x68, 0x22, 0xF4, 0xFE, 0x02, 0x42, 0xF4, 0x80, 0x12, 0x1A, 0x60, 0x8A, 0x78, 0x2A, 0xB9, 0x1A, 0x68, 0x12, 0x0C, -0x12, 0x04, 0x42, 0xF0, 0x64, 0x02, 0x1A, 0x60, 0x5A, 0x4B, 0x5B, 0x49, 0x50, 0x4C, 0x5B, 0x4E, 0x5B, 0x4D, 0x00, 0x22, -0x4F, 0xF4, 0x40, 0x50, 0x08, 0x60, 0x1A, 0x60, 0x0D, 0xF1, 0x06, 0x01, 0x0D, 0xF1, 0x07, 0x00, 0xE0, 0xF7, 0x1C, 0xF9, -0x9D, 0xF8, 0x07, 0x20, 0x9D, 0xF8, 0x06, 0x00, 0x54, 0x49, 0x13, 0x02, 0x43, 0xEA, 0x00, 0x43, 0x13, 0x43, 0x0B, 0x60, -0x23, 0x68, 0x52, 0x4A, 0x43, 0xF4, 0x80, 0x53, 0x23, 0x60, 0x23, 0x68, 0x41, 0xF6, 0x25, 0x40, 0x43, 0xF4, 0x00, 0x53, -0x23, 0x60, 0xC1, 0xF8, 0x70, 0x04, 0x13, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x13, 0x60, 0xDF, 0xF7, 0x77, 0xFD, 0x32, 0x68, -0x49, 0x49, 0x43, 0x1C, 0x9B, 0x06, 0x22, 0xF0, 0xE0, 0x52, 0x03, 0xF0, 0xE0, 0x53, 0x13, 0x43, 0x33, 0x60, 0x23, 0x68, -0x45, 0x4A, 0x43, 0xF0, 0x20, 0x03, 0x23, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, -0x02, 0x03, 0x13, 0x60, 0x23, 0x68, 0x43, 0xF0, 0x00, 0x73, 0x23, 0x60, 0x2B, 0x68, 0x99, 0x03, 0x13, 0xD4, 0x3D, 0x4A, -0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x02, 0xB0, 0x70, 0xBD, 0x2A, 0x4B, 0x1B, 0x68, 0xB3, 0xF1, 0xC8, 0x5F, -0xBF, 0xF4, 0x74, 0xAF, 0x37, 0x49, 0x38, 0x48, 0x40, 0xF2, 0x21, 0x12, 0x03, 0xF0, 0x46, 0xF9, 0x6C, 0xE7, 0xDF, 0xF7, -0x05, 0xFD, 0x00, 0x28, 0xE7, 0xD0, 0xDF, 0xF7, 0x35, 0xFD, 0x33, 0x4E, 0x32, 0x68, 0x00, 0x02, 0x00, 0xF4, 0xE0, 0x63, -0x22, 0xF4, 0xE0, 0x62, 0x13, 0x43, 0x33, 0x60, 0x33, 0x68, 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, 0x60, 0x03, 0x33, 0x60, -0x33, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x33, 0x60, 0x33, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x33, 0x60, 0x2B, 0x68, 0x1B, 0x04, -0x0D, 0xD4, 0x1E, 0x4B, 0x1B, 0x68, 0x9A, 0x03, 0xC7, 0xD5, 0xDF, 0xF7, 0xE9, 0xFC, 0x00, 0x28, 0xC3, 0xD0, 0x22, 0x4A, -0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0xBD, 0xE7, 0xDF, 0xF7, 0xB1, 0xFC, 0x00, 0x28, 0xED, 0xD0, 0x23, 0x68, -0x43, 0xF4, 0x00, 0x23, 0x23, 0x60, 0x33, 0x68, 0x23, 0xF0, 0x60, 0x63, 0x43, 0xF0, 0x80, 0x63, 0x33, 0x60, 0xE2, 0xE7, -0x50, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, 0x4C, 0xF1, 0x73, 0x8B, 0x4C, 0x00, 0x32, 0x40, -0x38, 0x36, 0x17, 0x00, 0xD8, 0x00, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, 0x10, 0x19, 0x04, 0x00, 0xC0, 0x07, 0xF9, 0x80, -0x60, 0x00, 0x32, 0x40, 0xDE, 0xFF, 0xFF, 0x7F, 0x3C, 0x36, 0x17, 0x00, 0x24, 0x02, 0x32, 0x40, 0x58, 0x01, 0x32, 0x40, -0x9C, 0x00, 0x32, 0x40, 0x04, 0x00, 0x32, 0x40, 0xA0, 0x00, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, 0x48, 0x80, 0x32, 0x40, -0x6C, 0x00, 0x32, 0x40, 0x00, 0x04, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0x40, 0x88, 0x15, 0x00, 0x50, 0x03, 0x32, 0x40, -0x05, 0x49, 0x06, 0x4A, 0x0B, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, -0x70, 0x47, 0x00, 0xBF, 0x74, 0x80, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, 0x1D, 0x4A, 0x1E, 0x49, 0x13, 0x68, 0x1E, 0x48, -0x30, 0xB4, 0x23, 0xF0, 0x80, 0x03, 0x00, 0x25, 0x3C, 0x24, 0x13, 0x60, 0x0D, 0x60, 0x0A, 0x46, 0x04, 0x60, 0x13, 0x68, -0x1B, 0x07, 0xFC, 0xD1, 0x17, 0x4A, 0x18, 0x49, 0x13, 0x68, 0x18, 0x4D, 0x18, 0x48, 0x19, 0x4C, 0x43, 0xF4, 0x80, 0x33, -0x13, 0x60, 0x0B, 0x68, 0x02, 0xF5, 0x00, 0x42, 0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x60, 0x20, 0x32, 0x4F, 0xF0, 0xFF, 0x33, -0x2B, 0x60, 0x04, 0x60, 0x13, 0x68, 0x12, 0x4C, 0x12, 0x49, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x22, 0x68, 0x4B, 0x68, -0xA0, 0xF5, 0x00, 0x40, 0x24, 0x38, 0x42, 0xF0, 0x00, 0x42, 0x22, 0x60, 0x02, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x42, 0xF0, -0x80, 0x02, 0x02, 0x60, 0x30, 0xBC, 0x4B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x4C, 0x00, 0x32, 0x40, 0x38, 0x00, 0x32, 0x40, -0x54, 0x00, 0x32, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x7C, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x44, 0xF1, 0x73, 0x0B, -0x80, 0x80, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x0B, 0x49, 0x0C, 0x4A, 0x0C, 0x4B, 0x10, 0xB4, 0x04, 0x68, 0x80, 0x88, -0x0C, 0x60, 0x4F, 0xF0, 0x00, 0x51, 0x10, 0x60, 0x1A, 0x46, 0x19, 0x60, 0x10, 0x68, 0x81, 0x00, 0xFC, 0xD4, 0xC3, 0x00, -0x5D, 0xBF, 0x00, 0x0C, 0x10, 0x38, 0xC0, 0xB2, 0xFF, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0xBC, 0x00, 0x32, 0x40, -0xC0, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, 0x38, 0xB5, 0x11, 0x4B, 0x11, 0x48, 0x19, 0x68, 0x42, 0x68, 0x11, 0x4C, -0x11, 0x4D, 0x21, 0xF0, 0x01, 0x01, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF0, 0x02, 0x01, 0x19, 0x60, 0x23, 0x68, 0x0E, 0x49, -0x43, 0xF4, 0xE0, 0x63, 0x2A, 0x43, 0x23, 0x60, 0x05, 0x60, 0x01, 0x20, 0x0A, 0x60, 0xF3, 0xF7, 0x51, 0xFB, 0x23, 0x68, -0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0x80, 0x33, 0x23, 0x60, 0x23, 0x68, 0x43, 0xF4, 0x00, 0x53, 0x23, 0x60, 0x38, 0xBD, -0x74, 0x80, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0xDE, 0xFF, 0xFF, 0x7F, 0x60, 0x00, 0x32, 0x40, -0x80, 0xEA, 0xE0, 0x72, 0xF0, 0xB4, 0xA2, 0xEB, 0xE0, 0x72, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x16, 0x4B, 0x01, 0x21, 0x19, 0x60, 0x16, 0x4D, 0x16, 0x4B, 0x2E, 0x68, 0x1B, 0x68, 0x16, 0x49, 0x77, 0x1C, 0x00, 0x28, -0x09, 0x68, 0x2F, 0x60, 0x43, 0xF0, 0x80, 0x73, 0x15, 0xDD, 0x8A, 0x42, 0x18, 0xD8, 0x11, 0x49, 0x0F, 0x4C, 0x0A, 0x68, -0x10, 0x1A, 0x08, 0x60, 0x23, 0x60, 0x08, 0x60, 0x23, 0x60, 0x08, 0x60, 0x00, 0x20, 0x23, 0x60, 0x2F, 0xB1, 0x08, 0x4B, -0x2E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xF0, 0xBC, 0x70, 0x47, 0xEA, 0xD0, 0xC9, 0x43, 0x20, 0x32, -0x91, 0x42, 0xE6, 0xD2, 0x4F, 0xF0, 0xFF, 0x30, 0xEE, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x4C, 0x00, 0x32, 0x40, 0xA4, 0x80, 0x32, 0x40, 0x35, 0x4B, 0x1B, 0x68, 0x70, 0xB5, 0xC3, 0xF3, 0x40, 0x64, 0x9B, 0x01, -0x12, 0xD4, 0x33, 0x49, 0x33, 0x48, 0x0B, 0x69, 0x33, 0x4A, 0x05, 0x68, 0x08, 0x69, 0xB2, 0xF8, 0xB0, 0x10, 0xB2, 0xF8, -0xB2, 0x20, 0xA3, 0xF5, 0xFA, 0x63, 0x03, 0xEB, 0x45, 0x13, 0x1B, 0x1A, 0x5B, 0x1A, 0x9B, 0x1A, 0x00, 0x2B, 0x17, 0xDB, -0x2C, 0x4B, 0x1D, 0x68, 0x9D, 0xB1, 0x28, 0x48, 0x29, 0x4E, 0xEA, 0x68, 0x03, 0x69, 0xB6, 0xF8, 0xB0, 0x40, 0xB6, 0xF8, -0xB2, 0x10, 0xD3, 0x1A, 0xA3, 0xF5, 0xFA, 0x63, 0x1B, 0x1B, 0x5B, 0x1A, 0x00, 0x2B, 0x07, 0xDB, 0x24, 0x4B, 0x1B, 0x68, -0x1C, 0x78, 0x01, 0x2C, 0x0B, 0xD0, 0x01, 0x24, 0x20, 0x46, 0x70, 0xBD, 0x21, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x12, 0xDB, 0x00, 0x24, 0x20, 0x46, 0x70, 0xBD, 0x1D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x18, 0xDB, 0x15, 0x4B, 0x52, 0x1A, 0x4F, 0xF4, 0x80, 0x20, 0x04, 0x21, 0x98, 0x60, 0x1A, 0x63, 0x20, 0x46, 0x99, 0x60, -0x70, 0xBD, 0x03, 0x69, 0xD2, 0x1A, 0x02, 0xF5, 0x9C, 0x52, 0x08, 0x32, 0x00, 0x2A, 0xE5, 0xDA, 0x12, 0x49, 0x13, 0x48, -0x40, 0xF2, 0x3E, 0x22, 0x02, 0xF0, 0x92, 0xFF, 0x00, 0x24, 0xD5, 0xE7, 0x03, 0x69, 0xD3, 0x1A, 0x5B, 0x1A, 0x00, 0x2B, -0xE1, 0xDA, 0x0C, 0x49, 0x0D, 0x48, 0x40, 0xF2, 0x43, 0x22, 0x02, 0xF0, 0x85, 0xFF, 0xEA, 0x68, 0xB6, 0xF8, 0xB2, 0x10, -0xD7, 0xE7, 0x00, 0xBF, 0x4C, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x40, 0x80, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, -0xD0, 0x9C, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0xA4, 0x15, 0x00, -0x80, 0x8D, 0x15, 0x00, 0x70, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0B, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x0B, 0x4B, 0x0B, 0x49, 0x0C, 0x4D, 0x0E, 0x68, 0x1A, 0x68, 0x28, 0x68, 0x09, 0x68, 0x54, 0x1C, 0xB1, 0x42, -0x18, 0xBF, 0x28, 0x68, 0x1C, 0x60, 0x2C, 0xB1, 0x03, 0x4C, 0x1A, 0x60, 0x23, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, -0x70, 0xBC, 0x70, 0x47, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA8, 0x80, 0x32, 0x40, 0xA4, 0x80, 0x32, 0x40, -0x3B, 0x4A, 0x3C, 0x4B, 0x10, 0xB5, 0x14, 0x68, 0x1C, 0x60, 0x61, 0x05, 0x1D, 0xD4, 0xE2, 0x05, 0x16, 0xD4, 0xA3, 0x05, -0x10, 0xD4, 0xE0, 0x06, 0x31, 0xD4, 0x37, 0x4B, 0x1A, 0x78, 0x22, 0xB1, 0x14, 0xF0, 0x2F, 0x0F, 0x1C, 0xBF, 0x01, 0x22, -0x9A, 0x71, 0x34, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0D, 0xDB, 0x10, 0xBD, 0x31, 0x48, 0x02, 0xF0, -0xAD, 0xFC, 0xFE, 0xE7, 0xF2, 0xF7, 0x96, 0xFD, 0xA3, 0x05, 0xE6, 0xD5, 0xF6, 0xE7, 0x2E, 0x48, 0x02, 0xF0, 0xA4, 0xFC, -0xFE, 0xE7, 0xE1, 0x07, 0x1C, 0xD4, 0xA2, 0x07, 0x42, 0xD4, 0x63, 0x07, 0x38, 0xD4, 0x20, 0x07, 0x2E, 0xD4, 0x21, 0x06, -0x24, 0xD4, 0x62, 0x06, 0x1A, 0xD4, 0xA3, 0x06, 0xE3, 0xD5, 0xBD, 0xE8, 0x10, 0x40, 0x25, 0x49, 0x25, 0x48, 0x40, 0xF2, -0xB5, 0x22, 0x02, 0xF0, 0xD5, 0xBE, 0x04, 0x20, 0xEC, 0xF7, 0xA4, 0xFD, 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, 0xEC, 0xF7, -0x3F, 0xFE, 0xC4, 0xE7, 0xBD, 0xE8, 0x10, 0x40, 0x1C, 0x49, 0x1E, 0x48, 0x4F, 0xF4, 0x2B, 0x72, 0x02, 0xF0, 0xC4, 0xBE, -0xBD, 0xE8, 0x10, 0x40, 0x18, 0x49, 0x1B, 0x48, 0x40, 0xF2, 0xB3, 0x22, 0x02, 0xF0, 0xBC, 0xBE, 0xBD, 0xE8, 0x10, 0x40, -0x14, 0x49, 0x18, 0x48, 0x40, 0xF2, 0xB1, 0x22, 0x02, 0xF0, 0xB4, 0xBE, 0xBD, 0xE8, 0x10, 0x40, 0x10, 0x49, 0x15, 0x48, -0x40, 0xF2, 0xAF, 0x22, 0x02, 0xF0, 0xAC, 0xBE, 0xBD, 0xE8, 0x10, 0x40, 0x0C, 0x49, 0x12, 0x48, 0x40, 0xF2, 0xAE, 0x22, -0x02, 0xF0, 0xA4, 0xBE, 0xBD, 0xE8, 0x10, 0x40, 0x08, 0x49, 0x0F, 0x48, 0x40, 0xF2, 0xAD, 0x22, 0x02, 0xF0, 0x9C, 0xBE, -0x84, 0x80, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, 0x80, 0x35, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x5C, 0xA5, 0x15, 0x00, -0x28, 0xA5, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x80, 0xA6, 0x15, 0x00, 0x90, 0xA5, 0x15, 0x00, 0x58, 0xA6, 0x15, 0x00, -0x30, 0xA6, 0x15, 0x00, 0x08, 0xA6, 0x15, 0x00, 0xE0, 0xA5, 0x15, 0x00, 0xB8, 0xA5, 0x15, 0x00, 0x38, 0xB5, 0x62, 0x4A, -0x62, 0x4B, 0x11, 0x68, 0x1C, 0x68, 0x62, 0x4B, 0x0C, 0x40, 0x23, 0x40, 0x54, 0x60, 0x00, 0x2B, 0x54, 0xD1, 0x60, 0x4B, -0x23, 0x40, 0x00, 0x2B, 0x4B, 0xD1, 0x62, 0x07, 0x03, 0xD5, 0x5E, 0x4B, 0xD3, 0xF8, 0xDC, 0x30, 0x98, 0x47, 0x23, 0x07, -0x03, 0xD5, 0x5B, 0x4B, 0xD3, 0xF8, 0xD4, 0x30, 0x98, 0x47, 0xE5, 0x00, 0x2E, 0xD4, 0xE0, 0x05, 0x28, 0xD4, 0x58, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x38, 0xBD, 0x61, 0x02, 0x3C, 0xD4, 0xA2, 0x02, 0x42, 0xD4, -0x63, 0x06, 0x48, 0xD4, 0xE5, 0x04, 0x4E, 0xD4, 0xA0, 0x04, 0x54, 0xD4, 0x61, 0x04, 0x5A, 0xD4, 0x22, 0x04, 0x60, 0xD4, -0xE3, 0x03, 0x66, 0xD4, 0xA5, 0x03, 0x6C, 0xD4, 0xE0, 0x01, 0x72, 0xD4, 0xA1, 0x01, 0x78, 0xD4, 0xE2, 0x02, 0x7E, 0xD4, -0x23, 0x01, 0xE4, 0xD5, 0xBD, 0xE8, 0x38, 0x40, 0x47, 0x49, 0x48, 0x48, 0x40, 0xF2, 0x19, 0x32, 0x02, 0xF0, 0x38, 0xBE, -0x46, 0x48, 0x02, 0xF0, 0xED, 0xFB, 0xD2, 0xE7, 0x45, 0x4B, 0x46, 0x4A, 0x1D, 0x68, 0x93, 0x7F, 0x05, 0xF0, 0x3F, 0x01, -0x0B, 0x43, 0x4F, 0xF4, 0x00, 0x20, 0x93, 0x77, 0x01, 0xF0, 0x64, 0xF9, 0x41, 0x4B, 0x1D, 0x60, 0xC1, 0xE7, 0x4F, 0xF0, -0x80, 0x70, 0x01, 0xF0, 0x5D, 0xF9, 0xAE, 0xE7, 0x4F, 0xF0, 0x00, 0x70, 0x01, 0xF0, 0x58, 0xF9, 0xA5, 0xE7, 0xBD, 0xE8, -0x38, 0x40, 0x35, 0x49, 0x3A, 0x48, 0x40, 0xF2, 0x0B, 0x32, 0x02, 0xF0, 0x13, 0xBE, 0xBD, 0xE8, 0x38, 0x40, 0x31, 0x49, -0x37, 0x48, 0x4F, 0xF4, 0x43, 0x72, 0x02, 0xF0, 0x0B, 0xBE, 0xBD, 0xE8, 0x38, 0x40, 0x2D, 0x49, 0x34, 0x48, 0x40, 0xF2, -0x0D, 0x32, 0x02, 0xF0, 0x03, 0xBE, 0xBD, 0xE8, 0x38, 0x40, 0x29, 0x49, 0x31, 0x48, 0x4F, 0xF4, 0x44, 0x72, 0x02, 0xF0, -0xFB, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x25, 0x49, 0x2E, 0x48, 0x40, 0xF2, 0x11, 0x32, 0x02, 0xF0, 0xF3, 0xBD, 0xBD, 0xE8, -0x38, 0x40, 0x21, 0x49, 0x2B, 0x48, 0x40, 0xF2, 0x12, 0x32, 0x02, 0xF0, 0xEB, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x1D, 0x49, -0x28, 0x48, 0x40, 0xF2, 0x13, 0x32, 0x02, 0xF0, 0xE3, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x19, 0x49, 0x25, 0x48, 0x4F, 0xF4, -0x45, 0x72, 0x02, 0xF0, 0xDB, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x15, 0x49, 0x22, 0x48, 0x40, 0xF2, 0x15, 0x32, 0x02, 0xF0, -0xD3, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x11, 0x49, 0x1F, 0x48, 0x40, 0xF2, 0x16, 0x32, 0x02, 0xF0, 0xCB, 0xBD, 0xBD, 0xE8, -0x38, 0x40, 0x0D, 0x49, 0x1C, 0x48, 0x40, 0xF2, 0x17, 0x32, 0x02, 0xF0, 0xC3, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x09, 0x49, -0x19, 0x48, 0x4F, 0xF4, 0x46, 0x72, 0x02, 0xF0, 0xBB, 0xBD, 0x00, 0xBF, 0x6C, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, -0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x10, 0xA9, 0x15, 0x00, 0xA8, 0xA6, 0x15, 0x00, 0x90, 0x80, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x94, 0x80, 0x32, 0x40, -0xD8, 0xA6, 0x15, 0x00, 0x00, 0xA7, 0x15, 0x00, 0x34, 0xA7, 0x15, 0x00, 0x68, 0xA7, 0x15, 0x00, 0x90, 0xA7, 0x15, 0x00, -0xC0, 0xA7, 0x15, 0x00, 0xF0, 0xA7, 0x15, 0x00, 0x20, 0xA8, 0x15, 0x00, 0x50, 0xA8, 0x15, 0x00, 0x80, 0xA8, 0x15, 0x00, -0xB4, 0xA8, 0x15, 0x00, 0xE8, 0xA8, 0x15, 0x00, 0x10, 0xB5, 0x18, 0x4B, 0x84, 0xB0, 0xD3, 0xF8, 0x20, 0x32, 0x8D, 0xF8, -0x07, 0x00, 0x0D, 0xF1, 0x0F, 0x02, 0x0D, 0xF1, 0x0E, 0x01, 0x0D, 0xF1, 0x07, 0x00, 0x98, 0x47, 0x12, 0x4A, 0x13, 0x49, -0x13, 0x68, 0x9D, 0xF8, 0x0E, 0x40, 0x91, 0xF8, 0xBA, 0x00, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xEA, 0x04, 0x23, 0x13, 0x60, -0x18, 0xB1, 0x0E, 0x4B, 0x93, 0xF8, 0x2A, 0x30, 0x4B, 0xB1, 0x0A, 0x4A, 0x9D, 0xF8, 0x0F, 0x10, 0x13, 0x68, 0x23, 0xF0, -0xFF, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x04, 0xB0, 0x10, 0xBD, 0x13, 0x68, 0x91, 0xF8, 0xBB, 0x10, 0x23, 0xF0, 0xFF, 0x03, -0x0B, 0x43, 0x13, 0x60, 0x04, 0xB0, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0xA0, 0x00, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, -0xBC, 0x34, 0x17, 0x00, 0x30, 0xB5, 0x90, 0xF9, 0x65, 0x50, 0x7F, 0x2D, 0x83, 0xB0, 0x0E, 0xD0, 0x90, 0xF9, 0x66, 0x30, -0x0B, 0x48, 0x9D, 0x42, 0xA8, 0xBF, 0x1D, 0x46, 0x8D, 0xF8, 0x07, 0x50, 0xD0, 0xF8, 0x20, 0x32, 0x0D, 0xF1, 0x07, 0x00, -0x98, 0x47, 0x03, 0xB0, 0x30, 0xBD, 0x0C, 0x46, 0x05, 0x49, 0x13, 0x46, 0x0A, 0x68, 0x12, 0x0A, 0x22, 0x70, 0x0A, 0x68, -0x1A, 0x70, 0x03, 0xB0, 0x30, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0xA0, 0x00, 0x32, 0x40, 0x91, 0xF9, 0x00, 0x30, -0x7F, 0x2B, 0x40, 0xD0, 0xF0, 0xB5, 0x20, 0x4E, 0x90, 0xF9, 0x65, 0x70, 0xD6, 0xF8, 0x20, 0x32, 0x85, 0xB0, 0x0C, 0x46, -0x05, 0x46, 0x11, 0x46, 0x20, 0x46, 0x0D, 0xF1, 0x0F, 0x02, 0x01, 0x91, 0x98, 0x47, 0x94, 0xF9, 0x00, 0x30, 0x95, 0xF9, -0x66, 0x20, 0x85, 0xF8, 0x65, 0x30, 0x93, 0x42, 0x20, 0xDC, 0x94, 0xF9, 0x00, 0x30, 0xBB, 0x42, 0x1A, 0xD0, 0xD5, 0xF8, -0xE4, 0x30, 0x43, 0xB1, 0x93, 0xF8, 0x56, 0x21, 0x42, 0xF0, 0x10, 0x02, 0x83, 0xF8, 0x56, 0x21, 0x1B, 0x68, 0x00, 0x2B, -0xF6, 0xD1, 0x28, 0x6C, 0x60, 0xB1, 0xD6, 0xF8, 0xB4, 0x30, 0x98, 0x47, 0x28, 0x46, 0xFC, 0xF7, 0x5D, 0xFC, 0x28, 0xB1, -0x2A, 0x6C, 0xD6, 0xF8, 0x3C, 0x33, 0x92, 0xF9, 0x0C, 0x00, 0x98, 0x47, 0x05, 0xB0, 0xF0, 0xBD, 0x22, 0x70, 0x01, 0x99, -0xD6, 0xF8, 0x20, 0x32, 0x0D, 0xF1, 0x0F, 0x02, 0x20, 0x46, 0x98, 0x47, 0xD5, 0xE7, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, -0x10, 0xB5, 0x15, 0x4B, 0x82, 0xB0, 0x0C, 0x46, 0xD3, 0xF8, 0x38, 0x33, 0x0D, 0xF1, 0x07, 0x02, 0x0D, 0xF1, 0x06, 0x01, -0x98, 0x47, 0xE2, 0x6C, 0x10, 0x4B, 0x94, 0x6B, 0x93, 0xF8, 0xBD, 0x30, 0x61, 0x69, 0xC1, 0xF3, 0xC2, 0x20, 0xC9, 0xB2, -0x6B, 0xB9, 0x01, 0xF0, 0x7C, 0x01, 0x50, 0xEA, 0x01, 0x03, 0x0C, 0xBF, 0x9D, 0xF8, 0x06, 0x30, 0x9D, 0xF8, 0x07, 0x30, -0x43, 0xEA, 0x03, 0x23, 0x63, 0x62, 0x02, 0xB0, 0x10, 0xBD, 0x01, 0xF0, 0x7F, 0x01, 0xDF, 0xF7, 0xB1, 0xFA, 0x40, 0xEA, -0x00, 0x20, 0x60, 0x62, 0x02, 0xB0, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x00, 0x29, 0x11, 0xDD, -0x10, 0xB4, 0x01, 0x39, 0x00, 0x23, 0x01, 0x24, 0x10, 0xF0, 0x01, 0x0F, 0x1C, 0xBF, 0x04, 0xFA, 0x01, 0xF2, 0x13, 0x43, -0x01, 0x39, 0x4F, 0xEA, 0x50, 0x00, 0xF5, 0xD2, 0x18, 0x46, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x23, 0x18, 0x46, -0x70, 0x47, 0x00, 0xBF, 0x0B, 0x1F, 0x03, 0x44, 0x01, 0x44, 0x03, 0xF8, 0x01, 0x2B, 0x8B, 0x42, 0x4F, 0xEA, 0x12, 0x22, -0xF9, 0xD1, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x4F, 0x89, 0xB0, 0x8D, 0x88, 0x0C, 0x7D, 0x00, 0x95, 0x0D, 0x68, 0x01, 0x95, -0x03, 0x93, 0x1C, 0xB1, 0x0B, 0x69, 0xAB, 0x42, 0x00, 0xF0, 0xAC, 0x81, 0x01, 0x9B, 0xD9, 0x4F, 0x9C, 0xB2, 0x4F, 0xEA, -0x13, 0x4C, 0xCC, 0x80, 0xA1, 0xF8, 0x08, 0xC0, 0x53, 0x78, 0x16, 0x78, 0x46, 0xEA, 0x03, 0x26, 0x4E, 0x81, 0xD3, 0x78, -0x95, 0x78, 0x45, 0xEA, 0x03, 0x25, 0x8D, 0x81, 0x92, 0xF8, 0x05, 0xE0, 0x13, 0x79, 0x43, 0xEA, 0x0E, 0x23, 0xCB, 0x81, -0x4F, 0xF0, 0x00, 0x09, 0x09, 0xF0, 0x01, 0x0A, 0x00, 0xEB, 0x4A, 0x02, 0x10, 0xF8, 0x1A, 0x80, 0x92, 0xF8, 0x01, 0xE0, -0x02, 0x92, 0x48, 0xEA, 0x0E, 0x22, 0x5A, 0x40, 0x4F, 0xEA, 0x12, 0x2E, 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, -0x12, 0x80, 0x4F, 0xEA, 0x1E, 0x22, 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, 0x08, 0x02, 0x4F, 0xEA, 0x4A, 0x08, 0x14, 0x44, -0x08, 0xF1, 0x04, 0x02, 0xA4, 0xB2, 0x00, 0xEB, 0x02, 0x0E, 0xCC, 0x80, 0x82, 0x5C, 0x9E, 0xF8, 0x01, 0xE0, 0x42, 0xEA, -0x0E, 0x2E, 0x84, 0xEA, 0x0E, 0x0E, 0xCE, 0xF3, 0x0F, 0x22, 0x5F, 0xFA, 0x8E, 0xFE, 0x37, 0xF8, 0x12, 0x20, 0x37, 0xF8, -0x1E, 0xB0, 0x4F, 0xEA, 0x12, 0x2E, 0x4E, 0xEA, 0x02, 0x2E, 0x8E, 0xEA, 0x0B, 0x0B, 0xDC, 0x44, 0x08, 0xF1, 0x08, 0x0E, -0x1F, 0xFA, 0x8C, 0xFC, 0x00, 0xEB, 0x0E, 0x02, 0xA1, 0xF8, 0x08, 0xC0, 0x10, 0xF8, 0x0E, 0xE0, 0x52, 0x78, 0x4E, 0xEA, -0x02, 0x22, 0x8C, 0xEA, 0x02, 0x02, 0xC2, 0xF3, 0x0F, 0x2E, 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, 0x12, 0xB0, -0x4F, 0xEA, 0x1E, 0x22, 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, 0x0B, 0x0B, 0x08, 0xF1, 0x0C, 0x08, 0x5E, 0x44, 0x00, 0xEB, -0x08, 0x02, 0xB6, 0xB2, 0x4E, 0x81, 0x92, 0xF8, 0x01, 0xE0, 0x10, 0xF8, 0x08, 0x20, 0x42, 0xEA, 0x0E, 0x22, 0x72, 0x40, -0xC2, 0xF3, 0x0F, 0x2E, 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, 0x12, 0x80, 0x4F, 0xEA, 0x1E, 0x22, 0x42, 0xEA, -0x0E, 0x22, 0x82, 0xEA, 0x08, 0x02, 0x15, 0x44, 0xAD, 0xB2, 0x02, 0x9A, 0x8D, 0x81, 0x92, 0xF8, 0x01, 0xE0, 0x10, 0xF8, -0x1A, 0x20, 0x42, 0xEA, 0x0E, 0x22, 0x6A, 0x40, 0xC2, 0xF3, 0x0F, 0x2E, 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, -0x12, 0x80, 0x4F, 0xEA, 0x1E, 0x22, 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, 0x08, 0x02, 0x19, 0xFA, 0x82, 0xF2, 0x13, 0x44, -0x09, 0xF1, 0x01, 0x09, 0x9B, 0xB2, 0xB9, 0xF1, 0x08, 0x0F, 0xCB, 0x81, 0x7F, 0xF4, 0x6E, 0xAF, 0x01, 0x9A, 0x0A, 0x61, -0x4F, 0xF0, 0x01, 0x0E, 0x81, 0xF8, 0x14, 0xE0, 0x00, 0x9A, 0x90, 0xF8, 0x01, 0x80, 0x90, 0xF8, 0x00, 0xE0, 0x90, 0xF8, -0x03, 0x90, 0x1A, 0x44, 0x4E, 0xEA, 0x08, 0x2E, 0x92, 0xB2, 0x82, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x28, 0x5F, 0xFA, -0x8E, 0xFE, 0x37, 0xF8, 0x18, 0xA0, 0x37, 0xF8, 0x1E, 0x80, 0x4F, 0xEA, 0x1A, 0x2E, 0x4E, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, -0x08, 0x0A, 0x90, 0xF8, 0x02, 0x80, 0x90, 0xF8, 0x05, 0xE0, 0x54, 0x44, 0xA4, 0xB2, 0x48, 0xEA, 0x09, 0x28, 0x84, 0xEA, -0x08, 0x08, 0x4F, 0xEA, 0x18, 0x2A, 0x5F, 0xFA, 0x88, 0xF8, 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x18, 0x90, 0x4F, 0xEA, -0x1A, 0x28, 0x48, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x04, 0x90, 0x90, 0xF8, 0x07, 0x80, 0xD4, 0x44, -0x1F, 0xFA, 0x8C, 0xFC, 0x49, 0xEA, 0x0E, 0x2E, 0x8C, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x2A, 0x5F, 0xFA, 0x8E, 0xFE, -0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x1E, 0x90, 0x4F, 0xEA, 0x1A, 0x2E, 0x4E, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, -0x90, 0xF8, 0x06, 0x90, 0x90, 0xF8, 0x09, 0xE0, 0x56, 0x44, 0xB6, 0xB2, 0x49, 0xEA, 0x08, 0x28, 0x86, 0xEA, 0x08, 0x08, -0x4F, 0xEA, 0x18, 0x2A, 0x5F, 0xFA, 0x88, 0xF8, 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x18, 0x90, 0x4F, 0xEA, 0x1A, 0x28, -0x48, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x08, 0x90, 0x90, 0xF8, 0x0B, 0x80, 0x55, 0x44, 0xAD, 0xB2, -0x49, 0xEA, 0x0E, 0x2E, 0x85, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x2A, 0x5F, 0xFA, 0x8E, 0xFE, 0x37, 0xF8, 0x1A, 0xA0, -0x37, 0xF8, 0x1E, 0x90, 0x4F, 0xEA, 0x1A, 0x2E, 0x4E, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x0A, 0xE0, -0x90, 0xF8, 0x0D, 0x90, 0x53, 0x44, 0x9B, 0xB2, 0x4E, 0xEA, 0x08, 0x2E, 0x83, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x2A, -0x5F, 0xFA, 0x8E, 0xFE, 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x1E, 0x80, 0x07, 0x7B, 0x4F, 0xEA, 0x1A, 0x2E, 0x4E, 0xEA, -0x0A, 0x2E, 0x8E, 0xEA, 0x08, 0x08, 0x42, 0x44, 0x92, 0xB2, 0x47, 0xEA, 0x09, 0x29, 0x82, 0xEA, 0x09, 0x07, 0xFF, 0x03, -0x82, 0xEA, 0x09, 0x09, 0x90, 0xF8, 0x0F, 0xE0, 0x47, 0xEA, 0x59, 0x09, 0x87, 0x7B, 0x4C, 0x44, 0xA4, 0xB2, 0x47, 0xEA, -0x0E, 0x27, 0x84, 0xEA, 0x07, 0x0E, 0x4F, 0xEA, 0xCE, 0x3E, 0x67, 0x40, 0x4E, 0xEA, 0x57, 0x07, 0x67, 0x44, 0xBF, 0xB2, -0x4F, 0xEA, 0xC7, 0x3C, 0x4C, 0xEA, 0x57, 0x0C, 0x66, 0x44, 0xB6, 0xB2, 0x4F, 0xEA, 0xC6, 0x3C, 0x4C, 0xEA, 0x56, 0x0C, -0x65, 0x44, 0xAD, 0xB2, 0x4F, 0xEA, 0xC5, 0x3C, 0x4C, 0xEA, 0x55, 0x0C, 0x63, 0x44, 0x1F, 0xFA, 0x83, 0xF9, 0x00, 0x9B, -0xAD, 0xF8, 0x18, 0x60, 0x4F, 0xEA, 0x13, 0x2E, 0x0E, 0xF0, 0x7F, 0x0C, 0xAD, 0xF8, 0x16, 0x70, 0xAD, 0xF8, 0x1A, 0x50, -0x03, 0x9E, 0x00, 0x9D, 0xB5, 0x70, 0x4C, 0xF0, 0x20, 0x0C, 0x86, 0xF8, 0x00, 0xE0, 0x86, 0xF8, 0x01, 0xC0, 0x4F, 0xEA, -0xC9, 0x38, 0x45, 0x78, 0x03, 0x78, 0xAD, 0xF8, 0x1C, 0x90, 0x48, 0xEA, 0x59, 0x08, 0x42, 0x44, 0x92, 0xB2, 0x43, 0xEA, -0x05, 0x23, 0xAD, 0xF8, 0x1E, 0x20, 0x5A, 0x40, 0x52, 0x08, 0xF2, 0x70, 0x33, 0x46, 0x06, 0xF1, 0x0C, 0x00, 0x05, 0xAA, -0x01, 0xE0, 0x32, 0xF8, 0x02, 0x4F, 0x1C, 0x71, 0x25, 0x0A, 0x5D, 0x71, 0x02, 0x33, 0x98, 0x42, 0xF7, 0xD1, 0x00, 0x23, -0x0B, 0x75, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xCC, 0x88, 0xB1, 0xF8, 0x08, 0xC0, 0x4E, 0x89, 0x8D, 0x89, 0xCB, 0x89, -0x00, 0x4F, 0xFD, 0xE6, 0x50, 0xA9, 0x15, 0x00, 0xF0, 0xB4, 0x13, 0x4F, 0x01, 0x22, 0x3C, 0x1F, 0x00, 0x23, 0xC7, 0xF8, -0x00, 0x24, 0xC7, 0xF8, 0x04, 0x34, 0x22, 0x46, 0x42, 0xF8, 0x04, 0x3F, 0x01, 0x33, 0xB3, 0xF5, 0x80, 0x7F, 0xF9, 0xD1, -0x00, 0x23, 0xDF, 0xF8, 0x30, 0xC0, 0x1D, 0x46, 0xC2, 0x5C, 0x54, 0xF8, 0x04, 0x6F, 0x2A, 0x44, 0x32, 0x44, 0xD5, 0xB2, -0x01, 0x33, 0x57, 0xF8, 0x25, 0x20, 0x22, 0x60, 0x8B, 0x42, 0xA8, 0xBF, 0x00, 0x23, 0xA4, 0x45, 0x47, 0xF8, 0x25, 0x60, -0xEE, 0xD1, 0x00, 0x20, 0xF0, 0xBC, 0x70, 0x47, 0x18, 0x2C, 0x17, 0x00, 0x14, 0x30, 0x17, 0x00, 0x71, 0xB3, 0x18, 0x4B, -0xF0, 0xB5, 0xD3, 0xF8, 0x00, 0x54, 0xD3, 0xF8, 0x04, 0x24, 0x53, 0xF8, 0x25, 0x60, 0x32, 0x44, 0x01, 0x39, 0xD2, 0xB2, -0x89, 0xB2, 0x01, 0x31, 0x53, 0xF8, 0x22, 0x40, 0x01, 0x44, 0x6F, 0x1C, 0x43, 0xF8, 0x22, 0x60, 0x43, 0xF8, 0x25, 0x40, -0xFD, 0xB2, 0x34, 0x44, 0xE4, 0xB2, 0x53, 0xF8, 0x25, 0x60, 0x53, 0xF8, 0x24, 0x70, 0x10, 0xF8, 0x01, 0x4B, 0x02, 0xEB, -0x06, 0x0C, 0x96, 0x46, 0x5F, 0xFA, 0x8C, 0xF2, 0x67, 0x40, 0x88, 0x42, 0x53, 0xF8, 0x22, 0x40, 0x00, 0xF8, 0x01, 0x7C, -0xE5, 0xD1, 0xC3, 0xF8, 0x00, 0x54, 0xC3, 0xF8, 0x04, 0xE4, 0xF0, 0xBD, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x2C, 0x17, 0x00, -0xFF, 0xF7, 0xCA, 0xBF, 0x83, 0x68, 0x8A, 0x68, 0x03, 0x48, 0x9B, 0x1A, 0x83, 0x42, 0x94, 0xBF, 0x00, 0x20, 0x01, 0x20, -0x70, 0x47, 0x00, 0xBF, 0x00, 0xA3, 0xE1, 0x11, 0x83, 0x88, 0xB3, 0xEB, 0x11, 0x4F, 0x01, 0xD0, 0x00, 0x20, 0x70, 0x47, -0xC0, 0x88, 0x89, 0xB2, 0x40, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x4F, -0xDF, 0xF8, 0x4C, 0xB1, 0xDB, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x07, 0x46, 0x89, 0x46, 0x15, 0x46, -0x5E, 0xDB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x3F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, -0x2C, 0x81, 0xDF, 0xF8, 0x2C, 0xA1, 0xD8, 0xF8, 0x00, 0x30, 0xDA, 0xF8, 0x14, 0x60, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, -0x1E, 0xB1, 0xB3, 0x88, 0xBB, 0x42, 0x40, 0xD0, 0x00, 0x26, 0x37, 0x49, 0x37, 0x48, 0x49, 0xEA, 0x07, 0x42, 0x00, 0xF0, -0xF5, 0xF9, 0x04, 0x46, 0x00, 0x28, 0x47, 0xD0, 0x34, 0x4B, 0x35, 0x4A, 0x1B, 0x69, 0x32, 0x48, 0x1D, 0x44, 0xA5, 0x60, -0x21, 0x46, 0x00, 0xF0, 0x87, 0xFE, 0x9E, 0xB9, 0xDA, 0xF8, 0x14, 0x30, 0xA3, 0x42, 0x13, 0xD0, 0xD8, 0xF8, 0x00, 0x30, -0x2B, 0xB1, 0x29, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x8B, 0xB1, 0x29, 0x4B, 0x1A, 0x69, 0xAD, 0x1A, -0x00, 0x2D, 0x14, 0xDB, 0xBD, 0xE8, 0xF8, 0x8F, 0xDA, 0xF8, 0x14, 0x40, 0x00, 0x2C, 0xEB, 0xD0, 0x25, 0x4B, 0xA1, 0x68, -0xD3, 0xF8, 0xE0, 0x31, 0x24, 0x48, 0x98, 0x47, 0xE4, 0xE7, 0x00, 0x2A, 0xEB, 0xD0, 0x62, 0xB6, 0x1E, 0x4B, 0x1A, 0x69, -0xAD, 0x1A, 0x00, 0x2D, 0xEA, 0xDA, 0xBD, 0xE8, 0xF8, 0x4F, 0x4F, 0xF0, 0x00, 0x50, 0x00, 0xF0, 0x29, 0xBD, 0xF6, 0x88, -0xA6, 0xEB, 0x09, 0x06, 0xB6, 0xFA, 0x86, 0xF6, 0x76, 0x09, 0xB8, 0xE7, 0xB2, 0xB1, 0x19, 0x4B, 0x9A, 0x42, 0x9C, 0xD9, -0x18, 0x49, 0x19, 0x48, 0x94, 0x22, 0x02, 0xF0, 0x0F, 0xFA, 0x96, 0xE7, 0x0C, 0x20, 0x00, 0xF0, 0xFB, 0xF9, 0xDB, 0xF8, -0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x09, 0xDB, 0xA7, 0x80, 0xA4, 0xF8, 0x06, 0x90, 0xA9, 0xE7, -0x0E, 0x49, 0x10, 0x48, 0x93, 0x22, 0x02, 0xF0, 0xFB, 0xF9, 0x82, 0xE7, 0x00, 0x28, 0xF3, 0xD1, 0x0A, 0x49, 0x0D, 0x48, -0xA5, 0x22, 0x02, 0xF0, 0xF3, 0xF9, 0xED, 0xE7, 0x38, 0x61, 0x17, 0x00, 0x59, 0x26, 0x14, 0x00, 0x94, 0xB6, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x41, 0x26, 0x14, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xA0, 0xB6, 0x17, 0x00, 0xFF, 0xA2, 0xE1, 0x11, -0x70, 0x79, 0x15, 0x00, 0x5C, 0xAB, 0x15, 0x00, 0x50, 0xAB, 0x15, 0x00, 0x78, 0xAB, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0xF8, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x25, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x25, 0x4D, 0x25, 0x4E, 0x2B, 0x68, 0x74, 0x69, 0x01, 0x33, 0x2B, 0x60, 0x74, 0xB1, -0xA3, 0x88, 0x83, 0x42, 0x02, 0xD1, 0xE3, 0x88, 0x8B, 0x42, 0x11, 0xD0, 0x41, 0xEA, 0x00, 0x42, 0x1F, 0x49, 0x20, 0x48, -0x00, 0xF0, 0x54, 0xF9, 0x04, 0x46, 0x38, 0xBB, 0x2B, 0x68, 0x33, 0xB1, 0x18, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, -0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xF8, 0xBD, 0x06, 0xF1, 0x14, 0x00, 0x00, 0xF0, 0x98, 0xFD, 0x77, 0x69, 0x17, 0x4B, -0xDF, 0xB1, 0xD3, 0xF8, 0xE0, 0x31, 0xB9, 0x68, 0x06, 0xF1, 0x20, 0x00, 0x98, 0x47, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x0A, 0xDA, 0x12, 0x4A, 0xBB, 0x68, 0x12, 0x69, 0x9B, 0x1A, 0x00, 0x2B, 0x04, 0xDA, 0x10, 0x49, -0x10, 0x48, 0xE7, 0x22, 0x02, 0xF0, 0x8E, 0xF9, 0x20, 0x46, 0x00, 0xF0, 0xED, 0xF9, 0x2B, 0x68, 0xD3, 0xE7, 0xD3, 0xF8, -0xD8, 0x31, 0x06, 0xF1, 0x20, 0x00, 0x98, 0x47, 0xF4, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x80, 0xB6, 0x17, 0x00, 0x59, 0x26, 0x14, 0x00, 0x94, 0xB6, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, 0x80, 0xAB, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x28, 0x4D, 0x29, 0x4F, -0xDF, 0xF8, 0xB0, 0x80, 0x28, 0x4E, 0xDF, 0xF8, 0xB0, 0x90, 0x21, 0xE0, 0xA1, 0x68, 0x33, 0x69, 0xCB, 0x1A, 0x32, 0x2B, -0x07, 0xD4, 0xD9, 0xF8, 0xE0, 0x31, 0x98, 0x47, 0xA3, 0x68, 0x32, 0x69, 0x9B, 0x1A, 0x00, 0x2B, 0x30, 0xDA, 0x21, 0x48, -0x00, 0xF0, 0x44, 0xFD, 0x2B, 0x68, 0x04, 0x46, 0x5A, 0x1E, 0x2B, 0xB1, 0xD8, 0xF8, 0x00, 0x30, 0x2A, 0x60, 0x0A, 0xB9, -0x03, 0xB1, 0x62, 0xB6, 0xA0, 0x88, 0xE1, 0x88, 0xFF, 0x22, 0x00, 0xF0, 0xCB, 0xF8, 0x20, 0x46, 0x00, 0xF0, 0xA4, 0xF9, -0x4F, 0xF0, 0x00, 0x50, 0x00, 0xF0, 0x6C, 0xFC, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, -0xC8, 0xF8, 0x00, 0x30, 0x2A, 0x68, 0x7C, 0x69, 0x10, 0x48, 0x53, 0x1C, 0x2B, 0x60, 0x00, 0x2C, 0xCA, 0xD1, 0x2B, 0xB1, -0x0E, 0x4B, 0x2A, 0x60, 0x1B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x2B, 0x68, 0x00, 0x2B, -0xFA, 0xD0, 0x09, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0xF4, 0xD1, 0x00, 0x2A, 0xF2, 0xD0, 0xF0, 0xE7, -0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x94, 0xB6, 0x17, 0x00, 0xA0, 0xB6, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x0E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0E, 0x4D, 0x0E, 0x4C, 0x2B, 0x68, 0x4F, 0xF0, 0x00, 0x50, 0x01, 0x33, 0x2B, 0x60, -0x00, 0xF0, 0x28, 0xFC, 0x01, 0xE0, 0x00, 0xF0, 0x59, 0xF9, 0x20, 0x46, 0x00, 0xF0, 0xE4, 0xFC, 0x00, 0x28, 0xF8, 0xD1, -0x2B, 0x68, 0x33, 0xB1, 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x94, 0xB6, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x80, 0x46, 0x03, 0xF1, -0x0C, 0x00, 0x1D, 0x46, 0x0F, 0x46, 0x16, 0x46, 0x00, 0xF0, 0xC8, 0xF8, 0x0F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x04, 0x46, 0x0F, 0xDB, 0x00, 0x21, 0xA4, 0xF8, 0x04, 0x80, 0x04, 0xF1, 0x0C, 0x08, 0xE7, 0x80, 0x26, 0x81, -0x65, 0x81, 0x2A, 0x46, 0x21, 0x60, 0x40, 0x46, 0xDD, 0xF7, 0xDC, 0xFB, 0x40, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x28, -0xED, 0xD1, 0x04, 0x49, 0x04, 0x48, 0x52, 0x22, 0x02, 0xF0, 0xBA, 0xF8, 0xE7, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xA8, 0xAB, 0x15, 0x00, 0x16, 0x4B, 0x1A, 0x68, 0x30, 0xF8, 0x06, 0x3C, 0xB2, 0xF9, 0x00, 0x10, -0x00, 0x29, 0x10, 0xB5, 0xDA, 0xB2, 0x04, 0x46, 0x0C, 0xDB, 0x0B, 0x2A, 0x13, 0xD8, 0x11, 0x48, 0xA4, 0xF1, 0x0C, 0x01, -0x00, 0xF0, 0x4C, 0xFC, 0xBD, 0xE8, 0x10, 0x40, 0x4F, 0xF0, 0x00, 0x60, 0x00, 0xF0, 0xA4, 0xBB, 0x0D, 0x2A, 0xF0, 0xD9, -0x0B, 0x49, 0x0C, 0x48, 0xBB, 0x22, 0x02, 0xF0, 0x93, 0xF8, 0x34, 0xF8, 0x06, 0x3C, 0x34, 0xF8, 0x04, 0x2C, 0x34, 0xF8, -0x08, 0x1C, 0x08, 0x48, 0x01, 0xF0, 0x10, 0xFE, 0xA4, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, 0x10, 0x40, 0x02, 0xF0, 0xDE, 0xB8, -0x38, 0x36, 0x17, 0x00, 0x84, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0xB4, 0xAB, 0x15, 0x00, -0x08, 0xB5, 0x00, 0x23, 0xFF, 0xF7, 0x94, 0xFF, 0xBD, 0xE8, 0x08, 0x40, 0xFF, 0xF7, 0xC0, 0xBF, 0x10, 0xB4, 0x5D, 0xF8, -0x04, 0x4B, 0x20, 0xF8, 0x08, 0x1C, 0x20, 0xF8, 0x06, 0x2C, 0x20, 0xF8, 0x04, 0x3C, 0xFF, 0xF7, 0xB5, 0xBF, 0x00, 0xBF, -0x00, 0xF0, 0xC6, 0xB8, 0x2D, 0xE9, 0xF0, 0x41, 0x04, 0x68, 0xD4, 0xB1, 0x07, 0x46, 0x0D, 0x46, 0x16, 0x46, 0x4F, 0xF0, -0x00, 0x08, 0x02, 0xE0, 0xA0, 0x46, 0x93, 0xB1, 0x1C, 0x46, 0x31, 0x46, 0x20, 0x46, 0xA8, 0x47, 0x23, 0x68, 0x00, 0x28, -0xF6, 0xD0, 0xB8, 0xF1, 0x00, 0x0F, 0x0C, 0xD0, 0xC8, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x5B, 0xB1, 0x00, 0x23, 0x23, 0x60, -0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x24, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x3B, 0x60, 0x00, 0x2B, 0xF3, 0xD1, -0xC7, 0xF8, 0x04, 0x80, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x0F, 0x48, 0x30, 0xB4, 0x20, 0xF0, 0x03, 0x00, -0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0B, 0x4A, 0x0C, 0x4B, -0x11, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x4C, 0x1C, 0x1B, 0x1A, 0x00, 0x25, 0x14, 0x60, 0xC0, 0xE9, 0x00, 0x53, 0x2C, 0xB1, -0x04, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x30, 0xBC, 0x70, 0x47, 0x03, 0xA0, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0xF8, 0xB5, 0x31, 0x4F, 0x3B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x03, 0x30, 0x20, 0xF0, 0x03, 0x04, 0x00, 0x2B, 0x04, 0xF1, 0x04, 0x06, 0x48, 0xDB, 0x2C, 0x4B, 0xDB, 0x69, -0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2A, 0x4A, 0x01, 0x21, 0x11, 0x60, 0x29, 0x4D, 0x2A, 0x68, -0x02, 0xF1, 0x01, 0x0C, 0xC5, 0xF8, 0x00, 0xC0, 0x00, 0x2B, 0x3E, 0xD0, 0x04, 0xF1, 0x0C, 0x00, 0x00, 0x21, 0x05, 0xE0, -0x4C, 0x68, 0xA2, 0x42, 0x38, 0xBF, 0x19, 0x46, 0x1B, 0x68, 0x43, 0xB1, 0x5A, 0x68, 0x82, 0x42, 0xFA, 0xD3, 0x00, 0x29, -0xF4, 0xD1, 0x19, 0x46, 0x1B, 0x68, 0x00, 0x2B, 0xF6, 0xD1, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x12, 0xDB, -0x0A, 0x46, 0x4B, 0x68, 0x9B, 0x1B, 0x98, 0x18, 0x4B, 0x60, 0x04, 0x30, 0x9E, 0x50, 0xBC, 0xF1, 0x00, 0x0F, 0x07, 0xD0, -0x13, 0x4A, 0x0C, 0xF1, 0xFF, 0x33, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xF8, 0xBD, 0x00, 0x29, -0xEA, 0xD1, 0x10, 0x49, 0x10, 0x48, 0x97, 0x22, 0x01, 0xF0, 0xC0, 0xFF, 0x00, 0x22, 0xD5, 0xF8, 0x00, 0xC0, 0x11, 0x46, -0xE1, 0xE7, 0x07, 0x2E, 0xB4, 0xD8, 0x0A, 0x49, 0x0B, 0x48, 0x7B, 0x22, 0x01, 0xF0, 0xB4, 0xFF, 0xAE, 0xE7, 0x3A, 0x68, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xE8, 0xDB, 0x5B, 0x68, 0xFF, 0xDE, 0x38, 0x36, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x08, 0xAC, 0x15, 0x00, 0xE0, 0xAB, 0x15, 0x00, -0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0xF4, 0x90, 0x36, 0x4A, 0xD9, 0xF8, 0x00, 0x30, 0xD4, 0x69, 0xB3, 0xF9, 0x00, 0x30, -0x50, 0xF8, 0x04, 0x8C, 0x00, 0x2B, 0x06, 0x46, 0xA0, 0xF1, 0x04, 0x05, 0x2F, 0xDB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x2E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2E, 0x48, 0xD0, 0xF8, 0x00, 0xC0, 0x0C, 0xF1, 0x01, 0x07, -0x07, 0x60, 0x00, 0x2C, 0x47, 0xD0, 0x63, 0x68, 0x1A, 0x19, 0xAA, 0x42, 0x23, 0xD0, 0xAC, 0x42, 0x06, 0xD9, 0x37, 0xE0, -0x63, 0x68, 0x1A, 0x19, 0xAA, 0x42, 0x1C, 0xD0, 0xAC, 0x42, 0x26, 0xD8, 0x21, 0x46, 0x24, 0x68, 0x00, 0x2C, 0xF5, 0xD1, -0x0D, 0x60, 0x46, 0xE9, 0x01, 0x48, 0x47, 0xB1, 0x1E, 0x4B, 0xC0, 0xF8, 0x00, 0xC0, 0x1B, 0x68, 0xBC, 0xF1, 0x00, 0x0F, -0x01, 0xD1, 0x03, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0xA0, 0x42, 0xCD, 0xD8, 0x1A, 0x49, 0x1A, 0x48, 0xC7, 0x22, -0x01, 0xF0, 0x56, 0xFF, 0xC7, 0xE7, 0x43, 0x44, 0x22, 0x68, 0x63, 0x60, 0xE1, 0x18, 0x8A, 0x42, 0xE5, 0xD1, 0xD2, 0xE9, -0x00, 0x21, 0x0B, 0x44, 0x22, 0x60, 0x63, 0x60, 0xDF, 0xE7, 0x05, 0xEB, 0x08, 0x03, 0x9C, 0x42, 0x0D, 0x60, 0xD8, 0xD1, -0x23, 0x68, 0x46, 0xF8, 0x04, 0x3C, 0x52, 0x1B, 0x32, 0x60, 0xD4, 0xE7, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x04, 0xDB, 0x00, 0x23, 0x1D, 0x60, 0xFF, 0xDE, 0x25, 0x60, 0xFF, 0xDE, 0x06, 0x49, 0x07, 0x48, 0xE2, 0x22, -0x01, 0xF0, 0x2E, 0xFF, 0xF4, 0xE7, 0x00, 0xBF, 0x80, 0xB6, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x18, 0xAC, 0x15, 0x00, 0x3C, 0xAC, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0xC0, 0x88, 0x40, 0x1A, -0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x2A, 0xB3, 0xF8, 0xB5, 0x53, 0x1E, 0x0F, 0x46, 0x0A, 0x68, 0x01, 0xE0, -0x59, 0x1C, 0x11, 0xD0, 0x32, 0xF8, 0x33, 0x40, 0x84, 0x42, 0x4F, 0xEA, 0xC3, 0x06, 0x02, 0xEB, 0xC3, 0x05, 0x03, 0xF1, -0xFF, 0x33, 0xF3, 0xD1, 0x0B, 0x4B, 0x68, 0x68, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x02, 0xDB, 0xF8, 0xBD, -0x00, 0x20, 0xF8, 0xBD, 0x00, 0x28, 0xFA, 0xD1, 0x06, 0x49, 0x07, 0x48, 0xF4, 0x22, 0x01, 0xF0, 0xF5, 0xFE, 0x3B, 0x68, -0x1E, 0x44, 0x70, 0x68, 0xF8, 0xBD, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x50, 0xAC, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x44, 0x4F, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, -0x0D, 0x46, 0x4F, 0xEA, 0x10, 0x29, 0xC6, 0xB2, 0x3B, 0xDB, 0x40, 0x4B, 0x03, 0xEB, 0x06, 0x16, 0xB3, 0x68, 0x03, 0xEB, -0x49, 0x09, 0x3E, 0x48, 0x2A, 0x46, 0x21, 0x46, 0x01, 0xF0, 0x56, 0xFC, 0xB9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x01, 0xD1, -0xBD, 0xE8, 0xF8, 0x83, 0xDF, 0xF8, 0x0C, 0x81, 0x38, 0x4F, 0x39, 0x4E, 0xA9, 0xF8, 0x00, 0x50, 0x19, 0xE0, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0x33, 0x60, 0x34, 0x4D, 0x35, 0x48, 0x2B, 0x68, 0x01, 0x33, -0x2B, 0x60, 0x00, 0xF0, 0x61, 0xFA, 0x2A, 0x68, 0x53, 0x1E, 0x22, 0xB1, 0x32, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x4F, 0xF0, 0x00, 0x60, 0x00, 0xF0, 0xB3, 0xF9, 0x41, 0x46, 0x22, 0x46, 0x38, 0x46, 0xFF, 0xF7, 0x40, 0xFE, -0x01, 0x46, 0x00, 0x28, 0xDD, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x0C, 0x2E, 0x23, 0xD8, 0x33, 0xD0, 0x20, 0x4B, 0x03, 0xEB, -0x06, 0x16, 0xF3, 0x89, 0x4B, 0x45, 0x0B, 0xD9, 0xB3, 0x68, 0x03, 0xEB, 0x49, 0x09, 0xB9, 0xF1, 0x00, 0x0F, 0xBA, 0xD1, -0x20, 0x49, 0x21, 0x48, 0xB9, 0x22, 0x01, 0xF0, 0x8B, 0xFE, 0xB4, 0xE7, 0xB4, 0x22, 0x1D, 0x49, 0x1E, 0x48, 0x01, 0xF0, -0x85, 0xFE, 0x3A, 0x68, 0xB3, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x03, 0xEB, 0x49, 0x09, 0xA7, 0xDA, 0xB9, 0xF1, -0x00, 0x0F, 0xA4, 0xD1, 0xE8, 0xE7, 0x15, 0x49, 0x17, 0x48, 0xB2, 0x22, 0x01, 0xF0, 0x74, 0xFE, 0x3B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x93, 0xDA, 0x0D, 0x2E, 0x04, 0xD0, 0x0F, 0x49, 0x12, 0x48, 0xBB, 0x22, 0x01, 0xF0, 0x68, 0xFE, -0x0C, 0x49, 0x11, 0x48, 0xB3, 0x22, 0x01, 0xF0, 0x63, 0xFE, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC1, 0xDB, -0x81, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x14, 0xAD, 0x15, 0x00, 0xC8, 0xAC, 0x15, 0x00, 0x8C, 0xB6, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x84, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xB8, 0xAC, 0x15, 0x00, -0x98, 0xAC, 0x15, 0x00, 0x74, 0xAC, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0x84, 0xAC, 0x15, 0x00, 0x41, 0x2D, 0x14, 0x00, -0x70, 0xB5, 0x20, 0x4D, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x4F, 0xEA, 0x10, 0x26, 0xC4, 0xB2, 0x06, 0xDB, -0x1C, 0x4D, 0x24, 0x01, 0x25, 0x44, 0xAB, 0x68, 0x33, 0xF8, 0x16, 0x00, 0x70, 0xBD, 0x0C, 0x2C, 0x11, 0xD8, 0x21, 0xD0, -0x17, 0x4D, 0x05, 0xEB, 0x04, 0x13, 0x24, 0x01, 0xDB, 0x89, 0xB3, 0x42, 0xF0, 0xD8, 0x25, 0x44, 0x14, 0x49, 0x15, 0x48, -0xD9, 0x22, 0x01, 0xF0, 0x1F, 0xFE, 0xAB, 0x68, 0x33, 0xF8, 0x16, 0x00, 0x70, 0xBD, 0x10, 0x49, 0x11, 0x48, 0xD7, 0x22, -0x01, 0xF0, 0x16, 0xFE, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDA, 0xDA, 0x0D, 0x2C, 0x04, 0xD0, 0x0A, 0x49, -0x0C, 0x48, 0xBB, 0x22, 0x01, 0xF0, 0x0A, 0xFE, 0x07, 0x49, 0x0B, 0x48, 0xD8, 0x22, 0x01, 0xF0, 0x05, 0xFE, 0x2B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xD3, 0xDB, 0xC8, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x14, 0xAD, 0x15, 0x00, -0x70, 0x79, 0x15, 0x00, 0x98, 0xAC, 0x15, 0x00, 0x74, 0xAC, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0x84, 0xAC, 0x15, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x68, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0x67, 0x4D, 0x68, 0x48, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x00, 0xF0, 0xCF, 0xF9, 0x2B, 0x68, 0x04, 0x46, 0x2B, 0xB1, -0x61, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0x54, 0xD0, 0x00, 0x2C, 0x39, 0xD0, 0x60, 0x4F, 0xB4, 0xF8, -0x06, 0xA0, 0x3B, 0x68, 0xB4, 0xF8, 0x04, 0x80, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x5F, 0xFA, 0x8A, 0xF6, 0x4F, 0xEA, -0x1A, 0x2A, 0x48, 0xDB, 0xDF, 0xF8, 0x90, 0x91, 0x36, 0x01, 0x59, 0xF8, 0x06, 0x10, 0xB1, 0x44, 0x00, 0x29, 0x52, 0xD0, -0xD9, 0xF8, 0x08, 0x30, 0x33, 0xF8, 0x1A, 0x30, 0x01, 0xEB, 0xC3, 0x01, 0x40, 0x46, 0x8A, 0x88, 0xFF, 0xF7, 0x9C, 0xFE, -0x06, 0x46, 0x00, 0x28, 0x45, 0xD0, 0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x4E, 0x48, 0x01, 0xF0, 0x31, 0xFB, 0x23, 0x89, -0xE2, 0x88, 0xA0, 0x88, 0x04, 0xF1, 0x0C, 0x01, 0xB0, 0x47, 0x01, 0x28, 0x08, 0xD0, 0x02, 0x28, 0x7B, 0xD0, 0x00, 0x28, -0x50, 0xD0, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x79, 0xDB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x3E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x41, 0x4A, 0x2B, 0x68, 0x52, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x00, 0x2A, -0x40, 0xD0, 0x33, 0xB1, 0x38, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, -0xF0, 0x87, 0x00, 0x2A, 0xA8, 0xD0, 0x62, 0xB6, 0xA6, 0xE7, 0x0C, 0x2E, 0x36, 0xD8, 0x48, 0xD0, 0xDF, 0xF8, 0xF8, 0x90, -0x09, 0xEB, 0x06, 0x13, 0x36, 0x01, 0xDB, 0x89, 0x53, 0x45, 0xAE, 0xD8, 0x32, 0x49, 0x33, 0x48, 0x4F, 0xF4, 0x89, 0x72, -0x01, 0xF0, 0x6C, 0xFD, 0xA7, 0xE7, 0xD9, 0xF8, 0x04, 0x10, 0x69, 0xB1, 0x8A, 0x88, 0x40, 0x46, 0xFF, 0xF7, 0x4C, 0xFE, -0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x06, 0x46, 0x27, 0x48, 0x01, 0xF0, 0xE3, 0xFA, 0x00, 0x2E, 0xAF, 0xD1, 0x05, 0xE0, -0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x23, 0x48, 0x01, 0xF0, 0xDA, 0xFA, 0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x24, 0x48, -0x01, 0xF0, 0xD4, 0xFA, 0x20, 0x46, 0xFF, 0xF7, 0xE5, 0xFC, 0xAF, 0xE7, 0x4F, 0xF0, 0x00, 0x60, 0x00, 0xF0, 0x74, 0xF8, -0x2B, 0x68, 0xB8, 0xE7, 0x1B, 0x49, 0x1E, 0x48, 0x4F, 0xF4, 0x88, 0x72, 0x01, 0xF0, 0x3E, 0xFD, 0x3B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x72, 0xAF, 0x0D, 0x2E, 0x04, 0xD0, 0x14, 0x49, 0x18, 0x48, 0xBB, 0x22, 0x01, 0xF0, -0x31, 0xFD, 0x12, 0x49, 0x16, 0x48, 0x40, 0xF2, 0x11, 0x12, 0x01, 0xF0, 0x2B, 0xFD, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xAB, 0xDB, 0x5E, 0xE7, 0x12, 0x48, 0x21, 0x46, 0x00, 0xF0, 0xCD, 0xF8, 0x85, 0xE7, 0x09, 0x49, 0x10, 0x48, -0x40, 0xF2, 0x6D, 0x12, 0x01, 0xF0, 0x1A, 0xFD, 0x7E, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x84, 0xB6, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0xB4, 0xAB, 0x15, 0x00, 0x80, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x98, 0xAC, 0x15, 0x00, 0xDC, 0xAC, 0x15, 0x00, 0x74, 0xAC, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0x84, 0xAC, 0x15, 0x00, -0x8C, 0xB6, 0x17, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x14, 0xAD, 0x15, 0x00, 0x00, 0x20, 0x70, 0x47, 0x02, 0x20, 0x70, 0x47, -0x30, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x09, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4A, -0x09, 0x4D, 0x11, 0x68, 0x2B, 0x68, 0x4C, 0x1C, 0x18, 0x43, 0x14, 0x60, 0x28, 0x60, 0x2C, 0xB1, 0x03, 0x4B, 0x11, 0x60, -0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x30, 0xBC, 0x70, 0x47, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x80, 0xB6, 0x17, 0x00, 0x4F, 0xF0, 0x00, 0x50, 0xFF, 0xF7, 0xDC, 0xBF, 0x30, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0A, 0x4A, 0x0A, 0x4D, 0x11, 0x68, 0x2B, 0x68, 0x4C, 0x1C, -0x23, 0xEA, 0x00, 0x00, 0x14, 0x60, 0x28, 0x60, 0x2C, 0xB1, 0x04, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, -0x62, 0xB6, 0x30, 0xBC, 0x70, 0x47, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x18, 0x4E, 0x34, 0x68, 0xDC, 0xB1, 0xDF, 0xF8, 0x68, 0x80, 0x17, 0x4D, 0x17, 0x4F, 0xDF, 0xF8, -0x64, 0xA0, 0xDF, 0xF8, 0x64, 0x90, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xB4, 0xFA, 0x84, 0xF4, -0x12, 0xDB, 0x55, 0xF8, 0x34, 0x30, 0x05, 0xEB, 0xC4, 0x04, 0x60, 0x68, 0x98, 0x47, 0x3B, 0x68, 0x34, 0x68, 0xDB, 0x78, -0x1B, 0xB9, 0x00, 0x2C, 0xEB, 0xD1, 0xBD, 0xE8, 0xF0, 0x87, 0xE9, 0xF7, 0x09, 0xFA, 0x00, 0x2C, 0xE5, 0xD1, 0xF8, 0xE7, -0x1D, 0x2C, 0x03, 0xDC, 0x55, 0xF8, 0x34, 0x30, 0x00, 0x2B, 0xE8, 0xD1, 0xDC, 0x22, 0x51, 0x46, 0x48, 0x46, 0x01, 0xF0, -0x7D, 0xFC, 0xE0, 0xE7, 0x80, 0xB6, 0x17, 0x00, 0x70, 0x21, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xE4, 0xAD, 0x15, 0x00, 0x08, 0xB5, 0xFF, 0xF7, 0x35, 0xFC, 0x08, 0x4B, 0x08, 0x49, 0xD8, 0x61, -0x00, 0x22, 0xC3, 0xE9, 0x03, 0x22, 0xC3, 0xE9, 0x01, 0x22, 0xC3, 0xE9, 0x05, 0x22, 0x59, 0x62, 0x4F, 0xF0, 0xFF, 0x30, -0xBD, 0xE8, 0x08, 0x40, 0xFF, 0xF7, 0x8A, 0xBF, 0x80, 0xB6, 0x17, 0x00, 0xD1, 0x31, 0x14, 0x00, 0x00, 0x23, 0xC0, 0xE9, -0x00, 0x33, 0x70, 0x47, 0x38, 0xB5, 0x0E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x0C, 0x46, -0x07, 0xDB, 0x2B, 0x68, 0x6B, 0xB1, 0x6B, 0x68, 0x1C, 0x60, 0x00, 0x23, 0x6C, 0x60, 0x23, 0x60, 0x38, 0xBD, 0x00, 0x29, -0xF5, 0xD1, 0x06, 0x49, 0x06, 0x48, 0x48, 0x22, 0x01, 0xF0, 0x3C, 0xFC, 0xEF, 0xE7, 0x00, 0x23, 0x2C, 0x60, 0x6C, 0x60, -0x23, 0x60, 0x38, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x14, 0xAE, 0x15, 0x00, 0x38, 0xB5, 0x0C, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x0C, 0x46, 0x04, 0xDB, 0x2B, 0x68, 0x53, 0xB1, 0x23, 0x60, -0x2C, 0x60, 0x38, 0xBD, 0x00, 0x29, 0xF8, 0xD1, 0x05, 0x49, 0x06, 0x48, 0x5F, 0x22, 0x01, 0xF0, 0x1B, 0xFC, 0xF2, 0xE7, -0x6C, 0x60, 0x23, 0x60, 0x2C, 0x60, 0x38, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x14, 0xAE, 0x15, 0x00, -0x03, 0x68, 0x33, 0xB1, 0x42, 0x68, 0x19, 0x68, 0x01, 0x60, 0x9A, 0x42, 0x04, 0xBF, 0x00, 0x22, 0x42, 0x60, 0x18, 0x46, -0x70, 0x47, 0x00, 0xBF, 0x38, 0xB5, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x0C, 0x46, -0x0B, 0xDB, 0x2B, 0x68, 0x43, 0xB1, 0xA3, 0x42, 0x02, 0xD1, 0x14, 0xE0, 0xA3, 0x42, 0x0C, 0xD0, 0x1A, 0x46, 0x1B, 0x68, -0x00, 0x2B, 0xF9, 0xD1, 0x38, 0xBD, 0x00, 0x28, 0xF1, 0xD1, 0x0C, 0x49, 0x0C, 0x48, 0x84, 0x22, 0x01, 0xF0, 0xE8, 0xFB, -0xEB, 0xE7, 0x6B, 0x68, 0xA3, 0x42, 0x0A, 0xD0, 0x23, 0x68, 0x13, 0x60, 0x38, 0xBD, 0x6B, 0x68, 0x22, 0x68, 0x2A, 0x60, -0xA3, 0x42, 0xEB, 0xD1, 0x00, 0x23, 0x6B, 0x60, 0x38, 0xBD, 0x6A, 0x60, 0xF2, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x28, 0xAE, 0x15, 0x00, 0x03, 0x68, 0x2B, 0xB1, 0x00, 0x20, 0x1B, 0x68, 0x01, 0x30, 0x00, 0x2B, -0xFB, 0xD1, 0x70, 0x47, 0x18, 0x46, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x41, 0xD0, 0xE9, 0x00, 0x47, 0x80, 0x46, 0x0D, 0x46, -0x16, 0x46, 0x1F, 0xB1, 0x39, 0x46, 0x28, 0x46, 0x90, 0x47, 0x88, 0xB1, 0x00, 0x27, 0x24, 0xB9, 0x1A, 0xE0, 0x23, 0x68, -0x27, 0x46, 0x8B, 0xB1, 0x1C, 0x46, 0x21, 0x46, 0x28, 0x46, 0xB0, 0x47, 0x00, 0x28, 0xF6, 0xD0, 0x2C, 0x60, 0x67, 0xB9, -0xC8, 0xF8, 0x00, 0x50, 0xBD, 0xE8, 0xF0, 0x81, 0x3D, 0x60, 0xC8, 0xF8, 0x04, 0x50, 0x28, 0x60, 0xBD, 0xE8, 0xF0, 0x81, -0xC8, 0xF8, 0x04, 0x50, 0x2B, 0x60, 0x3D, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x23, 0xC8, 0xF8, 0x04, 0x50, 0x2B, 0x60, -0xEA, 0xE7, 0x00, 0xBF, 0x03, 0x68, 0xB9, 0xB1, 0xCB, 0xB1, 0x8B, 0x42, 0x10, 0xB4, 0x04, 0x46, 0x02, 0xD1, 0x07, 0xE0, -0x99, 0x42, 0x05, 0xD0, 0x1B, 0x68, 0x00, 0x2B, 0xFA, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x63, 0x68, 0x08, 0x68, -0x10, 0x60, 0x8B, 0x42, 0x0A, 0x60, 0xF6, 0xD1, 0x62, 0x60, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x11, 0x46, 0xFF, 0xF7, -0x49, 0xBF, 0x70, 0x47, 0x81, 0xB1, 0x03, 0x68, 0x8B, 0x42, 0x0A, 0xD0, 0x2B, 0xB1, 0x18, 0x68, 0x88, 0x42, 0x03, 0xD0, -0x03, 0x46, 0x00, 0x2B, 0xF9, 0xD1, 0x70, 0x47, 0x11, 0x60, 0x1A, 0x60, 0x70, 0x47, 0x11, 0x46, 0xFF, 0xF7, 0x36, 0xBF, -0x11, 0x46, 0xFF, 0xF7, 0x0F, 0xBF, 0x00, 0xBF, 0x0B, 0x46, 0x09, 0x68, 0x99, 0xB1, 0x02, 0x46, 0x00, 0x68, 0x48, 0xB1, -0x10, 0xB4, 0x54, 0x68, 0x58, 0x68, 0x21, 0x60, 0x50, 0x60, 0x00, 0x22, 0x5D, 0xF8, 0x04, 0x4B, 0x1A, 0x60, 0x70, 0x47, -0x93, 0xE8, 0x03, 0x00, 0x82, 0xE8, 0x03, 0x00, 0x00, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x70, 0x47, 0xF8, 0xB5, 0x1F, 0x4F, -0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x06, 0x46, 0x0D, 0x46, 0x14, 0x46, 0x0A, 0xDB, 0x25, 0xB3, 0x23, 0x68, -0x2B, 0x60, 0x73, 0x68, 0xA3, 0x42, 0x4F, 0xF0, 0x00, 0x03, 0x08, 0xBF, 0x75, 0x60, 0x23, 0x60, 0xF8, 0xBD, 0xE0, 0xB1, -0xB5, 0xB1, 0x2B, 0x68, 0xA3, 0x42, 0x0A, 0xD0, 0x13, 0x49, 0x14, 0x48, 0x40, 0xF2, 0x75, 0x12, 0x01, 0xF0, 0x2A, 0xFB, -0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE5, 0xDA, 0x00, 0x2C, 0xE3, 0xD1, 0x0D, 0x49, 0x0E, 0x48, 0x4F, 0xF4, -0xBB, 0x72, 0x01, 0xF0, 0x1D, 0xFB, 0xDB, 0xE7, 0x00, 0x2C, 0xF6, 0xD0, 0x23, 0x68, 0x33, 0x60, 0xD9, 0xE7, 0x07, 0x49, -0x09, 0x48, 0x4F, 0xF4, 0xBA, 0x72, 0x01, 0xF0, 0x11, 0xFB, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xD7, 0xDB, -0xCA, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x38, 0xAE, 0x15, 0x00, 0x74, 0xAE, 0x15, 0x00, -0x28, 0xAE, 0x15, 0x00, 0x81, 0xB1, 0x10, 0xB4, 0x08, 0x4C, 0x01, 0x44, 0x10, 0xF8, 0x01, 0x3B, 0x83, 0xEA, 0x12, 0x63, -0x81, 0x42, 0x54, 0xF8, 0x23, 0x30, 0x83, 0xEA, 0x02, 0x22, 0xF5, 0xD1, 0x10, 0x46, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x10, 0x46, 0x70, 0x47, 0x84, 0xAE, 0x15, 0x00, 0xF8, 0xB5, 0x0F, 0x18, 0xB8, 0x42, 0xBC, 0x46, 0x06, 0xD3, 0x1D, 0xE0, -0x44, 0x78, 0x2E, 0x78, 0x02, 0x34, 0xFF, 0x2E, 0x20, 0x44, 0x06, 0xD0, 0x46, 0x1C, 0xB7, 0x42, 0x05, 0x46, 0xF5, 0xD8, -0x00, 0x25, 0x28, 0x46, 0xF8, 0xBD, 0x87, 0x42, 0xFA, 0xD3, 0x1C, 0x80, 0x00, 0x2D, 0xF7, 0xD0, 0xEE, 0x1C, 0x66, 0x45, -0xF4, 0xD8, 0xAE, 0x78, 0x96, 0x42, 0xF2, 0xD0, 0x0C, 0x1B, 0x84, 0x45, 0xA1, 0xB2, 0x01, 0xD9, 0x0F, 0x18, 0xE7, 0xE7, -0x06, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE5, 0xDA, 0x84, 0x45, 0xE3, 0xD0, 0x03, 0x49, 0x04, 0x48, -0x7F, 0x22, 0x01, 0xF0, 0xB9, 0xFA, 0xDD, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x84, 0xB2, 0x15, 0x00, -0x2D, 0xE9, 0xF8, 0x43, 0x01, 0xEB, 0x00, 0x08, 0x40, 0x45, 0xC6, 0x46, 0x2D, 0xD2, 0x02, 0xF1, 0x05, 0x0C, 0xC2, 0xF1, -0x02, 0x07, 0x05, 0xE0, 0x44, 0x78, 0x35, 0x78, 0x02, 0x34, 0xDD, 0x2D, 0x20, 0x44, 0x07, 0xD0, 0x45, 0x1C, 0xA8, 0x45, -0x06, 0x46, 0xF5, 0xD8, 0x00, 0x26, 0x30, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x80, 0x45, 0xF9, 0xD3, 0x1C, 0x80, 0x00, 0x2E, -0xF6, 0xD0, 0xF5, 0x1D, 0xAE, 0x45, 0xF3, 0xD3, 0x15, 0x46, 0x01, 0xE0, 0x65, 0x45, 0xF0, 0xD0, 0x05, 0xEB, 0x06, 0x08, -0x15, 0xF8, 0x01, 0x9B, 0x18, 0xF8, 0x07, 0x80, 0xC1, 0x45, 0xF5, 0xD0, 0x0C, 0x1B, 0x86, 0x45, 0xA1, 0xB2, 0x02, 0xD9, -0x01, 0xEB, 0x00, 0x08, 0xDC, 0xE7, 0x07, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDA, 0xDA, 0x86, 0x45, -0xD8, 0xD0, 0x04, 0x49, 0x04, 0x48, 0xB4, 0x22, 0x01, 0xF0, 0x70, 0xFA, 0xD2, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x84, 0xB2, 0x15, 0x00, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x70, 0xB4, 0x03, 0xE0, -0x6B, 0x1C, 0x99, 0x42, 0x28, 0x46, 0x10, 0xD9, 0x44, 0x78, 0x06, 0x78, 0xA3, 0x1C, 0x01, 0x2E, 0x03, 0xEB, 0x00, 0x05, -0xF4, 0xD1, 0xA9, 0x42, 0x07, 0xD3, 0x38, 0xB1, 0x0A, 0x2B, 0x04, 0xD8, 0x02, 0x2B, 0x02, 0xD0, 0x14, 0x70, 0x70, 0xBC, -0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x17, 0xD9, -0x70, 0xB4, 0x03, 0xE0, 0x6B, 0x1C, 0x99, 0x42, 0x28, 0x46, 0x0E, 0xD9, 0x44, 0x78, 0x06, 0x78, 0xA3, 0x1C, 0x32, 0x2E, -0x03, 0xEB, 0x00, 0x05, 0xF4, 0xD1, 0xA9, 0x42, 0x05, 0xD3, 0x28, 0xB1, 0x02, 0x2B, 0x02, 0xD0, 0x14, 0x70, 0x70, 0xBC, -0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, -0x70, 0xB4, 0x03, 0xE0, 0x73, 0x1C, 0x99, 0x42, 0x30, 0x46, 0x10, 0xD9, 0x45, 0x78, 0x04, 0x78, 0xAB, 0x1C, 0x1E, 0x18, -0x00, 0x2C, 0xF5, 0xD1, 0xB1, 0x42, 0x05, 0xD3, 0x10, 0xB1, 0x22, 0x2B, 0x02, 0xD8, 0x15, 0x70, 0x70, 0xBC, 0x70, 0x47, -0x20, 0x46, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, -0x99, 0x42, 0x17, 0xD9, 0x70, 0xB4, 0x03, 0xE0, 0x6B, 0x1C, 0x99, 0x42, 0x28, 0x46, 0x0E, 0xD9, 0x44, 0x78, 0x06, 0x78, -0xA3, 0x1C, 0x07, 0x2E, 0x03, 0xEB, 0x00, 0x05, 0xF4, 0xD1, 0xA9, 0x42, 0x05, 0xD3, 0x28, 0xB1, 0x07, 0x2B, 0x02, 0xD9, -0x14, 0x70, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, -0x99, 0x42, 0x17, 0xD9, 0x70, 0xB4, 0x03, 0xE0, 0x6B, 0x1C, 0x99, 0x42, 0x28, 0x46, 0x0E, 0xD9, 0x44, 0x78, 0x06, 0x78, -0xA3, 0x1C, 0x30, 0x2E, 0x03, 0xEB, 0x00, 0x05, 0xF4, 0xD1, 0xA9, 0x42, 0x05, 0xD3, 0x28, 0xB1, 0x13, 0x2B, 0x02, 0xD9, -0x14, 0x70, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, -0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, -0x02, 0x33, 0x25, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x05, 0x2B, 0x18, 0xBF, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, -0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, -0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x3C, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, -0x06, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x1A, 0xD9, 0x30, 0xB4, 0x03, 0xE0, 0x63, 0x1C, 0x99, 0x42, -0x20, 0x46, 0x11, 0xD9, 0x43, 0x78, 0x05, 0x78, 0x02, 0x33, 0x3E, 0x2D, 0x03, 0xEB, 0x00, 0x04, 0xF4, 0xD1, 0xA1, 0x42, -0x08, 0xD3, 0x40, 0xB1, 0xA3, 0xF1, 0x03, 0x03, 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, 0x30, 0xBC, 0x13, 0x70, 0x70, 0x47, -0x00, 0x20, 0x30, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x2B, 0xD9, -0x30, 0xB4, 0x03, 0xE0, 0x18, 0x46, 0x01, 0x33, 0x99, 0x42, 0x16, 0xD9, 0x44, 0x78, 0x05, 0x78, 0xA3, 0x1C, 0xC4, 0x2D, -0x03, 0x44, 0xF5, 0xD1, 0x99, 0x42, 0x0E, 0xD3, 0x70, 0xB1, 0x02, 0x30, 0x04, 0x44, 0x07, 0xE0, 0x43, 0x78, 0x05, 0x78, -0x02, 0x33, 0xC2, 0x2D, 0x03, 0xEB, 0x00, 0x01, 0x06, 0xD0, 0x08, 0x46, 0x43, 0x1C, 0x9C, 0x42, 0xF4, 0xD8, 0x00, 0x20, -0x30, 0xBC, 0x70, 0x47, 0x8C, 0x42, 0xFA, 0xD3, 0x00, 0x28, 0xF9, 0xD0, 0xA3, 0xF1, 0x05, 0x03, 0xB3, 0xFA, 0x83, 0xF3, -0x5B, 0x09, 0x30, 0xBC, 0x13, 0x70, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, -0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x03, 0x2C, -0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x03, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, -0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, -0x02, 0x33, 0x4C, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x12, 0x2B, 0x18, 0xBF, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, -0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, -0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x2A, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, -0x03, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, -0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0xC7, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, -0x06, 0xD3, 0x30, 0xB1, 0x03, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, -0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x20, 0x2C, 0x03, 0xEB, 0x00, 0x02, -0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x03, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, -0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x36, 0x2C, -0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x05, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xB5, 0x83, 0xB0, -0x06, 0x4A, 0x0D, 0xF1, 0x06, 0x03, 0xFF, 0xF7, 0xC1, 0xFD, 0x20, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0x1A, 0x2B, 0x18, 0xBF, -0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x98, 0xB2, 0x15, 0x00, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, -0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x2D, 0x2C, -0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x1C, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, -0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, -0x02, 0x33, 0x47, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x06, 0x2B, 0x38, 0xBF, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, -0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x1D, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x63, 0x1C, 0x99, 0x42, 0x20, 0x46, 0x13, 0xD9, -0x43, 0x78, 0x02, 0x78, 0x02, 0x33, 0x1C, 0x18, 0x00, 0x2A, 0xF5, 0xD1, 0xA1, 0x42, 0x03, 0xD2, 0x10, 0x46, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x28, 0xFA, 0xD0, 0x06, 0x2B, 0x38, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, -0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x53, 0x2C, -0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x04, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, -0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, -0x02, 0x33, 0x55, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x02, 0x2B, 0x08, 0xBF, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, -0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, -0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0xBF, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, -0x0E, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x82, 0xB0, 0x14, 0x46, 0x0D, 0xF1, 0x06, 0x03, 0x23, 0x22, 0xFF, 0xF7, 0xB2, 0xFC, -0x40, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0xA3, 0xF1, 0x18, 0x02, 0x21, 0x2A, 0x9A, 0xBF, 0x03, 0x3B, 0x23, 0x70, 0x00, 0x20, -0x02, 0xB0, 0x10, 0xBD, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, -0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x3D, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, -0x06, 0xD3, 0x30, 0xB1, 0x18, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, -0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0xC0, 0x2C, 0x03, 0xEB, 0x00, 0x02, -0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x07, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, -0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x82, 0xB0, 0x14, 0x46, 0x0D, 0xF1, -0x06, 0x03, 0x24, 0x22, 0xFF, 0xF7, 0x5E, 0xFC, 0x40, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0xA3, 0xF1, 0x09, 0x02, 0x09, 0x2A, -0x9A, 0xBF, 0x03, 0x3B, 0x23, 0x70, 0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xB5, 0x83, 0xB0, 0x0D, 0xF1, 0x06, 0x03, -0x26, 0x22, 0xFF, 0xF7, 0x4B, 0xFC, 0x20, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0x10, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x03, 0xB0, -0x5D, 0xF8, 0x04, 0xFB, 0x00, 0xB5, 0x83, 0xB0, 0x0D, 0xF1, 0x06, 0x03, 0x25, 0x22, 0xFF, 0xF7, 0x3B, 0xFC, 0x20, 0xB1, -0xBD, 0xF8, 0x06, 0x30, 0x04, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x43, 0x79, 0x02, 0x79, -0x58, 0x00, 0x40, 0xEA, 0xD2, 0x10, 0x80, 0x05, 0x70, 0x47, 0x00, 0xBF, 0x43, 0x79, 0x07, 0x48, 0x83, 0xEA, 0x13, 0x13, -0x5B, 0x01, 0xC1, 0xF3, 0x08, 0x01, 0x03, 0xF4, 0xF0, 0x73, 0x0B, 0x44, 0x00, 0xEA, 0x83, 0x50, 0x40, 0xF4, 0x7C, 0x10, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x28, 0x08, 0xDA, 0x10, 0xF1, 0x6D, 0x0F, 0x01, 0xDA, 0x00, 0x20, -0x70, 0x47, 0x6E, 0x30, 0x40, 0x00, 0xC0, 0xB2, 0x70, 0x47, 0xDC, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, -0x1D, 0x46, 0x95, 0xB0, 0x90, 0x46, 0xDD, 0xF8, 0x78, 0xB0, 0x15, 0xF8, 0x01, 0x2B, 0x03, 0x91, 0x07, 0x46, 0x00, 0x28, -0x00, 0xF0, 0x7F, 0x81, 0x00, 0x2A, 0x00, 0xF0, 0x91, 0x83, 0x00, 0x24, 0xCD, 0xE9, 0x00, 0x44, 0x03, 0x9E, 0x02, 0x94, -0xA1, 0x46, 0xA2, 0x46, 0xA2, 0xF1, 0x20, 0x03, 0x58, 0x2B, 0x5A, 0xD8, 0xDF, 0xE8, 0x13, 0xF0, 0x35, 0x01, 0x59, 0x00, -0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x34, 0x03, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x17, 0x03, 0x35, 0x01, -0x59, 0x00, 0x35, 0x01, 0x36, 0x03, 0x59, 0x00, 0x12, 0x01, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, -0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, -0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, -0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, -0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, -0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, -0x10, 0x01, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x10, 0x01, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, -0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0xA2, 0xF1, 0x31, 0x01, 0x08, 0x29, -0x40, 0xF2, 0xE2, 0x80, 0x00, 0x21, 0x9E, 0x48, 0x00, 0xEB, 0xCA, 0x0A, 0x1A, 0xF8, 0x01, 0xA0, 0xBA, 0xF1, 0x07, 0x0F, -0x00, 0xF2, 0xD8, 0x83, 0xDF, 0xE8, 0x0A, 0xF0, 0x75, 0x5B, 0x45, 0x9A, 0x70, 0x8E, 0x80, 0x06, 0x07, 0x21, 0xEE, 0xE7, -0xA2, 0xF1, 0x41, 0x03, 0x37, 0x2B, 0x00, 0xF2, 0x05, 0x82, 0xDF, 0xE8, 0x13, 0xF0, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x54, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x29, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x02, -0x29, 0x01, 0x5E, 0x01, 0x29, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0xA3, 0x01, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x54, 0x02, 0x03, 0x02, 0x03, 0x02, 0x29, 0x01, 0x03, 0x02, 0x03, 0x02, 0xF8, 0x01, 0x03, 0x02, 0x29, 0x01, -0x03, 0x02, 0x03, 0x02, 0x29, 0x01, 0x10, 0x2B, 0x00, 0xF2, 0xCA, 0x80, 0xDF, 0xE8, 0x13, 0xF0, 0xD2, 0x00, 0xC8, 0x00, -0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xD9, 0x00, -0xC8, 0x00, 0xE0, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC1, 0x00, 0x00, 0x23, 0x00, 0x93, 0x02, 0x93, 0x4F, 0xF0, 0xFF, 0x33, -0x01, 0x93, 0x4F, 0xF0, 0x01, 0x0A, 0x15, 0xF8, 0x01, 0x2B, 0x00, 0x2A, 0x7F, 0xF4, 0x28, 0xAF, 0x00, 0x2E, 0x62, 0xD0, -0x00, 0x23, 0x3B, 0x70, 0x20, 0x46, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x23, 0x01, 0x93, 0x4F, 0xF0, 0x04, 0x0A, -0xED, 0xE7, 0x2E, 0xB1, 0xA0, 0x45, 0x9C, 0xBF, 0x07, 0xF8, 0x01, 0x2B, 0x06, 0xF1, 0xFF, 0x36, 0x01, 0x34, 0x4F, 0xF0, -0x00, 0x0A, 0xE2, 0xE7, 0x68, 0x2A, 0x7B, 0xD0, 0x6C, 0x2A, 0x3F, 0xD0, 0x57, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xC0, 0xF2, 0x92, 0x82, 0x4F, 0xF0, 0x06, 0x0A, 0xD4, 0xE7, 0x2A, 0x2A, 0x61, 0xD0, 0x01, 0x9B, 0x30, 0x3A, -0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0x43, 0x03, 0x01, 0x93, 0x4F, 0xF0, 0x05, 0x0A, 0xC8, 0xE7, 0x2A, 0x2A, 0x5B, 0xD0, -0x02, 0x9B, 0x30, 0x3A, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0x43, 0x03, 0x02, 0x93, 0x4F, 0xF0, 0x03, 0x0A, 0xBC, 0xE7, -0x06, 0x21, 0x4C, 0xE7, 0x44, 0x4B, 0x03, 0xEB, 0xCA, 0x0A, 0x9A, 0xF8, 0x03, 0xA0, 0xBA, 0xF1, 0x07, 0x0F, 0x00, 0xF2, -0x25, 0x83, 0x01, 0xA3, 0x53, 0xF8, 0x2A, 0xF0, 0x8F, 0x3F, 0x14, 0x00, 0x5B, 0x3F, 0x14, 0x00, 0xBB, 0x40, 0x14, 0x00, -0xD9, 0x3F, 0x14, 0x00, 0x85, 0x3F, 0x14, 0x00, 0xC1, 0x3F, 0x14, 0x00, 0xA5, 0x3F, 0x14, 0x00, 0xB1, 0x3E, 0x14, 0x00, -0x00, 0x9B, 0x43, 0xF0, 0x02, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x06, 0x0A, 0x97, 0xE7, 0x05, 0x21, 0x27, 0xE7, 0x03, 0x9B, -0x00, 0x2B, 0x9B, 0xD0, 0x20, 0x46, 0x07, 0xF8, 0x01, 0x6C, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x2D, 0x49, 0x01, 0xEB, -0xCA, 0x0A, 0x9A, 0xF8, 0x04, 0xA0, 0xBA, 0xF1, 0x07, 0x0F, 0x00, 0xF2, 0xF7, 0x82, 0x01, 0xA1, 0x51, 0xF8, 0x2A, 0xF0, -0x8F, 0x3F, 0x14, 0x00, 0x5B, 0x3F, 0x14, 0x00, 0x2F, 0x3F, 0x14, 0x00, 0xDD, 0x3F, 0x14, 0x00, 0x85, 0x3F, 0x14, 0x00, -0xC1, 0x3F, 0x14, 0x00, 0xA5, 0x3F, 0x14, 0x00, 0xB1, 0x3E, 0x14, 0x00, 0x5B, 0xF8, 0x04, 0x3B, 0x01, 0x93, 0x4F, 0xF0, -0x05, 0x0A, 0x6A, 0xE7, 0x5B, 0xF8, 0x04, 0x3B, 0x02, 0x93, 0x4F, 0xF0, 0x03, 0x0A, 0x64, 0xE7, 0x00, 0x9B, 0x43, 0xF0, -0x01, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x06, 0x0A, 0x5D, 0xE7, 0x14, 0x46, 0x00, 0x2A, 0x3F, 0xF4, 0x63, 0xAF, 0x03, 0x90, -0x7D, 0xE6, 0x00, 0x9B, 0x43, 0xF0, 0x40, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x02, 0x0A, 0x50, 0xE7, 0x10, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9E, 0x82, 0x4F, 0xF0, 0x02, 0x0A, 0x46, 0xE7, 0x00, 0x9B, 0x43, 0xF0, -0x10, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x02, 0x0A, 0x3F, 0xE7, 0x00, 0x9B, 0x43, 0xF0, 0x08, 0x03, 0x00, 0x93, 0x4F, 0xF0, -0x02, 0x0A, 0x38, 0xE7, 0x00, 0x9B, 0x43, 0xF0, 0x20, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x02, 0x0A, 0x31, 0xE7, 0x00, 0xBF, -0x24, 0xB3, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x9B, 0x9B, 0x07, 0x00, 0xF1, 0x94, 0x81, 0x00, 0x9B, 0xD8, 0x07, -0x40, 0xF1, 0x90, 0x81, 0x64, 0x2A, 0x00, 0xF0, 0x32, 0x82, 0x5B, 0xF8, 0x04, 0x1B, 0x58, 0x3A, 0x89, 0xB2, 0x20, 0x2A, -0x00, 0xF2, 0x24, 0x82, 0xDF, 0xE8, 0x12, 0xF0, 0x5A, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, -0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x4E, 0x02, 0x22, 0x02, 0x72, 0x00, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, -0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x36, 0x02, 0x22, 0x02, -0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x72, 0x00, 0x22, 0x02, 0x22, 0x02, 0x69, 0x02, 0x02, 0x9B, 0x59, 0x1E, 0x5B, 0xF8, -0x04, 0x3B, 0x8D, 0xF8, 0x10, 0x30, 0x00, 0x9B, 0x04, 0xAA, 0x03, 0xF0, 0x40, 0x00, 0x01, 0x23, 0x00, 0x28, 0x70, 0xD1, -0x00, 0x98, 0x80, 0x06, 0x40, 0xF1, 0x15, 0x81, 0x00, 0x2B, 0x00, 0xF0, 0xEA, 0x81, 0x10, 0x46, 0x02, 0xEB, 0x03, 0x09, -0xA4, 0xEB, 0x02, 0x0E, 0x09, 0xE0, 0xE0, 0x45, 0x04, 0xD8, 0x07, 0x78, 0x02, 0xF8, 0x01, 0x7B, 0x01, 0x3E, 0x17, 0x46, -0x01, 0x30, 0x48, 0x45, 0x07, 0xD0, 0x00, 0xEB, 0x0E, 0x0C, 0x3A, 0x46, 0x00, 0x2E, 0xF0, 0xD1, 0x01, 0x30, 0x48, 0x45, -0xF4, 0xD1, 0x23, 0x44, 0x00, 0x29, 0x40, 0xF3, 0xCA, 0x81, 0xCC, 0x18, 0x20, 0x21, 0x08, 0xE0, 0x98, 0x45, 0x03, 0xD8, -0x02, 0xF8, 0x01, 0x1B, 0x01, 0x3E, 0x17, 0x46, 0x01, 0x33, 0xA3, 0x42, 0x05, 0xD0, 0x3A, 0x46, 0x00, 0x2E, 0xF3, 0xD1, -0x01, 0x33, 0xA3, 0x42, 0xF6, 0xD1, 0x4F, 0xF0, 0x07, 0x0A, 0xB2, 0xE6, 0x00, 0x9B, 0x99, 0x07, 0x03, 0xD4, 0x00, 0x9B, -0xDA, 0x07, 0x00, 0xF1, 0xBC, 0x81, 0x5B, 0xF8, 0x04, 0x1B, 0x00, 0x29, 0xC0, 0xF2, 0xBE, 0x81, 0xDF, 0xF8, 0x5C, 0xA4, -0x00, 0x23, 0x0D, 0xF1, 0x50, 0x0E, 0xAA, 0xFB, 0x01, 0x2C, 0x4F, 0xEA, 0xDC, 0x0C, 0x0C, 0xEB, 0x8C, 0x00, 0xA1, 0xEB, -0x40, 0x00, 0x89, 0x46, 0x30, 0x30, 0xB9, 0xF1, 0x09, 0x0F, 0x72, 0x46, 0x61, 0x46, 0x0E, 0xF8, 0x01, 0x0D, 0x18, 0x46, -0x03, 0xF1, 0x01, 0x03, 0xEB, 0xD8, 0x00, 0x99, 0x09, 0x06, 0x00, 0xF1, 0x9E, 0x81, 0x00, 0x99, 0x09, 0x07, 0x40, 0xF1, -0xE7, 0x81, 0x83, 0x1C, 0x2B, 0x20, 0x0E, 0xF8, 0x01, 0x0C, 0x00, 0x98, 0x02, 0x99, 0x00, 0xF0, 0x40, 0x00, 0x02, 0x3A, -0xC9, 0x1A, 0x00, 0x28, 0x8E, 0xD0, 0x00, 0x29, 0x14, 0xDD, 0x0C, 0x44, 0x4F, 0xF0, 0x30, 0x0E, 0x08, 0xE0, 0xE0, 0x45, -0x03, 0xD8, 0x00, 0xF8, 0x01, 0xEB, 0x01, 0x3E, 0x07, 0x46, 0x01, 0x39, 0x00, 0xF0, 0xB0, 0x80, 0xA4, 0xEB, 0x01, 0x0C, -0x38, 0x46, 0x00, 0x2E, 0xF1, 0xD1, 0x01, 0x39, 0xF5, 0xD1, 0x00, 0x21, 0x00, 0x2B, 0x7F, 0xF4, 0x7C, 0xAF, 0x91, 0x46, -0xA7, 0xE7, 0x5B, 0xF8, 0x04, 0x2B, 0x00, 0x2A, 0x40, 0xF0, 0x2C, 0x81, 0x00, 0x9B, 0x02, 0x99, 0x03, 0xF0, 0x40, 0x00, -0x00, 0x23, 0x65, 0xE7, 0x4A, 0x46, 0xF7, 0xE7, 0x5B, 0xF8, 0x04, 0x3B, 0x02, 0x9A, 0xDF, 0xF8, 0xB0, 0xE3, 0x9C, 0x46, -0x1C, 0xF8, 0x01, 0x3B, 0x00, 0x2A, 0x00, 0xF0, 0x09, 0x81, 0x19, 0x11, 0x15, 0x2A, 0x03, 0xF0, 0x0F, 0x03, 0x1E, 0xF8, -0x01, 0x10, 0x1E, 0xF8, 0x03, 0x30, 0x8D, 0xF8, 0x10, 0x10, 0x28, 0xBF, 0x15, 0x22, 0x02, 0xEB, 0x42, 0x01, 0x01, 0x3A, -0x8D, 0xF8, 0x11, 0x30, 0x01, 0xF1, 0xFF, 0x33, 0xC1, 0xF1, 0x01, 0x01, 0x1D, 0xD0, 0x0C, 0xEB, 0x02, 0x0A, 0x0D, 0xF1, -0x13, 0x02, 0x1C, 0xF0, 0x03, 0x0F, 0x1C, 0xF8, 0x01, 0x0B, 0x4F, 0xEA, 0x20, 0x19, 0x00, 0xF0, 0x0F, 0x00, 0x1E, 0xF8, -0x09, 0x90, 0x82, 0xF8, 0x00, 0x90, 0x1E, 0xF8, 0x00, 0x00, 0x50, 0x70, 0x0C, 0xBF, 0x4F, 0xF0, 0x3A, 0x09, 0x4F, 0xF0, -0x2E, 0x09, 0xE2, 0x45, 0x02, 0xF8, 0x01, 0x9C, 0x02, 0xF1, 0x03, 0x02, 0xE5, 0xD1, 0x00, 0x9A, 0x02, 0xF0, 0x40, 0x02, -0x00, 0x2A, 0x40, 0xF0, 0x69, 0x81, 0x00, 0x98, 0x02, 0x92, 0x80, 0x06, 0x04, 0xAA, 0x3F, 0xF5, 0x1F, 0xAF, 0x00, 0x2B, -0x7F, 0xF4, 0x1F, 0xAF, 0xA1, 0xE7, 0x5B, 0xF8, 0x04, 0x1B, 0xDF, 0xF8, 0x14, 0xE3, 0x8C, 0x46, 0x4F, 0xF0, 0x3A, 0x09, -0x1C, 0xF8, 0x06, 0x3B, 0x1A, 0x11, 0x03, 0xF0, 0x0F, 0x03, 0x1E, 0xF8, 0x02, 0x20, 0x1E, 0xF8, 0x03, 0x30, 0x8D, 0xF8, -0x11, 0x30, 0x8D, 0xF8, 0x10, 0x20, 0x01, 0x31, 0x04, 0xAB, 0x11, 0xF8, 0x01, 0x2B, 0x83, 0xF8, 0x02, 0x90, 0x10, 0x11, -0x02, 0xF0, 0x0F, 0x02, 0x1E, 0xF8, 0x00, 0x00, 0x1E, 0xF8, 0x02, 0x20, 0xD8, 0x70, 0x8C, 0x45, 0x1A, 0x71, 0x03, 0xF1, -0x03, 0x03, 0xEE, 0xD1, 0x02, 0x9B, 0xA3, 0xF1, 0x11, 0x01, 0x00, 0x9B, 0x04, 0xAA, 0x03, 0xF0, 0x40, 0x00, 0x11, 0x23, -0xE4, 0xE6, 0x00, 0x29, 0x7F, 0xF7, 0x6C, 0xAF, 0x21, 0x44, 0x4F, 0xF0, 0x20, 0x0C, 0x08, 0xE0, 0xA0, 0x45, 0x03, 0xD8, -0x00, 0xF8, 0x01, 0xCB, 0x01, 0x3E, 0x07, 0x46, 0x01, 0x34, 0xA1, 0x42, 0x05, 0xD0, 0x38, 0x46, 0x00, 0x2E, 0xF3, 0xD1, -0x01, 0x34, 0xA1, 0x42, 0xF6, 0xD1, 0x0C, 0x46, 0x00, 0x21, 0x00, 0x2B, 0x7F, 0xF4, 0xD3, 0xAE, 0x55, 0xE7, 0x04, 0x23, -0x9A, 0x49, 0x01, 0xEB, 0xCA, 0x0A, 0x1A, 0xF8, 0x03, 0xA0, 0xBA, 0xF1, 0x07, 0x0F, 0x00, 0xF2, 0x1F, 0x81, 0x01, 0xA3, -0x53, 0xF8, 0x2A, 0xF0, 0x8F, 0x3F, 0x14, 0x00, 0x5B, 0x3F, 0x14, 0x00, 0xC9, 0x40, 0x14, 0x00, 0xD9, 0x3F, 0x14, 0x00, -0x85, 0x3F, 0x14, 0x00, 0xC1, 0x3F, 0x14, 0x00, 0xA5, 0x3F, 0x14, 0x00, 0xB1, 0x3E, 0x14, 0x00, 0x01, 0x23, 0xE1, 0xE7, -0x02, 0x21, 0x26, 0xE5, 0x58, 0x3A, 0x5B, 0xF8, 0x04, 0x1B, 0x20, 0x2A, 0x00, 0xF2, 0x98, 0x80, 0x01, 0xA3, 0x53, 0xF8, -0x22, 0xF0, 0x00, 0xBF, 0xED, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, -0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, -0x7D, 0x45, 0x14, 0x00, 0xD5, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x17, 0x42, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, -0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, -0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, -0xA5, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, -0x1D, 0x42, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x0B, 0x46, 0x14, 0x00, 0x03, 0x9E, 0x14, 0x46, -0x4A, 0xE5, 0x64, 0x49, 0x64, 0x48, 0x4F, 0xF4, 0xA2, 0x72, 0x00, 0xF0, 0x49, 0xFB, 0x4F, 0xF0, 0x06, 0x0A, 0x3C, 0xE5, -0x1A, 0x11, 0x03, 0xF0, 0x0F, 0x03, 0x1E, 0xF8, 0x02, 0x20, 0x1E, 0xF8, 0x03, 0x30, 0x8D, 0xF8, 0x10, 0x20, 0x8D, 0xF8, -0x11, 0x30, 0x6F, 0xF0, 0x2E, 0x01, 0x2F, 0x23, 0x0F, 0x22, 0xFC, 0xE6, 0x13, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x97, 0x80, -0x01, 0x9B, 0x00, 0x2B, 0x3F, 0xF4, 0xCC, 0xAE, 0x01, 0x9B, 0x11, 0x46, 0xC2, 0xF1, 0x01, 0x00, 0x00, 0x2B, 0x00, 0xEB, -0x01, 0x0C, 0x0F, 0xDD, 0x11, 0xF8, 0x01, 0xEF, 0x01, 0x3B, 0xBE, 0xF1, 0x00, 0x0F, 0x10, 0xD0, 0x00, 0x2B, 0xF3, 0xD1, -0x02, 0x99, 0x00, 0x98, 0x01, 0x93, 0x63, 0x46, 0xC9, 0x1A, 0x00, 0xF0, 0x40, 0x00, 0x1F, 0xE6, 0x00, 0xEB, 0x01, 0x0C, -0x11, 0xF8, 0x01, 0xEF, 0xBE, 0xF1, 0x00, 0x0F, 0xE4, 0xD1, 0x01, 0x93, 0x63, 0x46, 0x02, 0x99, 0x00, 0x98, 0xC9, 0x1A, -0x00, 0xF0, 0x40, 0x00, 0x10, 0xE6, 0x1C, 0x46, 0x4F, 0xF0, 0x07, 0x0A, 0xF9, 0xE4, 0x23, 0x46, 0x91, 0x46, 0x2B, 0xE6, -0x00, 0x9B, 0x02, 0x99, 0x03, 0xF0, 0x40, 0x00, 0x14, 0xAA, 0x00, 0x23, 0x02, 0xE6, 0x5B, 0xF8, 0x04, 0x1B, 0x09, 0xB2, -0x41, 0xE6, 0x83, 0x1C, 0x2D, 0x20, 0x64, 0xE6, 0x00, 0x9B, 0x43, 0xF0, 0x80, 0x03, 0x49, 0x42, 0x00, 0x93, 0x3B, 0xE6, -0x00, 0x9B, 0x43, 0xF0, 0x40, 0x03, 0x00, 0x93, 0x08, 0x23, 0x40, 0x20, 0x02, 0x93, 0xDF, 0xF8, 0xD0, 0xC0, 0x14, 0xAA, -0x01, 0xF0, 0x0F, 0x03, 0x09, 0x09, 0x1C, 0xF8, 0x03, 0x30, 0x02, 0xF8, 0x01, 0x3D, 0x14, 0xAB, 0xA3, 0xEB, 0x02, 0x03, -0xF4, 0xD1, 0x02, 0x99, 0xC9, 0x1A, 0xDD, 0xE5, 0x14, 0xAA, 0x01, 0xF0, 0x01, 0x03, 0x30, 0x33, 0x02, 0xF8, 0x01, 0x3D, -0x49, 0x08, 0x14, 0xAB, 0xA3, 0xEB, 0x02, 0x03, 0xF5, 0xD1, 0xBA, 0xE7, 0xDF, 0xF8, 0x90, 0xE0, 0x14, 0xAA, 0x01, 0xF0, -0x0F, 0x03, 0x09, 0x09, 0x1E, 0xF8, 0x03, 0x30, 0x02, 0xF8, 0x01, 0x3D, 0x14, 0xAB, 0xA3, 0xEB, 0x02, 0x03, 0xF4, 0xD1, -0xAB, 0xE7, 0x00, 0x9B, 0x03, 0xF0, 0x40, 0x00, 0xCF, 0xE7, 0x17, 0x49, 0x17, 0x48, 0x40, 0xF2, 0x11, 0x12, 0x00, 0xF0, -0xAF, 0xFA, 0x4F, 0xF0, 0x02, 0x0A, 0xA2, 0xE4, 0x00, 0x22, 0x02, 0x92, 0x04, 0xAA, 0xBA, 0xE5, 0x00, 0x99, 0xC9, 0x06, -0x06, 0xD4, 0x02, 0x98, 0xC1, 0x1A, 0x00, 0x98, 0x72, 0x46, 0x00, 0xF0, 0x40, 0x00, 0xA7, 0xE5, 0x83, 0x1C, 0x20, 0x20, -0x0D, 0xE6, 0x00, 0x99, 0x01, 0xF0, 0x40, 0x00, 0x02, 0x99, 0x9F, 0xE5, 0x09, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xBF, 0xF6, 0x86, 0xAC, 0x04, 0x49, 0x04, 0x48, 0x4F, 0xF4, 0x12, 0x72, 0x00, 0xF0, 0x89, 0xFA, 0x7E, 0xE4, -0x24, 0xB3, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, -0x10, 0xB3, 0x15, 0x00, 0xFC, 0xB2, 0x15, 0x00, 0x0F, 0xB4, 0x2D, 0xE9, 0xF0, 0x47, 0x21, 0x4E, 0xD6, 0xF8, 0x04, 0x31, -0x82, 0xB0, 0xFB, 0xB1, 0x0A, 0x9C, 0xDF, 0xF8, 0x80, 0x80, 0xDF, 0xF8, 0x80, 0xA0, 0xDF, 0xF8, 0x80, 0x90, 0xA7, 0x1C, -0x20, 0x46, 0x14, 0xF8, 0x01, 0x5B, 0x29, 0x06, 0xA5, 0xF1, 0x80, 0x02, 0x0A, 0xD5, 0x88, 0x2D, 0x13, 0xD8, 0xD6, 0xF8, -0x00, 0x31, 0xDB, 0x43, 0xD3, 0x40, 0xDB, 0x07, 0x08, 0xD4, 0xA7, 0x42, 0x20, 0x46, 0xED, 0xD1, 0x12, 0x4B, 0x0B, 0xA9, -0xD3, 0xF8, 0x30, 0x34, 0x01, 0x91, 0x98, 0x47, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x47, 0x04, 0xB0, 0x70, 0x47, 0xD8, 0xF8, -0x00, 0x30, 0xB3, 0xF9, 0x00, 0x20, 0x05, 0xF1, 0x66, 0x03, 0x00, 0x2A, 0xDB, 0xB2, 0x05, 0xDB, 0xD6, 0xF8, 0x04, 0x31, -0x9A, 0x3D, 0xAB, 0x42, 0xE3, 0xD8, 0xEB, 0xE7, 0x05, 0x2B, 0xF7, 0xD9, 0x40, 0xF2, 0xA9, 0x22, 0x51, 0x46, 0x48, 0x46, -0x00, 0xF0, 0x36, 0xFA, 0xF0, 0xE7, 0x00, 0xBF, 0xB0, 0xB6, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xCC, 0xB2, 0x15, 0x00, 0x0E, 0xB4, 0x09, 0x4B, 0x00, 0xB5, 0x1B, 0x68, 0x1B, 0x88, 0x18, 0x42, -0x82, 0xB0, 0x06, 0xD0, 0x06, 0x4B, 0x03, 0x98, 0xD3, 0xF8, 0x30, 0x34, 0x04, 0xA9, 0x01, 0x91, 0x98, 0x47, 0x02, 0xB0, -0x5D, 0xF8, 0x04, 0xEB, 0x03, 0xB0, 0x70, 0x47, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x08, 0xB5, 0x05, 0x48, -0xFF, 0xF7, 0x94, 0xFF, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0xFE, 0xF7, 0x35, 0xF8, 0xE0, 0xF7, 0x0F, 0xFC, 0xFE, 0xE7, -0x64, 0xB3, 0x15, 0x00, 0x08, 0xB5, 0x05, 0x48, 0xFF, 0xF7, 0x86, 0xFF, 0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0xFE, 0xF7, -0x27, 0xF8, 0xE0, 0xF7, 0x01, 0xFC, 0xFE, 0xE7, 0x7C, 0xB3, 0x15, 0x00, 0x30, 0xB5, 0x17, 0x48, 0x00, 0x68, 0x00, 0x78, -0x02, 0x28, 0x83, 0xB0, 0x1D, 0x46, 0x06, 0xD1, 0x48, 0x78, 0x83, 0x1E, 0x01, 0x2B, 0x0C, 0x46, 0x0E, 0xD9, 0x05, 0x28, -0x0C, 0xD0, 0x11, 0x48, 0x01, 0x92, 0xFF, 0xF7, 0x69, 0xFF, 0x01, 0x9A, 0x29, 0x46, 0x40, 0xF2, 0x1C, 0x40, 0xFE, 0xF7, -0x63, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x23, 0x78, 0x53, 0xB9, 0xA3, 0x78, 0x01, 0x92, 0x1B, 0xB1, 0xE1, 0xF7, -0x17, 0xFE, 0x01, 0x9A, 0xEE, 0xE7, 0xE1, 0xF7, 0x1D, 0xFE, 0x01, 0x9A, 0xEA, 0xE7, 0x01, 0x21, 0x01, 0x92, 0xE1, 0xF7, -0xE1, 0xFD, 0x60, 0x78, 0x01, 0x9A, 0xED, 0xE7, 0x78, 0x36, 0x17, 0x00, 0x88, 0xB3, 0x15, 0x00, 0x30, 0xB5, 0x83, 0xB0, -0x0C, 0x46, 0x09, 0x48, 0x09, 0x68, 0x01, 0x92, 0x1D, 0x46, 0xFF, 0xF7, 0x3F, 0xFF, 0x07, 0x4B, 0x21, 0x68, 0xC3, 0xF8, -0x04, 0x11, 0x01, 0x9A, 0x29, 0x46, 0x40, 0xF2, 0x07, 0x40, 0xFE, 0xF7, 0x35, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, -0xA0, 0xB3, 0x15, 0x00, 0xB0, 0xB6, 0x17, 0x00, 0x30, 0xB5, 0x83, 0xB0, 0x0C, 0x46, 0x09, 0x48, 0x09, 0x68, 0x01, 0x92, -0x1D, 0x46, 0xFF, 0xF7, 0x25, 0xFF, 0x07, 0x4B, 0x21, 0x68, 0xC3, 0xF8, 0x00, 0x11, 0x01, 0x9A, 0x29, 0x46, 0x40, 0xF2, -0x05, 0x40, 0xFE, 0xF7, 0x1B, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0xC8, 0xB3, 0x15, 0x00, 0xB0, 0xB6, 0x17, 0x00, -0x18, 0x46, 0x38, 0xB5, 0x0D, 0x46, 0x04, 0x23, 0x01, 0x46, 0x4F, 0xF4, 0x82, 0x60, 0xFE, 0xF7, 0xA3, 0xF8, 0x22, 0x4B, -0xA9, 0x88, 0x93, 0xF8, 0xA9, 0x30, 0x04, 0x46, 0xEB, 0xB1, 0x4B, 0x1E, 0x01, 0x2B, 0x0D, 0xD9, 0x02, 0x29, 0x2A, 0xD0, -0x03, 0x29, 0x2F, 0xD0, 0x04, 0x29, 0x1C, 0xD1, 0x1B, 0x4B, 0x2A, 0x68, 0xDA, 0x65, 0x4F, 0xF0, 0x80, 0x72, 0xC3, 0xF8, -0x34, 0x21, 0x14, 0xE0, 0x18, 0x48, 0x17, 0x4A, 0x03, 0x68, 0x43, 0xF0, 0x00, 0x73, 0x03, 0x60, 0x53, 0x6F, 0x16, 0x48, -0x43, 0xF0, 0x10, 0x03, 0x53, 0x67, 0x01, 0x23, 0x03, 0x70, 0x01, 0x29, 0xE2, 0xD1, 0x10, 0x4B, 0x2A, 0x68, 0xDA, 0x63, -0x40, 0x22, 0xC3, 0xF8, 0x24, 0x21, 0x00, 0x25, 0x0F, 0x48, 0x25, 0x60, 0xFF, 0xF7, 0xDA, 0xFE, 0x20, 0x46, 0xFE, 0xF7, -0x9F, 0xF8, 0x28, 0x46, 0x38, 0xBD, 0x08, 0x4B, 0x2A, 0x68, 0x9A, 0x65, 0x20, 0x22, 0xC3, 0xF8, 0x24, 0x21, 0xEE, 0xE7, -0x04, 0x4B, 0x2A, 0x68, 0x1A, 0x64, 0x80, 0x22, 0xC3, 0xF8, 0x24, 0x21, 0xE7, 0xE7, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, -0x00, 0x00, 0x50, 0x40, 0xE0, 0x50, 0x34, 0x40, 0x4C, 0x36, 0x17, 0x00, 0xF0, 0xB3, 0x15, 0x00, 0x30, 0xB5, 0x18, 0x46, -0x0C, 0x46, 0x08, 0x23, 0x01, 0x46, 0x85, 0xB0, 0x40, 0xF2, 0x12, 0x40, 0xFE, 0xF7, 0x4A, 0xF8, 0x18, 0x4B, 0x22, 0x68, -0x1B, 0x68, 0x1B, 0x78, 0x01, 0x3B, 0x01, 0x2B, 0x05, 0x46, 0x19, 0xD9, 0x11, 0x68, 0xA3, 0x68, 0x60, 0x68, 0x4B, 0x40, -0x03, 0x40, 0x4B, 0x40, 0x13, 0x60, 0x22, 0x68, 0x2A, 0x60, 0x11, 0x68, 0xA3, 0x68, 0x69, 0x60, 0xCD, 0xE9, 0x01, 0x11, -0x00, 0x92, 0x61, 0x68, 0x0D, 0x48, 0x1A, 0x46, 0xFF, 0xF7, 0x96, 0xFE, 0x28, 0x46, 0xFE, 0xF7, 0x5B, 0xF8, 0x00, 0x20, -0x05, 0xB0, 0x30, 0xBD, 0x09, 0x4B, 0x9A, 0x42, 0x07, 0xD1, 0xD4, 0xE9, 0x01, 0x03, 0x11, 0x68, 0x4B, 0x40, 0x03, 0x40, -0x4B, 0x40, 0x13, 0x60, 0x22, 0x68, 0xA3, 0x68, 0xC5, 0xE9, 0x00, 0x23, 0x19, 0x46, 0xE1, 0xE7, 0x78, 0x36, 0x17, 0x00, -0x04, 0xB4, 0x15, 0x00, 0x58, 0x40, 0x34, 0x40, 0x10, 0xB5, 0x19, 0x46, 0x40, 0xF2, 0x0A, 0x40, 0x0C, 0x23, 0xFE, 0xF7, -0x0B, 0xF8, 0x00, 0x24, 0xC0, 0xE9, 0x00, 0x44, 0x84, 0x60, 0xFE, 0xF7, 0x35, 0xF8, 0x20, 0x46, 0x10, 0xBD, 0x00, 0xBF, -0x30, 0xB5, 0x18, 0x46, 0x83, 0xB0, 0x08, 0x23, 0x0C, 0x46, 0x01, 0x46, 0x40, 0xF2, 0x03, 0x40, 0xFD, 0xF7, 0xF8, 0xFF, -0x10, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x3B, 0x01, 0x2B, 0x05, 0x46, 0x13, 0xD9, 0xD4, 0xE9, 0x00, 0x32, 0x1A, 0x60, -0x23, 0x68, 0x03, 0x60, 0x19, 0x68, 0x62, 0x68, 0x41, 0x60, 0xCD, 0xE9, 0x00, 0x11, 0x09, 0x48, 0x11, 0x46, 0xFF, 0xF7, -0x4B, 0xFE, 0x28, 0x46, 0xFE, 0xF7, 0x10, 0xF8, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0xD4, 0xE9, 0x00, 0x32, 0xC0, 0xE9, -0x00, 0x32, 0x11, 0x46, 0xED, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x58, 0xB4, 0x15, 0x00, 0x38, 0xB5, 0x0D, 0x46, -0x40, 0xF2, 0x01, 0x40, 0x19, 0x46, 0x08, 0x23, 0xFD, 0xF7, 0xCA, 0xFF, 0x29, 0x68, 0x0B, 0x68, 0x04, 0x46, 0xC4, 0xE9, -0x00, 0x13, 0x1A, 0x46, 0x03, 0x48, 0xFF, 0xF7, 0x29, 0xFE, 0x20, 0x46, 0xFD, 0xF7, 0xEE, 0xFF, 0x00, 0x20, 0x38, 0xBD, -0x98, 0xB4, 0x15, 0x00, 0x38, 0xB5, 0x0C, 0x46, 0x40, 0xF2, 0x0E, 0x40, 0x19, 0x46, 0x04, 0x23, 0xFD, 0xF7, 0xB2, 0xFF, -0x61, 0x68, 0x02, 0x29, 0x05, 0x46, 0x20, 0xD9, 0x03, 0x29, 0x11, 0xD0, 0x13, 0x48, 0xFF, 0xF7, 0x11, 0xFE, 0x4F, 0xF4, -0xD2, 0x73, 0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, 0xC0, 0xB2, 0x28, 0x60, 0x0F, 0x48, 0xFF, 0xF7, 0x07, 0xFE, 0x28, 0x46, -0xFD, 0xF7, 0xCC, 0xFF, 0x00, 0x20, 0x38, 0xBD, 0x24, 0x68, 0x0C, 0x48, 0x21, 0x46, 0xFF, 0xF7, 0xFD, 0xFD, 0x5C, 0xB1, -0xA2, 0x02, 0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0xFD, 0xF7, 0xEC, 0xFD, 0xE3, 0xE7, 0x22, 0x68, 0x06, 0x48, 0xFF, 0xF7, -0xF1, 0xFD, 0xDE, 0xE7, 0xE0, 0xF7, 0x70, 0xFA, 0xFE, 0xE7, 0x00, 0xBF, 0xF4, 0xB4, 0x15, 0x00, 0x08, 0xB5, 0x15, 0x00, -0xE8, 0xB4, 0x15, 0x00, 0xC8, 0xB4, 0x15, 0x00, 0x30, 0xB5, 0x40, 0xF2, 0x0C, 0x40, 0x83, 0xB0, 0x0C, 0x46, 0x19, 0x46, -0x04, 0x23, 0xFD, 0xF7, 0x73, 0xFF, 0x05, 0x46, 0x20, 0x68, 0x00, 0x23, 0x82, 0x07, 0x62, 0x68, 0x2B, 0x60, 0x1C, 0xBF, -0xFF, 0x23, 0x2B, 0x60, 0x93, 0x07, 0x1C, 0xBF, 0x01, 0x23, 0x2B, 0x60, 0x04, 0xF1, 0x08, 0x01, 0x12, 0xF0, 0xEA, 0xFA, -0xD4, 0xE9, 0x00, 0x12, 0x28, 0x68, 0xA3, 0x68, 0x00, 0x90, 0x0A, 0x44, 0x04, 0x48, 0xFF, 0xF7, 0xC1, 0xFD, 0x28, 0x46, -0xFD, 0xF7, 0x86, 0xFF, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x00, 0xBF, 0x1C, 0xB5, 0x15, 0x00, 0x70, 0xB5, 0x06, 0x46, -0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x11, 0x4B, 0x01, 0x20, 0x18, 0x60, 0x10, 0x4C, 0x11, 0x48, -0x25, 0x68, 0x22, 0xF0, 0x7F, 0x43, 0x01, 0x35, 0x0A, 0x46, 0x31, 0x46, 0x25, 0x60, 0xFF, 0xF7, 0xA3, 0xFD, 0x0D, 0x4B, -0x1B, 0x68, 0x00, 0x2B, 0x05, 0xDB, 0xFC, 0xF7, 0x41, 0xFF, 0x4F, 0xF0, 0x00, 0x40, 0xFE, 0xF7, 0x1D, 0xFB, 0x23, 0x68, -0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x70, 0xBD, 0x00, 0xBF, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x78, 0xB5, 0x15, 0x00, 0x80, 0xB6, 0x17, 0x00, 0x70, 0xB5, 0x04, 0x46, -0x72, 0xB6, 0x07, 0x4D, 0x07, 0x48, 0x00, 0x26, 0x22, 0xF0, 0x7F, 0x43, 0x2E, 0x60, 0x0A, 0x46, 0x21, 0x46, 0xFF, 0xF7, -0x79, 0xFD, 0x04, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0xFD, 0xD1, 0x70, 0xBD, 0x38, 0x00, 0x32, 0x40, 0x78, 0xB5, 0x15, 0x00, -0xD0, 0x22, 0x17, 0x00, 0x10, 0xB4, 0x0C, 0x46, 0x22, 0xF0, 0x7F, 0x43, 0x01, 0x46, 0x22, 0x46, 0x02, 0x48, 0x5D, 0xF8, -0x04, 0x4B, 0xFF, 0xF7, 0x63, 0xBD, 0x00, 0xBF, 0x90, 0xB5, 0x15, 0x00, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x07, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x06, 0x4B, 0x1A, 0x68, 0x51, 0x1C, 0x19, 0x60, 0x29, 0xB1, 0x03, 0x49, -0x1A, 0x60, 0x0B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x70, 0x47, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, -0x10, 0xB5, 0x06, 0x4C, 0x4F, 0xF4, 0x84, 0x72, 0x20, 0x46, 0x00, 0x21, 0xDB, 0xF7, 0xD2, 0xFA, 0x4F, 0xF0, 0xFF, 0x32, -0x02, 0x23, 0xC4, 0xE9, 0x40, 0x23, 0x10, 0xBD, 0xB0, 0xB6, 0x17, 0x00, 0x08, 0xB5, 0x08, 0x22, 0x00, 0x21, 0x02, 0x48, -0xDB, 0xF7, 0xC4, 0xFA, 0x00, 0x20, 0x08, 0xBD, 0xB8, 0xB7, 0x17, 0x00, 0xE0, 0xF7, 0xB4, 0xBC, 0x01, 0x4B, 0xD3, 0xF8, -0x24, 0x31, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x02, 0x20, 0x70, 0x47, 0xE0, 0xF7, 0xCC, 0xBB, 0x04, 0x4B, 0x1B, 0x68, -0x1B, 0x78, 0x03, 0x2B, 0x01, 0xD0, 0x01, 0x20, 0x70, 0x47, 0xE0, 0xF7, 0x5F, 0xBB, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, -0xE0, 0xF7, 0x6E, 0xBB, 0x70, 0xB5, 0x04, 0x68, 0x9C, 0xB1, 0x0A, 0x4E, 0x05, 0x46, 0x03, 0xE0, 0xFE, 0xF7, 0x32, 0xFB, -0x2C, 0x68, 0x64, 0xB1, 0x28, 0x46, 0xFE, 0xF7, 0x71, 0xFB, 0xE3, 0x68, 0x21, 0x46, 0x30, 0x46, 0x00, 0x2B, 0xF3, 0xD1, -0xA2, 0x68, 0x2C, 0x68, 0x13, 0x81, 0x00, 0x2C, 0xF2, 0xD1, 0x70, 0xBD, 0x24, 0x65, 0x17, 0x00, 0x38, 0xB5, 0x14, 0x4B, -0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x00, 0xD0, 0x38, 0xBD, 0x04, 0x46, 0xE0, 0xF7, 0x80, 0xFB, 0x05, 0x46, 0xB8, 0xB1, -0x4C, 0xF2, 0xDE, 0x03, 0xA3, 0x61, 0x21, 0x46, 0x1C, 0x22, 0x12, 0xF0, 0x07, 0xFA, 0x0C, 0x4C, 0x23, 0x68, 0x00, 0x2B, -0xFC, 0xD0, 0x0B, 0x4B, 0x18, 0x68, 0x29, 0x1F, 0x00, 0xF5, 0x07, 0x70, 0xFE, 0xF7, 0x02, 0xFB, 0x01, 0x23, 0x23, 0x60, -0xBD, 0xE8, 0x38, 0x40, 0xE0, 0xF7, 0x90, 0xBB, 0xBD, 0xE8, 0x38, 0x40, 0x04, 0x48, 0xFF, 0xF7, 0xD1, 0xBC, 0x00, 0xBF, -0x78, 0x36, 0x17, 0x00, 0x58, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0xA8, 0xB5, 0x15, 0x00, 0x01, 0x4B, 0xD3, 0xF8, -0x28, 0x31, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x04, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, -0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0F, 0x4D, 0x10, 0x48, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0xFE, 0xF7, -0xD7, 0xFA, 0x05, 0x2C, 0x03, 0xD8, 0x0D, 0x4A, 0x13, 0x5D, 0x01, 0x3B, 0x13, 0x55, 0x2B, 0x68, 0x33, 0xB1, 0x07, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x07, 0x4A, 0xD2, 0xF8, 0xF8, 0x31, 0x01, 0x3B, -0xC2, 0xF8, 0xF8, 0x31, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x20, 0x58, 0x17, 0x00, -0x74, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x0C, 0x4C, 0xDF, 0xF8, 0x3C, 0x80, 0x0C, 0x4F, -0x0C, 0x4E, 0x04, 0xF5, 0x7C, 0x75, 0x62, 0x69, 0x30, 0x46, 0x13, 0x46, 0x3A, 0xB1, 0x12, 0x78, 0x21, 0x69, 0x20, 0x2A, -0x0C, 0xBF, 0x42, 0x46, 0x3A, 0x46, 0xE1, 0xF7, 0xB1, 0xFA, 0x10, 0x34, 0xAC, 0x42, 0xF0, 0xD1, 0x00, 0x20, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0xBF, 0x24, 0x30, 0x17, 0x00, 0xC4, 0xB5, 0x15, 0x00, 0xC8, 0xB5, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, -0xF8, 0xB5, 0x10, 0xF8, 0x01, 0x3C, 0x09, 0x2B, 0x00, 0xF1, 0xFF, 0x36, 0x30, 0xD1, 0x1C, 0x4C, 0x23, 0x68, 0x99, 0x42, -0x0D, 0x46, 0x08, 0xDA, 0x1A, 0x4F, 0x38, 0x46, 0x00, 0xF0, 0x64, 0xFD, 0x23, 0x68, 0x01, 0x3B, 0xAB, 0x42, 0x23, 0x60, -0xF7, 0xDC, 0x17, 0x4D, 0xAE, 0x42, 0x19, 0xD9, 0x16, 0x4F, 0x06, 0xE0, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x00, 0xF0, -0x53, 0xFD, 0xAE, 0x42, 0x10, 0xD0, 0x15, 0xF8, 0x01, 0x0B, 0x09, 0x28, 0xF4, 0xD1, 0x20, 0x68, 0x00, 0xF0, 0x07, 0x00, -0x38, 0x44, 0x00, 0xF0, 0x49, 0xFD, 0x23, 0x68, 0x23, 0xF0, 0x07, 0x03, 0x08, 0x33, 0xAE, 0x42, 0x23, 0x60, 0xEE, 0xD1, -0x0A, 0x4A, 0x13, 0x68, 0x01, 0x3B, 0x30, 0x46, 0x13, 0x60, 0xF8, 0xBD, 0x04, 0x48, 0x00, 0xF0, 0x39, 0xFD, 0x02, 0x4A, -0x13, 0x68, 0x01, 0x3B, 0x13, 0x60, 0xF1, 0xE7, 0x24, 0x34, 0x17, 0x00, 0x1C, 0xB8, 0x15, 0x00, 0x28, 0x34, 0x17, 0x00, -0x20, 0xB8, 0x15, 0x00, 0x68, 0x34, 0x17, 0x00, 0x61, 0xB3, 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0x64, 0x90, 0x16, 0x4F, -0xDF, 0xF8, 0x58, 0x80, 0x0E, 0x46, 0x45, 0x1E, 0x00, 0x24, 0x08, 0xE0, 0x15, 0xF8, 0x01, 0x1F, 0x38, 0x46, 0xFF, 0xF7, -0x11, 0xFC, 0x23, 0x07, 0x10, 0xD0, 0xB4, 0x42, 0x13, 0xD0, 0x14, 0xF0, 0x07, 0x0F, 0x04, 0xF1, 0x01, 0x04, 0xF1, 0xD1, -0x48, 0x46, 0xFF, 0xF7, 0x05, 0xFC, 0x15, 0xF8, 0x01, 0x1F, 0x38, 0x46, 0xFF, 0xF7, 0x00, 0xFC, 0x23, 0x07, 0xEE, 0xD1, -0x40, 0x46, 0xFF, 0xF7, 0xFB, 0xFB, 0xB4, 0x42, 0xEB, 0xD1, 0xBD, 0xE8, 0xF8, 0x43, 0x04, 0x48, 0xFF, 0xF7, 0xF4, 0xBB, -0x02, 0x48, 0xFF, 0xF7, 0xF1, 0xBB, 0x00, 0xBF, 0xD8, 0xB5, 0x15, 0x00, 0xB4, 0x79, 0x15, 0x00, 0xD4, 0xB5, 0x15, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0x87, 0xB0, 0x04, 0x93, 0x00, 0x29, 0x7E, 0xD0, 0x04, 0x2A, 0x14, 0x46, 0x02, 0xD0, 0x53, 0x1E, -0x01, 0x2B, 0x78, 0xD8, 0x65, 0x42, 0x04, 0xFB, 0x01, 0xF3, 0xDF, 0xF8, 0x8C, 0x91, 0x03, 0x93, 0x05, 0x40, 0x5C, 0x48, -0x29, 0x46, 0xE1, 0xF7, 0x09, 0xFA, 0x03, 0x9A, 0x2B, 0x0E, 0x10, 0x2A, 0x17, 0x46, 0x28, 0xBF, 0x10, 0x27, 0x01, 0x2B, -0x68, 0xD0, 0x2B, 0x0D, 0xB3, 0xF5, 0xA0, 0x6F, 0x64, 0xD0, 0x00, 0x2A, 0x00, 0xF0, 0x9C, 0x80, 0xDF, 0xF8, 0x60, 0x81, -0xDF, 0xF8, 0x60, 0xA1, 0x2E, 0x46, 0x4F, 0xF0, 0x00, 0x0B, 0x0A, 0xE0, 0x02, 0x2C, 0x0A, 0xBF, 0x31, 0x88, 0x31, 0x78, -0x50, 0x46, 0xA3, 0x44, 0xE1, 0xF7, 0xEA, 0xF9, 0x5F, 0x45, 0x26, 0x44, 0x0A, 0xD9, 0x04, 0x2C, 0x40, 0x46, 0xF1, 0xD1, -0x31, 0x68, 0x48, 0x48, 0xA3, 0x44, 0xE1, 0xF7, 0xDF, 0xF9, 0x5F, 0x45, 0x26, 0x44, 0xF4, 0xD8, 0x04, 0x9B, 0xB3, 0xB3, -0x03, 0x9B, 0x0F, 0x2B, 0x7D, 0xD8, 0x4F, 0xF0, 0x00, 0x08, 0xC7, 0xF1, 0x10, 0x03, 0x04, 0xF1, 0xFF, 0x3A, 0x05, 0x94, -0xDF, 0xF8, 0x14, 0xB1, 0x44, 0x46, 0x98, 0x46, 0x04, 0xE0, 0x58, 0x46, 0x00, 0xF0, 0x9A, 0xFC, 0xA0, 0x45, 0x0C, 0xD0, -0x1A, 0xEA, 0x04, 0x0F, 0x04, 0xF1, 0x01, 0x04, 0xF5, 0xD1, 0x20, 0x20, 0x00, 0xF0, 0x8E, 0xFC, 0x58, 0x46, 0x00, 0xF0, -0x8D, 0xFC, 0xA0, 0x45, 0xF2, 0xD1, 0x34, 0x48, 0x05, 0x9C, 0x00, 0xF0, 0x87, 0xFC, 0x03, 0x9B, 0x00, 0x2B, 0x4D, 0xD0, -0x4F, 0xF0, 0x00, 0x08, 0x15, 0xF8, 0x08, 0x00, 0xA0, 0xF1, 0x1F, 0x03, 0x5F, 0x2B, 0x88, 0xBF, 0x2E, 0x20, 0x08, 0xF1, -0x01, 0x08, 0x00, 0xF0, 0x75, 0xFC, 0x47, 0x45, 0xF2, 0xD8, 0x35, 0x46, 0x29, 0x48, 0x00, 0xF0, 0x71, 0xFC, 0x03, 0x9B, -0xDB, 0x1B, 0x03, 0x93, 0x8D, 0xD1, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x03, 0x9B, 0x8B, 0xB3, 0xDF, 0xF8, 0x84, 0xA0, -0x4F, 0xF0, 0x00, 0x08, 0x09, 0xE0, 0xCD, 0xF8, 0x00, 0xC0, 0xE1, 0xF7, 0x8D, 0xF9, 0x08, 0xF1, 0x04, 0x08, 0x47, 0x45, -0x05, 0xF1, 0x04, 0x05, 0x1A, 0xD9, 0x28, 0x46, 0xDD, 0xF7, 0xEE, 0xF9, 0x04, 0x2C, 0x06, 0x46, 0x4F, 0xEA, 0x10, 0x6C, -0xC0, 0xF3, 0x07, 0x43, 0xC0, 0xF3, 0x07, 0x22, 0xC1, 0xB2, 0x48, 0x46, 0x0F, 0xD0, 0x02, 0x2C, 0xE5, 0xD1, 0x15, 0x48, -0x32, 0x0C, 0xB1, 0xB2, 0x08, 0xF1, 0x04, 0x08, 0xE1, 0xF7, 0x70, 0xF9, 0x47, 0x45, 0x05, 0xF1, 0x04, 0x05, 0xE4, 0xD8, -0x00, 0x23, 0x04, 0x93, 0xC6, 0xE7, 0x31, 0x46, 0x50, 0x46, 0xE1, 0xF7, 0x65, 0xF9, 0xD6, 0xE7, 0x0A, 0x48, 0x07, 0xB0, -0xBD, 0xE8, 0xF0, 0x4F, 0x00, 0xF0, 0x30, 0xBC, 0x04, 0x9B, 0x00, 0x2B, 0xB8, 0xD0, 0x2E, 0x46, 0x81, 0xE7, 0x04, 0x48, -0x00, 0xF0, 0x28, 0xFC, 0xA2, 0xE7, 0x00, 0xBF, 0xE0, 0xB5, 0x15, 0x00, 0xB8, 0x89, 0x15, 0x00, 0x1C, 0xB6, 0x15, 0x00, -0xD0, 0x79, 0x15, 0x00, 0xE8, 0xB5, 0x15, 0x00, 0xF4, 0xB5, 0x15, 0x00, 0x14, 0xB6, 0x15, 0x00, 0x0C, 0xB6, 0x15, 0x00, -0xD4, 0xB5, 0x15, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x22, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x22, 0x4C, 0x22, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0xFE, 0xF7, 0x1E, 0xF9, 0x20, 0x48, 0xFE, 0xF7, -0x1B, 0xF9, 0x20, 0x49, 0x1D, 0x48, 0xFE, 0xF7, 0x1B, 0xF9, 0x1F, 0x49, 0x1B, 0x48, 0xFE, 0xF7, 0x17, 0xF9, 0x1E, 0x49, -0x19, 0x48, 0xFE, 0xF7, 0x13, 0xF9, 0x1D, 0x49, 0x17, 0x48, 0xFE, 0xF7, 0x0F, 0xF9, 0x23, 0x68, 0x33, 0xB1, 0x13, 0x4A, -0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x01, 0x22, -0x00, 0xF0, 0xFC, 0xFB, 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x04, 0x22, 0x00, 0xF0, 0xF6, 0xFB, 0x17, 0x4B, 0x18, 0x49, -0x18, 0x48, 0x03, 0x22, 0x00, 0xF0, 0xF0, 0xFB, 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x04, 0x22, 0x00, 0xF0, 0xEA, 0xFB, -0xBD, 0xE8, 0x10, 0x40, 0x16, 0x4B, 0x17, 0x49, 0x17, 0x48, 0x02, 0x22, 0x00, 0xF0, 0xE2, 0xBB, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0xD8, 0xB8, 0x17, 0x00, 0xC0, 0xB7, 0x17, 0x00, 0xC8, 0xB7, 0x17, 0x00, 0x0C, 0xB8, 0x17, 0x00, -0x50, 0xB8, 0x17, 0x00, 0x94, 0xB8, 0x17, 0x00, 0x69, 0x4D, 0x14, 0x00, 0x24, 0xB6, 0x15, 0x00, 0x30, 0xB6, 0x15, 0x00, -0x61, 0x56, 0x14, 0x00, 0x38, 0xB6, 0x15, 0x00, 0x7C, 0xAB, 0x15, 0x00, 0x2D, 0x57, 0x14, 0x00, 0x4C, 0xB6, 0x15, 0x00, -0x58, 0xB6, 0x15, 0x00, 0xED, 0x55, 0x14, 0x00, 0x5C, 0xB6, 0x15, 0x00, 0x68, 0xB6, 0x15, 0x00, 0x99, 0x57, 0x14, 0x00, -0x6C, 0xB6, 0x15, 0x00, 0x7C, 0xB6, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x54, 0x4D, 0x55, 0x4E, 0x29, 0x68, 0x31, 0x60, -0x17, 0x28, 0x04, 0x46, 0x10, 0xD8, 0x17, 0x28, 0x00, 0xF2, 0x8E, 0x80, 0xDF, 0xE8, 0x00, 0xF0, 0x15, 0x8C, 0x8C, 0x71, -0x8C, 0x8C, 0x8C, 0x8C, 0x48, 0x8C, 0x1A, 0x8C, 0x8C, 0x1A, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x55, 0x8C, 0x60, -0x7F, 0x28, 0x39, 0xD0, 0x49, 0x4F, 0x3B, 0x68, 0x3D, 0x2B, 0x65, 0xDD, 0x07, 0x20, 0x00, 0xF0, 0x75, 0xFB, 0x4F, 0xF0, -0xFF, 0x34, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x44, 0x4E, 0x45, 0x48, 0x33, 0x68, 0xDF, 0xF8, 0x20, 0x81, 0x00, 0x22, -0x1A, 0x70, 0x00, 0xF0, 0x69, 0xFB, 0x34, 0x68, 0xA4, 0xEB, 0x08, 0x04, 0x00, 0x2C, 0xEE, 0xDB, 0x0F, 0xD1, 0x3F, 0x48, -0x00, 0xF0, 0x60, 0xFB, 0x00, 0x24, 0x3D, 0x48, 0x12, 0xF0, 0x70, 0xF9, 0x38, 0x4B, 0x28, 0x60, 0x00, 0x22, 0xC6, 0xF8, -0x00, 0x80, 0x1A, 0x60, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x38, 0x48, 0xFE, 0xF7, 0xB2, 0xF8, 0x07, 0x46, 0x00, 0x28, -0x48, 0xD0, 0x41, 0x46, 0x04, 0x30, 0x12, 0xF0, 0xED, 0xF8, 0x34, 0x48, 0x39, 0x46, 0xFE, 0xF7, 0x63, 0xF8, 0xE4, 0xE7, -0x2C, 0x4B, 0x2D, 0x4E, 0x1B, 0x68, 0x30, 0x68, 0x0B, 0xB1, 0xFF, 0xF7, 0xC9, 0xFD, 0x4F, 0xF0, 0xFF, 0x34, 0x30, 0x60, -0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x27, 0x4A, 0x25, 0x4B, 0x2B, 0x49, 0x11, 0x60, 0x4F, 0xF0, 0xFF, 0x34, 0x00, 0x22, -0x1A, 0x60, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x20, 0x4F, 0x21, 0x4E, 0x3B, 0x68, 0x30, 0x68, 0x0B, 0xB9, 0xAE, 0xE7, -0x29, 0x68, 0xFF, 0xF7, 0xAF, 0xFD, 0x3B, 0x68, 0x30, 0x60, 0x00, 0x2B, 0xA7, 0xDD, 0x03, 0x78, 0x20, 0x2B, 0xF5, 0xD1, -0xA3, 0xE7, 0xDF, 0xF8, 0x78, 0x80, 0x18, 0x4E, 0x00, 0x23, 0x88, 0xF8, 0x00, 0x30, 0xB0, 0xE7, 0x01, 0x31, 0x20, 0x46, -0x31, 0x60, 0x00, 0xF0, 0x0D, 0xFB, 0x13, 0x49, 0x0B, 0x68, 0x1C, 0x70, 0x3A, 0x68, 0x01, 0x33, 0x01, 0x32, 0x0B, 0x60, -0x3A, 0x60, 0x4F, 0xF0, 0xFF, 0x34, 0x8E, 0xE7, 0x13, 0x48, 0x00, 0xF0, 0x01, 0xFB, 0xA0, 0xE7, 0x0A, 0x4F, 0x3B, 0x68, -0x3D, 0x2B, 0x81, 0xDC, 0x09, 0x28, 0xE5, 0xD1, 0x0F, 0x48, 0x01, 0xF0, 0x07, 0x01, 0x08, 0x44, 0x00, 0xF0, 0xF4, 0xFA, -0x33, 0x68, 0x23, 0xF0, 0x07, 0x03, 0x08, 0x33, 0x33, 0x60, 0xDE, 0xE7, 0x6C, 0x34, 0x17, 0x00, 0x24, 0x34, 0x17, 0x00, -0x68, 0x34, 0x17, 0x00, 0xD4, 0x22, 0x17, 0x00, 0xD0, 0x79, 0x15, 0x00, 0xA0, 0xB6, 0x15, 0x00, 0xD8, 0xB8, 0x17, 0x00, -0xC0, 0xB7, 0x17, 0x00, 0x28, 0x34, 0x17, 0x00, 0x84, 0xB6, 0x15, 0x00, 0x20, 0xB8, 0x15, 0x00, 0xF8, 0xB5, 0x0C, 0x4D, -0x2C, 0x68, 0x3F, 0x2C, 0x0D, 0xD8, 0x0B, 0x4F, 0x4F, 0xEA, 0x04, 0x1C, 0x07, 0xEB, 0x04, 0x16, 0x01, 0x34, 0x47, 0xF8, -0x0C, 0x00, 0xC6, 0xE9, 0x01, 0x12, 0xF3, 0x60, 0x2C, 0x60, 0x00, 0x20, 0xF8, 0xBD, 0x05, 0x48, 0xE0, 0xF7, 0xF0, 0xFF, -0x4F, 0xF0, 0xFF, 0x30, 0xF8, 0xBD, 0x00, 0xBF, 0x20, 0x30, 0x17, 0x00, 0x24, 0x30, 0x17, 0x00, 0xA8, 0xB6, 0x15, 0x00, -0x2D, 0xE9, 0xF0, 0x4F, 0x95, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x76, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0xDF, 0xF8, 0xFC, 0xB1, 0x75, 0x48, 0xDB, 0xF8, 0x00, 0x30, 0x01, 0x33, 0xCB, 0xF8, 0x00, 0x30, 0xFE, 0xF7, -0x05, 0xF8, 0xDB, 0xF8, 0x00, 0x30, 0x06, 0x46, 0x3B, 0xB1, 0x6E, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, -0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x00, 0x2E, 0x00, 0xF0, 0x94, 0x80, 0x33, 0x1D, 0x03, 0xAC, 0x01, 0x22, 0x4F, 0xF0, -0x00, 0x0C, 0x57, 0x1E, 0x3D, 0x46, 0x19, 0x46, 0x13, 0xF8, 0x01, 0x0B, 0x20, 0x28, 0xFA, 0xD0, 0x09, 0x28, 0xF8, 0xD0, -0x00, 0x28, 0x00, 0xF0, 0xA0, 0x80, 0x22, 0x28, 0x00, 0xF0, 0x83, 0x80, 0x21, 0x60, 0x08, 0x78, 0x15, 0x46, 0x00, 0x28, -0x00, 0xF0, 0xAC, 0x80, 0x0B, 0x46, 0x06, 0xE0, 0x09, 0x28, 0x06, 0xD0, 0x13, 0xF8, 0x01, 0x0F, 0x00, 0x28, 0x00, 0xF0, -0xA3, 0x80, 0x20, 0x28, 0xF6, 0xD1, 0x19, 0x78, 0x00, 0x29, 0x00, 0xF0, 0x9D, 0x80, 0x01, 0x32, 0x11, 0x2A, 0x03, 0xF8, -0x01, 0xCB, 0x04, 0xF1, 0x04, 0x04, 0xD4, 0xD1, 0x52, 0x48, 0x10, 0x21, 0xE0, 0xF7, 0x8E, 0xFF, 0x10, 0x25, 0xDD, 0xF8, -0x0C, 0x90, 0x2E, 0x21, 0x48, 0x46, 0x11, 0xF0, 0x95, 0xFF, 0x00, 0x28, 0x00, 0xF0, 0x83, 0x80, 0xA0, 0xEB, 0x09, 0x04, -0x4B, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x28, 0xDD, 0x4A, 0x4F, 0x01, 0x95, 0x4F, 0xF0, 0x00, 0x08, 0xC2, 0x46, 0x3D, 0x46, -0x05, 0xE0, 0x46, 0x4B, 0x1A, 0x68, 0x92, 0x45, 0x07, 0xF1, 0x10, 0x07, 0x16, 0xDA, 0x39, 0x68, 0x22, 0x46, 0x48, 0x46, -0x0A, 0xF1, 0x01, 0x0A, 0x12, 0xF0, 0xBE, 0xF8, 0x00, 0x28, 0xF0, 0xD1, 0x38, 0x68, 0x12, 0xF0, 0x4B, 0xF8, 0x84, 0x42, -0x43, 0xD0, 0x3C, 0x4B, 0x1A, 0x68, 0x92, 0x45, 0x3D, 0x46, 0x08, 0xF1, 0x01, 0x08, 0x07, 0xF1, 0x10, 0x07, 0xE8, 0xDB, -0xB8, 0xF1, 0x01, 0x0F, 0x2B, 0x46, 0x01, 0x9D, 0x37, 0xD0, 0x03, 0x99, 0x36, 0x48, 0xE0, 0xF7, 0x51, 0xFF, 0x36, 0x48, -0x00, 0xF0, 0x20, 0xFA, 0x35, 0x48, 0x00, 0xF0, 0x1D, 0xFA, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x2A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDB, 0xF8, 0x00, 0x30, 0x30, 0x48, 0x01, 0x33, 0x31, 0x46, 0xCB, 0xF8, 0x00, 0x30, -0xFD, 0xF7, 0x2A, 0xFF, 0x25, 0x48, 0xFD, 0xF7, 0x6B, 0xFF, 0xDB, 0xF8, 0x00, 0x30, 0x06, 0x46, 0x00, 0x2B, 0x7F, 0xF4, -0x64, 0xAF, 0x00, 0x2E, 0x7F, 0xF4, 0x6C, 0xAF, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4B, 0x1C, 0x23, 0x60, 0x49, 0x78, -0x15, 0x46, 0x19, 0xB9, 0x28, 0xE0, 0x13, 0xF8, 0x01, 0x1F, 0x29, 0xB3, 0x22, 0x29, 0xFA, 0xD1, 0x81, 0xE7, 0x01, 0x9D, -0x3B, 0x46, 0x9A, 0x68, 0xAA, 0x42, 0x24, 0xDB, 0xDB, 0x68, 0x00, 0x2B, 0xC8, 0xD0, 0x28, 0x46, 0x03, 0xA9, 0x98, 0x47, -0x00, 0x28, 0xC3, 0xD0, 0xBF, 0xE7, 0x14, 0xAB, 0x03, 0xEB, 0x87, 0x03, 0x43, 0xF8, 0x44, 0x0C, 0x00, 0x2F, 0xB8, 0xD0, -0xDD, 0xF8, 0x0C, 0x90, 0x2E, 0x21, 0x48, 0x46, 0x11, 0xF0, 0x12, 0xFF, 0x00, 0x28, 0x7F, 0xF4, 0x7D, 0xAF, 0x48, 0x46, -0x11, 0xF0, 0xE4, 0xFF, 0x04, 0x46, 0x79, 0xE7, 0x14, 0xAB, 0x03, 0xEB, 0x82, 0x02, 0x00, 0x23, 0x42, 0xF8, 0x44, 0x3C, -0x67, 0xE7, 0x59, 0x68, 0x0A, 0x48, 0xE0, 0xF7, 0xF1, 0xFE, 0x9E, 0xE7, 0x38, 0x61, 0x17, 0x00, 0xC0, 0xB7, 0x17, 0x00, -0xC4, 0xB6, 0x15, 0x00, 0x20, 0x30, 0x17, 0x00, 0x24, 0x30, 0x17, 0x00, 0xE4, 0xB6, 0x15, 0x00, 0x08, 0xB7, 0x15, 0x00, -0xA0, 0xB6, 0x15, 0x00, 0xD8, 0xB8, 0x17, 0x00, 0xFC, 0xB6, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xF0, 0xB4, 0x05, 0x78, -0x30, 0x2D, 0x2B, 0xD0, 0x00, 0x2A, 0x08, 0xBF, 0x0A, 0x22, 0x2D, 0x2D, 0x32, 0xD0, 0x00, 0x27, 0x00, 0x26, 0xA5, 0xF1, -0x30, 0x03, 0x5F, 0xFA, 0x83, 0xFC, 0x25, 0xF0, 0x20, 0x04, 0xBC, 0xF1, 0x09, 0x0F, 0xA4, 0xF1, 0x41, 0x04, 0x12, 0xD9, -0x05, 0x2C, 0x06, 0xD9, 0x07, 0xB1, 0x76, 0x42, 0x01, 0xB1, 0x08, 0x60, 0x30, 0x46, 0xF0, 0xBC, 0x70, 0x47, 0xA5, 0xF1, -0x61, 0x04, 0xA5, 0xF1, 0x20, 0x03, 0x19, 0x2C, 0xDB, 0xB2, 0x94, 0xBF, 0x37, 0x3B, 0xA5, 0xF1, 0x37, 0x03, 0x93, 0x42, -0xEC, 0xD2, 0x10, 0xF8, 0x01, 0x5F, 0x02, 0xFB, 0x06, 0x36, 0xDA, 0xE7, 0x45, 0x78, 0x78, 0x2D, 0x00, 0xF1, 0x01, 0x03, -0x0A, 0xD0, 0x18, 0x46, 0x00, 0x2A, 0xCE, 0xD1, 0x2D, 0x2D, 0x4F, 0xF0, 0x08, 0x02, 0xCC, 0xD1, 0x01, 0x27, 0x45, 0x78, -0x38, 0x44, 0xC9, 0xE7, 0x84, 0x78, 0xA4, 0xF1, 0x30, 0x06, 0x09, 0x2E, 0x09, 0xD9, 0x24, 0xF0, 0x20, 0x06, 0x41, 0x3E, -0x05, 0x2E, 0x04, 0xD9, 0x3A, 0xB9, 0x17, 0x46, 0x18, 0x46, 0x08, 0x22, 0xBA, 0xE7, 0x02, 0x30, 0x25, 0x46, 0x10, 0x22, -0xB3, 0xE7, 0x18, 0x46, 0xB3, 0xE7, 0x00, 0xBF, 0x38, 0xB5, 0x0A, 0x22, 0x0C, 0x46, 0x05, 0x46, 0x48, 0x68, 0x00, 0x21, -0xFF, 0xF7, 0xA2, 0xFF, 0xC0, 0xB1, 0x01, 0x28, 0x10, 0xD1, 0x02, 0x2D, 0x1C, 0xDD, 0x10, 0x22, 0xA0, 0x68, 0x00, 0x21, -0xFF, 0xF7, 0x98, 0xFF, 0x0E, 0x4B, 0x1B, 0x68, 0x01, 0x46, 0x19, 0x80, 0x0D, 0x48, 0x89, 0xB2, 0xFF, 0xF7, 0x34, 0xF8, -0x00, 0x20, 0x38, 0xBD, 0x01, 0x46, 0x0B, 0x48, 0xFF, 0xF7, 0x2E, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x06, 0x4B, 0x09, 0x48, -0x1B, 0x68, 0x19, 0x88, 0xFF, 0xF7, 0x26, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x06, 0x48, 0xFF, 0xF7, 0x21, 0xF8, 0x00, 0x20, -0x38, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x2C, 0xB7, 0x15, 0x00, 0x50, 0xB7, 0x15, 0x00, 0x18, 0xB7, 0x15, 0x00, -0x40, 0xB7, 0x15, 0x00, 0x01, 0x28, 0xF8, 0xB5, 0x2A, 0xDD, 0x0D, 0x46, 0x04, 0x46, 0x10, 0x22, 0x68, 0x68, 0x00, 0x21, -0xFF, 0xF7, 0x66, 0xFF, 0x02, 0x2C, 0x06, 0x46, 0x0D, 0xD1, 0x03, 0x0E, 0x01, 0x2B, 0x22, 0xD0, 0x03, 0x0D, 0xB3, 0xF5, -0xA0, 0x6F, 0x1E, 0xD0, 0x32, 0x68, 0x24, 0x48, 0x31, 0x46, 0xFE, 0xF7, 0xFB, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0x22, -0xA8, 0x68, 0x11, 0x46, 0x00, 0xF0, 0x18, 0xF9, 0x03, 0x2C, 0x07, 0x46, 0x19, 0xD1, 0x04, 0x20, 0x01, 0x2F, 0x1C, 0xD0, -0xC2, 0xB2, 0x39, 0x46, 0x30, 0x46, 0x00, 0x23, 0xFF, 0xF7, 0xFE, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x18, 0x48, 0xFE, 0xF7, -0xE3, 0xFF, 0x01, 0x20, 0xF8, 0xBD, 0x30, 0x46, 0xDC, 0xF7, 0x7E, 0xFE, 0x31, 0x46, 0x02, 0x46, 0x12, 0x48, 0xFE, 0xF7, -0xD9, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0x22, 0xE8, 0x68, 0x11, 0x46, 0xFF, 0xF7, 0x2E, 0xFF, 0xE0, 0xE7, 0x33, 0x0E, -0x01, 0x2B, 0xEC, 0xD0, 0x33, 0x0D, 0xB3, 0xF5, 0xA0, 0x6F, 0xE8, 0xD0, 0x01, 0x28, 0x06, 0xD1, 0x32, 0x78, 0x0A, 0x48, -0x31, 0x46, 0xFE, 0xF7, 0xC3, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x02, 0x28, 0xBE, 0xD1, 0x32, 0x88, 0x06, 0x48, 0x92, 0xB2, -0x31, 0x46, 0xFE, 0xF7, 0xB9, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x7C, 0xB7, 0x15, 0x00, 0x64, 0xB7, 0x15, 0x00, -0x90, 0xB7, 0x15, 0x00, 0xA4, 0xB7, 0x15, 0x00, 0x02, 0x28, 0x38, 0xB5, 0x21, 0xDD, 0x0D, 0x46, 0x10, 0x22, 0x68, 0x68, -0x00, 0x21, 0xFF, 0xF7, 0x01, 0xFF, 0x10, 0x22, 0x04, 0x46, 0x00, 0x21, 0xA8, 0x68, 0xFF, 0xF7, 0xFB, 0xFE, 0x21, 0x46, -0x02, 0x46, 0x05, 0x46, 0x0F, 0x48, 0xFE, 0xF7, 0x99, 0xFF, 0x23, 0x0E, 0x01, 0x2B, 0x06, 0xD0, 0x23, 0x0D, 0xB3, 0xF5, -0xA0, 0x6F, 0x0D, 0xD0, 0x25, 0x60, 0x00, 0x20, 0x38, 0xBD, 0x20, 0x46, 0x29, 0x46, 0xDC, 0xF7, 0x53, 0xFE, 0x00, 0x20, -0x38, 0xBD, 0x07, 0x48, 0xFE, 0xF7, 0x86, 0xFF, 0x01, 0x20, 0x38, 0xBD, 0xB4, 0xF1, 0xA0, 0x4F, 0xF1, 0xD1, 0x28, 0x46, -0xDC, 0xF7, 0xF6, 0xFD, 0x00, 0x20, 0x38, 0xBD, 0x7C, 0xB7, 0x15, 0x00, 0xB8, 0xB7, 0x15, 0x00, 0x02, 0x28, 0x38, 0xB5, -0x46, 0xDC, 0x01, 0x28, 0x32, 0xD0, 0x00, 0x22, 0x48, 0x68, 0x11, 0x46, 0xFF, 0xF7, 0xCA, 0xFE, 0x25, 0x4A, 0x26, 0x4B, -0x02, 0xFB, 0x00, 0xF2, 0x9A, 0x42, 0x04, 0x46, 0x3E, 0xD8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, -0x21, 0x4B, 0x01, 0x21, 0x19, 0x60, 0x21, 0x4D, 0x21, 0x49, 0x2B, 0x68, 0x0A, 0x60, 0x01, 0x33, 0x2B, 0x60, 0x82, 0xB1, -0x1F, 0x49, 0x09, 0x78, 0xF9, 0xB9, 0x33, 0xB1, 0x1A, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x1B, 0x48, 0x21, 0x46, 0xFE, 0xF7, 0x49, 0xFF, 0x00, 0x20, 0x38, 0xBD, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, -0xFC, 0xF7, 0xE8, 0xFF, 0x2B, 0x68, 0xEA, 0xE7, 0x12, 0x4A, 0x15, 0x4B, 0x11, 0x68, 0x15, 0x48, 0xA3, 0xFB, 0x01, 0x31, -0x89, 0x0C, 0xFE, 0xF7, 0x37, 0xFF, 0x00, 0x20, 0x38, 0xBD, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0xFC, 0xF7, 0x26, 0xFF, -0x2B, 0x68, 0xD8, 0xE7, 0x0E, 0x48, 0xFE, 0xF7, 0x2B, 0xFF, 0x4F, 0xF0, 0xFF, 0x30, 0x38, 0xBD, 0x0C, 0x48, 0xFE, 0xF7, -0x25, 0xFF, 0x4F, 0xF0, 0xFF, 0x30, 0x38, 0xBD, 0x40, 0x42, 0x0F, 0x00, 0xFF, 0xA2, 0xE1, 0x11, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x6C, 0x60, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, 0xF8, 0xB7, 0x15, 0x00, 0x83, 0xDE, 0x1B, 0x43, -0xE8, 0xB7, 0x15, 0x00, 0xD0, 0xB7, 0x15, 0x00, 0x08, 0xB8, 0x15, 0x00, 0x10, 0xB5, 0x07, 0x4C, 0x01, 0xE0, 0x04, 0x2A, -0x05, 0xD0, 0x23, 0x68, 0x03, 0xF0, 0x0F, 0x02, 0xDB, 0x07, 0xF8, 0xD5, 0x10, 0xBD, 0xE0, 0xF7, 0x1D, 0xFC, 0xFF, 0xF7, -0x6B, 0xFC, 0xF4, 0xE7, 0x08, 0x10, 0x04, 0x40, 0xE0, 0xF7, 0x0A, 0xBC, 0x10, 0xB5, 0x04, 0x46, 0x00, 0x78, 0x28, 0xB1, -0xE0, 0xF7, 0x04, 0xFC, 0x14, 0xF8, 0x01, 0x0F, 0x00, 0x28, 0xF9, 0xD1, 0x10, 0xBD, 0x00, 0xBF, 0x10, 0xB5, 0x04, 0x4C, -0xD4, 0xF8, 0xB8, 0x30, 0x98, 0x47, 0xD4, 0xF8, 0x28, 0x33, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, -0xFF, 0xF7, 0x2E, 0xBD, 0xFF, 0xF7, 0x0C, 0xBD, 0xFF, 0xF7, 0x36, 0xBE, 0x70, 0xB4, 0x02, 0x68, 0x1C, 0x4C, 0x2D, 0x21, -0xA3, 0x89, 0x11, 0x70, 0x02, 0x68, 0x1A, 0x21, 0x51, 0x70, 0x23, 0xF0, 0x1C, 0x03, 0x02, 0x68, 0x9B, 0xB2, 0x43, 0xF0, -0x0C, 0x03, 0x53, 0x80, 0xA3, 0x7B, 0x13, 0x71, 0x06, 0x68, 0x04, 0xF1, 0x0F, 0x03, 0x04, 0xF1, 0x1F, 0x05, 0x13, 0xF8, -0x01, 0x1B, 0x1A, 0x1B, 0x32, 0x44, 0xAB, 0x42, 0x02, 0xF8, 0x0B, 0x1C, 0xF7, 0xD1, 0x01, 0x68, 0x0E, 0x4A, 0x00, 0x23, -0xCB, 0x73, 0x01, 0x68, 0x0B, 0x74, 0x05, 0x68, 0x23, 0x8C, 0xA5, 0xF8, 0x15, 0x30, 0x05, 0xF1, 0x17, 0x03, 0x1B, 0x35, -0x12, 0xF8, 0x01, 0x1B, 0x03, 0xF8, 0x01, 0x1B, 0xAB, 0x42, 0xF9, 0xD1, 0x03, 0x68, 0x94, 0xF8, 0x28, 0x20, 0xDA, 0x76, -0x03, 0x68, 0x1C, 0x33, 0x03, 0x60, 0x70, 0xBC, 0x1C, 0x20, 0x70, 0x47, 0xE4, 0xB8, 0x17, 0x00, 0x08, 0xB9, 0x17, 0x00, -0x03, 0x68, 0x28, 0x4A, 0xFF, 0x21, 0x70, 0xB4, 0x19, 0x70, 0x03, 0x68, 0x23, 0x21, 0x99, 0x70, 0x05, 0x68, 0xEB, 0x1C, -0x05, 0xF1, 0x09, 0x04, 0x12, 0xF8, 0x01, 0x1F, 0x03, 0xF8, 0x01, 0x1B, 0xA3, 0x42, 0xF9, 0xD1, 0x20, 0x4A, 0xA2, 0xF1, -0x41, 0x01, 0x02, 0xF1, 0x0B, 0x06, 0xA2, 0xF1, 0x38, 0x03, 0x12, 0xF8, 0x01, 0x4F, 0x5B, 0x1A, 0xB2, 0x42, 0x5C, 0x55, -0xF7, 0xD1, 0x91, 0xF8, 0x42, 0x30, 0xB1, 0xF8, 0x50, 0x40, 0xB1, 0xF8, 0x4E, 0x20, 0xEC, 0x82, 0x1C, 0x07, 0xAA, 0x82, -0x05, 0xF1, 0x18, 0x06, 0x4F, 0xEA, 0x63, 0x02, 0x07, 0xD5, 0xB1, 0xF8, 0x52, 0x40, 0xB1, 0xF8, 0x54, 0x30, 0x6B, 0x83, -0x2C, 0x83, 0x05, 0xF1, 0x1C, 0x06, 0x13, 0x07, 0x04, 0xD5, 0xB1, 0xF8, 0x56, 0x30, 0x33, 0x80, 0x73, 0x80, 0x04, 0x36, -0x0C, 0x4C, 0x32, 0x46, 0x14, 0xF8, 0x01, 0x5F, 0x15, 0x70, 0x91, 0xF8, 0x75, 0x51, 0x93, 0x1B, 0x9D, 0x42, 0x02, 0xF1, -0x01, 0x02, 0xF5, 0xDA, 0x03, 0x68, 0xD2, 0x1A, 0x91, 0x1E, 0x59, 0x70, 0x03, 0x68, 0x13, 0x44, 0x03, 0x60, 0x70, 0xBC, -0x10, 0x46, 0x70, 0x47, 0x1F, 0xB9, 0x17, 0x00, 0x25, 0xB9, 0x17, 0x00, 0x3D, 0xB9, 0x17, 0x00, 0x70, 0xB4, 0x0F, 0x4C, -0x03, 0x46, 0x22, 0x6B, 0x09, 0xB1, 0x22, 0xF4, 0xC0, 0x52, 0x19, 0x68, 0xBF, 0x20, 0x08, 0x70, 0x19, 0x68, 0x0C, 0x20, -0x48, 0x70, 0x18, 0x68, 0xA1, 0x8E, 0xC0, 0xF8, 0x02, 0x20, 0x1A, 0x68, 0x60, 0x8F, 0xE6, 0x8E, 0x25, 0x8F, 0xD1, 0x80, -0x02, 0xF1, 0x0E, 0x01, 0x16, 0x81, 0x55, 0x81, 0x90, 0x81, 0x70, 0xBC, 0x0E, 0x20, 0x19, 0x60, 0x70, 0x47, 0x00, 0xBF, -0xE4, 0xB8, 0x17, 0x00, 0x03, 0x68, 0x10, 0xB4, 0xC7, 0x24, 0x1C, 0x70, 0x03, 0x68, 0x01, 0x24, 0x5C, 0x70, 0x03, 0x68, -0x42, 0xEA, 0x01, 0x11, 0x99, 0x70, 0x03, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0x03, 0x33, 0x03, 0x60, 0x03, 0x20, 0x70, 0x47, -0x03, 0x68, 0x46, 0x22, 0x1A, 0x70, 0x03, 0x68, 0x05, 0x22, 0x5A, 0x70, 0x03, 0x68, 0x70, 0x22, 0x9A, 0x70, 0x02, 0x68, -0x00, 0x23, 0xD3, 0x70, 0x02, 0x68, 0x13, 0x71, 0x02, 0x68, 0x53, 0x71, 0x02, 0x68, 0x93, 0x71, 0x03, 0x68, 0x07, 0x33, -0x03, 0x60, 0x07, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x30, 0xB4, 0x02, 0x9C, 0x01, 0x80, 0x42, 0x80, 0x83, 0x80, 0x84, 0xB1, -0x10, 0x22, 0x80, 0x23, 0x82, 0x71, 0xC3, 0x71, 0xE5, 0x18, 0x22, 0x46, 0x13, 0x46, 0x08, 0x33, 0x12, 0xF8, 0x01, 0x1B, -0x1B, 0x1B, 0xAA, 0x42, 0x19, 0x54, 0xF7, 0xD1, 0x88, 0x20, 0x30, 0xBC, 0x70, 0x47, 0x06, 0x20, 0x30, 0xBC, 0x70, 0x47, -0x01, 0x80, 0x02, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x8F, 0xB0, 0x1F, 0x46, 0x1A, 0x9E, 0x03, 0x93, -0x34, 0x8F, 0xB6, 0xF8, 0x36, 0x80, 0x0D, 0x46, 0x03, 0x46, 0x01, 0x2C, 0x38, 0x46, 0x38, 0xBF, 0x01, 0x24, 0x07, 0x93, -0x17, 0x46, 0x01, 0xF0, 0xC1, 0xFE, 0xB5, 0xF8, 0xAE, 0x90, 0x07, 0x9B, 0x09, 0xF0, 0x10, 0x09, 0x40, 0xEA, 0x09, 0x00, -0x06, 0xF1, 0x40, 0x02, 0x5C, 0x80, 0x02, 0x92, 0x18, 0x80, 0x1F, 0xFA, 0x80, 0xF9, 0x14, 0x46, 0x00, 0x2F, 0x00, 0xF0, -0xDE, 0x81, 0x3A, 0x88, 0x9A, 0x80, 0x7A, 0x88, 0xDA, 0x80, 0xBA, 0x88, 0x1A, 0x81, 0x0A, 0x22, 0x17, 0x46, 0x18, 0x99, -0x98, 0x18, 0x08, 0x60, 0x00, 0x21, 0x07, 0x90, 0x95, 0xF8, 0x7E, 0x00, 0x99, 0x54, 0x07, 0x9B, 0x00, 0xF1, 0x02, 0x0E, -0x58, 0x70, 0x00, 0x28, 0x40, 0xF0, 0xC7, 0x80, 0x07, 0x9B, 0x95, 0xF8, 0xB0, 0x10, 0x0E, 0xEB, 0x03, 0x00, 0x01, 0x22, -0x07, 0x90, 0x0E, 0xF8, 0x03, 0x20, 0x07, 0x9B, 0x08, 0x29, 0x8C, 0x46, 0x28, 0xBF, 0x4F, 0xF0, 0x08, 0x0C, 0x83, 0xF8, -0x01, 0xC0, 0x07, 0x9B, 0x1F, 0xFA, 0x8E, 0xFE, 0x0C, 0xF1, 0x02, 0x0A, 0x05, 0xF1, 0xB1, 0x02, 0x51, 0xB1, 0x0C, 0xF1, -0xB1, 0x0C, 0xAC, 0x44, 0x12, 0xF8, 0x01, 0x0B, 0xD1, 0x18, 0x49, 0x1B, 0x94, 0x45, 0x01, 0xF8, 0xB0, 0x0C, 0xF7, 0xD1, -0x95, 0xF8, 0xB0, 0x20, 0xD6, 0x44, 0x0A, 0xEB, 0x03, 0x01, 0x08, 0x2A, 0x77, 0x44, 0x07, 0x91, 0x1A, 0xD9, 0x32, 0x21, -0x0A, 0xF8, 0x03, 0x10, 0x07, 0x9B, 0xA2, 0xF1, 0x08, 0x01, 0x59, 0x70, 0x02, 0xF1, 0xB1, 0x0C, 0x07, 0x9B, 0xA2, 0xF1, -0x06, 0x0E, 0xAC, 0x44, 0x05, 0xF1, 0xB9, 0x02, 0x12, 0xF8, 0x01, 0x0B, 0xD1, 0x18, 0x49, 0x1B, 0x94, 0x45, 0x01, 0xF8, -0xB8, 0x0C, 0xF7, 0xD1, 0x73, 0x44, 0x77, 0x44, 0x07, 0x93, 0xBF, 0xB2, 0x19, 0xF4, 0x80, 0x7F, 0x40, 0xF0, 0xB5, 0x80, -0x07, 0xA8, 0xFF, 0xF7, 0x3F, 0xFF, 0x47, 0x44, 0x07, 0x9B, 0x80, 0xB2, 0xBF, 0xB2, 0xB8, 0xF1, 0x00, 0x0F, 0x0A, 0xD0, -0x02, 0x9A, 0x42, 0x44, 0x94, 0x46, 0x14, 0xF8, 0x01, 0x1B, 0xE2, 0x18, 0x92, 0x1B, 0x64, 0x45, 0x02, 0xF8, 0x41, 0x1C, -0xF7, 0xD1, 0xD5, 0xF8, 0xE0, 0x40, 0x07, 0x44, 0x43, 0x44, 0xE2, 0x07, 0xBF, 0xB2, 0x07, 0x93, 0x1A, 0xD5, 0xB4, 0x4A, -0x07, 0xCA, 0x0A, 0xAE, 0x03, 0xC6, 0x00, 0x20, 0x0A, 0xA9, 0x32, 0x80, 0xAD, 0xF8, 0x36, 0x00, 0xCD, 0xF8, 0x32, 0x00, -0x8D, 0xF8, 0x30, 0x00, 0x5B, 0x1A, 0x0C, 0xA8, 0xDD, 0x22, 0x01, 0xE0, 0x11, 0xF8, 0x01, 0x2F, 0x5A, 0x54, 0x88, 0x42, -0xFA, 0xD1, 0x07, 0x9B, 0x09, 0x37, 0x09, 0x33, 0xBF, 0xB2, 0x07, 0x93, 0xA6, 0x07, 0x04, 0xD5, 0xA6, 0x4B, 0x93, 0xF8, -0x76, 0x31, 0xDC, 0x07, 0x53, 0xD4, 0xA5, 0x4B, 0x9B, 0x7D, 0x01, 0x2B, 0x5A, 0xD0, 0xD5, 0xF8, 0xE0, 0x30, 0x18, 0x07, -0x04, 0xD5, 0xA0, 0x4A, 0x92, 0xF8, 0x76, 0x21, 0x51, 0x07, 0x3C, 0xD4, 0x5A, 0x07, 0x22, 0xD5, 0x9C, 0x4D, 0x95, 0xF8, -0x76, 0x31, 0x9B, 0x07, 0x1D, 0xD5, 0x03, 0x99, 0x9B, 0x4B, 0x9C, 0x4C, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0x33, -0x07, 0xA8, 0x93, 0xF8, 0xC0, 0x14, 0xD4, 0xF8, 0x50, 0x21, 0x90, 0x47, 0x07, 0x44, 0x28, 0x8F, 0xD4, 0xF8, 0x4C, 0x61, -0x01, 0xF0, 0x9A, 0xFC, 0x95, 0xF8, 0x75, 0x21, 0x04, 0x2A, 0x01, 0x46, 0x08, 0xBF, 0x03, 0x22, 0x07, 0xA8, 0xB0, 0x47, -0xBF, 0xB2, 0x38, 0x44, 0x87, 0xB2, 0x18, 0x9B, 0x1A, 0x68, 0x07, 0x9B, 0x9B, 0x1A, 0x19, 0x9A, 0x38, 0x46, 0x13, 0x80, -0x0F, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x7F, 0x30, 0x07, 0x9B, 0x28, 0x44, 0x05, 0xF1, 0x7F, 0x02, 0x12, 0xF8, 0x01, 0xCB, -0xD1, 0x18, 0x49, 0x1B, 0x90, 0x42, 0x01, 0xF8, 0x7E, 0xCC, 0xF7, 0xD1, 0x2B, 0xE7, 0x82, 0x4B, 0x07, 0xA8, 0xD3, 0xF8, -0x44, 0x31, 0x98, 0x47, 0x38, 0x44, 0xD5, 0xF8, 0xE0, 0x30, 0x87, 0xB2, 0xB8, 0xE7, 0x7D, 0x4B, 0x07, 0xA8, 0xD3, 0xF8, -0x48, 0x31, 0x98, 0x47, 0x78, 0x4B, 0x9B, 0x7D, 0x38, 0x44, 0x01, 0x2B, 0x87, 0xB2, 0xA4, 0xD1, 0xB5, 0xF8, 0xE4, 0x30, -0x00, 0x2B, 0xA0, 0xD0, 0x07, 0x9B, 0x36, 0x22, 0x1A, 0x70, 0x07, 0x9B, 0x03, 0x22, 0x5A, 0x70, 0x07, 0x9B, 0xB5, 0xF8, -0xE4, 0x20, 0x5A, 0x80, 0x95, 0xF8, 0xE6, 0x20, 0x1A, 0x71, 0x07, 0x9B, 0x05, 0x37, 0x05, 0x33, 0xBF, 0xB2, 0x07, 0x93, -0x8D, 0xE7, 0x07, 0x9B, 0x21, 0x22, 0x59, 0x1C, 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x02, 0x22, 0x59, 0x1C, 0x07, 0x91, -0x0A, 0xA8, 0x1A, 0x70, 0x0D, 0xF1, 0x27, 0x01, 0xDB, 0xF7, 0x8E, 0xFE, 0xD5, 0xF8, 0xA4, 0x30, 0x9D, 0xF9, 0x28, 0x20, -0x93, 0xF9, 0x04, 0x30, 0x9A, 0x42, 0xC8, 0xBF, 0x8D, 0xF8, 0x28, 0x30, 0x07, 0x9B, 0x9D, 0xF8, 0x27, 0x20, 0x59, 0x1C, -0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x9D, 0xF8, 0x28, 0x20, 0x59, 0x1C, 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x24, 0x22, -0x59, 0x1C, 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x04, 0x93, 0x1A, 0x46, 0x02, 0xF1, 0x01, 0x0B, 0xD5, 0xF8, 0xA4, 0x30, -0xCD, 0xF8, 0x1C, 0xB0, 0x9B, 0x78, 0x4F, 0x4A, 0x00, 0x2B, 0x52, 0xD1, 0x01, 0x23, 0x92, 0xF8, 0x72, 0xA1, 0x05, 0x93, -0x76, 0x32, 0xBA, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x8C, 0x80, 0x00, 0x21, 0x06, 0x95, 0x01, 0x91, 0x08, 0x46, 0x8E, 0x46, -0xA1, 0x46, 0x0D, 0x46, 0x1A, 0x96, 0xD3, 0x78, 0x13, 0xF0, 0x02, 0x03, 0x1F, 0xD1, 0x94, 0x78, 0xB2, 0xF8, 0x00, 0xC0, -0x00, 0x2C, 0x43, 0xD1, 0xAC, 0xF6, 0x6C, 0x14, 0x48, 0x2C, 0x3A, 0xD8, 0x40, 0xF6, 0xB4, 0x13, 0x9C, 0x45, 0x6F, 0xD0, -0x40, 0x4C, 0xAC, 0xF6, 0x67, 0x13, 0xA4, 0xFB, 0x03, 0x43, 0x9C, 0x08, 0xC3, 0xF3, 0x87, 0x03, 0x00, 0x28, 0x45, 0xD0, -0xA4, 0xEB, 0x0E, 0x0E, 0x05, 0x9C, 0xA6, 0x45, 0x44, 0xD1, 0x01, 0x30, 0xC0, 0xB2, 0x9E, 0x46, 0x06, 0x32, 0x01, 0x31, -0xCB, 0xB2, 0x9A, 0x45, 0xD7, 0xD8, 0x01, 0x9B, 0x1A, 0x9E, 0x03, 0xF1, 0x02, 0x0E, 0x29, 0x46, 0x5F, 0xFA, 0x8E, 0xF3, -0x06, 0x9D, 0x4C, 0x46, 0x9E, 0x46, 0x0B, 0xF1, 0x01, 0x02, 0x07, 0x92, 0x8B, 0xF8, 0x00, 0x10, 0x07, 0x9A, 0x51, 0x1C, -0x07, 0x91, 0x06, 0x37, 0x10, 0x70, 0x04, 0x9A, 0x1E, 0xFA, 0x87, 0xF7, 0xBF, 0xB2, 0x13, 0x70, 0xC0, 0xE6, 0x04, 0x23, -0x92, 0xF8, 0x73, 0xA1, 0x05, 0x93, 0xCA, 0x32, 0xAB, 0xE7, 0xD8, 0xB9, 0x86, 0x46, 0x05, 0x46, 0x01, 0x20, 0xD5, 0xE7, -0x01, 0x2C, 0xF8, 0xD1, 0xAC, 0xF5, 0x9C, 0x5C, 0xAC, 0xF1, 0x0D, 0x04, 0xA4, 0xB2, 0xB4, 0xF5, 0x4D, 0x7F, 0xF0, 0xD8, -0x1D, 0x4B, 0xAC, 0xF1, 0x08, 0x0C, 0xA3, 0xFB, 0x0C, 0x43, 0x9C, 0x08, 0xC3, 0xF3, 0x87, 0x03, 0x00, 0x28, 0xB9, 0xD1, -0x9E, 0x46, 0x1D, 0x46, 0x01, 0x20, 0xBD, 0xE7, 0x0B, 0xF1, 0x01, 0x04, 0x07, 0x94, 0x8B, 0xF8, 0x00, 0x50, 0x07, 0x9C, -0x01, 0x9E, 0x04, 0xF1, 0x01, 0x0C, 0x06, 0xF1, 0x02, 0x0E, 0xCD, 0xF8, 0x1C, 0xC0, 0x00, 0xF1, 0x02, 0x0C, 0x20, 0x70, -0x5F, 0xFA, 0x8E, 0xF0, 0x01, 0x90, 0xDD, 0xF8, 0x1C, 0xB0, 0x9E, 0x46, 0x5F, 0xFA, 0x8C, 0xF0, 0xA4, 0xE7, 0x04, 0x22, -0x17, 0x46, 0x26, 0xE6, 0x0E, 0x23, 0x1C, 0x46, 0x94, 0xE7, 0x02, 0x23, 0x50, 0x46, 0x51, 0x46, 0x9E, 0x46, 0xA8, 0xE7, -0x2C, 0xB8, 0x15, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xCD, 0xCC, 0xCC, 0xCC, 0x03, 0x22, 0x00, 0x23, 0x30, 0xB4, 0x02, 0x70, 0x43, 0x70, 0x4B, 0x7C, 0x83, 0x70, 0x0B, 0x7C, -0x8C, 0x7B, 0xCA, 0x7B, 0x4D, 0x89, 0xA0, 0xF8, 0x05, 0x50, 0x9B, 0x00, 0x43, 0xEA, 0x44, 0x03, 0x43, 0xEA, 0x82, 0x13, -0xA0, 0xF8, 0x03, 0x30, 0x0B, 0x89, 0x1B, 0x01, 0xA0, 0xF8, 0x07, 0x30, 0x30, 0xBC, 0x09, 0x20, 0x70, 0x47, 0x00, 0xBF, -0x30, 0xB4, 0x22, 0xF0, 0x01, 0x02, 0xBD, 0xF8, 0x08, 0x40, 0xA0, 0xF8, 0x05, 0x20, 0x03, 0x25, 0x01, 0x22, 0xA0, 0xF8, -0x03, 0x40, 0x83, 0x70, 0x05, 0x70, 0x42, 0x70, 0x2C, 0xB1, 0x00, 0x23, 0xC3, 0x71, 0x03, 0x72, 0x30, 0xBC, 0x09, 0x20, -0x70, 0x47, 0x4B, 0x89, 0xA0, 0xF8, 0x07, 0x30, 0x30, 0xBC, 0x09, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x10, 0xB4, 0x02, 0x23, -0x03, 0x24, 0x04, 0x70, 0x43, 0x70, 0x0B, 0x7C, 0x49, 0x7B, 0x5D, 0xF8, 0x04, 0x4B, 0x82, 0x80, 0x1B, 0x03, 0x9B, 0xB2, -0x01, 0x29, 0x08, 0xBF, 0x43, 0xF4, 0x00, 0x63, 0x43, 0x80, 0x06, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x41, -0x82, 0xB0, 0x16, 0x46, 0x0D, 0xF1, 0x07, 0x02, 0x07, 0x46, 0x88, 0x46, 0xFD, 0xF7, 0x7A, 0xFB, 0xA8, 0xB3, 0x9D, 0xF8, -0x07, 0x40, 0x83, 0x1C, 0x7C, 0xB1, 0x02, 0x34, 0x20, 0x44, 0x00, 0x24, 0x1D, 0x78, 0x25, 0xF0, 0x81, 0x02, 0x7E, 0x2A, -0x03, 0xF1, 0x01, 0x03, 0x03, 0xD0, 0x32, 0x19, 0x01, 0x34, 0x55, 0x70, 0xE4, 0xB2, 0x98, 0x42, 0xF2, 0xD1, 0x0D, 0xF1, -0x07, 0x02, 0x41, 0x46, 0x38, 0x46, 0xFD, 0xF7, 0x7F, 0xFB, 0xB0, 0xB1, 0x9D, 0xF8, 0x07, 0x30, 0x81, 0x1C, 0x93, 0xB1, -0x02, 0x33, 0x1F, 0x18, 0x0A, 0x78, 0x22, 0xF0, 0x81, 0x00, 0x63, 0x1C, 0x7E, 0x28, 0x06, 0xEB, 0x04, 0x05, 0x01, 0xF1, -0x01, 0x01, 0xDB, 0xB2, 0x03, 0xD0, 0x0B, 0x2B, 0x6A, 0x70, 0x1C, 0x46, 0x01, 0xD8, 0x8F, 0x42, 0xEE, 0xD1, 0x34, 0x70, -0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x04, 0x46, 0x34, 0x70, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x10, 0xB5, 0x14, 0x46, -0xFD, 0xF7, 0xE8, 0xFC, 0x00, 0xB1, 0x80, 0x78, 0x84, 0xF8, 0xDA, 0x00, 0x10, 0xBD, 0x00, 0xBF, 0xF0, 0xB5, 0x83, 0xB0, -0x14, 0x46, 0x0D, 0xF1, 0x07, 0x02, 0xFD, 0xF7, 0x8B, 0xFB, 0x60, 0xB3, 0xD4, 0xF8, 0xA4, 0xE0, 0x9E, 0xF8, 0x02, 0x40, -0x4C, 0xB3, 0x01, 0x2C, 0xBE, 0xF8, 0x00, 0x30, 0x40, 0xD0, 0x00, 0x24, 0x04, 0x25, 0x9D, 0xF8, 0x07, 0x70, 0x02, 0x37, -0xFF, 0xB2, 0x08, 0x2F, 0x8D, 0xF8, 0x07, 0x70, 0x19, 0xD9, 0x05, 0x26, 0x06, 0xEB, 0x00, 0x0C, 0x33, 0x5C, 0x9C, 0xF8, -0x01, 0x10, 0x69, 0xB1, 0x9C, 0x42, 0x25, 0xD0, 0x01, 0x39, 0xC9, 0xB2, 0x00, 0x22, 0x01, 0xE0, 0x9C, 0x42, 0x1F, 0xD0, -0x2B, 0x44, 0x8A, 0x42, 0xDB, 0xB2, 0x02, 0xF1, 0x01, 0x02, 0xF7, 0xD1, 0x03, 0x36, 0xF6, 0xB2, 0xF3, 0x1C, 0x9F, 0x42, -0xE6, 0xDC, 0x03, 0xB0, 0xF0, 0xBD, 0xBE, 0xF8, 0x00, 0x30, 0xA3, 0xF6, 0x6C, 0x12, 0x48, 0x2A, 0x12, 0xD8, 0x40, 0xF6, -0xB4, 0x12, 0x93, 0x42, 0x20, 0xD0, 0x12, 0x4A, 0xA3, 0xF6, 0x67, 0x14, 0xA2, 0xFB, 0x04, 0x34, 0xC4, 0xF3, 0x87, 0x04, -0x01, 0x25, 0xC8, 0xE7, 0x9C, 0xF8, 0x02, 0x30, 0x8E, 0xF8, 0x04, 0x30, 0x03, 0xB0, 0xF0, 0xBD, 0x01, 0x25, 0xC0, 0xE7, -0xA3, 0xF5, 0x9C, 0x53, 0xA3, 0xF1, 0x0D, 0x02, 0x92, 0xB2, 0xB2, 0xF5, 0x4D, 0x7F, 0xB6, 0xD8, 0x05, 0x4C, 0x08, 0x3B, -0xA4, 0xFB, 0x03, 0x34, 0xC4, 0xF3, 0x87, 0x04, 0x04, 0x25, 0xB0, 0xE7, 0x0E, 0x24, 0x01, 0x25, 0xAD, 0xE7, 0x00, 0xBF, -0xCD, 0xCC, 0xCC, 0xCC, 0x10, 0xB5, 0x14, 0x46, 0xFD, 0xF7, 0x96, 0xFC, 0x48, 0xB1, 0x83, 0x78, 0xC2, 0x78, 0x43, 0xEA, -0x02, 0x23, 0xA4, 0xF8, 0xE4, 0x30, 0x03, 0x79, 0x84, 0xF8, 0xE6, 0x30, 0x10, 0xBD, 0x84, 0xF8, 0xE6, 0x00, 0xA4, 0xF8, -0xE4, 0x00, 0x10, 0xBD, 0x2D, 0xE9, 0xF0, 0x47, 0x82, 0xB0, 0x1C, 0x46, 0x05, 0x46, 0x0E, 0x46, 0x91, 0x46, 0xFD, 0xF7, -0x49, 0xFB, 0x31, 0x46, 0x07, 0x46, 0x28, 0x46, 0xFD, 0xF7, 0x64, 0xFB, 0x57, 0xEA, 0x00, 0x03, 0x72, 0xD0, 0x80, 0x46, -0x0D, 0xF1, 0x07, 0x02, 0x31, 0x46, 0x28, 0x46, 0xFD, 0xF7, 0x7A, 0xFB, 0x82, 0x46, 0x18, 0xB1, 0x9D, 0xF8, 0x07, 0x30, -0x00, 0x2B, 0x65, 0xD0, 0x31, 0x46, 0x0D, 0xF1, 0x07, 0x02, 0x28, 0x46, 0xFD, 0xF7, 0x90, 0xFB, 0x01, 0x46, 0x00, 0x28, -0x58, 0xD1, 0x00, 0x2F, 0x7A, 0xD0, 0xBB, 0x78, 0x38, 0x79, 0x89, 0xF8, 0x00, 0x30, 0x97, 0xF8, 0x03, 0xC0, 0x00, 0x28, -0x08, 0xBF, 0x02, 0x20, 0xBC, 0xF1, 0x0E, 0x0F, 0x0C, 0xF1, 0xFF, 0x33, 0x8C, 0xBF, 0x01, 0x27, 0x00, 0x27, 0x4D, 0xD8, -0x0D, 0x2B, 0x70, 0xD8, 0xBC, 0xF1, 0x0E, 0x0F, 0x00, 0xF0, 0x97, 0x80, 0x0C, 0xEB, 0x8C, 0x06, 0x06, 0xF6, 0x67, 0x16, -0x00, 0x29, 0x4A, 0xD0, 0x8D, 0x78, 0xCA, 0x78, 0x91, 0xF8, 0x04, 0xE0, 0x05, 0xF1, 0xFF, 0x38, 0xB8, 0xF1, 0x02, 0x0F, -0x9A, 0xBF, 0x01, 0x35, 0xED, 0xB2, 0x01, 0x25, 0xBC, 0xF1, 0x0E, 0x0F, 0x93, 0xB2, 0x1F, 0xFA, 0x8E, 0xF1, 0x57, 0xD8, -0x02, 0xF1, 0xFF, 0x3C, 0xBC, 0xF1, 0x0D, 0x0F, 0x72, 0xD8, 0x0E, 0x2A, 0x00, 0xF0, 0x90, 0x80, 0x03, 0xEB, 0x83, 0x03, -0x03, 0xF6, 0x67, 0x13, 0x61, 0xB1, 0x0E, 0xF1, 0xFF, 0x32, 0x0D, 0x2A, 0x60, 0xD8, 0xBE, 0xF1, 0x0E, 0x0F, 0x00, 0xF0, -0x9A, 0x80, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF6, 0x67, 0x11, 0x89, 0xB2, 0x4B, 0x4A, 0x92, 0xF8, 0x75, 0x21, 0xAA, 0x42, -0x24, 0xD2, 0x01, 0x2A, 0x67, 0xD0, 0x02, 0x2A, 0x5E, 0xD0, 0x00, 0x2A, 0x08, 0xBF, 0x33, 0x46, 0x15, 0x46, 0x1B, 0xE0, -0x9D, 0xF8, 0x07, 0x30, 0x00, 0x2B, 0xA2, 0xD1, 0x00, 0x20, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0xA4, 0x2B, 0x22, 0xD8, -0x0C, 0xEB, 0x8C, 0x06, 0x06, 0xF5, 0x9C, 0x56, 0x08, 0x36, 0x00, 0x29, 0xB4, 0xD1, 0xBA, 0xF1, 0x00, 0x0F, 0x31, 0xD0, -0x9A, 0xF8, 0x02, 0x50, 0x01, 0x2D, 0x3A, 0xD0, 0x03, 0x2D, 0x50, 0xD0, 0x0D, 0x46, 0x33, 0x46, 0x27, 0x70, 0x65, 0x70, -0x66, 0x80, 0xA3, 0x80, 0xE1, 0x80, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x98, 0xF8, 0x02, 0x30, 0x98, 0xF8, 0x05, 0x00, -0x89, 0xF8, 0x00, 0x30, 0x98, 0xF8, 0x04, 0xC0, 0x81, 0xE7, 0x4F, 0xF6, 0xFF, 0x76, 0x93, 0xE7, 0x01, 0x3A, 0xA4, 0x2A, -0x19, 0xD8, 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF5, 0x9C, 0x53, 0x08, 0x33, 0x00, 0x29, 0xB7, 0xD0, 0x0E, 0xF1, 0xFF, 0x3E, -0xBE, 0xF1, 0xA4, 0x0F, 0x0A, 0xD8, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF5, 0x9C, 0x51, 0x08, 0x31, 0x89, 0xB2, 0xAB, 0xE7, -0x51, 0x46, 0x55, 0x46, 0x33, 0x46, 0xD1, 0xE7, 0x4F, 0xF6, 0xFF, 0x71, 0xA4, 0xE7, 0x4F, 0xF6, 0xFF, 0x73, 0xE7, 0xE7, -0x4F, 0xF6, 0xFF, 0x73, 0x90, 0xE7, 0x06, 0xF1, 0x0A, 0x03, 0x9B, 0xB2, 0xC4, 0xE7, 0x40, 0xF6, 0xB4, 0x16, 0x69, 0xE7, -0x9E, 0x42, 0x94, 0xBF, 0x28, 0x3B, 0x28, 0x33, 0x9B, 0xB2, 0x15, 0x46, 0xBA, 0xE7, 0x02, 0x2D, 0x0F, 0xD0, 0x03, 0xF1, -0x28, 0x05, 0xB5, 0x42, 0x15, 0xDA, 0x3C, 0x33, 0x9B, 0xB2, 0x15, 0x46, 0xB0, 0xE7, 0xA6, 0xF1, 0x0A, 0x03, 0x9B, 0xB2, -0x01, 0x25, 0xAB, 0xE7, 0x40, 0xF6, 0xB4, 0x13, 0x70, 0xE7, 0x9E, 0x42, 0x03, 0xD8, 0x14, 0x3B, 0x9B, 0xB2, 0x15, 0x46, -0xA2, 0xE7, 0x14, 0x33, 0x9B, 0xB2, 0x15, 0x46, 0x9E, 0xE7, 0x9E, 0x42, 0xF9, 0xD8, 0xA3, 0xF1, 0x27, 0x05, 0xAE, 0x42, -0xF1, 0xDA, 0x3C, 0x3B, 0x9B, 0xB2, 0x15, 0x46, 0x94, 0xE7, 0x40, 0xF6, 0xB4, 0x11, 0x67, 0xE7, 0xE4, 0xB8, 0x17, 0x00, -0x70, 0xB5, 0x1D, 0x46, 0x14, 0x46, 0xFD, 0xF7, 0x95, 0xFB, 0x00, 0x23, 0x2B, 0x70, 0x00, 0x28, 0x48, 0xD0, 0x02, 0x7A, -0xA1, 0x7C, 0x02, 0xF0, 0x0F, 0x03, 0x99, 0x42, 0x40, 0xD0, 0x01, 0x21, 0x29, 0x70, 0xA3, 0x74, 0x22, 0x74, 0xD0, 0xF8, -0x0A, 0x20, 0x13, 0x0A, 0xD1, 0x08, 0x02, 0xF0, 0x0F, 0x02, 0x52, 0xEA, 0x03, 0x12, 0x04, 0xBF, 0x40, 0xF6, 0x43, 0x23, -0x63, 0x60, 0xD0, 0xF8, 0x0E, 0x30, 0x18, 0xBF, 0x62, 0x60, 0x1D, 0x0A, 0x03, 0xF0, 0x0F, 0x02, 0x52, 0xEA, 0x05, 0x12, -0x08, 0xBF, 0x40, 0xF6, 0x47, 0x22, 0x22, 0x60, 0xD0, 0xF8, 0x12, 0x20, 0x95, 0x08, 0x16, 0x0A, 0x02, 0xF0, 0x0F, 0x02, -0x52, 0xEA, 0x06, 0x12, 0x08, 0xBF, 0x12, 0x4A, 0xA2, 0x60, 0xD0, 0xF8, 0x16, 0x20, 0xC3, 0xF3, 0x00, 0x13, 0x50, 0x08, -0x05, 0xF0, 0x04, 0x05, 0x01, 0xF0, 0x02, 0x01, 0x2B, 0x43, 0x00, 0xF0, 0x08, 0x00, 0x49, 0xB2, 0x03, 0x43, 0x0B, 0x43, -0x11, 0x0A, 0x02, 0xF0, 0x0F, 0x02, 0x52, 0xEA, 0x01, 0x12, 0x63, 0x74, 0x0A, 0xBF, 0x07, 0x4B, 0xE2, 0x60, 0xE3, 0x60, -0x01, 0x20, 0x70, 0xBD, 0x40, 0xF6, 0x43, 0x23, 0xC4, 0xE9, 0x00, 0x33, 0xC4, 0xE9, 0x02, 0x33, 0x70, 0xBD, 0x00, 0xBF, -0x32, 0xE4, 0x05, 0x00, 0x22, 0xF3, 0x02, 0x00, 0x38, 0xB5, 0x14, 0x46, 0xFD, 0xF7, 0x4A, 0xFB, 0xE8, 0xB1, 0xC2, 0x78, -0x83, 0x78, 0x43, 0xEA, 0x02, 0x23, 0x23, 0x80, 0x23, 0x46, 0x02, 0x79, 0x03, 0xF8, 0x02, 0x2F, 0x04, 0xF1, 0x12, 0x05, -0xC4, 0xF1, 0x03, 0x02, 0xC1, 0x18, 0x89, 0x5C, 0x03, 0xF8, 0x01, 0x1F, 0xAB, 0x42, 0xF9, 0xD1, 0x43, 0x7D, 0x82, 0x7D, -0xB0, 0xF8, 0x17, 0x10, 0xA1, 0x61, 0x43, 0xEA, 0x02, 0x23, 0xA3, 0x82, 0xC3, 0x7E, 0x23, 0x77, 0x01, 0x20, 0x38, 0xBD, -0xF8, 0xB5, 0x14, 0x46, 0xFD, 0xF7, 0xCA, 0xFB, 0xB8, 0xB1, 0xC7, 0x79, 0x43, 0x7A, 0x85, 0x79, 0x02, 0x7A, 0x81, 0x7A, -0xC6, 0x7A, 0x45, 0xEA, 0x07, 0x25, 0x42, 0xEA, 0x03, 0x22, 0xD0, 0xF8, 0x02, 0x70, 0x03, 0x7B, 0x40, 0x7B, 0x27, 0x60, -0x43, 0xEA, 0x00, 0x23, 0x41, 0xEA, 0x06, 0x21, 0xA5, 0x80, 0x21, 0x81, 0xE2, 0x80, 0x63, 0x81, 0x01, 0x20, 0xF8, 0xBD, -0xF0, 0xB5, 0x83, 0xB0, 0x15, 0x46, 0x0D, 0xF1, 0x07, 0x02, 0xFD, 0xF7, 0xC9, 0xFB, 0x00, 0x28, 0x45, 0xD0, 0x9D, 0xF8, -0x07, 0x30, 0xC6, 0x1C, 0xC5, 0xF1, 0x04, 0x04, 0x1E, 0x44, 0x04, 0x44, 0x6B, 0x1E, 0x69, 0x1D, 0x1A, 0x5D, 0x03, 0xF8, -0x01, 0x2F, 0x8B, 0x42, 0xFA, 0xD1, 0x05, 0xF1, 0x10, 0x02, 0x19, 0x5D, 0x03, 0xF8, 0x01, 0x1F, 0x93, 0x42, 0xFA, 0xD1, -0x02, 0x7D, 0x47, 0x7D, 0x83, 0x7D, 0xC4, 0x7D, 0xA9, 0x79, 0x42, 0xEA, 0x07, 0x22, 0x43, 0xEA, 0x04, 0x23, 0x6A, 0x82, -0x4A, 0x10, 0x09, 0x07, 0xAB, 0x82, 0x00, 0xF1, 0x18, 0x03, 0x0E, 0xD5, 0x00, 0xF1, 0x1C, 0x01, 0xB1, 0x42, 0x1C, 0xD8, -0x5F, 0x78, 0x04, 0x7E, 0x83, 0x7E, 0xC0, 0x7E, 0x44, 0xEA, 0x07, 0x24, 0x43, 0xEA, 0x00, 0x20, 0xEC, 0x82, 0x0B, 0x46, -0x28, 0x83, 0x12, 0x07, 0x12, 0xD5, 0x1A, 0x1D, 0xB2, 0x42, 0x0C, 0xD8, 0x58, 0x78, 0x19, 0x78, 0x9A, 0x78, 0xDB, 0x78, -0x41, 0xEA, 0x00, 0x21, 0x42, 0xEA, 0x03, 0x23, 0x01, 0x20, 0x69, 0x83, 0xAB, 0x83, 0x03, 0xB0, 0xF0, 0xBD, 0x00, 0x20, -0x03, 0xB0, 0xF0, 0xBD, 0x01, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0x00, 0xBF, 0x10, 0xB5, 0x82, 0xB0, 0x14, 0x46, 0x0D, 0xF1, -0x07, 0x02, 0xFD, 0xF7, 0xC7, 0xFB, 0x40, 0xB1, 0xD0, 0xF8, 0x03, 0x30, 0xC4, 0xF8, 0xDC, 0x30, 0x00, 0x38, 0x18, 0xBF, -0x01, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x01, 0x4B, 0xF6, 0xE7, 0x00, 0xBF, 0x00, 0x00, 0x01, 0x80, 0xF8, 0xB5, 0x1D, 0x46, -0x14, 0x46, 0xFD, 0xF7, 0xC7, 0xFB, 0x00, 0x23, 0x2B, 0x70, 0x00, 0xB3, 0xC2, 0x78, 0x61, 0x7C, 0x02, 0xF0, 0x0F, 0x03, -0x99, 0x42, 0x1B, 0xD0, 0x01, 0x26, 0x2E, 0x70, 0x22, 0x74, 0x63, 0x74, 0xB0, 0xF8, 0x05, 0x10, 0x03, 0x79, 0x02, 0x89, -0xB0, 0xF8, 0x0B, 0x70, 0xC5, 0x89, 0x43, 0xEA, 0x01, 0x23, 0x63, 0x60, 0xC1, 0x79, 0x41, 0xEA, 0x02, 0x21, 0x21, 0x60, -0x82, 0x7A, 0x42, 0xEA, 0x07, 0x22, 0xA2, 0x60, 0x43, 0x7B, 0x43, 0xEA, 0x05, 0x23, 0x30, 0x46, 0xE3, 0x60, 0xF8, 0xBD, -0x01, 0x20, 0xF8, 0xBD, 0x10, 0xB5, 0x14, 0x46, 0xFD, 0xF7, 0xAC, 0xFB, 0x40, 0xB1, 0xC3, 0x78, 0x03, 0xF0, 0x07, 0x02, -0xC3, 0xF3, 0xC2, 0x03, 0x22, 0x70, 0x63, 0x70, 0x01, 0x20, 0x10, 0xBD, 0x03, 0x22, 0x05, 0x23, 0x22, 0x70, 0x63, 0x70, -0x10, 0xBD, 0x00, 0xBF, 0x38, 0xB5, 0x07, 0x48, 0x1C, 0x46, 0x15, 0x46, 0xFE, 0x22, 0x10, 0xF0, 0x67, 0xFD, 0x2A, 0x46, -0x21, 0x46, 0x41, 0xF2, 0x03, 0x40, 0xFC, 0xF7, 0x41, 0xFA, 0x00, 0x20, 0x38, 0xBD, 0x00, 0xBF, 0x5A, 0xB9, 0x17, 0x00, -0x70, 0xB5, 0x32, 0x4C, 0x08, 0x78, 0x24, 0x68, 0x01, 0x28, 0x19, 0x46, 0x20, 0x70, 0x29, 0xD0, 0x02, 0x28, 0x05, 0xD0, -0x41, 0xF2, 0x16, 0x40, 0xFC, 0xF7, 0x2E, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x2B, 0x4C, 0x2C, 0x48, 0x23, 0x68, 0x2C, 0x4E, -0x2C, 0x4D, 0x43, 0xF4, 0x80, 0x33, 0x23, 0x60, 0x03, 0x68, 0x2B, 0x4C, 0x23, 0xF0, 0x00, 0x73, 0x03, 0x60, 0x3F, 0x23, -0x33, 0x60, 0x2B, 0x68, 0x28, 0x48, 0x23, 0xF0, 0x01, 0x03, 0x2B, 0x60, 0x23, 0x6D, 0x23, 0xF4, 0x80, 0x23, 0x23, 0x65, -0x03, 0x69, 0x43, 0xF0, 0x80, 0x03, 0x03, 0x61, 0x41, 0xF2, 0x16, 0x40, 0xFC, 0xF7, 0x0C, 0xFA, 0x00, 0x20, 0x70, 0xBD, -0x20, 0x4B, 0x1B, 0x4C, 0x93, 0xF8, 0xB5, 0x30, 0x0B, 0xBB, 0x23, 0x68, 0x19, 0x4E, 0x1E, 0x4D, 0x43, 0xF0, 0x00, 0x73, -0x23, 0x60, 0x04, 0xF5, 0x00, 0x44, 0x04, 0x23, 0x28, 0x34, 0x33, 0x60, 0x28, 0x60, 0x23, 0x68, 0x23, 0xF4, 0x80, 0x23, -0x23, 0xF0, 0x01, 0x03, 0x23, 0x60, 0x13, 0x4C, 0x13, 0x48, 0x23, 0x6D, 0x43, 0xF4, 0x80, 0x23, 0x23, 0x65, 0x03, 0x69, -0x23, 0xF0, 0x80, 0x03, 0x03, 0x61, 0x41, 0xF2, 0x16, 0x40, 0xFC, 0xF7, 0xE5, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0x23, 0x68, -0x09, 0x48, 0x08, 0x4D, 0x23, 0xF0, 0x00, 0x73, 0x23, 0x60, 0x03, 0x68, 0x24, 0x24, 0x43, 0xF4, 0x00, 0x13, 0x03, 0x60, -0x2C, 0x60, 0xE2, 0xE7, 0x74, 0x36, 0x17, 0x00, 0x44, 0x00, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, 0x98, 0x80, 0x32, 0x40, -0x6C, 0x00, 0x32, 0x40, 0x00, 0x60, 0x50, 0x40, 0x00, 0x00, 0x50, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x70, 0x80, 0x32, 0x40, -0xF8, 0xB5, 0x4C, 0x78, 0x08, 0x78, 0x16, 0x46, 0x1D, 0x46, 0x2C, 0xB3, 0x17, 0x4C, 0x18, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, -0x02, 0xFB, 0x00, 0x44, 0x4F, 0xF4, 0xA4, 0x61, 0x94, 0xF8, 0x22, 0x20, 0x01, 0xFB, 0x02, 0x32, 0x02, 0x23, 0x92, 0xF8, -0x62, 0x70, 0x84, 0xF8, 0x30, 0x30, 0x5F, 0xB9, 0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xFC, 0xF7, 0x3E, 0xF9, -0x07, 0x70, 0x94, 0xF8, 0x22, 0x20, 0x42, 0x70, 0xFC, 0xF7, 0x68, 0xF9, 0x32, 0x46, 0x29, 0x46, 0x41, 0xF2, 0x05, 0x40, -0xFC, 0xF7, 0x9A, 0xF9, 0x00, 0x20, 0xF8, 0xBD, 0x04, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x00, 0x30, 0x01, 0x23, -0x80, 0xF8, 0x30, 0x30, 0xEE, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, -0x0C, 0x20, 0x0C, 0x46, 0x17, 0x46, 0x00, 0x21, 0x05, 0x22, 0x1E, 0x46, 0x01, 0x23, 0xFC, 0xF7, 0x17, 0xF9, 0xDF, 0xF8, -0x6C, 0x90, 0xDF, 0xF8, 0x6C, 0x80, 0xD9, 0xF8, 0x24, 0x30, 0x05, 0x46, 0x20, 0x78, 0x98, 0x47, 0x23, 0x78, 0x2B, 0x70, -0x28, 0x46, 0xFC, 0xF7, 0x39, 0xF9, 0x20, 0x78, 0xD9, 0xF8, 0xD8, 0x31, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0xF0, -0x00, 0xF5, 0x18, 0x70, 0x40, 0x44, 0x98, 0x47, 0x63, 0x78, 0x43, 0xB9, 0x3A, 0x46, 0x31, 0x46, 0x41, 0xF2, 0x0A, 0x40, -0xFC, 0xF7, 0x5E, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x02, 0x23, 0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, -0xFC, 0xF7, 0xEC, 0xF8, 0x00, 0x22, 0x02, 0x70, 0x22, 0x78, 0x05, 0xFB, 0x02, 0x88, 0x98, 0xF8, 0x22, 0x20, 0x42, 0x70, -0xFC, 0xF7, 0x12, 0xF9, 0xE4, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x0C, 0x46, 0x89, 0x78, 0x25, 0x78, 0xDF, 0xF8, 0xAC, 0x80, 0x1E, 0x46, 0x17, 0x46, 0x63, 0x78, 0xA1, 0xB1, 0x00, 0x2B, -0x44, 0xD1, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, 0x02, 0xF0, 0xFB, 0x02, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x2E, 0x11, 0x83, 0xF8, 0x31, 0x20, 0x0F, 0x29, 0x1E, 0xD1, 0x0A, 0xE0, -0x2B, 0xBB, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, 0x22, 0xF0, 0x01, 0x02, 0x83, 0xF8, -0x31, 0x20, 0x04, 0x23, 0x05, 0x22, 0x00, 0x21, 0x41, 0x20, 0xFC, 0xF7, 0xAB, 0xF8, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x05, 0x85, 0x95, 0xF8, 0x22, 0x30, 0x2A, 0x8C, 0x02, 0x80, 0xC3, 0x70, 0x63, 0x78, 0x83, 0x70, 0xFC, 0xF7, 0xCE, 0xF8, -0x3A, 0x46, 0x31, 0x46, 0x41, 0xF2, 0x0D, 0x40, 0xFC, 0xF7, 0x00, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, 0x42, 0xF0, 0x01, 0x02, 0x83, 0xF8, 0x31, 0x20, 0xD8, 0xE7, -0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, 0x42, 0xF0, 0x04, 0x02, 0xB9, 0xE7, 0x00, 0xBF, -0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x31, 0x20, 0x0D, 0x46, 0x4B, 0x4C, 0x91, 0x46, 0x98, 0x46, 0x05, 0x22, -0x01, 0x23, 0x00, 0x21, 0xFC, 0xF7, 0x72, 0xF8, 0x00, 0x23, 0x84, 0xF8, 0x76, 0x31, 0x95, 0xF8, 0x67, 0x30, 0x82, 0x46, -0x5B, 0xB1, 0x01, 0x23, 0x84, 0xF8, 0x76, 0x31, 0x2F, 0x46, 0x0F, 0xCF, 0x04, 0xF1, 0x0C, 0x06, 0x0F, 0xC6, 0x97, 0xE8, -0x0F, 0x00, 0x86, 0xE8, 0x0F, 0x00, 0x95, 0xF8, 0x68, 0x30, 0x5B, 0xB1, 0x94, 0xF8, 0x76, 0x21, 0x3C, 0x4B, 0x42, 0xF0, -0x02, 0x02, 0x84, 0xF8, 0x76, 0x21, 0x05, 0xF1, 0x20, 0x02, 0x07, 0xCA, 0x83, 0xE8, 0x07, 0x00, 0x95, 0xF8, 0x69, 0x30, -0x93, 0xB1, 0x94, 0xF8, 0x76, 0x31, 0x36, 0x4E, 0x43, 0xF0, 0x04, 0x03, 0x84, 0xF8, 0x76, 0x31, 0x05, 0xF1, 0x2C, 0x07, -0x0F, 0xCF, 0x0F, 0xC6, 0x0F, 0xCF, 0x0F, 0xC6, 0x0F, 0xCF, 0x0F, 0xC6, 0x97, 0xE8, 0x03, 0x00, 0x86, 0xE8, 0x03, 0x00, -0x95, 0xF8, 0x6A, 0x30, 0x2B, 0xB1, 0x94, 0xF8, 0x76, 0x31, 0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x76, 0x31, 0x95, 0xF8, -0x66, 0x30, 0x84, 0xF8, 0x75, 0x31, 0x4A, 0x46, 0x41, 0x46, 0x41, 0xF2, 0x01, 0x40, 0xFC, 0xF7, 0x8F, 0xF8, 0x94, 0xF8, -0x76, 0x31, 0x13, 0xF0, 0x01, 0x03, 0x14, 0xD1, 0x84, 0xF8, 0x74, 0x31, 0x95, 0xF8, 0x6B, 0x30, 0xB5, 0xF8, 0x64, 0x10, -0x84, 0xF8, 0x77, 0x31, 0x95, 0xF8, 0x6D, 0x20, 0xA1, 0x85, 0x00, 0x2A, 0x14, 0xBF, 0x02, 0x22, 0x01, 0x22, 0x84, 0xF8, -0x78, 0x21, 0xF3, 0xB9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xDA, 0xF7, 0xE3, 0xFC, 0x94, 0xF8, 0x76, 0x31, 0x01, 0x30, -0x40, 0x10, 0x5B, 0x07, 0x84, 0xF8, 0x74, 0x01, 0xE2, 0xD5, 0x94, 0xF8, 0x75, 0x21, 0x94, 0xF8, 0x44, 0x30, 0x02, 0x2A, -0x88, 0xBF, 0x94, 0xF8, 0x49, 0x20, 0x4F, 0xEA, 0x93, 0x03, 0x88, 0xBF, 0x03, 0xEA, 0x92, 0x13, 0x03, 0xF0, 0x01, 0x03, -0x84, 0xF8, 0x74, 0x30, 0xD0, 0xE7, 0xFF, 0x23, 0x23, 0x81, 0x50, 0x46, 0x8A, 0xF8, 0x00, 0x20, 0xFC, 0xF7, 0x1A, 0xF8, -0x01, 0x21, 0x05, 0x20, 0xFC, 0xF7, 0xE0, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, -0x14, 0xB9, 0x17, 0x00, 0x20, 0xB9, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x41, 0xF2, 0x08, 0x40, 0x97, 0xB0, 0x0C, 0x46, -0x19, 0x46, 0x03, 0x23, 0xFB, 0xF7, 0xD2, 0xFF, 0x4F, 0xF0, 0x00, 0x0A, 0xCD, 0xE9, 0x0C, 0xAA, 0x05, 0x46, 0xAD, 0xF8, -0x2E, 0xA0, 0x8D, 0xF8, 0x2C, 0xA0, 0x08, 0xF0, 0xEB, 0xFB, 0x94, 0xF8, 0x81, 0x70, 0xA2, 0x6F, 0x06, 0x90, 0x4F, 0xF4, -0xA4, 0x61, 0x01, 0xFB, 0x07, 0xF1, 0x12, 0xF0, 0x02, 0x06, 0x07, 0x91, 0x1B, 0xD0, 0x12, 0xF0, 0x04, 0x06, 0x04, 0xF1, -0x14, 0x08, 0x40, 0xF0, 0xDC, 0x81, 0xB1, 0x46, 0x0B, 0xAB, 0x12, 0xF0, 0x20, 0x02, 0x0D, 0xF1, 0x34, 0x0C, 0x02, 0x93, -0x0C, 0xAB, 0xCD, 0xE9, 0x00, 0x3C, 0x18, 0xBF, 0x04, 0xF1, 0x40, 0x02, 0x0D, 0xF1, 0x2E, 0x03, 0x49, 0x46, 0x40, 0x46, -0x00, 0xF0, 0x00, 0xFE, 0x94, 0xF8, 0x81, 0x30, 0x00, 0xE0, 0x3B, 0x46, 0x00, 0x22, 0xDF, 0xF8, 0xC4, 0x93, 0x20, 0x68, -0x0C, 0x99, 0xB4, 0xF8, 0x04, 0xE0, 0xBD, 0xF8, 0x2E, 0xC0, 0x0E, 0x92, 0x8D, 0xF8, 0x55, 0x20, 0x8D, 0xF8, 0x56, 0x20, -0x9D, 0xF8, 0x2C, 0x20, 0x8D, 0xF8, 0x51, 0x30, 0xCD, 0xF8, 0x4A, 0x00, 0x10, 0x91, 0x8D, 0xF8, 0x50, 0x20, 0xD9, 0xF8, -0xC4, 0x31, 0x11, 0x96, 0xAD, 0xF8, 0x4E, 0xE0, 0xAD, 0xF8, 0x48, 0xC0, 0x0D, 0xF1, 0x2D, 0x02, 0x29, 0x46, 0x0E, 0xA8, -0x98, 0x47, 0x83, 0x46, 0x68, 0x70, 0x00, 0x28, 0x40, 0xF0, 0x1C, 0x81, 0x23, 0x46, 0x2E, 0x78, 0x53, 0xF8, 0x06, 0x0F, -0xDF, 0xF8, 0x70, 0x83, 0x59, 0x68, 0x9A, 0x68, 0x93, 0xF8, 0x0C, 0xE0, 0xD4, 0xF8, 0x78, 0xC0, 0x04, 0x96, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x06, 0xF3, 0x08, 0xEB, 0x03, 0x0A, 0x08, 0x93, 0x0A, 0xF1, 0xB8, 0x03, 0x07, 0xC3, 0x1C, 0xF0, -0x01, 0x0F, 0x83, 0xF8, 0x00, 0xE0, 0x40, 0xF0, 0x06, 0x81, 0xC7, 0x4B, 0x05, 0x93, 0x1C, 0xF0, 0x08, 0x0F, 0x08, 0xD0, -0x04, 0x9A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, 0x5A, 0x68, 0x42, 0xF0, 0x08, 0x02, 0x5A, 0x60, 0x04, 0x9A, -0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, 0x94, 0xF8, 0x7E, 0x20, 0x83, 0xF8, 0x2E, 0x21, 0x94, 0xF8, 0x7F, 0x10, -0xB4, 0xF8, 0x7C, 0x20, 0x1A, 0x84, 0x83, 0xF8, 0x2F, 0x11, 0x50, 0x46, 0x09, 0x93, 0x00, 0xF0, 0xBB, 0xFE, 0xA2, 0x6F, -0xD2, 0x06, 0x06, 0xD5, 0x94, 0xF9, 0x80, 0x20, 0x94, 0xF8, 0x80, 0x10, 0x00, 0x2A, 0x80, 0xF2, 0x77, 0x81, 0xBB, 0xF1, -0x00, 0x0F, 0x40, 0xF0, 0x7F, 0x81, 0x05, 0x9B, 0xAF, 0x48, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x34, 0x04, 0x9B, -0xB4, 0xF8, 0xE0, 0x20, 0x4F, 0xF4, 0x1E, 0x7B, 0x0B, 0xFB, 0x03, 0x86, 0xD4, 0xF8, 0xB0, 0x34, 0x96, 0xF8, 0x56, 0x11, -0xC6, 0xF8, 0x68, 0xA2, 0x03, 0xF0, 0x01, 0x03, 0xC3, 0xF1, 0x02, 0x03, 0x86, 0xF8, 0x30, 0x30, 0x41, 0xF0, 0x10, 0x01, -0xA3, 0x4B, 0x86, 0xF8, 0x56, 0x11, 0x52, 0xBA, 0x4F, 0xF0, 0x01, 0x0A, 0xC6, 0xF8, 0x64, 0x02, 0xB2, 0x86, 0x08, 0x98, -0x86, 0xF8, 0x70, 0xA2, 0x1A, 0x69, 0x9E, 0x49, 0xD9, 0xF8, 0xE0, 0x31, 0x00, 0xF5, 0x18, 0x70, 0x40, 0x44, 0x11, 0x44, -0x98, 0x47, 0x06, 0x9B, 0xAB, 0x70, 0x00, 0x2B, 0x00, 0xF0, 0x9A, 0x80, 0x94, 0xF8, 0xDE, 0x20, 0x86, 0xF8, 0x24, 0x30, -0x00, 0x2A, 0x40, 0xF0, 0x85, 0x80, 0x94, 0xF8, 0x63, 0x60, 0x0A, 0x36, 0xF6, 0xB2, 0x0B, 0xFB, 0x06, 0xF3, 0x08, 0xEB, -0x03, 0x0B, 0x04, 0x93, 0x9B, 0xF8, 0x24, 0x30, 0x53, 0x45, 0x77, 0xD0, 0x02, 0x23, 0x0C, 0x21, 0x49, 0x20, 0xFB, 0xF7, -0xDB, 0xFE, 0x8B, 0xF8, 0x24, 0xA0, 0x06, 0x70, 0x80, 0xF8, 0x01, 0xA0, 0xFB, 0xF7, 0x04, 0xFF, 0x9B, 0xF8, 0x24, 0x30, -0x00, 0x2B, 0x40, 0xF0, 0x48, 0x81, 0x9B, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0x00, 0xF2, 0x43, 0x81, 0x9B, 0xF8, 0x22, 0x00, -0x05, 0x9C, 0xCD, 0xF8, 0x18, 0xA0, 0x9E, 0x23, 0xA4, 0x21, 0x4F, 0xF4, 0xA4, 0x6C, 0x11, 0xFB, 0x00, 0x31, 0x0C, 0xFB, -0x00, 0x4A, 0x4F, 0x23, 0x46, 0x20, 0x13, 0xFB, 0x06, 0x03, 0x7B, 0x4A, 0x05, 0x98, 0x7B, 0x4C, 0x08, 0x95, 0x08, 0xEB, -0xC3, 0x08, 0x04, 0x9B, 0x00, 0xEB, 0xC1, 0x06, 0x13, 0x44, 0x35, 0x46, 0x1E, 0x46, 0xDB, 0xF8, 0x08, 0x22, 0x1A, 0xB3, -0xEF, 0xF3, 0x10, 0x82, 0xD3, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x73, 0x4B, 0x06, 0x9A, 0x1A, 0x60, 0x22, 0x68, 0xA8, 0xF1, -0x28, 0x00, 0x01, 0x32, 0xA5, 0xF1, 0x28, 0x01, 0x04, 0x90, 0x22, 0x60, 0xFC, 0xF7, 0x18, 0xFC, 0xDB, 0xE9, 0x82, 0x21, -0x04, 0x98, 0xCA, 0xF8, 0xC8, 0x24, 0xCA, 0xF8, 0xCC, 0x14, 0xFC, 0xF7, 0x19, 0xFB, 0x22, 0x68, 0x51, 0x1E, 0x2A, 0xB1, -0x66, 0x4B, 0x21, 0x60, 0x1A, 0x68, 0x09, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xDB, 0xF8, 0x30, 0x22, 0x28, 0x46, 0x41, 0x46, -0x0B, 0xF1, 0x08, 0x0B, 0x08, 0x35, 0x0A, 0xF1, 0x08, 0x0A, 0x22, 0xB1, 0xFC, 0xF7, 0xFA, 0xFB, 0x40, 0x46, 0xFC, 0xF7, -0x01, 0xFB, 0x08, 0xF1, 0x08, 0x08, 0x46, 0x45, 0xC5, 0xD1, 0x40, 0x20, 0x08, 0x9D, 0xFC, 0xF7, 0x5B, 0xFA, 0x05, 0x9A, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x23, 0x93, 0xF8, 0xDE, 0x20, 0x05, 0x9C, 0xD9, 0xF8, 0x0C, 0x32, 0x4F, 0xF4, -0xA4, 0x61, 0x01, 0xFB, 0x07, 0x47, 0x07, 0x99, 0x01, 0x32, 0x21, 0x44, 0x08, 0x46, 0x87, 0xF8, 0xDE, 0x20, 0x98, 0x47, -0x28, 0x46, 0xFB, 0xF7, 0x87, 0xFE, 0x00, 0x20, 0x17, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDA, 0xF8, 0x04, 0x30, 0x05, 0x93, -0x1C, 0xF0, 0x02, 0x0F, 0x43, 0xF0, 0x01, 0x03, 0xCA, 0xF8, 0x04, 0x30, 0x3F, 0xF4, 0xEF, 0xAE, 0x45, 0x4B, 0x93, 0xF8, -0x76, 0x31, 0x09, 0x93, 0x13, 0xF0, 0x01, 0x0B, 0x3F, 0xF4, 0xE7, 0xAE, 0x04, 0xF1, 0x14, 0x0E, 0xBE, 0xE8, 0x0F, 0x00, -0x0A, 0xF1, 0xC8, 0x0B, 0xAB, 0xE8, 0x0F, 0x00, 0x9E, 0xE8, 0x0F, 0x00, 0x05, 0x9E, 0x1C, 0xF0, 0x20, 0x0F, 0x46, 0xF0, -0x03, 0x0E, 0x8B, 0xE8, 0x0F, 0x00, 0xCA, 0xF8, 0x04, 0xE0, 0x22, 0xD0, 0x09, 0x9B, 0x58, 0x07, 0x1F, 0xD5, 0x04, 0xF1, -0x40, 0x0E, 0xBE, 0xE8, 0x0F, 0x00, 0x0A, 0xF1, 0xF4, 0x0B, 0xAB, 0xE8, 0x0F, 0x00, 0xBE, 0xE8, 0x0F, 0x00, 0xAB, 0xE8, -0x0F, 0x00, 0xBE, 0xE8, 0x0F, 0x00, 0xAB, 0xE8, 0x0F, 0x00, 0x9E, 0xE8, 0x03, 0x00, 0x46, 0xF0, 0x23, 0x03, 0xCA, 0xF8, -0x04, 0x30, 0x09, 0x9B, 0x8B, 0xE8, 0x03, 0x00, 0x19, 0x07, 0x04, 0xD5, 0x50, 0x46, 0xEC, 0xF7, 0x85, 0xFF, 0xD4, 0xF8, -0x78, 0xC0, 0x1C, 0xF0, 0x04, 0x0F, 0x1F, 0xD0, 0x24, 0x4B, 0x04, 0x9A, 0x93, 0xF8, 0x76, 0x31, 0x13, 0xF0, 0x02, 0x0F, -0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, 0xD3, 0xF8, 0x04, 0xC0, 0x02, 0xD1, 0x1C, 0xF0, 0x20, 0x0F, 0x0F, 0xD0, -0x04, 0xF1, 0x34, 0x03, 0x93, 0xE8, 0x07, 0x00, 0x04, 0x9E, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0x83, 0x03, 0xF1, -0xE8, 0x0E, 0x8E, 0xE8, 0x07, 0x00, 0x4C, 0xF0, 0x04, 0x02, 0x5A, 0x60, 0x07, 0x9A, 0x0D, 0x4B, 0x05, 0x93, 0x02, 0xF1, -0xEC, 0x01, 0x19, 0x44, 0x50, 0x46, 0x00, 0xF0, 0x53, 0xFB, 0xD4, 0xF8, 0x78, 0xC0, 0x83, 0x46, 0x81, 0xE6, 0x07, 0x4B, -0x05, 0x93, 0x0B, 0x44, 0x04, 0xF1, 0x34, 0x09, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x43, 0xD0, 0x03, 0x2B, 0x2F, 0xD0, -0xA3, 0xB3, 0x56, 0x46, 0x16, 0xE6, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x1D, 0x66, 0x12, 0x00, 0x00, 0x10, 0x50, 0x40, -0x40, 0x4B, 0x4C, 0x00, 0xC0, 0x67, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x09, 0x9B, 0x0A, 0x09, 0x93, 0xF8, 0x23, 0x00, 0x01, 0xF0, 0x03, 0x01, -0x01, 0xF0, 0x34, 0xF8, 0xBB, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x81, 0xAE, 0x04, 0x9A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x02, 0x83, 0xFF, 0x21, 0x93, 0xF8, 0x23, 0x00, 0x00, 0x22, 0x01, 0xF0, 0x25, 0xF8, 0x74, 0xE6, 0x20, 0x46, 0xFC, 0xF7, -0x61, 0xFF, 0xA2, 0x6F, 0x06, 0x46, 0xE3, 0xE5, 0x09, 0x4B, 0x01, 0xF5, 0xB2, 0x70, 0x03, 0x44, 0xB4, 0xF8, 0x7C, 0x10, -0x18, 0x46, 0xFC, 0xF7, 0x5D, 0xFF, 0xA2, 0x6F, 0x06, 0x46, 0xD7, 0xE5, 0x07, 0x9B, 0x03, 0xF1, 0x5C, 0x00, 0x05, 0x9B, -0xF1, 0xE7, 0x94, 0xF8, 0xDE, 0x20, 0x1B, 0xE7, 0x18, 0x88, 0x17, 0x00, 0xF0, 0xB5, 0x0C, 0x46, 0x21, 0x4D, 0x09, 0x78, -0x6F, 0x68, 0x1E, 0x46, 0x63, 0x78, 0x01, 0x20, 0x83, 0xB0, 0x98, 0x40, 0xC1, 0xB1, 0x38, 0x43, 0x95, 0xF8, 0x77, 0x31, -0x68, 0x60, 0x5B, 0xB1, 0x05, 0x20, 0x01, 0x92, 0xFC, 0xF7, 0x10, 0xF8, 0x01, 0x28, 0x2C, 0xD0, 0x17, 0xF0, 0xFF, 0x0F, -0x23, 0x78, 0x01, 0x9A, 0x0B, 0xD0, 0x63, 0xB1, 0x41, 0xF2, 0x1A, 0x40, 0x31, 0x46, 0xFB, 0xF7, 0xC9, 0xFD, 0x00, 0x20, -0x03, 0xB0, 0xF0, 0xBD, 0x27, 0xEA, 0x00, 0x00, 0xE4, 0xE7, 0x00, 0x2B, 0xF2, 0xD0, 0x01, 0x23, 0x00, 0x21, 0x31, 0x20, -0x01, 0x92, 0xFB, 0xF7, 0x53, 0xFD, 0x6B, 0x68, 0x01, 0x9A, 0x2E, 0x81, 0x63, 0xB1, 0x00, 0x23, 0x03, 0x70, 0x01, 0x92, -0xFB, 0xF7, 0x7A, 0xFD, 0x01, 0x9A, 0x01, 0x21, 0x10, 0x46, 0xFB, 0xF7, 0x3F, 0xFF, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, -0x95, 0xF8, 0x78, 0x31, 0xF0, 0xE7, 0x02, 0x20, 0xDC, 0xE7, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, 0x11, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x14, 0x46, 0x0E, 0xDB, 0x0E, 0x4B, 0x19, 0x89, 0xFF, 0x29, 0x04, 0xD0, -0x22, 0x46, 0x41, 0xF2, 0x18, 0x40, 0xFB, 0xF7, 0x91, 0xFD, 0x20, 0x46, 0x00, 0x21, 0xFB, 0xF7, 0x1F, 0xFF, 0x00, 0x20, -0x10, 0xBD, 0x10, 0x46, 0xFB, 0xF7, 0xC2, 0xFF, 0x01, 0x28, 0xEB, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x7F, 0x22, -0xFD, 0xF7, 0xFA, 0xFD, 0xE4, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x3C, 0xB8, 0x15, 0x00, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x14, 0x46, 0x0E, 0xDB, -0x0E, 0x4B, 0x19, 0x89, 0xFF, 0x29, 0x04, 0xD0, 0x22, 0x46, 0x41, 0xF2, 0x1A, 0x40, 0xFB, 0xF7, 0x65, 0xFD, 0x20, 0x46, -0x00, 0x21, 0xFB, 0xF7, 0xF3, 0xFE, 0x00, 0x20, 0x10, 0xBD, 0x10, 0x46, 0xFB, 0xF7, 0x96, 0xFF, 0x01, 0x28, 0xEB, 0xD0, -0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x15, 0x32, 0xFD, 0xF7, 0xCE, 0xFD, 0xE4, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0xE4, 0xB8, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0xB8, 0x15, 0x00, 0x70, 0xB5, 0x0C, 0x46, 0x41, 0xF2, 0x0F, 0x40, -0x19, 0x46, 0xC8, 0x23, 0xFB, 0xF7, 0xDA, 0xFC, 0x22, 0x78, 0x37, 0x49, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x13, -0x06, 0x46, 0xD3, 0xF8, 0x4C, 0x51, 0x02, 0x70, 0x00, 0x2D, 0x5C, 0xD0, 0xB5, 0xF8, 0xB4, 0x00, 0xB5, 0xF8, 0x90, 0x10, -0xB5, 0xF8, 0x92, 0x20, 0xD5, 0xF8, 0x94, 0x30, 0xB3, 0x60, 0x70, 0x80, 0xB1, 0x80, 0xF2, 0x80, 0x95, 0xF8, 0xA4, 0x30, -0x33, 0x73, 0xB5, 0xF8, 0x98, 0x30, 0x73, 0x73, 0x08, 0x22, 0x05, 0xF1, 0x88, 0x01, 0x06, 0xF1, 0x0E, 0x00, 0x10, 0xF0, -0x3D, 0xF8, 0x78, 0x22, 0x29, 0x1D, 0x06, 0xF1, 0x16, 0x00, 0x10, 0xF0, 0x37, 0xF8, 0xB5, 0xF8, 0xB4, 0x30, 0x83, 0xB1, -0x00, 0x24, 0x00, 0x22, 0xE1, 0xB2, 0x28, 0x46, 0x0C, 0xF0, 0x2C, 0xFE, 0xA3, 0xB2, 0x06, 0xEB, 0x83, 0x03, 0xB5, 0xF8, -0xB4, 0x20, 0xC3, 0xF8, 0x9C, 0x00, 0x01, 0x34, 0xA3, 0xB2, 0x9A, 0x42, 0xEF, 0xD8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x16, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x05, 0xF1, 0x7C, 0x03, 0x07, 0xCB, 0x14, 0x4C, 0xC6, 0xF8, -0x8E, 0x00, 0x23, 0x68, 0xC6, 0xF8, 0x92, 0x10, 0x01, 0x33, 0xC6, 0xF8, 0x96, 0x20, 0x28, 0x46, 0x00, 0x22, 0x0A, 0x21, -0x23, 0x60, 0x0C, 0xF0, 0x07, 0xFE, 0x23, 0x68, 0xC6, 0xF8, 0xC4, 0x00, 0x33, 0xB1, 0x0A, 0x4A, 0x01, 0x3B, 0x12, 0x68, -0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x30, 0x46, 0xFB, 0xF7, 0xA3, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x45, 0x80, -0x30, 0x46, 0xFB, 0xF7, 0x9D, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, -0x6C, 0x28, 0x17, 0x00, 0x70, 0xB5, 0x23, 0x4A, 0x0B, 0x78, 0x12, 0x68, 0x0C, 0x46, 0x22, 0x49, 0xB2, 0xF9, 0x00, 0x20, -0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x51, 0x22, 0xDB, 0x66, 0x88, 0x4F, 0xF6, -0xFF, 0x73, 0x9E, 0x42, 0x0B, 0xD1, 0x95, 0xF8, 0xA2, 0x30, 0xA5, 0xF8, 0xBA, 0x60, 0x03, 0xF0, 0xCF, 0x03, 0x85, 0xF8, -0xA2, 0x30, 0x1B, 0x06, 0x1C, 0xD4, 0x00, 0x20, 0x70, 0xBD, 0x31, 0x46, 0x28, 0x46, 0x0C, 0xF0, 0x65, 0xFD, 0x00, 0x28, -0xF7, 0xD0, 0x95, 0xF8, 0xA2, 0x30, 0xA5, 0xF8, 0xBA, 0x60, 0x23, 0xF0, 0x30, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x85, 0xF8, -0xA2, 0x30, 0x00, 0x20, 0x70, 0xBD, 0x00, 0x2D, 0xDA, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF2, 0xAF, 0x32, 0xFD, 0xF7, -0x0B, 0xFD, 0xD3, 0xE7, 0x20, 0x78, 0x0C, 0xF0, 0xC9, 0xFB, 0x95, 0xF8, 0xA2, 0x30, 0x03, 0xF0, 0x7F, 0x03, 0x85, 0xF8, -0xA2, 0x30, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x68, 0x8E, 0x15, 0x00, 0xF8, 0xB5, 0x05, 0x20, 0x0E, 0x46, 0x15, 0x46, 0x1C, 0x46, 0xFB, 0xF7, 0xAF, 0xFE, 0x01, 0x28, -0x4F, 0xD0, 0x2A, 0x46, 0x0C, 0x23, 0x21, 0x46, 0x41, 0xF2, 0x12, 0x40, 0xFB, 0xF7, 0x04, 0xFC, 0x37, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x2A, 0xDB, 0x35, 0x4B, 0x1C, 0x7C, 0xDA, 0xF7, 0x7F, 0xF8, 0x00, 0x28, -0x30, 0xD1, 0xF3, 0x7A, 0x53, 0xB1, 0x32, 0x4B, 0x32, 0x49, 0x9A, 0x68, 0xD1, 0xF8, 0x2C, 0x12, 0x11, 0x66, 0xA3, 0xF5, -0x40, 0x63, 0x4F, 0xF4, 0x80, 0x72, 0x1A, 0x60, 0x2E, 0x4F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x77, 0x3C, 0x6C, -0x4C, 0xB3, 0x23, 0x7E, 0x2B, 0x70, 0xB3, 0x7A, 0xE3, 0xB9, 0x23, 0x1D, 0x03, 0xCB, 0x1B, 0x88, 0x6B, 0x81, 0xC5, 0xF8, -0x02, 0x00, 0xC5, 0xF8, 0x06, 0x10, 0x28, 0x46, 0xFB, 0xF7, 0x04, 0xFC, 0x00, 0x20, 0xF8, 0xBD, 0x1F, 0x4F, 0x3C, 0x7C, -0xFF, 0x2C, 0xD2, 0xD1, 0x21, 0x49, 0x22, 0x48, 0x40, 0xF2, 0xEB, 0x32, 0xFD, 0xF7, 0xAA, 0xFC, 0x3C, 0x7C, 0xCA, 0xE7, -0xF0, 0x7A, 0xDA, 0xF7, 0x53, 0xF8, 0xCA, 0xE7, 0x1D, 0x48, 0xFC, 0xF7, 0xD1, 0xF8, 0x01, 0x28, 0x0A, 0xD0, 0x3C, 0x6C, -0xDB, 0xE7, 0x02, 0x20, 0xF8, 0xBD, 0xFF, 0x23, 0x28, 0x46, 0x2B, 0x70, 0xFB, 0xF7, 0xE4, 0xFB, 0x20, 0x46, 0xF8, 0xBD, -0x05, 0x22, 0x0C, 0x23, 0x00, 0x21, 0x3B, 0x20, 0xFB, 0xF7, 0xAC, 0xFB, 0x39, 0x6C, 0x03, 0x46, 0x09, 0x7E, 0x03, 0xF8, -0x02, 0x1B, 0x31, 0x89, 0x37, 0x68, 0x74, 0x68, 0xC0, 0xF8, 0x02, 0x70, 0x19, 0x81, 0x5C, 0x60, 0xFB, 0xF7, 0xCE, 0xFB, -0x31, 0x68, 0x72, 0x68, 0x33, 0x89, 0x6B, 0x81, 0xC5, 0xF8, 0x02, 0x10, 0xC5, 0xF8, 0x06, 0x20, 0xBD, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x60, 0xB8, 0x15, 0x00, 0x08, 0x88, 0x17, 0x00, 0xF8, 0xB5, 0x05, 0x20, 0x0C, 0x46, 0x15, 0x46, -0x1E, 0x46, 0xFB, 0xF7, 0x1F, 0xFE, 0x01, 0x28, 0x3C, 0xD0, 0x1F, 0x4F, 0x3B, 0x68, 0x73, 0xB1, 0x22, 0x78, 0xB2, 0xB1, -0x61, 0x78, 0x01, 0x22, 0x8A, 0x40, 0x13, 0x43, 0x31, 0x46, 0x2A, 0x46, 0x41, 0xF2, 0x18, 0x40, 0x3B, 0x60, 0xFB, 0xF7, -0xD3, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x23, 0x78, 0x3B, 0xB9, 0x2A, 0x46, 0x31, 0x46, 0x41, 0xF2, 0x18, 0x40, 0xFB, 0xF7, -0xC9, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x01, 0x23, 0x00, 0x21, 0x2A, 0x46, 0x22, 0x20, 0xFB, 0xF7, 0x59, 0xFB, 0x23, 0x78, -0x61, 0x78, 0x8B, 0xB1, 0x3A, 0x68, 0x01, 0x23, 0x8B, 0x40, 0x13, 0x43, 0xB3, 0xFA, 0x83, 0xF2, 0x52, 0x09, 0x3B, 0x60, -0x3E, 0x81, 0x02, 0x70, 0xFB, 0xF7, 0x7A, 0xFB, 0x28, 0x46, 0x01, 0x21, 0xFB, 0xF7, 0x40, 0xFD, 0x00, 0x20, 0xF8, 0xBD, -0x3B, 0x68, 0x01, 0x22, 0x8A, 0x40, 0x23, 0xEA, 0x02, 0x03, 0xEB, 0xE7, 0x02, 0x20, 0xF8, 0xBD, 0xE4, 0xB8, 0x17, 0x00, -0xF8, 0xB5, 0x05, 0x20, 0x0D, 0x46, 0x17, 0x46, 0x1E, 0x46, 0xFB, 0xF7, 0xD5, 0xFD, 0x01, 0x28, 0x24, 0xD0, 0x13, 0x4C, -0x2B, 0x78, 0x61, 0x68, 0x00, 0x3B, 0x18, 0xBF, 0x01, 0x23, 0x84, 0xF8, 0x77, 0x31, 0x81, 0xB9, 0x01, 0x23, 0x05, 0x22, -0x31, 0x20, 0xFB, 0xF7, 0x23, 0xFB, 0x94, 0xF8, 0x77, 0x31, 0xFF, 0x22, 0x22, 0x81, 0x73, 0xB9, 0x03, 0x70, 0xFB, 0xF7, -0x4B, 0xFB, 0x01, 0x21, 0x05, 0x20, 0xFB, 0xF7, 0x11, 0xFD, 0x3A, 0x46, 0x31, 0x46, 0x41, 0xF2, 0x14, 0x40, 0xFB, 0xF7, -0x79, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x94, 0xF8, 0x78, 0x31, 0xED, 0xE7, 0x02, 0x20, 0xF8, 0xBD, 0xE4, 0xB8, 0x17, 0x00, -0x08, 0xB5, 0x4F, 0xF4, 0xBE, 0x72, 0x00, 0x21, 0x09, 0x48, 0xD8, 0xF7, 0xFB, 0xFE, 0x00, 0x21, 0x05, 0x20, 0xFB, 0xF7, -0xF7, 0xFC, 0x04, 0xF0, 0xFB, 0xFF, 0x04, 0xF0, 0x7D, 0xFA, 0x02, 0xF0, 0x25, 0xF9, 0x09, 0xF0, 0x41, 0xF9, 0xBD, 0xE8, -0x08, 0x40, 0x0E, 0xF0, 0xD5, 0xB8, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, 0xA8, 0xB9, 0x10, 0x4B, 0x93, 0xF8, 0x72, 0x01, -0x76, 0x33, 0xC8, 0xB1, 0x00, 0xEB, 0x40, 0x00, 0x10, 0xB4, 0x03, 0xEB, 0x40, 0x04, 0x01, 0xE0, 0xA3, 0x42, 0x0D, 0xD0, -0x1A, 0x88, 0x8A, 0x42, 0x18, 0x46, 0x03, 0xF1, 0x06, 0x03, 0xF7, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x05, 0x4B, -0x93, 0xF8, 0x73, 0x01, 0xCA, 0x33, 0xE8, 0xE7, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x70, 0x47, 0x00, 0xBF, -0xE4, 0xB8, 0x17, 0x00, 0xF0, 0xB9, 0x4B, 0x1E, 0x0D, 0x2B, 0x31, 0xD8, 0x0E, 0x29, 0x32, 0xD0, 0x01, 0xEB, 0x81, 0x01, -0x01, 0xF6, 0x67, 0x11, 0x19, 0x4B, 0x93, 0xF8, 0x72, 0x01, 0x76, 0x33, 0x60, 0xB3, 0x00, 0xEB, 0x40, 0x00, 0x10, 0xB4, -0x03, 0xEB, 0x40, 0x04, 0x01, 0xE0, 0xA3, 0x42, 0x1A, 0xD0, 0x1A, 0x88, 0x8A, 0x42, 0x18, 0x46, 0x03, 0xF1, 0x06, 0x03, -0xF7, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x01, 0x28, 0x06, 0xD0, 0x4F, 0xF6, 0xFF, 0x71, 0x0C, 0x4B, 0x93, 0xF8, -0x73, 0x01, 0xCA, 0x33, 0xE4, 0xE7, 0x4B, 0x1E, 0xA4, 0x2B, 0xF5, 0xD8, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF5, 0x9C, 0x51, -0x08, 0x31, 0xF1, 0xE7, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x4F, 0xF6, 0xFF, 0x71, 0xD0, 0xE7, 0x40, 0xF6, -0xB4, 0x11, 0xCD, 0xE7, 0x70, 0x47, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, 0xF0, 0xB4, 0x03, 0x46, 0x42, 0x48, 0x5C, 0x68, -0x90, 0xF8, 0x75, 0x21, 0xA5, 0x06, 0x2E, 0xD5, 0x93, 0xF8, 0xFA, 0x70, 0x93, 0xF8, 0xFC, 0x50, 0x93, 0xF8, 0x01, 0x61, -0x7C, 0x10, 0xFF, 0x06, 0x4F, 0xEA, 0xD5, 0x05, 0x55, 0xD5, 0x04, 0x24, 0x05, 0xEA, 0xD6, 0x16, 0x90, 0xF8, 0x74, 0x50, -0xB3, 0xF8, 0xC8, 0x00, 0xB5, 0x42, 0x28, 0xBF, 0x35, 0x46, 0x94, 0x42, 0x28, 0xBF, 0x14, 0x46, 0x83, 0xF8, 0x2C, 0x41, -0x91, 0xF8, 0xD9, 0x20, 0x04, 0x2A, 0x46, 0xD0, 0xA2, 0x42, 0x28, 0xBF, 0x22, 0x46, 0x04, 0x2A, 0x43, 0xD0, 0xD2, 0xB2, -0x00, 0xF0, 0x0C, 0x00, 0x0C, 0x38, 0x83, 0xF8, 0x2D, 0x21, 0x83, 0xF8, 0x30, 0x51, 0x18, 0xBF, 0x01, 0x20, 0xF0, 0xBC, -0x70, 0x47, 0x90, 0xF8, 0x74, 0x51, 0x60, 0x07, 0x13, 0xD5, 0xD3, 0xF8, 0xE8, 0x00, 0x00, 0xF0, 0x0C, 0x04, 0x04, 0x2C, -0x44, 0xD0, 0x08, 0x2C, 0x0C, 0xBF, 0x04, 0x24, 0x02, 0x24, 0xC0, 0xF3, 0x02, 0x20, 0x04, 0x28, 0x27, 0xD8, 0x85, 0x42, -0x28, 0xBF, 0x05, 0x46, 0xB3, 0xF8, 0xC8, 0x00, 0xCD, 0xE7, 0xB3, 0xF8, 0xC8, 0x00, 0x10, 0xF0, 0x02, 0x04, 0xC0, 0xF3, -0x01, 0x26, 0x28, 0xD0, 0x01, 0x2A, 0x28, 0xBF, 0x01, 0x22, 0x83, 0xF8, 0x2C, 0x21, 0x14, 0x46, 0x91, 0xF8, 0xD9, 0x20, -0xB5, 0x42, 0x28, 0xBF, 0x35, 0x46, 0x04, 0x2A, 0xC2, 0xD1, 0x02, 0x2C, 0x22, 0x46, 0x28, 0xBF, 0x02, 0x22, 0xD2, 0xB2, -0xC2, 0xE7, 0x67, 0x07, 0x09, 0xD5, 0x03, 0x24, 0xA6, 0xE7, 0x04, 0x2C, 0xF3, 0xD1, 0x03, 0x22, 0xBA, 0xE7, 0xB3, 0xF8, -0xC8, 0x00, 0x00, 0x25, 0xA7, 0xE7, 0xA6, 0x07, 0x47, 0xBF, 0x05, 0xF0, 0x01, 0x06, 0x02, 0x24, 0x04, 0xF0, 0x01, 0x04, -0x05, 0xF0, 0x01, 0x06, 0x96, 0xE7, 0xB5, 0x42, 0x83, 0xF8, 0x2C, 0x41, 0x28, 0xBF, 0x35, 0x46, 0x22, 0x46, 0xA5, 0xE7, -0x03, 0x24, 0xBC, 0xE7, 0xE4, 0xB8, 0x17, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x01, 0x28, 0x04, 0xD0, 0x02, 0x28, 0x14, 0xBF, -0x07, 0x20, 0x09, 0x20, 0x70, 0x47, 0x08, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x00, 0xF0, 0x03, 0x00, 0x01, 0x28, 0x04, 0xD0, -0x02, 0x28, 0x14, 0xBF, 0x07, 0x20, 0x0B, 0x20, 0x70, 0x47, 0x09, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x10, 0xB4, 0x0E, 0x22, -0x04, 0x46, 0x07, 0x20, 0x44, 0xFA, 0x02, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, -0x02, 0x02, 0x02, 0xD1, 0x11, 0xF0, 0xFF, 0x00, 0xF2, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0xC3, 0x78, 0x33, 0xB9, -0x83, 0x78, 0x33, 0xB9, 0x40, 0x78, 0x00, 0x28, 0x18, 0xBF, 0x01, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, 0x02, 0x20, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x23, 0x40, 0xFA, 0x03, 0xF2, 0x12, 0xF0, 0x01, 0x0F, 0xD9, 0xB2, 0x03, 0xF1, 0x01, 0x03, -0x02, 0xD1, 0x0C, 0x2B, 0xF5, 0xD1, 0x19, 0x46, 0x08, 0x46, 0x70, 0x47, 0x68, 0xB1, 0x00, 0x23, 0xC3, 0xF1, 0x0B, 0x02, -0x40, 0xFA, 0x02, 0xF2, 0xD2, 0x07, 0xD9, 0xB2, 0x03, 0xF1, 0x01, 0x03, 0x05, 0xD4, 0x0C, 0x2B, 0xF4, 0xD1, 0xFF, 0x20, -0x70, 0x47, 0x0C, 0x20, 0x70, 0x47, 0xC1, 0xF1, 0x0B, 0x01, 0xC8, 0xB2, 0x70, 0x47, 0x00, 0xBF, 0xF0, 0xB5, 0xDD, 0xE9, -0x05, 0x56, 0x00, 0x24, 0x1C, 0x80, 0x2C, 0x60, 0x34, 0x60, 0x50, 0xB3, 0x84, 0x78, 0xC4, 0xF3, 0x82, 0x0C, 0xBC, 0xF1, -0x02, 0x0F, 0x04, 0xF0, 0x03, 0x04, 0x23, 0xDC, 0x4F, 0xF0, 0x01, 0x0C, 0x04, 0xF1, 0x0D, 0x00, 0x4F, 0xF0, 0x01, 0x0E, -0x0E, 0xFA, 0x00, 0xF0, 0x07, 0x9F, 0x01, 0x38, 0x80, 0xB2, 0x87, 0xF8, 0x00, 0xC0, 0x18, 0x80, 0xF9, 0xB1, 0x09, 0x68, -0xC1, 0xF3, 0xC2, 0x51, 0x01, 0xF1, 0x0D, 0x03, 0x0E, 0xFA, 0x03, 0xF3, 0x01, 0x3B, 0x2B, 0x60, 0x4A, 0xB1, 0x07, 0x29, -0x11, 0xD1, 0xD3, 0x78, 0xC3, 0xF3, 0xC1, 0x03, 0x14, 0x33, 0x0E, 0xFA, 0x03, 0xF7, 0x01, 0x3F, 0x37, 0x60, 0xF0, 0xBD, -0xAC, 0xF1, 0x03, 0x00, 0x4F, 0xF0, 0x01, 0x0C, 0x0C, 0xFA, 0x00, 0xFC, 0x5F, 0xFA, 0x8C, 0xFC, 0xD4, 0xE7, 0x33, 0x60, -0xF0, 0xBD, 0x00, 0x2A, 0xF1, 0xD0, 0x03, 0x2C, 0x01, 0xD0, 0x30, 0x60, 0xF0, 0xBD, 0xD3, 0x78, 0xC3, 0xF3, 0xC1, 0x03, -0x10, 0x33, 0x0E, 0xFA, 0x03, 0xF7, 0x01, 0x3F, 0x37, 0x60, 0xF0, 0xBD, 0x00, 0xF0, 0x7F, 0x03, 0x48, 0x2B, 0x31, 0xD8, -0x10, 0xF0, 0x7E, 0x0F, 0x2C, 0xD0, 0x02, 0x3B, 0x46, 0x2B, 0x29, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x26, 0x28, 0x24, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x35, 0x37, 0x28, 0x28, 0x28, 0x28, 0x28, 0x39, 0x28, 0x28, 0x28, 0x3B, 0x28, 0x3D, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x3F, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x41, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x33, 0x00, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0xFF, 0x20, 0x70, 0x47, -0x60, 0x2B, 0x04, 0xD0, 0x6C, 0x2B, 0x14, 0xBF, 0xFF, 0x20, 0x0B, 0x20, 0x70, 0x47, 0x0A, 0x20, 0x70, 0x47, 0x09, 0x20, -0x70, 0x47, 0x02, 0x20, 0x70, 0x47, 0x04, 0x20, 0x70, 0x47, 0x05, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, 0x06, 0x20, -0x70, 0x47, 0x07, 0x20, 0x70, 0x47, 0x08, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x4F, 0x90, 0xF8, 0x00, 0xB0, -0xBB, 0xF1, 0x00, 0x0F, 0x34, 0xD0, 0xDF, 0xF8, 0x70, 0x80, 0xDF, 0xF8, 0x70, 0xA0, 0xDF, 0xF8, 0x70, 0x90, 0x05, 0x46, -0x0E, 0x46, 0x04, 0x46, 0x00, 0x27, 0x9E, 0xB9, 0x60, 0x78, 0xFF, 0xF7, 0x9B, 0xFF, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x4F, 0xF0, 0x01, 0x03, 0x0E, 0xDB, 0x0B, 0x28, 0x0E, 0xDD, 0x01, 0x34, 0x63, 0x1B, 0x5B, 0x45, -0xED, 0xDB, 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, 0x94, 0xF9, 0x01, 0x30, 0x60, 0x78, 0x00, 0x2B, 0xE7, 0xDB, 0xF2, 0xE7, -0x0B, 0x28, 0x04, 0xDC, 0x03, 0xFA, 0x00, 0xF0, 0x07, 0x43, 0xBF, 0xB2, 0xEB, 0xE7, 0x4F, 0xF4, 0x15, 0x72, 0x51, 0x46, -0x48, 0x46, 0xFD, 0xF7, 0xC5, 0xF9, 0x95, 0xF8, 0x00, 0xB0, 0xE2, 0xE7, 0x5F, 0x46, 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x94, 0xB8, 0x15, 0x00, 0xF0, 0xB4, 0x00, 0x24, 0x4F, 0xF6, 0xFF, 0x77, -0x03, 0x26, 0x40, 0xFA, 0x04, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x06, 0xFA, 0x04, 0xF2, 0x41, 0xFA, 0x04, 0xF5, 0x03, 0x2B, -0x27, 0xEA, 0x02, 0x02, 0x05, 0xF0, 0x03, 0x05, 0x0A, 0xD0, 0x03, 0x2D, 0x08, 0xD0, 0xAB, 0x42, 0x28, 0xBF, 0x2B, 0x46, -0xA3, 0x40, 0x02, 0x34, 0x1A, 0x43, 0x10, 0x2C, 0x97, 0xB2, 0xE6, 0xD1, 0x38, 0x46, 0xF0, 0xBC, 0x70, 0x47, 0x00, 0xBF, -0x08, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x41, 0xF2, 0x21, 0x42, 0xD0, 0xF8, 0x90, 0x31, 0x98, 0x78, -0x41, 0xF2, 0x21, 0x53, 0x01, 0x28, 0x14, 0xBF, 0x10, 0x46, 0x18, 0x46, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0xD0, 0xF8, 0xDC, 0x30, 0xC3, 0xF3, 0x05, 0x60, 0x5B, 0x00, 0x54, 0xBF, 0x40, 0xF4, 0x80, 0x70, 0x40, 0xF4, 0x40, 0x70, -0x70, 0x47, 0x00, 0xBF, 0x10, 0xB5, 0x04, 0x46, 0x0C, 0xF0, 0x86, 0xFB, 0x03, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x5C, 0x31, -0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x90, 0xF8, 0xB8, 0x00, 0x18, 0xDB, 0x68, 0xB1, 0x05, 0xF1, 0xB8, 0x03, 0x1C, 0x18, -0x00, 0x20, 0x13, 0xF8, 0x01, 0x2F, 0x22, 0xF0, 0x80, 0x01, 0x81, 0x42, 0xC8, 0xBF, 0x02, 0xF0, 0x7F, 0x00, 0xA3, 0x42, -0xF5, 0xD1, 0xFF, 0xF7, 0xFF, 0xFE, 0x01, 0x46, 0x28, 0x46, 0x0C, 0xF0, 0x5F, 0xF9, 0x00, 0x23, 0x85, 0xF8, 0x56, 0x31, -0x38, 0xBD, 0x00, 0x28, 0xE5, 0xD1, 0x05, 0x48, 0x05, 0x49, 0x40, 0xF2, 0xC1, 0x22, 0xFD, 0xF7, 0x25, 0xF9, 0x95, 0xF8, -0xB8, 0x00, 0xDB, 0xE7, 0x38, 0x36, 0x17, 0x00, 0xB0, 0xB8, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x90, 0xF8, 0x56, 0x31, 0xD0, 0xF8, 0x48, 0x71, 0x99, 0xB0, 0x00, 0x2B, 0x00, 0xF0, 0xDB, 0x80, 0xFA, 0x6B, 0x09, 0x92, -0x7A, 0x68, 0x05, 0x92, 0x07, 0xF1, 0x14, 0x04, 0xBA, 0x68, 0x07, 0x92, 0x10, 0xAE, 0x0D, 0xF1, 0x50, 0x08, 0x05, 0x46, -0x22, 0x46, 0xB4, 0x46, 0x40, 0x46, 0x07, 0xF1, 0x24, 0x0B, 0x52, 0xF8, 0x04, 0x1B, 0x4C, 0xF8, 0x04, 0x1B, 0x5A, 0x45, -0xD1, 0x68, 0x40, 0xF8, 0x04, 0x1B, 0xF6, 0xD1, 0x13, 0xF0, 0x01, 0x02, 0x06, 0x92, 0x40, 0xF0, 0xC0, 0x80, 0x09, 0x9A, -0xC2, 0xF3, 0xC0, 0x02, 0x06, 0x92, 0x9A, 0x06, 0x00, 0xF1, 0x16, 0x81, 0x98, 0x07, 0x1A, 0xD5, 0xDF, 0xF8, 0x64, 0x93, -0x06, 0xF1, 0x10, 0x0E, 0x31, 0x46, 0x51, 0xF8, 0x04, 0x2B, 0xC2, 0xF3, 0xC2, 0x2A, 0x02, 0xF0, 0x7C, 0x00, 0x5A, 0xEA, -0x00, 0x00, 0xC2, 0xF3, 0xC1, 0x1C, 0x02, 0xEA, 0x09, 0x02, 0x06, 0xD0, 0xD5, 0xF8, 0x50, 0x01, 0x02, 0x43, 0x42, 0xEA, -0x0C, 0x62, 0x41, 0xF8, 0x04, 0x2C, 0x8E, 0x45, 0xE9, 0xD1, 0xD9, 0x06, 0x5C, 0xD5, 0x95, 0xF8, 0x22, 0x10, 0xC3, 0x4A, -0xC3, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x01, 0x20, 0xD3, 0xF8, 0x38, 0x33, 0x0D, 0xF1, 0x3F, 0x02, 0x0D, 0xF1, -0x3E, 0x01, 0x98, 0x47, 0x06, 0xF1, 0x10, 0x03, 0x06, 0x94, 0x08, 0x95, 0x0D, 0xF1, 0x50, 0x09, 0x1C, 0x46, 0x35, 0x46, -0xBA, 0x4B, 0x59, 0xF8, 0x04, 0xAB, 0x55, 0xF8, 0x04, 0x1B, 0x93, 0xF8, 0xBD, 0x30, 0x4F, 0xEA, 0x1A, 0x4A, 0xC1, 0xF3, -0xC7, 0x22, 0xC1, 0xF3, 0xC2, 0x20, 0x5F, 0xFA, 0x81, 0xFC, 0x4F, 0xEA, 0x0A, 0x4A, 0x01, 0xF0, 0x7F, 0x01, 0xD3, 0xB9, -0x0C, 0xF0, 0x7C, 0x0C, 0x50, 0xEA, 0x0C, 0x03, 0x00, 0xF0, 0x29, 0x81, 0xAD, 0x4B, 0x93, 0xF8, 0xBA, 0x30, 0x00, 0x2B, -0x00, 0xF0, 0xF3, 0x80, 0xAB, 0x4B, 0x93, 0xF8, 0x2A, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xED, 0x80, 0x00, 0x28, 0x40, 0xF0, -0x2F, 0x81, 0x09, 0x29, 0x00, 0xF2, 0x2C, 0x81, 0x02, 0xF0, 0x06, 0x02, 0x2D, 0xE1, 0xD9, 0xF7, 0x47, 0xFE, 0xA4, 0x4B, -0x1A, 0x7D, 0x00, 0x2A, 0x00, 0xF0, 0x06, 0x81, 0x5A, 0x7D, 0x00, 0x2A, 0x00, 0xF0, 0x02, 0x81, 0x4A, 0xEA, 0x00, 0x20, -0x40, 0xF0, 0xA8, 0x00, 0x49, 0xF8, 0x04, 0x0C, 0xAC, 0x42, 0xBD, 0xD1, 0x08, 0x9D, 0x06, 0x9C, 0x95, 0xF8, 0x56, 0x31, -0x5A, 0x06, 0x13, 0xD5, 0x94, 0x4A, 0x95, 0xF8, 0x22, 0x30, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x07, 0x9A, -0xD3, 0xF8, 0xC8, 0x31, 0x22, 0xF0, 0x7C, 0x72, 0x00, 0x2B, 0x07, 0x92, 0x04, 0xDB, 0xC3, 0xF3, 0x05, 0x63, 0x42, 0xEA, -0x03, 0x53, 0x07, 0x93, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x8D, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0x8C, 0x4A, 0x05, 0x9B, 0x11, 0x68, 0x7B, 0x60, 0x48, 0x1C, 0x07, 0x9B, 0xBB, 0x60, 0x10, 0x60, 0x56, 0xF8, 0x04, 0x3B, -0x44, 0xF8, 0x04, 0x3B, 0x58, 0xF8, 0x04, 0x3B, 0xE3, 0x60, 0xA3, 0x45, 0xF6, 0xD1, 0x28, 0xB1, 0x82, 0x4B, 0x11, 0x60, -0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x00, 0x23, 0x85, 0xF8, 0x56, 0x31, 0x38, 0x46, 0x19, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0xD5, 0xF8, 0x4C, 0x01, 0x95, 0xF8, 0x30, 0x21, 0x0D, 0x92, 0xCD, 0xE9, 0x0B, 0x34, 0x00, 0x22, 0x08, 0x92, -0x00, 0xF1, 0x88, 0x0E, 0x0A, 0x92, 0x31, 0x46, 0x82, 0x46, 0x3E, 0xF8, 0x02, 0x3B, 0x03, 0xEB, 0x43, 0x03, 0x0A, 0xEB, -0x83, 0x03, 0x58, 0x89, 0xC0, 0xF3, 0x0D, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x4F, 0xEA, 0xD3, 0x29, 0x19, 0xF0, 0x06, 0x0C, -0x00, 0xF0, 0x8E, 0x80, 0x09, 0xF0, 0x07, 0x09, 0xB9, 0xF1, 0x04, 0x0F, 0x03, 0xF0, 0x7F, 0x0C, 0x00, 0xF0, 0xE5, 0x80, -0xB9, 0xF1, 0x05, 0x0F, 0x00, 0xF0, 0xE4, 0x80, 0xCC, 0xF3, 0xC1, 0x0C, 0x00, 0x2A, 0x00, 0xF0, 0xD1, 0x80, 0x08, 0x98, -0x00, 0x28, 0x40, 0xF0, 0x95, 0x80, 0x08, 0x68, 0x20, 0xF0, 0x60, 0x40, 0x20, 0xF4, 0x7F, 0x50, 0x20, 0xF0, 0x3F, 0x00, -0x18, 0x43, 0x08, 0x60, 0x01, 0x32, 0x04, 0x2A, 0x01, 0xF1, 0x04, 0x01, 0xCB, 0xD1, 0x05, 0x9A, 0x22, 0xF4, 0xC0, 0x71, -0x08, 0x9A, 0x05, 0x91, 0xDD, 0xE9, 0x0B, 0x34, 0x22, 0xB1, 0x0A, 0x9A, 0x01, 0x32, 0x41, 0xEA, 0xC2, 0x12, 0x05, 0x92, -0x06, 0x9A, 0x00, 0x2A, 0x7E, 0xD1, 0x09, 0x9A, 0x22, 0xF0, 0x08, 0x02, 0x43, 0xF0, 0x02, 0x03, 0xFA, 0x63, 0x9A, 0x06, -0x85, 0xF8, 0x56, 0x31, 0x7F, 0xF5, 0xEA, 0xAE, 0xD5, 0xF8, 0x4C, 0x01, 0x7A, 0x69, 0x90, 0xF8, 0xA0, 0x30, 0xDF, 0xF8, -0x38, 0xE1, 0x05, 0x99, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, 0x0E, 0xEA, 0x02, 0x0E, 0xB3, 0xF8, 0x0A, 0xC0, -0xCC, 0xF3, 0x0D, 0x02, 0xC1, 0xF3, 0xC1, 0x13, 0x42, 0xF0, 0x80, 0x42, 0x11, 0xF4, 0xC0, 0x7F, 0xCC, 0xF3, 0x80, 0x3C, -0x4E, 0xEA, 0x02, 0x01, 0x03, 0xF1, 0xFF, 0x33, 0xDB, 0xB2, 0x80, 0xF8, 0xA1, 0xC0, 0xC0, 0xF8, 0x9C, 0x10, 0x4F, 0xF0, -0x00, 0x02, 0x06, 0x98, 0x00, 0x93, 0x03, 0x90, 0x14, 0xBF, 0x01, 0x23, 0x13, 0x46, 0xCD, 0xE9, 0x01, 0x22, 0x38, 0x46, -0x0C, 0xF0, 0x56, 0xFF, 0x95, 0xF8, 0x56, 0x31, 0xB6, 0xE6, 0x9D, 0xF8, 0x3F, 0x00, 0x40, 0xEA, 0x00, 0x20, 0x40, 0xEA, -0x0A, 0x00, 0x02, 0xF0, 0x06, 0x02, 0x49, 0xF8, 0x04, 0x0C, 0x00, 0x2A, 0x3F, 0xF4, 0x20, 0xAF, 0x09, 0x29, 0x7F, 0xF6, -0x1D, 0xAF, 0x29, 0x4B, 0x59, 0xF8, 0x04, 0x2C, 0x93, 0xF8, 0xAF, 0x10, 0x12, 0x0C, 0x41, 0xEA, 0x01, 0x21, 0x12, 0x04, -0x0A, 0x43, 0x49, 0xF8, 0x04, 0x2C, 0x0F, 0xE7, 0x08, 0x68, 0xCD, 0xF8, 0x18, 0xC0, 0x20, 0xF0, 0x60, 0x40, 0x20, 0xF4, -0x7F, 0x50, 0x20, 0xF0, 0x3F, 0x00, 0x18, 0x43, 0x08, 0x60, 0x83, 0xE7, 0x40, 0xEA, 0x00, 0x20, 0x40, 0xEA, 0x0A, 0x00, -0x49, 0xF8, 0x04, 0x0C, 0xFC, 0xE6, 0x9D, 0xF8, 0x3E, 0x20, 0x42, 0xEA, 0x02, 0x22, 0x42, 0xEA, 0x0A, 0x02, 0x49, 0xF8, -0x04, 0x2C, 0xF3, 0xE6, 0x0A, 0x98, 0xAC, 0xEB, 0x00, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x08, 0x90, 0x62, 0xE7, -0x09, 0x9A, 0x42, 0xF0, 0x08, 0x02, 0x7F, 0xE7, 0x12, 0xF0, 0x06, 0x02, 0x0B, 0xD0, 0x04, 0x29, 0x09, 0xD8, 0x0C, 0x4B, -0x93, 0xF8, 0xBB, 0x00, 0x40, 0xEA, 0x00, 0x20, 0x40, 0xEA, 0x0A, 0x00, 0x49, 0xF8, 0x04, 0x0C, 0xB5, 0xE7, 0x07, 0x4B, -0xB3, 0xF8, 0xBB, 0x00, 0x40, 0xBA, 0x80, 0xB2, 0x40, 0xEA, 0x0A, 0x00, 0x49, 0xF8, 0x04, 0x0C, 0xAB, 0xE7, 0x00, 0xBF, -0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xFF, 0x3F, 0x00, 0xE0, 0x00, 0xC0, 0xFF, 0x1F, 0x0D, 0x98, 0x84, 0x45, -0x0A, 0x98, 0x38, 0xBF, 0x60, 0x46, 0x0A, 0x90, 0x08, 0x98, 0x38, 0xBF, 0x01, 0x20, 0x08, 0x90, 0x27, 0xE7, 0x4F, 0xEA, -0x1C, 0x1C, 0x1D, 0xE7, 0x14, 0xAC, 0x03, 0xF4, 0xC0, 0x69, 0x54, 0xF8, 0x22, 0x40, 0xB9, 0xF5, 0x80, 0x6F, 0x0C, 0xBF, -0x4F, 0xF4, 0x00, 0x39, 0x4F, 0xF4, 0x80, 0x39, 0x24, 0xF4, 0x40, 0x34, 0x44, 0xEA, 0x09, 0x09, 0x40, 0x04, 0x14, 0xAC, -0x4C, 0xBF, 0x49, 0xF4, 0x80, 0x20, 0x29, 0xF4, 0x80, 0x20, 0x44, 0xF8, 0x22, 0x00, 0x4F, 0xEA, 0x1C, 0x1C, 0x01, 0xE7, -0xF0, 0xB4, 0xD2, 0xF8, 0xA4, 0x50, 0x2C, 0x88, 0x30, 0xBB, 0x00, 0x29, 0x44, 0xD0, 0x51, 0x4E, 0x03, 0x46, 0x96, 0xF8, -0x75, 0x01, 0x26, 0x46, 0x01, 0x28, 0x4F, 0xD9, 0x8F, 0x78, 0x17, 0xF0, 0x03, 0x07, 0x3C, 0xD0, 0xAD, 0x78, 0xCB, 0x78, -0x09, 0x79, 0x00, 0x2D, 0x41, 0xD1, 0x5E, 0x1E, 0x0D, 0x2E, 0x40, 0xD8, 0x0E, 0x2B, 0x00, 0xF0, 0x86, 0x80, 0x03, 0xEB, -0x83, 0x03, 0x03, 0xF6, 0x67, 0x13, 0x00, 0x29, 0x47, 0xD0, 0x03, 0x2F, 0x60, 0xD0, 0x02, 0x2F, 0x57, 0xD0, 0x02, 0x20, -0x1C, 0x46, 0x00, 0x21, 0x03, 0x46, 0x05, 0xE0, 0x3E, 0x4B, 0x93, 0xF8, 0x75, 0x31, 0x5B, 0xB9, 0x18, 0x46, 0x00, 0x21, -0xA2, 0xF8, 0xA8, 0x40, 0x82, 0xF8, 0xD8, 0x30, 0xF0, 0xBC, 0x82, 0xF8, 0xD9, 0x00, 0xA2, 0xF8, 0xAA, 0x10, 0x70, 0x47, -0xC0, 0x78, 0x10, 0xF0, 0x03, 0x00, 0x12, 0xD0, 0x01, 0x28, 0x4F, 0xF6, 0xF6, 0x76, 0x08, 0xBF, 0x0A, 0x26, 0x26, 0x44, -0xB6, 0xB2, 0x51, 0xBB, 0x01, 0x23, 0x34, 0x46, 0x18, 0x46, 0xE5, 0xE7, 0x08, 0x46, 0x0B, 0x46, 0xE2, 0xE7, 0x34, 0x46, -0x39, 0x46, 0x18, 0x46, 0xDE, 0xE7, 0x99, 0xB1, 0x1F, 0x46, 0x26, 0x46, 0x03, 0x46, 0x38, 0x46, 0xB2, 0xE7, 0x01, 0x2D, -0x1A, 0xD0, 0x4F, 0xF6, 0xFF, 0x73, 0xC2, 0xE7, 0x34, 0x46, 0xCF, 0xE7, 0x4F, 0xF6, 0xD8, 0x71, 0x9C, 0x42, 0x94, 0xBF, -0x0C, 0x46, 0x28, 0x24, 0x23, 0x44, 0x9C, 0xB2, 0x03, 0x46, 0x00, 0x21, 0xC6, 0xE7, 0x02, 0x2F, 0x11, 0xD0, 0x03, 0x2F, -0x20, 0xD0, 0x02, 0x20, 0x1C, 0x46, 0x03, 0x46, 0xBE, 0xE7, 0x18, 0x46, 0x01, 0x23, 0x95, 0xE7, 0x5E, 0x1E, 0xA4, 0x2E, -0xE1, 0xD8, 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF5, 0x9C, 0x53, 0x08, 0x33, 0xA1, 0xE7, 0x02, 0x28, 0xDE, 0xD0, 0x03, 0x20, -0x1C, 0x46, 0x00, 0x21, 0x03, 0x46, 0xAB, 0xE7, 0x85, 0xB9, 0x4C, 0x1E, 0x0D, 0x2C, 0x0A, 0xD8, 0x0E, 0x29, 0x19, 0xD0, -0x01, 0xEB, 0x81, 0x01, 0x01, 0xF6, 0x67, 0x11, 0x04, 0x28, 0x94, 0xD1, 0x1C, 0x46, 0x03, 0x23, 0x9C, 0xE7, 0x4F, 0xF6, -0xFF, 0x71, 0xF7, 0xE7, 0x01, 0x2D, 0xFA, 0xD1, 0x4C, 0x1E, 0xA4, 0x2C, 0xF7, 0xD8, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF5, -0x9C, 0x51, 0x08, 0x31, 0xEC, 0xE7, 0x40, 0xF6, 0xB4, 0x13, 0x7A, 0xE7, 0x40, 0xF6, 0xB4, 0x11, 0xE6, 0xE7, 0x00, 0xBF, -0xE4, 0xB8, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x7B, 0x4F, 0xDF, 0xF8, 0x08, 0x92, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x00, 0x73, 0x04, 0x46, 0x93, 0xF8, 0x22, 0x60, 0x58, 0x68, 0x77, 0x4B, 0x1B, 0x68, 0x10, 0xF0, 0x20, 0x0A, 0xB3, 0xF9, -0x00, 0x30, 0x0D, 0x46, 0x90, 0x46, 0x4F, 0xD0, 0x00, 0x2B, 0xC0, 0xF2, 0x9F, 0x80, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x04, 0x73, 0x0E, 0x21, 0xB3, 0xF8, 0x06, 0xC1, 0x07, 0x22, 0x4C, 0xFA, 0x01, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, -0x02, 0xF1, 0xFF, 0x30, 0xA1, 0xF1, 0x02, 0x01, 0x40, 0xF0, 0xB3, 0x80, 0x10, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, 0x90, 0x46, -0xB9, 0xF8, 0x50, 0xC0, 0x0E, 0x21, 0x07, 0x22, 0x4C, 0xFA, 0x01, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, -0xFF, 0x30, 0xA1, 0xF1, 0x02, 0x01, 0x40, 0xF0, 0x9B, 0x80, 0x10, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, 0x5D, 0x4B, 0x4F, 0xF4, -0x1E, 0x70, 0x00, 0xFB, 0x04, 0x74, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x06, 0x36, 0x94, 0xF8, 0x2C, 0x31, 0x96, 0xF8, -0xC4, 0x11, 0x94, 0xF8, 0x23, 0x00, 0x04, 0x2B, 0x08, 0xBF, 0x03, 0x23, 0xA9, 0x42, 0x28, 0xBF, 0x29, 0x46, 0x99, 0x42, -0x28, 0xBF, 0x19, 0x46, 0x84, 0xF8, 0x2D, 0x11, 0x0B, 0xF0, 0x22, 0xFD, 0x94, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x08, 0x03, -0x84, 0xF8, 0x56, 0x31, 0xBD, 0xE8, 0xF8, 0x8F, 0x10, 0xF0, 0x04, 0x0B, 0x28, 0xD0, 0x00, 0x2B, 0x58, 0xDB, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x04, 0x73, 0x0E, 0x22, 0xB3, 0xF8, 0xEC, 0xC0, 0x07, 0x20, 0x4C, 0xFA, 0x02, 0xF3, 0x03, 0xF0, -0x03, 0x03, 0x03, 0x2B, 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, 0x02, 0x02, 0x6A, 0xD1, 0x11, 0xF0, 0xFF, 0x00, 0xF2, 0xD1, -0xB9, 0xF8, 0x38, 0xC0, 0x0E, 0x21, 0x07, 0x22, 0x4C, 0xFA, 0x01, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, -0xFF, 0x30, 0xA1, 0xF1, 0x02, 0x01, 0x54, 0xD1, 0x10, 0xF0, 0xFF, 0x02, 0xF2, 0xD1, 0xAF, 0xE7, 0x00, 0x2B, 0x3A, 0xDB, -0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x73, 0x03, 0xF1, 0xCB, 0x02, 0x93, 0xF8, 0xCE, 0x30, 0x00, 0x2B, 0x54, 0xD1, -0x93, 0x78, 0x00, 0x2B, 0x4B, 0xD1, 0x53, 0x78, 0x01, 0x20, 0x00, 0x2B, 0x48, 0xD1, 0x99, 0xF8, 0x12, 0x30, 0x00, 0x2B, -0x4B, 0xD1, 0x99, 0xF8, 0x11, 0x30, 0x00, 0x2B, 0x49, 0xD1, 0x99, 0xF8, 0x10, 0x20, 0x00, 0x3A, 0x18, 0xBF, 0x01, 0x22, -0x93, 0x45, 0x58, 0x46, 0x28, 0xBF, 0x10, 0x46, 0xC2, 0xB2, 0x89, 0xE7, 0x99, 0xF8, 0x76, 0x31, 0x59, 0x07, 0x3F, 0xF5, -0x5C, 0xAF, 0x21, 0x49, 0x21, 0x48, 0x40, 0xF2, 0x55, 0x52, 0xFC, 0xF7, 0x99, 0xFD, 0x54, 0xE7, 0x99, 0xF8, 0x76, 0x31, -0x9A, 0x07, 0xA2, 0xD4, 0x1B, 0x49, 0x1D, 0x48, 0x40, 0xF2, 0x62, 0x52, 0xFC, 0xF7, 0x8E, 0xFD, 0x9B, 0xE7, 0x99, 0xF8, -0x76, 0x31, 0xDB, 0x07, 0xC0, 0xD4, 0x16, 0x49, 0x18, 0x48, 0x40, 0xF2, 0x6D, 0x52, 0xFC, 0xF7, 0x83, 0xFD, 0xB9, 0xE7, -0x42, 0x45, 0x28, 0xBF, 0x42, 0x46, 0xD2, 0xB2, 0x62, 0xE7, 0x90, 0x45, 0x28, 0xBF, 0x90, 0x46, 0x4C, 0xE7, 0x52, 0x45, -0x28, 0xBF, 0x52, 0x46, 0xD2, 0xB2, 0x59, 0xE7, 0x40, 0x45, 0x28, 0xBF, 0x40, 0x46, 0x82, 0x46, 0x92, 0xE7, 0x02, 0x20, -0x80, 0x45, 0x28, 0xBF, 0x80, 0x46, 0xC3, 0x46, 0xB1, 0xE7, 0x03, 0x20, 0xF8, 0xE7, 0x03, 0x22, 0xBA, 0xE7, 0x02, 0x22, -0xB8, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xC4, 0xB8, 0x15, 0x00, 0xD4, 0xB8, 0x15, 0x00, 0xE4, 0xB8, 0x15, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x2D, 0xED, 0x02, 0x8B, 0xDF, 0xF8, 0xE4, 0xA3, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0xF3, 0x0A, 0xEB, 0x03, 0x06, -0x8B, 0xB0, 0xB6, 0xF8, 0xC2, 0x41, 0x02, 0x93, 0x01, 0x90, 0xD6, 0xF8, 0x90, 0x31, 0x96, 0xF8, 0xC6, 0x51, 0x04, 0x95, -0x00, 0x20, 0xA6, 0xF8, 0xC2, 0x01, 0x98, 0x78, 0x02, 0x9D, 0xD6, 0xF8, 0xC8, 0x31, 0x03, 0x94, 0x03, 0xF0, 0x7F, 0x43, -0x05, 0xF1, 0xEC, 0x0C, 0x24, 0x32, 0x05, 0x93, 0x0A, 0xEB, 0x0C, 0x03, 0xD6, 0xF8, 0xE4, 0x40, 0x96, 0xF8, 0xC5, 0x71, -0x08, 0xEE, 0x10, 0x2A, 0x08, 0xEE, 0x90, 0x3A, 0xA1, 0xF1, 0x24, 0x09, 0x00, 0x28, 0x00, 0xF0, 0xDD, 0x81, 0x1F, 0xFA, -0x89, 0xF8, 0x01, 0x9B, 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, 0x03, 0xA9, 0xD9, 0xF8, 0xCC, 0x31, 0xDD, 0x07, 0x05, 0xD5, -0x99, 0xF8, 0x62, 0xB0, 0xBB, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x5C, 0x82, 0xD2, 0x4B, 0x93, 0xF8, 0x76, 0xB1, 0x1B, 0xF0, -0x01, 0x0B, 0x40, 0xF0, 0xE9, 0x81, 0xD9, 0x46, 0x48, 0x46, 0x18, 0xEE, 0x90, 0x2A, 0x59, 0x46, 0xFF, 0xF7, 0xF8, 0xFD, -0x02, 0x9B, 0x03, 0xF2, 0xB4, 0x43, 0x18, 0xEE, 0x10, 0x0A, 0x53, 0x44, 0x0D, 0xF1, 0x25, 0x02, 0x41, 0x46, 0xFD, 0xF7, -0xD5, 0xFF, 0x10, 0xF0, 0xFF, 0x09, 0x1F, 0xD0, 0x01, 0x9B, 0x4F, 0xF4, 0xA4, 0x6B, 0x0B, 0xFB, 0x03, 0xAB, 0x9B, 0xF8, -0x62, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x9D, 0x81, 0x9B, 0xF8, 0x8A, 0x10, 0x00, 0x29, 0x00, 0xF0, 0x6F, 0x82, 0x89, 0x45, -0x07, 0xD0, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0x01, 0x22, 0x83, 0xF8, 0x8C, 0x20, 0x01, 0x9A, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0x83, 0xF8, 0x8A, 0x90, 0x18, 0xEE, 0x90, 0x2A, 0x41, 0x46, 0x18, 0xEE, -0x10, 0x0A, 0xFD, 0xF7, 0x25, 0xFF, 0x01, 0x9A, 0x04, 0x99, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0x93, 0xF8, -0xC6, 0x21, 0x8A, 0x42, 0x0E, 0xD0, 0xD3, 0xF8, 0x90, 0x11, 0xAC, 0x4B, 0x09, 0x79, 0xD3, 0xF8, 0x40, 0x33, 0x8A, 0x1A, -0x8D, 0xF8, 0x26, 0x20, 0x0D, 0xF1, 0x26, 0x01, 0x0D, 0xF1, 0x27, 0x02, 0x30, 0x46, 0x98, 0x47, 0x01, 0x9B, 0x4F, 0xF4, -0xA4, 0x68, 0x08, 0xFB, 0x03, 0xA8, 0x98, 0xF8, 0xC5, 0x31, 0xBB, 0x42, 0x00, 0xF2, 0x01, 0x81, 0x00, 0x2C, 0x00, 0xF0, -0x8E, 0x80, 0x01, 0x9B, 0x9F, 0x4E, 0x03, 0x9D, 0xDD, 0xF8, 0x14, 0x90, 0x4F, 0xF4, 0xA4, 0x68, 0x08, 0xFB, 0x03, 0xA8, -0xB8, 0xF8, 0xC2, 0x21, 0xAA, 0x42, 0x1D, 0xD0, 0x29, 0x46, 0x30, 0x46, 0xFC, 0xF7, 0x1A, 0xFA, 0x94, 0xF8, 0x56, 0x31, -0xB8, 0xF8, 0xC2, 0x21, 0x94, 0xF8, 0x23, 0x00, 0x43, 0xF0, 0x02, 0x03, 0x84, 0xF8, 0x56, 0x31, 0x53, 0x07, 0x4F, 0xF0, -0x00, 0x01, 0x58, 0xBF, 0x4F, 0xF4, 0x80, 0x63, 0xC4, 0xF8, 0x50, 0x11, 0x4E, 0xBF, 0xA4, 0xF8, 0x54, 0x11, 0xA4, 0xF8, -0x54, 0x31, 0x01, 0x21, 0x0B, 0xF0, 0x02, 0xFC, 0x98, 0xF8, 0xC5, 0x31, 0xBB, 0x42, 0x4B, 0xD0, 0x04, 0x2B, 0x94, 0xF8, -0x2C, 0xA1, 0x5F, 0xD0, 0x53, 0x45, 0x28, 0xBF, 0x53, 0x46, 0x04, 0x2B, 0x00, 0xF0, 0x93, 0x80, 0x5F, 0xFA, 0x83, 0xFA, -0x94, 0xF8, 0x2D, 0x31, 0x53, 0x45, 0x3B, 0xD0, 0x63, 0x68, 0x13, 0xF0, 0x20, 0x0B, 0x58, 0xD0, 0x7F, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xA7, 0x80, 0xB4, 0xF8, 0x06, 0xC1, 0x0E, 0x22, 0x07, 0x20, 0x4C, 0xFA, -0x02, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, 0x02, 0x02, 0x02, 0xD1, 0x11, 0xF0, -0xFF, 0x00, 0xF2, 0xD1, 0x70, 0x4B, 0x07, 0x22, 0xB3, 0xF8, 0x50, 0xE0, 0x0E, 0x23, 0x4E, 0xFA, 0x03, 0xF1, 0x01, 0xF0, -0x03, 0x01, 0x03, 0x29, 0x02, 0xF1, 0xFF, 0x3C, 0xA3, 0xF1, 0x02, 0x03, 0x40, 0xF0, 0xF4, 0x80, 0x1C, 0xF0, 0xFF, 0x02, -0xF1, 0xD1, 0x94, 0xF8, 0x23, 0x00, 0x84, 0xF8, 0x2D, 0xA1, 0x51, 0x46, 0x0B, 0xF0, 0x54, 0xFB, 0x94, 0xF8, 0x56, 0x31, -0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x56, 0x31, 0xD8, 0xF8, 0xC8, 0x31, 0x03, 0xF0, 0x7F, 0x43, 0x4B, 0x45, 0x08, 0xD0, -0x63, 0x68, 0x9B, 0x06, 0x05, 0xD5, 0x94, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0x56, 0x31, 0x24, 0x68, -0x00, 0x2C, 0x7F, 0xF4, 0x7B, 0xAF, 0x0B, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0xBA, 0xF1, 0x03, 0x0F, -0x35, 0xD8, 0xBA, 0xF1, 0x02, 0x0F, 0x28, 0xBF, 0x4F, 0xF0, 0x02, 0x0A, 0x9E, 0xE7, 0x13, 0xF0, 0x04, 0x0F, 0x52, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x2B, 0xD0, 0x00, 0x2B, 0xC0, 0xF2, 0xA7, 0x80, 0xB4, 0xF8, 0xEC, 0xC0, 0x0E, 0x22, -0x07, 0x20, 0x4C, 0xFA, 0x02, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, 0x02, 0x02, -0x40, 0xF0, 0x97, 0x81, 0x11, 0xF0, 0xFF, 0x00, 0xF1, 0xD1, 0x42, 0x4B, 0xB3, 0xF8, 0x38, 0xC0, 0x0E, 0x21, 0x07, 0x22, -0x4C, 0xFA, 0x01, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, 0xFF, 0x30, 0xA1, 0xF1, 0x02, 0x01, 0x40, 0xF0, -0x7F, 0x81, 0x10, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, 0xA1, 0xE7, 0x4F, 0xF0, 0x03, 0x0A, 0x6B, 0xE7, 0x00, 0x2B, 0x5E, 0xDB, -0x94, 0xF8, 0xCE, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xDF, 0x81, 0x94, 0xF8, 0xCD, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xE0, 0x81, -0x94, 0xF8, 0xCC, 0x20, 0x11, 0x1E, 0x18, 0xBF, 0x01, 0x21, 0x2E, 0x4A, 0x93, 0x7C, 0x00, 0x2B, 0x40, 0xF0, 0xD2, 0x81, -0x53, 0x7C, 0x00, 0x2B, 0x40, 0xF0, 0xD0, 0x81, 0x13, 0x7C, 0x1A, 0x1E, 0x18, 0xBF, 0x01, 0x22, 0x8A, 0x42, 0x28, 0xBF, -0x0A, 0x46, 0x7C, 0xE7, 0x25, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0x58, 0x07, 0x3F, 0xF5, 0x53, 0xAF, 0x26, 0x49, 0x27, 0x48, -0x40, 0xF2, 0xCD, 0x12, 0xFC, 0xF7, 0xA8, 0xFB, 0x4B, 0xE7, 0x0C, 0x23, 0x05, 0x22, 0x00, 0x21, 0x3B, 0x20, 0xFA, 0xF7, -0xBF, 0xFA, 0x1F, 0x4B, 0xD8, 0xF8, 0x40, 0x20, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x81, 0x46, 0xC0, 0xF2, -0x18, 0x81, 0x13, 0x7E, 0x89, 0xF8, 0x00, 0x30, 0xD6, 0xF8, 0x90, 0x31, 0x99, 0x78, 0x89, 0xF8, 0x02, 0x10, 0x96, 0xF8, -0xC5, 0x11, 0x89, 0xF8, 0x03, 0x10, 0xB3, 0xF8, 0x00, 0xC0, 0xB6, 0xF8, 0x94, 0x01, 0xB6, 0xF8, 0x96, 0x11, 0xA9, 0xF8, -0x08, 0x10, 0xA9, 0xF8, 0x06, 0x00, 0xA9, 0xF8, 0x04, 0xC0, 0x12, 0x7B, 0x89, 0xF8, 0x0A, 0x20, 0xDB, 0x78, 0x89, 0xF8, -0x0B, 0x30, 0x48, 0x46, 0xFA, 0xF7, 0xC4, 0xFA, 0xCC, 0xE6, 0x06, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0xDA, 0x07, 0x9B, 0xD4, -0x07, 0x49, 0x09, 0x48, 0x40, 0xF2, 0xE5, 0x12, 0xFC, 0xF7, 0x6A, 0xFB, 0x94, 0xE7, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x0C, 0xB9, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xC4, 0xB8, 0x15, 0x00, -0xE4, 0xB8, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0xB9, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0x99, 0x07, 0x3F, 0xF5, 0x53, 0xAF, -0xB7, 0x49, 0xB8, 0x48, 0x4F, 0xF4, 0xED, 0x72, 0xFC, 0xF7, 0x4C, 0xFB, 0x4B, 0xE7, 0x02, 0x2B, 0x08, 0xBF, 0x8B, 0xF8, -0xDB, 0x90, 0x73, 0xE6, 0x82, 0x42, 0x28, 0xBF, 0x02, 0x46, 0x0A, 0xE7, 0x1F, 0xFA, 0x89, 0xF8, 0x41, 0x46, 0x10, 0x46, -0xFB, 0xF7, 0x42, 0xFA, 0x00, 0x28, 0x3F, 0xF4, 0x1A, 0xAE, 0xB6, 0xF8, 0xC2, 0x31, 0x82, 0x78, 0x23, 0xF0, 0x07, 0x03, -0x9B, 0xB2, 0xD1, 0x07, 0x48, 0xBF, 0x43, 0xF0, 0x01, 0x03, 0xA6, 0xF8, 0xC2, 0x31, 0x53, 0x07, 0x7F, 0xF5, 0x0B, 0xAE, -0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0xB3, 0xF8, 0xC2, 0x21, 0x42, 0xF0, 0x04, 0x02, 0xA3, 0xF8, -0xC2, 0x21, 0x00, 0xE6, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, 0xFB, 0xF7, 0x89, 0xFB, 0x9A, 0x4B, 0x93, 0xF8, 0x76, 0xB1, -0x1B, 0xF0, 0x06, 0x0B, 0x81, 0x46, 0x3F, 0xF4, 0x0B, 0xAE, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, 0xFB, 0xF7, 0x9C, 0xFB, -0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0x83, 0x46, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0x00, 0xF0, -0xAA, 0x80, 0x8E, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0x59, 0x07, 0x7F, 0xF5, 0xF5, 0xAD, 0x18, 0xEE, 0x90, 0x2A, 0x18, 0xEE, -0x10, 0x0A, 0x41, 0x46, 0xFD, 0xF7, 0xD6, 0xFF, 0x00, 0x28, 0x00, 0xF0, 0x09, 0x81, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x02, 0xA3, 0xD3, 0xF8, 0xC8, 0x31, 0xC3, 0xF3, 0x09, 0x12, 0x15, 0x46, 0xA2, 0xB1, 0x04, 0x23, 0x05, 0x22, -0x00, 0x21, 0x6F, 0x20, 0xFA, 0xF7, 0xFE, 0xF9, 0x01, 0x9B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xA2, 0x06, 0x92, -0x92, 0xF8, 0x63, 0x10, 0x81, 0x70, 0x05, 0x80, 0xFA, 0xF7, 0x22, 0xFA, 0x06, 0x9A, 0xD2, 0xF8, 0xC8, 0x31, 0x05, 0x9A, -0x03, 0xF0, 0x7F, 0x43, 0x93, 0x42, 0x3F, 0xF4, 0xC5, 0xAD, 0x04, 0x23, 0x05, 0x22, 0x00, 0x21, 0x71, 0x20, 0xFA, 0xF7, -0xE3, 0xF9, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0xD3, 0xF8, 0xC8, 0x21, 0xC2, 0xF3, 0x05, 0x63, -0x52, 0x00, 0x54, 0xBF, 0x43, 0xF4, 0x80, 0x73, 0x43, 0xF4, 0x40, 0x73, 0x03, 0x60, 0xFA, 0xF7, 0x01, 0xFA, 0xAB, 0xE5, -0x02, 0x9B, 0x03, 0xF5, 0xD6, 0x72, 0x52, 0x44, 0x0D, 0xF1, 0x27, 0x03, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, 0x06, 0x92, -0xFD, 0xF7, 0x92, 0xFE, 0x9D, 0xF8, 0x27, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x93, 0xAD, 0x06, 0x9A, 0x06, 0x97, 0x03, 0x9F, -0x25, 0x46, 0x4C, 0x46, 0x91, 0x46, 0x08, 0x23, 0x05, 0x22, 0x00, 0x21, 0x1A, 0x20, 0xFA, 0xF7, 0xB3, 0xF9, 0x59, 0xF8, -0x04, 0x1B, 0x80, 0xF8, 0x05, 0xB0, 0x94, 0xF8, 0x63, 0x20, 0x82, 0x71, 0x4F, 0xF0, 0x00, 0x02, 0x01, 0x60, 0x0B, 0xF1, -0x01, 0x0B, 0x02, 0x71, 0xFA, 0xF7, 0xD4, 0xF9, 0xBB, 0xF1, 0x04, 0x0F, 0xE7, 0xD1, 0x03, 0x97, 0x2C, 0x46, 0x06, 0x9F, -0x70, 0xE5, 0x00, 0x2A, 0x7F, 0xF4, 0xE5, 0xAE, 0x45, 0x22, 0x4C, 0x49, 0x4D, 0x48, 0xFC, 0xF7, 0x77, 0xFA, 0xD8, 0xF8, -0x40, 0x20, 0xDC, 0xE6, 0x9B, 0xF8, 0x8C, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x96, 0xAD, 0x9D, 0xF8, 0x25, 0x30, 0x01, 0x2B, -0x7F, 0xF4, 0x91, 0xAD, 0x46, 0x4B, 0x9B, 0xF8, 0x63, 0x00, 0xD3, 0xF8, 0xC0, 0x31, 0x98, 0x47, 0x9B, 0xF8, 0x8A, 0x10, -0x00, 0x29, 0x3F, 0xF4, 0x86, 0xAD, 0x7A, 0xE5, 0x5A, 0x45, 0x28, 0xBF, 0x5A, 0x46, 0xD2, 0xB2, 0x21, 0xE6, 0x83, 0x46, -0x69, 0xE6, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, 0x06, 0x93, 0xFB, 0xF7, 0x77, 0xF9, 0xB0, 0xB1, 0x06, 0x9B, 0x3A, 0x49, -0x93, 0xF8, 0x6C, 0x20, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x13, 0x5B, 0x68, 0x13, 0xF0, 0x24, 0x0F, 0x0A, 0xD0, -0x90, 0xF9, 0x02, 0x30, 0x81, 0x78, 0x00, 0x2B, 0x05, 0xDB, 0x10, 0x46, 0x0A, 0x09, 0x01, 0xF0, 0x03, 0x01, 0xFF, 0xF7, -0xDD, 0xFB, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0x06, 0x93, 0xD3, 0xF8, 0xCC, 0x31, 0x18, 0x07, -0x7F, 0xF5, 0x2D, 0xAF, 0x02, 0x23, 0x05, 0x22, 0x00, 0x21, 0x6D, 0x20, 0xFA, 0xF7, 0x46, 0xF9, 0x41, 0x46, 0x02, 0x46, -0x07, 0x90, 0x18, 0xEE, 0x10, 0x0A, 0xFD, 0xF7, 0x45, 0xFF, 0x07, 0x9A, 0x10, 0x46, 0xFA, 0xF7, 0x6B, 0xF9, 0x22, 0x4B, -0x1B, 0x69, 0x00, 0x2B, 0x3F, 0xF4, 0x17, 0xAF, 0x02, 0x9B, 0x03, 0xF5, 0xA8, 0x72, 0x18, 0xEE, 0x10, 0x0A, 0x0D, 0xF1, -0x27, 0x03, 0x52, 0x44, 0x41, 0x46, 0xFD, 0xF7, 0x05, 0xFF, 0x9D, 0xF8, 0x27, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x07, 0xAF, -0x10, 0x23, 0x05, 0x22, 0x00, 0x21, 0x6B, 0x20, 0xFA, 0xF7, 0x20, 0xF9, 0x06, 0x9A, 0x11, 0x46, 0x15, 0x46, 0xD2, 0xF8, -0x50, 0xE1, 0xD2, 0xF8, 0x54, 0x21, 0xD1, 0xF8, 0x58, 0x11, 0xD5, 0xF8, 0x5C, 0x51, 0xC5, 0x60, 0xC0, 0xE9, 0x00, 0xE2, -0x81, 0x60, 0xFA, 0xF7, 0x3F, 0xF9, 0xEE, 0xE6, 0x03, 0x21, 0x28, 0xE6, 0x03, 0x22, 0x33, 0xE6, 0x02, 0x22, 0x31, 0xE6, -0x02, 0x21, 0x22, 0xE6, 0x40, 0xF2, 0xFF, 0x33, 0x1D, 0x46, 0xFD, 0xE6, 0xE4, 0xB8, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xD4, 0xB8, 0x15, 0x00, 0xF4, 0xB8, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, -0x70, 0xB5, 0x0C, 0x46, 0x84, 0xB0, 0x89, 0x78, 0x0C, 0x4D, 0x26, 0x79, 0x8D, 0xF8, 0x04, 0x10, 0xAD, 0xF8, 0x08, 0x20, -0x01, 0x46, 0x9D, 0xF8, 0x20, 0x20, 0x20, 0x88, 0xE4, 0x78, 0xAD, 0xF8, 0x0A, 0x30, 0xAD, 0xF8, 0x06, 0x00, 0x6B, 0x6C, -0x8D, 0xF8, 0x0C, 0x60, 0x8D, 0xF8, 0x0D, 0x40, 0x8D, 0xF8, 0x05, 0x20, 0x01, 0xA8, 0x98, 0x47, 0x04, 0xB0, 0x70, 0xBD, -0x88, 0x1A, 0x17, 0x00, 0x03, 0x68, 0x30, 0xB4, 0x0C, 0x68, 0x5A, 0x40, 0x84, 0xEA, 0xF2, 0x34, 0x22, 0x44, 0x13, 0x0A, -0x15, 0x02, 0x05, 0xF0, 0xFF, 0x25, 0x03, 0xF0, 0xFF, 0x13, 0x2B, 0x43, 0x63, 0x40, 0x1A, 0x44, 0x83, 0xEA, 0x72, 0x73, -0x1A, 0x44, 0x83, 0xEA, 0xB2, 0x03, 0x1A, 0x44, 0x0B, 0x60, 0x30, 0xBC, 0x02, 0x60, 0x70, 0x47, 0xF8, 0xB5, 0x1F, 0x88, -0xD3, 0xF8, 0x02, 0x50, 0x0B, 0x68, 0x96, 0x88, 0x12, 0x68, 0x03, 0x60, 0x9D, 0xF8, 0x18, 0x40, 0x4B, 0x68, 0x43, 0x60, -0x00, 0x23, 0xFF, 0x2C, 0x83, 0x60, 0x03, 0x73, 0x00, 0xF1, 0x04, 0x01, 0x46, 0xEA, 0x07, 0x46, 0x14, 0xBF, 0x04, 0xF0, -0x07, 0x04, 0x00, 0x24, 0xFF, 0xF7, 0xCC, 0xFF, 0x32, 0x46, 0xFF, 0xF7, 0xC9, 0xFF, 0x2A, 0x46, 0xFF, 0xF7, 0xC6, 0xFF, -0x22, 0x46, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0xC1, 0xBF, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x21, 0xF0, 0x03, 0x06, -0x01, 0xF0, 0x03, 0x01, 0xC1, 0xF1, 0x04, 0x03, 0x37, 0x68, 0x90, 0xF8, 0x0C, 0xC0, 0x85, 0x68, 0xDB, 0xB2, 0x04, 0x36, -0xC9, 0x00, 0x9A, 0x42, 0x83, 0xB0, 0x27, 0xFA, 0x01, 0xF1, 0xB1, 0x46, 0x78, 0xD2, 0xC2, 0xF1, 0x04, 0x04, 0xE3, 0x00, -0x4F, 0xF0, 0xFF, 0x34, 0x4F, 0xF0, 0x00, 0x0B, 0xDC, 0x40, 0x21, 0x40, 0xD8, 0x46, 0x5F, 0x46, 0x0C, 0xEB, 0x02, 0x04, -0x03, 0x2C, 0x52, 0xD8, 0x4F, 0xEA, 0xCC, 0x0C, 0x01, 0xFA, 0x0C, 0xF1, 0x0D, 0x43, 0xB8, 0xF1, 0x00, 0x0F, 0x22, 0xD0, -0xE3, 0x00, 0xC4, 0xF1, 0x04, 0x0A, 0x00, 0x93, 0x4F, 0xEA, 0x88, 0x03, 0x4F, 0xEA, 0xCA, 0x0A, 0x01, 0x1D, 0x01, 0x93, -0x06, 0xEB, 0x88, 0x08, 0xB1, 0x46, 0xD9, 0xF8, 0x00, 0x30, 0x00, 0x9A, 0x03, 0xFA, 0x02, 0xF2, 0xBA, 0xF1, 0x20, 0x0F, -0x42, 0xEA, 0x05, 0x02, 0x09, 0xF1, 0x04, 0x09, 0x14, 0xBF, 0x23, 0xFA, 0x0A, 0xF5, 0x00, 0x25, 0xFF, 0xF7, 0x76, 0xFF, -0xC1, 0x45, 0xEC, 0xD1, 0x01, 0x9B, 0x33, 0x44, 0x99, 0x46, 0x5F, 0x45, 0x20, 0xD9, 0x07, 0xF0, 0x03, 0x07, 0xC7, 0xF1, -0x04, 0x03, 0xDA, 0x00, 0x20, 0x2A, 0xD9, 0xF8, 0x00, 0x10, 0x40, 0xD0, 0x4F, 0xF0, 0xFF, 0x33, 0xD3, 0x40, 0x0B, 0x40, -0xE2, 0x00, 0x03, 0xFA, 0x02, 0xF2, 0x15, 0x43, 0x27, 0x44, 0x03, 0x2F, 0x2F, 0xD9, 0xC4, 0xF1, 0x04, 0x04, 0xE4, 0x00, -0x20, 0x2C, 0x14, 0xBF, 0xE3, 0x40, 0x00, 0x23, 0x2A, 0x46, 0x01, 0x1D, 0x3C, 0x1F, 0x1D, 0x46, 0xFF, 0xF7, 0x4E, 0xFF, -0x85, 0x60, 0x04, 0x73, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xEA, 0xCC, 0x02, 0xCC, 0xF1, 0x04, 0x0C, 0x4F, 0xEA, -0xCC, 0x0C, 0xBC, 0xF1, 0x20, 0x0F, 0x01, 0xFA, 0x02, 0xF2, 0x42, 0xEA, 0x05, 0x02, 0x18, 0xBF, 0x21, 0xFA, 0x0C, 0xF5, -0x00, 0xF1, 0x04, 0x01, 0x08, 0xBF, 0x00, 0x25, 0x04, 0x3C, 0xFF, 0xF7, 0x33, 0xFF, 0x9A, 0xE7, 0xD7, 0x1A, 0x4F, 0xEA, -0x97, 0x08, 0x1A, 0x46, 0x27, 0xF0, 0x03, 0x0B, 0x8A, 0xE7, 0x3C, 0x46, 0x85, 0x60, 0x04, 0x73, 0x03, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x00, 0x23, 0xC4, 0xE7, 0x00, 0xBF, 0x38, 0xB5, 0x10, 0x4B, 0x85, 0x68, 0x1B, 0x68, 0x02, 0x7B, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x0D, 0xDB, 0x5A, 0x23, 0xD2, 0x00, 0x03, 0xFA, 0x02, 0xF2, 0x2A, 0x43, 0x21, 0x1D, -0x20, 0x46, 0xFF, 0xF7, 0x0F, 0xFF, 0xBD, 0xE8, 0x38, 0x40, 0x00, 0x22, 0xFF, 0xF7, 0x0A, 0xBF, 0x03, 0x2A, 0xEF, 0xD9, -0x40, 0xF2, 0x41, 0x12, 0x03, 0x49, 0x04, 0x48, 0xFC, 0xF7, 0xB8, 0xF8, 0x22, 0x7B, 0xE7, 0xE7, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x20, 0xB9, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x06, 0x20, 0x83, 0xB0, 0x00, 0x24, 0xCD, 0xE9, -0x00, 0x44, 0x91, 0xF8, 0x3D, 0x90, 0x0D, 0x46, 0x17, 0x46, 0x1E, 0x46, 0xFA, 0xF7, 0x62, 0xFA, 0x09, 0x28, 0x79, 0xD0, -0x01, 0x23, 0x3A, 0x46, 0x31, 0x46, 0x41, 0xF6, 0x01, 0x00, 0xF9, 0xF7, 0xB7, 0xFF, 0x80, 0x46, 0x06, 0x20, 0xFA, 0xF7, -0x55, 0xFA, 0x48, 0xB1, 0x08, 0x26, 0x40, 0x46, 0x88, 0xF8, 0x00, 0x60, 0xF9, 0xF7, 0xDC, 0xFF, 0x20, 0x46, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0xDF, 0xF8, 0xAC, 0xA1, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x09, 0xA3, 0x93, 0xF8, 0x62, 0x20, -0x00, 0x2A, 0x4F, 0xD1, 0x93, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x4B, 0xD1, 0xDF, 0xF8, 0x94, 0xB1, 0x5A, 0x4A, 0x5B, 0x49, -0x13, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x95, 0xF8, 0x3B, 0x30, 0x01, 0x22, 0x02, 0x2B, 0xCA, 0x75, 0x0E, 0xD0, -0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x09, 0xA2, 0x92, 0xF8, 0x64, 0x10, 0x29, 0xB9, 0x53, 0x4C, 0x21, 0x68, 0xB1, 0xF9, -0x00, 0x10, 0x00, 0x29, 0x7F, 0xDB, 0x03, 0x2B, 0x57, 0xD0, 0x3A, 0x46, 0x4F, 0xF4, 0x55, 0x73, 0x31, 0x46, 0x41, 0xF6, -0x02, 0x00, 0xCB, 0xF8, 0x00, 0x50, 0xF9, 0xF7, 0x73, 0xFF, 0x95, 0xF8, 0x3B, 0x30, 0xCB, 0xF8, 0x04, 0x00, 0x00, 0x27, -0x02, 0x2B, 0x8B, 0xF8, 0x16, 0x70, 0x4F, 0xD0, 0x9B, 0xF8, 0x1E, 0x60, 0x3E, 0xB3, 0x95, 0xF8, 0x3D, 0x10, 0x44, 0x48, -0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x01, 0xA1, 0x06, 0x22, 0x38, 0x31, 0x0E, 0xF0, 0xE4, 0xFA, 0x09, 0x21, 0x06, 0x20, -0xFA, 0xF7, 0x52, 0xF9, 0x95, 0xF8, 0x3D, 0x00, 0x39, 0x46, 0x04, 0xFB, 0x00, 0xA0, 0x01, 0xF0, 0xCB, 0xF8, 0x3E, 0x46, -0x01, 0x24, 0x9C, 0xE7, 0x95, 0xF8, 0x3B, 0x30, 0x02, 0x2B, 0xAF, 0xD0, 0x2C, 0x6B, 0x14, 0xF0, 0x20, 0x04, 0x17, 0xD1, -0x09, 0x26, 0x92, 0xE7, 0x02, 0x24, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0xA9, 0x68, 0x46, 0x00, 0xF0, -0x75, 0xFD, 0xDD, 0xE9, 0x00, 0x01, 0x28, 0xB1, 0x21, 0xB1, 0x32, 0x46, 0x00, 0xF0, 0x14, 0xFE, 0x01, 0x24, 0x80, 0xE7, -0x00, 0xF0, 0x90, 0xFD, 0x01, 0x24, 0x7C, 0xE7, 0xDF, 0xF8, 0xBC, 0xB0, 0x28, 0x48, 0x01, 0x23, 0x8B, 0xF8, 0x1E, 0x30, -0xFB, 0xF7, 0x8E, 0xFD, 0x8C, 0xE7, 0xE9, 0x8E, 0x05, 0xF1, 0x40, 0x00, 0x02, 0xF0, 0x32, 0xF8, 0x00, 0x28, 0xC4, 0xBF, -0x00, 0x23, 0x85, 0xF8, 0x3B, 0x30, 0x9C, 0xE7, 0x95, 0xF8, 0x3D, 0x10, 0x1F, 0x48, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, -0x01, 0xA1, 0x06, 0x22, 0x38, 0x31, 0x01, 0x24, 0x8B, 0xF8, 0x16, 0x40, 0x0E, 0xF0, 0x94, 0xFA, 0x09, 0x21, 0x06, 0x20, -0xFA, 0xF7, 0x02, 0xF9, 0x95, 0xF8, 0x3D, 0x00, 0x39, 0x46, 0x06, 0xFB, 0x00, 0xA0, 0x01, 0xF0, 0x7B, 0xF8, 0x3E, 0x46, -0x4D, 0xE7, 0x92, 0xF8, 0x6C, 0x30, 0xFF, 0x2B, 0x09, 0xD0, 0x12, 0x49, 0x12, 0x48, 0x64, 0x22, 0xFB, 0xF7, 0xD8, 0xFF, -0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0B, 0xDA, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x09, 0xA9, 0xD9, 0xF8, -0x40, 0x30, 0x23, 0xB1, 0x09, 0x49, 0x0B, 0x48, 0x65, 0x22, 0xFB, 0xF7, 0xC7, 0xFF, 0x95, 0xF8, 0x3B, 0x30, 0x62, 0xE7, -0x94, 0x40, 0x04, 0x40, 0x4C, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x84, 0xBA, 0x17, 0x00, 0x40, 0xB9, 0x15, 0x00, -0x7C, 0xBA, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x4C, 0xB9, 0x15, 0x00, 0xA0, 0xA2, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, -0x64, 0xBA, 0x17, 0x00, 0x38, 0xB5, 0x0B, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x0F, 0x49, 0x1C, 0x78, 0xFB, 0xF7, 0x7C, 0xFD, -0x06, 0x20, 0xFA, 0xF7, 0x63, 0xF9, 0xA8, 0xB9, 0x0C, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, 0x94, 0xF8, -0x62, 0x50, 0x15, 0xB9, 0x94, 0xF8, 0x64, 0x00, 0x00, 0xB9, 0x38, 0xBD, 0x09, 0x21, 0x06, 0x20, 0xFA, 0xF7, 0xAA, 0xF8, -0x20, 0x46, 0x01, 0x21, 0x01, 0xF0, 0x26, 0xF8, 0x28, 0x46, 0x38, 0xBD, 0x02, 0x20, 0x38, 0xBD, 0x70, 0xB9, 0x15, 0x00, -0x18, 0x88, 0x17, 0x00, 0x08, 0xB5, 0x06, 0x20, 0xFA, 0xF7, 0x42, 0xF9, 0x05, 0x28, 0x04, 0xD0, 0x06, 0x20, 0xFA, 0xF7, -0x3D, 0xF9, 0x06, 0x28, 0x04, 0xD1, 0x01, 0x20, 0x01, 0xF0, 0x9C, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xFA, 0xF7, -0x33, 0xF9, 0x07, 0x28, 0xF5, 0xD0, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x16, 0x4B, 0x00, 0xB5, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x20, 0x00, 0x23, 0x83, 0xB0, 0x9A, 0x42, 0xCD, 0xE9, 0x00, 0x33, 0x15, 0xDB, 0x68, 0x46, 0x01, 0xA9, 0x00, 0xF0, -0xB7, 0xFC, 0x00, 0x98, 0x40, 0xB1, 0x01, 0x99, 0x31, 0xB1, 0x00, 0x22, 0x00, 0xF0, 0x56, 0xFD, 0x00, 0x20, 0x03, 0xB0, -0x5D, 0xF8, 0x04, 0xFB, 0x01, 0x20, 0x01, 0xF0, 0x75, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x06, 0x20, -0xFA, 0xF7, 0x0A, 0xF9, 0x01, 0x28, 0xE4, 0xD0, 0x04, 0x49, 0x05, 0x48, 0x4F, 0xF4, 0x8F, 0x72, 0xFB, 0xF7, 0x42, 0xFF, -0xDD, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x80, 0xB9, 0x15, 0x00, 0x93, 0x4B, 0x2D, 0xE9, -0xF0, 0x4F, 0x1B, 0x68, 0x92, 0x4D, 0xB3, 0xF9, 0x00, 0x30, 0x2F, 0x68, 0x00, 0x2B, 0x89, 0xB0, 0xC0, 0xF2, 0x91, 0x80, -0x97, 0xF8, 0x3D, 0x80, 0x8E, 0x4E, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x08, 0x64, 0xD4, 0xF8, 0xCC, 0x31, 0x00, 0x2B, -0x18, 0xDB, 0x6B, 0x7D, 0x33, 0xB9, 0x01, 0x20, 0x01, 0xF0, 0x42, 0xF9, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x00, 0x23, 0x07, 0xA9, 0x06, 0xA8, 0xCD, 0xE9, 0x06, 0x33, 0x00, 0xF0, 0x6B, 0xFC, 0xDD, 0xE9, 0x06, 0x01, 0x01, 0x22, -0x00, 0xF0, 0x0C, 0xFD, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x07, 0xA8, 0x00, 0xF0, 0xE1, 0xFD, 0x00, 0x28, -0x74, 0xD1, 0x01, 0x46, 0x20, 0x23, 0x06, 0x22, 0x0A, 0x20, 0xF9, 0xF7, 0x1D, 0xFE, 0x94, 0xF8, 0xC0, 0x34, 0x05, 0x46, -0x2B, 0xB1, 0xD4, 0xF8, 0xCC, 0x21, 0x22, 0xF0, 0x08, 0x02, 0xC4, 0xF8, 0xCC, 0x21, 0x74, 0x4A, 0x92, 0xF8, 0x04, 0x21, -0x4A, 0xB1, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x08, 0xF2, 0xB1, 0x18, 0xD1, 0xF8, 0x90, 0x01, 0x80, 0x78, 0x01, 0x28, -0x6D, 0xD0, 0x6E, 0x4B, 0x97, 0xF8, 0x3D, 0x00, 0xDB, 0x6C, 0x9D, 0xF8, 0x1C, 0x10, 0x98, 0x47, 0x4F, 0xF4, 0xA4, 0x6B, -0x00, 0x23, 0x2B, 0x60, 0x0B, 0xFB, 0x08, 0xFB, 0x97, 0xF8, 0x3D, 0x20, 0x6A, 0x76, 0x06, 0xEB, 0x0B, 0x0A, 0xDA, 0xF8, -0x64, 0x01, 0xBA, 0xF8, 0x68, 0x21, 0xAB, 0x76, 0x9A, 0xF8, 0x8B, 0x31, 0x6B, 0x77, 0x9A, 0xF8, 0x8C, 0x31, 0xAB, 0x77, -0xDA, 0xF8, 0xCC, 0x31, 0xC5, 0xF8, 0x12, 0x00, 0x13, 0xF0, 0x02, 0x04, 0xEA, 0x82, 0x1B, 0xD0, 0x0B, 0xF1, 0xEC, 0x09, -0x13, 0xF0, 0x04, 0x04, 0xB1, 0x44, 0x6E, 0xD1, 0x21, 0x46, 0x13, 0xF0, 0x08, 0x02, 0x05, 0xF1, 0x18, 0x03, 0x18, 0xBF, -0x0B, 0xF5, 0x8C, 0x72, 0x05, 0xF1, 0x04, 0x0C, 0x02, 0x93, 0x05, 0xF1, 0x08, 0x03, 0xCD, 0xE9, 0x00, 0x3C, 0x18, 0xBF, -0x92, 0x19, 0x48, 0x46, 0x05, 0xF1, 0x10, 0x03, 0xFE, 0xF7, 0x22, 0xFC, 0x28, 0x46, 0xEC, 0x60, 0xF9, 0xF7, 0xF0, 0xFD, -0x03, 0x21, 0x06, 0x20, 0xF9, 0xF7, 0xB6, 0xFF, 0x0F, 0xE0, 0x06, 0x20, 0xFA, 0xF7, 0x5A, 0xF8, 0x02, 0x28, 0x3F, 0xF4, -0x69, 0xAF, 0x47, 0x49, 0x47, 0x48, 0x4F, 0xF4, 0xA3, 0x72, 0xFB, 0xF7, 0x91, 0xFE, 0x61, 0xE7, 0x01, 0x20, 0x01, 0xF0, -0xB1, 0xF8, 0x3A, 0x6B, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x66, 0x53, 0x07, 0xC6, 0xF8, 0xB0, 0x24, 0x7F, 0xF5, -0x65, 0xAF, 0xD6, 0xF8, 0xCC, 0x31, 0x00, 0x20, 0x23, 0xF0, 0x0E, 0x03, 0xC6, 0xF8, 0xCC, 0x31, 0x09, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0xD1, 0xF8, 0xCC, 0x11, 0x11, 0xF0, 0x0C, 0x0F, 0x8C, 0xD0, 0x00, 0x2B, 0x8A, 0xD1, 0xDF, 0xF8, 0xD8, 0x90, -0x02, 0xF5, 0xB2, 0x72, 0xB4, 0x18, 0x9A, 0x46, 0xCB, 0x46, 0x58, 0x46, 0x06, 0x22, 0x21, 0x46, 0x0E, 0xF0, 0xDC, 0xF8, -0x0B, 0xF1, 0x14, 0x0B, 0x18, 0xB3, 0x0A, 0xF1, 0x01, 0x0A, 0xBA, 0xF1, 0x05, 0x0F, 0xF2, 0xD1, 0x2C, 0x49, 0x50, 0x22, -0x01, 0xF1, 0x14, 0x00, 0x0E, 0xF0, 0xFE, 0xF8, 0x29, 0x48, 0x21, 0x46, 0x06, 0x22, 0x0E, 0xF0, 0xF9, 0xF8, 0x01, 0x23, -0xA9, 0xF8, 0x06, 0x30, 0x89, 0xF8, 0x08, 0x30, 0x65, 0xE7, 0x0B, 0xF5, 0xB2, 0x70, 0x0B, 0xF5, 0x86, 0x71, 0x31, 0x44, -0x30, 0x44, 0x05, 0x91, 0xFA, 0xF7, 0x28, 0xFF, 0xDA, 0xF8, 0xCC, 0x31, 0x05, 0x99, 0x04, 0x46, 0x83, 0xE7, 0x0A, 0xEB, -0x8A, 0x03, 0x09, 0xEB, 0x83, 0x03, 0x4F, 0xEA, 0x8A, 0x0B, 0x9A, 0x79, 0x14, 0x23, 0x03, 0xFB, 0x0A, 0x93, 0x4A, 0xB1, -0xDB, 0x79, 0x53, 0xB1, 0x0B, 0xEB, 0x0A, 0x03, 0x09, 0xEB, 0x83, 0x09, 0x01, 0x23, 0x89, 0xF8, 0x08, 0x30, 0x42, 0xE7, -0x01, 0x22, 0x9A, 0x71, 0xF4, 0xE7, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x08, 0x64, 0x00, 0x92, 0xB4, 0xF8, 0x68, 0x31, -0xB4, 0xF8, 0x66, 0x21, 0xB4, 0xF8, 0x64, 0x11, 0x0C, 0x48, 0xFB, 0xF7, 0x9F, 0xFB, 0xD4, 0xF8, 0xCC, 0x31, 0x23, 0xF0, -0x0C, 0x03, 0xC4, 0xF8, 0xCC, 0x31, 0xDF, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x2C, 0x19, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA8, 0xB9, 0x15, 0x00, 0xCC, 0x35, 0x17, 0x00, -0xCC, 0xB9, 0x15, 0x00, 0x08, 0xB5, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0F, 0xDB, 0x06, 0x20, -0xF9, 0xF7, 0xB6, 0xFF, 0x04, 0x28, 0x06, 0xD0, 0x06, 0x20, 0xF9, 0xF7, 0xB1, 0xFF, 0x09, 0x28, 0x01, 0xD0, 0x00, 0x20, -0x08, 0xBD, 0x00, 0xF0, 0xF5, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0xA6, 0xFF, 0x04, 0x28, 0xEA, 0xD0, -0x06, 0x20, 0xF9, 0xF7, 0xA1, 0xFF, 0x00, 0x28, 0xE5, 0xD0, 0x06, 0x20, 0xF9, 0xF7, 0x9C, 0xFF, 0x09, 0x28, 0xE0, 0xD0, -0x04, 0x49, 0x05, 0x48, 0x4F, 0xF4, 0x16, 0x72, 0xFB, 0xF7, 0xD4, 0xFD, 0xD9, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xE4, 0xB9, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x03, 0xDB, 0x00, 0xF0, 0xCD, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0x7E, 0xFF, 0x04, 0x28, 0xF6, 0xD0, -0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x79, 0x22, 0xFB, 0xF7, 0xB6, 0xFD, 0x00, 0xF0, 0xBE, 0xFC, 0x00, 0x20, 0x08, 0xBD, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x6C, 0xBA, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, 0xAD, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0x5E, 0xFF, -0x09, 0x28, 0xF6, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x29, 0x32, 0xFB, 0xF7, 0x96, 0xFD, 0x00, 0xF0, 0x9E, 0xFC, -0x00, 0x20, 0x08, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x9C, 0xBA, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, 0x8D, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, -0xF9, 0xF7, 0x3E, 0xFF, 0x09, 0x28, 0xF6, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x43, 0x32, 0xFB, 0xF7, 0x76, 0xFD, -0x00, 0xF0, 0x7E, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x9C, 0xBA, 0x15, 0x00, -0x37, 0x4B, 0x30, 0xB5, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x83, 0xB0, 0x37, 0xDB, 0x06, 0x20, 0xF9, 0xF7, -0x21, 0xFF, 0x09, 0x28, 0x10, 0xD0, 0x32, 0x4B, 0x9A, 0x7D, 0x01, 0x2A, 0x50, 0xD0, 0x1B, 0x68, 0x93, 0xF8, 0x3B, 0x30, -0x02, 0x2B, 0x3A, 0xD9, 0x03, 0x2B, 0x3F, 0xD1, 0x2D, 0x48, 0x01, 0xF0, 0xF5, 0xFC, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, -0x29, 0x4C, 0xA2, 0x6A, 0x23, 0x7D, 0x00, 0x25, 0xC2, 0xF8, 0xCC, 0x51, 0x00, 0x2B, 0x40, 0xD1, 0xA0, 0x68, 0x0C, 0x30, -0xF9, 0xF7, 0x90, 0xFC, 0xA3, 0x7D, 0x00, 0x22, 0x01, 0x2B, 0xA2, 0x60, 0x01, 0xD0, 0xA1, 0x7F, 0x61, 0xB3, 0x00, 0x24, -0x01, 0xA9, 0x68, 0x46, 0xCD, 0xE9, 0x00, 0x44, 0x00, 0xF0, 0x8C, 0xFA, 0xDD, 0xE9, 0x00, 0x01, 0x22, 0x46, 0x00, 0xF0, -0x2D, 0xFB, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0xE9, 0xFE, 0x04, 0x28, 0xC2, 0xD0, 0x06, 0x20, -0xF9, 0xF7, 0xE4, 0xFE, 0x09, 0x28, 0xBD, 0xD0, 0x15, 0x49, 0x16, 0x48, 0x40, 0xF2, 0x93, 0x22, 0xFB, 0xF7, 0x1C, 0xFD, -0xB6, 0xE7, 0x00, 0x21, 0x01, 0x20, 0x01, 0xF0, 0x2B, 0xF8, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x01, 0x20, 0x00, 0xF0, -0x35, 0xFF, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0x23, 0xFE, 0xDA, 0xE7, 0x01, 0xF0, 0x48, 0xF9, -0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x06, 0x22, 0x0C, 0x21, 0x41, 0xF6, 0x04, 0x00, 0xF9, 0xF7, 0x85, 0xFC, 0x25, 0x75, -0xB6, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x08, 0xAC, 0x0F, 0x00, 0x70, 0x79, 0x15, 0x00, -0xC8, 0xBA, 0x15, 0x00, 0x4B, 0x88, 0x03, 0xF0, 0xFC, 0x03, 0xB0, 0x2B, 0x10, 0xB5, 0x0C, 0x46, 0x13, 0xD0, 0x10, 0x2B, -0x0A, 0xD0, 0x30, 0x2B, 0x08, 0xD0, 0xC0, 0x2B, 0x01, 0xD0, 0xA0, 0x2B, 0x14, 0xD1, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, -0x01, 0xF0, 0x78, 0xBB, 0x06, 0x20, 0xF9, 0xF7, 0x9B, 0xFE, 0x07, 0x28, 0x13, 0xD0, 0x00, 0x20, 0x10, 0xBD, 0x06, 0x20, -0xF9, 0xF7, 0x94, 0xFE, 0x05, 0x28, 0xF8, 0xD1, 0x20, 0x46, 0x01, 0xF0, 0x37, 0xFA, 0xF4, 0xE7, 0xD0, 0x2B, 0xF2, 0xD1, -0x23, 0x7B, 0x08, 0x2B, 0xEF, 0xD1, 0x20, 0x46, 0x01, 0xF0, 0xD4, 0xFB, 0xEB, 0xE7, 0x20, 0x46, 0x01, 0xF0, 0x70, 0xFA, -0xE7, 0xE7, 0x00, 0xBF, 0x10, 0xB5, 0x06, 0x20, 0x0C, 0x46, 0xF9, 0xF7, 0x7B, 0xFE, 0x06, 0x28, 0x01, 0xD0, 0x00, 0x20, -0x10, 0xBD, 0x60, 0x88, 0x01, 0xF0, 0xC8, 0xFC, 0x00, 0x20, 0x10, 0xBD, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, -0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4C, 0x0D, 0x4A, 0x23, 0x68, 0xD2, 0x7D, 0x01, 0x33, -0x01, 0x2A, 0x23, 0x60, 0x0C, 0xD0, 0x33, 0xB1, 0x07, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, -0x62, 0xB6, 0x07, 0x48, 0xFB, 0xF7, 0x1C, 0xFA, 0x00, 0x20, 0x10, 0xBD, 0x00, 0xF0, 0x16, 0xFB, 0x23, 0x68, 0xEE, 0xE7, -0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x28, 0xBB, 0x15, 0x00, 0x38, 0xB5, 0x06, 0x20, -0x0D, 0x46, 0xF9, 0xF7, 0x43, 0xFE, 0x30, 0xB9, 0x04, 0x46, 0x29, 0x88, 0xA8, 0x78, 0x00, 0xF0, 0xB7, 0xFD, 0x20, 0x46, -0x38, 0xBD, 0x02, 0x20, 0x38, 0xBD, 0x00, 0xBF, 0x8B, 0x4B, 0x2D, 0xE9, 0xF0, 0x4F, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x89, 0xB0, 0x0C, 0x46, 0xC0, 0xF2, 0xFD, 0x80, 0x25, 0x78, 0x00, 0x2D, 0x40, 0xF0, 0xF2, 0x80, 0x63, 0x78, -0x00, 0x93, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x03, 0xF4, 0x82, 0x4B, 0xDF, 0xF8, 0x18, 0xA2, 0x1F, 0x19, 0x4F, 0xF4, -0xA4, 0x6C, 0x97, 0xF8, 0x22, 0xE0, 0x0C, 0xFB, 0x0E, 0xAC, 0x0C, 0xF5, 0xCE, 0x73, 0x0F, 0xCB, 0x07, 0xF1, 0xB8, 0x06, -0x07, 0xC6, 0xDC, 0xF8, 0xCC, 0x81, 0x33, 0x70, 0x18, 0xF0, 0x01, 0x0F, 0x03, 0xD0, 0x7B, 0x68, 0x43, 0xF0, 0x01, 0x03, -0x7B, 0x60, 0x18, 0xF0, 0x02, 0x0F, 0x58, 0xD0, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x0E, 0xA3, 0x03, 0xF1, 0xEC, 0x0B, -0x00, 0x9E, 0x01, 0x93, 0xBB, 0xE8, 0x0F, 0x00, 0xB4, 0x46, 0x6E, 0x4E, 0x4F, 0xF4, 0x1E, 0x79, 0x09, 0xFB, 0x0C, 0x69, -0x09, 0xF1, 0xC8, 0x0C, 0xAC, 0xE8, 0x0F, 0x00, 0x9B, 0xE8, 0x0F, 0x00, 0xD9, 0xF8, 0x04, 0xB0, 0x18, 0xF0, 0x08, 0x0F, -0x4B, 0xF0, 0x02, 0x06, 0x8C, 0xE8, 0x0F, 0x00, 0xC9, 0xF8, 0x04, 0x60, 0x15, 0xD0, 0x01, 0x9B, 0x03, 0xF5, 0x8C, 0x76, -0x0F, 0xCE, 0x09, 0xF1, 0xF4, 0x0C, 0xAC, 0xE8, 0x0F, 0x00, 0x0F, 0xCE, 0xAC, 0xE8, 0x0F, 0x00, 0x0F, 0xCE, 0xAC, 0xE8, -0x0F, 0x00, 0x96, 0xE8, 0x03, 0x00, 0x8C, 0xE8, 0x03, 0x00, 0x4B, 0xF0, 0x22, 0x03, 0xC9, 0xF8, 0x04, 0x30, 0x18, 0xF0, -0x04, 0x0F, 0x16, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, 0x00, 0x9E, 0x03, 0xFB, 0x0E, 0xA3, 0x03, 0xF5, 0x86, 0x73, 0x93, 0xE8, -0x07, 0x00, 0xB4, 0x46, 0x51, 0x4E, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x0C, 0x63, 0x03, 0xF1, 0xE8, 0x06, 0x86, 0xE8, -0x07, 0x00, 0x5A, 0x68, 0x42, 0xF0, 0x04, 0x02, 0x5A, 0x60, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x0E, 0xA1, 0xEC, 0x31, -0x38, 0x46, 0xFE, 0xF7, 0x81, 0xF8, 0x48, 0x4B, 0xD3, 0xF8, 0x14, 0x33, 0x98, 0x47, 0x47, 0x4B, 0x1B, 0x78, 0x00, 0x2B, -0x66, 0xD0, 0x00, 0x9A, 0x42, 0x49, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x13, 0x93, 0xF8, 0xB8, 0x20, 0x00, 0x23, -0xCD, 0xE9, 0x02, 0x33, 0xCD, 0xE9, 0x05, 0x33, 0x04, 0x93, 0x07, 0x93, 0x00, 0x2A, 0x70, 0xD0, 0x01, 0x3A, 0xD2, 0xB2, -0xB8, 0x34, 0x02, 0xAE, 0x0D, 0xF1, 0x14, 0x0C, 0x9B, 0x46, 0x0D, 0xF1, 0x09, 0x03, 0x01, 0x92, 0x0C, 0x44, 0x03, 0xEB, -0x02, 0x09, 0x31, 0x46, 0x62, 0x46, 0x4F, 0xF0, 0x01, 0x08, 0x40, 0xF2, 0x05, 0x2A, 0x07, 0xE0, 0x01, 0xF8, 0x01, 0x0B, -0x49, 0x45, 0x82, 0xF8, 0x00, 0x80, 0x02, 0xF1, 0x01, 0x02, 0x14, 0xD0, 0x14, 0xF8, 0x01, 0x0F, 0x00, 0xF0, 0x7F, 0x03, -0x02, 0x3B, 0xDB, 0xB2, 0x09, 0x2B, 0x08, 0xFA, 0x03, 0xFE, 0xED, 0xD8, 0x1E, 0xEA, 0x0A, 0x0F, 0xEA, 0xD0, 0x01, 0xF8, -0x01, 0x0B, 0x49, 0x45, 0x82, 0xF8, 0x00, 0xB0, 0x02, 0xF1, 0x01, 0x02, 0xEA, 0xD1, 0x01, 0x9A, 0x0C, 0xF1, 0x01, 0x03, -0x1A, 0x44, 0x11, 0x46, 0x00, 0x9A, 0x10, 0x46, 0x1E, 0x4A, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x00, 0x24, 0x00, 0xE0, -0x01, 0x33, 0x9C, 0xF8, 0x00, 0x20, 0x9C, 0x46, 0x2A, 0xB1, 0x62, 0x19, 0x30, 0x78, 0x82, 0xF8, 0xB9, 0x00, 0x01, 0x35, -0xED, 0xB2, 0x8B, 0x42, 0x06, 0xF1, 0x01, 0x06, 0xF0, 0xD1, 0x00, 0x9A, 0x11, 0x46, 0x13, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x01, 0x23, 0x83, 0xF8, 0xB8, 0x50, 0x38, 0x46, 0xFE, 0xF7, 0x1D, 0xFA, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x01, 0x20, 0x00, 0xF0, 0x98, 0xFD, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x06, 0x20, 0xF9, 0xF7, -0x2D, 0xFD, 0x03, 0x28, 0x3F, 0xF4, 0xFD, 0xAE, 0x08, 0x49, 0x09, 0x48, 0x40, 0xF2, 0xF1, 0x12, 0xFB, 0xF7, 0x64, 0xFB, -0xF5, 0xE6, 0x15, 0x46, 0xD9, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xB8, 0x34, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x40, 0xBB, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0xB5, 0x06, 0x20, -0xF9, 0xF7, 0x0E, 0xFD, 0x08, 0x28, 0x06, 0xD0, 0x06, 0x20, 0xF9, 0xF7, 0x09, 0xFD, 0x09, 0x28, 0x33, 0xD0, 0x00, 0x20, -0x70, 0xBD, 0x22, 0x4A, 0x22, 0x4B, 0x14, 0x68, 0x94, 0xF8, 0x3D, 0x60, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x06, 0x36, -0x06, 0x23, 0x1A, 0x46, 0x00, 0x21, 0x4B, 0x20, 0x96, 0xF8, 0x6C, 0x50, 0xF9, 0xF7, 0x52, 0xFA, 0x94, 0xF8, 0x3A, 0x20, -0x02, 0x71, 0x22, 0x8F, 0x42, 0x80, 0x94, 0xF8, 0x3D, 0x20, 0x02, 0x70, 0xF9, 0xF7, 0x78, 0xFA, 0xD6, 0xF8, 0xB0, 0x34, -0x15, 0x4A, 0xA1, 0x8E, 0x4F, 0xF4, 0x1E, 0x70, 0x03, 0xF0, 0x01, 0x03, 0x00, 0xFB, 0x05, 0x22, 0xC3, 0xF1, 0x02, 0x03, -0x49, 0xBA, 0x02, 0x2B, 0x82, 0xF8, 0x30, 0x30, 0x91, 0x86, 0x08, 0xD0, 0x00, 0x20, 0x00, 0xF0, 0x39, 0xFD, 0x00, 0x20, -0x70, 0xBD, 0x00, 0xF0, 0x1B, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF9, 0xF7, -0x27, 0xFA, 0x00, 0x22, 0x02, 0x70, 0x94, 0xF8, 0x3D, 0x20, 0x42, 0x70, 0xF9, 0xF7, 0x50, 0xFA, 0xE8, 0xE7, 0x00, 0xBF, -0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x70, 0xB5, 0x06, 0x46, 0x06, 0x20, 0x0D, 0x46, -0xF9, 0xF7, 0xB4, 0xFC, 0x2B, 0x46, 0x02, 0x46, 0x0A, 0x49, 0x04, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xFB, 0xF7, 0xC2, 0xF8, -0x08, 0x4B, 0x1D, 0x42, 0x04, 0xD0, 0x24, 0xF0, 0x02, 0x01, 0x89, 0xB2, 0x05, 0x29, 0x00, 0xD0, 0x70, 0xBD, 0x30, 0x46, -0xE6, 0xF7, 0xDC, 0xFC, 0x01, 0x23, 0x86, 0xF8, 0x5E, 0x30, 0x70, 0xBD, 0x70, 0xBB, 0x15, 0x00, 0x00, 0x00, 0x03, 0x40, -0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0xDB, 0xBD, 0xE8, 0x08, 0x40, 0x09, 0x48, -0xF9, 0xF7, 0x74, 0xBE, 0x08, 0x4B, 0xDB, 0x68, 0x00, 0x2B, 0xF6, 0xD0, 0x07, 0x48, 0x08, 0x49, 0x70, 0x22, 0xFB, 0xF7, -0xC3, 0xFA, 0xBD, 0xE8, 0x08, 0x40, 0x02, 0x48, 0xF9, 0xF7, 0x66, 0xBE, 0x38, 0x36, 0x17, 0x00, 0x70, 0xBA, 0x17, 0x00, -0x64, 0xBA, 0x17, 0x00, 0x80, 0xBB, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x03, 0x4A, 0x04, 0x4B, 0x00, 0x21, 0x06, 0x20, -0xD1, 0x75, 0x19, 0x60, 0xF9, 0xF7, 0xC4, 0xBB, 0x4C, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x70, 0xB5, 0x11, 0x4B, -0x1E, 0x68, 0x00, 0x23, 0x03, 0x60, 0x0B, 0x60, 0x96, 0xF8, 0x22, 0x30, 0xDB, 0x07, 0x05, 0x46, 0x0C, 0x46, 0x08, 0xD5, -0x30, 0x46, 0x03, 0xF0, 0x57, 0xFB, 0x58, 0xB1, 0x83, 0x1C, 0x2B, 0x60, 0xC3, 0x6A, 0x23, 0x60, 0x70, 0xBD, 0x06, 0xF1, -0x22, 0x00, 0x28, 0x60, 0x03, 0xF0, 0x46, 0xFB, 0x00, 0x28, 0xF5, 0xD1, 0x32, 0x8D, 0x4F, 0xF6, 0xFF, 0x73, 0x9A, 0x42, -0x1C, 0xBF, 0x28, 0x36, 0x26, 0x60, 0x70, 0xBD, 0x64, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x3B, 0x4C, 0x4F, 0xF4, -0xBA, 0x73, 0x06, 0x22, 0x84, 0xB0, 0x80, 0x46, 0x0F, 0x46, 0x4F, 0xF4, 0x80, 0x50, 0x04, 0x21, 0x25, 0x68, 0xF9, 0xF7, -0x91, 0xF9, 0x95, 0xF8, 0x3D, 0x30, 0x80, 0xF8, 0x6E, 0x31, 0x04, 0x46, 0x0F, 0xCD, 0x4F, 0xF0, 0x00, 0x0C, 0x04, 0xF1, -0xFC, 0x06, 0xC4, 0xF8, 0x68, 0xC1, 0xA4, 0xF8, 0x6C, 0xC1, 0x0F, 0xC6, 0x0F, 0xCD, 0x0F, 0xC6, 0x01, 0x23, 0x2A, 0x68, -0x32, 0x70, 0x84, 0xF8, 0x70, 0x31, 0xB8, 0xF1, 0x00, 0x0F, 0x19, 0xD0, 0xD8, 0xF8, 0x00, 0x00, 0xC4, 0xF8, 0x60, 0x01, -0xB8, 0xF8, 0x04, 0x30, 0xA4, 0xF8, 0x64, 0x31, 0xCF, 0xB1, 0x38, 0x68, 0x20, 0x60, 0xBB, 0x88, 0xA3, 0x80, 0x01, 0x23, -0x84, 0xF8, 0x6F, 0x31, 0x20, 0x46, 0xF9, 0xF7, 0x95, 0xF9, 0x01, 0x21, 0x06, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x41, -0xF9, 0xF7, 0x58, 0xBB, 0x1C, 0x4B, 0x18, 0x68, 0x9B, 0x88, 0xC4, 0xF8, 0x60, 0x01, 0xA4, 0xF8, 0x64, 0x31, 0x00, 0x2F, -0xE5, 0xD1, 0x19, 0x4B, 0x02, 0x93, 0x93, 0xF8, 0xFD, 0x50, 0x93, 0xF8, 0xFC, 0x00, 0x8D, 0xF8, 0x05, 0x50, 0x03, 0xF1, -0x54, 0x02, 0x03, 0x92, 0x84, 0xF8, 0x6F, 0x71, 0x0D, 0xF1, 0x08, 0x0C, 0x06, 0x26, 0xB8, 0xB1, 0x5C, 0xF8, 0x27, 0x30, -0x16, 0xFB, 0x00, 0x30, 0xDA, 0x78, 0x92, 0x07, 0x0D, 0xD4, 0x94, 0xF8, 0x6F, 0x21, 0x51, 0x1C, 0x84, 0xF8, 0x6F, 0x11, -0x02, 0xEB, 0x42, 0x02, 0x19, 0x68, 0x44, 0xF8, 0x12, 0x10, 0x04, 0xEB, 0x42, 0x02, 0x99, 0x88, 0x91, 0x80, 0x06, 0x33, -0x83, 0x42, 0xEB, 0xD1, 0x00, 0x2F, 0xC1, 0xD1, 0x28, 0x46, 0x01, 0x27, 0xE1, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, -0xAC, 0xB2, 0x15, 0x00, 0x5A, 0xB9, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x8B, 0x78, 0x0D, 0x46, 0x80, 0x46, 0x17, 0x46, -0x1B, 0xB9, 0x37, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x49, 0xDB, 0x36, 0x4C, 0xDF, 0xF8, 0xEC, 0xA0, 0x4F, 0xF0, 0x00, 0x09, -0x4F, 0xF4, 0xBA, 0x73, 0x06, 0x22, 0x04, 0x21, 0x41, 0xF2, 0x02, 0x00, 0xDA, 0xF8, 0x00, 0xB0, 0x84, 0xF8, 0x17, 0x90, -0xF9, 0xF7, 0x04, 0xF9, 0x04, 0x46, 0x28, 0x68, 0x20, 0x60, 0x4F, 0xF0, 0x01, 0x0C, 0xB5, 0xF8, 0x04, 0xE0, 0x84, 0xF8, -0x6F, 0xC1, 0x5E, 0x46, 0x0F, 0xCE, 0x04, 0xF1, 0xFC, 0x05, 0xA4, 0xF8, 0x04, 0xE0, 0x0F, 0xC5, 0x0F, 0xCE, 0x0F, 0xC5, -0x33, 0x68, 0x2B, 0x70, 0x84, 0xF8, 0x70, 0xC1, 0xA4, 0xF8, 0x6C, 0x91, 0xC4, 0xF8, 0x68, 0x91, 0x9B, 0xF8, 0x3D, 0x30, -0x84, 0xF8, 0x6E, 0x31, 0xD8, 0xF8, 0x00, 0x00, 0xC4, 0xF8, 0x60, 0x01, 0xB8, 0xF8, 0x04, 0x30, 0xA4, 0xF8, 0x64, 0x31, -0x1F, 0xB1, 0xE3, 0x78, 0x43, 0xEA, 0x0C, 0x03, 0xE3, 0x70, 0xB7, 0xFA, 0x87, 0xF2, 0x20, 0x46, 0x52, 0x09, 0x8A, 0xF8, -0x15, 0x20, 0xF9, 0xF7, 0x01, 0xF9, 0xBD, 0xE8, 0xF8, 0x4F, 0x02, 0x21, 0x06, 0x20, 0xF9, 0xF7, 0xC5, 0xBA, 0x12, 0x4B, -0x10, 0x4C, 0xD3, 0xF8, 0x24, 0x31, 0x5B, 0x06, 0xB0, 0xD5, 0xE3, 0x7D, 0x01, 0x2B, 0xAD, 0xD1, 0x0E, 0x4A, 0x63, 0x70, -0x13, 0x68, 0x0E, 0x49, 0x0E, 0x48, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x08, 0x60, 0x0D, 0x4A, 0xC4, 0xF8, 0x0C, 0x80, -0x06, 0x21, 0x41, 0xF6, 0x09, 0x00, 0x25, 0x61, 0xA7, 0x75, 0xF8, 0xF7, 0x0D, 0xFF, 0xBD, 0xE8, 0xF8, 0x4F, 0xDC, 0xF7, -0xF9, 0xB8, 0x00, 0xBF, 0x48, 0x30, 0x34, 0x40, 0x4C, 0x36, 0x17, 0x00, 0x00, 0x00, 0x50, 0x40, 0x34, 0x04, 0x32, 0x40, -0x20, 0x04, 0x32, 0x40, 0x40, 0x1F, 0xDC, 0x05, 0xA0, 0x86, 0x01, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, -0x27, 0x4D, 0xDF, 0xF8, 0xA0, 0x80, 0xAF, 0x7D, 0xD8, 0xF8, 0x00, 0x90, 0x4F, 0xF4, 0xBA, 0x73, 0x06, 0x22, 0x04, 0x21, -0x41, 0xF2, 0x02, 0x00, 0xF9, 0xF7, 0x8A, 0xF8, 0x06, 0x21, 0x04, 0x46, 0x41, 0xF6, 0x09, 0x00, 0xF8, 0xF7, 0x92, 0xFF, -0xD5, 0xE9, 0x03, 0x23, 0x4F, 0xF0, 0x00, 0x0C, 0x85, 0xF8, 0x17, 0xC0, 0x10, 0x68, 0xC4, 0xF8, 0x60, 0x01, 0x18, 0x68, -0x95, 0x88, 0x20, 0x60, 0x4F, 0xF0, 0x01, 0x0E, 0xB3, 0xF8, 0x04, 0xA0, 0x84, 0xF8, 0x6F, 0xE1, 0x4E, 0x46, 0x0F, 0xCE, -0xA4, 0xF8, 0x64, 0x51, 0x04, 0xF1, 0xFC, 0x05, 0xA4, 0xF8, 0x04, 0xA0, 0x0F, 0xC5, 0x0F, 0xCE, 0x0F, 0xC5, 0x33, 0x68, -0x2B, 0x70, 0x84, 0xF8, 0x70, 0xE1, 0xA4, 0xF8, 0x6C, 0xC1, 0xC4, 0xF8, 0x68, 0xC1, 0x99, 0xF8, 0x3D, 0x30, 0x84, 0xF8, -0x6E, 0x31, 0x1F, 0xB1, 0xE3, 0x78, 0x43, 0xEA, 0x0E, 0x03, 0xE3, 0x70, 0xB7, 0xFA, 0x87, 0xF3, 0x20, 0x46, 0x5B, 0x09, -0x88, 0xF8, 0x15, 0x30, 0xF9, 0xF7, 0x7E, 0xF8, 0xBD, 0xE8, 0xF0, 0x47, 0x02, 0x21, 0x06, 0x20, 0xF9, 0xF7, 0x42, 0xBA, -0x4C, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x30, 0xB5, 0x14, 0x4A, 0x14, 0x4B, 0x11, 0x68, 0x14, 0x4A, 0x91, 0xF8, -0x3D, 0x10, 0x54, 0x6C, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0xF2, 0x99, 0x18, 0x85, 0xB0, 0xD1, 0xF8, 0x90, 0x31, -0x91, 0xF8, 0xC5, 0x51, 0x8D, 0xF8, 0x05, 0x50, 0x0A, 0x46, 0x99, 0x78, 0xD2, 0xF8, 0x94, 0x21, 0x8D, 0xF8, 0x04, 0x10, -0x19, 0x88, 0x02, 0x92, 0x1A, 0x79, 0xAD, 0xF8, 0x06, 0x10, 0x8D, 0xF8, 0x0C, 0x20, 0xDB, 0x78, 0x8D, 0xF8, 0x0D, 0x30, -0x01, 0x46, 0x01, 0xA8, 0xA0, 0x47, 0x05, 0xB0, 0x30, 0xBD, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0C, 0x48, 0xF9, 0xF7, 0xE2, 0xFC, 0x0B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x04, 0x46, 0x05, 0xDB, 0x04, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, 0x10, 0x40, 0xF9, 0xF7, 0x33, 0xB8, 0x00, 0x28, -0xF7, 0xD1, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x0D, 0x22, 0xFB, 0xF7, 0xDD, 0xF8, 0xF0, 0xE7, 0x70, 0xBA, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA8, 0xAB, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x02, 0x23, 0x04, 0x46, -0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF8, 0xF7, 0xE8, 0xFF, 0x06, 0x22, 0x02, 0x23, 0x06, 0x46, 0x05, 0x21, -0x41, 0xF2, 0x17, 0x40, 0xF8, 0xF7, 0xE0, 0xFF, 0x38, 0x4F, 0x39, 0x49, 0x05, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xFA, 0xF7, -0x91, 0xFE, 0xFF, 0xF7, 0xE1, 0xFD, 0x20, 0x46, 0xE5, 0xF7, 0x4A, 0xF8, 0x4F, 0xF0, 0x00, 0x08, 0x94, 0xF8, 0x6C, 0x00, -0x7B, 0x6A, 0x98, 0x47, 0x86, 0xF8, 0x00, 0x80, 0x94, 0xF8, 0x63, 0x30, 0x73, 0x70, 0x2F, 0x48, 0xA6, 0xF1, 0x0C, 0x01, -0xF9, 0xF7, 0x52, 0xFC, 0x94, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x3F, 0xD1, 0x94, 0xF8, 0x6C, 0x30, 0xFF, 0x2B, 0x0D, 0xD0, -0x01, 0x23, 0x00, 0x21, 0x06, 0x22, 0x0C, 0x20, 0xF8, 0xF7, 0xB6, 0xFF, 0x01, 0x46, 0x94, 0xF8, 0x6C, 0x30, 0x01, 0xF8, -0x0C, 0x39, 0x23, 0x48, 0xF9, 0xF7, 0x3C, 0xFC, 0x23, 0x6C, 0x6B, 0xB1, 0x01, 0x23, 0x00, 0x21, 0x06, 0x22, 0x39, 0x20, -0xF8, 0xF7, 0xA6, 0xFF, 0x01, 0x46, 0x94, 0xF8, 0x63, 0x30, 0x01, 0xF8, 0x0C, 0x39, 0x1B, 0x48, 0xF9, 0xF7, 0x2C, 0xFC, -0x00, 0x26, 0x2E, 0x70, 0x94, 0xF8, 0x63, 0x20, 0x18, 0x4B, 0x6A, 0x70, 0x93, 0xF8, 0x04, 0x31, 0x43, 0xB1, 0xD7, 0xF8, -0xD8, 0x31, 0x04, 0xF1, 0x9C, 0x00, 0x98, 0x47, 0xC4, 0xE9, 0x24, 0x66, 0xC4, 0xF8, 0x98, 0x60, 0x00, 0x23, 0xA5, 0xF1, -0x0C, 0x01, 0xC4, 0xF8, 0xCC, 0x31, 0x0E, 0x48, 0xF9, 0xF7, 0x12, 0xFC, 0xBD, 0xE8, 0xF0, 0x41, 0xFF, 0xF7, 0x6C, 0xBF, -0x41, 0x46, 0x04, 0x23, 0x06, 0x22, 0x1E, 0x20, 0xF8, 0xF7, 0x7A, 0xFF, 0x80, 0xF8, 0x02, 0x80, 0x94, 0xF8, 0x63, 0x30, -0xC3, 0x70, 0xA0, 0xF1, 0x0C, 0x01, 0x04, 0x48, 0xF9, 0xF7, 0xFE, 0xFB, 0xAE, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, -0xA8, 0xBB, 0x15, 0x00, 0x70, 0xBA, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x6A, 0x4B, 0xDF, 0xF8, -0xB4, 0xA1, 0x1D, 0x68, 0x83, 0xB0, 0x95, 0xF8, 0x3D, 0x20, 0x00, 0x92, 0x16, 0x46, 0x02, 0x23, 0x06, 0x22, 0x05, 0x21, -0x41, 0xF2, 0x19, 0x40, 0xF8, 0xF7, 0x54, 0xFF, 0x08, 0x23, 0x81, 0x46, 0x06, 0x22, 0x00, 0x21, 0x18, 0x20, 0xF8, 0xF7, -0x4D, 0xFF, 0x08, 0x23, 0x07, 0x46, 0x06, 0x22, 0x00, 0x21, 0x16, 0x20, 0xF8, 0xF7, 0x46, 0xFF, 0x4F, 0xF4, 0xA4, 0x64, -0x04, 0xFB, 0x06, 0xF4, 0x04, 0x23, 0x06, 0x46, 0x06, 0x22, 0x00, 0x21, 0x14, 0x20, 0xF8, 0xF7, 0x3B, 0xFF, 0x02, 0x23, -0x06, 0x22, 0x05, 0x21, 0x83, 0x46, 0x41, 0xF2, 0x17, 0x40, 0xF8, 0xF7, 0x33, 0xFF, 0x80, 0x46, 0xFF, 0xF7, 0x3A, 0xFD, -0x4F, 0xF0, 0x01, 0x02, 0x89, 0xF8, 0x00, 0x20, 0x95, 0xF8, 0x3D, 0x30, 0x89, 0xF8, 0x01, 0x30, 0x0A, 0xEB, 0x04, 0x03, -0x01, 0x93, 0x4B, 0x4B, 0xA9, 0xF1, 0x0C, 0x01, 0x03, 0xF1, 0x0C, 0x00, 0xF9, 0xF7, 0xAC, 0xFB, 0x01, 0x9B, 0xD3, 0xF8, -0x64, 0x01, 0xB3, 0xF8, 0x68, 0x21, 0xBA, 0x80, 0x44, 0x4B, 0x38, 0x60, 0x95, 0xF8, 0x3D, 0x20, 0xBA, 0x71, 0x03, 0xF1, -0x0C, 0x00, 0xA7, 0xF1, 0x0C, 0x01, 0xF9, 0xF7, 0x9B, 0xFB, 0x01, 0x9B, 0xD3, 0xF8, 0x90, 0x31, 0x04, 0xF5, 0xCE, 0x70, -0x9B, 0x78, 0x73, 0x71, 0x01, 0x21, 0x50, 0x44, 0xFD, 0xF7, 0xFE, 0xFD, 0x73, 0x79, 0x30, 0x60, 0x95, 0xF8, 0x3D, 0x20, -0x32, 0x71, 0x2B, 0xB9, 0xC1, 0x07, 0x4F, 0xD5, 0x36, 0x4B, 0x4F, 0xF4, 0x80, 0x62, 0x5A, 0x61, 0xA6, 0xF1, 0x0C, 0x01, -0x34, 0x48, 0xF9, 0xF7, 0x7F, 0xFB, 0x00, 0x9B, 0x32, 0x48, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x03, 0xA6, 0xAB, 0xF1, -0x0C, 0x01, 0xB6, 0xF8, 0x98, 0x31, 0xAB, 0xF8, 0x00, 0x30, 0x95, 0xF8, 0x3D, 0x30, 0x8B, 0xF8, 0x02, 0x30, 0xF9, 0xF7, -0x6D, 0xFB, 0xD6, 0xF8, 0xCC, 0x31, 0x1B, 0x07, 0x36, 0xD4, 0x04, 0xF5, 0xD6, 0x74, 0x00, 0x26, 0x26, 0x4F, 0xA2, 0x44, -0x34, 0x46, 0x08, 0x23, 0x06, 0x22, 0x00, 0x21, 0x1A, 0x20, 0xF8, 0xF7, 0xCF, 0xFE, 0x5A, 0xF8, 0x04, 0x3B, 0x03, 0x60, -0x46, 0x71, 0x95, 0xF8, 0x3D, 0x30, 0x83, 0x71, 0x04, 0x71, 0xA0, 0xF1, 0x0C, 0x01, 0x01, 0x36, 0x38, 0x46, 0xF9, 0xF7, -0x4F, 0xFB, 0x04, 0x2E, 0xE9, 0xD1, 0x01, 0x23, 0x88, 0xF8, 0x00, 0x30, 0x95, 0xF8, 0x3D, 0x30, 0x17, 0x48, 0x88, 0xF8, -0x01, 0x30, 0xA8, 0xF1, 0x0C, 0x01, 0xF9, 0xF7, 0x41, 0xFB, 0xFF, 0xF7, 0x9D, 0xFE, 0x31, 0x46, 0x06, 0x20, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x4F, 0xF9, 0xF7, 0xA4, 0xB8, 0xC2, 0x06, 0xB1, 0xD5, 0x0D, 0x4B, 0x04, 0x22, 0x5A, 0x61, 0xAD, 0xE7, -0x06, 0x22, 0x00, 0x21, 0x04, 0x23, 0x71, 0x20, 0xF8, 0xF7, 0x9E, 0xFE, 0x04, 0xF1, 0xEC, 0x03, 0x06, 0x46, 0x0A, 0xEB, -0x03, 0x00, 0xFD, 0xF7, 0x0F, 0xFE, 0x31, 0x46, 0x03, 0x46, 0x41, 0xF8, 0x0C, 0x39, 0x04, 0x48, 0xF9, 0xF7, 0x1E, 0xFB, -0xB3, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, 0xC4, 0x3C, 0x18, 0x00, 0x70, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0x06, 0x23, 0x2D, 0xE9, 0xF0, 0x41, 0x1A, 0x46, 0x04, 0x46, 0x0F, 0x46, 0x41, 0xF6, 0x05, 0x00, 0x0C, 0x21, 0xF8, 0xF7, -0x7B, 0xFE, 0x38, 0x4E, 0x94, 0xF8, 0xC0, 0x34, 0xB4, 0x62, 0x05, 0x46, 0x00, 0x2B, 0x3F, 0xD0, 0x35, 0x4B, 0x9B, 0x68, -0x00, 0x2B, 0x61, 0xD0, 0x93, 0xF8, 0x62, 0x20, 0x7A, 0xB9, 0x33, 0x49, 0x33, 0x4A, 0xD8, 0x6D, 0x08, 0x60, 0xB3, 0xF8, -0x60, 0x10, 0x11, 0x60, 0x93, 0xF8, 0x64, 0x20, 0x2A, 0xB1, 0x30, 0x49, 0x98, 0x6B, 0x30, 0x4A, 0x08, 0x60, 0x99, 0x8F, -0x11, 0x60, 0x2F, 0x4A, 0x12, 0x68, 0x00, 0x2A, 0x2C, 0xDB, 0xDF, 0xF8, 0xC4, 0x80, 0x00, 0x20, 0xDB, 0xF7, 0x86, 0xFE, -0x00, 0x22, 0xD8, 0xF8, 0xD8, 0x31, 0x84, 0xF8, 0xAC, 0x20, 0x04, 0xF1, 0xB0, 0x00, 0x98, 0x47, 0xD8, 0xF8, 0x10, 0x33, -0x20, 0x46, 0x98, 0x47, 0x2F, 0x80, 0x94, 0xF8, 0x63, 0x30, 0xAB, 0x70, 0xB3, 0x7D, 0x01, 0x2B, 0x08, 0xBF, 0xEB, 0x70, -0xB3, 0x7F, 0xA3, 0xF1, 0x01, 0x03, 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, 0xA5, 0xF1, 0x0C, 0x02, 0x2B, 0x71, 0xB2, 0x60, -0xBD, 0xE8, 0xF0, 0x81, 0x1A, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0xD6, 0xDA, 0x13, 0x4B, 0x9B, 0x68, 0x00, 0x2B, 0xD2, 0xD0, -0x00, 0x21, 0x93, 0xF8, 0x62, 0x20, 0x1A, 0xB9, 0x93, 0xF8, 0x64, 0x20, 0x02, 0xB1, 0x01, 0x31, 0x1B, 0x68, 0x00, 0x2B, -0xF5, 0xD1, 0x01, 0x29, 0xC5, 0xD1, 0x11, 0x4A, 0x11, 0x49, 0x53, 0x70, 0x0B, 0x68, 0x11, 0x4A, 0x43, 0xF0, 0x00, 0x43, -0x0B, 0x60, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x43, 0xF4, 0xBB, 0x63, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0xB4, 0xE7, -0x07, 0x4B, 0x1B, 0x68, 0xB1, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x10, 0x00, 0x32, 0x40, -0x14, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x48, 0x30, 0x34, 0x40, 0x4C, 0x36, 0x17, 0x00, -0x34, 0x04, 0x32, 0x40, 0x20, 0x04, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0A, 0x46, 0x04, 0x46, 0x05, 0x49, -0x4F, 0xF4, 0x80, 0x70, 0xFA, 0xF7, 0xA4, 0xFC, 0x20, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x60, 0xBF, -0xBC, 0xBB, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0xC8, 0x81, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x00, 0x84, -0x0B, 0x46, 0x02, 0x46, 0x06, 0x46, 0x0F, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x66, 0x49, 0x94, 0xF8, 0x6C, 0x90, 0xFA, 0xF7, -0x89, 0xFC, 0x94, 0xF8, 0x62, 0x50, 0x15, 0xB9, 0x94, 0xF8, 0x64, 0x30, 0x3B, 0xB9, 0xBD, 0xE8, 0xF8, 0x43, 0x06, 0x22, -0x0C, 0x21, 0x41, 0xF6, 0x04, 0x00, 0xF8, 0xF7, 0x2B, 0xBE, 0x5E, 0x4B, 0x01, 0x25, 0x09, 0x21, 0x06, 0x20, 0x1D, 0x75, -0xF8, 0xF7, 0xB6, 0xFF, 0x94, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x79, 0xD1, 0xD4, 0xF8, 0x90, 0x31, 0x9D, 0x78, 0x2C, 0x1E, -0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x06, 0x85, 0x28, 0x46, 0x18, 0xBF, 0x01, 0x24, 0xE4, 0xF7, 0x11, 0xFD, 0x00, 0x28, -0x74, 0xD0, 0x20, 0x46, 0x4F, 0xF4, 0xC0, 0x71, 0xE6, 0xF7, 0x72, 0xF8, 0x04, 0x46, 0x01, 0x46, 0x28, 0x46, 0x00, 0x2C, -0x6C, 0xD0, 0xF8, 0xF7, 0x69, 0xF9, 0x4C, 0x4B, 0xD4, 0xF8, 0x48, 0x80, 0x4B, 0x49, 0xE8, 0x6D, 0x4F, 0xF4, 0x1E, 0x72, -0x02, 0xFB, 0x09, 0x39, 0xB1, 0xF8, 0xFC, 0x31, 0x59, 0xF8, 0x26, 0x2F, 0xC8, 0xF8, 0x6C, 0x20, 0x6F, 0xF0, 0x3F, 0x02, -0x88, 0xF8, 0x68, 0x20, 0xB9, 0xF8, 0x04, 0x20, 0xA8, 0xF8, 0x70, 0x20, 0xB5, 0xF8, 0x60, 0x20, 0xA8, 0xF8, 0x76, 0x20, -0x01, 0x33, 0xD9, 0xF8, 0x00, 0x20, 0xC8, 0xF8, 0x72, 0x00, 0x9B, 0xB2, 0xB9, 0xF8, 0x04, 0x00, 0xC8, 0xF8, 0x78, 0x20, -0x00, 0x22, 0xA8, 0xF8, 0x7C, 0x00, 0x88, 0xF8, 0x69, 0x20, 0x88, 0xF8, 0x6A, 0x20, 0x88, 0xF8, 0x6B, 0x20, 0x18, 0x01, -0xA1, 0xF8, 0xFC, 0x31, 0x35, 0x4B, 0xA8, 0xF8, 0x7E, 0x00, 0x26, 0x77, 0xA5, 0x65, 0x63, 0x65, 0x95, 0xF8, 0x6C, 0x30, -0x63, 0x77, 0x84, 0xF8, 0x33, 0x20, 0x84, 0xF8, 0x35, 0x20, 0xC0, 0x21, 0x20, 0x46, 0x07, 0xF0, 0x5F, 0xF9, 0x01, 0x28, -0x06, 0x46, 0x08, 0xF1, 0x68, 0x09, 0x34, 0xD0, 0x39, 0x46, 0x08, 0xF1, 0x80, 0x00, 0xFB, 0xF7, 0xDD, 0xFD, 0x02, 0x2E, -0x00, 0xF1, 0x18, 0x05, 0x3D, 0xD0, 0xE2, 0x6C, 0x53, 0x6A, 0x01, 0x3B, 0x2B, 0x44, 0x04, 0x35, 0xC2, 0xE9, 0x0A, 0x35, -0x05, 0x21, 0x20, 0x46, 0xE6, 0xF7, 0x20, 0xF8, 0x05, 0x46, 0x88, 0xB1, 0xBD, 0xE8, 0xF8, 0x83, 0x2C, 0x46, 0x4F, 0xF4, -0xA4, 0x65, 0x05, 0xFB, 0x06, 0x85, 0x28, 0x46, 0xE4, 0xF7, 0x9C, 0xFC, 0x00, 0x28, 0x8A, 0xD1, 0x01, 0x46, 0x28, 0x46, -0xBD, 0xE8, 0xF8, 0x43, 0xFF, 0xF7, 0xA8, 0xBE, 0xA4, 0x6D, 0x17, 0x49, 0x02, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xFA, 0xF7, -0xDF, 0xFB, 0x29, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF8, 0x43, 0xFF, 0xF7, 0x9B, 0xBE, 0x18, 0x22, 0x49, 0x46, 0x20, 0x46, -0x05, 0xF0, 0x84, 0xFF, 0x94, 0xF8, 0x33, 0x50, 0x18, 0x35, 0x09, 0xEB, 0x05, 0x00, 0x39, 0x46, 0xFB, 0xF7, 0xA0, 0xFD, -0x94, 0xF8, 0x35, 0x20, 0x15, 0x44, 0x05, 0x44, 0xC1, 0xE7, 0x2A, 0x46, 0x49, 0x46, 0x20, 0x46, 0x07, 0xF0, 0x4A, 0xF9, -0x05, 0x44, 0xBA, 0xE7, 0xD4, 0xBB, 0x15, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, -0xD1, 0x9D, 0x14, 0x00, 0xBC, 0xBB, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x43, 0x66, 0x4D, 0x67, 0x49, -0xD5, 0xE9, 0x00, 0x34, 0x93, 0xF8, 0x3D, 0x70, 0x67, 0x72, 0x0A, 0x68, 0x20, 0x80, 0x22, 0xF0, 0x10, 0x02, 0x4F, 0xF4, -0xA4, 0x66, 0x83, 0xB0, 0x80, 0x46, 0x06, 0xFB, 0x07, 0xF6, 0x0A, 0x60, 0x00, 0x28, 0x6C, 0xD1, 0xDF, 0xF8, 0x98, 0x91, -0x09, 0xEB, 0x06, 0x01, 0x91, 0xF8, 0x6C, 0x20, 0xD1, 0xF8, 0x64, 0x01, 0xB1, 0xF8, 0x68, 0xC1, 0xA2, 0x72, 0x0A, 0x6C, -0xA4, 0xF8, 0x06, 0xC0, 0xC4, 0xF8, 0x02, 0x00, 0x10, 0x7E, 0xE0, 0x72, 0x10, 0x79, 0x84, 0xF8, 0x36, 0x03, 0xD0, 0x88, -0xB2, 0xF8, 0x08, 0xC0, 0xA4, 0xF8, 0x38, 0x03, 0x50, 0x89, 0xC4, 0xE9, 0xCF, 0xC0, 0x52, 0x79, 0x84, 0xF8, 0x3A, 0x23, -0xD1, 0xF8, 0xCC, 0x21, 0x02, 0xF0, 0x01, 0x02, 0x22, 0x73, 0x00, 0x2A, 0x6D, 0xD1, 0x42, 0x46, 0x62, 0x73, 0x1A, 0x6B, -0x4F, 0xF4, 0xA4, 0x63, 0x02, 0xF0, 0x20, 0x02, 0x03, 0xFB, 0x07, 0x93, 0x22, 0x72, 0x93, 0xF8, 0xC0, 0x24, 0xA2, 0xB1, -0xB3, 0xF8, 0x5E, 0x00, 0xB3, 0xF8, 0x5C, 0x20, 0x42, 0x49, 0x42, 0xEA, 0x00, 0x42, 0x0A, 0x60, 0x41, 0x4A, 0xB3, 0xF8, -0x60, 0x10, 0x11, 0x60, 0x58, 0x8F, 0x1A, 0x8F, 0x3F, 0x49, 0x42, 0xEA, 0x00, 0x42, 0x0A, 0x60, 0x3E, 0x4A, 0x9B, 0x8F, -0x13, 0x60, 0x20, 0x46, 0xF8, 0xF7, 0xC8, 0xFC, 0x94, 0xF8, 0x3A, 0x33, 0xB4, 0xF8, 0x3C, 0x03, 0x40, 0xEA, 0x03, 0x40, -0x40, 0xF0, 0x00, 0x40, 0xDB, 0xF7, 0xC0, 0xFC, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x97, 0x01, 0x22, 0x35, 0x4B, -0x87, 0xF8, 0xAC, 0x20, 0x1A, 0x69, 0x34, 0x49, 0x34, 0x4B, 0x06, 0xF1, 0xB0, 0x00, 0x48, 0x44, 0x11, 0x44, 0xD3, 0xF8, -0xE0, 0x31, 0x98, 0x47, 0x00, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0x72, 0xFE, 0x12, 0xE0, 0x2F, 0x4B, 0x1B, 0x68, 0x00, 0x2B, -0x26, 0xDB, 0x2E, 0x4B, 0x06, 0x20, 0x09, 0x21, 0x1E, 0x44, 0xF8, 0xF7, 0x67, 0xFE, 0x29, 0x4A, 0xAE, 0x62, 0xA4, 0xF1, -0x0C, 0x03, 0xD2, 0xF8, 0x10, 0x23, 0xAB, 0x60, 0x30, 0x46, 0x90, 0x47, 0xB4, 0xF8, 0x34, 0x33, 0x62, 0x7A, 0x26, 0x49, -0x00, 0x93, 0x4F, 0xF4, 0x80, 0x70, 0x43, 0x46, 0xFA, 0xF7, 0x12, 0xFB, 0x28, 0x68, 0x0C, 0x38, 0xF8, 0xF7, 0xD2, 0xFC, -0x00, 0x23, 0x2B, 0x60, 0xAB, 0x75, 0xAB, 0x77, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x91, 0xF8, 0xBD, 0x21, 0x8F, 0xE7, -0x1C, 0x4B, 0x9A, 0x68, 0x62, 0xB1, 0x00, 0x21, 0x92, 0xF8, 0x62, 0x30, 0x1B, 0xB9, 0x92, 0xF8, 0x64, 0x30, 0x03, 0xB1, -0x01, 0x31, 0x12, 0x68, 0x00, 0x2A, 0xF5, 0xD1, 0x00, 0x29, 0xC8, 0xD1, 0x15, 0x4B, 0x16, 0x49, 0x00, 0x22, 0x5A, 0x70, -0x0B, 0x68, 0x15, 0x4A, 0x43, 0xF0, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x43, 0xF4, 0xBB, 0x63, -0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0xB6, 0xE7, 0x64, 0xBA, 0x17, 0x00, 0x94, 0x40, 0x04, 0x40, 0x10, 0x00, 0x32, 0x40, -0x14, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x40, 0x4B, 0x4C, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x48, 0x30, 0x34, 0x40, 0x18, 0x88, 0x17, 0x00, 0xE8, 0xBB, 0x15, 0x00, 0x00, 0x88, 0x17, 0x00, -0x4C, 0x36, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, 0x20, 0x04, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x8B, 0x4B, 0x8C, 0x4E, -0xD3, 0xF8, 0x00, 0x90, 0x8B, 0x4A, 0x99, 0xF8, 0x3D, 0x50, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x05, 0x64, 0x89, 0xB0, -0x07, 0x46, 0x88, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x86, 0x49, 0x94, 0xF8, 0x6C, 0xA0, 0xFA, 0xF7, 0xAB, 0xFA, 0x94, 0xF8, -0xC0, 0x34, 0x00, 0x2B, 0x40, 0xF0, 0x82, 0x80, 0xD4, 0xF8, 0x90, 0x31, 0x98, 0x78, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, -0x4F, 0xF4, 0xC0, 0x71, 0xE5, 0xF7, 0xB2, 0xFE, 0x04, 0x46, 0x00, 0x28, 0x7C, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, -0x05, 0x65, 0x28, 0x46, 0x21, 0x46, 0xF7, 0xF7, 0xA5, 0xFF, 0x78, 0x4B, 0xA2, 0x6C, 0x78, 0x49, 0x4F, 0xF4, 0x1E, 0x70, -0x00, 0xFB, 0x0A, 0x3A, 0x53, 0x46, 0xB1, 0xF8, 0xFC, 0x61, 0x53, 0xF8, 0x26, 0x0F, 0xD0, 0x66, 0x6F, 0xF0, 0x4F, 0x00, -0x82, 0xF8, 0x68, 0x00, 0x98, 0x88, 0xA2, 0xF8, 0x70, 0x00, 0xE8, 0x6D, 0xC2, 0xF8, 0x72, 0x00, 0x01, 0x36, 0xB5, 0xF8, -0x60, 0x00, 0xA2, 0xF8, 0x76, 0x00, 0x4F, 0xF0, 0x00, 0x0B, 0x18, 0x68, 0x9B, 0x88, 0xA2, 0xF8, 0x7C, 0x30, 0xB6, 0xB2, -0x90, 0x67, 0x82, 0xF8, 0x69, 0xB0, 0x82, 0xF8, 0x6A, 0xB0, 0x82, 0xF8, 0x6B, 0xB0, 0x65, 0x4B, 0xA1, 0xF8, 0xFC, 0x61, -0x30, 0x01, 0x95, 0xF8, 0x63, 0x10, 0xA2, 0xF8, 0x7E, 0x00, 0x21, 0x77, 0x95, 0xF8, 0x6C, 0x10, 0x1B, 0x68, 0x61, 0x77, -0x84, 0xF8, 0x33, 0xB0, 0x84, 0xF8, 0x35, 0xB0, 0x1B, 0x78, 0x99, 0xF8, 0x3B, 0x10, 0x9B, 0x07, 0x02, 0xF1, 0x68, 0x05, -0x38, 0xD4, 0x01, 0x29, 0x44, 0xD0, 0x18, 0x26, 0xCD, 0xF8, 0x00, 0x80, 0x3A, 0x46, 0xA8, 0x19, 0x00, 0x23, 0xFB, 0xF7, -0xFF, 0xFB, 0x30, 0x44, 0xE1, 0x6C, 0x94, 0xF8, 0x35, 0x30, 0x4A, 0x6A, 0xA4, 0x65, 0x18, 0x44, 0x01, 0x3A, 0x02, 0x44, -0x03, 0x1D, 0x50, 0x48, 0x60, 0x65, 0xC1, 0xE9, 0x0A, 0x23, 0x20, 0x46, 0x05, 0x21, 0xE5, 0xF7, 0x59, 0xFE, 0x4D, 0x4B, -0x1B, 0x68, 0x06, 0x21, 0xDA, 0x68, 0x41, 0xF6, 0x08, 0x00, 0xF8, 0xF7, 0xD1, 0xF9, 0x05, 0x21, 0x06, 0x20, 0xF8, 0xF7, -0x69, 0xFD, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE5, 0xF7, 0x35, 0xFE, 0x04, 0x46, -0x00, 0x28, 0x82, 0xD1, 0x01, 0x20, 0xFF, 0xF7, 0x67, 0xFE, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x29, 0x01, 0xD1, -0x03, 0x2F, 0x17, 0xD0, 0xCD, 0xF8, 0x00, 0x80, 0x3A, 0x46, 0x05, 0xF1, 0x18, 0x00, 0x00, 0x23, 0xFB, 0xF7, 0xC4, 0xFB, -0x18, 0x30, 0xC3, 0xE7, 0x03, 0x2F, 0xB8, 0xD1, 0x29, 0x46, 0x20, 0x46, 0x18, 0x22, 0x05, 0xF0, 0xB1, 0xFD, 0x94, 0xF8, -0x33, 0x00, 0x99, 0xF8, 0x3B, 0x10, 0x00, 0xF1, 0x18, 0x06, 0xAD, 0xE7, 0xDA, 0xF8, 0xB4, 0x30, 0x29, 0x46, 0x18, 0x22, -0x20, 0x46, 0x1E, 0x68, 0x05, 0xF0, 0xA2, 0xFD, 0x94, 0xF8, 0x33, 0x00, 0x99, 0xF8, 0x3B, 0x10, 0xCD, 0xF8, 0x00, 0x80, -0x00, 0xF1, 0x18, 0x08, 0x05, 0xEB, 0x08, 0x09, 0x5B, 0x46, 0x3A, 0x46, 0x48, 0x46, 0xFB, 0xF7, 0x9D, 0xFB, 0x05, 0x46, -0x3A, 0x46, 0x29, 0x46, 0x4F, 0xF0, 0xFF, 0x33, 0x48, 0x46, 0xDB, 0xF7, 0x67, 0xFD, 0x96, 0xF8, 0x60, 0x30, 0x21, 0x8F, -0x62, 0x8F, 0xAD, 0xF8, 0x10, 0x10, 0x8D, 0xF8, 0x12, 0x20, 0x06, 0xF1, 0x64, 0x01, 0x93, 0xB1, 0x03, 0x2B, 0x1A, 0xD0, -0x03, 0x20, 0xDB, 0xF7, 0x8F, 0xFD, 0x29, 0x1D, 0x02, 0x46, 0x89, 0xB2, 0x48, 0x46, 0x03, 0x91, 0xF7, 0xF7, 0x20, 0xFF, -0x48, 0x46, 0x03, 0x99, 0xF8, 0xF7, 0x16, 0xF9, 0x05, 0xEB, 0x08, 0x00, 0x78, 0xE7, 0x05, 0x22, 0x0D, 0xF1, 0x13, 0x00, -0x0C, 0xF0, 0x88, 0xFE, 0x04, 0xA8, 0x08, 0x21, 0xF8, 0xF7, 0xDE, 0xF8, 0xE4, 0xE7, 0x0D, 0x22, 0x0D, 0xF1, 0x13, 0x00, -0x0C, 0xF0, 0x7E, 0xFE, 0x04, 0xA8, 0x10, 0x21, 0xF8, 0xF7, 0xD4, 0xF8, 0xDA, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x9C, 0xBC, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, -0x34, 0x36, 0x17, 0x00, 0x89, 0x95, 0x14, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x77, 0x4F, 0x78, 0x4E, -0xD7, 0xF8, 0x00, 0x80, 0x77, 0x4A, 0x98, 0xF8, 0x3D, 0x50, 0x77, 0x49, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x05, 0x64, -0x87, 0xB0, 0x4F, 0xF4, 0x80, 0x70, 0x94, 0xF8, 0x6C, 0xA0, 0xFA, 0xF7, 0x81, 0xF9, 0x94, 0xF8, 0xC0, 0x34, 0x00, 0x2B, -0x40, 0xF0, 0xAA, 0x80, 0xD4, 0xF8, 0x90, 0x31, 0x98, 0x78, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, -0xE5, 0xF7, 0x88, 0xFD, 0x04, 0x46, 0x00, 0x28, 0x00, 0xF0, 0xA5, 0x80, 0x4F, 0xF4, 0xA4, 0x6B, 0x0B, 0xFB, 0x05, 0xFB, -0x06, 0xEB, 0x0B, 0x00, 0x21, 0x46, 0xD7, 0xF8, 0x04, 0x90, 0xF7, 0xF7, 0x77, 0xFE, 0xBA, 0x7D, 0xA3, 0x6C, 0x01, 0x2A, -0x03, 0xF1, 0x68, 0x0C, 0x00, 0xF0, 0x99, 0x80, 0xBA, 0x7F, 0x00, 0x2A, 0x00, 0xF0, 0xA7, 0x80, 0x20, 0x22, 0x00, 0x21, -0x83, 0xF8, 0x68, 0x20, 0x5B, 0x4A, 0x83, 0xF8, 0x69, 0x10, 0x5B, 0x49, 0x5B, 0x4F, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, -0x0A, 0x10, 0xB7, 0xF8, 0xFC, 0xE1, 0x50, 0xF8, 0x26, 0xAF, 0xC3, 0xF8, 0x6C, 0xA0, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, -0x05, 0x65, 0xB0, 0xF8, 0x04, 0xA0, 0xA3, 0xF8, 0x70, 0xA0, 0x0B, 0xF1, 0xEC, 0x01, 0x0E, 0xF1, 0x01, 0x0E, 0xD0, 0xF8, -0x00, 0xA0, 0xB0, 0xF8, 0x04, 0xB0, 0xE8, 0x6D, 0xC3, 0xF8, 0x72, 0x00, 0x1F, 0xFA, 0x8E, 0xFE, 0x31, 0x44, 0x00, 0x26, -0xB5, 0xF8, 0x60, 0x00, 0xC3, 0xF8, 0x78, 0xA0, 0x83, 0xF8, 0x6A, 0x60, 0x83, 0xF8, 0x6B, 0x60, 0x4F, 0xEA, 0x0E, 0x1A, -0x46, 0x4E, 0xA3, 0xF8, 0x76, 0x00, 0xA3, 0xF8, 0x7C, 0xB0, 0x0C, 0xF1, 0x18, 0x00, 0xA7, 0xF8, 0xFC, 0xE1, 0x0D, 0xF1, -0x12, 0x0C, 0xA3, 0xF8, 0x7E, 0xA0, 0x05, 0xAF, 0x95, 0xF8, 0x63, 0x30, 0xCD, 0xF8, 0x08, 0x80, 0xD6, 0xF8, 0x58, 0x61, -0xCD, 0xE9, 0x00, 0x7C, 0xB0, 0x47, 0x95, 0xF8, 0x63, 0x30, 0x23, 0x77, 0x95, 0xF8, 0x6C, 0x30, 0xE1, 0x6C, 0x63, 0x77, -0x4B, 0x6A, 0xBD, 0xF8, 0x12, 0x20, 0x37, 0x4D, 0xA4, 0x65, 0x17, 0x33, 0x03, 0x44, 0xB2, 0xF5, 0x48, 0x7F, 0x00, 0xF1, -0x1C, 0x00, 0x65, 0x65, 0xC1, 0xE9, 0x0A, 0x30, 0x3B, 0xD8, 0x05, 0x98, 0x6A, 0xB1, 0x4A, 0x44, 0x13, 0x38, 0x13, 0x32, -0xA0, 0xEB, 0x09, 0x00, 0x09, 0xF1, 0x13, 0x03, 0xC1, 0x5C, 0x03, 0xF8, 0x01, 0x1F, 0x93, 0x42, 0xFA, 0xD1, 0xBD, 0xF8, -0x12, 0x20, 0xA9, 0xF8, 0x0E, 0x20, 0x20, 0x46, 0x05, 0x21, 0xE5, 0xF7, 0x07, 0xFD, 0x27, 0x4B, 0x1B, 0x68, 0x06, 0x21, -0x9A, 0x68, 0x41, 0xF6, 0x08, 0x00, 0xF8, 0xF7, 0x7F, 0xF8, 0x07, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0x17, 0xFC, 0x07, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE5, 0xF7, 0xE3, 0xFC, 0x04, 0x46, 0x00, 0x28, 0x7F, 0xF4, -0x5B, 0xAF, 0x01, 0x20, 0xFF, 0xF7, 0x14, 0xFD, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x20, 0x22, 0x00, 0x21, 0x83, 0xF8, -0x68, 0x20, 0x83, 0xF8, 0x69, 0x10, 0x16, 0x4A, 0x69, 0xE7, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x08, 0xDB, 0x00, 0x23, 0xA9, 0xF8, 0x0E, 0x30, 0xCB, 0xE7, 0x83, 0xF8, 0x68, 0x20, 0x83, 0xF8, 0x69, 0x20, 0x5A, 0xE7, -0x0F, 0x49, 0x10, 0x48, 0x4F, 0xF4, 0x82, 0x62, 0xFA, 0xF7, 0xE8, 0xFA, 0xEF, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0xAC, 0xBC, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, 0x84, 0xBA, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x89, 0x95, 0x14, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x7C, 0xBA, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x38, 0xB5, 0x0B, 0x4D, 0x04, 0x46, 0x04, 0x23, -0x00, 0x21, 0x06, 0x22, 0x1E, 0x20, 0x2D, 0x68, 0xF8, 0xF7, 0xC6, 0xF9, 0x01, 0x22, 0x04, 0x80, 0x82, 0x70, 0x95, 0xF8, -0x3D, 0x20, 0xC2, 0x70, 0xF8, 0xF7, 0xEE, 0xF9, 0xBD, 0xE8, 0x38, 0x40, 0x08, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0xB2, 0xBB, -0x64, 0xBA, 0x17, 0x00, 0x70, 0xB5, 0x00, 0xF1, 0x0C, 0x06, 0x06, 0x21, 0x04, 0x46, 0x41, 0xF6, 0x08, 0x00, 0xF8, 0xF7, -0xBB, 0xF8, 0xB5, 0x88, 0x19, 0x49, 0x2A, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xFA, 0xF7, 0x5E, 0xF8, 0x45, 0xB9, 0xA3, 0x89, -0x13, 0xB1, 0x01, 0x2B, 0x09, 0xD0, 0x70, 0xBD, 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0xBE, 0xBE, 0x28, 0x46, 0xBD, 0xE8, -0x70, 0x40, 0xFF, 0xF7, 0x9D, 0xBC, 0x73, 0x88, 0x04, 0x2B, 0xF3, 0xD0, 0x02, 0x2B, 0x11, 0xD0, 0x0D, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0xDB, 0xBD, 0xE8, 0x70, 0x40, 0x01, 0x20, 0xFF, 0xF7, 0x8D, 0xBC, 0x09, 0x49, -0x09, 0x48, 0x4F, 0xF4, 0x8C, 0x62, 0xFA, 0xF7, 0x7B, 0xFA, 0xF3, 0xE7, 0x04, 0xF1, 0x14, 0x01, 0x03, 0x20, 0xBD, 0xE8, -0x70, 0x40, 0xFF, 0xF7, 0x6F, 0xBD, 0x00, 0xBF, 0x00, 0xBC, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x69, 0x4B, 0xD3, 0xE9, 0x00, 0x2A, 0x05, 0x46, 0x83, 0xB0, 0x06, 0x21, -0x00, 0x24, 0x41, 0xF6, 0x08, 0x00, 0x92, 0xF8, 0x3D, 0x80, 0x8D, 0xF8, 0x06, 0x40, 0xF8, 0xF7, 0x6D, 0xF8, 0x29, 0x88, -0xEE, 0x89, 0x4F, 0xF4, 0xA4, 0x67, 0x05, 0x29, 0x05, 0xF1, 0x0C, 0x09, 0x07, 0xFB, 0x08, 0xF7, 0x34, 0xD9, 0xBA, 0xF8, -0x0E, 0x30, 0x06, 0x39, 0x89, 0xB2, 0xCA, 0x18, 0x05, 0xF1, 0x12, 0x0B, 0xB2, 0xF5, 0x48, 0x7F, 0x5C, 0x46, 0x09, 0xDD, -0x58, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0x81, 0x80, 0xC3, 0xF5, 0x48, 0x71, 0x89, 0xB2, -0x0A, 0xF1, 0x14, 0x00, 0x18, 0x44, 0x8B, 0x44, 0x39, 0xB1, 0xA4, 0xF1, 0x12, 0x03, 0x14, 0xF8, 0x01, 0x2B, 0x5B, 0x1B, -0x5C, 0x45, 0x1A, 0x54, 0xF7, 0xD1, 0xAA, 0xF8, 0x10, 0x10, 0x32, 0x46, 0x4C, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, -0xE3, 0xFF, 0x9E, 0xB1, 0x4A, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x2B, 0xBB, 0x30, 0x46, 0xFF, 0xF7, 0x29, 0xFC, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x44, 0x49, 0xAA, 0xF8, 0x10, 0x40, 0x32, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, 0xD0, 0xFF, -0x00, 0x2E, 0xEB, 0xD1, 0xB9, 0xF8, 0x04, 0x00, 0x40, 0x4C, 0xC0, 0xF3, 0x0D, 0x00, 0xFF, 0xF7, 0x3F, 0xFF, 0x3D, 0x4B, -0x93, 0xF8, 0x04, 0x31, 0x63, 0xB3, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x08, 0x45, 0xD5, 0xF8, 0x90, 0x31, 0x9A, 0x78, -0x01, 0x2A, 0x48, 0xD0, 0x38, 0x4E, 0x28, 0xE0, 0x12, 0x2E, 0xD7, 0xD1, 0x35, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, -0x08, 0x38, 0xD8, 0xF8, 0x90, 0x21, 0x92, 0x78, 0x01, 0x2A, 0xCD, 0xD1, 0x98, 0xF8, 0xC0, 0x44, 0x00, 0x2C, 0xC9, 0xD1, -0x30, 0x4D, 0x07, 0xF5, 0xB2, 0x77, 0x1F, 0x44, 0xA8, 0x46, 0x40, 0x46, 0x06, 0x22, 0x39, 0x46, 0x0C, 0xF0, 0x3E, 0xFC, -0x08, 0xF1, 0x14, 0x08, 0x00, 0x28, 0x3F, 0xD0, 0x01, 0x34, 0x05, 0x2C, 0xF3, 0xD1, 0xB7, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x08, 0x43, 0x24, 0x4E, 0xD3, 0xF8, 0x90, 0x31, 0x1B, 0x79, 0xD6, 0xF8, 0x40, 0x53, 0x4F, 0xF4, 0xA4, 0x62, -0x02, 0xFB, 0x08, 0x48, 0xE0, 0x19, 0x98, 0xF8, 0xC6, 0x21, 0x9B, 0x1A, 0x8D, 0xF8, 0x07, 0x30, 0x0D, 0xF1, 0x06, 0x02, -0x0D, 0xF1, 0x07, 0x01, 0xA8, 0x47, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1A, 0x49, 0x1B, 0x48, 0x40, 0xF2, 0x8B, 0x42, -0xFA, 0xF7, 0xB6, 0xF9, 0xBA, 0xF8, 0x0E, 0x30, 0x75, 0xE7, 0xD5, 0xF8, 0xCC, 0x21, 0x12, 0xF0, 0x0C, 0x0F, 0xB1, 0xD0, -0x95, 0xF8, 0xC0, 0x24, 0x00, 0x2A, 0xAD, 0xD1, 0x13, 0x4B, 0x14, 0x49, 0x1B, 0x69, 0x0E, 0x4E, 0x07, 0xF1, 0x9C, 0x00, -0x19, 0x44, 0x20, 0x44, 0xD6, 0xF8, 0xE0, 0x31, 0x98, 0x47, 0xD5, 0xF8, 0x90, 0x31, 0xCA, 0xE7, 0x04, 0xEB, 0x84, 0x04, -0x05, 0xEB, 0x84, 0x04, 0x01, 0x23, 0xE3, 0x71, 0x74, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x14, 0xBC, 0x15, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xCC, 0x35, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x80, 0x96, 0x98, 0x00, 0x2D, 0xE9, 0xF0, 0x47, -0x04, 0x46, 0x06, 0x20, 0x25, 0x7A, 0xF8, 0xF7, 0x1F, 0xFB, 0x09, 0x28, 0x0A, 0xD0, 0x06, 0x20, 0xF8, 0xF7, 0x1A, 0xFB, -0x48, 0xB1, 0x2D, 0x4A, 0x23, 0x7A, 0x12, 0x68, 0x92, 0xF8, 0x3D, 0x20, 0x9A, 0x42, 0x0D, 0xD0, 0x02, 0x20, 0xBD, 0xE8, -0xF0, 0x87, 0x29, 0x4F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x05, 0xF5, 0x7E, 0x19, 0x96, 0xF8, 0x64, 0x00, 0x60, 0xB9, -0xBD, 0xE8, 0xF0, 0x87, 0x24, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, 0x15, 0xFF, 0x01, 0x20, 0xFF, 0xF7, 0x60, 0xFB, -0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xA4, 0x89, 0x1F, 0x49, 0x22, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, 0x08, 0xFF, -0x1D, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x0B, 0xB1, 0x08, 0x2C, 0x0A, 0xD0, 0x09, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0x40, 0xFA, -0x78, 0x19, 0x21, 0x46, 0xFF, 0xF7, 0xBC, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xD6, 0xF8, 0x90, 0x31, 0x9B, 0x78, -0x01, 0x2B, 0xEF, 0xD1, 0x96, 0xF8, 0xC0, 0x64, 0x00, 0x2E, 0xEB, 0xD1, 0xDF, 0xF8, 0x44, 0x90, 0x05, 0xF5, 0xB2, 0x7A, -0xC8, 0x46, 0xBA, 0x44, 0x40, 0x46, 0x06, 0x22, 0x51, 0x46, 0x0C, 0xF0, 0x83, 0xFB, 0x08, 0xF1, 0x14, 0x08, 0x18, 0xB1, -0x01, 0x36, 0x05, 0x2E, 0xF4, 0xD1, 0xD9, 0xE7, 0x06, 0xEB, 0x86, 0x06, 0x09, 0xEB, 0x86, 0x06, 0x01, 0x23, 0xB3, 0x71, -0xD2, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2C, 0xBC, 0x15, 0x00, 0x50, 0xBC, 0x15, 0x00, -0x2C, 0x19, 0x17, 0x00, 0xCC, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x46, 0x4B, 0x04, 0x7A, 0x4F, 0xF4, 0xA4, 0x62, -0x02, 0xFB, 0x04, 0x34, 0x94, 0xF8, 0x64, 0x30, 0xC3, 0xB1, 0x94, 0xF8, 0x62, 0x30, 0xAB, 0xB9, 0xC3, 0x79, 0xFF, 0x2B, -0x05, 0x46, 0x11, 0xD0, 0x94, 0xF8, 0x6C, 0x20, 0x9A, 0x42, 0x0D, 0xD1, 0x3D, 0x4E, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x02, 0x66, 0x96, 0xF8, 0x30, 0x30, 0x02, 0x2B, 0x04, 0xD1, 0x90, 0xF8, 0x0D, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x01, 0xD0, -0xBD, 0xE8, 0xF8, 0x83, 0x80, 0x79, 0xB5, 0xF8, 0x0E, 0x80, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, -0xE5, 0xF7, 0xAE, 0xFA, 0x07, 0x46, 0x00, 0x28, 0xF0, 0xD0, 0x01, 0x46, 0x20, 0x46, 0xF7, 0xF7, 0xA5, 0xFB, 0x32, 0x46, -0xDF, 0xF8, 0xB4, 0xC0, 0xBB, 0x6C, 0x52, 0xF8, 0x26, 0x0F, 0xBC, 0xF8, 0xFC, 0x11, 0xD8, 0x66, 0x6F, 0xF0, 0x2F, 0x00, -0x83, 0xF8, 0x68, 0x00, 0x01, 0x31, 0x90, 0x88, 0xA3, 0xF8, 0x70, 0x00, 0x89, 0xB2, 0xE0, 0x6D, 0xB4, 0xF8, 0x60, 0x40, -0xA3, 0xF8, 0x76, 0x40, 0xC3, 0xF8, 0x72, 0x00, 0x14, 0x68, 0x90, 0x88, 0x83, 0xF8, 0x69, 0x90, 0x0A, 0x01, 0x83, 0xF8, -0x6A, 0x90, 0x83, 0xF8, 0x6B, 0x90, 0x9C, 0x67, 0xA3, 0xF8, 0x7C, 0x00, 0xAC, 0xF8, 0xFC, 0x11, 0xA3, 0xF8, 0x7E, 0x20, -0x2A, 0x7A, 0x3A, 0x77, 0xEA, 0x79, 0x7A, 0x77, 0x03, 0xF1, 0x68, 0x04, 0x87, 0xF8, 0x33, 0x90, 0x87, 0xF8, 0x35, 0x90, -0x08, 0x22, 0xD0, 0x21, 0x38, 0x46, 0x06, 0xF0, 0xA5, 0xFB, 0x21, 0x46, 0x38, 0x46, 0x18, 0x22, 0x05, 0xF0, 0x04, 0xFA, -0x97, 0xF8, 0x33, 0x30, 0x18, 0x33, 0x1A, 0x19, 0x08, 0x21, 0x19, 0x55, 0x01, 0x21, 0x51, 0x70, 0xF9, 0x6C, 0xA2, 0xF8, -0x02, 0x80, 0x97, 0xF8, 0x35, 0x00, 0x4A, 0x6A, 0x04, 0x30, 0x03, 0x44, 0x01, 0x3A, 0x1A, 0x44, 0x04, 0x33, 0xC1, 0xE9, -0x0A, 0x23, 0x38, 0x46, 0x05, 0x21, 0xBD, 0xE8, 0xF8, 0x43, 0xE5, 0xF7, 0x5F, 0xBA, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x31, 0x4B, 0x32, 0x4A, 0x1B, 0x68, 0x2D, 0xE9, 0xF0, 0x41, 0xB3, 0xF9, -0x00, 0x30, 0xD2, 0xF8, 0x00, 0x80, 0x2F, 0x4F, 0x98, 0xF8, 0x3D, 0x50, 0x00, 0x2B, 0x06, 0x46, 0x45, 0xDB, 0x2C, 0x23, -0x06, 0x22, 0x0C, 0x21, 0x41, 0xF6, 0x06, 0x00, 0xF7, 0xF7, 0x64, 0xFF, 0x4F, 0xF4, 0xA4, 0x61, 0x03, 0x46, 0x98, 0xF8, -0x3D, 0x20, 0x03, 0xF8, 0x01, 0x2B, 0x01, 0xFB, 0x05, 0x71, 0x01, 0xF5, 0xB5, 0x72, 0x04, 0x46, 0x01, 0xF5, 0xC5, 0x71, -0xD2, 0xF8, 0x00, 0xE0, 0xD2, 0xF8, 0x04, 0xC0, 0x90, 0x68, 0xD2, 0xF8, 0x0C, 0x80, 0xC3, 0xF8, 0x0C, 0x80, 0x10, 0x32, -0x8A, 0x42, 0xC3, 0xF8, 0x00, 0xE0, 0xC3, 0xF8, 0x04, 0xC0, 0x98, 0x60, 0x03, 0xF1, 0x10, 0x03, 0xEC, 0xD1, 0x4F, 0xF4, -0xA4, 0x61, 0x12, 0x78, 0x1A, 0x70, 0x01, 0xFB, 0x05, 0x75, 0x36, 0xBA, 0xD5, 0xF8, 0x64, 0x01, 0xB5, 0xF8, 0x68, 0x31, -0xE3, 0x84, 0x06, 0x21, 0xC4, 0xF8, 0x22, 0x00, 0xA6, 0x62, 0x08, 0x46, 0xF8, 0xF7, 0x2A, 0xF9, 0x41, 0xF6, 0x08, 0x00, -0x0E, 0x4A, 0x06, 0x21, 0xF7, 0xF7, 0x88, 0xFD, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xF7, 0xF7, 0x55, 0xBF, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x05, 0x73, 0xD3, 0xF8, 0xCC, 0x31, 0x00, 0x2B, 0xB1, 0xDB, 0x07, 0x49, 0x07, 0x48, 0x4F, 0xF4, -0xAB, 0x62, 0xF9, 0xF7, 0xF9, 0xFF, 0xAA, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0xC0, 0x27, 0x09, 0x00, 0x70, 0x79, 0x15, 0x00, 0x74, 0xBC, 0x15, 0x00, 0x10, 0xB5, 0x06, 0x21, 0x04, 0x46, 0x41, 0xF6, -0x08, 0x00, 0xF7, 0xF7, 0x11, 0xFE, 0x1C, 0xB9, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x20, 0xBC, 0x20, 0x46, 0xBD, 0xE8, -0x10, 0x40, 0xFF, 0xF7, 0xFF, 0xB9, 0x00, 0xBF, 0x08, 0xB5, 0x06, 0x20, 0xF8, 0xF7, 0x96, 0xF9, 0xA0, 0xF1, 0x06, 0x00, -0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x08, 0xBD, 0x00, 0xB5, 0x83, 0xB0, 0x0D, 0xF1, 0x07, 0x02, 0xF8, 0xF7, 0xDE, 0xFD, -0xB8, 0xB1, 0x9D, 0xF8, 0x07, 0x30, 0x1D, 0x2B, 0x16, 0xD9, 0x02, 0x89, 0x92, 0x00, 0x0A, 0x3B, 0x92, 0xB2, 0x9B, 0x1A, -0xDB, 0xB2, 0x15, 0x2B, 0x0E, 0xD9, 0x0A, 0x30, 0x02, 0x3B, 0x81, 0x5A, 0x89, 0x00, 0x89, 0xB2, 0x5B, 0x1A, 0xDB, 0xB2, -0x13, 0x2B, 0x10, 0x44, 0x04, 0xD9, 0x04, 0x30, 0x40, 0x5A, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x00, 0x20, 0x03, 0xB0, -0x5D, 0xF8, 0x04, 0xFB, 0x2D, 0xE9, 0xF0, 0x4F, 0x4F, 0xF4, 0xA4, 0x68, 0x95, 0xB0, 0xDF, 0xF8, 0x50, 0x93, 0xDF, 0xF8, -0x50, 0xB3, 0x08, 0xFB, 0x00, 0xF3, 0x07, 0x93, 0x4B, 0x44, 0x05, 0x46, 0xD3, 0xF8, 0x90, 0x01, 0x93, 0xF8, 0x6C, 0x40, -0x80, 0x78, 0x02, 0x93, 0x17, 0x46, 0x4F, 0xF4, 0x1E, 0x78, 0x00, 0x38, 0x08, 0xFB, 0x04, 0xB6, 0x0A, 0x46, 0x3B, 0x78, -0xD6, 0xF8, 0xB0, 0xA0, 0x04, 0x94, 0x18, 0xBF, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0x05, 0x92, 0x06, 0x93, 0xE5, 0xF7, -0x6F, 0xF9, 0x00, 0x28, 0x00, 0xF0, 0xED, 0x80, 0x02, 0x9B, 0x04, 0x46, 0x21, 0x46, 0x18, 0x46, 0xF7, 0xF7, 0x64, 0xFA, -0xB9, 0x4B, 0x96, 0xF8, 0x23, 0x00, 0xD3, 0xF8, 0x34, 0x21, 0xA3, 0x6C, 0x02, 0x93, 0x00, 0x21, 0x90, 0x47, 0x02, 0x9B, -0x03, 0x90, 0x03, 0xF1, 0x68, 0x02, 0x08, 0x92, 0x00, 0x28, 0x40, 0xF0, 0xD9, 0x80, 0xB2, 0x49, 0xB1, 0xF8, 0xFC, 0x21, -0x01, 0x32, 0x92, 0xB2, 0x08, 0x20, 0x83, 0xF8, 0x68, 0x00, 0x10, 0x01, 0x01, 0x26, 0x80, 0xB2, 0x83, 0xF8, 0x69, 0x60, -0x09, 0x90, 0xA1, 0xF8, 0xFC, 0x21, 0x04, 0x99, 0x02, 0x93, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x01, 0xB2, 0x4F, 0xF4, -0xA4, 0x66, 0x52, 0xF8, 0x26, 0x1F, 0xD9, 0x66, 0x06, 0xFB, 0x05, 0x96, 0x91, 0x88, 0xF0, 0x6D, 0xB6, 0xF8, 0x60, 0x20, -0xA3, 0xF8, 0x76, 0x20, 0x4F, 0xF0, 0x00, 0x08, 0xA3, 0xF8, 0x70, 0x10, 0xC3, 0xF8, 0x72, 0x00, 0x05, 0x99, 0x83, 0xF8, -0x6A, 0x80, 0x83, 0xF8, 0x6B, 0x80, 0x06, 0x22, 0x03, 0xF1, 0x78, 0x00, 0x0C, 0xF0, 0xDC, 0xF9, 0x09, 0x9B, 0x96, 0xF8, -0x63, 0x20, 0x19, 0x01, 0x02, 0x9B, 0xA3, 0xF8, 0x7E, 0x10, 0x22, 0x77, 0x96, 0xF8, 0x6C, 0x20, 0x62, 0x77, 0x03, 0x9A, -0x00, 0x2A, 0x00, 0xF0, 0xE1, 0x80, 0x1A, 0x22, 0x83, 0xF8, 0x80, 0x80, 0x83, 0xF8, 0x81, 0x80, 0x02, 0x92, 0x7A, 0x78, -0x00, 0x21, 0x12, 0xF0, 0x40, 0x02, 0xCD, 0xE9, 0x0A, 0x11, 0x40, 0xF0, 0xB5, 0x80, 0x84, 0xF8, 0x33, 0x20, 0x84, 0xF8, -0x35, 0x20, 0x89, 0x4B, 0x02, 0x9A, 0x93, 0xE8, 0x03, 0x00, 0x08, 0x9B, 0x13, 0x44, 0x1E, 0x46, 0x0D, 0xF1, 0x30, 0x0C, -0x07, 0x9B, 0x8C, 0xE8, 0x03, 0x00, 0x08, 0x22, 0x61, 0x46, 0x30, 0x46, 0x03, 0xF1, 0x5C, 0x08, 0x0C, 0xF0, 0xA8, 0xF9, -0x7F, 0x4B, 0xD3, 0xE9, 0x02, 0x01, 0x08, 0x22, 0x0E, 0xAB, 0x83, 0xE8, 0x03, 0x00, 0xC8, 0x44, 0x19, 0x46, 0xB0, 0x18, -0x0C, 0xF0, 0x9C, 0xF9, 0x06, 0x22, 0x41, 0x46, 0x06, 0xF1, 0x10, 0x00, 0x0C, 0xF0, 0x96, 0xF9, 0x4F, 0xF4, 0xA4, 0x60, -0x00, 0xFB, 0x05, 0x95, 0x9D, 0xF9, 0x18, 0x20, 0xD5, 0xF8, 0xC4, 0x34, 0xB3, 0x75, 0xD5, 0xF8, 0xC4, 0x34, 0x1B, 0x0A, -0xF3, 0x75, 0xB5, 0xF8, 0xC6, 0x34, 0x33, 0x76, 0x95, 0xF8, 0xC7, 0x34, 0x73, 0x76, 0x7B, 0x78, 0x58, 0x06, 0x67, 0xD4, -0x00, 0x2A, 0xB8, 0xBF, 0x07, 0xF1, 0x2A, 0x01, 0x4F, 0xF0, 0x0A, 0x02, 0xA8, 0xBF, 0x07, 0xF1, 0x28, 0x01, 0x06, 0xF1, -0x1A, 0x00, 0x0C, 0xF0, 0x73, 0xF9, 0xE2, 0x6C, 0x94, 0xF8, 0x35, 0x50, 0x53, 0x6A, 0x02, 0x99, 0xA4, 0x65, 0x24, 0x35, -0x0D, 0x44, 0x01, 0x3B, 0x2B, 0x44, 0x00, 0x20, 0x29, 0x1D, 0x60, 0x65, 0xC2, 0xE9, 0x0A, 0x31, 0x03, 0x9B, 0x6B, 0xB1, -0x04, 0x9B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0xB3, 0x93, 0xF8, 0x23, 0x30, 0x02, 0xFB, 0x03, 0xBB, 0x9B, 0xF8, -0xA5, 0x91, 0xB9, 0xF1, 0x21, 0x0F, 0x6A, 0xD1, 0x7B, 0x78, 0x59, 0x06, 0x2F, 0xD5, 0x9A, 0xF8, 0x60, 0x30, 0x01, 0x2B, -0x00, 0xF0, 0x53, 0x81, 0x52, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x9B, 0x07, 0x09, 0xD5, 0x9A, 0xF8, 0x60, 0x30, 0x01, 0x2B, -0x0A, 0xF1, 0x64, 0x09, 0x40, 0xF2, 0x36, 0x81, 0x03, 0x2B, 0x00, 0xF0, 0x34, 0x81, 0x20, 0x46, 0x05, 0x21, 0xE5, 0xF7, -0x8F, 0xF8, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x96, 0xF8, 0x23, 0x20, 0x08, 0xFB, 0x02, 0xB8, 0x6F, 0xF0, 0x77, 0x02, -0xB8, 0xF8, 0x34, 0x11, 0x83, 0xF8, 0x68, 0x20, 0x4A, 0x1C, 0x01, 0x20, 0xC2, 0xF3, 0x0B, 0x02, 0x83, 0xF8, 0x69, 0x00, -0x09, 0x91, 0x03, 0x90, 0xA8, 0xF8, 0x34, 0x21, 0x21, 0xE7, 0x3D, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x9A, 0x07, 0xDE, 0xD5, -0xBA, 0xF1, 0x00, 0x0F, 0xDB, 0xD0, 0xD0, 0xE7, 0x00, 0x2A, 0xB8, 0xBF, 0x07, 0xF1, 0x32, 0x01, 0x4F, 0xF0, 0x0A, 0x02, -0xA8, 0xBF, 0x07, 0xF1, 0x30, 0x01, 0x06, 0xF1, 0x1A, 0x00, 0x0C, 0xF0, 0x0B, 0xF9, 0x96, 0xE7, 0xE2, 0x6C, 0xB3, 0xF8, -0x68, 0x10, 0x90, 0x6B, 0x41, 0xF4, 0x80, 0x41, 0xC2, 0x68, 0xA3, 0xF8, 0x68, 0x10, 0x22, 0xF4, 0x7F, 0x73, 0x9A, 0xF8, -0x62, 0x20, 0x08, 0x99, 0x23, 0xF0, 0x03, 0x03, 0x13, 0x43, 0xC3, 0x60, 0x9A, 0xF8, 0x60, 0x30, 0x02, 0x98, 0x0E, 0x18, -0x04, 0x2B, 0x00, 0xF2, 0xD3, 0x81, 0xDF, 0xE8, 0x03, 0xF0, 0x1E, 0x51, 0xBA, 0x1E, 0x85, 0x00, 0x18, 0x22, 0x02, 0x92, -0x21, 0xE7, 0x4F, 0xEA, 0x09, 0x20, 0x40, 0xF0, 0x08, 0x00, 0xF7, 0xF7, 0xFD, 0xFF, 0x01, 0x28, 0x8C, 0xD1, 0x1E, 0x4B, -0x09, 0x99, 0x09, 0xEB, 0x49, 0x09, 0x03, 0xEB, 0xC9, 0x09, 0x02, 0x22, 0xD9, 0xF8, 0x14, 0x00, 0x02, 0x90, 0x05, 0xF0, -0x1D, 0xFB, 0x02, 0x98, 0x05, 0xF0, 0xF8, 0xFA, 0x7C, 0xE7, 0x04, 0x23, 0x84, 0xF8, 0x33, 0x30, 0x84, 0xF8, 0x35, 0x30, -0xDA, 0xE9, 0x12, 0x32, 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, 0x18, 0x46, 0x11, 0x46, 0x53, 0x46, 0xE3, 0xE9, 0x12, 0x01, -0x06, 0x22, 0x19, 0x46, 0x0A, 0xA8, 0x0C, 0xF0, 0xBD, 0xF8, 0x02, 0x99, 0x08, 0x9A, 0xBD, 0xF8, 0x28, 0x30, 0x53, 0x52, -0xBD, 0xF8, 0x2A, 0x30, 0x9A, 0xF8, 0x61, 0x20, 0x43, 0xEA, 0x82, 0x33, 0x73, 0x80, 0x94, 0xF8, 0x33, 0x30, 0xCB, 0x18, -0x02, 0x93, 0xF0, 0xE6, 0x88, 0x1A, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x8C, 0xBC, 0x15, 0x00, 0x34, 0x36, 0x17, 0x00, -0xF4, 0xE4, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x08, 0x22, 0x0C, 0x23, 0x84, 0xF8, 0x33, 0x20, -0x84, 0xF8, 0x35, 0x30, 0xDA, 0xE9, 0x12, 0x32, 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, 0x18, 0x46, 0x11, 0x46, 0x53, 0x46, -0xE3, 0xE9, 0x12, 0x01, 0x06, 0x22, 0x19, 0x46, 0x0A, 0xA8, 0x0C, 0xF0, 0x89, 0xF8, 0xBD, 0xF8, 0x28, 0x20, 0x02, 0x99, -0x42, 0xF4, 0x00, 0x53, 0x03, 0xF4, 0xFE, 0x43, 0x43, 0xEA, 0x12, 0x23, 0x08, 0x9A, 0x53, 0x52, 0x9D, 0xF8, 0x28, 0x30, -0x9A, 0xF8, 0x61, 0x20, 0x43, 0xEA, 0x82, 0x33, 0x43, 0xF4, 0x00, 0x53, 0x73, 0x80, 0xBD, 0xF8, 0x2A, 0x30, 0xB3, 0x80, -0xBD, 0xF8, 0x2C, 0x30, 0xF3, 0x80, 0x94, 0xF8, 0x33, 0x30, 0xCB, 0x18, 0x02, 0x93, 0xAE, 0xE6, 0x10, 0x23, 0x12, 0x21, -0x84, 0xF8, 0x33, 0x10, 0x84, 0xF8, 0x35, 0x30, 0x0F, 0x2A, 0xDA, 0xF8, 0x48, 0x30, 0xDA, 0xF8, 0x4C, 0x20, 0x40, 0xF2, -0x00, 0x81, 0x02, 0x33, 0x42, 0xF1, 0x00, 0x02, 0x18, 0x46, 0x11, 0x46, 0x53, 0x46, 0xE3, 0xE9, 0x12, 0x01, 0x08, 0x22, -0x19, 0x46, 0x0A, 0xA8, 0x0C, 0xF0, 0x50, 0xF8, 0x9A, 0xF8, 0x61, 0x30, 0x33, 0x80, 0xBD, 0xF8, 0x28, 0x30, 0x73, 0x80, -0xBD, 0xF8, 0x2A, 0x30, 0xB3, 0x80, 0xBD, 0xF8, 0x2C, 0x30, 0xF3, 0x80, 0xBD, 0xF8, 0x2E, 0x30, 0x33, 0x81, 0x45, 0xF6, -0x36, 0x43, 0x73, 0x81, 0xB3, 0x81, 0xF3, 0x81, 0x33, 0x82, 0x02, 0x9A, 0x94, 0xF8, 0x33, 0x30, 0x1A, 0x44, 0x02, 0x92, -0x79, 0xE6, 0x08, 0x23, 0x84, 0xF8, 0x33, 0x30, 0x84, 0xF8, 0x35, 0x30, 0xDA, 0xE9, 0x12, 0x32, 0x01, 0x33, 0x42, 0xF1, -0x00, 0x02, 0x18, 0x46, 0x11, 0x46, 0x53, 0x46, 0xE3, 0xE9, 0x12, 0x01, 0x06, 0x22, 0x19, 0x46, 0x0A, 0xA8, 0x0C, 0xF0, -0x21, 0xF8, 0x08, 0x9A, 0xBD, 0xF8, 0x28, 0x30, 0x10, 0x46, 0x02, 0x9A, 0x83, 0x52, 0x9A, 0xF8, 0x61, 0x30, 0x9B, 0x03, -0x43, 0xF4, 0x00, 0x53, 0x73, 0x80, 0xBD, 0xF8, 0x2A, 0x30, 0xB3, 0x80, 0xBD, 0xF8, 0x2C, 0x30, 0xF3, 0x80, 0x94, 0xF8, -0x33, 0x30, 0xD3, 0x18, 0x02, 0x93, 0x4E, 0xE6, 0x31, 0xD0, 0x03, 0x9B, 0x0D, 0xF1, 0x40, 0x0B, 0x00, 0x2B, 0x5D, 0xD1, -0x94, 0xF8, 0x33, 0x70, 0x94, 0xF8, 0x35, 0x30, 0x1F, 0x44, 0xC7, 0xF5, 0x7F, 0x47, 0xEC, 0x37, 0x2F, 0x44, 0xBF, 0xB2, -0x5C, 0xE0, 0x05, 0x99, 0x06, 0x22, 0x04, 0xF1, 0x0C, 0x00, 0x0B, 0xF0, 0xF3, 0xFF, 0x06, 0x22, 0x41, 0x46, 0x04, 0xF1, -0x12, 0x00, 0x0B, 0xF0, 0xED, 0xFF, 0x03, 0x9B, 0x00, 0x22, 0xE2, 0x76, 0x00, 0x2B, 0x78, 0xD0, 0x94, 0xF8, 0x35, 0x10, -0x94, 0xF8, 0x33, 0x30, 0x69, 0x48, 0x0B, 0x44, 0xEB, 0x1A, 0xD0, 0xF8, 0x7C, 0x73, 0x00, 0x92, 0x1A, 0x3B, 0x32, 0x46, -0x0A, 0xF1, 0x50, 0x01, 0x20, 0x46, 0xB8, 0x47, 0x8A, 0xE6, 0x03, 0x9B, 0x94, 0xF8, 0x33, 0x70, 0x00, 0x2B, 0x00, 0xF0, -0x82, 0x80, 0x94, 0xF8, 0x35, 0x30, 0x1F, 0x44, 0xC7, 0xF5, 0x7F, 0x47, 0xF2, 0x37, 0x2F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, -0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, 0x30, 0x46, 0xDA, 0xF7, 0x7E, 0xFE, 0xDA, 0xF8, 0x48, 0xC0, 0xDA, 0xF8, 0x4C, 0x00, -0x57, 0x49, 0x4F, 0xEA, 0x1C, 0x43, 0x43, 0xEA, 0x00, 0x43, 0x0D, 0xF1, 0x40, 0x0B, 0x0B, 0x60, 0x42, 0x46, 0x5B, 0x46, -0x48, 0x46, 0xA1, 0xF8, 0x04, 0xC0, 0xF7, 0xF7, 0x45, 0xF8, 0x58, 0x46, 0x10, 0x21, 0xF7, 0xF7, 0x05, 0xFA, 0x9A, 0xF8, -0x60, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x85, 0x80, 0x94, 0xF8, 0x33, 0x70, 0x94, 0xF8, 0x35, 0x30, 0x1F, 0x44, 0xC7, 0xF5, -0x7F, 0x47, 0xEA, 0x37, 0x2F, 0x44, 0xBF, 0xB2, 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, 0x39, 0x1F, 0x30, 0x46, 0xDA, 0xF7, -0x51, 0xFE, 0x9A, 0xF8, 0x60, 0x30, 0xBA, 0xF8, 0x48, 0x10, 0xBA, 0xF8, 0x4A, 0x20, 0xAD, 0xF8, 0x40, 0x10, 0x8D, 0xF8, -0x42, 0x20, 0x49, 0x46, 0x7B, 0xBB, 0x05, 0x22, 0x0D, 0xF1, 0x43, 0x00, 0x0B, 0xF0, 0x84, 0xFF, 0x58, 0x46, 0x08, 0x21, -0xF7, 0xF7, 0xDA, 0xF9, 0x03, 0x20, 0xDA, 0xF7, 0x71, 0xFE, 0x39, 0x46, 0x02, 0x46, 0x30, 0x46, 0xF7, 0xF7, 0x04, 0xF8, -0x39, 0x46, 0x30, 0x46, 0xF7, 0xF7, 0xFA, 0xF9, 0x20, 0x46, 0x05, 0x21, 0xE4, 0xF7, 0xC6, 0xFE, 0x35, 0xE6, 0x94, 0xF8, -0x35, 0x20, 0x94, 0xF8, 0x33, 0x30, 0x2D, 0x49, 0x13, 0x44, 0xD1, 0xF8, 0x7C, 0x73, 0x03, 0x99, 0x00, 0x91, 0xEB, 0x1A, -0x18, 0x3B, 0x32, 0x46, 0x0A, 0xF1, 0x50, 0x01, 0x20, 0x46, 0xB8, 0x47, 0x10, 0xE6, 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, -0xFE, 0xE6, 0x0D, 0x22, 0x0D, 0xF1, 0x43, 0x00, 0x0B, 0xF0, 0x54, 0xFF, 0x58, 0x46, 0x10, 0x21, 0xF7, 0xF7, 0xAA, 0xF9, -0xCE, 0xE7, 0x94, 0xF8, 0x35, 0x30, 0x1F, 0x44, 0xC7, 0xF5, 0x7F, 0x47, 0xF4, 0x37, 0x2F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, -0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, 0x30, 0x46, 0xDA, 0xF7, 0xFC, 0xFD, 0xDA, 0xF8, 0x48, 0xC0, 0xDA, 0xF8, 0x4C, 0x00, -0x16, 0x49, 0x4F, 0xEA, 0x1C, 0x43, 0x43, 0xEA, 0x00, 0x43, 0x0D, 0xF1, 0x40, 0x0B, 0x0B, 0x60, 0x42, 0x46, 0x5B, 0x46, -0x48, 0x46, 0xA1, 0xF8, 0x04, 0xC0, 0xF6, 0xF7, 0xC3, 0xFF, 0x58, 0x46, 0x10, 0x21, 0xF7, 0xF7, 0x83, 0xF9, 0x9A, 0xF8, -0x60, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x20, 0xAF, 0x03, 0x2B, 0xA1, 0xD1, 0x1C, 0xE7, 0x03, 0x2B, 0x9E, 0xD1, 0x77, 0xE7, -0x08, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xDC, 0xAE, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF2, -0x2C, 0x62, 0xF9, 0xF7, 0x6B, 0xFC, 0xD4, 0xE6, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x34, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x05, 0xDB, 0x0A, 0x4B, 0x00, 0x20, 0x5B, 0x68, 0x98, 0x47, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x10, 0xFE, -0x02, 0x28, 0xF4, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x31, 0x12, 0xF9, 0xF7, 0x48, 0xFC, 0xED, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xC0, 0xBC, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x0C, 0x46, 0x36, 0x49, 0x60, 0x7C, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x00, 0x10, 0x86, 0xB0, 0x90, 0xF8, 0x62, 0x10, -0x00, 0x25, 0x02, 0x29, 0x98, 0x46, 0x8D, 0xF8, 0x0B, 0x50, 0x10, 0xD0, 0x04, 0x25, 0x41, 0x46, 0x02, 0x23, 0x41, 0xF6, -0x05, 0x40, 0xF7, 0xF7, 0x43, 0xFB, 0x05, 0x70, 0x9D, 0xF8, 0x0B, 0x20, 0x42, 0x70, 0xF7, 0xF7, 0x6D, 0xFB, 0x00, 0x20, -0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x90, 0xF8, 0x64, 0x10, 0x09, 0xB1, 0x08, 0x25, 0xEA, 0xE7, 0x07, 0x20, 0x01, 0x92, -0xF7, 0xF7, 0xD2, 0xFD, 0x01, 0x9A, 0x00, 0x28, 0xF6, 0xD1, 0xA7, 0x78, 0x20, 0x7C, 0x21, 0x88, 0x1F, 0x4E, 0x8D, 0xF8, -0x0C, 0x70, 0x8D, 0xF8, 0x0D, 0x00, 0xA7, 0x68, 0xE0, 0x68, 0xAD, 0xF8, 0x0E, 0x10, 0x21, 0x79, 0x75, 0x6C, 0xAD, 0xF8, -0x12, 0x00, 0x8D, 0xF8, 0x14, 0x10, 0xAD, 0xF8, 0x10, 0x70, 0x0D, 0xF1, 0x0B, 0x01, 0x03, 0xA8, 0xA8, 0x47, 0x01, 0x9A, -0x05, 0x46, 0x10, 0xBB, 0xF6, 0x6C, 0x60, 0x7C, 0x9D, 0xF8, 0x0B, 0x10, 0xB0, 0x47, 0xEF, 0xF3, 0x10, 0x81, 0x11, 0xF0, -0x01, 0x0F, 0x01, 0x9A, 0x03, 0xD1, 0x72, 0xB6, 0x0E, 0x49, 0x01, 0x20, 0x08, 0x60, 0x0E, 0x48, 0x0E, 0x4F, 0x04, 0x68, -0x79, 0x68, 0x66, 0x1C, 0x41, 0xF0, 0x10, 0x01, 0x06, 0x60, 0x79, 0x60, 0x00, 0x2E, 0xAE, 0xD0, 0x07, 0x49, 0x04, 0x60, -0x09, 0x68, 0x00, 0x2C, 0xA9, 0xD1, 0x00, 0x29, 0xA7, 0xD0, 0x62, 0xB6, 0xA5, 0xE7, 0x01, 0x25, 0xA3, 0xE7, 0x00, 0xBF, -0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x43, 0x0C, 0x46, 0x85, 0xB0, 0x90, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x4A, 0x69, 0x4D, 0x49, 0x4E, 0x4F, -0x99, 0x46, 0xF9, 0xF7, 0x8D, 0xF9, 0x94, 0xF8, 0x33, 0x60, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x06, 0x75, 0x95, 0xF8, -0x62, 0x10, 0x02, 0x29, 0x11, 0xD0, 0x04, 0x25, 0x42, 0x46, 0x49, 0x46, 0x04, 0x23, 0x41, 0xF6, 0x01, 0x40, 0xF7, 0xF7, -0xC3, 0xFA, 0x05, 0x70, 0x94, 0xF8, 0x33, 0x20, 0x42, 0x70, 0xF7, 0xF7, 0xED, 0xFA, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x83, 0x07, 0x20, 0xF7, 0xF7, 0x58, 0xFD, 0xC0, 0xB9, 0x95, 0xF8, 0x64, 0x30, 0xBB, 0xB9, 0x3B, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x13, 0xDB, 0x23, 0x7F, 0x39, 0x49, 0x00, 0x93, 0xD4, 0xE9, 0x05, 0x23, 0x0C, 0x60, -0x0D, 0xF1, 0x0D, 0x00, 0x04, 0xF1, 0x0E, 0x01, 0xFD, 0xF7, 0xAC, 0xF9, 0x05, 0x46, 0x70, 0xB1, 0x01, 0x25, 0xD1, 0xE7, -0x08, 0x25, 0xCF, 0xE7, 0x09, 0x25, 0xCD, 0xE7, 0x2B, 0x6C, 0x00, 0x2B, 0xE8, 0xD0, 0x2F, 0x49, 0x2F, 0x48, 0x56, 0x22, -0xF9, 0xF7, 0x72, 0xFB, 0xE2, 0xE7, 0xE1, 0x89, 0x20, 0x7C, 0xDF, 0xF8, 0xB4, 0x80, 0xFB, 0xF7, 0x9B, 0xFF, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x06, 0xF2, 0x07, 0xEB, 0x02, 0x09, 0xC9, 0xF8, 0x90, 0x01, 0x94, 0xF9, 0x12, 0x30, 0x03, 0x71, -0xD4, 0xE9, 0x05, 0x31, 0xA9, 0xF8, 0x96, 0x11, 0xA9, 0xF8, 0x94, 0x31, 0x23, 0x7F, 0x89, 0xF8, 0xC5, 0x31, 0x04, 0x2B, -0x08, 0xBF, 0x03, 0x23, 0x89, 0xF8, 0xC4, 0x31, 0x89, 0xF8, 0xC6, 0x51, 0xD8, 0xF8, 0x4C, 0x30, 0x94, 0xF8, 0x33, 0x00, -0x9D, 0xF8, 0x0D, 0x10, 0x15, 0x46, 0x98, 0x47, 0x23, 0x7C, 0xA3, 0xB1, 0x00, 0xF0, 0x8C, 0xFA, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x06, 0x73, 0x78, 0x19, 0xD3, 0xF8, 0x90, 0x31, 0xD8, 0xF8, 0x40, 0x43, 0x1B, 0x79, 0x8D, 0xF8, 0x0E, 0x30, -0x0D, 0xF1, 0x0F, 0x02, 0x0D, 0xF1, 0x0E, 0x01, 0xA0, 0x47, 0x01, 0x20, 0x92, 0xE7, 0x05, 0xF5, 0xCE, 0x70, 0x38, 0x44, -0x01, 0x21, 0xFC, 0xF7, 0x45, 0xF9, 0x10, 0xF0, 0x0F, 0x00, 0x1A, 0xBF, 0xB0, 0xFA, 0x80, 0xF0, 0xC0, 0xF1, 0x1F, 0x03, -0x01, 0x23, 0x89, 0xF8, 0xC1, 0x31, 0xD9, 0xE7, 0xEC, 0xBC, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x94, 0xBA, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0xA2, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x4F, 0x88, -0x0D, 0x48, 0x0C, 0x46, 0x16, 0x46, 0x04, 0x31, 0x3A, 0x46, 0x1D, 0x46, 0x0B, 0xF0, 0xAE, 0xFD, 0xDF, 0xF8, 0x28, 0xC0, -0x32, 0x46, 0x29, 0x46, 0x02, 0x23, 0x41, 0xF6, 0x09, 0x40, 0xAC, 0xF8, 0x00, 0x70, 0xF7, 0xF7, 0x1B, 0xFA, 0x01, 0x22, -0x02, 0x70, 0x22, 0x78, 0x42, 0x70, 0xF7, 0xF7, 0x45, 0xFA, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x14, 0x2A, 0x17, 0x00, -0x14, 0x2C, 0x17, 0x00, 0x08, 0xB5, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0F, 0xDB, 0x07, 0x20, -0xF7, 0xF7, 0xA6, 0xFC, 0x01, 0x28, 0x06, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0xA1, 0xFC, 0x03, 0x28, 0x01, 0xD0, 0x00, 0x20, -0x08, 0xBD, 0x00, 0xF0, 0x01, 0xFA, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x96, 0xFC, 0x01, 0x28, 0xEA, 0xD0, -0x07, 0x20, 0xF7, 0xF7, 0x91, 0xFC, 0x00, 0x28, 0xE5, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x8C, 0xFC, 0x03, 0x28, 0xE0, 0xD0, -0x03, 0x49, 0x04, 0x48, 0xC2, 0x22, 0xF9, 0xF7, 0xC5, 0xFA, 0xDA, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0xFC, 0xBC, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, -0xDB, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x70, 0xFC, 0x01, 0x28, 0xF6, 0xD0, 0x05, 0x49, 0x06, 0x48, -0xE6, 0x22, 0xF9, 0xF7, 0xA9, 0xFA, 0x00, 0xF0, 0xCD, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x84, 0xBD, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0x03, 0xDB, 0x00, 0xF0, 0xBB, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x50, 0xFC, 0x03, 0x28, 0xF6, 0xD0, -0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x4B, 0x12, 0xF9, 0xF7, 0x88, 0xFA, 0x00, 0xF0, 0xAC, 0xF9, 0x00, 0x20, 0x08, 0xBD, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xB4, 0xBD, 0x15, 0x00, 0x08, 0xB5, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x06, 0xDB, 0x07, 0x20, 0xF7, 0xF7, 0x34, 0xFC, 0x03, 0x28, 0x12, 0xD0, 0x00, 0x20, 0x08, 0xBD, -0x07, 0x20, 0xF7, 0xF7, 0x2D, 0xFC, 0x03, 0x28, 0xF3, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x28, 0xFC, 0x00, 0x28, 0xEE, 0xD0, -0x06, 0x49, 0x07, 0x48, 0x40, 0xF2, 0x65, 0x12, 0xF9, 0xF7, 0x60, 0xFA, 0xE7, 0xE7, 0x00, 0xF0, 0x83, 0xF9, 0x00, 0x20, -0x08, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xDC, 0xBD, 0x15, 0x00, 0xF8, 0xB5, 0x0C, 0x46, -0x4F, 0xF4, 0x80, 0x70, 0x13, 0x49, 0x16, 0x46, 0x1D, 0x46, 0xF9, 0xF7, 0x21, 0xF8, 0x24, 0x78, 0x11, 0x4B, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, 0x94, 0xF8, 0x62, 0x70, 0x02, 0x2F, 0x02, 0xD1, 0x94, 0xF8, 0x64, 0x30, 0x3B, 0xB9, -0x32, 0x46, 0x29, 0x46, 0x41, 0xF6, 0x03, 0x40, 0xF7, 0xF7, 0xBE, 0xF9, 0x00, 0x20, 0xF8, 0xBD, 0x07, 0x20, 0xF7, 0xF7, -0xF3, 0xFB, 0x05, 0x46, 0x28, 0xB9, 0x06, 0x4B, 0x20, 0x46, 0x9B, 0x68, 0x98, 0x47, 0x28, 0x46, 0xF8, 0xBD, 0x38, 0x46, -0xF8, 0xBD, 0x00, 0xBF, 0x30, 0xBE, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x0C, 0x46, -0x21, 0x49, 0x20, 0x78, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x00, 0x10, 0x82, 0xB0, 0x90, 0xF8, 0x62, 0x50, 0x02, 0x2D, -0x19, 0x46, 0x06, 0xD0, 0x41, 0xF6, 0x07, 0x40, 0xF7, 0xF7, 0x96, 0xF9, 0x00, 0x20, 0x02, 0xB0, 0x70, 0xBD, 0x90, 0xF8, -0x64, 0x30, 0x00, 0x2B, 0xF4, 0xD1, 0x07, 0x20, 0xCD, 0xE9, 0x00, 0x21, 0xF7, 0xF7, 0xC4, 0xFB, 0xDD, 0xE9, 0x00, 0x21, -0x00, 0x28, 0xEB, 0xD1, 0x12, 0x4B, 0x20, 0x78, 0x5B, 0x6D, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0x13, 0xF0, 0x01, 0x0F, -0xDD, 0xE9, 0x00, 0x21, 0x03, 0xD1, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x20, 0x18, 0x60, 0x0D, 0x48, 0x0D, 0x4E, 0x04, 0x68, -0x73, 0x68, 0x65, 0x1C, 0x23, 0xF0, 0x10, 0x03, 0x05, 0x60, 0x73, 0x60, 0x00, 0x2D, 0xD1, 0xD0, 0x06, 0x4B, 0x04, 0x60, -0x1B, 0x68, 0x00, 0x2C, 0xCC, 0xD1, 0x00, 0x2B, 0xCA, 0xD0, 0x62, 0xB6, 0xC8, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x10, 0xB5, 0x22, 0x4C, -0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0x07, 0x20, 0xF7, 0xF7, 0x88, 0xFB, 0x01, 0x28, 0x13, 0xD1, -0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, 0x9B, 0xF9, 0x00, 0x20, 0x10, 0xBD, 0x19, 0x4B, -0x5B, 0x68, 0x00, 0x2B, 0xF7, 0xD0, 0x18, 0x49, 0x18, 0x48, 0x40, 0xF2, 0x0B, 0x12, 0xF9, 0xF7, 0xB3, 0xF9, 0xF0, 0xE7, -0x07, 0x20, 0xF7, 0xF7, 0x6F, 0xFB, 0x03, 0x28, 0xED, 0xD1, 0x07, 0x22, 0x0C, 0x21, 0x41, 0xF6, 0x03, 0x40, 0xF7, 0xF7, -0x2D, 0xF9, 0x00, 0x21, 0x07, 0x20, 0xF7, 0xF7, 0xBB, 0xFA, 0xE2, 0xE7, 0x07, 0x20, 0xF7, 0xF7, 0x5F, 0xFB, 0x01, 0x28, -0xD1, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x5A, 0xFB, 0x00, 0x28, 0xCC, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x55, 0xFB, 0x03, 0x28, -0xC7, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x03, 0x12, 0xF9, 0xF7, 0x8D, 0xF9, 0xC0, 0xE7, 0x38, 0x36, 0x17, 0x00, -0x94, 0xBA, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0xBE, 0x15, 0x00, 0xFC, 0xBC, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0xDB, 0xBD, 0xE8, 0x08, 0x40, 0x09, 0x48, 0xF7, 0xF7, 0x1E, 0xBD, -0x08, 0x4B, 0x5B, 0x68, 0x00, 0x2B, 0xF6, 0xD0, 0x07, 0x48, 0x08, 0x49, 0x2D, 0x22, 0xF9, 0xF7, 0x6D, 0xF9, 0xBD, 0xE8, -0x08, 0x40, 0x02, 0x48, 0xF7, 0xF7, 0x10, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x98, 0xBA, 0x17, 0x00, 0x94, 0xBA, 0x17, 0x00, -0x3C, 0xBE, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x10, 0xB5, 0x06, 0x4C, 0x00, 0x21, 0x20, 0x46, 0x10, 0x22, 0xD4, 0xF7, -0x6F, 0xFC, 0x00, 0x21, 0x21, 0x73, 0x07, 0x20, 0xBD, 0xE8, 0x10, 0x40, 0xF7, 0xF7, 0x68, 0xBA, 0x94, 0xBA, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0xD8, 0x80, 0x05, 0x46, 0x04, 0x23, 0x07, 0x22, 0x0C, 0x21, 0x41, 0xF6, 0x01, 0x40, -0xD8, 0xF8, 0x00, 0x60, 0xF7, 0xF7, 0x5E, 0xF8, 0x04, 0x46, 0x95, 0xB1, 0x96, 0xF8, 0x33, 0x30, 0x63, 0x70, 0x20, 0x46, -0x25, 0x70, 0xF7, 0xF7, 0x85, 0xF8, 0xA6, 0xF1, 0x0C, 0x00, 0xF7, 0xF7, 0xCD, 0xF8, 0x00, 0x21, 0xC8, 0xF8, 0x00, 0x10, -0x07, 0x20, 0xBD, 0xE8, 0xF0, 0x47, 0xF7, 0xF7, 0x43, 0xBA, 0x04, 0x23, 0x29, 0x46, 0x07, 0x22, 0x1E, 0x20, 0x96, 0xF8, -0x33, 0x70, 0xF7, 0xF7, 0x41, 0xF8, 0x21, 0x4A, 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, 0x07, 0x29, 0x4F, 0xF0, 0x01, 0x0A, -0x80, 0xF8, 0x02, 0xA0, 0x99, 0xF8, 0x63, 0x20, 0xC2, 0x70, 0xF7, 0xF7, 0x63, 0xF8, 0xF1, 0x6A, 0x32, 0x8E, 0xD9, 0xF8, -0x40, 0x30, 0xC9, 0xF8, 0xB0, 0x14, 0xA9, 0xF8, 0xE0, 0x20, 0x89, 0xF8, 0xDE, 0x50, 0x1B, 0x7E, 0xA3, 0x70, 0x96, 0xF8, -0x33, 0x30, 0xDF, 0xF8, 0x54, 0xC0, 0x0A, 0x33, 0xE3, 0x70, 0x96, 0xE8, 0x0F, 0x00, 0x4F, 0xF4, 0x1E, 0x7E, 0x0A, 0x37, -0x0E, 0xFB, 0x07, 0xC7, 0x07, 0xF1, 0xB8, 0x0C, 0xAC, 0xE8, 0x07, 0x00, 0x02, 0x22, 0x87, 0xF8, 0x30, 0x20, 0x8C, 0xF8, -0x00, 0x30, 0x38, 0x46, 0xFB, 0xF7, 0xA0, 0xFF, 0x97, 0xF8, 0x56, 0x31, 0xA7, 0xF8, 0x26, 0xA0, 0x43, 0xF0, 0x10, 0x03, -0x87, 0xF8, 0x56, 0x31, 0x96, 0xF8, 0x33, 0x30, 0x03, 0xF1, 0x0A, 0x02, 0x87, 0xF8, 0x23, 0x20, 0xA4, 0xE7, 0x00, 0xBF, -0x18, 0x88, 0x17, 0x00, 0x94, 0xBA, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x10, 0xB5, 0x0C, 0x48, 0xF7, 0xF7, 0xC6, 0xFC, -0x0B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x05, 0xDB, 0x04, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, -0x10, 0x40, 0xF7, 0xF7, 0x17, 0xB8, 0x00, 0x28, 0xF7, 0xD1, 0x05, 0x49, 0x05, 0x48, 0xCB, 0x22, 0xF9, 0xF7, 0xC2, 0xF8, -0xF1, 0xE7, 0x00, 0xBF, 0x98, 0xBA, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA8, 0xAB, 0x15, 0x00, -0x2D, 0xE9, 0xF8, 0x4F, 0x44, 0x4B, 0xDF, 0xF8, 0x1C, 0xB1, 0x1C, 0x68, 0x07, 0x22, 0x08, 0x23, 0x00, 0x21, 0x18, 0x20, -0x94, 0xF8, 0x33, 0x90, 0xF6, 0xF7, 0xC8, 0xFF, 0x08, 0x23, 0x07, 0x22, 0x00, 0x21, 0x06, 0x46, 0x16, 0x20, 0xF6, 0xF7, -0xC1, 0xFF, 0x04, 0x23, 0x07, 0x22, 0x00, 0x21, 0x05, 0x46, 0x14, 0x20, 0xF6, 0xF7, 0xBA, 0xFF, 0x02, 0x23, 0x07, 0x22, -0x05, 0x21, 0x80, 0x46, 0x41, 0xF2, 0x17, 0x40, 0xF6, 0xF7, 0xB2, 0xFF, 0x4F, 0xF4, 0xA4, 0x6A, 0x0A, 0xFB, 0x09, 0xBA, -0x07, 0x46, 0xFF, 0xF7, 0x0B, 0xFF, 0x9A, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x49, 0xD0, 0x2F, 0x4A, 0x13, 0x68, 0x23, 0xF0, -0x04, 0x03, 0x13, 0x60, 0xDA, 0xF8, 0x04, 0x30, 0x43, 0xF0, 0x20, 0x03, 0xCA, 0xF8, 0x04, 0x30, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x09, 0xB9, 0xA6, 0xF1, 0x0C, 0x01, 0xD9, 0xF8, 0x5C, 0x00, 0xB9, 0xF8, 0x60, 0x30, 0xB3, 0x80, 0x30, 0x60, -0x94, 0xF8, 0x33, 0x30, 0xB3, 0x71, 0x23, 0x48, 0xF7, 0xF7, 0x18, 0xFC, 0x23, 0x7C, 0x6B, 0x71, 0x01, 0x21, 0x20, 0x46, -0xFB, 0xF7, 0x80, 0xFE, 0x28, 0x60, 0x94, 0xF8, 0x33, 0x30, 0x2B, 0x71, 0xA5, 0xF1, 0x0C, 0x01, 0x1B, 0x48, 0xF7, 0xF7, -0x09, 0xFC, 0x23, 0x8D, 0xA8, 0xF8, 0x00, 0x30, 0x94, 0xF8, 0x33, 0x30, 0x88, 0xF8, 0x02, 0x30, 0xA8, 0xF1, 0x0C, 0x01, -0x01, 0x25, 0x15, 0x48, 0xF7, 0xF7, 0xFC, 0xFB, 0x3D, 0x70, 0x94, 0xF8, 0x33, 0x30, 0x12, 0x48, 0x7B, 0x70, 0xA7, 0xF1, -0x0C, 0x01, 0xF7, 0xF7, 0xF3, 0xFB, 0xFF, 0xF7, 0x6B, 0xFF, 0x29, 0x46, 0x07, 0x20, 0xBD, 0xE8, 0xF8, 0x4F, 0xF7, 0xF7, -0x57, 0xB9, 0x02, 0x23, 0x07, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF6, 0xF7, 0x56, 0xFF, 0x01, 0x23, 0x03, 0x70, -0x9A, 0xF8, 0x63, 0x30, 0x43, 0x70, 0x03, 0x4B, 0x01, 0x46, 0x0C, 0x39, 0x18, 0x1D, 0xF7, 0xF7, 0xD9, 0xFB, 0xAD, 0xE7, -0x94, 0xBA, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x98, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x38, 0xB5, 0x0E, 0x4C, -0x0C, 0x23, 0x07, 0x22, 0x00, 0x21, 0x3F, 0x20, 0x24, 0x68, 0xF6, 0xF7, 0x39, 0xFF, 0xA1, 0x8C, 0xE2, 0x8C, 0x25, 0x6A, -0x05, 0x60, 0x81, 0x80, 0xC2, 0x80, 0x94, 0xF8, 0x32, 0x20, 0x02, 0x72, 0x94, 0xF8, 0x33, 0x20, 0x42, 0x72, 0xF6, 0xF7, -0x5B, 0xFF, 0xBD, 0xE8, 0x38, 0x40, 0x02, 0x21, 0x07, 0x20, 0xF7, 0xF7, 0x1F, 0xB9, 0x00, 0xBF, 0x94, 0xBA, 0x17, 0x00, -0xF8, 0xB5, 0x07, 0x22, 0x04, 0x46, 0x02, 0x23, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF6, 0xF7, 0x19, 0xFF, 0x02, 0x23, -0x06, 0x46, 0x07, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x17, 0x40, 0xF6, 0xF7, 0x11, 0xFF, 0x00, 0x27, 0x05, 0x46, 0xFF, 0xF7, -0x6D, 0xFE, 0x37, 0x70, 0x94, 0xF8, 0x63, 0x30, 0x73, 0x70, 0x1D, 0x48, 0xA6, 0xF1, 0x0C, 0x01, 0xF7, 0xF7, 0x92, 0xFB, -0x94, 0xF8, 0x64, 0x30, 0x0B, 0xBB, 0x23, 0x6C, 0x6B, 0xB1, 0x01, 0x23, 0x00, 0x21, 0x07, 0x22, 0x39, 0x20, 0xF6, 0xF7, -0xF9, 0xFE, 0x01, 0x46, 0x94, 0xF8, 0x63, 0x30, 0x01, 0xF8, 0x0C, 0x39, 0x12, 0x48, 0xF7, 0xF7, 0x7F, 0xFB, 0x00, 0x23, -0x2B, 0x70, 0x94, 0xF8, 0x63, 0x30, 0x0F, 0x48, 0x6B, 0x70, 0xA5, 0xF1, 0x0C, 0x01, 0xF7, 0xF7, 0x75, 0xFB, 0xFF, 0xF7, -0xED, 0xFE, 0xBD, 0xE8, 0xF8, 0x40, 0x03, 0x21, 0x07, 0x20, 0xF7, 0xF7, 0xD9, 0xB8, 0x39, 0x46, 0x04, 0x23, 0x07, 0x22, -0x1E, 0x20, 0xF6, 0xF7, 0xD9, 0xFE, 0x87, 0x70, 0x94, 0xF8, 0x63, 0x30, 0xC3, 0x70, 0xA0, 0xF1, 0x0C, 0x01, 0x02, 0x48, -0xF7, 0xF7, 0x5E, 0xFB, 0xCD, 0xE7, 0x00, 0xBF, 0x98, 0xBA, 0x17, 0x00, 0x15, 0x4A, 0x03, 0x7F, 0x4F, 0xF4, 0xA4, 0x61, -0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x13, 0xD1, 0x43, 0x7F, 0x0D, 0x2B, 0x10, 0xD8, 0x82, 0x88, -0x2A, 0xB9, 0x82, 0x6C, 0xB2, 0xF8, 0x68, 0x20, 0xB2, 0xF5, 0x12, 0x7F, 0x08, 0xD0, 0x0C, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, -0x01, 0xFB, 0x03, 0x22, 0x92, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x02, 0xD0, 0x01, 0x23, 0x18, 0x46, 0x70, 0x47, 0x92, 0xF8, -0x32, 0x20, 0x12, 0xF0, 0x03, 0x02, 0xF8, 0xD1, 0xC1, 0x8B, 0x41, 0xF4, 0x80, 0x51, 0x13, 0x46, 0xC1, 0x83, 0xF2, 0xE7, -0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xC3, 0x8B, 0xDB, 0x04, 0x00, 0xD4, 0x70, 0x47, 0x10, 0xB5, 0x0C, 0x46, -0xC2, 0x7E, 0x15, 0x49, 0x94, 0xF8, 0x2E, 0x31, 0x8A, 0x5C, 0x13, 0x42, 0x1A, 0xD0, 0x94, 0xF8, 0x31, 0x20, 0x11, 0x07, -0x1A, 0xD4, 0x42, 0xF0, 0x08, 0x02, 0x0F, 0x2B, 0x84, 0xF8, 0x31, 0x20, 0x14, 0xD1, 0x05, 0x22, 0x04, 0x23, 0x00, 0x21, -0x41, 0x20, 0xF6, 0xF7, 0x7F, 0xFE, 0x22, 0x8C, 0x02, 0x80, 0x94, 0xF8, 0x22, 0x20, 0xC2, 0x70, 0x01, 0x22, 0x82, 0x70, -0xBD, 0xE8, 0x10, 0x40, 0xF6, 0xF7, 0xA4, 0xBE, 0x94, 0xF8, 0x31, 0x30, 0x9A, 0x07, 0x00, 0xD5, 0x10, 0xBD, 0x43, 0xF0, -0x02, 0x03, 0x84, 0xF8, 0x31, 0x30, 0xE4, 0xE7, 0xA4, 0xB2, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x90, 0xF8, 0x62, 0x70, -0x02, 0x2F, 0x91, 0x46, 0x5A, 0xD1, 0x91, 0xF8, 0x32, 0x20, 0x0E, 0x46, 0x00, 0x2A, 0x55, 0xD0, 0x12, 0xF0, 0x01, 0x08, -0x91, 0xF8, 0x31, 0x30, 0x04, 0xBF, 0x08, 0x27, 0x4F, 0xF0, 0x04, 0x08, 0x1F, 0x42, 0x78, 0xD0, 0xD1, 0xF8, 0xFC, 0x41, -0x00, 0x2C, 0x68, 0xD0, 0xA2, 0xF1, 0x02, 0x02, 0xB2, 0xFA, 0x82, 0xF2, 0x91, 0xF8, 0x2E, 0x11, 0x3C, 0x4D, 0x52, 0x09, -0x4F, 0xF0, 0x00, 0x0A, 0x04, 0xE0, 0x23, 0x68, 0xA2, 0x46, 0x00, 0x2B, 0x59, 0xD0, 0x1C, 0x46, 0xE3, 0x7E, 0xEB, 0x5C, -0x19, 0x42, 0x0C, 0xBF, 0x01, 0x23, 0x00, 0x23, 0x93, 0x42, 0xF2, 0xD0, 0x51, 0x46, 0x22, 0x46, 0x06, 0xF5, 0xFE, 0x70, -0xF7, 0xF7, 0xC8, 0xFB, 0x96, 0xF8, 0x32, 0x10, 0x11, 0xF0, 0x08, 0x0F, 0x0C, 0xBF, 0x03, 0x23, 0x04, 0x23, 0xE3, 0x76, -0xBA, 0xF1, 0x00, 0x0F, 0x52, 0xD0, 0xDA, 0xF8, 0x00, 0x30, 0x0B, 0xB3, 0xA1, 0xF1, 0x02, 0x01, 0xB1, 0xFA, 0x81, 0xF1, -0x96, 0xF8, 0x2E, 0x01, 0x49, 0x09, 0x01, 0xE0, 0x1B, 0x68, 0xBB, 0xB1, 0xDA, 0x7E, 0xAA, 0x5C, 0x10, 0x42, 0x0C, 0xBF, -0x01, 0x22, 0x00, 0x22, 0x8A, 0x42, 0xF5, 0xD0, 0xA2, 0x6C, 0xB2, 0xF8, 0x68, 0x30, 0x43, 0xF4, 0x00, 0x53, 0xA2, 0xF8, -0x68, 0x30, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x24, 0xC9, 0xF8, 0x00, 0x40, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, -0x96, 0xF8, 0x31, 0x10, 0x21, 0xEA, 0x07, 0x07, 0x17, 0xEA, 0x08, 0x01, 0x86, 0xF8, 0x31, 0x70, 0x07, 0xEA, 0x08, 0x05, -0xE4, 0xD1, 0x04, 0x23, 0x05, 0x22, 0x41, 0x20, 0xF6, 0xF7, 0xF0, 0xFD, 0x32, 0x8C, 0x02, 0x80, 0x96, 0xF8, 0x22, 0x20, -0xC2, 0x70, 0x85, 0x70, 0xF6, 0xF7, 0x18, 0xFE, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x05, 0xDA, 0x0A, 0x49, 0x0A, 0x48, 0x40, 0xF2, 0x91, 0x12, 0xF8, 0xF7, 0xD3, 0xFE, 0x01, 0x23, -0x00, 0x24, 0xC9, 0xF8, 0x00, 0x30, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0xD6, 0xF8, 0xFC, 0x31, 0xAB, 0xE7, 0x00, 0xBF, -0xA4, 0xB2, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x38, 0xB5, 0x90, 0xF8, -0x62, 0x30, 0x02, 0x2B, 0x14, 0xD1, 0x13, 0x4C, 0x13, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x01, 0x44, 0x21, 0x46, -0xD3, 0xF8, 0x20, 0x33, 0x00, 0x22, 0x98, 0x47, 0x94, 0xF8, 0x31, 0x10, 0x11, 0xF0, 0x0A, 0x0F, 0x04, 0xD0, 0x01, 0xF0, -0xF5, 0x05, 0x84, 0xF8, 0x31, 0x50, 0x05, 0xB1, 0x38, 0xBD, 0x29, 0x46, 0x04, 0x23, 0x05, 0x22, 0x41, 0x20, 0xF6, 0xF7, -0xA5, 0xFD, 0x94, 0xF8, 0x22, 0x20, 0x21, 0x8C, 0xC2, 0x70, 0x85, 0x70, 0xBD, 0xE8, 0x38, 0x40, 0x01, 0x80, 0xF6, 0xF7, -0xCB, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x03, 0x6C, 0x2D, 0xE9, 0xF0, 0x41, 0x04, 0x46, -0x88, 0x46, 0x00, 0x2B, 0x6C, 0xD0, 0x3A, 0x4A, 0x1B, 0x79, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x53, 0xDB, -0x94, 0xF8, 0xC0, 0x24, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE4, 0xF7, 0x4C, 0xF8, -0x05, 0x46, 0x00, 0x28, 0x56, 0xD0, 0x01, 0x46, 0x20, 0x46, 0xF6, 0xF7, 0x43, 0xF9, 0xAE, 0x6C, 0x00, 0x27, 0x6F, 0xF0, -0x3F, 0x03, 0x41, 0x46, 0x86, 0xF8, 0x68, 0x30, 0x86, 0xF8, 0x69, 0x70, 0x86, 0xF8, 0x6A, 0x70, 0x86, 0xF8, 0x6B, 0x70, -0x06, 0xF1, 0x6C, 0x00, 0x06, 0x22, 0x0B, 0xF0, 0xED, 0xF8, 0x26, 0x4A, 0xE0, 0x6D, 0xB2, 0xF8, 0xFC, 0x31, 0xB4, 0xF8, -0x60, 0x10, 0xB4, 0xF8, 0x60, 0xC0, 0xC6, 0xF8, 0x72, 0x00, 0x01, 0x33, 0x9B, 0xB2, 0xE0, 0x6D, 0xA6, 0xF8, 0x76, 0x10, -0x19, 0x01, 0xB0, 0x67, 0xA6, 0xF8, 0x7C, 0xC0, 0xA2, 0xF8, 0xFC, 0x31, 0xA6, 0xF8, 0x7E, 0x10, 0xC5, 0xE9, 0x15, 0x74, -0x94, 0xF8, 0x63, 0x30, 0x2B, 0x77, 0xFF, 0x23, 0x6B, 0x77, 0x06, 0xF1, 0x80, 0x00, 0x07, 0x21, 0xF9, 0xF7, 0xCE, 0xFD, -0xE9, 0x6C, 0x4B, 0x6A, 0x17, 0x33, 0x1A, 0x18, 0x00, 0xF1, 0x1C, 0x03, 0xC1, 0xE9, 0x0A, 0x23, 0x28, 0x46, 0x05, 0x21, -0xBD, 0xE8, 0xF0, 0x41, 0xE4, 0xF7, 0x12, 0xB8, 0x02, 0x2B, 0xA9, 0xD1, 0x0D, 0x49, 0x0E, 0x48, 0x4F, 0xF4, 0x09, 0x72, -0xF8, 0xF7, 0x0E, 0xFE, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE3, 0xF7, 0xF5, 0xFF, 0x05, 0x46, 0x00, 0x28, 0xA8, 0xD1, -0xBD, 0xE8, 0xF0, 0x81, 0x03, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xEF, 0xDA, 0xE8, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0xF8, 0xB5, 0x14, 0x4A, -0x14, 0x4D, 0x41, 0xF2, 0x0A, 0x00, 0x41, 0xF2, 0x08, 0x07, 0x00, 0x26, 0x16, 0x52, 0x0C, 0x46, 0xD3, 0x53, 0x41, 0xF2, -0x0C, 0x06, 0xD1, 0xF8, 0x64, 0x11, 0xD4, 0xF8, 0x60, 0x01, 0x90, 0x51, 0x0B, 0x2B, 0x14, 0x60, 0xA9, 0x80, 0x0D, 0xD0, -0x19, 0x46, 0x04, 0x22, 0x02, 0x23, 0x41, 0xF2, 0x09, 0x00, 0xF6, 0xF7, 0xF5, 0xFC, 0x01, 0x22, 0x42, 0x70, 0x94, 0xF8, -0x6E, 0x21, 0x02, 0x70, 0xF6, 0xF7, 0x1E, 0xFD, 0x04, 0x4B, 0xD3, 0xF8, 0xF4, 0x32, 0x98, 0x47, 0x01, 0x20, 0xF8, 0xBD, -0xA8, 0xBA, 0x17, 0x00, 0xB4, 0xCA, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x1A, 0x46, 0x70, 0xB5, 0x40, 0x23, 0x14, 0x4C, -0x0D, 0x46, 0x41, 0xF2, 0x06, 0x00, 0x11, 0x46, 0x04, 0x22, 0xF6, 0xF7, 0xD7, 0xFC, 0xA3, 0x88, 0x06, 0x46, 0x13, 0xB1, -0x2A, 0x78, 0x93, 0x42, 0x06, 0xD8, 0x00, 0x23, 0x30, 0x46, 0x33, 0x70, 0xF6, 0xF7, 0xFC, 0xFC, 0x00, 0x20, 0x70, 0xBD, -0x04, 0xEB, 0x82, 0x14, 0x08, 0x34, 0x0F, 0xCC, 0x35, 0x46, 0x0F, 0xC5, 0x0F, 0xCC, 0x0F, 0xC5, 0x0F, 0xCC, 0x0F, 0xC5, -0x94, 0xE8, 0x0F, 0x00, 0x85, 0xE8, 0x0F, 0x00, 0x30, 0x46, 0xF6, 0xF7, 0xE9, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, -0xA8, 0xBA, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x22, 0x01, 0x23, 0x02, 0x21, 0x40, 0xF6, 0x03, 0x00, 0xF6, 0xF7, 0xAC, 0xFC, -0xF6, 0xF7, 0xDA, 0xFC, 0x04, 0x20, 0xF6, 0xF7, 0x49, 0xFF, 0x03, 0x49, 0x02, 0x46, 0x08, 0x20, 0xF8, 0xF7, 0x5A, 0xFB, -0x00, 0x20, 0x08, 0xBD, 0x6C, 0xBE, 0x15, 0x00, 0x08, 0xB5, 0x19, 0x46, 0x04, 0x22, 0x01, 0x23, 0x41, 0xF2, 0x0B, 0x00, -0xF6, 0xF7, 0x96, 0xFC, 0xF6, 0xF7, 0xC4, 0xFC, 0x02, 0x49, 0x08, 0x20, 0xF8, 0xF7, 0x48, 0xFB, 0x00, 0x20, 0x08, 0xBD, -0x80, 0xBE, 0x15, 0x00, 0x1A, 0x46, 0x38, 0xB5, 0x41, 0xF2, 0x08, 0x00, 0x0D, 0x46, 0x02, 0x23, 0x11, 0x46, 0x04, 0x22, -0xF6, 0xF7, 0x82, 0xFC, 0x06, 0x49, 0x04, 0x46, 0x08, 0x20, 0xF8, 0xF7, 0x35, 0xFB, 0x01, 0x23, 0x23, 0x70, 0xAB, 0x78, -0x63, 0x70, 0x20, 0x46, 0xF6, 0xF7, 0xA6, 0xFC, 0x00, 0x20, 0x38, 0xBD, 0x98, 0xBE, 0x15, 0x00, 0x10, 0xB5, 0x41, 0xF2, -0x08, 0x00, 0x04, 0x4C, 0x04, 0x49, 0x1A, 0x46, 0x23, 0x5A, 0x08, 0x20, 0xF8, 0xF7, 0x20, 0xFB, 0x02, 0x20, 0x10, 0xBD, -0xA8, 0xBA, 0x17, 0x00, 0xB4, 0xBE, 0x15, 0x00, 0xF8, 0xB5, 0x36, 0x4C, 0x91, 0xF8, 0x6E, 0x21, 0x35, 0x4E, 0x21, 0x60, -0x0D, 0x46, 0x41, 0xF2, 0x08, 0x00, 0x4F, 0xF4, 0xA4, 0x67, 0x41, 0xF2, 0x0A, 0x01, 0x07, 0xFB, 0x02, 0x62, 0x01, 0x26, -0x23, 0x52, 0x66, 0x52, 0x00, 0x23, 0xC2, 0xF8, 0xCC, 0x31, 0x05, 0xF5, 0xB0, 0x77, 0x97, 0xE8, 0x03, 0x00, 0xDF, 0xF8, -0xC4, 0xC0, 0x41, 0xF2, 0x0C, 0x02, 0xAC, 0xF8, 0x04, 0x10, 0x41, 0xF2, 0x3B, 0x01, 0xA0, 0x50, 0x63, 0x54, 0x38, 0x46, -0x1A, 0x46, 0x19, 0x46, 0x00, 0xF0, 0x4A, 0xF9, 0x18, 0xB1, 0x90, 0xF8, 0x3D, 0x10, 0x03, 0x46, 0x91, 0xB9, 0x97, 0xE8, -0x03, 0x00, 0x21, 0x4B, 0x41, 0xF2, 0x34, 0x02, 0x99, 0x80, 0x20, 0x4B, 0xA0, 0x50, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x28, 0xDB, 0x1D, 0x4B, 0xD3, 0xF8, 0xF4, 0x32, 0x98, 0x47, 0x01, 0x20, 0xF8, 0xBD, 0x02, 0x46, 0x41, 0xF2, -0x34, 0x0C, 0x52, 0xF8, 0x02, 0x0F, 0x93, 0xF8, 0x3E, 0x70, 0x44, 0xF8, 0x0C, 0x00, 0x14, 0x48, 0x92, 0x88, 0x82, 0x80, -0xBE, 0x40, 0x41, 0xF2, 0x38, 0x00, 0x01, 0x3E, 0x22, 0x5A, 0x36, 0x02, 0x36, 0xB2, 0x22, 0xEA, 0x06, 0x02, 0x12, 0xB2, -0x22, 0x52, 0xDB, 0x88, 0xA3, 0xEB, 0x01, 0x21, 0x0E, 0x40, 0x0C, 0x4B, 0x16, 0x43, 0x26, 0x52, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xD6, 0xDA, 0x95, 0xF8, 0x60, 0x31, 0xDB, 0x07, 0xD2, 0xD5, 0x08, 0x49, 0x08, 0x48, 0xA1, 0x22, -0xF8, 0xF7, 0xD8, 0xFC, 0xCC, 0xE7, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xDC, 0xCA, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD0, 0xBE, 0x15, 0x00, 0xB4, 0xCA, 0x17, 0x00, -0x1A, 0x46, 0x38, 0xB5, 0x41, 0xF2, 0x08, 0x00, 0x0D, 0x46, 0x02, 0x23, 0x11, 0x46, 0x04, 0x22, 0xF6, 0xF7, 0xDA, 0xFB, -0x0A, 0x49, 0x04, 0x46, 0x08, 0x20, 0xF8, 0xF7, 0x8D, 0xFA, 0x29, 0x46, 0x08, 0x48, 0x31, 0xF8, 0x03, 0x2B, 0x20, 0xF8, -0x03, 0x2B, 0x0A, 0xF0, 0x55, 0xFF, 0x01, 0x23, 0x23, 0x70, 0xAB, 0x78, 0x63, 0x70, 0x20, 0x46, 0xF6, 0xF7, 0xF6, 0xFB, -0x00, 0x20, 0x38, 0xBD, 0xF0, 0xBE, 0x15, 0x00, 0x68, 0xCB, 0x17, 0x00, 0x08, 0x78, 0x08, 0xB9, 0x00, 0x20, 0x70, 0x47, -0x08, 0xB5, 0x00, 0xF0, 0x31, 0xF8, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x70, 0xB5, 0x0B, 0x4E, 0x41, 0xF2, 0x08, 0x05, -0x01, 0x23, 0x0C, 0x46, 0x04, 0x22, 0x71, 0x5B, 0x41, 0xF2, 0x0B, 0x00, 0xF6, 0xF7, 0xAA, 0xFB, 0xF6, 0xF7, 0xD8, 0xFB, -0x72, 0x5B, 0x05, 0x49, 0x08, 0x20, 0xF8, 0xF7, 0x5B, 0xFA, 0x20, 0x78, 0x00, 0xF0, 0x18, 0xF8, 0x00, 0x20, 0x70, 0xBD, -0xA8, 0xBA, 0x17, 0x00, 0x00, 0xBF, 0x15, 0x00, 0x08, 0xB5, 0x05, 0x49, 0x41, 0xF2, 0x0B, 0x02, 0x8B, 0x5C, 0x01, 0x33, -0x8B, 0x54, 0x00, 0xF0, 0x65, 0xFD, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x08, 0x46, 0x00, 0xF0, -0x19, 0xB9, 0x00, 0xBF, 0xF0, 0xB5, 0x39, 0x4C, 0x41, 0xF2, 0x0A, 0x05, 0x83, 0xB0, 0x63, 0x5D, 0x06, 0x46, 0x00, 0x2B, -0x43, 0xD0, 0x41, 0xF2, 0x08, 0x02, 0x03, 0x23, 0xA1, 0x5A, 0x41, 0xF2, 0x03, 0x00, 0x04, 0x22, 0xF6, 0xF7, 0x76, 0xFB, -0x05, 0x46, 0x23, 0x68, 0x30, 0x49, 0x93, 0xF8, 0x6E, 0x21, 0x00, 0x96, 0x41, 0xF2, 0x0A, 0x07, 0x08, 0x20, 0xE3, 0x5D, -0xF8, 0xF7, 0x22, 0xFA, 0xE3, 0x5D, 0x63, 0xB9, 0x2B, 0x49, 0x2C, 0x4A, 0x0B, 0x68, 0x2C, 0x48, 0x23, 0xF0, 0x04, 0x03, -0x0B, 0x60, 0x13, 0x68, 0x01, 0x88, 0x1B, 0x0C, 0x1B, 0x04, 0x0B, 0x43, 0x13, 0x60, 0x20, 0x68, 0x27, 0x4B, 0x90, 0xF8, -0x6E, 0x21, 0x2A, 0x70, 0x6E, 0x70, 0xA2, 0x88, 0xAA, 0x70, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x20, 0xD0, 0x0C, 0x38, -0xF6, 0xF7, 0xC8, 0xFB, 0x00, 0x26, 0x28, 0x46, 0x26, 0x60, 0xF6, 0xF7, 0x77, 0xFB, 0x1F, 0x4A, 0x53, 0x68, 0x31, 0x46, -0x23, 0xF0, 0x20, 0x03, 0x04, 0x20, 0x53, 0x60, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0xF6, 0xF7, 0x35, 0xBD, 0xA3, 0x88, -0xF3, 0xB1, 0x41, 0xF2, 0x08, 0x02, 0x03, 0x23, 0xA1, 0x5A, 0x41, 0xF2, 0x01, 0x00, 0x04, 0x22, 0xF6, 0xF7, 0x30, 0xFB, -0x05, 0x46, 0xB8, 0xE7, 0x13, 0x4B, 0x93, 0xF8, 0xB5, 0x30, 0x00, 0x2B, 0xD9, 0xD0, 0x12, 0x49, 0x12, 0x4B, 0x0A, 0x68, -0x22, 0xF0, 0x7C, 0x72, 0x0A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x80, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x12, -0x1A, 0x60, 0xCA, 0xE7, 0xD6, 0xF7, 0xCC, 0xFB, 0x63, 0x5D, 0x00, 0x2B, 0xDB, 0xD0, 0x94, 0xE7, 0xA8, 0xBA, 0x17, 0x00, -0x30, 0xBF, 0x15, 0x00, 0x94, 0x40, 0x04, 0x40, 0x20, 0x04, 0x32, 0x40, 0x28, 0x25, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, -0x1C, 0x9E, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x74, 0x00, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, 0x08, 0xB5, 0x00, 0x21, -0x04, 0x20, 0xF6, 0xF7, 0xF5, 0xFC, 0xBD, 0xE8, 0x08, 0x40, 0x03, 0x48, 0x4F, 0xF4, 0x86, 0x52, 0x00, 0x21, 0xD3, 0xF7, -0xED, 0xBE, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x3C, 0x4D, 0x83, 0xB0, 0xA8, 0x46, 0x2B, 0x46, -0x00, 0x22, 0x08, 0xE0, 0x5F, 0x89, 0x04, 0x88, 0xA7, 0x42, 0x14, 0xD0, 0x01, 0x32, 0x40, 0x2A, 0x03, 0xF1, 0x40, 0x03, -0x1C, 0xD0, 0x1C, 0x7A, 0x03, 0xF1, 0x08, 0x06, 0x00, 0x2C, 0xF1, 0xD1, 0x00, 0x29, 0xF3, 0xD0, 0x08, 0xEB, 0x82, 0x12, -0x80, 0x23, 0x82, 0xF8, 0x44, 0x30, 0x30, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x9F, 0x89, 0x44, 0x88, 0xA7, 0x42, -0xE6, 0xD1, 0xDF, 0x89, 0x84, 0x88, 0xA7, 0x42, 0xF3, 0xD0, 0x01, 0x32, 0x40, 0x2A, 0x03, 0xF1, 0x40, 0x03, 0xE2, 0xD1, -0x00, 0x29, 0x46, 0xD0, 0x26, 0x4F, 0x4F, 0xF0, 0x00, 0x0B, 0x4F, 0xF0, 0x21, 0x0A, 0x06, 0xE0, 0x0B, 0xF1, 0x01, 0x0B, -0xBB, 0xF1, 0x40, 0x0F, 0x05, 0xF1, 0x40, 0x05, 0x39, 0xD0, 0x2B, 0x7A, 0x05, 0xF1, 0x08, 0x06, 0x00, 0x2B, 0xF3, 0xD0, -0x95, 0xF8, 0x45, 0x40, 0x00, 0x2C, 0xEF, 0xD1, 0x38, 0x68, 0x30, 0xB3, 0x90, 0xF8, 0x70, 0x31, 0x1B, 0xB3, 0x05, 0xF1, -0x11, 0x01, 0x4F, 0xF0, 0xFD, 0x09, 0x06, 0xE0, 0x38, 0x68, 0x01, 0x34, 0x90, 0xF8, 0x70, 0x31, 0xE4, 0xB2, 0xA3, 0x42, -0x15, 0xD9, 0x04, 0xEB, 0x44, 0x13, 0x03, 0x44, 0x93, 0xF8, 0xFC, 0x30, 0x00, 0x2B, 0xF1, 0xD0, 0x2A, 0x7C, 0x9A, 0x42, -0xEE, 0xD1, 0x1A, 0xFB, 0x04, 0x93, 0x18, 0x44, 0x01, 0x91, 0x0A, 0xF0, 0xE1, 0xFD, 0x01, 0x99, 0x00, 0x28, 0xE5, 0xD1, -0x3B, 0x68, 0x93, 0xF8, 0x70, 0x31, 0x9C, 0x42, 0xC6, 0xD1, 0x08, 0xEB, 0x8B, 0x11, 0x80, 0x20, 0x00, 0x23, 0x81, 0xF8, -0x44, 0x00, 0x0B, 0x72, 0xA5, 0xE7, 0x00, 0x26, 0x30, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xA8, 0xBA, 0x17, 0x00, -0xF4, 0x9F, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x2D, 0xED, 0x02, 0x8B, 0x61, 0x4B, 0x99, 0xB0, 0x1C, 0x68, 0x03, 0x46, -0x04, 0x93, 0x04, 0x20, 0x94, 0xF8, 0x6E, 0x31, 0x07, 0x93, 0xF6, 0xF7, 0x03, 0xFD, 0x01, 0x28, 0x05, 0xD0, 0x00, 0x20, -0x19, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x58, 0x49, 0x41, 0xF2, 0x0C, 0x03, 0xCA, 0x5C, 0xD2, 0x07, -0x19, 0xD4, 0xCA, 0x5A, 0x04, 0x9B, 0x9B, 0x8B, 0x9A, 0x42, 0x00, 0xF0, 0x85, 0x80, 0x52, 0x49, 0x41, 0xF2, 0x34, 0x02, -0x8A, 0x5A, 0x9A, 0x42, 0xE7, 0xD1, 0x04, 0x9A, 0x41, 0xF2, 0x36, 0x03, 0xD2, 0x8B, 0xCB, 0x5A, 0x9A, 0x42, 0xE0, 0xD1, -0x04, 0x9A, 0x41, 0xF2, 0x38, 0x03, 0x12, 0x8C, 0xCB, 0x5A, 0x9A, 0x42, 0xD9, 0xD1, 0x04, 0x98, 0x30, 0xF8, 0x30, 0x3B, -0x0B, 0x90, 0x24, 0x3B, 0x9B, 0xB2, 0x0D, 0xF1, 0x37, 0x02, 0x19, 0x46, 0x08, 0xEE, 0x10, 0x3A, 0xF7, 0xF7, 0xE4, 0xF8, -0x00, 0x28, 0x73, 0xD0, 0x9D, 0xF8, 0x37, 0x60, 0x10, 0xAD, 0x4E, 0xB1, 0xAF, 0x19, 0x2B, 0x46, 0xC5, 0xF1, 0x02, 0x01, -0xC2, 0x18, 0x52, 0x5C, 0x03, 0xF8, 0x01, 0x2B, 0xBB, 0x42, 0xF9, 0xD1, 0x04, 0x9F, 0x38, 0x46, 0x01, 0x21, 0x2B, 0x46, -0x32, 0x46, 0x1C, 0x30, 0xFF, 0xF7, 0x24, 0xFF, 0x01, 0x46, 0x0A, 0x90, 0x00, 0x28, 0xB0, 0xD0, 0xBB, 0x8B, 0x43, 0x80, -0xFB, 0x8B, 0x83, 0x80, 0x3B, 0x8C, 0xC3, 0x80, 0x97, 0xF8, 0x2C, 0x30, 0x97, 0xF8, 0x2D, 0x20, 0x43, 0xEA, 0x02, 0x23, -0x03, 0x86, 0xFB, 0x8D, 0x43, 0x86, 0x03, 0xF0, 0x01, 0x03, 0xC3, 0xF1, 0x02, 0x03, 0x43, 0x85, 0x00, 0x2E, 0x46, 0xD1, -0x0A, 0x9B, 0x1E, 0x72, 0x27, 0x4A, 0x41, 0xF2, 0x3A, 0x03, 0xD3, 0x5C, 0x00, 0x2B, 0x40, 0xF0, 0xA5, 0x82, 0x24, 0x4A, -0x41, 0xF2, 0x0A, 0x03, 0xD5, 0x5C, 0x00, 0x2D, 0x48, 0xD1, 0x94, 0xF8, 0x70, 0x11, 0x00, 0x29, 0x44, 0xD0, 0x0A, 0x9B, -0x26, 0x46, 0x03, 0xF1, 0x09, 0x07, 0x98, 0x46, 0x08, 0x46, 0x05, 0xE0, 0x01, 0x35, 0xA8, 0x42, 0x06, 0xF1, 0x21, 0x06, -0x03, 0x46, 0x34, 0xDD, 0x96, 0xF8, 0xFC, 0x30, 0x83, 0xB3, 0x98, 0xF8, 0x08, 0x20, 0x9A, 0x42, 0xF2, 0xD1, 0x39, 0x46, -0x06, 0xF1, 0xFD, 0x00, 0x0A, 0xF0, 0x26, 0xFD, 0x00, 0x28, 0x00, 0xF0, 0x2C, 0x83, 0x94, 0xF8, 0x70, 0x01, 0xE7, 0xE7, -0x04, 0x99, 0x0F, 0x48, 0xC9, 0x8B, 0x41, 0xF2, 0x0E, 0x02, 0x82, 0x5A, 0x91, 0x42, 0x7F, 0xF4, 0x72, 0xAF, 0x04, 0x99, -0x41, 0xF2, 0x10, 0x02, 0x09, 0x8C, 0x82, 0x5A, 0x91, 0x42, 0x7F, 0xF4, 0x6A, 0xAF, 0x7C, 0xE7, 0x06, 0x46, 0x10, 0xAD, -0x96, 0xE7, 0x0B, 0x46, 0x03, 0xF8, 0x08, 0x6F, 0x2E, 0x44, 0x15, 0xF8, 0x01, 0x2B, 0x03, 0xF8, 0x01, 0x2F, 0xAE, 0x42, -0xF9, 0xD1, 0xAF, 0xE7, 0xA8, 0xBA, 0x17, 0x00, 0x03, 0x46, 0x9D, 0x42, 0x3F, 0xF4, 0x43, 0xAF, 0x18, 0xEE, 0x10, 0x1A, -0x0B, 0x98, 0xF7, 0xF7, 0x45, 0xF9, 0x00, 0x28, 0x00, 0xF0, 0x3A, 0x82, 0x04, 0x9B, 0x9A, 0x79, 0x83, 0x78, 0x00, 0x2A, -0x40, 0xF0, 0x56, 0x82, 0x59, 0x1E, 0x0D, 0x29, 0x00, 0xF2, 0x4F, 0x82, 0x0E, 0x2B, 0x00, 0xF0, 0xEB, 0x82, 0x03, 0xEB, -0x83, 0x03, 0x03, 0xF6, 0x67, 0x11, 0x10, 0x46, 0xFA, 0xF7, 0x98, 0xFE, 0x0A, 0x99, 0x04, 0x9B, 0xC8, 0x62, 0x91, 0xF9, -0x3C, 0x20, 0x93, 0xF9, 0x09, 0x30, 0x9A, 0x42, 0xB8, 0xBF, 0x81, 0xF8, 0x3C, 0x30, 0x04, 0x99, 0x03, 0x88, 0x8A, 0x88, -0x9A, 0x42, 0x00, 0xD0, 0x8B, 0x80, 0x41, 0xF2, 0xBD, 0x03, 0xB4, 0x4A, 0x00, 0x25, 0xD5, 0x54, 0x18, 0xEE, 0x10, 0x3A, -0x00, 0x2B, 0x6C, 0xD0, 0x0B, 0x9B, 0x8D, 0xED, 0x05, 0x8A, 0x2C, 0x46, 0xA8, 0x46, 0x06, 0x93, 0xDD, 0xE9, 0x05, 0x10, -0xF7, 0xF7, 0xFC, 0xF9, 0x08, 0x90, 0x00, 0x28, 0x5F, 0xD0, 0x43, 0x78, 0xAA, 0x4A, 0x81, 0x78, 0x11, 0x70, 0x5E, 0x1E, -0x02, 0x33, 0xB6, 0xB2, 0x09, 0x93, 0x00, 0xF1, 0x03, 0x0A, 0x00, 0x2E, 0x44, 0xD0, 0x31, 0x46, 0x50, 0x46, 0xF7, 0xF7, -0x09, 0xFA, 0x07, 0x46, 0x00, 0x28, 0x3D, 0xD0, 0x90, 0xF8, 0x01, 0x90, 0x00, 0xF1, 0x02, 0x0B, 0x09, 0xF1, 0x02, 0x03, -0xF6, 0x1A, 0x58, 0x46, 0x04, 0x21, 0xB6, 0xB2, 0x9A, 0x44, 0xF7, 0xF7, 0x1D, 0xFA, 0x00, 0x28, 0x00, 0xF0, 0x81, 0x81, -0x49, 0x46, 0x58, 0x46, 0xF7, 0xF7, 0x36, 0xFA, 0x07, 0xF1, 0x04, 0x08, 0x04, 0x46, 0x49, 0x46, 0x58, 0x46, 0x0E, 0xAA, -0xF6, 0xF7, 0xE8, 0xFF, 0x05, 0x46, 0x00, 0x2C, 0xD7, 0xD0, 0x00, 0x2D, 0xD5, 0xD0, 0x92, 0x4B, 0x98, 0xF8, 0x00, 0xC0, -0x1A, 0x78, 0xA7, 0x78, 0xA3, 0xF1, 0x81, 0x00, 0x81, 0x1D, 0x98, 0xF8, 0x01, 0x30, 0x01, 0xF8, 0x32, 0x70, 0x4C, 0xEA, -0x03, 0x21, 0x53, 0x1C, 0xDB, 0xB2, 0x07, 0x1D, 0x10, 0x2B, 0x40, 0xF8, 0x32, 0x50, 0x80, 0xF8, 0x81, 0x30, 0x27, 0xF8, -0x32, 0x10, 0x12, 0xD0, 0x4F, 0xF0, 0x00, 0x08, 0x00, 0x2E, 0xBA, 0xD1, 0x06, 0x9B, 0x08, 0x9A, 0x05, 0x99, 0x9B, 0x1A, -0x19, 0x44, 0x09, 0x9B, 0xA1, 0xEB, 0x03, 0x0B, 0x1F, 0xFA, 0x8B, 0xF1, 0xD3, 0x18, 0x05, 0x91, 0x06, 0x93, 0x00, 0x29, -0x98, 0xD1, 0x0A, 0x99, 0x00, 0x23, 0x4B, 0x63, 0x8B, 0x63, 0x41, 0xF2, 0x0A, 0x02, 0x77, 0x4B, 0x9B, 0x5C, 0x00, 0x2B, -0x00, 0xF0, 0xB4, 0x80, 0x0A, 0x9A, 0x07, 0x9F, 0x76, 0x4C, 0x56, 0x8D, 0x51, 0x8E, 0x13, 0x46, 0x4F, 0xF4, 0xA4, 0x65, -0x53, 0xF8, 0x02, 0x0F, 0x12, 0x8E, 0x9B, 0x88, 0x05, 0xFB, 0x07, 0xF5, 0x67, 0x19, 0xA7, 0xF8, 0x68, 0x31, 0xA7, 0xF8, -0x98, 0x21, 0xFF, 0x23, 0x0A, 0x9A, 0xA7, 0xF8, 0x8E, 0x61, 0xC7, 0xF8, 0x64, 0x01, 0xA7, 0xF8, 0x9A, 0x11, 0x87, 0xF8, -0x61, 0x31, 0x87, 0xF8, 0xBE, 0x31, 0x13, 0x7A, 0x05, 0xF1, 0xEC, 0x06, 0x26, 0x44, 0x00, 0x2B, 0x40, 0xF0, 0xA2, 0x81, -0x0A, 0x9A, 0xD2, 0x6A, 0xC7, 0xF8, 0x90, 0x21, 0xA7, 0xF8, 0xC2, 0x31, 0x07, 0x9B, 0x0A, 0x9A, 0x0B, 0x98, 0x4F, 0xF4, -0xA4, 0x67, 0x07, 0xFB, 0x03, 0x47, 0x92, 0xF8, 0x3D, 0x30, 0x87, 0xF8, 0x8B, 0x31, 0x92, 0xF8, 0x3E, 0x30, 0x87, 0xF8, -0x8C, 0x31, 0x05, 0xF5, 0xCE, 0x78, 0x00, 0x23, 0xA0, 0x44, 0xC7, 0xF8, 0xCC, 0x31, 0x18, 0xEE, 0x10, 0x1A, 0x42, 0x46, -0xF9, 0xF7, 0xA4, 0xFB, 0x0A, 0x9B, 0xDB, 0x6A, 0x9B, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0xB3, 0x81, 0x05, 0xF5, 0xD6, 0x72, -0x18, 0xEE, 0x10, 0x1A, 0x0B, 0x98, 0x22, 0x44, 0x0E, 0xAB, 0xF9, 0xF7, 0x6D, 0xFD, 0x80, 0xB1, 0x07, 0x9A, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x02, 0x43, 0xB3, 0xF8, 0x9A, 0x11, 0xD3, 0xF8, 0xCC, 0x21, 0x41, 0xF4, 0x00, 0x71, 0x42, 0xF0, -0x01, 0x02, 0xA3, 0xF8, 0x9A, 0x11, 0xC3, 0xF8, 0xCC, 0x21, 0x45, 0x4F, 0x97, 0xF8, 0x76, 0x31, 0xDB, 0x07, 0x09, 0xD5, -0x07, 0x9B, 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, 0x03, 0x49, 0xD9, 0xF8, 0xCC, 0x31, 0xD8, 0x07, 0x00, 0xF1, 0x98, 0x81, -0x00, 0x21, 0x88, 0x46, 0x40, 0x46, 0x32, 0x46, 0xFB, 0xF7, 0x52, 0xFA, 0x0B, 0x9D, 0x18, 0xEE, 0x10, 0x1A, 0x28, 0x46, -0x32, 0x46, 0xF9, 0xF7, 0xAD, 0xFB, 0x28, 0x46, 0x18, 0xEE, 0x10, 0x1A, 0x32, 0x46, 0xF9, 0xF7, 0xB1, 0xFB, 0x28, 0x46, -0x18, 0xEE, 0x10, 0x1A, 0x32, 0x46, 0xF9, 0xF7, 0x13, 0xFC, 0x07, 0x9A, 0x31, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, -0x02, 0x44, 0x29, 0x6D, 0xD4, 0xF8, 0xCC, 0x31, 0x43, 0xF0, 0x00, 0x43, 0x41, 0xF2, 0x3B, 0x02, 0xC4, 0xF8, 0xCC, 0x31, -0x25, 0x4B, 0x01, 0x20, 0x98, 0x54, 0x2A, 0x6A, 0x00, 0x29, 0x00, 0xF0, 0x1C, 0x81, 0x00, 0x2A, 0x00, 0xF0, 0x19, 0x81, -0x0B, 0x7E, 0x03, 0x2B, 0x08, 0xD1, 0x25, 0x4B, 0x05, 0xF1, 0x40, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0xD5, 0xE9, -0x11, 0x30, 0x98, 0x47, 0x0A, 0x9A, 0x14, 0x78, 0xDC, 0xB9, 0x19, 0x48, 0x1F, 0x4B, 0x81, 0x88, 0x1B, 0x68, 0x01, 0x31, -0x89, 0xB2, 0x81, 0x80, 0x1B, 0x88, 0x5B, 0x07, 0x11, 0xD5, 0x13, 0x7A, 0x00, 0x2B, 0x40, 0xF0, 0x7A, 0x81, 0x1A, 0x4D, -0x0A, 0x9A, 0x04, 0x9C, 0xD2, 0x6A, 0x94, 0xF9, 0x09, 0x00, 0x12, 0x88, 0x00, 0x90, 0xCD, 0xE9, 0x01, 0x35, 0x16, 0x48, -0x23, 0x7B, 0xF7, 0xF7, 0x89, 0xFE, 0x0A, 0x99, 0x00, 0x25, 0x01, 0x22, 0x0A, 0x70, 0x81, 0xF8, 0x3D, 0x50, 0x81, 0xF8, -0x3E, 0x50, 0x41, 0xF2, 0xBD, 0x03, 0x08, 0x46, 0x05, 0x49, 0xCB, 0x5C, 0x00, 0x2B, 0x4D, 0xD0, 0x0D, 0x4C, 0x83, 0x46, -0x04, 0xF1, 0x80, 0x0A, 0x04, 0xF1, 0x81, 0x09, 0x43, 0xE0, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x64, 0xCB, 0x17, 0x00, -0x65, 0xCB, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x48, 0xBF, 0x15, 0x00, 0x84, 0xBF, 0x15, 0x00, 0xE4, 0xCA, 0x17, 0x00, 0x9A, 0xF8, 0x00, 0x70, -0x08, 0x2F, 0x2B, 0xD8, 0x5A, 0x46, 0x21, 0x68, 0x52, 0xF8, 0x02, 0x0F, 0x4E, 0x78, 0x0E, 0x90, 0x92, 0x88, 0xAD, 0xF8, -0x3C, 0x20, 0xBB, 0xF8, 0x06, 0x20, 0xBD, 0xF9, 0x3C, 0x10, 0x4F, 0xF0, 0x01, 0x08, 0x02, 0xEB, 0x03, 0x22, 0x08, 0xFA, -0x07, 0xF3, 0x4A, 0x40, 0x01, 0x3B, 0x02, 0xEA, 0x03, 0x22, 0x00, 0x23, 0x81, 0xEA, 0x02, 0x0C, 0x0E, 0xA8, 0x1A, 0x46, -0x19, 0x46, 0xAD, 0xF8, 0x3C, 0xC0, 0xFF, 0xF7, 0xDF, 0xFC, 0x68, 0xB3, 0x99, 0xF8, 0x00, 0x30, 0x01, 0x35, 0x9D, 0x42, -0x04, 0xF1, 0x08, 0x04, 0x02, 0xDA, 0xA3, 0x79, 0x00, 0x2B, 0xCF, 0xD1, 0x04, 0x98, 0x04, 0x23, 0x0C, 0x22, 0x41, 0xF2, -0x04, 0x01, 0xF6, 0xF7, 0x2D, 0xF8, 0x01, 0x20, 0x5C, 0xE5, 0xB8, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x62, 0xAE, 0x4C, 0xB1, -0x00, 0x2D, 0x7F, 0xF4, 0x88, 0xAE, 0x49, 0x46, 0x58, 0x46, 0x0E, 0xAA, 0xF6, 0xF7, 0x66, 0xFE, 0x05, 0x46, 0x7E, 0xE6, -0x49, 0x46, 0x58, 0x46, 0xF7, 0xF7, 0xA6, 0xF8, 0x04, 0x46, 0x00, 0x2D, 0x3F, 0xF4, 0x6F, 0xAE, 0x00, 0x28, 0x3F, 0xF4, -0x4C, 0xAE, 0x74, 0xE6, 0x23, 0x68, 0x41, 0x46, 0x02, 0x33, 0x32, 0x46, 0x0E, 0xA8, 0xFF, 0xF7, 0xA9, 0xFC, 0x86, 0x46, -0x00, 0x28, 0xD1, 0xD0, 0xD8, 0x46, 0xB8, 0xE8, 0x0F, 0x00, 0xF4, 0x46, 0xAC, 0xE8, 0x0F, 0x00, 0xB8, 0xE8, 0x0F, 0x00, -0xAC, 0xE8, 0x0F, 0x00, 0xB8, 0xE8, 0x0F, 0x00, 0xAC, 0xE8, 0x0F, 0x00, 0x98, 0xE8, 0x0F, 0x00, 0x8C, 0xE8, 0x0F, 0x00, -0x0E, 0x98, 0xCE, 0xF8, 0x02, 0x00, 0xBD, 0xF8, 0x3C, 0x30, 0x8E, 0xF8, 0x08, 0x60, 0x21, 0x68, 0xAE, 0xF8, 0x06, 0x30, -0x5E, 0xB1, 0x08, 0x36, 0x06, 0x39, 0x76, 0x44, 0xA1, 0xEB, 0x0E, 0x01, 0x0E, 0xF1, 0x08, 0x03, 0xCA, 0x5C, 0x03, 0xF8, -0x01, 0x2F, 0x9E, 0x42, 0xFA, 0xD1, 0x7E, 0x49, 0x8E, 0xF8, 0x3E, 0x70, 0x8B, 0x88, 0xA2, 0x79, 0x8E, 0xF8, 0x3D, 0x20, -0x01, 0x33, 0x01, 0x22, 0x8B, 0x80, 0x8E, 0xF8, 0x00, 0x20, 0x91, 0xE7, 0x04, 0x9B, 0x93, 0xF9, 0x09, 0x20, 0x0A, 0x9B, -0x93, 0xF9, 0x3C, 0x30, 0x9A, 0x42, 0x7F, 0xF7, 0xE2, 0xAD, 0x04, 0x9C, 0xA1, 0x88, 0xA0, 0x79, 0xFA, 0xF7, 0x64, 0xFC, -0x0A, 0x9A, 0xD0, 0x62, 0x63, 0x7A, 0x82, 0xF8, 0x3C, 0x30, 0xD6, 0xE5, 0x0A, 0x9B, 0x6E, 0x49, 0x07, 0x22, 0x03, 0xF1, -0x09, 0x00, 0x0A, 0xF0, 0x9D, 0xFA, 0x00, 0x28, 0x7F, 0xF4, 0xE3, 0xAC, 0x9E, 0xE5, 0x4F, 0xF6, 0xFF, 0x71, 0xB4, 0xE5, -0x01, 0x2A, 0xFA, 0xD1, 0x59, 0x1E, 0xA4, 0x29, 0xF7, 0xD8, 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF5, 0x9C, 0x51, 0x08, 0x31, -0xA9, 0xE5, 0xB2, 0xFA, 0x82, 0xF2, 0x62, 0x48, 0x52, 0x09, 0xF7, 0xF7, 0x95, 0xFD, 0xEB, 0xE6, 0x02, 0xF1, 0x09, 0x00, -0x0A, 0xF0, 0xAC, 0xFC, 0xA8, 0xB1, 0x0A, 0x9B, 0x07, 0xF5, 0xB5, 0x77, 0x03, 0xF1, 0x08, 0x08, 0x03, 0xF1, 0x28, 0x0E, -0xC4, 0x46, 0xBC, 0xE8, 0x0F, 0x00, 0xF4, 0x45, 0x38, 0x60, 0x79, 0x60, 0xBA, 0x60, 0xFB, 0x60, 0xE0, 0x46, 0x07, 0xF1, -0x10, 0x07, 0xF3, 0xD1, 0x9C, 0xF8, 0x00, 0x30, 0x3B, 0x70, 0x0A, 0x9B, 0x07, 0x98, 0x19, 0x7A, 0x0A, 0x9B, 0xDA, 0x6A, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x43, 0x00, 0x27, 0xC3, 0xF8, 0x90, 0x21, 0xA3, 0xF8, 0xC2, 0x71, 0x00, 0x29, -0x3F, 0xF4, 0x38, 0xAE, 0x0B, 0x44, 0x05, 0xF2, 0x6B, 0x11, 0x12, 0x88, 0x48, 0x48, 0x83, 0xF8, 0x6B, 0x71, 0x21, 0x44, -0xF7, 0xF7, 0x5E, 0xFD, 0x2C, 0xE6, 0x40, 0x46, 0x01, 0x21, 0xFA, 0xF7, 0xED, 0xFD, 0x10, 0xF0, 0x0F, 0x00, 0x1A, 0xBF, -0xB0, 0xFA, 0x80, 0xF0, 0xC0, 0xF1, 0x1F, 0x03, 0x01, 0x23, 0x87, 0xF8, 0xC1, 0x31, 0x3D, 0xE6, 0x18, 0xEE, 0x10, 0x1A, -0x0B, 0x98, 0x32, 0x46, 0xF9, 0xF7, 0x0C, 0xFC, 0x00, 0x28, 0x3F, 0xF4, 0x5F, 0xAE, 0xD9, 0xF8, 0xCC, 0x31, 0x0B, 0x98, -0x43, 0xF0, 0x02, 0x03, 0x18, 0xEE, 0x10, 0x1A, 0xC9, 0xF8, 0xCC, 0x31, 0xF7, 0xF7, 0x24, 0xF8, 0x97, 0xF8, 0x76, 0x31, -0x59, 0x07, 0x80, 0x46, 0x30, 0xD4, 0x9A, 0x07, 0x0A, 0xD4, 0x07, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x43, -0xD3, 0xF8, 0xCC, 0x11, 0x11, 0xF0, 0x08, 0x01, 0x3F, 0xF4, 0x44, 0xAE, 0x05, 0xF5, 0x86, 0x72, 0x18, 0xEE, 0x10, 0x1A, -0x0B, 0x98, 0x22, 0x44, 0xF9, 0xF7, 0x08, 0xFC, 0x30, 0xBB, 0x01, 0x46, 0x38, 0xE6, 0x02, 0xF1, 0x09, 0x05, 0x28, 0x46, -0x16, 0x46, 0x0A, 0xF0, 0x33, 0xFC, 0x20, 0xB9, 0x1E, 0x4B, 0x22, 0x4D, 0x99, 0x88, 0x33, 0x7A, 0x7A, 0xE6, 0x0A, 0x9A, -0x1B, 0x49, 0x13, 0x7A, 0x89, 0x88, 0x1A, 0x44, 0x54, 0x72, 0x73, 0xE6, 0x40, 0xF6, 0xB4, 0x11, 0x15, 0xE5, 0x94, 0xF8, -0x70, 0x31, 0xF6, 0xE4, 0x05, 0xF5, 0x8C, 0x72, 0x18, 0xEE, 0x10, 0x1A, 0x0B, 0x98, 0x22, 0x44, 0xF9, 0xF7, 0x02, 0xFC, -0xA0, 0xB9, 0x97, 0xF8, 0x76, 0x31, 0xC2, 0xE7, 0x07, 0x9A, 0x0B, 0x98, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x43, -0x18, 0xEE, 0x10, 0x1A, 0xD3, 0xF8, 0xCC, 0x21, 0x42, 0xF0, 0x04, 0x02, 0xC3, 0xF8, 0xCC, 0x21, 0xF6, 0xF7, 0xF2, 0xFF, -0x01, 0x46, 0x01, 0xE6, 0xD9, 0xF8, 0xCC, 0x31, 0x0B, 0x98, 0x43, 0xF0, 0x08, 0x03, 0x18, 0xEE, 0x10, 0x1A, 0x32, 0x46, -0xC9, 0xF8, 0xCC, 0x31, 0xF9, 0xF7, 0x36, 0xFC, 0xDD, 0xE7, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x54, 0xBF, 0x15, 0x00, -0x68, 0xBF, 0x15, 0x00, 0x5C, 0xBF, 0x15, 0x00, 0x48, 0xBF, 0x15, 0x00, 0x00, 0x23, 0x1A, 0x46, 0x19, 0x46, 0xFF, 0xF7, -0x71, 0xBB, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x43, 0x03, 0x78, 0x43, 0xB3, 0x16, 0x4C, 0x07, 0x46, 0x4F, 0xF0, 0x00, 0x08, -0x04, 0xF5, 0x80, 0x56, 0x6F, 0xF0, 0x7F, 0x05, 0x00, 0xF1, 0x01, 0x09, 0x02, 0xE0, 0x40, 0x34, 0xB4, 0x42, 0x17, 0xD0, -0x23, 0x7A, 0xAB, 0xB1, 0x94, 0xF9, 0x44, 0x30, 0xAB, 0x42, 0xF6, 0xDD, 0x23, 0x7C, 0x3A, 0x78, 0x9A, 0x42, 0xF2, 0xD1, -0x49, 0x46, 0x04, 0xF1, 0x11, 0x00, 0x0A, 0xF0, 0x97, 0xF9, 0x00, 0x28, 0xEB, 0xD1, 0x94, 0xF9, 0x44, 0x50, 0x04, 0xF1, -0x08, 0x08, 0x40, 0x34, 0xB4, 0x42, 0xE7, 0xD1, 0x40, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x98, 0x46, 0x40, 0x46, 0xBD, 0xE8, -0xF8, 0x83, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x41, 0xF2, 0x0B, 0x03, 0xC2, 0x4D, 0xE9, 0x5C, -0x2E, 0x68, 0x01, 0x29, 0x82, 0xB0, 0x00, 0xF2, 0xB8, 0x81, 0x96, 0xF8, 0x6F, 0x01, 0x00, 0x27, 0x00, 0x28, 0x00, 0xF0, -0x57, 0x81, 0x33, 0x46, 0x00, 0x24, 0x03, 0xE0, 0x01, 0x34, 0x84, 0x42, 0x00, 0xF0, 0x50, 0x81, 0x9A, 0x78, 0x8A, 0x42, -0x03, 0xF1, 0x06, 0x03, 0xF6, 0xD1, 0x17, 0xB1, 0x41, 0xF2, 0x0B, 0x03, 0xE9, 0x54, 0x4F, 0xF4, 0xBA, 0x73, 0x02, 0x21, -0x04, 0x22, 0x4F, 0xF4, 0x00, 0x60, 0xF5, 0xF7, 0x03, 0xFE, 0x96, 0xF8, 0x6E, 0x31, 0x80, 0xF8, 0x6E, 0x31, 0x07, 0x46, -0xD6, 0xE9, 0x58, 0x01, 0xC7, 0xF8, 0x60, 0x01, 0xA7, 0xF8, 0x64, 0x11, 0x96, 0xF8, 0x70, 0x01, 0x87, 0xF8, 0x70, 0x01, -0x96, 0xF8, 0x71, 0x31, 0x87, 0xF8, 0x71, 0x31, 0x96, 0xF8, 0x6F, 0x31, 0x9C, 0x42, 0x80, 0xF2, 0x79, 0x81, 0x41, 0xF2, -0x0B, 0x02, 0x04, 0xEB, 0x44, 0x04, 0x06, 0x21, 0x15, 0xF8, 0x02, 0x80, 0x06, 0xEB, 0x44, 0x04, 0x11, 0xFB, 0x03, 0x61, -0xA3, 0x78, 0x43, 0x45, 0x10, 0xD1, 0x97, 0xF8, 0x6F, 0x31, 0xD4, 0xF8, 0x00, 0xC0, 0x03, 0xEB, 0x43, 0x02, 0x01, 0x33, -0x47, 0xF8, 0x12, 0xC0, 0x07, 0xEB, 0x42, 0x02, 0xB4, 0xF8, 0x04, 0xC0, 0xA2, 0xF8, 0x04, 0xC0, 0x87, 0xF8, 0x6F, 0x31, -0x06, 0x34, 0xA1, 0x42, 0xE8, 0xD1, 0xF0, 0xB1, 0x4F, 0xF0, 0x21, 0x0A, 0xFC, 0x21, 0x1A, 0xFB, 0x00, 0x1A, 0x73, 0x18, -0x03, 0xF1, 0x20, 0x09, 0x7A, 0x18, 0xD3, 0xF8, 0x00, 0xC0, 0x5C, 0x68, 0x98, 0x68, 0xD3, 0xF8, 0x0C, 0xE0, 0xC2, 0xF8, -0x0C, 0xE0, 0x10, 0x33, 0x4B, 0x45, 0xC2, 0xF8, 0x00, 0xC0, 0x54, 0x60, 0x90, 0x60, 0x02, 0xF1, 0x10, 0x02, 0xEE, 0xD1, -0x21, 0x31, 0x1B, 0x78, 0x13, 0x70, 0x51, 0x45, 0xE5, 0xD1, 0x2B, 0x68, 0xDF, 0xF8, 0x2C, 0xC2, 0xB3, 0xF8, 0x6C, 0x91, -0x81, 0x4C, 0xB9, 0xF1, 0xC9, 0x0F, 0x28, 0xBF, 0x4F, 0xF0, 0x00, 0x09, 0xB8, 0xF1, 0x01, 0x0F, 0x66, 0x46, 0x00, 0xF0, -0xE5, 0x80, 0x93, 0xF8, 0x71, 0x21, 0x7C, 0x4B, 0x00, 0x2A, 0xA3, 0xF1, 0x04, 0x02, 0x0A, 0xBF, 0x13, 0x46, 0x4F, 0xF0, -0x08, 0x0E, 0x4F, 0xF0, 0x0C, 0x0E, 0x78, 0x4A, 0x01, 0x20, 0x08, 0x21, 0x10, 0x75, 0x15, 0x32, 0x61, 0x70, 0x58, 0x18, -0x13, 0xF8, 0x01, 0x1B, 0x02, 0xF8, 0x01, 0x1F, 0x98, 0x42, 0xF9, 0xD1, 0x72, 0x4B, 0x01, 0x93, 0xB9, 0xF1, 0x00, 0x0F, -0x40, 0xF0, 0x99, 0x80, 0xBE, 0xF1, 0x08, 0x0F, 0x19, 0xD0, 0x01, 0x9B, 0x6E, 0x4A, 0x58, 0x1C, 0x32, 0x21, 0x01, 0x90, -0x19, 0x70, 0x01, 0x9B, 0xAE, 0xF1, 0x08, 0x0E, 0x59, 0x1C, 0x5F, 0xFA, 0x8E, 0xFE, 0x01, 0x91, 0x83, 0xF8, 0x00, 0xE0, -0x01, 0x9B, 0x18, 0x1D, 0x12, 0xF8, 0x01, 0x1B, 0x03, 0xF8, 0x01, 0x1B, 0x98, 0x42, 0xF9, 0xD1, 0x01, 0x9B, 0x73, 0x44, -0x01, 0x93, 0x41, 0xF2, 0x0B, 0x03, 0xEB, 0x5C, 0x63, 0xB9, 0x01, 0x9B, 0x03, 0x22, 0x59, 0x1C, 0x01, 0x91, 0x1A, 0x70, -0x01, 0x9B, 0x01, 0x22, 0x59, 0x1C, 0x01, 0x91, 0x1A, 0x70, 0x01, 0x9B, 0x13, 0x44, 0x01, 0x93, 0xB9, 0xF1, 0x00, 0x0F, -0x36, 0xD1, 0xDF, 0xF8, 0x7C, 0x81, 0x98, 0xF8, 0x76, 0x31, 0xD8, 0x07, 0x06, 0xD5, 0x56, 0x4B, 0x01, 0xA8, 0xD3, 0xF8, -0x48, 0x31, 0x98, 0x47, 0x98, 0xF8, 0x76, 0x31, 0x41, 0xF2, 0x0B, 0x02, 0xAA, 0x5C, 0x01, 0x2A, 0x4A, 0xD0, 0x5D, 0x07, -0x04, 0xD5, 0x4F, 0x4B, 0x01, 0xA8, 0xD3, 0xF8, 0x44, 0x31, 0x98, 0x47, 0x4D, 0x4D, 0x01, 0x98, 0x29, 0x46, 0x31, 0xF8, -0x03, 0x2B, 0x0A, 0xF0, 0xB1, 0xF8, 0x4B, 0x4A, 0x01, 0x99, 0x12, 0x68, 0x2B, 0x88, 0xB2, 0xF9, 0x00, 0x20, 0x0B, 0x44, -0x00, 0x2A, 0x01, 0x93, 0xA3, 0xEB, 0x04, 0x03, 0x5D, 0xDB, 0x00, 0x22, 0xA7, 0xF8, 0x6C, 0x31, 0xC7, 0xF8, 0x68, 0x21, -0x38, 0x46, 0xF5, 0xF7, 0x45, 0xFD, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x32, 0x78, 0x3B, 0x2A, 0x60, 0xD0, 0xDF, 0xF8, -0x08, 0x81, 0x98, 0xF8, 0x76, 0x31, 0xD9, 0x07, 0x58, 0xD5, 0x39, 0x4B, 0x01, 0xA8, 0xD3, 0xF8, 0x48, 0x31, 0x98, 0x47, -0xB9, 0xF1, 0x00, 0x0F, 0xC2, 0xD0, 0x01, 0x99, 0x32, 0x78, 0x0B, 0x46, 0x76, 0x1A, 0x49, 0x44, 0x00, 0xE0, 0xF2, 0x5C, -0x03, 0xF8, 0x01, 0x2B, 0x99, 0x42, 0xFA, 0xD1, 0x01, 0x9A, 0x98, 0xF8, 0x76, 0x31, 0x4A, 0x44, 0x01, 0x92, 0x41, 0xF2, -0x0B, 0x02, 0xAA, 0x5C, 0x01, 0x2A, 0xB4, 0xD1, 0x9E, 0x07, 0xB2, 0xD5, 0x29, 0x4B, 0x00, 0x21, 0xD3, 0xF8, 0x50, 0x31, -0x01, 0xA8, 0x98, 0x47, 0x98, 0xF8, 0x76, 0x31, 0xA9, 0xE7, 0x9C, 0xF8, 0x00, 0x20, 0x0A, 0x2A, 0x7F, 0xF4, 0x62, 0xAF, -0x9C, 0xF8, 0x01, 0x60, 0x02, 0x36, 0x16, 0xF0, 0xFF, 0x06, 0x09, 0xD0, 0x22, 0x49, 0x98, 0x19, 0x01, 0xE0, 0x11, 0xF8, -0x01, 0x2F, 0x03, 0xF8, 0x01, 0x2B, 0x83, 0x42, 0xF9, 0xD1, 0x01, 0x9B, 0x33, 0x44, 0xA9, 0xEB, 0x06, 0x09, 0x01, 0x93, -0x1F, 0xFA, 0x89, 0xF9, 0x66, 0x44, 0x49, 0xE7, 0x01, 0x27, 0xB9, 0x42, 0x53, 0xD0, 0x39, 0x46, 0xA0, 0xE6, 0xB3, 0xF5, -0x96, 0x7F, 0x9E, 0xD9, 0x16, 0x49, 0x17, 0x48, 0xB4, 0x22, 0xF7, 0xF7, 0x99, 0xFD, 0x01, 0x9B, 0x1B, 0x1B, 0x96, 0xE7, -0x0A, 0x4B, 0x4F, 0xF0, 0x08, 0x0E, 0x22, 0xE7, 0x01, 0x99, 0xAE, 0xE7, 0x70, 0x78, 0x01, 0x99, 0x02, 0x30, 0x10, 0xF0, -0xFF, 0x00, 0x42, 0xD0, 0x0B, 0x46, 0xA6, 0xEB, 0x03, 0x0C, 0x01, 0x44, 0x1C, 0xE0, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, -0xE8, 0x61, 0x18, 0x00, 0xB8, 0xB2, 0x15, 0x00, 0xD4, 0x61, 0x18, 0x00, 0xF2, 0x61, 0x18, 0x00, 0xBC, 0xB2, 0x15, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x68, 0xCB, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x18, 0x63, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, -0x9C, 0xBF, 0x15, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x1C, 0xF8, 0x03, 0x20, 0x03, 0xF8, 0x01, 0x2B, 0x99, 0x42, 0xF9, 0xD1, -0xDF, 0xF8, 0x48, 0x80, 0x01, 0x9B, 0x98, 0xF8, 0x76, 0x21, 0x03, 0x44, 0xA9, 0xEB, 0x00, 0x09, 0x01, 0x93, 0xD3, 0x07, -0x1F, 0xFA, 0x89, 0xF9, 0x06, 0x44, 0x7F, 0xF5, 0x6F, 0xAF, 0x68, 0xE7, 0x41, 0xF2, 0x0B, 0x03, 0x15, 0xF8, 0x03, 0x80, -0xA3, 0xE6, 0x41, 0xF2, 0x0B, 0x03, 0x02, 0x22, 0xEA, 0x54, 0x00, 0x20, 0xFF, 0xF7, 0xDE, 0xF8, 0x4F, 0xE7, 0xDF, 0xF8, -0x10, 0x80, 0x98, 0xF8, 0x76, 0x31, 0xDB, 0x07, 0x3F, 0xF5, 0x55, 0xAF, 0x5D, 0xE7, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, -0xF0, 0xB5, 0x4C, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x83, 0xB0, 0x04, 0xD1, 0x4A, 0x4A, 0x13, 0x68, 0x23, 0xF4, -0x00, 0x13, 0x13, 0x60, 0x48, 0x4C, 0x49, 0x4D, 0x23, 0x68, 0x5B, 0x07, 0x4E, 0xD4, 0x48, 0x4E, 0x41, 0xF2, 0x0A, 0x03, -0xEB, 0x5C, 0x5B, 0xB9, 0x44, 0x4A, 0x19, 0x46, 0x02, 0xF5, 0x80, 0x54, 0x80, 0x20, 0x11, 0x72, 0x82, 0xF8, 0x44, 0x00, -0x40, 0x32, 0x94, 0x42, 0xF9, 0xD1, 0xA9, 0x80, 0x29, 0x68, 0x91, 0xF8, 0x70, 0x21, 0x01, 0x2A, 0x5F, 0xD0, 0x00, 0x24, -0x20, 0x46, 0x41, 0xF2, 0x3A, 0x02, 0xA8, 0x54, 0x91, 0xF8, 0x6E, 0x21, 0x91, 0xF8, 0x6F, 0x11, 0x08, 0x20, 0xCD, 0xE9, -0x00, 0x41, 0x38, 0x49, 0xF7, 0xF7, 0xDC, 0xFA, 0x41, 0xF2, 0x0A, 0x03, 0xEB, 0x5C, 0x83, 0xB9, 0x35, 0x49, 0x36, 0x4A, -0x0B, 0x68, 0x36, 0x48, 0x43, 0xF0, 0x04, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x03, 0x80, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, -0x43, 0xF4, 0xBB, 0x63, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x73, 0x68, 0x01, 0x21, 0x43, 0xF0, 0x20, 0x03, 0x04, 0x20, -0x73, 0x60, 0xF5, 0xF7, 0x01, 0xFE, 0x2B, 0x68, 0xD3, 0xF8, 0x68, 0x11, 0x19, 0xB1, 0xB3, 0xF8, 0x6C, 0x21, 0xC8, 0x2A, -0x23, 0xD9, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0xFF, 0xF7, 0xCE, 0xBD, 0x2B, 0x68, 0x25, 0x4A, 0x93, 0xF8, 0x6E, 0x31, -0x24, 0x49, 0x1E, 0x4E, 0x10, 0x68, 0x24, 0x4A, 0xC0, 0x8E, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x03, 0x13, 0x03, 0x21, -0x71, 0x77, 0x11, 0x69, 0x20, 0x4A, 0x73, 0x61, 0x01, 0x44, 0xD2, 0xF8, 0xE0, 0x31, 0x06, 0xF1, 0x0C, 0x00, 0x98, 0x47, -0x01, 0x23, 0x33, 0x77, 0x23, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x23, 0x60, 0x92, 0xE7, 0x1A, 0x48, 0x09, 0xF0, 0x60, 0xFF, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0xFF, 0xF7, 0xA7, 0xBD, 0x91, 0xF8, 0xFC, 0x20, 0x07, 0x2A, 0x9B, 0xD1, 0x01, 0xF1, -0xFD, 0x00, 0x14, 0x49, 0x09, 0xF0, 0x22, 0xFF, 0x41, 0xF2, 0x0A, 0x03, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0xEB, 0x5C, -0x29, 0x68, 0x04, 0x46, 0x8F, 0xE7, 0x00, 0xBF, 0x74, 0x36, 0x17, 0x00, 0x6C, 0x00, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, -0xA8, 0xBA, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0xCC, 0xBF, 0x15, 0x00, 0x94, 0x40, 0x04, 0x40, 0x20, 0x04, 0x32, 0x40, -0x28, 0x25, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, -0x18, 0x63, 0x18, 0x00, 0x54, 0xBF, 0x15, 0x00, 0x00, 0x22, 0x02, 0x81, 0xE7, 0xF7, 0xE0, 0xBA, 0x2D, 0xE9, 0xF0, 0x41, -0x14, 0x46, 0x52, 0x78, 0x00, 0x2B, 0x18, 0xBF, 0x02, 0x23, 0x52, 0x06, 0x44, 0xBF, 0x08, 0x33, 0xDB, 0xB2, 0x23, 0x44, -0x06, 0x46, 0x9A, 0x7F, 0x08, 0x2A, 0x0D, 0x46, 0x03, 0xD0, 0x00, 0x27, 0x38, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0xDA, 0x7F, -0x06, 0x2A, 0xF8, 0xD1, 0x93, 0xF8, 0x26, 0x70, 0x00, 0x2F, 0xF4, 0xD1, 0x93, 0xF8, 0x27, 0x80, 0xB8, 0xF1, 0x01, 0x0F, -0x07, 0xD0, 0xB8, 0xF1, 0x02, 0x0F, 0xED, 0xD1, 0x13, 0x49, 0x80, 0x20, 0xF7, 0xF7, 0x2E, 0xFA, 0xE8, 0xE7, 0x93, 0xF8, -0x3A, 0x70, 0x93, 0xF8, 0x3B, 0xC0, 0x93, 0xF8, 0x38, 0x00, 0x93, 0xF8, 0x39, 0x20, 0x0B, 0x68, 0x0D, 0x49, 0x3F, 0x04, -0x47, 0xEA, 0x0C, 0x67, 0x07, 0x43, 0x47, 0xEA, 0x02, 0x27, 0x3A, 0x46, 0x80, 0x20, 0xF7, 0xF7, 0x19, 0xFA, 0x2B, 0x68, -0x9F, 0x42, 0x01, 0xD0, 0x47, 0x46, 0xCF, 0xE7, 0x06, 0x4B, 0x30, 0x78, 0x9B, 0x69, 0x22, 0x46, 0x04, 0xF1, 0x10, 0x01, -0x47, 0x46, 0x98, 0x47, 0xC6, 0xE7, 0x00, 0xBF, 0x08, 0xC0, 0x15, 0x00, 0xE8, 0xBF, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xF8, 0xB5, 0x21, 0x4B, 0x21, 0x4D, 0x1E, 0x68, 0x95, 0xF8, 0x44, 0x40, 0xB6, 0xF9, 0x00, 0x70, 0x1F, 0x4B, 0x04, 0xEB, -0x84, 0x06, 0x00, 0x2F, 0x8E, 0x46, 0x03, 0xEB, 0x06, 0x16, 0x23, 0xDB, 0xA7, 0x00, 0x07, 0xEB, 0x04, 0x0C, 0x03, 0xEB, -0x0C, 0x1C, 0xCC, 0xF8, 0x0C, 0x00, 0x10, 0xB1, 0x01, 0x7C, 0x8C, 0xF8, 0x10, 0x10, 0x3C, 0x44, 0x03, 0xEB, 0x04, 0x13, -0x31, 0x46, 0x5A, 0x64, 0xA3, 0xF8, 0x4C, 0xE0, 0x13, 0x48, 0xF5, 0xF7, 0xB5, 0xFF, 0x95, 0xF8, 0x44, 0x20, 0x12, 0x4B, -0x01, 0x32, 0xA3, 0xFB, 0x02, 0x13, 0xDB, 0x09, 0x03, 0xEB, 0x43, 0x03, 0xA2, 0xEB, 0x83, 0x13, 0x85, 0xF8, 0x44, 0x30, -0x30, 0x46, 0xF8, 0xBD, 0x04, 0xEB, 0x84, 0x01, 0x03, 0xEB, 0x01, 0x11, 0xA7, 0x00, 0xB1, 0xF8, 0x4C, 0x10, 0x00, 0x29, -0xD3, 0xD0, 0x08, 0x49, 0x08, 0x48, 0xC6, 0x22, 0xF7, 0xF7, 0xBA, 0xFB, 0x00, 0x26, 0xED, 0xE7, 0x38, 0x36, 0x17, 0x00, -0xB0, 0xDE, 0x17, 0x00, 0xE0, 0x63, 0x18, 0x00, 0xE8, 0xDE, 0x17, 0x00, 0xAB, 0xAA, 0xAA, 0xAA, 0x70, 0x79, 0x15, 0x00, -0x14, 0xC0, 0x15, 0x00, 0x70, 0xB5, 0x0C, 0x4D, 0x42, 0x69, 0x04, 0x46, 0x04, 0x21, 0x00, 0x20, 0xFF, 0xF7, 0xA6, 0xFF, -0x21, 0x46, 0x28, 0x46, 0xF5, 0xF7, 0xCC, 0xFF, 0xA5, 0xF1, 0x08, 0x00, 0x21, 0x46, 0xF5, 0xF7, 0x77, 0xFF, 0x05, 0x4B, -0xA5, 0xF1, 0x20, 0x00, 0xD3, 0xF8, 0x38, 0x31, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x08, 0xDF, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0xB3, 0x4B, 0x01, 0xF0, 0x7C, 0x04, 0x1A, 0x7A, 0x04, 0x3C, 0x00, 0xEB, -0x02, 0x0C, 0x01, 0xF4, 0x80, 0x6E, 0x18, 0x2C, 0x0E, 0xD8, 0xDF, 0xE8, 0x04, 0xF0, 0x54, 0x0D, 0x0D, 0x0D, 0x58, 0x0D, -0x0D, 0x0D, 0x8D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xB5, 0x00, -0x00, 0x24, 0xA7, 0x4D, 0x2D, 0x68, 0x2D, 0x78, 0xAD, 0x07, 0x03, 0xD5, 0x01, 0xF0, 0x3C, 0x01, 0x3C, 0x29, 0x02, 0xD0, -0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0xBE, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0xD1, 0x80, 0xBC, 0xF8, 0x02, 0x10, 0x9E, 0x7A, -0x9E, 0x4C, 0x8D, 0x0B, 0x4F, 0xF4, 0xA4, 0x61, 0xC5, 0xEB, 0x05, 0x17, 0x01, 0xFB, 0x06, 0xF1, 0x01, 0xEB, 0xC7, 0x01, -0x21, 0x44, 0x2F, 0x01, 0x91, 0xF8, 0x3B, 0xE2, 0xBE, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0xCC, 0x80, 0x91, 0xF8, 0x38, 0x12, -0x01, 0x29, 0x00, 0xF0, 0xEB, 0x80, 0x02, 0x29, 0x00, 0xF0, 0xC1, 0x80, 0x0A, 0x1F, 0x01, 0x2A, 0x40, 0xF2, 0xBD, 0x80, -0x1A, 0x7A, 0x04, 0x32, 0x1A, 0x72, 0xDC, 0xF8, 0x00, 0x00, 0xC1, 0x17, 0xC3, 0xE9, 0x04, 0x01, 0x4F, 0xF4, 0xA4, 0x62, -0x02, 0xFB, 0x06, 0xF2, 0x79, 0x1B, 0x02, 0xF5, 0xEC, 0x72, 0x02, 0xEB, 0xC1, 0x02, 0x22, 0x44, 0x1A, 0x62, 0x01, 0x24, -0xC2, 0xE7, 0x14, 0x1D, 0x1C, 0x72, 0x01, 0x24, 0xB5, 0xE7, 0x02, 0xF1, 0x08, 0x04, 0x1C, 0x72, 0x30, 0xF8, 0x02, 0x80, -0xBC, 0xF8, 0x06, 0x40, 0x9C, 0xF8, 0x02, 0xA0, 0x93, 0xF8, 0x30, 0x90, 0x4F, 0xEA, 0x08, 0x28, 0x1F, 0xFA, 0x88, 0xF8, -0x46, 0x46, 0xF7, 0x17, 0x44, 0xEA, 0x07, 0x06, 0xBC, 0xF8, 0x04, 0x40, 0x4A, 0xEA, 0x04, 0x44, 0x44, 0xEA, 0x08, 0x04, -0x49, 0xF0, 0x03, 0x09, 0xC3, 0xE9, 0x04, 0x46, 0x83, 0xF8, 0x30, 0x90, 0xBE, 0xF1, 0x00, 0x0F, 0x5F, 0xD0, 0x9E, 0x7A, -0xBC, 0xF8, 0x02, 0x50, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x06, 0xF4, 0xAD, 0x0B, 0x6E, 0x4E, 0x04, 0xF5, 0xEC, 0x74, -0xC5, 0xEB, 0x05, 0x15, 0x04, 0xEB, 0xC5, 0x04, 0x34, 0x44, 0x1C, 0x62, 0x01, 0x24, 0x80, 0xE7, 0xBE, 0xF1, 0x00, 0x0F, -0x50, 0xD0, 0x9E, 0x7A, 0xBC, 0xF8, 0x02, 0x50, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x06, 0xF4, 0xAD, 0x0B, 0x63, 0x4E, -0x04, 0xF5, 0xEC, 0x74, 0xC5, 0xEB, 0x05, 0x15, 0x04, 0xEB, 0xC5, 0x04, 0x34, 0x44, 0x02, 0xF1, 0x08, 0x05, 0x1D, 0x72, -0xBC, 0xF8, 0x04, 0x60, 0x93, 0xF8, 0x30, 0x80, 0x1C, 0x62, 0x84, 0x5A, 0xBC, 0xF8, 0x06, 0x50, 0x5D, 0x61, 0x44, 0xEA, -0x06, 0x44, 0x48, 0xF0, 0x02, 0x05, 0x1C, 0x61, 0x83, 0xF8, 0x30, 0x50, 0x01, 0x24, 0x58, 0xE7, 0xBE, 0xF1, 0x00, 0x0F, -0x2F, 0xD0, 0x9E, 0x7A, 0xBC, 0xF8, 0x02, 0x50, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x06, 0xF4, 0xAD, 0x0B, 0x4F, 0x4E, -0x04, 0xF5, 0xEC, 0x74, 0xC5, 0xEB, 0x05, 0x15, 0x04, 0xEB, 0xC5, 0x04, 0x34, 0x44, 0x02, 0xF1, 0x12, 0x05, 0x66, 0x46, -0x1D, 0x72, 0x56, 0xF8, 0x02, 0x7F, 0x93, 0xF8, 0x30, 0x50, 0x76, 0x68, 0x1C, 0x62, 0x45, 0xF0, 0x02, 0x04, 0x83, 0xF8, -0x30, 0x40, 0xC3, 0xE9, 0x04, 0x76, 0x01, 0x24, 0x33, 0xE7, 0x5C, 0x7A, 0x42, 0x4D, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, -0x04, 0x54, 0xA8, 0xE7, 0x5C, 0x7A, 0x3F, 0x4D, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x04, 0x54, 0xB7, 0xE7, 0x5C, 0x7A, -0x3B, 0x4D, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x04, 0x54, 0xD8, 0xE7, 0x59, 0x7A, 0x39, 0x4D, 0x4F, 0xF4, 0x1E, 0x74, -0x04, 0xFB, 0x01, 0xF4, 0x29, 0x19, 0x91, 0xF8, 0x98, 0x10, 0x01, 0x29, 0x43, 0xD0, 0x02, 0x29, 0x04, 0xD1, 0x34, 0x48, -0xF7, 0xF7, 0x36, 0xF8, 0x00, 0x24, 0x15, 0xE7, 0x0A, 0x1F, 0x01, 0x2A, 0xF7, 0xD9, 0x18, 0x7A, 0xBC, 0xF8, 0x02, 0x10, -0x9D, 0x7A, 0x2B, 0x4E, 0x04, 0x30, 0x18, 0x72, 0xDC, 0xF8, 0x00, 0x40, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x05, 0xF2, -0x89, 0x0B, 0xE5, 0x17, 0xC1, 0xEB, 0x01, 0x11, 0x02, 0xF5, 0xEC, 0x72, 0xC3, 0xE9, 0x04, 0x45, 0x02, 0xEB, 0xC1, 0x02, -0x32, 0x44, 0x92, 0xF8, 0x63, 0x10, 0x00, 0x29, 0xDE, 0xD0, 0x1A, 0x62, 0x01, 0x24, 0xF3, 0xE6, 0x19, 0x7A, 0x93, 0xF8, -0x30, 0xE0, 0x08, 0x31, 0x19, 0x72, 0x82, 0x5A, 0x9C, 0xF8, 0x02, 0x80, 0xBC, 0xF8, 0x04, 0x00, 0xBC, 0xF8, 0x06, 0x90, -0x12, 0x02, 0x92, 0xB2, 0xD1, 0x17, 0x48, 0xEA, 0x00, 0x40, 0x49, 0xEA, 0x01, 0x09, 0x02, 0x43, 0x4E, 0xF0, 0x03, 0x0E, -0xC3, 0xE9, 0x04, 0x29, 0x83, 0xF8, 0x30, 0xE0, 0x08, 0xE7, 0x19, 0x7A, 0x93, 0xF8, 0x30, 0x70, 0x08, 0x31, 0x19, 0x72, -0x81, 0x5A, 0xBC, 0xF8, 0x04, 0x80, 0x9C, 0xF8, 0x02, 0x00, 0xBC, 0xF8, 0x06, 0x60, 0x09, 0x02, 0x89, 0xB2, 0x04, 0xF1, -0x38, 0x02, 0x40, 0xEA, 0x08, 0x44, 0x0C, 0x43, 0xC9, 0x17, 0x47, 0xF0, 0x03, 0x07, 0x0E, 0x43, 0xC3, 0xE9, 0x04, 0x46, -0x2A, 0x44, 0x83, 0xF8, 0x30, 0x70, 0xC0, 0xE7, 0xB0, 0xDE, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, -0xA0, 0x65, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x34, 0xC0, 0x15, 0x00, 0x70, 0xB5, 0x18, 0x4E, 0x18, 0x4A, 0xB3, 0x7A, -0x75, 0x7A, 0x12, 0x7C, 0x1B, 0x02, 0x43, 0xEA, 0x05, 0x43, 0xF5, 0x7A, 0x04, 0x46, 0x00, 0x6E, 0x43, 0xEA, 0x05, 0x63, -0xFF, 0x2A, 0x0D, 0x46, 0x43, 0xEA, 0x00, 0x03, 0x17, 0xD0, 0x41, 0xF0, 0x80, 0x05, 0x43, 0xF0, 0x80, 0x03, 0xEA, 0x07, -0x48, 0xBF, 0x43, 0xF0, 0x40, 0x03, 0x0D, 0x4A, 0x58, 0xBF, 0x23, 0xF0, 0x40, 0x03, 0x23, 0x66, 0x20, 0x46, 0xD2, 0xF8, -0xA8, 0x32, 0x98, 0x47, 0x32, 0x6C, 0x29, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0xEF, 0xBD, 0x29, 0x06, -0x58, 0xBF, 0x23, 0xF0, 0x80, 0x03, 0xE6, 0xD5, 0xE3, 0xE7, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x21, 0x4B, 0x21, 0x4E, 0x1B, 0x7C, 0xFF, 0x2B, 0x04, 0x46, 0x0D, 0x46, 0x21, 0xD0, -0xB2, 0x7A, 0xFF, 0x2A, 0x32, 0xD0, 0x01, 0xF0, 0x01, 0x01, 0x45, 0xF0, 0x80, 0x05, 0x77, 0x7A, 0x20, 0x6E, 0x13, 0x02, -0x43, 0xEA, 0x07, 0x43, 0x03, 0x43, 0x43, 0xF0, 0x82, 0x03, 0x11, 0xB3, 0x43, 0xF0, 0x40, 0x03, 0x16, 0x49, 0x23, 0x66, -0x00, 0x22, 0xD1, 0xF8, 0xA8, 0x32, 0x86, 0xF8, 0x32, 0x20, 0x20, 0x46, 0x98, 0x47, 0x32, 0x6C, 0x29, 0x46, 0x20, 0x46, -0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0xB8, 0xBD, 0xB3, 0x7A, 0x71, 0x7A, 0x02, 0x6E, 0x1B, 0x02, 0x43, 0xEA, 0x01, 0x43, -0x13, 0x43, 0x2A, 0x06, 0x0D, 0xD4, 0x23, 0xF0, 0x80, 0x03, 0x05, 0xF0, 0x01, 0x01, 0x43, 0xF0, 0x02, 0x03, 0x00, 0x29, -0xDC, 0xD1, 0x23, 0xF0, 0x40, 0x03, 0xDB, 0xE7, 0x00, 0x21, 0x80, 0x25, 0xCD, 0xE7, 0x05, 0xF0, 0x01, 0x01, 0xD0, 0xE7, -0x00, 0x88, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x32, 0x4B, 0x01, 0x88, 0x70, 0xB4, 0x19, 0x80, -0xC2, 0x8A, 0x5A, 0x80, 0x01, 0xF0, 0x88, 0x06, 0xC2, 0xF3, 0x0B, 0x14, 0x00, 0x25, 0x02, 0xF0, 0x0F, 0x02, 0x88, 0x2E, -0x9C, 0x80, 0x9A, 0x71, 0x8C, 0xB2, 0x83, 0xF8, 0x30, 0x50, 0x45, 0xD0, 0xDD, 0x71, 0x04, 0xF4, 0x40, 0x72, 0xB2, 0xF5, -0x40, 0x7F, 0x04, 0xF0, 0xFC, 0x05, 0x0C, 0xBF, 0x1E, 0x22, 0x18, 0x22, 0x88, 0x2D, 0x08, 0xBF, 0x02, 0x32, 0x0E, 0x04, -0x44, 0xBF, 0x04, 0x32, 0xD2, 0xB2, 0x1A, 0x72, 0x02, 0x79, 0xD5, 0x07, 0x44, 0xBF, 0x08, 0x22, 0x83, 0xF8, 0x30, 0x20, -0xE4, 0x05, 0x12, 0xD5, 0x02, 0x8A, 0x9A, 0x84, 0x42, 0x8A, 0xDA, 0x84, 0x82, 0x8A, 0x1A, 0x85, 0x02, 0x88, 0x91, 0x05, -0x12, 0xD5, 0xD2, 0x05, 0x18, 0xD5, 0x02, 0x8B, 0x5A, 0x85, 0x42, 0x8B, 0x9A, 0x85, 0x82, 0x8B, 0xDA, 0x85, 0x70, 0xBC, -0x70, 0x47, 0x82, 0x88, 0x9A, 0x84, 0xC2, 0x88, 0xDA, 0x84, 0x02, 0x89, 0x1A, 0x85, 0x02, 0x88, 0x91, 0x05, 0xEC, 0xD4, -0x42, 0x89, 0x5A, 0x85, 0x82, 0x89, 0x9A, 0x85, 0xC2, 0x89, 0xDA, 0x85, 0x70, 0xBC, 0x70, 0x47, 0x02, 0x8A, 0x5A, 0x85, -0x42, 0x8A, 0x9A, 0x85, 0x82, 0x8A, 0xDA, 0x85, 0x70, 0xBC, 0x70, 0x47, 0x04, 0xF4, 0x40, 0x72, 0xB2, 0xF5, 0x40, 0x7F, -0x0C, 0xBF, 0xC5, 0x8B, 0x05, 0x8B, 0x05, 0xF0, 0x07, 0x05, 0xDD, 0x71, 0xB1, 0xE7, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, -0xF8, 0xB5, 0x05, 0x22, 0x18, 0x23, 0x0C, 0x21, 0x41, 0xF2, 0x06, 0x40, 0xF5, 0xF7, 0x74, 0xF8, 0x0F, 0x4A, 0x03, 0x46, -0x51, 0x7A, 0x0F, 0x48, 0x94, 0x69, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x01, 0x01, 0xD2, 0xE9, 0x04, 0x67, 0x51, 0xF8, -0x26, 0x0F, 0x89, 0x88, 0x99, 0x80, 0xC3, 0xE9, 0x02, 0x67, 0x18, 0x60, 0x91, 0x7A, 0x99, 0x74, 0xC4, 0xF3, 0x80, 0x24, -0x1C, 0x74, 0x12, 0x6A, 0x92, 0xF8, 0x61, 0x20, 0x5A, 0x74, 0x18, 0x46, 0xBD, 0xE8, 0xF8, 0x40, 0xF5, 0xF7, 0x84, 0xB8, -0xB0, 0xDE, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x3C, 0x82, 0xD8, 0xF8, 0x00, 0x40, -0x27, 0x78, 0x87, 0xB0, 0x17, 0xF0, 0x01, 0x07, 0x04, 0x46, 0x03, 0x93, 0x08, 0xD0, 0x43, 0x6D, 0x03, 0xF0, 0x07, 0x03, -0x02, 0x2B, 0x7F, 0xD0, 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x80, 0x4D, 0x89, 0x46, 0x00, 0x2A, 0x40, 0xF0, -0xA2, 0x80, 0x02, 0x8E, 0x2B, 0x7A, 0xC6, 0x69, 0xD4, 0x1A, 0x03, 0x9A, 0xA4, 0xB2, 0x10, 0x31, 0x12, 0xB1, 0x07, 0x2C, -0x40, 0xF2, 0xA9, 0x80, 0x08, 0x22, 0x48, 0x46, 0xFA, 0xF7, 0x92, 0xFF, 0x29, 0x7A, 0x8A, 0xB2, 0xD6, 0xE9, 0x02, 0x03, -0x08, 0x3C, 0x01, 0x33, 0xA5, 0xB2, 0x1C, 0x1A, 0xA4, 0xB2, 0x4B, 0x19, 0x9C, 0x42, 0x01, 0x44, 0x80, 0xF2, 0x82, 0x80, -0xDF, 0xF8, 0xD4, 0xA1, 0x13, 0x1B, 0x1D, 0x44, 0xA2, 0x1A, 0x92, 0xB2, 0x48, 0x46, 0xAD, 0xB2, 0xFA, 0xF7, 0x7A, 0xFF, -0x00, 0x22, 0x95, 0xB1, 0xDA, 0xF8, 0x00, 0x30, 0x76, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x93, 0x42, 0x4D, 0xDB, 0xD6, 0xE9, -0x02, 0x14, 0x01, 0x34, 0x64, 0x1A, 0xA4, 0xB2, 0xAC, 0x42, 0xE7, 0xD3, 0x2C, 0x46, 0x2A, 0x46, 0x48, 0x46, 0xFA, 0xF7, -0x65, 0xFF, 0xDF, 0xF8, 0x98, 0xE1, 0x0D, 0xF1, 0x10, 0x0C, 0x08, 0x25, 0xD6, 0xE9, 0x02, 0x32, 0x01, 0x32, 0x98, 0xB2, -0x92, 0xB2, 0xA2, 0xEB, 0x00, 0x0A, 0x1F, 0xFA, 0x8A, 0xFA, 0x29, 0x19, 0x51, 0x45, 0x23, 0x44, 0x3B, 0xDD, 0xAA, 0xEB, -0x04, 0x0A, 0x1F, 0xFA, 0x8A, 0xFA, 0x0A, 0xF1, 0xFF, 0x3B, 0xBA, 0xF1, 0x00, 0x0F, 0x37, 0xD0, 0x82, 0x1A, 0x14, 0x44, -0x25, 0x44, 0xAD, 0xB2, 0x59, 0x1C, 0x59, 0x44, 0xAC, 0xEB, 0x03, 0x00, 0x1A, 0x78, 0xC2, 0x54, 0x01, 0x33, 0x8B, 0x42, -0xFA, 0xD1, 0xD4, 0x44, 0x65, 0xB3, 0xDE, 0xF8, 0x00, 0x30, 0x76, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x24, 0xA3, 0x42, -0xD2, 0xDA, 0x00, 0x2E, 0xD0, 0xD1, 0x47, 0x49, 0x47, 0x48, 0x40, 0xF2, 0x66, 0x42, 0xF7, 0xF7, 0x6F, 0xF8, 0x7F, 0xE7, -0xFF, 0xF7, 0x40, 0xFF, 0x00, 0x27, 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2E, 0xAF, 0xD1, 0x3F, 0x49, -0x3F, 0x48, 0x40, 0xF2, 0x3C, 0x42, 0xF7, 0xF7, 0x5F, 0xF8, 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xAA, 0x46, -0x05, 0xF1, 0xFF, 0x3B, 0x00, 0x25, 0xCB, 0xE7, 0x01, 0x44, 0x8A, 0x1A, 0x95, 0xB2, 0xD2, 0xE7, 0x03, 0x9B, 0x00, 0x2B, -0x3C, 0xD1, 0xDD, 0xE9, 0x04, 0x23, 0xC9, 0xE9, 0x04, 0x23, 0x01, 0x27, 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x2A, 0x44, 0x94, 0xB2, 0x95, 0xE7, 0x29, 0x6A, 0xEB, 0x79, 0x00, 0x93, 0x58, 0x31, 0x05, 0xF1, 0x2A, 0x03, 0x05, 0xF1, -0x24, 0x02, 0x48, 0x46, 0xFA, 0xF7, 0xCE, 0xFE, 0x29, 0x7A, 0x23, 0x8E, 0xE6, 0x69, 0x5C, 0x1A, 0xA4, 0xB2, 0x8A, 0xB2, -0x5C, 0xE7, 0xB5, 0x68, 0x03, 0x91, 0x22, 0x46, 0x48, 0x46, 0x1D, 0x44, 0xFA, 0xF7, 0xE6, 0xFE, 0x03, 0x99, 0xC4, 0xF1, -0x08, 0x06, 0x04, 0xAB, 0xF6, 0xB2, 0x21, 0x44, 0xF2, 0x18, 0xC9, 0x1A, 0xC8, 0x5C, 0x03, 0xF8, 0x01, 0x0B, 0x9A, 0x42, -0xFA, 0xD1, 0xD6, 0xF1, 0x08, 0x06, 0x07, 0xD0, 0x2B, 0x46, 0xD2, 0x1A, 0x35, 0x44, 0x19, 0x78, 0xD1, 0x54, 0x01, 0x33, -0x9D, 0x42, 0xFA, 0xD1, 0x48, 0x46, 0xFA, 0xF7, 0x69, 0xFF, 0x04, 0x9A, 0xD9, 0xF8, 0x00, 0x30, 0x9A, 0x42, 0x0D, 0xD0, -0xD8, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x9B, 0x07, 0x05, 0xD5, 0x03, 0x20, 0xD8, 0xF7, 0xCE, 0xF9, 0x0F, 0x4B, 0x98, 0x42, -0x12, 0xD1, 0xFF, 0xF7, 0xD1, 0xFE, 0x0D, 0xE7, 0xD9, 0xF8, 0x04, 0x30, 0x05, 0x9A, 0x9A, 0x42, 0xEC, 0xD1, 0xD8, 0xF8, -0x00, 0x30, 0x1B, 0x78, 0x9A, 0x07, 0xA6, 0xD5, 0x03, 0x20, 0xD8, 0xF7, 0xBB, 0xF9, 0x06, 0x4B, 0x98, 0x42, 0xA0, 0xD0, -0x05, 0x48, 0xF6, 0xF7, 0xA1, 0xFD, 0xF9, 0xE6, 0xB0, 0xDE, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, -0x1C, 0xDF, 0x44, 0x21, 0x44, 0xC0, 0x15, 0x00, 0x34, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x10, 0xB5, 0x10, 0x48, -0xF5, 0xF7, 0xF8, 0xFB, 0x10, 0xB1, 0x04, 0x46, 0x20, 0x46, 0x10, 0xBD, 0x0D, 0x48, 0xF5, 0xF7, 0xF1, 0xFB, 0x0D, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x06, 0xDB, 0x62, 0x69, 0x04, 0x21, 0x00, 0x20, 0xFF, 0xF7, -0xC7, 0xFB, 0x20, 0x46, 0x10, 0xBD, 0x00, 0x28, 0xF6, 0xD1, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF2, 0xEA, 0x42, 0xF6, 0xF7, -0xEB, 0xFF, 0xEF, 0xE7, 0x00, 0xDF, 0x17, 0x00, 0x08, 0xDF, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x54, 0xC0, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x00, 0x20, 0x63, 0x79, 0x62, 0x69, 0x83, 0x42, 0x14, 0xBF, 0x18, 0x21, -0x08, 0x21, 0xFF, 0xF7, 0xA7, 0xFB, 0x08, 0xB1, 0xA3, 0x89, 0x83, 0x64, 0x10, 0xBD, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x47, -0xA3, 0x4F, 0x8A, 0xB0, 0x05, 0x46, 0x14, 0x46, 0x1A, 0xB3, 0x3E, 0x88, 0x97, 0xF8, 0x07, 0x80, 0x16, 0xF4, 0x80, 0x66, -0x22, 0xD1, 0x97, 0xF8, 0x06, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x6A, 0xD0, 0xBC, 0x6D, 0xBA, 0x88, 0x14, 0xB9, 0x31, 0xE1, -0x24, 0x68, 0xEC, 0xB1, 0xA3, 0x79, 0x8B, 0x42, 0xFA, 0xD1, 0xE3, 0x79, 0x43, 0x45, 0xF7, 0xD1, 0x63, 0x89, 0x93, 0x42, -0xF4, 0xD1, 0x23, 0x7A, 0x53, 0x45, 0x00, 0xF0, 0x90, 0x80, 0x4F, 0xF0, 0x00, 0x0A, 0x50, 0x46, 0x0A, 0xB0, 0xBD, 0xE8, -0xF0, 0x87, 0x3E, 0x88, 0x16, 0xF4, 0x80, 0x66, 0x90, 0x46, 0xDC, 0xD0, 0xBC, 0x6D, 0xBA, 0x88, 0x97, 0xF8, 0x06, 0xA0, -0x00, 0x2C, 0xE1, 0xD1, 0xBA, 0xF1, 0x00, 0x0F, 0xEB, 0xD1, 0x03, 0x91, 0xFF, 0xF7, 0x88, 0xFF, 0x01, 0x26, 0x03, 0x99, -0x81, 0x71, 0x80, 0xF8, 0x07, 0x80, 0x06, 0x72, 0xBA, 0x88, 0x80, 0xF8, 0x04, 0xA0, 0x39, 0x7A, 0x82, 0x4B, 0xC0, 0xF8, -0x10, 0xA0, 0x41, 0x72, 0x19, 0x69, 0xDF, 0xF8, 0x0C, 0x92, 0x80, 0x4B, 0x42, 0x81, 0x01, 0xF5, 0xC3, 0x31, 0x83, 0x63, -0xC0, 0x63, 0xD9, 0xF8, 0xE0, 0x31, 0x04, 0x46, 0xA0, 0x31, 0x34, 0x30, 0x98, 0x47, 0x97, 0xF8, 0x30, 0x30, 0xDA, 0x07, -0x00, 0xF1, 0xC9, 0x80, 0x2B, 0x6E, 0x23, 0xF0, 0x20, 0x03, 0x2B, 0x66, 0xD9, 0xF8, 0xE8, 0x32, 0x01, 0x21, 0x28, 0x46, -0x98, 0x47, 0x3B, 0x6C, 0xFA, 0x69, 0x73, 0x48, 0xC4, 0xE9, 0x04, 0x23, 0x97, 0xF8, 0x31, 0x30, 0x63, 0x71, 0x2B, 0x8E, -0xA3, 0x81, 0x21, 0x46, 0xF5, 0xF7, 0x08, 0xFB, 0x6B, 0x4B, 0x4F, 0xF0, 0x01, 0x0A, 0x1B, 0x69, 0xA3, 0x61, 0x50, 0x46, -0x0A, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x97, 0xF8, 0x30, 0x30, 0xD8, 0x07, 0x1D, 0xD5, 0x68, 0x4A, 0x01, 0x23, 0xD2, 0xF8, -0xCC, 0x62, 0x04, 0xA9, 0x1A, 0x46, 0x28, 0x46, 0xB0, 0x47, 0x00, 0x28, 0x9B, 0xD0, 0x2B, 0x8E, 0x63, 0x4A, 0x08, 0x3B, -0x12, 0x68, 0x2B, 0x86, 0x13, 0x78, 0x99, 0x07, 0x0B, 0xD5, 0x6B, 0x6D, 0x03, 0xF0, 0x3C, 0x02, 0x3C, 0x2A, 0x06, 0xD1, -0x23, 0xF0, 0x7C, 0x03, 0x43, 0xF4, 0x00, 0x53, 0x43, 0xF0, 0x08, 0x03, 0x6B, 0x65, 0x5B, 0x4B, 0xB8, 0x7A, 0x4F, 0xF4, -0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC3, 0x34, 0x00, 0x2B, 0x6D, 0xD1, 0x54, 0x4B, 0x28, 0x46, 0xD3, 0xF8, -0xE8, 0x32, 0x03, 0x21, 0x98, 0x47, 0x4F, 0xF0, 0x01, 0x0A, 0x50, 0x46, 0x0A, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x29, 0x8E, -0x94, 0xF8, 0x09, 0x80, 0xA3, 0x89, 0xDF, 0xF8, 0x30, 0x91, 0xA1, 0xEB, 0x08, 0x08, 0x1F, 0xFA, 0x88, 0xF8, 0x43, 0x44, -0x0A, 0xF1, 0x01, 0x0A, 0x84, 0xF8, 0x08, 0xA0, 0xA3, 0x81, 0x97, 0xF8, 0x30, 0x30, 0xDB, 0x07, 0x22, 0xD5, 0xB6, 0xFA, -0x86, 0xF3, 0xD9, 0xF8, 0xCC, 0x72, 0x5B, 0x09, 0x00, 0x22, 0x04, 0xF1, 0x1C, 0x01, 0x28, 0x46, 0xB8, 0x47, 0x00, 0x28, -0x4C, 0xD0, 0x2B, 0x6E, 0x00, 0x2E, 0x57, 0xD0, 0x61, 0x7A, 0x22, 0x69, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x40, 0x03, -0x2B, 0x66, 0x41, 0x44, 0x00, 0x23, 0x01, 0x93, 0x00, 0x93, 0xD9, 0xF8, 0xA4, 0x62, 0x89, 0xB2, 0x28, 0x46, 0xB0, 0x47, -0x23, 0x69, 0x43, 0x44, 0x23, 0x61, 0x87, 0xE7, 0x01, 0x27, 0x2B, 0x6E, 0x22, 0x69, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, -0x40, 0x03, 0x2B, 0x66, 0x00, 0x23, 0xCD, 0xE9, 0x00, 0x33, 0x28, 0x46, 0xD9, 0xF8, 0xA4, 0x52, 0xA8, 0x47, 0x23, 0x69, -0x43, 0x44, 0x23, 0x61, 0x00, 0x2E, 0x7F, 0xF4, 0x73, 0xAF, 0x20, 0x46, 0xFF, 0xF7, 0xEC, 0xFE, 0x62, 0x69, 0x39, 0x46, -0x00, 0x20, 0xFF, 0xF7, 0x99, 0xFA, 0xD9, 0xF8, 0xD8, 0x31, 0x04, 0xF1, 0x34, 0x00, 0x98, 0x47, 0x21, 0x46, 0x20, 0x48, -0xF5, 0xF7, 0xBA, 0xFA, 0x22, 0x48, 0x21, 0x46, 0xF5, 0xF7, 0x66, 0xFA, 0x5C, 0xE7, 0xEA, 0x69, 0x00, 0xF2, 0xC4, 0x41, -0x92, 0x68, 0x23, 0x46, 0x63, 0x30, 0xFF, 0xF7, 0x31, 0xFA, 0x01, 0x28, 0x87, 0xD1, 0x04, 0xE7, 0x61, 0x7A, 0x41, 0x44, -0x89, 0xB2, 0x04, 0x27, 0xC5, 0xE7, 0x32, 0x46, 0x53, 0x46, 0xD9, 0xF8, 0xCC, 0x62, 0x04, 0xF1, 0x1C, 0x01, 0x28, 0x46, -0xB0, 0x47, 0x2D, 0xE7, 0xA0, 0x89, 0x61, 0x7A, 0x22, 0x69, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x40, 0x03, 0x08, 0x38, -0xA0, 0x81, 0x41, 0x44, 0x2B, 0x66, 0x28, 0x46, 0x33, 0x46, 0xCD, 0xE9, 0x00, 0x66, 0xD9, 0xF8, 0xA4, 0x52, 0x89, 0xB2, -0xA8, 0x47, 0x23, 0x69, 0x43, 0x44, 0x23, 0x61, 0x01, 0x27, 0xB8, 0xE7, 0xA2, 0x46, 0xDC, 0xE6, 0xB0, 0xDE, 0x17, 0x00, -0x00, 0x10, 0x50, 0x40, 0xC5, 0xD3, 0x14, 0x00, 0x08, 0xDF, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x00, 0xDF, 0x17, 0x00, 0xF8, 0xB5, 0x03, 0x88, 0x13, 0x4D, 0x13, 0xF4, 0x00, 0x6F, 0x04, 0x46, -0xC3, 0x8A, 0x0B, 0xD1, 0x05, 0xF1, 0x60, 0x07, 0x00, 0xF1, 0x0A, 0x06, 0x30, 0x68, 0xB2, 0x88, 0xBA, 0x80, 0x28, 0x66, -0xA5, 0xF8, 0x66, 0x30, 0x01, 0x20, 0xF8, 0xBD, 0xB5, 0xF8, 0x66, 0x20, 0x9A, 0x42, 0x04, 0xD0, 0x00, 0xF1, 0x0A, 0x06, -0x05, 0xF1, 0x60, 0x07, 0xEE, 0xE7, 0x05, 0xF1, 0x60, 0x07, 0x00, 0xF1, 0x0A, 0x06, 0x39, 0x46, 0x30, 0x46, 0x06, 0x22, -0x09, 0xF0, 0xC6, 0xF8, 0x00, 0x28, 0xEA, 0xD0, 0xE3, 0x8A, 0xE1, 0xE7, 0xB0, 0xDE, 0x17, 0x00, 0xF0, 0xB4, 0x01, 0xB3, -0x00, 0x22, 0x87, 0x7A, 0x94, 0x46, 0x07, 0xE0, 0x1E, 0x69, 0x1E, 0xB1, 0x01, 0x3C, 0xC3, 0xF8, 0x10, 0xC0, 0xC4, 0x72, -0x8D, 0x42, 0x09, 0xD2, 0xBB, 0x18, 0xC4, 0x7A, 0x03, 0xF0, 0x3F, 0x03, 0x01, 0x32, 0x00, 0xEB, 0x83, 0x03, 0x95, 0xB2, -0x00, 0x2C, 0xED, 0xD1, 0x03, 0x89, 0x0F, 0x44, 0x19, 0x44, 0x07, 0xF0, 0x3F, 0x07, 0xC1, 0xF3, 0x0B, 0x01, 0x87, 0x72, -0x01, 0x81, 0xF0, 0xBC, 0x70, 0x47, 0x87, 0x7A, 0xF2, 0xE7, 0x00, 0xBF, 0xF8, 0xB5, 0x83, 0x7A, 0x04, 0x33, 0x50, 0xF8, -0x23, 0x30, 0x53, 0xB3, 0xC1, 0x7A, 0x15, 0x4D, 0x15, 0x4F, 0x16, 0x4E, 0x04, 0x46, 0x15, 0xE0, 0xA3, 0x7A, 0x22, 0x89, -0x18, 0x1D, 0x01, 0x33, 0x03, 0xF0, 0x3F, 0x03, 0x01, 0x39, 0x4F, 0xF0, 0x00, 0x0C, 0x44, 0xF8, 0x20, 0xC0, 0xC9, 0xB2, -0x18, 0x1D, 0xA3, 0x72, 0xE1, 0x72, 0x54, 0xF8, 0x20, 0x00, 0x53, 0x1C, 0xC3, 0xF3, 0x0B, 0x03, 0x23, 0x81, 0x70, 0xB1, -0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE4, 0xDA, 0x00, 0x29, 0xE2, 0xD1, 0x39, 0x46, 0x4F, 0xF4, 0xD6, 0x62, -0x30, 0x46, 0xF6, 0xF7, 0xF5, 0xFD, 0xE1, 0x7A, 0xDA, 0xE7, 0xF8, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0xC0, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x9E, 0x23, 0x0C, 0x8A, 0x38, 0x4A, 0x03, 0xFB, 0x00, 0xF0, 0x00, 0xEB, -0x14, 0x30, 0x02, 0xEB, 0x80, 0x00, 0xD0, 0xF8, 0x7C, 0x41, 0x4C, 0xB3, 0x94, 0xF8, 0x21, 0x31, 0x49, 0x8A, 0xC3, 0xB1, -0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x30, 0xD5, 0x30, 0x48, 0x31, 0x4D, 0x03, 0x68, 0x2E, 0x68, 0x03, 0xF0, 0x60, 0x42, -0x77, 0x1C, 0xB2, 0xF1, 0xC0, 0x4F, 0x2F, 0x60, 0x31, 0xD0, 0x2D, 0x4B, 0x80, 0x22, 0x1A, 0x60, 0x2F, 0xB1, 0x2C, 0x4B, -0x2E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x22, 0x89, 0xB2, 0xEB, 0x11, 0x1F, 0x4F, 0xEA, 0x11, 0x13, -0x06, 0xD0, 0x9B, 0x1A, 0x99, 0xB2, 0x1B, 0x05, 0x04, 0xD5, 0x94, 0xF8, 0x21, 0x31, 0x9B, 0xB1, 0xBD, 0xE8, 0xF0, 0x81, -0x22, 0x4D, 0x20, 0x46, 0xD5, 0xF8, 0xD8, 0x32, 0xC1, 0xF3, 0x0B, 0x01, 0x98, 0x47, 0xD5, 0xF8, 0x38, 0x31, 0x1F, 0x48, -0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xC9, 0xE7, 0x1B, 0x48, 0xF6, 0xF7, -0x23, 0xFB, 0x01, 0x23, 0x84, 0xF8, 0x21, 0x31, 0xE4, 0xE7, 0x19, 0x4A, 0x03, 0xF4, 0xF0, 0x33, 0xD2, 0xF8, 0x00, 0xC0, -0xB3, 0xF5, 0xF0, 0x3F, 0x0C, 0xF1, 0x10, 0x0C, 0xC3, 0xD0, 0x96, 0x46, 0x03, 0x68, 0x03, 0xF0, 0x60, 0x42, 0xB2, 0xF1, -0xC0, 0x4F, 0x02, 0xD0, 0x10, 0x4B, 0x1B, 0x68, 0xB9, 0xE7, 0x03, 0xF4, 0xF0, 0x33, 0xB3, 0xF5, 0xF0, 0x3F, 0xF7, 0xD0, -0xDE, 0xF8, 0x00, 0x30, 0xA3, 0xEB, 0x0C, 0x03, 0x00, 0x2B, 0xEB, 0xDB, 0x00, 0x2F, 0xB6, 0xD0, 0xAF, 0xE7, 0x00, 0xBF, -0x68, 0x65, 0x17, 0x00, 0x04, 0x05, 0x32, 0x40, 0x6C, 0x28, 0x17, 0x00, 0x54, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0xE8, 0xDE, 0x17, 0x00, 0x7C, 0xC0, 0x15, 0x00, 0x20, 0x01, 0x32, 0x40, 0x2D, 0xE9, 0xF8, 0x43, -0x8D, 0x4F, 0x8E, 0x4B, 0xBC, 0x7A, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, 0x80, 0x46, 0x94, 0xF8, 0xC3, 0x54, -0x89, 0x46, 0x00, 0x2D, 0x40, 0xF0, 0x90, 0x80, 0xF8, 0x79, 0x88, 0x49, 0xBA, 0x88, 0x9E, 0x23, 0x03, 0xFB, 0x09, 0x03, -0x01, 0xEB, 0x83, 0x03, 0xD3, 0xF8, 0x7C, 0x41, 0x23, 0x89, 0x9A, 0x42, 0x00, 0xF0, 0xA5, 0x80, 0xD2, 0x1A, 0x12, 0xF4, -0x7C, 0x6F, 0xC2, 0xF3, 0x0B, 0x03, 0x38, 0xD1, 0xA6, 0x7A, 0x1E, 0x44, 0x06, 0xF0, 0x3F, 0x06, 0x01, 0x23, 0x04, 0xEB, -0x86, 0x06, 0x84, 0xF8, 0x20, 0x31, 0x33, 0x69, 0x00, 0x2B, 0x6B, 0xD1, 0x8D, 0xB9, 0xD8, 0xF8, 0x60, 0x20, 0xB8, 0xF8, -0x32, 0x30, 0x77, 0x49, 0x42, 0xF0, 0x20, 0x02, 0xC8, 0xF8, 0x60, 0x20, 0x23, 0xF0, 0xFF, 0x03, 0xD1, 0xF8, 0xE8, 0x22, -0xA8, 0xF8, 0x32, 0x30, 0x40, 0x46, 0x03, 0x21, 0x90, 0x47, 0x71, 0x4B, 0x33, 0x61, 0xE3, 0x7A, 0x70, 0x4A, 0x01, 0x33, -0x12, 0x68, 0xDB, 0xB2, 0xE3, 0x72, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0xB1, 0x80, 0x01, 0x2B, 0x00, 0xF0, -0xB9, 0x80, 0xC5, 0xF1, 0x01, 0x05, 0xED, 0xB2, 0xF9, 0x79, 0x48, 0x46, 0x02, 0xF0, 0xFE, 0xFE, 0x28, 0x46, 0xBD, 0xE8, -0xF8, 0x83, 0x40, 0xF2, 0xFE, 0x72, 0x93, 0x42, 0x40, 0xF2, 0x91, 0x80, 0x94, 0xF8, 0x20, 0x31, 0x13, 0xB1, 0x94, 0xF8, -0x21, 0x31, 0x9B, 0xB3, 0x3B, 0x88, 0x1B, 0x05, 0x21, 0xD4, 0x7A, 0x88, 0x4F, 0xF4, 0x9E, 0x73, 0x03, 0xFB, 0x09, 0x03, -0x01, 0xEB, 0x43, 0x03, 0xA3, 0xF8, 0xEA, 0x21, 0x15, 0xBB, 0xD8, 0xF8, 0x60, 0x20, 0xB8, 0xF8, 0x32, 0x30, 0x55, 0x49, -0x42, 0xF0, 0x20, 0x02, 0x23, 0xF0, 0xFF, 0x03, 0xC8, 0xF8, 0x60, 0x20, 0xD1, 0xF8, 0xE8, 0x22, 0xA8, 0xF8, 0x32, 0x30, -0x40, 0x46, 0x03, 0x21, 0x90, 0x47, 0xF9, 0x79, 0x48, 0x46, 0x02, 0xF0, 0xCD, 0xFE, 0x01, 0x25, 0xCC, 0xE7, 0x4F, 0xF4, -0x9E, 0x73, 0x03, 0xFB, 0x09, 0x03, 0x01, 0xEB, 0x43, 0x03, 0x7A, 0x88, 0xB3, 0xF8, 0xEA, 0x31, 0x93, 0x42, 0xD3, 0xD1, -0xF9, 0x79, 0x48, 0x46, 0x02, 0xF0, 0xBC, 0xFE, 0x00, 0x25, 0x28, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0xC2, 0x69, 0x04, 0xF2, -0xC4, 0x41, 0x92, 0x68, 0x01, 0x23, 0x04, 0xF1, 0x63, 0x00, 0xFF, 0xF7, 0x3B, 0xF8, 0x05, 0x46, 0xF8, 0x79, 0x3B, 0x49, -0xBA, 0x88, 0x9E, 0x23, 0x03, 0xFB, 0x09, 0x03, 0x01, 0xEB, 0x83, 0x03, 0x01, 0x2D, 0xD3, 0xF8, 0x7C, 0x41, 0x23, 0x89, -0x60, 0xD0, 0x9A, 0x42, 0x09, 0xD0, 0xD2, 0x1A, 0x12, 0xF4, 0x7C, 0x6F, 0x4F, 0xF0, 0x00, 0x05, 0xC2, 0xF3, 0x0B, 0x03, -0x3F, 0xF4, 0x62, 0xAF, 0x99, 0xE7, 0xD8, 0xF8, 0x60, 0x20, 0xB8, 0xF8, 0x32, 0x30, 0x2E, 0x49, 0x42, 0xF0, 0x20, 0x02, -0x23, 0xF0, 0xFF, 0x03, 0xC8, 0xF8, 0x60, 0x20, 0xD1, 0xF8, 0xE8, 0x22, 0xA8, 0xF8, 0x32, 0x30, 0x40, 0x46, 0x03, 0x21, -0x90, 0x47, 0x23, 0x89, 0x01, 0x25, 0x01, 0x20, 0x28, 0x4A, 0xA1, 0x7A, 0x84, 0xF8, 0x20, 0x01, 0x12, 0x69, 0x62, 0x60, -0x04, 0xEB, 0x81, 0x00, 0x02, 0x69, 0x12, 0xB1, 0xE2, 0x7A, 0x01, 0x3A, 0xE2, 0x72, 0x5A, 0x1C, 0x01, 0x31, 0xC2, 0xF3, -0x0B, 0x02, 0x01, 0xF0, 0x3F, 0x01, 0x00, 0x23, 0x03, 0x61, 0x20, 0x46, 0x22, 0x81, 0xA1, 0x72, 0xFF, 0xF7, 0x4E, 0xFE, -0x62, 0xE7, 0x18, 0x4A, 0xA3, 0xF1, 0x3F, 0x01, 0x89, 0xB2, 0xD2, 0xF8, 0xD8, 0x32, 0x20, 0x46, 0x98, 0x47, 0xBB, 0x88, -0x21, 0x89, 0x5B, 0x1A, 0xC3, 0xF3, 0x0B, 0x03, 0x22, 0xE7, 0x40, 0x2B, 0x7F, 0xF6, 0x4C, 0xAF, 0x13, 0x49, 0x14, 0x48, -0x40, 0xF2, 0xDB, 0x72, 0xF6, 0xF7, 0x5A, 0xFC, 0xE3, 0x7A, 0x43, 0xE7, 0x0E, 0x4A, 0x0B, 0x4B, 0x11, 0x69, 0xD3, 0xF8, -0xE0, 0x31, 0x01, 0xF5, 0x43, 0x41, 0x04, 0xF5, 0x88, 0x70, 0x50, 0x31, 0x98, 0x47, 0x3A, 0xE7, 0x9A, 0x42, 0x7F, 0xF4, -0x03, 0xAF, 0x00, 0x25, 0xB9, 0xE7, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x87, 0xA9, 0xDC, 0xFE, 0x38, 0x36, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, -0x90, 0xC0, 0x15, 0x00, 0xC3, 0x7A, 0x03, 0xB9, 0x70, 0x47, 0x1A, 0x4B, 0x42, 0x68, 0x1B, 0x69, 0xC3, 0xF5, 0x43, 0x43, -0x50, 0x33, 0xD3, 0x42, 0x10, 0xB5, 0x04, 0x46, 0x00, 0xD4, 0x10, 0xBD, 0x83, 0x7A, 0x1A, 0x1D, 0x50, 0xF8, 0x22, 0x20, -0x42, 0xB9, 0x02, 0x89, 0x01, 0x33, 0x01, 0x32, 0x03, 0xF0, 0x3F, 0x03, 0xC2, 0xF3, 0x0B, 0x02, 0x83, 0x72, 0x02, 0x81, -0x20, 0x46, 0xFF, 0xF7, 0xF1, 0xFD, 0xE3, 0x7A, 0x53, 0xB9, 0x0B, 0x4A, 0x0B, 0x4B, 0x11, 0x69, 0xD3, 0xF8, 0xE0, 0x31, -0x01, 0xF5, 0x43, 0x41, 0x04, 0xF5, 0x88, 0x70, 0x50, 0x31, 0x98, 0x47, 0x07, 0x48, 0x83, 0x6B, 0x00, 0x2B, 0xDC, 0xD0, -0x04, 0x4B, 0xBD, 0xE8, 0x10, 0x40, 0xD3, 0xF8, 0x38, 0x31, 0x38, 0x30, 0x18, 0x47, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, -0x88, 0x1A, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x19, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x05, 0x46, -0x04, 0xD0, 0x03, 0x88, 0x03, 0xF0, 0xEC, 0x03, 0xC4, 0x2B, 0x11, 0xD0, 0x15, 0x4F, 0x05, 0xF1, 0x04, 0x08, 0x07, 0xF5, -0xA4, 0x56, 0xB9, 0x46, 0x3C, 0x46, 0x94, 0xF8, 0x64, 0x30, 0x1B, 0xB1, 0x94, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x06, 0xD0, -0x04, 0xF5, 0xA4, 0x64, 0xA6, 0x42, 0xF4, 0xD1, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x06, 0x22, 0x04, 0xF1, 0x5C, 0x01, -0x40, 0x46, 0x08, 0xF0, 0x45, 0xFE, 0xA4, 0xEB, 0x07, 0x0A, 0x00, 0x28, 0xEE, 0xD1, 0x07, 0x49, 0x07, 0x48, 0xF6, 0xF7, -0x4D, 0xF9, 0x05, 0xF1, 0x0A, 0x01, 0x09, 0xEB, 0x0A, 0x00, 0xFD, 0xF7, 0x49, 0xFD, 0xE7, 0xE7, 0x00, 0x88, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x20, 0xC1, 0x15, 0x00, 0xA8, 0xC0, 0x15, 0x00, 0x13, 0x4B, 0x93, 0xF8, 0x73, 0x20, 0x12, 0xB1, -0x11, 0xF4, 0x00, 0x71, 0x00, 0xD0, 0x70, 0x47, 0x10, 0xB4, 0x42, 0x89, 0xB3, 0xF8, 0x6C, 0x40, 0x94, 0x42, 0x02, 0xD0, -0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0xB3, 0xF8, 0x6E, 0x40, 0x82, 0x89, 0x94, 0x42, 0xF7, 0xD1, 0xB3, 0xF8, 0x70, 0x40, -0xC2, 0x89, 0x94, 0x42, 0xF2, 0xD1, 0x02, 0x88, 0x02, 0xF4, 0xA0, 0x52, 0xB2, 0xF5, 0x80, 0x5F, 0x06, 0xBF, 0x01, 0x22, -0x83, 0xF8, 0x72, 0x20, 0x83, 0xF8, 0x72, 0x10, 0xE6, 0xE7, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, 0xF8, 0xB5, 0xBD, 0xF8, -0x1C, 0x60, 0x06, 0x9D, 0xFF, 0x2A, 0x00, 0xEB, 0x06, 0x07, 0x2E, 0xD0, 0x14, 0x46, 0x82, 0x5D, 0x03, 0x3A, 0x12, 0x2A, -0x18, 0xD8, 0xDF, 0xE8, 0x02, 0xF0, 0x2B, 0x17, 0x0A, 0x17, 0x30, 0x49, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x5C, 0x00, 0x1B, 0x78, 0x4B, 0x4A, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, -0x62, 0x30, 0x02, 0x2B, 0x02, 0xD0, 0x7B, 0x78, 0x00, 0x2B, 0x6A, 0xD0, 0x01, 0x26, 0x2B, 0x88, 0xFF, 0x2B, 0x0A, 0xD0, -0x44, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x57, 0xDB, 0x6F, 0xF0, 0xFF, 0x03, 0x2A, 0x88, 0x13, 0x43, -0x2B, 0x80, 0x30, 0x46, 0xF8, 0xBD, 0x01, 0x26, 0x30, 0x46, 0xF8, 0xBD, 0x08, 0x23, 0x2B, 0x80, 0x00, 0x26, 0x00, 0x23, -0xF2, 0xE7, 0x7E, 0x78, 0x00, 0x2E, 0x52, 0xD0, 0x01, 0x2E, 0xE1, 0xD1, 0x38, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x04, 0x23, 0x5E, 0x68, 0x16, 0xF0, 0x02, 0x06, 0xD9, 0xD0, 0xBE, 0x78, 0x16, 0xF0, 0x01, 0x06, 0x5A, 0xD0, 0x20, 0x46, -0x00, 0x22, 0xFF, 0x21, 0xF9, 0xF7, 0xDC, 0xFC, 0x00, 0x26, 0xCE, 0xE7, 0x89, 0x1B, 0x03, 0x29, 0x2A, 0xDD, 0x1B, 0x78, -0xFF, 0x2B, 0xC7, 0xD0, 0x29, 0x4A, 0x7E, 0x78, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, -0x1E, 0x43, 0xBD, 0xD1, 0x06, 0x23, 0x2B, 0x80, 0xD1, 0xE7, 0x7B, 0x78, 0x01, 0x2B, 0x36, 0xD0, 0x02, 0x2B, 0xB5, 0xD1, -0x22, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x23, 0x5E, 0x68, 0x16, 0xF0, 0x24, 0x06, 0xAD, 0xD0, 0x97, 0xF9, -0x02, 0x30, 0xB9, 0x78, 0x00, 0x2B, 0x07, 0xDB, 0x0A, 0x09, 0x20, 0x46, 0x01, 0xF0, 0x03, 0x01, 0xF9, 0xF7, 0xAE, 0xFC, -0x00, 0x26, 0xA0, 0xE7, 0x00, 0x26, 0x9E, 0xE7, 0x17, 0x49, 0x18, 0x48, 0x40, 0xF6, 0x78, 0x12, 0xF6, 0xF7, 0x00, 0xFB, -0x6F, 0xF0, 0xFF, 0x03, 0xA0, 0xE7, 0x0B, 0x23, 0x2B, 0x80, 0x01, 0x26, 0xA7, 0xE7, 0x10, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x04, 0x23, 0x5B, 0x68, 0x9B, 0x07, 0x89, 0xD5, 0xB9, 0x78, 0x01, 0x29, 0x86, 0xD8, 0x20, 0x46, 0xFF, 0x22, -0xF9, 0xF7, 0x8E, 0xFC, 0x81, 0xE7, 0x07, 0xF1, 0x0A, 0x01, 0xB8, 0x1C, 0xD2, 0xF7, 0xB6, 0xFE, 0x00, 0x26, 0x7A, 0xE7, -0xFF, 0x22, 0x20, 0x46, 0x11, 0x46, 0xF9, 0xF7, 0x81, 0xFC, 0x74, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xBC, 0xC0, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x43, 0x89, 0xB0, 0x1F, 0x46, -0x10, 0x9E, 0x34, 0x78, 0xFF, 0x2C, 0x47, 0xD0, 0x69, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x55, 0x00, 0xF0, -0xFC, 0x04, 0x80, 0x2C, 0x95, 0xF8, 0x62, 0x80, 0x46, 0xD0, 0x0F, 0xD8, 0x40, 0x2C, 0x6B, 0xD0, 0x2C, 0xD9, 0x50, 0x2C, -0x4F, 0xF0, 0x01, 0x04, 0x04, 0xD1, 0x13, 0x9A, 0x14, 0x70, 0x12, 0x9A, 0x04, 0x23, 0x13, 0x80, 0x20, 0x46, 0x09, 0xB0, -0xBD, 0xE8, 0xF0, 0x83, 0xC0, 0x2C, 0x21, 0xD0, 0x10, 0xD9, 0xD0, 0x2C, 0x15, 0xD1, 0x13, 0x9B, 0x11, 0x98, 0xCD, 0xE9, -0x01, 0x23, 0x12, 0x9B, 0x00, 0x93, 0x3A, 0x46, 0x33, 0x46, 0xFF, 0xF7, 0x11, 0xFF, 0x04, 0x46, 0x20, 0x46, 0x09, 0xB0, -0xBD, 0xE8, 0xF0, 0x83, 0xA0, 0x2C, 0x0D, 0xD0, 0xB0, 0x2C, 0x02, 0xD1, 0xFC, 0xF7, 0xBA, 0xFA, 0x40, 0xB1, 0x01, 0x24, -0x20, 0x46, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x00, 0xF0, 0xDC, 0x00, 0x10, 0x28, 0xF6, 0xD1, 0xB8, 0xF1, 0x00, 0x0F, -0xF3, 0xD1, 0x12, 0x9A, 0x06, 0x23, 0x13, 0x80, 0x01, 0x24, 0xCF, 0xE7, 0x00, 0xF0, 0xFC, 0x00, 0xB0, 0x28, 0x72, 0xD0, -0x28, 0xD8, 0x40, 0x28, 0x2A, 0xD0, 0x80, 0x28, 0xE5, 0xD1, 0x00, 0x25, 0x04, 0x20, 0x05, 0x91, 0xF4, 0xF7, 0x34, 0xFC, -0x01, 0x28, 0x05, 0x99, 0x0E, 0xD1, 0x13, 0x9A, 0x3D, 0x4B, 0x10, 0x70, 0x12, 0x98, 0x1B, 0x68, 0x3A, 0x4D, 0x04, 0x22, -0x02, 0x80, 0x93, 0xF8, 0x6E, 0x41, 0x34, 0x70, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x55, 0xFF, 0x2F, 0xCC, 0xD0, -0x95, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xC8, 0xD0, 0x34, 0x4B, 0x30, 0x78, 0xD3, 0xF8, 0x54, 0x31, 0x11, 0x9A, 0x98, 0x47, -0x01, 0x24, 0xA1, 0xE7, 0xD0, 0x28, 0xA8, 0xD0, 0x01, 0x24, 0xBD, 0xE7, 0x2F, 0x4B, 0x9A, 0x7C, 0x00, 0x2A, 0xB8, 0xD0, -0x2E, 0x4A, 0x12, 0x68, 0x12, 0x78, 0x01, 0x3A, 0x01, 0x2A, 0xB2, 0xD8, 0x9D, 0x68, 0x00, 0x2D, 0xAF, 0xD0, 0x18, 0x39, -0x2A, 0x4F, 0x1F, 0xFA, 0x81, 0xF8, 0x01, 0x24, 0x02, 0xE0, 0x2D, 0x68, 0x00, 0x2D, 0x87, 0xD0, 0x95, 0xF8, 0x62, 0x30, -0x02, 0x2B, 0xF8, 0xD1, 0x95, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xF4, 0xD0, 0x95, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0xF0, 0xD1, -0x11, 0x9B, 0xB7, 0xF8, 0x00, 0x90, 0x03, 0xF1, 0x18, 0x00, 0x0D, 0xF1, 0x1E, 0x02, 0x41, 0x46, 0xF4, 0xF7, 0xFA, 0xFF, -0xA9, 0xF1, 0x24, 0x01, 0x06, 0x46, 0x89, 0xB2, 0x0D, 0xF1, 0x1F, 0x02, 0x19, 0x48, 0xF4, 0xF7, 0xF1, 0xFF, 0x9D, 0xF8, -0x1E, 0x30, 0x18, 0x49, 0x02, 0x36, 0x81, 0x46, 0x07, 0x22, 0x30, 0x46, 0x53, 0xB9, 0x11, 0x9B, 0x28, 0x46, 0x03, 0xF1, -0x0A, 0x01, 0xE1, 0xF7, 0xED, 0xFE, 0x00, 0x24, 0xCD, 0xE7, 0xFC, 0xF7, 0x2F, 0xFA, 0x74, 0xE7, 0x08, 0xF0, 0x7C, 0xFC, -0x00, 0x28, 0xC6, 0xD0, 0x9D, 0xF8, 0x1F, 0x30, 0x9D, 0xF8, 0x1E, 0x20, 0x9A, 0x42, 0xC0, 0xD1, 0x09, 0xF1, 0x02, 0x01, -0x30, 0x46, 0x08, 0xF0, 0x6F, 0xFC, 0x00, 0x28, 0xE3, 0xD0, 0xB8, 0xE7, 0x18, 0x88, 0x17, 0x00, 0xA8, 0xBA, 0x17, 0x00, -0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0x14, 0x2C, 0x17, 0x00, 0x38, 0x2A, 0x17, 0x00, -0x54, 0xBF, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xC6, 0x69, 0x8D, 0xB0, 0xD6, 0xF8, 0x08, 0x90, 0x01, 0x23, 0x8D, 0xF8, -0x24, 0x30, 0x04, 0x46, 0xB9, 0xF8, 0x00, 0x00, 0x10, 0xF4, 0x80, 0x60, 0x40, 0xF0, 0x8B, 0x80, 0xB9, 0xF8, 0x16, 0x70, -0x17, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x89, 0x80, 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB9, 0xF8, 0x00, 0x30, 0x98, 0xF8, -0x08, 0x20, 0x04, 0x92, 0xDF, 0xF8, 0x08, 0xE2, 0xB4, 0xF8, 0x30, 0xA0, 0xBD, 0xF8, 0x10, 0x10, 0xAD, 0xF8, 0x16, 0x30, -0x4F, 0xF0, 0xFF, 0x0C, 0x18, 0x46, 0xAD, 0xF8, 0x26, 0xC0, 0xB3, 0x68, 0xDE, 0xF8, 0xE0, 0x92, 0x07, 0x93, 0x0D, 0xF1, -0x25, 0x0C, 0x01, 0x93, 0xCD, 0xF8, 0x0C, 0xC0, 0x72, 0x4B, 0x06, 0x91, 0x0D, 0xF1, 0x26, 0x0C, 0x0A, 0x46, 0x00, 0x93, -0x51, 0x46, 0x8D, 0xF8, 0x25, 0xB0, 0x80, 0xB2, 0xCD, 0xF8, 0x08, 0xC0, 0x2B, 0x46, 0xC8, 0x47, 0xBD, 0xF8, 0x26, 0x10, -0xFF, 0x29, 0x00, 0xF0, 0x90, 0x80, 0x0A, 0xF1, 0x0C, 0x03, 0x9B, 0xB2, 0x0A, 0x22, 0x4F, 0xF4, 0x20, 0x50, 0xF4, 0xF7, -0xB5, 0xF8, 0x59, 0x46, 0x81, 0x46, 0x0A, 0xA8, 0xD2, 0xF7, 0xFA, 0xFC, 0x9D, 0xF8, 0x25, 0x30, 0xD3, 0x46, 0x63, 0xB9, -0x61, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xAE, 0x80, 0x04, 0x9B, 0x06, 0x9F, 0xAA, 0xEB, -0x03, 0x0B, 0x1F, 0xFA, 0x8B, 0xFA, 0x4B, 0x46, 0x3A, 0x46, 0x51, 0x46, 0x23, 0xF8, 0x0C, 0xAB, 0x30, 0x46, 0xE6, 0xF7, -0x35, 0xFD, 0x98, 0xF8, 0x0A, 0x30, 0x89, 0xF8, 0x08, 0x30, 0xBD, 0xF8, 0x16, 0x30, 0x89, 0xF8, 0x07, 0x50, 0xA9, 0xF8, -0x02, 0x30, 0x94, 0xF9, 0x41, 0x50, 0xD2, 0xF7, 0x75, 0xFD, 0x0A, 0x9B, 0x89, 0xF8, 0x06, 0x30, 0x1A, 0x0C, 0x89, 0xF8, -0x09, 0x50, 0xA9, 0xF8, 0x04, 0x20, 0x48, 0x46, 0xF4, 0xF7, 0xAE, 0xF8, 0xBD, 0xF8, 0x26, 0x30, 0x04, 0x2B, 0x10, 0xD1, -0xE1, 0x6B, 0xB9, 0xF8, 0x04, 0x30, 0x62, 0x6B, 0x07, 0x98, 0xC1, 0xF3, 0x03, 0x11, 0x02, 0x91, 0x99, 0xF9, 0x09, 0x10, -0x01, 0x91, 0x99, 0xF8, 0x06, 0x10, 0x00, 0x91, 0x59, 0x46, 0x07, 0xF0, 0x15, 0xFB, 0x00, 0x20, 0x0D, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x0D, 0x46, 0xD2, 0xF7, 0x4E, 0xFD, 0xFF, 0x2D, 0x38, 0xD0, 0x3C, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x31, 0xD0, -0x99, 0xF8, 0x04, 0x30, 0xDF, 0xF8, 0xEC, 0x80, 0xDA, 0x07, 0x10, 0xD4, 0x98, 0xF8, 0x0A, 0x00, 0x37, 0x4A, 0xB9, 0xF8, -0x04, 0x10, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0xF3, 0x5C, 0x33, 0x98, 0x18, 0x9B, 0x5A, 0x8B, 0x42, 0x45, 0xD0, -0xFF, 0x23, 0x88, 0xF8, 0x0A, 0x30, 0x22, 0x8E, 0x30, 0x48, 0x09, 0xAB, 0x49, 0x46, 0x02, 0xF0, 0x81, 0xFB, 0x83, 0x46, -0x00, 0x28, 0x3F, 0xF4, 0x50, 0xAF, 0x9D, 0xF8, 0x24, 0x00, 0x00, 0x28, 0x3F, 0xF4, 0x48, 0xAF, 0x2A, 0x4B, 0x20, 0x46, -0xD3, 0xF8, 0xE4, 0x32, 0x03, 0x21, 0x98, 0x47, 0x9D, 0xF8, 0x24, 0x00, 0x3E, 0xE7, 0x8D, 0xF8, 0x24, 0x00, 0xF0, 0xE7, -0xDF, 0xF8, 0x8C, 0x80, 0xE1, 0xE7, 0x63, 0x6D, 0x13, 0xF4, 0xC0, 0x6F, 0x1E, 0xD1, 0x1E, 0x4B, 0x9B, 0x68, 0x9B, 0xB3, -0xB9, 0xF8, 0x04, 0x10, 0x01, 0xE0, 0x1B, 0x68, 0xB3, 0xB1, 0xB3, 0xF8, 0x5C, 0x20, 0x8A, 0x42, 0xF9, 0xD1, 0xB3, 0xF8, -0x5E, 0x00, 0xB9, 0xF8, 0x06, 0x20, 0x90, 0x42, 0xF3, 0xD1, 0xB3, 0xF8, 0x60, 0x00, 0xB9, 0xF8, 0x08, 0x20, 0x90, 0x42, -0xED, 0xD1, 0x93, 0xF8, 0x63, 0x30, 0xDF, 0xF8, 0x4C, 0x80, 0x88, 0xF8, 0x0A, 0x30, 0xBE, 0xE7, 0xFF, 0x23, 0xF8, 0xE7, -0x42, 0x88, 0xB9, 0xF8, 0x06, 0x30, 0x9A, 0x42, 0xB4, 0xD1, 0x82, 0x88, 0xB9, 0xF8, 0x08, 0x30, 0x9A, 0x42, 0xAF, 0xD1, -0xB1, 0xE7, 0x04, 0x9A, 0x93, 0x07, 0x3F, 0xF4, 0x4E, 0xAF, 0x0A, 0x49, 0x0A, 0x48, 0x40, 0xF6, 0x97, 0x22, 0xF6, 0xF7, -0xE7, 0xF8, 0x46, 0xE7, 0x2B, 0x46, 0xE0, 0xE7, 0xBA, 0xDE, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD0, 0xC0, 0x15, 0x00, -0x1D, 0x48, 0x70, 0xB5, 0x00, 0xF1, 0x10, 0x06, 0xF4, 0xF7, 0x5E, 0xFC, 0x30, 0x46, 0x1B, 0x4C, 0xF4, 0xF7, 0x5A, 0xFC, -0x04, 0xF5, 0x92, 0x55, 0x21, 0x46, 0x30, 0x46, 0x04, 0xF5, 0x92, 0x74, 0xF4, 0xF7, 0x56, 0xFC, 0xAC, 0x42, 0xF7, 0xD1, -0x15, 0x48, 0xF4, 0xF7, 0x4D, 0xFC, 0x15, 0x48, 0xF4, 0xF7, 0x4A, 0xFC, 0x14, 0x49, 0x12, 0x48, 0xF4, 0xF7, 0x4A, 0xFC, -0x13, 0x49, 0x10, 0x48, 0xF4, 0xF7, 0x46, 0xFC, 0x12, 0x49, 0x0E, 0x48, 0xF4, 0xF7, 0x42, 0xFC, 0x11, 0x4A, 0x12, 0x4B, -0x12, 0x48, 0x4F, 0xF6, 0xFF, 0x71, 0xA2, 0xF8, 0x66, 0x10, 0x03, 0xF5, 0x70, 0x51, 0x00, 0x22, 0x03, 0xF8, 0x34, 0x2C, -0x1A, 0x81, 0x43, 0xE9, 0x10, 0x03, 0x43, 0xF8, 0x30, 0x3C, 0x50, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0x70, 0xBD, 0x00, 0xBF, -0xE8, 0xDE, 0x17, 0x00, 0x70, 0xCC, 0x17, 0x00, 0x00, 0xDF, 0x17, 0x00, 0x08, 0xDF, 0x17, 0x00, 0x28, 0xDF, 0x17, 0x00, -0x6C, 0xDF, 0x17, 0x00, 0xB0, 0xDF, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x24, 0x64, 0x18, 0x00, 0x75, 0xD2, 0x14, 0x00, -0x70, 0xB5, 0x90, 0xF9, 0x00, 0x30, 0x82, 0xB0, 0x00, 0x2B, 0x01, 0xF0, 0x78, 0x02, 0x05, 0x46, 0xB8, 0xBF, 0x1A, 0x23, -0x4F, 0xF0, 0x00, 0x00, 0xA8, 0xBF, 0x18, 0x23, 0x08, 0x2A, 0xAD, 0xF8, 0x06, 0x00, 0x19, 0xD0, 0x01, 0xF0, 0x7C, 0x01, -0x04, 0x29, 0x1F, 0xD0, 0x06, 0x33, 0xDC, 0xB2, 0x2E, 0x19, 0x31, 0x46, 0x02, 0x22, 0x0D, 0xF1, 0x06, 0x00, 0x08, 0xF0, -0xF3, 0xFA, 0x28, 0x79, 0x10, 0xF0, 0x01, 0x00, 0x0B, 0xD0, 0xBD, 0xF8, 0x06, 0x00, 0xA0, 0xF5, 0xC1, 0x60, 0xB0, 0xFA, -0x80, 0xF0, 0x40, 0x09, 0x02, 0xB0, 0x70, 0xBD, 0x08, 0x33, 0xDB, 0xB2, 0xE6, 0xE7, 0xBD, 0xF8, 0x06, 0x30, 0x08, 0x2B, -0x04, 0xD0, 0x01, 0x20, 0x02, 0xB0, 0x70, 0xBD, 0x04, 0x33, 0xDD, 0xE7, 0xF3, 0x7A, 0x02, 0x2B, 0xEE, 0xD0, 0x11, 0x2B, -0xF5, 0xD1, 0xB2, 0x78, 0xA3, 0x1C, 0x02, 0xF0, 0x0F, 0x04, 0x03, 0xEB, 0x84, 0x04, 0x2C, 0x44, 0x14, 0xF8, 0x04, 0x3C, -0xEF, 0x2B, 0xEA, 0xD1, 0x14, 0xF8, 0x03, 0x3C, 0xFF, 0x2B, 0xE6, 0xD1, 0x14, 0xF8, 0x02, 0x3C, 0xFF, 0x2B, 0xE2, 0xD1, -0x14, 0xF8, 0x01, 0x0C, 0xFA, 0x38, 0x18, 0xBF, 0x01, 0x20, 0xD3, 0xE7, 0x70, 0xB5, 0x90, 0xF9, 0x00, 0x30, 0x82, 0xB0, -0x00, 0x2B, 0x01, 0xF0, 0x78, 0x05, 0x4F, 0xF0, 0x00, 0x06, 0xB4, 0xBF, 0x1A, 0x23, 0x18, 0x23, 0x08, 0x2D, 0x14, 0x46, -0xAD, 0xF8, 0x06, 0x60, 0x13, 0xD0, 0x01, 0xF0, 0x7C, 0x01, 0x04, 0x29, 0x12, 0xD0, 0x99, 0x1D, 0x50, 0xFA, 0x81, 0xF1, -0x02, 0x22, 0x0D, 0xF1, 0x06, 0x00, 0x08, 0xF0, 0x9F, 0xFA, 0xBD, 0xF8, 0x06, 0x10, 0x48, 0xF6, 0x88, 0x63, 0x99, 0x42, -0x06, 0xD0, 0x02, 0xB0, 0x70, 0xBD, 0x08, 0x33, 0xDB, 0xB2, 0xEC, 0xE7, 0x04, 0x33, 0xEA, 0xE7, 0x02, 0x48, 0x22, 0x46, -0xF5, 0xF7, 0x6E, 0xFD, 0x02, 0xB0, 0x70, 0xBD, 0xEC, 0xC0, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x45, 0x6D, 0x2D, 0xED, -0x02, 0x8B, 0xAF, 0x04, 0x87, 0xB0, 0x04, 0x46, 0x1F, 0xD4, 0xC1, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x9E, 0x07, 0x03, 0xD5, -0x05, 0xF0, 0x3C, 0x03, 0x3C, 0x2B, 0x16, 0xD0, 0xBD, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x71, 0xD0, 0xBC, 0x4E, 0xBD, 0x4D, -0xB3, 0x72, 0x20, 0x46, 0xD5, 0xF8, 0xE4, 0x32, 0x80, 0x21, 0x98, 0x47, 0x01, 0x27, 0xD5, 0xF8, 0x38, 0x31, 0xB9, 0x48, -0x98, 0x47, 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0xD4, 0xF8, 0x1C, 0xA0, 0xB2, 0x4E, -0xDA, 0xF8, 0x08, 0x80, 0x00, 0x23, 0xB8, 0xF8, 0x00, 0x90, 0x23, 0x66, 0x40, 0x46, 0xFF, 0x23, 0x73, 0x72, 0xB3, 0x72, -0xFE, 0xF7, 0xE6, 0xFD, 0xA8, 0x01, 0x50, 0xD5, 0xC5, 0xF3, 0xC9, 0x37, 0xDF, 0xF8, 0xBC, 0xB2, 0x10, 0x3F, 0xFF, 0xB2, -0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, 0x93, 0xF8, 0x25, 0x20, 0x00, 0x2A, 0x39, 0xD0, 0x93, 0xF8, 0x22, 0x10, -0xA5, 0x48, 0xD3, 0xF8, 0xB0, 0x30, 0x77, 0x72, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0x02, 0xB5, 0x61, 0x92, 0xF8, -0x62, 0x20, 0xB1, 0x72, 0x02, 0x2A, 0x00, 0x93, 0x52, 0xD0, 0x09, 0xF4, 0x40, 0x73, 0xB3, 0xF5, 0x40, 0x7F, 0x03, 0xD1, -0x23, 0x6E, 0x43, 0xF0, 0x04, 0x03, 0x23, 0x66, 0x33, 0x88, 0x5B, 0x04, 0x00, 0xF1, 0x90, 0x80, 0x98, 0x4B, 0x1B, 0x68, -0x1B, 0x78, 0x01, 0x2B, 0x09, 0xF0, 0x0C, 0x03, 0x00, 0xF0, 0x90, 0x80, 0x08, 0x2B, 0x00, 0xF0, 0x97, 0x80, 0x4F, 0xF4, -0x1E, 0x72, 0x02, 0xFB, 0x07, 0xB2, 0x92, 0xF8, 0x5D, 0x22, 0x01, 0x2A, 0x40, 0xF2, 0xE7, 0x80, 0x04, 0x2B, 0x00, 0xF0, -0xFA, 0x80, 0x08, 0x2B, 0x00, 0xF0, 0x97, 0x80, 0x00, 0x2B, 0x33, 0xD0, 0x85, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x01, 0xD0, -0x85, 0x4D, 0x8F, 0xE7, 0x84, 0x4D, 0x00, 0x27, 0x93, 0xE7, 0x29, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0x9D, 0xFB, 0x19, 0xF0, -0x0C, 0x0F, 0x0B, 0xD1, 0xFF, 0xF7, 0xDA, 0xF8, 0x00, 0x28, 0xEB, 0xD0, 0x33, 0x88, 0x59, 0x04, 0x55, 0xD5, 0x05, 0xF0, -0x7C, 0x03, 0x04, 0x2B, 0x4B, 0xD0, 0x40, 0x46, 0x21, 0x46, 0xFF, 0xF7, 0x4D, 0xFB, 0x78, 0x4D, 0x07, 0x46, 0x75, 0x4B, -0x1B, 0x7C, 0xFF, 0x2B, 0x3F, 0xF4, 0x77, 0xAF, 0x00, 0x2F, 0x7F, 0xF4, 0x74, 0xAF, 0x6B, 0xE7, 0x96, 0xF8, 0x24, 0x30, -0xDA, 0x07, 0xA8, 0xD4, 0x06, 0xF1, 0x24, 0x00, 0xF2, 0xF7, 0xB8, 0xFE, 0xF0, 0x72, 0xA2, 0xE7, 0x19, 0xF4, 0x00, 0x6F, -0x00, 0xF0, 0xCF, 0x80, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, 0x72, 0x88, 0xB3, 0xF8, 0xE8, 0x31, 0x93, 0x42, -0xBE, 0xD0, 0x96, 0xF8, 0x30, 0x10, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB7, 0x8D, 0x07, 0xA7, 0xF8, 0xE8, 0x21, -0x0A, 0xD5, 0x35, 0x6A, 0xD6, 0xE9, 0x04, 0x01, 0xD5, 0xE9, 0x10, 0x23, 0x8B, 0x42, 0x08, 0xBF, 0x82, 0x42, 0xAB, 0xD2, -0xC5, 0xE9, 0x10, 0x01, 0x5F, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD1, 0x98, 0xF8, 0x00, 0x30, 0x80, 0x2B, -0x00, 0xF0, 0xCF, 0x80, 0x71, 0x7A, 0x57, 0x4D, 0x20, 0x46, 0xFF, 0xF7, 0x17, 0xFD, 0x07, 0x46, 0xB9, 0xE7, 0x29, 0x46, -0x40, 0x46, 0xFE, 0xF7, 0x39, 0xFB, 0x00, 0x28, 0xAD, 0xD0, 0xFF, 0x21, 0x20, 0x46, 0xFF, 0xF7, 0x0B, 0xFD, 0x4F, 0x4D, -0x07, 0x46, 0xAC, 0xE7, 0xB1, 0x69, 0x40, 0x46, 0xFE, 0xF7, 0x2C, 0xFB, 0x00, 0x28, 0x7F, 0xF4, 0x69, 0xAF, 0x83, 0xE7, -0x08, 0x2B, 0x7F, 0xF4, 0x70, 0xAF, 0x29, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0x73, 0xFE, 0x00, 0x28, 0x3F, 0xF4, 0x7A, 0xAF, -0x3B, 0x46, 0x22, 0x8E, 0x29, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0xC0, 0xFE, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, -0x93, 0xF8, 0x5D, 0x32, 0x01, 0x2B, 0x40, 0xF2, 0x87, 0x80, 0x41, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x73, 0xB1, 0xB3, 0x7A, -0x3C, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x13, 0x93, 0xF8, 0x62, 0x20, 0x2A, 0xB9, 0xD3, 0xF8, 0x90, 0x21, -0x92, 0x78, 0x01, 0x2A, 0x00, 0xF0, 0x8D, 0x80, 0x19, 0xF0, 0x40, 0x03, 0x00, 0x93, 0x7F, 0xF4, 0x53, 0xAF, 0x09, 0xF0, -0x80, 0x03, 0x00, 0x2B, 0x14, 0xBF, 0x4F, 0xF0, 0x01, 0x08, 0x4F, 0xF0, 0x00, 0x08, 0x71, 0xD0, 0x96, 0xF8, 0x30, 0x30, -0x1A, 0x07, 0x40, 0xF1, 0x9A, 0x80, 0xF2, 0x79, 0x4F, 0xF4, 0x9E, 0x73, 0xF5, 0x32, 0x03, 0xFB, 0x07, 0x23, 0x0B, 0xEB, -0x43, 0x03, 0x19, 0xF4, 0x00, 0x6F, 0x72, 0x88, 0x03, 0xD0, 0x19, 0x88, 0x91, 0x42, 0x3F, 0xF4, 0x35, 0xAF, 0x1F, 0x49, -0x1A, 0x80, 0x0B, 0x68, 0x1B, 0x78, 0x9B, 0x07, 0x04, 0xD5, 0x05, 0xF0, 0x3C, 0x05, 0x3C, 0x2D, 0x00, 0xF0, 0x8E, 0x80, -0x1C, 0x4D, 0x39, 0x46, 0xD5, 0xF8, 0xC4, 0x32, 0x42, 0x46, 0x20, 0x46, 0x98, 0x47, 0x07, 0x46, 0x41, 0xE7, 0x00, 0x9A, -0x00, 0x2A, 0x3F, 0xF4, 0x15, 0xAF, 0x92, 0xF8, 0x60, 0x20, 0x01, 0x3A, 0x01, 0x2A, 0x3F, 0xF6, 0x0F, 0xAF, 0x19, 0xF4, -0x80, 0x4F, 0x3F, 0xF4, 0x0B, 0xAF, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x07, 0xB2, 0x02, 0x21, 0x82, 0xF8, 0x5D, 0x12, -0x02, 0xE7, 0x09, 0xF0, 0xFC, 0x09, 0xB9, 0xF1, 0x84, 0x0F, 0x7F, 0xF4, 0x05, 0xAF, 0x0A, 0x4D, 0x41, 0x46, 0xD5, 0xF8, -0xD0, 0x32, 0x38, 0x46, 0x98, 0x47, 0x05, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x7F, 0xF4, 0x90, 0xAE, 0xFF, 0xE6, 0x72, 0x88, -0x37, 0xE7, 0x00, 0xBF, 0x34, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0xE8, 0xDE, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x00, 0x9B, 0x00, 0x2B, 0x3F, 0xF4, 0x75, 0xAF, 0x93, 0xF8, 0x60, 0x30, 0x01, 0x3B, 0x01, 0x2B, 0x3F, 0xF6, 0x6F, 0xAF, -0x08, 0x23, 0xC0, 0xE7, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, 0x03, 0xF5, 0xF4, 0x73, 0x93, 0xE7, 0x98, 0xF8, -0x01, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x2C, 0xAF, 0xCA, 0xE6, 0xD3, 0xF8, 0xCC, 0x21, 0x12, 0xF0, 0x0C, 0x0F, 0x3F, 0xF4, -0x6D, 0xAF, 0x98, 0xF8, 0x04, 0x20, 0xD0, 0x07, 0x3F, 0xF5, 0x68, 0xAF, 0xE2, 0x6B, 0x12, 0xF0, 0x0C, 0x0F, 0x3F, 0xF4, -0x63, 0xAF, 0xD3, 0xF8, 0x90, 0x20, 0x01, 0x32, 0xC3, 0xF8, 0x90, 0x20, 0x98, 0xF8, 0x01, 0x20, 0x11, 0x07, 0x7F, 0xF5, -0x59, 0xAF, 0xD3, 0xF8, 0x94, 0x20, 0x01, 0x32, 0xC3, 0xF8, 0x94, 0x20, 0x52, 0xE7, 0xF1, 0x79, 0x38, 0x46, 0xE9, 0xF7, -0x33, 0xFB, 0x00, 0x28, 0x3F, 0xF4, 0x5F, 0xAF, 0x61, 0x4D, 0x39, 0x46, 0xD5, 0xF8, 0xD4, 0x32, 0x20, 0x46, 0x98, 0x47, -0x07, 0x46, 0xBC, 0xE6, 0x33, 0x6A, 0x01, 0x93, 0x93, 0xF8, 0x60, 0x10, 0x01, 0x29, 0x03, 0xF1, 0x64, 0x09, 0x64, 0xD0, -0x00, 0x29, 0x40, 0xF0, 0x97, 0x80, 0x08, 0xF1, 0x0E, 0x03, 0x5B, 0x00, 0xDA, 0xE9, 0x01, 0x25, 0x58, 0x19, 0x08, 0xEE, -0x10, 0x0A, 0x00, 0x2A, 0x52, 0xD0, 0xDA, 0xF8, 0x0C, 0x20, 0x20, 0x8E, 0x01, 0x32, 0x52, 0x1B, 0x04, 0x30, 0xD2, 0x1A, -0xC0, 0x1A, 0x93, 0xB2, 0x82, 0xB2, 0x9A, 0x42, 0x00, 0x92, 0x28, 0xBF, 0x1A, 0x46, 0x15, 0x46, 0x01, 0x29, 0x2F, 0xD0, -0x00, 0x29, 0x50, 0xD0, 0x03, 0x29, 0x66, 0xD0, 0x18, 0xEE, 0x10, 0x0A, 0x29, 0x46, 0xF3, 0xF7, 0x2F, 0xFB, 0x4F, 0xF0, -0xFF, 0x33, 0x18, 0xEE, 0x10, 0x0A, 0x03, 0x22, 0x29, 0x46, 0xD6, 0xF7, 0x29, 0xFF, 0xDA, 0xF8, 0x04, 0x30, 0x23, 0xB1, -0x00, 0x9A, 0x55, 0x1B, 0xAD, 0xB2, 0x00, 0x2D, 0x67, 0xD1, 0x01, 0x9B, 0x93, 0xF8, 0x60, 0x30, 0x13, 0xB1, 0x03, 0x2B, -0x7F, 0xF4, 0x2C, 0xAF, 0x03, 0x20, 0xD6, 0xF7, 0x4F, 0xFF, 0x3A, 0x4B, 0x98, 0x42, 0x01, 0x46, 0x3F, 0xD1, 0x63, 0x6D, -0x23, 0xF0, 0x7C, 0x03, 0x43, 0xF4, 0x00, 0x53, 0x43, 0xF0, 0x04, 0x03, 0x63, 0x65, 0x1B, 0xE7, 0x4F, 0xF4, 0x1E, 0x72, -0x02, 0xFB, 0x07, 0xB2, 0x02, 0xAB, 0x32, 0x49, 0x26, 0x32, 0x48, 0x46, 0xF3, 0xF7, 0xDA, 0xF8, 0x10, 0x21, 0x02, 0xA8, -0xF3, 0xF7, 0x9A, 0xFA, 0x01, 0x9B, 0x93, 0xF8, 0x60, 0x10, 0xBD, 0xE7, 0x22, 0x8E, 0x04, 0x32, 0xD3, 0x1A, 0x9D, 0xB2, -0xB6, 0xE7, 0xD6, 0xE9, 0x04, 0x53, 0x28, 0x48, 0x2A, 0x0C, 0x42, 0xEA, 0x03, 0x42, 0x08, 0xF1, 0x10, 0x03, 0x02, 0x60, -0x85, 0x80, 0x5B, 0x00, 0x94, 0xE7, 0x32, 0x8A, 0x73, 0x8A, 0xAD, 0xF8, 0x08, 0x20, 0x49, 0x46, 0x05, 0x22, 0x0D, 0xF1, -0x0B, 0x00, 0x8D, 0xF8, 0x0A, 0x30, 0x08, 0xF0, 0x1F, 0xF8, 0x08, 0x21, 0x02, 0xA8, 0xF3, 0xF7, 0x75, 0xFA, 0x01, 0x9B, -0x93, 0xF8, 0x60, 0x10, 0x9A, 0xE7, 0x1A, 0x48, 0xF5, 0xF7, 0xF4, 0xFA, 0x0A, 0xE6, 0x32, 0x8A, 0x73, 0x8A, 0xAD, 0xF8, -0x08, 0x20, 0x49, 0x46, 0x0D, 0x22, 0x0D, 0xF1, 0x0B, 0x00, 0x8D, 0xF8, 0x0A, 0x30, 0x08, 0xF0, 0x07, 0xF8, 0x02, 0xA8, -0x10, 0x21, 0xF3, 0xF7, 0x5D, 0xFA, 0x87, 0xE7, 0x03, 0x29, 0x3F, 0xF4, 0x66, 0xAF, 0x00, 0x23, 0x66, 0xE7, 0xD3, 0xF8, -0x08, 0x90, 0x29, 0x46, 0x48, 0x46, 0xF3, 0xF7, 0xB1, 0xFA, 0x03, 0x20, 0xD6, 0xF7, 0xE8, 0xFE, 0x20, 0x21, 0xC0, 0x43, -0xF3, 0xF7, 0x64, 0xF8, 0x29, 0x46, 0x03, 0x46, 0x03, 0x22, 0x48, 0x46, 0xD6, 0xF7, 0xA6, 0xFE, 0x83, 0xE7, 0x00, 0xBF, -0x88, 0x1A, 0x17, 0x00, 0x1C, 0xDF, 0x44, 0x21, 0x88, 0x34, 0x17, 0x00, 0x00, 0xC1, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x00, 0xEB, 0x81, 0x04, 0xD4, 0xF8, 0x7C, 0x61, 0x16, 0xB1, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x15, 0x48, 0x0D, 0x46, -0x17, 0x46, 0xF4, 0xF7, 0x1B, 0xF9, 0x80, 0x46, 0x00, 0x28, 0xF4, 0xD0, 0x31, 0x46, 0x4F, 0xF4, 0x92, 0x72, 0xD1, 0xF7, -0x3B, 0xF8, 0x07, 0xF0, 0x3F, 0x02, 0x0F, 0x4B, 0x88, 0xF8, 0x0C, 0x50, 0x88, 0xF8, 0x0A, 0x20, 0x19, 0x69, 0x0D, 0x4B, -0xC8, 0xF8, 0x04, 0x10, 0xD3, 0xF8, 0xDC, 0x22, 0xA8, 0xF8, 0x08, 0x70, 0xC8, 0xE9, 0x45, 0x28, 0x01, 0xF5, 0x43, 0x41, -0xC4, 0xF8, 0x7C, 0x81, 0x08, 0xF5, 0x88, 0x70, 0xD3, 0xF8, 0xE0, 0x31, 0x50, 0x31, 0x98, 0x47, 0x01, 0x20, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0xBF, 0xF8, 0xDE, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x10, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0xEB, 0x81, 0x04, 0x00, 0x2B, 0xD4, 0xF8, 0x7C, 0x51, 0x0D, 0xDB, 0x0C, 0x4B, -0x05, 0xF5, 0x88, 0x70, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x0A, 0x48, 0x29, 0x46, 0xF4, 0xF7, 0x95, 0xF8, 0x00, 0x23, -0xC4, 0xF8, 0x7C, 0x31, 0x38, 0xBD, 0x00, 0x2D, 0xEF, 0xD1, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF6, 0x7F, 0x52, 0xF5, 0xF7, -0xDD, 0xFC, 0xE8, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xDE, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x10, 0xC1, 0x15, 0x00, 0x08, 0x4B, 0x93, 0xF8, 0x73, 0x20, 0x62, 0xB9, 0x02, 0x88, 0xA3, 0xF8, 0x6C, 0x20, 0x42, 0x88, -0xA3, 0xF8, 0x6E, 0x20, 0x82, 0x88, 0xA3, 0xF8, 0x70, 0x20, 0x4F, 0xF4, 0x80, 0x72, 0xA3, 0xF8, 0x72, 0x20, 0x70, 0x47, -0xB0, 0xDE, 0x17, 0x00, 0x03, 0x4B, 0x00, 0x22, 0x93, 0xF8, 0x72, 0x00, 0xA3, 0xF8, 0x72, 0x20, 0x70, 0x47, 0x00, 0xBF, -0xB0, 0xDE, 0x17, 0x00, 0x10, 0xB5, 0x4F, 0xF4, 0x00, 0x10, 0xF3, 0xF7, 0xDD, 0xFF, 0x03, 0x4B, 0x03, 0x48, 0xD3, 0xF8, -0x38, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0xE8, 0xDE, 0x17, 0x00, 0x06, 0x4B, 0x07, 0x4A, -0x93, 0xF8, 0x44, 0x30, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0x03, 0x13, 0xB3, 0xF8, 0x4C, 0x00, 0xB0, 0xFA, 0x80, 0xF0, -0x40, 0x09, 0x70, 0x47, 0xB0, 0xDE, 0x17, 0x00, 0xE0, 0x63, 0x18, 0x00, 0xF8, 0xB5, 0x55, 0x4F, 0x46, 0x7F, 0x05, 0x7F, -0x54, 0x4A, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x06, 0x74, 0xD4, 0xE9, 0x2C, 0xC3, 0x4F, 0xF4, 0xA4, 0x6E, 0x0E, 0xFB, -0x05, 0x25, 0x1B, 0x68, 0xD5, 0xF8, 0xA8, 0xE4, 0x00, 0x22, 0x0A, 0x60, 0x4B, 0xB3, 0xBE, 0xF1, 0x00, 0x0F, 0x26, 0xD0, -0xD5, 0xF8, 0xB0, 0x54, 0xAA, 0x07, 0x06, 0xD5, 0x05, 0x8B, 0xB4, 0xF8, 0x34, 0xE0, 0x6C, 0xBA, 0xA4, 0xB2, 0xA6, 0x45, -0x1B, 0xD0, 0xBC, 0xF1, 0x00, 0x0F, 0x04, 0xD0, 0x9C, 0xF8, 0x60, 0x20, 0x01, 0x3A, 0x01, 0x2A, 0x1C, 0xD9, 0x93, 0xF8, -0x60, 0x20, 0x04, 0x2A, 0x04, 0xD8, 0xDF, 0xE8, 0x02, 0xF0, 0x10, 0x20, 0x27, 0x10, 0x3C, 0x00, 0x3D, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0xDA, 0x3B, 0x49, 0x3C, 0x48, 0xC4, 0x22, 0xF5, 0xF7, 0x53, 0xFC, 0x00, 0x20, -0xF8, 0xBD, 0xC2, 0x8B, 0x04, 0x24, 0xD5, 0x07, 0x0C, 0x60, 0x54, 0xD5, 0x20, 0x46, 0xF8, 0xBD, 0x4F, 0xF4, 0x1E, 0x72, -0x02, 0xFB, 0x06, 0x76, 0x96, 0xF8, 0x5D, 0x22, 0x01, 0x2A, 0xDA, 0xD8, 0xED, 0xE7, 0xC2, 0x8B, 0x0C, 0x24, 0x0C, 0x60, -0xD4, 0x07, 0x35, 0xD5, 0x08, 0x20, 0xF8, 0xBD, 0xC2, 0x8B, 0x08, 0x24, 0x0C, 0x60, 0xD1, 0x07, 0xF8, 0xD4, 0xD3, 0xE9, -0x12, 0x21, 0x01, 0x32, 0x41, 0xF1, 0x00, 0x01, 0x16, 0x46, 0x0F, 0x46, 0x19, 0x46, 0xE1, 0xE9, 0x12, 0x67, 0x06, 0x22, -0x38, 0x30, 0x07, 0xF0, 0xCD, 0xFE, 0x20, 0x46, 0xF8, 0xBD, 0xC2, 0x8B, 0x10, 0x24, 0xD2, 0x07, 0x0C, 0x60, 0x13, 0xD4, -0x93, 0xF8, 0x62, 0x20, 0x0F, 0x2A, 0xD3, 0xE9, 0x12, 0x21, 0x0F, 0xD9, 0x02, 0x32, 0x41, 0xF1, 0x00, 0x01, 0x14, 0x46, -0x0D, 0x46, 0x19, 0x46, 0xE1, 0xE9, 0x12, 0x45, 0x08, 0x22, 0x38, 0x30, 0x07, 0xF0, 0xB4, 0xFE, 0x12, 0x20, 0xF8, 0xBD, -0x12, 0x20, 0xF8, 0xBD, 0x01, 0x32, 0x41, 0xF1, 0x00, 0x01, 0xEE, 0xE7, 0xD3, 0xE9, 0x12, 0x21, 0x01, 0x32, 0x41, 0xF1, -0x00, 0x01, 0x14, 0x46, 0x0D, 0x46, 0x19, 0x46, 0xE1, 0xE9, 0x12, 0x45, 0x06, 0x22, 0x38, 0x30, 0x07, 0xF0, 0x9E, 0xFE, -0xBA, 0xE7, 0xD3, 0xE9, 0x12, 0x21, 0x01, 0x32, 0x41, 0xF1, 0x00, 0x01, 0x16, 0x46, 0x0F, 0x46, 0x19, 0x46, 0xE1, 0xE9, -0x12, 0x67, 0x22, 0x46, 0x38, 0x30, 0x07, 0xF0, 0x8F, 0xFE, 0x20, 0x46, 0xF8, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0xF0, 0xB5, 0xC3, 0x8B, -0x04, 0x46, 0xD8, 0x07, 0x83, 0xB0, 0x44, 0xD4, 0xE0, 0x7E, 0x66, 0x7F, 0x22, 0x7F, 0xFF, 0x28, 0x44, 0xD0, 0x4F, 0xF4, -0x9E, 0x71, 0x01, 0xFB, 0x06, 0x01, 0x21, 0x48, 0x98, 0x31, 0x00, 0xEB, 0x41, 0x01, 0x1A, 0x25, 0x8F, 0x88, 0x78, 0x1C, -0xC0, 0xF3, 0x0B, 0x00, 0x88, 0x80, 0x27, 0x84, 0xD9, 0x05, 0x1C, 0x4B, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x02, 0x33, -0x48, 0xBF, 0x06, 0x35, 0x93, 0xF8, 0x62, 0x30, 0x43, 0xB9, 0x16, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x06, 0x36, -0x73, 0x68, 0x9B, 0x06, 0x48, 0xBF, 0x04, 0x35, 0x01, 0xA9, 0x84, 0xF8, 0x32, 0x50, 0x20, 0x46, 0xFF, 0xF7, 0x16, 0xFF, -0x23, 0x8B, 0xA2, 0x88, 0x22, 0x86, 0x5B, 0xBA, 0x9B, 0xB2, 0xB3, 0xF5, 0xC0, 0x6F, 0x28, 0x44, 0x88, 0xBF, 0x08, 0x30, -0xC0, 0xB2, 0x01, 0x9B, 0x84, 0xF8, 0x33, 0x00, 0x8C, 0xBF, 0x08, 0x21, 0x00, 0x21, 0x84, 0xF8, 0x42, 0x00, 0x84, 0xF8, -0x34, 0x10, 0x84, 0xF8, 0x35, 0x30, 0x00, 0x23, 0xC4, 0xE9, 0x09, 0x33, 0x03, 0xB0, 0xF0, 0xBD, 0x18, 0x25, 0xC7, 0xE7, -0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x1D, 0xA0, 0xDF, 0xF8, 0x58, 0x92, -0x90, 0xF8, 0x1C, 0x80, 0x92, 0x4F, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x0A, 0xF6, 0x09, 0xEB, 0x06, 0x02, 0x4F, 0xF4, -0xA4, 0x64, 0x04, 0xFB, 0x08, 0x74, 0xD2, 0xF8, 0xB4, 0x30, 0x94, 0xF8, 0x62, 0xC0, 0xD3, 0xF8, 0x00, 0xB0, 0xD2, 0xF8, -0xB0, 0x30, 0x83, 0xB0, 0x05, 0x46, 0x01, 0x93, 0xD4, 0xF8, 0xA8, 0x34, 0x00, 0x93, 0x0C, 0x46, 0xBC, 0xF1, 0x00, 0x0F, -0x40, 0xF0, 0x8D, 0x80, 0x53, 0x68, 0x13, 0xF0, 0x20, 0x03, 0x40, 0xF0, 0x9F, 0x80, 0xE9, 0x7E, 0xB5, 0xF8, 0x1E, 0xC0, -0xFF, 0x29, 0x0C, 0xBF, 0xA4, 0xF1, 0x18, 0x00, 0xA4, 0xF1, 0x1A, 0x00, 0x1C, 0xF4, 0x80, 0x72, 0x1D, 0xBF, 0x06, 0x38, -0x00, 0xF1, 0x1E, 0x04, 0x02, 0x46, 0x00, 0xF1, 0x18, 0x04, 0xFF, 0x29, 0x00, 0xF0, 0x94, 0x80, 0x6F, 0xF0, 0x7F, 0x0C, -0x4F, 0xF0, 0x00, 0x0E, 0x80, 0xF8, 0x00, 0xC0, 0x80, 0xF8, 0x01, 0xE0, 0x21, 0x80, 0x29, 0x8C, 0xB5, 0xF8, 0x1E, 0xC0, -0x09, 0x01, 0x1C, 0xF4, 0x00, 0x7F, 0xC1, 0x82, 0x63, 0xD1, 0x01, 0x88, 0x0B, 0x43, 0x43, 0xF0, 0x08, 0x01, 0x1C, 0xF4, -0x00, 0x6F, 0x01, 0x80, 0x69, 0xD0, 0x23, 0xF4, 0x40, 0x71, 0x41, 0xF0, 0x08, 0x01, 0x89, 0xB2, 0x01, 0x80, 0x4F, 0xF4, -0xA4, 0x64, 0x1C, 0xF0, 0x04, 0x0F, 0x04, 0xFB, 0x08, 0xF4, 0x18, 0xBF, 0x41, 0xF4, 0x00, 0x51, 0x04, 0xF1, 0x5C, 0x03, -0x18, 0xBF, 0x01, 0x80, 0x07, 0xEB, 0x03, 0x0C, 0xFB, 0x5A, 0x43, 0x81, 0xBC, 0xF8, 0x02, 0x30, 0x83, 0x81, 0x01, 0xF4, -0x40, 0x71, 0xBC, 0xF8, 0x04, 0x30, 0xC3, 0x81, 0xB1, 0xF5, 0x80, 0x7F, 0x5C, 0xD0, 0xB1, 0xF5, 0x00, 0x7F, 0x76, 0xD0, -0x00, 0x29, 0x40, 0xF0, 0x81, 0x80, 0xAB, 0x89, 0x83, 0x80, 0xEB, 0x89, 0xC3, 0x80, 0x2B, 0x8A, 0x03, 0x81, 0x04, 0xF5, -0xB2, 0x74, 0x3B, 0x5B, 0x03, 0x82, 0x3C, 0x44, 0x63, 0x88, 0x43, 0x82, 0xA3, 0x88, 0x83, 0x82, 0xBB, 0xF1, 0x00, 0x0F, -0x1C, 0xD0, 0x00, 0x9B, 0xD3, 0xB1, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x77, 0xD7, 0xF8, 0xB0, 0x34, 0x9B, 0x07, -0x0A, 0xD5, 0x6A, 0x7F, 0x2B, 0x8B, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x02, 0x92, 0x5B, 0xBA, 0x92, 0x8E, 0x9B, 0xB2, -0x9A, 0x42, 0x07, 0xD0, 0x01, 0x9B, 0x00, 0x2B, 0x7B, 0xD0, 0x93, 0xF8, 0x60, 0x30, 0x01, 0x3B, 0x01, 0x2B, 0x6E, 0xD9, -0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x23, 0x75, 0xE7, 0x21, 0x88, 0x41, 0xF0, 0x10, 0x01, 0x21, 0x80, 0x01, 0x88, -0xB5, 0xF8, 0x1E, 0xC0, 0x0B, 0x43, 0x43, 0xF0, 0x08, 0x01, 0x1C, 0xF4, 0x00, 0x6F, 0x01, 0x80, 0x95, 0xD1, 0x1C, 0xF4, -0x80, 0x7F, 0x22, 0xD0, 0x43, 0xF4, 0x42, 0x71, 0x01, 0x80, 0x94, 0xE7, 0x32, 0x4B, 0x11, 0x46, 0xD3, 0xF8, 0xB8, 0x33, -0x98, 0x47, 0x4F, 0xF4, 0x00, 0x43, 0x44, 0xF8, 0x04, 0x0D, 0x56, 0xE7, 0x00, 0x21, 0x81, 0x75, 0xC1, 0x75, 0x7A, 0xE7, -0x26, 0x36, 0x09, 0xEB, 0x06, 0x03, 0x39, 0xF8, 0x06, 0x20, 0x82, 0x80, 0x5A, 0x88, 0xC2, 0x80, 0x9B, 0x88, 0x03, 0x81, -0xAB, 0x89, 0x03, 0x82, 0xEB, 0x89, 0x43, 0x82, 0x2B, 0x8A, 0x83, 0x82, 0xA6, 0xE7, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, -0x08, 0x74, 0x94, 0xF8, 0x62, 0x40, 0x00, 0x2C, 0x27, 0xD1, 0x43, 0xF4, 0x84, 0x71, 0x01, 0x80, 0x69, 0xE7, 0xAB, 0x89, -0x83, 0x80, 0xEB, 0x89, 0xC3, 0x80, 0x2B, 0x8A, 0x03, 0x81, 0x6B, 0x8A, 0x03, 0x82, 0xAB, 0x8A, 0x43, 0x82, 0xEB, 0x8A, -0x83, 0x82, 0x8D, 0xE7, 0x26, 0x36, 0x09, 0xEB, 0x06, 0x03, 0x39, 0xF8, 0x06, 0x10, 0x91, 0x80, 0x59, 0x88, 0xD1, 0x80, -0x9B, 0x88, 0x13, 0x81, 0xAB, 0x89, 0x13, 0x82, 0xEB, 0x89, 0x53, 0x82, 0x2B, 0x8A, 0x93, 0x82, 0x6B, 0x8A, 0x13, 0x83, -0xAB, 0x8A, 0x53, 0x83, 0xEB, 0x8A, 0x93, 0x83, 0x76, 0xE7, 0x02, 0x2C, 0x04, 0xBF, 0x43, 0xF4, 0x02, 0x71, 0x01, 0x80, -0x3F, 0xE7, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x0A, 0x99, 0x99, 0xF8, 0x5D, 0x32, 0x01, 0x2B, 0x88, 0xD9, 0x03, 0x88, -0x43, 0xF4, 0x80, 0x43, 0x03, 0x80, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, -0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x06, 0x46, 0x54, 0x48, 0x75, 0x7F, 0x34, 0x7F, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x05, 0x03, 0x89, 0x46, 0xD3, 0xF8, 0xB4, 0x70, 0xD7, 0xF8, 0x00, 0x80, 0xB8, 0xF1, 0x00, 0x0F, 0x4C, 0xD0, -0x17, 0x46, 0x4D, 0x4A, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x04, 0x24, 0xD4, 0xF8, 0xA8, 0x24, 0x00, 0x2A, 0x42, 0xD0, -0xD4, 0xF8, 0xB0, 0x24, 0x92, 0x07, 0x05, 0xD5, 0x32, 0x8B, 0x99, 0x8E, 0x53, 0xBA, 0x9B, 0xB2, 0x99, 0x42, 0x38, 0xD0, -0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x05, 0xD5, 0xF8, 0xB0, 0x30, 0x23, 0xB1, 0x93, 0xF8, 0x60, 0x30, 0x01, 0x3B, -0x01, 0x2B, 0x40, 0xD9, 0x98, 0xF8, 0x60, 0x30, 0x04, 0x2B, 0x67, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x2A, 0x03, 0x40, 0x2A, -0x49, 0x00, 0x32, 0x8F, 0x42, 0xF4, 0x00, 0x53, 0x03, 0xF4, 0xFE, 0x43, 0x43, 0xEA, 0x12, 0x23, 0x29, 0xF8, 0x08, 0x3C, -0x96, 0xF8, 0x38, 0x30, 0x98, 0xF8, 0x61, 0x20, 0xA9, 0xF1, 0x08, 0x09, 0x43, 0xEA, 0x82, 0x33, 0x43, 0xF4, 0x00, 0x53, -0xA9, 0xF8, 0x02, 0x30, 0x73, 0x8F, 0xA9, 0xF8, 0x04, 0x30, 0xB3, 0x8F, 0xA9, 0xF8, 0x06, 0x30, 0xC7, 0xB1, 0xF2, 0x6A, -0xD4, 0x68, 0x2B, 0x4B, 0x98, 0xF8, 0x62, 0x00, 0x23, 0x40, 0x03, 0x43, 0xD3, 0x60, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x83, -0x33, 0x8F, 0x29, 0xF8, 0x04, 0x3C, 0x98, 0xF8, 0x61, 0x20, 0x73, 0x8F, 0xA9, 0xF1, 0x04, 0x09, 0x43, 0xEA, 0x82, 0x33, -0xA9, 0xF8, 0x02, 0x30, 0x00, 0x2F, 0xE6, 0xD1, 0xB2, 0x6C, 0x28, 0x32, 0xE4, 0xE7, 0x95, 0xF8, 0x5D, 0x32, 0x01, 0x2B, -0xBA, 0xD8, 0xE6, 0xE7, 0x33, 0x8F, 0x29, 0xF8, 0x08, 0x3C, 0x98, 0xF8, 0x61, 0x30, 0xA9, 0xF1, 0x08, 0x09, 0x9B, 0x03, -0xCA, 0xE7, 0x98, 0xF8, 0x61, 0x30, 0x29, 0xF8, 0x12, 0x3C, 0xA9, 0xF1, 0x12, 0x09, 0x33, 0x8F, 0xA9, 0xF8, 0x02, 0x30, -0x73, 0x8F, 0xA9, 0xF8, 0x04, 0x30, 0xB3, 0x8F, 0xA9, 0xF8, 0x06, 0x30, 0xF3, 0x8F, 0xA9, 0xF8, 0x08, 0x30, 0x45, 0xF6, -0x36, 0x43, 0xA9, 0xF8, 0x0A, 0x30, 0xA9, 0xF8, 0x0C, 0x30, 0xA9, 0xF8, 0x0E, 0x30, 0xA9, 0xF8, 0x10, 0x30, 0xB7, 0xE7, -0x09, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xB1, 0xDA, 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0xD9, 0x22, -0xF5, 0xF7, 0xA8, 0xF9, 0xAA, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x00, 0xFC, 0x0F, 0x00, -0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x70, 0xB5, 0x1A, 0x4D, 0x1A, 0x4E, 0xD5, 0xF8, -0x68, 0x32, 0x04, 0x46, 0x98, 0x47, 0x60, 0x7F, 0xD5, 0xF8, 0x5C, 0x31, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0x60, -0x98, 0x47, 0xE3, 0x8B, 0xE0, 0x62, 0x99, 0x04, 0x11, 0xD5, 0x63, 0x7F, 0x05, 0xFB, 0x03, 0x66, 0xD6, 0xF8, 0x4C, 0x31, -0xD3, 0xF8, 0x9C, 0x20, 0xA2, 0x62, 0x93, 0xF8, 0xA1, 0x30, 0x2B, 0xB1, 0x94, 0xF8, 0x36, 0x30, 0x43, 0xF0, 0x20, 0x03, -0x84, 0xF8, 0x36, 0x30, 0x70, 0xBD, 0x94, 0xF8, 0x36, 0x30, 0x03, 0xF0, 0x03, 0x02, 0x00, 0xEB, 0x82, 0x00, 0x42, 0x6A, -0x41, 0x69, 0xA1, 0x62, 0x52, 0x03, 0x44, 0xBF, 0x43, 0xF0, 0x20, 0x03, 0x84, 0xF8, 0x36, 0x30, 0x70, 0xBD, 0x00, 0xBF, -0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xF0, 0xB5, 0x83, 0xB0, 0xC3, 0x7E, 0x00, 0x93, 0x04, 0x46, 0xC3, 0x8B, -0x0F, 0x46, 0x16, 0x46, 0x16, 0x49, 0x02, 0x8C, 0x20, 0x20, 0xF4, 0xF7, 0x29, 0xFF, 0xE3, 0x8B, 0xD9, 0x07, 0x1E, 0xD5, -0x13, 0x48, 0xF4, 0xF7, 0xD3, 0xFE, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, -0x1A, 0x60, 0x10, 0x4D, 0x2B, 0x68, 0x3A, 0x46, 0x01, 0x33, 0x31, 0x46, 0x20, 0x46, 0x2B, 0x60, 0xDF, 0xF7, 0x4A, 0xFD, -0x2B, 0x68, 0x33, 0xB1, 0x09, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x03, 0xB0, -0xF0, 0xBD, 0xDF, 0xF7, 0x61, 0xF9, 0xE3, 0x8B, 0xDA, 0x07, 0xDB, 0xD4, 0xDD, 0xE7, 0x00, 0xBF, 0x3C, 0xC1, 0x15, 0x00, -0x58, 0xC1, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x02, 0x8B, 0x53, 0xBA, 0x9B, 0xB2, 0xB3, 0xF5, -0xC0, 0x6F, 0x10, 0xB5, 0x04, 0x46, 0x08, 0xD3, 0x4A, 0xF6, 0xAA, 0x23, 0x21, 0xF8, 0x08, 0x3D, 0x03, 0x20, 0x00, 0x23, -0xCA, 0x80, 0x48, 0x80, 0x8B, 0x80, 0x20, 0x46, 0x01, 0x22, 0xFF, 0xF7, 0xBB, 0xFE, 0x04, 0x4B, 0x01, 0x46, 0xD3, 0xF8, -0x20, 0x34, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0xC5, 0x8B, 0xDF, 0xF8, 0x7C, 0x82, 0x07, 0x7F, 0x4F, 0xF4, 0xA4, 0x6A, 0x0E, 0x46, 0x29, 0x07, 0x83, 0xB0, 0x04, 0x46, -0x0A, 0xFB, 0x07, 0x8A, 0x6B, 0xD4, 0x41, 0x7F, 0xDF, 0xF8, 0x64, 0xB2, 0x03, 0x8B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, -0x01, 0xB1, 0x5B, 0xBA, 0x88, 0x8E, 0x91, 0xF8, 0x30, 0x20, 0x9B, 0xB2, 0x98, 0x42, 0x0F, 0xD0, 0x02, 0x2A, 0x16, 0xD0, -0x8B, 0x49, 0x20, 0x20, 0xF4, 0xF7, 0xB4, 0xFE, 0x20, 0x46, 0x31, 0x46, 0x4F, 0xF0, 0x00, 0x42, 0xFF, 0xF7, 0x78, 0xFF, -0x00, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x3A, 0x25, 0xF4, 0x80, 0x75, 0x01, 0x2A, 0xE5, 0x83, 0x02, 0xD9, -0x91, 0xF8, 0x30, 0x20, 0xE8, 0xE7, 0xDF, 0xF8, 0x1C, 0x92, 0x20, 0x46, 0xD9, 0xF8, 0x2C, 0x34, 0x98, 0x47, 0x63, 0x7F, -0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0xBB, 0x9B, 0xF8, 0x30, 0x30, 0x02, 0x2B, 0x00, 0xF0, 0xA2, 0x80, 0x4F, 0xF4, -0xA4, 0x63, 0x03, 0xFB, 0x07, 0x87, 0x77, 0x4A, 0x3B, 0x6C, 0x77, 0x49, 0x1F, 0x79, 0x77, 0x4B, 0x00, 0x2F, 0x0C, 0xBF, -0x0F, 0x46, 0x17, 0x46, 0xE7, 0x62, 0x7D, 0x69, 0x93, 0xF8, 0xBD, 0x20, 0xC5, 0xF3, 0xC2, 0x28, 0xED, 0xB2, 0x00, 0x2A, -0x40, 0xF0, 0xB4, 0x80, 0xD9, 0xF8, 0x38, 0x33, 0x50, 0x46, 0x01, 0xAA, 0x0D, 0xF1, 0x03, 0x01, 0x98, 0x47, 0x05, 0xF0, -0x7C, 0x03, 0x58, 0xEA, 0x03, 0x03, 0x0C, 0xBF, 0x9D, 0xF8, 0x03, 0x30, 0x9D, 0xF8, 0x04, 0x30, 0x43, 0xEA, 0x03, 0x23, -0x7B, 0x62, 0xE3, 0x8B, 0xDB, 0x07, 0x4C, 0xD4, 0xA1, 0x6C, 0xD9, 0xF8, 0x1C, 0x34, 0xA8, 0x31, 0x20, 0x46, 0x98, 0x47, -0x45, 0xE0, 0x00, 0x23, 0xEA, 0x06, 0x01, 0x93, 0x5B, 0xD5, 0x5D, 0x4B, 0xE3, 0x62, 0x15, 0xF0, 0x80, 0x05, 0x7D, 0xD1, -0xA8, 0x46, 0xDF, 0xF8, 0x80, 0x91, 0x5B, 0x4F, 0xD9, 0xF8, 0x38, 0x33, 0x50, 0x46, 0x0D, 0xF1, 0x03, 0x02, 0x0D, 0xF1, -0x02, 0x01, 0x98, 0x47, 0xE2, 0x6A, 0x4F, 0xF0, 0x00, 0x0A, 0xA3, 0x68, 0x02, 0xEB, 0x8A, 0x00, 0x23, 0xF0, 0x60, 0x41, -0x13, 0xF0, 0x80, 0x4F, 0x41, 0xF0, 0x00, 0x51, 0x14, 0xBF, 0x41, 0x61, 0x43, 0x69, 0x97, 0xF8, 0xBD, 0x10, 0xC3, 0xF3, -0xC2, 0x20, 0x03, 0xF0, 0x7F, 0x03, 0x51, 0xBB, 0x08, 0xBB, 0x03, 0x2B, 0x02, 0xEB, 0x8A, 0x01, 0x1D, 0xD8, 0x9D, 0xF8, -0x02, 0x30, 0x43, 0xEA, 0x03, 0x23, 0x4B, 0x62, 0x0A, 0xF1, 0x01, 0x0A, 0xBA, 0xF1, 0x04, 0x0F, 0xDD, 0xD1, 0x00, 0x23, -0xC4, 0xE9, 0x09, 0x33, 0x01, 0x9A, 0x84, 0xF8, 0x32, 0x80, 0x84, 0xF8, 0x33, 0x50, 0x84, 0xF8, 0x42, 0x50, 0x84, 0xF8, -0x35, 0x20, 0xD9, 0xF8, 0x94, 0x33, 0x31, 0x46, 0x20, 0x46, 0x98, 0x47, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x9D, 0xF8, -0x03, 0x30, 0x02, 0xEB, 0x8A, 0x01, 0x43, 0xEA, 0x03, 0x23, 0x4B, 0x62, 0xDE, 0xE7, 0x19, 0x46, 0xD1, 0xF7, 0xF0, 0xFD, -0xE2, 0x6A, 0x02, 0xEB, 0x8A, 0x03, 0x40, 0xEA, 0x00, 0x20, 0x58, 0x62, 0xD4, 0xE7, 0x9A, 0xF8, 0xC0, 0x34, 0x00, 0x2B, -0x9F, 0xD1, 0xDA, 0xF8, 0x40, 0x20, 0x2D, 0x4B, 0x11, 0x79, 0x2B, 0x4A, 0x00, 0x29, 0x18, 0xBF, 0x13, 0x46, 0xC3, 0x62, -0x97, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x83, 0x93, 0xF8, 0x62, 0x20, 0x52, 0xB3, 0x02, 0x2A, 0x04, 0xD1, -0x9B, 0xF8, 0x70, 0x32, 0x00, 0x2B, 0x7F, 0xF4, 0x50, 0xAF, 0x24, 0x4B, 0x1B, 0x78, 0x1B, 0xB9, 0xD9, 0xF8, 0x1C, 0x30, -0x20, 0x46, 0x98, 0x47, 0x20, 0x46, 0xFF, 0xF7, 0x67, 0xFE, 0x6E, 0xE7, 0x00, 0x22, 0xC0, 0x21, 0x20, 0x46, 0x01, 0xF0, -0x1D, 0xFB, 0x01, 0x28, 0x1C, 0xD0, 0x02, 0x28, 0x15, 0xD0, 0xE3, 0x8B, 0x00, 0x25, 0x23, 0xF0, 0x80, 0x03, 0xE3, 0x83, -0xA8, 0x46, 0x72, 0xE7, 0x05, 0xF0, 0x7F, 0x01, 0x40, 0x46, 0xD1, 0xF7, 0xAD, 0xFD, 0x40, 0xEA, 0x00, 0x20, 0x78, 0x62, -0x55, 0xE7, 0x93, 0xF8, 0xAC, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x27, 0xAF, 0xD5, 0xE7, 0x12, 0x23, 0x00, 0x25, 0x01, 0x93, -0xA8, 0x46, 0x5E, 0xE7, 0x01, 0xA9, 0x20, 0x46, 0xFF, 0xF7, 0x46, 0xFB, 0xA3, 0x6C, 0x05, 0x46, 0x03, 0xF1, 0xA8, 0x01, -0x03, 0xF1, 0xA0, 0x00, 0x18, 0x22, 0x07, 0xF0, 0x75, 0xFA, 0xED, 0xB2, 0x4F, 0xF0, 0x18, 0x08, 0x4D, 0xE7, 0x00, 0xBF, -0x70, 0xC1, 0x15, 0x00, 0x84, 0x3C, 0x18, 0x00, 0xC4, 0x3C, 0x18, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xB8, 0x34, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x51, 0x4A, 0x43, 0x7F, -0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x03, 0x23, 0x86, 0xB0, 0xD3, 0xF8, 0xB4, 0x30, 0x1E, 0x68, 0x8E, 0xB1, 0x90, 0xF8, -0x35, 0x30, 0x04, 0x46, 0x6B, 0xB1, 0x90, 0xF8, 0x34, 0x30, 0x85, 0x6C, 0x96, 0xF8, 0x60, 0x20, 0xED, 0x1A, 0x01, 0x2A, -0x05, 0xF1, 0xA8, 0x05, 0x06, 0xD0, 0x03, 0x2A, 0x51, 0xD0, 0x00, 0x2A, 0x4F, 0xD0, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, -0x07, 0x8E, 0x42, 0x4A, 0x00, 0x91, 0x3B, 0x44, 0x06, 0xF1, 0x50, 0x01, 0xD2, 0xF8, 0x7C, 0x73, 0x2A, 0x46, 0xB8, 0x47, -0x3E, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x9A, 0x07, 0xED, 0xD5, 0x96, 0xF8, 0x60, 0x20, 0x01, 0x2A, 0x06, 0xF1, 0x64, 0x08, -0x3E, 0xD1, 0x23, 0x8E, 0x94, 0xF8, 0x34, 0x70, 0x0C, 0x33, 0x1F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, 0x4F, 0xF0, 0xFF, 0x33, -0x03, 0x22, 0x28, 0x46, 0xD6, 0xF7, 0xD8, 0xF8, 0xD6, 0xE9, 0x12, 0x03, 0x32, 0x49, 0x94, 0xF8, 0x1C, 0xC0, 0x88, 0x80, -0x31, 0x4A, 0x00, 0x0C, 0x4F, 0xF4, 0xA4, 0x6E, 0x40, 0xEA, 0x03, 0x40, 0x0E, 0xFB, 0x0C, 0x22, 0x08, 0x60, 0x02, 0xAB, -0x40, 0x46, 0xF2, 0xF7, 0x9F, 0xFA, 0x02, 0xA8, 0x10, 0x21, 0xF2, 0xF7, 0x5F, 0xFC, 0x96, 0xF8, 0x60, 0x20, 0xCA, 0xB1, -0x03, 0x2A, 0x17, 0xD0, 0x03, 0x20, 0xD6, 0xF7, 0xF1, 0xF8, 0x39, 0x46, 0x02, 0x46, 0x28, 0x46, 0xF2, 0xF7, 0x84, 0xFA, -0x39, 0x46, 0x28, 0x46, 0xF2, 0xF7, 0x7A, 0xFC, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x1D, 0x4B, 0x1B, 0x68, 0x1B, 0x78, -0x9B, 0x07, 0xAA, 0xD5, 0x06, 0xF1, 0x64, 0x08, 0x00, 0x27, 0xE4, 0xE7, 0x23, 0x8E, 0x94, 0xF8, 0x34, 0x70, 0x04, 0x33, -0x1F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, 0x28, 0x46, 0xD6, 0xF7, 0x97, 0xF8, 0x96, 0xF8, -0x60, 0x30, 0xB6, 0xF8, 0x48, 0x10, 0xB6, 0xF8, 0x4A, 0x20, 0xAD, 0xF8, 0x08, 0x10, 0x8D, 0xF8, 0x0A, 0x20, 0x41, 0x46, -0x4B, 0xB9, 0x05, 0x22, 0x0D, 0xF1, 0x0B, 0x00, 0x07, 0xF0, 0xCA, 0xF9, 0x02, 0xA8, 0x08, 0x21, 0xF2, 0xF7, 0x20, 0xFC, -0xC4, 0xE7, 0x0D, 0x22, 0x0D, 0xF1, 0x0B, 0x00, 0x07, 0xF0, 0xC0, 0xF9, 0x02, 0xA8, 0x10, 0x21, 0xF2, 0xF7, 0x16, 0xFC, -0xBA, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0xA0, 0x34, 0x17, 0x00, -0x74, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xC5, 0x6C, 0xC3, 0x8B, 0x2F, 0x69, 0x02, 0x8C, 0x2A, 0x81, 0x00, 0x26, -0x13, 0xF0, 0x08, 0x02, 0x2E, 0x61, 0x04, 0x46, 0x07, 0xF4, 0x00, 0x06, 0x88, 0x46, 0x07, 0xF0, 0x40, 0x47, 0x1C, 0xD0, -0x99, 0x06, 0x01, 0xD5, 0x00, 0x2E, 0x6C, 0xD0, 0x9A, 0x05, 0x3E, 0xD4, 0xB7, 0xF1, 0x40, 0x4F, 0x20, 0xD0, 0xE3, 0x7E, -0xFF, 0x2B, 0x22, 0xD1, 0x2B, 0x69, 0x62, 0x6A, 0x01, 0x20, 0x02, 0xF4, 0x00, 0x12, 0x16, 0xB1, 0x43, 0xF0, 0x08, 0x03, -0x2B, 0x61, 0x00, 0x2A, 0x47, 0xD0, 0x43, 0xF0, 0x01, 0x03, 0x28, 0x73, 0x2B, 0x61, 0xBD, 0xE8, 0xF0, 0x81, 0x9B, 0x05, -0xE6, 0xD5, 0x43, 0x7F, 0x2A, 0x49, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, 0xB7, 0xF1, 0x40, 0x4F, 0x83, 0xF8, -0x32, 0x20, 0xDE, 0xD1, 0x2B, 0x69, 0x43, 0xF0, 0x04, 0x03, 0x2B, 0x61, 0xDD, 0xE7, 0x31, 0x1E, 0x42, 0x46, 0x18, 0xBF, -0x01, 0x21, 0x20, 0x46, 0x01, 0xF0, 0x3A, 0xF8, 0x63, 0x6A, 0x13, 0xF4, 0x00, 0x12, 0x20, 0xD0, 0x03, 0xF4, 0x60, 0x13, -0xB3, 0xF5, 0x60, 0x1F, 0x01, 0xD0, 0x00, 0x23, 0x6B, 0x73, 0x2B, 0x69, 0x00, 0x2E, 0xD2, 0xD0, 0xCC, 0xE7, 0x19, 0x4B, -0x60, 0x7F, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x1A, 0xDB, 0x00, 0x23, 0x1A, 0x46, 0x17, 0x21, 0xE0, 0xF7, -0x0D, 0xFA, 0x12, 0x4A, 0x63, 0x7F, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x00, 0x22, 0x83, 0xF8, 0x32, 0x20, -0xAA, 0xE7, 0x2B, 0x69, 0x0E, 0xB1, 0x43, 0xF0, 0x08, 0x03, 0x01, 0x22, 0x43, 0xF0, 0x01, 0x03, 0x6A, 0x73, 0x28, 0x73, -0x2B, 0x61, 0xBD, 0xE8, 0xF0, 0x81, 0xFF, 0x28, 0xE2, 0xD1, 0x08, 0x48, 0x08, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0xF4, 0xF7, -0x89, 0xFE, 0x60, 0x7F, 0xDA, 0xE7, 0xFF, 0xF7, 0xC7, 0xF9, 0xE3, 0x8B, 0x8E, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, -0x38, 0x36, 0x17, 0x00, 0x84, 0xC1, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x70, 0xB5, 0x90, 0xF8, 0x33, 0x30, 0x82, 0xB0, -0x04, 0x46, 0x0D, 0x46, 0x16, 0x46, 0x7B, 0xB1, 0x90, 0xF8, 0x35, 0x20, 0x01, 0x92, 0x18, 0x46, 0x2B, 0x88, 0x2E, 0x44, -0x43, 0xF4, 0x80, 0x43, 0x31, 0x18, 0x2B, 0x80, 0x20, 0x46, 0x00, 0x22, 0xFF, 0xF7, 0x12, 0xFC, 0x02, 0xB0, 0x70, 0xBD, -0x01, 0xA9, 0xFF, 0xF7, 0xCD, 0xF9, 0x01, 0x9B, 0x84, 0xF8, 0x33, 0x00, 0x84, 0xF8, 0x35, 0x30, 0xEA, 0xE7, 0x00, 0xBF, -0x10, 0xB4, 0x0C, 0x88, 0x0B, 0x46, 0x44, 0xF4, 0x80, 0x44, 0x11, 0x44, 0x1C, 0x80, 0x00, 0x22, 0x5D, 0xF8, 0x04, 0x4B, -0xFF, 0xF7, 0xFA, 0xBB, 0xF0, 0xB5, 0x00, 0x22, 0x18, 0x4C, 0x85, 0xB0, 0x05, 0x46, 0x0F, 0x46, 0x02, 0xE0, 0x01, 0x32, -0x20, 0x2A, 0x26, 0xD0, 0xA5, 0x42, 0x96, 0xB2, 0x04, 0xF1, 0x18, 0x04, 0xF7, 0xD1, 0x12, 0x02, 0x02, 0xF4, 0x7F, 0x42, -0x42, 0xF0, 0x08, 0x00, 0xF2, 0xF7, 0xF6, 0xFF, 0x04, 0x28, 0x18, 0xD1, 0x17, 0xF4, 0x00, 0x03, 0x02, 0xD1, 0xEA, 0x7C, -0x02, 0x2A, 0x06, 0xD9, 0x28, 0x7B, 0x31, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0x00, 0xF0, 0x65, 0xBC, 0x08, 0x49, -0x01, 0x32, 0xEA, 0x74, 0x27, 0x22, 0xCD, 0xE9, 0x01, 0x21, 0x00, 0x93, 0x28, 0x7B, 0x02, 0x22, 0x29, 0x46, 0x00, 0xF0, -0xBB, 0xFC, 0x05, 0xB0, 0xF0, 0xBD, 0x00, 0xBF, 0xF4, 0xE4, 0x17, 0x00, 0xE5, 0xFE, 0x14, 0x00, 0x2D, 0xE9, 0xF0, 0x43, -0x10, 0x46, 0x85, 0xB0, 0x14, 0x46, 0x0F, 0x46, 0xF2, 0xF7, 0xCC, 0xFF, 0x03, 0x28, 0x09, 0xD0, 0x50, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x72, 0xDB, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x4C, 0x4E, 0x4F, 0xEA, -0x14, 0x28, 0x08, 0xEB, 0x48, 0x03, 0x06, 0xEB, 0xC3, 0x06, 0x96, 0xF8, 0x0D, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x39, 0xD0, -0xB9, 0xF1, 0x01, 0x0F, 0x29, 0xD1, 0xBB, 0x78, 0x00, 0x2B, 0x7C, 0xD1, 0x05, 0x46, 0x30, 0x46, 0x96, 0xF8, 0x0F, 0x90, -0x00, 0xF0, 0xA0, 0xFF, 0x41, 0x4B, 0x1B, 0x69, 0x73, 0x60, 0x05, 0x22, 0x2B, 0x46, 0x0C, 0x21, 0x41, 0xF2, 0x0B, 0x40, -0x3D, 0x78, 0x7F, 0x78, 0xF2, 0xF7, 0xFA, 0xFC, 0xA9, 0xF1, 0x04, 0x09, 0x4F, 0xFA, 0x89, 0xF9, 0x80, 0xF8, 0x02, 0x90, -0x05, 0x70, 0x47, 0x70, 0xF2, 0xF7, 0x20, 0xFD, 0x73, 0x89, 0x00, 0x2B, 0x39, 0xD1, 0x20, 0x46, 0x01, 0x21, 0xF2, 0xF7, -0xE3, 0xFE, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x2F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xBC, 0xDA, 0x2F, 0x49, 0x2F, 0x48, 0x40, 0xF2, 0x29, 0x12, 0xF4, 0xF7, 0xD3, 0xFD, 0xB5, 0xE7, 0xBA, 0x78, 0x33, 0x7C, -0x72, 0xBB, 0xB0, 0x7B, 0xF1, 0x7B, 0x02, 0x92, 0x9B, 0x00, 0x43, 0xEA, 0x40, 0x03, 0x43, 0xEA, 0x81, 0x13, 0xCD, 0xE9, -0x00, 0x32, 0x31, 0x46, 0x73, 0x7C, 0x30, 0x7B, 0x01, 0x22, 0x00, 0xF0, 0x47, 0xFC, 0x3B, 0x78, 0x7D, 0x78, 0x23, 0x4A, -0x1F, 0x48, 0x71, 0x89, 0x03, 0xEB, 0x83, 0x07, 0xC3, 0xEB, 0x07, 0x13, 0x2B, 0x44, 0x02, 0xEB, 0xC3, 0x03, 0x83, 0xF8, -0xA4, 0x81, 0x03, 0x69, 0x73, 0x60, 0x00, 0x29, 0xC5, 0xD0, 0x40, 0x46, 0x00, 0xF0, 0x9A, 0xFB, 0xC1, 0xE7, 0x17, 0x49, -0x17, 0x48, 0xC8, 0x22, 0xF4, 0xF7, 0xA4, 0xFD, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0xB1, 0x7B, 0xF2, 0x7B, -0xCD, 0xF8, 0x08, 0x90, 0x9B, 0x00, 0x43, 0xEA, 0x41, 0x03, 0x43, 0xEA, 0x82, 0x13, 0x25, 0x22, 0xCD, 0xE9, 0x00, 0x32, -0x31, 0x46, 0x30, 0x7B, 0x73, 0x7C, 0x01, 0x22, 0x00, 0xF0, 0x16, 0xFC, 0x49, 0x46, 0x20, 0x46, 0xF2, 0xF7, 0x8A, 0xFE, -0x6C, 0xE7, 0x40, 0x46, 0x00, 0xF0, 0xF8, 0xFA, 0x20, 0x46, 0x00, 0x21, 0xF2, 0xF7, 0x82, 0xFE, 0x64, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, -0x68, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x8B, 0x78, 0x02, 0x2B, 0x01, 0xD0, 0x00, 0x20, 0xF8, 0xBD, 0x02, 0xF4, 0x7F, 0x40, -0x40, 0xF0, 0x08, 0x00, 0x0C, 0x46, 0x15, 0x0A, 0xF2, 0xF7, 0x0E, 0xFF, 0x04, 0x28, 0xF3, 0xD1, 0x11, 0x4E, 0x05, 0xEB, -0x45, 0x03, 0x06, 0xEB, 0xC3, 0x06, 0x73, 0x7B, 0x01, 0x2B, 0x04, 0xD0, 0x0E, 0x4B, 0x28, 0x46, 0x9B, 0x6A, 0x98, 0x47, -0xE6, 0xE7, 0x70, 0x69, 0x00, 0xF0, 0x1E, 0xFF, 0xF3, 0x7B, 0x67, 0x78, 0x26, 0x78, 0xC3, 0xF1, 0x04, 0x03, 0x1C, 0x18, -0x05, 0x22, 0x03, 0x23, 0x0C, 0x21, 0x41, 0xF2, 0x0B, 0x40, 0xF2, 0xF7, 0x4D, 0xFC, 0x64, 0xB2, 0x84, 0x70, 0x06, 0x70, -0x47, 0x70, 0xF2, 0xF7, 0x77, 0xFC, 0xE3, 0xE7, 0xF4, 0xE4, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0xB7, 0x4F, 0xCE, 0x79, 0xB7, 0x4A, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x06, 0x75, 0x0C, 0x46, 0x95, 0xF8, 0x22, 0x30, -0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x85, 0xB0, 0x93, 0xF8, 0x64, 0x30, 0x1B, 0xB9, 0x00, 0x20, 0x05, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0x06, 0x20, 0x94, 0xF8, 0x0D, 0x80, 0xF2, 0xF7, 0xC7, 0xFE, 0x09, 0x28, 0x04, 0xF1, 0x0C, 0x09, -0xF2, 0xD0, 0xB8, 0xF1, 0x01, 0x0F, 0x5B, 0xD0, 0xB8, 0xF1, 0x02, 0x0F, 0x1B, 0xD0, 0xB8, 0xF1, 0x00, 0x0F, 0xE9, 0xD1, -0xB9, 0xF8, 0x03, 0x80, 0x99, 0xF8, 0x02, 0xB0, 0xC8, 0xF3, 0x83, 0x0A, 0xBA, 0xF1, 0x08, 0x0F, 0x04, 0xD8, 0xA1, 0x4B, -0x1B, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x87, 0x80, 0x25, 0x23, 0x00, 0x21, 0xCD, 0xE9, 0x00, 0x83, 0x30, 0x46, 0x5B, 0x46, -0x02, 0x91, 0x01, 0x22, 0x00, 0xF0, 0x82, 0xFB, 0xD0, 0xE7, 0xB9, 0xF8, 0x02, 0x10, 0xB1, 0xF5, 0x10, 0x4F, 0x4F, 0xEA, -0x11, 0x35, 0xC9, 0xD2, 0xE3, 0x79, 0xFF, 0x2B, 0xC6, 0xD0, 0x09, 0x05, 0x2A, 0x46, 0x40, 0xF1, 0xBA, 0x80, 0x93, 0x49, -0x4F, 0xF4, 0x00, 0x60, 0xF4, 0xF7, 0xA4, 0xFA, 0xE3, 0x79, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x2B, 0x44, -0x07, 0xEB, 0xC3, 0x07, 0x97, 0xF8, 0xA4, 0x51, 0x21, 0x2D, 0xB1, 0xD0, 0x2E, 0x02, 0x46, 0xF0, 0x08, 0x06, 0x30, 0x46, -0xF2, 0xF7, 0x7C, 0xFE, 0x04, 0x28, 0xA9, 0xD0, 0x31, 0x46, 0x42, 0xF2, 0x01, 0x00, 0xF2, 0xF7, 0xE1, 0xFA, 0x30, 0x46, -0xF2, 0xF7, 0x72, 0xFE, 0x01, 0x28, 0x00, 0xF0, 0xD2, 0x80, 0x30, 0x46, 0xF2, 0xF7, 0x6C, 0xFE, 0x03, 0x28, 0x00, 0xF0, -0xCC, 0x80, 0x7F, 0x4B, 0x28, 0x46, 0x9B, 0x6A, 0x98, 0x47, 0x93, 0xE7, 0xB9, 0xF8, 0x05, 0x50, 0xC5, 0xF3, 0x83, 0x06, -0x08, 0x2E, 0x8D, 0xD8, 0xE3, 0x79, 0x7A, 0x49, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x33, 0x44, 0x07, 0xEB, -0xC3, 0x07, 0x32, 0x46, 0x97, 0xF8, 0xA5, 0x71, 0x4F, 0xF4, 0x00, 0x60, 0x3B, 0x46, 0xF4, 0xF7, 0x63, 0xFA, 0x21, 0x2F, -0x3F, 0xF4, 0x7A, 0xAF, 0x4F, 0xEA, 0x07, 0x28, 0x48, 0xF0, 0x08, 0x08, 0x40, 0x46, 0xF2, 0xF7, 0x43, 0xFE, 0x02, 0x28, -0x7F, 0xF4, 0x70, 0xAF, 0x41, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0xF2, 0xF7, 0xA7, 0xFA, 0x6A, 0x4A, 0x99, 0xF8, 0x02, 0x10, -0x07, 0xEB, 0x47, 0x03, 0x02, 0xEB, 0xC3, 0x03, 0x58, 0x7C, 0x88, 0x42, 0x03, 0xD1, 0x1B, 0x7C, 0xB3, 0x42, 0x00, 0xF0, -0x9B, 0x80, 0x38, 0x46, 0x00, 0xF0, 0xF4, 0xF9, 0x40, 0x46, 0x00, 0x21, 0xF2, 0xF7, 0x7E, 0xFD, 0x54, 0xE7, 0x60, 0x49, -0x4F, 0xF4, 0x00, 0x60, 0x52, 0x46, 0xF4, 0xF7, 0x35, 0xFA, 0x51, 0x46, 0x30, 0x46, 0xE8, 0xF7, 0x85, 0xF9, 0x00, 0x28, -0x4F, 0xD1, 0x95, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x3F, 0xF4, 0x68, 0xAF, 0x00, 0xF0, 0x04, 0xFA, 0x21, 0x28, 0x04, 0x46, -0x3F, 0xF4, 0x62, 0xAF, 0x53, 0x4D, 0x55, 0x4A, 0x00, 0xEB, 0x40, 0x01, 0x05, 0xEB, 0xC1, 0x03, 0xC8, 0xF3, 0x40, 0x00, -0x12, 0x68, 0x83, 0xF8, 0x10, 0xA0, 0x00, 0x27, 0x1E, 0x73, 0x83, 0xF8, 0x11, 0xB0, 0x98, 0x73, 0x5F, 0x73, 0x90, 0x6B, -0xB9, 0xF8, 0x05, 0x20, 0x5A, 0x81, 0x4F, 0xEA, 0x98, 0x18, 0x80, 0x45, 0x28, 0xBF, 0x80, 0x46, 0x83, 0xF8, 0x0F, 0x80, -0xB9, 0xF8, 0x07, 0x00, 0xC9, 0x00, 0x00, 0x09, 0x92, 0xB2, 0x6F, 0x50, 0x18, 0x81, 0x1A, 0xB9, 0x44, 0x4A, 0x12, 0x68, -0x52, 0x88, 0x5A, 0x81, 0x30, 0x46, 0x21, 0x46, 0x00, 0xF0, 0x3C, 0xFA, 0x20, 0x02, 0x00, 0xF4, 0x7F, 0x40, 0x40, 0xF0, -0x08, 0x00, 0x03, 0x21, 0xF2, 0xF7, 0x32, 0xFD, 0x08, 0xE7, 0x3D, 0x49, 0x4F, 0xF4, 0x00, 0x60, 0xF4, 0xF7, 0xEA, 0xF9, -0xE3, 0x79, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x2B, 0x44, 0x07, 0xEB, 0xC3, 0x07, 0x97, 0xF8, 0xA5, 0x51, -0x44, 0xE7, 0x06, 0xEB, 0x86, 0x03, 0xC6, 0xEB, 0x03, 0x13, 0x53, 0x44, 0x07, 0xEB, 0xC3, 0x07, 0x97, 0xF8, 0xA4, 0x71, -0x3D, 0x02, 0x45, 0xF0, 0x08, 0x05, 0x28, 0x46, 0xF2, 0xF7, 0xBA, 0xFD, 0x01, 0x28, 0x7F, 0xF4, 0x0B, 0xAF, 0x2A, 0x4B, -0x27, 0x4A, 0x1B, 0x68, 0x07, 0xEB, 0x47, 0x01, 0x02, 0xEB, 0xC1, 0x02, 0x99, 0x6B, 0xD2, 0x7B, 0x4F, 0xEA, 0x98, 0x13, -0x8B, 0x42, 0x28, 0xBF, 0x0B, 0x46, 0x9A, 0x42, 0x12, 0xD0, 0x28, 0x46, 0x04, 0x21, 0xF2, 0xF7, 0xFB, 0xFC, 0xE0, 0x79, -0x39, 0x46, 0x00, 0xF0, 0x1D, 0xFA, 0x25, 0x23, 0xF1, 0xE6, 0x30, 0x46, 0x04, 0x21, 0xF2, 0xF7, 0xF1, 0xFC, 0xE0, 0x79, -0x29, 0x46, 0x00, 0xF0, 0x13, 0xFA, 0xC3, 0xE6, 0x00, 0x23, 0xE6, 0xE6, 0xB9, 0xF8, 0x03, 0x30, 0x00, 0x2B, 0x7F, 0xF4, -0x60, 0xAF, 0x18, 0x23, 0x03, 0xFB, 0x07, 0x23, 0xA9, 0x09, 0xDB, 0x7B, 0xB3, 0xEB, 0x95, 0x1F, 0x03, 0xD9, 0x18, 0x23, -0x03, 0xFB, 0x07, 0x23, 0xD9, 0x73, 0x18, 0x23, 0x03, 0xFB, 0x07, 0x22, 0x05, 0xF0, 0x01, 0x05, 0x95, 0x74, 0xE0, 0x79, -0x39, 0x46, 0x00, 0xF0, 0xD1, 0xF9, 0x40, 0x46, 0x03, 0x21, 0xF2, 0xF7, 0xCB, 0xFC, 0xA1, 0xE6, 0x68, 0x65, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0xB9, 0x34, 0x17, 0x00, 0xE4, 0xC1, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC0, 0xC1, 0x15, 0x00, -0xF4, 0xE4, 0x17, 0x00, 0xA4, 0xC1, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x08, 0xC2, 0x15, 0x00, -0x10, 0xB5, 0x10, 0x46, 0x14, 0x46, 0xF2, 0xF7, 0x57, 0xFD, 0x02, 0x28, 0x01, 0xD0, 0x00, 0x20, 0x10, 0xBD, 0x20, 0x0A, -0x00, 0xF0, 0x1A, 0xF9, 0x20, 0x46, 0x00, 0x21, 0xF2, 0xF7, 0xA4, 0xFC, 0x00, 0x20, 0x10, 0xBD, 0x70, 0xB5, 0x10, 0x46, -0x84, 0xB0, 0x14, 0x46, 0xF2, 0xF7, 0x44, 0xFD, 0x01, 0x28, 0x02, 0xD0, 0x00, 0x20, 0x04, 0xB0, 0x70, 0xBD, 0x20, 0x0A, -0x13, 0x4A, 0x00, 0xEB, 0x40, 0x05, 0x52, 0xF8, 0x35, 0x60, 0x02, 0xEB, 0xC5, 0x05, 0x3E, 0xB9, 0x10, 0x4B, 0x6A, 0x68, -0x19, 0x69, 0x6B, 0x89, 0x52, 0x1A, 0x12, 0xEB, 0x83, 0x23, 0x04, 0xD4, 0x00, 0xF0, 0x74, 0xF9, 0x00, 0x20, 0x04, 0xB0, -0x70, 0xBD, 0x20, 0x46, 0x04, 0x21, 0x2C, 0x7B, 0xF2, 0xF7, 0x7C, 0xFC, 0x08, 0x4B, 0x02, 0x93, 0x27, 0x22, 0x01, 0x92, -0x00, 0x96, 0x20, 0x46, 0x33, 0x46, 0x29, 0x46, 0x02, 0x22, 0xEE, 0x74, 0x00, 0xF0, 0xF8, 0xF9, 0xD4, 0xE7, 0x00, 0xBF, -0xF4, 0xE4, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0xE5, 0xFE, 0x14, 0x00, 0x90, 0xF8, 0x46, 0x30, 0x90, 0xF8, 0x47, 0x20, -0x19, 0x44, 0xB1, 0xFB, 0xF2, 0xF0, 0x02, 0xFB, 0x10, 0x10, 0x70, 0x47, 0x90, 0xF8, 0x46, 0x30, 0x90, 0xF8, 0x48, 0x00, -0x19, 0x44, 0x08, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x03, 0x4B, 0x1B, 0x69, 0xA0, 0xEB, 0x93, 0x20, 0xC0, 0xF3, 0xC0, 0x30, -0x70, 0x47, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, 0x70, 0xB5, 0x90, 0xF8, 0x46, 0x30, 0x03, 0x44, 0x9A, 0x79, 0x02, 0x2A, -0x17, 0xD1, 0x00, 0x26, 0x04, 0x46, 0x35, 0x46, 0x9D, 0x71, 0xA3, 0x88, 0x22, 0x68, 0x01, 0x33, 0xC3, 0xF3, 0x0B, 0x03, -0xA3, 0x80, 0x01, 0x21, 0x20, 0x46, 0x90, 0x47, 0x54, 0xFA, 0x80, 0xF3, 0x84, 0xF8, 0x46, 0x00, 0x9A, 0x79, 0x01, 0x36, -0x02, 0x2A, 0x76, 0xB2, 0xEC, 0xD0, 0x30, 0x46, 0x70, 0xBD, 0x00, 0x26, 0x30, 0x46, 0x70, 0xBD, 0x38, 0xB5, 0x85, 0x88, -0x03, 0x68, 0x49, 0x1B, 0xC1, 0xF3, 0x0B, 0x01, 0x04, 0x46, 0x15, 0x46, 0x98, 0x47, 0x20, 0x44, 0x85, 0x71, 0x38, 0xBD, -0xF8, 0xB5, 0x05, 0x46, 0x33, 0x48, 0x6F, 0x6A, 0x01, 0xEB, 0x41, 0x01, 0x00, 0xEB, 0xC1, 0x00, 0xBF, 0x02, 0x44, 0x69, -0x03, 0xD5, 0x11, 0x46, 0x4B, 0xB3, 0x00, 0x2A, 0x49, 0xD0, 0xA2, 0x88, 0x29, 0x8C, 0x23, 0x68, 0x89, 0x1A, 0xC1, 0xF3, -0x0B, 0x01, 0x20, 0x46, 0x98, 0x47, 0x20, 0x44, 0x02, 0x23, 0x83, 0x71, 0x94, 0xF8, 0x46, 0x30, 0x23, 0x44, 0x00, 0x26, -0x9A, 0x79, 0x02, 0x2A, 0x13, 0xD1, 0x35, 0x46, 0x9D, 0x71, 0xA3, 0x88, 0x22, 0x68, 0x01, 0x33, 0xC3, 0xF3, 0x0B, 0x03, -0xA3, 0x80, 0x01, 0x21, 0x20, 0x46, 0x90, 0x47, 0x54, 0xFA, 0x80, 0xF3, 0x84, 0xF8, 0x46, 0x00, 0x9A, 0x79, 0x01, 0x36, -0x02, 0x2A, 0x76, 0xB2, 0xEC, 0xD0, 0x30, 0x46, 0xF8, 0xBD, 0x00, 0x2A, 0xD5, 0xD1, 0x19, 0x4B, 0xB5, 0xF8, 0x40, 0x00, -0x1B, 0x69, 0xA0, 0xEB, 0x93, 0x23, 0x1B, 0x04, 0xCD, 0xD4, 0xEA, 0x8B, 0xEB, 0x6C, 0x6F, 0xEA, 0x42, 0x42, 0x1C, 0x69, -0x6F, 0xEA, 0x52, 0x42, 0xEA, 0x83, 0x44, 0xF0, 0x02, 0x04, 0x6A, 0x8F, 0x0E, 0x46, 0x29, 0x8F, 0x19, 0x80, 0x1C, 0x61, -0xE9, 0x8F, 0xAC, 0x8F, 0x5A, 0x80, 0x2A, 0x8C, 0x1A, 0x81, 0x9C, 0x80, 0xD9, 0x80, 0x58, 0x81, 0xDB, 0xE7, 0x09, 0x48, -0xB5, 0xF8, 0x40, 0x20, 0x03, 0x69, 0xA2, 0xEB, 0x93, 0x23, 0x1E, 0x04, 0xAD, 0xD4, 0x03, 0x69, 0x05, 0x48, 0xA2, 0xEB, -0x93, 0x22, 0xC2, 0xF3, 0xC0, 0x32, 0xF4, 0xF7, 0x23, 0xF8, 0xA4, 0xE7, 0xF4, 0xE4, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, -0x34, 0xC2, 0x15, 0x00, 0xF8, 0xB5, 0x0D, 0x4D, 0x0D, 0x4E, 0xFF, 0x27, 0x2F, 0x73, 0x00, 0x24, 0x08, 0xE0, 0x0F, 0x2C, -0x85, 0xF8, 0x24, 0x70, 0x03, 0xDD, 0x4C, 0x23, 0x03, 0xFB, 0x04, 0x63, 0xEB, 0x62, 0x18, 0x35, 0x20, 0x02, 0x00, 0xF4, -0x7F, 0x40, 0x40, 0xF0, 0x08, 0x00, 0x01, 0x34, 0x00, 0x21, 0xF2, 0xF7, 0x95, 0xFB, 0x20, 0x2C, 0xEB, 0xD1, 0xF8, 0xBD, -0xF4, 0xE4, 0x17, 0x00, 0x74, 0xDB, 0x17, 0x00, 0x11, 0x4B, 0x00, 0xEB, 0x40, 0x00, 0x03, 0xEB, 0xC0, 0x00, 0x42, 0x7B, -0x03, 0x7B, 0x01, 0x7C, 0x72, 0xB1, 0x01, 0x2A, 0x0B, 0xD1, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x0B, 0x4A, -0x0B, 0x44, 0x02, 0xEB, 0xC3, 0x03, 0x21, 0x22, 0x83, 0xF8, 0xA5, 0x21, 0x70, 0x47, 0x70, 0x47, 0x03, 0xEB, 0x83, 0x02, -0xC3, 0xEB, 0x02, 0x13, 0x04, 0x4A, 0x0B, 0x44, 0x02, 0xEB, 0xC3, 0x03, 0x21, 0x22, 0x83, 0xF8, 0xA4, 0x21, 0x70, 0x47, -0xF4, 0xE4, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x00, 0x28, 0x09, 0x4B, 0x14, 0xBF, 0x10, 0x20, 0x00, 0x20, 0x03, 0xEB, -0x40, 0x03, 0x14, 0xBF, 0x20, 0x21, 0x10, 0x21, 0x33, 0xF8, 0x02, 0x2F, 0x22, 0xB1, 0x01, 0x30, 0x88, 0x42, 0xF9, 0xDB, -0x21, 0x20, 0x70, 0x47, 0x80, 0xB2, 0x70, 0x47, 0xF2, 0xDF, 0x17, 0x00, 0x38, 0xB5, 0x05, 0x02, 0x45, 0xF0, 0x08, 0x05, -0x04, 0x46, 0x29, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0xF2, 0xF7, 0x5A, 0xF8, 0x29, 0x46, 0x42, 0xF2, 0x01, 0x00, 0xF2, 0xF7, -0x55, 0xF8, 0x16, 0x48, 0x04, 0xEB, 0x44, 0x04, 0x00, 0xEB, 0xC4, 0x04, 0x62, 0x7B, 0x23, 0x7B, 0x21, 0x7C, 0x92, 0xB1, -0x01, 0x2A, 0x0A, 0xD1, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x0F, 0x4A, 0x0B, 0x44, 0x02, 0xEB, 0xC3, 0x03, -0x21, 0x22, 0x83, 0xF8, 0xA5, 0x21, 0x28, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0x38, 0x40, 0xF2, 0xF7, 0x25, 0xBB, 0x03, 0xEB, -0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x07, 0x4A, 0x0B, 0x44, 0x02, 0xEB, 0xC3, 0x03, 0x21, 0x22, 0x83, 0xF8, 0xA4, 0x21, -0x28, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0x38, 0x40, 0xF2, 0xF7, 0x14, 0xBB, 0xF4, 0xE4, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x07, 0x4B, 0x00, 0xEB, 0x40, 0x02, 0x03, 0xEB, 0xC2, 0x03, 0x00, 0x02, 0x5A, 0x89, 0x00, 0xF4, 0x7F, 0x41, 0x41, 0xF0, -0x08, 0x01, 0x92, 0x02, 0x42, 0xF2, 0x01, 0x00, 0xF1, 0xF7, 0x64, 0xBF, 0xF4, 0xE4, 0x17, 0x00, 0x0A, 0x02, 0x02, 0xF4, -0x7F, 0x42, 0x38, 0xB5, 0x42, 0xF0, 0x08, 0x02, 0x05, 0x46, 0x0C, 0x46, 0x06, 0x23, 0x00, 0x21, 0x28, 0x20, 0xF2, 0xF7, -0xF7, 0xF8, 0x0A, 0x49, 0x04, 0xEB, 0x44, 0x04, 0x01, 0xEB, 0xC4, 0x04, 0x62, 0x7B, 0x45, 0x70, 0x01, 0x3A, 0x18, 0xBF, -0x01, 0x22, 0x02, 0x70, 0x22, 0x7C, 0x82, 0x70, 0xE2, 0x7B, 0xC2, 0x70, 0x22, 0x89, 0x82, 0x80, 0xBD, 0xE8, 0x38, 0x40, -0xF2, 0xF7, 0x12, 0xB9, 0xF4, 0xE4, 0x17, 0x00, 0xF8, 0xB5, 0x0D, 0x02, 0x45, 0xF0, 0x08, 0x05, 0xAD, 0xB2, 0x03, 0x23, -0x0C, 0x46, 0x07, 0x46, 0x2A, 0x46, 0x00, 0x21, 0x2A, 0x20, 0xF2, 0xF7, 0xD3, 0xF8, 0x12, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0x06, 0x46, 0x11, 0xDB, 0x0F, 0x49, 0x04, 0xEB, 0x44, 0x04, 0x01, 0xEB, 0xC4, 0x04, 0x30, 0x46, -0x63, 0x7B, 0x77, 0x70, 0x01, 0x3B, 0x18, 0xBF, 0x01, 0x23, 0x33, 0x70, 0x23, 0x7C, 0xB3, 0x70, 0xBD, 0xE8, 0xF8, 0x40, -0xF2, 0xF7, 0xEA, 0xB8, 0x28, 0x46, 0xF2, 0xF7, 0x59, 0xFB, 0x04, 0x28, 0xE8, 0xD0, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF2, -0x05, 0x22, 0xF4, 0xF7, 0x91, 0xF9, 0xE1, 0xE7, 0x38, 0x36, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x60, 0xC2, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x10, 0x4E, 0x11, 0x4D, 0x80, 0x46, 0x87, 0xB2, 0x00, 0x24, 0x36, 0xF8, -0x02, 0x3F, 0x8B, 0xB1, 0x2B, 0x7B, 0x43, 0x45, 0x0E, 0xD1, 0x1F, 0xFA, 0x84, 0xF9, 0x4F, 0xEA, 0x09, 0x23, 0x03, 0xF4, -0x7F, 0x43, 0x43, 0xF0, 0x08, 0x00, 0x04, 0x21, 0xF2, 0xF7, 0x88, 0xFA, 0x49, 0x46, 0x38, 0x46, 0xFF, 0xF7, 0xAA, 0xFF, -0x01, 0x34, 0x20, 0x2C, 0x05, 0xF1, 0x18, 0x05, 0xE5, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0xF2, 0xDF, 0x17, 0x00, -0xF4, 0xE4, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x8B, 0xB0, 0xDF, 0xF8, 0x50, 0x92, 0xBD, 0xF8, 0x50, 0x40, 0x09, 0x94, -0xBD, 0xF8, 0x54, 0x40, 0x07, 0x94, 0x16, 0x9C, 0x04, 0x94, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x00, 0x94, 0x87, 0x4F, -0x94, 0xF8, 0x22, 0x80, 0xDF, 0xF8, 0x30, 0xA2, 0x03, 0x91, 0x06, 0x46, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x08, 0x70, -0x93, 0x46, 0x00, 0x6C, 0x08, 0x93, 0x00, 0x28, 0x00, 0xF0, 0xC4, 0x80, 0xDA, 0xF8, 0x00, 0x30, 0x02, 0x79, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9B, 0x80, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x73, 0x4F, 0xF4, 0xC0, 0x71, -0x93, 0xF8, 0xC0, 0x34, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xDF, 0xF7, 0x14, 0xFB, 0x04, 0x46, 0x00, 0x28, -0x00, 0xF0, 0x9B, 0x80, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x08, 0xF5, 0x78, 0x19, 0x21, 0x46, 0x05, 0x90, 0xF1, 0xF7, -0x05, 0xFC, 0x4F, 0xF4, 0x1E, 0x72, 0xA3, 0x6C, 0x02, 0xFB, 0x06, 0xF2, 0x00, 0x21, 0x26, 0x32, 0x6F, 0xF0, 0x2F, 0x0C, -0x83, 0xF8, 0x68, 0xC0, 0x83, 0xF8, 0x69, 0x10, 0x83, 0xF8, 0x6A, 0x10, 0x83, 0xF8, 0x6B, 0x10, 0x39, 0xF8, 0x02, 0x10, -0xA3, 0xF8, 0x6C, 0x10, 0x09, 0xEB, 0x02, 0x01, 0x5C, 0x35, 0xB1, 0xF8, 0x02, 0xC0, 0xA3, 0xF8, 0x6E, 0xC0, 0xB1, 0xF8, -0x04, 0xC0, 0xA3, 0xF8, 0x70, 0xC0, 0x37, 0xF8, 0x05, 0xC0, 0xA3, 0xF8, 0x72, 0xC0, 0x07, 0xEB, 0x05, 0x0C, 0x03, 0xF1, -0x68, 0x00, 0xBC, 0xF8, 0x02, 0xE0, 0xA3, 0xF8, 0x74, 0xE0, 0xBC, 0xF8, 0x04, 0xE0, 0x06, 0x90, 0x05, 0x98, 0xA3, 0xF8, -0x76, 0xE0, 0x90, 0xF8, 0x62, 0x00, 0x02, 0x28, 0x5E, 0xD0, 0x39, 0xF8, 0x02, 0x20, 0xA3, 0xF8, 0x78, 0x20, 0x4A, 0x88, -0xA3, 0xF8, 0x7A, 0x20, 0x8A, 0x88, 0xA3, 0xF8, 0x7C, 0x20, 0x4E, 0x49, 0xB1, 0xF8, 0xFC, 0x21, 0x01, 0x32, 0x92, 0xB2, -0xA1, 0xF8, 0xFC, 0x21, 0x10, 0x01, 0x00, 0x21, 0xA3, 0xF8, 0x7E, 0x00, 0x03, 0x22, 0x84, 0xF8, 0x33, 0x10, 0x84, 0xF8, -0x35, 0x10, 0x84, 0xF8, 0x1C, 0x80, 0x66, 0x77, 0xD0, 0x21, 0x20, 0x46, 0x00, 0xF0, 0xE6, 0xFB, 0x01, 0x28, 0x70, 0xD0, -0x18, 0x25, 0xBB, 0xF1, 0x01, 0x0F, 0x4A, 0xD0, 0xBB, 0xF1, 0x02, 0x0F, 0x54, 0xD0, 0xBB, 0xF1, 0x00, 0x0F, 0x5C, 0xD0, -0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x69, 0xDB, 0x03, 0x26, 0xE1, 0x6C, 0x94, 0xF8, 0x35, 0x30, -0x4A, 0x6A, 0x1D, 0x44, 0x01, 0x3A, 0x04, 0x9B, 0x2A, 0x44, 0x04, 0x35, 0xC1, 0xE9, 0x0A, 0x25, 0x13, 0xB1, 0x63, 0x65, -0x03, 0x9B, 0xA3, 0x65, 0x31, 0x46, 0x20, 0x46, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xDF, 0xF7, 0x97, 0xBA, 0x02, 0x2A, -0x7F, 0xF4, 0x62, 0xAF, 0x2D, 0x49, 0x2E, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0xF4, 0xF7, 0x92, 0xF8, 0x01, 0x20, 0x4F, 0xF4, -0xC0, 0x71, 0xDF, 0xF7, 0x79, 0xFA, 0x04, 0x46, 0x00, 0x28, 0x7F, 0xF4, 0x65, 0xAF, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x7A, 0x5B, 0xA3, 0xF8, 0x78, 0x20, 0xBC, 0xF8, 0x02, 0x20, 0xA3, 0xF8, 0x7A, 0x20, 0xBC, 0xF8, 0x04, 0x20, 0xA3, 0xF8, -0x7C, 0x20, 0x9E, 0xE7, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE1, 0xDA, 0xDA, 0xE7, 0x06, 0x99, -0x07, 0x9B, 0x00, 0x93, 0x29, 0x44, 0x08, 0x46, 0xDD, 0xE9, 0x08, 0x32, 0x03, 0x99, 0xF5, 0xF7, 0x4D, 0xFA, 0x03, 0x26, -0x05, 0x44, 0xB4, 0xE7, 0xDD, 0xE9, 0x06, 0x02, 0x03, 0x99, 0x15, 0x4E, 0x0B, 0x7C, 0x28, 0x44, 0xF6, 0x5C, 0xF5, 0xF7, -0x5D, 0xFA, 0x05, 0x44, 0xA9, 0xE7, 0x03, 0x99, 0x06, 0x98, 0x10, 0x4A, 0x0B, 0x7C, 0x28, 0x44, 0xD6, 0x5C, 0xF5, 0xF7, -0x1B, 0xFA, 0x05, 0x44, 0x9F, 0xE7, 0x06, 0x99, 0x18, 0x22, 0x20, 0x46, 0xFF, 0xF7, 0xD2, 0xF9, 0x94, 0xF8, 0x33, 0x50, -0x18, 0x35, 0x86, 0xE7, 0x05, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x6E, 0x22, 0xF4, 0xF7, 0x5A, 0xF8, 0x03, 0x26, 0x8E, 0xE7, -0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0xC0, 0xB2, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x35, 0x4B, 0x87, 0xB0, -0x81, 0x46, 0x8A, 0x46, 0x93, 0x46, 0x10, 0x24, 0x33, 0xF8, 0x02, 0x5F, 0x35, 0xB1, 0x01, 0x34, 0x20, 0x2C, 0xF9, 0xD1, -0x03, 0x20, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x2E, 0x4A, 0xDF, 0xF8, 0xCC, 0x80, 0x04, 0xEB, 0x44, 0x03, 0x02, 0xEB, -0xC3, 0x06, 0xDB, 0x00, 0x86, 0xF8, 0x0C, 0x90, 0x86, 0xF8, 0x10, 0xA0, 0x05, 0x93, 0x06, 0xF0, 0xBB, 0xFB, 0x28, 0x49, -0x70, 0x74, 0x09, 0x68, 0x27, 0x48, 0xB1, 0xF8, 0x02, 0xC0, 0x10, 0xF8, 0x0A, 0x00, 0x05, 0x9B, 0x25, 0x49, 0x22, 0x4A, -0x02, 0x95, 0x09, 0xEB, 0x89, 0x07, 0xC9, 0xEB, 0x07, 0x17, 0x57, 0x44, 0x00, 0x95, 0x34, 0x37, 0x51, 0xF8, 0x20, 0xE0, -0xD5, 0x50, 0x08, 0xEB, 0xC7, 0x00, 0x27, 0x23, 0x01, 0x93, 0xA6, 0xF8, 0x0A, 0xC0, 0x4F, 0xF0, 0x01, 0x0C, 0x86, 0xF8, -0x0F, 0xE0, 0x86, 0xF8, 0x0E, 0xC0, 0x86, 0xF8, 0x0D, 0xC0, 0x31, 0x46, 0x2B, 0x46, 0x44, 0x71, 0xA6, 0xF8, 0x08, 0xB0, -0x48, 0x46, 0x02, 0x22, 0xFF, 0xF7, 0x82, 0xFE, 0x24, 0x02, 0x31, 0x46, 0x48, 0x46, 0x2B, 0x46, 0x2A, 0x46, 0xCD, 0xE9, -0x01, 0x55, 0x00, 0x95, 0xFF, 0xF7, 0x78, 0xFE, 0x44, 0xF0, 0x08, 0x04, 0x0E, 0x4B, 0xA4, 0xB2, 0x1B, 0x69, 0x48, 0xF8, -0x37, 0x30, 0x21, 0x46, 0x4F, 0xF4, 0xFA, 0x22, 0x4F, 0xF4, 0x00, 0x50, 0xF1, 0xF7, 0x46, 0xFD, 0x20, 0x46, 0x02, 0x21, -0xF2, 0xF7, 0xDE, 0xF8, 0x28, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0xE0, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, -0xC8, 0x35, 0x17, 0x00, 0xC0, 0xB2, 0x15, 0x00, 0x7C, 0x28, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x19, 0x4C, 0x1A, 0x4D, 0xDF, 0xF8, 0x68, 0xA0, 0xC4, 0xEB, 0x44, 0x29, 0x4F, 0xEA, 0xC9, 0x19, -0x84, 0xB0, 0x07, 0x46, 0x1F, 0xFA, 0x89, 0xF9, 0x04, 0xF1, 0x40, 0x06, 0x4F, 0xF0, 0x00, 0x08, 0x34, 0xF8, 0x02, 0x3F, -0xCB, 0xB1, 0x2B, 0x7B, 0xBB, 0x42, 0x16, 0xD1, 0x09, 0xEB, 0xC4, 0x10, 0xA0, 0xF5, 0x80, 0x70, 0x40, 0xF0, 0x08, 0x00, -0x80, 0xB2, 0x04, 0x21, 0xF2, 0xF7, 0xAA, 0xF8, 0x27, 0x23, 0xCD, 0xE9, 0x00, 0x83, 0xCD, 0xF8, 0x08, 0xA0, 0x00, 0x23, -0x02, 0x22, 0x29, 0x46, 0x38, 0x46, 0x85, 0xF8, 0x13, 0x80, 0xFF, 0xF7, 0x25, 0xFE, 0xB4, 0x42, 0x05, 0xF1, 0x18, 0x05, -0xDE, 0xD1, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0xF2, 0xDF, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0xE5, 0xFE, 0x14, 0x00, -0xFF, 0x29, 0x2F, 0xD0, 0xF8, 0xB5, 0xC3, 0xB2, 0x03, 0xEB, 0x83, 0x02, 0x16, 0x4F, 0xC3, 0xEB, 0x02, 0x13, 0x53, 0xFA, -0x81, 0xF3, 0x07, 0xEB, 0xC3, 0x03, 0x0C, 0x46, 0x93, 0xF8, 0xA5, 0x61, 0x21, 0x2E, 0x05, 0x46, 0x1C, 0xD0, 0x30, 0x02, -0x40, 0xF0, 0x08, 0x00, 0xF2, 0xF7, 0x20, 0xF9, 0x01, 0x28, 0x15, 0xD1, 0x0D, 0x4B, 0x06, 0xEB, 0x46, 0x06, 0x03, 0xEB, -0xC6, 0x06, 0x4F, 0xF4, 0x9E, 0x71, 0x01, 0xFB, 0x05, 0x44, 0x73, 0x69, 0x07, 0xEB, 0x44, 0x04, 0x9A, 0x88, 0xB4, 0xF8, -0x34, 0x31, 0x9B, 0x1A, 0x13, 0xF4, 0x7C, 0x6F, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xF8, 0xBD, 0x01, 0x20, 0xF8, 0xBD, -0x02, 0x20, 0x70, 0x47, 0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x04, 0x46, 0x50, 0x48, -0xE1, 0x7E, 0xD0, 0xF8, 0x10, 0x90, 0xFF, 0x29, 0x23, 0xD0, 0x65, 0x7F, 0x4D, 0x4E, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, -0x05, 0x63, 0x5A, 0x68, 0x97, 0x07, 0x1A, 0xD5, 0x05, 0xEB, 0x85, 0x07, 0xC5, 0xEB, 0x07, 0x17, 0x7A, 0x18, 0x34, 0x32, -0x06, 0xEB, 0xC2, 0x0C, 0x9C, 0xF8, 0x07, 0xE0, 0x9C, 0xF8, 0x05, 0x80, 0x0E, 0xF1, 0x01, 0x0E, 0xB8, 0xF1, 0x21, 0x0F, -0x8C, 0xF8, 0x07, 0xE0, 0x09, 0xD1, 0x00, 0x69, 0x56, 0xF8, 0x32, 0x20, 0xDF, 0xF8, 0x14, 0xC1, 0x82, 0x1A, 0x62, 0x45, -0x48, 0xD8, 0xBD, 0xE8, 0xF0, 0x87, 0xDF, 0xF8, 0x0C, 0xA1, 0x08, 0xEB, 0x48, 0x07, 0x0A, 0xEB, 0xC7, 0x07, 0x4F, 0xEA, -0x08, 0x20, 0xC7, 0xF8, 0x04, 0x90, 0x40, 0xF0, 0x08, 0x00, 0xF2, 0xF7, 0xC3, 0xF8, 0x01, 0x28, 0x4F, 0xEA, 0x48, 0x09, -0xEB, 0xD1, 0x7F, 0x69, 0xE3, 0x8B, 0xB8, 0x88, 0x60, 0x84, 0xD9, 0x07, 0x57, 0xD4, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, -0x05, 0x65, 0xD5, 0xF8, 0x4C, 0x21, 0x92, 0xF8, 0xA2, 0x20, 0x52, 0x07, 0x03, 0xD5, 0x62, 0x6A, 0x42, 0xF4, 0x00, 0x12, -0x62, 0x62, 0x21, 0x8C, 0x3A, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x09, 0x1A, 0xE3, 0x83, 0xC1, 0xF3, 0x0B, 0x01, 0x38, 0x46, -0x90, 0x47, 0x38, 0x44, 0x01, 0x23, 0x83, 0x71, 0xE3, 0x8B, 0xDB, 0x07, 0x07, 0xD4, 0x1F, 0x4A, 0x20, 0x4B, 0x12, 0x69, -0x9B, 0x8D, 0x03, 0xEB, 0x92, 0x23, 0xA4, 0xF8, 0x40, 0x30, 0xC8, 0x44, 0x4F, 0xEA, 0xC8, 0x08, 0x5A, 0xF8, 0x08, 0x30, -0x01, 0x33, 0x4A, 0xF8, 0x08, 0x30, 0xB6, 0xE7, 0x93, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0xB2, 0xD0, 0x17, 0x4B, 0x18, 0x48, -0x5A, 0x5C, 0x54, 0x23, 0x03, 0xFB, 0x02, 0xF3, 0xC3, 0x58, 0x00, 0x2B, 0xA9, 0xD1, 0x15, 0x4B, 0x53, 0xF8, 0x32, 0x30, -0x00, 0x2B, 0xA4, 0xD1, 0xBB, 0x18, 0x46, 0x33, 0x56, 0xF8, 0x33, 0x30, 0x00, 0x2B, 0x9E, 0xD1, 0x23, 0x7F, 0x10, 0x48, -0xA4, 0x26, 0x06, 0xFB, 0x03, 0x23, 0x9E, 0x33, 0x50, 0xF8, 0x33, 0x30, 0x00, 0x2B, 0x94, 0xD1, 0x0C, 0x4B, 0x22, 0x8C, -0x1B, 0x6A, 0x28, 0x46, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x03, 0xF0, 0x03, 0x02, 0x03, 0x2A, 0x89, 0xD1, 0xA2, 0xE7, -0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0xC0, 0xB2, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, -0x24, 0x64, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x40, 0x42, 0x0F, 0x00, 0xF4, 0xE4, 0x17, 0x00, -0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x46, 0x1C, 0x48, 0x6C, 0x7F, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x03, 0x5E, 0x68, -0xB6, 0x07, 0x0E, 0xD5, 0xEB, 0x7E, 0x04, 0xEB, 0x84, 0x06, 0xC4, 0xEB, 0x06, 0x14, 0x1C, 0x44, 0x34, 0x34, 0x00, 0xEB, -0xC4, 0x04, 0xE3, 0x79, 0x01, 0x3B, 0xE3, 0x71, 0xEB, 0x8B, 0x9B, 0x07, 0x02, 0xD4, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, -0x66, 0x79, 0x21, 0x2E, 0xF9, 0xD0, 0x30, 0x02, 0x40, 0xF0, 0x08, 0x00, 0x88, 0x46, 0x91, 0x46, 0xF2, 0xF7, 0x20, 0xF8, -0x01, 0x28, 0xF0, 0xD1, 0x06, 0xEB, 0x46, 0x07, 0xFF, 0x00, 0xDF, 0xF8, 0x20, 0xC0, 0x5C, 0xF8, 0x07, 0x40, 0x01, 0x3C, -0x4C, 0xF8, 0x07, 0x40, 0x4B, 0x46, 0x42, 0x46, 0x28, 0x46, 0x31, 0x46, 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, 0x46, 0xBB, -0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x38, 0xB5, 0x45, 0x69, 0x04, 0x46, 0x40, 0x22, 0x00, 0x21, 0xA8, 0x1D, -0xCF, 0xF7, 0x58, 0xF9, 0x22, 0x7B, 0x21, 0x7C, 0x0C, 0x4B, 0x4F, 0xF4, 0x9E, 0x70, 0x00, 0xFB, 0x02, 0x12, 0x03, 0xEB, -0x42, 0x03, 0x00, 0x22, 0xB3, 0xF8, 0x34, 0x31, 0xAB, 0x80, 0x85, 0xF8, 0x46, 0x20, 0xE3, 0x7B, 0x85, 0xF8, 0x47, 0x30, -0x5A, 0x1E, 0x1A, 0x42, 0x12, 0xBF, 0x04, 0x4B, 0x04, 0x4B, 0x85, 0xF8, 0x48, 0x20, 0x2B, 0x60, 0x38, 0xBD, 0x00, 0xBF, -0x68, 0x65, 0x17, 0x00, 0xDD, 0x04, 0x15, 0x00, 0xF1, 0x04, 0x15, 0x00, 0x90, 0xF8, 0x47, 0x10, 0x59, 0xB1, 0x43, 0x1D, -0x19, 0x44, 0x00, 0x20, 0x13, 0xF8, 0x01, 0x2F, 0x02, 0x2A, 0x04, 0xBF, 0x01, 0x30, 0x40, 0xB2, 0x8B, 0x42, 0xF7, 0xD1, -0x70, 0x47, 0x08, 0x46, 0x70, 0x47, 0x00, 0xBF, 0x11, 0x4A, 0x12, 0x4B, 0x12, 0x68, 0x10, 0xB5, 0x00, 0xEB, 0x80, 0x04, -0xC0, 0xEB, 0x04, 0x10, 0x08, 0x44, 0x03, 0xEB, 0xC0, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x90, 0xF8, 0xA4, 0x41, 0x00, 0x2B, -0x08, 0xDB, 0x0B, 0x4B, 0x0B, 0x4A, 0x04, 0xEB, 0x44, 0x04, 0x03, 0xEB, 0xC4, 0x04, 0x13, 0x69, 0x63, 0x60, 0x10, 0xBD, -0x20, 0x2C, 0xF4, 0xD9, 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x52, 0x32, 0xF3, 0xF7, 0xEA, 0xFD, 0xED, 0xE7, 0x00, 0xBF, -0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, -0x9C, 0xC2, 0x15, 0x00, 0x10, 0xF0, 0x0C, 0x0F, 0x11, 0xD1, 0x00, 0xF0, 0xF0, 0x03, 0xC0, 0x2B, 0x0B, 0xD0, 0xD0, 0x2B, -0x05, 0xD0, 0xA3, 0xF1, 0xA0, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x0F, 0x29, 0x24, 0xD8, 0x03, 0x29, -0x03, 0xD8, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x04, 0x39, 0x0B, 0x29, 0xF8, 0xD8, 0x01, 0xA3, 0x53, 0xF8, -0x21, 0xF0, 0x00, 0xBF, 0xEF, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEF, 0x0F, 0x15, 0x00, -0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEF, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, -0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEF, 0x0F, 0x15, 0x00, 0xB1, 0xF1, 0x7F, 0x00, 0x18, 0xBF, 0x01, 0x20, -0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x08, 0xB0, 0xB0, 0xF8, 0x00, 0x90, 0x1B, 0xF8, 0x01, 0xA0, -0x0C, 0x46, 0x85, 0xB0, 0x80, 0x46, 0x51, 0x46, 0x48, 0x46, 0x1D, 0x46, 0xFF, 0xF7, 0xB4, 0xFF, 0x0B, 0xEB, 0x04, 0x0C, -0x00, 0x28, 0x00, 0xF0, 0x81, 0x80, 0x98, 0xF8, 0x09, 0x30, 0xFF, 0x2B, 0x24, 0xD0, 0x98, 0xF8, 0x0A, 0x70, 0xFF, 0x2F, -0x20, 0xD0, 0x50, 0x49, 0x16, 0x46, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x12, 0xD2, 0xF8, 0xA8, 0x24, 0x00, 0x2A, -0x6E, 0xD0, 0x98, 0xF8, 0x30, 0x20, 0x12, 0x07, 0x6E, 0xD5, 0x09, 0xF0, 0xFC, 0x03, 0xD0, 0x2B, 0x00, 0xF0, 0x84, 0x80, -0x46, 0x4B, 0x4F, 0xF4, 0xA4, 0x68, 0x08, 0xFB, 0x07, 0xF8, 0x43, 0x44, 0xD3, 0xF8, 0xAC, 0x34, 0x00, 0x2B, 0x5B, 0xD0, -0x0B, 0xF1, 0x13, 0x03, 0xB3, 0x42, 0x05, 0xDB, 0x00, 0x23, 0x01, 0x20, 0x2B, 0x70, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0xB1, 0x1E, 0xA1, 0xEB, 0x0B, 0x01, 0x0C, 0xF1, 0x02, 0x00, 0x89, 0xB2, 0xF2, 0xF7, 0x3A, 0xFC, 0x1F, 0xFA, 0x8B, 0xF3, -0x00, 0x28, 0xED, 0xD0, 0xB0, 0xF8, 0x02, 0xC0, 0xAC, 0xF1, 0x04, 0x02, 0x01, 0x2A, 0xE7, 0xD8, 0x33, 0x4A, 0xCC, 0xEB, -0x0C, 0x11, 0x08, 0xEB, 0xC1, 0x01, 0x11, 0x44, 0x4F, 0xEA, 0x0C, 0x12, 0x03, 0x92, 0x91, 0xF8, 0x3B, 0x22, 0x00, 0x2A, -0xDA, 0xD0, 0xD1, 0xE9, 0x76, 0xAB, 0x42, 0x68, 0x4F, 0xF0, 0x00, 0x0E, 0x22, 0xF0, 0x7F, 0x48, 0xF3, 0x45, 0x08, 0xBF, -0xC2, 0x45, 0xF1, 0x46, 0xCE, 0xD2, 0x82, 0x46, 0xDD, 0xF8, 0x0C, 0xB0, 0x5A, 0xF8, 0x0A, 0x2F, 0x00, 0x92, 0xDA, 0xF8, -0x04, 0x20, 0x01, 0x92, 0xC1, 0xE9, 0x76, 0x89, 0x12, 0x30, 0x52, 0x46, 0x02, 0xF8, 0x01, 0xEB, 0x82, 0x42, 0xFB, 0xD1, -0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x07, 0xF0, 0xAB, 0xEB, 0x0C, 0x0C, 0x21, 0x46, 0x00, 0xF5, 0xEC, 0x70, 0x1A, 0x4C, -0x00, 0xEB, 0xCC, 0x00, 0x20, 0x44, 0x32, 0x46, 0x00, 0xF0, 0xD2, 0xFA, 0xDD, 0xE9, 0x00, 0x34, 0x8C, 0x42, 0x08, 0xBF, -0x83, 0x42, 0xA7, 0xD1, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0x4A, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, -0x03, 0x23, 0x5B, 0x68, 0x1B, 0x07, 0xF3, 0xD5, 0x19, 0xF4, 0x80, 0x4F, 0xF0, 0xD1, 0x09, 0xF0, 0xFC, 0x09, 0xB9, 0xF1, -0xC0, 0x0F, 0x02, 0xD0, 0xB9, 0xF1, 0xA0, 0x0F, 0x90, 0xD1, 0xAA, 0xF1, 0x06, 0x01, 0x01, 0x29, 0x8C, 0xD8, 0x01, 0x20, -0x28, 0x70, 0xE2, 0xE7, 0xAA, 0xF1, 0x0D, 0x01, 0x01, 0x29, 0x3F, 0xF6, 0x77, 0xAF, 0x89, 0xF4, 0x80, 0x40, 0xC0, 0xF3, -0x80, 0x30, 0xD8, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x45, 0x7F, 0x06, 0x7F, 0xFF, 0x2D, -0x2B, 0xD0, 0x19, 0x4F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x06, 0x73, 0xD3, 0xF8, 0xA8, 0x04, 0xE0, 0xB1, 0x0C, 0x46, -0x20, 0x46, 0x11, 0x46, 0xFF, 0xF7, 0xF0, 0xFE, 0xB0, 0xB1, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0xF5, 0x11, 0x4B, -0xE8, 0x5C, 0x10, 0xF0, 0x01, 0x00, 0x0E, 0xD0, 0x04, 0xF0, 0xFC, 0x04, 0xD0, 0x2C, 0x12, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, -0x03, 0xFB, 0x06, 0x76, 0xD6, 0xF8, 0xAC, 0x34, 0x00, 0x2B, 0x0C, 0xBF, 0x00, 0x20, 0x02, 0x20, 0xF8, 0xBD, 0x1D, 0x44, -0x55, 0xF8, 0x22, 0x0C, 0xC0, 0xF3, 0xC0, 0x00, 0xF8, 0xBD, 0x00, 0x20, 0xF8, 0xBD, 0x0D, 0x3A, 0x01, 0x2A, 0xE9, 0xD8, -0xF2, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x8E, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x2A, 0x4C, 0x03, 0x7F, 0x4F, 0xF4, -0xA4, 0x60, 0x00, 0xFB, 0x03, 0x43, 0x02, 0xEB, 0x01, 0x0C, 0xD3, 0xF8, 0xAC, 0x04, 0x00, 0x28, 0x47, 0xD0, 0x4C, 0x23, -0x53, 0x54, 0x10, 0x23, 0x8C, 0xF8, 0x01, 0x30, 0xD0, 0xE9, 0x12, 0x37, 0x01, 0x33, 0x90, 0xF8, 0x61, 0x40, 0xAC, 0xF8, -0x02, 0x40, 0x47, 0xF1, 0x00, 0x07, 0xC0, 0xE9, 0x12, 0x37, 0x0C, 0xF1, 0x04, 0x0E, 0x00, 0x24, 0x01, 0xE0, 0xD0, 0xE9, -0x12, 0x37, 0xC4, 0xF1, 0x20, 0x06, 0xE3, 0x40, 0xA4, 0xF1, 0x20, 0x05, 0x07, 0xFA, 0x06, 0xF6, 0x33, 0x43, 0x27, 0xFA, -0x05, 0xF5, 0x08, 0x34, 0x2B, 0x43, 0x30, 0x2C, 0x0E, 0xF8, 0x01, 0x3B, 0xED, 0xD1, 0x0C, 0xF1, 0x0A, 0x06, 0x0C, 0xF1, -0x12, 0x04, 0x33, 0x46, 0x00, 0x25, 0x03, 0xF8, 0x01, 0x5B, 0xA3, 0x42, 0xFB, 0xD1, 0x12, 0x32, 0x18, 0x23, 0x92, 0xB2, -0x00, 0xF0, 0x22, 0xFA, 0x00, 0x23, 0xC3, 0xF1, 0x20, 0x05, 0x20, 0xFA, 0x03, 0xF2, 0xA3, 0xF1, 0x20, 0x04, 0x01, 0xFA, -0x05, 0xF5, 0x2A, 0x43, 0x21, 0xFA, 0x04, 0xF4, 0x08, 0x33, 0x22, 0x43, 0x40, 0x2B, 0x06, 0xF8, 0x01, 0x2B, 0xEE, 0xD1, -0x12, 0x20, 0xF8, 0xBD, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x0A, 0x68, 0x05, 0x68, 0x4B, 0x68, 0xAE, 0x4C, -0xDF, 0xF8, 0xBC, 0x82, 0x8F, 0xB0, 0x0E, 0x46, 0x6A, 0x40, 0x01, 0x92, 0x32, 0x46, 0x07, 0x46, 0x0D, 0x90, 0xF0, 0x68, -0x01, 0x9E, 0x04, 0x91, 0x89, 0x68, 0x16, 0x60, 0x7E, 0x68, 0x07, 0x97, 0x83, 0xEA, 0x06, 0x05, 0x55, 0x60, 0x13, 0x46, -0xBA, 0x68, 0x00, 0x95, 0x81, 0xEA, 0x02, 0x09, 0xC3, 0xF8, 0x08, 0x90, 0xFB, 0x68, 0xCD, 0xF8, 0x0C, 0x90, 0x43, 0x40, -0x02, 0x93, 0x07, 0xF1, 0x90, 0x03, 0x0C, 0x93, 0x00, 0x9E, 0x01, 0x98, 0x02, 0x99, 0x03, 0x9D, 0xF3, 0xB2, 0x5F, 0xFA, -0x80, 0xFC, 0xC6, 0xF3, 0x07, 0x2A, 0x4F, 0xEA, 0x10, 0x69, 0xE0, 0x5C, 0x06, 0x90, 0x0A, 0x0E, 0x96, 0x48, 0x08, 0x93, -0x14, 0xF8, 0x0A, 0x30, 0x87, 0x5C, 0x18, 0xF8, 0x02, 0x10, 0x05, 0x93, 0xC5, 0xF3, 0x07, 0x26, 0xA3, 0x5C, 0x03, 0x9A, -0x0A, 0x97, 0xC2, 0xF3, 0x07, 0x4E, 0xA7, 0x5D, 0x10, 0xF8, 0x0E, 0x20, 0x18, 0xF8, 0x09, 0xB0, 0x14, 0xF8, 0x0C, 0x50, -0x38, 0x46, 0x06, 0x9F, 0x09, 0x90, 0x87, 0xEA, 0x0B, 0x0B, 0x05, 0x9F, 0x80, 0xEA, 0x0B, 0x0B, 0x69, 0x40, 0x87, 0x48, -0x79, 0x40, 0x51, 0x40, 0x10, 0xF8, 0x0A, 0x20, 0x5D, 0x40, 0x6A, 0x40, 0x18, 0xF8, 0x0E, 0x50, 0x14, 0xF8, 0x0E, 0xE0, -0x6A, 0x40, 0x09, 0x04, 0x41, 0xEA, 0x02, 0x21, 0x7F, 0x4A, 0x02, 0x9D, 0x12, 0xF8, 0x0C, 0x20, 0x5F, 0x46, 0x18, 0xF8, -0x0A, 0xB0, 0x14, 0xF8, 0x09, 0xA0, 0x10, 0xF8, 0x09, 0x90, 0xCD, 0xF8, 0x2C, 0x90, 0x53, 0x40, 0xC5, 0xF3, 0x07, 0x49, -0x06, 0x98, 0x18, 0xF8, 0x0C, 0x50, 0x76, 0x4A, 0x83, 0xEA, 0x0B, 0x0B, 0x0A, 0x9B, 0x18, 0xF8, 0x06, 0xC0, 0x5D, 0x40, -0x12, 0xF8, 0x09, 0x30, 0x92, 0x5D, 0x71, 0x4E, 0x8A, 0xEA, 0x00, 0x00, 0x50, 0x40, 0x08, 0x9A, 0xB6, 0x5C, 0x18, 0xF8, -0x02, 0x20, 0x8A, 0xEA, 0x06, 0x0A, 0x7B, 0x40, 0x0B, 0x9E, 0x05, 0x9F, 0x8A, 0xEA, 0x0C, 0x0A, 0x18, 0xF8, 0x09, 0xC0, -0x14, 0xF8, 0x09, 0x90, 0x8E, 0xEA, 0x05, 0x05, 0x56, 0x40, 0x7D, 0x40, 0x1B, 0x04, 0x09, 0x9F, 0x80, 0xEA, 0x0C, 0x00, -0x8E, 0xEA, 0x0B, 0x0B, 0x43, 0xEA, 0x00, 0x20, 0x89, 0xEA, 0x06, 0x03, 0x41, 0xEA, 0x0B, 0x02, 0x02, 0x99, 0x00, 0x9E, -0x83, 0xEA, 0x07, 0x0B, 0x03, 0x9B, 0x89, 0xEA, 0x0A, 0x0A, 0x40, 0xEA, 0x0A, 0x0C, 0x5F, 0xFA, 0x83, 0xFE, 0x4F, 0xEA, -0x13, 0x69, 0xC1, 0xF3, 0x07, 0x20, 0xCB, 0xB2, 0x01, 0x99, 0x02, 0x93, 0x42, 0xEA, 0x05, 0x67, 0x04, 0x9A, 0x03, 0x97, -0xC1, 0xF3, 0x07, 0x4A, 0x4C, 0xEA, 0x0B, 0x65, 0x17, 0x60, 0x27, 0x5C, 0x55, 0x60, 0x36, 0x0E, 0x05, 0x95, 0x01, 0x97, -0x4F, 0x4D, 0x14, 0xF8, 0x0A, 0x70, 0x06, 0x97, 0x18, 0xF8, 0x0A, 0x70, 0x15, 0xF8, 0x00, 0xB0, 0xA2, 0x5D, 0x18, 0xF8, -0x06, 0x30, 0x08, 0x97, 0xC1, 0xF3, 0x07, 0x2C, 0x14, 0xF8, 0x0E, 0x10, 0x15, 0xF8, 0x0A, 0xA0, 0x18, 0xF8, 0x00, 0x00, -0x01, 0x9F, 0x09, 0x90, 0xA8, 0x5D, 0x0A, 0x90, 0x4B, 0x40, 0x02, 0x98, 0x00, 0x9E, 0x25, 0x5C, 0x18, 0xF8, 0x09, 0x00, -0x7B, 0x40, 0x83, 0xEA, 0x0A, 0x03, 0x14, 0xF8, 0x0C, 0xA0, 0x51, 0x40, 0x57, 0x46, 0x68, 0x40, 0x8B, 0xEA, 0x01, 0x0B, -0x00, 0x97, 0x3B, 0x49, 0x14, 0xF8, 0x09, 0xA0, 0x11, 0xF8, 0x09, 0x90, 0xCD, 0xF8, 0x2C, 0x90, 0x78, 0x40, 0x08, 0x9F, -0x8B, 0xEA, 0x07, 0x01, 0x35, 0x4F, 0x08, 0x91, 0x17, 0xF8, 0x0E, 0x90, 0x09, 0x99, 0x18, 0xF8, 0x0E, 0xE0, 0xC6, 0xF3, -0x07, 0x46, 0x82, 0xEA, 0x09, 0x02, 0x17, 0xF8, 0x06, 0xB0, 0x17, 0xF8, 0x0C, 0x90, 0x02, 0x9F, 0x18, 0xF8, 0x0C, 0xC0, -0x4A, 0x40, 0x2C, 0x49, 0x80, 0xEA, 0x0B, 0x00, 0x11, 0xF8, 0x07, 0xB0, 0x0A, 0x99, 0x8A, 0xEA, 0x05, 0x05, 0x89, 0xEA, -0x05, 0x05, 0x8E, 0xEA, 0x01, 0x0E, 0x18, 0xF8, 0x07, 0x90, 0x0B, 0x99, 0x89, 0xEA, 0x01, 0x09, 0x08, 0x99, 0x1B, 0x04, -0x43, 0xEA, 0x01, 0x21, 0x06, 0x9B, 0x8A, 0xEA, 0x0B, 0x0A, 0x18, 0xF8, 0x06, 0xB0, 0xA6, 0x5D, 0x01, 0x9F, 0x83, 0xEA, -0x0E, 0x0E, 0x85, 0xEA, 0x0B, 0x05, 0x87, 0xEA, 0x0E, 0x0E, 0x00, 0x04, 0x00, 0x9F, 0x8A, 0xEA, 0x0C, 0x0A, 0x5A, 0x40, -0x40, 0xEA, 0x05, 0x20, 0x86, 0xEA, 0x0A, 0x0A, 0x86, 0xEA, 0x09, 0x09, 0x11, 0x43, 0x87, 0xEA, 0x09, 0x09, 0x04, 0x9A, -0x07, 0x9E, 0x03, 0x9F, 0x05, 0x9B, 0x40, 0xEA, 0x0A, 0x00, 0x41, 0xEA, 0x0E, 0x61, 0x40, 0xEA, 0x09, 0x60, 0xC2, 0xE9, -0x02, 0x10, 0x35, 0x69, 0x6F, 0x40, 0x17, 0x60, 0x35, 0x46, 0x76, 0x69, 0x01, 0x97, 0x5E, 0x40, 0x56, 0x60, 0x00, 0x96, -0x2E, 0x46, 0xAD, 0x69, 0x69, 0x40, 0x91, 0x60, 0xF3, 0x69, 0x03, 0x91, 0x43, 0x40, 0x02, 0x93, 0xD3, 0x60, 0x0C, 0x9B, -0x06, 0xF1, 0x10, 0x01, 0x8B, 0x42, 0x07, 0x91, 0x7F, 0xF4, 0xC8, 0xAE, 0x06, 0xE0, 0x00, 0xBF, 0xE4, 0xC2, 0x15, 0x00, -0xE4, 0xC3, 0x15, 0x00, 0xE4, 0xC4, 0x15, 0x00, 0xDD, 0xF8, 0x00, 0xE0, 0x3E, 0x0E, 0x5F, 0xFA, 0x8E, 0xF2, 0xDD, 0xE9, -0x02, 0x39, 0x14, 0xF8, 0x06, 0xC0, 0xA2, 0x5C, 0x70, 0x46, 0x42, 0xEA, 0x0C, 0x62, 0x00, 0x92, 0x1D, 0x0E, 0x02, 0x9A, -0x65, 0x5D, 0xF9, 0xB2, 0x5F, 0xFA, 0x89, 0xF3, 0x00, 0x0E, 0x61, 0x5C, 0x20, 0x5C, 0xE3, 0x5C, 0xB8, 0x46, 0x5F, 0xFA, -0x82, 0xFC, 0x4F, 0xEA, 0x19, 0x67, 0x43, 0xEA, 0x00, 0x63, 0xE7, 0x5D, 0x14, 0xF8, 0x0C, 0x00, 0x41, 0xEA, 0x05, 0x61, -0xCE, 0xF3, 0x07, 0x25, 0x40, 0xEA, 0x07, 0x67, 0x65, 0x5D, 0xC9, 0xF3, 0x07, 0x20, 0x41, 0xEA, 0x05, 0x21, 0x14, 0xF8, -0x00, 0xB0, 0xC8, 0xF3, 0x07, 0x25, 0xC2, 0xF3, 0x07, 0x20, 0xCE, 0xF3, 0x07, 0x46, 0xC9, 0xF3, 0x07, 0x4A, 0xC2, 0xF3, -0x07, 0x4C, 0xC8, 0xF3, 0x07, 0x48, 0x65, 0x5D, 0x00, 0x9A, 0x20, 0x5C, 0x14, 0xF8, 0x0A, 0xE0, 0x14, 0xF8, 0x0C, 0xC0, -0x14, 0xF8, 0x08, 0x80, 0xA6, 0x5D, 0x47, 0xEA, 0x05, 0x27, 0x42, 0xEA, 0x0B, 0x24, 0x43, 0xEA, 0x00, 0x20, 0x04, 0x9A, -0x0D, 0x9D, 0x41, 0xEA, 0x0E, 0x41, 0x44, 0xEA, 0x0C, 0x44, 0x40, 0xEA, 0x08, 0x40, 0x47, 0xEA, 0x06, 0x46, 0xC2, 0xE9, -0x00, 0x14, 0xC2, 0xE9, 0x02, 0x06, 0xD5, 0xF8, 0xA0, 0x30, 0x59, 0x40, 0x11, 0x60, 0xD5, 0xF8, 0xA4, 0x30, 0x5C, 0x40, -0x54, 0x60, 0xD5, 0xF8, 0xA8, 0x30, 0x58, 0x40, 0x90, 0x60, 0xD5, 0xF8, 0xAC, 0x30, 0x5E, 0x40, 0xD6, 0x60, 0x0F, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0xD0, 0xE9, 0x01, 0x23, 0xF0, 0xB5, 0x19, 0x49, 0x05, 0x68, 0xC7, 0x68, 0x54, 0x04, 0x04, 0xF0, -0x80, 0x76, 0x01, 0xEA, 0xD5, 0x34, 0x34, 0x43, 0x6E, 0x00, 0x06, 0xF0, 0xFE, 0x36, 0x34, 0x43, 0x4F, 0xEA, 0x43, 0x4E, -0x7E, 0x04, 0x0E, 0xF0, 0x80, 0x7E, 0x04, 0x60, 0x01, 0xEA, 0xD2, 0x34, 0x52, 0x00, 0x06, 0xF0, 0x80, 0x7C, 0x44, 0xEA, -0x0E, 0x04, 0x01, 0xEA, 0xD3, 0x36, 0x02, 0xF0, 0xFE, 0x32, 0x5B, 0x00, 0x22, 0x43, 0x46, 0xEA, 0x0C, 0x06, 0x03, 0xF0, -0xFE, 0x33, 0x7C, 0x00, 0x33, 0x43, 0x01, 0xEA, 0xD7, 0x31, 0x04, 0xF0, 0xFE, 0x34, 0x21, 0x43, 0xC0, 0xE9, 0x01, 0x23, -0x2B, 0x06, 0x48, 0xBF, 0x81, 0xF0, 0x07, 0x41, 0xC1, 0x60, 0xF0, 0xBD, 0x01, 0x01, 0x01, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x29, 0x2A, 0xBD, 0xB0, 0x0B, 0xD8, 0x8B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x00, 0x81, -0x00, 0x20, 0x01, 0x46, 0x3D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x88, 0x46, 0x1D, 0x46, 0x31, 0xF8, 0x04, 0x3B, 0x06, 0x46, -0x23, 0xF4, 0x60, 0x53, 0x14, 0x46, 0x0D, 0xF1, 0x2E, 0x00, 0x12, 0x22, 0xAD, 0xF8, 0x2C, 0x30, 0x05, 0xF0, 0xC4, 0xFC, -0xD6, 0xE9, 0x14, 0x13, 0xD6, 0xE9, 0x16, 0x72, 0xC5, 0xF5, 0x7F, 0x40, 0xF4, 0x30, 0x80, 0xB2, 0x01, 0x90, 0xCD, 0xE9, -0x11, 0x37, 0xDF, 0xF8, 0xEC, 0xE1, 0xDF, 0xF8, 0xEC, 0xC1, 0x10, 0x91, 0x13, 0x92, 0x10, 0xAE, 0x0D, 0xF1, 0xD0, 0x0A, -0x01, 0x20, 0x02, 0xE0, 0x5E, 0xF8, 0x04, 0x0F, 0x10, 0x36, 0xC2, 0xF3, 0x07, 0x2B, 0x5F, 0xFA, 0x82, 0xF9, 0x1C, 0xF8, -0x0B, 0xB0, 0x1C, 0xF8, 0x09, 0x90, 0x8B, 0xEA, 0x00, 0x00, 0x4F, 0xEA, 0x12, 0x6B, 0x40, 0xEA, 0x09, 0x60, 0xC2, 0xF3, -0x07, 0x49, 0x1C, 0xF8, 0x0B, 0xB0, 0x1C, 0xF8, 0x09, 0x90, 0x40, 0xEA, 0x0B, 0x40, 0x40, 0xEA, 0x09, 0x20, 0x41, 0x40, -0x4B, 0x40, 0x5F, 0x40, 0x7A, 0x40, 0x56, 0x45, 0xC6, 0xE9, 0x06, 0x72, 0xC6, 0xE9, 0x04, 0x13, 0xDA, 0xD1, 0x10, 0x22, -0x00, 0x21, 0x03, 0xA8, 0xCE, 0xF7, 0xF6, 0xFC, 0x0D, 0xF1, 0x0A, 0x06, 0x00, 0x21, 0x07, 0xA8, 0x10, 0x22, 0xCE, 0xF7, -0xEF, 0xFC, 0x0D, 0xF1, 0x1A, 0x07, 0x33, 0x46, 0x0D, 0xF1, 0x2A, 0x01, 0x33, 0xF8, 0x02, 0x2F, 0x31, 0xF8, 0x02, 0x0F, -0x9F, 0x42, 0x82, 0xEA, 0x00, 0x02, 0x1A, 0x80, 0xF6, 0xD1, 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x7B, 0xFD, 0x03, 0x9B, -0x0F, 0x9A, 0x6D, 0x08, 0x08, 0xEB, 0x45, 0x08, 0x53, 0x40, 0xA8, 0xF1, 0x02, 0x01, 0x08, 0xF1, 0x0A, 0x05, 0x03, 0x93, -0x0D, 0xF1, 0x0E, 0x02, 0x32, 0xF8, 0x02, 0x3F, 0x31, 0xF8, 0x02, 0x0F, 0x43, 0x40, 0x8D, 0x42, 0x13, 0x80, 0xF7, 0xD1, -0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x62, 0xFD, 0x01, 0x9B, 0x1C, 0x44, 0xA4, 0xB2, 0x10, 0x2C, 0x08, 0xF1, 0x0C, 0x09, -0x26, 0xD9, 0xA4, 0xF1, 0x11, 0x0A, 0xCA, 0xF3, 0x0B, 0x1A, 0x08, 0xEB, 0x0A, 0x18, 0x08, 0xF1, 0x1C, 0x08, 0x4D, 0x46, -0xAA, 0x1E, 0x33, 0x46, 0x05, 0xF1, 0x0E, 0x00, 0x33, 0xF8, 0x02, 0x1F, 0x32, 0xF8, 0x02, 0xCF, 0x81, 0xEA, 0x0C, 0x01, -0x90, 0x42, 0x19, 0x80, 0xF6, 0xD1, 0x10, 0x35, 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x40, 0xFD, 0x45, 0x45, 0xEB, 0xD1, -0xCA, 0xEB, 0x0A, 0x33, 0x10, 0x3C, 0x04, 0xEB, 0x03, 0x14, 0x0A, 0xF1, 0x01, 0x0A, 0xA4, 0xB2, 0x09, 0xEB, 0x0A, 0x19, -0x07, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x30, 0xFD, 0x07, 0xA8, 0xFF, 0xF7, 0x01, 0xFF, 0x10, 0x2C, 0x34, 0xD0, 0x65, 0x08, -0x07, 0xA8, 0xFF, 0xF7, 0xFB, 0xFE, 0x65, 0xB1, 0xA9, 0xF1, 0x02, 0x02, 0x02, 0xEB, 0x45, 0x0C, 0x39, 0x46, 0x31, 0xF8, -0x02, 0x3F, 0x32, 0xF8, 0x02, 0x0F, 0x43, 0x40, 0x94, 0x45, 0x0B, 0x80, 0xF7, 0xD1, 0xE3, 0x07, 0x39, 0xD4, 0x80, 0x23, -0xA4, 0x08, 0x05, 0xF0, 0x01, 0x05, 0x3C, 0xAA, 0x05, 0xEB, 0x44, 0x04, 0x02, 0xEB, 0x44, 0x04, 0x34, 0xF8, 0xD4, 0x2C, -0x53, 0x40, 0x24, 0xF8, 0xD4, 0x3C, 0x3A, 0x46, 0x36, 0xF8, 0x02, 0x3F, 0x32, 0xF8, 0x02, 0x1F, 0xB7, 0x42, 0x83, 0xEA, -0x01, 0x03, 0x33, 0x80, 0xF6, 0xD1, 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0xFB, 0xFC, 0xDD, 0xE9, 0x03, 0x01, 0x3D, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0xA9, 0xF1, 0x02, 0x02, 0x39, 0x46, 0x09, 0xF1, 0x0E, 0x09, 0x31, 0xF8, 0x02, 0x3F, 0x32, 0xF8, -0x02, 0x0F, 0x43, 0x40, 0x91, 0x45, 0x0B, 0x80, 0xF7, 0xD1, 0xDE, 0xE7, 0x08, 0x49, 0x09, 0x48, 0x4F, 0xF4, 0xD6, 0x72, -0xF3, 0xF7, 0x44, 0xF9, 0x00, 0x20, 0x01, 0x46, 0x3D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x19, 0xF8, 0x15, 0x30, 0x43, 0xF4, -0x00, 0x43, 0xC1, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0xBC, 0xC2, 0x15, 0x00, -0xE4, 0xC2, 0x15, 0x00, 0x81, 0x04, 0x4F, 0xEA, 0xD0, 0x23, 0xC0, 0xF3, 0xC2, 0x22, 0x0C, 0xD4, 0x13, 0xF0, 0x06, 0x0F, -0x03, 0xF0, 0x06, 0x02, 0x11, 0xD1, 0x00, 0xF0, 0x7F, 0x00, 0x62, 0xB9, 0x03, 0x28, 0x8C, 0xBF, 0x00, 0x20, 0x01, 0x20, -0x70, 0x47, 0x07, 0x2A, 0x0C, 0xD0, 0x03, 0xF0, 0x06, 0x02, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x2A, 0xF2, 0xD0, 0x00, 0x20, -0x70, 0x47, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x2A, 0xF9, 0xD1, 0xEB, 0xE7, 0x13, 0xF0, 0x06, 0x0F, 0x0C, 0xBF, 0x01, 0x20, -0x00, 0x20, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x4F, 0x07, 0x46, 0x40, 0x7F, 0x87, 0xB0, 0x4F, 0xF0, 0xFF, 0x34, 0x09, 0x28, -0x05, 0x94, 0x02, 0xD9, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x89, 0x46, 0xF9, 0x6C, 0xC9, 0x4E, 0x8C, 0x6C, 0x0D, 0x6D, -0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x00, 0x60, 0x90, 0x46, 0x90, 0xF8, 0x22, 0x10, 0xFA, 0x8B, 0x14, 0xF4, 0x00, 0x5F, -0x08, 0xBF, 0x01, 0x23, 0x22, 0xF4, 0x00, 0x54, 0x05, 0xF4, 0x80, 0x05, 0x02, 0xF4, 0x00, 0x52, 0xFF, 0x29, 0x01, 0x95, -0xFC, 0x83, 0x02, 0x92, 0xE0, 0xD0, 0xBD, 0x4A, 0xD0, 0xF8, 0x4C, 0xA1, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, -0x50, 0xDB, 0xBA, 0xF8, 0xB4, 0x10, 0xBA, 0x6C, 0x48, 0x1E, 0x05, 0xAC, 0xC0, 0xB2, 0x01, 0xEB, 0x41, 0x0E, 0x00, 0x90, -0x03, 0x94, 0x0A, 0xEB, 0x8E, 0x0E, 0x02, 0xF1, 0x3C, 0x00, 0x02, 0xF1, 0x4C, 0x0B, 0xA4, 0x46, 0x50, 0xF8, 0x04, 0x6B, -0xC6, 0xF3, 0x0D, 0x06, 0x79, 0xB1, 0x74, 0x46, 0x00, 0x22, 0x02, 0xE0, 0x01, 0x32, 0x8A, 0x42, 0x09, 0xD0, 0x34, 0xF8, -0x02, 0x5C, 0xB5, 0x42, 0xA4, 0xF1, 0x0C, 0x04, 0xF6, 0xD1, 0x00, 0x9C, 0xA2, 0x1A, 0x8C, 0xF8, 0x00, 0x20, 0x00, 0x2B, -0x40, 0xF0, 0xAD, 0x80, 0x83, 0x45, 0x0C, 0xF1, 0x01, 0x0C, 0xE3, 0xD1, 0x97, 0xF8, 0x36, 0x30, 0x9A, 0xF8, 0xA3, 0x20, -0xC3, 0xF3, 0x82, 0x03, 0x93, 0x42, 0x27, 0xD0, 0x01, 0x9B, 0x00, 0x2B, 0x64, 0xD0, 0xBA, 0xF8, 0x92, 0x20, 0xBA, 0xF8, -0x90, 0x30, 0x01, 0x32, 0x01, 0x33, 0xAA, 0xF8, 0x92, 0x20, 0xAA, 0xF8, 0x90, 0x30, 0xBA, 0xF8, 0x7E, 0x10, 0xBA, 0xF8, -0x7C, 0x20, 0x1F, 0xFA, 0x89, 0xF9, 0xA9, 0xEB, 0x08, 0x03, 0x0B, 0x44, 0x91, 0x44, 0xAA, 0xF8, 0x7E, 0x30, 0xAA, 0xF8, -0x7C, 0x90, 0x87, 0xE7, 0xBA, 0xF1, 0x00, 0x0F, 0xAB, 0xD1, 0x90, 0x49, 0x90, 0x48, 0x00, 0x93, 0x4F, 0xF4, 0x18, 0x62, -0xF3, 0xF7, 0x64, 0xF8, 0x00, 0x9B, 0xA2, 0xE7, 0xBA, 0xF8, 0x90, 0x30, 0xBA, 0xF8, 0x92, 0x20, 0x01, 0x33, 0xAA, 0xF8, -0x90, 0x30, 0x01, 0x9B, 0x01, 0x32, 0xAA, 0xF8, 0x92, 0x20, 0x00, 0x2B, 0xD7, 0xD1, 0x02, 0x9B, 0x00, 0x2B, 0x3A, 0xD0, -0x83, 0x4E, 0x85, 0x4D, 0x03, 0x9F, 0x00, 0x24, 0xB9, 0xF1, 0x00, 0x0F, 0x24, 0xD0, 0x17, 0xF8, 0x01, 0x3B, 0xFF, 0x2B, -0x00, 0xF0, 0xEC, 0x80, 0x00, 0x2C, 0x00, 0xF0, 0x41, 0x81, 0x03, 0xEB, 0x43, 0x02, 0xB8, 0xF1, 0x01, 0x0F, 0x0A, 0xEB, -0x82, 0x02, 0x40, 0xF2, 0x7A, 0x81, 0x92, 0x88, 0x59, 0x00, 0x19, 0x44, 0x0A, 0xEB, 0x81, 0x01, 0x02, 0x32, 0x8A, 0x80, -0xA9, 0xF1, 0x02, 0x09, 0xA8, 0xF1, 0x02, 0x08, 0x71, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, -0x02, 0x81, 0x01, 0x34, 0x04, 0x2C, 0xD7, 0xD1, 0x00, 0x23, 0x8A, 0xF8, 0x9B, 0x30, 0x3B, 0xE7, 0xBA, 0xF8, 0x92, 0x20, -0xBA, 0xF8, 0x90, 0x30, 0x01, 0x32, 0x01, 0x33, 0xAA, 0xF8, 0x92, 0x20, 0xAA, 0xF8, 0x90, 0x30, 0xC1, 0xE7, 0x66, 0x4E, -0x67, 0x4D, 0x03, 0x9F, 0x1C, 0x46, 0xB9, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x29, 0xAF, 0x17, 0xF8, 0x01, 0x3B, 0xFF, 0x2B, -0x00, 0xF0, 0xA5, 0x80, 0x00, 0x2C, 0x00, 0xF0, 0xF0, 0x80, 0x03, 0xEB, 0x43, 0x02, 0xB8, 0xF1, 0x01, 0x0F, 0x0A, 0xEB, -0x82, 0x02, 0x40, 0xF2, 0x43, 0x81, 0x92, 0x88, 0x59, 0x00, 0x19, 0x44, 0x0A, 0xEB, 0x81, 0x01, 0x02, 0x32, 0x8A, 0x80, -0xA9, 0xF1, 0x02, 0x09, 0xA8, 0xF1, 0x02, 0x08, 0x53, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, -0xB6, 0x80, 0x01, 0x34, 0x04, 0x2C, 0xD6, 0xD1, 0x02, 0xE7, 0x97, 0xF8, 0x36, 0x30, 0x9A, 0xF8, 0xA3, 0x20, 0xC3, 0xF3, -0x82, 0x03, 0x93, 0x42, 0x38, 0xD0, 0x01, 0x9B, 0x00, 0x2B, 0x69, 0xD1, 0xBA, 0xF8, 0x92, 0x30, 0xBA, 0xF8, 0x90, 0x20, -0x01, 0x33, 0x1F, 0xFA, 0x89, 0xF0, 0xAA, 0xF8, 0x92, 0x30, 0x02, 0x9B, 0x02, 0x44, 0xAA, 0xF8, 0x90, 0x20, 0x00, 0x2B, -0x40, 0xF0, 0x8A, 0x80, 0x9D, 0xF8, 0x14, 0x30, 0xFF, 0x2B, 0x3F, 0xF4, 0xE3, 0xAE, 0x0C, 0x22, 0x02, 0xFB, 0x03, 0xA3, -0x04, 0x33, 0x3C, 0x4A, 0x5D, 0x88, 0x19, 0x88, 0x14, 0x68, 0xA0, 0xEB, 0x08, 0x02, 0x2A, 0x44, 0x01, 0x44, 0x92, 0xB2, -0x89, 0xB2, 0x5A, 0x80, 0x19, 0x80, 0xB4, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xCE, 0xAE, 0x91, 0x42, 0xBF, 0xF4, -0xCB, 0xAE, 0x33, 0x49, 0x34, 0x48, 0x4F, 0xF4, 0x1F, 0x62, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xF2, 0xF7, 0xA8, 0xBF, -0xBA, 0xF8, 0x90, 0x30, 0xBA, 0xF8, 0x92, 0x20, 0x1F, 0xFA, 0x89, 0xF0, 0x03, 0x44, 0xAA, 0xF8, 0x90, 0x30, 0x01, 0x9B, -0x01, 0x32, 0xAA, 0xF8, 0x92, 0x20, 0x8B, 0xBB, 0x02, 0x9B, 0x00, 0x2B, 0x52, 0xD1, 0x9D, 0xF8, 0x14, 0x30, 0xFF, 0x2B, -0x00, 0xF0, 0xFD, 0x80, 0x0C, 0x22, 0x02, 0xFB, 0x03, 0xA3, 0x04, 0x33, 0xB9, 0xEB, 0x48, 0x0F, 0x9A, 0xF8, 0xA4, 0x20, -0x80, 0xF0, 0xE9, 0x80, 0x01, 0x2A, 0x40, 0xF2, 0xF8, 0x80, 0x02, 0x2A, 0x03, 0xD0, 0x00, 0x2B, 0x3F, 0xF4, 0x9A, 0xAE, -0xB9, 0xE7, 0xDA, 0xF8, 0x00, 0x20, 0xA2, 0xF5, 0x92, 0x32, 0xF8, 0x3A, 0xCA, 0xF8, 0x00, 0x20, 0x00, 0x2B, 0x3F, 0xF4, -0x8F, 0xAE, 0xAE, 0xE7, 0xBA, 0xF8, 0x90, 0x20, 0xBA, 0xF8, 0x92, 0x30, 0x1F, 0xFA, 0x89, 0xF0, 0x02, 0x44, 0x01, 0x33, -0xAA, 0xF8, 0x90, 0x20, 0xAA, 0xF8, 0x92, 0x30, 0x0A, 0xF1, 0x7C, 0x03, 0x9F, 0xE7, 0x00, 0x2C, 0x75, 0xD0, 0xB8, 0xF1, -0x01, 0x0F, 0x7F, 0xF6, 0x79, 0xAE, 0xA9, 0xF1, 0x02, 0x09, 0xA8, 0xF1, 0x02, 0x08, 0x6C, 0xE7, 0x00, 0x2C, 0x00, 0xF0, -0x8C, 0x80, 0xB8, 0xF1, 0x01, 0x0F, 0x7F, 0xF6, 0x2D, 0xAF, 0xA9, 0xF1, 0x02, 0x09, 0xA8, 0xF1, 0x02, 0x08, 0x24, 0xE7, -0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0xE4, 0xC5, 0x15, 0x00, -0x9D, 0xF8, 0x14, 0x30, 0xFF, 0x2B, 0x3F, 0xF4, 0x19, 0xAF, 0x0C, 0x22, 0x02, 0xFB, 0x03, 0xA3, 0x00, 0x22, 0x04, 0x33, -0x8A, 0xF8, 0x9B, 0x20, 0x71, 0xE7, 0x03, 0xEB, 0x43, 0x03, 0x0A, 0xEB, 0x83, 0x03, 0x9A, 0x88, 0xDB, 0x88, 0x9A, 0x42, -0xBF, 0xF4, 0x41, 0xAF, 0x40, 0xF6, 0x61, 0x22, 0x31, 0x46, 0x28, 0x46, 0xF2, 0xF7, 0x28, 0xFF, 0x39, 0xE7, 0x03, 0xEB, -0x43, 0x03, 0x0A, 0xEB, 0x83, 0x03, 0x9A, 0x88, 0xDB, 0x88, 0x9A, 0x42, 0xBF, 0xF4, 0xF5, 0xAE, 0x40, 0xF6, 0x33, 0x22, -0x31, 0x46, 0x28, 0x46, 0xF2, 0xF7, 0x18, 0xFF, 0xED, 0xE6, 0xB8, 0xF1, 0x00, 0x0F, 0x6C, 0xD0, 0x03, 0xEB, 0x43, 0x01, -0x0A, 0xEB, 0x81, 0x01, 0x08, 0xF1, 0xFF, 0x38, 0x8A, 0x88, 0x01, 0x32, 0x92, 0xB2, 0xB8, 0xF1, 0x01, 0x0F, 0x8A, 0x80, -0x09, 0xF1, 0xFF, 0x39, 0x19, 0xB2, 0x73, 0xD9, 0x59, 0x00, 0x04, 0xE7, 0xB8, 0xF1, 0x00, 0x0F, 0x1B, 0xD0, 0x03, 0xEB, -0x43, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x08, 0xF1, 0xFF, 0x38, 0x8A, 0x88, 0x01, 0x32, 0x92, 0xB2, 0xB8, 0xF1, 0x01, 0x0F, -0x8A, 0x80, 0x09, 0xF1, 0xFF, 0x39, 0x19, 0xB2, 0x5B, 0xD9, 0x59, 0x00, 0xB3, 0xE6, 0xB8, 0xF1, 0x02, 0x0F, 0x7F, 0xF6, -0x03, 0xAE, 0xA9, 0xF1, 0x03, 0x09, 0xA8, 0xF1, 0x03, 0x08, 0x01, 0x24, 0xCF, 0xE6, 0x03, 0xEB, 0x43, 0x02, 0x0A, 0xEB, -0x82, 0x02, 0xA0, 0x46, 0x92, 0x88, 0x19, 0xB2, 0x01, 0xEB, 0x41, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x1F, 0xFA, 0x89, 0xF9, -0xC8, 0x88, 0xA9, 0xEB, 0x08, 0x08, 0x4A, 0x44, 0x40, 0x44, 0x4F, 0xF0, 0x00, 0x09, 0x8A, 0x80, 0xC8, 0x80, 0xC8, 0x46, -0x9A, 0xE6, 0xB8, 0xF1, 0x02, 0x0F, 0x7F, 0xF6, 0xA1, 0xAE, 0xA9, 0xF1, 0x03, 0x09, 0xA8, 0xF1, 0x03, 0x08, 0x01, 0x24, -0x72, 0xE6, 0x92, 0x88, 0x1F, 0xFA, 0x88, 0xF8, 0x19, 0xB2, 0xDF, 0xE7, 0x92, 0x88, 0x1F, 0xFA, 0x88, 0xF8, 0x19, 0xB2, -0x01, 0xEB, 0x41, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x1F, 0xFA, 0x89, 0xF9, 0xC8, 0x88, 0xA9, 0xEB, 0x08, 0x08, 0x4A, 0x44, -0x40, 0x44, 0x4F, 0xF0, 0x00, 0x09, 0x8A, 0x80, 0xC8, 0x80, 0xC8, 0x46, 0xB2, 0xE6, 0x03, 0xEB, 0x43, 0x02, 0x0A, 0xEB, -0x82, 0x02, 0xA0, 0x46, 0x92, 0x88, 0x19, 0xB2, 0xE6, 0xE7, 0x00, 0x2A, 0x3F, 0xF4, 0x19, 0xAF, 0x01, 0x3A, 0x8A, 0xF8, -0xA4, 0x20, 0x00, 0x2B, 0x3F, 0xF4, 0xB0, 0xAD, 0xCF, 0xE6, 0x02, 0x9B, 0x04, 0xE7, 0x1F, 0xFA, 0x88, 0xF8, 0xB3, 0xE7, -0x1F, 0xFA, 0x88, 0xF8, 0xD4, 0xE7, 0x01, 0x32, 0x8A, 0xF8, 0xA4, 0x20, 0x00, 0x2B, 0x3F, 0xF4, 0xA1, 0xAD, 0xC0, 0xE6, -0x03, 0x88, 0xA3, 0xB1, 0x10, 0xB4, 0x42, 0x88, 0x44, 0x7A, 0x00, 0x21, 0x12, 0x04, 0x01, 0x72, 0xB2, 0xFB, 0xF3, 0xF1, -0x8C, 0xB1, 0x83, 0x88, 0x5D, 0xF8, 0x04, 0x4B, 0x03, 0xEB, 0x43, 0x03, 0x0B, 0x44, 0xC3, 0xF3, 0x98, 0x03, 0x83, 0x80, -0x01, 0x23, 0x43, 0x72, 0x70, 0x47, 0x03, 0x7A, 0xFF, 0x2B, 0x1C, 0xBF, 0x01, 0x33, 0x03, 0x72, 0x70, 0x47, 0x9A, 0x42, -0x24, 0xBF, 0x01, 0xF1, 0xFF, 0x33, 0x83, 0x80, 0x4F, 0xF0, 0x01, 0x03, 0x38, 0xBF, 0x84, 0x80, 0x43, 0x72, 0x5D, 0xF8, -0x04, 0x4B, 0x70, 0x47, 0xF8, 0xB5, 0x06, 0x46, 0x88, 0x04, 0x0C, 0x46, 0xC1, 0xF3, 0xC2, 0x25, 0x19, 0xD4, 0xCB, 0x0A, -0x13, 0xF0, 0x06, 0x0F, 0x40, 0xD1, 0xCF, 0xB2, 0x01, 0xF0, 0x7F, 0x05, 0x05, 0xF0, 0xF8, 0xF9, 0x17, 0xF0, 0x7C, 0x0F, -0x5B, 0xD1, 0x96, 0xF8, 0xAD, 0x20, 0x04, 0xE0, 0xB6, 0xF8, 0xAA, 0x30, 0xEB, 0x40, 0xD9, 0x07, 0x59, 0xD4, 0x6B, 0x1E, -0x95, 0x42, 0xDD, 0xB2, 0xF6, 0xD8, 0x20, 0x46, 0xF8, 0xBD, 0x07, 0x2D, 0x47, 0xD0, 0x04, 0x3D, 0x05, 0xF0, 0xE2, 0xF9, -0x04, 0xF0, 0x0F, 0x02, 0x01, 0x2D, 0xF4, 0xD8, 0xDF, 0xE8, 0x05, 0xF0, 0x01, 0x0E, 0x72, 0xB3, 0x53, 0x1E, 0x24, 0xF0, -0x0F, 0x04, 0x96, 0xF8, 0xB1, 0x20, 0x23, 0x43, 0x98, 0xB2, 0x00, 0x2A, 0xE8, 0xD0, 0x40, 0xF4, 0x00, 0x70, 0xF8, 0xBD, -0x0A, 0xB3, 0x24, 0xF0, 0x0F, 0x03, 0x51, 0x1E, 0x0B, 0x43, 0x98, 0xB2, 0x63, 0x04, 0xDD, 0xD5, 0x03, 0x2A, 0x03, 0xD0, -0x96, 0xF8, 0xBD, 0x30, 0x99, 0x42, 0xD7, 0xDD, 0x20, 0xF4, 0x80, 0x43, 0x98, 0xB2, 0xF8, 0xBD, 0xC4, 0xF3, 0xC1, 0x05, -0x05, 0xF0, 0xB8, 0xF9, 0x35, 0x44, 0x04, 0xF0, 0x07, 0x03, 0x05, 0xE0, 0x95, 0xF8, 0xA6, 0x20, 0xCB, 0xB2, 0xDA, 0x40, -0xD2, 0x07, 0x24, 0xD4, 0x59, 0x1E, 0x00, 0x2B, 0xF6, 0xD1, 0x96, 0xF8, 0xAE, 0x30, 0x03, 0x2B, 0xBD, 0xD8, 0x43, 0xB3, -0x96, 0xF8, 0xB2, 0x20, 0x00, 0xF4, 0x80, 0x60, 0x43, 0xEA, 0x82, 0x23, 0x03, 0x43, 0x98, 0xB2, 0xF8, 0xBD, 0x05, 0xF0, -0x9B, 0xF9, 0x20, 0x46, 0xB0, 0xE7, 0x96, 0xF8, 0xAD, 0x20, 0x04, 0x2A, 0x38, 0xBF, 0x04, 0x22, 0xA5, 0xE7, 0x24, 0xF0, -0x7F, 0x04, 0x44, 0xEA, 0x05, 0x00, 0x00, 0x2D, 0xA4, 0xD1, 0x40, 0xF4, 0x80, 0x63, 0x98, 0xB2, 0xF8, 0xBD, 0x96, 0xF8, -0xB1, 0x20, 0x24, 0xF0, 0x07, 0x04, 0x44, 0xEA, 0x03, 0x00, 0x00, 0x2A, 0x98, 0xD0, 0x40, 0xF4, 0x00, 0x73, 0x98, 0xB2, -0xF8, 0xBD, 0x4F, 0xF4, 0x80, 0x60, 0xF8, 0xBD, 0x8A, 0x04, 0x30, 0xB4, 0xC1, 0xF3, 0xC2, 0x23, 0x20, 0xD4, 0xCA, 0x0A, -0x12, 0xF0, 0x06, 0x0F, 0x26, 0xD1, 0x11, 0xF0, 0x7C, 0x0F, 0x01, 0xF0, 0x7F, 0x03, 0x71, 0xD1, 0x90, 0xF8, 0xAE, 0x40, -0x03, 0x2C, 0x28, 0xBF, 0x03, 0x24, 0x04, 0xE0, 0xB0, 0xF8, 0xAA, 0x20, 0xDA, 0x40, 0xD5, 0x07, 0x74, 0xD4, 0x5A, 0x1C, -0xA3, 0x42, 0xD3, 0xB2, 0xF6, 0xD3, 0x90, 0xF8, 0xA5, 0x30, 0x01, 0x2B, 0x01, 0xD9, 0xD9, 0x02, 0x89, 0xB2, 0x08, 0x46, -0x30, 0xBC, 0x70, 0x47, 0x07, 0x2B, 0xFA, 0xD0, 0x04, 0x3B, 0x01, 0xF0, 0x0F, 0x02, 0x01, 0x2B, 0xF5, 0xD8, 0xDF, 0xE8, -0x03, 0xF0, 0x15, 0x30, 0xC1, 0xF3, 0xC1, 0x04, 0x90, 0xF8, 0xAC, 0x50, 0x04, 0x44, 0x01, 0xF0, 0x07, 0x03, 0x04, 0xE0, -0x94, 0xF8, 0xA6, 0x20, 0xDA, 0x40, 0xD2, 0x07, 0x45, 0xD4, 0x5A, 0x1C, 0x9D, 0x42, 0xD3, 0xB2, 0xF6, 0xD8, 0x08, 0x46, -0x30, 0xBC, 0x70, 0x47, 0x90, 0xF8, 0xAC, 0x30, 0x93, 0x42, 0xDA, 0xD9, 0xB0, 0xF8, 0xA6, 0x30, 0xC1, 0xF3, 0x02, 0x14, -0x64, 0x00, 0x23, 0x41, 0x03, 0xF0, 0x03, 0x03, 0x07, 0x33, 0x93, 0x42, 0xCF, 0xD9, 0x21, 0xF0, 0x0F, 0x01, 0x01, 0x32, -0x90, 0xF8, 0xB1, 0x30, 0x11, 0x43, 0x89, 0xB2, 0x00, 0x2B, 0xC6, 0xD0, 0x41, 0xF4, 0x00, 0x71, 0xC3, 0xE7, 0x90, 0xF8, -0xAC, 0x30, 0x93, 0x42, 0xBF, 0xD9, 0xB0, 0xF8, 0xA6, 0x30, 0xC1, 0xF3, 0x02, 0x14, 0x64, 0x00, 0x23, 0x41, 0x03, 0xF0, -0x03, 0x03, 0x5B, 0x00, 0x07, 0x33, 0x93, 0x42, 0xB3, 0xD9, 0x21, 0xF0, 0x0F, 0x01, 0x53, 0x1C, 0x0B, 0x43, 0x99, 0xB2, -0x5B, 0x04, 0xAC, 0xD5, 0x01, 0x2A, 0x03, 0xD0, 0x90, 0xF8, 0xBD, 0x30, 0x93, 0x42, 0xA6, 0xD8, 0x21, 0xF4, 0x80, 0x41, -0x89, 0xB2, 0xA2, 0xE7, 0x90, 0xF8, 0xAE, 0x40, 0x95, 0xE7, 0x90, 0xF8, 0xB1, 0x20, 0x21, 0xF0, 0x07, 0x01, 0x19, 0x43, -0x00, 0x2A, 0x98, 0xD0, 0x41, 0xF4, 0x00, 0x71, 0x89, 0xB2, 0x94, 0xE7, 0x21, 0xF0, 0x7F, 0x01, 0x19, 0x43, 0x90, 0xE7, -0x2D, 0xE9, 0xF0, 0x4F, 0x01, 0xEB, 0x41, 0x01, 0x00, 0xEB, 0x81, 0x01, 0x85, 0xB0, 0x4C, 0x89, 0xE6, 0x0A, 0xC4, 0xF3, -0x80, 0x22, 0x01, 0x92, 0x71, 0x07, 0x4F, 0xEA, 0x54, 0x22, 0x05, 0x46, 0x06, 0xF0, 0x04, 0x03, 0xC4, 0xF3, 0xC2, 0x27, -0x02, 0x92, 0xC4, 0xF3, 0x40, 0x2B, 0xC4, 0xF3, 0xC1, 0x1A, 0x23, 0xD5, 0x07, 0x2F, 0x50, 0xD0, 0xC4, 0xF3, 0x02, 0x19, -0x04, 0xF0, 0x0F, 0x04, 0xDF, 0xF8, 0x70, 0x83, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x22, 0xDA, -0x05, 0x2F, 0x27, 0xD9, 0x40, 0xF2, 0xB5, 0x22, 0xCA, 0x49, 0xCB, 0x48, 0x03, 0x93, 0xF2, 0xF7, 0x0B, 0xFD, 0x95, 0xF8, -0xA5, 0x20, 0x03, 0x9B, 0x05, 0x2A, 0x14, 0xD8, 0xDF, 0xE8, 0x12, 0xF0, 0xD6, 0x00, 0xD6, 0x00, 0x31, 0x01, 0x31, 0x01, -0xF4, 0x00, 0x45, 0x01, 0x16, 0xF0, 0x06, 0x09, 0x26, 0xD1, 0x04, 0xF0, 0x7F, 0x04, 0xDF, 0xF8, 0x2C, 0x83, 0xD8, 0xF8, -0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x06, 0xDB, 0x05, 0x2F, 0x17, 0xD8, 0xDF, 0xE8, 0x07, 0xF0, 0x22, 0x22, -0x0F, 0x0F, 0x50, 0x91, 0x95, 0xF8, 0xA5, 0x10, 0x05, 0x29, 0xF4, 0xD8, 0xDF, 0xE8, 0x11, 0xF0, 0xBD, 0x00, 0xBD, 0x00, -0x15, 0x01, 0x15, 0x01, 0xD8, 0x00, 0x29, 0x01, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, -0xDF, 0x80, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xC4, 0xF3, 0xC1, 0x09, 0x04, 0xF0, 0x07, 0x04, 0xD5, 0xE7, 0x4F, 0xF0, -0x00, 0x09, 0x4C, 0x46, 0xAE, 0xE7, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x03, 0x2C, 0x04, 0xD8, 0x95, 0xF8, -0xB2, 0x10, 0x01, 0x29, 0x00, 0xF0, 0x7B, 0x81, 0x00, 0x2A, 0xE6, 0xDA, 0xBB, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x2E, 0x81, -0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x1C, 0x81, 0xB9, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0xDC, 0x81, 0x95, 0xF8, 0xAD, 0x30, -0xA3, 0x42, 0x00, 0xF2, 0xC9, 0x81, 0x95, 0xF8, 0xAE, 0x30, 0xA3, 0x42, 0xC0, 0xF0, 0xEE, 0x81, 0xB5, 0xF8, 0xAA, 0x30, -0x23, 0xFA, 0x04, 0xF4, 0xE2, 0x07, 0xCA, 0xD4, 0x93, 0x49, 0x95, 0x48, 0x40, 0xF2, 0x06, 0x32, 0x3B, 0xE0, 0xD8, 0xF8, -0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xBF, 0xDA, 0x01, 0x9B, 0x00, 0x2B, 0x40, 0xF0, 0xCB, 0x81, 0x95, 0xF8, -0xB1, 0x30, 0x5B, 0x45, 0xC0, 0xF0, 0x52, 0x82, 0x95, 0xF8, 0xAF, 0x30, 0x53, 0x45, 0xC0, 0xF0, 0x3F, 0x82, 0x95, 0xF8, -0xB0, 0x30, 0x4B, 0x45, 0xC0, 0xF0, 0x2C, 0x82, 0x95, 0xF8, 0xAC, 0x30, 0xA3, 0x42, 0xC0, 0xF0, 0x19, 0x82, 0xB5, 0xF8, -0xA6, 0x30, 0x4F, 0xEA, 0x49, 0x02, 0x13, 0x41, 0x03, 0xF0, 0x03, 0x03, 0x07, 0x33, 0x9C, 0x42, 0x00, 0xF3, 0x82, 0x81, -0x06, 0x2C, 0x00, 0xF0, 0x3E, 0x81, 0x09, 0x2C, 0x97, 0xD1, 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x4B, 0x82, 0xB9, 0xF1, -0x02, 0x0F, 0x90, 0xD0, 0xB9, 0xF1, 0x05, 0x0F, 0x8D, 0xD0, 0x75, 0x49, 0x77, 0x48, 0x4F, 0xF4, 0x48, 0x72, 0x05, 0xB0, -0xBD, 0xE8, 0xF0, 0x4F, 0xF2, 0xF7, 0x5C, 0xBC, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, -0x7E, 0xAF, 0x02, 0x9B, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF0, 0x21, 0x82, 0x95, 0xF8, 0xAF, 0x30, 0x53, 0x45, -0xC0, 0xF0, 0x9E, 0x81, 0x95, 0xF8, 0xB0, 0x30, 0x4B, 0x45, 0xC0, 0xF0, 0xD1, 0x81, 0x95, 0xF8, 0xAC, 0x30, 0xA3, 0x42, -0xC0, 0xF0, 0xBE, 0x81, 0xB5, 0xF8, 0xA6, 0x30, 0x4F, 0xEA, 0x49, 0x09, 0x43, 0xFA, 0x09, 0xF3, 0x03, 0xF0, 0x03, 0x03, -0x5B, 0x00, 0x07, 0x33, 0x9C, 0x42, 0x7F, 0xF7, 0x5C, 0xAF, 0x5C, 0x49, 0x5F, 0x48, 0x40, 0xF2, 0x2F, 0x32, 0xCC, 0xE7, -0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xBF, 0xF6, 0x36, 0xAF, 0x16, 0xF0, 0x06, 0x0F, 0x40, 0xF0, -0x2A, 0x81, 0x05, 0x2F, 0x3F, 0xF6, 0x49, 0xAF, 0x01, 0xA3, 0x53, 0xF8, 0x27, 0xF0, 0x00, 0xBF, 0xE7, 0x21, 0x15, 0x00, -0xE7, 0x21, 0x15, 0x00, 0x8D, 0x23, 0x15, 0x00, 0x8D, 0x23, 0x15, 0x00, 0x43, 0x22, 0x15, 0x00, 0xC5, 0x22, 0x15, 0x00, -0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x95, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x60, 0xD8, 0x00, 0x2A, 0xBF, 0xF6, -0x14, 0xAF, 0x04, 0x2F, 0x3F, 0xF4, 0x6B, 0xAF, 0x00, 0x2F, 0x3F, 0xF4, 0x38, 0xAF, 0x42, 0x49, 0x46, 0x48, 0x4F, 0xF4, -0x36, 0x72, 0xF2, 0xF7, 0xF9, 0xFB, 0x06, 0xE7, 0x01, 0x9B, 0x00, 0x2B, 0x40, 0xF0, 0x64, 0x81, 0x95, 0xF8, 0xB1, 0x30, -0x5B, 0x45, 0xC0, 0xF0, 0x51, 0x81, 0x95, 0xF8, 0xAF, 0x30, 0x53, 0x45, 0xC0, 0xF0, 0xD5, 0x80, 0x95, 0xF8, 0xB0, 0x30, -0x4B, 0x45, 0xC0, 0xF0, 0xC2, 0x80, 0x95, 0xF8, 0xAC, 0x30, 0xA3, 0x42, 0xC0, 0xF0, 0xD9, 0x80, 0x4D, 0x44, 0x95, 0xF8, -0xA6, 0x30, 0x23, 0xFA, 0x04, 0xF4, 0xE3, 0x07, 0x3F, 0xF5, 0x01, 0xAF, 0x2E, 0x49, 0x34, 0x48, 0x40, 0xF2, 0x12, 0x32, -0x71, 0xE7, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x95, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x77, 0xD8, 0x00, 0x2A, -0xBF, 0xF6, 0xD7, 0xAE, 0x00, 0x2B, 0xA2, 0xD0, 0x25, 0x49, 0x2C, 0x48, 0x40, 0xF2, 0xCA, 0x22, 0xF2, 0xF7, 0xC0, 0xFB, -0xCD, 0xE6, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x95, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x56, 0xD8, 0x00, 0x2A, -0xBF, 0xF6, 0xC3, 0xAE, 0x05, 0x2F, 0x3F, 0xF4, 0x5C, 0xAF, 0x00, 0x2F, 0x3F, 0xF4, 0xE7, 0xAE, 0x19, 0x49, 0x21, 0x48, -0x40, 0xF2, 0xE7, 0x22, 0xF2, 0xF7, 0xA8, 0xFB, 0xB5, 0xE6, 0x00, 0x2A, 0xBF, 0xF6, 0xB3, 0xAE, 0x04, 0x2F, 0x3F, 0xF4, -0x0A, 0xAF, 0x13, 0x49, 0x1B, 0x48, 0x4F, 0xF4, 0x37, 0x72, 0xF2, 0xF7, 0x9B, 0xFB, 0xA8, 0xE6, 0x0F, 0x49, 0x19, 0x48, -0x40, 0xF2, 0x02, 0x32, 0xF2, 0xF7, 0x94, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, -0xD7, 0xAE, 0xB4, 0xE6, 0x08, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x01, 0x32, 0xF2, 0xF7, 0x86, 0xFB, 0xD8, 0xF8, 0x00, 0x30, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xA8, 0xAE, 0xBA, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0xC5, 0xAE, 0xDF, 0xE7, -0x70, 0x79, 0x15, 0x00, 0x08, 0xC6, 0x15, 0x00, 0xB0, 0xC7, 0x15, 0x00, 0xF0, 0xC8, 0x15, 0x00, 0xA8, 0xC9, 0x15, 0x00, -0xA8, 0xC6, 0x15, 0x00, 0x3C, 0xC8, 0x15, 0x00, 0x48, 0xC6, 0x15, 0x00, 0x04, 0xC7, 0x15, 0x00, 0xE8, 0xC6, 0x15, 0x00, -0x64, 0xC7, 0x15, 0x00, 0x58, 0xC7, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x2A, 0xBF, 0xF6, 0x6C, 0xAE, 0x05, 0x2F, -0x3F, 0xF4, 0x05, 0xAF, 0xA9, 0x49, 0xAA, 0x48, 0x40, 0xF2, 0xEB, 0x22, 0xF2, 0xF7, 0x54, 0xFB, 0x61, 0xE6, 0x00, 0x2A, -0xBF, 0xF6, 0x5F, 0xAE, 0xBA, 0x1E, 0x01, 0x2A, 0x7F, 0xF6, 0x54, 0xAF, 0xA2, 0x49, 0xA4, 0x48, 0x40, 0xF2, 0xCE, 0x22, -0xF2, 0xF7, 0x46, 0xFB, 0x53, 0xE6, 0x00, 0x2A, 0xBF, 0xF6, 0x6B, 0xAE, 0x01, 0x9B, 0x00, 0x2B, 0x7F, 0xF4, 0x80, 0xAE, -0x40, 0xF2, 0xFB, 0x22, 0x9A, 0x49, 0x9D, 0x48, 0xF2, 0xF7, 0x38, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x20, -0x72, 0xE6, 0xBA, 0xF1, 0x02, 0x0F, 0x7F, 0xF4, 0x58, 0xAE, 0xB9, 0xF1, 0x03, 0x0F, 0x03, 0xD0, 0xB9, 0xF1, 0x06, 0x0F, -0x7F, 0xF4, 0x51, 0xAE, 0x90, 0x49, 0x94, 0x48, 0x40, 0xF2, 0x1F, 0x32, 0xC1, 0xE6, 0x8E, 0x49, 0x92, 0x48, 0x4F, 0xF4, -0x44, 0x72, 0xF2, 0xF7, 0x1D, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x31, 0xAF, -0x3D, 0xE6, 0x87, 0x49, 0x8C, 0x48, 0x40, 0xF2, 0x0F, 0x32, 0xF2, 0xF7, 0x0F, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x1E, 0xAF, 0x2F, 0xE6, 0x80, 0x49, 0x86, 0x48, 0x40, 0xF2, 0x11, 0x32, 0xF2, 0xF7, -0x01, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x1A, 0xAF, 0x21, 0xE6, 0x79, 0x49, -0x80, 0x48, 0x40, 0xF2, 0xC2, 0x22, 0xF2, 0xF7, 0xF3, 0xFA, 0x00, 0xE6, 0x75, 0x49, 0x7E, 0x48, 0x40, 0xF2, 0x1E, 0x32, -0xF2, 0xF7, 0xEC, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x71, 0xAE, 0x0C, 0xE6, -0x6E, 0x49, 0x78, 0x48, 0x4F, 0xF4, 0x41, 0x72, 0xF2, 0xF7, 0xDE, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xFF, 0xF6, 0x2A, 0xAE, 0xFE, 0xE5, 0x67, 0x49, 0x72, 0x48, 0x40, 0xF2, 0x03, 0x32, 0xF2, 0xF7, 0xD0, 0xFA, -0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x17, 0xAE, 0xF0, 0xE5, 0x60, 0x49, 0x6C, 0x48, -0x40, 0xF2, 0x19, 0x32, 0xF2, 0xF7, 0xC2, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, -0x28, 0xAE, 0xE2, 0xE5, 0x59, 0x49, 0x66, 0x48, 0x40, 0xF2, 0x05, 0x32, 0xF2, 0xF7, 0xB4, 0xFA, 0xD8, 0xF8, 0x00, 0x30, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x05, 0xAE, 0xD4, 0xE5, 0x52, 0x49, 0x58, 0x48, 0x4F, 0xF4, 0x4B, 0x72, -0xF2, 0xF7, 0xA6, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x55, 0xAE, 0xC6, 0xE5, -0x4B, 0x49, 0x59, 0x48, 0x40, 0xF2, 0x0E, 0x32, 0xF2, 0xF7, 0x98, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xFF, 0xF6, 0xA2, 0xAE, 0xB8, 0xE5, 0x44, 0x49, 0x50, 0x48, 0x40, 0xF2, 0x0D, 0x32, 0xF2, 0xF7, 0x8A, 0xFA, -0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x8F, 0xAE, 0xAA, 0xE5, 0x3D, 0x49, 0x44, 0x48, -0x40, 0xF2, 0x2E, 0x32, 0xF2, 0xF7, 0x7C, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, -0x35, 0xAE, 0x9C, 0xE5, 0x36, 0x49, 0x3B, 0x48, 0x40, 0xF2, 0x2D, 0x32, 0xF2, 0xF7, 0x6E, 0xFA, 0xD8, 0xF8, 0x00, 0x30, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x22, 0xAE, 0x8E, 0xE5, 0x2F, 0x49, 0x36, 0x48, 0x40, 0xF2, 0x1D, 0x32, -0xF2, 0xF7, 0x60, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0xDA, 0xAD, 0x80, 0xE5, -0x28, 0x49, 0x2D, 0x48, 0x4F, 0xF4, 0x47, 0x72, 0xF2, 0xF7, 0x52, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xFF, 0xF6, 0xC7, 0xAD, 0x72, 0xE5, 0x21, 0x49, 0x27, 0x48, 0x40, 0xF2, 0x1B, 0x32, 0xF2, 0xF7, 0x44, 0xFA, -0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0xB4, 0xAD, 0x64, 0xE5, 0x1A, 0x49, 0x28, 0x48, -0x40, 0xF2, 0x1A, 0x32, 0xF2, 0xF7, 0x36, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, -0xA1, 0xAD, 0x56, 0xE5, 0x13, 0x49, 0x22, 0x48, 0x40, 0xF2, 0x2B, 0x32, 0xF2, 0xF7, 0x28, 0xFA, 0xD8, 0xF8, 0x00, 0x30, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0xD2, 0xAD, 0x48, 0xE5, 0xBA, 0xF1, 0x02, 0x0F, 0x08, 0xD1, 0xB9, 0xF1, -0x05, 0x0F, 0x7F, 0xF4, 0x42, 0xAD, 0x09, 0x49, 0x18, 0x48, 0x40, 0xF2, 0x21, 0x32, 0xB2, 0xE5, 0xBA, 0xF1, 0x03, 0x0F, -0x7F, 0xF4, 0x39, 0xAD, 0xB9, 0xF1, 0x02, 0x0F, 0x7F, 0xF4, 0x35, 0xAD, 0x02, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x22, 0x32, -0xA5, 0xE5, 0x00, 0xBF, 0x70, 0x79, 0x15, 0x00, 0xD8, 0x93, 0x15, 0x00, 0x64, 0xC6, 0x15, 0x00, 0x48, 0xC7, 0x15, 0x00, -0xAC, 0xC8, 0x15, 0x00, 0x10, 0xC8, 0x15, 0x00, 0xFC, 0xC7, 0x15, 0x00, 0x24, 0xC8, 0x15, 0x00, 0x28, 0xC6, 0x15, 0x00, -0x64, 0xC8, 0x15, 0x00, 0x80, 0xC7, 0x15, 0x00, 0x74, 0xC7, 0x15, 0x00, 0xD4, 0xC7, 0x15, 0x00, 0x98, 0xC7, 0x15, 0x00, -0xE4, 0xC7, 0x15, 0x00, 0xA0, 0xC9, 0x15, 0x00, 0x34, 0xC9, 0x15, 0x00, 0x68, 0xC9, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0x04, 0x46, 0x04, 0xF0, 0x89, 0xFD, 0x94, 0xF8, 0xA5, 0x10, 0x94, 0xF8, 0xAF, 0x20, 0xCB, 0x02, 0x9B, 0xB2, 0x92, 0xB3, -0x55, 0x1E, 0xED, 0xB2, 0x05, 0x29, 0x2B, 0xD8, 0xDF, 0xE8, 0x01, 0xF0, 0x6D, 0x6D, 0x2F, 0x2F, 0x94, 0x03, 0x94, 0xF8, -0xAD, 0x10, 0x03, 0x29, 0x00, 0xF2, 0xD1, 0x80, 0x06, 0x05, 0x40, 0xF1, 0xCE, 0x80, 0x94, 0xF8, 0xAE, 0x60, 0xB4, 0xF8, -0xAA, 0x20, 0x73, 0x1A, 0x01, 0x33, 0x00, 0xF0, 0x7F, 0x07, 0x97, 0xFB, 0xF3, 0xF5, 0x03, 0xFB, 0x15, 0x73, 0x19, 0x44, -0xC9, 0xB2, 0x22, 0xFA, 0x01, 0xF3, 0x13, 0xF0, 0x01, 0x0F, 0x08, 0xBF, 0x31, 0x46, 0x00, 0x29, 0x00, 0xF0, 0x3F, 0x81, -0x94, 0xF8, 0xB2, 0x20, 0x00, 0xF4, 0x80, 0x63, 0x43, 0xEA, 0x82, 0x23, 0x0B, 0x43, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, -0xF0, 0x81, 0x15, 0x46, 0xCC, 0xE7, 0x94, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x01, 0xD8, 0x06, 0x05, 0xD5, 0xD4, 0x94, 0xF8, -0xB0, 0x70, 0x94, 0xF8, 0xAC, 0x60, 0x94, 0xF8, 0xB1, 0xC0, 0x01, 0x37, 0xC0, 0xF3, 0xC1, 0x01, 0xB1, 0xFB, 0xF7, 0xFE, -0x07, 0xFB, 0x1E, 0x11, 0x0C, 0x44, 0x06, 0xF1, 0x01, 0x0E, 0x00, 0xF0, 0x07, 0x08, 0x94, 0xF8, 0xA6, 0x70, 0xB8, 0xFB, -0xFE, 0xF4, 0x0E, 0xFB, 0x14, 0x84, 0xE7, 0x40, 0xFF, 0x07, 0x48, 0xBF, 0xE6, 0xB2, 0x52, 0x1B, 0x0C, 0xF1, 0x01, 0x04, -0xC0, 0xF3, 0x40, 0x2C, 0x01, 0x32, 0xC0, 0xF3, 0xC1, 0x10, 0xBC, 0xFB, 0xF4, 0xF7, 0xC9, 0x00, 0x04, 0xFB, 0x17, 0xC4, -0x41, 0xEA, 0x44, 0x21, 0x90, 0xFB, 0xF2, 0xF4, 0x02, 0xFB, 0x14, 0x00, 0x05, 0x44, 0x0B, 0x43, 0x43, 0xEA, 0xC5, 0x13, -0x9B, 0xB2, 0x33, 0x43, 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x94, 0xF8, 0xAE, 0x70, 0x94, 0xF8, 0xAD, 0x20, 0xB4, 0xF8, -0xAA, 0x50, 0xB9, 0x1A, 0x01, 0x31, 0x00, 0xF0, 0x7F, 0x0C, 0x9C, 0xFB, 0xF1, 0xF6, 0x01, 0xFB, 0x16, 0xC1, 0x0A, 0x44, -0xD2, 0xB2, 0x25, 0xFA, 0x02, 0xF1, 0x11, 0xF0, 0x01, 0x0F, 0x08, 0xBF, 0x3A, 0x46, 0x13, 0x43, 0x00, 0x2A, 0x00, 0xF0, -0xA2, 0x80, 0x01, 0x3A, 0xD2, 0xB2, 0x02, 0x2A, 0x9E, 0xD8, 0x94, 0xF8, 0xB2, 0x20, 0x00, 0xF4, 0x80, 0x60, 0x40, 0xEA, -0x82, 0x20, 0x03, 0x43, 0x9B, 0xB2, 0x95, 0xE7, 0x94, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x40, 0xF2, 0x8C, 0x80, 0x94, 0xF8, -0xB0, 0x10, 0xB4, 0xF8, 0xA6, 0x70, 0x94, 0xF8, 0xAC, 0xC0, 0x94, 0xF8, 0xB1, 0x40, 0x4E, 0x1C, 0xC0, 0xF3, 0x02, 0x11, -0xB1, 0xFB, 0xF6, 0xFE, 0x06, 0xFB, 0x1E, 0x11, 0x4E, 0x00, 0x37, 0x41, 0x07, 0xF0, 0x03, 0x07, 0x0C, 0xF1, 0x01, 0x06, -0x00, 0xF0, 0x0F, 0x0C, 0x07, 0x37, 0xBC, 0xFB, 0xF6, 0xFE, 0x06, 0xFB, 0x1E, 0xCC, 0xBC, 0x45, 0xCE, 0xB2, 0xA2, 0xEB, -0x05, 0x02, 0x40, 0xF3, 0x81, 0x80, 0x02, 0xF1, 0x01, 0x0C, 0xC0, 0xF3, 0xC1, 0x1E, 0x9E, 0xFB, 0xFC, 0xF2, 0x0C, 0xFB, -0x12, 0xE2, 0x15, 0x44, 0xFF, 0xB2, 0xED, 0xB2, 0x09, 0x2F, 0x40, 0xF0, 0xAE, 0x80, 0x00, 0x2D, 0x40, 0xF0, 0x98, 0x80, -0x02, 0x29, 0x00, 0xF0, 0xC0, 0x80, 0x05, 0x2E, 0x14, 0xBF, 0x4F, 0xF0, 0x08, 0x0C, 0x4F, 0xF0, 0x09, 0x0C, 0x09, 0x01, -0x09, 0xB2, 0x00, 0x25, 0x76, 0xE0, 0x94, 0xF8, 0xB0, 0x70, 0xB4, 0xF8, 0xA6, 0x60, 0x94, 0xF8, 0xAC, 0xC0, 0x79, 0x1C, -0xC0, 0xF3, 0x02, 0x17, 0xB7, 0xFB, 0xF1, 0xFE, 0x01, 0xFB, 0x1E, 0x77, 0x79, 0x00, 0x0E, 0x41, 0x06, 0xF0, 0x03, 0x06, -0x0C, 0xF1, 0x01, 0x0C, 0x00, 0xF0, 0x0F, 0x01, 0x76, 0x00, 0x07, 0x36, 0xB1, 0xFB, 0xFC, 0xFE, 0x0C, 0xFB, 0x1E, 0x11, -0xB1, 0x42, 0xC0, 0xF3, 0x41, 0x2C, 0xA2, 0xEB, 0x05, 0x02, 0xC8, 0xBF, 0xF1, 0xB2, 0x02, 0xF1, 0x01, 0x02, 0xC0, 0xF3, -0xC1, 0x1E, 0xD8, 0xBF, 0xC9, 0xB2, 0xBC, 0xF1, 0x03, 0x0F, 0x18, 0xBF, 0x4F, 0xEA, 0x4C, 0x26, 0x9E, 0xFB, 0xF2, 0xFC, -0x02, 0xFB, 0x1C, 0xEC, 0x94, 0xF8, 0xBC, 0x20, 0x65, 0x44, 0x08, 0xBF, 0x4F, 0xF4, 0x80, 0x66, 0xED, 0xB2, 0xEA, 0xB1, -0x02, 0x29, 0x1A, 0xD0, 0x94, 0xF8, 0xBD, 0x20, 0x8A, 0x42, 0x16, 0xD3, 0x94, 0xF8, 0xBE, 0xC0, 0xFA, 0xB2, 0x94, 0x45, -0x11, 0xD3, 0x94, 0xF8, 0xBF, 0x20, 0xAA, 0x42, 0x0D, 0xD3, 0x00, 0xF4, 0x80, 0x42, 0x12, 0xB2, 0x0A, 0xE0, 0x07, 0x05, -0x7F, 0xF5, 0x71, 0xAF, 0xE1, 0xE6, 0x43, 0xF4, 0x80, 0x63, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x22, -0x43, 0xEA, 0x07, 0x13, 0x43, 0xEA, 0xC5, 0x15, 0x29, 0x43, 0x31, 0x43, 0x42, 0xEA, 0x01, 0x03, 0x9B, 0xB2, 0x18, 0x46, -0xBD, 0xE8, 0xF0, 0x81, 0x57, 0x1C, 0xC0, 0xF3, 0xC1, 0x1E, 0x9E, 0xFB, 0xF7, 0xF2, 0x07, 0xFB, 0x12, 0xE2, 0x15, 0x44, -0xBC, 0xF1, 0x06, 0x0F, 0xED, 0xB2, 0x5F, 0xFA, 0x8C, 0xF7, 0x7F, 0xF4, 0x7B, 0xAF, 0x02, 0x2D, 0x20, 0xD0, 0x09, 0x01, -0x09, 0xB2, 0xED, 0x01, 0x01, 0x34, 0xC0, 0xF3, 0x40, 0x20, 0xB0, 0xFB, 0xF4, 0xF2, 0x04, 0xFB, 0x12, 0x00, 0x43, 0xEA, -0x40, 0x23, 0x2B, 0x43, 0x0B, 0x43, 0x4C, 0xEA, 0x03, 0x03, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x4F, 0xF4, -0x80, 0x63, 0xC5, 0xE6, 0x02, 0x2D, 0x16, 0xD1, 0x05, 0x29, 0x2D, 0xD0, 0x09, 0x01, 0x09, 0xB2, 0xBC, 0x46, 0x4F, 0xF4, -0x80, 0x75, 0xE1, 0xE7, 0x03, 0x29, 0x16, 0xD0, 0x06, 0x29, 0x14, 0xD0, 0x09, 0x01, 0x09, 0xB2, 0x4F, 0xF4, 0x80, 0x75, -0xD8, 0xE7, 0x09, 0x01, 0x09, 0xB2, 0xED, 0x01, 0x0F, 0xFA, 0x87, 0xFC, 0xD2, 0xE7, 0x03, 0x2D, 0x1B, 0xD1, 0x02, 0x29, -0x0F, 0xD0, 0x09, 0x01, 0x09, 0xB2, 0xBC, 0x46, 0x4F, 0xF4, 0xC0, 0x75, 0xC8, 0xE7, 0x71, 0x1E, 0xC9, 0xB2, 0x09, 0x01, -0x4F, 0xF0, 0x06, 0x0C, 0x4F, 0xF4, 0x80, 0x75, 0xC0, 0xE7, 0xBC, 0x46, 0x43, 0xE7, 0xBC, 0x46, 0x10, 0x21, 0x4F, 0xF4, -0xC0, 0x75, 0xB9, 0xE7, 0xBC, 0x46, 0x40, 0x21, 0x4F, 0xF4, 0x80, 0x75, 0xB4, 0xE7, 0x09, 0x01, 0x09, 0xB2, 0xED, 0x01, -0xBC, 0x46, 0xAF, 0xE7, 0xB0, 0xF8, 0xB4, 0x30, 0x00, 0x2B, 0x4A, 0xD0, 0x2D, 0xE9, 0xF0, 0x4F, 0x03, 0xF1, 0xFF, 0x3B, -0x1F, 0xFA, 0x8B, 0xFB, 0xBB, 0xF1, 0x01, 0x0F, 0x85, 0xB0, 0x8A, 0x46, 0x00, 0xF1, 0x10, 0x09, 0x3A, 0xD9, 0x01, 0x25, -0x2F, 0x46, 0x0A, 0xF1, 0x04, 0x04, 0x4E, 0x46, 0x00, 0x21, 0x0D, 0xE0, 0x13, 0x43, 0x04, 0xD1, 0x73, 0x7A, 0x13, 0xB9, -0x73, 0x7D, 0x01, 0x2B, 0x0B, 0xD0, 0x01, 0x35, 0xAF, 0xB2, 0x06, 0xF1, 0x0C, 0x08, 0x5F, 0x45, 0x46, 0x46, 0x20, 0xD2, -0x22, 0x68, 0x54, 0xF8, 0x04, 0x3F, 0x9A, 0x42, 0xEC, 0xD9, 0x0C, 0x22, 0x06, 0xEB, 0x02, 0x08, 0x31, 0x46, 0x01, 0xA8, -0x04, 0xF0, 0x3E, 0xFB, 0x30, 0x46, 0x41, 0x46, 0x0C, 0x22, 0x04, 0xF0, 0x39, 0xFB, 0x0C, 0x22, 0x01, 0xA9, 0x40, 0x46, -0x04, 0xF0, 0x34, 0xFB, 0x01, 0x35, 0x54, 0xE9, 0x01, 0x32, 0x39, 0x46, 0xAF, 0xB2, 0x5F, 0x45, 0x44, 0xF8, 0x04, 0x2C, -0x23, 0x60, 0x46, 0x46, 0xDE, 0xD3, 0x19, 0xB1, 0x8B, 0x46, 0xBB, 0xF1, 0x01, 0x0F, 0xC4, 0xD8, 0x05, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x4F, 0xB0, 0xF8, 0xB4, 0x50, 0x83, 0xB0, 0x06, 0x46, 0x89, 0x46, 0x00, 0x2D, -0x00, 0xF0, 0xE2, 0x80, 0x6F, 0x1E, 0x1F, 0xFA, 0x87, 0xF8, 0x08, 0xEB, 0x48, 0x08, 0x00, 0xF1, 0x0C, 0x03, 0x03, 0xEB, -0x88, 0x08, 0x04, 0x46, 0x4F, 0xF0, 0x00, 0x0A, 0x41, 0xF6, 0x98, 0x1B, 0x60, 0x89, 0xFE, 0xF7, 0xAD, 0xFE, 0x30, 0xB9, -0x63, 0x7B, 0x23, 0xB1, 0x23, 0x89, 0x5B, 0x45, 0x07, 0xD8, 0x4F, 0xF0, 0x01, 0x0A, 0x0C, 0x34, 0x44, 0x45, 0xF1, 0xD1, -0x4F, 0xEA, 0xCA, 0x00, 0x40, 0xB2, 0x96, 0xF8, 0xA2, 0x40, 0x24, 0xF0, 0x08, 0x04, 0x04, 0x43, 0xE4, 0xB2, 0x86, 0xF8, -0xA2, 0x40, 0x14, 0xF0, 0x02, 0x04, 0x09, 0xD1, 0x05, 0xF1, 0x80, 0x43, 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x20, 0x59, 0xF8, -0x23, 0x30, 0x9A, 0x42, 0x00, 0xF2, 0x9C, 0x80, 0x1F, 0xFA, 0x87, 0xFB, 0xCD, 0xF8, 0x00, 0xB0, 0x4F, 0xF0, 0x02, 0x08, -0x00, 0x9C, 0xA6, 0xF8, 0x88, 0xB0, 0x04, 0xEB, 0x44, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x58, 0x89, 0xFE, 0xF7, 0x7A, 0xFE, -0x63, 0x00, 0x01, 0x93, 0xE0, 0xB9, 0x00, 0x2F, 0x13, 0xDD, 0x82, 0x46, 0x84, 0x46, 0x0C, 0xEB, 0x4C, 0x0C, 0x06, 0xEB, -0x8C, 0x04, 0x60, 0x89, 0xFE, 0xF7, 0x6C, 0xFE, 0x0A, 0xF1, 0x01, 0x03, 0x1F, 0xFA, 0x83, 0xFA, 0xD4, 0x46, 0x10, 0xB1, -0x4F, 0xF0, 0x00, 0x03, 0xA3, 0x73, 0xBA, 0x45, 0xED, 0xDB, 0xDD, 0xE9, 0x00, 0x23, 0x13, 0x44, 0x06, 0xEB, 0x83, 0x04, -0x01, 0x23, 0xA3, 0x73, 0xA8, 0x45, 0xA6, 0xF8, 0x8A, 0xB0, 0x76, 0xD2, 0xA5, 0xEB, 0x08, 0x03, 0x03, 0xEB, 0x43, 0x03, -0x06, 0xEB, 0x83, 0x03, 0x03, 0xE0, 0x1F, 0xFA, 0x80, 0xF8, 0xA8, 0x45, 0x6B, 0xD0, 0x99, 0x7B, 0x08, 0xF1, 0x01, 0x00, -0x0C, 0x3B, 0x00, 0x29, 0xF5, 0xD0, 0xA5, 0xEB, 0x08, 0x00, 0x08, 0xF1, 0x01, 0x08, 0x1F, 0xFA, 0x88, 0xF8, 0x80, 0xB2, -0x45, 0x45, 0xA6, 0xF8, 0x8A, 0x00, 0x58, 0xD9, 0xA5, 0xEB, 0x08, 0x05, 0xA7, 0xEB, 0x08, 0x08, 0x4F, 0xEA, 0x18, 0x48, -0x05, 0xEB, 0x45, 0x03, 0x4F, 0xEA, 0x08, 0x48, 0x06, 0xEB, 0x83, 0x03, 0x02, 0xE0, 0x01, 0x3D, 0x45, 0x45, 0x48, 0xD0, -0x99, 0x7B, 0x0C, 0x3B, 0x00, 0x29, 0xF8, 0xD0, 0x05, 0xEB, 0x45, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x59, 0xF8, 0x25, 0x20, -0xB3, 0xF8, 0x08, 0xE0, 0x30, 0xB3, 0x31, 0x46, 0x00, 0x23, 0x4F, 0xF2, 0x32, 0x38, 0x0C, 0xE0, 0x59, 0xF8, 0x23, 0x70, -0x97, 0x42, 0x02, 0xD3, 0xA6, 0x46, 0x3A, 0x46, 0x1D, 0x46, 0x01, 0x33, 0x9C, 0xB2, 0xA0, 0x42, 0x01, 0xF1, 0x0C, 0x01, -0x14, 0xD9, 0x8C, 0x7B, 0x9F, 0xB2, 0x00, 0x2C, 0xF5, 0xD0, 0x5F, 0x45, 0xF3, 0xD0, 0x0C, 0x89, 0x44, 0x45, 0xE9, 0xD8, -0x74, 0x45, 0xEE, 0xD3, 0x59, 0xF8, 0x23, 0x20, 0x1D, 0x46, 0x01, 0x33, 0xA6, 0x46, 0x9C, 0xB2, 0xA0, 0x42, 0x01, 0xF1, -0x0C, 0x01, 0xEA, 0xD8, 0x00, 0x23, 0xA6, 0xF8, 0x8C, 0x50, 0xA6, 0xF8, 0x8E, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x07, 0xEB, 0x47, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x5B, 0x7B, 0x00, 0x2B, 0x3F, 0xF4, 0x5C, 0xAF, 0x00, 0x94, 0xA3, 0x46, -0x4F, 0xF0, 0x01, 0x08, 0x5C, 0xE7, 0x05, 0x46, 0xB8, 0xE7, 0x5D, 0x46, 0x58, 0x46, 0xB5, 0xE7, 0x28, 0x46, 0x4F, 0xF0, -0xFF, 0x37, 0x38, 0xE7, 0xC1, 0xF3, 0xC2, 0x23, 0x05, 0x2B, 0x5B, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x03, 0x03, 0x27, 0x27, -0x0B, 0x32, 0xB0, 0xF8, 0xAA, 0x00, 0x01, 0xF0, 0x7F, 0x01, 0xC8, 0x40, 0x00, 0xF0, 0x01, 0x00, 0x70, 0x47, 0xC1, 0xF3, -0x02, 0x12, 0xB0, 0xF8, 0xA6, 0x00, 0x53, 0x00, 0x18, 0x41, 0x00, 0xF0, 0x03, 0x00, 0x07, 0x30, 0x01, 0xF0, 0x0F, 0x03, -0x83, 0x42, 0xCC, 0xBF, 0x00, 0x20, 0x01, 0x20, 0x06, 0x2B, 0xC1, 0xF3, 0xC1, 0x11, 0x24, 0xD0, 0x09, 0x2B, 0x24, 0xD1, -0x21, 0xBB, 0x02, 0x2A, 0x21, 0xD0, 0x05, 0x2A, 0x18, 0xBF, 0x00, 0x20, 0x70, 0x47, 0xC1, 0xF3, 0xC1, 0x03, 0x18, 0x44, -0x01, 0xF0, 0x07, 0x01, 0x90, 0xF8, 0xA6, 0x00, 0xC8, 0x40, 0x00, 0xF0, 0x01, 0x00, 0x70, 0x47, 0xB0, 0xF8, 0xA6, 0x00, -0xC1, 0xF3, 0x02, 0x13, 0x5B, 0x00, 0x18, 0x41, 0x00, 0xF0, 0x03, 0x00, 0x40, 0x00, 0x07, 0x30, 0x01, 0xF0, 0x0F, 0x01, -0x81, 0x42, 0xCC, 0xBF, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x02, 0x29, 0x06, 0xD0, 0x70, 0x47, 0x02, 0x29, 0x09, 0xD1, -0x05, 0x2A, 0x08, 0xBF, 0x00, 0x20, 0x70, 0x47, 0x03, 0x2A, 0x09, 0xD0, 0x06, 0x2A, 0x08, 0xBF, 0x00, 0x20, 0x70, 0x47, -0x03, 0x29, 0xF0, 0xD1, 0x02, 0x2A, 0x08, 0xBF, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0xEA, 0xE7, 0x01, 0x20, 0x70, 0x47, -0x2D, 0xE9, 0xF0, 0x4F, 0x82, 0x46, 0xB0, 0xF8, 0x88, 0x70, 0xB0, 0xF8, 0x8A, 0x00, 0x9A, 0xF8, 0xAD, 0x30, 0x9A, 0xF8, -0xAE, 0x60, 0x00, 0xEB, 0x40, 0x00, 0x07, 0xEB, 0x47, 0x07, 0x83, 0xB0, 0x0A, 0xEB, 0x80, 0x0C, 0x0A, 0xEB, 0x87, 0x07, -0x14, 0x46, 0x0D, 0x46, 0x08, 0x46, 0x52, 0x00, 0x4F, 0xF0, 0xFF, 0x31, 0x7F, 0x89, 0xBC, 0xF8, 0x0A, 0x80, 0x00, 0x93, -0xCD, 0xF7, 0x86, 0xF9, 0x00, 0x2C, 0x7E, 0xD0, 0x00, 0x9B, 0xA6, 0xEB, 0x03, 0x09, 0x01, 0x3C, 0x09, 0xF1, 0x01, 0x03, -0xE4, 0xB2, 0x01, 0x93, 0x4F, 0xF0, 0x00, 0x0B, 0x5F, 0xFA, 0x8B, 0xF3, 0x05, 0x2B, 0x5E, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, -0x59, 0x41, 0x32, 0x23, 0x13, 0x03, 0x41, 0x46, 0x50, 0x46, 0xFE, 0xF7, 0xF9, 0xFF, 0x80, 0x45, 0x81, 0x46, 0x52, 0xD0, -0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x5E, 0xFF, 0x00, 0x28, 0x4C, 0xD0, 0xA5, 0xF8, 0x0A, 0x90, 0x49, 0xE0, 0x41, 0x46, -0x50, 0x46, 0xFF, 0xF7, 0x77, 0xF8, 0x80, 0x45, 0x81, 0x46, 0x42, 0xD0, 0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x4E, 0xFF, -0x00, 0x28, 0x3C, 0xD0, 0xA5, 0xF8, 0x08, 0x90, 0x39, 0xE0, 0x39, 0x46, 0x50, 0x46, 0xFE, 0xF7, 0xD9, 0xFF, 0xB8, 0x42, -0x81, 0x46, 0x32, 0xD0, 0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x3E, 0xFF, 0x68, 0xB3, 0xA5, 0xF8, 0x06, 0x90, 0x2A, 0xE0, -0x39, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x58, 0xF8, 0xB8, 0x42, 0x81, 0x46, 0x23, 0xD0, 0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, -0x2F, 0xFF, 0xF0, 0xB1, 0xA5, 0xF8, 0x04, 0x90, 0x1B, 0xE0, 0x00, 0x9B, 0x03, 0x2B, 0x03, 0xD8, 0x9A, 0xF8, 0xA2, 0x30, -0x19, 0x07, 0x3B, 0xD4, 0xC7, 0xF3, 0xC2, 0x23, 0x05, 0x2B, 0x4F, 0xEA, 0xD7, 0x22, 0x23, 0xD0, 0x12, 0xF0, 0x06, 0x0F, -0x0B, 0xD0, 0x9A, 0xF8, 0xB1, 0x30, 0x01, 0x2B, 0x07, 0xD1, 0x87, 0xF4, 0x00, 0x73, 0x6B, 0x80, 0x03, 0xE0, 0x50, 0x46, -0xFF, 0xF7, 0x1E, 0xFC, 0x28, 0x80, 0x03, 0x2E, 0x09, 0xD8, 0x35, 0xF8, 0x1B, 0x20, 0x4F, 0xF6, 0xFF, 0x73, 0x9A, 0x42, -0x04, 0xBF, 0x46, 0xF4, 0x80, 0x63, 0x25, 0xF8, 0x1B, 0x30, 0x5C, 0x45, 0x0B, 0xF1, 0x01, 0x03, 0x01, 0xD0, 0x9B, 0x46, -0x8A, 0xE7, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1A, 0x4A, 0xC7, 0xF3, 0x41, 0x23, 0x01, 0x33, 0xA2, 0xFB, 0x03, 0x21, -0x21, 0xF0, 0x01, 0x02, 0x02, 0xEB, 0x51, 0x02, 0x27, 0xF4, 0xC0, 0x67, 0x9B, 0x1A, 0x47, 0xEA, 0x43, 0x23, 0x6B, 0x80, -0xBF, 0xB2, 0xD8, 0xE7, 0x04, 0xF0, 0x82, 0xF9, 0x01, 0x99, 0x00, 0xF0, 0x7F, 0x02, 0x92, 0xFB, 0xF1, 0xF3, 0x01, 0xFB, -0x13, 0x23, 0x00, 0x9A, 0x13, 0x44, 0xBA, 0xF8, 0xAA, 0x20, 0xDB, 0xB2, 0xDA, 0x40, 0xD2, 0x07, 0x0F, 0xD5, 0x00, 0x2B, -0x08, 0xBF, 0x33, 0x46, 0x5A, 0x1E, 0x02, 0x2A, 0x6B, 0x80, 0xCC, 0xD8, 0x9A, 0xF8, 0xB2, 0x10, 0x00, 0xF4, 0x80, 0x62, -0x42, 0xEA, 0x81, 0x22, 0x13, 0x43, 0x6B, 0x80, 0xC3, 0xE7, 0x33, 0x46, 0xF0, 0xE7, 0x00, 0xBF, 0xAB, 0xAA, 0xAA, 0xAA, -0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x46, 0x84, 0xB0, 0x01, 0xA9, 0x06, 0x22, 0xFF, 0xF7, 0x1C, 0xFF, 0xB5, 0xF8, 0xB4, 0x10, -0x01, 0x29, 0x30, 0xD9, 0x00, 0x26, 0x01, 0x24, 0xB0, 0x46, 0xA1, 0x46, 0x4F, 0xF6, 0xFF, 0x77, 0x18, 0xE0, 0xB5, 0xF8, -0x88, 0x20, 0xA2, 0x42, 0x21, 0xD0, 0xB5, 0xF8, 0x8A, 0x20, 0xA2, 0x42, 0x1D, 0xD0, 0xB5, 0xF8, 0x8C, 0x20, 0xA2, 0x42, -0x19, 0xD0, 0x05, 0x2E, 0x17, 0xD8, 0x04, 0xAA, 0x02, 0xEB, 0x46, 0x02, 0x32, 0xF8, 0x0C, 0xEC, 0xBE, 0x45, 0x17, 0xD1, -0xA1, 0x42, 0x06, 0xF1, 0x01, 0x06, 0x10, 0xD9, 0x04, 0xEB, 0x44, 0x03, 0x05, 0xEB, 0x83, 0x03, 0x4F, 0xEA, 0x44, 0x0C, -0xB3, 0xF9, 0x08, 0x20, 0x00, 0x2A, 0xDC, 0xDA, 0x1A, 0x7B, 0x0A, 0x2A, 0xD9, 0xD8, 0x01, 0x34, 0xA4, 0xB2, 0xA1, 0x42, -0xEE, 0xD8, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x59, 0xB1, 0x2A, 0x46, 0x00, 0x20, 0xB2, 0xF8, 0x0A, 0xA0, 0xF2, 0x45, -0x00, 0xF1, 0x01, 0x00, 0x02, 0xF1, 0x0C, 0x02, 0xDC, 0xD0, 0x88, 0x42, 0xF5, 0xD1, 0x0C, 0xEB, 0x04, 0x02, 0x05, 0xEB, -0x82, 0x02, 0xA3, 0xF8, 0x0A, 0xE0, 0xA3, 0xF8, 0x08, 0x80, 0x21, 0x46, 0x82, 0xF8, 0x0D, 0x80, 0x28, 0x46, 0xA3, 0xF8, -0x04, 0x80, 0xA3, 0xF8, 0x06, 0x80, 0x01, 0x34, 0x82, 0xF8, 0x0C, 0x80, 0x82, 0xF8, 0x0E, 0x90, 0xFF, 0xF7, 0x12, 0xF8, -0xA4, 0xB2, 0xB5, 0xF8, 0xB4, 0x10, 0xBF, 0xE7, 0x30, 0xB4, 0x90, 0xF8, 0xA5, 0x30, 0x05, 0x2B, 0x00, 0xF2, 0x8C, 0x80, -0xDF, 0xE8, 0x03, 0xF0, 0x36, 0x36, 0x03, 0x03, 0x70, 0x57, 0x90, 0xF8, 0xAF, 0x50, 0x90, 0xF8, 0xB1, 0x20, 0x90, 0xF8, -0xB0, 0x30, 0x90, 0xF8, 0xA6, 0x40, 0x01, 0x35, 0x95, 0x40, 0x03, 0xFB, 0x05, 0x55, 0xAD, 0xB2, 0x08, 0x21, 0x00, 0x23, -0x04, 0xF0, 0x01, 0x02, 0x12, 0xFB, 0x05, 0xF2, 0x13, 0x44, 0x01, 0x39, 0x9B, 0xB2, 0x4F, 0xEA, 0x54, 0x04, 0xF5, 0xD1, -0xB0, 0xF8, 0xAA, 0x20, 0x90, 0xF8, 0xB2, 0x10, 0xC2, 0xF3, 0x80, 0x04, 0xC2, 0xF3, 0x40, 0x00, 0xC1, 0xF1, 0x01, 0x01, -0x20, 0x44, 0x88, 0x40, 0x02, 0xF0, 0x01, 0x04, 0xC2, 0xF3, 0xC0, 0x02, 0x20, 0x44, 0x8A, 0x40, 0x10, 0x44, 0x18, 0x44, -0x80, 0xB2, 0x0A, 0x28, 0x28, 0xBF, 0x0A, 0x20, 0x30, 0xBC, 0x70, 0x47, 0xB0, 0xF8, 0xAA, 0x10, 0x90, 0xF8, 0xB2, 0x30, -0xC1, 0xF3, 0x80, 0x02, 0xC1, 0xF3, 0x40, 0x00, 0xC3, 0xF1, 0x01, 0x03, 0x10, 0x44, 0x98, 0x40, 0x01, 0xF0, 0x01, 0x04, -0xC1, 0xF3, 0xC0, 0x02, 0x02, 0xFA, 0x03, 0xF3, 0x20, 0x44, 0x13, 0xFA, 0x80, 0xF0, 0x80, 0xB2, 0x04, 0x23, 0x41, 0xFA, -0x03, 0xF2, 0x02, 0xF0, 0x01, 0x02, 0x01, 0x33, 0x10, 0x44, 0x0C, 0x2B, 0x80, 0xB2, 0xF6, 0xD1, 0xD9, 0xE7, 0x90, 0xF8, -0xB1, 0x30, 0xB0, 0xF8, 0xA6, 0x20, 0x90, 0xF8, 0xAF, 0x40, 0x90, 0xF8, 0xB0, 0x10, 0x58, 0x1C, 0x02, 0xF0, 0x03, 0x03, -0x04, 0xFB, 0x00, 0x00, 0x01, 0x2B, 0x01, 0xFB, 0x00, 0x00, 0x1F, 0xD0, 0x02, 0x2B, 0x14, 0xBF, 0x08, 0x23, 0x0A, 0x23, -0x10, 0xFB, 0x03, 0xF0, 0x80, 0xB2, 0xC0, 0xE7, 0xB0, 0xF8, 0xA6, 0x20, 0x90, 0xF8, 0xAF, 0x30, 0x90, 0xF8, 0xB1, 0x40, -0x90, 0xF8, 0xB0, 0x10, 0x02, 0xF0, 0x03, 0x02, 0x01, 0x33, 0x01, 0x3A, 0x03, 0xFA, 0x04, 0xF0, 0x01, 0x2A, 0x8C, 0xBF, -0x08, 0x23, 0x09, 0x23, 0x01, 0xFB, 0x00, 0x00, 0x10, 0xFB, 0x03, 0xF0, 0x80, 0xB2, 0xA8, 0xE7, 0x09, 0x23, 0xE1, 0xE7, -0x00, 0x20, 0xA7, 0xE7, 0x2D, 0xE9, 0xF8, 0x4F, 0xB0, 0xF8, 0xB4, 0x40, 0x05, 0x46, 0x00, 0x2C, 0x00, 0xF0, 0xF4, 0x80, -0x04, 0xF1, 0xFF, 0x38, 0x1F, 0xFA, 0x88, 0xF1, 0x01, 0xEB, 0x41, 0x03, 0x00, 0xF1, 0x0C, 0x01, 0x01, 0xEB, 0x83, 0x01, -0x4F, 0xF6, 0xFF, 0x76, 0x03, 0x46, 0x00, 0x22, 0x01, 0x20, 0x5E, 0x81, 0x9A, 0x80, 0xDA, 0x80, 0x1A, 0x81, 0x1A, 0x73, -0x5A, 0x73, 0x98, 0x73, 0x0C, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0xC1, 0x46, 0x95, 0xF8, 0xA5, 0x30, 0x05, 0x2B, 0x00, 0xF2, -0xD9, 0x80, 0xDF, 0xE8, 0x03, 0xF0, 0x4E, 0x4E, 0x03, 0x03, 0x8A, 0x5E, 0x95, 0xF8, 0xAD, 0x20, 0xDB, 0x02, 0x00, 0x2A, -0x00, 0xF0, 0xC7, 0x80, 0x99, 0xB2, 0x95, 0xF8, 0xB0, 0x20, 0x69, 0x81, 0xA9, 0x18, 0x95, 0xF8, 0xB1, 0x60, 0x91, 0xF8, -0xA6, 0x70, 0x95, 0xF8, 0xAF, 0x00, 0x43, 0xEA, 0x46, 0x23, 0xB7, 0xFA, 0x87, 0xF7, 0xC7, 0xF1, 0x1F, 0x07, 0x43, 0xEA, -0xC0, 0x13, 0xFF, 0xB2, 0x43, 0xEA, 0xC2, 0x03, 0x3B, 0x43, 0x9F, 0xB2, 0x09, 0xEB, 0x49, 0x09, 0x05, 0xEB, 0x89, 0x03, -0x01, 0x26, 0x46, 0x45, 0x5F, 0x81, 0x80, 0xF2, 0x9B, 0x80, 0x28, 0x46, 0xFF, 0xF7, 0x7E, 0xFA, 0xB5, 0xF8, 0xB4, 0x40, -0x00, 0x2C, 0x00, 0xF0, 0x87, 0x80, 0x2B, 0x46, 0x00, 0x22, 0x02, 0xE0, 0xA2, 0x42, 0x00, 0xF0, 0x81, 0x80, 0x59, 0x89, -0x81, 0x42, 0x02, 0xF1, 0x01, 0x02, 0x03, 0xF1, 0x0C, 0x03, 0xF5, 0xD1, 0x01, 0x3C, 0xA6, 0x42, 0xE7, 0xDB, 0x00, 0x24, -0xA1, 0xB2, 0x28, 0x46, 0xFE, 0xF7, 0x0A, 0xFF, 0xB5, 0xF8, 0xB4, 0x30, 0x01, 0x34, 0x9C, 0x42, 0xF6, 0xD3, 0xBD, 0xE8, -0xF8, 0x8F, 0x95, 0xF8, 0xAD, 0x20, 0x00, 0x2A, 0x7A, 0xD0, 0x92, 0xB2, 0x95, 0xF8, 0xB2, 0x10, 0x95, 0xF8, 0xAE, 0x70, -0x6A, 0x81, 0xDB, 0x02, 0x43, 0xEA, 0x81, 0x23, 0x3B, 0x43, 0x9F, 0xB2, 0xC2, 0xE7, 0x95, 0xF8, 0xAD, 0x30, 0x00, 0x2B, -0x67, 0xD0, 0x95, 0xF8, 0xBC, 0x30, 0x00, 0x2B, 0x0C, 0xBF, 0x4F, 0xF4, 0x28, 0x52, 0x4F, 0xF4, 0xD4, 0x42, 0x95, 0xF8, -0xB0, 0x30, 0xB5, 0xF8, 0xA6, 0x60, 0x6A, 0x81, 0x5A, 0x00, 0x16, 0x41, 0x95, 0xF8, 0xAF, 0xA0, 0x06, 0xF0, 0x03, 0x06, -0x1B, 0x01, 0x76, 0x00, 0x07, 0x36, 0x43, 0xEA, 0xCA, 0x1A, 0x4A, 0xEA, 0x06, 0x07, 0x47, 0xF4, 0x20, 0x57, 0x39, 0x46, -0x28, 0x46, 0xFF, 0xF7, 0x1B, 0xFD, 0x01, 0x3E, 0xF3, 0xB2, 0xB6, 0xB2, 0x00, 0x28, 0x99, 0xD1, 0x06, 0x2B, 0xF0, 0xD1, -0x96, 0xE7, 0x95, 0xF8, 0xB0, 0xA0, 0xB5, 0xF8, 0xA6, 0xB0, 0x95, 0xF8, 0xAF, 0x60, 0x95, 0xF8, 0xB1, 0x30, 0x4F, 0xEA, -0x4A, 0x02, 0x4B, 0xFA, 0x02, 0xFB, 0xF6, 0x01, 0x46, 0xEA, 0x43, 0x26, 0x0B, 0xF0, 0x03, 0x0B, 0x4F, 0xF4, 0x00, 0x53, -0x4F, 0xEA, 0x0A, 0x1A, 0x0B, 0xF1, 0x07, 0x0B, 0x36, 0xB2, 0x6B, 0x81, 0x4A, 0xEA, 0x0B, 0x07, 0x37, 0x43, 0x47, 0xF4, -0x00, 0x57, 0xBF, 0xB2, 0x39, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0xF0, 0xFC, 0x0B, 0xF1, 0xFF, 0x3B, 0x5F, 0xFA, 0x8B, 0xF3, -0x1F, 0xFA, 0x8B, 0xFB, 0x00, 0x28, 0x7F, 0xF4, 0x6B, 0xAF, 0x06, 0x2B, 0xEA, 0xD1, 0x67, 0xE7, 0x06, 0xEB, 0x46, 0x03, -0x01, 0x36, 0x05, 0xEB, 0x83, 0x03, 0xB6, 0xB2, 0x04, 0xF1, 0xFF, 0x38, 0x46, 0x45, 0x58, 0x81, 0xFF, 0xF6, 0x65, 0xAF, -0x00, 0x2C, 0x7F, 0xF4, 0x7A, 0xAF, 0xBD, 0xE8, 0xF8, 0x8F, 0x4F, 0xF4, 0x80, 0x62, 0x9C, 0xE7, 0x4F, 0xF4, 0x80, 0x62, -0x82, 0xE7, 0x4F, 0xF4, 0x80, 0x61, 0x36, 0xE7, 0x4F, 0xF0, 0xFF, 0x39, 0xC8, 0x46, 0x21, 0xE7, 0x00, 0x27, 0x6F, 0x81, -0x46, 0xE7, 0x00, 0xBF, 0x90, 0xF8, 0xAD, 0x30, 0x0B, 0x2B, 0xF0, 0xB4, 0x0C, 0xD9, 0x90, 0xF8, 0xA2, 0x20, 0x04, 0x23, -0x01, 0x24, 0x22, 0xF0, 0x04, 0x02, 0x13, 0x43, 0x80, 0xF8, 0xA2, 0x30, 0x01, 0xB1, 0x0C, 0x70, 0xF0, 0xBC, 0x70, 0x47, -0xB0, 0xF8, 0x88, 0x30, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, 0x5B, 0x89, 0xDB, 0x12, 0x13, 0xF0, 0x06, 0x0F, -0x04, 0xD1, 0x00, 0x23, 0x90, 0xF8, 0xA2, 0x20, 0x1C, 0x46, 0xE6, 0xE7, 0xB0, 0xF8, 0x8A, 0x30, 0x03, 0xEB, 0x43, 0x03, -0x00, 0xEB, 0x83, 0x03, 0x5B, 0x89, 0xDB, 0x12, 0x13, 0xF0, 0x06, 0x0F, 0xEF, 0xD0, 0xB0, 0xF8, 0x8C, 0x30, 0x03, 0xEB, -0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, 0x5B, 0x89, 0xDB, 0x12, 0x13, 0xF0, 0x06, 0x0F, 0xE4, 0xD0, 0x90, 0xF8, 0xA2, 0x20, -0x12, 0xF0, 0x20, 0x04, 0x20, 0xD1, 0x90, 0xF8, 0xA4, 0x30, 0x44, 0x33, 0x30, 0xF8, 0x13, 0x30, 0x03, 0xEB, 0x43, 0x03, -0x00, 0xEB, 0x83, 0x05, 0x6B, 0x89, 0x13, 0xF4, 0x00, 0x5F, 0x4F, 0xEA, 0xD3, 0x27, 0xC3, 0xF3, 0xC2, 0x26, 0x12, 0xD1, -0x17, 0xF0, 0x06, 0x0F, 0x1D, 0xD1, 0x03, 0xF0, 0x7F, 0x03, 0x02, 0x2B, 0x15, 0xD9, 0x2D, 0x89, 0x40, 0xF2, 0x8E, 0x23, -0x9D, 0x42, 0x86, 0xBF, 0x01, 0x24, 0x04, 0x23, 0x00, 0x23, 0xAA, 0xE7, 0x04, 0x23, 0x01, 0x24, 0xA7, 0xE7, 0x07, 0x2E, -0x07, 0xD0, 0x03, 0xF0, 0x0F, 0x06, 0xC3, 0xF3, 0x02, 0x13, 0x02, 0x2E, 0xEB, 0xD8, 0x00, 0x2B, 0xE9, 0xD1, 0x2D, 0x89, -0x41, 0xF6, 0x98, 0x13, 0xE8, 0xE7, 0x03, 0xF0, 0x07, 0x06, 0xC3, 0xF3, 0xC1, 0x03, 0xF2, 0xE7, 0xF8, 0xB5, 0x90, 0xF8, -0xA2, 0x60, 0x16, 0xF0, 0x10, 0x05, 0x04, 0x46, 0x35, 0xD0, 0xB0, 0xF8, 0xB4, 0x00, 0x00, 0x28, 0x5F, 0xD0, 0xB4, 0xF8, -0xBA, 0x70, 0x00, 0x23, 0x02, 0xE0, 0x82, 0x42, 0xCB, 0xB2, 0x46, 0xD2, 0x03, 0xEB, 0x43, 0x02, 0x04, 0xEB, 0x82, 0x02, -0x59, 0x1C, 0x55, 0x89, 0xBD, 0x42, 0xCA, 0xB2, 0xF3, 0xD1, 0x9A, 0xB2, 0xA4, 0xF8, 0x88, 0x20, 0xA4, 0xF8, 0x8A, 0x20, -0xA4, 0xF8, 0x8C, 0x20, 0x01, 0x38, 0x80, 0xB2, 0x04, 0xF1, 0x0C, 0x03, 0x00, 0xEB, 0x40, 0x00, 0x03, 0xEB, 0x80, 0x00, -0x00, 0x22, 0x23, 0x46, 0x9A, 0x80, 0xDA, 0x80, 0x0C, 0x33, 0x98, 0x42, 0xFA, 0xD1, 0x26, 0xF0, 0x30, 0x06, 0x46, 0xF0, -0x20, 0x06, 0x00, 0x23, 0x84, 0xF8, 0xA2, 0x60, 0x84, 0xF8, 0x9B, 0x30, 0x01, 0x25, 0x28, 0x46, 0xF8, 0xBD, 0x90, 0xF8, -0x88, 0x00, 0x0C, 0x23, 0x03, 0xFB, 0x00, 0x40, 0x04, 0x30, 0xFE, 0xF7, 0x73, 0xFC, 0xB4, 0xF8, 0xB4, 0x30, 0x00, 0x2B, -0xF1, 0xD0, 0x01, 0x3B, 0x9A, 0xB2, 0x02, 0xEB, 0x42, 0x03, 0x04, 0xF1, 0x0C, 0x02, 0x02, 0xEB, 0x83, 0x02, 0x2B, 0x46, -0xA3, 0x80, 0xE3, 0x80, 0x0C, 0x34, 0x94, 0x42, 0xFA, 0xD1, 0x28, 0x46, 0xF8, 0xBD, 0xC1, 0xD1, 0x01, 0x38, 0xC3, 0xB2, -0x03, 0xEB, 0x43, 0x03, 0x04, 0xEB, 0x83, 0x03, 0xC2, 0xB2, 0x00, 0x21, 0x5F, 0x81, 0x19, 0x81, 0xA4, 0xF8, 0x88, 0x20, -0xA4, 0xF8, 0x8A, 0x20, 0xA4, 0xF8, 0x8C, 0x20, 0xB7, 0xE7, 0xB4, 0xF8, 0xBA, 0x20, 0xA4, 0xF8, 0xFE, 0x2B, 0x4F, 0xF0, -0xFF, 0x11, 0xFF, 0x22, 0xA4, 0xF8, 0xFC, 0x0B, 0xC4, 0xF8, 0x88, 0x10, 0xA4, 0xF8, 0x8C, 0x20, 0xB7, 0xE7, 0x00, 0xBF, -0xC2, 0x6C, 0x12, 0x69, 0xC2, 0xF3, 0x07, 0x21, 0xC2, 0xF3, 0x00, 0x42, 0x0A, 0x44, 0x00, 0x23, 0x01, 0x31, 0xFE, 0xF7, -0xC9, 0xB9, 0x00, 0xBF, 0x8A, 0x1A, 0x01, 0x23, 0xFE, 0xF7, 0xC4, 0xB9, 0xC3, 0x88, 0x99, 0x04, 0x30, 0xB4, 0xC3, 0xF3, -0xC2, 0x22, 0x11, 0xD4, 0xD9, 0x0A, 0x11, 0xF0, 0x06, 0x0F, 0x4A, 0xD1, 0x13, 0xF0, 0x7C, 0x0F, 0x03, 0xF0, 0x7F, 0x02, -0x5D, 0xD1, 0xC3, 0xF3, 0x80, 0x23, 0x43, 0xEA, 0x42, 0x02, 0x3D, 0x4B, 0x30, 0xBC, 0x53, 0xF8, 0x22, 0x00, 0x70, 0x47, -0x07, 0x2A, 0x37, 0xD0, 0x51, 0x1F, 0x03, 0xF0, 0x0F, 0x04, 0x01, 0x29, 0x37, 0xD8, 0xDF, 0xE8, 0x01, 0xF0, 0x01, 0x1B, -0xC3, 0xF3, 0x00, 0x21, 0x4A, 0x00, 0x11, 0x44, 0x06, 0x22, 0x12, 0xFB, 0x04, 0x12, 0xC3, 0xF3, 0x41, 0x21, 0x0A, 0x44, -0x31, 0x49, 0x51, 0xF8, 0x22, 0x00, 0xC3, 0xF3, 0xC0, 0x11, 0xC3, 0xF3, 0x02, 0x12, 0xC3, 0xF3, 0x80, 0x33, 0xC8, 0x40, -0x01, 0x32, 0x30, 0xBC, 0xB0, 0xFB, 0xF2, 0xF0, 0x98, 0x40, 0x70, 0x47, 0x00, 0x7A, 0x00, 0xF0, 0x07, 0x00, 0x02, 0x28, -0x31, 0xD8, 0x28, 0x49, 0xC3, 0xF3, 0x41, 0x25, 0x03, 0x22, 0x51, 0xF8, 0x20, 0x10, 0x12, 0xFB, 0x04, 0x52, 0xC3, 0xF3, -0x02, 0x10, 0x01, 0x30, 0x51, 0xF8, 0x22, 0x30, 0xB3, 0xFB, 0xF0, 0xF0, 0x30, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x30, 0xBC, -0x70, 0x47, 0x03, 0xF0, 0x07, 0x04, 0xC3, 0xF3, 0x40, 0x20, 0xC3, 0xF3, 0xC1, 0x11, 0x40, 0xEA, 0x41, 0x01, 0x41, 0xEA, -0xC4, 0x04, 0x04, 0x2A, 0x19, 0x49, 0x14, 0xBF, 0xC3, 0xF3, 0xC1, 0x03, 0xC3, 0xF3, 0x02, 0x13, 0x51, 0xF8, 0x24, 0x00, -0x01, 0x33, 0x30, 0xBC, 0xB0, 0xFB, 0xF3, 0xF0, 0x70, 0x47, 0x14, 0x4B, 0x04, 0x3A, 0x30, 0xBC, 0x53, 0xF8, 0x22, 0x00, -0x70, 0x47, 0xC2, 0x1E, 0xC2, 0xF3, 0x46, 0x01, 0x02, 0xF0, 0xFE, 0x00, 0x08, 0x44, 0x06, 0x21, 0x11, 0xFB, 0x04, 0x04, -0xC3, 0xF3, 0x41, 0x21, 0x0C, 0x44, 0x08, 0x49, 0x51, 0xF8, 0x24, 0x00, 0xC3, 0xF3, 0x02, 0x13, 0x02, 0xF0, 0x01, 0x02, -0x59, 0x1C, 0x30, 0xBC, 0x20, 0xFA, 0x02, 0xF3, 0xB3, 0xFB, 0xF1, 0xF0, 0x70, 0x47, 0x00, 0xBF, 0x54, 0xCC, 0x15, 0x00, -0x74, 0xCC, 0x15, 0x00, 0xA4, 0xD0, 0x15, 0x00, 0x44, 0xCF, 0x15, 0x00, 0x84, 0xD0, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, -0xB0, 0xF8, 0x96, 0x30, 0x90, 0xF8, 0xA2, 0x80, 0x90, 0xF8, 0xA5, 0x60, 0x03, 0xEB, 0x83, 0x03, 0x5B, 0x00, 0xA0, 0xF8, -0x98, 0x30, 0x07, 0x46, 0x03, 0xF0, 0xB8, 0xFD, 0xB7, 0xF8, 0xB4, 0x10, 0x80, 0xB2, 0xB0, 0xFB, 0xF1, 0xF3, 0x01, 0xFB, -0x13, 0x00, 0x00, 0x29, 0x77, 0xD0, 0xB7, 0xF8, 0x88, 0xC0, 0x83, 0xB2, 0x08, 0xF0, 0x02, 0x08, 0x00, 0x20, 0x4F, 0xF2, -0x33, 0x3E, 0x03, 0x44, 0xB3, 0xFB, 0xF1, 0xF5, 0x01, 0xFB, 0x15, 0x35, 0x05, 0xEB, 0x45, 0x02, 0x92, 0x00, 0xAB, 0xB2, -0x07, 0xEB, 0x02, 0x0A, 0x9C, 0x45, 0x02, 0xF1, 0x04, 0x02, 0x00, 0xF1, 0x01, 0x00, 0x07, 0xEB, 0x02, 0x04, 0x4F, 0xEA, -0x45, 0x09, 0x58, 0xD0, 0xBA, 0xF8, 0x08, 0x20, 0x72, 0x45, 0x54, 0xD8, 0xB8, 0xF1, 0x00, 0x0F, 0x05, 0xD0, 0xBA, 0xF8, -0x0A, 0x20, 0xD2, 0x12, 0x12, 0xF0, 0x06, 0x0F, 0x4B, 0xD0, 0x01, 0x2E, 0x42, 0xD9, 0x0C, 0xEB, 0x4C, 0x0C, 0x07, 0xEB, -0x8C, 0x0C, 0xBC, 0xF8, 0x0A, 0x30, 0x98, 0x04, 0x4F, 0xEA, 0xD3, 0x26, 0xC3, 0xF3, 0xC2, 0x22, 0x47, 0xD4, 0x16, 0xF0, -0x06, 0x06, 0x01, 0xD0, 0xC3, 0xF3, 0xC1, 0x06, 0xE3, 0x88, 0x99, 0x04, 0x4F, 0xEA, 0xD3, 0x28, 0xC3, 0xF3, 0xC2, 0x22, -0x36, 0xD4, 0x18, 0xF0, 0x06, 0x08, 0x01, 0xD0, 0xC3, 0xF3, 0xC1, 0x08, 0xB7, 0xF8, 0x8A, 0x00, 0x00, 0xEB, 0x40, 0x00, -0x07, 0xEB, 0x80, 0x00, 0xA9, 0x44, 0x04, 0x30, 0x07, 0xEB, 0x89, 0x09, 0xFF, 0xF7, 0xFA, 0xFE, 0x99, 0xF8, 0x0D, 0x30, -0x82, 0x46, 0x5B, 0xBB, 0xB7, 0xF8, 0x96, 0xB0, 0x20, 0x46, 0xFF, 0xF7, 0xF1, 0xFE, 0x50, 0x45, 0x81, 0x46, 0x0D, 0xD3, -0x01, 0x3E, 0x46, 0x45, 0x23, 0xD2, 0x23, 0x7A, 0x5B, 0x45, 0x10, 0xD3, 0x97, 0xF8, 0x9A, 0x30, 0x01, 0x33, 0xDB, 0xB2, -0x02, 0x2B, 0x87, 0xF8, 0x9A, 0x30, 0x29, 0xD8, 0x01, 0x20, 0x87, 0xF8, 0xA0, 0x50, 0x87, 0xF8, 0x9B, 0x00, 0xBD, 0xE8, -0xF8, 0x8F, 0x88, 0x42, 0x8F, 0xD1, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x8F, 0x07, 0x2A, 0x18, 0xD0, 0xC3, 0xF3, 0x02, 0x18, -0xC8, 0xE7, 0x07, 0x2A, 0x11, 0xD0, 0xC3, 0xF3, 0x02, 0x16, 0xB7, 0xE7, 0x4F, 0xF0, 0x20, 0x0B, 0xD2, 0xE7, 0xB7, 0xF8, -0x8C, 0x00, 0x00, 0xEB, 0x40, 0x00, 0x07, 0xEB, 0x80, 0x00, 0x04, 0x30, 0xFF, 0xF7, 0xBE, 0xFE, 0x81, 0x45, 0xDB, 0xD3, -0xCF, 0xE7, 0x00, 0x26, 0xA6, 0xE7, 0x4F, 0xF0, 0x00, 0x08, 0xAF, 0xE7, 0x0F, 0x2B, 0x84, 0xBF, 0x0F, 0x23, 0x87, 0xF8, -0x9A, 0x30, 0xD8, 0xE7, 0x90, 0xF8, 0xA2, 0x30, 0x99, 0x06, 0x1F, 0xD4, 0x10, 0xB5, 0x90, 0xF8, 0x9B, 0x20, 0x04, 0x46, -0xC2, 0xB9, 0xB0, 0xF8, 0x98, 0x20, 0x92, 0xB9, 0x5A, 0x06, 0x0B, 0xD5, 0xB0, 0xF8, 0xB4, 0x20, 0x09, 0x2A, 0x03, 0xD9, -0xFF, 0xF7, 0x9E, 0xFB, 0x94, 0xF8, 0xA2, 0x30, 0x23, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0xA2, 0x30, 0x20, 0x46, 0xBD, 0xE8, -0x10, 0x40, 0xFF, 0xF7, 0x29, 0xBF, 0x01, 0x3A, 0xA0, 0xF8, 0x98, 0x20, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x20, 0x70, 0x47, -0x2D, 0xE9, 0xF0, 0x41, 0x29, 0x4F, 0x2A, 0x4E, 0xD7, 0xF8, 0x00, 0x80, 0x4F, 0xF4, 0x1E, 0x73, 0xB8, 0xF9, 0x00, 0x20, -0x03, 0xFB, 0x00, 0x63, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x51, 0x8A, 0xB0, 0x04, 0x46, 0x20, 0xDB, 0x28, 0x46, 0xFF, 0xF7, -0xDF, 0xFB, 0xA5, 0xF8, 0xB4, 0x00, 0xB8, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x22, 0xDB, 0x28, 0x46, 0xFF, 0xF7, 0x6A, 0xFC, -0x69, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0x3C, 0xF9, 0x28, 0x46, 0x00, 0x21, 0xFF, 0xF7, 0x66, 0xFD, 0x4F, 0xF4, 0x1E, 0x70, -0x00, 0xFB, 0x04, 0x64, 0x94, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x01, 0x03, 0x84, 0xF8, 0x56, 0x31, 0x0A, 0xB0, 0xBD, 0xE8, -0xF0, 0x81, 0x00, 0x2D, 0xDC, 0xD1, 0x12, 0x49, 0x12, 0x48, 0x40, 0xF6, 0xAF, 0x42, 0xF1, 0xF7, 0x03, 0xF9, 0xD7, 0xF8, -0x00, 0x80, 0xD3, 0xE7, 0x40, 0xB1, 0x0A, 0x28, 0xD9, 0xD9, 0x0C, 0x49, 0x0D, 0x48, 0x40, 0xF6, 0xB4, 0x42, 0xF1, 0xF7, -0xF7, 0xF8, 0xD2, 0xE7, 0x08, 0x49, 0x0B, 0x48, 0x40, 0xF6, 0xB3, 0x42, 0xF1, 0xF7, 0xF0, 0xF8, 0x3B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xC7, 0xDA, 0xB5, 0xF8, 0xB4, 0x00, 0xE8, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x0C, 0xCA, 0x15, 0x00, 0xF4, 0xC9, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0xDF, 0xF8, 0xBC, 0x80, 0x29, 0x4D, 0xD8, 0xF8, 0x00, 0x40, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x00, 0x53, 0x07, 0x46, -0xB4, 0xF9, 0x00, 0x00, 0xD3, 0xF8, 0x4C, 0x41, 0x00, 0x28, 0x0D, 0x46, 0x16, 0x46, 0x20, 0xDB, 0x94, 0xF8, 0xAF, 0x30, -0xAB, 0x42, 0x39, 0xD0, 0xD8, 0xF8, 0x00, 0x30, 0x84, 0xF8, 0xAF, 0x50, 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x26, 0xDB, -0x84, 0xF8, 0xB0, 0x60, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x17, 0xDB, 0x94, 0xF8, 0xA2, 0x30, 0x9A, 0x06, 0x05, 0xD5, -0x63, 0xF0, 0x7F, 0x03, 0x84, 0xF8, 0xA2, 0x30, 0xBD, 0xE8, 0xF0, 0x81, 0x38, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xFF, 0xF7, -0x69, 0xBF, 0x00, 0x2C, 0xDC, 0xD1, 0x11, 0x49, 0x11, 0x48, 0x40, 0xF6, 0xCC, 0x42, 0xF1, 0xF7, 0x9F, 0xF8, 0xD5, 0xE7, -0x07, 0x2E, 0xE5, 0xD9, 0x0C, 0x49, 0x0E, 0x48, 0x40, 0xF6, 0xD4, 0x42, 0xF1, 0xF7, 0x96, 0xF8, 0xDE, 0xE7, 0x03, 0x2D, -0xD6, 0xD9, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF6, 0xD2, 0x42, 0xF1, 0xF7, 0x8D, 0xF8, 0xD8, 0xF8, 0x00, 0x30, 0xCD, 0xE7, -0x94, 0xF8, 0xB0, 0x30, 0xB3, 0x42, 0xC1, 0xD1, 0xD6, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x68, 0x8E, 0x15, 0x00, 0x50, 0xCA, 0x15, 0x00, 0x34, 0xCA, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x4D, 0x4B, 0x8D, 0xB0, 0x1A, 0x68, 0x01, 0x90, 0x04, 0x46, 0x4C, 0x48, 0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x73, -0x03, 0xFB, 0x04, 0x03, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0xB1, 0x0C, 0x46, 0x79, 0xDB, 0x9B, 0xF8, 0xB2, 0x20, 0xA2, 0x42, -0x72, 0xD0, 0x8B, 0xF8, 0xB2, 0x40, 0x00, 0x2C, 0x6E, 0xD0, 0x9B, 0xF8, 0xA2, 0x20, 0x12, 0xF0, 0x20, 0x07, 0x76, 0xD1, -0xBB, 0xF8, 0xB4, 0x90, 0xB8, 0x46, 0xB9, 0xF1, 0x00, 0x0F, 0x15, 0xD1, 0x4D, 0xE0, 0x25, 0x44, 0x0C, 0xAB, 0x01, 0x37, -0x0B, 0xEB, 0x85, 0x05, 0x03, 0xEB, 0x84, 0x04, 0xB8, 0xB2, 0x4F, 0xF0, 0x01, 0x03, 0x81, 0x45, 0xAB, 0x73, 0xA6, 0xF8, -0x0A, 0xA0, 0xA6, 0xF8, 0x08, 0x80, 0x85, 0xF8, 0x0D, 0x80, 0x44, 0xF8, 0x28, 0x8C, 0x38, 0xD9, 0xBC, 0xB2, 0x04, 0xEB, -0x44, 0x06, 0x0B, 0xEB, 0x86, 0x06, 0x65, 0x00, 0xB6, 0xF8, 0x0A, 0xA0, 0x50, 0x46, 0xFD, 0xF7, 0x19, 0xFF, 0x00, 0x28, -0xDD, 0xD0, 0x4A, 0xF4, 0x80, 0x6A, 0xB9, 0xF1, 0x00, 0x0F, 0x16, 0xD0, 0x58, 0x46, 0x4F, 0xF0, 0x00, 0x0C, 0x01, 0xE0, -0xCC, 0x45, 0xD2, 0xD0, 0xB0, 0xF8, 0x0A, 0xE0, 0xD6, 0x45, 0x0C, 0xF1, 0x01, 0x0C, 0x00, 0xF1, 0x0C, 0x00, 0xF5, 0xD1, -0x58, 0x46, 0xFE, 0xF7, 0x37, 0xFE, 0xBB, 0xF8, 0xB4, 0x90, 0x82, 0x46, 0xB9, 0xF1, 0x00, 0x0F, 0xE8, 0xD1, 0x28, 0x19, -0x0C, 0xAB, 0x0B, 0xEB, 0x80, 0x00, 0x03, 0xEB, 0x84, 0x04, 0x01, 0x25, 0x85, 0x73, 0xA6, 0xF8, 0x0A, 0xA0, 0xA6, 0xF8, -0x08, 0x90, 0x80, 0xF8, 0x0D, 0x90, 0x44, 0xF8, 0x28, 0x9C, 0x02, 0xA9, 0x58, 0x46, 0xFE, 0xF7, 0xCF, 0xFF, 0x02, 0xA9, -0x58, 0x46, 0xFF, 0xF7, 0x1B, 0xF8, 0x01, 0x9A, 0x11, 0x46, 0x10, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x29, -0x99, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x01, 0x03, 0x89, 0xF8, 0x56, 0x31, 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xBB, 0xF1, -0x00, 0x0F, 0x82, 0xD1, 0x08, 0x49, 0x09, 0x48, 0x40, 0xF6, 0xEA, 0x42, 0xF0, 0xF7, 0xE2, 0xFF, 0x7B, 0xE7, 0x62, 0xF0, -0x7F, 0x02, 0x8B, 0xF8, 0xA2, 0x20, 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0xB0, 0xF8, 0x54, 0x21, 0x03, 0x29, 0x9A, 0xBF, 0x02, 0xF4, 0x80, 0x62, -0x12, 0xB2, 0x00, 0x22, 0x10, 0xB4, 0x42, 0xEA, 0x01, 0x03, 0xD0, 0xF8, 0x48, 0x41, 0x43, 0xF0, 0x00, 0x53, 0xC4, 0xE9, -0x05, 0x33, 0xC4, 0xE9, 0x07, 0x33, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x90, 0xF8, 0xA5, 0x30, 0xC1, 0xF3, 0xC2, 0x22, -0x93, 0x42, 0x13, 0xD3, 0x05, 0x2B, 0x70, 0xB5, 0x4F, 0xEA, 0xD1, 0x24, 0x11, 0xD0, 0x04, 0x2B, 0x29, 0xD0, 0x02, 0x3B, -0x01, 0x2B, 0x12, 0xD8, 0x14, 0xF0, 0x06, 0x03, 0x04, 0xF0, 0x06, 0x05, 0x26, 0xD1, 0x90, 0xF8, 0xAD, 0x20, 0x03, 0x2A, -0x1B, 0xD8, 0x0D, 0xE0, 0x00, 0x23, 0x18, 0x46, 0x70, 0x47, 0x05, 0x2A, 0x03, 0xD0, 0x90, 0xF8, 0xAD, 0x30, 0x03, 0x2B, -0x15, 0xD8, 0x14, 0xF0, 0x06, 0x0F, 0x04, 0xF0, 0x06, 0x05, 0x13, 0xD1, 0x4A, 0x05, 0xC1, 0xF3, 0x80, 0x23, 0x03, 0xD4, -0x90, 0xF8, 0xB2, 0x20, 0x01, 0x2A, 0x04, 0xD0, 0xFF, 0xF7, 0x9A, 0xF8, 0x03, 0x1E, 0x18, 0xBF, 0x01, 0x23, 0x18, 0x46, -0x70, 0xBD, 0x04, 0x2A, 0x1A, 0xD0, 0x00, 0x23, 0x18, 0x46, 0x70, 0xBD, 0x04, 0x2A, 0x1A, 0xD9, 0x90, 0xF8, 0xAF, 0x60, -0xC1, 0xF3, 0xC1, 0x13, 0x9E, 0x42, 0xF4, 0xD3, 0x63, 0x07, 0x08, 0xD5, 0x07, 0x2A, 0xE7, 0xD0, 0xC1, 0xF3, 0x02, 0x13, -0x90, 0xF8, 0xB0, 0x20, 0x9A, 0x42, 0xEA, 0xD3, 0xE0, 0xE7, 0x00, 0x2D, 0xDE, 0xD0, 0xC1, 0xF3, 0xC1, 0x03, 0xF5, 0xE7, -0x14, 0xF0, 0x06, 0x0F, 0x04, 0xF0, 0x06, 0x05, 0xCE, 0xD0, 0x8E, 0x05, 0xE2, 0xD5, 0x90, 0xF8, 0xB1, 0x30, 0x00, 0x2B, -0xD5, 0xD0, 0xDD, 0xE7, 0x01, 0xEB, 0x41, 0x01, 0x00, 0xEB, 0x81, 0x03, 0x2D, 0xE9, 0xF0, 0x47, 0x1F, 0x89, 0x80, 0x46, -0x41, 0xF6, 0x98, 0x10, 0x87, 0x42, 0x38, 0xD9, 0xB3, 0xF8, 0x0A, 0x90, 0xD8, 0xF8, 0x94, 0xA0, 0x48, 0x46, 0x15, 0x46, -0x8C, 0x00, 0xFD, 0xF7, 0x2F, 0xFE, 0x08, 0xB3, 0x00, 0x26, 0x20, 0x1D, 0x40, 0x44, 0xFF, 0xF7, 0x8D, 0xFC, 0x2D, 0x4A, -0x4F, 0xF4, 0x7A, 0x73, 0x30, 0x44, 0x03, 0xFB, 0x07, 0xF3, 0xB3, 0xFB, 0xF0, 0xF3, 0x02, 0xFB, 0x03, 0xF3, 0x18, 0x0C, -0x75, 0xB1, 0x43, 0xF2, 0x32, 0x33, 0x9F, 0x42, 0x1C, 0xD9, 0x44, 0xF6, 0xCB, 0x43, 0x9F, 0x42, 0x21, 0xD8, 0x24, 0x4B, -0x5A, 0x78, 0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xBD, 0xE8, 0xF0, 0x87, 0x20, 0x4E, 0x21, 0x4B, -0xC9, 0xF3, 0xC2, 0x29, 0x4F, 0xEA, 0x1A, 0x4A, 0xB9, 0xF1, 0x06, 0x0F, 0x08, 0xBF, 0x1E, 0x46, 0xB6, 0xFB, 0xFA, 0xF6, -0xD1, 0xE7, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x17, 0x4B, 0x1A, 0x78, 0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, -0x44, 0x60, 0xBD, 0xE8, 0xF0, 0x87, 0x46, 0xF2, 0x65, 0x63, 0x9F, 0x42, 0x0A, 0xD9, 0xB7, 0xF5, 0x00, 0x4F, 0x0F, 0xD2, -0x0F, 0x4B, 0xDA, 0x78, 0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xD5, 0xE7, 0x0B, 0x4B, 0x9A, 0x78, -0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xCD, 0xE7, 0x49, 0xF6, 0x98, 0x13, 0x9F, 0x42, 0x06, 0x4B, -0x94, 0xBF, 0x1A, 0x79, 0x5A, 0x79, 0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xC0, 0xE7, 0x00, 0xBF, -0xB0, 0xE2, 0x0D, 0x00, 0x54, 0x25, 0x17, 0x00, 0x90, 0x53, 0x03, 0x00, 0x10, 0x09, 0x05, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, -0x8F, 0xB0, 0x00, 0xF1, 0x88, 0x09, 0x02, 0xAD, 0x01, 0x91, 0x04, 0x46, 0x4A, 0x46, 0x07, 0x46, 0x00, 0xF1, 0x90, 0x06, -0x29, 0x46, 0x32, 0xF8, 0x02, 0x3B, 0x03, 0xEB, 0x43, 0x03, 0x04, 0xEB, 0x83, 0x03, 0xB2, 0x42, 0x5B, 0x89, 0x21, 0xF8, -0x02, 0x3B, 0xF4, 0xD1, 0xB4, 0xF8, 0x92, 0x10, 0x71, 0xB1, 0xD4, 0xF8, 0x94, 0x20, 0xB4, 0xF8, 0x90, 0x30, 0x02, 0xEB, -0x42, 0x02, 0x1B, 0x04, 0x93, 0xFB, 0xF1, 0xF3, 0x13, 0x44, 0xC3, 0xF3, 0x98, 0x03, 0x00, 0x22, 0xC4, 0xE9, 0x24, 0x23, -0x04, 0xF1, 0x7C, 0x00, 0xFE, 0xF7, 0x2A, 0xF8, 0xB4, 0xF8, 0xB4, 0x00, 0x00, 0x21, 0xA4, 0xF8, 0x7C, 0x10, 0xA4, 0xF8, -0x7E, 0x10, 0x84, 0xF8, 0x9A, 0x10, 0x00, 0x28, 0x74, 0xD0, 0x01, 0x38, 0x05, 0xAB, 0x80, 0xB2, 0x0D, 0xF1, 0x10, 0x0A, -0x03, 0xEB, 0x80, 0x00, 0x52, 0x46, 0x23, 0x46, 0x4F, 0xF0, 0x01, 0x0C, 0x42, 0xF8, 0x04, 0x1B, 0x82, 0x42, 0x83, 0xF8, -0x0E, 0xC0, 0x03, 0xF1, 0x0C, 0x03, 0xF7, 0xD1, 0xB4, 0xF8, 0xBA, 0x20, 0x4F, 0xF6, 0xFF, 0x73, 0x9A, 0x42, 0x14, 0xD0, -0x32, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x6C, 0x32, 0x98, 0x47, 0x39, 0xF8, 0x02, 0x3B, 0x35, 0xF8, 0x02, 0x2B, 0x03, 0xEB, -0x43, 0x03, 0x04, 0xEB, 0x83, 0x03, 0x5B, 0x89, 0x93, 0x42, 0x47, 0xD1, 0xB1, 0x45, 0xF2, 0xD1, 0x0F, 0xB0, 0xBD, 0xE8, -0xF0, 0x8F, 0x4F, 0xF0, 0x00, 0x08, 0x1F, 0xFA, 0x88, 0xFB, 0x0B, 0xEB, 0x4B, 0x00, 0x04, 0xEB, 0x80, 0x00, 0x04, 0x30, -0xFD, 0xF7, 0xE6, 0xFF, 0x01, 0x22, 0x5F, 0xFA, 0x88, 0xF1, 0x20, 0x46, 0x90, 0x44, 0xFF, 0xF7, 0x09, 0xFF, 0xB4, 0xF8, -0xB4, 0x10, 0x0E, 0xAB, 0x03, 0xEB, 0x8B, 0x0B, 0x1F, 0xFA, 0x88, 0xF2, 0x91, 0x42, 0x4B, 0xF8, 0x28, 0x0C, 0xE4, 0xD8, -0x51, 0x46, 0x20, 0x46, 0xFE, 0xF7, 0x26, 0xFE, 0x51, 0x46, 0x20, 0x46, 0xFE, 0xF7, 0x72, 0xFE, 0x01, 0x9B, 0xCB, 0xB9, -0x94, 0xF8, 0xA2, 0x20, 0xB4, 0xF8, 0xB4, 0x30, 0x42, 0xF0, 0x40, 0x02, 0x84, 0xF8, 0xA2, 0x20, 0x83, 0xB1, 0x01, 0x3B, -0x9B, 0xB2, 0x03, 0xEB, 0x43, 0x02, 0xDD, 0xF8, 0x04, 0x80, 0x04, 0xF1, 0x0C, 0x03, 0x03, 0xEB, 0x82, 0x03, 0xA7, 0xF8, -0x04, 0x80, 0xA7, 0xF8, 0x06, 0x80, 0x0C, 0x37, 0x9F, 0x42, 0xF8, 0xD1, 0x00, 0x20, 0xAC, 0xE7, 0x01, 0x20, 0x0F, 0xB0, -0xBD, 0xE8, 0xF0, 0x8F, 0xB4, 0xF8, 0xBA, 0x20, 0x4F, 0xF6, 0xFF, 0x73, 0x9A, 0x42, 0x9D, 0xD1, 0x0D, 0xF1, 0x10, 0x0A, -0xCC, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x23, 0x4B, 0x23, 0x4A, 0x1B, 0x68, 0x4F, 0xF4, 0x1E, 0x71, -0xB3, 0xF9, 0x00, 0x30, 0x01, 0xFB, 0x00, 0x20, 0x00, 0x2B, 0xD0, 0xF8, 0x4C, 0x41, 0x2F, 0xDB, 0x20, 0x46, 0xFF, 0xF7, -0x5D, 0xF9, 0xB4, 0xF8, 0xB4, 0x30, 0x59, 0x1E, 0x9A, 0x1E, 0x21, 0xEA, 0xE1, 0x71, 0x03, 0x3B, 0x22, 0xEA, 0xE2, 0x72, -0x23, 0xEA, 0xE3, 0x73, 0x00, 0x25, 0x4F, 0xF4, 0x80, 0x30, 0xA4, 0xF8, 0x88, 0x10, 0x4F, 0xF6, 0xFF, 0x71, 0xA4, 0xF8, -0x8A, 0x20, 0xA4, 0xF8, 0x8C, 0x30, 0xC4, 0xF8, 0x94, 0x00, 0xA4, 0xF8, 0xBA, 0x10, 0xA4, 0xF8, 0x8E, 0x50, 0x84, 0xF8, -0xA2, 0x50, 0x01, 0x21, 0x20, 0x46, 0xFF, 0xF7, 0x13, 0xFF, 0x94, 0xF8, 0xB4, 0x30, 0x84, 0xF8, 0x9B, 0x50, 0x04, 0x3B, -0x05, 0x22, 0x84, 0xF8, 0xA0, 0x30, 0xA4, 0xF8, 0x98, 0x20, 0x38, 0xBD, 0x00, 0x2C, 0xCD, 0xD1, 0x05, 0x49, 0x06, 0x48, -0x40, 0xF6, 0x76, 0x02, 0xF0, 0xF7, 0xDE, 0xFD, 0xC6, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0xC4, 0xA3, 0x90, 0xF8, 0x23, 0x70, -0xDA, 0xF8, 0x00, 0x30, 0xD0, 0xF8, 0x48, 0x81, 0xB3, 0xF9, 0x00, 0x30, 0x8B, 0xB0, 0x07, 0xF1, 0x10, 0x02, 0xD2, 0xB2, -0x00, 0x2B, 0x04, 0x46, 0x06, 0x92, 0xC0, 0xF2, 0xA9, 0x81, 0xDA, 0x4D, 0x07, 0xEB, 0x47, 0x03, 0x05, 0xEB, 0x83, 0x1B, -0xC4, 0xF8, 0x4C, 0xB1, 0x9B, 0x01, 0x04, 0x93, 0xCD, 0xF7, 0xB4, 0xF9, 0x83, 0x03, 0x05, 0x93, 0xCD, 0xF7, 0xB0, 0xF9, -0x4F, 0xF0, 0x01, 0x09, 0x01, 0x30, 0x09, 0xFA, 0x00, 0xF9, 0x00, 0x21, 0x58, 0x46, 0xC0, 0x22, 0xCC, 0xF7, 0xBE, 0xF8, -0x61, 0x68, 0x11, 0xF0, 0x02, 0x01, 0x09, 0xF1, 0xFF, 0x39, 0x00, 0xF0, 0x9D, 0x80, 0x00, 0x21, 0x04, 0xF1, 0xB8, 0x00, -0xF3, 0xF7, 0xB4, 0xFB, 0x63, 0x68, 0xAB, 0xF8, 0xAA, 0x00, 0x98, 0x06, 0x4F, 0xEA, 0x47, 0x06, 0x00, 0xF1, 0x30, 0x82, -0x58, 0x07, 0x40, 0xF1, 0xA3, 0x81, 0xC3, 0x4B, 0x07, 0x93, 0x04, 0x23, 0xB4, 0xF8, 0xEC, 0x00, 0x8B, 0xF8, 0xA5, 0x30, -0xCD, 0xF8, 0x24, 0xB0, 0xF3, 0xF7, 0xBA, 0xFA, 0x07, 0x9A, 0x03, 0x46, 0x10, 0x8F, 0x08, 0x93, 0xF3, 0xF7, 0xB4, 0xFA, -0x08, 0x9B, 0x09, 0x9A, 0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, 0xB0, 0x00, 0xB3, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xC0, 0x83, 0x07, 0x9B, 0xB4, 0xF8, 0xEC, 0x00, 0x19, 0x8F, 0xF3, 0xF7, 0xCA, 0xFB, -0xF2, 0x19, 0x05, 0xEB, 0x82, 0x12, 0x03, 0x46, 0xB4, 0xF8, 0xEC, 0x00, 0xA2, 0xF8, 0xA6, 0x30, 0x09, 0x92, 0xF3, 0xF7, -0x7D, 0xFA, 0x07, 0x9A, 0x03, 0x46, 0x10, 0x8F, 0x08, 0x93, 0xF3, 0xF7, 0x77, 0xFA, 0x08, 0x9B, 0x09, 0x9A, 0x98, 0x42, -0x28, 0xBF, 0x18, 0x46, 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, 0xAC, 0x00, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, -0x91, 0x83, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0x20, 0xF4, 0x7F, 0x60, 0x80, 0xB2, -0xA3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x96, 0xFA, 0x08, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, 0xB2, 0xF9, -0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x6D, 0x83, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, 0xB3, 0xF8, 0xAA, 0x00, -0xF3, 0xF7, 0x92, 0xFA, 0x08, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xC0, 0xF2, 0x4E, 0x83, 0xB4, 0xF8, 0x54, 0x21, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0xC2, 0xF3, 0x80, 0x22, 0x83, 0xF8, -0xB2, 0x20, 0xCD, 0xF7, 0xD1, 0xF8, 0x00, 0x28, 0x40, 0xF0, 0x04, 0x83, 0xD4, 0xF8, 0xE8, 0x30, 0x03, 0xF0, 0x03, 0x03, -0x01, 0x2B, 0x00, 0xF0, 0xD4, 0x83, 0x02, 0x2B, 0x00, 0xF0, 0xD9, 0x83, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x40, 0xF6, -0xED, 0x62, 0xA3, 0xF8, 0xB6, 0x20, 0x88, 0xE1, 0x04, 0xF1, 0xB8, 0x00, 0xF3, 0xF7, 0x18, 0xFB, 0x07, 0xEB, 0x47, 0x03, -0x05, 0xEB, 0x83, 0x13, 0x07, 0x93, 0xA3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x4D, 0xFA, 0x07, 0x9B, 0xDA, 0xF8, 0x00, 0x20, -0x83, 0xF8, 0xAD, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x4F, 0xEA, 0x47, 0x06, 0xC0, 0xF2, 0xBC, 0x80, 0xF3, 0x19, -0x05, 0xEB, 0x83, 0x13, 0x07, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x47, 0xFA, 0x07, 0x9B, 0xDA, 0xF8, 0x00, 0x20, -0x83, 0xF8, 0xAE, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9E, 0x80, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, -0xFF, 0x21, 0x83, 0xF8, 0xAC, 0x10, 0x94, 0xF8, 0x2D, 0x11, 0x83, 0xF8, 0xAF, 0x10, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xC0, 0xF2, 0x83, 0x80, 0xB4, 0xF8, 0x54, 0x11, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0xC1, 0xF3, 0x80, 0x21, 0x83, 0xF8, -0xB2, 0x10, 0x58, 0x46, 0x07, 0x92, 0xFE, 0xF7, 0x71, 0xFF, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x07, 0x9A, 0xA3, 0xF8, -0xB4, 0x00, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0x8D, 0x80, 0x3E, 0x44, 0x05, 0xEB, 0x86, 0x1A, 0x94, 0xF8, -0x23, 0x30, 0x9A, 0xF8, 0xAF, 0x70, 0x9A, 0xF8, 0xB1, 0x00, 0x9A, 0xF8, 0xB2, 0x10, 0x9A, 0xF8, 0xA5, 0x20, 0xCD, 0xE9, -0x02, 0x07, 0xCD, 0xE9, 0x00, 0x21, 0x4F, 0xF4, 0x80, 0x50, 0x4B, 0x4A, 0x4B, 0x49, 0xF0, 0xF7, 0x6F, 0xFA, 0xBA, 0xF8, -0xB4, 0x00, 0x9A, 0xF8, 0xAE, 0x10, 0x9A, 0xF8, 0xAD, 0x20, 0x9A, 0xF8, 0xAC, 0x30, 0xCD, 0xE9, 0x02, 0x10, 0xCD, 0xE9, -0x00, 0x32, 0x45, 0x49, 0x42, 0x4A, 0x9A, 0xF8, 0xB0, 0x30, 0x4F, 0xF4, 0x80, 0x50, 0xF0, 0xF7, 0x5B, 0xFA, 0x94, 0xF8, -0x23, 0x00, 0xFF, 0xF7, 0x5D, 0xFE, 0x04, 0x99, 0x88, 0x31, 0xB0, 0x01, 0x29, 0x44, 0x08, 0xF1, 0x14, 0x02, 0x08, 0xF1, -0x24, 0x07, 0x31, 0xF8, 0x02, 0x3B, 0xDB, 0xB2, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, 0x2B, 0x44, 0x5B, 0x89, -0x43, 0xF0, 0x80, 0x43, 0x42, 0xF8, 0x04, 0x3B, 0x97, 0x42, 0xF0, 0xD1, 0x58, 0x46, 0x00, 0x21, 0xFF, 0xF7, 0xB4, 0xF8, -0x32, 0x4A, 0x06, 0x99, 0x12, 0x69, 0xD4, 0xF8, 0x48, 0x31, 0x31, 0x4F, 0x31, 0x48, 0xB6, 0x01, 0x89, 0x02, 0xAA, 0x51, -0xA2, 0x69, 0x05, 0x9D, 0xC8, 0xF8, 0x0C, 0x10, 0x4F, 0xF4, 0x08, 0x51, 0xC8, 0xE9, 0x01, 0x59, 0xC8, 0xF8, 0x00, 0x70, -0xC8, 0xF8, 0x10, 0x00, 0xC3, 0xE9, 0x0D, 0x12, 0x94, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x11, 0x03, 0x84, 0xF8, 0x56, 0x31, -0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x29, 0x3F, 0xF4, 0x7A, 0xAF, 0x40, 0xF6, 0x21, 0x42, 0x22, 0x49, 0x23, 0x48, -0xF0, 0xF7, 0x3C, 0xFC, 0xDA, 0xF8, 0x00, 0x20, 0x70, 0xE7, 0x0B, 0x28, 0x7F, 0xF6, 0x5F, 0xAF, 0x40, 0xF6, 0x1E, 0x42, -0x1C, 0x49, 0x1E, 0x48, 0xF0, 0xF7, 0x30, 0xFC, 0xDA, 0xF8, 0x00, 0x20, 0x55, 0xE7, 0x0B, 0x28, 0x7F, 0xF6, 0x41, 0xAF, -0x17, 0x49, 0x1A, 0x48, 0x40, 0xF6, 0x1C, 0x42, 0xF0, 0xF7, 0x24, 0xFC, 0x39, 0xE7, 0x00, 0x28, 0x00, 0xF0, 0xFE, 0x81, -0x0A, 0x28, 0x7F, 0xF6, 0x6D, 0xAF, 0x11, 0x49, 0x14, 0x48, 0x40, 0xF6, 0x28, 0x42, 0xF0, 0xF7, 0x17, 0xFC, 0x65, 0xE7, -0x09, 0x2F, 0x7F, 0xF6, 0x54, 0xAE, 0x0C, 0x49, 0x10, 0x48, 0x40, 0xF6, 0xEB, 0x22, 0xF0, 0xF7, 0x0D, 0xFC, 0x94, 0xF8, -0x23, 0x70, 0x4A, 0xE6, 0xF4, 0xE7, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x4C, 0xCC, 0x15, 0x00, 0xC4, 0xCB, 0x15, 0x00, -0x08, 0xCC, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x1E, 0xAB, 0xDC, 0xBA, 0x04, 0x07, 0xFF, 0xFF, 0x70, 0x79, 0x15, 0x00, -0xA8, 0xCB, 0x15, 0x00, 0x84, 0xCB, 0x15, 0x00, 0x60, 0xCB, 0x15, 0x00, 0x0C, 0xCA, 0x15, 0x00, 0x64, 0xCA, 0x15, 0x00, -0x38, 0x36, 0x17, 0x00, 0x04, 0xF1, 0xCB, 0x03, 0x02, 0x21, 0x18, 0x46, 0x8B, 0xF8, 0xA5, 0x10, 0x09, 0x93, 0xCD, 0xF8, -0x20, 0xB0, 0xF3, 0xF7, 0x2B, 0xF9, 0x01, 0x46, 0xD9, 0x48, 0x07, 0x91, 0xF3, 0xF7, 0x26, 0xF9, 0x07, 0x99, 0x08, 0x9A, -0x09, 0x9B, 0x88, 0x42, 0x28, 0xBF, 0x08, 0x46, 0xDA, 0xF8, 0x00, 0x10, 0x82, 0xF8, 0xB0, 0x00, 0xB1, 0xF9, 0x00, 0x20, -0x00, 0x2A, 0xC0, 0xF2, 0x41, 0x82, 0x04, 0x9A, 0x02, 0xF1, 0xA6, 0x00, 0x19, 0x46, 0x04, 0x22, 0x28, 0x44, 0x02, 0xF0, -0x6B, 0xFE, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0xFF, 0x22, 0xB3, 0xF8, 0xAA, 0x00, 0x83, 0xF8, 0xA6, 0x20, 0x20, 0xF4, -0x7F, 0x60, 0x07, 0x22, 0x80, 0xB2, 0x83, 0xF8, 0xAC, 0x20, 0xA3, 0xF8, 0xAA, 0x00, 0x07, 0x93, 0xF3, 0xF7, 0x0A, 0xF9, -0x07, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x0F, 0x82, -0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x07, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x06, 0xF9, 0x07, 0x9B, 0xDA, 0xF8, -0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xF0, 0x81, 0xB4, 0xF8, 0x54, 0x21, -0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0xC2, 0xF3, 0x80, 0x22, 0x83, 0xF8, 0xB2, 0x20, 0xCC, 0xF7, 0x45, 0xFF, 0x00, 0x28, -0x40, 0xF0, 0x88, 0x81, 0xB4, 0xF8, 0xC8, 0x30, 0x13, 0xF4, 0x00, 0x6F, 0x06, 0xEB, 0x07, 0x03, 0x05, 0xEB, 0x83, 0x13, -0x14, 0xBF, 0x40, 0xF6, 0xB5, 0x72, 0x40, 0xF6, 0xFF, 0x62, 0xA3, 0xF8, 0xB6, 0x20, 0xF1, 0x19, 0x05, 0xEB, 0x81, 0x11, -0x94, 0xF8, 0x2D, 0x31, 0xDA, 0xF8, 0x00, 0x20, 0x81, 0xF8, 0xAF, 0x30, 0xB2, 0xF9, 0x00, 0x10, 0x00, 0x29, 0xC0, 0xF2, -0x31, 0x81, 0x03, 0x2B, 0x3F, 0xF6, 0xA9, 0xAE, 0xDF, 0xE8, 0x13, 0xF0, 0x26, 0x01, 0x20, 0x01, 0x15, 0x01, 0x04, 0x01, -0x05, 0x23, 0x94, 0xF8, 0x22, 0x10, 0xB4, 0xF8, 0x06, 0x01, 0x8B, 0xF8, 0xA5, 0x30, 0x07, 0x91, 0xCD, 0xF8, 0x24, 0xB0, -0xF3, 0xF7, 0x8C, 0xF8, 0x95, 0x4A, 0x03, 0x46, 0xB2, 0xF8, 0x50, 0x00, 0x08, 0x93, 0xF3, 0xF7, 0x85, 0xF8, 0x08, 0x9B, -0x09, 0x9A, 0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, 0xB0, 0x00, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xC0, 0xF2, 0xE5, 0x81, 0x8B, 0x4B, 0xB4, 0xF8, 0x06, 0x01, 0xB3, 0xF8, 0x50, 0x10, 0xF3, 0xF7, 0x9A, 0xF9, -0xF2, 0x19, 0x05, 0xEB, 0x82, 0x12, 0x03, 0x46, 0xB4, 0xF8, 0x06, 0x01, 0xA2, 0xF8, 0xA6, 0x30, 0x09, 0x92, 0xF3, 0xF7, -0x59, 0xF8, 0x82, 0x4A, 0x03, 0x46, 0xB2, 0xF8, 0x50, 0x00, 0x08, 0x93, 0xF3, 0xF7, 0x52, 0xF8, 0x08, 0x9B, 0x09, 0x9A, -0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, 0xAC, 0x00, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xC0, 0xF2, 0xB4, 0x81, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0x20, 0xF4, 0x7F, 0x60, -0x80, 0xB2, 0xA3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x65, 0xF8, 0x08, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, -0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x90, 0x81, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, 0xB3, 0xF8, -0xAA, 0x00, 0xF3, 0xF7, 0x61, 0xF8, 0x08, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, 0xB2, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0xC0, 0xF2, 0x71, 0x81, 0xB4, 0xF8, 0x54, 0x21, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0xC2, 0xF3, 0x80, 0x22, -0x83, 0xF8, 0xB2, 0x20, 0xCC, 0xF7, 0xA0, 0xFE, 0x28, 0xB1, 0x5D, 0x4B, 0x93, 0xF8, 0x43, 0x30, 0x99, 0x06, 0x00, 0xF1, -0x99, 0x81, 0x63, 0x68, 0x5B, 0x07, 0x40, 0xF1, 0xEB, 0x80, 0xD4, 0xF8, 0xE8, 0x30, 0x03, 0xF0, 0x03, 0x03, 0x01, 0x2B, -0x00, 0xF0, 0xBD, 0x81, 0x02, 0x2B, 0x00, 0xF0, 0xB2, 0x81, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x40, 0xF6, 0xED, 0x62, -0xA3, 0xF8, 0xB6, 0x20, 0x50, 0x4B, 0x07, 0x99, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0x33, 0x93, 0xF8, 0x62, 0x20, -0x00, 0x2A, 0x40, 0xF0, 0xDF, 0x80, 0xD3, 0xF8, 0xC8, 0x31, 0xD4, 0xF8, 0x48, 0x01, 0x13, 0xF4, 0x80, 0x3F, 0xC1, 0x6B, -0x40, 0xF0, 0x69, 0x81, 0x41, 0xF0, 0x20, 0x01, 0x00, 0x2B, 0xC1, 0x63, 0x06, 0xDB, 0xC3, 0xF3, 0x05, 0x63, 0x49, 0xEA, -0x03, 0x59, 0x02, 0x2A, 0x00, 0xF0, 0x58, 0x81, 0x49, 0xF0, 0x80, 0x59, 0x49, 0xF4, 0xC0, 0x29, 0x3D, 0x4B, 0x93, 0xF8, -0x45, 0x10, 0x94, 0xF8, 0xFD, 0x30, 0x01, 0xF0, 0x03, 0x00, 0xC3, 0xF3, 0xC1, 0x03, 0x83, 0x42, 0x06, 0xEB, 0x07, 0x02, -0x28, 0xBF, 0x03, 0x46, 0x05, 0xEB, 0x82, 0x12, 0x01, 0x20, 0x83, 0x42, 0x82, 0xF8, 0xBC, 0x00, 0x00, 0xF0, 0x6A, 0x81, -0x02, 0x2B, 0x00, 0xF0, 0x64, 0x81, 0x00, 0x2B, 0x00, 0xF0, 0x68, 0x81, 0x04, 0x23, 0x82, 0xF8, 0xBD, 0x30, 0x2E, 0x4B, -0x94, 0xF8, 0xFD, 0xC0, 0x93, 0xF8, 0x4B, 0x00, 0x93, 0xF8, 0x4A, 0x20, 0x8B, 0x08, 0xF1, 0x19, 0x03, 0xEA, 0x5C, 0x13, -0x05, 0xEB, 0x81, 0x11, 0x03, 0xF0, 0x01, 0x03, 0x81, 0xF8, 0xBE, 0x30, 0x94, 0xF8, 0x03, 0xC1, 0x94, 0xF8, 0x02, 0x31, -0x0C, 0xF0, 0x01, 0x0C, 0x9B, 0x11, 0x00, 0xF0, 0x01, 0x00, 0x92, 0x11, 0x43, 0xEA, 0x8C, 0x03, 0x42, 0xEA, 0x80, 0x02, -0x93, 0x42, 0x28, 0xBF, 0x13, 0x46, 0x81, 0xF8, 0xBF, 0x30, 0xE8, 0xE6, 0xD4, 0xF8, 0xE8, 0x30, 0x59, 0x06, 0x7F, 0xF5, -0x9E, 0xAD, 0x19, 0x4B, 0x9B, 0x89, 0x5B, 0x06, 0x7F, 0xF5, 0x99, 0xAD, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x01, 0x21, -0x83, 0xF8, 0xB1, 0x10, 0x91, 0xE5, 0xD4, 0xF8, 0xE8, 0x30, 0x9B, 0x06, 0x7F, 0xF5, 0x8D, 0xAD, 0x10, 0x4B, 0x9B, 0x89, -0x98, 0x06, 0x7F, 0xF5, 0x88, 0xAD, 0xED, 0xE7, 0xB4, 0xF8, 0xC8, 0x30, 0x59, 0x06, 0x7F, 0xF5, 0x82, 0xAD, 0xE2, 0xE7, -0xB4, 0xF8, 0xC8, 0x30, 0x98, 0x06, 0x7F, 0xF5, 0x7C, 0xAD, 0xED, 0xE7, 0x03, 0x2B, 0x7F, 0xF6, 0xCC, 0xAE, 0x40, 0xF6, -0xF9, 0x32, 0x07, 0x49, 0x07, 0x48, 0xF0, 0xF7, 0x31, 0xFA, 0x94, 0xF8, 0x2D, 0x31, 0xDA, 0xF8, 0x00, 0x20, 0xC0, 0xE6, -0xF3, 0xB8, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x34, 0xCA, 0x15, 0x00, -0x40, 0xF6, 0x27, 0x42, 0x88, 0x49, 0x89, 0x48, 0x07, 0x93, 0xF0, 0xF7, 0x1B, 0xFA, 0xDA, 0xF8, 0x00, 0x20, 0xB2, 0xF9, -0x00, 0x20, 0x00, 0x2A, 0xBF, 0xF6, 0x64, 0xAD, 0x07, 0x9B, 0xB3, 0xF8, 0xB4, 0x00, 0xEF, 0xE5, 0x07, 0x9B, 0x1B, 0x6B, -0x13, 0xF0, 0x10, 0x0F, 0xD4, 0xF8, 0xE8, 0x30, 0x3F, 0xF4, 0xF6, 0xAC, 0xD9, 0x06, 0x7F, 0xF5, 0xF3, 0xAC, 0x05, 0x9A, -0x42, 0xF0, 0x40, 0x02, 0x05, 0x92, 0xED, 0xE4, 0x7A, 0x4B, 0x9B, 0x89, 0x13, 0xF0, 0x01, 0x0F, 0xB4, 0xF8, 0xC8, 0x30, -0x3F, 0xF4, 0x72, 0xAE, 0xDA, 0x07, 0x7F, 0xF5, 0x6F, 0xAE, 0x05, 0x9A, 0x42, 0xF0, 0x40, 0x02, 0x05, 0x92, 0x69, 0xE6, -0xB4, 0xF8, 0xC8, 0x30, 0x13, 0xF4, 0x00, 0x6F, 0x06, 0xEB, 0x07, 0x03, 0x05, 0xEB, 0x83, 0x13, 0x14, 0xBF, 0x41, 0xF6, -0xFF, 0x62, 0x40, 0xF6, 0xFF, 0x62, 0xA3, 0xF8, 0xB6, 0x20, 0x15, 0xE7, 0xD4, 0xF8, 0x48, 0x01, 0xD3, 0xF8, 0xC8, 0x31, -0xC1, 0x6B, 0x00, 0x2B, 0x21, 0xF0, 0x20, 0x01, 0xC1, 0x63, 0xBF, 0xF6, 0x24, 0xAF, 0x26, 0xE7, 0x03, 0x28, 0x7F, 0xF6, -0xAF, 0xAC, 0x0C, 0x28, 0x3F, 0xF4, 0xAC, 0xAC, 0x5F, 0x49, 0x62, 0x48, 0x40, 0xF6, 0xA2, 0x32, 0xF0, 0xF7, 0xC8, 0xF9, -0xA4, 0xE4, 0x03, 0x28, 0x7F, 0xF6, 0x90, 0xAC, 0x0C, 0x28, 0x3F, 0xF4, 0x8D, 0xAC, 0x59, 0x49, 0x5C, 0x48, 0x4F, 0xF4, -0x3A, 0x62, 0xF0, 0xF7, 0xBB, 0xF9, 0x85, 0xE4, 0x09, 0x28, 0x7F, 0xF6, 0x6C, 0xAC, 0x54, 0x49, 0x58, 0x48, 0x40, 0xF6, -0x94, 0x32, 0xF0, 0xF7, 0xB1, 0xF9, 0x64, 0xE4, 0x07, 0x28, 0x7F, 0xF6, 0x3D, 0xAC, 0x4F, 0x49, 0x54, 0x48, 0x40, 0xF6, -0x8E, 0x32, 0xF0, 0xF7, 0xA7, 0xF9, 0x35, 0xE4, 0x03, 0x28, 0x7F, 0xF6, 0x0D, 0xAE, 0x0C, 0x28, 0x3F, 0xF4, 0x0A, 0xAE, -0x48, 0x49, 0x4B, 0x48, 0x40, 0xF6, 0xD9, 0x32, 0xF0, 0xF7, 0x9A, 0xF9, 0x02, 0xE6, 0x03, 0x28, 0x7F, 0xF6, 0xEE, 0xAD, -0x0C, 0x28, 0x3F, 0xF4, 0xEB, 0xAD, 0x42, 0x49, 0x45, 0x48, 0x40, 0xF6, 0xD7, 0x32, 0xF0, 0xF7, 0x8D, 0xF9, 0xE3, 0xE5, -0x03, 0x28, 0x7F, 0xF6, 0xBC, 0xAD, 0x3D, 0x49, 0x43, 0x48, 0x07, 0x93, 0x40, 0xF6, 0xCC, 0x32, 0xF0, 0xF7, 0x82, 0xF9, -0x07, 0x9B, 0xB2, 0xE5, 0x03, 0x28, 0x7F, 0xF6, 0x8C, 0xAE, 0x0C, 0x28, 0x3F, 0xF4, 0x89, 0xAE, 0x35, 0x49, 0x38, 0x48, -0x40, 0xF6, 0x22, 0x32, 0xF0, 0xF7, 0x74, 0xF9, 0x81, 0xE6, 0x03, 0x28, 0x7F, 0xF6, 0x6D, 0xAE, 0x0C, 0x28, 0x3F, 0xF4, -0x6A, 0xAE, 0x2F, 0x49, 0x32, 0x48, 0x4F, 0xF4, 0x32, 0x62, 0xF0, 0xF7, 0x67, 0xF9, 0x62, 0xE6, 0x0B, 0x28, 0x7F, 0xF6, -0x49, 0xAE, 0x2A, 0x49, 0x31, 0x48, 0x40, 0xF6, 0x1C, 0x32, 0xF0, 0xF7, 0x5D, 0xF9, 0x41, 0xE6, 0x07, 0x28, 0x7F, 0xF6, -0x18, 0xAE, 0x25, 0x49, 0x2A, 0x48, 0x40, 0xF6, 0x16, 0x32, 0xF0, 0xF7, 0x53, 0xF9, 0x10, 0xE6, 0x49, 0xF0, 0x80, 0x59, -0x49, 0xF4, 0x00, 0x39, 0xA6, 0xE6, 0x21, 0xF0, 0x20, 0x01, 0x00, 0x2B, 0xC1, 0x63, 0xBF, 0xF6, 0x96, 0xAE, 0x9B, 0xE6, -0x94, 0xF8, 0x2D, 0x31, 0x23, 0xB9, 0x94, 0xF8, 0xFB, 0x30, 0x9A, 0x06, 0x7F, 0xF5, 0x5F, 0xAE, 0x05, 0x9B, 0x43, 0xF0, -0x40, 0x03, 0x05, 0x93, 0x59, 0xE6, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x41, 0xF6, 0xED, 0x62, 0xA3, 0xF8, 0xB6, 0x20, -0xB7, 0xE5, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x42, 0xF6, 0x74, 0x42, 0xA3, 0xF8, 0xB6, 0x20, 0xAF, 0xE5, 0x82, 0xF8, -0xBD, 0x00, 0x9E, 0xE6, 0x00, 0x23, 0x82, 0xF8, 0xBD, 0x30, 0x9A, 0xE6, 0x82, 0xF8, 0xBC, 0x30, 0xA5, 0xE5, 0xF3, 0x19, -0x05, 0xEB, 0x83, 0x13, 0x42, 0xF6, 0x74, 0x42, 0xA3, 0xF8, 0xB6, 0x20, 0x4C, 0xE6, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, -0x41, 0xF6, 0xED, 0x62, 0xA3, 0xF8, 0xB6, 0x20, 0x44, 0xE6, 0x00, 0xBF, 0x70, 0x79, 0x15, 0x00, 0xF4, 0xC9, 0x15, 0x00, -0xE4, 0xB8, 0x17, 0x00, 0xE8, 0xCA, 0x15, 0x00, 0x98, 0xCA, 0x15, 0x00, 0x38, 0xCB, 0x15, 0x00, 0x50, 0xCA, 0x15, 0x00, -0x4C, 0xCB, 0x15, 0x00, 0x84, 0xCA, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x43, 0x46, 0x7F, 0x09, 0x2E, 0x83, 0xB0, 0x04, 0x46, -0x00, 0xF2, 0x8D, 0x80, 0x4B, 0x4B, 0x4C, 0x4F, 0x1A, 0x68, 0x4F, 0xF4, 0x1E, 0x73, 0xB2, 0xF9, 0x00, 0x20, 0x03, 0xFB, -0x06, 0x73, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x51, 0x40, 0xDB, 0x95, 0xF8, 0xA2, 0x30, 0x59, 0x07, 0x34, 0xD4, 0x03, 0xF0, -0xFD, 0x03, 0x4F, 0xF0, 0x00, 0x08, 0xDF, 0xF8, 0x18, 0x91, 0x85, 0xF8, 0xA2, 0x30, 0xD9, 0xF8, 0x10, 0x30, 0x2A, 0x68, -0x3F, 0x49, 0x9B, 0x1A, 0x8B, 0x42, 0x36, 0xD8, 0x95, 0xF8, 0xA3, 0x20, 0x95, 0xF8, 0xA4, 0x30, 0x43, 0xEA, 0x82, 0x03, -0x84, 0xF8, 0x36, 0x30, 0x28, 0x46, 0xFE, 0xF7, 0x65, 0xFF, 0xB0, 0xB1, 0xE2, 0x8B, 0x94, 0xF8, 0x36, 0x30, 0x42, 0xF4, -0x00, 0x52, 0x23, 0xF0, 0x03, 0x03, 0xE2, 0x83, 0x84, 0xF8, 0x36, 0x30, 0xB8, 0xF1, 0x00, 0x0F, 0x59, 0xD1, 0x4F, 0xF4, -0x1E, 0x73, 0x03, 0xFB, 0x06, 0x76, 0x96, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x20, 0x03, 0x86, 0xF8, 0x56, 0x31, 0x03, 0xB0, -0xBD, 0xE8, 0xF0, 0x83, 0x62, 0x6A, 0x92, 0x02, 0xC7, 0xD5, 0x43, 0xF0, 0x02, 0x03, 0x4F, 0xF0, 0x01, 0x08, 0xC6, 0xE7, -0x00, 0x2D, 0xBC, 0xD1, 0x26, 0x49, 0x27, 0x48, 0x40, 0xF6, 0x9A, 0x22, 0xF0, 0xF7, 0x9E, 0xF8, 0xB5, 0xE7, 0x00, 0x21, -0x28, 0x46, 0xFF, 0xF7, 0xBB, 0xF9, 0x95, 0xF8, 0xA3, 0x30, 0x01, 0x33, 0x00, 0x22, 0x03, 0xF0, 0x07, 0x03, 0x85, 0xF8, -0xA3, 0x30, 0x85, 0xF8, 0x9B, 0x20, 0x85, 0xF8, 0xA4, 0x20, 0xD9, 0xF8, 0x10, 0x20, 0x2A, 0x60, 0x9B, 0x00, 0x84, 0xF8, -0x36, 0x30, 0x00, 0x28, 0xB8, 0xD0, 0x0D, 0xF1, 0x07, 0x01, 0x28, 0x46, 0xFE, 0xF7, 0xCE, 0xFC, 0x9D, 0xF8, 0x07, 0x30, -0x53, 0xB9, 0x62, 0x6A, 0x22, 0xF4, 0x00, 0x12, 0x62, 0x62, 0x95, 0xF8, 0xA2, 0x20, 0x22, 0xF0, 0x02, 0x02, 0x98, 0x46, -0x85, 0xF8, 0xA2, 0x20, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0x73, 0x93, 0xF8, 0x56, 0x21, 0x42, 0xF0, 0x11, 0x02, -0x83, 0xF8, 0x56, 0x21, 0x9A, 0xE7, 0x00, 0x23, 0x80, 0xF8, 0x36, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x63, 0x6A, -0x43, 0xF4, 0x20, 0x13, 0x63, 0x62, 0xA0, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xA0, 0x86, 0x01, 0x00, -0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x30, 0xB4, 0xCA, 0x0A, 0x12, 0xF0, 0x06, 0x0F, -0x9D, 0xF8, 0x08, 0x50, 0x9D, 0xF8, 0x14, 0x40, 0x20, 0xD0, 0x02, 0xF0, 0x07, 0x02, 0x01, 0xF0, 0x7F, 0x01, 0x04, 0x2A, -0x0C, 0xBF, 0x09, 0x09, 0xC1, 0xF3, 0xC1, 0x01, 0x4B, 0xB9, 0xC3, 0x6B, 0x23, 0xF0, 0x04, 0x03, 0xC3, 0x63, 0x64, 0xB1, -0x43, 0xF0, 0x10, 0x03, 0x30, 0xBC, 0xC3, 0x63, 0x70, 0x47, 0xA9, 0x42, 0xF3, 0xD1, 0xC3, 0x6B, 0x43, 0xF0, 0x04, 0x03, -0xC3, 0x63, 0x00, 0x2C, 0xF2, 0xD1, 0x23, 0xF0, 0x10, 0x03, 0x30, 0xBC, 0xC3, 0x63, 0x70, 0x47, 0xC3, 0x6B, 0x23, 0xF0, -0x10, 0x03, 0xF8, 0xE7, 0x0B, 0x7B, 0x05, 0x2B, 0x0E, 0xD1, 0x2D, 0xE9, 0xF0, 0x41, 0x4B, 0x7B, 0x84, 0xB0, 0x0C, 0x46, -0x01, 0xF1, 0x0C, 0x07, 0x13, 0xB9, 0x0D, 0x88, 0x09, 0x2D, 0x05, 0xDC, 0x00, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, -0x00, 0x20, 0x70, 0x47, 0x0B, 0x20, 0x97, 0xF8, 0x02, 0x80, 0x7E, 0x7A, 0xEE, 0xF7, 0xC8, 0xF9, 0x08, 0xBB, 0xFB, 0x78, -0x3B, 0xBB, 0x69, 0x1F, 0x04, 0xF1, 0x11, 0x00, 0x1D, 0x46, 0x01, 0x22, 0x07, 0x78, 0x43, 0x78, 0x26, 0x2F, 0x03, 0xF1, -0x02, 0x03, 0x14, 0xD1, 0x8B, 0x42, 0xA1, 0xEB, 0x03, 0x01, 0x10, 0xDC, 0x05, 0xB9, 0x03, 0x90, 0x02, 0x29, 0x18, 0x44, -0x4F, 0xF0, 0x01, 0x05, 0xEE, 0xDC, 0x00, 0x92, 0xE1, 0x79, 0x20, 0x7A, 0x42, 0x46, 0x03, 0xAB, 0x00, 0xF0, 0x1A, 0xFD, -0x01, 0xF0, 0x52, 0xF8, 0xD0, 0xE7, 0x00, 0x96, 0xE1, 0x79, 0x20, 0x7A, 0x42, 0x46, 0x04, 0x23, 0x00, 0xF0, 0xF4, 0xFC, -0xC8, 0xE7, 0x00, 0x96, 0xE1, 0x79, 0x20, 0x7A, 0x42, 0x46, 0x02, 0x23, 0x00, 0xF0, 0xEC, 0xFC, 0xC0, 0xE7, 0x00, 0xBF, -0x08, 0xB5, 0x0B, 0x20, 0xEE, 0xF7, 0x90, 0xF9, 0x01, 0x28, 0x07, 0xD0, 0x09, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, -0x00, 0x2B, 0x05, 0xDB, 0x00, 0x20, 0x08, 0xBD, 0x01, 0xF0, 0xEA, 0xF8, 0x00, 0x20, 0x08, 0xBD, 0x04, 0x49, 0x05, 0x48, -0x9D, 0x22, 0xEF, 0xF7, 0xD5, 0xFF, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0x08, 0xB5, 0x0B, 0x20, 0xEE, 0xF7, 0x70, 0xF9, 0x04, 0x28, 0x07, 0xD0, 0x09, 0x4B, 0x1B, 0x68, -0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0xDB, 0x00, 0x20, 0x08, 0xBD, 0x01, 0xF0, 0x3E, 0xF8, 0x00, 0x20, 0x08, 0xBD, -0x04, 0x49, 0x05, 0x48, 0x81, 0x22, 0xEF, 0xF7, 0xB5, 0xFF, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x3A, 0xB3, 0x93, 0x68, 0x10, 0xB4, 0x93, 0xB9, 0x54, 0x69, 0x64, 0xB1, -0xFF, 0x28, 0x22, 0xD1, 0x00, 0x2C, 0x1A, 0xDD, 0x18, 0x32, 0x10, 0x19, 0x01, 0xE0, 0x82, 0x42, 0x15, 0xD0, 0x12, 0xF8, -0x01, 0x3B, 0x99, 0x42, 0xF9, 0xD1, 0x01, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0xFF, 0x28, 0x13, 0xD0, 0x00, 0x2B, -0x09, 0xDD, 0x0C, 0x32, 0x13, 0x44, 0x01, 0xE0, 0x9A, 0x42, 0x04, 0xD0, 0x12, 0xF8, 0x01, 0x1B, 0x81, 0x42, 0xF9, 0xD1, -0xED, 0xE7, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x18, 0x46, 0xE6, 0xE7, 0x54, 0x69, -0xD8, 0xE7, 0x00, 0xBF, 0x38, 0xB5, 0x0A, 0x4D, 0x41, 0xF2, 0x98, 0x74, 0x2B, 0x59, 0x63, 0xB1, 0x0B, 0x20, 0xEE, 0xF7, -0x1B, 0xF9, 0x03, 0x28, 0x01, 0xD0, 0x00, 0x20, 0x38, 0xBD, 0x2B, 0x59, 0x18, 0x68, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, -0x38, 0xBD, 0x01, 0x20, 0x38, 0xBD, 0x00, 0xBF, 0x78, 0xEF, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0x46, 0x80, 0x6C, -0x89, 0xB0, 0x14, 0x46, 0x99, 0x46, 0x00, 0xF1, 0x68, 0x05, 0x00, 0x29, 0x3B, 0xD1, 0xB0, 0xF8, 0x68, 0x10, 0xBE, 0x4A, -0xB2, 0xF8, 0xFC, 0x31, 0x01, 0x33, 0x9B, 0xB2, 0x1E, 0x01, 0xA2, 0xF8, 0xFC, 0x31, 0xA0, 0xF8, 0x7E, 0x60, 0x05, 0x22, -0x58, 0x46, 0xFC, 0xF7, 0x53, 0xFA, 0x01, 0x28, 0x00, 0xF0, 0xC8, 0x80, 0x1B, 0x23, 0x03, 0x93, 0x18, 0x23, 0xE9, 0x18, -0x05, 0x22, 0xEA, 0x54, 0x01, 0x22, 0x4A, 0x70, 0x99, 0xF8, 0x00, 0x20, 0x8A, 0x70, 0x01, 0xF1, 0x03, 0x0A, 0x00, 0x2C, -0x7B, 0xD0, 0x03, 0x22, 0x27, 0x20, 0xC8, 0x70, 0x0A, 0x71, 0x99, 0xF8, 0x01, 0x20, 0x4A, 0x71, 0x8C, 0x71, 0x99, 0xF8, -0x02, 0x20, 0xCA, 0x71, 0x08, 0x33, 0xDB, 0xF8, 0x4C, 0x00, 0x9B, 0xF8, 0x35, 0x20, 0x41, 0x6A, 0x13, 0x44, 0x01, 0x39, -0x19, 0x44, 0x04, 0x33, 0xC0, 0xE9, 0x0A, 0x13, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xA2, 0x4B, 0xA2, 0x4E, 0x00, 0x22, -0x41, 0xF2, 0xA8, 0x7C, 0x6F, 0xF0, 0x2F, 0x01, 0x80, 0xF8, 0x69, 0x20, 0x80, 0xF8, 0x6A, 0x20, 0x80, 0xF8, 0x6B, 0x20, -0x80, 0xF8, 0x68, 0x10, 0x13, 0xF8, 0x0C, 0x10, 0x9B, 0x4A, 0x4F, 0xF4, 0x1E, 0x77, 0x07, 0xFB, 0x01, 0xF1, 0x41, 0xF2, -0xA9, 0x78, 0x89, 0x5B, 0xA0, 0xF8, 0x6C, 0x10, 0x13, 0xF8, 0x0C, 0x10, 0x07, 0xFB, 0x01, 0x61, 0x4F, 0xF4, 0xA4, 0x6E, -0x49, 0x88, 0xA0, 0xF8, 0x6E, 0x10, 0x13, 0xF8, 0x0C, 0x10, 0x07, 0xFB, 0x01, 0x61, 0x89, 0x88, 0xA0, 0xF8, 0x70, 0x10, -0x13, 0xF8, 0x08, 0x10, 0x0E, 0xFB, 0x01, 0xF1, 0x89, 0x5A, 0xA0, 0xF8, 0x72, 0x10, 0x13, 0xF8, 0x08, 0x10, 0x0E, 0xFB, -0x01, 0x21, 0x49, 0x88, 0xA0, 0xF8, 0x74, 0x10, 0x13, 0xF8, 0x08, 0x10, 0x0E, 0xFB, 0x01, 0x21, 0x89, 0x88, 0xA0, 0xF8, -0x76, 0x10, 0x13, 0xF8, 0x08, 0x10, 0x0E, 0xFB, 0x01, 0xF1, 0x02, 0xEB, 0x01, 0x0A, 0x9A, 0xF8, 0x06, 0xA0, 0xBA, 0xF1, -0x02, 0x0F, 0x5F, 0xD0, 0x13, 0xF8, 0x0C, 0x20, 0x07, 0xFB, 0x02, 0xF2, 0xD0, 0x21, 0x92, 0x5B, 0xA0, 0xF8, 0x78, 0x20, -0x13, 0xF8, 0x0C, 0x20, 0x07, 0xFB, 0x02, 0x62, 0x52, 0x88, 0xA0, 0xF8, 0x7A, 0x20, 0x13, 0xF8, 0x0C, 0x30, 0x07, 0xFB, -0x03, 0x66, 0xB3, 0x88, 0xA0, 0xF8, 0x7C, 0x30, 0x63, 0xE7, 0x03, 0x9B, 0x01, 0x94, 0xC3, 0xF5, 0xC0, 0x73, 0x9B, 0xB2, -0x02, 0x93, 0xCD, 0xF8, 0x14, 0xB0, 0x99, 0xF8, 0x02, 0x30, 0x02, 0x9A, 0x05, 0x2B, 0xA2, 0xF1, 0x05, 0x04, 0xA4, 0xB2, -0x00, 0xF0, 0xE2, 0x80, 0x27, 0x23, 0x8A, 0xF8, 0x00, 0x30, 0x99, 0xF8, 0x01, 0x30, 0x8A, 0xF8, 0x02, 0x30, 0x00, 0x23, -0x8A, 0xF8, 0x03, 0x30, 0x99, 0xF8, 0x02, 0x30, 0x8A, 0xF8, 0x04, 0x30, 0x05, 0x2B, 0x3A, 0xD0, 0x03, 0x23, 0x8A, 0xF8, -0x01, 0x30, 0x02, 0x94, 0x0A, 0xF1, 0x05, 0x0A, 0x05, 0x25, 0xFF, 0xF7, 0x15, 0xFF, 0x01, 0x9B, 0x2B, 0x44, 0x01, 0x93, -0x08, 0xB9, 0x04, 0x2C, 0xD7, 0xD8, 0x5C, 0x4B, 0xDD, 0xF8, 0x14, 0xB0, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xC0, 0xF2, 0x9D, 0x80, 0x01, 0x9B, 0x03, 0x9A, 0x13, 0x44, 0x52, 0xE7, 0x18, 0x22, 0x29, 0x46, 0x58, 0x46, 0xFA, 0xF7, -0xE7, 0xFF, 0x9B, 0xF8, 0x33, 0x20, 0x02, 0xF1, 0x18, 0x03, 0x1B, 0x32, 0x03, 0x92, 0x2E, 0xE7, 0x89, 0x5A, 0xA0, 0xF8, -0x78, 0x10, 0x13, 0xF8, 0x08, 0x60, 0x0E, 0xFB, 0x06, 0x26, 0xD0, 0x21, 0x76, 0x88, 0xA0, 0xF8, 0x7A, 0x60, 0x13, 0xF8, -0x08, 0x30, 0x0E, 0xFB, 0x03, 0x22, 0x93, 0x88, 0xA0, 0xF8, 0x7C, 0x30, 0x07, 0xE7, 0xD9, 0xF8, 0x5C, 0x20, 0x46, 0x49, -0x01, 0x32, 0x0D, 0x68, 0xC9, 0xF8, 0x5C, 0x20, 0x0A, 0xF1, 0x05, 0x02, 0x04, 0x92, 0x00, 0x2D, 0x00, 0xF0, 0x45, 0x81, -0xEB, 0x7C, 0x8A, 0xF8, 0x05, 0x30, 0x2B, 0x7C, 0x8A, 0xF8, 0x06, 0x30, 0xD9, 0xE9, 0x0A, 0x12, 0xB9, 0xF8, 0x30, 0x30, -0xAA, 0xF8, 0x0F, 0x30, 0xCA, 0xF8, 0x07, 0x10, 0xCA, 0xF8, 0x0B, 0x20, 0xAB, 0x7C, 0x8A, 0xF8, 0x11, 0x30, 0x95, 0xF9, -0x14, 0x00, 0xEE, 0xF7, 0x21, 0xFF, 0xFF, 0x23, 0x8A, 0xF8, 0x12, 0x00, 0x8A, 0xF8, 0x13, 0x30, 0x05, 0xF1, 0x0C, 0x00, -0xAB, 0x1D, 0x13, 0xF8, 0x01, 0x1B, 0x03, 0xF1, 0x0D, 0x02, 0x52, 0x1B, 0x83, 0x42, 0x02, 0xF8, 0x0A, 0x10, 0xF6, 0xD1, -0x6B, 0x7C, 0x8A, 0xF8, 0x1A, 0x30, 0x02, 0x9A, 0xEB, 0x68, 0xCA, 0xF8, 0x1B, 0x30, 0x40, 0xF2, 0x01, 0x14, 0x94, 0x42, -0x99, 0xF8, 0x20, 0x30, 0x28, 0xBF, 0x14, 0x46, 0x0A, 0xF1, 0x1F, 0x02, 0xA4, 0xB2, 0x04, 0x92, 0x00, 0x2B, 0x40, 0xF0, -0x05, 0x81, 0x1F, 0x3C, 0xA4, 0xB2, 0x99, 0xF8, 0x04, 0x30, 0x00, 0x2B, 0x6D, 0xD1, 0x6B, 0x8B, 0x2B, 0x83, 0x03, 0x23, -0x1D, 0x48, 0xAB, 0x80, 0x29, 0x46, 0xEE, 0xF7, 0xEB, 0xF9, 0x99, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x12, 0x81, -0x04, 0x9B, 0x02, 0x9A, 0xA3, 0xEB, 0x0A, 0x05, 0xAB, 0x1E, 0x8A, 0xF8, 0x01, 0x30, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, -0x00, 0x30, 0x54, 0x1B, 0x00, 0x2B, 0xA4, 0xB2, 0x80, 0xF2, 0xF9, 0x80, 0xAA, 0x42, 0x80, 0xF0, 0xF6, 0x80, 0x10, 0x49, -0x10, 0x48, 0xDD, 0xF8, 0x10, 0xA0, 0x40, 0xF2, 0x07, 0x52, 0xEF, 0xF7, 0xCF, 0xFD, 0x02, 0x94, 0x51, 0xE7, 0x01, 0x9B, -0x00, 0x2B, 0x7F, 0xF4, 0x5F, 0xAF, 0x09, 0x49, 0x0A, 0x48, 0x40, 0xF2, 0x12, 0x52, 0xEF, 0xF7, 0xDB, 0xFD, 0x57, 0xE7, -0x20, 0x62, 0x17, 0x00, 0x78, 0xEF, 0x17, 0x00, 0x8E, 0x65, 0x17, 0x00, 0x74, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x10, 0x07, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, 0xF4, 0xD0, 0x15, 0x00, 0x0C, 0xD1, 0x15, 0x00, 0x94, 0x4B, 0x1A, 0x68, -0x00, 0x2A, 0x3F, 0xF4, 0x19, 0xAF, 0x19, 0x2C, 0x7F, 0xF6, 0x35, 0xAF, 0x02, 0x98, 0x99, 0xF8, 0x20, 0x10, 0xA0, 0xF1, -0x1F, 0x03, 0x9B, 0xB2, 0x29, 0xB1, 0x02, 0x2B, 0x7F, 0xF6, 0x2B, 0xAF, 0xA0, 0xF1, 0x22, 0x03, 0x9B, 0xB2, 0x99, 0xF8, -0x04, 0x10, 0x00, 0x29, 0x3F, 0xF4, 0x04, 0xAF, 0x03, 0x2B, 0x7F, 0xF6, 0x20, 0xAF, 0x10, 0x8B, 0x04, 0x3B, 0x9D, 0xB2, -0x00, 0x28, 0x40, 0xF0, 0xCF, 0x80, 0x0D, 0x2D, 0x3F, 0xF6, 0xF8, 0xAE, 0x15, 0xE7, 0x04, 0x9A, 0x01, 0x23, 0x13, 0x70, -0x2B, 0x8B, 0xA2, 0x1F, 0x92, 0xB2, 0x0A, 0xF1, 0x21, 0x01, 0x0B, 0x2B, 0x06, 0x92, 0x8C, 0x46, 0x1B, 0xD8, 0x7C, 0x4B, -0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xAE, 0x80, 0x05, 0xF1, 0x1C, 0x02, 0x05, 0xF1, 0x28, 0x00, -0x13, 0x46, 0x05, 0x33, 0x12, 0xF8, 0x01, 0x1B, 0x5B, 0x1B, 0x82, 0x42, 0x03, 0xF8, 0x0A, 0x10, 0xF6, 0xD1, 0x0C, 0x23, -0x12, 0x3C, 0xA2, 0xB2, 0x2B, 0x83, 0x0A, 0xF1, 0x2D, 0x03, 0x06, 0x92, 0x9C, 0x46, 0x99, 0xF8, 0x04, 0x30, 0x01, 0x2B, -0x3A, 0xD0, 0x2B, 0x8B, 0x6E, 0x8B, 0xF6, 0x1A, 0x05, 0xF1, 0x1C, 0x07, 0xB6, 0xB2, 0x1F, 0x44, 0x00, 0x2E, 0x3B, 0xD0, -0xCD, 0xF8, 0x1C, 0xA0, 0xE3, 0x46, 0xAA, 0x46, 0x09, 0xE0, 0xBA, 0xF8, 0x18, 0x10, 0x36, 0x1B, 0xB6, 0xB2, 0x0C, 0x44, -0x2F, 0x44, 0xAA, 0xF8, 0x18, 0x40, 0x00, 0x2E, 0x5D, 0xD0, 0x97, 0xF8, 0x00, 0x80, 0xB9, 0x78, 0x7C, 0x78, 0x40, 0x46, -0x4A, 0x46, 0xFF, 0xF7, 0xA9, 0xFD, 0xA5, 0x1C, 0x02, 0x34, 0xED, 0xB2, 0xE4, 0xB2, 0x00, 0x28, 0xE7, 0xD0, 0xD9, 0x2D, -0xE5, 0xD8, 0x06, 0x9B, 0x9C, 0x42, 0x4A, 0xD8, 0x4D, 0xB1, 0x59, 0x46, 0x78, 0x1A, 0xAB, 0x44, 0x01, 0xE0, 0x10, 0xF8, -0x01, 0x80, 0x01, 0xF8, 0x01, 0x8B, 0x8B, 0x45, 0xF9, 0xD1, 0x06, 0x9B, 0x1B, 0x1B, 0x9B, 0xB2, 0x06, 0x93, 0xD2, 0xE7, -0xD9, 0xF8, 0x08, 0x30, 0x00, 0x2B, 0xC0, 0xD1, 0xD9, 0xF8, 0x14, 0x30, 0x00, 0x2B, 0xBC, 0xD1, 0x6B, 0x8B, 0x2B, 0x83, -0x04, 0x9B, 0xC3, 0xF1, 0xFE, 0x0B, 0xE3, 0x44, 0x02, 0x23, 0x8A, 0xF8, 0x20, 0xB0, 0x8C, 0xF8, 0x00, 0x30, 0x8C, 0xF8, -0x01, 0x30, 0xEA, 0x7D, 0x28, 0x8B, 0x69, 0x8B, 0x99, 0xF8, 0x01, 0x30, 0x54, 0x1C, 0x88, 0x42, 0x66, 0x46, 0xEC, 0x75, -0x43, 0xEA, 0x02, 0x23, 0x23, 0xD2, 0x6F, 0xEA, 0x43, 0x43, 0x6F, 0xEA, 0x53, 0x43, 0xAC, 0xF8, 0x02, 0x30, 0x33, 0x1D, -0x04, 0x93, 0x08, 0xE7, 0x22, 0x3C, 0xA4, 0xB2, 0xF9, 0xE6, 0x03, 0x22, 0x8A, 0xF8, 0x01, 0x20, 0x36, 0x4A, 0x12, 0x68, -0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x09, 0xDB, 0xDD, 0xF8, 0x10, 0xA0, 0x02, 0x94, 0x1D, 0x46, 0x6B, 0xE6, 0x55, 0x46, -0xDC, 0x46, 0xDD, 0xF8, 0x1C, 0xA0, 0xC9, 0xE7, 0x1D, 0x46, 0xDD, 0xF8, 0x10, 0xA0, 0x02, 0x94, 0x61, 0xE6, 0xAC, 0xF8, -0x02, 0x30, 0x33, 0x1D, 0x04, 0x93, 0xE2, 0xE6, 0x04, 0x9D, 0xA4, 0x23, 0x01, 0x24, 0x2B, 0x70, 0x6C, 0x70, 0xFF, 0xF7, -0x6D, 0xFD, 0x20, 0xB1, 0xAC, 0x70, 0x04, 0x9B, 0x03, 0x33, 0x04, 0x93, 0xE0, 0xE6, 0x04, 0x9B, 0x98, 0x70, 0xF8, 0xE7, -0x0B, 0x2A, 0x3F, 0xF6, 0x4F, 0xAF, 0x21, 0x49, 0x21, 0x48, 0x40, 0xF2, 0x7D, 0x42, 0xEF, 0xF7, 0xBF, 0xFC, 0x47, 0xE7, -0xB2, 0xF8, 0x1A, 0x80, 0x01, 0x29, 0x02, 0xF1, 0x1C, 0x02, 0xA8, 0xEB, 0x00, 0x08, 0x02, 0xEB, 0x00, 0x07, 0x08, 0xD0, -0xB8, 0xF1, 0x00, 0x0F, 0x1B, 0xD0, 0x7B, 0x78, 0x03, 0x33, 0xAB, 0x42, 0xFF, 0xF6, 0x1A, 0xAE, 0x37, 0xE6, 0x7E, 0x78, -0x10, 0x5C, 0x97, 0xF8, 0x02, 0xB0, 0x02, 0x36, 0xF6, 0xB2, 0x03, 0xE0, 0x7E, 0x78, 0x38, 0x78, 0x02, 0x36, 0xF6, 0xB2, -0x4A, 0x46, 0x59, 0x46, 0xFF, 0xF7, 0x08, 0xFD, 0x08, 0xB1, 0xD9, 0x2E, 0xE4, 0xD9, 0xB8, 0xEB, 0x06, 0x08, 0x37, 0x44, -0xF0, 0xD1, 0x08, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xFC, 0xAD, 0x05, 0x49, 0x07, 0x48, -0x40, 0xF2, 0x13, 0x42, 0xEF, 0xF7, 0xA0, 0xFC, 0xF4, 0xE5, 0x00, 0xBF, 0x10, 0x07, 0x18, 0x00, 0x38, 0x36, 0x17, 0x00, -0x70, 0x79, 0x15, 0x00, 0xD0, 0xD0, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0xF8, 0xB5, 0x2D, 0x4E, 0x41, 0xF2, 0xA9, 0x73, -0xF2, 0x5C, 0x03, 0x2A, 0x42, 0xD8, 0x41, 0xF2, 0xA8, 0x73, 0xF3, 0x5C, 0x09, 0x2B, 0x3D, 0xD8, 0x0D, 0x46, 0x28, 0x49, -0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x13, 0x07, 0x46, 0x1B, 0x6C, 0x00, 0x2B, 0x3E, 0xD0, 0x24, 0x48, 0x1B, 0x79, -0x00, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x00, 0x28, 0x2D, 0xDB, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x12, 0x92, 0xF8, -0xC0, 0x24, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xDA, 0xF7, 0x3D, 0xFE, 0x04, 0x46, -0xE0, 0xB1, 0x41, 0xF2, 0xA9, 0x72, 0x41, 0xF2, 0xA8, 0x73, 0xB2, 0x5C, 0x02, 0x77, 0xF3, 0x5C, 0x43, 0x77, 0x00, 0x23, -0x80, 0xF8, 0x33, 0x30, 0x80, 0xF8, 0x35, 0x30, 0x15, 0xB9, 0x13, 0x4B, 0xC0, 0xE9, 0x15, 0x30, 0x20, 0x46, 0x3B, 0x46, -0x2A, 0x46, 0x01, 0x21, 0xFF, 0xF7, 0xEC, 0xFC, 0x20, 0x46, 0x03, 0x21, 0xBD, 0xE8, 0xF8, 0x40, 0xDA, 0xF7, 0x2E, 0xBE, -0xF8, 0xBD, 0x02, 0x2B, 0xCF, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0xEF, 0xF7, 0x29, 0xFC, 0x01, 0x20, -0xD1, 0xE7, 0x05, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xF7, 0xDA, 0xF0, 0xE7, 0x78, 0xEF, 0x17, 0x00, -0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0xA1, 0x5E, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, -0x00, 0x2A, 0x35, 0xD0, 0x70, 0xB5, 0x04, 0x46, 0x92, 0xF8, 0x32, 0x00, 0x8A, 0xB0, 0x13, 0x46, 0x58, 0xB9, 0x95, 0x8E, -0x22, 0x88, 0x95, 0x42, 0x28, 0xD1, 0xDD, 0x8E, 0x62, 0x88, 0x95, 0x42, 0x24, 0xD1, 0xA2, 0x88, 0x1C, 0x8F, 0x94, 0x42, -0x20, 0xD1, 0x93, 0xF8, 0x3A, 0x20, 0xE2, 0xB1, 0xD9, 0xB1, 0x4D, 0x78, 0x8D, 0xF8, 0x04, 0x50, 0x6D, 0xB1, 0x01, 0xA8, -0x05, 0x44, 0xC0, 0xF1, 0x02, 0x06, 0x44, 0x18, 0xA4, 0x5D, 0x00, 0xF8, 0x01, 0x4F, 0xA8, 0x42, 0xF9, 0xD1, 0x9D, 0xF8, -0x04, 0x10, 0x91, 0x42, 0x01, 0xD0, 0x00, 0x20, 0x08, 0xE0, 0x03, 0xF1, 0x3B, 0x00, 0x0D, 0xF1, 0x05, 0x01, 0x01, 0xF0, -0x57, 0xFE, 0x00, 0x28, 0xF5, 0xD1, 0x01, 0x20, 0x0A, 0xB0, 0x70, 0xBD, 0x01, 0x20, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x47, -0x04, 0x46, 0xB1, 0xB1, 0x64, 0x48, 0x65, 0x4D, 0xA0, 0xF1, 0x82, 0x07, 0xED, 0xF7, 0x78, 0xFF, 0x00, 0x26, 0x25, 0xF8, -0x02, 0x6C, 0x28, 0x46, 0x06, 0x22, 0x00, 0x21, 0x05, 0xF5, 0xF6, 0x75, 0xCA, 0xF7, 0xDE, 0xFE, 0xBD, 0x42, 0xF4, 0xD1, -0xEC, 0xF7, 0x56, 0xFC, 0xC4, 0xE9, 0x0A, 0x01, 0x26, 0x66, 0x5B, 0x4E, 0xDF, 0xF8, 0x6C, 0x81, 0x06, 0xF1, 0x88, 0x07, -0x0B, 0x20, 0xED, 0xF7, 0x77, 0xFD, 0x01, 0x28, 0x39, 0xD1, 0x57, 0x4D, 0x4F, 0xF0, 0x00, 0x09, 0x4F, 0xF0, 0x02, 0x0A, -0x03, 0xE0, 0x05, 0xF5, 0xF6, 0x75, 0xB5, 0x42, 0x1A, 0xD0, 0xAB, 0x88, 0x01, 0x2B, 0xF8, 0xD1, 0x6B, 0x7D, 0x05, 0xF1, -0x1C, 0x01, 0x19, 0x44, 0x22, 0x46, 0xA8, 0x1D, 0xFF, 0xF7, 0x8C, 0xFF, 0x00, 0x28, 0xEE, 0xD0, 0x29, 0x46, 0xA5, 0xF8, -0x18, 0x90, 0x85, 0xF8, 0x17, 0x90, 0xA5, 0xF8, 0x04, 0xA0, 0x38, 0x46, 0x05, 0xF5, 0xF6, 0x75, 0xED, 0xF7, 0x3E, 0xFF, -0xB5, 0x42, 0xE4, 0xD1, 0x23, 0x6E, 0x94, 0xF8, 0x65, 0x20, 0x01, 0x33, 0x93, 0x42, 0x23, 0x66, 0x5D, 0xDA, 0x03, 0x21, -0x0B, 0x20, 0xED, 0xF7, 0x9D, 0xFC, 0xFF, 0xF7, 0x1F, 0xFC, 0x00, 0x28, 0xC6, 0xD1, 0x20, 0x46, 0x00, 0x21, 0xBD, 0xE8, -0xF0, 0x47, 0xFF, 0xF7, 0xFF, 0xBE, 0x01, 0x21, 0x0B, 0x20, 0xED, 0xF7, 0x8F, 0xFC, 0x23, 0x6E, 0x06, 0xE0, 0x23, 0x6E, -0x94, 0xF8, 0x65, 0x20, 0x01, 0x33, 0x93, 0x42, 0x23, 0x66, 0xB3, 0xDA, 0x23, 0x44, 0x94, 0xF8, 0x64, 0x00, 0x93, 0xF8, -0x66, 0x10, 0xF1, 0xF7, 0xBB, 0xFF, 0x05, 0x46, 0x00, 0x28, 0xEE, 0xD0, 0xC3, 0x78, 0x9B, 0x07, 0xEB, 0xD4, 0x4F, 0xF4, -0xBA, 0x73, 0x0B, 0x22, 0x04, 0x21, 0x4F, 0xF4, 0x80, 0x50, 0xED, 0xF7, 0x77, 0xFA, 0x06, 0x46, 0x28, 0x68, 0x30, 0x60, -0xAB, 0x88, 0xB3, 0x80, 0xE3, 0x78, 0x1B, 0xB9, 0xF3, 0x78, 0x43, 0xF0, 0x01, 0x03, 0xF3, 0x70, 0x01, 0x25, 0x86, 0xF8, -0x6F, 0x51, 0x94, 0xF8, 0x3A, 0x20, 0x86, 0xF8, 0xFC, 0x20, 0x04, 0xF1, 0x3B, 0x01, 0x06, 0xF1, 0xFD, 0x00, 0x01, 0xF0, -0xE7, 0xFD, 0x86, 0xF8, 0x70, 0x51, 0xA3, 0x8E, 0xA6, 0xF8, 0x60, 0x31, 0xE3, 0x8E, 0xA6, 0xF8, 0x62, 0x31, 0x23, 0x8F, -0xA6, 0xF8, 0x64, 0x31, 0x41, 0xF2, 0xA9, 0x73, 0x30, 0x46, 0x18, 0xF8, 0x03, 0x30, 0x86, 0xF8, 0x6E, 0x31, 0xBD, 0xE8, -0xF0, 0x47, 0xED, 0xF7, 0x79, 0xBA, 0x13, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x09, 0xDB, 0x02, 0x21, -0x0B, 0x20, 0xED, 0xF7, 0x39, 0xFC, 0x20, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, 0x9F, 0xBE, 0xFF, 0xF7, -0xB5, 0xFB, 0x00, 0x28, 0xF1, 0xD0, 0xE3, 0x6D, 0x00, 0x2B, 0xEE, 0xD0, 0x08, 0x49, 0x09, 0x48, 0x40, 0xF2, 0x22, 0x62, -0xEF, 0xF7, 0x0E, 0xFB, 0xE7, 0xE7, 0x00, 0xBF, 0x10, 0x07, 0x18, 0x00, 0x7E, 0xEF, 0x17, 0x00, 0x88, 0x06, 0x18, 0x00, -0x78, 0xEF, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x1C, 0xD1, 0x15, 0x00, 0x10, 0xB5, 0x08, 0x4C, -0x00, 0x21, 0x0B, 0x20, 0xED, 0xF7, 0x10, 0xFC, 0x20, 0x46, 0x41, 0xF2, 0xB0, 0x72, 0x00, 0x21, 0x04, 0xF5, 0xBD, 0x54, -0xCA, 0xF7, 0x08, 0xFE, 0x4F, 0xF0, 0xFF, 0x33, 0x23, 0x60, 0x10, 0xBD, 0x78, 0xEF, 0x17, 0x00, 0xF0, 0xB5, 0xA3, 0xB0, -0x0B, 0x4C, 0x9D, 0xF8, 0xA0, 0x50, 0x8D, 0xF8, 0x02, 0x50, 0x41, 0xF2, 0xA8, 0x75, 0x84, 0x46, 0x41, 0xF2, 0xA9, 0x77, -0x08, 0x46, 0x66, 0x5B, 0x60, 0x55, 0x19, 0x46, 0x68, 0x46, 0x04, 0xF8, 0x07, 0xC0, 0x8D, 0xF8, 0x00, 0x20, 0xFF, 0xF7, -0x57, 0xFE, 0x66, 0x53, 0x23, 0xB0, 0xF0, 0xBD, 0x78, 0xEF, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xAB, 0xB0, 0x41, 0xF2, -0xA8, 0x76, 0x00, 0x92, 0xC4, 0x4A, 0x41, 0xF2, 0xA9, 0x75, 0x91, 0x55, 0xCD, 0xE9, 0x01, 0x01, 0x02, 0xF5, 0xBD, 0x51, -0x50, 0x55, 0x4F, 0xF0, 0xFF, 0x30, 0x08, 0x60, 0x34, 0x99, 0x16, 0x46, 0x41, 0xF2, 0xA4, 0x74, 0x00, 0x22, 0x91, 0x42, -0x32, 0x51, 0x34, 0xDD, 0xDF, 0xF8, 0xF0, 0x82, 0x1F, 0x46, 0x91, 0x46, 0xBA, 0x46, 0x57, 0xF8, 0x04, 0x4B, 0x65, 0x78, -0xAB, 0x1C, 0x04, 0x2B, 0x37, 0xD9, 0x88, 0x22, 0x00, 0x21, 0x40, 0x46, 0xCA, 0xF7, 0xBC, 0xFD, 0xA3, 0x78, 0x88, 0xF8, -0x01, 0x30, 0xE3, 0x78, 0x22, 0x79, 0x88, 0xF8, 0x02, 0x20, 0xD9, 0x07, 0x03, 0xD4, 0x9B, 0x07, 0x1C, 0xD4, 0x05, 0x2A, -0x73, 0xD0, 0xDA, 0xF8, 0x00, 0x40, 0x02, 0x21, 0x00, 0x9A, 0x23, 0x79, 0x8D, 0xF8, 0x20, 0x20, 0xA8, 0x4A, 0x02, 0x98, -0x8D, 0xF8, 0x22, 0x30, 0x41, 0xF2, 0xA8, 0x75, 0x41, 0xF2, 0xA9, 0x73, 0x16, 0x46, 0x54, 0x5B, 0x01, 0x9F, 0x50, 0x55, -0x08, 0xA8, 0xD7, 0x54, 0xFF, 0xF7, 0x04, 0xFE, 0x74, 0x53, 0x2B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x98, 0xF8, 0x00, 0x30, -0x00, 0x9A, 0x93, 0x42, 0x4C, 0xD0, 0x34, 0x9B, 0x09, 0xF1, 0x01, 0x09, 0x4B, 0x45, 0xC1, 0xD1, 0xF1, 0xE7, 0x04, 0x21, -0xDA, 0xE7, 0xA3, 0x2C, 0x00, 0xF0, 0x25, 0x81, 0xA4, 0x2C, 0x40, 0xF0, 0x18, 0x81, 0x98, 0x78, 0x88, 0xF8, 0x20, 0x00, -0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, 0x0B, 0x44, 0x00, 0xF2, 0x82, 0x80, 0x98, 0xF8, 0x03, 0x30, 0x01, 0x2B, 0x3E, 0x46, -0x03, 0x9F, 0x2C, 0xD8, 0x04, 0x9C, 0x72, 0x2C, 0x23, 0x46, 0x94, 0xBF, 0x00, 0x23, 0x01, 0x23, 0x88, 0xF8, 0x64, 0x30, -0x00, 0x2E, 0x00, 0xF0, 0x2B, 0x81, 0xB6, 0xF8, 0x03, 0x20, 0xB1, 0x78, 0xB0, 0x88, 0x88, 0xF8, 0x66, 0x40, 0x41, 0xF2, -0x88, 0x33, 0x9A, 0x42, 0x94, 0xBF, 0x00, 0x22, 0x01, 0x22, 0x01, 0x23, 0x88, 0xF8, 0x64, 0x20, 0x88, 0xF8, 0x65, 0x30, -0x00, 0x29, 0x40, 0xF0, 0x03, 0x81, 0x05, 0x9A, 0x88, 0xF8, 0x64, 0x10, 0x94, 0x42, 0x06, 0xD0, 0x80, 0xF0, 0x59, 0x81, -0x04, 0x9B, 0x04, 0x33, 0x88, 0xF8, 0x67, 0x30, 0x02, 0x23, 0x88, 0xF8, 0x65, 0x30, 0x00, 0x9B, 0x88, 0xF8, 0x00, 0x30, -0x76, 0x4A, 0x13, 0x68, 0x01, 0x33, 0x08, 0xF1, 0x88, 0x08, 0x13, 0x60, 0xAB, 0xE7, 0xEB, 0x1E, 0x0C, 0x2B, 0x40, 0xF2, -0xDD, 0x80, 0xE3, 0x7A, 0x88, 0xF8, 0x03, 0x30, 0x02, 0x2B, 0x82, 0xD8, 0x62, 0x79, 0x63, 0x7A, 0x04, 0x92, 0xA2, 0x79, -0x05, 0x92, 0xA8, 0xF8, 0x30, 0x30, 0x08, 0xF1, 0x3A, 0x0E, 0x08, 0xF1, 0x34, 0x03, 0xA4, 0xEB, 0x08, 0x01, 0x5A, 0x18, -0x12, 0xF8, 0x28, 0x2C, 0x03, 0xF8, 0x01, 0x2B, 0x73, 0x45, 0xF8, 0xD1, 0xB8, 0xF8, 0x34, 0x20, 0x4F, 0xF6, 0xFF, 0x73, -0x9A, 0x42, 0xA5, 0xF1, 0x10, 0x02, 0x08, 0xBF, 0x01, 0x23, 0x4F, 0xF0, 0x02, 0x01, 0x92, 0xB2, 0x08, 0xBF, 0x88, 0xF8, -0x32, 0x30, 0x8A, 0x42, 0x04, 0xF1, 0x12, 0x03, 0x88, 0xF8, 0x04, 0x10, 0x40, 0xF2, 0x47, 0x81, 0x00, 0x21, 0x6F, 0xF0, -0x13, 0x00, 0x0C, 0x46, 0x6F, 0xF0, 0x08, 0x06, 0x6F, 0xF0, 0x37, 0x0C, 0x0D, 0x46, 0xA0, 0xEB, 0x08, 0x01, 0x03, 0x97, -0x06, 0x91, 0xA6, 0xEB, 0x08, 0x06, 0xAC, 0xEB, 0x08, 0x0C, 0x27, 0x46, 0x58, 0x78, 0x1C, 0x78, 0x81, 0x1C, 0x91, 0x42, -0x00, 0xF2, 0x96, 0x80, 0x0B, 0x2C, 0x3F, 0xF6, 0x66, 0xAF, 0x0B, 0x2C, 0x3F, 0xF6, 0x6C, 0xAF, 0x0F, 0xF2, 0x04, 0x0B, -0x5B, 0xF8, 0x24, 0xF0, 0xA9, 0x58, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, 0x97, 0x58, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, -0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, -0xB1, 0x56, 0x15, 0x00, 0x65, 0x58, 0x15, 0x00, 0x11, 0x58, 0x15, 0x00, 0x02, 0x29, 0x71, 0xD0, 0x9C, 0x78, 0xFF, 0x2C, -0x7F, 0xF4, 0x4A, 0xAF, 0x00, 0xF1, 0xFF, 0x3B, 0x5F, 0xFA, 0x8B, 0xFB, 0xBB, 0xF1, 0x08, 0x0F, 0x28, 0xBF, 0x4F, 0xF0, -0x08, 0x0B, 0x01, 0x28, 0xC8, 0xF8, 0x14, 0xB0, 0x3F, 0xF4, 0x3C, 0xAF, 0x08, 0xF1, 0x17, 0x00, 0xCD, 0xF8, 0x1C, 0xA0, -0xDD, 0xF8, 0x18, 0xA0, 0x83, 0x44, 0x1C, 0x18, 0x14, 0xF8, 0x0A, 0x40, 0x00, 0xF8, 0x01, 0x4F, 0x58, 0x45, 0xF8, 0xD1, -0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, 0xDD, 0xF8, 0x1C, 0xA0, 0x0B, 0x44, 0xAE, 0xD8, 0x2B, 0xE7, 0x8C, 0x1E, 0x08, 0x2C, -0xA8, 0xBF, 0x08, 0x24, 0x02, 0x29, 0xC8, 0xF8, 0x08, 0x40, 0x3F, 0xF4, 0x1D, 0xAF, 0x08, 0xF1, 0x0B, 0x00, 0x00, 0xEB, -0x04, 0x0B, 0x1C, 0x18, 0xA4, 0x5D, 0x00, 0xF8, 0x01, 0x4F, 0x83, 0x45, 0xF9, 0xD1, 0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, -0x0B, 0x44, 0x95, 0xD8, 0x12, 0xE7, 0x52, 0x1A, 0x92, 0xB2, 0x98, 0x78, 0x88, 0xF8, 0x04, 0x00, 0x02, 0x2A, 0x0B, 0x44, -0x8C, 0xD8, 0x09, 0xE7, 0x22, 0x29, 0x25, 0xD8, 0x88, 0xF8, 0x3A, 0x00, 0x00, 0x28, 0x3F, 0xF4, 0xFD, 0xAE, 0x00, 0xEB, -0x0E, 0x04, 0x70, 0x46, 0x00, 0xEB, 0x03, 0x0B, 0x1B, 0xF8, 0x0C, 0xB0, 0x00, 0xF8, 0x01, 0xBF, 0xA0, 0x42, 0xF7, 0xD1, -0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, 0x0B, 0x44, 0x3F, 0xF6, 0x74, 0xAF, 0xF0, 0xE6, 0x52, 0x1A, 0x92, 0xB2, 0x33, 0x2C, -0x08, 0xBF, 0x1D, 0x46, 0x02, 0x2A, 0x0B, 0x44, 0x3F, 0xF6, 0x6A, 0xAF, 0xE6, 0xE6, 0x1F, 0x46, 0xDE, 0xE6, 0x00, 0x23, -0x88, 0xF8, 0x65, 0x30, 0xDA, 0xF8, 0x00, 0x40, 0x04, 0x21, 0xA9, 0xE6, 0x78, 0xEF, 0x17, 0x00, 0x1C, 0x07, 0x18, 0x00, -0x88, 0x06, 0x18, 0x00, 0x01, 0x29, 0x08, 0xF1, 0x66, 0x03, 0x00, 0xF0, 0x47, 0x81, 0x04, 0x9A, 0x41, 0x2A, 0x35, 0xBF, -0x40, 0x20, 0x80, 0x20, 0x24, 0x22, 0x64, 0x22, 0x11, 0x1D, 0x03, 0xF8, 0x01, 0x2B, 0xCA, 0xB2, 0x90, 0x42, 0xF9, 0xD2, -0x08, 0x23, 0xF4, 0xE6, 0x05, 0x9B, 0xFF, 0x2B, 0x4E, 0xD0, 0x05, 0x9B, 0x00, 0x2B, 0x00, 0xF0, 0x85, 0x80, 0x05, 0x9A, -0x88, 0xF8, 0x66, 0x20, 0x01, 0x23, 0x88, 0xF8, 0x65, 0x30, 0x04, 0x9B, 0xA3, 0xF1, 0x53, 0x02, 0x08, 0xF1, 0x66, 0x03, -0x2E, 0x2A, 0x30, 0xD8, 0xDF, 0xE8, 0x12, 0xF0, 0x39, 0x00, 0x31, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, -0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, -0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, -0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x39, 0x00, 0x31, 0x00, 0x2F, 0x00, -0x39, 0x00, 0x31, 0x00, 0x2F, 0x00, 0x39, 0x00, 0x31, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x39, 0x00, 0x31, 0x00, 0x71, 0x01, -0x6E, 0x01, 0x01, 0x23, 0xAD, 0xE6, 0x05, 0x9B, 0x04, 0x93, 0x04, 0x9B, 0x04, 0x3B, 0x88, 0xF8, 0x67, 0x30, 0x02, 0x23, -0xA5, 0xE6, 0x05, 0x9B, 0x04, 0x93, 0x9D, 0xE6, 0x00, 0x2D, 0x8D, 0xD0, 0xAB, 0x78, 0x04, 0x9A, 0x93, 0x42, 0x89, 0xD1, -0x68, 0x78, 0x43, 0x1E, 0xDB, 0xB2, 0x1C, 0x2B, 0x28, 0xBF, 0x1C, 0x23, 0x59, 0x1E, 0x01, 0x28, 0x05, 0xF1, 0x03, 0x05, -0xC9, 0xB2, 0x3F, 0xF4, 0x7D, 0xAF, 0x32, 0x46, 0x08, 0xEB, 0x02, 0x04, 0xAE, 0x5C, 0x84, 0xF8, 0x66, 0x60, 0x91, 0x42, -0x02, 0xF1, 0x01, 0x02, 0xF6, 0xD1, 0x01, 0x28, 0x3F, 0xF4, 0x70, 0xAF, 0x88, 0xF8, 0x65, 0x30, 0x01, 0x2B, 0x7F, 0xF4, -0x80, 0xAE, 0x98, 0xF8, 0x66, 0x30, 0x05, 0x93, 0x91, 0xE7, 0x98, 0xF8, 0x03, 0x30, 0x01, 0x2B, 0x3F, 0xF6, 0x77, 0xAE, -0x04, 0x9B, 0x72, 0x2B, 0x94, 0xBF, 0x00, 0x23, 0x01, 0x23, 0x88, 0xF8, 0x64, 0x30, 0x05, 0x9B, 0xFF, 0x2B, 0x7F, 0xF4, -0x78, 0xAF, 0x55, 0xE7, 0x04, 0x9A, 0x08, 0xF1, 0x66, 0x03, 0x51, 0x3A, 0x1E, 0x46, 0x30, 0x2A, 0x3F, 0xF6, 0x4B, 0xAF, -0x01, 0xA1, 0x51, 0xF8, 0x22, 0xF0, 0x00, 0xBF, 0x9B, 0x5B, 0x15, 0x00, 0x27, 0x5C, 0x15, 0x00, 0x9B, 0x5B, 0x15, 0x00, -0x9B, 0x5B, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, -0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, -0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, -0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, -0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, -0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, -0xF3, 0x58, 0x15, 0x00, 0x91, 0x5B, 0x15, 0x00, 0x91, 0x5B, 0x15, 0x00, 0x91, 0x5B, 0x15, 0x00, 0x87, 0x5B, 0x15, 0x00, -0x87, 0x5B, 0x15, 0x00, 0x87, 0x5B, 0x15, 0x00, 0x7D, 0x5B, 0x15, 0x00, 0x7D, 0x5B, 0x15, 0x00, 0x7D, 0x5B, 0x15, 0x00, -0x29, 0x5B, 0x15, 0x00, 0x03, 0x5C, 0x15, 0x00, 0x29, 0x5B, 0x15, 0x00, 0x29, 0x5B, 0x15, 0x00, 0xE9, 0x5B, 0x15, 0x00, -0x0D, 0x5C, 0x15, 0x00, 0x00, 0x25, 0x04, 0x20, 0xA2, 0x24, 0x95, 0x22, 0x71, 0x1E, 0x0B, 0x46, 0x02, 0x33, 0x01, 0xF8, -0x01, 0x2F, 0x02, 0x44, 0x2B, 0x44, 0x94, 0x42, 0xA3, 0xEB, 0x06, 0x03, 0xF5, 0xDC, 0x40, 0x4A, 0xDB, 0xB2, 0x12, 0x68, -0x88, 0xF8, 0x65, 0x30, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x03, 0xDB, 0x00, 0x2B, 0x7F, 0xF4, 0x5F, 0xAF, 0xCB, 0xE6, -0x1C, 0x2B, 0xF9, 0xD9, 0x39, 0x49, 0x3A, 0x48, 0x40, 0xF2, 0x01, 0x32, 0xEF, 0xF7, 0x06, 0xF8, 0x98, 0xF8, 0x65, 0x30, -0x00, 0x2B, 0x7F, 0xF4, 0x51, 0xAF, 0xBD, 0xE6, 0x00, 0x25, 0x04, 0x20, 0x91, 0x24, 0x64, 0x22, 0xD4, 0xE7, 0x00, 0x25, -0x04, 0x20, 0x41, 0x24, 0x34, 0x22, 0xCF, 0xE7, 0x00, 0x25, 0x04, 0x20, 0x31, 0x24, 0x24, 0x22, 0xCA, 0xE7, 0x01, 0x20, -0x02, 0x46, 0x00, 0x25, 0x0E, 0x24, 0xC5, 0xE7, 0x00, 0x28, 0x7F, 0xF4, 0xB6, 0xAE, 0x04, 0x9A, 0x23, 0x2A, 0x7F, 0xF6, -0x06, 0xAF, 0x30, 0x2A, 0x15, 0xD9, 0x40, 0x2A, 0x10, 0xD9, 0x70, 0x2A, 0x3B, 0xD9, 0x80, 0x2A, 0x36, 0xD9, 0x90, 0x2A, -0x3F, 0xF6, 0xFB, 0xAE, 0x90, 0x21, 0x84, 0x22, 0x10, 0x1D, 0x03, 0xF8, 0x01, 0x2B, 0xC2, 0xB2, 0x91, 0x42, 0xF9, 0xD2, -0x04, 0x23, 0xA0, 0xE5, 0x40, 0x21, 0x34, 0x22, 0xF4, 0xE7, 0x30, 0x21, 0x24, 0x22, 0xF1, 0xE7, 0x24, 0x22, 0x03, 0xF8, -0x01, 0x2B, 0x04, 0x32, 0x44, 0x2A, 0xFA, 0xD1, 0x08, 0xF1, 0x6E, 0x06, 0x08, 0x25, 0x04, 0x20, 0x91, 0x24, 0x64, 0x22, -0x96, 0xE7, 0x00, 0x25, 0x04, 0x20, 0xAA, 0x24, 0x95, 0x22, 0x91, 0xE7, 0x24, 0x22, 0x03, 0xF8, 0x01, 0x2B, 0x04, 0x32, -0x44, 0x2A, 0xFA, 0xD1, 0x08, 0xF1, 0x6E, 0x06, 0x08, 0x25, 0x04, 0x20, 0x81, 0x24, 0x64, 0x22, 0x84, 0xE7, 0x0F, 0x24, -0x01, 0x20, 0x00, 0x25, 0x0E, 0x22, 0x7F, 0xE7, 0x80, 0x21, 0x74, 0x22, 0xCA, 0xE7, 0x70, 0x21, 0x64, 0x22, 0xC7, 0xE7, -0x05, 0x9A, 0x04, 0x92, 0x69, 0xE6, 0x05, 0x9A, 0x04, 0x92, 0xB0, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, -0x5C, 0xD1, 0x15, 0x00, 0x70, 0xB5, 0x15, 0x4D, 0x2C, 0x68, 0xA5, 0xF5, 0xBD, 0x56, 0x01, 0x34, 0xA5, 0xF1, 0x90, 0x01, -0x2C, 0x60, 0x33, 0x46, 0x01, 0x20, 0x9A, 0x88, 0x01, 0x2A, 0x88, 0xBF, 0x98, 0x80, 0x03, 0xF5, 0xF6, 0x73, 0x8B, 0x42, -0xF7, 0xD1, 0x41, 0xF2, 0xA4, 0x73, 0xF3, 0x58, 0x9C, 0x42, 0x0B, 0xDA, 0x04, 0x21, 0x0B, 0x20, 0xED, 0xF7, 0x90, 0xF8, -0x0B, 0x22, 0xBD, 0xE8, 0x70, 0x40, 0x11, 0x46, 0x4F, 0xF4, 0x30, 0x50, 0xEC, 0xF7, 0xF6, 0xBE, 0x00, 0x21, 0x0B, 0x20, -0xED, 0xF7, 0x84, 0xF8, 0x4F, 0xF0, 0xFF, 0x33, 0x2B, 0x60, 0x70, 0xBD, 0x18, 0x07, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x43, -0x3E, 0x4C, 0x3F, 0x4E, 0x04, 0xF5, 0xBD, 0x53, 0x31, 0x68, 0x1B, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0x03, 0xEB, 0x03, 0x13, -0x04, 0xEB, 0xC3, 0x05, 0x05, 0xF5, 0xB8, 0x55, 0x00, 0x29, 0x05, 0xF1, 0x10, 0x05, 0x4F, 0xEA, 0xC3, 0x03, 0x3A, 0xDB, -0x23, 0x44, 0x41, 0xF2, 0x13, 0x72, 0x9B, 0x5C, 0x01, 0x2B, 0x45, 0xD9, 0x02, 0x2B, 0x50, 0xD1, 0x02, 0x21, 0x0B, 0x20, -0xED, 0xF7, 0x5C, 0xF8, 0x30, 0x48, 0x2E, 0x4C, 0xA0, 0xF1, 0x88, 0x06, 0x06, 0xF1, 0x88, 0x09, 0xED, 0xF7, 0xE4, 0xFA, -0x00, 0x27, 0x4F, 0xF0, 0x02, 0x08, 0x03, 0xE0, 0x04, 0xF5, 0xF6, 0x74, 0xB4, 0x42, 0x18, 0xD0, 0xA3, 0x88, 0x01, 0x2B, -0xF8, 0xD1, 0x63, 0x7D, 0x04, 0xF1, 0x1C, 0x01, 0x19, 0x44, 0x2A, 0x46, 0xA0, 0x1D, 0xFF, 0xF7, 0x15, 0xFB, 0x00, 0x28, -0xEE, 0xD0, 0x21, 0x46, 0x27, 0x83, 0xE7, 0x75, 0xA4, 0xF8, 0x04, 0x80, 0x48, 0x46, 0x04, 0xF5, 0xF6, 0x74, 0xED, 0xF7, -0xC9, 0xFA, 0xB4, 0x42, 0xE6, 0xD1, 0x28, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0xF8, 0x43, 0xFF, 0xF7, 0x99, 0xBA, 0x1C, 0x44, -0x41, 0xF2, 0x12, 0x73, 0xE3, 0x5C, 0x05, 0x2B, 0x19, 0xD0, 0x17, 0x49, 0x17, 0x48, 0x40, 0xF2, 0xA3, 0x62, 0xEE, 0xF7, -0x09, 0xFF, 0x41, 0xF2, 0x13, 0x73, 0xE3, 0x5C, 0x01, 0x2B, 0x05, 0xD8, 0x28, 0x46, 0x01, 0x21, 0xBD, 0xE8, 0xF8, 0x43, -0xFF, 0xF7, 0x24, 0xBB, 0x02, 0x2B, 0xB3, 0xD0, 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x08, 0xDB, 0xBD, 0xE8, -0xF8, 0x83, 0x41, 0xF2, 0x13, 0x73, 0xE3, 0x5C, 0x01, 0x2B, 0xEB, 0xD9, 0x02, 0x2B, 0xA5, 0xD0, 0xBD, 0xE8, 0xF8, 0x43, -0x05, 0x49, 0x07, 0x48, 0x40, 0xF2, 0xAF, 0x62, 0xEE, 0xF7, 0xE6, 0xBE, 0x78, 0xEF, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, -0x10, 0x07, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, 0x94, 0xD1, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, -0xDF, 0xF8, 0xCC, 0x80, 0x2C, 0x4A, 0xD8, 0xF8, 0x00, 0x30, 0x14, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0C, 0xDB, -0x29, 0x4F, 0x04, 0xEB, 0x04, 0x13, 0x07, 0xEB, 0xC3, 0x03, 0x41, 0xF2, 0x13, 0x72, 0x25, 0x01, 0x9B, 0x5C, 0x01, 0x2B, -0x19, 0xD9, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x2C, 0x35, 0xDB, 0x22, 0x4F, 0x04, 0xEB, 0x04, 0x16, 0x07, 0xEB, 0xC6, 0x06, -0x41, 0xF2, 0x12, 0x73, 0x25, 0x01, 0xF3, 0x5C, 0x05, 0x2B, 0x15, 0xD0, 0x1D, 0x49, 0x1E, 0x48, 0x4F, 0xF4, 0xD7, 0x62, -0xEE, 0xF7, 0xAE, 0xFE, 0x41, 0xF2, 0x13, 0x73, 0xF3, 0x5C, 0x01, 0x2B, 0x17, 0xD8, 0x2C, 0x44, 0x07, 0xEB, 0xC4, 0x00, -0x00, 0xF5, 0xB8, 0x50, 0xBD, 0xE8, 0xF0, 0x41, 0x10, 0x30, 0x00, 0x21, 0xFF, 0xF7, 0xC4, 0xBA, 0x41, 0xF2, 0x13, 0x73, -0xF3, 0x5C, 0x01, 0x2B, 0xEF, 0xD9, 0xBD, 0xE8, 0xF0, 0x41, 0x0F, 0x49, 0x10, 0x48, 0x40, 0xF2, 0xC1, 0x62, 0xEE, 0xF7, -0x91, 0xBE, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xF1, 0xDB, 0xBD, 0xE8, 0xF0, 0x81, 0x08, 0x49, -0x0A, 0x48, 0x40, 0xF2, 0xB7, 0x62, 0xEE, 0xF7, 0x83, 0xFE, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, -0xBD, 0xDB, 0xAD, 0xE7, 0x18, 0x07, 0x18, 0x00, 0x78, 0xEF, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x94, 0xD1, 0x15, 0x00, -0x64, 0x7D, 0x15, 0x00, 0xC0, 0xD1, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0xB5, 0x29, 0xB3, 0x18, 0x4C, 0x04, 0xF5, -0xBD, 0x53, 0x05, 0x46, 0x1E, 0x68, 0xFE, 0xF7, 0x01, 0xFF, 0x02, 0x46, 0x40, 0xB1, 0x0B, 0x20, 0xED, 0xF7, 0x20, 0xF8, -0x03, 0x28, 0x1F, 0xD0, 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0xC6, 0xBE, 0x06, 0xEB, 0x06, 0x16, 0x04, 0xEB, 0xC6, 0x03, -0x01, 0x21, 0x03, 0xF5, 0xB8, 0x53, 0x85, 0xF8, 0x5E, 0x10, 0x10, 0x33, 0x01, 0x46, 0x28, 0x46, 0xFE, 0xF7, 0x00, 0xFF, -0x28, 0x46, 0x03, 0x21, 0xBD, 0xE8, 0x70, 0x40, 0xDA, 0xF7, 0x42, 0xB8, 0x0B, 0x20, 0xEC, 0xF7, 0x5B, 0xFF, 0x05, 0x4B, -0x4F, 0xF0, 0xFF, 0x32, 0x1A, 0x60, 0x70, 0xBD, 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0x60, 0xBF, 0x78, 0xEF, 0x17, 0x00, -0x18, 0x07, 0x18, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x8B, 0xB0, 0xB6, 0x4F, 0x9D, 0xF8, 0x50, 0x40, 0x03, 0x94, 0x9D, 0xF9, -0x54, 0x40, 0x04, 0x94, 0x07, 0xF5, 0xBD, 0x55, 0x04, 0x46, 0x28, 0x68, 0x25, 0x7C, 0x8D, 0xF8, 0x20, 0x50, 0x65, 0x7C, -0x8D, 0xF8, 0x21, 0x50, 0xA5, 0x7C, 0x8D, 0xF8, 0x22, 0x50, 0xE5, 0x7C, 0x8D, 0xF8, 0x23, 0x50, 0x25, 0x7D, 0x8D, 0xF8, -0x24, 0x50, 0x00, 0x28, 0x65, 0x7D, 0x9D, 0xF8, 0x58, 0x90, 0x8D, 0xF8, 0x25, 0x50, 0x0E, 0x46, 0x90, 0x46, 0x05, 0x93, -0xC0, 0xF2, 0x1A, 0x81, 0x00, 0xEB, 0x00, 0x10, 0x07, 0xEB, 0xC0, 0x00, 0x00, 0xF5, 0xB8, 0x57, 0x10, 0x37, 0x3A, 0x46, -0x00, 0x21, 0x08, 0xA8, 0xFF, 0xF7, 0xEE, 0xF9, 0x10, 0xB9, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xBD, 0xF8, 0x20, 0x00, -0xBD, 0xF8, 0x24, 0x30, 0x01, 0x93, 0x00, 0x21, 0xBD, 0xF8, 0x22, 0xE0, 0x97, 0x4B, 0x98, 0x4A, 0x02, 0x94, 0x8C, 0x46, -0x0D, 0x46, 0x83, 0x46, 0x0B, 0xE0, 0x98, 0x88, 0x01, 0x28, 0x00, 0xF0, 0xC1, 0x80, 0x03, 0x28, 0x00, 0xF0, 0xB4, 0x80, -0x88, 0xB1, 0x03, 0xF5, 0xF6, 0x73, 0x93, 0x42, 0x14, 0xD0, 0xB3, 0xF8, 0x06, 0xA0, 0xDA, 0x45, 0xEF, 0xD1, 0x18, 0x89, -0x70, 0x45, 0xEC, 0xD1, 0x58, 0x89, 0x01, 0x9C, 0xA0, 0x42, 0xE8, 0xD1, 0x02, 0x9C, 0x1D, 0x46, 0x10, 0xE0, 0x00, 0x2D, -0x08, 0xBF, 0x1D, 0x46, 0x03, 0xF5, 0xF6, 0x73, 0x93, 0x42, 0xEA, 0xD1, 0x02, 0x9C, 0x00, 0x2D, 0x00, 0xF0, 0x42, 0x81, -0x4F, 0xF4, 0xF6, 0x72, 0x00, 0x21, 0x28, 0x46, 0xCA, 0xF7, 0xDC, 0xF8, 0xAB, 0x88, 0x03, 0x2B, 0xBF, 0xD0, 0x03, 0x9B, -0xBD, 0xF8, 0x20, 0x10, 0xBD, 0xF8, 0x22, 0x20, 0xC5, 0xF8, 0x0C, 0x80, 0x00, 0x2B, 0xBD, 0xF8, 0x24, 0x30, 0x6B, 0x81, -0x08, 0xBF, 0x05, 0x20, 0x05, 0xF1, 0x1C, 0x03, 0x18, 0xBF, 0x04, 0x20, 0x02, 0x93, 0x04, 0xF1, 0x24, 0x08, 0x85, 0xF8, -0x11, 0x90, 0xA8, 0x74, 0xE9, 0x80, 0x2A, 0x81, 0x18, 0x34, 0x05, 0xF1, 0x1B, 0x03, 0x14, 0xF8, 0x01, 0x2B, 0x03, 0xF8, -0x01, 0x2F, 0x44, 0x45, 0xF9, 0xD1, 0x02, 0x9B, 0xA6, 0xF1, 0x24, 0x09, 0x03, 0xF1, 0x0C, 0x0B, 0xB9, 0xF1, 0x02, 0x0F, -0x4F, 0xF0, 0x00, 0x03, 0xCD, 0xE9, 0x06, 0x33, 0x40, 0xF3, 0x56, 0x81, 0x4F, 0xF4, 0xE2, 0x7A, 0x3A, 0x46, 0x98, 0xF8, -0x01, 0x40, 0x98, 0xF8, 0x00, 0x60, 0x98, 0xF8, 0x02, 0x70, 0x02, 0x34, 0x08, 0xF1, 0x02, 0x00, 0x00, 0x2E, 0x71, 0xD0, -0x03, 0x2E, 0x7D, 0xD0, 0xA9, 0x7C, 0x05, 0x29, 0x00, 0xF2, 0x81, 0x80, 0x2A, 0x2E, 0x00, 0xF0, 0x8D, 0x80, 0x3D, 0x2E, -0x00, 0xF0, 0x8D, 0x80, 0xC0, 0x2E, 0x00, 0xF0, 0x9A, 0x80, 0xFF, 0x2E, 0x02, 0xD1, 0x08, 0x2C, 0x00, 0xF2, 0xCD, 0x80, -0x54, 0x45, 0x07, 0xDC, 0x39, 0x46, 0x30, 0x46, 0x01, 0x92, 0xFE, 0xF7, 0xD5, 0xFD, 0x01, 0x9A, 0x00, 0x28, 0x46, 0xD1, -0xA0, 0x44, 0xA9, 0xEB, 0x04, 0x09, 0xB9, 0xF1, 0x02, 0x0F, 0xD0, 0xDC, 0xCA, 0xF5, 0xE8, 0x7A, 0x1F, 0xFA, 0x8A, 0xFA, -0xAB, 0x7D, 0xA5, 0xF8, 0x1A, 0xA0, 0x00, 0x2B, 0x00, 0xF0, 0x94, 0x80, 0x04, 0x9B, 0x2B, 0x75, 0x2B, 0x7C, 0x06, 0x9A, -0x04, 0x2A, 0x00, 0xF0, 0x06, 0x81, 0x03, 0x2A, 0x00, 0xF0, 0x05, 0x81, 0x02, 0x2A, 0x00, 0xF0, 0x04, 0x81, 0x03, 0x99, -0x00, 0x29, 0x40, 0xF0, 0xC0, 0x80, 0x0E, 0x2B, 0x00, 0xF0, 0x14, 0x81, 0x00, 0x2A, 0x00, 0xF0, 0x06, 0x81, 0x07, 0x9B, -0x01, 0x2B, 0x0C, 0xBF, 0x54, 0x23, 0x53, 0x23, 0x01, 0x22, 0xEB, 0x74, 0xAA, 0x80, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, -0x00, 0x29, 0x41, 0xD0, 0x93, 0xF9, 0x14, 0xA0, 0x91, 0xF9, 0x14, 0x00, 0x82, 0x45, 0xB8, 0xBF, 0x19, 0x46, 0x42, 0xE7, -0xBC, 0xF1, 0x00, 0x0F, 0x34, 0xD0, 0x93, 0xF9, 0x14, 0xA0, 0x9C, 0xF9, 0x14, 0x00, 0x82, 0x45, 0xB8, 0xBF, 0x9C, 0x46, -0x37, 0xE7, 0x43, 0x46, 0xAB, 0xEB, 0x03, 0x00, 0xA0, 0x44, 0x19, 0x78, 0xC1, 0x54, 0x01, 0x33, 0x98, 0x45, 0xFA, 0xD1, -0xA3, 0x44, 0xAA, 0xEB, 0x04, 0x0A, 0xAC, 0xE7, 0x02, 0x9B, 0x01, 0x92, 0xAB, 0xEB, 0x03, 0x01, 0x69, 0x75, 0xA8, 0x1D, -0x41, 0x46, 0xFF, 0xF7, 0xF5, 0xF8, 0x01, 0x9A, 0x00, 0x28, 0x95, 0xD1, 0xA8, 0x80, 0x02, 0xE7, 0x02, 0x9B, 0xAB, 0xEB, -0x03, 0x01, 0xA9, 0x75, 0x01, 0x78, 0x29, 0x74, 0x8C, 0xE7, 0x06, 0x29, 0x3F, 0xF4, 0x7F, 0xAF, 0x08, 0x29, 0x7F, 0xF6, -0x7F, 0xAF, 0x0D, 0x29, 0x84, 0xD8, 0x7E, 0xE7, 0x00, 0x27, 0xEA, 0xE6, 0x9C, 0x46, 0x08, 0xE7, 0x19, 0x46, 0x06, 0xE7, -0x06, 0x21, 0xA9, 0x74, 0x7A, 0xE7, 0x18, 0x2C, 0x7F, 0xF4, 0x78, 0xAF, 0x4F, 0xF0, 0x07, 0x03, 0xAB, 0x74, 0x98, 0xF8, -0x03, 0x10, 0x11, 0xF0, 0x03, 0x03, 0x07, 0x93, 0x06, 0x9B, 0x18, 0xBF, 0x01, 0x23, 0x06, 0x93, 0x6A, 0xE7, 0x07, 0x2C, -0x7F, 0xF4, 0x68, 0xAF, 0x4F, 0xF0, 0x09, 0x03, 0xAB, 0x74, 0x01, 0x78, 0x00, 0x29, 0x3F, 0xF4, 0x61, 0xAF, 0x01, 0x29, -0x76, 0xD0, 0x02, 0x29, 0x00, 0xF0, 0x97, 0x80, 0x03, 0x29, 0x06, 0x9B, 0x08, 0xBF, 0x04, 0x23, 0x06, 0x93, 0x55, 0xE7, -0x78, 0xEF, 0x17, 0x00, 0x88, 0x06, 0x18, 0x00, 0xAA, 0x88, 0x22, 0xB1, 0x95, 0xF9, 0x14, 0x20, 0x04, 0x99, 0x8A, 0x42, -0x60, 0xDA, 0x04, 0x9A, 0x2A, 0x75, 0x03, 0x9A, 0x00, 0x2A, 0x42, 0xD1, 0x05, 0x99, 0xA1, 0xF6, 0x6C, 0x13, 0x48, 0x2B, -0x6D, 0xD8, 0x40, 0xF6, 0xB4, 0x13, 0x99, 0x42, 0x00, 0xF0, 0x82, 0x80, 0x48, 0x4A, 0xA1, 0xF6, 0x67, 0x13, 0xA2, 0xFB, -0x03, 0x23, 0xC3, 0xF3, 0x87, 0x03, 0x2B, 0x74, 0x4F, 0xE7, 0x24, 0x2F, 0x7F, 0xF4, 0x30, 0xAF, 0x09, 0x29, 0x11, 0xD0, -0x0B, 0x2C, 0x0F, 0xD9, 0xD8, 0xF8, 0x03, 0x10, 0x4B, 0x04, 0x0B, 0xD5, 0x98, 0xF8, 0x09, 0x10, 0x41, 0xB1, 0x01, 0x29, -0x71, 0xD0, 0x02, 0x29, 0x72, 0xD0, 0x03, 0x29, 0x06, 0x9B, 0x08, 0xBF, 0x04, 0x23, 0x06, 0x93, 0x4F, 0xF0, 0x0E, 0x03, -0xAB, 0x74, 0x17, 0xE7, 0x89, 0xB3, 0x0D, 0x46, 0xBA, 0xE6, 0x30, 0x2B, 0x24, 0xD9, 0x40, 0x2B, 0x40, 0xD9, 0x90, 0x2B, -0x4C, 0xD9, 0xA4, 0x2B, 0x59, 0xD8, 0x06, 0x9B, 0x00, 0x2B, 0x54, 0xD0, 0x0A, 0x23, 0x07, 0x9A, 0x01, 0x2A, 0x0C, 0xBF, -0x74, 0x33, 0x75, 0x33, 0x38, 0xE7, 0x03, 0x9A, 0x01, 0x2A, 0xCA, 0xD1, 0x05, 0x9A, 0xA2, 0xF5, 0x9C, 0x51, 0xA1, 0xF1, -0x0D, 0x02, 0x92, 0xB2, 0xB2, 0xF5, 0x4D, 0x7F, 0xC1, 0xD8, 0x26, 0x4A, 0xA1, 0xF1, 0x08, 0x03, 0xA2, 0xFB, 0x03, 0x23, -0xC3, 0xF3, 0x87, 0x03, 0x2B, 0x74, 0x0A, 0xE7, 0x06, 0x9B, 0x23, 0xB3, 0x00, 0x23, 0xE0, 0xE7, 0x2B, 0x7C, 0x04, 0xE7, -0x02, 0x23, 0x06, 0x93, 0xE4, 0xE6, 0xBC, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x50, 0xAE, 0x9C, 0xF9, 0x14, 0x30, 0x04, 0x9A, -0x93, 0x42, 0xBF, 0xF6, 0x4A, 0xAE, 0x65, 0x46, 0x7E, 0xE6, 0x82, 0x23, 0x0C, 0xE7, 0x81, 0x23, 0x0A, 0xE7, 0x80, 0x23, -0x08, 0xE7, 0x03, 0x9B, 0x2B, 0x74, 0xEC, 0xE6, 0x06, 0x9B, 0x8B, 0xB1, 0x03, 0x23, 0xC2, 0xE7, 0x4F, 0xF0, 0x0C, 0x0A, -0xDC, 0xE6, 0x51, 0x23, 0xFC, 0xE6, 0x73, 0x23, 0xFA, 0xE6, 0x03, 0x23, 0x06, 0x93, 0xC1, 0xE6, 0x06, 0x9B, 0x43, 0xB1, -0x06, 0x23, 0xB4, 0xE7, 0x52, 0x23, 0xF1, 0xE6, 0x76, 0x23, 0xEF, 0xE6, 0x0E, 0x23, 0x2B, 0x74, 0xD3, 0xE6, 0x79, 0x23, -0xEA, 0xE6, 0x7C, 0x23, 0xE8, 0xE6, 0x7D, 0x23, 0xE6, 0xE6, 0x02, 0x23, 0x06, 0x93, 0x91, 0xE7, 0x03, 0x23, 0x06, 0x93, -0x8E, 0xE7, 0x00, 0xBF, 0xCD, 0xCC, 0xCC, 0xCC, 0x2D, 0xE9, 0xF0, 0x48, 0xC1, 0xF3, 0x0A, 0x57, 0xA7, 0xF2, 0xFF, 0x34, -0x13, 0x2C, 0x0B, 0x46, 0x0D, 0x46, 0x02, 0x46, 0x0F, 0xDC, 0x00, 0x2C, 0x2A, 0xDB, 0x1D, 0x49, 0x21, 0x41, 0x03, 0xEA, -0x01, 0x00, 0x10, 0x43, 0x2F, 0xD0, 0x4F, 0xF4, 0x00, 0x23, 0x23, 0x41, 0x1D, 0x44, 0x25, 0xEA, 0x01, 0x05, 0x00, 0x23, -0x25, 0xE0, 0x33, 0x2C, 0x07, 0xDD, 0xB4, 0xF5, 0x80, 0x6F, 0x22, 0xD1, 0x00, 0xF0, 0x2E, 0xF8, 0x02, 0x46, 0x0B, 0x46, -0x1D, 0xE0, 0xA7, 0xF2, 0x13, 0x47, 0x4F, 0xF0, 0xFF, 0x31, 0x21, 0xFA, 0x07, 0xF7, 0x38, 0x42, 0x15, 0xD0, 0x01, 0x22, -0xC4, 0xF1, 0x33, 0x03, 0x02, 0xFA, 0x03, 0xF3, 0xC3, 0x18, 0x28, 0xBF, 0xAD, 0x18, 0x23, 0xEA, 0x07, 0x03, 0x08, 0xE0, -0x01, 0xF0, 0x00, 0x45, 0x01, 0x34, 0x04, 0xBF, 0x45, 0xF0, 0x7F, 0x55, 0x45, 0xF4, 0x40, 0x15, 0x00, 0x23, 0x1A, 0x46, -0x2B, 0x46, 0x10, 0x46, 0x19, 0x46, 0xBD, 0xE8, 0xF0, 0x88, 0x00, 0xBF, 0xFF, 0xFF, 0x0F, 0x00, 0x81, 0xF0, 0x00, 0x41, -0x02, 0xE0, 0x00, 0xBF, 0x83, 0xF0, 0x00, 0x43, 0x30, 0xB5, 0x4F, 0xEA, 0x41, 0x04, 0x4F, 0xEA, 0x43, 0x05, 0x94, 0xEA, -0x05, 0x0F, 0x08, 0xBF, 0x90, 0xEA, 0x02, 0x0F, 0x1F, 0xBF, 0x54, 0xEA, 0x00, 0x0C, 0x55, 0xEA, 0x02, 0x0C, 0x7F, 0xEA, -0x64, 0x5C, 0x7F, 0xEA, 0x65, 0x5C, 0x00, 0xF0, 0xE2, 0x80, 0x4F, 0xEA, 0x54, 0x54, 0xD4, 0xEB, 0x55, 0x55, 0xB8, 0xBF, -0x6D, 0x42, 0x0C, 0xDD, 0x2C, 0x44, 0x80, 0xEA, 0x02, 0x02, 0x81, 0xEA, 0x03, 0x03, 0x82, 0xEA, 0x00, 0x00, 0x83, 0xEA, -0x01, 0x01, 0x80, 0xEA, 0x02, 0x02, 0x81, 0xEA, 0x03, 0x03, 0x36, 0x2D, 0x88, 0xBF, 0x30, 0xBD, 0x11, 0xF0, 0x00, 0x4F, -0x4F, 0xEA, 0x01, 0x31, 0x4F, 0xF4, 0x80, 0x1C, 0x4C, 0xEA, 0x11, 0x31, 0x02, 0xD0, 0x40, 0x42, 0x61, 0xEB, 0x41, 0x01, -0x13, 0xF0, 0x00, 0x4F, 0x4F, 0xEA, 0x03, 0x33, 0x4C, 0xEA, 0x13, 0x33, 0x02, 0xD0, 0x52, 0x42, 0x63, 0xEB, 0x43, 0x03, -0x94, 0xEA, 0x05, 0x0F, 0x00, 0xF0, 0xA7, 0x80, 0xA4, 0xF1, 0x01, 0x04, 0xD5, 0xF1, 0x20, 0x0E, 0x0D, 0xDB, 0x02, 0xFA, -0x0E, 0xFC, 0x22, 0xFA, 0x05, 0xF2, 0x80, 0x18, 0x41, 0xF1, 0x00, 0x01, 0x03, 0xFA, 0x0E, 0xF2, 0x80, 0x18, 0x43, 0xFA, -0x05, 0xF3, 0x59, 0x41, 0x0E, 0xE0, 0xA5, 0xF1, 0x20, 0x05, 0x0E, 0xF1, 0x20, 0x0E, 0x01, 0x2A, 0x03, 0xFA, 0x0E, 0xFC, -0x28, 0xBF, 0x4C, 0xF0, 0x02, 0x0C, 0x43, 0xFA, 0x05, 0xF3, 0xC0, 0x18, 0x51, 0xEB, 0xE3, 0x71, 0x01, 0xF0, 0x00, 0x45, -0x07, 0xD5, 0x4F, 0xF0, 0x00, 0x0E, 0xDC, 0xF1, 0x00, 0x0C, 0x7E, 0xEB, 0x00, 0x00, 0x6E, 0xEB, 0x01, 0x01, 0xB1, 0xF5, -0x80, 0x1F, 0x1B, 0xD3, 0xB1, 0xF5, 0x00, 0x1F, 0x0C, 0xD3, 0x49, 0x08, 0x5F, 0xEA, 0x30, 0x00, 0x4F, 0xEA, 0x3C, 0x0C, -0x04, 0xF1, 0x01, 0x04, 0x4F, 0xEA, 0x44, 0x52, 0x12, 0xF5, 0x80, 0x0F, 0x80, 0xF0, 0x9A, 0x80, 0xBC, 0xF1, 0x00, 0x4F, -0x08, 0xBF, 0x5F, 0xEA, 0x50, 0x0C, 0x50, 0xF1, 0x00, 0x00, 0x41, 0xEB, 0x04, 0x51, 0x41, 0xEA, 0x05, 0x01, 0x30, 0xBD, -0x5F, 0xEA, 0x4C, 0x0C, 0x40, 0x41, 0x41, 0xEB, 0x01, 0x01, 0x01, 0x3C, 0x28, 0xBF, 0xB1, 0xF5, 0x80, 0x1F, 0xE9, 0xD2, -0x91, 0xF0, 0x00, 0x0F, 0x04, 0xBF, 0x01, 0x46, 0x00, 0x20, 0xB1, 0xFA, 0x81, 0xF3, 0x08, 0xBF, 0x20, 0x33, 0xA3, 0xF1, -0x0B, 0x03, 0xB3, 0xF1, 0x20, 0x02, 0x0C, 0xDA, 0x0C, 0x32, 0x08, 0xDD, 0x02, 0xF1, 0x14, 0x0C, 0xC2, 0xF1, 0x0C, 0x02, -0x01, 0xFA, 0x0C, 0xF0, 0x21, 0xFA, 0x02, 0xF1, 0x0C, 0xE0, 0x02, 0xF1, 0x14, 0x02, 0xD8, 0xBF, 0xC2, 0xF1, 0x20, 0x0C, -0x01, 0xFA, 0x02, 0xF1, 0x20, 0xFA, 0x0C, 0xFC, 0xDC, 0xBF, 0x41, 0xEA, 0x0C, 0x01, 0x90, 0x40, 0xE4, 0x1A, 0xA2, 0xBF, -0x01, 0xEB, 0x04, 0x51, 0x29, 0x43, 0x30, 0xBD, 0x6F, 0xEA, 0x04, 0x04, 0x1F, 0x3C, 0x1C, 0xDA, 0x0C, 0x34, 0x0E, 0xDC, -0x04, 0xF1, 0x14, 0x04, 0xC4, 0xF1, 0x20, 0x02, 0x20, 0xFA, 0x04, 0xF0, 0x01, 0xFA, 0x02, 0xF3, 0x40, 0xEA, 0x03, 0x00, -0x21, 0xFA, 0x04, 0xF3, 0x45, 0xEA, 0x03, 0x01, 0x30, 0xBD, 0xC4, 0xF1, 0x0C, 0x04, 0xC4, 0xF1, 0x20, 0x02, 0x20, 0xFA, -0x02, 0xF0, 0x01, 0xFA, 0x04, 0xF3, 0x40, 0xEA, 0x03, 0x00, 0x29, 0x46, 0x30, 0xBD, 0x21, 0xFA, 0x04, 0xF0, 0x29, 0x46, -0x30, 0xBD, 0x94, 0xF0, 0x00, 0x0F, 0x83, 0xF4, 0x80, 0x13, 0x06, 0xBF, 0x81, 0xF4, 0x80, 0x11, 0x01, 0x34, 0x01, 0x3D, -0x4E, 0xE7, 0x7F, 0xEA, 0x64, 0x5C, 0x18, 0xBF, 0x7F, 0xEA, 0x65, 0x5C, 0x29, 0xD0, 0x94, 0xEA, 0x05, 0x0F, 0x08, 0xBF, -0x90, 0xEA, 0x02, 0x0F, 0x05, 0xD0, 0x54, 0xEA, 0x00, 0x0C, 0x04, 0xBF, 0x19, 0x46, 0x10, 0x46, 0x30, 0xBD, 0x91, 0xEA, -0x03, 0x0F, 0x1E, 0xBF, 0x00, 0x21, 0x00, 0x20, 0x30, 0xBD, 0x5F, 0xEA, 0x54, 0x5C, 0x05, 0xD1, 0x40, 0x00, 0x49, 0x41, -0x28, 0xBF, 0x41, 0xF0, 0x00, 0x41, 0x30, 0xBD, 0x14, 0xF5, 0x80, 0x04, 0x3C, 0xBF, 0x01, 0xF5, 0x80, 0x11, 0x30, 0xBD, -0x01, 0xF0, 0x00, 0x45, 0x45, 0xF0, 0xFE, 0x41, 0x41, 0xF4, 0x70, 0x01, 0x4F, 0xF0, 0x00, 0x00, 0x30, 0xBD, 0x7F, 0xEA, -0x64, 0x5C, 0x1A, 0xBF, 0x19, 0x46, 0x10, 0x46, 0x7F, 0xEA, 0x65, 0x5C, 0x1C, 0xBF, 0x0B, 0x46, 0x02, 0x46, 0x50, 0xEA, -0x01, 0x34, 0x06, 0xBF, 0x52, 0xEA, 0x03, 0x35, 0x91, 0xEA, 0x03, 0x0F, 0x41, 0xF4, 0x00, 0x21, 0x30, 0xBD, 0x00, 0xBF, -0x90, 0xF0, 0x00, 0x0F, 0x04, 0xBF, 0x00, 0x21, 0x70, 0x47, 0x30, 0xB5, 0x4F, 0xF4, 0x80, 0x64, 0x04, 0xF1, 0x32, 0x04, -0x4F, 0xF0, 0x00, 0x05, 0x4F, 0xF0, 0x00, 0x01, 0x50, 0xE7, 0x00, 0xBF, 0x90, 0xF0, 0x00, 0x0F, 0x04, 0xBF, 0x00, 0x21, -0x70, 0x47, 0x30, 0xB5, 0x4F, 0xF4, 0x80, 0x64, 0x04, 0xF1, 0x32, 0x04, 0x10, 0xF0, 0x00, 0x45, 0x48, 0xBF, 0x40, 0x42, -0x4F, 0xF0, 0x00, 0x01, 0x3E, 0xE7, 0x00, 0xBF, 0x42, 0x00, 0x4F, 0xEA, 0xE2, 0x01, 0x4F, 0xEA, 0x31, 0x01, 0x4F, 0xEA, -0x02, 0x70, 0x1F, 0xBF, 0x12, 0xF0, 0x7F, 0x43, 0x93, 0xF0, 0x7F, 0x4F, 0x81, 0xF0, 0x60, 0x51, 0x70, 0x47, 0x32, 0xF0, -0x7F, 0x42, 0x08, 0xBF, 0x70, 0x47, 0x93, 0xF0, 0x7F, 0x4F, 0x04, 0xBF, 0x41, 0xF4, 0x00, 0x21, 0x70, 0x47, 0x30, 0xB5, -0x4F, 0xF4, 0x60, 0x74, 0x01, 0xF0, 0x00, 0x45, 0x21, 0xF0, 0x00, 0x41, 0x1C, 0xE7, 0x00, 0xBF, 0x50, 0xEA, 0x01, 0x02, -0x08, 0xBF, 0x70, 0x47, 0x30, 0xB5, 0x4F, 0xF0, 0x00, 0x05, 0x0A, 0xE0, 0x50, 0xEA, 0x01, 0x02, 0x08, 0xBF, 0x70, 0x47, -0x30, 0xB5, 0x11, 0xF0, 0x00, 0x45, 0x02, 0xD5, 0x40, 0x42, 0x61, 0xEB, 0x41, 0x01, 0x4F, 0xF4, 0x80, 0x64, 0x04, 0xF1, -0x32, 0x04, 0x5F, 0xEA, 0x91, 0x5C, 0x3F, 0xF4, 0xD8, 0xAE, 0x4F, 0xF0, 0x03, 0x02, 0x5F, 0xEA, 0xDC, 0x0C, 0x18, 0xBF, -0x03, 0x32, 0x5F, 0xEA, 0xDC, 0x0C, 0x18, 0xBF, 0x03, 0x32, 0x02, 0xEB, 0xDC, 0x02, 0xC2, 0xF1, 0x20, 0x03, 0x00, 0xFA, -0x03, 0xFC, 0x20, 0xFA, 0x02, 0xF0, 0x01, 0xFA, 0x03, 0xFE, 0x40, 0xEA, 0x0E, 0x00, 0x21, 0xFA, 0x02, 0xF1, 0x14, 0x44, -0xBD, 0xE6, 0x00, 0xBF, 0x70, 0xB5, 0x4F, 0xF0, 0xFF, 0x0C, 0x4C, 0xF4, 0xE0, 0x6C, 0x1C, 0xEA, 0x11, 0x54, 0x1D, 0xBF, -0x1C, 0xEA, 0x13, 0x55, 0x94, 0xEA, 0x0C, 0x0F, 0x95, 0xEA, 0x0C, 0x0F, 0x00, 0xF0, 0xDE, 0xF8, 0x2C, 0x44, 0x81, 0xEA, -0x03, 0x06, 0x21, 0xEA, 0x4C, 0x51, 0x23, 0xEA, 0x4C, 0x53, 0x50, 0xEA, 0x01, 0x35, 0x18, 0xBF, 0x52, 0xEA, 0x03, 0x35, -0x41, 0xF4, 0x80, 0x11, 0x43, 0xF4, 0x80, 0x13, 0x38, 0xD0, 0xA0, 0xFB, 0x02, 0xCE, 0x4F, 0xF0, 0x00, 0x05, 0xE1, 0xFB, -0x02, 0xE5, 0x06, 0xF0, 0x00, 0x42, 0xE0, 0xFB, 0x03, 0xE5, 0x4F, 0xF0, 0x00, 0x06, 0xE1, 0xFB, 0x03, 0x56, 0x9C, 0xF0, -0x00, 0x0F, 0x18, 0xBF, 0x4E, 0xF0, 0x01, 0x0E, 0xA4, 0xF1, 0xFF, 0x04, 0xB6, 0xF5, 0x00, 0x7F, 0x64, 0xF5, 0x40, 0x74, -0x04, 0xD2, 0x5F, 0xEA, 0x4E, 0x0E, 0x6D, 0x41, 0x46, 0xEB, 0x06, 0x06, 0x42, 0xEA, 0xC6, 0x21, 0x41, 0xEA, 0x55, 0x51, -0x4F, 0xEA, 0xC5, 0x20, 0x40, 0xEA, 0x5E, 0x50, 0x4F, 0xEA, 0xCE, 0x2E, 0xB4, 0xF1, 0xFD, 0x0C, 0x88, 0xBF, 0xBC, 0xF5, -0xE0, 0x6F, 0x1E, 0xD8, 0xBE, 0xF1, 0x00, 0x4F, 0x08, 0xBF, 0x5F, 0xEA, 0x50, 0x0E, 0x50, 0xF1, 0x00, 0x00, 0x41, 0xEB, -0x04, 0x51, 0x70, 0xBD, 0x06, 0xF0, 0x00, 0x46, 0x46, 0xEA, 0x01, 0x01, 0x40, 0xEA, 0x02, 0x00, 0x81, 0xEA, 0x03, 0x01, -0xB4, 0xEB, 0x5C, 0x04, 0xC2, 0xBF, 0xD4, 0xEB, 0x0C, 0x05, 0x41, 0xEA, 0x04, 0x51, 0x70, 0xBD, 0x41, 0xF4, 0x80, 0x11, -0x4F, 0xF0, 0x00, 0x0E, 0x01, 0x3C, 0x00, 0xF3, 0xAB, 0x80, 0x14, 0xF1, 0x36, 0x0F, 0xDE, 0xBF, 0x00, 0x20, 0x01, 0xF0, -0x00, 0x41, 0x70, 0xBD, 0xC4, 0xF1, 0x00, 0x04, 0x20, 0x3C, 0x35, 0xDA, 0x0C, 0x34, 0x1B, 0xDC, 0x04, 0xF1, 0x14, 0x04, -0xC4, 0xF1, 0x20, 0x05, 0x00, 0xFA, 0x05, 0xF3, 0x20, 0xFA, 0x04, 0xF0, 0x01, 0xFA, 0x05, 0xF2, 0x40, 0xEA, 0x02, 0x00, -0x01, 0xF0, 0x00, 0x42, 0x21, 0xF0, 0x00, 0x41, 0x10, 0xEB, 0xD3, 0x70, 0x21, 0xFA, 0x04, 0xF6, 0x42, 0xEB, 0x06, 0x01, -0x5E, 0xEA, 0x43, 0x0E, 0x08, 0xBF, 0x20, 0xEA, 0xD3, 0x70, 0x70, 0xBD, 0xC4, 0xF1, 0x0C, 0x04, 0xC4, 0xF1, 0x20, 0x05, -0x00, 0xFA, 0x04, 0xF3, 0x20, 0xFA, 0x05, 0xF0, 0x01, 0xFA, 0x04, 0xF2, 0x40, 0xEA, 0x02, 0x00, 0x01, 0xF0, 0x00, 0x41, -0x10, 0xEB, 0xD3, 0x70, 0x41, 0xF1, 0x00, 0x01, 0x5E, 0xEA, 0x43, 0x0E, 0x08, 0xBF, 0x20, 0xEA, 0xD3, 0x70, 0x70, 0xBD, -0xC4, 0xF1, 0x20, 0x05, 0x00, 0xFA, 0x05, 0xF2, 0x4E, 0xEA, 0x02, 0x0E, 0x20, 0xFA, 0x04, 0xF3, 0x01, 0xFA, 0x05, 0xF2, -0x43, 0xEA, 0x02, 0x03, 0x21, 0xFA, 0x04, 0xF0, 0x01, 0xF0, 0x00, 0x41, 0x21, 0xFA, 0x04, 0xF2, 0x20, 0xEA, 0x02, 0x00, -0x00, 0xEB, 0xD3, 0x70, 0x5E, 0xEA, 0x43, 0x0E, 0x08, 0xBF, 0x20, 0xEA, 0xD3, 0x70, 0x70, 0xBD, 0x94, 0xF0, 0x00, 0x0F, -0x0F, 0xD1, 0x01, 0xF0, 0x00, 0x46, 0x40, 0x00, 0x41, 0xEB, 0x01, 0x01, 0x11, 0xF4, 0x80, 0x1F, 0x08, 0xBF, 0x01, 0x3C, -0xF7, 0xD0, 0x41, 0xEA, 0x06, 0x01, 0x95, 0xF0, 0x00, 0x0F, 0x18, 0xBF, 0x70, 0x47, 0x03, 0xF0, 0x00, 0x46, 0x52, 0x00, -0x43, 0xEB, 0x03, 0x03, 0x13, 0xF4, 0x80, 0x1F, 0x08, 0xBF, 0x01, 0x3D, 0xF7, 0xD0, 0x43, 0xEA, 0x06, 0x03, 0x70, 0x47, -0x94, 0xEA, 0x0C, 0x0F, 0x0C, 0xEA, 0x13, 0x55, 0x18, 0xBF, 0x95, 0xEA, 0x0C, 0x0F, 0x0C, 0xD0, 0x50, 0xEA, 0x41, 0x06, -0x18, 0xBF, 0x52, 0xEA, 0x43, 0x06, 0xD1, 0xD1, 0x81, 0xEA, 0x03, 0x01, 0x01, 0xF0, 0x00, 0x41, 0x4F, 0xF0, 0x00, 0x00, -0x70, 0xBD, 0x50, 0xEA, 0x41, 0x06, 0x06, 0xBF, 0x10, 0x46, 0x19, 0x46, 0x52, 0xEA, 0x43, 0x06, 0x19, 0xD0, 0x94, 0xEA, -0x0C, 0x0F, 0x02, 0xD1, 0x50, 0xEA, 0x01, 0x36, 0x13, 0xD1, 0x95, 0xEA, 0x0C, 0x0F, 0x05, 0xD1, 0x52, 0xEA, 0x03, 0x36, -0x1C, 0xBF, 0x10, 0x46, 0x19, 0x46, 0x0A, 0xD1, 0x81, 0xEA, 0x03, 0x01, 0x01, 0xF0, 0x00, 0x41, 0x41, 0xF0, 0xFE, 0x41, -0x41, 0xF4, 0x70, 0x01, 0x4F, 0xF0, 0x00, 0x00, 0x70, 0xBD, 0x41, 0xF0, 0xFE, 0x41, 0x41, 0xF4, 0x78, 0x01, 0x70, 0xBD, -0x70, 0xB5, 0x4F, 0xF0, 0xFF, 0x0C, 0x4C, 0xF4, 0xE0, 0x6C, 0x1C, 0xEA, 0x11, 0x54, 0x1D, 0xBF, 0x1C, 0xEA, 0x13, 0x55, -0x94, 0xEA, 0x0C, 0x0F, 0x95, 0xEA, 0x0C, 0x0F, 0x00, 0xF0, 0xA7, 0xF8, 0xA4, 0xEB, 0x05, 0x04, 0x81, 0xEA, 0x03, 0x0E, -0x52, 0xEA, 0x03, 0x35, 0x4F, 0xEA, 0x01, 0x31, 0x00, 0xF0, 0x88, 0x80, 0x4F, 0xEA, 0x03, 0x33, 0x4F, 0xF0, 0x80, 0x55, -0x45, 0xEA, 0x13, 0x13, 0x43, 0xEA, 0x12, 0x63, 0x4F, 0xEA, 0x02, 0x22, 0x45, 0xEA, 0x11, 0x15, 0x45, 0xEA, 0x10, 0x65, -0x4F, 0xEA, 0x00, 0x26, 0x0E, 0xF0, 0x00, 0x41, 0x9D, 0x42, 0x08, 0xBF, 0x96, 0x42, 0x44, 0xF1, 0xFD, 0x04, 0x04, 0xF5, -0x40, 0x74, 0x02, 0xD2, 0x5B, 0x08, 0x4F, 0xEA, 0x32, 0x02, 0xB6, 0x1A, 0x65, 0xEB, 0x03, 0x05, 0x5B, 0x08, 0x4F, 0xEA, -0x32, 0x02, 0x4F, 0xF4, 0x80, 0x10, 0x4F, 0xF4, 0x00, 0x2C, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, -0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0x0C, 0x00, 0x5B, 0x08, 0x4F, 0xEA, 0x32, 0x02, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, -0x03, 0x0E, 0x22, 0xBF, 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0x5C, 0x00, 0x5B, 0x08, 0x4F, 0xEA, 0x32, 0x02, 0xB6, 0xEB, -0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0x9C, 0x00, 0x5B, 0x08, 0x4F, 0xEA, -0x32, 0x02, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0xDC, 0x00, -0x55, 0xEA, 0x06, 0x0E, 0x18, 0xD0, 0x4F, 0xEA, 0x05, 0x15, 0x45, 0xEA, 0x16, 0x75, 0x4F, 0xEA, 0x06, 0x16, 0x4F, 0xEA, -0xC3, 0x03, 0x43, 0xEA, 0x52, 0x73, 0x4F, 0xEA, 0xC2, 0x02, 0x5F, 0xEA, 0x1C, 0x1C, 0xC0, 0xD1, 0x11, 0xF4, 0x80, 0x1F, -0x0B, 0xD1, 0x41, 0xEA, 0x00, 0x01, 0x4F, 0xF0, 0x00, 0x00, 0x4F, 0xF0, 0x00, 0x4C, 0xB6, 0xE7, 0x11, 0xF4, 0x80, 0x1F, -0x04, 0xBF, 0x01, 0x43, 0x00, 0x20, 0xB4, 0xF1, 0xFD, 0x0C, 0x88, 0xBF, 0xBC, 0xF5, 0xE0, 0x6F, 0x3F, 0xF6, 0xAF, 0xAE, -0xB5, 0xEB, 0x03, 0x0C, 0x04, 0xBF, 0xB6, 0xEB, 0x02, 0x0C, 0x5F, 0xEA, 0x50, 0x0C, 0x50, 0xF1, 0x00, 0x00, 0x41, 0xEB, -0x04, 0x51, 0x70, 0xBD, 0x0E, 0xF0, 0x00, 0x4E, 0x4E, 0xEA, 0x11, 0x31, 0x14, 0xEB, 0x5C, 0x04, 0xC2, 0xBF, 0xD4, 0xEB, -0x0C, 0x05, 0x41, 0xEA, 0x04, 0x51, 0x70, 0xBD, 0x41, 0xF4, 0x80, 0x11, 0x4F, 0xF0, 0x00, 0x0E, 0x01, 0x3C, 0x90, 0xE6, -0x45, 0xEA, 0x06, 0x0E, 0x8D, 0xE6, 0x0C, 0xEA, 0x13, 0x55, 0x94, 0xEA, 0x0C, 0x0F, 0x08, 0xBF, 0x95, 0xEA, 0x0C, 0x0F, -0x3F, 0xF4, 0x3B, 0xAF, 0x94, 0xEA, 0x0C, 0x0F, 0x0A, 0xD1, 0x50, 0xEA, 0x01, 0x34, 0x7F, 0xF4, 0x34, 0xAF, 0x95, 0xEA, -0x0C, 0x0F, 0x7F, 0xF4, 0x25, 0xAF, 0x10, 0x46, 0x19, 0x46, 0x2C, 0xE7, 0x95, 0xEA, 0x0C, 0x0F, 0x06, 0xD1, 0x52, 0xEA, -0x03, 0x35, 0x3F, 0xF4, 0xFD, 0xAE, 0x10, 0x46, 0x19, 0x46, 0x22, 0xE7, 0x50, 0xEA, 0x41, 0x06, 0x18, 0xBF, 0x52, 0xEA, -0x43, 0x06, 0x7F, 0xF4, 0xC5, 0xAE, 0x50, 0xEA, 0x41, 0x04, 0x7F, 0xF4, 0x0D, 0xAF, 0x52, 0xEA, 0x43, 0x05, 0x7F, 0xF4, -0xEB, 0xAE, 0x12, 0xE7, 0x4F, 0xF0, 0xFF, 0x3C, 0x06, 0xE0, 0x00, 0xBF, 0x4F, 0xF0, 0x01, 0x0C, 0x02, 0xE0, 0x00, 0xBF, -0x4F, 0xF0, 0x01, 0x0C, 0x4D, 0xF8, 0x04, 0xCD, 0x4F, 0xEA, 0x41, 0x0C, 0x7F, 0xEA, 0x6C, 0x5C, 0x4F, 0xEA, 0x43, 0x0C, -0x18, 0xBF, 0x7F, 0xEA, 0x6C, 0x5C, 0x1B, 0xD0, 0x01, 0xB0, 0x50, 0xEA, 0x41, 0x0C, 0x0C, 0xBF, 0x52, 0xEA, 0x43, 0x0C, -0x91, 0xEA, 0x03, 0x0F, 0x02, 0xBF, 0x90, 0xEA, 0x02, 0x0F, 0x00, 0x20, 0x70, 0x47, 0x10, 0xF1, 0x00, 0x0F, 0x91, 0xEA, -0x03, 0x0F, 0x58, 0xBF, 0x99, 0x42, 0x08, 0xBF, 0x90, 0x42, 0x2C, 0xBF, 0xD8, 0x17, 0x6F, 0xEA, 0xE3, 0x70, 0x40, 0xF0, -0x01, 0x00, 0x70, 0x47, 0x4F, 0xEA, 0x41, 0x0C, 0x7F, 0xEA, 0x6C, 0x5C, 0x02, 0xD1, 0x50, 0xEA, 0x01, 0x3C, 0x07, 0xD1, -0x4F, 0xEA, 0x43, 0x0C, 0x7F, 0xEA, 0x6C, 0x5C, 0xD6, 0xD1, 0x52, 0xEA, 0x03, 0x3C, 0xD3, 0xD0, 0x5D, 0xF8, 0x04, 0x0B, -0x70, 0x47, 0x00, 0xBF, 0x84, 0x46, 0x10, 0x46, 0x62, 0x46, 0x8C, 0x46, 0x19, 0x46, 0x63, 0x46, 0x00, 0xE0, 0x00, 0xBF, -0x01, 0xB5, 0xFF, 0xF7, 0xB7, 0xFF, 0x00, 0x28, 0x48, 0xBF, 0x10, 0xF1, 0x00, 0x0F, 0x01, 0xBD, 0x4D, 0xF8, 0x08, 0xED, -0xFF, 0xF7, 0xF4, 0xFF, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4D, 0xF8, 0x08, 0xED, -0xFF, 0xF7, 0xEA, 0xFF, 0x34, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4D, 0xF8, 0x08, 0xED, -0xFF, 0xF7, 0xE0, 0xFF, 0x94, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4D, 0xF8, 0x08, 0xED, -0xFF, 0xF7, 0xCE, 0xFF, 0x94, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4D, 0xF8, 0x08, 0xED, -0xFF, 0xF7, 0xC4, 0xFF, 0x34, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4A, 0x00, 0x11, 0xD2, -0x12, 0xF5, 0x00, 0x12, 0x11, 0xD2, 0x0D, 0xD5, 0x6F, 0xF4, 0x78, 0x73, 0xB3, 0xEB, 0x62, 0x52, 0x0E, 0xD4, 0x4F, 0xEA, -0xC1, 0x23, 0x43, 0xF0, 0x00, 0x43, 0x43, 0xEA, 0x50, 0x53, 0x23, 0xFA, 0x02, 0xF0, 0x70, 0x47, 0x4F, 0xF0, 0x00, 0x00, -0x70, 0x47, 0x50, 0xEA, 0x01, 0x30, 0x02, 0xD1, 0x4F, 0xF0, 0xFF, 0x30, 0x70, 0x47, 0x4F, 0xF0, 0x00, 0x00, 0x70, 0x47, -0x4F, 0xEA, 0x41, 0x02, 0xB2, 0xF1, 0xE0, 0x43, 0x24, 0xBF, 0xB3, 0xF5, 0x00, 0x1C, 0xDC, 0xF1, 0xFE, 0x5C, 0x0D, 0xD9, -0x01, 0xF0, 0x00, 0x4C, 0x4F, 0xEA, 0xC0, 0x02, 0x4C, 0xEA, 0x50, 0x70, 0xB2, 0xF1, 0x00, 0x4F, 0x40, 0xEB, 0x83, 0x00, -0x08, 0xBF, 0x20, 0xF0, 0x01, 0x00, 0x70, 0x47, 0x11, 0xF0, 0x80, 0x4F, 0x21, 0xD1, 0x13, 0xF1, 0x38, 0x72, 0xBC, 0xBF, -0x01, 0xF0, 0x00, 0x40, 0x70, 0x47, 0x41, 0xF4, 0x80, 0x11, 0x4F, 0xEA, 0x52, 0x52, 0xC2, 0xF1, 0x18, 0x02, 0xC2, 0xF1, -0x20, 0x0C, 0x10, 0xFA, 0x0C, 0xF3, 0x20, 0xFA, 0x02, 0xF0, 0x18, 0xBF, 0x40, 0xF0, 0x01, 0x00, 0x4F, 0xEA, 0xC1, 0x23, -0x4F, 0xEA, 0xD3, 0x23, 0x03, 0xFA, 0x0C, 0xFC, 0x40, 0xEA, 0x0C, 0x00, 0x23, 0xFA, 0x02, 0xF3, 0x4F, 0xEA, 0x43, 0x03, -0xCC, 0xE7, 0x7F, 0xEA, 0x62, 0x53, 0x07, 0xD1, 0x50, 0xEA, 0x01, 0x33, 0x1E, 0xBF, 0x4F, 0xF0, 0xFE, 0x40, 0x40, 0xF4, -0x40, 0x00, 0x70, 0x47, 0x01, 0xF0, 0x00, 0x40, 0x40, 0xF0, 0xFE, 0x40, 0x40, 0xF4, 0x00, 0x00, 0x70, 0x47, 0x00, 0xBF, -0x53, 0xB9, 0x4A, 0xB9, 0x00, 0x29, 0x08, 0xBF, 0x00, 0x28, 0x1C, 0xBF, 0x4F, 0xF0, 0xFF, 0x31, 0x4F, 0xF0, 0xFF, 0x30, -0x00, 0xF0, 0x6C, 0xB9, 0xAD, 0xF1, 0x08, 0x0C, 0x6D, 0xE9, 0x04, 0xCE, 0x00, 0xF0, 0x06, 0xF8, 0xDD, 0xF8, 0x04, 0xE0, -0xDD, 0xE9, 0x02, 0x23, 0x04, 0xB0, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x47, 0x08, 0x9E, 0x0D, 0x46, 0x04, 0x46, 0x8E, 0x46, -0x00, 0x2B, 0x40, 0xF0, 0x82, 0x80, 0x8A, 0x42, 0x17, 0x46, 0x46, 0xD9, 0xB2, 0xFA, 0x82, 0xF2, 0x4A, 0xB1, 0xC2, 0xF1, -0x20, 0x01, 0x05, 0xFA, 0x02, 0xF3, 0x20, 0xFA, 0x01, 0xF1, 0x97, 0x40, 0x41, 0xEA, 0x03, 0x0E, 0x94, 0x40, 0x4F, 0xEA, -0x17, 0x48, 0x23, 0x0C, 0xBE, 0xFB, 0xF8, 0xFC, 0xB9, 0xB2, 0x08, 0xFB, 0x1C, 0xEE, 0x43, 0xEA, 0x0E, 0x43, 0x0C, 0xFB, -0x01, 0xF0, 0x98, 0x42, 0x0A, 0xD9, 0xFB, 0x18, 0x0C, 0xF1, 0xFF, 0x35, 0x80, 0xF0, 0x16, 0x81, 0x98, 0x42, 0x40, 0xF2, -0x13, 0x81, 0xAC, 0xF1, 0x02, 0x0C, 0x3B, 0x44, 0x1B, 0x1A, 0xA4, 0xB2, 0xB3, 0xFB, 0xF8, 0xF0, 0x08, 0xFB, 0x10, 0x33, -0x44, 0xEA, 0x03, 0x44, 0x00, 0xFB, 0x01, 0xF1, 0xA1, 0x42, 0x09, 0xD9, 0x3C, 0x19, 0x00, 0xF1, 0xFF, 0x33, 0x80, 0xF0, -0x01, 0x81, 0xA1, 0x42, 0x40, 0xF2, 0xFE, 0x80, 0x02, 0x38, 0x3C, 0x44, 0x64, 0x1A, 0x40, 0xEA, 0x0C, 0x40, 0x00, 0x21, -0x1E, 0xB1, 0xD4, 0x40, 0x00, 0x23, 0xC6, 0xE9, 0x00, 0x43, 0xBD, 0xE8, 0xF0, 0x87, 0x02, 0xB9, 0xFF, 0xDE, 0xB2, 0xFA, -0x82, 0xF2, 0x00, 0x2A, 0x4F, 0xD1, 0xCB, 0x1B, 0x4F, 0xEA, 0x17, 0x4E, 0x1F, 0xFA, 0x87, 0xF8, 0x01, 0x21, 0xB3, 0xFB, -0xFE, 0xFC, 0x25, 0x0C, 0x0E, 0xFB, 0x1C, 0x33, 0x45, 0xEA, 0x03, 0x45, 0x08, 0xFB, 0x0C, 0xF3, 0xAB, 0x42, 0x07, 0xD9, -0x7D, 0x19, 0x0C, 0xF1, 0xFF, 0x30, 0x02, 0xD2, 0xAB, 0x42, 0x00, 0xF2, 0xE7, 0x80, 0x84, 0x46, 0xED, 0x1A, 0xA3, 0xB2, -0xB5, 0xFB, 0xFE, 0xF0, 0x0E, 0xFB, 0x10, 0x55, 0x43, 0xEA, 0x05, 0x44, 0x08, 0xFB, 0x00, 0xF8, 0xA0, 0x45, 0x07, 0xD9, -0x3C, 0x19, 0x00, 0xF1, 0xFF, 0x33, 0x02, 0xD2, 0xA0, 0x45, 0x00, 0xF2, 0xD7, 0x80, 0x18, 0x46, 0xA4, 0xEB, 0x08, 0x04, -0x40, 0xEA, 0x0C, 0x40, 0xC0, 0xE7, 0x8B, 0x42, 0x08, 0xD9, 0x00, 0x2E, 0x00, 0xF0, 0xAF, 0x80, 0x00, 0x21, 0xC6, 0xE9, -0x00, 0x05, 0x08, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0xB3, 0xFA, 0x83, 0xF1, 0x00, 0x29, 0x4B, 0xD1, 0xAB, 0x42, 0x02, 0xD3, -0x82, 0x42, 0x00, 0xF2, 0xB7, 0x80, 0x84, 0x1A, 0x65, 0xEB, 0x03, 0x03, 0x01, 0x20, 0x9E, 0x46, 0x00, 0x2E, 0xAA, 0xD0, -0xC6, 0xE9, 0x00, 0x4E, 0xA7, 0xE7, 0xC2, 0xF1, 0x20, 0x0C, 0x01, 0xFA, 0x02, 0xF3, 0x97, 0x40, 0x20, 0xFA, 0x0C, 0xF0, -0x4F, 0xEA, 0x17, 0x4E, 0x21, 0xFA, 0x0C, 0xFC, 0x18, 0x43, 0xBC, 0xFB, 0xFE, 0xF1, 0x05, 0x0C, 0x0E, 0xFB, 0x11, 0xCC, -0x1F, 0xFA, 0x87, 0xF8, 0x45, 0xEA, 0x0C, 0x45, 0x01, 0xFB, 0x08, 0xF3, 0xAB, 0x42, 0x04, 0xFA, 0x02, 0xF4, 0x09, 0xD9, -0x7D, 0x19, 0x01, 0xF1, 0xFF, 0x3C, 0x80, 0xF0, 0x8B, 0x80, 0xAB, 0x42, 0x40, 0xF2, 0x88, 0x80, 0x02, 0x39, 0x3D, 0x44, -0xEB, 0x1A, 0x85, 0xB2, 0xB3, 0xFB, 0xFE, 0xF0, 0x0E, 0xFB, 0x10, 0x33, 0x45, 0xEA, 0x03, 0x45, 0x00, 0xFB, 0x08, 0xF3, -0xAB, 0x42, 0x07, 0xD9, 0x7D, 0x19, 0x00, 0xF1, 0xFF, 0x3C, 0x71, 0xD2, 0xAB, 0x42, 0x6F, 0xD9, 0x02, 0x38, 0x3D, 0x44, -0xEB, 0x1A, 0x40, 0xEA, 0x01, 0x41, 0x78, 0xE7, 0xC1, 0xF1, 0x20, 0x0C, 0x8B, 0x40, 0x22, 0xFA, 0x0C, 0xF7, 0x1F, 0x43, -0x20, 0xFA, 0x0C, 0xF4, 0x05, 0xFA, 0x01, 0xF3, 0x4F, 0xEA, 0x17, 0x4E, 0x25, 0xFA, 0x0C, 0xF5, 0x1C, 0x43, 0x23, 0x0C, -0xB5, 0xFB, 0xFE, 0xF9, 0x1F, 0xFA, 0x87, 0xF8, 0x0E, 0xFB, 0x19, 0x55, 0x43, 0xEA, 0x05, 0x45, 0x09, 0xFB, 0x08, 0xFA, -0xAA, 0x45, 0x02, 0xFA, 0x01, 0xF2, 0x00, 0xFA, 0x01, 0xF3, 0x08, 0xD9, 0x7D, 0x19, 0x09, 0xF1, 0xFF, 0x30, 0x47, 0xD2, -0xAA, 0x45, 0x45, 0xD9, 0xA9, 0xF1, 0x02, 0x09, 0x3D, 0x44, 0xA5, 0xEB, 0x0A, 0x05, 0xA4, 0xB2, 0xB5, 0xFB, 0xFE, 0xF0, -0x0E, 0xFB, 0x10, 0x55, 0x44, 0xEA, 0x05, 0x44, 0x00, 0xFB, 0x08, 0xF8, 0xA0, 0x45, 0x07, 0xD9, 0x3C, 0x19, 0x00, 0xF1, -0xFF, 0x35, 0x2D, 0xD2, 0xA0, 0x45, 0x2B, 0xD9, 0x02, 0x38, 0x3C, 0x44, 0x40, 0xEA, 0x09, 0x40, 0xA4, 0xEB, 0x08, 0x04, -0xA0, 0xFB, 0x02, 0x89, 0x4C, 0x45, 0xC6, 0x46, 0x4D, 0x46, 0x19, 0xD3, 0x16, 0xD0, 0x5E, 0xB1, 0xB3, 0xEB, 0x0E, 0x02, -0x64, 0xEB, 0x05, 0x04, 0x04, 0xFA, 0x0C, 0xFC, 0xCA, 0x40, 0x4C, 0xEA, 0x02, 0x02, 0xCC, 0x40, 0xC6, 0xE9, 0x00, 0x24, -0x00, 0x21, 0xBD, 0xE8, 0xF0, 0x87, 0x31, 0x46, 0x30, 0x46, 0x0E, 0xE7, 0xAC, 0x46, 0xED, 0xE6, 0x18, 0x46, 0x01, 0xE7, -0x43, 0x45, 0xE6, 0xD2, 0xB8, 0xEB, 0x02, 0x0E, 0x69, 0xEB, 0x07, 0x05, 0x01, 0x38, 0xE0, 0xE7, 0x28, 0x46, 0xD3, 0xE7, -0x60, 0x46, 0x8F, 0xE7, 0x81, 0x46, 0xBA, 0xE7, 0x61, 0x46, 0x77, 0xE7, 0x08, 0x46, 0x4B, 0xE7, 0xAC, 0xF1, 0x02, 0x0C, -0x3D, 0x44, 0x15, 0xE7, 0x02, 0x38, 0x3C, 0x44, 0x26, 0xE7, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x28, 0xB8, 0xBF, -0x40, 0x42, 0x70, 0x47, 0x03, 0x2A, 0x70, 0xB4, 0x12, 0xD9, 0x40, 0xEA, 0x01, 0x05, 0xAD, 0x07, 0x04, 0x46, 0x0B, 0x46, -0x1E, 0xD1, 0x19, 0x46, 0x20, 0x46, 0x53, 0xF8, 0x04, 0x5B, 0x54, 0xF8, 0x04, 0x6B, 0xAE, 0x42, 0x16, 0xD1, 0x04, 0x3A, -0x03, 0x2A, 0x20, 0x46, 0x19, 0x46, 0xF2, 0xD8, 0x56, 0x1E, 0xA2, 0xB1, 0x01, 0x39, 0x44, 0x1E, 0x01, 0xE0, 0xC3, 0x18, -0x0C, 0xD0, 0x14, 0xF8, 0x01, 0x5F, 0x11, 0xF8, 0x01, 0x2F, 0x95, 0x42, 0xA6, 0xEB, 0x04, 0x03, 0xF5, 0xD0, 0xA8, 0x1A, -0x70, 0xBC, 0x70, 0x47, 0x56, 0x1E, 0xED, 0xE7, 0x18, 0x46, 0x70, 0xBC, 0x70, 0x47, 0x10, 0x46, 0xF6, 0xE7, 0x00, 0xBF, -0x84, 0x46, 0x41, 0xEA, 0x00, 0x03, 0x13, 0xF0, 0x03, 0x03, 0x6D, 0xD1, 0x40, 0x3A, 0x41, 0xD3, 0x51, 0xF8, 0x04, 0x3B, -0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, -0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, -0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, -0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, -0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, -0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, -0x40, 0xF8, 0x04, 0x3B, 0x40, 0x3A, 0xBD, 0xD2, 0x30, 0x32, 0x11, 0xD3, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, -0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, -0x40, 0xF8, 0x04, 0x3B, 0x10, 0x3A, 0xED, 0xD2, 0x0C, 0x32, 0x05, 0xD3, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, -0x04, 0x3A, 0xF9, 0xD2, 0x04, 0x32, 0x08, 0xD0, 0xD2, 0x07, 0x1C, 0xBF, 0x11, 0xF8, 0x01, 0x3B, 0x00, 0xF8, 0x01, 0x3B, -0x01, 0xD3, 0x0B, 0x88, 0x03, 0x80, 0x60, 0x46, 0x70, 0x47, 0x00, 0xBF, 0x08, 0x2A, 0x13, 0xD3, 0x8B, 0x07, 0x8D, 0xD0, -0x10, 0xF0, 0x03, 0x03, 0x8A, 0xD0, 0xC3, 0xF1, 0x04, 0x03, 0xD2, 0x1A, 0xDB, 0x07, 0x1C, 0xBF, 0x11, 0xF8, 0x01, 0x3B, -0x00, 0xF8, 0x01, 0x3B, 0x80, 0xD3, 0x31, 0xF8, 0x02, 0x3B, 0x20, 0xF8, 0x02, 0x3B, 0x7B, 0xE7, 0x04, 0x3A, 0xD9, 0xD3, -0x01, 0x3A, 0x11, 0xF8, 0x01, 0x3B, 0x00, 0xF8, 0x01, 0x3B, 0xF9, 0xD2, 0x0B, 0x78, 0x03, 0x70, 0x4B, 0x78, 0x43, 0x70, -0x8B, 0x78, 0x83, 0x70, 0x60, 0x46, 0x70, 0x47, 0x88, 0x42, 0xF0, 0xB4, 0x0D, 0xD9, 0x8B, 0x18, 0x83, 0x42, 0x0A, 0xD9, -0x84, 0x18, 0x32, 0xB1, 0x22, 0x46, 0x13, 0xF8, 0x01, 0x4D, 0x02, 0xF8, 0x01, 0x4D, 0x99, 0x42, 0xF9, 0xD1, 0xF0, 0xBC, -0x70, 0x47, 0x0F, 0x2A, 0x0E, 0xD8, 0x03, 0x46, 0x54, 0x1E, 0x00, 0x2A, 0xF7, 0xD0, 0x01, 0x34, 0x0C, 0x44, 0x01, 0x3B, -0x11, 0xF8, 0x01, 0x2B, 0x03, 0xF8, 0x01, 0x2F, 0xA1, 0x42, 0xF9, 0xD1, 0xF0, 0xBC, 0x70, 0x47, 0x40, 0xEA, 0x01, 0x03, -0x9B, 0x07, 0x3F, 0xD1, 0xA2, 0xF1, 0x10, 0x03, 0x23, 0xF0, 0x0F, 0x04, 0x01, 0xF1, 0x20, 0x07, 0x27, 0x44, 0x1B, 0x09, -0x01, 0xF1, 0x10, 0x04, 0x00, 0xF1, 0x10, 0x05, 0x54, 0xF8, 0x10, 0x6C, 0x45, 0xF8, 0x10, 0x6C, 0x54, 0xF8, 0x0C, 0x6C, -0x45, 0xF8, 0x0C, 0x6C, 0x54, 0xF8, 0x08, 0x6C, 0x45, 0xF8, 0x08, 0x6C, 0x54, 0xF8, 0x04, 0x6C, 0x45, 0xF8, 0x04, 0x6C, -0x10, 0x34, 0xBC, 0x42, 0x05, 0xF1, 0x10, 0x05, 0xEA, 0xD1, 0x01, 0x33, 0x12, 0xF0, 0x0C, 0x0F, 0x01, 0xEB, 0x03, 0x11, -0x02, 0xF0, 0x0F, 0x04, 0x00, 0xEB, 0x03, 0x13, 0x17, 0xD0, 0x04, 0x3C, 0x24, 0xF0, 0x03, 0x0C, 0xA5, 0x08, 0x9C, 0x44, -0x1C, 0x1F, 0x0E, 0x46, 0x56, 0xF8, 0x04, 0x7B, 0x44, 0xF8, 0x04, 0x7F, 0x64, 0x45, 0xF9, 0xD1, 0x6C, 0x1C, 0x03, 0xEB, -0x84, 0x03, 0x01, 0xEB, 0x84, 0x01, 0x02, 0xF0, 0x03, 0x02, 0xAD, 0xE7, 0x54, 0x1E, 0x03, 0x46, 0xAD, 0xE7, 0x22, 0x46, -0xA8, 0xE7, 0x00, 0xBF, 0x0B, 0x4B, 0x0C, 0x48, 0x19, 0x68, 0xD1, 0xE9, 0x2A, 0x23, 0x10, 0xB4, 0x0A, 0x4C, 0x00, 0xFB, -0x02, 0xF0, 0x04, 0xFB, 0x03, 0x00, 0xA2, 0xFB, 0x04, 0x34, 0x04, 0x44, 0x5A, 0x1C, 0x44, 0xF1, 0x00, 0x00, 0xC1, 0xE9, -0x2A, 0x20, 0x10, 0xBC, 0x20, 0xF0, 0x00, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x80, 0x01, 0x17, 0x00, 0x2D, 0xF4, 0x51, 0x58, -0x2D, 0x7F, 0x95, 0x4C, 0x11, 0xF0, 0xFF, 0x01, 0x03, 0x46, 0x44, 0xD0, 0x82, 0x07, 0x32, 0xD1, 0x70, 0xB4, 0x04, 0x68, -0x41, 0xEA, 0x01, 0x26, 0x46, 0xEA, 0x06, 0x46, 0x86, 0xEA, 0x04, 0x05, 0xA5, 0xF1, 0x01, 0x33, 0xA4, 0xF1, 0x01, 0x32, -0x23, 0xEA, 0x05, 0x03, 0x22, 0xEA, 0x04, 0x02, 0x13, 0x43, 0x13, 0xF0, 0x80, 0x3F, 0x0F, 0xD1, 0x50, 0xF8, 0x04, 0x4F, -0x84, 0xEA, 0x06, 0x05, 0xA5, 0xF1, 0x01, 0x32, 0xA4, 0xF1, 0x01, 0x33, 0x22, 0xEA, 0x05, 0x02, 0x23, 0xEA, 0x04, 0x03, -0x13, 0x43, 0x13, 0xF0, 0x80, 0x3F, 0xEF, 0xD0, 0x03, 0x78, 0x23, 0xB9, 0x36, 0xE0, 0x10, 0xF8, 0x01, 0x3F, 0x00, 0x2B, -0x32, 0xD0, 0x99, 0x42, 0xF9, 0xD1, 0x30, 0xE0, 0x8A, 0x42, 0x11, 0xD0, 0x9A, 0x07, 0x18, 0x46, 0xCC, 0xD0, 0x18, 0x46, -0x13, 0xF8, 0x01, 0x2B, 0x00, 0x2A, 0xF5, 0xD1, 0x10, 0x46, 0x70, 0x47, 0x99, 0x07, 0x18, 0x46, 0x07, 0xD0, 0x18, 0x46, -0x01, 0x33, 0x02, 0x78, 0x00, 0x2A, 0xF7, 0xD1, 0x70, 0x47, 0x82, 0x07, 0xF7, 0xD1, 0x02, 0x68, 0xA2, 0xF1, 0x01, 0x33, -0x23, 0xEA, 0x02, 0x03, 0x13, 0xF0, 0x80, 0x3F, 0x08, 0xD1, 0x50, 0xF8, 0x04, 0x2F, 0xA2, 0xF1, 0x01, 0x33, 0x23, 0xEA, -0x02, 0x03, 0x13, 0xF0, 0x80, 0x3F, 0xF6, 0xD0, 0x03, 0x78, 0x00, 0x2B, 0xE8, 0xD0, 0x10, 0xF8, 0x01, 0x3F, 0x00, 0x2B, -0xFB, 0xD1, 0x70, 0x47, 0x18, 0x46, 0x70, 0xBC, 0x70, 0x47, 0x00, 0xBF, 0x80, 0xEA, 0x01, 0x02, 0x84, 0x46, 0x12, 0xF0, -0x03, 0x0F, 0x4F, 0xD1, 0x11, 0xF0, 0x03, 0x0F, 0x32, 0xD1, 0x4D, 0xF8, 0x04, 0x4D, 0x11, 0xF0, 0x04, 0x0F, 0x51, 0xF8, -0x04, 0x3B, 0x0B, 0xD0, 0xA3, 0xF1, 0x01, 0x32, 0x9A, 0x43, 0x12, 0xF0, 0x80, 0x3F, 0x04, 0xBF, 0x4C, 0xF8, 0x04, 0x3B, -0x51, 0xF8, 0x04, 0x3B, 0x16, 0xD1, 0x00, 0xBF, 0x51, 0xF8, 0x04, 0x4B, 0xA3, 0xF1, 0x01, 0x32, 0x9A, 0x43, 0x12, 0xF0, -0x80, 0x3F, 0xA4, 0xF1, 0x01, 0x32, 0x0B, 0xD1, 0x4C, 0xF8, 0x04, 0x3B, 0xA2, 0x43, 0x12, 0xF0, 0x80, 0x3F, 0x04, 0xBF, -0x51, 0xF8, 0x04, 0x3B, 0x4C, 0xF8, 0x04, 0x4B, 0xEA, 0xD0, 0x23, 0x46, 0x0C, 0xF8, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x0F, -0x4F, 0xEA, 0x33, 0x23, 0xF8, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x11, 0xF0, 0x01, 0x0F, 0x06, 0xD0, 0x11, 0xF8, -0x01, 0x2B, 0x0C, 0xF8, 0x01, 0x2B, 0x00, 0x2A, 0x08, 0xBF, 0x70, 0x47, 0x11, 0xF0, 0x02, 0x0F, 0xBF, 0xD0, 0x31, 0xF8, -0x02, 0x2B, 0x12, 0xF0, 0xFF, 0x0F, 0x16, 0xBF, 0x2C, 0xF8, 0x02, 0x2B, 0x8C, 0xF8, 0x00, 0x20, 0x12, 0xF4, 0x7F, 0x4F, -0xB3, 0xD1, 0x70, 0x47, 0x11, 0xF8, 0x01, 0x2B, 0x0C, 0xF8, 0x01, 0x2B, 0x00, 0x2A, 0xF9, 0xD1, 0x70, 0x47, 0x00, 0xBF, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xF8, 0x00, 0xF0, -0x6D, 0xE9, 0x02, 0x45, 0x20, 0xF0, 0x07, 0x01, 0x6F, 0xF0, 0x00, 0x0C, 0x10, 0xF0, 0x07, 0x04, 0x91, 0xF8, 0x20, 0xF0, -0x40, 0xF0, 0x49, 0x80, 0x4F, 0xF0, 0x00, 0x04, 0x6F, 0xF0, 0x07, 0x00, 0xD1, 0xE9, 0x00, 0x23, 0x91, 0xF8, 0x40, 0xF0, -0x00, 0xF1, 0x08, 0x00, 0x82, 0xFA, 0x4C, 0xF2, 0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, 0xA2, 0xFA, 0x8C, 0xF3, -0x4B, 0xBB, 0xD1, 0xE9, 0x02, 0x23, 0x82, 0xFA, 0x4C, 0xF2, 0x00, 0xF1, 0x08, 0x00, 0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, -0x4C, 0xF3, 0xA2, 0xFA, 0x8C, 0xF3, 0xE3, 0xB9, 0xD1, 0xE9, 0x04, 0x23, 0x82, 0xFA, 0x4C, 0xF2, 0x00, 0xF1, 0x08, 0x00, -0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, 0xA2, 0xFA, 0x8C, 0xF3, 0x7B, 0xB9, 0xD1, 0xE9, 0x06, 0x23, 0x01, 0xF1, -0x20, 0x01, 0x82, 0xFA, 0x4C, 0xF2, 0x00, 0xF1, 0x08, 0x00, 0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, 0xA2, 0xFA, -0x8C, 0xF3, 0x00, 0x2B, 0xC6, 0xD0, 0x00, 0x2A, 0x04, 0xBF, 0x04, 0x30, 0x1A, 0x46, 0x12, 0xBA, 0xB2, 0xFA, 0x82, 0xF2, -0xFD, 0xE8, 0x02, 0x45, 0x00, 0xEB, 0xD2, 0x00, 0x70, 0x47, 0xD1, 0xE9, 0x00, 0x23, 0x04, 0xF0, 0x03, 0x05, 0xC4, 0xF1, -0x00, 0x00, 0x4F, 0xEA, 0xC5, 0x05, 0x14, 0xF0, 0x04, 0x0F, 0x91, 0xF8, 0x40, 0xF0, 0x0C, 0xFA, 0x05, 0xF5, 0x62, 0xEA, -0x05, 0x02, 0x1C, 0xBF, 0x63, 0xEA, 0x05, 0x03, 0x62, 0x46, 0x4F, 0xF0, 0x00, 0x04, 0xA9, 0xE7, 0x9A, 0xB3, 0xF0, 0xB4, -0x40, 0xEA, 0x01, 0x05, 0xAD, 0x07, 0x04, 0x46, 0x03, 0x46, 0x08, 0x46, 0x28, 0xD0, 0x20, 0x78, 0x0E, 0x78, 0x86, 0x42, -0x29, 0xD1, 0x01, 0x2A, 0x2A, 0xD0, 0x25, 0x46, 0x50, 0xB1, 0x15, 0xF8, 0x01, 0x0F, 0x11, 0xF8, 0x01, 0x6F, 0xEB, 0x43, -0xB0, 0x42, 0x13, 0x44, 0x1D, 0xD1, 0xE3, 0x18, 0xF4, 0xD1, 0x18, 0x46, 0xF0, 0xBC, 0x70, 0x47, 0x07, 0x68, 0x1C, 0x46, -0x53, 0xF8, 0x04, 0x5B, 0xA5, 0xF1, 0x01, 0x36, 0xBD, 0x42, 0x01, 0x46, 0x26, 0xEA, 0x05, 0x06, 0x00, 0xF1, 0x04, 0x00, -0xDD, 0xD1, 0x04, 0x3A, 0x1C, 0x46, 0x01, 0x46, 0x0A, 0xD0, 0x16, 0xF0, 0x80, 0x3F, 0x07, 0xD1, 0x03, 0x2A, 0xE9, 0xD8, -0xD3, 0xE7, 0x10, 0x46, 0x70, 0x47, 0x80, 0x1B, 0xF0, 0xBC, 0x70, 0x47, 0x00, 0x20, 0xF0, 0xBC, 0x70, 0x47, 0x00, 0xBF, -0x6D, 0x65, 0x6D, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x6B, 0x5F, 0x73, 0x74, -0x61, 0x72, 0x74, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x62, 0x73, 0x73, 0x5F, 0x65, 0x6E, 0x64, 0x3D, 0x25, 0x78, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x6D, 0x65, 0x6D, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x73, 0x3A, 0x20, 0x73, 0x74, -0x6B, 0x5F, 0x65, 0x6E, 0x64, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x3D, -0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x25, 0x64, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x69, 0x66, 0x69, -0x6D, 0x61, 0x69, 0x6E, 0x21, 0x0D, 0x0A, 0x00, 0x10, 0x14, 0x08, 0x12, 0x3C, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x0C, 0x13, -0x08, 0x12, 0xC7, 0x11, 0x10, 0x14, 0x08, 0x12, 0x3C, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x0C, 0x13, 0x08, 0x12, 0x45, 0x11, -0x08, 0x12, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x86, 0x11, 0x04, 0x11, 0x03, 0x11, 0x08, 0x12, 0x04, 0x11, -0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x86, 0x11, 0x04, 0x11, 0xC2, 0x10, 0x08, 0x12, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, -0x07, 0x12, 0xC3, 0x10, 0x04, 0x11, 0xC2, 0x10, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x86, 0x11, 0xC3, 0x10, -0x04, 0x11, 0xC2, 0x10, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x86, 0x11, 0xC3, 0x10, 0x04, 0x11, 0xC2, 0x10, -0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0xC3, 0x10, 0x04, 0x11, 0xC2, 0x10, 0x08, 0x12, 0x04, 0x11, -0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x0C, 0x13, 0x08, 0x12, 0x03, 0x11, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, -0x07, 0x12, 0x86, 0x11, 0x04, 0x11, 0xC2, 0x10, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x8A, 0x12, 0x0C, 0x13, -0x04, 0x11, 0x03, 0x11, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x8A, 0x12, 0x86, 0x11, 0x04, 0x11, 0x03, 0x11, -0x9D, 0x87, 0x25, 0x73, 0x3A, 0x20, 0x62, 0x61, 0x6E, 0x64, 0x3D, 0x25, 0x64, 0x20, 0x66, 0x72, 0x65, 0x71, 0x3D, 0x25, -0x64, 0x20, 0x66, 0x72, 0x65, 0x71, 0x31, 0x3D, 0x25, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x74, 0x79, 0x70, 0x65, 0x3D, -0x25, 0x64, 0x20, 0x73, 0x78, 0x3D, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x63, 0x68, 0x61, 0x6E, 0x3A, -0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x62, 0x61, 0x6E, 0x64, 0x20, -0x25, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x62, 0x61, 0x6E, 0x64, 0x20, 0x3C, 0x20, 0x50, -0x48, 0x59, 0x5F, 0x42, 0x41, 0x4E, 0x44, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x28, 0x6D, 0x64, 0x6D, 0x5F, 0x6D, 0x61, 0x6A, -0x6F, 0x72, 0x5F, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x2B, 0x20, -0x32, 0x29, 0x20, 0x2A, 0x20, 0x31, 0x30, 0x20, 0x2B, 0x20, 0x6D, 0x64, 0x6D, 0x5F, 0x6D, 0x69, 0x6E, 0x6F, 0x72, 0x5F, -0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4E, 0x58, -0x5F, 0x4D, 0x44, 0x4D, 0x5F, 0x56, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x87, 0x25, 0x73, 0x3A, 0x20, 0x72, 0x61, -0x64, 0x69, 0x6F, 0x20, 0x25, 0x64, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, -0x74, 0x0A, 0x00, 0x00, 0x9D, 0x87, 0x25, 0x73, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x61, -0x6D, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2C, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, -0x6E, 0x67, 0x0A, 0x00, 0x9B, 0x25, 0x73, 0x20, 0x4D, 0x41, 0x43, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x21, 0x3D, -0x20, 0x49, 0x44, 0x4C, 0x45, 0x0A, 0x00, 0x00, 0x70, 0x68, 0x79, 0x5F, 0x68, 0x77, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x63, -0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0x70, 0x68, 0x79, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x63, 0x68, 0x61, 0x6E, -0x6E, 0x65, 0x6C, 0x00, 0x70, 0x68, 0x79, 0x5F, 0x67, 0x65, 0x74, 0x5F, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x00, -0x70, 0x68, 0x79, 0x5F, 0x73, 0x74, 0x6F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x0D, 0xFE, 0x11, 0xFE, 0x0D, 0x02, -0x0E, 0xFF, 0x13, 0xFE, 0x0B, 0x02, 0x0C, 0xFD, 0x12, 0xFD, 0x0C, 0x03, 0x0D, 0xFE, 0x13, 0xFD, 0x0B, 0x03, 0x0C, 0xFD, -0x14, 0xFD, 0x0A, 0x03, 0x0B, 0xFC, 0x11, 0xFF, 0x0D, 0x01, 0x0E, 0xFF, 0x13, 0xFD, 0x0B, 0x03, 0x0C, 0xFD, 0x12, 0xFE, -0x0C, 0x02, 0x0D, 0xFE, 0x12, 0xFE, 0x0C, 0x02, 0x0D, 0xFE, 0x12, 0xFE, 0x0C, 0x02, 0x0D, 0xFE, 0x13, 0xFE, 0x0B, 0x02, -0x0C, 0xFD, 0x1F, 0x00, 0x0C, 0x02, 0x0D, 0xFE, 0x11, 0x00, 0x0D, 0x00, 0x0E, 0xFF, 0x13, 0x03, 0x0B, 0x03, 0x0C, 0xFD, -0x14, 0xFC, 0x0A, 0x04, 0x0B, 0xFC, 0x12, 0xFF, 0x0C, 0x01, 0x0D, 0xFE, 0x11, 0xFE, 0x0D, 0x02, 0x0E, 0xFF, 0x13, 0xFE, -0x0B, 0x02, 0x0C, 0xFD, 0x13, 0xFD, 0x0B, 0x03, 0x0C, 0xFD, 0x12, 0xFF, 0x0C, 0x01, 0x0D, 0xFE, 0x12, 0xFD, 0x0C, 0x03, -0x0D, 0xFE, 0x12, 0xFF, 0x0C, 0x01, 0x0D, 0xFE, 0x13, 0xFD, 0x0B, 0x03, 0x0C, 0xFD, 0x13, 0xFE, 0x0B, 0x02, 0x0C, 0xFD, -0x1F, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x74, 0x63, 0x5F, 0x73, 0x70, 0x75, 0x72, 0x69, 0x6F, 0x75, 0x73, 0x00, 0x00, 0x00, -0x18, 0x10, 0x0C, 0x08, 0x07, 0x06, 0x8B, 0x05, 0x89, 0x04, 0x87, 0x03, 0x85, 0x02, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, -0x73, 0x65, 0x74, 0x20, 0x74, 0x78, 0x67, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x32, 0x2E, 0x34, -0x67, 0x28, 0x70, 0x61, 0x5F, 0x64, 0x72, 0x76, 0x5F, 0x69, 0x62, 0x69, 0x74, 0x29, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, -0x77, 0x66, 0x20, 0x64, 0x66, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x66, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x52, 0x58, -0x4F, 0x4E, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x66, 0x20, 0x64, 0x66, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, -0x66, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x52, 0x58, 0x4F, 0x46, 0x46, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x64, 0x65, 0x74, 0x65, -0x63, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x20, -0x69, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x5F, 0x6C, 0x73, 0x20, 0x64, 0x65, 0x74, 0x20, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x73, 0x6C, 0x6F, 0x70, 0x65, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x67, 0x61, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x3A, 0x20, 0x66, 0x69, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, -0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x67, 0x61, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x3A, 0x20, 0x66, 0x69, -0x74, 0x5F, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x21, 0x0D, 0x0A, 0x00, 0x63, 0x6F, 0x65, 0x66, 0x5F, 0x49, 0x51, 0x20, -0x20, 0x69, 0x73, 0x20, 0x25, 0x64, 0x2E, 0x00, 0x25, 0x30, 0x33, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x20, -0x73, 0x64, 0x6D, 0x20, 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x20, -0x66, 0x72, 0x65, 0x71, 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x20, -0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x65, 0x6E, -0x20, 0x72, 0x65, 0x67, 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x66, 0x20, 0x64, -0x63, 0x63, 0x61, 0x6C, 0x69, 0x62, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x21, 0x0D, 0x0A, 0x00, 0x66, 0x69, 0x74, 0x2D, -0x69, 0x6E, 0x2D, 0x49, 0x20, 0x25, 0x78, 0x3A, 0x20, 0x5B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, -0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x5D, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x66, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x2D, 0x51, 0x20, 0x25, 0x78, 0x3A, 0x20, 0x5B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, -0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x5D, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x67, 0x61, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x3A, 0x20, 0x63, 0x61, 0x6C, 0x49, 0x20, 0x25, -0x78, 0x2C, 0x20, 0x63, 0x61, 0x6C, 0x51, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x66, 0x20, 0x64, -0x63, 0x63, 0x61, 0x6C, 0x69, 0x62, 0x20, 0x65, 0x6E, 0x64, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x5F, -0x63, 0x66, 0x67, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, -0x70, 0x6C, 0x6C, 0x20, 0x75, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x3A, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x77, 0x66, 0x72, 0x66, 0x20, 0x6F, 0x6E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x66, 0x72, 0x66, 0x20, 0x6F, 0x66, 0x66, -0x0D, 0x0A, 0x00, 0x00, 0x20, 0x2A, 0x20, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x61, 0x5F, 0x69, 0x71, 0x3A, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x49, 0x69, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x49, 0x71, 0x30, 0x3D, 0x25, 0x64, -0x2C, 0x20, 0x56, 0x69, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x71, 0x30, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, -0x20, 0x20, 0x49, 0x69, 0x31, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x49, 0x71, 0x31, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x69, -0x31, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x71, 0x31, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, 0x20, 0x61, 0x64, 0x6A, -0x49, 0x69, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x61, 0x64, 0x6A, 0x49, 0x71, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x2D, 0x3E, 0x20, 0x49, 0x69, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x49, 0x71, 0x30, 0x3D, 0x25, -0x64, 0x2C, 0x20, 0x56, 0x69, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x71, 0x30, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x2A, 0x6C, 0x6E, 0x61, 0x5F, 0x76, 0x63, 0x6D, 0x70, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x6C, 0x6E, -0x61, 0x5F, 0x76, 0x63, 0x6D, 0x6E, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, -0x67, 0x61, 0x69, 0x6E, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x66, 0x72, 0x66, -0x20, 0x63, 0x61, 0x6C, 0x69, 0x62, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x20, -0x3C, 0x3D, 0x20, 0x33, 0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x69, -0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x00, 0x73, 0x66, 0x74, 0x20, 0x64, 0x69, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x73, 0x66, 0x74, 0x72, 0x73, 0x74, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6F, 0x61, 0x64, -0x5F, 0x76, 0x61, 0x6C, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x78, 0x75, 0x73, -0x65, 0x64, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x68, 0x6F, 0x73, 0x74, 0x5F, 0x62, 0x75, 0x66, 0x5F, 0x64, 0x6D, 0x61, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x20, 0x21, 0x3D, -0x20, 0x30, 0x00, 0x00, 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x64, 0x73, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, -0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x20, 0x3C, 0x3D, 0x20, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, -0x6B, 0x65, 0x5F, 0x74, 0x61, 0x73, 0x6B, 0x5F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x28, 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x64, -0x73, 0x74, 0x2D, 0x3E, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, 0x29, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, -0x6D, 0x73, 0x67, 0x62, 0x75, 0x66, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x5F, 0x6D, 0x73, 0x67, -0x5F, 0x62, 0x75, 0x66, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x69, 0x70, 0x63, 0x5F, 0x65, 0x6D, 0x62, 0x5F, -0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x66, 0x77, 0x64, 0x3A, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, -0x6D, 0x73, 0x67, 0x69, 0x64, 0x3D, 0x25, 0x78, 0x2C, 0x73, 0x72, 0x63, 0x69, 0x64, 0x3D, 0x25, 0x78, 0x2C, 0x64, 0x73, -0x74, 0x69, 0x64, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x69, -0x70, 0x63, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, -0x20, 0x75, 0x73, 0x62, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x66, 0x72, 0x65, 0x65, 0x20, 0x25, 0x64, 0x2C, -0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x73, 0x72, 0x63, 0x2D, 0x3E, 0x70, 0x61, -0x72, 0x61, 0x6D, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x6F, 0x66, 0x28, 0x6D, 0x73, -0x67, 0x2D, 0x3E, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x29, 0x00, 0x00, 0x00, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x6D, 0x73, 0x67, -0x20, 0x63, 0x66, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, -0x64, 0x73, 0x63, 0x72, 0x21, 0x0D, 0x0A, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x6F, 0x74, 0x69, 0x66, 0x79, 0x3A, -0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x42, 0x54, 0x20, 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x20, 0x68, 0x6F, -0x73, 0x74, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x70, 0x6D, 0x69, 0x63, 0x20, 0x67, 0x70, 0x69, 0x6F, 0x0A, 0x00, 0x00, -0x77, 0x6B, 0x62, 0x74, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x50, 0x4D, 0x49, 0x43, 0x5F, 0x45, 0x52, 0x52, -0x49, 0x52, 0x51, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x5F, -0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x49, 0x50, 0x43, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x4E, 0x45, -0x4C, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x00, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x23, 0x20, 0x3D, 0x25, 0x64, 0x20, -0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x75, 0x2E, 0x73, 0x74, 0x61, 0x2E, 0x6C, -0x61, 0x73, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x63, 0x6F, 0x6E, 0x6E, 0x5F, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x3D, 0x3D, -0x20, 0x31, 0x00, 0x00, 0x73, 0x74, 0x61, 0x2D, 0x3E, 0x6C, 0x61, 0x73, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x63, 0x6F, 0x6E, -0x6E, 0x5F, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x31, 0x00, 0x00, 0x00, 0x00, 0x61, 0x70, 0x6D, 0x20, -0x73, 0x74, 0x61, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x74, 0x3A, 0x25, 0x64, 0x2C, 0x20, 0x72, 0x3A, 0x25, 0x64, 0x2C, 0x20, -0x72, 0x72, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x20, 0x6C, 0x6F, 0x73, 0x73, 0x31, 0x0A, 0x00, -0x63, 0x6C, 0x65, 0x61, 0x72, 0x0A, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x20, 0x6C, 0x6F, 0x73, 0x73, 0x0A, 0x00, 0x00, -0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x74, 0x6D, 0x70, 0x2D, 0x3E, 0x68, 0x6F, 0x73, 0x74, 0x2E, 0x73, 0x74, 0x61, -0x69, 0x64, 0x20, 0x3C, 0x20, 0x4E, 0x58, 0x5F, 0x52, 0x45, 0x4D, 0x4F, 0x54, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x4D, -0x41, 0x58, 0x00, 0x00, 0x73, 0x74, 0x61, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x3A, 0x25, 0x64, 0x0A, 0x00, -0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x74, 0x6D, 0x70, 0x2D, 0x3E, 0x68, 0x6F, 0x73, 0x74, 0x2E, 0x66, 0x6C, 0x61, -0x67, 0x73, 0x20, 0x26, 0x20, 0x54, 0x58, 0x55, 0x5F, 0x43, 0x4E, 0x54, 0x52, 0x4C, 0x5F, 0x52, 0x45, 0x54, 0x52, 0x59, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xD9, 0x67, 0x12, 0x00, 0xF9, 0x67, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x5F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5F, 0x70, 0x6F, 0x6F, 0x6C, 0x5F, -0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, -0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x73, 0x65, 0x74, 0x5F, 0x70, 0x61, 0x74, 0x74, -0x65, 0x72, 0x6E, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, -0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x73, 0x65, 0x74, 0x5F, 0x6E, 0x75, 0x6D, 0x5F, -0x75, 0x73, 0x65, 0x72, 0x73, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, -0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x5F, -0x6E, 0x65, 0x78, 0x74, 0x5F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x20, 0x49, 0x6E, -0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, -0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x65, 0x6D, 0x4D, 0x67, 0x72, 0x45, 0x72, 0x72, 0x3A, 0x20, 0x53, -0x75, 0x62, 0x70, 0x6F, 0x6F, 0x6C, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x53, 0x77, 0x45, 0x72, -0x3A, 0x4E, 0x6F, 0x53, 0x69, 0x7A, 0x65, 0x41, 0x6C, 0x6C, 0x6F, 0x63, 0x20, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x0D, 0x00, -0x67, 0x65, 0x74, 0x5F, 0x6E, 0x65, 0x78, 0x74, 0x5F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x61, 0x64, 0x64, 0x72, -0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, -0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x5F, 0x70, 0x61, 0x74, 0x74, -0x65, 0x72, 0x6E, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, -0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x53, 0x77, 0x45, 0x72, 0x3A, 0x41, 0x6C, 0x6C, -0x63, 0x45, 0x72, 0x72, 0x50, 0x74, 0x72, 0x6E, 0x20, 0x3A, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, -0x72, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x0D, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x5F, 0x6E, 0x61, 0x74, 0x69, -0x76, 0x65, 0x5F, 0x70, 0x6F, 0x6F, 0x6C, 0x5F, 0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, -0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, -0x64, 0x65, 0x63, 0x72, 0x5F, 0x6E, 0x75, 0x6D, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, -0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, -0x78, 0x0A, 0x00, 0x00, 0x73, 0x65, 0x74, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, -0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, -0x25, 0x78, 0x0A, 0x00, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5F, 0x69, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x32, 0x00, 0x00, -0x67, 0x65, 0x74, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, -0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, -0x72, 0x65, 0x70, 0x3A, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x25, 0x64, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x3A, 0x20, 0x6E, 0x6F, 0x20, 0x64, 0x65, 0x73, 0x63, 0x0D, 0x0A, 0x00, 0x00, -0x70, 0x61, 0x72, 0x61, 0x6D, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x6E, 0x74, 0x20, -0x65, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x00, 0x69, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x6E, 0x75, 0x6D, 0x3D, 0x25, 0x64, -0x2C, 0x20, 0x72, 0x78, 0x64, 0x65, 0x73, 0x63, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x61, 0x63, 0x3E, 0x3D, 0x4E, 0x58, 0x5F, 0x54, 0x58, 0x51, 0x5F, 0x43, 0x4E, 0x54, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x61, 0x63, 0x20, 0x3C, 0x20, 0x4E, 0x58, 0x5F, 0x54, 0x58, 0x51, 0x5F, 0x43, 0x4E, 0x54, 0x20, -0x2B, 0x20, 0x31, 0x00, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6E, 0x65, 0x77, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, -0x4C, 0x4C, 0x00, 0x00, 0x6D, 0x73, 0x67, 0x20, 0x63, 0x72, 0x63, 0x20, 0x65, 0x72, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x69, 0x6E, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x73, 0x6F, 0x66, 0x74, -0x77, 0x6B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x64, 0x6D, 0x61, 0x20, 0x69, 0x6E, 0x74, 0x20, 0x25, 0x78, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x73, 0x64, 0x69, 0x6F, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x3A, 0x20, 0x73, 0x74, -0x61, 0x74, 0x75, 0x73, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x73, 0x64, 0x69, 0x6F, 0x20, 0x68, 0x6F, 0x73, -0x74, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x61, 0x68, 0x62, 0x32, 0x73, 0x64, 0x69, 0x6F, -0x20, 0x74, 0x78, 0x20, 0x61, 0x62, 0x6F, 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x53, 0x44, 0x49, 0x4F, 0x32, 0x41, 0x48, 0x42, -0x5F, 0x4C, 0x4C, 0x53, 0x54, 0x5F, 0x48, 0x44, 0x52, 0x5F, 0x45, 0x52, 0x52, 0x0D, 0x0A, 0x00, 0x73, 0x64, 0x69, 0x6F, -0x20, 0x65, 0x72, 0x72, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3D, 0x25, 0x78, 0x2C, 0x30, 0x78, 0x34, 0x35, 0x3D, -0x25, 0x78, 0x0A, 0x00, 0x6D, 0x73, 0x67, 0x72, 0x78, 0x75, 0x73, 0x65, 0x64, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x74, 0x6F, -0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x63, 0x75, 0x73, 0x65, 0x64, 0x3D, -0x25, 0x64, 0x2C, 0x20, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x74, 0x78, 0x63, 0x6D, -0x73, 0x67, 0x75, 0x73, 0x65, 0x64, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x6D, 0x73, 0x67, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x3D, -0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x61, 0x69, 0x74, 0x20, 0x69, 0x6F, 0x20, 0x65, 0x6E, 0x61, 0x62, -0x6C, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x69, 0x6F, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x0D, 0x0A, 0x00, -0x65, 0x72, 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x70, 0x6B, 0x74, 0x21, 0x0D, 0x0A, 0x00, 0x00, -0x65, 0x72, 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x20, 0x64, 0x73, 0x63, 0x72, 0x21, 0x0D, 0x0A, 0x00, 0x6F, 0x70, 0x65, 0x6E, -0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x55, 0x4C, 0x50, 0x49, 0x20, 0x63, 0x6C, 0x6B, 0x20, 0x64, 0x65, 0x74, -0x65, 0x63, 0x74, 0x65, 0x64, 0x0D, 0x0A, 0x00, 0x65, 0x72, 0x72, 0x21, 0x21, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x73, 0x62, -0x20, 0x75, 0x6C, 0x70, 0x69, 0x20, 0x63, 0x6C, 0x6B, 0x0D, 0x0A, 0x00, 0x77, 0x61, 0x69, 0x74, 0x20, 0x63, 0x66, 0x67, -0x0A, 0x00, 0x00, 0x00, 0x46, 0x49, 0x46, 0x4F, 0x20, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x3A, 0x20, 0x6F, 0x76, 0x65, 0x72, -0x66, 0x6C, 0x6F, 0x77, 0x2C, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x69, 0x73, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x73, 0x69, -0x7A, 0x65, 0x20, 0x69, 0x73, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x54, 0x6F, 0x74, 0x61, 0x6C, 0x20, 0x52, 0x41, 0x4D, 0x20, -0x69, 0x73, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x61, 0x6C, 0x69, 0x67, 0x6E, -0x6D, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x45, 0x50, 0x30, 0x20, 0x53, 0x45, 0x54, 0x55, -0x50, 0x20, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x2C, 0x20, 0x64, 0x69, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x00, -0x45, 0x50, 0x30, 0x20, 0x53, 0x45, 0x54, 0x55, 0x50, 0x20, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x2C, 0x20, 0x77, 0x4C, 0x65, -0x6E, 0x67, 0x74, 0x68, 0x20, 0x69, 0x73, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x6B, 0x6E, -0x6F, 0x77, 0x6E, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6F, 0x72, 0x3A, 0x20, 0x25, 0x64, 0x00, 0x00, -0x45, 0x70, 0x30, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x72, 0x72, 0x20, -0x25, 0x75, 0x2D, 0x25, 0x75, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x72, 0x65, 0x62, 0x6F, 0x6F, 0x74, -0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x73, 0x65, 0x74, 0x0D, 0x0A, 0x00, 0x65, 0x78, 0x69, 0x74, -0x0D, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x62, 0x20, 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x0A, 0x00, 0x77, 0x61, 0x6B, 0x65, -0x75, 0x70, 0x20, 0x75, 0x73, 0x62, 0x0A, 0x00, 0x69, 0x72, 0x71, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x77, 0x6C, 0x61, 0x6E, 0x5F, 0x75, 0x73, 0x62, 0x5F, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x00, -0x52, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x64, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x58, 0x20, 0x25, -0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x6D, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x58, 0x20, 0x25, -0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x6E, 0x6F, 0x20, 0x72, 0x78, -0x20, 0x6D, 0x73, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x0D, 0x0A, 0x00, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, -0x20, 0x25, 0x58, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x65, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x58, 0x20, 0x25, -0x64, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x62, 0x20, 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x76, 0x20, 0x65, 0x72, -0x72, 0x21, 0x21, 0x21, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x23, 0x23, 0x23, 0x65, -0x72, 0x72, 0x23, 0x23, 0x23, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x62, 0x20, 0x77, 0x6C, 0x61, 0x6E, -0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x73, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x65, 0x72, 0x72, 0x21, 0x21, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x64, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x74, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x20, 0x00, -0x01, 0x01, 0x00, 0xA0, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0x00, 0x07, 0x05, 0x01, 0x02, 0x00, 0x02, -0x00, 0x07, 0x05, 0x82, 0x02, 0x00, 0x02, 0x00, 0x05, 0x0F, 0x0C, 0x00, 0x01, 0x07, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, -0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x9C, 0xA6, 0x00, 0x88, 0x00, 0x01, 0x01, 0x02, 0x03, 0x01, 0x00, 0x00, -0x0A, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x30, 0x00, 0x31, 0x00, 0x00, 0x00, -0x0A, 0x03, 0x77, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x10, 0x03, 0x61, 0x00, 0x69, 0x00, 0x63, 0x00, -0x73, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x12, 0x03, 0x41, 0x00, 0x49, 0x00, 0x43, 0x00, 0x20, 0x00, 0x57, 0x00, -0x6C, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x12, 0x03, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x39, 0x00, 0x30, 0x00, -0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x00, 0x00, 0x04, 0x03, 0x09, 0x04, 0x75, 0x73, 0x62, 0x5F, 0x77, 0x6C, 0x61, 0x6E, -0x5F, 0x72, 0x78, 0x5F, 0x70, 0x6B, 0x74, 0x5F, 0x66, 0x72, 0x65, 0x65, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x69, 0x6E, -0x69, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, -0x77, 0x66, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x75, 0x73, 0x62, 0x20, 0x73, 0x74, 0x61, -0x72, 0x74, 0x20, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x68, 0x6F, 0x73, -0x74, 0x5F, 0x69, 0x66, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x73, 0x69, 0x7A, -0x65, 0x00, 0x00, 0x00, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x72, 0x78, 0x3A, 0x20, 0x64, 0x73, 0x63, 0x72, 0x20, 0x75, -0x73, 0x65, 0x64, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x23, 0x77, 0x66, 0x3A, 0x25, 0x58, 0x0A, 0x00, -0x23, 0x77, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x64, 0x20, 0x72, 0x78, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, -0x65, 0x72, 0x72, 0x21, 0x20, 0x77, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x72, 0x78, 0x20, 0x62, 0x75, 0x66, 0x0A, 0x00, 0x00, -0x77, 0x64, 0x20, 0x72, 0x78, 0x20, 0x6D, 0x61, 0x78, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, -0x68, 0x6F, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x61, 0x64, 0x79, 0x0A, 0x00, 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x64, 0x61, 0x74, -0x61, 0x20, 0x72, 0x65, 0x63, 0x76, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x65, 0x72, 0x72, 0x3A, -0x20, 0x6E, 0x6F, 0x20, 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x62, 0x75, 0x66, 0x0A, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x69, 0x70, 0x63, -0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x69, 0x70, 0x63, 0x20, 0x68, 0x6F, 0x73, -0x74, 0x20, 0x72, 0x78, 0x3A, 0x20, 0x6E, 0x6F, 0x62, 0x75, 0x66, 0x66, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3D, -0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x4D, 0x4D, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x54, 0x4F, 0x5F, 0x4B, 0x45, -0x59, 0x28, 0x4E, 0x58, 0x5F, 0x52, 0x45, 0x4D, 0x4F, 0x54, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x4D, 0x41, 0x58, 0x20, -0x2D, 0x20, 0x31, 0x29, 0x20, 0x3C, 0x3D, 0x20, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x73, 0x74, 0x61, 0x5F, 0x6B, 0x65, -0x79, 0x5F, 0x6D, 0x61, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x00, 0x00, -0x6C, 0x70, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x61, 0x63, 0x74, 0x73, 0x6C, 0x70, 0x3A, 0x25, 0x64, 0x2C, 0x20, 0x74, 0x69, -0x6D, 0x65, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x63, 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x69, 0x64, 0x78, 0x20, 0x21, 0x3D, -0x20, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x43, 0x54, 0x58, 0x54, 0x5F, 0x55, 0x4E, 0x55, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, -0x73, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, -0x67, 0x3A, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x0D, 0x0A, 0x00, 0x00, 0x74, 0x69, 0x6D, 0x65, -0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x6C, 0x61, 0x73, 0x74, 0x20, 0x3C, 0x20, 0x31, 0x30, 0x6D, 0x73, 0x2C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, -0x6F, 0x77, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x0D, 0x0A, 0x00, -0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x0A, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F, 0x4C, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x78, -0x50, 0x53, 0x52, 0x20, 0x20, 0x20, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x50, 0x53, 0x50, 0x20, 0x20, 0x20, 0x20, 0x3D, -0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x4D, 0x53, 0x50, 0x20, 0x20, 0x20, 0x20, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x50, -0x52, 0x49, 0x4D, 0x41, 0x53, 0x4B, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x4C, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, -0x3D, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x0A, 0x57, 0x72, 0x6F, 0x6E, 0x67, 0x20, 0x50, 0x53, 0x50, 0x21, 0x00, -0x0A, 0x44, 0x75, 0x6D, 0x70, 0x4D, 0x53, 0x50, 0x3A, 0x00, 0x00, 0x00, 0x0A, 0x5B, 0x25, 0x30, 0x38, 0x78, 0x5D, 0x3A, -0x00, 0x00, 0x00, 0x00, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x0A, 0x52, 0x25, 0x2D, 0x34, 0x64, 0x3A, 0x20, -0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x50, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, -0x0A, 0x4C, 0x52, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x50, 0x43, 0x20, 0x20, 0x20, 0x3A, 0x20, -0x25, 0x30, 0x38, 0x58, 0x0A, 0x78, 0x50, 0x53, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x50, 0x53, 0x50, -0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x4D, 0x53, 0x50, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, -0x00, 0x00, 0x00, 0x00, 0x0A, 0x43, 0x50, 0x55, 0x49, 0x44, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x49, 0x43, 0x53, -0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x56, 0x54, 0x4F, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, -0x0A, 0x41, 0x49, 0x52, 0x43, 0x52, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x48, 0x43, -0x53, 0x52, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x43, 0x46, 0x53, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, -0x0A, 0x48, 0x46, 0x53, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x44, 0x46, 0x53, 0x52, 0x20, 0x3A, 0x20, -0x25, 0x30, 0x38, 0x58, 0x0A, 0x41, 0x46, 0x53, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, -0x0A, 0x4D, 0x4D, 0x46, 0x53, 0x52, 0x3A, 0x20, 0x25, 0x30, 0x32, 0x58, 0x0A, 0x20, 0x20, 0x49, 0x41, 0x43, 0x43, 0x56, -0x49, 0x4F, 0x4C, 0x20, 0x3A, 0x25, 0x64, 0x09, 0x44, 0x41, 0x43, 0x43, 0x56, 0x49, 0x4F, 0x4C, 0x20, 0x3A, 0x25, 0x64, -0x0A, 0x20, 0x20, 0x4D, 0x55, 0x4E, 0x53, 0x54, 0x4B, 0x45, 0x52, 0x52, 0x3A, 0x25, 0x64, 0x09, 0x4D, 0x53, 0x54, 0x4B, -0x45, 0x52, 0x52, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x4D, 0x4C, 0x53, 0x50, 0x45, 0x52, 0x52, 0x20, 0x20, -0x3A, 0x25, 0x64, 0x09, 0x4D, 0x4D, 0x41, 0x52, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x3A, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00, -0x0A, 0x4D, 0x4D, 0x46, 0x41, 0x52, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x42, 0x46, 0x53, -0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x32, 0x58, 0x0A, 0x20, 0x20, 0x49, 0x42, 0x55, 0x53, 0x45, 0x52, 0x52, 0x20, 0x20, -0x20, 0x20, 0x3A, 0x25, 0x64, 0x09, 0x50, 0x52, 0x45, 0x43, 0x49, 0x53, 0x45, 0x52, 0x52, 0x3A, 0x25, 0x64, 0x0A, 0x20, -0x20, 0x49, 0x4D, 0x50, 0x52, 0x45, 0x43, 0x49, 0x53, 0x45, 0x52, 0x52, 0x3A, 0x25, 0x64, 0x09, 0x55, 0x4E, 0x53, 0x54, -0x4B, 0x45, 0x52, 0x52, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x53, 0x54, 0x4B, 0x45, 0x52, 0x52, 0x20, 0x20, 0x20, -0x20, 0x20, 0x3A, 0x25, 0x64, 0x09, 0x4C, 0x53, 0x50, 0x45, 0x52, 0x52, 0x20, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, -0x20, 0x42, 0x46, 0x41, 0x52, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x00, 0x0A, 0x42, 0x46, 0x41, -0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x55, 0x46, 0x53, 0x52, 0x20, 0x3A, 0x20, -0x25, 0x30, 0x34, 0x58, 0x0A, 0x20, 0x20, 0x55, 0x4E, 0x44, 0x45, 0x46, 0x49, 0x4E, 0x53, 0x54, 0x52, 0x3A, 0x25, 0x64, -0x09, 0x49, 0x4E, 0x56, 0x53, 0x54, 0x41, 0x54, 0x45, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x49, 0x4E, 0x56, 0x50, -0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x09, 0x4E, 0x4F, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, -0x25, 0x64, 0x0A, 0x20, 0x20, 0x55, 0x4E, 0x41, 0x4C, 0x49, 0x47, 0x4E, 0x45, 0x44, 0x20, 0x3A, 0x25, 0x64, 0x09, 0x44, -0x49, 0x56, 0x42, 0x59, 0x5A, 0x45, 0x52, 0x4F, 0x3A, 0x25, 0x64, 0x00, 0x0A, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x3A, 0x20, -0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0x0A, 0x50, 0x72, 0x69, 0x76, 0x20, 0x3A, 0x20, 0x55, 0x73, 0x65, 0x72, -0x00, 0x00, 0x00, 0x00, 0x0A, 0x50, 0x72, 0x69, 0x76, 0x20, 0x3A, 0x20, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6C, 0x65, 0x67, -0x65, 0x64, 0x00, 0x00, 0x0A, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x3A, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, -0x0A, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x3A, 0x20, 0x50, 0x53, 0x50, 0x00, 0x0A, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x3A, 0x20, -0x4D, 0x53, 0x50, 0x00, 0x0A, 0x43, 0x4E, 0x54, 0x52, 0x4C, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x50, 0x4D, 0x41, -0x53, 0x4B, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x46, 0x4D, 0x41, 0x53, 0x4B, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, -0x0A, 0x42, 0x41, 0x53, 0x45, 0x50, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x44, 0x75, 0x6D, -0x70, 0x50, 0x53, 0x50, 0x3A, 0x00, 0x00, 0x00, 0x50, 0x61, 0x6E, 0x69, 0x63, 0x2E, 0x2E, 0x2E, 0x0A, 0x00, 0x00, 0x00, -0x0A, 0x2B, 0x2B, 0x20, 0x43, 0x4D, 0x34, 0x20, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, -0x72, 0x20, 0x2B, 0x2B, 0x0A, 0x0A, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x00, 0x00, 0x00, -0x4D, 0x65, 0x6D, 0x4D, 0x61, 0x6E, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x42, 0x75, 0x73, 0x46, -0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, -0x48, 0x61, 0x72, 0x64, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, -0x74, 0x3A, 0x00, 0x00, 0x0A, 0x0A, 0x2D, 0x2D, 0x20, 0x43, 0x4D, 0x34, 0x20, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x48, -0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x2D, 0x2D, 0x0A, 0x0A, 0x00, 0x9A, 0x25, 0x73, 0x20, 0x2D, 0x20, 0x62, 0x75, -0x69, 0x6C, 0x64, 0x3A, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x25, -0x64, 0x2C, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x64, 0x2C, 0x00, 0x00, 0x74, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x6E, 0x6F, 0x74, 0x20, -0x70, 0x61, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, -0x3A, 0x20, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x68, 0x61, 0x6C, 0x5F, 0x6D, 0x61, 0x63, -0x68, 0x77, 0x5F, 0x74, 0x69, 0x6D, 0x65, 0x5F, 0x70, 0x61, 0x73, 0x74, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x2D, 0x3E, -0x74, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x67, 0x5F, 0x77, 0x69, 0x66, 0x69, 0x5F, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, -0x67, 0x73, 0x2E, 0x70, 0x77, 0x72, 0x5F, 0x6F, 0x70, 0x65, 0x6E, 0x5F, 0x73, 0x79, 0x73, 0x64, 0x65, 0x6C, 0x61, 0x79, -0x29, 0x00, 0x00, 0x00, 0x73, 0x6C, 0x70, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x62, 0x74, 0x0A, 0x00, -0x6C, 0x70, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x69, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x3D, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, -0x77, 0x2C, 0x20, 0x00, 0x72, 0x77, 0x6E, 0x78, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x70, 0x72, 0x65, 0x76, 0x5F, 0x68, 0x77, -0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3D, 0x3D, 0x20, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x63, 0x75, 0x72, 0x72, -0x65, 0x6E, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x00, 0x00, 0x00, 0x00, -0x77, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x77, 0x6E, 0x78, 0x6C, 0x5F, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5F, -0x65, 0x76, 0x74, 0x00, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5B, 0x30, 0x5D, 0x20, -0x26, 0x26, 0x20, 0x74, 0x78, 0x5F, 0x68, 0x77, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5B, -0x30, 0x5D, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, -0x74, 0x78, 0x6C, 0x20, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x6C, 0x65, 0x6E, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x74, 0x78, 0x6C, 0x5F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x74, 0x78, 0x64, 0x65, 0x73, -0x63, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x74, 0x68, 0x64, 0x2D, 0x3E, 0x66, 0x69, 0x72, -0x73, 0x74, 0x5F, 0x70, 0x62, 0x64, 0x5F, 0x70, 0x74, 0x72, 0x00, 0x00, 0x6E, 0x65, 0x78, 0x74, 0x64, 0x65, 0x73, 0x63, -0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, -0x2D, 0x3E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x41, 0x47, 0x47, 0x5F, 0x42, 0x41, 0x5F, 0x52, 0x45, -0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x00, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x62, 0x63, 0x6E, -0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x00, -0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x61, 0x63, 0x5F, 0x33, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, -0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, -0x5F, 0x61, 0x63, 0x5F, 0x32, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, -0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x61, 0x63, 0x5F, 0x31, 0x5F, 0x73, 0x74, -0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, -0x63, 0x5F, 0x74, 0x78, 0x5F, 0x61, 0x63, 0x5F, 0x30, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, -0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x68, 0x69, 0x5F, -0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x00, 0x00, -0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5F, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6F, 0x72, 0x79, 0x20, 0x3C, 0x20, 0x28, 0x4E, -0x58, 0x5F, 0x54, 0x58, 0x51, 0x5F, 0x43, 0x4E, 0x54, 0x2B, 0x32, 0x29, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, -0x21, 0x21, 0x20, 0x74, 0x78, 0x6C, 0x20, 0x63, 0x66, 0x6D, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, -0x20, 0x66, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x62, 0x0D, 0x0A, 0x00, 0x00, 0x63, 0x66, 0x6D, 0x20, 0x66, 0x6C, 0x75, 0x73, -0x68, 0x3A, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x73, 0x6E, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x63, 0x66, 0x6D, 0x73, 0x3A, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x73, 0x6E, 0x3D, 0x25, 0x64, 0x2C, -0x20, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, -0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x79, 0x5F, 0x69, 0x64, 0x78, 0x5F, -0x68, 0x77, 0x20, 0x3E, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x53, 0x45, 0x43, 0x5F, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4C, 0x54, -0x5F, 0x4B, 0x45, 0x59, 0x5F, 0x43, 0x4F, 0x55, 0x4E, 0x54, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x65, 0x76, 0x74, 0x5F, 0x67, -0x65, 0x74, 0x28, 0x29, 0x20, 0x26, 0x20, 0x65, 0x76, 0x74, 0x5F, 0x62, 0x69, 0x74, 0x00, 0x00, 0x74, 0x78, 0x64, 0x65, -0x73, 0x63, 0x5F, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, -0x62, 0x75, 0x67, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x73, 0x64, 0x69, 0x6F, 0x20, 0x74, 0x61, 0x69, 0x6C, 0x20, 0x65, 0x72, -0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x28, 0x74, 0x68, 0x64, 0x2D, 0x3E, 0x64, 0x61, -0x74, 0x61, 0x73, 0x74, 0x61, 0x72, 0x74, 0x70, 0x74, 0x72, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x31, 0x29, 0x20, 0x3D, -0x3D, 0x20, 0x30, 0x00, 0x62, 0x61, 0x6E, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x50, 0x48, 0x59, 0x5F, 0x42, 0x41, 0x4E, 0x44, -0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, -0x6F, 0x72, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x62, 0x65, 0x20, 0x62, 0x75, 0x66, -0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, -0x4C, 0x4C, 0x00, 0x00, 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6E, 0x65, 0x77, 0x20, 0x21, 0x3D, 0x20, -0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x70, 0x69, 0x63, 0x6B, -0x28, 0x26, 0x74, 0x78, 0x6C, 0x69, 0x73, 0x74, 0x2D, 0x3E, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x73, -0x29, 0x20, 0x3D, 0x3D, 0x20, 0x26, 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6F, 0x6C, 0x64, 0x2D, 0x3E, -0x6C, 0x69, 0x73, 0x74, 0x5F, 0x68, 0x64, 0x72, 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6E, -0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, -0x6F, 0x64, 0x20, 0x3E, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x4E, 0x4F, 0x4E, 0x5F, 0x48, -0x54, 0x5F, 0x44, 0x55, 0x50, 0x5F, 0x4F, 0x46, 0x44, 0x4D, 0x00, 0x00, 0x28, 0x2A, 0x6E, 0x73, 0x73, 0x20, 0x3E, 0x20, -0x30, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x2A, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x34, 0x29, 0x00, 0x00, 0x00, -0x6D, 0x63, 0x73, 0x5F, 0x69, 0x64, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x39, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x63, 0x73, 0x5F, -0x69, 0x64, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x33, 0x31, 0x00, 0x00, 0x00, 0x69, 0x73, 0x5F, 0x6D, 0x70, 0x64, 0x75, 0x5F, -0x66, 0x69, 0x72, 0x73, 0x74, 0x28, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x29, 0x00, 0x00, 0x00, 0x21, 0x69, 0x73, 0x5F, -0x6D, 0x70, 0x64, 0x75, 0x5F, 0x6C, 0x61, 0x73, 0x74, 0x28, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x29, 0x00, 0x00, 0x00, -0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x70, 0x72, 0x65, 0x76, 0x20, 0x3D, 0x3D, 0x20, 0x61, 0x67, 0x67, 0x5F, 0x64, -0x65, 0x73, 0x63, 0x5F, 0x6F, 0x6C, 0x64, 0x2D, 0x3E, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6C, 0x61, 0x73, 0x74, -0x00, 0x00, 0x00, 0x00, 0x61, 0x5F, 0x74, 0x68, 0x64, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x52, -0x45, 0x54, 0x52, 0x59, 0x5F, 0x4C, 0x49, 0x4D, 0x49, 0x54, 0x5F, 0x52, 0x45, 0x41, 0x43, 0x48, 0x45, 0x44, 0x5F, 0x42, -0x49, 0x54, 0x00, 0x00, 0x1A, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x3C, 0x00, 0x75, 0x00, 0x82, 0x00, 0xEA, 0x00, 0x04, 0x01, -0x34, 0x00, 0x39, 0x00, 0x6C, 0x00, 0x78, 0x00, 0xEA, 0x00, 0x04, 0x01, 0xD4, 0x01, 0x08, 0x02, 0x4E, 0x00, 0x56, 0x00, -0xA2, 0x00, 0xB4, 0x00, 0x5F, 0x01, 0x86, 0x01, 0xBE, 0x02, 0x0C, 0x03, 0x68, 0x00, 0x73, 0x00, 0xD8, 0x00, 0xF0, 0x00, -0xD4, 0x01, 0x08, 0x02, 0xA8, 0x03, 0x10, 0x04, 0x9C, 0x00, 0xAD, 0x00, 0x44, 0x01, 0x68, 0x01, 0xBE, 0x02, 0x0C, 0x03, -0x7C, 0x05, 0x18, 0x06, 0xD0, 0x00, 0xE7, 0x00, 0xB0, 0x01, 0xE0, 0x01, 0xA8, 0x03, 0x10, 0x04, 0x50, 0x07, 0x20, 0x08, -0xEA, 0x00, 0x04, 0x01, 0xE6, 0x01, 0x1C, 0x02, 0x1D, 0x04, 0x92, 0x04, 0x3A, 0x08, 0x24, 0x09, 0x04, 0x01, 0x20, 0x01, -0x1C, 0x02, 0x58, 0x02, 0x92, 0x04, 0x14, 0x05, 0x24, 0x09, 0x28, 0x0A, 0x38, 0x01, 0x5A, 0x01, 0x88, 0x02, 0xD0, 0x02, -0x7C, 0x05, 0x18, 0x06, 0xF8, 0x0A, 0x30, 0x0C, 0x5A, 0x01, 0x81, 0x01, 0xD0, 0x02, 0x20, 0x03, 0x18, 0x06, 0xC5, 0x06, -0x30, 0x0C, 0x8A, 0x0D, 0x01, 0x01, 0x02, 0x02, 0x04, 0x05, 0x08, 0x09, 0x02, 0x02, 0x04, 0x04, 0x08, 0x09, 0x0F, 0x11, -0x03, 0x03, 0x06, 0x06, 0x0B, 0x0D, 0x16, 0x19, 0x04, 0x04, 0x07, 0x08, 0x0F, 0x11, 0x1E, 0x21, 0x05, 0x06, 0x0B, 0x0C, -0x16, 0x19, 0x2C, 0x31, 0x07, 0x08, 0x0E, 0x0F, 0x1E, 0x21, 0x3B, 0x41, 0x08, 0x09, 0x10, 0x11, 0x21, 0x25, 0x42, 0x4A, -0x09, 0x0A, 0x11, 0x13, 0x25, 0x29, 0x4A, 0x52, 0x0A, 0x0B, 0x15, 0x17, 0x2C, 0x31, 0x58, 0x62, 0x0B, 0x0D, 0x17, 0x19, -0x31, 0x37, 0x62, 0x6D, 0x74, 0x78, 0x6C, 0x5F, 0x68, 0x65, 0x5F, 0x65, 0x64, 0x63, 0x61, 0x5F, 0x71, 0x75, 0x65, 0x75, -0x65, 0x5F, 0x68, 0x61, 0x6C, 0x74, 0x65, 0x64, 0x28, 0x61, 0x63, 0x29, 0x00, 0x00, 0x00, 0x00, 0x68, 0x64, 0x72, 0x64, -0x65, 0x73, 0x63, 0x2D, 0x3E, 0x66, 0x72, 0x6D, 0x6C, 0x65, 0x6E, 0x20, 0x3E, 0x3D, 0x20, 0x48, 0x45, 0x5F, 0x54, 0x52, -0x49, 0x47, 0x5F, 0x46, 0x52, 0x4D, 0x5F, 0x4D, 0x49, 0x4E, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, -0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, -0x48, 0x45, 0x5F, 0x53, 0x55, 0x00, 0x00, 0x00, 0x6D, 0x63, 0x73, 0x5F, 0x69, 0x64, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x31, -0x31, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, -0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, -0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, -0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, -0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, -0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, -0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, -0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, -0x22, 0x00, 0x20, 0x00, 0x1D, 0x00, 0x90, 0x00, 0x88, 0x00, 0x7A, 0x00, 0x44, 0x00, 0x41, 0x00, 0x3A, 0x00, 0x20, 0x01, -0x10, 0x01, 0xF5, 0x00, 0x67, 0x00, 0x61, 0x00, 0x57, 0x00, 0xB0, 0x01, 0x98, 0x01, 0x6F, 0x01, 0x89, 0x00, 0x82, 0x00, -0x75, 0x00, 0x40, 0x02, 0x20, 0x02, 0xEA, 0x01, 0xCE, 0x00, 0xC3, 0x00, 0xAF, 0x00, 0x60, 0x03, 0x30, 0x03, 0xDF, 0x02, -0x13, 0x01, 0x04, 0x01, 0xEA, 0x00, 0x80, 0x04, 0x40, 0x04, 0xD4, 0x03, 0x35, 0x01, 0x24, 0x01, 0x07, 0x01, 0x11, 0x05, -0xC9, 0x04, 0x4E, 0x04, 0x58, 0x01, 0x45, 0x01, 0x24, 0x01, 0xA1, 0x05, 0x51, 0x05, 0xC9, 0x04, 0x9C, 0x01, 0x86, 0x01, -0x5F, 0x01, 0xC1, 0x06, 0x61, 0x06, 0xBE, 0x05, 0xCA, 0x01, 0xB1, 0x01, 0x86, 0x01, 0x81, 0x07, 0x16, 0x07, 0x61, 0x06, -0x04, 0x02, 0xE7, 0x01, 0xB6, 0x01, 0x71, 0x08, 0xF9, 0x07, 0x2D, 0x07, 0x3D, 0x02, 0x1D, 0x02, 0xE7, 0x01, 0x61, 0x09, -0xDC, 0x08, 0xF9, 0x07, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, -0x02, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x0D, 0x00, 0x0C, 0x00, -0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x13, 0x00, 0x12, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x1C, 0x00, -0x1A, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x25, 0x00, 0x23, 0x00, 0x1F, 0x00, 0x0A, 0x00, 0x0A, 0x00, -0x09, 0x00, 0x29, 0x00, 0x27, 0x00, 0x23, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0A, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x27, 0x00, -0x0D, 0x00, 0x0D, 0x00, 0x0B, 0x00, 0x37, 0x00, 0x34, 0x00, 0x2E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0D, 0x00, 0x3D, 0x00, -0x39, 0x00, 0x34, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x44, 0x00, 0x40, 0x00, 0x3A, 0x00, 0x12, 0x00, 0x11, 0x00, -0x10, 0x00, 0x4C, 0x00, 0x47, 0x00, 0x40, 0x00, 0x08, 0x10, 0x20, 0x04, 0x50, 0x94, 0x15, 0x00, 0x98, 0x94, 0x15, 0x00, -0x08, 0x94, 0x15, 0x00, 0x72, 0x68, 0x64, 0x2D, 0x3E, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5F, 0x70, 0x62, 0x64, 0x5F, 0x70, -0x74, 0x72, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x6E, 0x6F, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, -0x65, 0x72, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x72, 0x78, 0x62, 0x75, 0x66, 0x31, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, -0x25, 0x30, 0x38, 0x78, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x65, 0x6E, -0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x77, -0x72, 0x70, 0x74, 0x72, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x72, 0x64, 0x70, 0x74, 0x72, 0x20, 0x25, 0x30, 0x38, -0x78, 0x0D, 0x0A, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6F, -0x76, 0x65, 0x72, 0x79, 0x0D, 0x0A, 0x00, 0x00, 0x70, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, -0x70, 0x64, 0x2D, 0x3E, 0x70, 0x62, 0x64, 0x2E, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x61, 0x72, 0x74, 0x70, 0x74, 0x72, -0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x64, 0x6D, 0x61, 0x5F, 0x68, 0x64, 0x72, 0x64, 0x65, 0x73, 0x63, 0x2D, -0x3E, 0x68, 0x64, 0x2E, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5F, 0x70, 0x62, 0x64, 0x5F, 0x70, 0x74, 0x72, 0x20, 0x3D, 0x3D, -0x20, 0x30, 0x00, 0x00, 0x70, 0x62, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x72, 0x78, 0x6C, 0x20, -0x65, 0x72, 0x72, 0x2C, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x6E, 0x6F, 0x20, 0x74, -0x78, 0x5F, 0x64, 0x73, 0x63, 0x72, 0x5F, 0x68, 0x64, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x6F, 0x20, 0x74, -0x78, 0x5F, 0x64, 0x73, 0x63, 0x72, 0x5F, 0x68, 0x64, 0x72, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x6D, 0x70, 0x64, 0x75, -0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x6D, 0x70, 0x64, 0x75, 0x5F, 0x6C, 0x65, 0x6E, -0x20, 0x3C, 0x3D, 0x20, 0x52, 0x57, 0x4E, 0x58, 0x5F, 0x4D, 0x41, 0x58, 0x5F, 0x41, 0x4D, 0x53, 0x44, 0x55, 0x5F, 0x52, -0x58, 0x00, 0x00, 0x00, 0x72, 0x68, 0x64, 0x2D, 0x3E, 0x75, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x72, 0x78, 0x20, -0x3D, 0x3D, 0x20, 0x52, 0x58, 0x5F, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5F, 0x44, 0x45, 0x53, 0x43, 0x5F, 0x50, 0x41, -0x54, 0x54, 0x45, 0x52, 0x4E, 0x00, 0x00, 0x00, 0x72, 0x78, 0x62, 0x75, 0x66, 0x32, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, -0x25, 0x30, 0x38, 0x78, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x65, 0x6E, -0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x77, -0x72, 0x70, 0x74, 0x72, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x72, 0x64, 0x70, 0x74, 0x72, 0x20, 0x25, 0x30, 0x38, -0x78, 0x0D, 0x0A, 0x00, 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x5F, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0A, 0x00, -0x73, 0x74, 0x61, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, -0x73, 0x74, 0x61, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, -0x6D, 0x61, 0x63, 0x20, 0x69, 0x73, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x70, 0x32, 0x70, 0x3D, 0x25, -0x64, 0x0D, 0x0A, 0x00, 0x73, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x63, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x20, 0x6D, -0x61, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x70, 0x32, 0x70, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, -0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x21, 0x3D, 0x20, 0x50, 0x32, -0x50, 0x5F, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x49, 0x44, 0x58, 0x00, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x25, -0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x76, 0x69, 0x66, 0x20, -0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, -0x76, 0x69, 0x66, 0x20, 0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x6D, 0x67, 0x6D, 0x74, 0x3A, -0x25, 0x64, 0x0A, 0x00, 0x25, 0x73, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x76, 0x69, 0x66, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, -0x76, 0x69, 0x66, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, -0x73, 0x6C, 0x65, 0x65, 0x70, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x6C, 0x6F, 0x73, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x69, 0x6D, 0x65, 0x5F, 0x6F, 0x6E, 0x5F, 0x61, 0x69, 0x72, 0x5F, 0x76, 0x61, -0x6C, 0x69, 0x64, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x64, 0x74, 0x69, 0x6D, -0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x2A, 0x28, 0x76, 0x6F, -0x6C, 0x61, 0x74, 0x69, 0x6C, 0x65, 0x20, 0x75, 0x69, 0x6E, 0x74, 0x38, 0x5F, 0x74, 0x20, 0x2A, 0x29, 0x26, 0x67, 0x5F, -0x61, 0x6F, 0x6E, 0x5F, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2E, 0x64, 0x74, 0x69, 0x6D, 0x5F, 0x63, 0x6E, 0x74, 0x5F, -0x61, 0x6F, 0x6E, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x3C, 0x20, 0x2A, 0x28, 0x76, 0x6F, 0x6C, 0x61, 0x74, 0x69, -0x6C, 0x65, 0x20, 0x75, 0x69, 0x6E, 0x74, 0x38, 0x5F, 0x74, 0x20, 0x2A, 0x29, 0x26, 0x67, 0x5F, 0x61, 0x6F, 0x6E, 0x5F, -0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2E, 0x64, 0x74, 0x69, 0x6D, 0x5F, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x5F, 0x61, -0x6F, 0x6E, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x62, 0x63, 0x6E, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, -0x6C, 0x6F, 0x73, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x4C, 0x2C, 0x00, 0x00, 0x9B, 0x84, 0x4B, 0x65, 0x79, 0x69, 0x64, 0x78, -0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x2C, 0x25, 0x30, 0x32, 0x58, 0x0A, 0x00, 0x00, 0x9B, 0x84, 0x49, 0x6E, -0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x6B, 0x65, 0x79, 0x69, 0x64, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x9B, 0x84, 0x49, 0x6E, -0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x53, 0x54, 0x41, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x5F, -0x73, 0x74, 0x61, 0x20, 0x3D, 0x3D, 0x20, 0x76, 0x69, 0x66, 0x00, 0x00, 0x54, 0x3D, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x42, 0x43, 0x4E, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x62, 0x63, 0x6E, 0x20, -0x64, 0x6F, 0x6E, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x66, 0x63, 0x73, 0x20, -0x6F, 0x6B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x66, 0x63, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6F, 0x6B, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x69, 0x64, 0x6C, 0x65, -0x20, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x65, 0x76, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4D, -0x4D, 0x5F, 0x54, 0x42, 0x54, 0x54, 0x5F, 0x45, 0x56, 0x54, 0x5F, 0x4D, 0x41, 0x53, 0x4B, 0x00, 0x61, 0x64, 0x64, 0x20, -0x67, 0x74, 0x6B, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x73, 0x74, 0x61, 0x5F, 0x69, 0x64, 0x78, 0x20, -0x3C, 0x20, 0x53, 0x54, 0x41, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x00, 0x61, 0x64, 0x64, 0x20, 0x70, 0x74, 0x6B, 0x3A, -0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, -0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x48, 0x4F, 0x53, 0x54, -0x5F, 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, -0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, -0x4E, 0x4F, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x00, 0x66, 0x6F, 0x72, 0x63, 0x65, 0x20, 0x69, 0x64, 0x6C, 0x65, 0x20, 0x72, -0x65, 0x71, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x63, 0x65, 0x20, 0x69, 0x64, 0x6C, 0x65, 0x20, 0x65, -0x78, 0x69, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, -0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x48, 0x4F, 0x53, -0x54, 0x5F, 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, -0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x21, 0x3D, -0x20, 0x4D, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x29, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x6B, -0x65, 0x79, 0x5F, 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4C, 0x54, -0x5F, 0x4D, 0x46, 0x50, 0x5F, 0x4B, 0x45, 0x59, 0x5F, 0x43, 0x4F, 0x55, 0x4E, 0x54, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, -0x6D, 0x2D, 0x3E, 0x6B, 0x65, 0x79, 0x2E, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x3C, 0x3D, 0x20, 0x4D, 0x41, 0x43, -0x5F, 0x53, 0x45, 0x43, 0x5F, 0x4B, 0x45, 0x59, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, -0x6D, 0x2D, 0x3E, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5F, 0x73, 0x75, 0x69, 0x74, 0x65, 0x20, 0x3C, 0x3D, 0x20, 0x4D, -0x41, 0x43, 0x5F, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x50, 0x5F, 0x43, 0x4D, 0x41, 0x43, 0x5F, 0x31, -0x32, 0x38, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x68, 0x77, 0x5F, 0x6B, 0x65, 0x79, 0x5F, 0x69, 0x64, -0x78, 0x20, 0x3C, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x53, 0x45, 0x43, 0x5F, 0x4D, 0x41, 0x58, 0x5F, 0x4D, 0x46, 0x50, 0x5F, -0x4B, 0x45, 0x59, 0x5F, 0x4E, 0x42, 0x52, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3D, 0x3D, -0x20, 0x56, 0x49, 0x46, 0x5F, 0x53, 0x54, 0x41, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, -0x5F, 0x67, 0x65, 0x74, 0x28, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, -0x49, 0x44, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x6D, 0x75, 0x20, 0x65, 0x64, 0x63, 0x61, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x44, 0x48, 0x43, 0x50, 0x65, 0x64, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x78, 0x2E, 0x0D, 0x0A, 0x00, -0x73, 0x65, 0x74, 0x20, 0x61, 0x67, 0x67, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x25, 0x64, 0x2C, 0x20, -0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x5F, 0x72, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x20, -0x6D, 0x61, 0x63, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x73, 0x65, 0x74, 0x20, 0x74, 0x78, 0x6F, 0x70, 0x20, 0x72, 0x65, 0x71, 0x3A, 0x20, 0x62, 0x6B, 0x3A, 0x25, 0x78, 0x2C, -0x20, 0x62, 0x65, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x76, 0x69, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x76, 0x6F, 0x3A, 0x25, 0x78, -0x2C, 0x20, 0x6C, 0x6F, 0x6E, 0x67, 0x6E, 0x61, 0x76, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x63, 0x66, 0x65, 0x3D, 0x25, 0x64, -0x0A, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x76, 0x65, 0x6E, 0x64, 0x6F, 0x72, 0x20, 0x74, 0x72, 0x78, 0x3A, 0x20, -0x30, 0x78, 0x25, 0x78, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x20, 0x30, 0x78, -0x25, 0x78, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x73, -0x74, 0x61, 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x69, 0x73, 0x20, 0x35, 0x67, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x73, 0x77, 0x5F, 0x65, 0x6E, 0x3D, -0x25, 0x64, 0x2C, 0x20, 0x76, 0x65, 0x6E, 0x64, 0x6F, 0x72, 0x5F, 0x69, 0x6E, 0x66, 0x6F, 0x3D, 0x30, 0x78, 0x25, 0x78, -0x0D, 0x0A, 0x00, 0x00, 0x72, 0x65, 0x61, 0x64, 0x20, 0x78, 0x74, 0x61, 0x6C, 0x5F, 0x63, 0x61, 0x70, 0x20, 0x65, 0x66, -0x75, 0x73, 0x65, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x75, 0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x70, -0x3A, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x70, 0x5F, 0x66, 0x69, 0x6E, -0x65, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x73, 0x65, 0x74, 0x20, 0x78, 0x74, 0x61, 0x6C, 0x5F, 0x63, 0x61, 0x70, -0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x78, 0x74, 0x61, 0x6C, 0x5F, 0x63, 0x61, 0x70, -0x5F, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x32, 0x2E, 0x34, 0x67, 0x3A, 0x62, 0x65, 0x66, -0x6F, 0x72, 0x65, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, 0x6D, 0x3D, -0x25, 0x34, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x32, 0x2E, 0x34, 0x67, 0x3A, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x20, -0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, 0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x35, 0x67, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, -0x3D, 0x25, 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, 0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, 0x0A, 0x00, 0x35, 0x67, 0x3A, 0x61, -0x66, 0x74, 0x65, 0x72, 0x20, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, -0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, 0x0A, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, -0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x48, 0x57, -0x5F, 0x49, 0x44, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, -0x28, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x4E, 0x4F, 0x5F, 0x49, -0x44, 0x4C, 0x45, 0x00, 0x76, 0x69, 0x66, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, -0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x68, 0x65, 0x20, 0x65, -0x6E, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x20, 0x73, 0x74, 0x61, 0x74, -0x65, 0x20, 0x69, 0x6E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, -0xA8, 0x1F, 0x17, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x74, 0x3A, 0x20, -0x63, 0x62, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x63, 0x75, 0x72, 0x72, -0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x68, 0x61, 0x6C, 0x5F, 0x6D, 0x61, 0x63, 0x68, 0x77, 0x5F, 0x74, -0x69, 0x6D, 0x65, 0x5F, 0x70, 0x61, 0x73, 0x74, 0x28, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x00, 0x74, 0x69, 0x6D, 0x65, -0x72, 0x2D, 0x3E, 0x63, 0x62, 0x00, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x62, -0x65, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x20, -0x70, 0x72, 0x6F, 0x62, 0x65, 0x20, 0x73, 0x75, 0x63, 0x63, 0x0A, 0x00, 0x6D, 0x6D, 0x5F, 0x62, 0x63, 0x6E, 0x5F, 0x65, -0x6E, 0x76, 0x2E, 0x74, 0x78, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, 0x00, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, -0x6C, 0x65, 0x20, 0x6E, 0x65, 0x76, 0x65, 0x72, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x61, 0x70, 0x6D, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x6E, 0x75, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, -0x62, 0x65, 0x20, 0x73, 0x74, 0x61, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x5F, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0A, 0x00, -0x21, 0x6D, 0x6D, 0x5F, 0x62, 0x63, 0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x74, 0x78, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, -0x61, 0x70, 0x6D, 0x5F, 0x70, 0x72, 0x6F, 0x62, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, 0x00, -0x28, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x74, 0x78, -0x74, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3D, -0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x56, 0x49, 0x46, 0x5F, 0x49, 0x44, 0x58, 0x29, 0x20, 0x7C, -0x7C, 0x20, 0x28, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, -0x74, 0x78, 0x74, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, -0x20, 0x3D, 0x3D, 0x20, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x69, 0x6E, 0x64, 0x65, 0x78, -0x29, 0x00, 0x00, 0x00, 0x6F, 0x74, 0x68, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x62, 0x5F, 0x76, -0x69, 0x66, 0x5F, 0x6F, 0x74, 0x68, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x3E, 0x20, 0x31, 0x00, 0x6E, 0x6F, 0x61, 0x5F, -0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x50, 0x32, 0x50, 0x5F, 0x4E, 0x4F, 0x41, 0x5F, 0x4E, 0x42, 0x5F, 0x4D, 0x41, 0x58, -0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3C, 0x20, 0x33, 0x32, 0x00, -0x76, 0x69, 0x66, 0x2D, 0x3E, 0x74, 0x62, 0x74, 0x74, 0x5F, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2E, 0x70, 0x32, 0x70, -0x5F, 0x6E, 0x6F, 0x61, 0x5F, 0x76, 0x69, 0x66, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3D, 0x3D, 0x20, 0x49, 0x4E, -0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x56, 0x49, 0x46, 0x5F, 0x49, 0x44, 0x58, 0x00, 0x00, 0x00, 0x63, 0x68, 0x5F, 0x73, -0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, -0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x52, -0x4F, 0x43, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x50, 0x45, 0x4E, 0x44, 0x49, 0x4E, 0x47, 0x5F, 0x4D, 0x41, 0x53, 0x4B, -0x00, 0x00, 0x00, 0x00, 0x28, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, -0x20, 0x26, 0x20, 0x43, 0x4F, 0x5F, 0x42, 0x49, 0x54, 0x28, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x45, 0x4E, 0x56, 0x5F, 0x52, -0x4F, 0x43, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x28, 0x63, 0x68, 0x61, -0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x43, 0x4F, 0x5F, 0x42, 0x49, -0x54, 0x28, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x45, 0x4E, 0x56, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x42, 0x49, 0x54, 0x29, -0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x28, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x2A, 0x29, 0x63, 0x68, 0x5F, 0x73, -0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x3D, 0x3D, 0x20, 0x65, 0x6E, 0x76, 0x00, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, -0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x00, 0x00, 0x00, -0x4E, 0x6F, 0x20, 0x63, 0x74, 0x78, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x64, 0x20, 0x70, 0x72, -0x65, 0x5F, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x69, 0x64, -0x78, 0x20, 0x3D, 0x3D, 0x20, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x43, 0x54, 0x58, 0x54, 0x5F, 0x55, 0x4E, 0x55, 0x53, 0x45, -0x44, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x63, 0x3A, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x64, 0x75, 0x72, 0x3D, 0x25, 0x64, 0x2C, -0x20, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x63, 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x6E, 0x62, -0x5F, 0x6C, 0x69, 0x6E, 0x6B, 0x65, 0x64, 0x5F, 0x76, 0x69, 0x66, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, -0x76, 0x69, 0x66, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x3D, 0x3D, 0x20, 0x4E, 0x55, -0x4C, 0x4C, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x6E, 0x62, 0x5F, 0x73, 0x63, 0x68, 0x65, -0x64, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x3C, 0x3D, 0x20, 0x32, 0x00, 0x63, 0x68, 0x5F, 0x73, 0x77, 0x69, 0x74, 0x63, -0x68, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, -0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x63, 0x74, 0x78, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, -0x00, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x75, 0x6E, 0x6C, 0x69, 0x6E, 0x6B, 0x3A, 0x20, 0x25, 0x64, 0x2C, -0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, -0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x6E, 0x62, 0x5F, 0x73, 0x63, 0x68, 0x65, 0x64, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x3C, -0x3D, 0x20, 0x31, 0x00, 0x25, 0x73, 0x3A, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x70, 0x73, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x6C, -0x6F, 0x73, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, -0x70, 0x73, 0x5F, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5F, 0x64, -0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, 0x70, 0x73, 0x5F, 0x75, 0x70, 0x6D, 0x5F, 0x65, -0x6E, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5F, 0x75, 0x70, 0x6D, 0x5F, 0x65, 0x78, 0x69, 0x74, 0x00, -0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, -0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x6F, 0x61, 0x5F, 0x69, 0x6E, 0x73, 0x74, 0x20, 0x3C, 0x20, 0x50, 0x32, 0x50, 0x5F, -0x4E, 0x4F, 0x41, 0x5F, 0x4E, 0x42, 0x5F, 0x4D, 0x41, 0x58, 0x29, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, -0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3C, 0x20, 0x4E, 0x58, 0x5F, 0x50, 0x32, 0x50, 0x5F, 0x56, 0x49, 0x46, 0x5F, -0x4D, 0x41, 0x58, 0x00, 0x74, 0x64, 0x73, 0x5F, 0x65, 0x6E, 0x76, 0x00, 0x25, 0x73, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, -0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x6E, 0x74, 0x20, 0x3E, 0x20, 0x30, 0x00, -0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x43, -0x41, 0x4E, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x57, 0x41, 0x49, 0x54, 0x5F, 0x43, 0x48, 0x41, -0x4E, 0x4E, 0x45, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, -0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x43, 0x41, 0x4E, 0x5F, -0x57, 0x41, 0x49, 0x54, 0x5F, 0x42, 0x45, 0x41, 0x43, 0x4F, 0x4E, 0x5F, 0x50, 0x52, 0x4F, 0x42, 0x45, 0x5F, 0x52, 0x53, -0x50, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5F, 0x72, 0x65, 0x71, 0x5F, 0x68, -0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x5F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x5F, -0x72, 0x65, 0x71, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x50, 0x21, 0x17, 0x00, 0x04, 0x00, 0x00, 0x00, -0x73, 0x63, 0x61, 0x6E, 0x5F, 0x73, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x5F, 0x63, 0x66, 0x6D, -0x00, 0x00, 0x00, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x5F, 0x73, 0x74, -0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x48, 0x57, 0x5F, 0x49, 0x44, 0x4C, -0x45, 0x00, 0x00, 0x00, 0x21, 0x68, 0x61, 0x6C, 0x5F, 0x61, 0x6F, 0x6E, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, 0x74, 0x69, -0x6D, 0x65, 0x5F, 0x70, 0x61, 0x73, 0x74, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x2D, 0x3E, 0x74, 0x69, 0x6D, 0x65, 0x20, -0x2B, 0x20, 0x35, 0x30, 0x30, 0x30, 0x29, 0x00, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, -0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x6B, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x67, -0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x6D, 0x6F, 0x72, 0x65, 0x0D, 0x0A, 0x00, 0x00, -0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x6D, -0x6D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x67, 0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, -0x20, 0x61, 0x6E, 0x79, 0x6D, 0x6F, 0x72, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, 0x30, 0x5F, 0x54, 0x49, -0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, 0x31, 0x5F, 0x54, 0x49, -0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, 0x32, 0x5F, 0x54, 0x49, -0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, 0x33, 0x5F, 0x54, 0x49, -0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x5F, 0x54, -0x49, 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x48, 0x45, 0x5F, 0x54, 0x42, 0x5F, -0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, -0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x48, 0x49, 0x51, 0x5F, 0x54, 0x49, -0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x52, 0x58, 0x5F, 0x46, 0x49, 0x46, 0x4F, 0x5F, -0x4F, 0x56, 0x45, 0x52, 0x5F, 0x46, 0x4C, 0x4F, 0x57, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x68, 0x77, -0x20, 0x72, 0x65, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6C, 0x66, 0x0D, 0x0A, 0x00, 0x00, -0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, -0x58, 0x4D, 0x41, 0x43, 0x5F, 0x50, 0x48, 0x59, 0x5F, 0x45, 0x52, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, -0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, -0x58, 0x4D, 0x41, 0x43, 0x5F, 0x4D, 0x41, 0x43, 0x5F, 0x50, 0x48, 0x59, 0x49, 0x46, 0x5F, 0x55, 0x4E, 0x44, 0x45, 0x52, -0x5F, 0x52, 0x55, 0x4E, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, -0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x4D, 0x41, 0x43, -0x5F, 0x50, 0x48, 0x59, 0x49, 0x46, 0x5F, 0x4F, 0x56, 0x45, 0x52, 0x46, 0x4C, 0x4F, 0x57, 0x5F, 0x42, 0x49, 0x54, 0x29, -0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, -0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x50, 0x54, 0x5F, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x5F, 0x42, 0x49, -0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, -0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, 0x30, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, -0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, -0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, -0x31, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, -0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, -0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, 0x32, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, -0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, -0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, 0x33, 0x5F, 0x54, 0x58, -0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, -0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, -0x5F, 0x42, 0x43, 0x4E, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, -0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, -0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x58, 0x5F, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5F, 0x44, -0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, -0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, -0x5F, 0x52, 0x58, 0x5F, 0x50, 0x41, 0x59, 0x4C, 0x4F, 0x41, 0x44, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, -0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, -0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x48, 0x57, 0x5F, 0x45, 0x52, 0x52, 0x5F, -0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, -0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x48, 0x49, 0x5F, 0x54, 0x58, 0x5F, 0x44, -0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, -0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x08, 0x06, 0x04, 0x0B, 0x09, 0x07, 0x05, 0xA5, 0xC6, 0x84, 0xF8, 0x99, 0xEE, 0x8D, 0xF6, -0x0D, 0xFF, 0xBD, 0xD6, 0xB1, 0xDE, 0x54, 0x91, 0x50, 0x60, 0x03, 0x02, 0xA9, 0xCE, 0x7D, 0x56, 0x19, 0xE7, 0x62, 0xB5, -0xE6, 0x4D, 0x9A, 0xEC, 0x45, 0x8F, 0x9D, 0x1F, 0x40, 0x89, 0x87, 0xFA, 0x15, 0xEF, 0xEB, 0xB2, 0xC9, 0x8E, 0x0B, 0xFB, -0xEC, 0x41, 0x67, 0xB3, 0xFD, 0x5F, 0xEA, 0x45, 0xBF, 0x23, 0xF7, 0x53, 0x96, 0xE4, 0x5B, 0x9B, 0xC2, 0x75, 0x1C, 0xE1, -0xAE, 0x3D, 0x6A, 0x4C, 0x5A, 0x6C, 0x41, 0x7E, 0x02, 0xF5, 0x4F, 0x83, 0x5C, 0x68, 0xF4, 0x51, 0x34, 0xD1, 0x08, 0xF9, -0x93, 0xE2, 0x73, 0xAB, 0x53, 0x62, 0x3F, 0x2A, 0x0C, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5E, 0x9D, 0x28, 0x30, 0xA1, 0x37, -0x0F, 0x0A, 0xB5, 0x2F, 0x09, 0x0E, 0x36, 0x24, 0x9B, 0x1B, 0x3D, 0xDF, 0x26, 0xCD, 0x69, 0x4E, 0xCD, 0x7F, 0x9F, 0xEA, -0x1B, 0x12, 0x9E, 0x1D, 0x74, 0x58, 0x2E, 0x34, 0x2D, 0x36, 0xB2, 0xDC, 0xEE, 0xB4, 0xFB, 0x5B, 0xF6, 0xA4, 0x4D, 0x76, -0x61, 0xB7, 0xCE, 0x7D, 0x7B, 0x52, 0x3E, 0xDD, 0x71, 0x5E, 0x97, 0x13, 0xF5, 0xA6, 0x68, 0xB9, 0x00, 0x00, 0x2C, 0xC1, -0x60, 0x40, 0x1F, 0xE3, 0xC8, 0x79, 0xED, 0xB6, 0xBE, 0xD4, 0x46, 0x8D, 0xD9, 0x67, 0x4B, 0x72, 0xDE, 0x94, 0xD4, 0x98, -0xE8, 0xB0, 0x4A, 0x85, 0x6B, 0xBB, 0x2A, 0xC5, 0xE5, 0x4F, 0x16, 0xED, 0xC5, 0x86, 0xD7, 0x9A, 0x55, 0x66, 0x94, 0x11, -0xCF, 0x8A, 0x10, 0xE9, 0x06, 0x04, 0x81, 0xFE, 0xF0, 0xA0, 0x44, 0x78, 0xBA, 0x25, 0xE3, 0x4B, 0xF3, 0xA2, 0xFE, 0x5D, -0xC0, 0x80, 0x8A, 0x05, 0xAD, 0x3F, 0xBC, 0x21, 0x48, 0x70, 0x04, 0xF1, 0xDF, 0x63, 0xC1, 0x77, 0x75, 0xAF, 0x63, 0x42, -0x30, 0x20, 0x1A, 0xE5, 0x0E, 0xFD, 0x6D, 0xBF, 0x4C, 0x81, 0x14, 0x18, 0x35, 0x26, 0x2F, 0xC3, 0xE1, 0xBE, 0xA2, 0x35, -0xCC, 0x88, 0x39, 0x2E, 0x57, 0x93, 0xF2, 0x55, 0x82, 0xFC, 0x47, 0x7A, 0xAC, 0xC8, 0xE7, 0xBA, 0x2B, 0x32, 0x95, 0xE6, -0xA0, 0xC0, 0x98, 0x19, 0xD1, 0x9E, 0x7F, 0xA3, 0x66, 0x44, 0x7E, 0x54, 0xAB, 0x3B, 0x83, 0x0B, 0xCA, 0x8C, 0x29, 0xC7, -0xD3, 0x6B, 0x3C, 0x28, 0x79, 0xA7, 0xE2, 0xBC, 0x1D, 0x16, 0x76, 0xAD, 0x3B, 0xDB, 0x56, 0x64, 0x4E, 0x74, 0x1E, 0x14, -0xDB, 0x92, 0x0A, 0x0C, 0x6C, 0x48, 0xE4, 0xB8, 0x5D, 0x9F, 0x6E, 0xBD, 0xEF, 0x43, 0xA6, 0xC4, 0xA8, 0x39, 0xA4, 0x31, -0x37, 0xD3, 0x8B, 0xF2, 0x32, 0xD5, 0x43, 0x8B, 0x59, 0x6E, 0xB7, 0xDA, 0x8C, 0x01, 0x64, 0xB1, 0xD2, 0x9C, 0xE0, 0x49, -0xB4, 0xD8, 0xFA, 0xAC, 0x07, 0xF3, 0x25, 0xCF, 0xAF, 0xCA, 0x8E, 0xF4, 0xE9, 0x47, 0x18, 0x10, 0xD5, 0x6F, 0x88, 0xF0, -0x6F, 0x4A, 0x72, 0x5C, 0x24, 0x38, 0xF1, 0x57, 0xC7, 0x73, 0x51, 0x97, 0x23, 0xCB, 0x7C, 0xA1, 0x9C, 0xE8, 0x21, 0x3E, -0xDD, 0x96, 0xDC, 0x61, 0x86, 0x0D, 0x85, 0x0F, 0x90, 0xE0, 0x42, 0x7C, 0xC4, 0x71, 0xAA, 0xCC, 0xD8, 0x90, 0x05, 0x06, -0x01, 0xF7, 0x12, 0x1C, 0xA3, 0xC2, 0x5F, 0x6A, 0xF9, 0xAE, 0xD0, 0x69, 0x91, 0x17, 0x58, 0x99, 0x27, 0x3A, 0xB9, 0x27, -0x38, 0xD9, 0x13, 0xEB, 0xB3, 0x2B, 0x33, 0x22, 0xBB, 0xD2, 0x70, 0xA9, 0x89, 0x07, 0xA7, 0x33, 0xB6, 0x2D, 0x22, 0x3C, -0x92, 0x15, 0x20, 0xC9, 0x49, 0x87, 0xFF, 0xAA, 0x78, 0x50, 0x7A, 0xA5, 0x8F, 0x03, 0xF8, 0x59, 0x80, 0x09, 0x17, 0x1A, -0xDA, 0x65, 0x31, 0xD7, 0xC6, 0x84, 0xB8, 0xD0, 0xC3, 0x82, 0xB0, 0x29, 0x77, 0x5A, 0x11, 0x1E, 0xCB, 0x7B, 0xFC, 0xA8, -0xD6, 0x6D, 0x3A, 0x2C, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x20, 0x3E, 0x20, 0x30, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6C, 0x61, -0x79, 0x20, 0x3C, 0x20, 0x4B, 0x45, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, 0x44, 0x45, 0x4C, 0x41, 0x59, 0x5F, 0x4D, -0x41, 0x58, 0x00, 0x00, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x00, 0x00, 0x00, 0x21, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x7C, -0x7C, 0x20, 0x21, 0x6B, 0x65, 0x5F, 0x74, 0x69, 0x6D, 0x65, 0x5F, 0x70, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x72, 0x73, -0x74, 0x2D, 0x3E, 0x74, 0x69, 0x6D, 0x65, 0x29, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x67, 0x20, 0x21, 0x3D, 0x20, 0x4E, -0x55, 0x4C, 0x4C, 0x00, 0x9D, 0x80, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x73, -0x67, 0x3A, 0x25, 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x20, 0x74, 0x6F, 0x20, -0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x3E, 0x3D, -0x20, 0x73, 0x69, 0x7A, 0x65, 0x6F, 0x66, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6D, 0x62, 0x6C, 0x6F, 0x63, -0x6B, 0x5F, 0x66, 0x72, 0x65, 0x65, 0x29, 0x00, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, -0x4C, 0x00, 0x00, 0x00, 0x28, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x5F, 0x74, 0x29, 0x6D, 0x65, 0x6D, 0x5F, 0x70, 0x74, -0x72, 0x20, 0x3E, 0x20, 0x28, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x5F, 0x74, 0x29, 0x6E, 0x6F, 0x64, 0x65, 0x00, 0x00, -0x70, 0x72, 0x65, 0x76, 0x5F, 0x6E, 0x6F, 0x64, 0x65, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, -0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x2D, 0x3E, 0x6D, 0x73, 0x67, 0x5F, 0x74, -0x61, 0x62, 0x6C, 0x65, 0x5B, 0x69, 0x5D, 0x2E, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, -0x20, 0x3C, 0x20, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x6B, 0x65, 0x5F, 0x74, 0x61, 0x73, 0x6B, 0x5F, -0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x28, 0x74, 0x79, 0x70, 0x65, 0x29, 0x00, 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x54, 0x41, -0x53, 0x4B, 0x5F, 0x44, 0x45, 0x53, 0x43, 0x5B, 0x74, 0x79, 0x70, 0x65, 0x5D, 0x2E, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, -0x78, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x69, 0x64, 0x5F, 0x70, 0x74, 0x72, 0x00, 0x00, -0x80, 0x9D, 0x73, 0x65, 0x74, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x9A, 0x80, 0x4E, 0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x66, -0x6F, 0x72, 0x20, 0x6D, 0x73, 0x67, 0x3A, 0x25, 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, -0x78, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x24, 0x9F, 0x15, 0x00, -0x1C, 0x9F, 0x15, 0x00, 0xCC, 0x9C, 0x17, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xB5, 0x15, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xA4, 0x15, 0x00, 0xF0, 0x9F, 0x17, 0x00, -0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x20, 0xBF, 0x15, 0x00, 0x18, 0xBF, 0x15, 0x00, 0xA4, 0xBA, 0x17, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x8C, 0xB8, 0x15, 0x00, 0xE0, 0xB8, 0x17, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBB, 0x15, 0x00, -0x60, 0xBA, 0x17, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xBE, 0x15, 0x00, 0x90, 0xBA, 0x17, 0x00, -0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC2, 0x15, 0x00, 0xF4, 0xDF, 0x17, 0x00, 0x05, 0x00, 0x20, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xD0, 0x15, 0x00, -0x74, 0xEF, 0x17, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x28, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x3C, 0x20, 0x4B, 0x45, 0x5F, 0x45, 0x56, 0x54, 0x5F, -0x4D, 0x41, 0x58, 0x29, 0x20, 0x26, 0x26, 0x20, 0x6B, 0x65, 0x5F, 0x65, 0x76, 0x74, 0x5F, 0x68, 0x64, 0x6C, 0x72, 0x5B, -0x65, 0x76, 0x65, 0x6E, 0x74, 0x5D, 0x2E, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x68, 0x64, 0x72, -0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x21, 0x3D, 0x20, -0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x28, 0x70, 0x72, 0x65, 0x76, 0x5F, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, -0x74, 0x20, 0x3D, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x70, 0x72, 0x65, 0x76, 0x5F, -0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2D, 0x3E, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x3D, 0x3D, 0x20, 0x65, 0x6C, 0x65, -0x6D, 0x65, 0x6E, 0x74, 0x29, 0x00, 0x00, 0x00, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4E, -0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x30, 0x07, 0x77, 0x2C, 0x61, 0x0E, 0xEE, 0xBA, 0x51, 0x09, 0x99, -0x19, 0xC4, 0x6D, 0x07, 0x8F, 0xF4, 0x6A, 0x70, 0x35, 0xA5, 0x63, 0xE9, 0xA3, 0x95, 0x64, 0x9E, 0x32, 0x88, 0xDB, 0x0E, -0xA4, 0xB8, 0xDC, 0x79, 0x1E, 0xE9, 0xD5, 0xE0, 0x88, 0xD9, 0xD2, 0x97, 0x2B, 0x4C, 0xB6, 0x09, 0xBD, 0x7C, 0xB1, 0x7E, -0x07, 0x2D, 0xB8, 0xE7, 0x91, 0x1D, 0xBF, 0x90, 0x64, 0x10, 0xB7, 0x1D, 0xF2, 0x20, 0xB0, 0x6A, 0x48, 0x71, 0xB9, 0xF3, -0xDE, 0x41, 0xBE, 0x84, 0x7D, 0xD4, 0xDA, 0x1A, 0xEB, 0xE4, 0xDD, 0x6D, 0x51, 0xB5, 0xD4, 0xF4, 0xC7, 0x85, 0xD3, 0x83, -0x56, 0x98, 0x6C, 0x13, 0xC0, 0xA8, 0x6B, 0x64, 0x7A, 0xF9, 0x62, 0xFD, 0xEC, 0xC9, 0x65, 0x8A, 0x4F, 0x5C, 0x01, 0x14, -0xD9, 0x6C, 0x06, 0x63, 0x63, 0x3D, 0x0F, 0xFA, 0xF5, 0x0D, 0x08, 0x8D, 0xC8, 0x20, 0x6E, 0x3B, 0x5E, 0x10, 0x69, 0x4C, -0xE4, 0x41, 0x60, 0xD5, 0x72, 0x71, 0x67, 0xA2, 0xD1, 0xE4, 0x03, 0x3C, 0x47, 0xD4, 0x04, 0x4B, 0xFD, 0x85, 0x0D, 0xD2, -0x6B, 0xB5, 0x0A, 0xA5, 0xFA, 0xA8, 0xB5, 0x35, 0x6C, 0x98, 0xB2, 0x42, 0xD6, 0xC9, 0xBB, 0xDB, 0x40, 0xF9, 0xBC, 0xAC, -0xE3, 0x6C, 0xD8, 0x32, 0x75, 0x5C, 0xDF, 0x45, 0xCF, 0x0D, 0xD6, 0xDC, 0x59, 0x3D, 0xD1, 0xAB, 0xAC, 0x30, 0xD9, 0x26, -0x3A, 0x00, 0xDE, 0x51, 0x80, 0x51, 0xD7, 0xC8, 0x16, 0x61, 0xD0, 0xBF, 0xB5, 0xF4, 0xB4, 0x21, 0x23, 0xC4, 0xB3, 0x56, -0x99, 0x95, 0xBA, 0xCF, 0x0F, 0xA5, 0xBD, 0xB8, 0x9E, 0xB8, 0x02, 0x28, 0x08, 0x88, 0x05, 0x5F, 0xB2, 0xD9, 0x0C, 0xC6, -0x24, 0xE9, 0x0B, 0xB1, 0x87, 0x7C, 0x6F, 0x2F, 0x11, 0x4C, 0x68, 0x58, 0xAB, 0x1D, 0x61, 0xC1, 0x3D, 0x2D, 0x66, 0xB6, -0x90, 0x41, 0xDC, 0x76, 0x06, 0x71, 0xDB, 0x01, 0xBC, 0x20, 0xD2, 0x98, 0x2A, 0x10, 0xD5, 0xEF, 0x89, 0x85, 0xB1, 0x71, -0x1F, 0xB5, 0xB6, 0x06, 0xA5, 0xE4, 0xBF, 0x9F, 0x33, 0xD4, 0xB8, 0xE8, 0xA2, 0xC9, 0x07, 0x78, 0x34, 0xF9, 0x00, 0x0F, -0x8E, 0xA8, 0x09, 0x96, 0x18, 0x98, 0x0E, 0xE1, 0xBB, 0x0D, 0x6A, 0x7F, 0x2D, 0x3D, 0x6D, 0x08, 0x97, 0x6C, 0x64, 0x91, -0x01, 0x5C, 0x63, 0xE6, 0xF4, 0x51, 0x6B, 0x6B, 0x62, 0x61, 0x6C, 0x1C, 0xD8, 0x30, 0x65, 0x85, 0x4E, 0x00, 0x62, 0xF2, -0xED, 0x95, 0x06, 0x6C, 0x7B, 0xA5, 0x01, 0x1B, 0xC1, 0xF4, 0x08, 0x82, 0x57, 0xC4, 0x0F, 0xF5, 0xC6, 0xD9, 0xB0, 0x65, -0x50, 0xE9, 0xB7, 0x12, 0xEA, 0xB8, 0xBE, 0x8B, 0x7C, 0x88, 0xB9, 0xFC, 0xDF, 0x1D, 0xDD, 0x62, 0x49, 0x2D, 0xDA, 0x15, -0xF3, 0x7C, 0xD3, 0x8C, 0x65, 0x4C, 0xD4, 0xFB, 0x58, 0x61, 0xB2, 0x4D, 0xCE, 0x51, 0xB5, 0x3A, 0x74, 0x00, 0xBC, 0xA3, -0xE2, 0x30, 0xBB, 0xD4, 0x41, 0xA5, 0xDF, 0x4A, 0xD7, 0x95, 0xD8, 0x3D, 0x6D, 0xC4, 0xD1, 0xA4, 0xFB, 0xF4, 0xD6, 0xD3, -0x6A, 0xE9, 0x69, 0x43, 0xFC, 0xD9, 0x6E, 0x34, 0x46, 0x88, 0x67, 0xAD, 0xD0, 0xB8, 0x60, 0xDA, 0x73, 0x2D, 0x04, 0x44, -0xE5, 0x1D, 0x03, 0x33, 0x5F, 0x4C, 0x0A, 0xAA, 0xC9, 0x7C, 0x0D, 0xDD, 0x3C, 0x71, 0x05, 0x50, 0xAA, 0x41, 0x02, 0x27, -0x10, 0x10, 0x0B, 0xBE, 0x86, 0x20, 0x0C, 0xC9, 0x25, 0xB5, 0x68, 0x57, 0xB3, 0x85, 0x6F, 0x20, 0x09, 0xD4, 0x66, 0xB9, -0x9F, 0xE4, 0x61, 0xCE, 0x0E, 0xF9, 0xDE, 0x5E, 0x98, 0xC9, 0xD9, 0x29, 0x22, 0x98, 0xD0, 0xB0, 0xB4, 0xA8, 0xD7, 0xC7, -0x17, 0x3D, 0xB3, 0x59, 0x81, 0x0D, 0xB4, 0x2E, 0x3B, 0x5C, 0xBD, 0xB7, 0xAD, 0x6C, 0xBA, 0xC0, 0x20, 0x83, 0xB8, 0xED, -0xB6, 0xB3, 0xBF, 0x9A, 0x0C, 0xE2, 0xB6, 0x03, 0x9A, 0xD2, 0xB1, 0x74, 0x39, 0x47, 0xD5, 0xEA, 0xAF, 0x77, 0xD2, 0x9D, -0x15, 0x26, 0xDB, 0x04, 0x83, 0x16, 0xDC, 0x73, 0x12, 0x0B, 0x63, 0xE3, 0x84, 0x3B, 0x64, 0x94, 0x3E, 0x6A, 0x6D, 0x0D, -0xA8, 0x5A, 0x6A, 0x7A, 0x0B, 0xCF, 0x0E, 0xE4, 0x9D, 0xFF, 0x09, 0x93, 0x27, 0xAE, 0x00, 0x0A, 0xB1, 0x9E, 0x07, 0x7D, -0x44, 0x93, 0x0F, 0xF0, 0xD2, 0xA3, 0x08, 0x87, 0x68, 0xF2, 0x01, 0x1E, 0xFE, 0xC2, 0x06, 0x69, 0x5D, 0x57, 0x62, 0xF7, -0xCB, 0x67, 0x65, 0x80, 0x71, 0x36, 0x6C, 0x19, 0xE7, 0x06, 0x6B, 0x6E, 0x76, 0x1B, 0xD4, 0xFE, 0xE0, 0x2B, 0xD3, 0x89, -0x5A, 0x7A, 0xDA, 0x10, 0xCC, 0x4A, 0xDD, 0x67, 0x6F, 0xDF, 0xB9, 0xF9, 0xF9, 0xEF, 0xBE, 0x8E, 0x43, 0xBE, 0xB7, 0x17, -0xD5, 0x8E, 0xB0, 0x60, 0xE8, 0xA3, 0xD6, 0xD6, 0x7E, 0x93, 0xD1, 0xA1, 0xC4, 0xC2, 0xD8, 0x38, 0x52, 0xF2, 0xDF, 0x4F, -0xF1, 0x67, 0xBB, 0xD1, 0x67, 0x57, 0xBC, 0xA6, 0xDD, 0x06, 0xB5, 0x3F, 0x4B, 0x36, 0xB2, 0x48, 0xDA, 0x2B, 0x0D, 0xD8, -0x4C, 0x1B, 0x0A, 0xAF, 0xF6, 0x4A, 0x03, 0x36, 0x60, 0x7A, 0x04, 0x41, 0xC3, 0xEF, 0x60, 0xDF, 0x55, 0xDF, 0x67, 0xA8, -0xEF, 0x8E, 0x6E, 0x31, 0x79, 0xBE, 0x69, 0x46, 0x8C, 0xB3, 0x61, 0xCB, 0x1A, 0x83, 0x66, 0xBC, 0xA0, 0xD2, 0x6F, 0x25, -0x36, 0xE2, 0x68, 0x52, 0x95, 0x77, 0x0C, 0xCC, 0x03, 0x47, 0x0B, 0xBB, 0xB9, 0x16, 0x02, 0x22, 0x2F, 0x26, 0x05, 0x55, -0xBE, 0x3B, 0xBA, 0xC5, 0x28, 0x0B, 0xBD, 0xB2, 0x92, 0x5A, 0xB4, 0x2B, 0x04, 0x6A, 0xB3, 0x5C, 0xA7, 0xFF, 0xD7, 0xC2, -0x31, 0xCF, 0xD0, 0xB5, 0x8B, 0x9E, 0xD9, 0x2C, 0x1D, 0xAE, 0xDE, 0x5B, 0xB0, 0xC2, 0x64, 0x9B, 0x26, 0xF2, 0x63, 0xEC, -0x9C, 0xA3, 0x6A, 0x75, 0x0A, 0x93, 0x6D, 0x02, 0xA9, 0x06, 0x09, 0x9C, 0x3F, 0x36, 0x0E, 0xEB, 0x85, 0x67, 0x07, 0x72, -0x13, 0x57, 0x00, 0x05, 0x82, 0x4A, 0xBF, 0x95, 0x14, 0x7A, 0xB8, 0xE2, 0xAE, 0x2B, 0xB1, 0x7B, 0x38, 0x1B, 0xB6, 0x0C, -0x9B, 0x8E, 0xD2, 0x92, 0x0D, 0xBE, 0xD5, 0xE5, 0xB7, 0xEF, 0xDC, 0x7C, 0x21, 0xDF, 0xDB, 0x0B, 0xD4, 0xD2, 0xD3, 0x86, -0x42, 0xE2, 0xD4, 0xF1, 0xF8, 0xB3, 0xDD, 0x68, 0x6E, 0x83, 0xDA, 0x1F, 0xCD, 0x16, 0xBE, 0x81, 0x5B, 0x26, 0xB9, 0xF6, -0xE1, 0x77, 0xB0, 0x6F, 0x77, 0x47, 0xB7, 0x18, 0xE6, 0x5A, 0x08, 0x88, 0x70, 0x6A, 0x0F, 0xFF, 0xCA, 0x3B, 0x06, 0x66, -0x5C, 0x0B, 0x01, 0x11, 0xFF, 0x9E, 0x65, 0x8F, 0x69, 0xAE, 0x62, 0xF8, 0xD3, 0xFF, 0x6B, 0x61, 0x45, 0xCF, 0x6C, 0x16, -0x78, 0xE2, 0x0A, 0xA0, 0xEE, 0xD2, 0x0D, 0xD7, 0x54, 0x83, 0x04, 0x4E, 0xC2, 0xB3, 0x03, 0x39, 0x61, 0x26, 0x67, 0xA7, -0xF7, 0x16, 0x60, 0xD0, 0x4D, 0x47, 0x69, 0x49, 0xDB, 0x77, 0x6E, 0x3E, 0x4A, 0x6A, 0xD1, 0xAE, 0xDC, 0x5A, 0xD6, 0xD9, -0x66, 0x0B, 0xDF, 0x40, 0xF0, 0x3B, 0xD8, 0x37, 0x53, 0xAE, 0xBC, 0xA9, 0xC5, 0x9E, 0xBB, 0xDE, 0x7F, 0xCF, 0xB2, 0x47, -0xE9, 0xFF, 0xB5, 0x30, 0x1C, 0xF2, 0xBD, 0xBD, 0x8A, 0xC2, 0xBA, 0xCA, 0x30, 0x93, 0xB3, 0x53, 0xA6, 0xA3, 0xB4, 0x24, -0x05, 0x36, 0xD0, 0xBA, 0x93, 0x06, 0xD7, 0xCD, 0x29, 0x57, 0xDE, 0x54, 0xBF, 0x67, 0xD9, 0x23, 0x2E, 0x7A, 0x66, 0xB3, -0xB8, 0x4A, 0x61, 0xC4, 0x02, 0x1B, 0x68, 0x5D, 0x94, 0x2B, 0x6F, 0x2A, 0x37, 0xBE, 0x0B, 0xB4, 0xA1, 0x8E, 0x0C, 0xC3, -0x1B, 0xDF, 0x05, 0x5A, 0x8D, 0xEF, 0x02, 0x2D, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3D, 0x3D, 0x20, 0x65, 0x6E, 0x64, 0x00, -0x00, 0x50, 0xF2, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xF2, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, -0x04, 0x08, 0x02, 0x01, 0x01, 0x00, 0x02, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x04, 0x0B, 0x16, -0x0C, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6C, 0x01, 0x00, 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, -0x44, 0x42, 0x47, 0x5F, 0x53, 0x45, 0x56, 0x5F, 0x4D, 0x49, 0x4E, 0x20, 0x3C, 0x3D, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, -0x78, 0x20, 0x26, 0x26, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x3C, 0x20, 0x44, 0x42, 0x47, 0x5F, 0x53, 0x45, -0x56, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, -0x63, 0x64, 0x65, 0x66, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, -0x43, 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, -0x03, 0x02, 0x06, 0x07, 0x00, 0x00, 0x04, 0x02, 0x03, 0x02, 0x06, 0x07, 0x00, 0x00, 0x04, 0x03, 0x03, 0x00, 0x06, 0x07, -0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x2C, 0x20, 0x77, 0x6C, 0x61, -0x6E, 0x20, 0x66, 0x63, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x65, 0x62, 0x6F, -0x6F, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x67, 0x70, 0x69, 0x6F, 0x77, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, -0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x0A, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x53, -0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x74, -0x65, 0x72, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x53, -0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, -0x3A, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x42, -0x6F, 0x6F, 0x74, 0x20, 0x4E, 0x50, 0x43, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x57, -0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6D, -0x61, 0x73, 0x6B, 0x3A, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3A, 0x30, 0x78, 0x25, -0x30, 0x38, 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x5D, 0x20, 0x3D, -0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, -0x47, 0x3A, 0x20, 0x57, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x69, -0x74, 0x68, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x5B, 0x30, 0x78, 0x25, -0x30, 0x38, 0x78, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, 0x0A, 0x00, -0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, -0x79, 0x3A, 0x20, 0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, -0x20, 0x2F, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x9D, 0x81, 0x42, 0x6F, 0x6F, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, -0x25, 0x78, 0x2C, 0x20, 0x61, 0x64, 0x64, 0x72, 0x3D, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x64, 0x65, 0x6C, 0x61, 0x79, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, -0x62, 0x6F, 0x6F, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x0D, 0x0A, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x46, -0x57, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x0A, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x57, -0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, -0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x7E, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x5D, 0x20, 0x77, 0x69, -0x74, 0x68, 0x20, 0x7B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x2E, 0x2E, 0x2E, 0x7D, 0x2C, 0x20, 0x77, 0x73, -0x74, 0x61, 0x74, 0x75, 0x73, 0x3A, 0x20, 0x25, 0x30, 0x32, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x70, 0x22, 0x17, 0x00, -0x0C, 0x00, 0x00, 0x00, 0x9B, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x20, 0x28, 0x25, 0x73, 0x29, 0x20, 0x61, 0x74, 0x20, -0x25, 0x73, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x9B, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, 0x47, 0x20, 0x28, 0x25, 0x73, -0x29, 0x20, 0x61, 0x74, 0x20, 0x25, 0x73, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x45, 0x72, 0x72, 0x3A, 0x20, 0x55, 0x46, 0x20, -0x68, 0x6F, 0x73, 0x74, 0x20, 0x72, 0x78, 0x20, 0x62, 0x75, 0x66, 0x66, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x0D, 0x0A, 0x00, -0x09, 0x2D, 0x20, 0x00, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, -0x25, 0x30, 0x32, 0x78, 0x20, 0x00, 0x00, 0x00, 0x25, 0x30, 0x38, 0x78, 0x3A, 0x00, 0x00, 0x00, 0x20, 0x25, 0x30, 0x34, -0x58, 0x20, 0x25, 0x30, 0x34, 0x58, 0x00, 0x00, 0x20, 0x25, 0x30, 0x32, 0x58, 0x20, 0x25, 0x30, 0x32, 0x58, 0x20, 0x25, -0x30, 0x32, 0x58, 0x20, 0x25, 0x30, 0x32, 0x58, 0x00, 0x00, 0x00, 0x00, 0x20, 0x25, 0x30, 0x34, 0x58, 0x00, 0x00, 0x00, -0x20, 0x25, 0x30, 0x32, 0x58, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x68, 0x65, 0x6C, -0x70, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00, 0x68, 0x65, 0x6C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x20, 0x72, 0x20, 0x61, -0x64, 0x64, 0x72, 0x20, 0x3C, 0x63, 0x6E, 0x74, 0x3E, 0x20, 0x3C, 0x73, 0x7A, 0x3E, 0x00, 0x00, 0x20, 0x77, 0x20, 0x61, -0x64, 0x64, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x00, 0x77, 0x00, 0x00, 0x00, 0x20, 0x64, 0x62, 0x67, 0x20, 0x6D, 0x73, 0x6B, -0x00, 0x00, 0x00, 0x00, 0x64, 0x6D, 0x00, 0x00, 0x20, 0x77, 0x66, 0x63, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x28, 0x69, 0x6E, -0x20, 0x73, 0x29, 0x00, 0x77, 0x66, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x3A, 0x20, 0x63, 0x6D, 0x64, -0x5F, 0x66, 0x72, 0x65, 0x65, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x0D, 0x0A, 0x00, 0x00, -0x61, 0x69, 0x63, 0x3E, 0x20, 0x00, 0x00, 0x00, 0x4E, 0x6F, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6D, 0x64, 0x73, -0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x20, 0x54, -0x6F, 0x6F, 0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x28, 0x6D, 0x61, 0x78, 0x2E, 0x20, 0x25, -0x64, 0x29, 0x20, 0x2A, 0x2A, 0x0A, 0x00, 0x00, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x6D, -0x61, 0x6E, 0x64, 0x20, 0x27, 0x25, 0x73, 0x27, 0x0A, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x25, -0x73, 0x0A, 0x00, 0x00, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x0D, 0x0A, 0x00, 0x00, -0x63, 0x75, 0x72, 0x20, 0x64, 0x62, 0x67, 0x5F, 0x6D, 0x73, 0x6B, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, -0x63, 0x66, 0x67, 0x20, 0x64, 0x62, 0x67, 0x5F, 0x6D, 0x73, 0x6B, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, -0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x61, 0x72, 0x67, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x76, 0x61, -0x6C, 0x69, 0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, -0x65, 0x3A, 0x0A, 0x20, 0x20, 0x72, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3C, 0x63, 0x6E, 0x74, 0x3E, 0x0A, 0x00, 0x00, -0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x0D, 0x0A, 0x00, -0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x32, 0x58, 0x0D, 0x0A, 0x00, -0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x34, 0x58, 0x0D, 0x0A, 0x00, -0x55, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x20, 0x20, 0x77, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x20, 0x77, 0x66, 0x63, 0x74, 0x20, 0x76, 0x61, 0x6C, -0x28, 0x69, 0x6E, 0x20, 0x73, 0x29, 0x0A, 0x00, 0x63, 0x75, 0x72, 0x20, 0x77, 0x66, 0x63, 0x74, 0x3A, 0x20, 0x25, 0x75, -0x73, 0x0A, 0x00, 0x00, 0x63, 0x66, 0x67, 0x20, 0x77, 0x66, 0x63, 0x74, 0x20, 0x25, 0x75, 0x73, 0x0A, 0x00, 0x00, 0x00, -0x77, 0x66, 0x63, 0x74, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x0A, 0x00, 0x00, -0x08, 0x20, 0x08, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x07, 0x00, 0x50, -0xF2, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, -0x5F, 0x67, 0x65, 0x74, 0x28, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x45, 0x5F, -0x42, 0x55, 0x53, 0x59, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x65, 0x6E, 0x76, -0x2E, 0x6D, 0x6F, 0x6E, 0x69, 0x74, 0x6F, 0x72, 0x5F, 0x76, 0x69, 0x66, 0x20, 0x21, 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, -0x4C, 0x49, 0x44, 0x5F, 0x56, 0x49, 0x46, 0x5F, 0x49, 0x44, 0x58, 0x00, 0xD8, 0x22, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, -0x62, 0x69, 0x74, 0x5F, 0x70, 0x6F, 0x73, 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, 0x45, -0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x00, 0x72, 0x61, 0x74, 0x65, 0x73, 0x2D, 0x3E, 0x6C, 0x65, 0x6E, 0x67, 0x74, -0x68, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x4C, 0x4F, 0x43, 0x41, 0x4C, 0x5F, 0x43, 0x41, 0x50, 0x41, 0x28, 0x48, -0x45, 0x29, 0x00, 0x00, 0x4C, 0x4F, 0x43, 0x41, 0x4C, 0x5F, 0x43, 0x41, 0x50, 0x41, 0x28, 0x56, 0x48, 0x54, 0x29, 0x00, -0x4C, 0x4F, 0x43, 0x41, 0x4C, 0x5F, 0x43, 0x41, 0x50, 0x41, 0x28, 0x48, 0x54, 0x29, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, -0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, -0x63, 0x75, 0x72, 0x72, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x62, 0x73, 0x73, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x6D, 0x69, 0x63, 0x5F, 0x63, 0x61, 0x6C, 0x63, 0x5F, 0x70, 0x74, 0x72, 0x2D, 0x3E, 0x6C, 0x61, 0x73, 0x74, 0x5F, 0x6D, -0x5F, 0x69, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x20, 0x34, 0x00, 0x00, 0x72, 0x65, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x75, 0x2E, 0x73, 0x74, 0x61, 0x2E, 0x61, 0x70, 0x5F, 0x69, 0x64, -0x20, 0x3D, 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x49, 0x44, 0x58, 0x00, -0x63, 0x6F, 0x6E, 0x6E, 0x20, 0x6C, 0x6F, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x64, 0x0D, 0x0A, 0x00, 0x6B, 0x65, 0x5F, 0x73, -0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, -0x20, 0x53, 0x4D, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x4E, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, -0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, -0x20, 0x53, 0x4D, 0x5F, 0x4A, 0x4F, 0x49, 0x4E, 0x49, 0x4E, 0x47, 0x00, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x3A, 0x20, 0x25, -0x34, 0x78, 0x3A, 0x25, 0x34, 0x78, 0x3A, 0x25, 0x34, 0x78, 0x2C, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x28, 0x6B, 0x65, 0x5F, -0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, -0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, -0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, -0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, -0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, -0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x44, 0x49, 0x53, 0x43, 0x4F, 0x4E, -0x4E, 0x45, 0x43, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, -0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, -0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x00, -0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, -0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x44, 0x49, 0x53, 0x43, 0x4F, 0x4E, 0x4E, 0x45, 0x43, 0x54, 0x49, 0x4E, -0x47, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, -0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, -0x41, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, -0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, -0x20, 0x53, 0x4D, 0x5F, 0x44, 0x49, 0x53, 0x43, 0x4F, 0x4E, 0x4E, 0x45, 0x43, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x00, 0x00, -0x73, 0x6D, 0x20, 0x63, 0x6F, 0x65, 0x78, 0x20, 0x74, 0x73, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x0D, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, -0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x41, 0x44, 0x44, 0x49, -0x4E, 0x47, 0x00, 0x00, 0x98, 0x23, 0x17, 0x00, 0x15, 0x00, 0x00, 0x00, 0x74, 0x78, 0x20, 0x63, 0x66, 0x6D, 0x3A, 0x25, -0x64, 0x2C, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x63, 0x6F, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x69, 0x73, 0x5F, 0x65, -0x6D, 0x70, 0x74, 0x79, 0x28, 0x26, 0x73, 0x6D, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x62, 0x73, 0x73, 0x5F, 0x63, 0x6F, 0x6E, -0x66, 0x69, 0x67, 0x29, 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x72, 0x65, 0x6F, 0x75, 0x72, -0x63, 0x65, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x64, 0x65, 0x61, 0x75, 0x74, 0x68, 0x2F, 0x64, 0x69, 0x73, 0x61, 0x73, -0x73, 0x6F, 0x63, 0x3A, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x64, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x6E, 0x63, -0x74, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x3A, -0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x61, 0x69, 0x64, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x61, 0x75, 0x74, 0x68, -0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x61, 0x73, 0x73, 0x6F, -0x63, 0x5F, 0x72, 0x73, 0x70, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, -0x64, 0x65, 0x61, 0x75, 0x74, 0x68, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, -0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x61, 0x75, -0x74, 0x68, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x3A, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6F, 0x6E, 0x20, 0x63, -0x6F, 0x64, 0x65, 0x20, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x42, 0x53, 0x53, 0x5F, 0x43, 0x41, 0x50, 0x41, -0x28, 0x62, 0x73, 0x73, 0x2C, 0x20, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x29, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x03, 0x00, -0x00, 0x00, 0x08, 0x06, 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x02, 0x73, 0x6D, 0x5F, 0x61, 0x75, 0x74, 0x68, 0x5F, -0x73, 0x65, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x00, 0x73, 0x6D, 0x5F, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x5F, 0x72, 0x65, 0x71, -0x5F, 0x73, 0x65, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, -0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x42, 0x43, -0x4E, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x61, 0x70, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, -0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, -0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x42, -0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, -0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, -0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x29, 0x20, 0x7C, 0x7C, -0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, -0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x53, 0x54, 0x4F, 0x50, 0x50, 0x49, 0x4E, 0x47, -0x29, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, -0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, -0x52, 0x41, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, -0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, -0x4D, 0x5F, 0x53, 0x54, 0x4F, 0x50, 0x50, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, -0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, -0x50, 0x4D, 0x5F, 0x53, 0x54, 0x4F, 0x50, 0x50, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x6B, 0x65, 0x5F, -0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, -0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x29, 0x00, 0x00, 0x00, 0x00, 0x61, 0x70, 0x20, 0x73, -0x74, 0x6F, 0x70, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x69, 0x73, 0x5F, 0x65, -0x6D, 0x70, 0x74, 0x79, 0x28, 0x26, 0x61, 0x70, 0x6D, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x62, 0x73, 0x73, 0x5F, 0x63, 0x6F, -0x6E, 0x66, 0x69, 0x67, 0x29, 0x00, 0x00, 0x00, 0x40, 0x24, 0x17, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, -0x75, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, -0x75, 0x20, 0x69, 0x64, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x63, 0x66, 0x6D, 0x0D, 0x0A, 0x00, -0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x73, 0x63, 0x61, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x6E, 0x64, 0x72, 0x20, -0x69, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x63, 0x61, -0x6E, 0x75, 0x20, 0x72, 0x65, 0x71, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x4D, 0x41, 0x43, -0x5F, 0x41, 0x44, 0x44, 0x52, 0x5F, 0x47, 0x52, 0x4F, 0x55, 0x50, 0x28, 0x26, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, -0x62, 0x73, 0x73, 0x69, 0x64, 0x29, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x76, 0x6E, 0x64, 0x72, 0x20, 0x69, -0x65, 0x0D, 0x0A, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x63, 0x66, 0x6D, 0x20, -0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x24, 0x17, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC8, 0x24, 0x17, 0x00, -0x05, 0x00, 0x00, 0x00, 0xF0, 0x24, 0x17, 0x00, 0x07, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x75, 0x5F, 0x63, 0x6F, -0x6E, 0x66, 0x69, 0x72, 0x6D, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x48, 0x49, 0x44, -0x44, 0x45, 0x4E, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x2D, 0x00, 0x6A, 0x6F, 0x69, 0x6E, -0x3A, 0x25, 0x73, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x66, 0x69, 0x78, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x6E, 0x6F, 0x5F, 0x73, -0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x25, 0x64, 0x20, -0x25, 0x64, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x25, 0x64, 0x20, 0x25, 0x78, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00, -0x28, 0x69, 0x65, 0x5F, 0x62, 0x75, 0x66, 0x20, 0x2D, 0x20, 0x43, 0x50, 0x55, 0x32, 0x48, 0x57, 0x28, 0x69, 0x65, 0x2D, -0x3E, 0x62, 0x75, 0x66, 0x29, 0x29, 0x20, 0x3C, 0x3D, 0x20, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x4D, 0x41, 0x58, 0x5F, 0x49, -0x45, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x75, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3A, -0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x78, 0x20, 0x61, -0x72, 0x70, 0x72, 0x65, 0x71, 0x3A, 0x20, 0x69, 0x70, 0x3D, 0x25, 0x78, 0x2E, 0x20, 0x76, 0x69, 0x66, 0x20, 0x69, 0x70, -0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x78, 0x20, 0x61, 0x72, 0x70, 0x72, 0x65, 0x73, 0x70, 0x0A, 0x00, -0x72, 0x78, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x2D, 0x3E, 0x76, 0x61, 0x6C, 0x2E, 0x73, 0x74, -0x61, 0x74, 0x75, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x20, 0x73, -0x74, 0x61, 0x74, 0x3A, 0x25, 0x64, 0x00, 0x00, 0x54, 0x4B, 0x49, 0x50, 0x20, 0x49, 0x43, 0x56, 0x20, 0x45, 0x52, 0x52, -0x0A, 0x00, 0x00, 0x00, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, -0x72, 0x78, 0x5F, 0x72, 0x65, 0x6F, 0x72, 0x64, 0x2D, 0x3E, 0x6F, 0x6F, 0x6F, 0x5F, 0x70, 0x6B, 0x74, 0x5F, 0x63, 0x6E, -0x74, 0x00, 0x00, 0x00, 0x6F, 0x6C, 0x64, 0x5F, 0x77, 0x69, 0x6E, 0x5F, 0x62, 0x61, 0x72, 0x20, 0x64, 0x65, 0x74, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x72, 0x65, 0x6F, 0x72, 0x64, 0x2D, 0x3E, 0x6F, 0x6F, 0x6F, 0x5F, 0x70, 0x6B, 0x74, 0x5F, 0x63, -0x6E, 0x74, 0x3C, 0x3D, 0x36, 0x34, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x5F, 0x64, 0x65, 0x61, -0x75, 0x74, 0x68, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x74, 0x61, 0x73, 0x6B, 0x5F, 0x69, 0x64, 0x78, 0x20, 0x21, 0x3D, 0x20, -0x30, 0x78, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6D, 0x61, 0x63, 0x68, 0x64, 0x72, 0x5F, 0x6C, 0x65, 0x6E, 0x67, -0x74, 0x68, 0x20, 0x26, 0x20, 0x30, 0x78, 0x33, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x72, 0x78, 0x20, 0x65, -0x61, 0x70, 0x6F, 0x6C, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x57, 0x45, 0x50, 0x20, -0x49, 0x43, 0x56, 0x20, 0x45, 0x52, 0x52, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x72, 0x65, 0x6F, 0x72, 0x64, 0x20, 0x21, 0x3D, -0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x72, 0x78, 0x75, 0x5F, 0x63, 0x6E, 0x74, 0x72, 0x6C, 0x5F, 0x73, 0x70, -0x75, 0x72, 0x69, 0x6F, 0x75, 0x73, 0x5F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x75, 0x20, -0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x3A, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x64, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x6D, 0x69, 0x74, 0x20, 0x74, 0x78, 0x75, 0x20, 0x64, -0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0A, 0x00, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x3A, -0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x2D, 0x3E, 0x73, 0x74, 0x61, 0x69, 0x64, 0x20, -0x21, 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x49, 0x44, 0x58, 0x00, 0x00, -0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x61, 0x64, 0x64, 0x62, 0x61, 0x5F, 0x72, 0x65, 0x71, 0x3A, 0x74, 0x69, 0x64, -0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x61, 0x64, 0x64, 0x62, 0x61, -0x5F, 0x72, 0x73, 0x70, 0x3A, 0x74, 0x69, 0x64, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0D, -0x0A, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x72, 0x78, 0x5F, 0x64, 0x65, 0x6C, 0x62, 0x61, 0x3A, -0x74, 0x69, 0x64, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x73, 0x74, 0x61, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, -0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x78, 0x5F, 0x64, 0x65, 0x6C, 0x62, 0x61, 0x3A, 0x74, 0x69, 0x64, 0x3D, -0x25, 0x64, 0x2C, 0x20, 0x73, 0x74, 0x61, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x2C, 0x25, 0x17, 0x00, -0x05, 0x00, 0x00, 0x00, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x77, 0x69, 0x6E, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x66, -0x6C, 0x75, 0x73, 0x68, 0x3A, 0x20, 0x73, 0x75, 0x63, 0x63, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x70, -0x61, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0A, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, -0x28, 0x4B, 0x45, 0x5F, 0x42, 0x55, 0x49, 0x4C, 0x44, 0x5F, 0x49, 0x44, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x42, 0x41, -0x4D, 0x2C, 0x20, 0x62, 0x61, 0x6D, 0x5F, 0x69, 0x64, 0x78, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x41, 0x4D, 0x5F, -0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x00, 0x00, 0x62, 0x61, 0x6D, 0x5F, 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x42, 0x41, -0x4D, 0x5F, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x49, 0x44, 0x58, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, -0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, -0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, -0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, -0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, -0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, -0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB, -0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, -0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, -0x64, 0x5D, 0x19, 0x73, 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, -0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, -0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, -0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, -0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, -0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16, 0xC6, 0xF8, 0xEE, 0xF6, -0xFF, 0xD6, 0xDE, 0x91, 0x60, 0x02, 0xCE, 0x56, 0xE7, 0xB5, 0x4D, 0xEC, 0x8F, 0x1F, 0x89, 0xFA, 0xEF, 0xB2, 0x8E, 0xFB, -0x41, 0xB3, 0x5F, 0x45, 0x23, 0x53, 0xE4, 0x9B, 0x75, 0xE1, 0x3D, 0x4C, 0x6C, 0x7E, 0xF5, 0x83, 0x68, 0x51, 0xD1, 0xF9, -0xE2, 0xAB, 0x62, 0x2A, 0x08, 0x95, 0x46, 0x9D, 0x30, 0x37, 0x0A, 0x2F, 0x0E, 0x24, 0x1B, 0xDF, 0xCD, 0x4E, 0x7F, 0xEA, -0x12, 0x1D, 0x58, 0x34, 0x36, 0xDC, 0xB4, 0x5B, 0xA4, 0x76, 0xB7, 0x7D, 0x52, 0xDD, 0x5E, 0x13, 0xA6, 0xB9, 0x00, 0xC1, -0x40, 0xE3, 0x79, 0xB6, 0xD4, 0x8D, 0x67, 0x72, 0x94, 0x98, 0xB0, 0x85, 0xBB, 0xC5, 0x4F, 0xED, 0x86, 0x9A, 0x66, 0x11, -0x8A, 0xE9, 0x04, 0xFE, 0xA0, 0x78, 0x25, 0x4B, 0xA2, 0x5D, 0x80, 0x05, 0x3F, 0x21, 0x70, 0xF1, 0x63, 0x77, 0xAF, 0x42, -0x20, 0xE5, 0xFD, 0xBF, 0x81, 0x18, 0x26, 0xC3, 0xBE, 0x35, 0x88, 0x2E, 0x93, 0x55, 0xFC, 0x7A, 0xC8, 0xBA, 0x32, 0xE6, -0xC0, 0x19, 0x9E, 0xA3, 0x44, 0x54, 0x3B, 0x0B, 0x8C, 0xC7, 0x6B, 0x28, 0xA7, 0xBC, 0x16, 0xAD, 0xDB, 0x64, 0x74, 0x14, -0x92, 0x0C, 0x48, 0xB8, 0x9F, 0xBD, 0x43, 0xC4, 0x39, 0x31, 0xD3, 0xF2, 0xD5, 0x8B, 0x6E, 0xDA, 0x01, 0xB1, 0x9C, 0x49, -0xD8, 0xAC, 0xF3, 0xCF, 0xCA, 0xF4, 0x47, 0x10, 0x6F, 0xF0, 0x4A, 0x5C, 0x38, 0x57, 0x73, 0x97, 0xCB, 0xA1, 0xE8, 0x3E, -0x96, 0x61, 0x0D, 0x0F, 0xE0, 0x7C, 0x71, 0xCC, 0x90, 0x06, 0xF7, 0x1C, 0xC2, 0x6A, 0xAE, 0x69, 0x17, 0x99, 0x3A, 0x27, -0xD9, 0xEB, 0x2B, 0x22, 0xD2, 0xA9, 0x07, 0x33, 0x2D, 0x3C, 0x15, 0xC9, 0x87, 0xAA, 0x50, 0xA5, 0x03, 0x59, 0x09, 0x1A, -0x65, 0xD7, 0x84, 0xD0, 0x82, 0x29, 0x5A, 0x1E, 0x7B, 0xA8, 0x6D, 0x2C, 0xA5, 0x84, 0x99, 0x8D, 0x0D, 0xBD, 0xB1, 0x54, -0x50, 0x03, 0xA9, 0x7D, 0x19, 0x62, 0xE6, 0x9A, 0x45, 0x9D, 0x40, 0x87, 0x15, 0xEB, 0xC9, 0x0B, 0xEC, 0x67, 0xFD, 0xEA, -0xBF, 0xF7, 0x96, 0x5B, 0xC2, 0x1C, 0xAE, 0x6A, 0x5A, 0x41, 0x02, 0x4F, 0x5C, 0xF4, 0x34, 0x08, 0x93, 0x73, 0x53, 0x3F, -0x0C, 0x52, 0x65, 0x5E, 0x28, 0xA1, 0x0F, 0xB5, 0x09, 0x36, 0x9B, 0x3D, 0x26, 0x69, 0xCD, 0x9F, 0x1B, 0x9E, 0x74, 0x2E, -0x2D, 0xB2, 0xEE, 0xFB, 0xF6, 0x4D, 0x61, 0xCE, 0x7B, 0x3E, 0x71, 0x97, 0xF5, 0x68, 0x00, 0x2C, 0x60, 0x1F, 0xC8, 0xED, -0xBE, 0x46, 0xD9, 0x4B, 0xDE, 0xD4, 0xE8, 0x4A, 0x6B, 0x2A, 0xE5, 0x16, 0xC5, 0xD7, 0x55, 0x94, 0xCF, 0x10, 0x06, 0x81, -0xF0, 0x44, 0xBA, 0xE3, 0xF3, 0xFE, 0xC0, 0x8A, 0xAD, 0xBC, 0x48, 0x04, 0xDF, 0xC1, 0x75, 0x63, 0x30, 0x1A, 0x0E, 0x6D, -0x4C, 0x14, 0x35, 0x2F, 0xE1, 0xA2, 0xCC, 0x39, 0x57, 0xF2, 0x82, 0x47, 0xAC, 0xE7, 0x2B, 0x95, 0xA0, 0x98, 0xD1, 0x7F, -0x66, 0x7E, 0xAB, 0x83, 0xCA, 0x29, 0xD3, 0x3C, 0x79, 0xE2, 0x1D, 0x76, 0x3B, 0x56, 0x4E, 0x1E, 0xDB, 0x0A, 0x6C, 0xE4, -0x5D, 0x6E, 0xEF, 0xA6, 0xA8, 0xA4, 0x37, 0x8B, 0x32, 0x43, 0x59, 0xB7, 0x8C, 0x64, 0xD2, 0xE0, 0xB4, 0xFA, 0x07, 0x25, -0xAF, 0x8E, 0xE9, 0x18, 0xD5, 0x88, 0x6F, 0x72, 0x24, 0xF1, 0xC7, 0x51, 0x23, 0x7C, 0x9C, 0x21, 0xDD, 0xDC, 0x86, 0x85, -0x90, 0x42, 0xC4, 0xAA, 0xD8, 0x05, 0x01, 0x12, 0xA3, 0x5F, 0xF9, 0xD0, 0x91, 0x58, 0x27, 0xB9, 0x38, 0x13, 0xB3, 0x33, -0xBB, 0x70, 0x89, 0xA7, 0xB6, 0x22, 0x92, 0x20, 0x49, 0xFF, 0x78, 0x7A, 0x8F, 0xF8, 0x80, 0x17, 0xDA, 0x31, 0xC6, 0xB8, -0xC3, 0xB0, 0x77, 0x11, 0xCB, 0xFC, 0xD6, 0x3A, 0x72, 0x63, 0x5F, 0x72, 0x73, 0x2D, 0x3E, 0x61, 0x74, 0x74, 0x65, 0x6D, -0x70, 0x74, 0x73, 0x20, 0x3E, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x72, 0x73, 0x2D, 0x3E, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, -0x73, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3C, 0x3D, 0x20, 0x46, 0x4F, -0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x48, 0x45, 0x5F, 0x53, 0x55, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, -0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3C, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x48, -0x54, 0x5F, 0x4D, 0x46, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3C, -0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x56, 0x48, 0x54, 0x00, 0x00, 0x28, 0x66, 0x6F, 0x72, -0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, -0x5F, 0x48, 0x54, 0x5F, 0x4D, 0x46, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, -0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x48, 0x54, 0x5F, 0x47, -0x46, 0x29, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, -0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x56, 0x48, 0x54, 0x20, 0x7C, 0x7C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, -0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x4E, -0x4F, 0x4E, 0x5F, 0x48, 0x54, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, -0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x56, 0x48, 0x54, 0x00, 0x28, 0x66, 0x6F, 0x72, -0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, -0x5F, 0x48, 0x45, 0x5F, 0x53, 0x55, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, -0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x4E, 0x4F, 0x4E, 0x5F, -0x48, 0x54, 0x29, 0x00, 0x70, 0x72, 0x65, 0x5F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3D, 0x3D, 0x20, 0x31, 0x00, 0x00, 0x00, -0x73, 0x67, 0x69, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, -0x5F, 0x32, 0x30, 0x4D, 0x48, 0x5A, 0x00, 0x00, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, -0x6D, 0x63, 0x73, 0x20, 0x3E, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, -0x6D, 0x69, 0x6E, 0x00, 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x5F, -0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, -0x5F, 0x6D, 0x61, 0x70, 0x5F, 0x6C, 0x20, 0x26, 0x20, 0x43, 0x4F, 0x5F, 0x42, 0x49, 0x54, 0x28, 0x6D, 0x63, 0x73, 0x29, -0x29, 0x00, 0x00, 0x00, 0x70, 0x72, 0x65, 0x5F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, -0x73, 0x67, 0x69, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x5F, -0x67, 0x69, 0x00, 0x00, 0x62, 0x77, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x62, 0x77, 0x5F, -0x6D, 0x61, 0x78, 0x00, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, 0x6F, -0x5F, 0x73, 0x73, 0x00, 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6D, 0x63, -0x73, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x00, 0x00, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, -0x5F, 0x6D, 0x61, 0x70, 0x2E, 0x68, 0x74, 0x5B, 0x6E, 0x73, 0x73, 0x5D, 0x20, 0x26, 0x20, 0x43, 0x4F, 0x5F, 0x42, 0x49, -0x54, 0x28, 0x6D, 0x63, 0x73, 0x29, 0x29, 0x00, 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x28, 0x37, 0x20, 0x2B, 0x20, -0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, 0x5F, 0x6D, 0x61, 0x70, 0x2E, 0x76, 0x68, 0x74, -0x20, 0x3E, 0x3E, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3C, 0x20, 0x31, 0x29, 0x20, 0x26, 0x20, 0x4D, 0x41, 0x43, -0x5F, 0x56, 0x48, 0x54, 0x5F, 0x4D, 0x43, 0x53, 0x5F, 0x4D, 0x41, 0x50, 0x5F, 0x4D, 0x53, 0x4B, 0x29, 0x29, 0x00, 0x00, -0x28, 0x28, 0x6D, 0x63, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x36, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x62, 0x77, 0x20, 0x3D, -0x3D, 0x20, 0x42, 0x57, 0x5F, 0x38, 0x30, 0x4D, 0x48, 0x5A, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x28, 0x6E, 0x73, 0x73, -0x20, 0x3D, 0x3D, 0x20, 0x33, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x36, 0x29, -0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x28, 0x28, 0x6D, 0x63, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x39, 0x29, 0x20, -0x26, 0x26, 0x20, 0x28, 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x32, 0x30, 0x4D, 0x48, 0x5A, 0x29, 0x20, -0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, -0x73, 0x20, 0x21, 0x3D, 0x20, 0x35, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x28, 0x28, 0x6D, 0x63, -0x73, 0x20, 0x3D, 0x3D, 0x20, 0x39, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, -0x5F, 0x38, 0x30, 0x4D, 0x48, 0x5A, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x35, -0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x28, 0x28, 0x6D, 0x63, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x39, 0x29, 0x20, -0x26, 0x26, 0x20, 0x28, 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x31, 0x36, 0x30, 0x4D, 0x48, 0x5A, 0x29, -0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x32, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, -0x00, 0x00, 0x00, 0x00, 0x67, 0x69, 0x20, 0x3C, 0x3D, 0x20, 0x32, 0x00, 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x28, -0x37, 0x20, 0x2B, 0x20, 0x32, 0x20, 0x2A, 0x20, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, -0x5F, 0x6D, 0x61, 0x70, 0x2E, 0x68, 0x65, 0x20, 0x3E, 0x3E, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3C, 0x20, 0x31, -0x29, 0x20, 0x26, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x48, 0x45, 0x5F, 0x4D, 0x43, 0x53, 0x5F, 0x4D, 0x41, 0x50, 0x5F, 0x4D, -0x53, 0x4B, 0x29, 0x29, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, 0x6F, 0x5F, 0x73, 0x61, -0x6D, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x3E, 0x3D, 0x20, 0x31, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, -0x6F, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x52, 0x43, 0x5F, 0x4D, 0x41, 0x58, 0x5F, -0x4E, 0x5F, 0x53, 0x41, 0x4D, 0x50, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x62, -0x77, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x31, 0x36, 0x30, 0x4D, 0x48, 0x5A, 0x00, 0x00, -0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, 0x6F, 0x5F, 0x73, 0x73, 0x20, 0x3C, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, -0x73, 0x74, 0x61, 0x2D, 0x3E, 0x73, 0x74, 0x61, 0x69, 0x64, 0x20, 0x3C, 0x20, 0x4E, 0x58, 0x5F, 0x52, 0x45, 0x4D, 0x4F, -0x54, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6D, -0x63, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x20, 0x31, 0x32, 0x00, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, -0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x48, 0x57, 0x5F, 0x52, 0x41, 0x54, 0x45, -0x5F, 0x31, 0x31, 0x4D, 0x42, 0x50, 0x53, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, -0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, -0x45, 0x53, 0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x29, 0x00, 0x00, 0x00, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, -0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x48, 0x57, 0x5F, 0x52, 0x41, 0x54, 0x45, -0x5F, 0x31, 0x31, 0x4D, 0x42, 0x50, 0x53, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, -0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, -0x45, 0x53, 0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x29, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6D, -0x63, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x20, 0x31, 0x30, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, -0x6F, 0x5F, 0x73, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x33, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, -0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, -0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, -0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, 0x45, 0x54, 0x5F, 0x4C, -0x45, 0x4E, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x62, 0x77, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3D, 0x3D, -0x20, 0x42, 0x57, 0x5F, 0x32, 0x30, 0x4D, 0x48, 0x5A, 0x00, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x74, -0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0x3D, 0x25, 0x69, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, -0x3D, 0x25, 0x69, 0x20, 0x70, 0x72, 0x65, 0x5F, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x25, 0x69, 0x20, 0x73, 0x68, 0x6F, 0x72, -0x74, 0x5F, 0x67, 0x69, 0x3D, 0x25, 0x69, 0x20, 0x6D, 0x61, 0x78, 0x5F, 0x62, 0x77, 0x3D, 0x25, 0x69, 0x0A, 0x00, 0x00, -0x25, 0x73, 0x3A, 0x20, 0x6E, 0x73, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x3D, 0x25, 0x69, 0x20, 0x6D, 0x63, 0x73, 0x5F, 0x6D, -0x61, 0x78, 0x3D, 0x25, 0x69, 0x20, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x3D, 0x25, 0x69, 0x20, 0x72, -0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x3D, 0x25, 0x69, 0x20, 0x6E, 0x6F, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, -0x65, 0x73, 0x3D, 0x25, 0x69, 0x0A, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x69, 0x6E, 0x69, 0x74, 0x00, 0x20, 0x7C, 0x9F, 0x00, -0x20, 0xF3, 0xA0, 0x00, 0xA0, 0x17, 0x52, 0x00, 0xA0, 0x8E, 0x53, 0x00, 0xF8, 0x52, 0x23, 0x00, 0xF8, 0xC9, 0x24, 0x00, -0x18, 0xF5, 0x15, 0x00, 0x18, 0x6C, 0x17, 0x00, 0xF9, 0x06, 0x11, 0x00, 0x62, 0x07, 0x12, 0x00, 0x35, 0x08, 0x14, 0x00, -0xD1, 0x10, 0x04, 0x00, 0x0A, 0x4E, 0x04, 0x00, 0x7D, 0xC8, 0x04, 0x00, 0x7D, 0x83, 0x08, 0x00, 0xB1, 0x03, 0x09, 0x00, -0x1A, 0x04, 0x0A, 0x00, 0x68, 0x08, 0x02, 0x00, 0x05, 0x27, 0x02, 0x00, 0x3F, 0x64, 0x02, 0x00, 0xFE, 0xAC, 0x05, 0x00, -0x76, 0x02, 0x06, 0x00, 0x67, 0xAD, 0x06, 0x00, 0xF0, 0x5A, 0x01, 0x00, 0x59, 0x6F, 0x01, 0x00, 0x2A, 0x98, 0x01, 0x00, -0xBE, 0x41, 0x04, 0x00, 0xD9, 0x81, 0x04, 0x00, 0x0D, 0x02, 0x05, 0x00, 0x34, 0x04, 0x01, 0x00, 0x83, 0x13, 0x01, 0x00, -0x1F, 0x32, 0x01, 0x00, 0x7F, 0xD6, 0x02, 0x00, 0x3B, 0x01, 0x03, 0x00, 0xB3, 0x56, 0x03, 0x00, 0x78, 0xAD, 0x00, 0x00, -0xAC, 0xB7, 0x00, 0x00, 0x15, 0xCC, 0x00, 0x00, 0xDF, 0x20, 0x02, 0x00, 0xEC, 0x40, 0x02, 0x00, 0x07, 0x81, 0x02, 0x00, -0x1A, 0x82, 0x00, 0x00, 0xC1, 0x89, 0x00, 0x00, 0x10, 0x99, 0x00, 0x00, 0x55, 0xE4, 0x01, 0x00, 0xD2, 0x00, 0x02, 0x00, -0xCD, 0x39, 0x02, 0x00, 0xA5, 0x73, 0x00, 0x00, 0x73, 0x7A, 0x00, 0x00, 0x0E, 0x88, 0x00, 0x00, 0xE6, 0xB3, 0x01, 0x00, -0x8A, 0xCD, 0x01, 0x00, 0xD2, 0x00, 0x02, 0x00, 0x15, 0x68, 0x00, 0x00, 0x34, 0x6E, 0x00, 0x00, 0x73, 0x7A, 0x00, 0x00, -0x3F, 0x6B, 0x01, 0x00, 0x9E, 0x80, 0x01, 0x00, 0x5A, 0xAB, 0x01, 0x00, 0xBC, 0x56, 0x00, 0x00, 0xD6, 0x5B, 0x00, 0x00, -0x0A, 0x66, 0x00, 0x00, 0xEC, 0x46, 0x01, 0x00, 0x27, 0x5A, 0x01, 0x00, 0x9E, 0x80, 0x01, 0x00, 0x11, 0x4E, 0x00, 0x00, -0xA8, 0x52, 0x00, 0x00, 0xD7, 0x5B, 0x00, 0x00, 0x99, 0x22, 0x01, 0x00, 0xB1, 0x33, 0x01, 0x00, 0xE1, 0x55, 0x01, 0x00, -0x63, 0x45, 0x00, 0x00, 0x78, 0x49, 0x00, 0x00, 0xA2, 0x51, 0x00, 0x00, 0x8A, 0x05, 0x01, 0x00, 0xEC, 0x14, 0x01, 0x00, -0xB1, 0x33, 0x01, 0x00, 0x74, 0x3E, 0x00, 0x00, 0x21, 0x42, 0x00, 0x00, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, -0x3C, 0x5C, 0x29, 0x00, 0xB4, 0xF4, 0x2D, 0x00, 0x00, 0x88, 0x13, 0x00, 0x1E, 0xAE, 0x14, 0x00, 0x5A, 0xFA, 0x16, 0x00, -0x55, 0x05, 0x0D, 0x00, 0x69, 0xC9, 0x0D, 0x00, 0x91, 0x51, 0x0F, 0x00, 0x00, 0xC4, 0x09, 0x00, 0x0F, 0x57, 0x0A, 0x00, -0x2D, 0x7D, 0x0B, 0x00, 0xAA, 0x82, 0x06, 0x00, 0xB4, 0xE4, 0x06, 0x00, 0xC8, 0xA8, 0x07, 0x00, 0x00, 0xE2, 0x04, 0x00, -0x87, 0x2B, 0x05, 0x00, 0x96, 0xBE, 0x05, 0x00, 0x1C, 0x57, 0x04, 0x00, 0x78, 0x98, 0x04, 0x00, 0x30, 0x1B, 0x05, 0x00, -0x00, 0xE8, 0x03, 0x00, 0xD2, 0x22, 0x04, 0x00, 0x78, 0x98, 0x04, 0x00, 0x55, 0x41, 0x03, 0x00, 0x5A, 0x72, 0x03, 0x00, -0x64, 0xD4, 0x03, 0x00, 0x00, 0xEE, 0x02, 0x00, 0x1E, 0x1A, 0x03, 0x00, 0x5A, 0x72, 0x03, 0x00, 0xAA, 0x9A, 0x02, 0x00, -0xE1, 0xC1, 0x02, 0x00, 0x50, 0x10, 0x03, 0x00, 0x00, 0x58, 0x02, 0x00, 0x4B, 0x7B, 0x02, 0x00, 0xE1, 0xC1, 0x02, 0x00, -0x00, 0x04, 0xA6, 0x00, 0x00, 0xC8, 0xAF, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x02, 0x53, 0x00, 0x00, 0xE4, 0x57, 0x00, -0x00, 0xA8, 0x61, 0x00, 0xAA, 0x56, 0x37, 0x00, 0x00, 0x98, 0x3A, 0x00, 0xAA, 0x1A, 0x41, 0x00, 0x00, 0x81, 0x29, 0x00, -0x00, 0xF2, 0x2B, 0x00, 0x00, 0xD4, 0x30, 0x00, 0x55, 0xAB, 0x1B, 0x00, 0x00, 0x4C, 0x1D, 0x00, 0x55, 0x8D, 0x20, 0x00, -0x80, 0xC0, 0x14, 0x00, 0x00, 0xF9, 0x15, 0x00, 0x00, 0x6A, 0x18, 0x00, 0x38, 0x72, 0x12, 0x00, 0x00, 0x88, 0x13, 0x00, -0x8E, 0xB3, 0x15, 0x00, 0x00, 0x9A, 0x10, 0x00, 0x00, 0x94, 0x11, 0x00, 0x00, 0x88, 0x13, 0x00, 0xAA, 0xD5, 0x0D, 0x00, -0x00, 0xA6, 0x0E, 0x00, 0xAA, 0x46, 0x10, 0x00, 0x80, 0x73, 0x0C, 0x00, 0x00, 0x2F, 0x0D, 0x00, 0x00, 0xA6, 0x0E, 0x00, -0x55, 0x11, 0x0B, 0x00, 0x00, 0xB8, 0x0B, 0x00, 0x55, 0x05, 0x0D, 0x00, 0x00, 0xF6, 0x09, 0x00, 0x00, 0x8C, 0x0A, 0x00, -0x00, 0xB8, 0x0B, 0x00, 0x00, 0x02, 0x53, 0x00, 0x00, 0xE4, 0x57, 0x00, 0x00, 0xA8, 0x61, 0x00, 0x00, 0x81, 0x29, 0x00, -0x00, 0xF2, 0x2B, 0x00, 0x00, 0xD4, 0x30, 0x00, 0x55, 0xAB, 0x1B, 0x00, 0x00, 0x4C, 0x1D, 0x00, 0x55, 0x8D, 0x20, 0x00, -0x80, 0xC0, 0x14, 0x00, 0x00, 0xF9, 0x15, 0x00, 0x00, 0x6A, 0x18, 0x00, 0xAA, 0xD5, 0x0D, 0x00, 0x00, 0xA6, 0x0E, 0x00, -0xAA, 0x46, 0x10, 0x00, 0x40, 0x60, 0x0A, 0x00, 0x80, 0xFC, 0x0A, 0x00, 0x00, 0x35, 0x0C, 0x00, 0x1C, 0x39, 0x09, 0x00, -0x00, 0xC4, 0x09, 0x00, 0xC7, 0xD9, 0x0A, 0x00, 0x00, 0x4D, 0x08, 0x00, 0x00, 0xCA, 0x08, 0x00, 0x00, 0xC4, 0x09, 0x00, -0xD5, 0xEA, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x55, 0x23, 0x08, 0x00, 0xC0, 0x39, 0x06, 0x00, 0x80, 0x97, 0x06, 0x00, -0x00, 0x53, 0x07, 0x00, 0xAA, 0x88, 0x05, 0x00, 0x00, 0xDC, 0x05, 0x00, 0xAA, 0x82, 0x06, 0x00, 0x00, 0xFB, 0x04, 0x00, -0x00, 0x46, 0x05, 0x00, 0x00, 0xDC, 0x05, 0x00, 0x3B, 0x89, 0x16, 0x00, 0x4F, 0x48, 0x14, 0x00, 0xC7, 0xD9, 0x0A, 0x00, -0x00, 0xC4, 0x09, 0x00, 0x0D, 0x02, 0x05, 0x00, 0xD9, 0x81, 0x04, 0x00, 0x07, 0x81, 0x02, 0x00, 0xEC, 0x40, 0x02, 0x00, -0x9E, 0x44, 0x0B, 0x00, 0x27, 0x24, 0x0A, 0x00, 0xE4, 0x6C, 0x05, 0x00, 0x00, 0xE2, 0x04, 0x00, 0x07, 0x81, 0x02, 0x00, -0xEC, 0x40, 0x02, 0x00, 0x83, 0x40, 0x01, 0x00, 0x76, 0x20, 0x01, 0x00, 0x14, 0x83, 0x07, 0x00, 0xC5, 0xC2, 0x06, 0x00, -0xED, 0x9D, 0x03, 0x00, 0x55, 0x41, 0x03, 0x00, 0x5A, 0xAB, 0x01, 0x00, 0x9E, 0x80, 0x01, 0x00, 0xAD, 0xD5, 0x00, 0x00, -0x4F, 0xC0, 0x00, 0x00, 0x4F, 0xA2, 0x05, 0x00, 0x14, 0x12, 0x05, 0x00, 0x72, 0xB6, 0x02, 0x00, 0x00, 0x71, 0x02, 0x00, -0x83, 0x40, 0x01, 0x00, 0x76, 0x20, 0x01, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3B, 0x90, 0x00, 0x00, 0x8A, 0xC1, 0x03, 0x00, -0x62, 0x61, 0x03, 0x00, 0xF7, 0xCE, 0x01, 0x00, 0xAB, 0xA0, 0x01, 0x00, 0xAD, 0xD5, 0x00, 0x00, 0x4F, 0xC0, 0x00, 0x00, -0xD6, 0x6A, 0x00, 0x00, 0x27, 0x60, 0x00, 0x00, 0x27, 0xD1, 0x02, 0x00, 0x0A, 0x89, 0x02, 0x00, 0x39, 0x5B, 0x01, 0x00, -0x80, 0x38, 0x01, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3B, 0x90, 0x00, 0x00, 0x21, 0x50, 0x00, 0x00, 0x1E, 0x48, 0x00, 0x00, -0x07, 0x81, 0x02, 0x00, 0xEC, 0x40, 0x02, 0x00, 0xA4, 0x34, 0x01, 0x00, 0xC7, 0x15, 0x01, 0x00, 0x73, 0x8E, 0x00, 0x00, -0x35, 0x80, 0x00, 0x00, 0x3A, 0x47, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, 0xEC, 0x40, 0x02, 0x00, 0x3B, 0x07, 0x02, 0x00, -0xC7, 0x15, 0x01, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x35, 0x80, 0x00, 0x00, 0x62, 0x73, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, -0xB1, 0x39, 0x00, 0x00, 0xC5, 0xE0, 0x01, 0x00, 0xB1, 0xB0, 0x01, 0x00, 0x7B, 0xE7, 0x00, 0x00, 0x55, 0xD0, 0x00, 0x00, -0xD6, 0x6A, 0x00, 0x00, 0x27, 0x60, 0x00, 0x00, 0x6B, 0x35, 0x00, 0x00, 0x14, 0x30, 0x00, 0x00, 0xB1, 0xB0, 0x01, 0x00, -0x6C, 0x85, 0x01, 0x00, 0x55, 0xD0, 0x00, 0x00, 0x80, 0xBB, 0x00, 0x00, 0x27, 0x60, 0x00, 0x00, 0x8A, 0x56, 0x00, 0x00, -0x14, 0x30, 0x00, 0x00, 0x45, 0x2B, 0x00, 0x00, 0x00, 0x6A, 0x18, 0x00, 0xE0, 0x4B, 0x10, 0x00, 0x00, 0x35, 0x0C, 0x00, -0xC0, 0x2D, 0x08, 0x00, 0x80, 0x1A, 0x06, 0x00, 0xE0, 0x16, 0x04, 0x00, 0x40, 0x0D, 0x03, 0x00, 0x20, 0xBF, 0x02, 0x00, -0x24, 0xCE, 0x15, 0x00, 0xB4, 0xCE, 0x15, 0x00, 0x94, 0xCD, 0x15, 0x00, 0xB8, 0xD0, 0x15, 0x00, 0x03, 0x00, 0x00, 0x00, -0x00, 0x28, 0x00, 0x00, 0x39, 0x4B, 0x15, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x15, 0x4C, 0x15, 0x00, 0x01, 0x10, 0x00, 0x00, -0xD5, 0x4B, 0x15, 0x00, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x20, 0x3E, 0x3D, 0x20, 0x42, 0x43, 0x4E, 0x5F, 0x46, 0x49, 0x58, -0x45, 0x44, 0x5F, 0x53, 0x49, 0x5A, 0x45, 0x5F, 0x46, 0x49, 0x45, 0x4C, 0x44, 0x53, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, -0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x62, 0x75, 0x66, 0x5F, 0x6C, 0x65, -0x6E, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x73, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3E, 0x20, 0x30, 0x00, -0x21, 0x72, 0x6D, 0x5F, 0x6E, 0x6F, 0x5F, 0x6D, 0x6F, 0x72, 0x65, 0x5F, 0x6D, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x5F, -0x74, 0x6F, 0x5F, 0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x28, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x72, 0x65, 0x71, 0x75, -0x65, 0x73, 0x74, 0x2D, 0x3E, 0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x5F, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x3D, 0x3D, 0x20, -0x30, 0x29, 0x00, 0x00, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x6E, -0x74, 0x20, 0x3C, 0x3D, 0x20, 0x43, 0x4F, 0x5F, 0x41, 0x52, 0x52, 0x41, 0x59, 0x5F, 0x53, 0x49, 0x5A, 0x45, 0x28, 0x72, -0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x29, 0x00, 0x00, -0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, 0x3E, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x41, 0x43, -0x5F, 0x4D, 0x45, 0x41, 0x53, 0x5F, 0x52, 0x45, 0x51, 0x5F, 0x54, 0x59, 0x50, 0x45, 0x5F, 0x42, 0x45, 0x41, 0x43, 0x4F, -0x4E, 0x00, 0x00, 0x00, 0x72, 0x6D, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5F, 0x72, 0x65, -0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x3E, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x64, 0x69, 0x20, 0x53, 0x65, 0x70, 0x20, 0x31, -0x33, 0x20, 0x32, 0x30, 0x32, 0x32, 0x20, 0x31, 0x30, 0x3A, 0x34, 0x37, 0x3A, 0x31, 0x34, 0x20, 0x2D, 0x20, 0x67, 0x37, -0x34, 0x32, 0x30, 0x33, 0x31, 0x37, 0x31, 0x00, 0x76, 0x36, 0x2E, 0x34, 0x2E, 0x33, 0x2E, 0x31, 0x00, 0x00, 0x00, 0x00, -0xF8, 0xB5, 0x00, 0xBF, 0xF8, 0xBC, 0x08, 0xBC, 0x9E, 0x46, 0x70, 0x47, 0xF8, 0xB5, 0x00, 0xBF, 0xF8, 0xBC, 0x08, 0xBC, -0x9E, 0x46, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x74, 0x04, 0x17, 0x00, 0xDC, 0x04, 0x17, 0x00, 0x44, 0x05, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x33, 0xCD, 0xAB, -0x34, 0x12, 0x6D, 0xE6, 0xEC, 0xDE, 0x05, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x04, 0x0E, 0x20, 0x00, 0x30, 0x00, 0x00, 0x00, 0x5B, -0x4B, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x7B, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, -0x26, 0x00, 0x00, 0xF8, 0x11, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x19, 0x48, 0x20, 0x00, 0x00, 0x9C, 0x91, 0x01, 0x00, 0x08, -0x00, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x0A, 0x11, 0x44, 0x10, 0x08, 0x00, 0x80, 0x01, 0x38, 0x41, 0x46, 0x00, 0x0C, -0x14, 0x00, 0xD0, 0x08, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x17, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, -0x00, 0x00, 0x00, 0x3C, 0x1A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x38, 0x01, 0x00, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x08, -0x8E, 0x00, 0x08, 0x38, 0x50, 0x00, 0x00, 0x14, 0x20, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x40, 0x7B, 0x00, 0x00, 0xA4, -0x01, 0x01, 0x00, 0x00, 0x9F, 0x33, 0x00, 0x30, 0x00, 0x07, 0x00, 0x41, 0x20, 0x44, 0x10, 0x04, 0x00, 0x00, 0x00, 0x90, -0x00, 0x00, 0x00, 0x49, 0x2F, 0x84, 0x0E, 0xF0, 0x2C, 0x84, 0x0E, 0xEC, 0x2C, 0x84, 0x0E, 0xEC, 0x32, 0x00, 0x00, 0x04, -0x00, 0x00, 0x00, 0x30, 0x01, 0x01, 0x00, 0x48, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x02, 0x02, 0x00, 0x48, -0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x46, 0x11, 0x00, 0x00, 0x04, 0x06, 0x00, 0x01, 0x58, -0x72, 0x04, 0x04, 0x3D, 0x39, 0x44, 0x20, 0xDC, 0xD2, 0xD4, 0x1D, 0x08, 0x06, 0x00, 0x0A, 0x48, 0xDC, 0x44, 0x20, 0xDC, -0x3C, 0xD4, 0x1D, 0x08, 0x04, 0x00, 0x05, 0x38, 0xC3, 0xF1, 0xF1, 0x0E, 0xDC, 0x44, 0x20, 0x34, 0x00, 0x00, 0x00, 0x30, -0x00, 0x00, 0x00, 0x01, 0x42, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x45, 0x44, 0x10, 0x04, -0x00, 0x80, 0x00, 0x38, 0x9C, 0x10, 0x00, 0x22, 0x48, 0x44, 0x10, 0x08, 0x00, 0x80, 0x00, 0x38, 0x9C, 0x50, 0xD4, 0x23, -0x17, 0x44, 0x10, 0x08, 0x00, 0xA0, 0x00, 0x90, 0x00, 0x00, 0x00, 0x32, 0x63, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 0x14, -0x51, 0x00, 0x00, 0x1C, 0x57, 0x00, 0x00, 0x10, 0x00, 0x80, 0x02, 0x38, 0x01, 0x00, 0x00, 0x0C, 0x66, 0x44, 0xD0, 0x08, -0x0F, 0x20, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x38, 0x01, 0x26, 0x00, 0x0C, -0x5A, 0x44, 0xD0, 0x08, 0x00, 0x00, 0x00, 0x30, 0x30, 0x02, 0x02, 0x3D, 0x5D, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, -0x00, 0x01, 0x00, 0x3E, 0x66, 0x00, 0x00, 0x04, 0x00, 0x80, 0x02, 0x38, 0x01, 0x16, 0x00, 0x0C, 0x66, 0x44, 0x20, 0x34, -0x00, 0x80, 0x02, 0x38, 0x01, 0x0A, 0x00, 0x0C, 0x66, 0x44, 0x20, 0x34, 0x04, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0xFF, -0x7B, 0x00, 0x00, 0x08, 0x2F, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x26, 0x6C, 0x00, 0x00, 0x08, 0xAF, 0x04, 0x04, 0x38, -0x10, 0x10, 0x19, 0x1F, 0x6F, 0x00, 0x00, 0x08, 0xAF, 0x0C, 0x00, 0x20, 0x71, 0x00, 0x00, 0x04, 0xAF, 0x0C, 0x00, 0x60, -0x79, 0x00, 0x70, 0x18, 0x77, 0x00, 0x00, 0x14, 0x75, 0x00, 0x00, 0x10, 0xAF, 0x0C, 0x14, 0x28, 0x84, 0x00, 0xB0, 0x09, -0xAF, 0x0C, 0x0A, 0x28, 0x84, 0x00, 0xB0, 0x09, 0xAF, 0x0C, 0x06, 0x28, 0x84, 0x00, 0xB0, 0x09, 0x86, 0x80, 0x04, 0x28, -0x7D, 0x00, 0x00, 0x08, 0x86, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x22, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, -0x01, 0xF1, 0xF1, 0x0E, 0x83, 0x48, 0x00, 0x36, 0x00, 0x00, 0x02, 0x28, 0x85, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x02, 0x38, -0x31, 0x04, 0x04, 0x3D, 0x88, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x05, 0x38, 0x21, 0x18, 0x24, 0x1F, 0x8B, 0x00, 0x00, 0x08, -0x8E, 0x00, 0x00, 0x30, 0x21, 0x30, 0x16, 0xA0, 0x8E, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, 0x12, 0x00, 0xF1, 0x0E, -0x91, 0x00, 0x00, 0x34, 0xCC, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x50, 0x94, 0x00, 0x00, 0x04, 0xFE, 0x95, 0x00, 0x38, -0x00, 0x00, 0x01, 0x32, 0x97, 0x00, 0x00, 0x04, 0xFE, 0x1F, 0x00, 0x50, 0x00, 0x00, 0x01, 0x5A, 0x9B, 0x98, 0xC9, 0x6D, -0xB9, 0xD4, 0x19, 0xFC, 0x86, 0x01, 0x00, 0x30, 0x73, 0x03, 0x84, 0x3D, 0x9E, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, -0x00, 0x00, 0x00, 0x0A, 0xA1, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x22, 0xA4, 0x00, 0x00, 0x04, -0x8E, 0x02, 0x00, 0x90, 0x01, 0x00, 0x01, 0x32, 0xAA, 0x00, 0x40, 0x8E, 0xB0, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x30, 0x01, 0x00, 0x01, 0x32, 0xCB, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, -0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0xB6, 0x19, 0x00, 0x30, 0x00, 0x00, 0x01, 0x32, 0xB3, 0x00, 0x00, 0x04, -0xB6, 0x19, 0x00, 0x30, 0x31, 0x04, 0x04, 0x3D, 0xB6, 0x00, 0x00, 0x04, 0xB6, 0x19, 0x00, 0x30, 0x00, 0x00, 0x80, 0x22, -0x97, 0x00, 0x00, 0x04, 0x86, 0x01, 0x00, 0x30, 0x73, 0x04, 0x84, 0x3D, 0xBC, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, -0x00, 0x00, 0x03, 0x29, 0xBF, 0x00, 0x00, 0x04, 0x8E, 0x02, 0xEE, 0x9A, 0x00, 0x01, 0x01, 0x32, 0xC5, 0x00, 0x00, 0x7C, -0xB0, 0x00, 0x00, 0xCC, 0xB0, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x30, 0x00, 0x01, 0x01, 0x32, -0xC8, 0x00, 0x00, 0x04, 0x8E, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0x8E, 0x03, 0x00, 0x50, -0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0x35, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x01, 0x38, 0x72, 0x04, 0x04, 0x3D, -0xD2, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x30, 0x41, 0xF1, 0xF1, 0x0E, 0xD5, 0x00, 0x00, 0x34, 0x04, 0x00, 0x04, 0x28, -0xD7, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x28, 0xD9, 0x00, 0x00, 0x08, 0x8E, 0x01, 0x00, 0x30, 0x52, 0x00, 0xF1, 0x0E, -0xDC, 0x00, 0x00, 0x34, 0x8E, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0x00, 0x00, 0x02, 0x38, -0x00, 0x00, 0x00, 0x32, 0xE2, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x60, 0xE6, 0x00, 0x00, 0xD8, 0xE9, 0x00, 0x00, 0xD4, -0xEC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x21, 0xF1, 0xF1, 0x0E, 0xEF, 0x48, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, -0x21, 0x24, 0x00, 0x0C, 0xEF, 0x48, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x21, 0x00, 0x00, 0x0C, 0xEF, 0x48, 0x00, 0x36, -0x00, 0x00, 0x02, 0x28, 0x7B, 0x00, 0x00, 0x08, 0xFE, 0x1E, 0x00, 0x50, 0x00, 0x00, 0x01, 0x5A, 0xF5, 0x98, 0xC9, 0x6D, -0xF8, 0xD4, 0x19, 0xFC, 0x8E, 0x02, 0x00, 0x30, 0x40, 0x00, 0x00, 0x32, 0xFB, 0x00, 0x00, 0x04, 0x8E, 0x02, 0xEE, 0x3A, -0x80, 0x00, 0x00, 0x32, 0xFB, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x01, 0xF1, 0xF1, 0x0E, 0xFE, 0x48, 0x00, 0x36, -0x00, 0x00, 0x02, 0x28, 0x00, 0x01, 0x00, 0x08, 0x8E, 0x00, 0x02, 0x38, 0x31, 0x04, 0x04, 0x3D, 0x03, 0x01, 0x00, 0x08, -0x8E, 0x00, 0x05, 0x38, 0x21, 0x18, 0x24, 0x1F, 0x06, 0x01, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x30, 0x21, 0x30, 0x16, 0xA0, -0x09, 0x01, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, 0x12, 0x00, 0xF1, 0x0E, 0x0C, 0x01, 0x00, 0x34, 0xF6, 0x14, 0x00, 0x30, -0x00, 0x00, 0x01, 0x32, 0x14, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x11, 0x01, 0x00, 0x04, 0xEC, 0x00, 0x00, 0x30, -0x00, 0x00, 0x00, 0x50, 0xF1, 0x00, 0x00, 0x04, 0xF6, 0x14, 0x00, 0x30, 0x00, 0x00, 0x03, 0x32, 0x17, 0x01, 0x00, 0x04, -0x86, 0x10, 0x00, 0x30, 0x73, 0x04, 0x84, 0x3D, 0x1A, 0x01, 0x00, 0x04, 0x8E, 0x10, 0x00, 0x50, 0x00, 0x00, 0xC0, 0x22, -0xCB, 0xC0, 0x47, 0x8E, 0x1E, 0x01, 0x30, 0xCB, 0xB6, 0x19, 0x00, 0x30, 0x00, 0x00, 0x04, 0x32, 0x21, 0x01, 0x00, 0x04, -0xB6, 0x19, 0x00, 0x30, 0x31, 0x04, 0x04, 0x3D, 0x24, 0x01, 0x00, 0x04, 0xB6, 0x19, 0x00, 0x30, 0x00, 0x00, 0x80, 0x22, -0x11, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x30, -0x73, 0x04, 0x84, 0x3D, 0x2D, 0x01, 0x00, 0x04, 0x8E, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, -0x31, 0x01, 0x00, 0xC0, 0x0E, 0x80, 0x0C, 0x38, 0x00, 0x00, 0x00, 0xFF, 0x34, 0x01, 0x00, 0x08, 0x04, 0x00, 0x00, 0x30, -0x03, 0xF1, 0xF1, 0x0F, 0x37, 0x01, 0x00, 0x34, 0x00, 0x00, 0x02, 0x28, 0x39, 0x01, 0x00, 0x08, 0x8E, 0x03, 0x00, 0x30, -0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x06, 0x00, 0x01, 0x58, 0x72, 0x04, 0x04, 0x3D, 0x43, 0x45, 0x20, 0xDC, 0xD2, 0xD4, 0x1D, 0x08, 0x06, 0x00, 0x0A, 0x48, -0xDC, 0x44, 0x20, 0xDC, 0x46, 0xD5, 0x1D, 0x08, 0x04, 0x00, 0x05, 0x38, 0x41, 0xF1, 0xF1, 0x0E, 0xDC, 0x44, 0x20, 0x34, -0x0E, 0x80, 0x02, 0x28, 0xDC, 0x00, 0x00, 0x08, 0x35, 0x00, 0x00, 0x48, 0x4A, 0x01, 0x00, 0x04, 0x8F, 0x63, 0x96, 0x78, -0x0F, 0x00, 0x00, 0x41, 0x4F, 0x01, 0x00, 0x8C, 0xC4, 0x50, 0x04, 0x08, 0x74, 0x45, 0x10, 0x90, 0x0F, 0x62, 0xC8, 0x88, -0x5A, 0x01, 0x00, 0xC0, 0x74, 0x45, 0x10, 0x90, 0x54, 0x45, 0x10, 0x08, 0x57, 0x45, 0x10, 0x94, 0x8F, 0x62, 0x00, 0x30, -0x00, 0x00, 0x00, 0x29, 0x7A, 0x51, 0x04, 0x94, 0x8F, 0x63, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, 0x7A, 0x45, 0x10, 0x04, -0x05, 0xE0, 0x00, 0x38, 0x31, 0x01, 0x01, 0x3D, 0x5D, 0x45, 0x10, 0x08, 0x0F, 0x60, 0x32, 0xA8, 0x74, 0x45, 0x10, 0x90, -0x54, 0x01, 0x00, 0x08, 0x57, 0x45, 0x10, 0x94, 0x67, 0x45, 0x10, 0xC6, 0x63, 0x55, 0x18, 0xC4, 0x0F, 0xE0, 0x02, 0x58, -0x07, 0xEA, 0xEE, 0x0F, 0x74, 0x01, 0x00, 0x80, 0x6B, 0x45, 0x20, 0x34, 0x0F, 0xE0, 0x02, 0x58, 0x07, 0xEA, 0xEE, 0x0E, -0x74, 0x01, 0x00, 0x80, 0x6B, 0x45, 0x20, 0x34, 0x00, 0x40, 0x00, 0x30, 0x01, 0x00, 0x00, 0x33, 0x6E, 0x01, 0x00, 0x04, -0x05, 0x40, 0x03, 0x38, 0x73, 0x03, 0x03, 0x3D, 0x71, 0x01, 0x00, 0x08, 0x07, 0x60, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, -0x74, 0x01, 0x00, 0x04, 0x8F, 0x60, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, 0x77, 0x51, 0x04, 0x94, 0x8F, 0x60, 0x00, 0x40, -0x7D, 0x45, 0x10, 0xA0, 0x7A, 0x45, 0x10, 0x04, 0x8F, 0x60, 0x00, 0x30, 0x01, 0x01, 0x00, 0x64, 0x11, 0x44, 0x10, 0x04, -0x8F, 0x60, 0x00, 0x30, 0x01, 0x01, 0x00, 0x64, 0x80, 0x45, 0x10, 0x04, 0x8F, 0x61, 0x00, 0x30, 0x01, 0x00, 0x00, 0x42, -0x83, 0x01, 0x00, 0x04, 0x00, 0x80, 0x02, 0x38, 0x00, 0x00, 0x00, 0x32, 0x86, 0x45, 0x10, 0x08, 0x8F, 0x61, 0x0A, 0x28, -0x88, 0x01, 0x00, 0x08, 0x8F, 0x61, 0x0A, 0x48, 0x8B, 0x01, 0x00, 0xBC, 0x8E, 0x01, 0x00, 0x08, 0x8F, 0x61, 0x00, 0x30, -0x01, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x04, 0x8F, 0x61, 0x00, 0x30, 0x00, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x04, -0x8F, 0x00, 0x00, 0x30, 0x0F, 0xED, 0xEA, 0x0E, 0x94, 0x01, 0x00, 0x36, 0x00, 0x80, 0x03, 0x38, 0x00, 0x00, 0x00, 0x34, -0x97, 0x01, 0x00, 0x08, 0x05, 0x80, 0x02, 0x38, 0x02, 0x00, 0x01, 0x29, 0x9A, 0x01, 0x00, 0x08, 0x8F, 0x02, 0x00, 0x30, -0x9C, 0x20, 0x00, 0x22, 0x9D, 0x01, 0x00, 0x04, 0x8F, 0x02, 0x00, 0x30, 0x9C, 0x50, 0xD4, 0x23, 0xA0, 0x01, 0x00, 0x04, -0x8F, 0x02, 0x14, 0x28, 0xA2, 0x01, 0x00, 0x08, 0x8F, 0x02, 0x00, 0x30, 0x01, 0x02, 0x01, 0x43, 0xA5, 0x01, 0x00, 0x04, -0x8F, 0x12, 0x00, 0x30, 0x00, 0x01, 0x00, 0x32, 0xA8, 0x01, 0x00, 0x04, 0x8F, 0x13, 0xEE, 0x5A, 0x0F, 0x00, 0x00, 0x41, -0xAC, 0x01, 0x00, 0x7C, 0xF9, 0x00, 0x00, 0x08, 0x8F, 0x13, 0x2C, 0x59, 0x00, 0x00, 0x00, 0x29, 0xB0, 0x01, 0x00, 0x8C, -0xF9, 0x00, 0x00, 0x08, 0x8F, 0x13, 0x00, 0x20, 0x11, 0x50, 0x04, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x76, 0x76, 0x00, 0x70, 0xF8, 0xF8, 0x1D, -0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, 0x72, 0x6E, 0x6E, 0x00, 0x69, 0xF8, 0xF8, 0x1D, -0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, 0x7B, 0x76, 0x76, 0x00, 0x70, 0xF8, 0xF8, 0x1D, -0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, 0x85, 0x7E, 0x7E, 0x00, 0x76, 0xF8, 0xF4, 0x1D, -0x76, 0xF8, 0xF4, 0x1D, 0x76, 0xF8, 0xF4, 0x1D, 0x76, 0xF8, 0xF8, 0x1D, 0x8A, 0x81, 0x81, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, -0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x8D, 0x81, 0x81, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, -0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x8A, 0x81, 0x81, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, -0x7C, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x40, 0x7E, 0x7E, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, -0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x92, 0x8B, 0x8B, 0x00, 0x87, 0xF8, 0xF8, 0x1D, -0x89, 0xF8, 0xF8, 0x1D, 0x87, 0xF8, 0xF8, 0x1D, 0x87, 0xF8, 0xF8, 0x1D, 0x55, 0x51, 0x51, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x89, 0xF8, 0xF8, 0x1D, 0x89, 0xF8, 0xF8, 0x1D, 0x54, 0x51, 0x51, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x88, 0xF8, 0xF8, 0x1D, 0x88, 0xF8, 0xF8, 0x1D, 0x53, 0x4F, 0x4F, 0x00, 0x4A, 0xF8, 0xF8, 0x1D, -0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x53, 0x4F, 0x4F, 0x00, 0x4A, 0xF8, 0xF8, 0x1D, -0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x53, 0x4F, 0x4F, 0x00, 0x4A, 0xF8, 0xF8, 0x1D, -0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x53, 0x4E, 0x4E, 0x00, 0x49, 0xF8, 0xF8, 0x1D, -0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x52, 0x4D, 0x4D, 0x00, 0x47, 0xF8, 0xF8, 0x1D, -0x47, 0xF8, 0xF8, 0x1D, 0x47, 0xF8, 0xF8, 0x1D, 0x47, 0xF8, 0xF8, 0x1D, 0x55, 0x4F, 0x4F, 0x00, 0x4B, 0xF8, 0xF8, 0x1D, -0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x53, 0x4E, 0x4E, 0x00, 0x49, 0xF8, 0xF8, 0x1D, -0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x4D, 0x49, 0x49, 0x00, 0x44, 0xF8, 0xF8, 0x1D, -0x44, 0xF8, 0xF8, 0x1D, 0x44, 0xF8, 0xF8, 0x1D, 0x44, 0xF8, 0xF8, 0x1D, 0x8F, 0x51, 0x51, 0x00, 0x49, 0xF8, 0xF8, 0x1D, -0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x77, 0x42, 0x42, 0x00, 0x3F, 0xF8, 0xF8, 0x1D, -0x3C, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, 0x75, 0x42, 0x42, 0x00, 0x9E, 0xF8, 0xF8, 0x1D, -0x3C, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, 0x5C, 0x55, 0x55, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x5C, 0x53, 0x53, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, -0x4B, 0xF8, 0xF8, 0x1D, 0x4B, 0xF8, 0xF8, 0x1D, 0x4B, 0xF8, 0xF8, 0x1D, 0x9E, 0xF8, 0xF8, 0x00, 0x8C, 0xF8, 0xF8, 0x1D, -0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x40, 0x89, 0x89, 0x00, 0x46, 0xF8, 0xF8, 0x18, -0x45, 0xF8, 0xCF, 0x18, 0x44, 0xF8, 0xCF, 0x18, 0x44, 0xF8, 0xCF, 0x18, 0x5F, 0x56, 0x56, 0x00, 0x4F, 0xF8, 0xF8, 0x1D, -0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, 0x5E, 0x55, 0x55, 0x00, 0x4E, 0xF8, 0xF8, 0x1D, -0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x5F, 0x56, 0x56, 0x00, 0x4F, 0xF8, 0xF8, 0x1D, -0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, 0x61, 0x55, 0x55, 0x00, 0x50, 0xF8, 0xF8, 0x1D, -0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x5F, 0x53, 0x53, 0x00, 0x4D, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x5F, 0x55, 0x55, 0x00, 0x4F, 0xF8, 0xF8, 0x1D, -0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0xAA, 0x55, 0x55, 0x00, 0x54, 0xF8, 0xF8, 0x1D, -0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0xA6, 0x59, 0x59, 0x00, 0x4D, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x9B, 0x4F, 0x4F, 0x00, 0x4E, 0xF8, 0xF8, 0x1D, -0x46, 0xF8, 0xF8, 0x1D, 0x46, 0xF8, 0xF8, 0x1D, 0x46, 0xF8, 0xF8, 0x1D, 0xA5, 0xF8, 0xF8, 0x00, 0x94, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0xA4, 0x98, 0x98, 0x00, 0x4D, 0xF8, 0xF8, 0x1D, -0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x86, 0x46, 0x46, 0x00, 0xB3, 0xF8, 0xF8, 0x1D, -0x3D, 0xF8, 0xF8, 0x1D, 0x3D, 0xF8, 0xF8, 0x1D, 0x3D, 0xF8, 0xF8, 0x1D, 0x40, 0x8E, 0x8E, 0x00, 0x48, 0xF8, 0xF8, 0x1A, -0x48, 0xF8, 0xDF, 0x1A, 0x46, 0xF8, 0xDF, 0x1A, 0x46, 0xF8, 0xDF, 0x1A, 0x40, 0x7F, 0x7F, 0x00, 0x75, 0xD2, 0xD2, 0x18, -0x3A, 0xD2, 0xD2, 0x18, 0x3A, 0xD2, 0xD2, 0x18, 0x39, 0xD2, 0xD2, 0x18, 0x40, 0x45, 0x45, 0x00, 0x64, 0x86, 0x86, 0x0F, -0x3E, 0x86, 0x86, 0x0F, 0x3D, 0x86, 0x86, 0x0F, 0x3D, 0x86, 0x86, 0x0F, 0x64, 0x5C, 0x5C, 0x00, 0x56, 0xF8, 0xF8, 0x1D, -0x55, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, 0x68, 0x5B, 0x5B, 0x00, 0x58, 0xF8, 0xF8, 0x1D, -0x55, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, 0x64, 0x5A, 0x5A, 0x00, 0x55, 0xF8, 0xF8, 0x1D, -0x54, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, 0xB5, 0x5A, 0x5A, 0x00, 0x5B, 0xF8, 0xF8, 0x1D, -0x55, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, 0xB0, 0xF8, 0xF8, 0x00, 0xA3, 0xF8, 0xF8, 0x1D, -0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, 0xAE, 0xA4, 0xA4, 0x00, 0x54, 0xF8, 0xF8, 0x1D, -0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, 0x40, 0x9A, 0x9A, 0x00, 0x4E, 0xF8, 0xF8, 0x1D, -0x4D, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x40, 0x9C, 0x9C, 0x00, 0x95, 0xF8, 0xF8, 0x1D, -0x49, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x40, 0x49, 0x49, 0x00, 0x6F, 0x97, 0x97, 0x11, -0x42, 0x97, 0x97, 0x11, 0x41, 0x97, 0x97, 0x11, 0x41, 0x97, 0x97, 0x11, 0x74, 0x6E, 0x6E, 0x00, 0x69, 0xF8, 0xF8, 0x1D, -0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, 0x40, 0x6E, 0x6E, 0x00, 0x69, 0xF8, 0xDE, 0x1A, -0x69, 0xF8, 0xDE, 0x1A, 0x69, 0xF8, 0xDE, 0x1A, 0x69, 0xF8, 0xDE, 0x1A, 0x40, 0x75, 0x75, 0x00, 0x6E, 0xF8, 0x78, 0x0D, -0x6E, 0xF8, 0x78, 0x0D, 0x6E, 0xF8, 0x78, 0x0D, 0x6E, 0xF8, 0x79, 0x0D, 0x85, 0x78, 0x78, 0x00, 0x73, 0xF8, 0xF8, 0x1D, -0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, 0x40, 0x78, 0x78, 0x00, 0x73, 0xF8, 0xF8, 0x1D, -0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, 0x40, 0x78, 0x78, 0x00, 0x73, 0xF8, 0x81, 0x0E, -0x73, 0xF8, 0x81, 0x0E, 0x73, 0xF8, 0x81, 0x0E, 0x73, 0xF8, 0x82, 0x0E, 0x40, 0x40, 0x40, 0x00, 0x73, 0xF8, 0x82, 0x0E, -0x73, 0xF8, 0x82, 0x0E, 0x73, 0xF8, 0x82, 0x0E, 0x73, 0xF8, 0x82, 0x0E, 0x40, 0x81, 0x81, 0x00, 0x7E, 0xF8, 0x92, 0x10, -0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, 0x40, 0x40, 0x40, 0x00, 0x7E, 0xF8, 0x92, 0x10, -0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, 0x40, 0x73, 0x73, 0x00, 0x6B, 0xB2, 0xB2, 0x14, -0x35, 0xB2, 0xB2, 0x14, 0x35, 0xB2, 0xB2, 0x14, 0x35, 0xB2, 0xB2, 0x14, 0x40, 0x40, 0x40, 0x00, 0x60, 0x82, 0x82, 0x0E, -0x3D, 0x82, 0x82, 0x0E, 0x3C, 0x82, 0x82, 0x0E, 0x3C, 0x82, 0x82, 0x0E, 0x40, 0x40, 0x40, 0x00, 0x66, 0x8B, 0x8B, 0x0F, -0x3F, 0x8B, 0x8B, 0x0F, 0x3D, 0x8B, 0x8B, 0x0F, 0x3D, 0x8B, 0x8B, 0x0F, 0x40, 0x40, 0x40, 0x00, 0x3D, 0x68, 0x68, 0x0B, -0x1E, 0x68, 0x68, 0x0B, 0x1E, 0x68, 0x68, 0x0B, 0x1E, 0x68, 0x68, 0x0B, 0x40, 0x22, 0x22, 0x00, 0x18, 0x43, 0x43, 0x06, -0x29, 0x43, 0x43, 0x06, 0x18, 0x43, 0x43, 0x06, 0x18, 0x43, 0x43, 0x06, 0x40, 0x40, 0x40, 0x00, 0x72, 0x9D, 0x9D, 0x12, -0x43, 0x9D, 0x9D, 0x12, 0x41, 0x9D, 0x9D, 0x12, 0x41, 0x9D, 0x9D, 0x12, 0x40, 0x40, 0x40, 0x00, 0x42, 0x75, 0x75, 0x0D, -0x20, 0x75, 0x75, 0x0D, 0x20, 0x75, 0x75, 0x0D, 0x20, 0x75, 0x75, 0x0D, 0x40, 0x23, 0x23, 0x00, 0x19, 0x4C, 0x4C, 0x08, -0x2C, 0x4C, 0x4C, 0x08, 0x19, 0x4C, 0x4C, 0x08, 0x19, 0x4C, 0x4C, 0x08, 0x38, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xA8, -0xB8, 0xC8, 0xD8, 0xF8, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0x08, 0x58, 0x68, 0x78, 0x88, -0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, 0x09, 0x01, 0x03, 0x1E, 0x00, 0x00, 0x75, 0x19, 0x03, 0x00, 0x75, 0x19, 0x03, -0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0xAC, 0x0F, 0x80, 0x80, 0x80, 0x80, -0x22, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0x8C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x39, 0x00, -0xB4, 0x00, 0x0F, 0x04, 0x62, 0x03, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, -0x61, 0x03, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x60, 0x23, 0x8D, 0x0F, -0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0xC4, 0x60, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, -0xB4, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xE3, 0x8C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0x39, 0x00, -0xB4, 0x00, 0x0F, 0x84, 0x60, 0xC3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, -0x60, 0xCB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xB3, 0x0C, 0x0E, -0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x44, 0x60, 0xD3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, -0x34, 0x3E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x44, 0x60, 0x1B, 0x0F, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x3E, 0x2A, 0x00, -0xB5, 0x5A, 0x3F, 0x04, 0x60, 0x9B, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xD8, 0x3E, 0x2A, 0x00, 0xB5, 0x5A, 0x3F, 0xC4, -0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x58, 0x3F, 0x2A, 0x00, 0xB5, 0x5A, 0x3F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, -0x80, 0x80, 0x80, 0x80, 0xD8, 0x3F, 0x2A, 0x00, 0xB5, 0x5A, 0x3F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, -0x22, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0xAC, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x22, 0x2E, 0x39, 0x00, -0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0x8C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x22, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, -0x62, 0x03, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x61, 0x03, 0x8D, 0x0F, -0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x60, 0x23, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, -0x58, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0xC4, 0x60, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x2E, 0x39, 0x00, -0xB4, 0x00, 0x0F, 0x44, 0x60, 0xE3, 0x8C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, -0x60, 0xC3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x22, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, 0x60, 0xCB, 0x0C, 0x0E, -0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xB3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, -0x34, 0x2E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x44, 0x60, 0xD3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x2A, 0x00, -0xB5, 0x5A, 0x2F, 0x44, 0x60, 0x1B, 0x0F, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x2E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x04, -0x60, 0x9B, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xD8, 0x2E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, -0x80, 0x80, 0x80, 0x80, 0x58, 0x2F, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, -0xD8, 0x2F, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x00, 0xBE, 0x7F, 0x00, -0x6C, 0x00, 0x0F, 0x03, 0x60, 0xE7, 0x0C, 0xE8, 0x80, 0x80, 0x80, 0x80, 0x00, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0x2F, 0x03, -0x60, 0xD7, 0x0C, 0xE8, 0x80, 0x80, 0x80, 0x80, 0x00, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0xEF, 0x03, 0x60, 0x9F, 0x0D, 0xE8, -0x80, 0x80, 0x80, 0x80, 0x6D, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0xEF, 0x83, 0x60, 0x9F, 0x0D, 0xE8, 0x80, 0x80, 0x80, 0x80, -0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, -0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x17, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, -0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x9B, 0x60, 0x9F, 0x0D, 0x68, -0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x2F, 0x1B, 0x60, 0x87, 0xEC, 0x79, 0x80, 0x80, 0x80, 0x80, -0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x87, 0xEC, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, -0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, -0x60, 0x07, 0x0D, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0x0D, 0x78, -0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x17, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, -0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, -0xFC, 0x00, 0xEF, 0x9B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x44, -0x70, 0xE3, 0xAC, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x84, 0x70, 0x63, 0x8C, 0x0F, -0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x44, 0x70, 0x03, 0x11, 0x0F, 0x80, 0x80, 0x80, 0x80, -0x46, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x84, 0x70, 0x43, 0x8D, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, -0xB4, 0x00, 0x19, 0x44, 0x70, 0xE3, 0x10, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0xC4, -0x70, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0x44, 0x70, 0xC3, 0x8C, 0x0E, -0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0x84, 0x70, 0x03, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, -0x34, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0x44, 0x70, 0xEB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0xB9, 0x00, -0xB4, 0x00, 0x19, 0x84, 0x70, 0xD3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x84, -0x70, 0xF3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x84, 0x70, 0x3B, 0x0D, 0x0E, -0x80, 0x80, 0x80, 0x80, 0xB4, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x44, 0x70, 0xBB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, -0xEB, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x04, 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3F, 0xAA, 0x00, -0xB5, 0x5A, 0x39, 0x04, 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x3F, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x04, -0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x70, 0xE3, 0xAC, 0x0F, -0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x70, 0x63, 0x8C, 0x0F, 0x80, 0x80, 0x80, 0x80, -0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x70, 0x03, 0x11, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, -0xB4, 0x00, 0x0F, 0x84, 0x70, 0x43, 0x8D, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, -0x70, 0xE3, 0x10, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x58, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0xC4, 0x70, 0xE3, 0x0C, 0x0F, -0x80, 0x80, 0x80, 0x80, 0xB4, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x70, 0xC3, 0x8C, 0x0E, 0x80, 0x80, 0x80, 0x80, -0x46, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x70, 0x03, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0xB9, 0x00, -0xB4, 0x00, 0x0F, 0x44, 0x70, 0xEB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0x84, -0x70, 0xD3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x84, 0x70, 0xF3, 0x0C, 0x0E, -0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x84, 0x70, 0x3B, 0x0D, 0x0E, 0x80, 0x80, 0x80, 0x80, -0xB4, 0x2E, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x44, 0x70, 0xBB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x2E, 0xAA, 0x00, -0xB5, 0x5A, 0x2F, 0x04, 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x2F, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x04, -0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x2F, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x04, 0x70, 0xFB, 0x11, 0x0E, -0x7F, 0xC1, 0x9F, 0x00, 0x0A, 0x01, 0x82, 0x00, 0x0C, 0x81, 0x82, 0x00, 0x10, 0x81, 0x82, 0x00, 0x10, 0x01, 0x83, 0x00, -0x16, 0x01, 0x83, 0x00, 0x16, 0x01, 0x84, 0x00, 0x60, 0x01, 0x84, 0x00, 0x67, 0x01, 0x93, 0x00, 0x67, 0x41, 0x99, 0x00, -0x7F, 0x41, 0x99, 0x00, 0x7F, 0xC1, 0x99, 0x00, 0x7F, 0x81, 0x9A, 0x00, 0x7F, 0x81, 0x9B, 0x00, 0x3F, 0xC1, 0x9C, 0x00, -0x3F, 0xC1, 0x8F, 0x00, 0x08, 0x01, 0x82, 0x00, 0x0A, 0x01, 0x82, 0x00, 0x0C, 0x81, 0x82, 0x00, 0x10, 0x81, 0x82, 0x00, -0x10, 0x01, 0x83, 0x00, 0x16, 0x01, 0x83, 0x00, 0x16, 0x01, 0x84, 0x00, 0x20, 0x01, 0x84, 0x00, 0x20, 0x01, 0x85, 0x00, -0x20, 0x01, 0x8C, 0x00, 0x27, 0x81, 0x8C, 0x00, 0x27, 0x01, 0x8E, 0x00, 0x27, 0x01, 0x9B, 0x00, 0x3F, 0x01, 0x9B, 0x00, -0x3F, 0xC1, 0x9C, 0x00, 0x3F, 0xC1, 0x8F, 0x00, 0x00, 0xC6, 0xFF, 0x00, 0x00, 0xC6, 0x40, 0x00, 0x00, 0x06, 0x41, 0x00, -0x00, 0x46, 0x41, 0x00, 0x00, 0x86, 0x90, 0x00, 0x00, 0xC6, 0x90, 0x00, 0x00, 0x06, 0xB1, 0x00, 0x00, 0x46, 0xB1, 0x00, -0x00, 0x86, 0xB1, 0x00, 0x00, 0x06, 0xB2, 0x00, 0x00, 0xC6, 0xB2, 0x00, 0x00, 0x46, 0xB9, 0x00, 0x00, 0xC6, 0xB9, 0x00, -0x00, 0x46, 0xBA, 0x00, 0x00, 0x46, 0xBB, 0x00, 0x00, 0xC6, 0xBC, 0x00, 0x82, 0x01, 0x83, 0x01, 0x40, 0x02, 0x41, 0x02, -0x80, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, 0x02, 0x40, 0x03, 0x41, 0x03, 0x80, 0x03, 0x81, 0x03, 0x00, 0x04, 0x01, 0x04, -0x40, 0x04, 0x41, 0x04, 0x60, 0x60, 0x00, 0x00, 0x3B, 0x18, 0xB3, 0x03, 0x68, 0x51, 0x2E, 0x1A, 0x48, 0x51, 0x2E, 0x1A, -0x00, 0x00, 0x00, 0x00, 0x84, 0x18, 0x20, 0x56, 0x84, 0x18, 0x20, 0x56, 0x00, 0x00, 0x00, 0x00, 0x08, 0x50, 0x2A, 0x7A, -0xC8, 0x50, 0x1B, 0x79, 0xC8, 0xD0, 0x2A, 0x7A, 0x40, 0x40, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x64, 0x32, 0x00, 0x00, -0x00, 0x87, 0x93, 0x03, 0x00, 0x20, 0x03, 0x00, 0x00, 0x20, 0x03, 0x00, 0x30, 0x75, 0x00, 0x00, 0xB0, 0xAD, 0x01, 0x00, -0x20, 0xA1, 0x07, 0x00, 0x20, 0xA1, 0x07, 0x00, 0x20, 0xA1, 0x07, 0x00, 0x20, 0xA1, 0x07, 0x00, 0x10, 0x27, 0x00, 0x00, -0x40, 0x0D, 0x03, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x27, 0x50, 0xC3, 0xA0, 0x0F, 0x40, 0x1F, 0x84, 0x03, 0x05, 0x08, -0x01, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x1A, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x1A, 0x00, 0xE0, 0x57, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, -0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, -0x00, 0x00, 0x19, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x19, 0x00, 0xF4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xE0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0x71, 0x04, 0x00, 0x10, 0x0E, 0x00, -0x03, 0x01, 0x08, 0x8F, 0x03, 0xE6, 0xE0, 0xD0, 0xD6, 0x06, 0xD6, 0x06, 0x00, 0x00, 0x01, 0xF3, 0x01, 0x0A, 0x00, 0x0F, -0x08, 0x01, 0x09, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x09, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x03, 0x01, 0x00, 0x00, 0xBC, 0x06, 0x04, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x0A, 0x02, 0x04, -0x01, 0x00, 0xF0, 0x00, 0x08, 0x04, 0x00, 0x04, 0x04, 0x04, 0x09, 0x06, 0x04, 0x01, 0x04, 0x01, 0x05, 0x14, 0x38, 0x01, -0x38, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, -0x7D, 0xA6, 0x12, 0x00, 0x91, 0xA1, 0x12, 0x00, 0xA5, 0xA6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x99, 0xA1, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xA1, 0x12, 0x00, 0xD1, 0xA1, 0x12, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA3, 0x12, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x6D, 0x12, 0x00, 0x88, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, -0x05, 0xC7, 0x12, 0x00, 0xE1, 0xB8, 0x14, 0x00, 0x75, 0xBB, 0x14, 0x00, 0x2D, 0xBE, 0x14, 0x00, 0xE9, 0xBC, 0x14, 0x00, -0x81, 0xBC, 0x14, 0x00, 0x29, 0xAC, 0x14, 0x00, 0xFD, 0x0C, 0x15, 0x00, 0x1D, 0x0B, 0x15, 0x00, 0x6D, 0x08, 0x15, 0x00, -0x0D, 0x07, 0x15, 0x00, 0x59, 0xC8, 0x13, 0x00, 0xF5, 0xE7, 0x13, 0x00, 0xA1, 0xCE, 0x13, 0x00, 0x3D, 0xD1, 0x13, 0x00, -0x4D, 0xD0, 0x13, 0x00, 0xF9, 0xD0, 0x13, 0x00, 0x05, 0xDD, 0x13, 0x00, 0xF1, 0xDD, 0x13, 0x00, 0x95, 0xDE, 0x13, 0x00, -0x85, 0xE4, 0x13, 0x00, 0xF5, 0xE0, 0x13, 0x00, 0xC1, 0xE3, 0x13, 0x00, 0xED, 0xCE, 0x13, 0x00, 0x59, 0xD6, 0x13, 0x00, -0xF5, 0xD9, 0x13, 0x00, 0x3D, 0xD5, 0x13, 0x00, 0xA9, 0xD4, 0x13, 0x00, 0x91, 0xD8, 0x13, 0x00, 0x31, 0xD9, 0x13, 0x00, -0xC1, 0xD8, 0x13, 0x00, 0x21, 0xD4, 0x13, 0x00, 0x4D, 0xDB, 0x13, 0x00, 0x71, 0xCA, 0x13, 0x00, 0xE5, 0xC9, 0x13, 0x00, -0xAD, 0xC0, 0x13, 0x00, 0xCD, 0xC6, 0x13, 0x00, 0x39, 0xC0, 0x13, 0x00, 0x79, 0xD6, 0x13, 0x00, 0xE5, 0xD7, 0x13, 0x00, -0xF1, 0xC7, 0x13, 0x00, 0xDD, 0xE4, 0x13, 0x00, 0xA1, 0xE6, 0x13, 0x00, 0x21, 0xD2, 0x13, 0x00, 0x6D, 0xD4, 0x13, 0x00, -0x99, 0xEA, 0x13, 0x00, 0x71, 0x50, 0x14, 0x00, 0x71, 0x58, 0x14, 0x00, 0x25, 0x06, 0x12, 0x00, 0x7D, 0x4B, 0x14, 0x00, -0x19, 0x4B, 0x14, 0x00, 0xF9, 0x5E, 0x12, 0x00, 0xD1, 0x5E, 0x12, 0x00, 0xF1, 0x1C, 0x14, 0x00, 0x19, 0x1E, 0x14, 0x00, -0xE9, 0x14, 0x14, 0x00, 0xD9, 0x16, 0x14, 0x00, 0x91, 0x17, 0x14, 0x00, 0xC9, 0x1A, 0x14, 0x00, 0xF1, 0x19, 0x14, 0x00, -0x3D, 0x15, 0x14, 0x00, 0xA5, 0x1B, 0x14, 0x00, 0x25, 0x1B, 0x14, 0x00, 0x1D, 0x90, 0x12, 0x00, 0x7D, 0x93, 0x12, 0x00, -0xD1, 0x9E, 0x12, 0x00, 0x71, 0x8E, 0x12, 0x00, 0xF5, 0xAA, 0x12, 0x00, 0xC5, 0x78, 0x12, 0x00, 0x05, 0x69, 0x12, 0x00, -0x39, 0x69, 0x12, 0x00, 0x8D, 0x52, 0x12, 0x00, 0x7D, 0x50, 0x12, 0x00, 0xD9, 0x55, 0x12, 0x00, 0xC1, 0x51, 0x12, 0x00, -0x79, 0x51, 0x12, 0x00, 0x5D, 0xB2, 0x12, 0x00, 0x8D, 0x0C, 0x15, 0x00, 0x61, 0x4C, 0x14, 0x00, 0xF9, 0x0E, 0x12, 0x00, -0x49, 0x07, 0x12, 0x00, 0x55, 0x59, 0x14, 0x00, 0xD5, 0x58, 0x14, 0x00, 0x49, 0x5A, 0x14, 0x00, 0x05, 0x5A, 0x14, 0x00, -0xD9, 0x80, 0x14, 0x00, 0xD9, 0x5A, 0x14, 0x00, 0x45, 0x79, 0x14, 0x00, 0x7D, 0x7D, 0x13, 0x00, 0xA1, 0x78, 0x13, 0x00, -0xB5, 0x7E, 0x13, 0x00, 0xF1, 0x85, 0x13, 0x00, 0xD5, 0xB6, 0x13, 0x00, 0x91, 0xBC, 0x13, 0x00, 0xF1, 0xB5, 0x13, 0x00, -0x19, 0xBB, 0x13, 0x00, 0x5D, 0xBB, 0x13, 0x00, 0xD5, 0xBC, 0x13, 0x00, 0xDD, 0xB8, 0x13, 0x00, 0x8D, 0xB8, 0x13, 0x00, -0xFD, 0xBD, 0x13, 0x00, 0x21, 0xB8, 0x13, 0x00, 0xC5, 0x8C, 0x13, 0x00, 0x09, 0x8C, 0x13, 0x00, 0xE9, 0x72, 0x13, 0x00, -0x59, 0x87, 0x13, 0x00, 0xCD, 0x73, 0x13, 0x00, 0x31, 0x84, 0x13, 0x00, 0x25, 0x80, 0x13, 0x00, 0x35, 0x83, 0x13, 0x00, -0xFD, 0x80, 0x13, 0x00, 0xE9, 0x8B, 0x13, 0x00, 0x01, 0x8E, 0x13, 0x00, 0x55, 0x89, 0x13, 0x00, 0xD9, 0x89, 0x13, 0x00, -0x91, 0x7D, 0x13, 0x00, 0x4D, 0x75, 0x13, 0x00, 0xA5, 0xB3, 0x13, 0x00, 0x19, 0xB0, 0x13, 0x00, 0x01, 0xAF, 0x13, 0x00, -0x21, 0xAF, 0x13, 0x00, 0x25, 0x05, 0x14, 0x00, 0xA9, 0xFF, 0x13, 0x00, 0xB1, 0xFE, 0x13, 0x00, 0xC5, 0xFF, 0x13, 0x00, -0x81, 0xFF, 0x13, 0x00, 0x69, 0x06, 0x14, 0x00, 0x49, 0x03, 0x14, 0x00, 0x2D, 0x0A, 0x14, 0x00, 0x25, 0x08, 0x14, 0x00, -0x3D, 0x09, 0x14, 0x00, 0xF9, 0x07, 0x14, 0x00, 0x59, 0xFB, 0x13, 0x00, 0x35, 0x04, 0x14, 0x00, 0xF5, 0xF6, 0x13, 0x00, -0x89, 0xF4, 0x13, 0x00, 0xA5, 0x13, 0x12, 0x00, 0x5D, 0x10, 0x12, 0x00, 0xC1, 0x0B, 0x12, 0x00, 0x49, 0x11, 0x12, 0x00, -0x4D, 0x02, 0x12, 0x00, 0xDD, 0xEA, 0x13, 0x00, 0x01, 0xEE, 0x13, 0x00, 0xA9, 0xF0, 0x13, 0x00, 0x79, 0xEF, 0x13, 0x00, -0x49, 0xF1, 0x13, 0x00, 0xE5, 0xF1, 0x13, 0x00, 0x85, 0xEC, 0x13, 0x00, 0x45, 0xED, 0x13, 0x00, 0xA5, 0xED, 0x13, 0x00, -0x3D, 0xEB, 0x13, 0x00, 0x45, 0xEF, 0x13, 0x00, 0xA1, 0xF2, 0x13, 0x00, 0xC5, 0xF3, 0x13, 0x00, 0x85, 0x49, 0x15, 0x00, -0x01, 0x35, 0x15, 0x00, 0xCD, 0x42, 0x12, 0x00, 0x71, 0xCB, 0x12, 0x00, 0x35, 0xCF, 0x12, 0x00, 0xAD, 0xD3, 0x12, 0x00, -0x9D, 0xCB, 0x12, 0x00, 0xFD, 0xD4, 0x12, 0x00, 0xFD, 0x48, 0x13, 0x00, 0x69, 0x4B, 0x13, 0x00, 0x21, 0x4C, 0x13, 0x00, -0x15, 0x46, 0x13, 0x00, 0x99, 0x50, 0x13, 0x00, 0x9D, 0x5C, 0x13, 0x00, 0x79, 0x5C, 0x13, 0x00, 0xED, 0x53, 0x13, 0x00, -0xE5, 0x56, 0x13, 0x00, 0x81, 0x4F, 0x13, 0x00, 0x61, 0x4E, 0x13, 0x00, 0x29, 0x4D, 0x13, 0x00, 0x01, 0x40, 0x13, 0x00, -0xED, 0x4C, 0x13, 0x00, 0x1D, 0x52, 0x13, 0x00, 0xDD, 0xDB, 0x14, 0x00, 0xB5, 0xEB, 0x14, 0x00, 0x19, 0xD9, 0x14, 0x00, -0xA5, 0xDF, 0x14, 0x00, 0xB5, 0xE0, 0x14, 0x00, 0xE9, 0xDE, 0x14, 0x00, 0x15, 0xE3, 0x14, 0x00, 0xD9, 0xE5, 0x14, 0x00, -0x5D, 0xD7, 0x14, 0x00, 0xED, 0xD6, 0x14, 0x00, 0x21, 0x13, 0x14, 0x00, 0x85, 0x14, 0x14, 0x00, 0x05, 0xD1, 0x14, 0x00, -0x8D, 0x85, 0x12, 0x00, 0xD1, 0x80, 0x12, 0x00, 0xCD, 0x7D, 0x12, 0x00, 0xED, 0x7F, 0x12, 0x00, 0x45, 0x7A, 0x12, 0x00, -0x01, 0x7F, 0x12, 0x00, 0xD5, 0x99, 0x14, 0x00, 0xED, 0x9A, 0x14, 0x00, 0x31, 0x62, 0x13, 0x00, 0x29, 0x5F, 0x13, 0x00, -0x65, 0x63, 0x13, 0x00, 0x41, 0x61, 0x13, 0x00, 0x71, 0x5F, 0x12, 0x00, 0xB9, 0x24, 0x12, 0x00, 0xD9, 0x0D, 0x14, 0x00, -0x61, 0x0C, 0x14, 0x00, 0x79, 0x20, 0x14, 0x00, 0x05, 0x20, 0x14, 0x00, 0xC1, 0x20, 0x14, 0x00, 0x55, 0xD6, 0x12, 0x00, -0x4D, 0x1B, 0x13, 0x00, 0x99, 0x0E, 0x13, 0x00, 0x11, 0x0C, 0x13, 0x00, 0x65, 0x0D, 0x13, 0x00, 0xD1, 0x19, 0x13, 0x00, -0x5D, 0x13, 0x13, 0x00, 0x79, 0x0A, 0x13, 0x00, 0x8D, 0x21, 0x13, 0x00, 0x2D, 0x15, 0x13, 0x00, 0x19, 0x21, 0x13, 0x00, -0x79, 0x07, 0x13, 0x00, 0xCD, 0xF3, 0x12, 0x00, 0x31, 0xD7, 0x12, 0x00, 0x41, 0xD8, 0x12, 0x00, 0xA1, 0xD8, 0x12, 0x00, -0x69, 0xFC, 0x12, 0x00, 0x15, 0xFD, 0x12, 0x00, 0xF5, 0xE7, 0x12, 0x00, 0xB5, 0xE2, 0x12, 0x00, 0xE5, 0xEA, 0x12, 0x00, -0xF5, 0xEB, 0x12, 0x00, 0xED, 0xE6, 0x12, 0x00, 0xF9, 0xDD, 0x12, 0x00, 0x89, 0xE2, 0x12, 0x00, 0xD1, 0xFD, 0x12, 0x00, -0xD5, 0xE7, 0x12, 0x00, 0xD5, 0x30, 0x13, 0x00, 0x91, 0x36, 0x13, 0x00, 0xD5, 0x3A, 0x13, 0x00, 0x7D, 0x3C, 0x13, 0x00, -0xDD, 0x26, 0x13, 0x00, 0x49, 0x27, 0x13, 0x00, 0xA9, 0x25, 0x13, 0x00, 0xCD, 0x35, 0x13, 0x00, 0x71, 0x25, 0x13, 0x00, -0x89, 0x2C, 0x13, 0x00, 0x75, 0x30, 0x13, 0x00, 0x81, 0x3A, 0x13, 0x00, 0x05, 0x3A, 0x13, 0x00, 0x49, 0x3D, 0x13, 0x00, -0xB1, 0x2B, 0x13, 0x00, 0x21, 0x2F, 0x13, 0x00, 0xBD, 0x39, 0x13, 0x00, 0x59, 0x28, 0x13, 0x00, 0xCD, 0x2A, 0x13, 0x00, -0x61, 0x37, 0x13, 0x00, 0x01, 0xDB, 0x12, 0x00, 0xF1, 0xE2, 0x12, 0x00, 0x81, 0xD9, 0x12, 0x00, 0x35, 0xEE, 0x12, 0x00, -0xC5, 0xEF, 0x12, 0x00, 0x49, 0xED, 0x12, 0x00, 0x69, 0xFD, 0x14, 0x00, 0x39, 0xF9, 0x14, 0x00, 0x71, 0xF4, 0x14, 0x00, -0x79, 0xF9, 0x14, 0x00, 0x09, 0xFC, 0x14, 0x00, 0xC5, 0xF3, 0x14, 0x00, 0xDD, 0x60, 0x12, 0x00, 0xB1, 0xAD, 0x12, 0x00, -0xBD, 0xAE, 0x12, 0x00, 0x29, 0xAF, 0x12, 0x00, 0xA5, 0xA4, 0x12, 0x00, 0xD1, 0xA5, 0x12, 0x00, 0xD9, 0x6C, 0x13, 0x00, -0xF5, 0x6E, 0x13, 0x00, 0x1D, 0x64, 0x13, 0x00, 0x2D, 0x6E, 0x13, 0x00, 0x51, 0x65, 0x13, 0x00, 0xB5, 0x6E, 0x13, 0x00, -0x2D, 0x6F, 0x13, 0x00, 0xC1, 0x68, 0x13, 0x00, 0x91, 0xBE, 0x12, 0x00, 0x29, 0xC4, 0x12, 0x00, 0x95, 0xBB, 0x12, 0x00, -0xDD, 0x03, 0x12, 0x00, 0x19, 0xC5, 0x12, 0x00, 0xCD, 0xC6, 0x12, 0x00, 0x2D, 0x1E, 0x12, 0x00, 0x61, 0x1B, 0x12, 0x00, -0x69, 0x1D, 0x12, 0x00, 0x7D, 0x9D, 0x12, 0x00, 0xA9, 0x9D, 0x12, 0x00, 0x39, 0x12, 0x14, 0x00, 0x99, 0x71, 0x13, 0x00, -0xC1, 0x21, 0x12, 0x00, 0x51, 0x09, 0x12, 0x00, 0x9D, 0x0A, 0x12, 0x00, 0xA1, 0x0A, 0x12, 0x00, 0xBD, 0x0B, 0x12, 0x00, -0x41, 0x1C, 0x12, 0x00, 0xD5, 0xCF, 0x12, 0x00, 0x21, 0xD1, 0x12, 0x00, 0xD1, 0x3C, 0x12, 0x00, 0xC5, 0x4B, 0x12, 0x00, -0xA1, 0x4D, 0x12, 0x00, 0x6D, 0x4C, 0x12, 0x00, 0xAD, 0x4A, 0x12, 0x00, 0x71, 0xC0, 0x12, 0x00, 0x19, 0xC2, 0x12, 0x00, -0x79, 0xB8, 0x12, 0x00, 0x29, 0x9A, 0x12, 0x00, 0x39, 0x93, 0x12, 0x00, 0xA1, 0x65, 0x12, 0x00, 0xCD, 0xB1, 0x12, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x58, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC2, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x75, 0x95, 0x13, 0x00, -0x04, 0x00, 0x00, 0x00, 0xFD, 0x8F, 0x13, 0x00, 0x06, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x08, 0x00, 0x00, 0x00, -0xF1, 0xA9, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x93, 0x13, 0x00, 0x10, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, -0x16, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x14, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x12, 0x00, 0x00, 0x00, -0xF1, 0xA9, 0x13, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x18, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, -0x1A, 0x00, 0x00, 0x00, 0xCD, 0x90, 0x13, 0x00, 0x6B, 0x00, 0x00, 0x00, 0xF5, 0x96, 0x13, 0x00, 0x6D, 0x00, 0x00, 0x00, -0xD1, 0x97, 0x13, 0x00, 0x71, 0x00, 0x00, 0x00, 0x19, 0x93, 0x13, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x79, 0x91, 0x13, 0x00, -0x20, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x1E, 0x00, 0x00, 0x00, -0xF1, 0xA9, 0x13, 0x00, 0x30, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x22, 0x00, 0x00, 0x00, 0x09, 0xA0, 0x13, 0x00, -0x84, 0x00, 0x00, 0x00, 0xAD, 0xA0, 0x13, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x13, 0x00, 0x24, 0x00, 0x00, 0x00, -0xA9, 0x93, 0x13, 0x00, 0x26, 0x00, 0x00, 0x00, 0x4D, 0x94, 0x13, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x8E, 0x13, 0x00, -0x0C, 0x00, 0x00, 0x00, 0x9D, 0x91, 0x13, 0x00, 0x28, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x2A, 0x00, 0x00, 0x00, -0xF1, 0x97, 0x13, 0x00, 0x39, 0x00, 0x00, 0x00, 0xC5, 0x91, 0x13, 0x00, 0x3B, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, -0x46, 0x00, 0x00, 0x00, 0xCD, 0x8E, 0x13, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x21, 0x8E, 0x13, 0x00, 0x41, 0x00, 0x00, 0x00, -0x91, 0x98, 0x13, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x8E, 0x13, 0x00, 0x4B, 0x00, 0x00, 0x00, 0xA9, 0x94, 0x13, 0x00, -0x51, 0x00, 0x00, 0x00, 0x59, 0x8F, 0x13, 0x00, 0x52, 0x00, 0x00, 0x00, 0xB5, 0x9F, 0x13, 0x00, 0x56, 0x00, 0x00, 0x00, -0x15, 0x95, 0x13, 0x00, 0x87, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x61, 0x00, 0x00, 0x00, 0x21, 0x97, 0x13, 0x00, -0x63, 0x00, 0x00, 0x00, 0x9D, 0x98, 0x13, 0x00, 0x65, 0x00, 0x00, 0x00, 0xE9, 0x91, 0x13, 0x00, 0x67, 0x00, 0x00, 0x00, -0x0D, 0x96, 0x13, 0x00, 0x69, 0x00, 0x00, 0x00, 0xF1, 0x9C, 0x13, 0x00, 0x73, 0x00, 0x00, 0x00, 0xE9, 0x98, 0x13, 0x00, -0x75, 0x00, 0x00, 0x00, 0x0D, 0x8F, 0x13, 0x00, 0x77, 0x00, 0x00, 0x00, 0xA5, 0x92, 0x13, 0x00, 0x79, 0x00, 0x00, 0x00, -0xCD, 0x92, 0x13, 0x00, 0x7B, 0x00, 0x00, 0x00, 0xE1, 0x9B, 0x13, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x59, 0x99, 0x13, 0x00, -0x80, 0x00, 0x00, 0x00, 0xBD, 0x96, 0x13, 0x00, 0x82, 0x00, 0x00, 0x00, 0x11, 0x9B, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, -0xB9, 0x0E, 0x14, 0x00, 0x85, 0x00, 0x00, 0x00, 0x4D, 0x0F, 0x14, 0x00, 0x86, 0x00, 0x00, 0x00, 0xC9, 0x0F, 0x14, 0x00, -0x03, 0x08, 0x00, 0x00, 0x71, 0x10, 0x14, 0x00, 0x0D, 0xCD, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xB0, 0x13, 0x00, -0x00, 0x00, 0x00, 0x00, 0xA1, 0x28, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x4C, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, -0x9D, 0x2F, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x84, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x7F, 0x13, 0x00, -0x00, 0x00, 0x00, 0x00, 0xB5, 0x7F, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, -0x85, 0x4A, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xF2, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x48, 0x13, 0x00, -0x00, 0x00, 0x00, 0x00, 0xD1, 0x78, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, -0xD1, 0xF4, 0x12, 0x00, 0x04, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x03, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, -0x02, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, -0xF9, 0x4C, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x05, 0x00, 0x00, 0x00, 0xF9, 0x4C, 0x14, 0x00, -0x03, 0x00, 0x00, 0x00, 0xF9, 0x4C, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0xF9, 0x4C, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, -0xF9, 0x4C, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x69, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x6D, 0x12, 0x00, -0x00, 0x00, 0x00, 0x00, 0x69, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, -0xBD, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x15, 0x4A, 0x14, 0x00, 0x02, 0x04, 0x00, 0x00, 0xB5, 0x49, 0x14, 0x00, -0x04, 0x04, 0x00, 0x00, 0x2D, 0x48, 0x14, 0x00, 0x06, 0x04, 0x00, 0x00, 0xF9, 0x47, 0x14, 0x00, 0x09, 0x04, 0x00, 0x00, -0x95, 0x49, 0x14, 0x00, 0x11, 0x04, 0x00, 0x00, 0x11, 0x49, 0x14, 0x00, 0x0B, 0x04, 0x00, 0x00, 0xC1, 0x4A, 0x14, 0x00, -0x0D, 0x04, 0x00, 0x00, 0x45, 0x4A, 0x14, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x61, 0x48, 0x14, 0x00, 0x1B, 0x04, 0x00, 0x00, -0x91, 0x47, 0x14, 0x00, 0x1E, 0x04, 0x00, 0x00, 0x75, 0x47, 0x14, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x59, 0x47, 0x14, 0x00, -0x01, 0x00, 0x00, 0x00, 0x28, 0x34, 0x17, 0x00, 0x00, 0x14, 0x00, 0x00, 0xBD, 0x68, 0x14, 0x00, 0x02, 0x14, 0x00, 0x00, -0xED, 0x65, 0x14, 0x00, 0x04, 0x14, 0x00, 0x00, 0x01, 0x67, 0x14, 0x00, 0x07, 0x14, 0x00, 0x00, 0x01, 0x6A, 0x14, 0x00, -0x09, 0x14, 0x00, 0x00, 0x75, 0x67, 0x14, 0x00, 0x17, 0x14, 0x00, 0x00, 0xB1, 0x72, 0x14, 0x00, 0x19, 0x14, 0x00, 0x00, -0xB5, 0x6E, 0x14, 0x00, 0x0C, 0x14, 0x00, 0x00, 0x01, 0x68, 0x14, 0x00, 0x18, 0x14, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, -0x23, 0x00, 0x00, 0x00, 0x45, 0x6F, 0x14, 0x00, 0x13, 0x14, 0x00, 0x00, 0x45, 0x73, 0x14, 0x00, 0x32, 0x00, 0x00, 0x00, -0x9D, 0x6F, 0x14, 0x00, 0x15, 0x14, 0x00, 0x00, 0x11, 0x66, 0x14, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, -0x3C, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x42, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x1B, 0x00, 0x00, 0x00, -0x89, 0x31, 0x14, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, -0x70, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x72, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x0E, 0x14, 0x00, 0x00, -0xF5, 0x6F, 0x14, 0x00, 0x10, 0x14, 0x00, 0x00, 0xF1, 0x70, 0x14, 0x00, 0x11, 0x14, 0x00, 0x00, 0x91, 0x71, 0x14, 0x00, -0x00, 0x18, 0x00, 0x00, 0x1D, 0x8A, 0x14, 0x00, 0x03, 0x18, 0x00, 0x00, 0x6D, 0x92, 0x14, 0x00, 0x01, 0x10, 0x00, 0x00, -0xA1, 0x8C, 0x14, 0x00, 0x03, 0x10, 0x00, 0x00, 0x09, 0x8D, 0x14, 0x00, 0x08, 0x18, 0x00, 0x00, 0x71, 0x8C, 0x14, 0x00, -0x43, 0x00, 0x00, 0x00, 0x21, 0x8C, 0x14, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x8D, 0x92, 0x14, 0x00, 0x18, 0x14, 0x00, 0x00, -0xA5, 0x90, 0x14, 0x00, 0x19, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, 0x17, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, -0x15, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, 0x72, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, 0x1B, 0x00, 0x00, 0x00, -0xE5, 0x8F, 0x14, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xD9, 0x94, 0x14, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x7D, 0x8F, 0x14, 0x00, -0x4C, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x25, 0x90, 0x14, 0x00, 0x3A, 0x00, 0x00, 0x00, -0x65, 0x90, 0x14, 0x00, 0x00, 0x28, 0x00, 0x00, 0x99, 0x91, 0x14, 0x00, 0x07, 0x18, 0x00, 0x00, 0xFD, 0x91, 0x14, 0x00, -0x09, 0x18, 0x00, 0x00, 0x19, 0x92, 0x14, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF5, 0xB3, 0x14, 0x00, 0x02, 0x1C, 0x00, 0x00, -0xD5, 0xB6, 0x14, 0x00, 0x18, 0x14, 0x00, 0x00, 0xD9, 0xB7, 0x14, 0x00, 0x40, 0x00, 0x00, 0x00, 0xBD, 0xB2, 0x14, 0x00, -0x19, 0x00, 0x00, 0x00, 0x01, 0xB6, 0x14, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0xB6, 0x14, 0x00, 0x15, 0x00, 0x00, 0x00, -0x01, 0xB6, 0x14, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x9D, 0xB5, 0x14, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x81, 0xB6, 0x14, 0x00, -0x3A, 0x00, 0x00, 0x00, 0x41, 0xB6, 0x14, 0x00, 0x04, 0x1C, 0x00, 0x00, 0x01, 0xB3, 0x14, 0x00, 0x06, 0x1C, 0x00, 0x00, -0x39, 0xB7, 0x14, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x59, 0xB5, 0x14, 0x00, 0x00, 0x10, 0x00, 0x00, 0x8D, 0x31, 0x14, 0x00, -0x02, 0x10, 0x00, 0x00, 0x8D, 0x31, 0x14, 0x00, 0x05, 0x10, 0x00, 0x00, 0x8D, 0x31, 0x14, 0x00, 0x00, 0x28, 0x00, 0x00, -0x89, 0x31, 0x14, 0x00, 0x00, 0x10, 0x00, 0x00, 0x95, 0xBF, 0x14, 0x00, 0x02, 0x10, 0x00, 0x00, 0xF5, 0xC0, 0x14, 0x00, -0x05, 0x10, 0x00, 0x00, 0xF5, 0xBF, 0x14, 0x00, 0x07, 0x10, 0x00, 0x00, 0xF1, 0xC1, 0x14, 0x00, 0x0A, 0x10, 0x00, 0x00, -0x7D, 0xC0, 0x14, 0x00, 0x01, 0x08, 0x00, 0x00, 0x39, 0xC2, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x85, 0xC2, 0x14, 0x00, -0x00, 0x28, 0x00, 0x00, 0xA1, 0xC2, 0x14, 0x00, 0x0A, 0x10, 0x00, 0x00, 0x51, 0xC0, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, -0x4D, 0xC2, 0x14, 0x00, 0x00, 0x10, 0x00, 0x00, 0xD5, 0xC0, 0x14, 0x00, 0x07, 0x10, 0x00, 0x00, 0xA1, 0xC0, 0x14, 0x00, -0xDC, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x45, 0x04, 0x15, 0x00, 0x01, 0x20, 0x00, 0x00, 0x69, 0x04, 0x15, 0x00, -0x2B, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x15, 0x00, 0x29, 0x00, 0x00, 0x00, 0x55, 0xFF, 0x14, 0x00, 0x00, 0x28, 0x00, 0x00, -0x35, 0x01, 0x15, 0x00, 0x0D, 0x26, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x38, 0x18, 0x00, 0x89, 0x01, 0x12, 0x00, 0xA5, 0xC6, 0x12, 0x00, + 0xA1, 0xCA, 0x12, 0x00, 0xA9, 0xCA, 0x12, 0x00, 0xB1, 0xCA, 0x12, 0x00, + 0xB9, 0xCA, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xC6, 0x12, 0x00, + 0xA5, 0xC6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xC6, 0x12, 0x00, + 0xA5, 0xC6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xBB, 0x12, 0x00, + 0x19, 0x1E, 0x14, 0x00, 0x35, 0xEE, 0x12, 0x00, 0x49, 0xED, 0x12, 0x00, + 0x79, 0x5C, 0x13, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x79, 0x5C, 0x13, 0x00, + 0x49, 0x11, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x1A, 0x12, 0x00, + 0x99, 0x1A, 0x12, 0x00, 0x65, 0x5A, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xED, 0x12, 0x00, + 0x45, 0xED, 0x12, 0x00, 0x45, 0xED, 0x12, 0x00, 0x45, 0xED, 0x12, 0x00, + 0x45, 0xED, 0x12, 0x00, 0x7D, 0x4A, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x99, 0x1A, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x1A, 0x12, 0x00, + 0x99, 0x1A, 0x12, 0x00, 0x99, 0x1A, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x99, 0x1A, 0x12, 0x00, 0x8D, 0x52, 0x12, 0x00, 0x79, 0x51, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x5B, 0x12, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x05, 0x48, 0x00, 0x68, + 0x10, 0xF0, 0x00, 0x4F, 0x0C, 0xBF, 0x04, 0x48, 0x20, 0xF0, 0x7F, 0x40, + 0x80, 0xF3, 0x08, 0x88, 0x02, 0x48, 0x00, 0x47, 0x44, 0x01, 0x50, 0x40, + 0x00, 0x38, 0x18, 0x00, 0x05, 0xC7, 0x12, 0x00, 0xF0, 0xB4, 0x86, 0x07, + 0x46, 0xD0, 0x54, 0x1E, 0x00, 0x2A, 0x3C, 0xD0, 0xCA, 0xB2, 0x03, 0x46, + 0x01, 0xE0, 0x01, 0x3C, 0x37, 0xD3, 0x03, 0xF8, 0x01, 0x2B, 0x9D, 0x07, + 0xF9, 0xD1, 0x03, 0x2C, 0x2A, 0xD9, 0xCD, 0xB2, 0x45, 0xEA, 0x05, 0x25, + 0x0F, 0x2C, 0x45, 0xEA, 0x05, 0x45, 0x34, 0xD9, 0xA4, 0xF1, 0x10, 0x02, + 0x22, 0xF0, 0x0F, 0x0C, 0x03, 0xF1, 0x20, 0x07, 0x16, 0x09, 0x67, 0x44, + 0x03, 0xF1, 0x10, 0x02, 0x42, 0xE9, 0x04, 0x55, 0x42, 0xE9, 0x02, 0x55, + 0x10, 0x32, 0xBA, 0x42, 0xF8, 0xD1, 0x72, 0x1C, 0x14, 0xF0, 0x0C, 0x0F, + 0x03, 0xEB, 0x02, 0x12, 0x04, 0xF0, 0x0F, 0x06, 0x13, 0xD0, 0x33, 0x1F, + 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x13, 0x44, 0x42, 0xF8, 0x04, 0x5B, + 0x93, 0x42, 0xFB, 0xD1, 0x06, 0xF0, 0x03, 0x04, 0x2C, 0xB1, 0xCA, 0xB2, + 0x1C, 0x44, 0x03, 0xF8, 0x01, 0x2B, 0x9C, 0x42, 0xFB, 0xD1, 0xF0, 0xBC, + 0x70, 0x47, 0x34, 0x46, 0x13, 0x46, 0x00, 0x2C, 0xF3, 0xD1, 0xF8, 0xE7, + 0x14, 0x46, 0x03, 0x46, 0xC1, 0xE7, 0x1A, 0x46, 0x26, 0x46, 0xE0, 0xE7, + 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x68, 0x91, 0x4F, 0x4F, 0xD9, 0xF8, + 0x00, 0x60, 0xDF, 0xF8, 0x64, 0xC1, 0x33, 0x89, 0xD6, 0xF8, 0x34, 0xE0, + 0xC7, 0xF8, 0x10, 0xE0, 0xD6, 0xE9, 0x09, 0x10, 0xD6, 0xE9, 0x0B, 0x45, + 0x39, 0x60, 0xC9, 0x08, 0x03, 0x29, 0x78, 0x60, 0x4F, 0xEA, 0xD0, 0x00, + 0x38, 0xBF, 0x03, 0x21, 0xBC, 0x60, 0x03, 0x28, 0x4F, 0xEA, 0xD4, 0x04, + 0x38, 0xBF, 0x03, 0x20, 0xFD, 0x60, 0x03, 0x2C, 0x4F, 0xEA, 0xD5, 0x05, + 0x4F, 0xF0, 0x54, 0x02, 0x4F, 0xEA, 0xDE, 0x07, 0x2C, 0xF0, 0x03, 0x0C, + 0x38, 0xBF, 0x03, 0x24, 0xDF, 0xF8, 0x1C, 0xE1, 0xDF, 0xF8, 0x1C, 0x81, + 0xDF, 0xF8, 0x1C, 0xA1, 0xC8, 0xF8, 0x00, 0x10, 0x03, 0x2D, 0x03, 0xFB, + 0x02, 0x22, 0x38, 0xBF, 0x03, 0x25, 0x62, 0x44, 0x03, 0x2F, 0x38, 0xBF, + 0x03, 0x27, 0x72, 0x45, 0xC8, 0xE9, 0x01, 0x04, 0xC8, 0xE9, 0x03, 0x57, + 0xCA, 0xF8, 0x00, 0xC0, 0x4F, 0xD8, 0x01, 0x33, 0xDF, 0xF8, 0xF4, 0xE0, + 0x2E, 0x4A, 0xDF, 0xF8, 0xF4, 0x80, 0xDF, 0xF8, 0xF4, 0x90, 0x4F, 0xF0, + 0x58, 0x0C, 0x0C, 0xFB, 0x03, 0xE3, 0xD2, 0xF8, 0x00, 0xC0, 0x2A, 0x4A, + 0x13, 0x60, 0x4F, 0xF4, 0xAC, 0x72, 0x02, 0xFB, 0x01, 0x33, 0x02, 0xFB, + 0x00, 0x30, 0x02, 0xFB, 0x04, 0x04, 0x02, 0xFB, 0x05, 0x45, 0xDC, 0xF8, + 0x00, 0x10, 0xC8, 0xF8, 0x00, 0x50, 0x02, 0xFB, 0x07, 0x52, 0xC9, 0xF8, + 0x00, 0x40, 0x21, 0x4F, 0x21, 0x4D, 0x22, 0x4C, 0x38, 0x60, 0x2B, 0x60, + 0xC4, 0xF8, 0x00, 0xE0, 0x41, 0xB9, 0xDC, 0xF8, 0x04, 0x30, 0x04, 0x33, + 0x11, 0x1D, 0x23, 0xF0, 0x03, 0x03, 0xCC, 0xF8, 0x00, 0x10, 0x1A, 0x44, + 0xDC, 0xF8, 0x08, 0x30, 0x13, 0xB9, 0x04, 0x32, 0xCC, 0xF8, 0x08, 0x20, + 0x18, 0x4B, 0xF2, 0x68, 0x1A, 0x60, 0x33, 0x78, 0x02, 0x2B, 0x0E, 0xD0, + 0x01, 0x2B, 0x01, 0xD0, 0xBD, 0xE8, 0xF0, 0x87, 0x72, 0x69, 0x00, 0x2A, + 0xFA, 0xD0, 0x13, 0x49, 0x91, 0x42, 0xF7, 0xD9, 0xBD, 0xE8, 0xF0, 0x47, + 0x11, 0x48, 0x05, 0xF0, 0xC1, 0xBF, 0x32, 0x69, 0xF3, 0xE7, 0x71, 0x46, + 0x0F, 0x48, 0x05, 0xF0, 0xBB, 0xFF, 0xD9, 0xF8, 0x00, 0x60, 0xD8, 0xF8, + 0x00, 0x10, 0x33, 0x89, 0xD8, 0xE9, 0x01, 0x04, 0xD8, 0xE9, 0x03, 0x57, + 0x01, 0x33, 0xA1, 0xE7, 0x7C, 0x28, 0x17, 0x00, 0x30, 0x36, 0x17, 0x00, + 0xEC, 0x57, 0x18, 0x00, 0xF4, 0x57, 0x18, 0x00, 0xF0, 0x57, 0x18, 0x00, + 0x14, 0x63, 0x18, 0x00, 0x00, 0x38, 0x18, 0x00, 0x00, 0x38, 0x18, 0x00, + 0x44, 0x76, 0x15, 0x00, 0x18, 0x76, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, + 0x2B, 0x07, 0x18, 0x00, 0x00, 0x24, 0x18, 0x00, 0x8C, 0x1F, 0x17, 0x00, + 0x40, 0x61, 0x17, 0x00, 0xE0, 0x9F, 0x18, 0x00, 0xFC, 0x57, 0x18, 0x00, + 0xF8, 0x57, 0x18, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x49, 0x4C, 0x4A, 0x49, + 0x4A, 0x4E, 0x4B, 0x4A, 0x4B, 0x4D, 0x4C, 0x48, 0x0C, 0x60, 0x04, 0xF1, + 0x44, 0x07, 0x21, 0x1D, 0xD4, 0xF8, 0xD0, 0x30, 0x37, 0x60, 0x04, 0xF1, + 0x80, 0x07, 0x11, 0x60, 0x2F, 0x60, 0x47, 0x49, 0x47, 0x4A, 0x04, 0xF1, + 0x90, 0x05, 0x23, 0xF0, 0x7F, 0x43, 0x05, 0x60, 0x04, 0xF1, 0xA8, 0x00, + 0x08, 0x60, 0x23, 0xF0, 0xFF, 0x03, 0x04, 0xF1, 0xAA, 0x01, 0x11, 0x60, + 0x83, 0xB1, 0x94, 0xF8, 0xD1, 0x30, 0x23, 0xB1, 0x3F, 0x4A, 0x53, 0x6D, + 0x23, 0xF0, 0x01, 0x03, 0x53, 0x65, 0x94, 0xF8, 0xD2, 0x30, 0x00, 0x2B, + 0x5B, 0xD1, 0x3B, 0x4B, 0x4F, 0xF0, 0x80, 0x62, 0xC3, 0xF8, 0x10, 0x21, + 0x39, 0x4D, 0x3A, 0x4F, 0xD5, 0xF8, 0x30, 0x32, 0xDF, 0xF8, 0xF8, 0x80, + 0x98, 0x47, 0x01, 0x21, 0x00, 0x20, 0x05, 0xF0, 0x5F, 0xFF, 0x00, 0x20, + 0x05, 0xF0, 0x9A, 0xFF, 0x01, 0x21, 0x02, 0x20, 0x05, 0xF0, 0x58, 0xFF, + 0x02, 0x20, 0x05, 0xF0, 0x93, 0xFF, 0x01, 0x21, 0x03, 0x20, 0x05, 0xF0, + 0x51, 0xFF, 0x03, 0x20, 0x05, 0xF0, 0x8C, 0xFF, 0x3B, 0x68, 0x03, 0xF0, + 0x0F, 0x03, 0xA3, 0xF1, 0x0A, 0x03, 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, + 0x88, 0xF8, 0x02, 0x30, 0x25, 0xF0, 0x0E, 0xFA, 0x05, 0xF0, 0x90, 0xFA, + 0x06, 0xF0, 0x54, 0xF8, 0xD5, 0xF8, 0x74, 0x32, 0x98, 0x47, 0x94, 0xF8, + 0x44, 0x10, 0x23, 0x48, 0x24, 0xF0, 0xEE, 0xF8, 0x07, 0xF0, 0x8C, 0xF8, + 0x06, 0xF0, 0xA8, 0xF9, 0x98, 0xF8, 0x02, 0x30, 0x0B, 0xB3, 0xD5, 0xF8, + 0x6C, 0x34, 0x98, 0x47, 0x1D, 0x4A, 0x1E, 0x49, 0x13, 0x68, 0x23, 0xF0, + 0x08, 0x03, 0x13, 0x60, 0x3B, 0x68, 0x23, 0xF0, 0x0F, 0x03, 0x3B, 0x60, + 0x02, 0x20, 0x24, 0xF0, 0x27, 0xF9, 0x33, 0x68, 0x1B, 0x78, 0x03, 0x2B, + 0x02, 0xD1, 0x17, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD5, 0xF8, 0x80, 0x32, + 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x0D, 0x4A, 0x53, 0x6D, 0x23, 0xF0, + 0x02, 0x03, 0x53, 0x65, 0x9D, 0xE7, 0x11, 0x49, 0x02, 0x20, 0x24, 0xF0, + 0x11, 0xF9, 0xE8, 0xE7, 0x2C, 0x19, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0x78, 0x36, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x30, 0x36, 0x17, 0x00, + 0xAC, 0x35, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x00, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x00, 0x58, 0x40, + 0x70, 0x76, 0x15, 0x00, 0x10, 0x00, 0x58, 0x40, 0x80, 0x76, 0x15, 0x00, + 0x00, 0x41, 0x04, 0x40, 0x8C, 0x76, 0x15, 0x00, 0x3C, 0x36, 0x17, 0x00, + 0xF8, 0xB5, 0x20, 0x4B, 0x04, 0x46, 0x1E, 0x68, 0x1D, 0x68, 0x00, 0xF0, + 0xAB, 0xFE, 0x07, 0x46, 0x00, 0xF0, 0xAA, 0xFE, 0x01, 0x2C, 0xC6, 0xF3, + 0x03, 0x26, 0xC5, 0xF3, 0xC0, 0x65, 0x14, 0xD0, 0x02, 0x2C, 0x0E, 0xD0, + 0x3C, 0xB1, 0x18, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x1C, 0xDB, 0x00, 0x20, 0xF8, 0xBD, 0x90, 0xB9, 0x05, 0xBB, 0x70, 0x1E, + 0x18, 0xBF, 0x01, 0x20, 0xF8, 0xBD, 0x01, 0x2E, 0x0D, 0xD0, 0x68, 0x1D, + 0xF8, 0xBD, 0x30, 0xB9, 0x01, 0x2E, 0x17, 0xD0, 0x00, 0x2F, 0x0C, 0xBF, + 0x03, 0x20, 0x09, 0x20, 0xF8, 0xBD, 0x0B, 0x20, 0xF8, 0xBD, 0x0A, 0x20, + 0xF8, 0xBD, 0x00, 0x2D, 0x14, 0xBF, 0x07, 0x20, 0x04, 0x20, 0xF8, 0xBD, + 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0xB5, 0x12, 0x24, 0xF0, 0xDC, 0xFA, + 0x00, 0x20, 0xF8, 0xBD, 0x08, 0x20, 0xF8, 0xBD, 0x02, 0x20, 0xF8, 0xBD, + 0x00, 0x00, 0x33, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x10, 0xB4, 0x09, 0x49, 0x0B, 0x69, 0x83, 0xB0, + 0x18, 0x44, 0x20, 0x24, 0x01, 0x94, 0x01, 0x9B, 0x5A, 0x1E, 0x01, 0x92, + 0x00, 0x2B, 0xFA, 0xD1, 0x0B, 0x69, 0x1B, 0x1A, 0x00, 0x2B, 0xF5, 0xDB, + 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x10, 0x50, 0x40, + 0x08, 0xB5, 0xFF, 0xF7, 0x9D, 0xFF, 0x03, 0x4B, 0x1A, 0x78, 0x82, 0x42, + 0x18, 0xBF, 0x18, 0x70, 0x08, 0xBD, 0x00, 0xBF, 0x60, 0x25, 0x17, 0x00, + 0x38, 0xB5, 0x10, 0x4B, 0x10, 0x4C, 0x18, 0x68, 0xC0, 0xF3, 0x01, 0x60, + 0xFF, 0xF7, 0x8C, 0xFF, 0x08, 0x22, 0x05, 0x46, 0x00, 0x21, 0x20, 0x46, + 0xFF, 0xF7, 0xB6, 0xFD, 0x0B, 0x48, 0x0C, 0x4A, 0x00, 0xEB, 0x05, 0x10, + 0xFF, 0x21, 0xC3, 0x88, 0x80, 0x88, 0x10, 0x60, 0xC3, 0xF3, 0x85, 0x12, + 0x03, 0xF0, 0x3F, 0x03, 0x1A, 0x44, 0x21, 0x70, 0x4F, 0xF4, 0x96, 0x63, + 0xB3, 0xFB, 0xF2, 0xF3, 0x63, 0x70, 0x38, 0xBD, 0x00, 0x00, 0x33, 0x40, + 0x60, 0x25, 0x17, 0x00, 0x98, 0x76, 0x15, 0x00, 0x6C, 0x00, 0x34, 0x40, + 0x01, 0x4B, 0x58, 0x78, 0x70, 0x47, 0x00, 0xBF, 0x60, 0x25, 0x17, 0x00, + 0x10, 0xB4, 0x13, 0x4B, 0x13, 0x49, 0x11, 0x22, 0x1A, 0x60, 0x08, 0x69, + 0x83, 0xB0, 0x0A, 0x30, 0x20, 0x24, 0x00, 0x94, 0x00, 0x9B, 0x5A, 0x1E, + 0x00, 0x92, 0x00, 0x2B, 0xFA, 0xD1, 0x0A, 0x69, 0x12, 0x1A, 0x00, 0x2A, + 0xF5, 0xDB, 0x0A, 0x4A, 0x0A, 0x4C, 0x13, 0x60, 0x09, 0x69, 0x20, 0x20, + 0x0A, 0x31, 0x01, 0x90, 0x01, 0x9B, 0x5A, 0x1E, 0x01, 0x92, 0x00, 0x2B, + 0xFA, 0xD1, 0x23, 0x69, 0x5B, 0x1A, 0x00, 0x2B, 0xF5, 0xDB, 0x03, 0xB0, + 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x00, 0x34, 0x40, + 0x00, 0x10, 0x50, 0x40, 0x16, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x53, + 0x10, 0xB4, 0x13, 0x60, 0x00, 0xBF, 0x02, 0xF5, 0x99, 0x42, 0x13, 0x68, + 0x43, 0xF0, 0x00, 0x53, 0x13, 0x60, 0x00, 0xBF, 0x10, 0x4B, 0x11, 0x48, + 0x03, 0xF5, 0x00, 0x64, 0xC0, 0x1A, 0x1A, 0x18, 0x53, 0xF8, 0x04, 0x1B, + 0x11, 0x60, 0xA3, 0x42, 0xF9, 0xD1, 0x00, 0xBF, 0x09, 0x4B, 0x1A, 0x68, + 0x42, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x00, 0xBF, 0x1A, 0x68, 0x22, 0xF4, + 0x80, 0x52, 0x1A, 0x60, 0x00, 0xBF, 0x07, 0x4A, 0x5D, 0xF8, 0x04, 0x4B, + 0x13, 0x68, 0x23, 0xF0, 0x00, 0x53, 0x13, 0x60, 0x70, 0x47, 0x00, 0xBF, + 0x90, 0xB3, 0x33, 0x40, 0xB0, 0x05, 0x17, 0x00, 0x00, 0xA0, 0x33, 0x40, + 0x10, 0x00, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0x07, 0x46, 0x15, 0x46, + 0x1C, 0x46, 0x9D, 0xF8, 0x18, 0x80, 0x0E, 0x46, 0xFF, 0xF7, 0x94, 0xFF, + 0x6C, 0x4A, 0x13, 0x68, 0x01, 0x2F, 0x23, 0xF0, 0x40, 0x03, 0x13, 0x60, + 0x00, 0xF0, 0x98, 0x80, 0x69, 0x4A, 0x6A, 0x49, 0x13, 0x68, 0x23, 0xF4, + 0xE0, 0x33, 0x43, 0xF4, 0x40, 0x43, 0x13, 0x60, 0x0B, 0x68, 0x02, 0xF5, + 0xD9, 0x32, 0x02, 0xF5, 0xA2, 0x72, 0x43, 0xF0, 0x01, 0x03, 0x0B, 0x60, + 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x61, 0x4A, 0x10, 0x68, + 0x20, 0xF4, 0xFF, 0x40, 0x20, 0xF0, 0x7F, 0x00, 0x4F, 0xF0, 0x80, 0x63, + 0xB3, 0xFB, 0xF5, 0xF3, 0xC3, 0xF3, 0x0E, 0x03, 0x03, 0x43, 0x01, 0x2C, + 0x13, 0x60, 0x60, 0xD0, 0x02, 0x2C, 0x48, 0xD0, 0x00, 0x25, 0x59, 0x4B, + 0x1E, 0x68, 0x26, 0xF0, 0x03, 0x06, 0x35, 0x43, 0x1D, 0x60, 0x00, 0x23, + 0x56, 0x4A, 0x57, 0x49, 0x13, 0x60, 0x0B, 0x68, 0x56, 0x4D, 0x57, 0x48, + 0x57, 0x4E, 0x22, 0x06, 0x02, 0xF0, 0x40, 0x72, 0x23, 0xF0, 0x40, 0x73, + 0x13, 0x43, 0x0B, 0x60, 0x29, 0x68, 0x23, 0x04, 0x21, 0xF4, 0x40, 0x31, + 0x03, 0xF4, 0x40, 0x33, 0x0B, 0x43, 0x2B, 0x60, 0x03, 0x68, 0x23, 0xF0, + 0x80, 0x43, 0x03, 0x60, 0x31, 0x68, 0x05, 0xF5, 0x82, 0x35, 0x04, 0xF0, + 0x0F, 0x03, 0x21, 0xF0, 0x0F, 0x01, 0x05, 0xF5, 0x88, 0x75, 0x0B, 0x43, + 0x33, 0x60, 0x2B, 0x68, 0x23, 0xF0, 0x40, 0x73, 0x1A, 0x43, 0x2A, 0x60, + 0xEC, 0xB9, 0x50, 0xF8, 0x08, 0x3C, 0x45, 0x49, 0x45, 0x4A, 0x23, 0xF0, + 0x7F, 0x43, 0x43, 0xF0, 0xC8, 0x53, 0x40, 0xF8, 0x08, 0x3C, 0x0B, 0x68, + 0x23, 0xF0, 0x30, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x43, + 0x43, 0xF4, 0x1C, 0x43, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0xAD, 0x1B, + 0x00, 0x2D, 0x42, 0xDD, 0x0A, 0x2D, 0xCC, 0xBF, 0x00, 0x25, 0x01, 0x25, + 0xAF, 0xE7, 0x01, 0x2C, 0x41, 0xD0, 0x38, 0x4A, 0x38, 0x49, 0x13, 0x68, + 0x38, 0x48, 0x23, 0xF0, 0x7F, 0x43, 0x43, 0xF0, 0x60, 0x63, 0x13, 0x60, + 0x08, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x02, 0xF5, 0x28, 0x42, 0xB5, 0x42, + 0x53, 0x6B, 0x88, 0xBF, 0x01, 0x21, 0x23, 0xF0, 0x03, 0x03, 0x98, 0xBF, + 0x02, 0x21, 0x43, 0xEA, 0x01, 0x03, 0x02, 0xF1, 0x34, 0x02, 0x13, 0x60, + 0x94, 0xBF, 0x01, 0x23, 0x00, 0x23, 0x95, 0xE7, 0x1D, 0x49, 0x1E, 0x48, + 0x0B, 0x68, 0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0xC0, 0x33, 0x0B, 0x60, + 0x03, 0x68, 0x01, 0xF5, 0xD9, 0x31, 0x01, 0xF5, 0xA2, 0x71, 0x23, 0xF0, + 0x01, 0x03, 0x03, 0x60, 0x0B, 0x68, 0x18, 0xF0, 0x04, 0x0F, 0x43, 0xF4, + 0x80, 0x73, 0x0B, 0x60, 0x3F, 0xF4, 0x64, 0xAF, 0x13, 0x68, 0x43, 0xF0, + 0x40, 0x03, 0x13, 0x60, 0x5E, 0xE7, 0x15, 0xF1, 0x0A, 0x0F, 0xB4, 0xBF, + 0x03, 0x25, 0x02, 0x25, 0x6B, 0xE7, 0x1A, 0x48, 0x14, 0x49, 0x03, 0x68, + 0x14, 0x4A, 0x23, 0xF0, 0x7F, 0x43, 0x43, 0xF0, 0xC0, 0x53, 0x03, 0x60, + 0x0B, 0x68, 0x23, 0xF0, 0x30, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x0B, 0x60, + 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xF4, 0xD8, 0x43, 0x13, 0x60, + 0xBD, 0xE8, 0xF0, 0x81, 0x24, 0x03, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, + 0x20, 0x08, 0x33, 0x40, 0x4C, 0x08, 0x33, 0x40, 0x80, 0xB0, 0x33, 0x40, + 0x50, 0x08, 0x33, 0x40, 0x24, 0x08, 0x33, 0x40, 0x10, 0x03, 0x32, 0x40, + 0x0C, 0x08, 0x33, 0x40, 0x00, 0x08, 0x33, 0x40, 0x08, 0x00, 0x34, 0x40, + 0x8C, 0x08, 0x33, 0x40, 0x34, 0x08, 0x33, 0x40, 0x18, 0x08, 0x33, 0x40, + 0x06, 0x0C, 0x8E, 0x01, 0x04, 0x08, 0x33, 0x40, 0x44, 0x49, 0x45, 0x4A, + 0x0B, 0x68, 0x23, 0xF4, 0xFC, 0x63, 0x70, 0xB4, 0x0B, 0x60, 0x13, 0x68, + 0x42, 0x4C, 0x43, 0x4D, 0x43, 0x4E, 0x23, 0xF4, 0xE0, 0x23, 0x43, 0xF4, + 0x80, 0x33, 0x13, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xE0, 0x03, 0x43, 0xF4, + 0x00, 0x13, 0x13, 0x60, 0x23, 0x68, 0xA1, 0xF5, 0x0F, 0x41, 0x23, 0xF4, + 0x00, 0x03, 0x23, 0x60, 0x04, 0x39, 0x0C, 0x23, 0x2B, 0x60, 0x0B, 0x68, + 0x32, 0x6A, 0x23, 0xF4, 0xFE, 0x43, 0x23, 0xF0, 0x7F, 0x03, 0x13, 0x43, + 0x40, 0xF6, 0xB4, 0x12, 0x90, 0x42, 0x0B, 0x60, 0x34, 0x4B, 0x26, 0xD0, + 0x72, 0x6A, 0x1A, 0x60, 0xA0, 0xF6, 0x6C, 0x13, 0x3C, 0x2B, 0x22, 0xD8, + 0xDF, 0xE8, 0x03, 0xF0, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, 0x21, + 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, + 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, 0x21, 0x21, 0x21, 0x40, 0x21, + 0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, + 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, 0x21, 0x21, 0x21, 0x21, 0x47, + 0x21, 0x21, 0x21, 0x21, 0x47, 0x00, 0x21, 0x4A, 0x1A, 0x60, 0x21, 0x4A, + 0x21, 0x49, 0x13, 0x68, 0x91, 0xF8, 0xB4, 0x10, 0x23, 0xF0, 0x04, 0x03, + 0x13, 0x60, 0x99, 0xB1, 0x1E, 0x49, 0x1F, 0x4B, 0x0A, 0x68, 0x22, 0xF4, + 0xFE, 0x62, 0x0A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, + 0x01, 0x02, 0x1A, 0x60, 0x9A, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x9A, 0x60, + 0xDA, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0xDA, 0x60, 0x70, 0xBC, 0x70, 0x47, + 0x15, 0x49, 0x16, 0x4B, 0xB0, 0x6A, 0x72, 0x6B, 0x08, 0x60, 0x1A, 0x60, + 0xD9, 0xE7, 0x12, 0x4B, 0xF4, 0x6A, 0xB1, 0x6B, 0x11, 0x4A, 0x1C, 0x60, + 0x40, 0xF6, 0xA8, 0x13, 0x98, 0x42, 0x11, 0x60, 0xCF, 0xD1, 0x0F, 0x4B, + 0x11, 0x22, 0x1A, 0x60, 0xCB, 0xE7, 0x00, 0xBF, 0x04, 0x40, 0x34, 0x40, + 0x34, 0x21, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, 0x00, 0xB3, 0x33, 0x40, + 0xDC, 0x18, 0x17, 0x00, 0x20, 0x03, 0x33, 0x40, 0x1B, 0x88, 0xB3, 0x01, + 0x30, 0x20, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x78, 0x40, 0x34, 0x40, + 0x00, 0x30, 0x50, 0x40, 0x30, 0x40, 0x34, 0x40, 0x2C, 0x40, 0x34, 0x40, + 0x24, 0x01, 0x58, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x3A, 0x49, 0x3B, 0x4A, + 0x0B, 0x68, 0x23, 0xF4, 0xFC, 0x63, 0x43, 0xF4, 0xA8, 0x63, 0x30, 0xB4, + 0x0B, 0x60, 0x13, 0x68, 0x37, 0x4C, 0x38, 0x4D, 0x23, 0xF4, 0xE0, 0x23, + 0x43, 0xF4, 0x00, 0x33, 0x13, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xE0, 0x03, + 0x13, 0x60, 0x23, 0x68, 0x33, 0x4A, 0xA1, 0xF5, 0x0F, 0x41, 0x43, 0xF4, + 0x00, 0x03, 0x23, 0x60, 0x04, 0x39, 0x0C, 0x23, 0x2B, 0x60, 0x0B, 0x68, + 0xD4, 0x6C, 0x23, 0xF4, 0xFE, 0x43, 0x23, 0xF0, 0x7F, 0x03, 0x23, 0x43, + 0x41, 0xF2, 0xC8, 0x44, 0xA0, 0x42, 0x0B, 0x60, 0x40, 0xD8, 0x2A, 0x4B, + 0x12, 0x6C, 0x1A, 0x60, 0x29, 0x4A, 0x2A, 0x4C, 0x13, 0x68, 0x2A, 0x4D, + 0x2A, 0x48, 0x2B, 0x49, 0x23, 0xF0, 0x80, 0x63, 0x13, 0x60, 0x13, 0x68, + 0x94, 0xF8, 0xB4, 0x40, 0x23, 0xF0, 0x0F, 0x03, 0x43, 0xF0, 0x08, 0x03, + 0x13, 0x60, 0x2B, 0x68, 0x23, 0xF0, 0xC0, 0x63, 0x43, 0xF0, 0x80, 0x63, + 0x2B, 0x60, 0x03, 0x68, 0x43, 0xF4, 0x70, 0x63, 0x03, 0x60, 0x0B, 0x68, + 0x43, 0xF0, 0x04, 0x03, 0x0B, 0x60, 0xDC, 0xB1, 0x01, 0xF5, 0x01, 0x51, + 0x1D, 0x4B, 0x8A, 0x68, 0x22, 0xF4, 0xFE, 0x62, 0x42, 0xF4, 0x88, 0x62, + 0x8A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, 0x03, 0x02, + 0x1A, 0x60, 0x9A, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, 0x03, 0x02, + 0x9A, 0x60, 0xDA, 0x68, 0x22, 0xF0, 0x0F, 0x02, 0x42, 0xF0, 0x03, 0x02, + 0x08, 0x31, 0xDA, 0x60, 0x30, 0xBC, 0x70, 0x47, 0x41, 0xF2, 0x44, 0x63, + 0x98, 0x42, 0x08, 0x4B, 0x94, 0xBF, 0x52, 0x6C, 0x92, 0x6C, 0x1A, 0x60, + 0xB8, 0xE7, 0x00, 0xBF, 0x04, 0x40, 0x34, 0x40, 0x34, 0x21, 0x34, 0x40, + 0x2C, 0x20, 0x34, 0x40, 0x00, 0xB3, 0x33, 0x40, 0xDC, 0x18, 0x17, 0x00, + 0x30, 0x40, 0x34, 0x40, 0x38, 0x40, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, + 0x3C, 0x40, 0x34, 0x40, 0x08, 0x01, 0x58, 0x40, 0x30, 0x20, 0x34, 0x40, + 0x00, 0x30, 0x50, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, + 0x85, 0xB0, 0x0F, 0x46, 0x9D, 0xF8, 0x3C, 0x10, 0x02, 0x91, 0xCD, 0xE9, + 0x00, 0x23, 0x05, 0x46, 0x14, 0x46, 0x1E, 0x46, 0x02, 0x46, 0x3B, 0x46, + 0xAE, 0x49, 0xAF, 0x48, 0x9D, 0xF8, 0x38, 0xA0, 0xDF, 0xF8, 0x08, 0x83, + 0xDF, 0xF8, 0x08, 0x93, 0x23, 0xF0, 0x4C, 0xFD, 0xAB, 0x49, 0x22, 0x46, + 0x04, 0x20, 0x23, 0xF0, 0x97, 0xFD, 0x30, 0x46, 0xFF, 0xF7, 0x06, 0xFD, + 0x39, 0x46, 0x33, 0x46, 0xD8, 0xF8, 0x40, 0x71, 0xCD, 0xF8, 0x00, 0xA0, + 0x22, 0x46, 0x28, 0x46, 0xB8, 0x47, 0x99, 0xF8, 0x2A, 0x30, 0xAB, 0x42, + 0x0A, 0xD0, 0xD8, 0xF8, 0x80, 0x34, 0x28, 0x46, 0x98, 0x47, 0x99, 0xF8, + 0x2A, 0x20, 0x9F, 0x49, 0x2B, 0x46, 0x04, 0x20, 0x23, 0xF0, 0x7C, 0xFD, + 0x9D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, + 0xA8, 0x80, 0x00, 0x2D, 0x00, 0xF0, 0xB7, 0x80, 0x41, 0xF2, 0x43, 0x63, + 0x9C, 0x42, 0x00, 0xF2, 0xAE, 0x80, 0x41, 0xF2, 0x7B, 0x53, 0x9C, 0x42, + 0x8B, 0xBF, 0x4F, 0xF0, 0xEC, 0x09, 0x4F, 0xF0, 0xFC, 0x09, 0x3B, 0x27, + 0x3F, 0x27, 0x20, 0x46, 0x35, 0xF0, 0x0E, 0xFD, 0x02, 0x46, 0x0B, 0x46, + 0x82, 0x46, 0x8B, 0x46, 0x35, 0xF0, 0xBC, 0xFB, 0x8D, 0x4B, 0x00, 0x22, + 0x35, 0xF0, 0x98, 0xFE, 0x8C, 0x4B, 0x00, 0x22, 0x35, 0xF0, 0x6A, 0xFD, + 0x35, 0xF0, 0x62, 0xFB, 0x36, 0xF0, 0x00, 0xF8, 0x52, 0x46, 0x5B, 0x46, + 0x88, 0x49, 0x05, 0x46, 0x00, 0x20, 0x35, 0xF0, 0x89, 0xFE, 0x00, 0x22, + 0x4F, 0xF0, 0x83, 0x43, 0x35, 0xF0, 0x5A, 0xFD, 0x35, 0xF0, 0x52, 0xFB, + 0x35, 0xF0, 0xF0, 0xFF, 0x03, 0x46, 0x38, 0x46, 0x1F, 0x46, 0x35, 0xF0, + 0xE7, 0xFC, 0x80, 0x4B, 0x00, 0x22, 0x35, 0xF0, 0x4D, 0xFD, 0x02, 0x46, + 0x0B, 0x46, 0x50, 0x46, 0x59, 0x46, 0x35, 0xF0, 0x71, 0xFE, 0x00, 0x22, + 0x4F, 0xF0, 0x83, 0x43, 0x35, 0xF0, 0x42, 0xFD, 0x35, 0xF0, 0x3A, 0xFB, + 0x35, 0xF0, 0xD8, 0xFF, 0x77, 0x4B, 0x78, 0x4A, 0xD3, 0xF8, 0x00, 0xE0, + 0x2E, 0xF4, 0x00, 0x0E, 0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, + 0x4E, 0xF4, 0x80, 0x0E, 0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, + 0x2E, 0xF4, 0x00, 0x1E, 0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, + 0x4E, 0xF0, 0x08, 0x0E, 0xC3, 0xF8, 0x00, 0xE0, 0xD3, 0xF8, 0x00, 0xE0, + 0x01, 0x46, 0x2E, 0xF0, 0x04, 0x0E, 0x6A, 0x48, 0xC3, 0xF8, 0x00, 0xE0, + 0x03, 0x68, 0x43, 0xF0, 0x80, 0x43, 0x03, 0x60, 0x03, 0x68, 0x43, 0xF0, + 0x00, 0x53, 0x03, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xFF, 0x63, 0x23, 0xF0, + 0x04, 0x03, 0x43, 0xEA, 0x09, 0x03, 0x13, 0x60, 0x20, 0x46, 0xD8, 0xF8, + 0xA8, 0x34, 0x89, 0x46, 0x98, 0x47, 0x20, 0x46, 0xD8, 0xF8, 0xAC, 0x34, + 0x64, 0x08, 0x98, 0x47, 0x5C, 0x4B, 0x5D, 0x4A, 0x1D, 0x60, 0x17, 0x60, + 0xC3, 0xF8, 0x48, 0x90, 0x00, 0x2E, 0x00, 0xF0, 0x8D, 0x80, 0x01, 0x2E, + 0x04, 0xD1, 0x59, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, + 0x57, 0x49, 0x58, 0x4B, 0x08, 0x68, 0x58, 0x4A, 0x03, 0x40, 0x43, 0xEA, + 0x04, 0x33, 0x01, 0x20, 0x0B, 0x60, 0x10, 0x60, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x01, 0x2D, 0x7F, 0xF6, 0x55, 0xAF, 0x52, 0x49, 0x53, 0x48, + 0x40, 0xF6, 0x4A, 0x22, 0x23, 0xF0, 0xEE, 0xFE, 0x41, 0xF2, 0x43, 0x63, + 0x9C, 0x42, 0x7F, 0xF6, 0x52, 0xAF, 0x4F, 0xF0, 0xF0, 0x09, 0x3C, 0x27, + 0x57, 0xE7, 0x20, 0x46, 0x35, 0xF0, 0x66, 0xFC, 0x4B, 0x4B, 0x00, 0x22, + 0x82, 0x46, 0x8B, 0x46, 0x35, 0xF0, 0xCA, 0xFC, 0x39, 0x4B, 0x00, 0x22, + 0x35, 0xF0, 0xF0, 0xFD, 0x38, 0x4B, 0x00, 0x22, 0x35, 0xF0, 0xC2, 0xFC, + 0x35, 0xF0, 0xBA, 0xFA, 0x35, 0xF0, 0x58, 0xFF, 0x52, 0x46, 0x5B, 0x46, + 0x05, 0x46, 0x42, 0x49, 0x00, 0x20, 0x35, 0xF0, 0xE1, 0xFD, 0x00, 0x22, + 0x4F, 0xF0, 0x83, 0x43, 0x35, 0xF0, 0xB2, 0xFC, 0x35, 0xF0, 0xAA, 0xFA, + 0x35, 0xF0, 0x48, 0xFF, 0x24, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x07, 0x46, + 0x59, 0x46, 0x50, 0x46, 0x35, 0xF0, 0xD0, 0xFD, 0x00, 0x22, 0x4F, 0xF0, + 0x83, 0x43, 0x35, 0xF0, 0xA1, 0xFC, 0x35, 0xF0, 0x99, 0xFA, 0x35, 0xF0, + 0x37, 0xFF, 0x27, 0x4B, 0x28, 0x4A, 0x19, 0x68, 0x21, 0xF4, 0x00, 0x01, + 0x19, 0x60, 0x19, 0x68, 0x21, 0xF4, 0x80, 0x01, 0x19, 0x60, 0x19, 0x68, + 0x41, 0xF4, 0x00, 0x11, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF0, 0x08, 0x01, + 0x19, 0x60, 0x19, 0x68, 0x41, 0xF0, 0x04, 0x01, 0x19, 0x60, 0x13, 0x68, + 0x23, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x81, 0x46, 0x23, 0xF0, + 0x00, 0x53, 0x19, 0x48, 0x13, 0x60, 0x03, 0x68, 0x23, 0xF4, 0xFF, 0x63, + 0x23, 0xF0, 0x04, 0x03, 0x43, 0xF0, 0xEC, 0x03, 0x03, 0x60, 0xD8, 0xF8, + 0xA0, 0x34, 0x20, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0xA4, 0x34, 0x20, 0x46, + 0x98, 0x47, 0x69, 0xE7, 0x13, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x63, + 0x13, 0x60, 0x73, 0xE7, 0xAF, 0xF3, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xA2, 0x40, 0x78, 0x78, 0x15, 0x00, 0x58, 0x77, 0x15, 0x00, + 0x8C, 0x77, 0x15, 0x00, 0x9C, 0x77, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x00, 0x6A, 0x40, 0x00, 0x00, 0x50, 0x41, 0x00, 0x00, 0xB9, 0x40, + 0x00, 0x00, 0x54, 0x40, 0x14, 0x40, 0x34, 0x40, 0x3C, 0x40, 0x34, 0x40, + 0x30, 0x40, 0x34, 0x40, 0x10, 0x20, 0x34, 0x40, 0x54, 0x20, 0x34, 0x40, + 0x20, 0x40, 0x34, 0x40, 0x1C, 0x20, 0x34, 0x40, 0xFF, 0x0F, 0x00, 0xE0, + 0x84, 0x21, 0x34, 0x40, 0x70, 0x79, 0x15, 0x00, 0xB4, 0x77, 0x15, 0x00, + 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0xA4, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0xBC, 0x34, 0x17, 0x00, 0xF8, 0xB5, 0x43, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x6B, 0xDB, 0xFF, 0xF7, 0xBD, 0xFB, 0x40, 0x49, + 0x40, 0x4A, 0x0B, 0x68, 0x40, 0x48, 0x43, 0xF0, 0x00, 0x63, 0x0B, 0x60, + 0x13, 0x68, 0x43, 0xF0, 0x08, 0x03, 0x13, 0x60, 0x03, 0x68, 0xC3, 0xF3, + 0x03, 0x23, 0x02, 0x2B, 0x06, 0xD1, 0xA2, 0xF5, 0x99, 0x42, 0x04, 0x3A, + 0x13, 0x68, 0x43, 0xF0, 0x03, 0x03, 0x13, 0x60, 0x36, 0x4B, 0x1B, 0x68, + 0xC3, 0xF3, 0x03, 0x13, 0x02, 0x2B, 0x02, 0xD1, 0x34, 0x4B, 0x35, 0x4A, + 0x1A, 0x60, 0x35, 0x4A, 0x35, 0x49, 0x13, 0x68, 0xDF, 0xF8, 0x04, 0xC1, + 0x34, 0x4D, 0x35, 0x4F, 0x35, 0x4C, 0x36, 0x48, 0x36, 0x4E, 0x23, 0xF4, + 0xFF, 0x63, 0x23, 0xF0, 0x07, 0x03, 0x43, 0xF4, 0xE0, 0x63, 0x13, 0x60, + 0x4F, 0xF4, 0x80, 0x73, 0x0B, 0x60, 0x04, 0x23, 0xCC, 0xF8, 0x00, 0x30, + 0x01, 0x22, 0xC4, 0x23, 0x3A, 0x60, 0x2B, 0x60, 0x00, 0x23, 0x23, 0x60, + 0x6F, 0x24, 0x04, 0x60, 0x2C, 0x4C, 0xB0, 0x27, 0x37, 0x60, 0x23, 0x60, + 0xC3, 0x60, 0xAB, 0x61, 0x6B, 0x25, 0xE5, 0x60, 0x29, 0x4D, 0x83, 0x61, + 0x2A, 0x60, 0xA3, 0x61, 0x07, 0x24, 0x44, 0x62, 0xEC, 0x26, 0x27, 0x4C, + 0xEE, 0x60, 0x03, 0x25, 0xC5, 0x62, 0x23, 0x60, 0xD0, 0xF8, 0xEC, 0x31, + 0x93, 0x42, 0x00, 0xF5, 0xF6, 0x70, 0x0F, 0xD9, 0x22, 0x4B, 0xA0, 0xF5, + 0x56, 0x70, 0x1A, 0x60, 0x03, 0x68, 0x23, 0xF0, 0x7F, 0x43, 0x43, 0xF0, + 0x20, 0x43, 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF4, 0x40, 0x73, 0x43, 0xF4, + 0x80, 0x73, 0x0B, 0x60, 0xF8, 0xBD, 0x1B, 0x4A, 0x13, 0x68, 0x12, 0x68, + 0x1B, 0x0E, 0x02, 0x33, 0x03, 0xEB, 0x83, 0x03, 0xC2, 0xF3, 0x07, 0x42, + 0x02, 0xEB, 0x43, 0x03, 0x1E, 0x2B, 0x86, 0xD0, 0x15, 0x49, 0x16, 0x48, + 0x40, 0xF6, 0x2C, 0x32, 0x23, 0xF0, 0xBC, 0xFD, 0x7F, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x10, 0x00, 0x34, 0x40, 0x14, 0x00, 0x34, 0x40, + 0x00, 0x00, 0x33, 0x40, 0x04, 0xB1, 0x33, 0x40, 0x34, 0x34, 0x34, 0x00, + 0xB4, 0xB3, 0x33, 0x40, 0x00, 0x10, 0x34, 0x40, 0x08, 0x12, 0x34, 0x40, + 0x04, 0x12, 0x34, 0x40, 0x0C, 0x12, 0x34, 0x40, 0x10, 0x12, 0x34, 0x40, + 0x14, 0x12, 0x34, 0x40, 0x18, 0x12, 0x34, 0x40, 0x2C, 0x12, 0x34, 0x40, + 0x40, 0x12, 0x34, 0x40, 0x0C, 0x10, 0x34, 0x40, 0x3C, 0x00, 0x33, 0x40, + 0x70, 0x79, 0x15, 0x00, 0xC8, 0x77, 0x15, 0x00, 0x00, 0x12, 0x34, 0x40, + 0x10, 0xB5, 0x1A, 0x4C, 0x82, 0xB0, 0xD4, 0xF8, 0x3C, 0x31, 0x98, 0x47, + 0x18, 0x4B, 0x19, 0x4A, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x00, 0x42, + 0x1A, 0x60, 0x1A, 0x68, 0x00, 0x2A, 0xFC, 0xDB, 0x15, 0x4A, 0x1A, 0x60, + 0x19, 0x68, 0x12, 0x4A, 0x41, 0xF0, 0x00, 0x41, 0x19, 0x60, 0x13, 0x68, + 0x00, 0x2B, 0xFC, 0xDB, 0x11, 0x4B, 0x13, 0x60, 0x13, 0x68, 0x0D, 0x49, + 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x0B, 0x68, 0xDB, 0x0F, 0xFC, 0xD1, + 0xCD, 0xE9, 0x00, 0x33, 0x40, 0xF6, 0x85, 0x12, 0x11, 0x46, 0x18, 0x46, + 0xD4, 0xF8, 0x28, 0x42, 0xA0, 0x47, 0x09, 0x49, 0x09, 0x4B, 0x0A, 0x4A, + 0x0C, 0x20, 0x08, 0x60, 0x1A, 0x60, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xBF, + 0x88, 0x1A, 0x17, 0x00, 0x20, 0x00, 0x58, 0x40, 0xBF, 0x3F, 0x42, 0x01, + 0xA2, 0x30, 0x43, 0x01, 0xDD, 0x1D, 0x44, 0x01, 0x00, 0xB3, 0x33, 0x40, + 0xC0, 0xB3, 0x33, 0x40, 0xA0, 0xA0, 0x28, 0x28, 0x70, 0xB5, 0x13, 0x4B, + 0x13, 0x4D, 0x04, 0x46, 0xED, 0x1A, 0x03, 0xF2, 0x3C, 0x50, 0x5A, 0x19, + 0x53, 0xF8, 0x04, 0x1B, 0x11, 0x60, 0x83, 0x42, 0xF9, 0xD1, 0xFF, 0xF7, + 0xEB, 0xFA, 0x0E, 0x4B, 0x0E, 0x4E, 0xD3, 0xF8, 0x24, 0x32, 0x20, 0x46, + 0x98, 0x47, 0x00, 0x23, 0x86, 0xF8, 0x2A, 0x30, 0x0F, 0xCC, 0x35, 0x46, + 0x0F, 0xC5, 0x0F, 0xCC, 0x0F, 0xC5, 0x23, 0x68, 0x2B, 0x60, 0x05, 0x21, + 0x4F, 0xF0, 0xFF, 0x12, 0xFF, 0x23, 0x86, 0xF8, 0x2B, 0x10, 0x72, 0x62, + 0x33, 0x85, 0x70, 0xBD, 0xB0, 0x0D, 0x17, 0x00, 0x00, 0x90, 0x33, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0x08, 0xB5, 0x05, 0x4B, + 0x1B, 0x68, 0x1B, 0x07, 0x00, 0xD4, 0x08, 0xBD, 0x14, 0xF0, 0xF4, 0xFD, + 0x02, 0x4B, 0x08, 0x22, 0x1A, 0x60, 0x08, 0xBD, 0xA8, 0x10, 0x34, 0x40, + 0xAC, 0x10, 0x34, 0x40, 0x03, 0x4A, 0x04, 0x4B, 0x12, 0x68, 0x02, 0x60, + 0x1B, 0x68, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, + 0x3C, 0x00, 0x33, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0xB0, 0x9D, 0xF8, + 0x38, 0x40, 0xBD, 0xF8, 0x30, 0xA0, 0x9D, 0xF8, 0x34, 0x90, 0x00, 0x2C, + 0x43, 0xD1, 0x98, 0x46, 0x25, 0x4B, 0x1B, 0x78, 0x05, 0x46, 0x0E, 0x46, + 0x17, 0x46, 0xD3, 0xB1, 0x23, 0x4C, 0x24, 0x4A, 0xCD, 0xF8, 0x00, 0x90, + 0x00, 0x23, 0xD2, 0xF8, 0x28, 0xB2, 0x01, 0x93, 0x42, 0x46, 0x33, 0x46, + 0x39, 0x46, 0x28, 0x46, 0xD8, 0x47, 0x84, 0xF8, 0x2A, 0x50, 0x84, 0xF8, + 0x2B, 0x60, 0x84, 0xF8, 0x2C, 0x90, 0xA7, 0x84, 0xA4, 0xF8, 0x26, 0x80, + 0xA4, 0xF8, 0x28, 0xA0, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x18, 0x4A, + 0x15, 0x4C, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x13, 0x60, 0x94, 0xF8, + 0x2A, 0x30, 0x83, 0x42, 0xDB, 0xD1, 0x94, 0xF8, 0x2B, 0x30, 0x8B, 0x42, + 0xD7, 0xD1, 0x94, 0xF8, 0x2C, 0x30, 0x4B, 0x45, 0xD3, 0xD1, 0xA3, 0x8C, + 0xBB, 0x42, 0xD0, 0xD1, 0xE3, 0x8C, 0x43, 0x45, 0xCD, 0xD1, 0x23, 0x8D, + 0x53, 0x45, 0xCA, 0xD1, 0x0B, 0x49, 0x0C, 0x48, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x4F, 0x23, 0xF0, 0x35, 0xBA, 0x08, 0x49, 0x09, 0x48, 0x22, 0x46, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x23, 0xF0, 0x2D, 0xBA, 0x00, 0xBF, + 0x3C, 0x36, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x90, 0xB3, 0x33, 0x40, 0x8C, 0x78, 0x15, 0x00, 0x38, 0x78, 0x15, 0x00, + 0x18, 0x78, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x71, 0xB9, 0x0A, 0x4A, + 0x93, 0x8C, 0x92, 0xF8, 0x2B, 0x00, 0x92, 0xF8, 0x2A, 0x10, 0xD2, 0xF8, + 0x26, 0x20, 0x62, 0x60, 0x1B, 0x04, 0x43, 0xEA, 0x00, 0x23, 0x0B, 0x43, + 0x23, 0x60, 0x10, 0xBD, 0x0A, 0x46, 0x03, 0x48, 0x03, 0x49, 0x23, 0xF0, + 0x07, 0xFA, 0xEA, 0xE7, 0xBC, 0x34, 0x17, 0x00, 0x18, 0x78, 0x15, 0x00, + 0x9C, 0x78, 0x15, 0x00, 0x04, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x00, 0xD1, + 0x70, 0x47, 0x03, 0x49, 0x03, 0x48, 0x23, 0xF0, 0xF7, 0xB9, 0x00, 0xBF, + 0x38, 0x00, 0x32, 0x40, 0xAC, 0x78, 0x15, 0x00, 0x60, 0x78, 0x15, 0x00, + 0x4F, 0xF4, 0x7A, 0x70, 0x70, 0x47, 0x00, 0xBF, 0x01, 0x20, 0x70, 0x47, + 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x40, 0x50, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x00, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, 0x01, 0x28, 0x94, 0xBF, + 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x00, 0xBF, 0xFC, 0x13, 0x34, 0x40, + 0x04, 0x4A, 0x13, 0x68, 0xC0, 0x00, 0x00, 0xF0, 0x08, 0x00, 0x23, 0xF0, + 0x08, 0x03, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xA0, 0x10, 0x34, 0x40, + 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x80, 0x60, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x00, 0x33, 0x40, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x00, 0x70, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0x02, 0x4B, 0x18, 0x68, + 0xC0, 0xF3, 0x80, 0x70, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, + 0x06, 0x4B, 0x02, 0x68, 0x1A, 0x60, 0x42, 0x68, 0x5A, 0x60, 0x0A, 0x68, + 0x9A, 0x60, 0x4A, 0x68, 0xDA, 0x60, 0x8A, 0x68, 0x1A, 0x61, 0xCA, 0x68, + 0x5A, 0x61, 0x70, 0x47, 0xA8, 0x08, 0x33, 0x40, 0x30, 0xB4, 0x06, 0x49, + 0x06, 0x4D, 0x07, 0x4B, 0x00, 0x24, 0xC0, 0xF3, 0x0A, 0x00, 0x40, 0xF2, + 0xFF, 0x72, 0x28, 0x60, 0x0C, 0x60, 0x30, 0xBC, 0x1A, 0x60, 0x70, 0x47, + 0xC4, 0x08, 0x33, 0x40, 0xC0, 0x08, 0x33, 0x40, 0xC8, 0x08, 0x33, 0x40, + 0x03, 0x4B, 0x18, 0x68, 0xC0, 0xF3, 0x03, 0x20, 0x01, 0x38, 0xC0, 0xB2, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, + 0xC0, 0xF3, 0x03, 0x10, 0x01, 0x38, 0xC0, 0xB2, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x00, 0x33, 0x40, 0x03, 0x4B, 0x18, 0x68, 0x00, 0xF0, 0x0F, 0x00, + 0x01, 0x38, 0xC0, 0xB2, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x33, 0x40, + 0xF0, 0xB5, 0xBE, 0x4C, 0x94, 0xF8, 0x2A, 0x30, 0x00, 0x2B, 0x76, 0xD1, + 0xBC, 0x4B, 0x93, 0xF8, 0xBD, 0x50, 0x00, 0x2D, 0x66, 0xD0, 0xE0, 0x8C, + 0x40, 0xF6, 0x7B, 0x14, 0xA0, 0x42, 0x40, 0xF2, 0xCA, 0x80, 0x40, 0xF6, + 0x94, 0x14, 0xA0, 0x42, 0xB6, 0x48, 0x94, 0xBF, 0x90, 0xF9, 0x01, 0x60, + 0x90, 0xF9, 0x02, 0x60, 0x93, 0xF8, 0xBE, 0x40, 0xB3, 0x48, 0x06, 0xF1, + 0x0F, 0x05, 0x1E, 0x2D, 0x00, 0x5D, 0xA8, 0xBF, 0x1E, 0x25, 0x0A, 0x2C, + 0x4F, 0xEA, 0x20, 0x17, 0x00, 0xF0, 0x0F, 0x0C, 0x25, 0xEA, 0xE5, 0x75, + 0x00, 0xF3, 0xCF, 0x80, 0x00, 0xF0, 0xE4, 0x80, 0xAB, 0x48, 0x04, 0xEB, + 0x44, 0x04, 0x10, 0xF9, 0x14, 0xE0, 0x75, 0x45, 0x00, 0xEB, 0x44, 0x04, + 0x00, 0xF3, 0x06, 0x81, 0x64, 0x78, 0xA4, 0xEB, 0x0E, 0x04, 0x2C, 0x44, + 0x60, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0xA0, 0x42, 0x07, 0xF1, 0xFF, 0x37, + 0xB8, 0xBF, 0x20, 0x46, 0x60, 0x44, 0x80, 0xF3, 0x04, 0x00, 0x40, 0xEA, + 0x07, 0x10, 0x08, 0x70, 0x93, 0xF8, 0xBF, 0x10, 0x9D, 0x4B, 0x5B, 0x5C, + 0x0A, 0x29, 0x4F, 0xEA, 0x23, 0x10, 0x03, 0xF0, 0x0F, 0x03, 0x17, 0xDC, + 0x00, 0xF0, 0xD1, 0x80, 0x01, 0x31, 0x97, 0x4C, 0x01, 0xEB, 0x41, 0x01, + 0x14, 0xF9, 0x11, 0x60, 0xAE, 0x42, 0x04, 0xEB, 0x41, 0x01, 0xC0, 0xF2, + 0xD2, 0x80, 0x49, 0x78, 0x89, 0x1B, 0x0D, 0x44, 0x6D, 0xB2, 0x6F, 0xF0, + 0x04, 0x01, 0x01, 0x38, 0x8D, 0x42, 0xAC, 0xBF, 0x5B, 0x19, 0x5B, 0x18, + 0x83, 0xF3, 0x04, 0x03, 0x43, 0xEA, 0x00, 0x13, 0x13, 0x70, 0xF0, 0xBD, + 0x93, 0xF8, 0xAC, 0x40, 0xE5, 0x07, 0x68, 0xD5, 0x93, 0xF8, 0xB7, 0x00, + 0x08, 0x70, 0x93, 0xF8, 0xAD, 0x30, 0x13, 0x70, 0xF0, 0xBD, 0x81, 0x4B, + 0x93, 0xF8, 0xBD, 0x50, 0x00, 0x2D, 0x3A, 0xD0, 0xE0, 0x8C, 0x41, 0xF2, + 0xC8, 0x44, 0xA0, 0x42, 0x4F, 0xD9, 0xB0, 0xF5, 0xAF, 0x5F, 0x7D, 0xD8, + 0x7F, 0x48, 0x90, 0xF9, 0x01, 0x60, 0x93, 0xF8, 0xC3, 0x00, 0x7E, 0x4B, + 0x1B, 0x5C, 0x0A, 0x28, 0x4F, 0xEA, 0x23, 0x15, 0x03, 0xF0, 0x0F, 0x03, + 0x1D, 0xDC, 0x06, 0xF1, 0x0F, 0x04, 0x1E, 0x2C, 0xA8, 0xBF, 0x1E, 0x24, + 0x0A, 0x28, 0x24, 0xEA, 0xE4, 0x74, 0x7A, 0xD0, 0x76, 0x4E, 0x00, 0xEB, + 0x40, 0x00, 0x16, 0xF9, 0x10, 0x70, 0xBC, 0x42, 0x06, 0xEB, 0x40, 0x00, + 0x00, 0xF3, 0x9E, 0x80, 0x40, 0x78, 0xC0, 0x1B, 0x04, 0x44, 0x64, 0xB2, + 0x6F, 0xF0, 0x04, 0x00, 0x01, 0x3D, 0x84, 0x42, 0xAC, 0xBF, 0x1B, 0x19, + 0x1B, 0x18, 0x83, 0xF3, 0x04, 0x03, 0x43, 0xEA, 0x05, 0x13, 0xDB, 0xB2, + 0x13, 0x70, 0x0B, 0x70, 0xF0, 0xBD, 0x93, 0xF8, 0xAC, 0x40, 0xA4, 0x07, + 0x04, 0xD5, 0x93, 0xF8, 0xAE, 0x30, 0x0B, 0x70, 0x13, 0x70, 0xF0, 0xBD, + 0x90, 0xF9, 0x00, 0x30, 0x61, 0x48, 0x6F, 0xF0, 0x04, 0x04, 0xA3, 0x42, + 0xB8, 0xBF, 0x23, 0x46, 0x12, 0x2B, 0xA8, 0xBF, 0x12, 0x23, 0x05, 0x33, + 0x5B, 0x10, 0xC3, 0x5C, 0x0B, 0x70, 0x13, 0x70, 0xF0, 0xBD, 0x59, 0x48, + 0x90, 0xF9, 0x00, 0x60, 0xB1, 0xE7, 0x53, 0x48, 0x90, 0xF9, 0x00, 0x60, + 0x3A, 0xE7, 0x90, 0xF9, 0x00, 0x30, 0x51, 0x4D, 0x52, 0x4C, 0x01, 0x2B, + 0x6F, 0xF0, 0x01, 0x06, 0x18, 0x46, 0xB8, 0xBF, 0x01, 0x20, 0xB3, 0x42, + 0xB8, 0xBF, 0x33, 0x46, 0x17, 0x28, 0xA8, 0xBF, 0x17, 0x20, 0x14, 0x2B, + 0xA8, 0xBF, 0x14, 0x23, 0x01, 0x38, 0x02, 0x33, 0x40, 0x10, 0x5B, 0x10, + 0x28, 0x5C, 0xE3, 0x5C, 0x08, 0x70, 0x13, 0x70, 0xF0, 0xBD, 0x74, 0x1C, + 0x55, 0xDA, 0xA5, 0xF1, 0x0D, 0x00, 0x40, 0xB2, 0x6F, 0xF0, 0x04, 0x04, + 0xA0, 0x42, 0xA7, 0xF1, 0x02, 0x07, 0xB8, 0xBF, 0x20, 0x46, 0x3B, 0xE7, + 0x41, 0xF2, 0x44, 0x64, 0xA0, 0x42, 0x3F, 0x48, 0x94, 0xBF, 0x90, 0xF9, + 0x02, 0x60, 0x90, 0xF9, 0x03, 0x60, 0x7A, 0xE7, 0xB0, 0x1C, 0x53, 0xDB, + 0x01, 0x2E, 0x00, 0xF3, 0x8D, 0x80, 0xA5, 0xF1, 0x0F, 0x00, 0x40, 0xB2, + 0x28, 0xE7, 0x03, 0x36, 0x43, 0xDA, 0x09, 0x3C, 0x64, 0xB2, 0x6F, 0xF0, + 0x04, 0x00, 0x01, 0x3D, 0x84, 0x42, 0xAC, 0xBF, 0x1B, 0x19, 0x1B, 0x18, + 0x8D, 0xE7, 0x03, 0x36, 0x30, 0xDA, 0x09, 0x3D, 0x6D, 0xB2, 0x6F, 0xF0, + 0x04, 0x01, 0x01, 0x38, 0x8D, 0x42, 0xAC, 0xBF, 0x5B, 0x19, 0x5B, 0x18, + 0x38, 0xE7, 0x91, 0xF9, 0x04, 0x40, 0xAC, 0x42, 0x3B, 0xDD, 0xCC, 0x78, + 0x89, 0x78, 0x61, 0x1A, 0x0D, 0x44, 0x43, 0xFA, 0x85, 0xF3, 0x2D, 0xE7, + 0x94, 0xF9, 0x04, 0xE0, 0x75, 0x45, 0x57, 0xDA, 0xE0, 0x78, 0xA4, 0x78, + 0x00, 0x1B, 0x28, 0x44, 0x40, 0xB2, 0xFB, 0xE6, 0x90, 0xF9, 0x04, 0x60, + 0xB4, 0x42, 0x43, 0xDA, 0xC6, 0x78, 0x80, 0x78, 0x30, 0x1A, 0x04, 0x44, + 0x43, 0xFA, 0x84, 0xF3, 0x61, 0xE7, 0xA5, 0xF1, 0x0F, 0x04, 0x60, 0xB2, + 0x03, 0x28, 0xA8, 0xBF, 0x03, 0x20, 0xE9, 0xE6, 0x0F, 0x3D, 0x6D, 0xB2, + 0x05, 0x2D, 0xD4, 0xBF, 0x5B, 0x19, 0x05, 0x33, 0x0A, 0xE7, 0x0F, 0x3C, + 0x64, 0xB2, 0x05, 0x2C, 0xD4, 0xBF, 0x1B, 0x19, 0x05, 0x33, 0x4C, 0xE7, + 0xA5, 0xF1, 0x0A, 0x00, 0x40, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0xA0, 0x42, + 0x07, 0xF1, 0xFF, 0x37, 0xB8, 0xBF, 0x20, 0x46, 0xD0, 0xE6, 0x49, 0x79, + 0x09, 0x1B, 0x0D, 0x44, 0x6D, 0xB2, 0x05, 0x2D, 0xD4, 0xBF, 0x5B, 0x19, + 0x05, 0x33, 0x01, 0x30, 0xEE, 0xE6, 0x00, 0xBF, 0xBC, 0x34, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x68, 0x25, 0x17, 0x00, 0xEC, 0x12, 0x17, 0x00, + 0xB8, 0x78, 0x15, 0x00, 0xF8, 0x12, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, + 0x04, 0x13, 0x17, 0x00, 0x0C, 0x79, 0x15, 0x00, 0x40, 0x79, 0x80, 0x1B, + 0x04, 0x44, 0x64, 0xB2, 0x05, 0x2C, 0xD4, 0xBF, 0x1B, 0x19, 0x05, 0x33, + 0x01, 0x35, 0x1A, 0xE7, 0x60, 0x79, 0xA0, 0xEB, 0x0E, 0x00, 0x28, 0x44, + 0x40, 0xB2, 0x05, 0x28, 0xA8, 0xBF, 0x05, 0x20, 0x01, 0x37, 0x9F, 0xE6, + 0xA5, 0xF1, 0x11, 0x00, 0x40, 0xB2, 0x03, 0x28, 0x07, 0xF1, 0x02, 0x07, + 0xA8, 0xBF, 0x03, 0x20, 0x96, 0xE6, 0x00, 0xBF, 0xF0, 0xB4, 0xB9, 0x4B, + 0x93, 0xF8, 0x2A, 0x20, 0xDC, 0x8C, 0x52, 0xBB, 0xC0, 0xB9, 0x03, 0x29, + 0x00, 0xF2, 0x91, 0x80, 0xB5, 0x4A, 0xB6, 0x4B, 0x92, 0xF8, 0xBE, 0x50, + 0x5B, 0x5D, 0x02, 0x46, 0x01, 0x46, 0x07, 0x46, 0x40, 0xF6, 0x7B, 0x10, + 0x84, 0x42, 0x00, 0xF2, 0xBA, 0x80, 0xB1, 0x48, 0x90, 0xF9, 0x00, 0x60, + 0x00, 0x29, 0x00, 0xF0, 0xC0, 0x80, 0xD8, 0xB2, 0xF0, 0xBC, 0x70, 0x47, + 0x04, 0x28, 0x40, 0xF2, 0x8F, 0x80, 0x09, 0x29, 0x40, 0xF2, 0x8E, 0x80, + 0xA7, 0x4B, 0x93, 0xF8, 0xC2, 0x50, 0x08, 0x2D, 0x40, 0xF3, 0x17, 0x81, + 0x01, 0x21, 0x0F, 0x46, 0x09, 0x25, 0xD4, 0x23, 0xE0, 0xE7, 0x04, 0x28, + 0x44, 0xD9, 0x09, 0x29, 0x44, 0xD9, 0xA0, 0x4B, 0xA2, 0x49, 0x93, 0xF8, + 0xC6, 0x30, 0x09, 0x2B, 0xA8, 0xBF, 0x09, 0x23, 0x41, 0xF2, 0xC8, 0x42, + 0x94, 0x42, 0xC8, 0x5C, 0x4F, 0xF0, 0x00, 0x05, 0x53, 0xD9, 0xB4, 0xF5, + 0xAF, 0x5F, 0x00, 0xF2, 0xCC, 0x80, 0x9B, 0x4A, 0x92, 0xF9, 0x01, 0x20, + 0x00, 0x2D, 0xD1, 0xD1, 0x0A, 0x2B, 0x4F, 0xEA, 0x20, 0x14, 0x00, 0xF0, + 0x0F, 0x00, 0x1E, 0xDC, 0x02, 0xF1, 0x0F, 0x01, 0x1E, 0x29, 0xA8, 0xBF, + 0x1E, 0x21, 0x0A, 0x2B, 0x21, 0xEA, 0xE1, 0x71, 0x00, 0xF0, 0x3C, 0x81, + 0x91, 0x4A, 0x03, 0xEB, 0x43, 0x03, 0x12, 0xF9, 0x13, 0x50, 0x8D, 0x42, + 0x02, 0xEB, 0x43, 0x02, 0x80, 0xF2, 0xF6, 0x80, 0x92, 0xF9, 0x04, 0x50, + 0x8D, 0x42, 0x40, 0xF3, 0x40, 0x81, 0xD3, 0x78, 0x92, 0x78, 0x9B, 0x1A, + 0x19, 0x44, 0x40, 0xFA, 0x81, 0xF0, 0x80, 0xF3, 0x04, 0x00, 0x40, 0xEA, + 0x04, 0x10, 0xC0, 0xB2, 0xF0, 0xBC, 0x70, 0x47, 0x01, 0x28, 0x0C, 0xD9, + 0x07, 0x29, 0x2C, 0xD8, 0x04, 0x29, 0x0A, 0xD8, 0x7B, 0x4B, 0x93, 0xF8, + 0xC3, 0x30, 0xA3, 0xF1, 0x0B, 0x05, 0xB5, 0xFA, 0x85, 0xF5, 0x6D, 0x09, + 0x09, 0xE0, 0x09, 0x29, 0xF4, 0xD9, 0x76, 0x4B, 0x93, 0xF8, 0xC4, 0x30, + 0x0A, 0x2B, 0x4F, 0xF0, 0x00, 0x05, 0xA8, 0xBF, 0x0A, 0x23, 0x75, 0x49, + 0x41, 0xF2, 0xC8, 0x42, 0x94, 0x42, 0xC8, 0x5C, 0xAB, 0xD8, 0x73, 0x4A, + 0x92, 0xF9, 0x00, 0x20, 0xAE, 0xE7, 0x09, 0x29, 0x26, 0xD8, 0x6C, 0x4B, + 0x93, 0xF8, 0xBF, 0x50, 0x0B, 0x2D, 0x00, 0xF0, 0xF0, 0x80, 0x6F, 0x4B, + 0x00, 0x22, 0x5B, 0x5D, 0x11, 0x46, 0x01, 0x27, 0x68, 0xE7, 0x66, 0x4B, + 0x93, 0xF8, 0xC5, 0x30, 0x09, 0x2B, 0x4F, 0xF0, 0x00, 0x05, 0xA8, 0xBF, + 0x09, 0x23, 0xDE, 0xE7, 0x01, 0x28, 0xE6, 0xD0, 0x07, 0x29, 0x0B, 0xD9, + 0x5F, 0x4A, 0x65, 0x4B, 0x92, 0xF8, 0xC1, 0x50, 0x0A, 0x2D, 0xA8, 0xBF, + 0x0A, 0x25, 0x00, 0x22, 0x5B, 0x5D, 0x11, 0x46, 0x01, 0x27, 0x4F, 0xE7, + 0x04, 0x29, 0xD8, 0xD9, 0x58, 0x4A, 0x5E, 0x4B, 0x92, 0xF8, 0xC0, 0x50, + 0xA5, 0xF1, 0x0B, 0x01, 0xB1, 0xFA, 0x81, 0xF1, 0x5B, 0x5D, 0x00, 0x22, + 0x49, 0x09, 0x01, 0x27, 0x40, 0xE7, 0x40, 0xF6, 0x94, 0x10, 0x84, 0x42, + 0x52, 0x48, 0x94, 0xBF, 0x90, 0xF9, 0x01, 0x60, 0x90, 0xF9, 0x02, 0x60, + 0x00, 0x29, 0x7F, 0xF4, 0x40, 0xAF, 0x06, 0xF1, 0x0F, 0x01, 0x1E, 0x29, + 0xA8, 0xBF, 0x1E, 0x21, 0x0B, 0x2D, 0x21, 0xEA, 0xE1, 0x74, 0x4F, 0xEA, + 0x23, 0x10, 0x29, 0x46, 0x03, 0xF0, 0x0F, 0x03, 0xA8, 0xBF, 0x0B, 0x21, + 0x00, 0x2F, 0x3B, 0xD1, 0x0A, 0x2D, 0x2C, 0xDC, 0x48, 0xD0, 0x49, 0x4D, + 0x01, 0xEB, 0x41, 0x01, 0x15, 0xF9, 0x11, 0x60, 0xB4, 0x42, 0x05, 0xEB, + 0x41, 0x01, 0x34, 0xDC, 0x49, 0x78, 0x89, 0x1B, 0x21, 0x44, 0x49, 0xB2, + 0x6F, 0xF0, 0x04, 0x04, 0x01, 0x38, 0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, + 0x1B, 0x19, 0x83, 0xF3, 0x04, 0x03, 0x43, 0xEA, 0x00, 0x13, 0xD8, 0xB2, + 0x00, 0x2A, 0x3F, 0xF4, 0x11, 0xAF, 0x82, 0x42, 0xBF, 0xF6, 0x0E, 0xAF, + 0xD0, 0xB2, 0xF0, 0xBC, 0x70, 0x47, 0x41, 0xF2, 0x44, 0x62, 0x94, 0x42, + 0x33, 0x4A, 0x94, 0xBF, 0x92, 0xF9, 0x02, 0x20, 0x92, 0xF9, 0x03, 0x20, + 0x2C, 0xE7, 0x01, 0x36, 0x2A, 0xDA, 0xA4, 0xF1, 0x0D, 0x01, 0x49, 0xB2, + 0x6F, 0xF0, 0x04, 0x04, 0x02, 0x38, 0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, + 0x1B, 0x19, 0xDA, 0xE7, 0x0A, 0x2D, 0xD8, 0xDC, 0x58, 0xD0, 0x01, 0x31, + 0xC1, 0xE7, 0x91, 0xF9, 0x04, 0x50, 0xAC, 0x42, 0x1E, 0xDA, 0xCD, 0x78, + 0x89, 0x78, 0x69, 0x1A, 0x21, 0x44, 0x43, 0xFA, 0x81, 0xF3, 0xCA, 0xE7, + 0xB1, 0x1C, 0x2B, 0xDB, 0x01, 0x2E, 0x76, 0xDC, 0xA4, 0xF1, 0x0F, 0x01, + 0x43, 0xFA, 0x81, 0xF3, 0xC1, 0xE7, 0x1F, 0x4B, 0x08, 0xBF, 0xD4, 0x22, + 0x5B, 0x5D, 0x00, 0x21, 0x01, 0x27, 0xC7, 0xE6, 0xA4, 0xF1, 0x0F, 0x01, + 0x49, 0xB2, 0x03, 0x29, 0xD4, 0xBF, 0x5B, 0x18, 0x03, 0x33, 0xB2, 0xE7, + 0x49, 0x79, 0x49, 0x1B, 0x21, 0x44, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, + 0x5B, 0x18, 0x05, 0x33, 0x01, 0x30, 0xA8, 0xE7, 0x53, 0x78, 0x5B, 0x1B, + 0x19, 0x44, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x03, 0x01, 0x3C, 0x99, 0x42, + 0xAC, 0xBF, 0x40, 0x18, 0xC0, 0x18, 0x08, 0xE7, 0xA4, 0xF1, 0x0A, 0x01, + 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0x01, 0x38, 0xA1, 0x42, 0xAC, 0xBF, + 0x5B, 0x18, 0x1B, 0x19, 0x91, 0xE7, 0x00, 0xBF, 0xBC, 0x34, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xEC, 0x12, 0x17, 0x00, 0x68, 0x25, 0x17, 0x00, + 0x04, 0x13, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, 0x0C, 0x79, 0x15, 0x00, + 0xF8, 0x12, 0x17, 0x00, 0xB8, 0x78, 0x15, 0x00, 0x03, 0x36, 0x35, 0xDA, + 0xA4, 0xF1, 0x09, 0x01, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x04, 0x01, 0x38, + 0xA1, 0x42, 0xAC, 0xBF, 0x5B, 0x18, 0x1B, 0x19, 0x71, 0xE7, 0x01, 0x21, + 0x0F, 0x46, 0x00, 0x22, 0x0F, 0x23, 0x79, 0xE6, 0x03, 0x32, 0x09, 0xDA, + 0x09, 0x39, 0x49, 0xB2, 0x6F, 0xF0, 0x04, 0x03, 0x01, 0x3C, 0x99, 0x42, + 0xAC, 0xBF, 0x40, 0x18, 0xC0, 0x18, 0xCC, 0xE6, 0x0F, 0x39, 0x49, 0xB2, + 0x05, 0x29, 0xD4, 0xBF, 0x40, 0x18, 0x05, 0x30, 0xC5, 0xE6, 0x53, 0x79, + 0x5B, 0x1B, 0x19, 0x44, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, 0x40, 0x18, + 0x05, 0x30, 0x01, 0x34, 0xBB, 0xE6, 0xA4, 0xF1, 0x11, 0x01, 0x49, 0xB2, + 0x03, 0x29, 0xD4, 0xBF, 0x5B, 0x18, 0x03, 0x33, 0x02, 0x30, 0x46, 0xE7, + 0xA4, 0xF1, 0x0F, 0x01, 0x49, 0xB2, 0x05, 0x29, 0xD4, 0xBF, 0x5B, 0x18, + 0x05, 0x33, 0x3E, 0xE7, 0x14, 0x22, 0xF6, 0x23, 0x02, 0x70, 0x0B, 0x70, + 0x70, 0x47, 0x00, 0xBF, 0x08, 0xB5, 0x09, 0x49, 0x09, 0x48, 0x22, 0xF0, + 0xF3, 0xFD, 0x09, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x00, 0xDB, 0x08, 0xBD, 0xBD, 0xE8, 0x08, 0x40, 0x05, 0x49, 0x06, 0x48, + 0x39, 0x22, 0x23, 0xF0, 0x5F, 0xB8, 0x00, 0xBF, 0x50, 0x79, 0x15, 0x00, + 0xCC, 0xB5, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x1F, 0x49, 0x20, 0x4A, 0x88, 0x68, 0x20, 0x4B, + 0x10, 0xB4, 0xD2, 0xF8, 0x14, 0x44, 0x04, 0x65, 0x10, 0x20, 0x18, 0x60, + 0x88, 0x68, 0xD2, 0xF8, 0xA0, 0x42, 0x44, 0x65, 0x20, 0x20, 0x18, 0x60, + 0x88, 0x68, 0xD2, 0xF8, 0xA0, 0x42, 0xC4, 0x65, 0x80, 0x20, 0x18, 0x60, + 0x88, 0x68, 0xD2, 0xF8, 0xD8, 0x40, 0x84, 0x64, 0x04, 0x20, 0x18, 0x60, + 0x88, 0x68, 0xD2, 0xF8, 0x0C, 0x44, 0xC4, 0x64, 0xF8, 0x24, 0x08, 0x20, + 0x83, 0xF8, 0x03, 0x43, 0x18, 0x60, 0x88, 0x68, 0xD2, 0xF8, 0x1C, 0x41, + 0xC0, 0xF8, 0x0C, 0x41, 0x4F, 0xF4, 0x00, 0x20, 0x58, 0x60, 0x89, 0x68, + 0xD2, 0xF8, 0x2C, 0x21, 0xC1, 0xF8, 0x10, 0x21, 0x4F, 0xF4, 0x80, 0x10, + 0x4F, 0xF4, 0x00, 0x41, 0x4F, 0xF4, 0x00, 0x12, 0x58, 0x60, 0x99, 0x60, + 0x1A, 0x60, 0x62, 0xB6, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x00, 0xE1, 0x00, 0xE0, + 0x33, 0x49, 0x34, 0x4B, 0x0A, 0x68, 0x00, 0x28, 0x22, 0xF4, 0x00, 0x62, + 0xF0, 0xB5, 0x32, 0x4D, 0x0A, 0x60, 0x06, 0xBF, 0x1D, 0x46, 0x30, 0x26, + 0x20, 0x26, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, + 0xFA, 0xD1, 0x2A, 0x4F, 0x2C, 0x4C, 0x3A, 0x68, 0x22, 0xF4, 0x80, 0x52, + 0x3A, 0x60, 0x3A, 0x68, 0x42, 0xF4, 0x80, 0x62, 0x3A, 0x60, 0x3A, 0x68, + 0x42, 0xF4, 0x00, 0x62, 0x3A, 0x60, 0xB6, 0x00, 0x19, 0x46, 0x3A, 0x46, + 0x4F, 0xF0, 0xFF, 0x0E, 0xC8, 0x1C, 0xC0, 0xB2, 0xAC, 0x46, 0x13, 0x68, + 0x23, 0xF0, 0xFF, 0x03, 0x03, 0x43, 0x13, 0x60, 0x5C, 0xF8, 0x04, 0x3B, + 0x23, 0x60, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x13, 0x68, 0x9B, 0x04, 0xFC, 0xD5, + 0x01, 0x38, 0xC0, 0xB2, 0x70, 0x45, 0xE8, 0xD1, 0x04, 0x31, 0x04, 0x30, + 0xB1, 0x42, 0x5F, 0xFA, 0x80, 0xFE, 0x05, 0xF1, 0x10, 0x05, 0xDD, 0xD1, + 0x3B, 0x68, 0x23, 0xF4, 0x80, 0x63, 0x3B, 0x60, 0xC8, 0x23, 0x00, 0xBF, + 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x0A, 0x4A, 0x13, 0x68, + 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, + 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x05, 0x4B, 0x1A, 0x68, 0x42, 0xF4, + 0x80, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x62, 0x1A, 0x60, + 0xF0, 0xBD, 0x00, 0xBF, 0x60, 0x40, 0x34, 0x40, 0x1C, 0x13, 0x17, 0x00, + 0x1C, 0x16, 0x17, 0x00, 0x64, 0x40, 0x34, 0x40, 0x44, 0x4A, 0x45, 0x49, + 0x13, 0x68, 0xF0, 0xB4, 0x44, 0x4D, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, + 0x00, 0x28, 0x0C, 0xBF, 0x28, 0x46, 0x08, 0x46, 0x32, 0x23, 0x00, 0xBF, + 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x3B, 0x4A, 0x3E, 0x4D, + 0x13, 0x68, 0x23, 0xF4, 0x80, 0x53, 0x13, 0x60, 0x13, 0x68, 0x43, 0xF4, + 0x80, 0x63, 0x13, 0x60, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x63, 0x13, 0x60, + 0x03, 0x21, 0xA0, 0xF1, 0x0C, 0x04, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, + 0x0B, 0x43, 0x13, 0x60, 0x54, 0xF8, 0x21, 0x30, 0x2B, 0x60, 0x13, 0x68, + 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x13, 0x68, 0x9E, 0x04, 0xFC, 0xD5, 0x04, 0x31, 0x43, 0x29, + 0xE9, 0xD1, 0x28, 0x4B, 0x2B, 0x4E, 0x2A, 0x4D, 0x04, 0x1F, 0x02, 0x21, + 0x1A, 0x68, 0x22, 0xF0, 0xFF, 0x02, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, + 0x42, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x1A, 0x68, 0x90, 0x04, 0xFC, 0xD5, 0x37, 0x68, 0x54, 0xF8, + 0x21, 0x20, 0x18, 0x68, 0x27, 0xF0, 0x7F, 0x47, 0x02, 0xF0, 0x7F, 0x42, + 0x20, 0xF0, 0xFF, 0x00, 0x3A, 0x43, 0x08, 0x43, 0x18, 0x60, 0x2A, 0x60, + 0x1A, 0x68, 0x42, 0xF4, 0x80, 0x72, 0x1A, 0x60, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0x1A, 0x68, 0x92, 0x04, 0xFC, 0xD5, 0x04, 0x31, + 0x42, 0x29, 0xD3, 0xD1, 0x1A, 0x68, 0x22, 0xF4, 0x80, 0x62, 0x1A, 0x60, + 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, + 0x0A, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, 0x32, 0x23, + 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x05, 0x4B, + 0x1A, 0x68, 0x42, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, + 0x00, 0x62, 0xF0, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x60, 0x40, 0x34, 0x40, + 0x1C, 0x16, 0x17, 0x00, 0x1C, 0x13, 0x17, 0x00, 0x64, 0x40, 0x34, 0x40, + 0x68, 0x40, 0x34, 0x40, 0x2C, 0x49, 0x2D, 0x4B, 0x0A, 0x68, 0x30, 0xB4, + 0x2C, 0x4C, 0x00, 0x28, 0x22, 0xF4, 0x80, 0x72, 0x0C, 0xBF, 0x18, 0x46, + 0x20, 0x46, 0x0A, 0x60, 0x0C, 0xBF, 0x20, 0x24, 0x10, 0x24, 0x32, 0x23, + 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x22, 0x49, + 0x24, 0x4D, 0x0A, 0x68, 0x22, 0xF4, 0x00, 0x72, 0x0A, 0x60, 0x0A, 0x68, + 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x72, + 0x04, 0x38, 0x0A, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x1F, 0x02, 0x1A, 0x43, + 0x0A, 0x60, 0x50, 0xF8, 0x04, 0x2F, 0x2A, 0x60, 0x0A, 0x68, 0x42, 0xF0, + 0x20, 0x02, 0x0A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x0A, 0x68, 0x52, 0x05, 0xFC, 0xD5, 0x01, 0x33, 0x9C, 0x42, 0xE9, 0xD1, + 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x0B, 0x60, 0xC8, 0x23, 0x00, 0xBF, + 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x0A, 0x4A, 0x13, 0x68, + 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, + 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x05, 0x4B, 0x1A, 0x68, 0x42, 0xF4, + 0x00, 0x72, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x80, 0x72, 0x30, 0xBC, + 0x1A, 0x60, 0x70, 0x47, 0x6C, 0x40, 0x34, 0x40, 0x1C, 0x18, 0x17, 0x00, + 0x9C, 0x18, 0x17, 0x00, 0x70, 0x40, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x41, + 0xA6, 0x49, 0xA7, 0x4C, 0xA7, 0x4B, 0xA8, 0x4A, 0xDF, 0xF8, 0xE8, 0xE2, + 0x00, 0x28, 0x0E, 0xBF, 0xA4, 0x46, 0x8C, 0x46, 0x9E, 0x46, 0x13, 0x68, + 0x00, 0x2B, 0xFC, 0xD0, 0xA3, 0x4C, 0xA4, 0x49, 0x23, 0x68, 0x23, 0xF0, + 0x02, 0x03, 0x23, 0x60, 0x01, 0x23, 0x13, 0x60, 0x0B, 0x68, 0xA1, 0x4A, + 0x23, 0xF4, 0x00, 0x63, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, + 0x13, 0x60, 0x32, 0x24, 0x00, 0xBF, 0x01, 0x3C, 0x14, 0xF0, 0xFF, 0x04, + 0xFA, 0xD1, 0xDF, 0xF8, 0x64, 0x82, 0x99, 0x4A, 0xD8, 0xF8, 0x00, 0x30, + 0x98, 0x4F, 0x23, 0xF4, 0x80, 0x53, 0xC8, 0xF8, 0x00, 0x30, 0x13, 0x68, + 0x23, 0xF4, 0x00, 0x73, 0x13, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF4, + 0x80, 0x63, 0xC8, 0xF8, 0x00, 0x30, 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF4, + 0x00, 0x63, 0xC8, 0xF8, 0x00, 0x30, 0x42, 0x46, 0xFF, 0x26, 0xE1, 0x1C, + 0xC9, 0xB2, 0x75, 0x46, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x43, + 0x13, 0x60, 0x55, 0xF8, 0x04, 0x3B, 0x3B, 0x60, 0x13, 0x68, 0x43, 0xF4, + 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x13, 0x68, 0x9B, 0x04, 0xFC, 0xD5, 0x01, 0x39, 0xC9, 0xB2, 0x8E, 0x42, + 0xE8, 0xD1, 0x04, 0x34, 0x04, 0x36, 0x80, 0x2C, 0xF6, 0xB2, 0x0E, 0xF1, + 0x10, 0x0E, 0xDE, 0xD1, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF4, 0x80, 0x63, + 0xC8, 0xF8, 0x00, 0x30, 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, + 0xFF, 0x03, 0xFA, 0xD1, 0x74, 0x4C, 0x75, 0x49, 0x22, 0x68, 0x22, 0xF4, + 0x00, 0x62, 0x22, 0x60, 0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, + 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x72, 0x10, 0x34, 0xAC, 0xF1, 0x04, 0x0C, + 0x0A, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x1F, 0x02, 0x1A, 0x43, 0x0A, 0x60, + 0x5C, 0xF8, 0x04, 0x2F, 0x22, 0x60, 0x0A, 0x68, 0x42, 0xF0, 0x20, 0x02, + 0x0A, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x0A, 0x68, + 0x52, 0x05, 0xFC, 0xD5, 0x01, 0x33, 0x10, 0x2B, 0xE9, 0xD1, 0x0B, 0x68, + 0x23, 0xF0, 0x80, 0x03, 0x0B, 0x60, 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, + 0x13, 0xF0, 0xFF, 0x03, 0xFA, 0xD1, 0x5D, 0x49, 0x5E, 0x4A, 0x0B, 0x68, + 0x23, 0xF4, 0x80, 0x73, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF4, 0x00, 0x13, + 0x13, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x03, + 0xFA, 0xD1, 0x54, 0x49, 0x54, 0x4B, 0x0C, 0x68, 0x56, 0x4A, 0x57, 0x4D, + 0x44, 0xF4, 0x80, 0x54, 0x0C, 0x60, 0x1C, 0x68, 0x44, 0xF4, 0x00, 0x74, + 0x1C, 0x60, 0x0C, 0x68, 0x44, 0xF4, 0x00, 0x64, 0x0C, 0x60, 0x19, 0x68, + 0x51, 0x4C, 0x41, 0xF4, 0x80, 0x71, 0x19, 0x60, 0x11, 0x68, 0x50, 0x4B, + 0x41, 0xF4, 0x80, 0x51, 0x11, 0x60, 0x29, 0x68, 0x21, 0xF4, 0x80, 0x21, + 0x29, 0x60, 0x21, 0x68, 0x21, 0xF0, 0x00, 0x51, 0x21, 0x60, 0xA5, 0xF5, + 0xBC, 0x45, 0x1C, 0x68, 0x2C, 0x60, 0x49, 0x49, 0x5D, 0x68, 0x0D, 0x60, + 0x48, 0x4C, 0x9D, 0x68, 0x25, 0x60, 0xDD, 0x68, 0x8D, 0x60, 0x1D, 0x69, + 0xA5, 0x60, 0x5C, 0x69, 0x0C, 0x61, 0xD3, 0xE9, 0x06, 0x64, 0x44, 0x4D, + 0x44, 0x4B, 0x2E, 0x60, 0x8C, 0x61, 0x9B, 0x78, 0x18, 0x31, 0xCB, 0xB1, + 0xA5, 0xF6, 0x78, 0x65, 0x41, 0x4C, 0x2B, 0x68, 0x23, 0xF0, 0xC0, 0x63, + 0x43, 0xF0, 0x00, 0x73, 0x2B, 0x60, 0x23, 0x68, 0x01, 0xF5, 0xBB, 0x41, + 0x7C, 0x31, 0x43, 0xF0, 0x80, 0x63, 0x23, 0x60, 0x0B, 0x68, 0x43, 0xF4, + 0x00, 0x63, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x40, 0x63, 0x43, 0xF4, + 0x00, 0x63, 0x13, 0x60, 0x36, 0x4B, 0x93, 0xF8, 0xFA, 0x30, 0x38, 0xB9, + 0x43, 0xBB, 0x35, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x13, 0x60, + 0xBD, 0xE8, 0xF0, 0x81, 0xCB, 0xB1, 0x32, 0x49, 0x32, 0x4A, 0x0B, 0x68, + 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xB5, 0x03, 0x0B, 0x60, 0x13, 0x68, + 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xB5, 0x03, 0x13, 0x60, 0x0B, 0x68, + 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x32, 0x23, 0x0B, 0x60, 0x13, 0x68, + 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x32, 0x23, 0x13, 0x60, 0x24, 0x4A, + 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, + 0x21, 0x49, 0x22, 0x4A, 0x0B, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, + 0xC2, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, + 0xC2, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, + 0x3F, 0x23, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, + 0x3F, 0x23, 0x13, 0x60, 0xBB, 0xE7, 0x00, 0xBF, 0x9C, 0x18, 0x17, 0x00, + 0x1C, 0x18, 0x17, 0x00, 0x1C, 0x16, 0x17, 0x00, 0x40, 0x42, 0x04, 0x40, + 0x18, 0x00, 0x58, 0x40, 0x60, 0x40, 0x34, 0x40, 0x6C, 0x40, 0x34, 0x40, + 0x64, 0x40, 0x34, 0x40, 0x58, 0x40, 0x34, 0x40, 0x14, 0x20, 0x34, 0x40, + 0x18, 0x20, 0x34, 0x40, 0x1C, 0x20, 0x34, 0x40, 0xDC, 0x18, 0x17, 0x00, + 0x1C, 0xC2, 0x33, 0x40, 0x20, 0xC2, 0x33, 0x40, 0x30, 0xC2, 0x33, 0x40, + 0x3C, 0x36, 0x17, 0x00, 0x38, 0x40, 0x34, 0x40, 0x2C, 0x19, 0x17, 0x00, + 0x94, 0x40, 0x04, 0x40, 0xAC, 0xB3, 0x33, 0x40, 0xD4, 0xB3, 0x33, 0x40, + 0x1C, 0x13, 0x17, 0x00, 0x10, 0xB4, 0x1C, 0x4B, 0x1C, 0x4C, 0x0F, 0xCB, + 0x85, 0xB0, 0x0D, 0xF1, 0x10, 0x0C, 0x0C, 0xE9, 0x0F, 0x00, 0x63, 0x68, + 0xDB, 0x06, 0x16, 0xD5, 0x61, 0x68, 0xA3, 0x69, 0x5C, 0xFA, 0x83, 0xF3, + 0xC8, 0x04, 0x13, 0xF8, 0x10, 0x2C, 0x22, 0xD4, 0x60, 0x68, 0x14, 0x49, + 0x14, 0x4B, 0x10, 0xF4, 0x80, 0x7F, 0x08, 0xBF, 0x0B, 0x46, 0x11, 0x06, + 0x44, 0xBF, 0x5B, 0x00, 0x02, 0xF0, 0x7F, 0x02, 0xB3, 0xFB, 0xF2, 0xF3, + 0x00, 0xE0, 0x0F, 0x4B, 0x0B, 0x4A, 0x0F, 0x4C, 0x52, 0x69, 0x0F, 0x48, + 0x0F, 0x49, 0xD2, 0xB2, 0xB3, 0xFB, 0xF2, 0xF3, 0x23, 0x60, 0xD0, 0xF8, + 0x84, 0x20, 0xD2, 0xB2, 0xB3, 0xFB, 0xF2, 0xF3, 0x0B, 0x60, 0x05, 0xB0, + 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x09, 0x4B, 0xE1, 0xE7, 0x00, 0xBF, + 0x60, 0x79, 0x15, 0x00, 0x00, 0x00, 0x50, 0x40, 0x00, 0x38, 0x9C, 0x1C, + 0x00, 0xD0, 0x12, 0x13, 0x00, 0x75, 0x19, 0x03, 0x18, 0x13, 0x17, 0x00, + 0x00, 0x00, 0x10, 0x40, 0x14, 0x13, 0x17, 0x00, 0x00, 0x70, 0x38, 0x39, + 0x70, 0xB4, 0x5D, 0x4C, 0x5D, 0x48, 0x23, 0x68, 0x5D, 0x4D, 0x5E, 0x49, + 0x5E, 0x4A, 0x23, 0xF4, 0xC0, 0x63, 0x43, 0xF4, 0x00, 0x73, 0x23, 0x60, + 0x03, 0x68, 0x95, 0xF8, 0xFA, 0x40, 0x23, 0xF4, 0xBC, 0x03, 0x23, 0xF4, + 0x70, 0x53, 0x43, 0xF4, 0x60, 0x23, 0x43, 0xF4, 0x80, 0x63, 0x03, 0x60, + 0x0B, 0x68, 0x23, 0xF0, 0x60, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, + 0xFE, 0x33, 0x43, 0xF4, 0x98, 0x33, 0x13, 0x60, 0x00, 0x2C, 0x00, 0xF0, + 0x8F, 0x80, 0xA2, 0xF5, 0x11, 0x12, 0xA2, 0xF6, 0x4C, 0x52, 0x13, 0x68, + 0x23, 0xF0, 0xC0, 0x63, 0x13, 0x60, 0x4C, 0x4D, 0x4C, 0x48, 0x2B, 0x68, + 0x4C, 0x4C, 0x4D, 0x4A, 0x4D, 0x49, 0x4E, 0x4E, 0x43, 0xF0, 0x80, 0x63, + 0x2B, 0x60, 0x03, 0x68, 0x43, 0xF4, 0x00, 0x63, 0x03, 0x60, 0x23, 0x68, + 0x23, 0xF4, 0x7F, 0x73, 0x43, 0xF0, 0x04, 0x03, 0x23, 0x60, 0x03, 0x68, + 0x23, 0xF4, 0x80, 0x53, 0x43, 0xF4, 0x00, 0x63, 0x03, 0x60, 0x13, 0x68, + 0x23, 0xF0, 0xCC, 0x03, 0x43, 0xF0, 0xC4, 0x03, 0x13, 0x60, 0x0B, 0x68, + 0x03, 0xF0, 0x7F, 0x43, 0xA5, 0xF5, 0xF8, 0x55, 0x43, 0xF4, 0x78, 0x13, + 0x0C, 0x3D, 0x43, 0xF4, 0x78, 0x73, 0x0B, 0x60, 0x2B, 0x68, 0x1B, 0x0C, + 0xA4, 0xF5, 0x00, 0x54, 0x1B, 0x04, 0x34, 0x3C, 0x43, 0xF0, 0x84, 0x03, + 0x2B, 0x60, 0x23, 0x68, 0x37, 0x4D, 0x23, 0xF4, 0x40, 0x63, 0x43, 0xF4, + 0x00, 0x63, 0x23, 0x60, 0xD0, 0xF8, 0x04, 0x31, 0x02, 0xF5, 0xF8, 0x52, + 0x23, 0xF4, 0xE0, 0x23, 0x18, 0x32, 0x43, 0xF4, 0x80, 0x33, 0xC0, 0xF8, + 0x04, 0x31, 0x13, 0x68, 0x23, 0xF0, 0x76, 0x53, 0x23, 0xF0, 0x07, 0x03, + 0x01, 0xF5, 0xF7, 0x51, 0x43, 0xF0, 0x04, 0x53, 0x04, 0x31, 0x43, 0xF0, + 0x07, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x04, 0xF5, 0x00, 0x54, 0x02, 0xF1, + 0xEF, 0x52, 0x00, 0xF5, 0x01, 0x50, 0x1C, 0x34, 0x02, 0xF5, 0x3D, 0x22, + 0x02, 0xF6, 0x44, 0x02, 0x1D, 0x40, 0x08, 0x30, 0x22, 0x4B, 0x0D, 0x60, + 0x32, 0x60, 0x23, 0x60, 0x03, 0x68, 0x21, 0x4A, 0x21, 0x4C, 0x23, 0xF4, + 0x7F, 0x23, 0x23, 0xF4, 0x00, 0x63, 0x43, 0xF4, 0x32, 0x33, 0x03, 0x60, + 0xCB, 0x68, 0x43, 0xF4, 0x00, 0x63, 0xCB, 0x60, 0x13, 0x68, 0x23, 0xF0, + 0x09, 0x03, 0x43, 0xF4, 0x80, 0x53, 0x13, 0x60, 0x23, 0x68, 0x1B, 0x07, + 0x08, 0xD5, 0xA2, 0xF5, 0x0F, 0x12, 0xA2, 0xF5, 0x03, 0x52, 0x24, 0x3A, + 0x13, 0x68, 0x23, 0xF4, 0x00, 0x53, 0x13, 0x60, 0x70, 0xBC, 0x70, 0x47, + 0x12, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0xC0, 0x63, 0x43, 0xF0, 0x00, 0x73, + 0x13, 0x60, 0x70, 0xE7, 0x20, 0x40, 0x34, 0x40, 0x24, 0x40, 0x34, 0x40, + 0x2C, 0x19, 0x17, 0x00, 0x28, 0x40, 0x34, 0x40, 0x04, 0x01, 0x58, 0x40, + 0x38, 0x40, 0x34, 0x40, 0x30, 0x20, 0x34, 0x40, 0x48, 0x40, 0x34, 0x40, + 0x28, 0x21, 0x34, 0x40, 0x24, 0x21, 0x34, 0x40, 0x2C, 0x40, 0x34, 0x40, + 0x03, 0x00, 0x00, 0xFF, 0x08, 0x51, 0x2E, 0x1A, 0x08, 0x01, 0x58, 0x40, + 0x94, 0x40, 0x04, 0x40, 0xB8, 0xB3, 0x33, 0x40, 0x38, 0xB5, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x0D, 0x4D, 0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, + 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, 0xDE, 0x73, 0x1B, 0x68, + 0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x5C, 0x40, 0x04, 0x40, 0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4D, + 0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x23, 0x68, 0x00, 0x2B, + 0xFC, 0xD0, 0x4F, 0xF4, 0xE6, 0x73, 0x1B, 0x68, 0x98, 0x47, 0x01, 0x23, + 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x5C, 0x40, 0x04, 0x40, + 0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4D, 0x0D, 0x4C, 0x2B, 0x68, + 0x01, 0x33, 0x2B, 0x60, 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, + 0xE8, 0x73, 0x1B, 0x68, 0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, + 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x5C, 0x40, 0x04, 0x40, 0x38, 0xB5, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x24, + 0x1C, 0x60, 0x0D, 0x4D, 0x0D, 0x4C, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, + 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4F, 0xF4, 0xEA, 0x73, 0x1B, 0x68, + 0x98, 0x47, 0x01, 0x23, 0x23, 0x60, 0x2B, 0x68, 0x33, 0xB1, 0x04, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x5C, 0x40, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x47, 0x4C, 0x4B, 0x4D, 0x4D, + 0x08, 0x22, 0xC3, 0xF8, 0x00, 0x21, 0xAB, 0x78, 0x33, 0xB9, 0x4B, 0x4A, + 0x93, 0x68, 0x23, 0xF4, 0x80, 0x23, 0x43, 0xF4, 0x00, 0x33, 0x93, 0x60, + 0x47, 0x4A, 0x13, 0x6B, 0x03, 0xF0, 0x22, 0x03, 0x02, 0x2B, 0xFA, 0xD1, + 0x93, 0x68, 0x45, 0x4C, 0x41, 0x49, 0x45, 0x48, 0x23, 0xF4, 0x00, 0x63, + 0x43, 0xF0, 0x01, 0x13, 0x43, 0xF4, 0x04, 0x43, 0x93, 0x60, 0x06, 0x23, + 0x23, 0x60, 0x53, 0x6D, 0x40, 0x4C, 0x23, 0xF4, 0x40, 0x13, 0x53, 0x65, + 0x4F, 0xF4, 0x00, 0x63, 0xC1, 0xF8, 0x34, 0x31, 0x13, 0x68, 0x11, 0x68, + 0xC3, 0xF3, 0x09, 0x03, 0x43, 0xF0, 0x80, 0x03, 0x01, 0x40, 0x0B, 0x43, + 0x13, 0x60, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x08, 0xD1, 0x13, 0x68, + 0x11, 0x68, 0xC3, 0xF3, 0x09, 0x03, 0x43, 0xF0, 0x08, 0x03, 0x08, 0x40, + 0x18, 0x43, 0x10, 0x60, 0x2E, 0x49, 0x2C, 0x4E, 0x0B, 0x68, 0x0A, 0x68, + 0x30, 0x48, 0xC3, 0xF3, 0x09, 0x03, 0x22, 0xF4, 0x7F, 0x72, 0x22, 0xF0, + 0x03, 0x02, 0x43, 0xF4, 0x80, 0x73, 0x13, 0x43, 0x0B, 0x60, 0x73, 0x6F, + 0x2B, 0x4A, 0x43, 0xF0, 0x02, 0x03, 0x73, 0x67, 0x03, 0x68, 0x2A, 0x4E, + 0x23, 0xF4, 0x00, 0x63, 0x03, 0x60, 0x13, 0x68, 0x96, 0xF8, 0xA9, 0x00, + 0x43, 0xF0, 0x80, 0x73, 0x13, 0x60, 0x68, 0xB1, 0x0B, 0x6B, 0x5F, 0x06, + 0x05, 0xD4, 0x0B, 0x6B, 0x58, 0x07, 0x02, 0xD5, 0x22, 0x4B, 0x01, 0x22, + 0x1A, 0x70, 0x1A, 0x4B, 0x1A, 0x6B, 0x52, 0x06, 0x40, 0xF1, 0x10, 0x82, + 0x1F, 0x4B, 0xD6, 0xF8, 0xA0, 0x20, 0x1A, 0x60, 0xAB, 0x78, 0x00, 0x2B, + 0x3E, 0xD0, 0x1D, 0x4B, 0x1A, 0x68, 0x13, 0x78, 0x02, 0x2B, 0x00, 0xF0, + 0x6C, 0x82, 0x11, 0x4B, 0x0E, 0x48, 0x02, 0x21, 0x11, 0x70, 0x1A, 0x6D, + 0xA9, 0x78, 0x42, 0xF4, 0x80, 0x22, 0x1A, 0x65, 0x02, 0x69, 0x22, 0xF0, + 0x80, 0x02, 0x02, 0x61, 0x5A, 0x6A, 0x22, 0xF0, 0xFF, 0x02, 0x42, 0xF0, + 0xDF, 0x02, 0x5A, 0x62, 0x5A, 0x6A, 0x22, 0xF4, 0x7F, 0x42, 0x42, 0xF4, + 0x5F, 0x42, 0x5A, 0x62, 0x00, 0x29, 0x33, 0xD0, 0x03, 0xF0, 0xB0, 0xFC, + 0x0C, 0x4F, 0x33, 0xE0, 0x00, 0x00, 0x50, 0x40, 0x3C, 0x36, 0x17, 0x00, + 0x00, 0x60, 0x50, 0x40, 0x10, 0x00, 0x58, 0x40, 0x00, 0xFC, 0xFF, 0xFF, + 0x78, 0x36, 0x17, 0x00, 0x00, 0x01, 0x58, 0x40, 0x20, 0x01, 0x58, 0x40, + 0x2C, 0x19, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0xE0, 0x50, 0x34, 0x40, + 0x74, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC0, 0x4B, 0xC1, 0x49, + 0x1A, 0x6D, 0x42, 0xF4, 0x80, 0x22, 0x1A, 0x65, 0x0A, 0x69, 0x22, 0xF0, + 0x80, 0x02, 0x0A, 0x61, 0x5A, 0x6A, 0x22, 0xF0, 0xFF, 0x02, 0x42, 0xF0, + 0xDF, 0x02, 0x5A, 0x62, 0x5A, 0x6A, 0x22, 0xF4, 0x7F, 0x42, 0x42, 0xF4, + 0x5F, 0x42, 0x5A, 0x62, 0xB7, 0x4F, 0xD7, 0xF8, 0xCC, 0x30, 0x98, 0x47, + 0x03, 0xF0, 0xF4, 0xF9, 0xD7, 0xF8, 0x9C, 0x34, 0x98, 0x47, 0xB2, 0x4B, + 0xB3, 0x49, 0x1B, 0x68, 0xB3, 0x4A, 0xA8, 0x78, 0x1B, 0x0C, 0x0B, 0x70, + 0x04, 0x23, 0x1B, 0x68, 0x1B, 0x09, 0x13, 0x70, 0x10, 0xB9, 0xD7, 0xF8, + 0x80, 0x34, 0x98, 0x47, 0xAE, 0x48, 0xAF, 0x4D, 0xFF, 0xF7, 0x78, 0xFE, + 0xAE, 0x48, 0xFF, 0xF7, 0x9D, 0xFE, 0x03, 0x46, 0x1A, 0x0C, 0xAD, 0x49, + 0x2A, 0x70, 0x1B, 0x0F, 0x02, 0x22, 0x0B, 0x70, 0xAB, 0x48, 0x11, 0x46, + 0xFF, 0xF7, 0xE2, 0xFE, 0x4F, 0xF4, 0x80, 0x52, 0x11, 0x46, 0xA9, 0x48, + 0xFF, 0xF7, 0xDC, 0xFE, 0xA8, 0x4A, 0xA9, 0x49, 0xA9, 0x48, 0xFF, 0xF7, + 0xD7, 0xFE, 0x2B, 0x78, 0x01, 0x2B, 0x00, 0xF0, 0x8E, 0x81, 0xA7, 0x48, + 0x4F, 0xF4, 0x7F, 0x52, 0x4F, 0xF4, 0x9E, 0x51, 0xFF, 0xF7, 0xCC, 0xFE, + 0x04, 0x22, 0xA4, 0x48, 0x11, 0x46, 0xFF, 0xF7, 0xC7, 0xFE, 0x23, 0x68, + 0x1B, 0x78, 0x02, 0x2B, 0x04, 0xD0, 0xA1, 0x48, 0x07, 0x22, 0x00, 0x21, + 0xFF, 0xF7, 0xBE, 0xFE, 0x01, 0x21, 0x02, 0x20, 0x03, 0xF0, 0x5C, 0xFE, + 0x04, 0x22, 0x9D, 0x48, 0x00, 0x21, 0xFF, 0xF7, 0xB5, 0xFE, 0x01, 0x21, + 0x03, 0x20, 0x03, 0xF0, 0x53, 0xFE, 0x08, 0x22, 0x98, 0x48, 0x00, 0x21, + 0xFF, 0xF7, 0xAC, 0xFE, 0x00, 0x21, 0x05, 0x20, 0x03, 0xF0, 0x4A, 0xFE, + 0x95, 0x48, 0x20, 0x22, 0x00, 0x21, 0xFF, 0xF7, 0xA3, 0xFE, 0x20, 0x22, + 0x11, 0x46, 0x93, 0x48, 0xFF, 0xF7, 0x9E, 0xFE, 0x20, 0x22, 0x11, 0x46, + 0x91, 0x48, 0xFF, 0xF7, 0x99, 0xFE, 0x02, 0x22, 0x90, 0x48, 0x11, 0x46, + 0xFF, 0xF7, 0x94, 0xFE, 0x4F, 0xF4, 0xD2, 0x73, 0x0F, 0x20, 0x1B, 0x68, + 0x98, 0x47, 0x00, 0xF0, 0x60, 0x00, 0x20, 0x28, 0x00, 0xF0, 0x74, 0x81, + 0x4F, 0xF4, 0xFC, 0x02, 0x11, 0x46, 0x89, 0x48, 0xFF, 0xF7, 0x84, 0xFE, + 0x88, 0x4A, 0x89, 0x48, 0x4F, 0xF0, 0x46, 0x41, 0xFF, 0xF7, 0x7E, 0xFE, + 0x87, 0x48, 0x3F, 0x22, 0x1F, 0x21, 0xFF, 0xF7, 0x79, 0xFE, 0x4F, 0xF4, + 0x80, 0x22, 0x85, 0x48, 0x00, 0x21, 0xFF, 0xF7, 0x73, 0xFE, 0x84, 0x48, + 0x4F, 0xF4, 0x8E, 0x71, 0xFF, 0xF7, 0x46, 0xFE, 0x82, 0x48, 0x4F, 0xF4, + 0xF8, 0x22, 0x4F, 0xF4, 0xD8, 0x21, 0xFF, 0xF7, 0x67, 0xFE, 0x40, 0x22, + 0x11, 0x46, 0x7F, 0x48, 0xFF, 0xF7, 0x62, 0xFE, 0x4F, 0xF4, 0xC0, 0x32, + 0x11, 0x46, 0x7D, 0x48, 0xFF, 0xF7, 0x5C, 0xFE, 0x7C, 0x48, 0x4F, 0xF4, + 0xE0, 0x62, 0x4F, 0xF4, 0x00, 0x71, 0xFF, 0xF7, 0x55, 0xFE, 0x96, 0xF8, + 0xC7, 0x70, 0xB7, 0xB3, 0x78, 0x4A, 0x96, 0xF8, 0xC8, 0x10, 0x78, 0x4B, + 0x96, 0xF8, 0xC9, 0x00, 0x11, 0x70, 0x96, 0xF8, 0xCA, 0x10, 0x50, 0x70, + 0x91, 0x70, 0x96, 0xF8, 0xCB, 0x50, 0x96, 0xF8, 0xCC, 0x00, 0x96, 0xF8, + 0xCD, 0x10, 0x96, 0xF8, 0xCE, 0x20, 0x1D, 0x70, 0x58, 0x70, 0x99, 0x70, + 0xDA, 0x70, 0x4F, 0xF4, 0xD2, 0x73, 0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, + 0x10, 0xF4, 0x60, 0x2F, 0xC0, 0xF3, 0x42, 0x41, 0x0E, 0xD0, 0x6A, 0x4A, + 0x8D, 0x01, 0x02, 0xF1, 0x40, 0x00, 0x52, 0xF8, 0x04, 0x3F, 0x23, 0xF4, + 0xE0, 0x73, 0x2B, 0x43, 0x90, 0x42, 0x13, 0x60, 0xF7, 0xD1, 0x65, 0x48, + 0x03, 0xF0, 0x68, 0xFD, 0x23, 0x68, 0x1C, 0x78, 0x01, 0x2C, 0x00, 0xF0, + 0xEF, 0x80, 0xBD, 0xE8, 0xF0, 0x87, 0x4F, 0xF4, 0xD2, 0x76, 0x0A, 0x20, + 0x33, 0x68, 0xDF, 0xF8, 0x6C, 0xA1, 0x98, 0x47, 0x33, 0x68, 0x05, 0x46, + 0x0B, 0x20, 0x98, 0x47, 0x33, 0x68, 0x80, 0x46, 0x0F, 0x20, 0x98, 0x47, + 0x5F, 0xEA, 0x95, 0x7C, 0x3A, 0x46, 0x0C, 0xBF, 0x4F, 0xF0, 0x08, 0x09, + 0x4F, 0xF0, 0x10, 0x09, 0x4F, 0xEA, 0x15, 0x6E, 0xD3, 0x00, 0x25, 0xFA, + 0x03, 0xF3, 0xDF, 0xB2, 0xC3, 0xF3, 0x03, 0x13, 0xBC, 0xF1, 0x00, 0x0F, + 0x38, 0xD1, 0x00, 0x2B, 0x54, 0xD1, 0x00, 0x2F, 0x40, 0xF0, 0x1F, 0x81, + 0x01, 0x32, 0x03, 0x2A, 0xEE, 0xD1, 0xDF, 0xF8, 0x24, 0xE1, 0x07, 0x0E, + 0x00, 0x21, 0xCB, 0x00, 0x28, 0xFA, 0x03, 0xF3, 0xDE, 0xB2, 0xC3, 0xF3, + 0x03, 0x13, 0xBC, 0xF1, 0x00, 0x0F, 0x0B, 0xD1, 0xEB, 0xB1, 0x08, 0x22, + 0x93, 0x42, 0x28, 0xBF, 0xD3, 0x1A, 0x5B, 0xB2, 0x0E, 0xF8, 0x01, 0x30, + 0x01, 0x31, 0x04, 0x29, 0xEB, 0xD1, 0x9C, 0xE7, 0x4D, 0x00, 0x6A, 0x1C, + 0x47, 0xFA, 0x02, 0xF2, 0x12, 0x01, 0x02, 0xF0, 0x10, 0x02, 0x13, 0x43, + 0x13, 0xF0, 0xFF, 0x03, 0x1F, 0xD1, 0x47, 0xFA, 0x05, 0xF3, 0x1B, 0x01, + 0x03, 0xF0, 0x10, 0x03, 0x06, 0xF0, 0x0F, 0x06, 0x1E, 0x43, 0x00, 0x2E, + 0xE6, 0xD0, 0x33, 0x46, 0x4A, 0x46, 0xDD, 0xE7, 0x56, 0x00, 0x71, 0x1C, + 0x4E, 0xFA, 0x01, 0xF1, 0x09, 0x01, 0x01, 0xF0, 0x10, 0x01, 0x0B, 0x43, + 0x13, 0xF0, 0xFF, 0x03, 0x09, 0xD0, 0x10, 0x21, 0x8B, 0x42, 0x28, 0xBF, + 0xCB, 0x1A, 0x5B, 0xB2, 0x0A, 0xF8, 0x02, 0x30, 0xB8, 0xE7, 0x10, 0x22, + 0xC8, 0xE7, 0x4E, 0xFA, 0x06, 0xF3, 0x1B, 0x01, 0x03, 0xF0, 0x10, 0x03, + 0x07, 0xF0, 0x0F, 0x07, 0x1F, 0x43, 0xAA, 0xE7, 0x08, 0x21, 0xEB, 0xE7, + 0x00, 0x60, 0x50, 0x40, 0x00, 0x00, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x11, 0x13, 0x17, 0x00, 0x12, 0x13, 0x17, 0x00, 0x04, 0x02, 0x22, 0x03, + 0x10, 0x13, 0x17, 0x00, 0x00, 0x00, 0x01, 0x50, 0x70, 0x25, 0x17, 0x00, + 0x50, 0x91, 0x01, 0x50, 0x20, 0x91, 0x01, 0x50, 0xC0, 0xFD, 0x01, 0x00, + 0xC0, 0xF1, 0x01, 0x00, 0x24, 0x91, 0x01, 0x50, 0x08, 0x88, 0x01, 0x50, + 0x18, 0x88, 0x01, 0x50, 0x2C, 0x91, 0x01, 0x50, 0x00, 0x10, 0x01, 0x50, + 0x0C, 0x10, 0x01, 0x50, 0x10, 0x10, 0x01, 0x50, 0x18, 0x10, 0x01, 0x50, + 0x00, 0x30, 0x01, 0x50, 0x00, 0x88, 0x01, 0x50, 0x00, 0x00, 0xC0, 0xFF, + 0x04, 0x88, 0x01, 0x50, 0x28, 0x91, 0x01, 0x50, 0x5C, 0x00, 0x01, 0x50, + 0x58, 0x00, 0x01, 0x50, 0x74, 0x91, 0x01, 0x50, 0x18, 0x91, 0x01, 0x50, + 0x00, 0x91, 0x01, 0x50, 0x30, 0x88, 0x01, 0x50, 0x68, 0x25, 0x17, 0x00, + 0x6C, 0x25, 0x17, 0x00, 0x18, 0x18, 0x17, 0x00, 0x74, 0x79, 0x15, 0x00, + 0x1B, 0x6B, 0x59, 0x07, 0x7F, 0xF5, 0xEC, 0xAD, 0xD6, 0xF8, 0xA0, 0x30, + 0x3F, 0x48, 0x40, 0x49, 0x40, 0x4A, 0x43, 0xF0, 0x00, 0x73, 0x01, 0x27, + 0x07, 0x70, 0x0B, 0x60, 0x53, 0x6F, 0x43, 0xF0, 0x10, 0x03, 0x53, 0x67, + 0xE0, 0xE5, 0x3C, 0x4A, 0x3C, 0x49, 0x3D, 0x48, 0xFF, 0xF7, 0x40, 0xFD, + 0x3C, 0x48, 0x4F, 0xF4, 0x08, 0x42, 0x4F, 0xF4, 0x00, 0x41, 0xFF, 0xF7, + 0x39, 0xFD, 0x3A, 0x4A, 0x3A, 0x49, 0x3B, 0x48, 0xFF, 0xF7, 0x34, 0xFD, + 0x3A, 0x48, 0x8F, 0x22, 0x06, 0x21, 0xFF, 0xF7, 0x2F, 0xFD, 0x66, 0xE6, + 0x38, 0x49, 0x39, 0x48, 0x4F, 0xF0, 0xFF, 0x32, 0xFF, 0xF7, 0x28, 0xFD, + 0x4F, 0xF0, 0xFF, 0x32, 0x36, 0x48, 0x4F, 0xF0, 0x02, 0x11, 0xFF, 0xF7, + 0x21, 0xFD, 0x35, 0x49, 0x35, 0x48, 0xFF, 0xF7, 0xF5, 0xFC, 0x22, 0x46, + 0x21, 0x46, 0x34, 0x48, 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, 0x16, 0xBD, + 0x32, 0x48, 0x0F, 0x22, 0x01, 0x21, 0xFF, 0xF7, 0x11, 0xFD, 0x02, 0x22, + 0x11, 0x46, 0x30, 0x48, 0xFF, 0xF7, 0x0C, 0xFD, 0x02, 0x22, 0x11, 0x46, + 0x2E, 0x48, 0xFF, 0xF7, 0x07, 0xFD, 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, + 0x2A, 0x48, 0xFF, 0xF7, 0x01, 0xFD, 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, + 0x28, 0x48, 0xFF, 0xF7, 0xFB, 0xFC, 0x02, 0x22, 0x11, 0x46, 0x27, 0x48, + 0xFF, 0xF7, 0xF6, 0xFC, 0x25, 0x48, 0x4F, 0xF4, 0x00, 0x52, 0x00, 0x21, + 0xFF, 0xF7, 0xF0, 0xFC, 0x64, 0xE6, 0x23, 0x4B, 0x0F, 0x49, 0x1A, 0x6D, + 0x22, 0x4F, 0x42, 0xF4, 0x80, 0x22, 0x1A, 0x65, 0x0A, 0x69, 0x22, 0xF0, + 0x80, 0x02, 0x0A, 0x61, 0x5A, 0x6A, 0x22, 0xF0, 0xFF, 0x02, 0x42, 0xF0, + 0xDF, 0x02, 0x5A, 0x62, 0x5A, 0x6A, 0x22, 0xF4, 0x7F, 0x42, 0x42, 0xF4, + 0x5F, 0x42, 0x5A, 0x62, 0x03, 0xF0, 0x48, 0xFA, 0xCC, 0xE5, 0x3B, 0x46, + 0x49, 0x46, 0x1D, 0xE7, 0x4C, 0x36, 0x17, 0x00, 0xE0, 0x50, 0x34, 0x40, + 0x00, 0x00, 0x50, 0x40, 0xC0, 0x3F, 0x00, 0x40, 0x40, 0x12, 0x00, 0x40, + 0x08, 0x88, 0x01, 0x50, 0x04, 0x91, 0x01, 0x50, 0xE0, 0x01, 0x00, 0x22, + 0xC0, 0x00, 0x00, 0x02, 0x08, 0x91, 0x01, 0x50, 0x00, 0x91, 0x01, 0x50, + 0x00, 0x01, 0x00, 0x03, 0x0C, 0x80, 0x01, 0x50, 0x18, 0x80, 0x01, 0x50, + 0x0A, 0x33, 0x41, 0x01, 0x38, 0x91, 0x01, 0x50, 0x04, 0x00, 0x01, 0x50, + 0x04, 0x20, 0x01, 0x50, 0x04, 0x10, 0x01, 0x50, 0x08, 0x10, 0x01, 0x50, + 0x00, 0x10, 0x01, 0x50, 0x00, 0x60, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x10, 0x4B, 0x11, 0x4A, 0x19, 0x68, 0x21, 0xF4, 0x78, 0x11, 0x41, 0xF4, + 0x50, 0x11, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF4, 0x78, 0x11, 0x41, 0xF4, + 0xA0, 0x11, 0x19, 0x60, 0x11, 0x69, 0x18, 0x68, 0x20, 0xF4, 0x78, 0x10, + 0x40, 0xF4, 0x50, 0x10, 0x32, 0x31, 0x18, 0x60, 0x13, 0x69, 0xCB, 0x1A, + 0x00, 0x2B, 0xFB, 0xDA, 0x03, 0x4A, 0x13, 0x68, 0x23, 0xF4, 0x78, 0x13, + 0x43, 0xF4, 0x00, 0x13, 0x13, 0x60, 0x70, 0x47, 0x58, 0x40, 0x34, 0x40, + 0x00, 0x10, 0x50, 0x40, 0x1E, 0x49, 0x1F, 0x4A, 0x0B, 0x68, 0x43, 0xF4, + 0x00, 0x13, 0x10, 0xB4, 0x0B, 0x60, 0x13, 0x68, 0x59, 0x07, 0x08, 0xD4, + 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, + 0x13, 0x68, 0x59, 0x07, 0xF6, 0xD5, 0x15, 0x49, 0x15, 0x4A, 0x0B, 0x68, + 0x43, 0xF4, 0xC0, 0x23, 0x0B, 0x60, 0x13, 0x68, 0x9B, 0x07, 0x08, 0xD4, + 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, + 0x13, 0x68, 0x9B, 0x07, 0xF6, 0xD5, 0x0E, 0x4C, 0x0E, 0x48, 0x23, 0x68, + 0x0E, 0x4A, 0x0F, 0x49, 0x43, 0xF4, 0x00, 0x33, 0x23, 0x60, 0x03, 0x68, + 0x5D, 0xF8, 0x04, 0x4B, 0x43, 0xF0, 0x80, 0x73, 0x03, 0x60, 0x13, 0x68, + 0x43, 0xF4, 0xA4, 0x63, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x4F, 0xF4, + 0x00, 0x50, 0x21, 0xF0, 0xA1, 0xBD, 0x00, 0xBF, 0x58, 0x40, 0x34, 0x40, + 0x80, 0x40, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, 0x10, 0x00, 0x34, 0x40, + 0x30, 0x20, 0x34, 0x40, 0x9C, 0x79, 0x15, 0x00, 0x10, 0xB5, 0x10, 0x4C, + 0x10, 0x48, 0x23, 0x68, 0x10, 0x49, 0x11, 0x4A, 0x23, 0xF4, 0x05, 0x43, + 0x23, 0xF0, 0xEC, 0x03, 0x23, 0x60, 0x03, 0x68, 0x23, 0xF4, 0x00, 0x33, + 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x73, 0x0B, 0x60, 0x13, 0x68, + 0x23, 0xF4, 0xC0, 0x23, 0x0A, 0x20, 0x13, 0x60, 0xFD, 0xF7, 0xD6, 0xFC, + 0xBD, 0xE8, 0x10, 0x40, 0x06, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x21, 0xF0, + 0x73, 0xBD, 0x00, 0xBF, 0x30, 0x20, 0x34, 0x40, 0x2C, 0x20, 0x34, 0x40, + 0x10, 0x00, 0x34, 0x40, 0x58, 0x40, 0x34, 0x40, 0xB8, 0x79, 0x15, 0x00, + 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, + 0x19, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, + 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x16, 0x4A, 0x13, 0x68, 0xDB, 0x07, + 0x11, 0xD4, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, + 0xFA, 0xD1, 0x13, 0x68, 0xDB, 0x07, 0xF6, 0xD5, 0x32, 0x23, 0x00, 0xBF, + 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0xDB, 0x07, + 0xED, 0xD5, 0x0B, 0x4B, 0x1A, 0x68, 0x53, 0x0C, 0x00, 0x2A, 0xBC, 0xBF, + 0x6F, 0xEA, 0x43, 0x43, 0x6F, 0xEA, 0x53, 0x43, 0x03, 0x60, 0xC2, 0xF3, + 0x4E, 0x03, 0x12, 0x04, 0x44, 0xBF, 0x6F, 0xEA, 0x43, 0x43, 0x6F, 0xEA, + 0x53, 0x43, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x84, 0x21, 0x34, 0x40, + 0x00, 0x22, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0x2A, 0x4F, 0x2B, 0x4D, + 0x3B, 0x68, 0x2B, 0x4A, 0x23, 0xF4, 0x7F, 0x53, 0x3B, 0x60, 0x2B, 0x68, + 0x43, 0xF4, 0x80, 0x63, 0x2B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x03, + 0x13, 0x60, 0x01, 0x20, 0xFD, 0xF7, 0x72, 0xFC, 0x00, 0x24, 0x26, 0x46, + 0x4F, 0xF0, 0x07, 0x08, 0x02, 0x20, 0xFD, 0xF7, 0x6B, 0xFC, 0x2B, 0x68, + 0xDA, 0x05, 0x54, 0xBF, 0x01, 0x36, 0x06, 0xF1, 0xFF, 0x36, 0x76, 0xB2, + 0x1B, 0x06, 0x3B, 0x68, 0x54, 0xBF, 0x01, 0x34, 0x04, 0xF1, 0xFF, 0x34, + 0x00, 0x2E, 0x23, 0xF4, 0x7F, 0x53, 0xDC, 0xBF, 0x70, 0x42, 0x43, 0xEA, + 0x80, 0x23, 0x64, 0xB2, 0xD4, 0xBF, 0x43, 0xF4, 0x00, 0x53, 0x43, 0xEA, + 0x86, 0x23, 0x00, 0x2C, 0xDC, 0xBF, 0x60, 0x42, 0x43, 0xEA, 0x80, 0x13, + 0x08, 0xF1, 0xFF, 0x32, 0xCC, 0xBF, 0x43, 0xEA, 0x84, 0x13, 0x43, 0xF4, + 0x00, 0x73, 0x12, 0xF0, 0xFF, 0x08, 0x3B, 0x60, 0xD2, 0xD1, 0x0A, 0x48, + 0x0A, 0x49, 0x02, 0x68, 0x22, 0xF4, 0x80, 0x62, 0x02, 0x60, 0x0A, 0x68, + 0xC3, 0xF3, 0x83, 0x10, 0x22, 0xF0, 0x40, 0x02, 0xC3, 0xF3, 0x83, 0x23, + 0x0A, 0x60, 0x43, 0xEA, 0x00, 0x10, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, + 0x50, 0x40, 0x34, 0x40, 0x14, 0x40, 0x34, 0x40, 0x5C, 0x40, 0x34, 0x40, + 0x01, 0x28, 0x15, 0xD0, 0x02, 0x28, 0x05, 0xD0, 0x4B, 0x78, 0x10, 0x2B, + 0x19, 0xD8, 0x30, 0x23, 0x8B, 0x70, 0x70, 0x47, 0xD2, 0xE9, 0x00, 0x32, + 0x00, 0x2B, 0x24, 0xDD, 0x00, 0x2A, 0x37, 0xDB, 0xB3, 0xEB, 0x42, 0x0F, + 0x0B, 0x78, 0xCC, 0xBF, 0x10, 0x3B, 0x18, 0x3B, 0x4B, 0x70, 0x70, 0x47, + 0x13, 0x68, 0xB3, 0xF5, 0x00, 0x5F, 0x10, 0xDA, 0x00, 0x2B, 0x1A, 0xDD, + 0x40, 0x23, 0x0B, 0x70, 0x70, 0x47, 0x30, 0x2B, 0x0C, 0xD9, 0x60, 0x2B, + 0x1A, 0xD8, 0x92, 0x68, 0x00, 0x2A, 0x28, 0xDB, 0x60, 0x2B, 0xDC, 0xD1, + 0x20, 0x23, 0x8B, 0x70, 0x70, 0x47, 0x20, 0x23, 0x0B, 0x70, 0x70, 0x47, + 0x18, 0x23, 0x8B, 0x70, 0x70, 0x47, 0x00, 0x2A, 0x1E, 0xDD, 0x0B, 0x78, + 0x20, 0x3B, 0x4B, 0x70, 0x70, 0x47, 0x13, 0xF5, 0x00, 0x5F, 0xD4, 0xBF, + 0xE0, 0x23, 0xC0, 0x23, 0x0B, 0x70, 0x70, 0x47, 0xC0, 0x2B, 0x09, 0xD8, + 0x92, 0x68, 0x00, 0x2A, 0x19, 0xDD, 0x60, 0x23, 0x8B, 0x70, 0x70, 0x47, + 0x0B, 0x78, 0x20, 0x33, 0x4B, 0x70, 0x70, 0x47, 0xD8, 0x2B, 0x0D, 0xD8, + 0xE8, 0x23, 0x8B, 0x70, 0x70, 0x47, 0xA0, 0x23, 0x8B, 0x70, 0x70, 0x47, + 0xB3, 0xEB, 0x42, 0x0F, 0x0B, 0x78, 0xB4, 0xBF, 0x10, 0x33, 0x18, 0x33, + 0x4B, 0x70, 0x70, 0x47, 0xD0, 0x23, 0x8B, 0x70, 0x70, 0x47, 0xA0, 0x2B, + 0xFA, 0xD1, 0xE0, 0x23, 0x8B, 0x70, 0x70, 0x47, 0x01, 0x28, 0x1D, 0xD0, + 0x02, 0x28, 0x08, 0xD0, 0x09, 0x78, 0x01, 0x39, 0x05, 0x29, 0x69, 0xD8, + 0xDF, 0xE8, 0x01, 0xF0, 0x3C, 0x42, 0x39, 0x33, 0x2D, 0x2A, 0x10, 0xB4, + 0x1C, 0x68, 0xB4, 0xF5, 0x00, 0x5F, 0x19, 0xDA, 0x00, 0x2C, 0x4A, 0xDD, + 0x5B, 0x68, 0x00, 0x2B, 0x13, 0x78, 0xAA, 0xBF, 0x03, 0x20, 0x10, 0x33, + 0x10, 0x3B, 0x53, 0x70, 0x08, 0x70, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x1B, 0x68, 0xB3, 0xF5, 0x00, 0x5F, 0x04, 0xDA, 0x00, 0x2B, 0x2B, 0xDD, + 0x50, 0x23, 0x13, 0x70, 0x70, 0x47, 0x30, 0x23, 0x13, 0x70, 0x70, 0x47, + 0x13, 0x78, 0x01, 0x20, 0x10, 0x33, 0x53, 0x70, 0x08, 0x70, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0xC8, 0x23, 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, + 0x00, 0x2B, 0x21, 0xDD, 0x70, 0x23, 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, + 0x00, 0x2B, 0x18, 0xDD, 0x90, 0x23, 0x93, 0x70, 0x70, 0x47, 0x38, 0x23, + 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, 0x00, 0x2B, 0xF0, 0xDD, 0x20, 0x23, + 0x93, 0x70, 0x70, 0x47, 0x9B, 0x68, 0x00, 0x2B, 0xF0, 0xDD, 0x40, 0x23, + 0x93, 0x70, 0x70, 0x47, 0x13, 0xF5, 0x00, 0x5F, 0xD4, 0xBF, 0xD0, 0x23, + 0xB0, 0x23, 0x13, 0x70, 0x70, 0x47, 0xE0, 0x23, 0x93, 0x70, 0x70, 0x47, + 0xC0, 0x23, 0x93, 0x70, 0x70, 0x47, 0x14, 0xF5, 0x00, 0x5F, 0x05, 0xDC, + 0x13, 0x78, 0x04, 0x20, 0x10, 0x3B, 0x53, 0x70, 0x08, 0x70, 0xB4, 0xE7, + 0x5B, 0x68, 0x00, 0x2B, 0x13, 0x78, 0xCC, 0xBF, 0x05, 0x20, 0x06, 0x20, + 0x10, 0x3B, 0x53, 0x70, 0x08, 0x70, 0xAA, 0xE7, 0x88, 0x23, 0x93, 0x70, + 0x70, 0x47, 0x00, 0xBF, 0x30, 0xB4, 0x0F, 0x29, 0x15, 0x46, 0x1C, 0x46, + 0x02, 0x9A, 0x03, 0xD0, 0x30, 0xBC, 0x19, 0x46, 0xFF, 0xF7, 0x1C, 0xBF, + 0x13, 0x46, 0x29, 0x46, 0x22, 0x46, 0x30, 0xBC, 0xFF, 0xF7, 0x7A, 0xBF, + 0x70, 0xB4, 0x50, 0xEA, 0x01, 0x04, 0x02, 0xD1, 0x70, 0xBC, 0x1A, 0x60, + 0x70, 0x47, 0x08, 0x18, 0x18, 0xBF, 0x00, 0x21, 0x03, 0xD1, 0x20, 0xE0, + 0xE9, 0xB2, 0x81, 0x42, 0x1D, 0xDA, 0x53, 0xF8, 0x21, 0x40, 0x94, 0x42, + 0x01, 0xF1, 0x01, 0x05, 0x03, 0xEB, 0x81, 0x06, 0xF4, 0xDC, 0xC0, 0xB2, + 0x88, 0x42, 0x0F, 0xD9, 0x44, 0x1E, 0x61, 0x1A, 0x1C, 0x1F, 0xC9, 0xB2, + 0x04, 0xEB, 0x80, 0x04, 0xA4, 0xEB, 0x81, 0x04, 0x03, 0xEB, 0x80, 0x03, + 0x53, 0xF8, 0x04, 0x1C, 0x43, 0xF8, 0x04, 0x19, 0xA3, 0x42, 0xF9, 0xD1, + 0x32, 0x60, 0x70, 0xBC, 0x70, 0x47, 0x70, 0xBC, 0x43, 0xF8, 0x20, 0x20, + 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x00, 0xF1, 0xFF, 0x3C, + 0x85, 0xB0, 0xCC, 0xF3, 0x47, 0x0C, 0x4F, 0xF0, 0x80, 0x34, 0x48, 0xF2, + 0x80, 0x03, 0x01, 0x28, 0xCD, 0xE9, 0x01, 0xC4, 0xAD, 0xF8, 0x0C, 0x30, + 0x40, 0xF2, 0x83, 0x80, 0x80, 0x24, 0xA2, 0x46, 0x16, 0x46, 0x00, 0x25, + 0x01, 0x23, 0x43, 0xF2, 0xB0, 0x69, 0x8E, 0x46, 0x00, 0x92, 0x18, 0xE0, + 0x80, 0x2C, 0x04, 0xBF, 0x04, 0xAA, 0x02, 0xEB, 0x45, 0x01, 0x4F, 0xEA, + 0x45, 0x07, 0x04, 0xAA, 0x17, 0x44, 0x04, 0xBF, 0x03, 0xF1, 0xFF, 0x34, + 0x01, 0xF8, 0x08, 0x4C, 0x07, 0xF8, 0x07, 0x3C, 0x01, 0x33, 0xDB, 0xB2, + 0x98, 0x42, 0x22, 0xD0, 0x04, 0xAA, 0x02, 0xEB, 0x45, 0x01, 0x11, 0xF8, + 0x08, 0x4C, 0x37, 0x68, 0x56, 0xF8, 0x04, 0x1F, 0x7F, 0x1A, 0x77, 0x45, + 0xE0, 0xDD, 0x80, 0x2C, 0xEE, 0xD0, 0x00, 0x9A, 0x52, 0xF8, 0x24, 0x10, + 0x49, 0x45, 0x4F, 0xEA, 0x45, 0x07, 0x04, 0xAA, 0x55, 0xDD, 0x02, 0xEB, + 0x45, 0x01, 0x11, 0xF8, 0x07, 0x8C, 0x61, 0x46, 0x0C, 0x44, 0xA0, 0x45, + 0x61, 0xDB, 0x01, 0x33, 0xDB, 0xB2, 0x01, 0x35, 0x98, 0x42, 0xED, 0xB2, + 0xDC, 0xD1, 0x02, 0x2D, 0x00, 0x9A, 0x68, 0xD9, 0x9D, 0xF8, 0x08, 0x10, + 0x80, 0x29, 0x3A, 0xD0, 0x9D, 0xF8, 0x09, 0x30, 0x52, 0xF8, 0x21, 0x40, + 0x52, 0xF8, 0x23, 0x50, 0x58, 0x1C, 0x40, 0x1A, 0x64, 0x1B, 0xC0, 0xB2, + 0x02, 0xAD, 0x94, 0xFB, 0xF0, 0xF4, 0x01, 0x27, 0xA4, 0xB2, 0x00, 0x26, + 0x95, 0xF8, 0x02, 0xE0, 0xBE, 0xF1, 0x80, 0x0F, 0x5F, 0xFA, 0x87, 0xFC, + 0x16, 0xD0, 0x95, 0xF8, 0x03, 0x80, 0x52, 0xF8, 0x2E, 0x30, 0x08, 0xF1, + 0x01, 0x01, 0xA1, 0xEB, 0x0E, 0x01, 0xC9, 0xB2, 0x52, 0xF8, 0x28, 0xE0, + 0x81, 0x42, 0xA3, 0xEB, 0x0E, 0x03, 0x93, 0xFB, 0xF1, 0xF3, 0x9B, 0xB2, + 0x32, 0xD8, 0x61, 0xD0, 0x02, 0x2F, 0x05, 0xF1, 0x02, 0x05, 0x34, 0xD1, + 0x04, 0xAB, 0x03, 0xEB, 0x46, 0x06, 0x16, 0xF8, 0x08, 0x1C, 0x16, 0xF8, + 0x07, 0x3C, 0x5B, 0x1A, 0x01, 0x33, 0x01, 0xEB, 0x63, 0x03, 0xDB, 0xB2, + 0x01, 0x93, 0x01, 0x9B, 0x52, 0xF8, 0x23, 0x00, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x02, 0xEB, 0x45, 0x08, 0x00, 0x9A, 0x18, 0xF8, 0x07, 0x8C, + 0x52, 0xF8, 0x28, 0xB0, 0x25, 0x4A, 0x93, 0x45, 0xA3, 0xDB, 0xB1, 0xF5, + 0x7A, 0x7F, 0x02, 0xDA, 0x23, 0x4A, 0x93, 0x45, 0x9D, 0xDA, 0x02, 0x21, + 0x0C, 0x44, 0xA0, 0x45, 0x9D, 0xDA, 0x04, 0xAA, 0x17, 0x44, 0x07, 0xF8, + 0x08, 0xAC, 0x07, 0xF8, 0x07, 0xAC, 0x75, 0xE7, 0x02, 0x2F, 0x1C, 0x46, + 0x08, 0x46, 0x66, 0x46, 0x05, 0xF1, 0x02, 0x05, 0xCA, 0xD0, 0x02, 0x27, + 0xAA, 0xE7, 0x04, 0xAB, 0x03, 0xEB, 0x45, 0x01, 0x6D, 0x00, 0x11, 0xF8, + 0x08, 0x3C, 0x80, 0x2B, 0x8E, 0xD0, 0x52, 0xF8, 0x23, 0x00, 0x11, 0xF8, + 0x07, 0x1C, 0x43, 0xF2, 0xB0, 0x64, 0xA0, 0x42, 0x0A, 0xDC, 0x0F, 0x4E, + 0x52, 0xF8, 0x21, 0x40, 0xB4, 0x42, 0x05, 0xDB, 0xB0, 0xF5, 0x7A, 0x7F, + 0x13, 0xDA, 0x14, 0xF5, 0x7A, 0x7F, 0x10, 0xDD, 0x9C, 0x44, 0x61, 0x45, + 0xBF, 0xF6, 0x78, 0xAF, 0x04, 0xAB, 0x1D, 0x44, 0x80, 0x23, 0x05, 0xF8, + 0x08, 0x3C, 0x05, 0xF8, 0x07, 0x3C, 0x6F, 0xE7, 0xA3, 0x42, 0x9B, 0xD2, + 0x1C, 0x46, 0x66, 0x46, 0x98, 0xE7, 0x4F, 0xF0, 0x02, 0x0C, 0xEB, 0xE7, + 0x50, 0xC9, 0xFF, 0xFF, 0x19, 0xFC, 0xFF, 0xFF, 0xD0, 0xED, 0x00, 0x7A, + 0x90, 0xED, 0x01, 0x7A, 0xF4, 0xEE, 0xC7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, + 0x08, 0xD5, 0x91, 0xED, 0x00, 0x6A, 0xD1, 0xED, 0x01, 0x6A, 0xB4, 0xEE, + 0xE6, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x5E, 0xDA, 0xF4, 0xEE, 0xC7, 0x7A, + 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xDD, 0x91, 0xED, 0x00, 0x6A, 0xD1, 0xED, + 0x01, 0x6A, 0xB4, 0xEE, 0xE6, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x50, 0xD9, + 0xD0, 0xED, 0x02, 0x6A, 0xF4, 0xEE, 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, + 0x08, 0xD5, 0xD1, 0xED, 0x00, 0x5A, 0x91, 0xED, 0x02, 0x6A, 0xF4, 0xEE, + 0xC6, 0x5A, 0xF1, 0xEE, 0x10, 0xFA, 0x40, 0xDA, 0xF4, 0xEE, 0xE6, 0x7A, + 0xF1, 0xEE, 0x10, 0xFA, 0x32, 0xDC, 0xB4, 0xEE, 0xE6, 0x7A, 0xF1, 0xEE, + 0x10, 0xFA, 0x08, 0xD5, 0x91, 0xED, 0x01, 0x6A, 0xD1, 0xED, 0x02, 0x7A, + 0xB4, 0xEE, 0xE7, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x2D, 0xDA, 0xB4, 0xEE, + 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xDD, 0x91, 0xED, 0x01, 0x7A, + 0xD1, 0xED, 0x02, 0x7A, 0xB4, 0xEE, 0xE7, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, + 0x1F, 0xD9, 0xD1, 0xED, 0x00, 0x7A, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, + 0x10, 0xFA, 0x1A, 0xDD, 0x91, 0xED, 0x01, 0x7A, 0xB5, 0xEE, 0xC0, 0x7A, + 0xF1, 0xEE, 0x10, 0xFA, 0x13, 0xDD, 0x91, 0xED, 0x02, 0x7A, 0xB5, 0xEE, + 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x0C, 0xDD, 0x01, 0x20, 0x70, 0x47, + 0x91, 0xED, 0x00, 0x6A, 0xD1, 0xED, 0x02, 0x7A, 0xB4, 0xEE, 0xE7, 0x6A, + 0xF1, 0xEE, 0x10, 0xFA, 0xC3, 0xD8, 0x02, 0x20, 0x70, 0x47, 0xF5, 0xEE, + 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x01, 0xD4, 0x00, 0x20, 0x70, 0x47, + 0xD1, 0xED, 0x01, 0x7A, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, + 0xF6, 0xD5, 0xD1, 0xED, 0x02, 0x7A, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, + 0x10, 0xFA, 0x4C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x28, 0x00, 0xF0, 0xC7, 0x80, 0x2D, 0xE9, 0xF0, 0x47, 0x00, 0x22, + 0xA1, 0xF1, 0x02, 0x08, 0x82, 0xB0, 0x44, 0x46, 0x17, 0x46, 0x94, 0x46, + 0x10, 0x46, 0x4F, 0xF0, 0x01, 0x0E, 0x02, 0xE0, 0x05, 0x2E, 0x11, 0xD0, + 0x01, 0x32, 0x34, 0xF9, 0x02, 0x5F, 0x0E, 0xFA, 0x02, 0xF3, 0x00, 0x2D, + 0xD6, 0xB2, 0x43, 0xEA, 0x00, 0x03, 0xF3, 0xDA, 0x01, 0x2A, 0xD8, 0xB2, + 0x40, 0xF2, 0x83, 0x80, 0x01, 0x37, 0x05, 0x2E, 0xFF, 0xB2, 0xED, 0xD1, + 0x04, 0x2F, 0x00, 0xF0, 0x81, 0x80, 0x02, 0x2F, 0x00, 0xF2, 0x81, 0x80, + 0xBC, 0xF1, 0x00, 0x0F, 0x0B, 0xD1, 0xB1, 0xF9, 0x02, 0x30, 0xB1, 0xF9, + 0x00, 0x20, 0x03, 0xF1, 0x09, 0x04, 0x94, 0x42, 0x02, 0xDB, 0x09, 0x3B, + 0x9A, 0x42, 0x00, 0xDA, 0x4A, 0x80, 0xB1, 0xF9, 0x04, 0x20, 0xB1, 0xF9, + 0x06, 0x30, 0x03, 0x24, 0x40, 0xF2, 0x04, 0x55, 0x9A, 0x42, 0x8D, 0xF8, + 0x01, 0x40, 0xAD, 0xF8, 0x02, 0x50, 0xC0, 0xF2, 0x8E, 0x80, 0xB1, 0xF9, + 0x08, 0x20, 0xB1, 0xF9, 0x0A, 0x30, 0x9A, 0x42, 0x25, 0x46, 0x4F, 0xF0, + 0x06, 0x09, 0x4F, 0xF0, 0x04, 0x07, 0x4F, 0xF0, 0x02, 0x04, 0x80, 0xF2, + 0x8E, 0x80, 0x40, 0xF2, 0x05, 0x43, 0xAD, 0xF8, 0x02, 0x30, 0x4F, 0xF0, + 0x05, 0x0E, 0x4F, 0xF0, 0x08, 0x08, 0x04, 0x26, 0x0A, 0x22, 0xCB, 0x5F, + 0x8F, 0x5E, 0xBB, 0x42, 0x07, 0xDA, 0xBA, 0x46, 0x72, 0x46, 0x8D, 0xF8, + 0x02, 0x40, 0x1F, 0x46, 0xA6, 0x46, 0x53, 0x46, 0x14, 0x46, 0x31, 0xF9, + 0x09, 0x20, 0x31, 0xF9, 0x08, 0x80, 0x42, 0x45, 0x05, 0xDA, 0x8D, 0xF8, + 0x03, 0x50, 0x8D, 0xF8, 0x01, 0x60, 0x42, 0x46, 0x35, 0x46, 0x97, 0x42, + 0x05, 0xDD, 0x8D, 0xF8, 0x02, 0x50, 0x8D, 0xF8, 0x01, 0xE0, 0x3A, 0x46, + 0x75, 0x46, 0x9D, 0xF8, 0x02, 0xE0, 0x9D, 0xF8, 0x01, 0x60, 0x31, 0xF9, + 0x1E, 0x70, 0x31, 0xF9, 0x16, 0x80, 0x07, 0x32, 0xFE, 0x1D, 0x93, 0x42, + 0xD4, 0xBF, 0x04, 0x23, 0x00, 0x23, 0xB0, 0x45, 0x9D, 0xF8, 0x03, 0x60, + 0x31, 0xF9, 0x16, 0x20, 0x02, 0xF1, 0x07, 0x02, 0xD8, 0xBF, 0x43, 0xF0, + 0x02, 0x03, 0xBA, 0x42, 0xA8, 0xBF, 0x43, 0xF0, 0x01, 0x03, 0x06, 0x2B, + 0x4E, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x4A, 0xA9, 0xA1, 0x9B, 0x93, 0x4A, + 0xB1, 0x00, 0x0C, 0xF1, 0x01, 0x0C, 0x5F, 0xFA, 0x8C, 0xFC, 0x69, 0xE7, + 0xBC, 0xF1, 0x02, 0x0F, 0x78, 0xD0, 0x00, 0x23, 0x1C, 0x46, 0x1A, 0x46, + 0x40, 0xFA, 0x03, 0xF5, 0xEF, 0x07, 0x05, 0xD4, 0x31, 0xF8, 0x13, 0x50, + 0x01, 0x34, 0x2A, 0x44, 0xE4, 0xB2, 0x12, 0xB2, 0x01, 0x33, 0x06, 0x2B, + 0xF2, 0xD1, 0x92, 0xFB, 0xF4, 0xF2, 0x00, 0x23, 0x40, 0xFA, 0x03, 0xF4, + 0xE6, 0x07, 0x48, 0xBF, 0x21, 0xF8, 0x13, 0x20, 0x01, 0x33, 0x06, 0x2B, + 0xF6, 0xD1, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x8B, 0x1E, 0x80, 0x20, + 0x0A, 0x31, 0x33, 0xF9, 0x02, 0x2F, 0x00, 0x2A, 0xB8, 0xBF, 0x18, 0x80, + 0x99, 0x42, 0xF8, 0xD1, 0x70, 0x47, 0xB1, 0xF9, 0x08, 0x20, 0xB1, 0xF9, + 0x0A, 0x30, 0x02, 0x25, 0x9A, 0x42, 0x8D, 0xF8, 0x01, 0x50, 0x4F, 0xF0, + 0x04, 0x09, 0x4F, 0xF0, 0x06, 0x07, 0xFF, 0xF6, 0x72, 0xAF, 0x4F, 0xF0, + 0x0A, 0x08, 0x08, 0x22, 0x4F, 0xF0, 0x04, 0x0E, 0x75, 0xE7, 0xBC, 0xF1, + 0x00, 0x0F, 0x69, 0xD0, 0x00, 0x24, 0x22, 0x46, 0x02, 0x23, 0x40, 0xFA, + 0x03, 0xF5, 0xED, 0x07, 0x05, 0xD4, 0x31, 0xF8, 0x13, 0x50, 0x01, 0x34, + 0x2A, 0x44, 0xE4, 0xB2, 0x12, 0xB2, 0x01, 0x33, 0x06, 0x2B, 0xF2, 0xD1, + 0x64, 0xB9, 0xC3, 0x07, 0x03, 0xD4, 0x0B, 0x88, 0x1A, 0x44, 0x12, 0xB2, + 0x01, 0x24, 0x87, 0x07, 0x04, 0xD4, 0x4B, 0x88, 0x01, 0x34, 0x13, 0x44, + 0xE4, 0xB2, 0x1A, 0xB2, 0x00, 0x23, 0x92, 0xFB, 0xF4, 0xF4, 0x00, 0xE0, + 0x01, 0x33, 0x40, 0xFA, 0x03, 0xF2, 0xD6, 0x07, 0xDD, 0xB2, 0x03, 0xD5, + 0x01, 0x2B, 0x14, 0xD9, 0x21, 0xF8, 0x13, 0x40, 0x05, 0x2D, 0xF3, 0xD1, + 0xBC, 0xF1, 0x01, 0x0F, 0xA9, 0xD1, 0xC2, 0x07, 0x0F, 0xD4, 0x83, 0x07, + 0xA5, 0xD5, 0x0B, 0x88, 0x4B, 0x80, 0xA2, 0xE7, 0x0A, 0x31, 0x80, 0x23, + 0x28, 0xF8, 0x02, 0x3F, 0x88, 0x45, 0xFB, 0xD1, 0x9B, 0xE7, 0xBC, 0xF1, + 0x02, 0x0F, 0xDF, 0xD1, 0xE6, 0xE7, 0x4B, 0x88, 0x0B, 0x80, 0x94, 0xE7, + 0x01, 0x22, 0x02, 0xFA, 0x0E, 0xF3, 0xB2, 0x40, 0x13, 0x43, 0x18, 0x43, + 0xC0, 0xB2, 0xB1, 0xE7, 0x01, 0x23, 0x03, 0xFA, 0x04, 0xF4, 0x20, 0x43, + 0xC0, 0xB2, 0xAB, 0xE7, 0x01, 0x23, 0x03, 0xFA, 0x06, 0xF6, 0x30, 0x43, + 0xA3, 0x40, 0x18, 0x43, 0xC0, 0xB2, 0xA3, 0xE7, 0x01, 0x23, 0x03, 0xFA, + 0x04, 0xF4, 0x20, 0x43, 0xAB, 0x40, 0x18, 0x43, 0xC0, 0xB2, 0x9B, 0xE7, + 0x01, 0x23, 0x03, 0xFA, 0x06, 0xF6, 0x30, 0x43, 0xC0, 0xB2, 0x95, 0xE7, + 0x40, 0xF0, 0x3C, 0x00, 0x92, 0xE7, 0x00, 0xBF, 0xF0, 0xB5, 0xD1, 0xED, + 0x01, 0x6A, 0x91, 0xED, 0x00, 0x7A, 0x2D, 0xED, 0x08, 0x8B, 0xF4, 0xEE, + 0xC7, 0x6A, 0xF1, 0xEE, 0x10, 0xFA, 0x83, 0xB0, 0x0C, 0x46, 0x07, 0x46, + 0x15, 0x46, 0x1E, 0x46, 0x05, 0xDC, 0xF0, 0xEE, 0x66, 0x7A, 0xF0, 0xEE, + 0x47, 0x6A, 0xB0, 0xEE, 0x67, 0x7A, 0xD4, 0xED, 0x02, 0x7A, 0xF4, 0xEE, + 0xE6, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, 0x08, 0xDC, 0xF4, 0xEE, 0xC7, 0x7A, + 0xF1, 0xEE, 0x10, 0xFA, 0x48, 0xBF, 0xB0, 0xEE, 0x67, 0x7A, 0xF0, 0xEE, + 0x66, 0x7A, 0x77, 0xEE, 0xC7, 0x7A, 0xB0, 0xEE, 0x08, 0xBA, 0xFC, 0xEE, + 0xE7, 0x7A, 0x17, 0xEE, 0x90, 0x3A, 0xB3, 0x70, 0xD4, 0xED, 0x00, 0x8A, + 0x94, 0xED, 0x01, 0xAA, 0xD4, 0xED, 0x02, 0x9A, 0x6A, 0xEE, 0x0A, 0x7A, + 0x28, 0xEE, 0xA8, 0x6A, 0x69, 0xEE, 0xA9, 0xAA, 0x36, 0xEE, 0x27, 0x6A, + 0x38, 0xEE, 0x8A, 0x7A, 0x76, 0xEE, 0x2A, 0xAA, 0x37, 0xEE, 0x29, 0x9A, + 0x2A, 0xEE, 0x8B, 0xBA, 0x69, 0xEE, 0x09, 0x7A, 0x3B, 0xEE, 0x67, 0xBA, + 0xB5, 0xEE, 0xC0, 0xBA, 0xF1, 0xEE, 0x10, 0xFA, 0x40, 0xF3, 0xD0, 0x80, + 0x1B, 0xEE, 0x10, 0x0A, 0x33, 0xF0, 0x44, 0xF8, 0x6F, 0xA3, 0xD3, 0xE9, + 0x00, 0x23, 0x33, 0xF0, 0x09, 0xFB, 0x80, 0xB1, 0x9F, 0xED, 0x6E, 0xBA, + 0x33, 0x78, 0x6E, 0x49, 0x43, 0xF0, 0x04, 0x03, 0x33, 0x70, 0x4F, 0xF4, + 0x00, 0x50, 0x21, 0xF0, 0x73, 0xF8, 0xD4, 0xED, 0x00, 0x8A, 0x94, 0xED, + 0x01, 0xAA, 0xD4, 0xED, 0x02, 0x9A, 0x95, 0xED, 0x00, 0x4A, 0xD5, 0xED, + 0x01, 0x4A, 0x95, 0xED, 0x02, 0x5A, 0xF7, 0xEE, 0x00, 0x7A, 0x87, 0xEE, + 0x8B, 0x6A, 0x0D, 0x2F, 0xF0, 0xEE, 0x08, 0x6A, 0x26, 0xEE, 0x49, 0x7A, + 0x66, 0xEE, 0x26, 0x6A, 0x2A, 0xEE, 0x86, 0x6A, 0x66, 0xEE, 0xA8, 0x7A, + 0x66, 0xEE, 0x8A, 0x5A, 0x67, 0xEE, 0x28, 0x8A, 0x27, 0xEE, 0x0A, 0xAA, + 0x77, 0xEE, 0x87, 0x7A, 0x26, 0xEE, 0xA9, 0x8A, 0x78, 0xEE, 0x86, 0x8A, + 0x67, 0xEE, 0x29, 0x9A, 0x75, 0xEE, 0x87, 0x5A, 0x3A, 0xEE, 0x06, 0xAA, + 0x38, 0xEE, 0x07, 0x8A, 0x67, 0xEE, 0x84, 0x7A, 0x68, 0xEE, 0x84, 0x8A, + 0x79, 0xEE, 0x86, 0x9A, 0x25, 0xEE, 0xA4, 0x7A, 0x2A, 0xEE, 0x24, 0xAA, + 0x77, 0xEE, 0x87, 0x7A, 0x78, 0xEE, 0x8A, 0x8A, 0x28, 0xEE, 0x05, 0x8A, + 0x69, 0xEE, 0x85, 0x9A, 0x37, 0xEE, 0x88, 0x8A, 0x78, 0xEE, 0xA9, 0x8A, + 0x2E, 0xD9, 0xF3, 0xEE, 0x04, 0x7A, 0xB4, 0xEE, 0xE7, 0x8A, 0xF1, 0xEE, + 0x10, 0xFA, 0x27, 0xD5, 0x33, 0x78, 0x44, 0x49, 0x43, 0xF0, 0x08, 0x03, + 0x33, 0x70, 0x4F, 0xF4, 0x00, 0x50, 0x21, 0xF0, 0x1D, 0xF8, 0xB7, 0xEE, + 0x00, 0x8A, 0xF0, 0xEE, 0x00, 0x6A, 0xB1, 0xEE, 0x68, 0x7A, 0xC7, 0xEE, + 0x08, 0x7A, 0x9F, 0xED, 0x3D, 0x7A, 0xF4, 0xEE, 0xC7, 0x7A, 0xF1, 0xEE, + 0x10, 0xFA, 0x21, 0xDC, 0xF5, 0xEE, 0xC0, 0x7A, 0xF1, 0xEE, 0x10, 0xFA, + 0x4E, 0xD4, 0xB6, 0xEE, 0x00, 0x7A, 0x77, 0xEE, 0x87, 0x7A, 0xFC, 0xEE, + 0xE7, 0x7A, 0xCD, 0xED, 0x01, 0x7A, 0x9D, 0xF8, 0x04, 0x30, 0x12, 0xE0, + 0x18, 0xEE, 0x10, 0x0A, 0x32, 0xF0, 0xBA, 0xFF, 0x2A, 0xA3, 0xD3, 0xE9, + 0x00, 0x23, 0x33, 0xF0, 0x7F, 0xFA, 0x00, 0x28, 0xCC, 0xD1, 0x68, 0xEE, + 0x08, 0x6A, 0xF7, 0xEE, 0x00, 0x7A, 0x76, 0xEE, 0xA7, 0x6A, 0xD2, 0xE7, + 0xFF, 0x23, 0x73, 0x70, 0xD4, 0xED, 0x00, 0x7A, 0x94, 0xED, 0x01, 0x7A, + 0xD4, 0xED, 0x02, 0x4A, 0x95, 0xED, 0x00, 0x5A, 0xD5, 0xED, 0x01, 0x5A, + 0x95, 0xED, 0x02, 0x6A, 0x68, 0xEE, 0x27, 0x7A, 0x28, 0xEE, 0x07, 0x7A, + 0x77, 0xEE, 0xA8, 0x7A, 0x37, 0xEE, 0x28, 0x7A, 0x28, 0xEE, 0x24, 0x8A, + 0x77, 0xEE, 0xC5, 0x7A, 0x37, 0xEE, 0x65, 0x7A, 0x38, 0xEE, 0x28, 0x8A, + 0x27, 0xEE, 0x07, 0x7A, 0x38, 0xEE, 0x46, 0x8A, 0x67, 0xEE, 0xA7, 0x7A, + 0x28, 0xEE, 0x08, 0x8A, 0x77, 0xEE, 0x87, 0x7A, 0x37, 0xEE, 0x88, 0x8A, + 0xC8, 0xEE, 0x26, 0x7A, 0xC6, 0xED, 0x01, 0x7A, 0x03, 0xB0, 0xBD, 0xEC, + 0x08, 0x8B, 0xF0, 0xBD, 0x00, 0x23, 0xCC, 0xE7, 0xF1, 0xEE, 0x4B, 0x7A, + 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, 0x72, 0xFF, 0x06, 0xA3, 0xD3, 0xE9, + 0x00, 0x23, 0x33, 0xF0, 0x37, 0xFA, 0x00, 0x28, 0x3F, 0xF4, 0x3D, 0xAF, + 0x9F, 0xED, 0x08, 0xBA, 0x2A, 0xE7, 0x00, 0xBF, 0xAF, 0xF3, 0x00, 0x80, + 0xF1, 0x68, 0xE3, 0x88, 0xB5, 0xF8, 0xE4, 0x3E, 0x00, 0x50, 0xC3, 0x47, + 0xD4, 0x79, 0x15, 0x00, 0x00, 0x7A, 0x15, 0x00, 0x00, 0x00, 0x7F, 0x43, + 0xAC, 0xC5, 0x27, 0xB7, 0x2D, 0xE9, 0xF0, 0x47, 0x09, 0x29, 0x8E, 0xB0, + 0x88, 0x46, 0x1D, 0x46, 0x70, 0xD9, 0x03, 0x28, 0x6E, 0xD0, 0x4F, 0xF0, + 0x86, 0x4A, 0x57, 0x1E, 0x00, 0x26, 0x0D, 0xF1, 0x18, 0x09, 0x00, 0x22, + 0x10, 0x46, 0xF1, 0xB2, 0xD3, 0xB2, 0x8B, 0x42, 0x19, 0xD0, 0x00, 0x2B, + 0x00, 0xF0, 0xAF, 0x80, 0xBB, 0x5C, 0x07, 0xEE, 0x90, 0x3A, 0x0E, 0xAB, + 0xF8, 0xEE, 0x67, 0x7A, 0x03, 0xEB, 0x80, 0x03, 0x43, 0xED, 0x0E, 0x7A, + 0x84, 0x00, 0x55, 0xF8, 0x22, 0x30, 0x07, 0xEE, 0x90, 0x3A, 0x0E, 0xAB, + 0xF8, 0xEE, 0xE7, 0x7A, 0x1C, 0x44, 0x01, 0x30, 0xC0, 0xB2, 0x44, 0xED, + 0x0B, 0x7A, 0x01, 0x32, 0x04, 0x2A, 0xDF, 0xD1, 0x00, 0x23, 0x03, 0xA9, + 0x68, 0x46, 0x09, 0xF8, 0x36, 0x30, 0xFF, 0xF7, 0x9F, 0xFC, 0x10, 0xF0, + 0x0E, 0x0F, 0x09, 0xF8, 0x36, 0x00, 0x00, 0xF0, 0x95, 0x80, 0x01, 0x36, + 0x04, 0x2E, 0xCC, 0xD1, 0x07, 0xAD, 0x00, 0x24, 0x2A, 0x46, 0x23, 0x46, + 0x80, 0x21, 0x12, 0xF8, 0x04, 0x0C, 0x00, 0x28, 0x40, 0xF0, 0x82, 0x80, + 0x0E, 0xA8, 0x80, 0x29, 0x00, 0xEB, 0xC1, 0x00, 0x00, 0xF0, 0x8A, 0x80, + 0x92, 0xED, 0x00, 0x7A, 0x50, 0xED, 0x07, 0x7A, 0xB4, 0xEE, 0x67, 0x7A, + 0xF1, 0xEE, 0x10, 0xFA, 0x98, 0xBF, 0x19, 0x46, 0x01, 0x33, 0xDB, 0xB2, + 0x04, 0x2B, 0x02, 0xF1, 0x08, 0x02, 0xE4, 0xD1, 0x00, 0x2C, 0x00, 0xF0, + 0x84, 0x80, 0x80, 0x29, 0x76, 0xD0, 0x0E, 0xAB, 0x03, 0xEB, 0xC1, 0x00, + 0x42, 0x46, 0x10, 0xF8, 0x1F, 0x4C, 0x10, 0xF8, 0x20, 0x3C, 0x55, 0x49, + 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x22, 0xFF, 0x20, 0x46, 0x0E, 0xB0, + 0xBD, 0xE8, 0xF0, 0x87, 0x13, 0x78, 0xD5, 0xED, 0x00, 0x6A, 0x95, 0xED, + 0x01, 0x7A, 0xD5, 0xED, 0x02, 0x7A, 0x05, 0xEE, 0x90, 0x3A, 0x53, 0x78, + 0x06, 0xEE, 0x10, 0x3A, 0xF8, 0xEE, 0x65, 0x5A, 0xB8, 0xEE, 0x46, 0x6A, + 0xF8, 0xEE, 0xE6, 0x6A, 0xB8, 0xEE, 0xC7, 0x7A, 0xF8, 0xEE, 0xE7, 0x7A, + 0x4F, 0xF0, 0x86, 0x42, 0x00, 0x23, 0xB8, 0xF1, 0x09, 0x0F, 0xCD, 0xED, + 0x01, 0x5A, 0x8D, 0xED, 0x02, 0x6A, 0xCD, 0xED, 0x03, 0x6A, 0x8D, 0xED, + 0x04, 0x7A, 0xCD, 0xED, 0x05, 0x7A, 0x00, 0x92, 0x8D, 0xF8, 0x18, 0x30, + 0x16, 0xD8, 0x06, 0xAB, 0x03, 0xAA, 0x69, 0x46, 0x40, 0x46, 0xFF, 0xF7, + 0x17, 0xFE, 0x9D, 0xF8, 0x18, 0x30, 0x13, 0xF0, 0x0E, 0x0F, 0x4C, 0xD1, + 0x9D, 0xF8, 0x19, 0x40, 0x35, 0x49, 0x42, 0x46, 0x4F, 0xF4, 0x00, 0x50, + 0x20, 0xF0, 0xE2, 0xFE, 0x20, 0x46, 0x0E, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, + 0x03, 0xA9, 0x68, 0x46, 0xFF, 0xF7, 0x1C, 0xFC, 0x10, 0xF0, 0x0E, 0x0F, + 0x8D, 0xF8, 0x18, 0x00, 0x18, 0xBF, 0x03, 0x46, 0x49, 0xD0, 0xC8, 0xF1, + 0x09, 0x04, 0x64, 0x01, 0xE6, 0xE7, 0x0E, 0xAB, 0x03, 0xEB, 0x80, 0x03, + 0x84, 0x00, 0x43, 0xF8, 0x38, 0xAC, 0x54, 0xE7, 0x06, 0x07, 0x1B, 0xD4, + 0x01, 0x28, 0x08, 0xBF, 0x01, 0x24, 0x87, 0xE7, 0x09, 0xEB, 0xC6, 0x03, + 0x03, 0xAA, 0x69, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0xE3, 0xFD, 0x62, 0xE7, + 0x19, 0x46, 0x7D, 0xE7, 0x00, 0x23, 0x15, 0xF8, 0x04, 0x2C, 0x01, 0x2A, + 0x17, 0xD0, 0x01, 0x33, 0xDB, 0xB2, 0x04, 0x2B, 0x05, 0xF1, 0x08, 0x05, + 0xF5, 0xD1, 0x80, 0x29, 0x7F, 0xF4, 0x7B, 0xAF, 0x17, 0x49, 0x42, 0x46, + 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xA4, 0xFE, 0xC8, 0xF1, 0x09, 0x04, + 0x64, 0x01, 0x20, 0x46, 0x0E, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x80, 0x24, + 0xB2, 0xE7, 0x0E, 0xAA, 0x80, 0x29, 0x02, 0xEB, 0xC1, 0x02, 0x0A, 0xD0, + 0x95, 0xED, 0x00, 0x7A, 0x52, 0xED, 0x07, 0x7A, 0xB4, 0xEE, 0x67, 0x7A, + 0xF1, 0xEE, 0x10, 0xFA, 0x98, 0xBF, 0x19, 0x46, 0xD7, 0xE7, 0x19, 0x46, + 0xD5, 0xE7, 0x06, 0xAB, 0x03, 0xAA, 0x69, 0x46, 0x40, 0x46, 0xFF, 0xF7, + 0xAB, 0xFD, 0x9D, 0xF8, 0x18, 0x30, 0x13, 0xF0, 0x0E, 0x0F, 0x93, 0xD0, + 0xA9, 0xE7, 0x00, 0xBF, 0x14, 0x7A, 0x15, 0x00, 0x30, 0x7A, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x9A, 0x4A, 0xDF, 0xF8, 0x8C, 0x82, 0x13, 0x68, + 0x2D, 0xED, 0x08, 0x8B, 0x23, 0xF4, 0xFF, 0x43, 0x43, 0xF4, 0xCE, 0x35, + 0x8B, 0xB0, 0x43, 0xF4, 0x1D, 0x43, 0x0C, 0x46, 0x45, 0xF4, 0x80, 0x75, + 0x01, 0x46, 0x13, 0x60, 0x01, 0x20, 0x15, 0x60, 0x0D, 0x46, 0x03, 0x91, + 0xFC, 0xF7, 0xBA, 0xFD, 0xA2, 0x7B, 0x8F, 0x48, 0x02, 0xF0, 0x0F, 0x03, + 0x01, 0x68, 0x12, 0x09, 0x9B, 0x02, 0x43, 0xEA, 0x82, 0x13, 0x21, 0xF4, + 0x7F, 0x52, 0x13, 0x43, 0x03, 0x60, 0x02, 0x20, 0xFC, 0xF7, 0xAA, 0xFD, + 0xAB, 0x6B, 0xC3, 0xF3, 0x07, 0x22, 0x02, 0x92, 0x4F, 0xEA, 0x02, 0x4B, + 0xDA, 0xB2, 0x01, 0x92, 0x4F, 0xEA, 0x03, 0x6A, 0x4F, 0xF0, 0x00, 0x09, + 0xDD, 0xE9, 0x01, 0x32, 0xB9, 0xF1, 0x00, 0x0F, 0x18, 0xBF, 0x13, 0x46, + 0xA3, 0xF1, 0x40, 0x02, 0x12, 0xB2, 0x40, 0x33, 0x5F, 0xFA, 0x89, 0xF1, + 0x00, 0x2A, 0xAD, 0xF8, 0x14, 0x20, 0xAD, 0xF8, 0x16, 0x30, 0x00, 0x91, + 0xC0, 0xF2, 0xEA, 0x80, 0xFF, 0x2B, 0x01, 0xD9, 0x77, 0x4B, 0x05, 0x93, + 0x00, 0x25, 0x2E, 0x46, 0x05, 0x24, 0x48, 0xF2, 0x80, 0x07, 0xBD, 0xF9, + 0x14, 0x30, 0x08, 0xA9, 0x06, 0xA8, 0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF0, + 0xC3, 0x80, 0x4A, 0xEA, 0x03, 0x43, 0x3B, 0x43, 0xC8, 0xF8, 0x00, 0x30, + 0xFF, 0xF7, 0xAE, 0xF8, 0xBD, 0xF9, 0x16, 0x30, 0x4A, 0xEA, 0x03, 0x43, + 0x3B, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0x09, 0xA9, 0x07, 0xA8, 0xFF, 0xF7, + 0xA3, 0xF8, 0xDD, 0xE9, 0x06, 0x02, 0xDD, 0xE9, 0x08, 0x13, 0x01, 0x3C, + 0x12, 0x1A, 0x5B, 0x1A, 0x14, 0xF0, 0xFF, 0x04, 0x16, 0x44, 0x1D, 0x44, + 0xD9, 0xD1, 0x62, 0x4B, 0x83, 0xFB, 0x06, 0x12, 0xF6, 0x17, 0xC6, 0xEB, + 0x62, 0x06, 0x07, 0xEE, 0x90, 0x6A, 0x83, 0xFB, 0x05, 0x13, 0xED, 0x17, + 0xC5, 0xEB, 0x63, 0x05, 0xB8, 0xEE, 0xE7, 0x7A, 0x07, 0xEE, 0x90, 0x5A, + 0xF8, 0xEE, 0xE7, 0x7A, 0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x9D, 0x80, + 0x00, 0x9B, 0x01, 0x2B, 0x40, 0xF0, 0x9D, 0x80, 0xC7, 0xEE, 0x27, 0x9A, + 0x03, 0x9B, 0x54, 0x49, 0x54, 0x4F, 0x4F, 0xF4, 0x00, 0x50, 0x1E, 0x1F, + 0x03, 0xF1, 0x3C, 0x08, 0xB6, 0xEE, 0x00, 0xAA, 0x79, 0xEE, 0x88, 0x9A, + 0xF7, 0xEE, 0x00, 0xAA, 0x69, 0xEE, 0x8A, 0x9A, 0x8A, 0xEE, 0xA9, 0x8A, + 0xFD, 0xEE, 0xC8, 0x8A, 0x18, 0xEE, 0x90, 0x2A, 0x20, 0xF0, 0xCA, 0xFD, + 0xF8, 0xEE, 0xE8, 0x8A, 0xDF, 0xED, 0x49, 0x7A, 0x49, 0x49, 0x38, 0xEE, + 0x68, 0x8A, 0x4F, 0xF4, 0x00, 0x50, 0x28, 0xEE, 0x27, 0x8A, 0xFD, 0xEE, + 0xC8, 0x7A, 0x17, 0xEE, 0x90, 0x2A, 0x20, 0xF0, 0xB9, 0xFD, 0x69, 0xEE, + 0xA9, 0x7A, 0x39, 0xEE, 0xAA, 0xBA, 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, + 0x71, 0xFD, 0x40, 0x4B, 0x00, 0x22, 0x32, 0xF0, 0x0F, 0xFC, 0x7A, 0xEE, + 0xE9, 0xAA, 0x04, 0x46, 0x0D, 0x46, 0x56, 0xF8, 0x04, 0x3F, 0xC3, 0xF3, + 0x07, 0x22, 0x08, 0xEE, 0x90, 0x2A, 0xDB, 0xB2, 0x08, 0xEE, 0x10, 0x3A, + 0xF8, 0xEE, 0xE8, 0x8A, 0xB8, 0xEE, 0xC8, 0x8A, 0x68, 0xEE, 0xAA, 0x8A, + 0x28, 0xEE, 0x0B, 0x8A, 0x69, 0xEE, 0xA8, 0x7A, 0x78, 0xEE, 0x67, 0x7A, + 0x29, 0xEE, 0x88, 0x8A, 0x17, 0xEE, 0x90, 0x0A, 0x32, 0xF0, 0x4E, 0xFD, + 0x22, 0x46, 0x2B, 0x46, 0x32, 0xF0, 0xCC, 0xFE, 0x33, 0xF0, 0x5A, 0xF8, + 0x78, 0xEE, 0x28, 0x7A, 0x09, 0xEE, 0x10, 0x0A, 0x17, 0xEE, 0x90, 0x0A, + 0x32, 0xF0, 0x40, 0xFD, 0x22, 0x46, 0x2B, 0x46, 0x32, 0xF0, 0xBE, 0xFE, + 0x33, 0xF0, 0x4C, 0xF8, 0x07, 0xEE, 0x90, 0x0A, 0x77, 0xEE, 0x8A, 0x7A, + 0x39, 0xEE, 0x0A, 0x9A, 0xFD, 0xEE, 0xE7, 0x7A, 0xB0, 0x45, 0x17, 0xEE, + 0x90, 0x3A, 0xFD, 0xEE, 0xC9, 0x7A, 0x4F, 0xEA, 0x03, 0x23, 0xCD, 0xED, + 0x00, 0x7A, 0x9D, 0xF8, 0x00, 0x20, 0x03, 0xF4, 0x7F, 0x43, 0x43, 0xEA, + 0x02, 0x03, 0x43, 0xEA, 0x07, 0x03, 0x33, 0x60, 0xB5, 0xD1, 0x0B, 0xB0, + 0xBD, 0xEC, 0x08, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x4B, 0xEA, 0x03, 0x63, + 0x3B, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0x08, 0xA9, 0x06, 0xA8, 0xFE, 0xF7, + 0xE9, 0xFF, 0xBD, 0xF9, 0x16, 0x30, 0x4B, 0xEA, 0x03, 0x63, 0x3B, 0x43, + 0x39, 0xE7, 0xF1, 0xEE, 0x67, 0x7A, 0x87, 0xEE, 0x87, 0x8A, 0x09, 0xF1, + 0x01, 0x09, 0x01, 0xE7, 0x4F, 0xF4, 0x00, 0x03, 0x05, 0x93, 0x15, 0xE7, + 0x58, 0x40, 0x34, 0x40, 0x50, 0x40, 0x34, 0x40, 0x80, 0x00, 0xFF, 0x00, + 0x67, 0x66, 0x66, 0x66, 0x48, 0x7A, 0x15, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x7A, 0x44, 0x58, 0x7A, 0x15, 0x00, 0x00, 0x00, 0xF0, 0x3F, + 0x4C, 0x40, 0x34, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0xB5, 0x4C, 0x2D, 0xED, + 0x04, 0x8B, 0x27, 0x68, 0xAD, 0xF2, 0xE4, 0x7D, 0x06, 0x46, 0x0D, 0x46, + 0x14, 0x46, 0xB2, 0x49, 0x0A, 0x94, 0x3A, 0x46, 0x4F, 0xF4, 0x00, 0x50, + 0x9A, 0x46, 0xCD, 0xE9, 0x13, 0x56, 0x20, 0xF0, 0x17, 0xFD, 0xAE, 0x4B, + 0xAE, 0x49, 0x1A, 0x68, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x10, 0xFD, + 0xAC, 0x4B, 0xAD, 0x49, 0x1A, 0x68, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, + 0x09, 0xFD, 0xAB, 0x4B, 0xAB, 0x49, 0x1A, 0x68, 0x4F, 0xF4, 0x00, 0x50, + 0x20, 0xF0, 0x02, 0xFD, 0xA9, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, + 0xFD, 0xFC, 0x16, 0xF0, 0x01, 0x03, 0x15, 0x93, 0x07, 0xD1, 0xA6, 0x4A, + 0x13, 0x68, 0x43, 0xF4, 0x00, 0x61, 0x43, 0xF4, 0xC0, 0x53, 0x11, 0x60, + 0x13, 0x60, 0x14, 0x9A, 0xC2, 0xF3, 0x40, 0x03, 0x03, 0x33, 0x12, 0xF0, + 0x0C, 0x0F, 0x09, 0xEE, 0x10, 0x3A, 0xC2, 0xF3, 0x81, 0x03, 0x00, 0xF0, + 0x9C, 0x82, 0x01, 0x2B, 0x14, 0xBF, 0x0A, 0x23, 0x05, 0x23, 0x08, 0xEE, + 0x90, 0x3A, 0x9A, 0x4A, 0x9A, 0x4E, 0x14, 0x68, 0xDF, 0xF8, 0x7C, 0xE2, + 0x99, 0x4B, 0x9A, 0x49, 0xDF, 0xF8, 0x78, 0x92, 0xDF, 0xF8, 0x78, 0xB2, + 0x98, 0x48, 0xDF, 0xF8, 0x78, 0xC2, 0x98, 0x4F, 0xDF, 0xF8, 0x74, 0x82, + 0x24, 0xF0, 0x04, 0x04, 0x14, 0x60, 0x35, 0x68, 0x00, 0x24, 0x25, 0xF4, + 0x70, 0x45, 0x35, 0x60, 0xCE, 0xF8, 0x00, 0x40, 0x1D, 0x68, 0x45, 0xF0, + 0x80, 0x05, 0x1D, 0x60, 0x0D, 0x68, 0x45, 0xF0, 0x00, 0x45, 0x0D, 0x60, + 0x15, 0x68, 0x01, 0x26, 0x45, 0xF0, 0x04, 0x05, 0x15, 0x60, 0xCB, 0xF8, + 0x00, 0x60, 0xC9, 0xF8, 0x00, 0x40, 0x15, 0x68, 0x25, 0xF0, 0x04, 0x05, + 0x15, 0x60, 0x0D, 0x68, 0x25, 0xF0, 0x00, 0x45, 0x0D, 0x60, 0x1D, 0x68, + 0x25, 0xF0, 0x80, 0x05, 0x1D, 0x60, 0x15, 0x68, 0x45, 0xF0, 0x04, 0x05, + 0x15, 0x60, 0x82, 0x4D, 0x2A, 0x68, 0x42, 0xF0, 0x02, 0x02, 0x2A, 0x60, + 0x1A, 0x68, 0x22, 0xF4, 0xE0, 0x42, 0x22, 0xF0, 0x04, 0x02, 0x42, 0xF4, + 0x80, 0x42, 0x32, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x07, 0x22, + 0x42, 0xF0, 0xC0, 0x62, 0x42, 0xF4, 0x84, 0x72, 0x1A, 0x60, 0x0B, 0x68, + 0x03, 0xF0, 0x00, 0x43, 0x43, 0xEA, 0x0A, 0x03, 0x0B, 0x60, 0x03, 0x68, + 0x43, 0xF0, 0x3F, 0x03, 0x03, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x0B, 0x94, + 0x43, 0xF4, 0x00, 0x63, 0x38, 0xAA, 0x78, 0xA9, 0x10, 0x92, 0x0F, 0x91, + 0xCC, 0xF8, 0x00, 0x30, 0x0D, 0xF1, 0x7F, 0x03, 0xCD, 0xE9, 0x11, 0x21, + 0x0D, 0x93, 0x08, 0xEE, 0x10, 0x4A, 0x0D, 0xF1, 0xAF, 0x03, 0x81, 0x46, + 0x0E, 0x93, 0x00, 0x23, 0x0C, 0x93, 0x9D, 0xF8, 0x30, 0x50, 0x18, 0xEE, + 0x10, 0x3A, 0x2B, 0x43, 0x09, 0x93, 0x00, 0x24, 0x3D, 0xE0, 0x0C, 0x9B, + 0x00, 0x2B, 0x6C, 0xD0, 0x66, 0x00, 0x0D, 0x9B, 0x26, 0x44, 0x48, 0xF2, + 0x80, 0x0B, 0x13, 0xF8, 0x06, 0xA0, 0x0E, 0x9B, 0x9E, 0x5D, 0x4F, 0xEA, + 0x0A, 0x63, 0x43, 0xEA, 0x0A, 0x43, 0x43, 0xEA, 0x0B, 0x03, 0xC8, 0xF8, + 0x00, 0x30, 0x19, 0xA9, 0x18, 0xA8, 0xFE, 0xF7, 0xE3, 0xFE, 0xB2, 0x45, + 0x0A, 0xD0, 0x33, 0x06, 0x43, 0xEA, 0x06, 0x46, 0x46, 0xEA, 0x0B, 0x06, + 0xC8, 0xF8, 0x00, 0x60, 0x19, 0xA9, 0x17, 0xA8, 0xFE, 0xF7, 0xD6, 0xFE, + 0x04, 0xEB, 0x84, 0x03, 0xB8, 0xAA, 0xDE, 0x00, 0x00, 0x21, 0x02, 0xEB, + 0xC3, 0x03, 0x28, 0x46, 0x18, 0x9A, 0xFF, 0xF7, 0x51, 0xF8, 0x0D, 0xF5, + 0xAC, 0x63, 0x33, 0x44, 0x19, 0x9A, 0x01, 0x34, 0x00, 0x21, 0x28, 0x46, + 0xFF, 0xF7, 0x48, 0xF8, 0x10, 0x2C, 0xB8, 0xAE, 0x0D, 0xF5, 0xAC, 0x6B, + 0x59, 0xD0, 0x3B, 0x68, 0x23, 0xF4, 0xFF, 0x43, 0x43, 0xEA, 0x44, 0x23, + 0x43, 0xF4, 0x01, 0x42, 0x43, 0xF4, 0xC0, 0x33, 0x43, 0xF4, 0x80, 0x73, + 0x3A, 0x60, 0x01, 0x20, 0x3B, 0x60, 0xFC, 0xF7, 0x71, 0xFB, 0x09, 0x9B, + 0xE6, 0xB2, 0x00, 0x2B, 0x3D, 0xD0, 0x0A, 0x9B, 0xD9, 0xF8, 0x00, 0x10, + 0x1A, 0x5D, 0x02, 0xF0, 0x0F, 0x03, 0x9B, 0x02, 0x12, 0x09, 0x43, 0xEA, + 0x82, 0x13, 0x21, 0xF4, 0x7F, 0x52, 0x13, 0x43, 0xC9, 0xF8, 0x00, 0x30, + 0x02, 0x20, 0xFC, 0xF7, 0x5B, 0xFB, 0x0B, 0x9B, 0x00, 0x2B, 0x98, 0xD1, + 0x4F, 0xF0, 0x80, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x19, 0xA9, 0x18, 0xA8, + 0xFE, 0xF7, 0x8C, 0xFE, 0xB4, 0xE7, 0x10, 0x9B, 0x04, 0xEB, 0x44, 0x0B, + 0x03, 0xEB, 0x04, 0x12, 0x20, 0xAB, 0x18, 0xEE, 0x10, 0x0A, 0x5B, 0x44, + 0x00, 0x92, 0x31, 0x46, 0x0D, 0xF1, 0x5A, 0x02, 0xFE, 0xF7, 0xF2, 0xFF, + 0x0F, 0x9B, 0x4F, 0xEA, 0x04, 0x1A, 0x0A, 0xEB, 0x03, 0x02, 0x2C, 0xAB, + 0x31, 0x46, 0x00, 0x92, 0x18, 0xEE, 0x10, 0x0A, 0x5B, 0x44, 0x0D, 0xF1, + 0x5B, 0x02, 0x66, 0x00, 0xFE, 0xF7, 0xE2, 0xFF, 0x73, 0xE7, 0xFE, 0xF7, + 0xA7, 0xFE, 0x0A, 0x9B, 0x18, 0x55, 0x02, 0x20, 0xFC, 0xF7, 0x28, 0xFB, + 0xCE, 0xE7, 0x0C, 0x9B, 0x18, 0xEE, 0x90, 0x2A, 0x01, 0x33, 0x93, 0x42, + 0x0C, 0x93, 0x7F, 0xF4, 0x58, 0xAF, 0x18, 0xEE, 0x90, 0xAA, 0x00, 0x25, + 0x45, 0xE0, 0x00, 0xBF, 0x10, 0x20, 0x34, 0x40, 0x60, 0x7A, 0x15, 0x00, + 0x1C, 0x20, 0x34, 0x40, 0x74, 0x7A, 0x15, 0x00, 0x04, 0x22, 0x34, 0x40, + 0x88, 0x7A, 0x15, 0x00, 0x18, 0x00, 0x58, 0x40, 0x9C, 0x7A, 0x15, 0x00, + 0xB0, 0x7A, 0x15, 0x00, 0x04, 0x40, 0x34, 0x40, 0x30, 0x20, 0x34, 0x40, + 0x60, 0x20, 0x34, 0x40, 0x5C, 0x20, 0x34, 0x40, 0x64, 0x20, 0x34, 0x40, + 0x50, 0x40, 0x34, 0x40, 0x58, 0x40, 0x34, 0x40, 0x80, 0x21, 0x34, 0x40, + 0x68, 0x20, 0x34, 0x40, 0x0C, 0xB6, 0x33, 0x40, 0x08, 0xB6, 0x33, 0x40, + 0x20, 0x40, 0x34, 0x40, 0x4C, 0x40, 0x34, 0x40, 0x06, 0x2D, 0x34, 0xBF, + 0x32, 0x21, 0x64, 0x21, 0x09, 0x91, 0xFE, 0xF7, 0xDB, 0xFF, 0x11, 0x9B, + 0x09, 0x99, 0x84, 0x46, 0x43, 0xF8, 0x04, 0xC0, 0x5A, 0x46, 0x50, 0x46, + 0xFE, 0xF7, 0xD2, 0xFF, 0x01, 0x35, 0x12, 0x9B, 0x10, 0x2D, 0x18, 0x51, + 0x06, 0xF1, 0x28, 0x06, 0x0B, 0xF1, 0x28, 0x0B, 0x14, 0xD0, 0xBA, 0xF1, + 0x01, 0x0F, 0x32, 0x46, 0x4F, 0xEA, 0x05, 0x14, 0x50, 0x46, 0xDF, 0xD1, + 0x11, 0x9B, 0x30, 0x68, 0x18, 0x51, 0x01, 0x35, 0x12, 0x9B, 0xDB, 0xF8, + 0x00, 0x10, 0x19, 0x51, 0x10, 0x2D, 0x06, 0xF1, 0x28, 0x06, 0x0B, 0xF1, + 0x28, 0x0B, 0xEA, 0xD1, 0x11, 0x9A, 0x0B, 0x9B, 0x04, 0x32, 0x11, 0x92, + 0x12, 0x9A, 0x04, 0x32, 0x12, 0x92, 0x0D, 0x9A, 0x01, 0x32, 0x0D, 0x92, + 0x0E, 0x9A, 0x01, 0x32, 0x01, 0x33, 0x0E, 0x92, 0x19, 0xEE, 0x10, 0x2A, + 0x0B, 0x93, 0xDB, 0xB2, 0x9A, 0x42, 0x08, 0xEE, 0x10, 0x3A, 0x3F, 0xF6, + 0xE0, 0xAE, 0x20, 0xAD, 0x2C, 0xAC, 0xAB, 0x46, 0x0B, 0x95, 0xDD, 0xF8, + 0x40, 0x80, 0x0F, 0x9F, 0x09, 0x94, 0x19, 0xEE, 0x10, 0x5A, 0xA2, 0x46, + 0x00, 0x26, 0x09, 0xE0, 0x13, 0x9A, 0x42, 0xF8, 0x26, 0x30, 0x01, 0x36, + 0x0B, 0xF1, 0x03, 0x0B, 0x08, 0xF1, 0x10, 0x08, 0x0A, 0xF1, 0x03, 0x0A, + 0x5F, 0xFA, 0x86, 0xF9, 0x49, 0x46, 0x43, 0x46, 0x5A, 0x46, 0x28, 0x46, + 0xFF, 0xF7, 0x98, 0xFB, 0x07, 0xEB, 0x06, 0x13, 0x04, 0x46, 0x52, 0x46, + 0x49, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0x90, 0xFB, 0x03, 0x02, 0xE2, 0xB2, + 0x03, 0xF4, 0x7F, 0x43, 0x13, 0x43, 0x43, 0xF0, 0x00, 0x43, 0x09, 0x2E, + 0x43, 0xF4, 0x00, 0x03, 0xDA, 0xD9, 0x1A, 0xAB, 0x03, 0xEB, 0x46, 0x02, + 0x1D, 0xAB, 0x03, 0xEB, 0x46, 0x03, 0xB9, 0xF1, 0x0F, 0x0F, 0x22, 0xF8, + 0x14, 0x4C, 0x23, 0xF8, 0x14, 0x0C, 0xD0, 0xD1, 0x14, 0x9B, 0x09, 0x9C, + 0x0B, 0x9D, 0xC3, 0xF3, 0x40, 0x10, 0x1A, 0xA9, 0x09, 0x90, 0xFF, 0xF7, + 0xD3, 0xF8, 0x09, 0x98, 0x1D, 0xA9, 0xFF, 0xF7, 0xCF, 0xF8, 0x13, 0x9B, + 0xDF, 0xF8, 0x98, 0xC1, 0x1D, 0xA8, 0x1A, 0xA9, 0x03, 0xF1, 0x24, 0x06, + 0x03, 0xF1, 0x3C, 0x07, 0x30, 0xF9, 0x02, 0x3B, 0x31, 0xF9, 0x02, 0x2B, + 0x1B, 0x02, 0x03, 0xF4, 0x7F, 0x43, 0xD2, 0xB2, 0x13, 0x43, 0x43, 0xEA, + 0x0C, 0x03, 0x46, 0xF8, 0x04, 0x3F, 0xBE, 0x42, 0xF0, 0xD1, 0x10, 0x9B, + 0xDF, 0xF8, 0x6C, 0x81, 0xDD, 0xF8, 0x3C, 0xA0, 0x03, 0xF5, 0x80, 0x77, + 0x00, 0x26, 0x99, 0x46, 0xD9, 0xF8, 0x0C, 0x20, 0xAB, 0x78, 0xD9, 0xF8, + 0x08, 0xC0, 0x68, 0x78, 0xD9, 0xF8, 0x04, 0x10, 0x06, 0x92, 0x15, 0xF8, + 0x03, 0x2B, 0x05, 0x93, 0x59, 0xF8, 0x10, 0x3B, 0x00, 0x93, 0xCD, 0xE9, + 0x03, 0x0C, 0xCD, 0xE9, 0x01, 0x21, 0x80, 0x23, 0x32, 0x46, 0x41, 0x46, + 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xC6, 0xFA, 0xDA, 0xF8, 0x0C, 0x20, + 0xA3, 0x78, 0x60, 0x78, 0xDA, 0xF8, 0x04, 0x10, 0xDA, 0xF8, 0x08, 0xC0, + 0x06, 0x92, 0x14, 0xF8, 0x03, 0x2B, 0x05, 0x93, 0x5A, 0xF8, 0x10, 0x3B, + 0x00, 0x93, 0xCD, 0xE9, 0x01, 0x21, 0xCD, 0xE9, 0x03, 0x0C, 0x32, 0x46, + 0x36, 0x49, 0x80, 0x23, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0xAC, 0xFA, + 0x4F, 0x45, 0x06, 0xF1, 0x01, 0x06, 0xC7, 0xD1, 0x13, 0x9B, 0x32, 0x4E, + 0x1D, 0x1F, 0x00, 0x24, 0x55, 0xF8, 0x04, 0x3F, 0xC3, 0xF3, 0x07, 0x22, + 0x00, 0x92, 0xDB, 0xB2, 0x22, 0x46, 0x31, 0x46, 0x01, 0x34, 0x4F, 0xF4, + 0x00, 0x50, 0x20, 0xF0, 0x97, 0xFA, 0x10, 0x2C, 0xF0, 0xD1, 0x14, 0x9B, + 0xDB, 0x06, 0x0D, 0xD5, 0x15, 0x9B, 0x3B, 0xB1, 0x27, 0x4A, 0x13, 0x68, + 0x43, 0xF4, 0x00, 0x61, 0x43, 0xF4, 0xC0, 0x53, 0x11, 0x60, 0x13, 0x60, + 0x0A, 0x99, 0x13, 0x98, 0xFF, 0xF7, 0x0C, 0xFC, 0x22, 0x49, 0x23, 0x4A, + 0x0B, 0x68, 0x23, 0x4E, 0x23, 0x4C, 0x24, 0x48, 0x23, 0xF0, 0x02, 0x03, + 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0xEE, 0x43, 0x23, 0xF0, 0x09, 0x03, + 0x43, 0xF4, 0x58, 0x53, 0xA1, 0xF5, 0xD6, 0x41, 0x43, 0xF0, 0x04, 0x03, + 0x13, 0x60, 0x74, 0x39, 0x02, 0xF5, 0xFF, 0x52, 0x1C, 0x32, 0x00, 0x23, + 0x4F, 0xF0, 0x80, 0x35, 0x33, 0x60, 0x25, 0x60, 0x03, 0x60, 0x0B, 0x60, + 0x13, 0x68, 0x17, 0x49, 0x23, 0xF4, 0x7F, 0x43, 0x00, 0xF5, 0x09, 0x40, + 0x23, 0xF0, 0x80, 0x03, 0xFC, 0x30, 0x43, 0xF4, 0x80, 0x34, 0x13, 0x60, + 0x14, 0x60, 0x03, 0x68, 0x23, 0xF4, 0xC0, 0x53, 0x03, 0x60, 0x4F, 0xF4, + 0x00, 0x50, 0x20, 0xF0, 0x4F, 0xFA, 0x0D, 0xF2, 0xE4, 0x7D, 0xBD, 0xEC, + 0x04, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x23, 0x08, 0xEE, 0x90, 0x3A, + 0x65, 0xE5, 0x00, 0xBF, 0xF0, 0x7A, 0x15, 0x00, 0x1C, 0x7B, 0x15, 0x00, + 0x04, 0x40, 0x34, 0x40, 0x80, 0x21, 0x34, 0x40, 0x5C, 0x20, 0x34, 0x40, + 0x50, 0x40, 0x34, 0x40, 0x4C, 0x40, 0x34, 0x40, 0x08, 0xB6, 0x33, 0x40, + 0x3C, 0x7B, 0x15, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC4, 0x7A, 0x15, 0x00, + 0xF0, 0xB5, 0x07, 0x78, 0x43, 0x68, 0x83, 0xB0, 0x0E, 0x46, 0x3A, 0x46, + 0x27, 0x49, 0x01, 0x93, 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x22, 0xFA, + 0x01, 0x9B, 0x30, 0x1F, 0x06, 0xF1, 0x3C, 0x01, 0x4F, 0xF0, 0x80, 0x32, + 0x40, 0xF8, 0x04, 0x2F, 0x88, 0x42, 0xFB, 0xD1, 0x06, 0xF1, 0x3F, 0x00, + 0x06, 0xF1, 0x4F, 0x02, 0x00, 0x24, 0x00, 0xF8, 0x01, 0x4F, 0x82, 0x42, + 0xFB, 0xD1, 0x30, 0x46, 0x34, 0x65, 0x06, 0xF1, 0x94, 0x05, 0x40, 0xF8, + 0x54, 0x4F, 0x00, 0x24, 0x40, 0xF8, 0x04, 0x4F, 0xA8, 0x42, 0xFB, 0xD1, + 0xBA, 0x09, 0x18, 0xD0, 0x15, 0x4C, 0xDF, 0xF8, 0x74, 0xC0, 0x21, 0x68, + 0x14, 0x4D, 0x15, 0x4A, 0x15, 0x48, 0x21, 0xF4, 0x00, 0x11, 0x21, 0x60, + 0xF9, 0x09, 0x00, 0x29, 0x08, 0xBF, 0x62, 0x46, 0x2A, 0x60, 0x05, 0x68, + 0x11, 0x49, 0x12, 0x4C, 0x12, 0x4A, 0x01, 0xEA, 0x05, 0x01, 0x08, 0xBF, + 0x22, 0x46, 0x0A, 0x43, 0x02, 0x60, 0x01, 0x93, 0xFE, 0xF7, 0x08, 0xFC, + 0x0E, 0x4A, 0x01, 0x9B, 0xD2, 0xF8, 0xBC, 0x44, 0x38, 0x46, 0x06, 0xF1, + 0x40, 0x02, 0x31, 0x46, 0xA0, 0x47, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, + 0xFE, 0xF7, 0x44, 0xBC, 0x50, 0x7B, 0x15, 0x00, 0x58, 0x40, 0x34, 0x40, + 0x10, 0x20, 0x34, 0x40, 0x76, 0x62, 0xF7, 0x0B, 0x1C, 0x20, 0x34, 0x40, + 0xFF, 0x0F, 0x00, 0xE0, 0x00, 0x50, 0x98, 0x00, 0x00, 0x90, 0x9B, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x76, 0x62, 0xB7, 0x0B, 0x17, 0x4B, 0x01, 0x22, + 0x30, 0xB4, 0x1A, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, + 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0x08, 0xDB, + 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, + 0x13, 0x68, 0x00, 0x2B, 0xF6, 0xDA, 0x0E, 0x4A, 0x0C, 0x4B, 0x15, 0x68, + 0x1C, 0x68, 0xC5, 0xF3, 0x10, 0x02, 0xED, 0x03, 0x44, 0xBF, 0x6F, 0xEA, + 0x02, 0x42, 0x6F, 0xEA, 0x12, 0x42, 0xC4, 0xF3, 0x10, 0x03, 0x02, 0x60, + 0xE2, 0x03, 0x44, 0xBF, 0x6F, 0xEA, 0x03, 0x43, 0x6F, 0xEA, 0x13, 0x43, + 0x30, 0xBC, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x6C, 0x08, 0x62, 0x40, + 0x90, 0x08, 0x62, 0x40, 0x8C, 0x08, 0x62, 0x40, 0x30, 0xB4, 0x11, 0x4C, + 0x11, 0x4D, 0x12, 0x4B, 0x04, 0xEA, 0x02, 0x42, 0xC1, 0xF3, 0x0E, 0x01, + 0x0A, 0x43, 0x2A, 0x60, 0x1A, 0x68, 0x00, 0xF0, 0x07, 0x00, 0x22, 0xF0, + 0xE0, 0x62, 0x02, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x00, 0x42, + 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x1A, 0x68, + 0x22, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x00, 0x42, + 0x30, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0xFF, 0x7F, + 0x44, 0x05, 0x62, 0x40, 0x28, 0x05, 0x62, 0x40, 0x38, 0xB5, 0x28, 0x4C, + 0x28, 0x4A, 0x23, 0x68, 0x28, 0x49, 0x23, 0xF0, 0xFF, 0x03, 0x03, 0x43, + 0x43, 0xF0, 0x80, 0x03, 0x23, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, + 0x13, 0x60, 0x0A, 0x68, 0x22, 0xF0, 0x03, 0x02, 0x42, 0xF0, 0x02, 0x03, + 0x0B, 0x60, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, + 0xFA, 0xD1, 0x1D, 0x4B, 0x42, 0xF0, 0x03, 0x02, 0x1A, 0x60, 0x32, 0x23, + 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x19, 0x4A, + 0x13, 0x68, 0x98, 0x07, 0x08, 0xD4, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, + 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x13, 0x68, 0x98, 0x07, 0xF6, 0xD5, + 0x13, 0x4C, 0x22, 0x68, 0x51, 0x00, 0x0E, 0xD4, 0x12, 0x4D, 0x29, 0x46, + 0x4F, 0xF4, 0x00, 0x50, 0x20, 0xF0, 0x28, 0xF9, 0x32, 0x23, 0x00, 0xBF, + 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x22, 0x68, 0x53, 0x00, + 0xF1, 0xD5, 0x0C, 0x4A, 0x0C, 0x49, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x03, + 0x13, 0x60, 0x4F, 0xF4, 0x00, 0x50, 0xBD, 0xE8, 0x38, 0x40, 0x20, 0xF0, + 0x13, 0xB9, 0x00, 0xBF, 0x08, 0x01, 0x60, 0x40, 0x08, 0x05, 0x62, 0x40, + 0x00, 0x00, 0x62, 0x40, 0x80, 0x40, 0x34, 0x40, 0x04, 0x22, 0x34, 0x40, + 0x68, 0x7B, 0x15, 0x00, 0x04, 0x00, 0x62, 0x40, 0x7C, 0x7B, 0x15, 0x00, + 0x10, 0xB5, 0x0F, 0x4C, 0x0F, 0x4A, 0x23, 0x68, 0x0F, 0x48, 0x10, 0x49, + 0x23, 0xF4, 0x80, 0x03, 0x23, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x03, 0x03, + 0x13, 0x60, 0x13, 0x60, 0x03, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x03, 0x60, + 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x14, 0x20, 0xFC, 0xF7, + 0x45, 0xF8, 0xBD, 0xE8, 0x10, 0x40, 0x06, 0x49, 0x4F, 0xF4, 0x00, 0x50, + 0x20, 0xF0, 0xE2, 0xB8, 0x04, 0x00, 0x62, 0x40, 0x00, 0x00, 0x62, 0x40, + 0x08, 0x01, 0x60, 0x40, 0x08, 0x05, 0x62, 0x40, 0x88, 0x7B, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0xB0, 0x07, 0x46, 0x10, 0x1A, 0x0E, 0x46, + 0x9B, 0x46, 0xDD, 0xE9, 0x0E, 0x54, 0x9D, 0xF8, 0x30, 0x90, 0x9D, 0xF8, + 0x34, 0x80, 0x32, 0xF0, 0x65, 0xFD, 0x82, 0x46, 0xAB, 0xEB, 0x06, 0x00, + 0x32, 0xF0, 0x60, 0xFD, 0xBA, 0xF1, 0x00, 0x0F, 0x11, 0xD0, 0x07, 0xFA, + 0x09, 0xF7, 0x07, 0xEE, 0x90, 0x7A, 0xB8, 0xEE, 0xE7, 0x7A, 0x07, 0xEE, + 0x90, 0xAA, 0xF8, 0xEE, 0xE7, 0x7A, 0xC7, 0xEE, 0x27, 0x6A, 0xFD, 0xEE, + 0xE6, 0x7A, 0xCD, 0xED, 0x01, 0x7A, 0x9D, 0xF9, 0x04, 0xA0, 0x85, 0xF8, + 0x00, 0xA0, 0xA8, 0xB1, 0x06, 0xFA, 0x08, 0xF6, 0x07, 0xEE, 0x90, 0x6A, + 0xB8, 0xEE, 0xE7, 0x7A, 0x07, 0xEE, 0x90, 0x0A, 0xF8, 0xEE, 0xE7, 0x7A, + 0xC7, 0xEE, 0x27, 0x6A, 0xFD, 0xEE, 0xE6, 0x7A, 0xCD, 0xED, 0x01, 0x7A, + 0x9D, 0xF9, 0x04, 0x30, 0x23, 0x70, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x03, 0x46, 0x23, 0x70, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x4F, 0xA1, 0x4F, 0xA2, 0x4C, 0x3D, 0x68, 0xA2, 0x4E, + 0xAD, 0xB2, 0x25, 0x43, 0x2D, 0xED, 0x02, 0x8B, 0x3D, 0x60, 0x35, 0x68, + 0x91, 0xB0, 0x25, 0xF0, 0x01, 0x05, 0x86, 0x46, 0x35, 0x60, 0x8C, 0x46, + 0x4F, 0xF4, 0x00, 0x50, 0x9B, 0x49, 0xCD, 0xF8, 0x1C, 0xE0, 0xCD, 0xE9, + 0x08, 0x23, 0x08, 0xEE, 0x10, 0xCA, 0x75, 0x46, 0x20, 0xF0, 0x72, 0xF8, + 0x3B, 0x68, 0x9B, 0xB2, 0x23, 0x43, 0x3B, 0x60, 0x00, 0x2D, 0x00, 0xF0, + 0x16, 0x81, 0x00, 0x26, 0x34, 0x46, 0x35, 0x46, 0x0D, 0xF1, 0x34, 0x0B, + 0x0D, 0xF1, 0x30, 0x0A, 0x32, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, + 0x00, 0x2B, 0xFA, 0xD1, 0x59, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x96, 0xFE, + 0xDD, 0xE9, 0x0C, 0x32, 0x8A, 0x49, 0xCD, 0xE9, 0x00, 0x32, 0x4F, 0xF4, + 0x00, 0x50, 0x23, 0x46, 0x2A, 0x46, 0x20, 0xF0, 0x4F, 0xF8, 0x0C, 0x9B, + 0x00, 0x2B, 0xC0, 0xF2, 0xA5, 0x80, 0x00, 0x2E, 0x00, 0xF0, 0xB9, 0x80, + 0x01, 0x2E, 0x00, 0xF0, 0xDD, 0x80, 0x0D, 0x9B, 0x15, 0xF1, 0x7C, 0x0F, + 0xAC, 0xBF, 0x2A, 0x1F, 0x2A, 0x1D, 0x00, 0x2B, 0x80, 0xF2, 0xA1, 0x80, + 0x01, 0x2E, 0x4F, 0xF0, 0x02, 0x08, 0x00, 0xF0, 0xDA, 0x80, 0x7B, 0x2C, + 0x00, 0xF3, 0xA1, 0x80, 0x23, 0x1D, 0x4F, 0xF0, 0x02, 0x09, 0xA3, 0xF1, + 0x80, 0x01, 0x38, 0x68, 0xC9, 0xB2, 0x09, 0x04, 0xA2, 0xF1, 0x80, 0x0C, + 0x41, 0xEA, 0x0C, 0x61, 0x80, 0xB2, 0x01, 0x43, 0x39, 0x60, 0x32, 0x21, + 0x00, 0xBF, 0x01, 0x39, 0x89, 0xB2, 0x00, 0x29, 0xFA, 0xD1, 0x0F, 0xA9, + 0x0E, 0xA8, 0xCD, 0xE9, 0x05, 0x23, 0xFF, 0xF7, 0x55, 0xFE, 0xDD, 0xE9, + 0x0E, 0x10, 0xDD, 0xE9, 0x05, 0x23, 0x01, 0x90, 0x00, 0x91, 0x4F, 0xF4, + 0x00, 0x50, 0x68, 0x49, 0x20, 0xF0, 0x0E, 0xF8, 0x0D, 0xF1, 0x2F, 0x03, + 0x03, 0x93, 0x0D, 0xF1, 0x2E, 0x03, 0xCD, 0xE9, 0x01, 0x93, 0xDD, 0xE9, + 0x0C, 0x01, 0xDD, 0xE9, 0x0E, 0x23, 0xCD, 0xF8, 0x00, 0x80, 0xFF, 0xF7, + 0x27, 0xFF, 0x9D, 0xF9, 0x2F, 0x30, 0x9D, 0xF9, 0x2E, 0x20, 0x5E, 0x49, + 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, 0xF6, 0xFF, 0x9D, 0xF9, 0x2F, 0x30, + 0x9D, 0xF9, 0x2E, 0x20, 0x39, 0x68, 0xE4, 0x1A, 0x6F, 0xF0, 0x7F, 0x03, + 0x9C, 0x42, 0xB8, 0xBF, 0x1C, 0x46, 0xAD, 0x1A, 0x7F, 0x2C, 0xA8, 0xBF, + 0x7F, 0x24, 0x9D, 0x42, 0xB8, 0xBF, 0x1D, 0x46, 0x04, 0xEB, 0x03, 0x08, + 0x7F, 0x2D, 0xA8, 0xBF, 0x7F, 0x25, 0x5F, 0xFA, 0x88, 0xF8, 0xA5, 0xF1, + 0x80, 0x02, 0x4F, 0xEA, 0x08, 0x43, 0x43, 0xEA, 0x02, 0x63, 0x89, 0xB2, + 0x0B, 0x43, 0x01, 0x36, 0x3B, 0x60, 0x07, 0x9B, 0xF6, 0xB2, 0xB3, 0x42, + 0x5F, 0xFA, 0x82, 0xF9, 0x7F, 0xF4, 0x68, 0xAF, 0x32, 0x23, 0x00, 0xBF, + 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0x59, 0x46, 0x50, 0x46, + 0xFF, 0xF7, 0xFE, 0xFD, 0xDD, 0xE9, 0x0C, 0x13, 0x2A, 0x46, 0x01, 0x93, + 0x00, 0x91, 0x23, 0x46, 0x3F, 0x49, 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, + 0xB7, 0xFF, 0x08, 0x9B, 0x83, 0xF8, 0x00, 0x90, 0x09, 0x9B, 0xDD, 0xE9, + 0x0C, 0x12, 0x18, 0xEE, 0x10, 0x0A, 0x83, 0xF8, 0x00, 0x80, 0xFF, 0xF7, + 0x1D, 0xFE, 0x11, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, + 0x06, 0xB3, 0x01, 0x2E, 0x29, 0xD0, 0x0D, 0x9B, 0x7B, 0x2D, 0xD4, 0xBF, + 0x2A, 0x1D, 0x2A, 0x1F, 0x00, 0x2B, 0xFF, 0xF6, 0x5F, 0xAF, 0x01, 0x2E, + 0x4F, 0xF0, 0x02, 0x08, 0x26, 0xD0, 0x14, 0xF1, 0x7C, 0x0F, 0xFF, 0xF6, + 0x5F, 0xAF, 0x23, 0x1F, 0x4F, 0xF0, 0x02, 0x09, 0x5D, 0xE7, 0x0D, 0x9B, + 0x00, 0x2B, 0xA5, 0xF1, 0x20, 0x02, 0x0A, 0xDA, 0x4F, 0xF0, 0x05, 0x08, + 0xC1, 0x46, 0x04, 0xF1, 0x20, 0x03, 0x52, 0xE7, 0x0D, 0x9B, 0x00, 0x2B, + 0x05, 0xF1, 0x20, 0x02, 0xF4, 0xDB, 0x4F, 0xF0, 0x05, 0x08, 0xC1, 0x46, + 0xA4, 0xF1, 0x20, 0x03, 0x47, 0xE7, 0x6F, 0x2D, 0xD3, 0xDC, 0x0D, 0x9B, + 0x00, 0x2B, 0x05, 0xF1, 0x10, 0x02, 0x4F, 0xF0, 0x04, 0x08, 0x12, 0xDB, + 0x14, 0xF1, 0x70, 0x0F, 0xD5, 0xDB, 0xA4, 0xF1, 0x10, 0x03, 0x4F, 0xF0, + 0x04, 0x09, 0x36, 0xE7, 0x15, 0xF1, 0x70, 0x0F, 0xFF, 0xF6, 0x1F, 0xAF, + 0x0D, 0x9B, 0x00, 0x2B, 0xA5, 0xF1, 0x10, 0x02, 0x4F, 0xF0, 0x04, 0x08, + 0xEC, 0xDA, 0x6F, 0x2C, 0x3F, 0xF7, 0x23, 0xAF, 0x04, 0xF1, 0x10, 0x03, + 0x4F, 0xF0, 0x04, 0x09, 0x23, 0xE7, 0x07, 0x9C, 0x4F, 0xF0, 0x80, 0x08, + 0x25, 0x46, 0xC1, 0x46, 0x0D, 0xF1, 0x34, 0x0B, 0x0D, 0xF1, 0x30, 0x0A, + 0x7E, 0xE7, 0x00, 0xBF, 0x4C, 0x40, 0x34, 0x40, 0x00, 0x00, 0x80, 0x80, + 0x1C, 0x40, 0x34, 0x40, 0x94, 0x7B, 0x15, 0x00, 0xA8, 0x7B, 0x15, 0x00, + 0xCC, 0x7B, 0x15, 0x00, 0xF0, 0x7B, 0x15, 0x00, 0x0C, 0x7C, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0x22, 0x4B, 0x23, 0x4E, 0x1A, 0x68, 0x00, 0x25, + 0x22, 0xF4, 0x7F, 0x52, 0x1A, 0x60, 0x98, 0x46, 0x2F, 0x46, 0x4F, 0xF0, + 0x07, 0x09, 0x02, 0x20, 0xFB, 0xF7, 0x86, 0xFE, 0x33, 0x68, 0xD8, 0xF8, + 0x00, 0x40, 0xDA, 0x05, 0x54, 0xBF, 0x01, 0x37, 0x07, 0xF1, 0xFF, 0x37, + 0x7F, 0xB2, 0x1B, 0x06, 0x54, 0xBF, 0x01, 0x35, 0x05, 0xF1, 0xFF, 0x35, + 0x00, 0x2F, 0x24, 0xF4, 0x7F, 0x54, 0xDC, 0xBF, 0x7B, 0x42, 0x44, 0xEA, + 0x83, 0x24, 0x6D, 0xB2, 0xD4, 0xBF, 0x44, 0xF4, 0x00, 0x54, 0x44, 0xEA, + 0x87, 0x24, 0x00, 0x2D, 0xDC, 0xBF, 0x6B, 0x42, 0x44, 0xEA, 0x83, 0x14, + 0x09, 0xF1, 0xFF, 0x33, 0xCC, 0xBF, 0x44, 0xEA, 0x85, 0x14, 0x44, 0xF4, + 0x00, 0x74, 0x13, 0xF0, 0xFF, 0x09, 0xC8, 0xF8, 0x00, 0x40, 0xD0, 0xD1, + 0x07, 0x49, 0x2B, 0x46, 0x3A, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, + 0xF7, 0xFE, 0xC4, 0xF3, 0x87, 0x10, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, + 0x50, 0x40, 0x34, 0x40, 0x14, 0x40, 0x34, 0x40, 0x34, 0x7C, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x4E, 0x4A, 0x4F, 0x4D, 0x13, 0x68, 0x87, 0xB0, + 0xC1, 0xF3, 0x03, 0x24, 0x03, 0x93, 0x23, 0xF0, 0x00, 0x43, 0x23, 0xF4, + 0xE0, 0x03, 0x43, 0xEA, 0x04, 0x53, 0x43, 0xF0, 0x0A, 0x03, 0x13, 0x60, + 0x2C, 0x68, 0x48, 0x4B, 0x24, 0xF4, 0xC0, 0x54, 0xC1, 0xF3, 0x01, 0x62, + 0x22, 0x43, 0x2A, 0x60, 0x1A, 0x68, 0x01, 0xF0, 0x0F, 0x04, 0xC1, 0xF3, + 0x03, 0x15, 0x42, 0xF0, 0x3F, 0x02, 0xA5, 0x42, 0x02, 0x94, 0xC1, 0xF3, + 0x03, 0x3A, 0x1A, 0x60, 0x5E, 0xD8, 0xDF, 0xF8, 0x04, 0x81, 0x3E, 0x4E, + 0xDF, 0xF8, 0x00, 0xB1, 0x44, 0x19, 0x99, 0x46, 0xEF, 0xB2, 0xD8, 0xF8, + 0x00, 0x20, 0x22, 0xF4, 0xFF, 0x42, 0x42, 0xEA, 0x45, 0x22, 0x42, 0xF4, + 0x40, 0x40, 0x42, 0xF4, 0xE0, 0x31, 0xC8, 0xF8, 0x00, 0x00, 0x2A, 0x46, + 0xC8, 0xF8, 0x00, 0x10, 0x4F, 0xF4, 0x00, 0x50, 0x33, 0x49, 0x1F, 0xF0, + 0xA9, 0xFE, 0x32, 0x68, 0x42, 0xF4, 0x80, 0x62, 0x32, 0x60, 0xDB, 0xF8, + 0x00, 0x20, 0x42, 0xF0, 0x40, 0x02, 0xCB, 0xF8, 0x00, 0x20, 0x32, 0x22, + 0x00, 0xBF, 0x01, 0x3A, 0x92, 0xB2, 0x00, 0x2A, 0xFA, 0xD1, 0xFF, 0xF7, + 0x5D, 0xFF, 0x04, 0xF8, 0x01, 0x0B, 0x32, 0x68, 0x22, 0xF4, 0x80, 0x62, + 0x32, 0x60, 0xD9, 0xF8, 0x00, 0x20, 0x22, 0xF0, 0x40, 0x02, 0xC9, 0xF8, + 0x00, 0x20, 0x32, 0x22, 0x00, 0xBF, 0x01, 0x3A, 0x92, 0xB2, 0x00, 0x2A, + 0xFA, 0xD1, 0x0D, 0xF1, 0x17, 0x03, 0x01, 0x93, 0x0D, 0xF1, 0x16, 0x03, + 0x39, 0x46, 0x00, 0x93, 0x05, 0xAA, 0x0D, 0xF1, 0x15, 0x03, 0x50, 0x46, + 0xFF, 0xF7, 0xE8, 0xFD, 0x01, 0x35, 0x02, 0x9B, 0x9D, 0xF8, 0x16, 0xC0, + 0x9D, 0xF8, 0x17, 0x00, 0x9D, 0xF8, 0x14, 0x10, 0x9D, 0xF8, 0x15, 0x20, + 0x84, 0xF8, 0x04, 0xC0, 0xEF, 0xB2, 0xBB, 0x42, 0x60, 0x72, 0xA1, 0x73, + 0xE2, 0x74, 0xA8, 0xD2, 0x11, 0x4A, 0x0D, 0x48, 0x13, 0x68, 0x0D, 0x49, + 0x0A, 0x4C, 0x23, 0xF4, 0x7F, 0x43, 0x23, 0xF0, 0x80, 0x03, 0x13, 0x60, + 0x43, 0xF4, 0x80, 0x33, 0x13, 0x60, 0x03, 0x68, 0x23, 0xF4, 0xC0, 0x53, + 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x3F, 0x03, 0x0B, 0x60, 0x03, 0x9B, + 0x23, 0x60, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1C, 0x05, 0x62, 0x40, + 0x04, 0x40, 0x34, 0x40, 0x50, 0x40, 0x34, 0x40, 0x14, 0x40, 0x34, 0x40, + 0x54, 0x7C, 0x15, 0x00, 0x58, 0x40, 0x34, 0x40, 0x5C, 0x40, 0x34, 0x40, + 0x2D, 0xE9, 0xF0, 0x4F, 0x3C, 0x4D, 0x3D, 0x49, 0x81, 0x46, 0x89, 0xB0, + 0x4F, 0xF4, 0x00, 0x50, 0x1F, 0xF0, 0x34, 0xFE, 0x2B, 0x68, 0xD9, 0xF8, + 0x00, 0x40, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE2, 0xB2, 0x04, 0xF0, + 0x7F, 0x0A, 0xC4, 0xF3, 0x03, 0x18, 0x04, 0xF0, 0x0F, 0x04, 0x4A, 0xDB, + 0x33, 0x4D, 0x34, 0x4F, 0x2E, 0x68, 0x2B, 0x68, 0x43, 0xF4, 0x80, 0x73, + 0x2B, 0x60, 0xD7, 0xF8, 0x00, 0xB0, 0x3B, 0x68, 0x23, 0xF0, 0x02, 0x03, + 0x3B, 0x60, 0x50, 0x46, 0xFF, 0xF7, 0xB2, 0xFC, 0xD9, 0xF8, 0x00, 0x10, + 0x01, 0xA8, 0xFF, 0xF7, 0x25, 0xFF, 0xFF, 0xF7, 0x0D, 0xFD, 0xC7, 0xF8, + 0x00, 0xB0, 0x2B, 0x68, 0x2B, 0x68, 0x06, 0xF4, 0x80, 0x76, 0x1E, 0x43, + 0xA0, 0x45, 0x2E, 0x60, 0x26, 0xD8, 0x25, 0x48, 0x0D, 0xF1, 0x05, 0x03, + 0xA4, 0xEB, 0x08, 0x04, 0x43, 0x44, 0x01, 0xAA, 0x42, 0x44, 0x53, 0xFA, + 0x84, 0xF4, 0x00, 0xEB, 0x08, 0x10, 0x15, 0x78, 0x53, 0x79, 0x92, 0xF8, + 0x0A, 0xC0, 0xD7, 0x7B, 0x16, 0x7D, 0x29, 0x06, 0x1B, 0x04, 0x01, 0xF0, + 0x70, 0x41, 0x43, 0xEA, 0x0C, 0x63, 0x41, 0xEA, 0x05, 0x51, 0x3B, 0x43, + 0x01, 0x32, 0x09, 0x0E, 0x43, 0xEA, 0x06, 0x23, 0xA2, 0x42, 0x80, 0xF8, + 0x07, 0x12, 0xC0, 0xF8, 0x00, 0x32, 0x00, 0xF1, 0x10, 0x00, 0xE4, 0xD1, + 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0xF0, 0x0C, 0x0F, 0x08, 0xD1, + 0xA0, 0x45, 0xAF, 0xD9, 0x0E, 0x49, 0x0F, 0x48, 0x41, 0xF2, 0x7F, 0x02, + 0x1F, 0xF0, 0xFA, 0xFF, 0xA8, 0xE7, 0x0B, 0x49, 0x0C, 0x48, 0x41, 0xF2, + 0x7E, 0x02, 0x1F, 0xF0, 0xF3, 0xFF, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xEB, 0xDB, 0x9C, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x68, 0x7C, 0x15, 0x00, 0x00, 0x04, 0x60, 0x40, 0x18, 0x00, 0x58, 0x40, + 0x1C, 0x13, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x88, 0x7C, 0x15, 0x00, + 0x78, 0x7C, 0x15, 0x00, 0x24, 0x4B, 0x25, 0x4A, 0x06, 0x21, 0x10, 0xB4, + 0xC3, 0xF8, 0x00, 0x11, 0x53, 0x68, 0x23, 0xF4, 0x80, 0x23, 0x53, 0x60, + 0x53, 0x68, 0x43, 0xF4, 0x00, 0x33, 0x53, 0x60, 0x13, 0x6B, 0x03, 0xF0, + 0x44, 0x03, 0x04, 0x2B, 0xFA, 0xD1, 0x1D, 0x4B, 0x1D, 0x4C, 0x1B, 0x68, + 0x1D, 0x48, 0x19, 0x49, 0xA4, 0xFB, 0x03, 0x43, 0x9B, 0x0C, 0x43, 0xF0, + 0x00, 0x44, 0x44, 0xF4, 0xA0, 0x14, 0x43, 0xF4, 0xA0, 0x13, 0x03, 0x60, + 0x04, 0x60, 0x03, 0x60, 0x53, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0x43, 0xF4, + 0xC4, 0x33, 0x43, 0xF0, 0x02, 0x03, 0x4F, 0xF4, 0x80, 0x50, 0x53, 0x60, + 0xC1, 0xF8, 0x34, 0x01, 0x13, 0x68, 0x43, 0xF0, 0x40, 0x03, 0x13, 0x60, + 0x4B, 0x6F, 0x43, 0xF0, 0x01, 0x03, 0x4B, 0x67, 0x53, 0x6C, 0x43, 0xF0, + 0x08, 0x43, 0x53, 0x64, 0x53, 0x6D, 0x23, 0xF4, 0x00, 0x13, 0x53, 0x65, + 0x53, 0x6D, 0x43, 0xF0, 0x02, 0x03, 0x53, 0x65, 0x53, 0x6D, 0x23, 0xF4, + 0x00, 0x63, 0x53, 0x65, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x50, 0x40, + 0x00, 0x60, 0x50, 0x40, 0x18, 0x13, 0x17, 0x00, 0x83, 0xDE, 0x1B, 0x43, + 0x08, 0x00, 0x58, 0x40, 0x3B, 0x4A, 0x3C, 0x48, 0x13, 0x68, 0x3C, 0x49, + 0xDF, 0xF8, 0x24, 0xC1, 0x43, 0xF0, 0x7C, 0x53, 0xF0, 0xB4, 0x13, 0x60, + 0x39, 0x4C, 0x3A, 0x4B, 0x23, 0x60, 0x03, 0xF1, 0xBE, 0x43, 0xA3, 0xF5, + 0x69, 0x03, 0xA3, 0xF6, 0x77, 0x33, 0x03, 0x60, 0x36, 0x4B, 0x0B, 0x60, + 0x36, 0x4F, 0x37, 0x4E, 0x37, 0x4D, 0x40, 0xF6, 0x77, 0x13, 0xCC, 0xF8, + 0x00, 0x30, 0x36, 0x4B, 0x3B, 0x60, 0x04, 0xF5, 0x00, 0x24, 0x01, 0xF5, + 0x2F, 0x11, 0x00, 0xF5, 0x2F, 0x10, 0x49, 0xF2, 0x02, 0x43, 0x02, 0xF5, + 0x00, 0x22, 0x33, 0x60, 0x0C, 0x34, 0x30, 0x4B, 0x2B, 0x60, 0x01, 0xF5, + 0x05, 0x61, 0x00, 0xF6, 0x58, 0x00, 0x02, 0xF6, 0x7C, 0x02, 0x07, 0xF5, + 0x2F, 0x17, 0x2C, 0x4D, 0x25, 0x60, 0x07, 0xF6, 0x68, 0x07, 0x0B, 0x60, + 0x06, 0xF5, 0x37, 0x16, 0x03, 0x60, 0x13, 0x60, 0x40, 0xF6, 0x34, 0x03, + 0x3B, 0x60, 0x06, 0xF2, 0xE4, 0x46, 0x26, 0x4B, 0x33, 0x60, 0x01, 0xF5, + 0xFE, 0x31, 0x03, 0xF1, 0x50, 0x53, 0x88, 0x31, 0x03, 0xF5, 0x54, 0x13, + 0x0F, 0x33, 0x0B, 0x60, 0x00, 0xF5, 0xFE, 0x30, 0x03, 0xF1, 0x48, 0x43, + 0x1F, 0x4D, 0x00, 0xF5, 0x90, 0x70, 0x02, 0xF5, 0xFE, 0x32, 0xA3, 0xF5, + 0x78, 0x13, 0x02, 0xF5, 0xB4, 0x72, 0xA3, 0xF2, 0x1F, 0x63, 0x4F, 0xF0, + 0x36, 0x36, 0x2B, 0x60, 0x06, 0x60, 0x4F, 0xF4, 0x7F, 0x40, 0x10, 0x60, + 0x04, 0xF5, 0x01, 0x34, 0x02, 0xF1, 0xAC, 0x42, 0x20, 0x34, 0x15, 0x4B, + 0x15, 0x4D, 0x25, 0x60, 0xA2, 0xF5, 0xB5, 0x12, 0x45, 0xF2, 0x55, 0x30, + 0xA2, 0xF6, 0x8A, 0x62, 0xC1, 0xF8, 0xA8, 0x00, 0xF0, 0xBC, 0x1A, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0x0C, 0x00, 0x58, 0x40, 0x2C, 0x40, 0x34, 0x40, + 0x30, 0x40, 0x34, 0x40, 0x04, 0x01, 0x58, 0x40, 0xFB, 0x23, 0x09, 0x00, + 0x08, 0x51, 0x2E, 0x1A, 0x24, 0x40, 0x34, 0x40, 0x28, 0x40, 0x34, 0x40, + 0x8C, 0x04, 0x60, 0x40, 0x94, 0xC5, 0x2E, 0x00, 0x34, 0x08, 0x50, 0x00, + 0x58, 0x00, 0x7E, 0x02, 0x13, 0x20, 0x20, 0x20, 0xA0, 0x05, 0x62, 0x40, + 0x1C, 0x05, 0x62, 0x40, 0x0F, 0x12, 0x15, 0x0C, 0x20, 0x40, 0x34, 0x40, + 0x63, 0x49, 0x64, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x63, 0xF0, 0xB4, + 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x32, 0x23, + 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, 0xDF, 0xF8, + 0x6C, 0xC1, 0x5B, 0x4A, 0xDC, 0xF8, 0x00, 0x30, 0x5A, 0x4F, 0x5B, 0x4E, + 0x23, 0xF4, 0x80, 0x53, 0xCC, 0xF8, 0x00, 0x30, 0x13, 0x68, 0x23, 0xF4, + 0x00, 0x73, 0x13, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x43, 0xF4, 0x80, 0x63, + 0xCC, 0xF8, 0x00, 0x30, 0xDC, 0xF8, 0x00, 0x30, 0x43, 0xF4, 0x00, 0x63, + 0xCC, 0xF8, 0x00, 0x30, 0x62, 0x46, 0xFF, 0x25, 0x2B, 0x1D, 0x2C, 0x46, + 0xDD, 0xB2, 0x29, 0x46, 0x38, 0x46, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, + 0x0B, 0x43, 0x13, 0x60, 0x50, 0xF8, 0x04, 0x3B, 0x33, 0x60, 0x13, 0x68, + 0x43, 0xF4, 0x80, 0x73, 0x13, 0x60, 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x13, 0x68, 0x9B, 0x04, 0xFC, 0xD5, 0x01, 0x39, 0xC9, 0xB2, + 0xA1, 0x42, 0xE8, 0xD1, 0x8F, 0x2D, 0x07, 0xF1, 0x10, 0x07, 0xDF, 0xD1, + 0xDC, 0xF8, 0x00, 0x30, 0x23, 0xF4, 0x80, 0x63, 0xCC, 0xF8, 0x00, 0x30, + 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, + 0x36, 0x4D, 0x37, 0x49, 0x2A, 0x68, 0x39, 0x48, 0x39, 0x4C, 0x22, 0xF4, + 0x00, 0x62, 0x2A, 0x60, 0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, + 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x72, 0x0A, 0x60, 0x0A, 0x68, 0x22, 0xF0, + 0x1F, 0x02, 0x1A, 0x43, 0x0A, 0x60, 0x50, 0xF8, 0x04, 0x2F, 0x22, 0x60, + 0x0A, 0x68, 0x42, 0xF0, 0x20, 0x02, 0x0A, 0x60, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0x0A, 0x68, 0x52, 0x05, 0xFC, 0xD5, 0x01, 0x33, + 0x20, 0x2B, 0xE9, 0xD1, 0x0B, 0x68, 0x23, 0xF0, 0x80, 0x03, 0x0B, 0x60, + 0xC8, 0x23, 0x00, 0xBF, 0x01, 0x3B, 0x9B, 0xB2, 0x00, 0x2B, 0xFA, 0xD1, + 0x1F, 0x4C, 0x24, 0x48, 0x22, 0x68, 0x24, 0x49, 0x24, 0x4D, 0x22, 0xF4, + 0x80, 0x72, 0x22, 0x60, 0x02, 0x68, 0x22, 0xF0, 0x02, 0x02, 0x02, 0x60, + 0x0A, 0x68, 0x22, 0xF0, 0x80, 0x62, 0x0A, 0x60, 0x32, 0x22, 0x2B, 0x60, + 0x00, 0xBF, 0x01, 0x3A, 0x92, 0xB2, 0x00, 0x2A, 0xFA, 0xD1, 0x13, 0x49, + 0x13, 0x4A, 0x08, 0x68, 0x1A, 0x4D, 0x1B, 0x4C, 0x1B, 0x4B, 0x40, 0xF4, + 0x80, 0x50, 0x08, 0x60, 0x08, 0x68, 0x40, 0xF4, 0x00, 0x60, 0x08, 0x60, + 0x11, 0x68, 0x41, 0xF4, 0x00, 0x71, 0x11, 0x60, 0x11, 0x68, 0x41, 0xF4, + 0x80, 0x71, 0x11, 0x60, 0x2A, 0x68, 0x42, 0xF4, 0x80, 0x52, 0x2A, 0x60, + 0x22, 0x68, 0x22, 0xF4, 0x80, 0x22, 0x22, 0x60, 0x1A, 0x68, 0x22, 0xF0, + 0x00, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x80, 0x42, 0xF0, 0xBC, + 0x1A, 0x60, 0x70, 0x47, 0x60, 0x40, 0x34, 0x40, 0x6C, 0x40, 0x34, 0x40, + 0x1C, 0x13, 0x17, 0x00, 0x64, 0x40, 0x34, 0x40, 0x18, 0x18, 0x17, 0x00, + 0x70, 0x40, 0x34, 0x40, 0x18, 0x00, 0x58, 0x40, 0x58, 0x40, 0x34, 0x40, + 0x08, 0x40, 0x34, 0x40, 0x14, 0x20, 0x34, 0x40, 0x18, 0x20, 0x34, 0x40, + 0x1C, 0x20, 0x34, 0x40, 0x10, 0xB5, 0x09, 0x4C, 0x82, 0xB0, 0xD4, 0xF8, + 0xC0, 0x34, 0x01, 0x90, 0x98, 0x47, 0xD4, 0xF8, 0xC4, 0x34, 0x98, 0x47, + 0xD4, 0xF8, 0xC8, 0x34, 0x98, 0x47, 0xD4, 0xF8, 0xCC, 0x34, 0x00, 0x21, + 0x01, 0xA8, 0x98, 0x47, 0x02, 0xB0, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x10, 0xB5, 0x2D, 0x4C, 0x23, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x17, 0xD0, + 0x0F, 0x24, 0x4F, 0xF4, 0x00, 0x62, 0x11, 0x46, 0x29, 0x48, 0xFD, 0xF7, + 0x61, 0xFA, 0x4F, 0xF4, 0x40, 0x72, 0x28, 0x48, 0x00, 0x21, 0xFD, 0xF7, + 0x5B, 0xFA, 0x21, 0x46, 0x26, 0x48, 0xFD, 0xF7, 0x2F, 0xFA, 0x02, 0x22, + 0xBD, 0xE8, 0x10, 0x40, 0x24, 0x48, 0x11, 0x46, 0xFD, 0xF7, 0x50, 0xBA, + 0x04, 0xF0, 0x2E, 0xFD, 0x22, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0xC3, 0xF8, + 0x80, 0x20, 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, 0x1F, 0x48, + 0x1F, 0xF0, 0x52, 0xFB, 0x1E, 0x4A, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF0, + 0x02, 0x03, 0xC2, 0xF8, 0x04, 0x38, 0x13, 0x69, 0x43, 0xF0, 0x01, 0x03, + 0x13, 0x61, 0x13, 0x69, 0xDB, 0x07, 0xFC, 0xD4, 0x18, 0x48, 0x1F, 0xF0, + 0x41, 0xFB, 0x18, 0x4A, 0x18, 0x48, 0x4F, 0xF4, 0x00, 0x21, 0xFD, 0xF7, + 0x2B, 0xFA, 0x17, 0x4B, 0x4F, 0xF4, 0x80, 0x61, 0x4F, 0xF4, 0x00, 0x02, + 0xC3, 0xF8, 0x28, 0x11, 0xC3, 0xF8, 0x18, 0x21, 0x23, 0x68, 0x1B, 0x78, + 0x02, 0x2B, 0xB5, 0xD1, 0x04, 0xF0, 0xB6, 0xFE, 0x00, 0x28, 0xB1, 0xD0, + 0x0F, 0x4B, 0x10, 0x48, 0xD3, 0xF8, 0x00, 0x41, 0x21, 0x46, 0x1F, 0xF0, + 0x23, 0xFB, 0xAA, 0xE7, 0x78, 0x36, 0x17, 0x00, 0x0C, 0x88, 0x01, 0x50, + 0x14, 0x88, 0x01, 0x50, 0x00, 0x70, 0x01, 0x50, 0x08, 0x70, 0x01, 0x50, + 0x00, 0xE1, 0x00, 0xE0, 0x9C, 0x7C, 0x15, 0x00, 0x00, 0x00, 0x20, 0x40, + 0xA8, 0x7C, 0x15, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x90, 0x01, 0x50, + 0x00, 0x00, 0x10, 0x40, 0x2C, 0x19, 0x17, 0x00, 0xB8, 0x7C, 0x15, 0x00, + 0x38, 0xB5, 0x36, 0x4C, 0x36, 0x48, 0x44, 0x22, 0x00, 0x21, 0xFB, 0xF7, + 0x91, 0xF8, 0x23, 0x68, 0x1A, 0x07, 0xC3, 0xF3, 0xC0, 0x01, 0x51, 0xD5, + 0x22, 0x46, 0x00, 0xBF, 0x13, 0x68, 0xDB, 0x06, 0xFB, 0xD5, 0x30, 0x4D, + 0x30, 0x48, 0x29, 0x68, 0x30, 0x4B, 0x00, 0x68, 0x30, 0x4A, 0xC1, 0xF8, + 0x44, 0x02, 0x00, 0x21, 0x19, 0x60, 0x11, 0x60, 0x19, 0x68, 0x2E, 0x48, + 0x2E, 0x4C, 0x21, 0xF0, 0x03, 0x01, 0x41, 0xF0, 0x02, 0x01, 0x19, 0x60, + 0x19, 0x68, 0x21, 0xF0, 0x0C, 0x01, 0x41, 0xF0, 0x08, 0x01, 0x19, 0x60, + 0x19, 0x68, 0x21, 0xF4, 0x40, 0x71, 0x41, 0xF4, 0x00, 0x71, 0x19, 0x60, + 0x19, 0x68, 0x21, 0xF4, 0x40, 0x61, 0x41, 0xF4, 0x00, 0x61, 0x19, 0x60, + 0x19, 0x68, 0x21, 0xF4, 0x40, 0x51, 0x41, 0xF4, 0x00, 0x51, 0x19, 0x60, + 0x11, 0x68, 0x21, 0xF0, 0x40, 0x51, 0x41, 0xF0, 0x00, 0x51, 0x11, 0x60, + 0x11, 0x68, 0x21, 0xF0, 0x40, 0x41, 0x41, 0xF0, 0x00, 0x41, 0x11, 0x60, + 0x1A, 0x68, 0x42, 0xF4, 0x40, 0x32, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, + 0x40, 0x22, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x40, 0x12, 0x1A, 0x60, + 0x1A, 0x68, 0x42, 0xF4, 0x40, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF0, + 0x40, 0x72, 0x1A, 0x60, 0x04, 0x60, 0x38, 0xBD, 0x23, 0x68, 0x09, 0x4D, + 0x43, 0xF0, 0x08, 0x03, 0x23, 0x60, 0x28, 0x68, 0x4F, 0xF4, 0x12, 0x72, + 0xFB, 0xF7, 0x30, 0xF8, 0x23, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x23, 0x60, + 0xA4, 0xE7, 0x00, 0xBF, 0x80, 0x40, 0x04, 0x40, 0x04, 0x35, 0x17, 0x00, + 0x00, 0x38, 0x18, 0x00, 0x84, 0x1A, 0x17, 0x00, 0x14, 0x41, 0x04, 0x40, + 0x18, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x33, 0x1F, 0x00, 0xC0, + 0x0C, 0x4B, 0x10, 0xB5, 0x1C, 0x68, 0x14, 0xF4, 0xF8, 0x54, 0x00, 0xD1, + 0x10, 0xBD, 0x60, 0x08, 0x1E, 0xF0, 0x02, 0xF8, 0x08, 0x4A, 0x09, 0x49, + 0x09, 0x4B, 0x0C, 0x60, 0x14, 0x60, 0x1A, 0x78, 0x00, 0x2A, 0xF3, 0xD0, + 0x07, 0x4A, 0x01, 0x21, 0x59, 0x70, 0x13, 0x68, 0x0B, 0x43, 0x13, 0x60, + 0x10, 0xBD, 0x00, 0xBF, 0x1C, 0x41, 0x04, 0x40, 0x08, 0x41, 0x04, 0x40, + 0x10, 0x41, 0x04, 0x40, 0x3C, 0x36, 0x17, 0x00, 0x10, 0x00, 0x58, 0x40, + 0x2D, 0xE9, 0xF8, 0x4F, 0x29, 0x4B, 0x06, 0x46, 0x53, 0xF8, 0x20, 0x00, + 0x1E, 0xF0, 0x04, 0xF8, 0x27, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, + 0x26, 0x4B, 0xD3, 0xF8, 0x00, 0xA0, 0xDA, 0xF8, 0x3C, 0x32, 0x0A, 0xF5, + 0x0F, 0x7B, 0x8B, 0xB3, 0x23, 0x4D, 0xDF, 0xF8, 0x98, 0x90, 0xDF, 0xF8, + 0x98, 0x80, 0x05, 0xF2, 0x14, 0x57, 0x1D, 0xE0, 0x95, 0xF8, 0x10, 0x35, + 0x85, 0xF8, 0x11, 0x45, 0x01, 0x33, 0xA9, 0xFB, 0x03, 0x24, 0xA4, 0x09, + 0x04, 0xEB, 0xC4, 0x04, 0x04, 0xEB, 0xC4, 0x04, 0x1C, 0x1B, 0x85, 0xF8, + 0x10, 0x45, 0x1E, 0xF0, 0xA1, 0xF8, 0xD8, 0xF8, 0x00, 0x20, 0x05, 0xEB, + 0x04, 0x11, 0x02, 0x44, 0xC1, 0xE9, 0x01, 0x26, 0x38, 0x46, 0x1E, 0xF0, + 0x53, 0xF8, 0xDA, 0xF8, 0x3C, 0x32, 0x5B, 0xB1, 0x95, 0xF8, 0x11, 0x15, + 0x95, 0xF8, 0x12, 0x25, 0x91, 0x42, 0x58, 0x46, 0x01, 0xF1, 0x01, 0x04, + 0xD8, 0xD3, 0x0D, 0x48, 0x01, 0xF0, 0x54, 0xF8, 0x08, 0x4B, 0x01, 0x24, + 0x1C, 0x60, 0x20, 0x20, 0x08, 0x36, 0x1D, 0xF0, 0x9B, 0xFF, 0x04, 0xFA, + 0x06, 0xF6, 0x08, 0x4B, 0x06, 0xF4, 0xF8, 0x56, 0x1E, 0x60, 0xBD, 0xE8, + 0xF8, 0x8F, 0x00, 0xBF, 0x80, 0x7E, 0x15, 0x00, 0x4C, 0x40, 0x04, 0x40, + 0x00, 0x38, 0x18, 0x00, 0x58, 0x58, 0x17, 0x00, 0xCC, 0x7C, 0x15, 0x00, + 0x0C, 0x41, 0x04, 0x40, 0xE7, 0x87, 0x45, 0xCA, 0x84, 0x1A, 0x17, 0x00, + 0x1D, 0x4B, 0x10, 0xB5, 0x1C, 0x68, 0xA0, 0x06, 0x2C, 0xD4, 0xE1, 0x06, + 0x20, 0xD4, 0xA2, 0x07, 0x16, 0xD4, 0x63, 0x00, 0x08, 0xD5, 0x19, 0x4B, + 0x01, 0x20, 0xD3, 0xF8, 0x78, 0x34, 0x98, 0x47, 0x17, 0x4B, 0x4F, 0xF0, + 0x80, 0x42, 0x1A, 0x60, 0x00, 0x2C, 0x00, 0xDB, 0x10, 0xBD, 0x13, 0x4B, + 0xD3, 0xF8, 0x68, 0x34, 0x98, 0x47, 0x12, 0x4B, 0x4F, 0xF0, 0x00, 0x42, + 0x1A, 0x60, 0x10, 0xBD, 0x4F, 0xF0, 0x80, 0x50, 0x1D, 0xF0, 0x5E, 0xFF, + 0x0E, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0xE0, 0xE7, 0x0C, 0x49, 0x0B, 0x4A, + 0x10, 0x23, 0x0B, 0x60, 0x4F, 0xF4, 0x00, 0x10, 0x13, 0x60, 0x1D, 0xF0, + 0x51, 0xFF, 0xD4, 0xE7, 0x07, 0x49, 0x06, 0x4A, 0x20, 0x23, 0x0B, 0x60, + 0x4F, 0xF4, 0x80, 0x10, 0x13, 0x60, 0x1D, 0xF0, 0x47, 0xFF, 0xC8, 0xE7, + 0x1C, 0x41, 0x04, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x08, 0x41, 0x04, 0x40, + 0x10, 0x41, 0x04, 0x40, 0x06, 0x4A, 0x07, 0x49, 0x12, 0x68, 0xD2, 0xF8, + 0x24, 0x02, 0x20, 0x23, 0x0B, 0x60, 0x08, 0xB1, 0x01, 0x20, 0x70, 0x47, + 0x03, 0x4A, 0x13, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x38, 0x18, 0x00, + 0x08, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x10, 0xB5, 0x15, 0x4C, + 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x14, 0x4B, 0x18, 0x68, 0xD0, 0xF8, + 0x24, 0x32, 0xBB, 0xB1, 0x00, 0xF5, 0x09, 0x70, 0x1E, 0xF0, 0x02, 0xF8, + 0x10, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x01, 0x22, 0x00, 0x2B, + 0x22, 0x60, 0x01, 0xDB, 0x14, 0x30, 0x10, 0xBD, 0x00, 0x28, 0xFB, 0xD1, + 0x0B, 0x49, 0x0C, 0x48, 0x40, 0xF2, 0x92, 0x32, 0x1F, 0xF0, 0x00, 0xFC, + 0x14, 0x20, 0x10, 0xBD, 0x06, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x01, 0x22, 0x00, 0x2B, 0x22, 0x60, 0xF5, 0xDA, 0xEE, 0xE7, 0x00, 0xBF, + 0x54, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xE4, 0x7C, 0x15, 0x00, 0x10, 0xB5, 0x0A, 0x4C, + 0x23, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x09, 0x4B, 0x1B, 0x68, 0xD3, 0xF8, + 0x14, 0x02, 0x40, 0xB1, 0x03, 0xF5, 0x05, 0x70, 0x1D, 0xF0, 0xCC, 0xFF, + 0x01, 0x23, 0x23, 0x60, 0x00, 0xB1, 0x04, 0x30, 0x10, 0xBD, 0x01, 0x23, + 0x23, 0x60, 0x10, 0xBD, 0x58, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, + 0x70, 0x47, 0x00, 0xBF, 0x01, 0x4B, 0x08, 0x22, 0x1A, 0x60, 0x70, 0x47, + 0x00, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x4F, 0xF4, 0x80, 0x72, 0x1A, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x41, 0x04, 0x40, 0x01, 0x4B, 0x80, 0x22, + 0x1A, 0x60, 0x70, 0x47, 0x00, 0x41, 0x04, 0x40, 0xF8, 0xB5, 0x04, 0x46, + 0x40, 0x89, 0x29, 0x4F, 0x10, 0x30, 0x1D, 0xF0, 0xA3, 0xFB, 0x3E, 0x68, + 0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x22, 0xDB, 0xA3, 0x88, + 0x62, 0x89, 0xE0, 0x88, 0xAB, 0x80, 0x00, 0x21, 0x0C, 0x23, 0x2B, 0x81, + 0x6A, 0x81, 0xE8, 0x80, 0x29, 0x60, 0xE3, 0x18, 0x62, 0xB1, 0x01, 0x3A, + 0x22, 0xF0, 0x03, 0x02, 0x10, 0x32, 0x14, 0x44, 0x05, 0xF1, 0x08, 0x02, + 0x53, 0xF8, 0x04, 0x1B, 0x42, 0xF8, 0x04, 0x1F, 0xA3, 0x42, 0xF9, 0xD1, + 0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0F, 0xDB, 0x05, 0xF1, 0x0C, 0x00, + 0xBD, 0xE8, 0xF8, 0x40, 0x1D, 0xF0, 0xD8, 0xBA, 0x00, 0x28, 0xDA, 0xD1, + 0x12, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x6F, 0x42, 0x1F, 0xF0, 0x82, 0xFB, + 0x3E, 0x68, 0xD2, 0xE7, 0x0D, 0x28, 0x0D, 0xD8, 0x0B, 0x28, 0xEB, 0xD9, + 0x0C, 0x49, 0x0E, 0x48, 0x4F, 0xF4, 0x90, 0x62, 0x1F, 0xF0, 0x76, 0xFB, + 0x05, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, 0xF8, 0x40, 0x1D, 0xF0, 0xBE, 0xBA, + 0x06, 0x49, 0x09, 0x48, 0xBB, 0x22, 0x1F, 0xF0, 0x6B, 0xFB, 0x04, 0x49, + 0x05, 0x48, 0x4F, 0xF4, 0x90, 0x62, 0x1F, 0xF0, 0x65, 0xFB, 0xED, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x7C, 0x15, 0x00, + 0x20, 0x7D, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0xF8, 0xB5, 0x05, 0x46, + 0x40, 0x89, 0x2B, 0x4F, 0x10, 0x30, 0x1D, 0xF0, 0x43, 0xFB, 0x3E, 0x68, + 0xB6, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x2A, 0xDB, 0xAB, 0x88, + 0x6A, 0x89, 0xEF, 0x88, 0xA3, 0x80, 0x00, 0x21, 0x0C, 0x23, 0x23, 0x81, + 0x62, 0x81, 0xE7, 0x80, 0x21, 0x60, 0xEB, 0x18, 0x62, 0xB1, 0x01, 0x3A, + 0x22, 0xF0, 0x03, 0x02, 0x10, 0x32, 0x2A, 0x44, 0x04, 0xF1, 0x08, 0x01, + 0x53, 0xF8, 0x04, 0x0B, 0x41, 0xF8, 0x04, 0x0F, 0x93, 0x42, 0xF9, 0xD1, + 0x1A, 0x4A, 0x53, 0x7D, 0x59, 0x1C, 0x51, 0x75, 0x2B, 0x81, 0xB6, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x12, 0xDB, 0x17, 0x4B, 0x04, 0x22, 0x04, 0xF1, + 0x0C, 0x00, 0x1A, 0x60, 0xBD, 0xE8, 0xF8, 0x40, 0x1D, 0xF0, 0x70, 0xBA, + 0x00, 0x28, 0xD2, 0xD1, 0x12, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x8E, 0x42, + 0x1F, 0xF0, 0x1A, 0xFB, 0x3E, 0x68, 0xCA, 0xE7, 0x0D, 0x2F, 0x08, 0xD8, + 0x0B, 0x2F, 0xE8, 0xD9, 0x0C, 0x49, 0x0E, 0x48, 0x40, 0xF2, 0xA3, 0x42, + 0x1F, 0xF0, 0x0E, 0xFB, 0xE1, 0xE7, 0x09, 0x49, 0x0B, 0x48, 0xBB, 0x22, + 0x1F, 0xF0, 0x08, 0xFB, 0x06, 0x49, 0x08, 0x48, 0x40, 0xF2, 0xA3, 0x42, + 0x1F, 0xF0, 0x02, 0xFB, 0xD5, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x04, 0x35, 0x17, 0x00, 0x00, 0x41, 0x04, 0x40, 0x70, 0x79, 0x15, 0x00, + 0xFC, 0x7C, 0x15, 0x00, 0x20, 0x7D, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, + 0xF8, 0xB5, 0x0B, 0x4C, 0x23, 0x68, 0x9A, 0x07, 0x0A, 0xD5, 0x0A, 0x4F, + 0x0A, 0x4E, 0x02, 0x25, 0x38, 0x68, 0x35, 0x60, 0x04, 0x30, 0xFF, 0xF7, + 0x8B, 0xFF, 0x23, 0x68, 0x9B, 0x07, 0xF7, 0xD4, 0x4F, 0xF0, 0x80, 0x50, + 0x1D, 0xF0, 0x0C, 0xFE, 0x04, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0xF8, 0xBD, + 0x04, 0x41, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0x08, 0x41, 0x04, 0x40, + 0x0C, 0x41, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x20, 0x93, + 0xD9, 0xF8, 0x00, 0x20, 0x13, 0x78, 0x03, 0x2B, 0x82, 0xB0, 0x04, 0x46, + 0x00, 0xF0, 0x16, 0x81, 0x00, 0x27, 0x3E, 0x46, 0x01, 0x2B, 0x00, 0xF0, + 0xC2, 0x80, 0x02, 0x2B, 0x4F, 0xF0, 0x00, 0x05, 0x00, 0xF0, 0xD3, 0x80, + 0x62, 0x89, 0xA3, 0x88, 0x33, 0x80, 0xF2, 0x80, 0x7A, 0xB9, 0xD9, 0xF8, + 0x00, 0x30, 0x1B, 0x78, 0x03, 0x2B, 0x1C, 0xD0, 0x02, 0x2B, 0x2F, 0xD0, + 0x01, 0x2B, 0x00, 0xF0, 0x89, 0x80, 0x20, 0x46, 0x02, 0xB0, 0xBD, 0xE8, + 0xF0, 0x47, 0x1D, 0xF0, 0x41, 0xBA, 0xA3, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x20, 0x81, 0x06, 0xF1, 0x0C, 0x00, + 0x04, 0xF1, 0x0C, 0x01, 0x31, 0xF0, 0x40, 0xFD, 0xD9, 0xF8, 0x00, 0x30, + 0x1B, 0x78, 0x03, 0x2B, 0xE2, 0xD1, 0x9B, 0x4E, 0x33, 0x68, 0x00, 0x2B, + 0xFC, 0xD0, 0x9A, 0x4B, 0x18, 0x68, 0x39, 0x1F, 0x00, 0xF5, 0x03, 0x70, + 0x1D, 0xF0, 0x36, 0xFE, 0x97, 0x4B, 0x01, 0x21, 0x02, 0x22, 0x31, 0x60, + 0x1A, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x02, 0x2B, 0xCF, 0xD1, + 0x60, 0x89, 0x10, 0xF0, 0x03, 0x03, 0x40, 0xF0, 0xE9, 0x80, 0x19, 0x46, + 0x9C, 0x46, 0x90, 0x4E, 0x42, 0xF2, 0x34, 0x03, 0xF2, 0x5A, 0xB2, 0xF5, + 0xC3, 0x7F, 0x00, 0xF2, 0xFD, 0x80, 0x57, 0x1C, 0xBF, 0xB2, 0x4F, 0xEA, + 0xC2, 0x0E, 0x8B, 0x4B, 0xA8, 0xF8, 0x0C, 0x20, 0xD3, 0xF8, 0x00, 0xA0, + 0x00, 0xF1, 0x10, 0x03, 0x0A, 0xEB, 0x0E, 0x00, 0x0C, 0xEB, 0x03, 0x02, + 0x45, 0x60, 0x2A, 0xF8, 0x0E, 0x20, 0xC2, 0x78, 0x02, 0xF0, 0x31, 0x02, + 0x42, 0xF0, 0x04, 0x02, 0xC2, 0x70, 0x96, 0xF8, 0x02, 0x2C, 0x42, 0xF2, + 0x34, 0x0C, 0x0B, 0x44, 0x01, 0x32, 0x01, 0x21, 0x4F, 0xF0, 0x00, 0x0E, + 0x26, 0xF8, 0x0C, 0x70, 0x86, 0xF8, 0x02, 0x2C, 0xC8, 0xE9, 0x01, 0x03, + 0x88, 0xF8, 0x0E, 0x10, 0xC8, 0xF8, 0x00, 0xE0, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x76, 0x4B, 0x19, 0x60, 0x76, 0x4E, + 0x76, 0x48, 0x33, 0x68, 0x41, 0x46, 0x01, 0x33, 0x33, 0x60, 0x1D, 0xF0, + 0xE3, 0xFD, 0x74, 0x4B, 0xD3, 0xF8, 0x44, 0x34, 0x98, 0x47, 0x33, 0x68, + 0x33, 0xB1, 0x6E, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0xD9, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x01, 0x2B, + 0x7F, 0xF4, 0x77, 0xAF, 0x01, 0xF0, 0xF2, 0xFF, 0x00, 0x28, 0x00, 0xF0, + 0x0C, 0x81, 0xA1, 0x7A, 0x68, 0x4A, 0x0C, 0x31, 0x29, 0x70, 0x61, 0x89, + 0x0C, 0x31, 0x00, 0x27, 0x09, 0x12, 0x11, 0x26, 0x69, 0x70, 0xAE, 0x70, + 0xEF, 0x70, 0x61, 0x89, 0x86, 0x68, 0x47, 0x60, 0x10, 0x31, 0xC1, 0xF3, + 0x0B, 0x01, 0x32, 0x40, 0x0A, 0x43, 0x42, 0xF0, 0x00, 0x42, 0x05, 0x60, + 0x82, 0x60, 0x03, 0xF0, 0x35, 0xF8, 0x20, 0x46, 0x02, 0xB0, 0xBD, 0xE8, + 0xF0, 0x47, 0x1D, 0xF0, 0x99, 0xB9, 0x63, 0x89, 0x6C, 0x2B, 0x40, 0xF2, + 0x8C, 0x80, 0x58, 0x4B, 0x1B, 0x68, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, + 0x98, 0x47, 0x05, 0x46, 0x00, 0x2D, 0x00, 0xF0, 0x8A, 0x80, 0xD9, 0xF8, + 0x00, 0x30, 0x1B, 0x78, 0x02, 0x2B, 0x05, 0xF1, 0x04, 0x06, 0x7F, 0xF4, + 0x2D, 0xAF, 0x63, 0x89, 0x6C, 0x2B, 0x7A, 0xD9, 0x4D, 0x4B, 0x1B, 0x68, + 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, 0x05, 0x46, 0x00, 0x2D, + 0x75, 0xD0, 0x42, 0x4A, 0x42, 0xF2, 0x24, 0x03, 0xD3, 0x58, 0x00, 0x2B, + 0x00, 0xF0, 0x9A, 0x80, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x3E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x3D, 0x4E, 0x42, 0x48, + 0x33, 0x68, 0x01, 0x33, 0x33, 0x60, 0x1D, 0xF0, 0xB7, 0xFD, 0x33, 0x68, + 0x80, 0x46, 0x33, 0xB1, 0x37, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xA3, 0x7A, 0x0C, 0x33, 0x2B, 0x70, + 0x63, 0x89, 0x0C, 0x33, 0x1B, 0x12, 0x11, 0x22, 0x6B, 0x70, 0x00, 0x23, + 0xAA, 0x70, 0xEB, 0x70, 0x2E, 0x1D, 0xF3, 0xE6, 0x28, 0x4D, 0x2B, 0x68, + 0x00, 0x2B, 0xFC, 0xD0, 0x27, 0x4B, 0x18, 0x68, 0xD0, 0xF8, 0x04, 0x32, + 0xD3, 0xB1, 0x00, 0xF5, 0x01, 0x70, 0x1D, 0xF0, 0x93, 0xFD, 0x21, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x01, 0x22, 0x00, 0x2B, 0x2A, 0x60, + 0xC0, 0xF2, 0x8B, 0x80, 0x07, 0x1D, 0xD9, 0xF8, 0x00, 0x20, 0x3E, 0x46, + 0x27, 0x4B, 0xB3, 0x60, 0x13, 0x78, 0xCD, 0xE6, 0xC3, 0xF1, 0x04, 0x03, + 0x5F, 0xFA, 0x83, 0xFC, 0x61, 0x46, 0x12, 0xE7, 0x15, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x01, 0x21, 0x00, 0x2B, 0x29, 0x60, 0xC0, 0xF2, + 0x82, 0x80, 0x04, 0x26, 0x37, 0x46, 0xE9, 0xE7, 0xB2, 0xF5, 0x80, 0x6F, + 0x7F, 0xF6, 0xDC, 0xAE, 0x4F, 0xF4, 0xB1, 0x62, 0x1A, 0x49, 0x1B, 0x48, + 0x1F, 0xF0, 0x76, 0xF9, 0x62, 0x89, 0xD3, 0xE6, 0x4F, 0xF0, 0x00, 0x0E, + 0x72, 0x46, 0x01, 0x27, 0x01, 0xE7, 0x01, 0xF0, 0xCF, 0xFF, 0x05, 0x46, + 0x76, 0xE7, 0x05, 0xF0, 0x2B, 0xF8, 0x05, 0x46, 0x87, 0xE7, 0xE3, 0x88, + 0x22, 0x89, 0xA1, 0x88, 0x11, 0x48, 0x00, 0xF0, 0x1D, 0xFD, 0xB2, 0xE6, + 0x38, 0x36, 0x17, 0x00, 0x50, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, + 0x00, 0x41, 0x04, 0x40, 0x7C, 0x36, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x1C, 0x58, 0x17, 0x00, + 0xA0, 0x56, 0x17, 0x00, 0x2A, 0xDE, 0xDE, 0xAD, 0x70, 0x79, 0x15, 0x00, + 0xDC, 0x7D, 0x15, 0x00, 0x68, 0x7D, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, + 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x20, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x1F, 0x4D, 0x20, 0x4A, 0x2B, 0x68, 0xD2, 0xF8, + 0x44, 0x24, 0x01, 0x33, 0x2B, 0x60, 0x90, 0x47, 0x2A, 0x68, 0x03, 0x46, + 0x32, 0xB1, 0x19, 0x49, 0x01, 0x3A, 0x09, 0x68, 0x2A, 0x60, 0x0A, 0xB9, + 0x01, 0xB1, 0x62, 0xB6, 0x18, 0x48, 0x01, 0x93, 0x1D, 0xF0, 0x4E, 0xFD, + 0x00, 0x90, 0x17, 0x48, 0x1D, 0xF0, 0x4A, 0xFD, 0xDD, 0xE9, 0x00, 0x13, + 0x02, 0x46, 0x15, 0x48, 0x00, 0xF0, 0xD0, 0xFC, 0x65, 0xE6, 0x14, 0x48, + 0x00, 0xF0, 0xCC, 0xFC, 0x61, 0xE6, 0x60, 0xB1, 0x07, 0x1D, 0x7F, 0xF4, + 0x72, 0xAF, 0x40, 0xF2, 0x31, 0x52, 0x10, 0x49, 0x10, 0x48, 0x1F, 0xF0, + 0x05, 0xF9, 0x3E, 0x46, 0xD9, 0xF8, 0x00, 0x20, 0x6A, 0xE7, 0x40, 0xF2, + 0x26, 0x32, 0x0B, 0x49, 0x0C, 0x48, 0x04, 0x26, 0x1F, 0xF0, 0xFA, 0xF8, + 0x37, 0x46, 0xD9, 0xF8, 0x00, 0x20, 0x5F, 0xE7, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, + 0xA8, 0x56, 0x17, 0x00, 0xA4, 0x7D, 0x15, 0x00, 0x08, 0x7E, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x54, 0x7D, 0x15, 0x00, 0x44, 0x7D, 0x15, 0x00, + 0x10, 0xB4, 0x15, 0x49, 0x15, 0x4C, 0x16, 0x4B, 0x4F, 0xF4, 0x4C, 0x02, + 0x22, 0x60, 0x0A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x30, 0x02, 0x1A, 0x60, + 0x1A, 0x68, 0x22, 0xF0, 0xC0, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, + 0x40, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x4F, 0xF0, 0x60, 0x50, 0x22, 0xF4, + 0x40, 0x42, 0x1A, 0x60, 0x20, 0x60, 0x08, 0x60, 0x1A, 0x68, 0x5D, 0xF8, + 0x04, 0x4B, 0x22, 0xF4, 0x40, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, + 0x40, 0x72, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF0, 0x40, 0x62, 0x1A, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0x0C, 0x40, 0x04, 0x40, 0x08, 0x40, 0x04, 0x40, + 0x18, 0x40, 0x04, 0x40, 0x10, 0xB5, 0x01, 0x46, 0x04, 0x46, 0x05, 0x48, + 0x1E, 0xF0, 0x30, 0xFE, 0x04, 0x4A, 0x05, 0x4B, 0x14, 0x60, 0x4F, 0xF0, + 0x80, 0x72, 0x1A, 0x60, 0x10, 0xBD, 0x00, 0xBF, 0x2C, 0x7E, 0x15, 0x00, + 0x98, 0x40, 0x04, 0x40, 0x00, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x4F, 0xF0, + 0x00, 0x72, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x40, 0x04, 0x40, + 0x02, 0x4B, 0x4F, 0xF0, 0x80, 0x62, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x40, 0x04, 0x40, 0x08, 0xB5, 0x25, 0x4B, 0x19, 0x68, 0x4A, 0x03, + 0x04, 0xD5, 0x4F, 0xF4, 0x80, 0x22, 0x43, 0xF8, 0x14, 0x2C, 0x08, 0xBD, + 0x08, 0x03, 0x04, 0xD5, 0x20, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, + 0x08, 0xBD, 0x4A, 0x02, 0x0F, 0xD4, 0x0B, 0x02, 0x1D, 0xD4, 0x08, 0x01, + 0x10, 0xD5, 0x1C, 0x4B, 0x1A, 0x4A, 0xDB, 0x7D, 0x4F, 0xF0, 0x00, 0x61, + 0x01, 0x2B, 0x11, 0x60, 0xE9, 0xD1, 0xBD, 0xE8, 0x08, 0x40, 0x23, 0xF0, + 0xED, 0xBE, 0x15, 0x4B, 0x4F, 0xF4, 0x80, 0x02, 0x1A, 0x60, 0x08, 0xBD, + 0x11, 0xF0, 0x80, 0x53, 0x16, 0xD0, 0x12, 0x49, 0x10, 0x4B, 0x01, 0x20, + 0x4F, 0xF0, 0x80, 0x52, 0x48, 0x75, 0x1A, 0x60, 0x08, 0xBD, 0x0D, 0x4B, + 0x0E, 0x48, 0x4F, 0xF4, 0x00, 0x02, 0x1A, 0x60, 0x00, 0xF0, 0x0E, 0xFC, + 0x03, 0x20, 0x00, 0xF0, 0x93, 0xFC, 0x0B, 0x4B, 0x4F, 0xF4, 0x80, 0x02, + 0x1A, 0x60, 0x08, 0xBD, 0x8A, 0x00, 0xC4, 0xD5, 0x05, 0x49, 0x04, 0x4A, + 0x4B, 0x75, 0x4F, 0xF0, 0x00, 0x53, 0x13, 0x60, 0x08, 0xBD, 0x00, 0xBF, + 0x1C, 0x40, 0x04, 0x40, 0x08, 0x40, 0x04, 0x40, 0x4C, 0x36, 0x17, 0x00, + 0x40, 0x7E, 0x15, 0x00, 0x00, 0x40, 0x04, 0x40, 0x15, 0x4B, 0xD3, 0xF8, + 0x24, 0x31, 0x59, 0x06, 0x09, 0xD5, 0x10, 0xB5, 0x13, 0x4C, 0x23, 0x68, + 0x1A, 0x07, 0x88, 0xB0, 0xC3, 0xF3, 0xC0, 0x00, 0x03, 0xD4, 0x08, 0xB0, + 0x10, 0xBD, 0x01, 0x20, 0x70, 0x47, 0x0F, 0x49, 0x20, 0x22, 0x68, 0x46, + 0x31, 0xF0, 0xC6, 0xFA, 0x0D, 0x4B, 0x1B, 0x68, 0x23, 0x68, 0xC3, 0xF3, + 0x40, 0x00, 0x9B, 0x07, 0xEF, 0xD5, 0x0B, 0x4B, 0x0B, 0x4A, 0x4F, 0xF4, + 0x00, 0x11, 0x19, 0x60, 0x10, 0x68, 0x10, 0xF4, 0x40, 0x13, 0xFB, 0xD0, + 0x08, 0x4A, 0xC0, 0xF3, 0x00, 0x50, 0x13, 0x60, 0xE1, 0xE7, 0x00, 0xBF, + 0x00, 0x00, 0x50, 0x40, 0x84, 0x40, 0x04, 0x40, 0x30, 0x95, 0x16, 0x00, + 0x30, 0x60, 0x50, 0x40, 0x00, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, + 0x08, 0x40, 0x04, 0x40, 0x01, 0x28, 0x06, 0xD0, 0x02, 0x28, 0x09, 0xD1, + 0x0B, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x09, 0x4B, + 0x4F, 0xF4, 0x80, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x07, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x05, 0x49, + 0x05, 0x48, 0x40, 0xF2, 0x52, 0x72, 0x1E, 0xF0, 0xE1, 0xBF, 0x00, 0xBF, + 0x00, 0x40, 0x04, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x38, 0xB5, 0x22, 0x48, 0xFC, 0xF7, 0xFA, 0xFB, + 0x83, 0x07, 0x23, 0xD5, 0x20, 0x48, 0x00, 0xF0, 0x8B, 0xFB, 0x20, 0x48, + 0xFC, 0xF7, 0xF2, 0xFB, 0x04, 0x46, 0x1F, 0x48, 0xFC, 0xF7, 0xEE, 0xFB, + 0x03, 0x46, 0x1D, 0x48, 0x1C, 0x40, 0xFC, 0xF7, 0xE9, 0xFB, 0x84, 0x42, + 0x1F, 0xD0, 0x05, 0x20, 0x00, 0xF0, 0x14, 0xFC, 0x01, 0x28, 0x04, 0x46, + 0x17, 0xD0, 0x03, 0x20, 0x00, 0xF0, 0x06, 0xFC, 0x02, 0x25, 0x21, 0x46, + 0x15, 0x48, 0x00, 0xF0, 0x6F, 0xFB, 0x28, 0x46, 0xBD, 0xE8, 0x38, 0x40, + 0xFF, 0xF7, 0xB2, 0xBF, 0x01, 0x46, 0x12, 0x48, 0x00, 0xF0, 0x66, 0xFB, + 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x08, 0xDB, + 0x38, 0xBD, 0x05, 0x46, 0xE9, 0xE7, 0x20, 0x22, 0x0D, 0x48, 0x11, 0x46, + 0xFC, 0xF7, 0x12, 0xFC, 0xD9, 0xE7, 0xBD, 0xE8, 0x38, 0x40, 0x0B, 0x49, + 0x0B, 0x48, 0x4F, 0xF4, 0xD3, 0x62, 0x1E, 0xF0, 0x93, 0xBF, 0x00, 0xBF, + 0x08, 0x30, 0x01, 0x50, 0x54, 0x7E, 0x15, 0x00, 0x20, 0x10, 0x01, 0x50, + 0x18, 0x10, 0x01, 0x50, 0x60, 0x7E, 0x15, 0x00, 0x6C, 0x7E, 0x15, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x24, 0x10, 0x01, 0x50, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x02, 0x48, 0x38, 0x22, 0x00, 0x21, 0xFA, 0xF7, + 0x91, 0xBA, 0x00, 0xBF, 0x48, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x5D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x80, 0x46, + 0x0F, 0x46, 0x16, 0x46, 0xC0, 0xF2, 0xA8, 0x80, 0x00, 0x23, 0x3B, 0x62, + 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x56, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0xB5, 0x01, 0x05, 0xF1, 0x80, 0x42, 0x02, 0xF5, + 0xE2, 0x24, 0x53, 0x49, 0x23, 0x68, 0x08, 0x68, 0x43, 0xF0, 0x01, 0x03, + 0x00, 0xF1, 0x01, 0x0C, 0x02, 0xF5, 0xE0, 0x22, 0x23, 0x60, 0xC1, 0xF8, + 0x00, 0xC0, 0x23, 0x68, 0xDB, 0x03, 0xFC, 0xD5, 0xDF, 0xF8, 0x38, 0xE1, + 0x5E, 0xF8, 0x26, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x0A, 0xD0, 0x05, 0xF1, + 0x80, 0x43, 0x03, 0xF5, 0xE0, 0x23, 0x41, 0xF2, 0x0C, 0x0A, 0x53, 0xF8, + 0x0A, 0xA0, 0x1A, 0xF4, 0x00, 0x6F, 0x61, 0xD0, 0x05, 0xF1, 0x80, 0x43, + 0x03, 0xF5, 0xE0, 0x23, 0x41, 0xF2, 0x08, 0x09, 0xDF, 0xF8, 0x0C, 0xA1, + 0x43, 0xF8, 0x09, 0xA0, 0x41, 0xF2, 0x0C, 0x05, 0x4F, 0xF0, 0x14, 0x0A, + 0x43, 0xF8, 0x05, 0xA0, 0x41, 0xF2, 0x10, 0x0B, 0x41, 0xF2, 0x14, 0x0A, + 0x00, 0x25, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, + 0x18, 0x0B, 0x41, 0xF2, 0x1C, 0x0A, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, + 0x0A, 0x50, 0x03, 0xF5, 0x81, 0x5B, 0x41, 0xF2, 0x24, 0x0A, 0xCB, 0xF8, + 0x00, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, 0x28, 0x0B, 0x41, 0xF2, + 0x2C, 0x0A, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x50, 0x41, 0xF2, + 0x34, 0x0B, 0x41, 0xF2, 0x38, 0x0A, 0x43, 0xF8, 0x0B, 0x50, 0x43, 0xF8, + 0x0A, 0x50, 0x41, 0xF2, 0x3C, 0x0B, 0x41, 0xF2, 0x30, 0x0A, 0x43, 0xF8, + 0x0B, 0x50, 0x43, 0xF8, 0x0A, 0x80, 0xBD, 0x68, 0x45, 0xF4, 0x00, 0x25, + 0xBD, 0x60, 0x53, 0xF8, 0x09, 0x50, 0x45, 0xF0, 0x01, 0x05, 0x43, 0xF8, + 0x09, 0x50, 0x41, 0xF2, 0x04, 0x05, 0x53, 0x59, 0x43, 0xF0, 0x01, 0x03, + 0x53, 0x51, 0x23, 0x68, 0x4E, 0xF8, 0x26, 0x70, 0x23, 0xF0, 0x01, 0x03, + 0x23, 0x60, 0xBC, 0xF1, 0x00, 0x0F, 0x05, 0xD0, 0x14, 0x4B, 0x08, 0x60, + 0x1B, 0x68, 0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, + 0x41, 0xF2, 0x18, 0x02, 0x9D, 0x58, 0x2D, 0x03, 0x07, 0xD5, 0x9D, 0x58, + 0x41, 0xF2, 0x30, 0x0A, 0x25, 0xF4, 0x00, 0x25, 0x9D, 0x50, 0x43, 0xF8, + 0x0A, 0x80, 0xD9, 0xF8, 0x08, 0x30, 0x23, 0xF4, 0x00, 0x23, 0xC9, 0xF8, + 0x08, 0x30, 0xC9, 0xF8, 0x20, 0x80, 0xD8, 0xE7, 0x0D, 0x2A, 0x7F, 0xF7, + 0x55, 0xAF, 0x06, 0x49, 0x06, 0x48, 0x4E, 0x22, 0x1E, 0xF0, 0xBA, 0xFE, + 0x4E, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x94, 0x7E, 0x15, 0x00, + 0x48, 0x35, 0x17, 0x00, 0x10, 0x00, 0x01, 0x00, 0x03, 0x4B, 0x04, 0x4A, + 0x01, 0x30, 0x43, 0xEA, 0x00, 0x43, 0x13, 0x63, 0x70, 0x47, 0x00, 0xBF, + 0x3F, 0x00, 0x00, 0x20, 0x00, 0x00, 0x07, 0x40, 0x70, 0xB4, 0x18, 0x4D, + 0x18, 0x4C, 0x2E, 0x6B, 0xB1, 0xF5, 0x00, 0x6F, 0x46, 0xF0, 0x80, 0x56, + 0x2E, 0x63, 0x60, 0x60, 0xEB, 0x63, 0x20, 0x60, 0x0B, 0x46, 0x28, 0xBF, + 0x4F, 0xF4, 0x00, 0x63, 0x80, 0x07, 0x11, 0xD0, 0xC1, 0xF3, 0x10, 0x05, + 0x10, 0x48, 0x43, 0xF0, 0x0C, 0x53, 0x21, 0xF0, 0x70, 0x41, 0xA3, 0x60, + 0xE5, 0x60, 0x21, 0x61, 0x60, 0x61, 0x0B, 0x49, 0x00, 0x23, 0x23, 0x62, + 0x08, 0x46, 0x70, 0xBC, 0xFF, 0xF7, 0x04, 0xBF, 0xC1, 0xF3, 0x10, 0x05, + 0x43, 0xF0, 0x23, 0x43, 0x21, 0xF0, 0x70, 0x41, 0x4F, 0xF0, 0x04, 0x10, + 0xA3, 0x60, 0xE5, 0x60, 0x21, 0x61, 0x60, 0x61, 0xEB, 0xE7, 0x00, 0xBF, + 0x00, 0x00, 0x07, 0x40, 0x74, 0x25, 0x17, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x01, 0x23, 0x06, 0x4A, 0x03, 0xFA, 0x00, 0xF0, 0x93, 0x69, 0x03, 0x42, + 0xFC, 0xD1, 0x13, 0x6B, 0x23, 0xF0, 0x80, 0x53, 0x13, 0x63, 0x10, 0x6C, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x07, 0x40, 0x08, 0x4A, 0xD3, 0x68, + 0x19, 0x04, 0x44, 0xBF, 0x4F, 0xF4, 0x00, 0x01, 0x91, 0x60, 0x5B, 0x05, + 0x00, 0xD4, 0x70, 0x47, 0x03, 0x4B, 0x4F, 0xF4, 0x80, 0x22, 0x9A, 0x60, + 0x4F, 0xF0, 0x80, 0x40, 0x1D, 0xF0, 0x4E, 0xB9, 0x00, 0x10, 0x50, 0x40, + 0x11, 0x4A, 0x13, 0x68, 0x13, 0xF0, 0x01, 0x01, 0x0A, 0xD1, 0x23, 0xF4, + 0x40, 0x73, 0x43, 0xF4, 0x90, 0x73, 0x43, 0xF0, 0x01, 0x03, 0x11, 0x20, + 0x11, 0x61, 0x51, 0x61, 0x50, 0x60, 0x13, 0x60, 0x5A, 0x04, 0x03, 0xD4, + 0x08, 0x4A, 0x43, 0xF4, 0x80, 0x43, 0x13, 0x60, 0x07, 0x4B, 0x08, 0x49, + 0x9A, 0x68, 0xD1, 0xF8, 0xD0, 0x10, 0xC2, 0xF8, 0xB4, 0x10, 0xA3, 0xF5, + 0x40, 0x63, 0x4F, 0xF0, 0x00, 0x52, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x10, 0x50, 0x40, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, + 0x06, 0x4B, 0x07, 0x49, 0x9A, 0x68, 0xD1, 0xF8, 0xD0, 0x10, 0xC2, 0xF8, + 0xB4, 0x10, 0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF0, 0x00, 0x52, 0x1A, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, + 0x3E, 0x4B, 0x1A, 0x68, 0x00, 0x2A, 0x6F, 0xD1, 0x3D, 0x49, 0xD1, 0xF8, + 0xA4, 0x10, 0x00, 0x29, 0xF0, 0xB4, 0x56, 0xDA, 0x3B, 0x48, 0x00, 0x68, + 0x00, 0x28, 0x4E, 0xD0, 0x3A, 0x4D, 0x3B, 0x48, 0x3B, 0x4C, 0x2A, 0x60, + 0x01, 0x25, 0x02, 0x60, 0x25, 0x60, 0xC2, 0x68, 0x39, 0x4D, 0x3A, 0x4C, + 0x42, 0xF4, 0x80, 0x72, 0xC2, 0x60, 0x03, 0x22, 0x2A, 0x60, 0x62, 0x68, + 0x92, 0x07, 0x21, 0xF0, 0x00, 0x41, 0x57, 0xD5, 0x35, 0x4A, 0x12, 0x68, + 0x10, 0x09, 0x81, 0x42, 0x4D, 0xD2, 0xB2, 0xFB, 0xF1, 0xF1, 0xC1, 0xF3, + 0x42, 0x04, 0x01, 0xF0, 0x0F, 0x02, 0x12, 0x1B, 0xC1, 0xF3, 0x07, 0x1C, + 0x04, 0xEB, 0x02, 0x14, 0xC1, 0xF3, 0x07, 0x31, 0x2A, 0x4A, 0x28, 0x4D, + 0x10, 0x68, 0x2C, 0x4E, 0x2C, 0x4F, 0x40, 0xF0, 0x80, 0x00, 0x10, 0x60, + 0xC7, 0xF8, 0x00, 0xC0, 0x29, 0x60, 0x34, 0x60, 0x11, 0x68, 0x21, 0x4C, + 0x22, 0x48, 0x28, 0x4E, 0x21, 0xF0, 0x80, 0x01, 0x11, 0x60, 0x07, 0x22, + 0x22, 0x60, 0x02, 0x68, 0x25, 0x4C, 0x26, 0x49, 0xD4, 0xF8, 0xBC, 0x40, + 0x22, 0xF4, 0xFF, 0x72, 0x22, 0xF0, 0x01, 0x02, 0x42, 0xF0, 0x01, 0x02, + 0x02, 0x60, 0x01, 0x22, 0x2A, 0x60, 0xB0, 0x68, 0x4F, 0xF4, 0x80, 0x32, + 0xC0, 0xF8, 0x80, 0x40, 0x0A, 0x60, 0x01, 0x22, 0xF0, 0xBC, 0x1A, 0x60, + 0x70, 0x47, 0x10, 0x4A, 0x12, 0x68, 0x00, 0x2A, 0xF7, 0xD0, 0x10, 0x48, + 0x17, 0x4C, 0x16, 0x49, 0xD4, 0xF8, 0xBC, 0x40, 0x16, 0x4A, 0x01, 0x25, + 0x05, 0x60, 0x88, 0x68, 0x4F, 0xF4, 0x80, 0x31, 0xC0, 0xF8, 0x80, 0x40, + 0x11, 0x60, 0xE8, 0xE7, 0x70, 0x47, 0x00, 0x24, 0x21, 0x46, 0x4F, 0xF0, + 0x01, 0x0C, 0xB9, 0xE7, 0x0F, 0x48, 0x10, 0x4A, 0xA7, 0xE7, 0x00, 0xBF, + 0xA4, 0x25, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x68, 0x28, 0x17, 0x00, + 0x08, 0x10, 0x04, 0x40, 0x04, 0x10, 0x04, 0x40, 0x24, 0x10, 0x04, 0x40, + 0x0C, 0x10, 0x04, 0x40, 0x00, 0x00, 0x10, 0x40, 0x14, 0x13, 0x17, 0x00, + 0x28, 0x10, 0x04, 0x40, 0x00, 0x10, 0x04, 0x40, 0x00, 0xED, 0x00, 0xE0, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0xE1, 0x00, 0xE0, 0x50, 0x97, 0x31, 0x00, + 0x00, 0x75, 0x19, 0x03, 0x03, 0x4A, 0x13, 0x68, 0x1B, 0x03, 0xFC, 0xD4, + 0x02, 0x4B, 0x18, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x20, 0x10, 0x04, 0x40, + 0x00, 0x10, 0x04, 0x40, 0x03, 0x4A, 0x13, 0x68, 0xDB, 0x07, 0xFC, 0xD5, + 0x02, 0x4B, 0x18, 0x68, 0xC0, 0xB2, 0x70, 0x47, 0x14, 0x10, 0x04, 0x40, + 0x00, 0x10, 0x04, 0x40, 0xF0, 0xB5, 0x03, 0x46, 0xC3, 0xB0, 0xEF, 0xF3, + 0x05, 0x85, 0x73, 0x4C, 0x22, 0x68, 0x12, 0x78, 0x02, 0x2A, 0x04, 0xD1, + 0x71, 0x4A, 0xB2, 0xF8, 0xAA, 0x20, 0x52, 0x04, 0x56, 0xD4, 0x00, 0x91, + 0x00, 0x22, 0x4F, 0xF4, 0x80, 0x71, 0x02, 0xA8, 0x1D, 0xF0, 0x46, 0xFE, + 0x06, 0x46, 0x00, 0x2E, 0x31, 0xDD, 0x6B, 0x4B, 0x1B, 0x68, 0x1B, 0xB9, + 0x6A, 0x4B, 0xD3, 0xF8, 0x28, 0x33, 0x98, 0x47, 0x1D, 0xB9, 0x69, 0x4A, + 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x68, 0x4B, 0x1B, 0x68, 0x33, 0xB9, + 0x67, 0x4A, 0x13, 0x68, 0x1F, 0x03, 0xFC, 0xD4, 0x66, 0x4B, 0x5F, 0x22, + 0x1A, 0x60, 0x5F, 0x4B, 0xB3, 0xF8, 0xAA, 0x30, 0x13, 0xF4, 0x80, 0x43, + 0x18, 0xD1, 0x02, 0xA9, 0x60, 0x4A, 0x61, 0x48, 0x77, 0x18, 0x4F, 0xF0, + 0x0D, 0x0C, 0x11, 0xF8, 0x01, 0x4B, 0x0A, 0x2C, 0x1C, 0xD0, 0x13, 0x68, + 0x1B, 0x03, 0xFC, 0xD4, 0x04, 0x60, 0xB9, 0x42, 0x11, 0xF8, 0x01, 0x3C, + 0xF3, 0xD1, 0x15, 0xB9, 0x55, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x30, 0x46, + 0x43, 0xB0, 0xF0, 0xBD, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x1C, 0xD0, + 0x02, 0x2B, 0xF2, 0xD1, 0x53, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, + 0xED, 0xD0, 0x00, 0x2D, 0xEF, 0xD1, 0x26, 0xE0, 0x0D, 0x2B, 0xE0, 0xD0, + 0x13, 0x68, 0x1C, 0x03, 0xFC, 0xD4, 0xC0, 0xF8, 0x00, 0xC0, 0x11, 0xF8, + 0x01, 0x4C, 0xD8, 0xE7, 0x00, 0x91, 0x00, 0x22, 0x4F, 0xF4, 0x80, 0x71, + 0x03, 0xA8, 0x1D, 0xF0, 0xEF, 0xFD, 0x06, 0x46, 0xA7, 0xE7, 0x46, 0x4F, + 0x3B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0xD2, 0xD0, 0x00, 0x2D, 0xD4, 0xD1, + 0x43, 0x48, 0x1D, 0xF0, 0x07, 0xF9, 0x04, 0x28, 0x62, 0xD8, 0x23, 0x68, + 0x1B, 0x78, 0x02, 0x2B, 0xC8, 0xD1, 0x3B, 0x68, 0x1B, 0x78, 0x03, 0x2B, + 0xC4, 0xD0, 0x3E, 0x48, 0x1D, 0xF0, 0xFA, 0xF8, 0x04, 0x28, 0xBF, 0xD9, + 0x3B, 0x48, 0x3C, 0x4C, 0x1D, 0xF0, 0xB4, 0xF8, 0x42, 0xF2, 0x34, 0x03, + 0x13, 0x25, 0xE2, 0x5A, 0x8D, 0xF8, 0x08, 0x60, 0x00, 0x23, 0xB2, 0xF5, + 0xC3, 0x7F, 0x02, 0xAF, 0x01, 0x46, 0x7D, 0x80, 0x7B, 0x70, 0x4D, 0xD8, + 0x55, 0x1C, 0xAD, 0xB2, 0xD3, 0x00, 0x33, 0x48, 0x8A, 0x81, 0xD0, 0xF8, + 0x00, 0xC0, 0x0C, 0xEB, 0x03, 0x00, 0x32, 0x1D, 0x47, 0x60, 0x2C, 0xF8, + 0x03, 0x20, 0xC3, 0x78, 0x03, 0xF0, 0x31, 0x03, 0x43, 0xF0, 0x04, 0x03, + 0xC3, 0x70, 0x94, 0xF8, 0x02, 0x3C, 0x42, 0xF2, 0x34, 0x0C, 0x01, 0x33, + 0x84, 0xF8, 0x02, 0x3C, 0x01, 0x27, 0x00, 0x23, 0x24, 0xF8, 0x0C, 0x50, + 0xC1, 0xE9, 0x01, 0x02, 0x8F, 0x73, 0x0B, 0x60, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x22, 0x4B, 0x1F, 0x60, 0x22, 0x4C, + 0x22, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1D, 0xF0, 0x32, 0xF8, + 0x13, 0x4B, 0xD3, 0xF8, 0x44, 0x34, 0x98, 0x47, 0x23, 0x68, 0x00, 0x2B, + 0x3F, 0xF4, 0x76, 0xAF, 0x19, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x00, 0x2B, 0x7F, 0xF4, 0x6F, 0xAF, 0x00, 0x2A, 0x3F, 0xF4, 0x6C, 0xAF, + 0x62, 0xB6, 0x69, 0xE7, 0x7C, 0x2E, 0x32, 0x46, 0xA8, 0xBF, 0x7C, 0x22, + 0x92, 0xB2, 0x02, 0xA9, 0x13, 0x20, 0x02, 0xF0, 0xF9, 0xFA, 0x5F, 0xE7, + 0x1A, 0x46, 0x01, 0x25, 0xB1, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xA4, 0x25, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x40, 0x40, 0x04, 0x40, 0x68, 0x28, 0x17, 0x00, 0x20, 0x10, 0x04, 0x40, + 0x00, 0x10, 0x04, 0x40, 0x74, 0x36, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, + 0xA0, 0x56, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, + 0x0F, 0xB4, 0x00, 0xB5, 0x83, 0xB0, 0x04, 0xA9, 0x05, 0x4B, 0x51, 0xF8, + 0x04, 0x0B, 0xD3, 0xF8, 0x30, 0x34, 0x01, 0x91, 0x98, 0x47, 0x03, 0xB0, + 0x5D, 0xF8, 0x04, 0xEB, 0x04, 0xB0, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, + 0x01, 0x22, 0x90, 0x42, 0x10, 0xB4, 0x02, 0xFA, 0x00, 0xF4, 0x11, 0xDD, + 0xA0, 0xF1, 0x08, 0x03, 0x93, 0x42, 0x0D, 0xD9, 0x0F, 0x28, 0x25, 0xDD, + 0x1F, 0x28, 0x12, 0xDC, 0x15, 0x4A, 0x52, 0xF8, 0x20, 0x30, 0x23, 0xF0, + 0x0F, 0x03, 0x43, 0xF0, 0x02, 0x03, 0x42, 0xF8, 0x20, 0x30, 0x08, 0xE0, + 0x10, 0x4A, 0x52, 0xF8, 0x20, 0x30, 0x23, 0xF0, 0x0F, 0x03, 0x43, 0xF0, + 0x01, 0x03, 0x42, 0xF8, 0x20, 0x30, 0x0D, 0x4B, 0x5A, 0x68, 0x22, 0x43, + 0x5A, 0x60, 0x9A, 0x68, 0x29, 0xB9, 0x22, 0xEA, 0x04, 0x02, 0x9A, 0x60, + 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x22, 0x43, 0x9A, 0x60, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x03, 0x4A, 0x52, 0xF8, 0x20, 0x30, 0x23, 0xF0, + 0x0F, 0x03, 0x42, 0xF8, 0x20, 0x30, 0xE6, 0xE7, 0x00, 0x30, 0x50, 0x40, + 0x00, 0x40, 0x50, 0x40, 0x04, 0x49, 0x01, 0x22, 0x0B, 0x68, 0x02, 0xFA, + 0x00, 0xF0, 0x23, 0xEA, 0x00, 0x03, 0x0B, 0x60, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x40, 0x50, 0x40, 0x10, 0xB5, 0x01, 0x29, 0x82, 0xB0, 0x04, 0x46, + 0x10, 0xD0, 0x20, 0xF0, 0x03, 0x03, 0x0F, 0x22, 0x9A, 0x40, 0x11, 0x46, + 0x0D, 0x48, 0xFC, 0xF7, 0x51, 0xF8, 0x01, 0x22, 0xA2, 0x40, 0x0C, 0x48, + 0x11, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0xFC, 0xF7, 0x48, 0xB8, + 0x01, 0xFA, 0x00, 0xF2, 0x11, 0x46, 0x07, 0x48, 0x01, 0x92, 0xFC, 0xF7, + 0x41, 0xF8, 0x01, 0x9A, 0x05, 0x48, 0x11, 0x46, 0x02, 0xB0, 0xBD, 0xE8, + 0x10, 0x40, 0xFC, 0xF7, 0x39, 0xB8, 0x00, 0xBF, 0x2C, 0x10, 0x01, 0x50, + 0x04, 0x10, 0x01, 0x50, 0x08, 0x10, 0x01, 0x50, 0x01, 0x23, 0x03, 0xFA, + 0x00, 0xF2, 0x11, 0x46, 0x01, 0x48, 0xFC, 0xF7, 0x2B, 0xB8, 0x00, 0xBF, + 0x00, 0x10, 0x01, 0x50, 0x01, 0x22, 0x82, 0x40, 0x00, 0x21, 0x01, 0x48, + 0xFC, 0xF7, 0x22, 0xB8, 0x00, 0x10, 0x01, 0x50, 0x10, 0xB5, 0x04, 0x46, + 0x03, 0x48, 0xFB, 0xF7, 0xCB, 0xFF, 0xE0, 0x40, 0x00, 0xF0, 0x01, 0x00, + 0x10, 0xBD, 0x00, 0xBF, 0x00, 0x10, 0x01, 0x50, 0x70, 0x47, 0x00, 0xBF, + 0x70, 0x47, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, 0x0E, 0x48, 0x0F, 0x4A, + 0x03, 0x68, 0x0F, 0x49, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xC2, 0x03, + 0x03, 0x60, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0xC2, 0x03, + 0x13, 0x60, 0x03, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x3F, 0x23, + 0x03, 0x60, 0x13, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x43, 0xF4, 0x3F, 0x23, + 0xC2, 0x20, 0x13, 0x60, 0xC8, 0x71, 0x70, 0x47, 0xAC, 0xB3, 0x33, 0x40, + 0xD4, 0xB3, 0x33, 0x40, 0x80, 0x35, 0x17, 0x00, 0x24, 0x4B, 0x25, 0x48, + 0x1B, 0x68, 0x2D, 0xE9, 0xF0, 0x41, 0x24, 0x4D, 0x24, 0x4F, 0x6A, 0x79, + 0x95, 0xF9, 0x07, 0x10, 0x3C, 0x68, 0x23, 0x4E, 0x03, 0xF0, 0x0F, 0x03, + 0x1A, 0x44, 0x52, 0xB2, 0x89, 0x1A, 0x6F, 0xF0, 0x3D, 0x03, 0x99, 0x42, + 0xB8, 0xBF, 0x19, 0x46, 0x5F, 0xFA, 0x81, 0xFC, 0x24, 0xF0, 0xFF, 0x04, + 0x44, 0xEA, 0x0C, 0x04, 0x3C, 0x60, 0x33, 0x68, 0x23, 0xF0, 0xFF, 0x03, + 0x43, 0xEA, 0x0C, 0x03, 0x33, 0x60, 0x3C, 0x68, 0xCB, 0x1E, 0x5F, 0xFA, + 0x83, 0xFC, 0x24, 0xF4, 0x7F, 0x24, 0x44, 0xEA, 0x0C, 0x34, 0x3C, 0x60, + 0x33, 0x68, 0x23, 0xF4, 0x7F, 0x23, 0x4C, 0xB2, 0x43, 0xEA, 0x0C, 0x33, + 0x33, 0x60, 0x21, 0x46, 0xEC, 0x71, 0x1E, 0xF0, 0xC3, 0xF8, 0x3D, 0x34, + 0x0E, 0xDB, 0x0D, 0x4B, 0x29, 0x89, 0x1A, 0x69, 0x0C, 0x4B, 0x47, 0xF2, + 0x30, 0x54, 0x05, 0xF1, 0x0C, 0x00, 0x04, 0xFB, 0x01, 0x21, 0xD3, 0xF8, + 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xBD, 0xE8, 0xF0, 0x81, + 0x1C, 0x01, 0x32, 0x40, 0xB8, 0x7E, 0x15, 0x00, 0x80, 0x35, 0x17, 0x00, + 0xAC, 0xB3, 0x33, 0x40, 0xD4, 0xB3, 0x33, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x12, 0x4A, 0x12, 0x68, 0xD2, 0xE9, 0x06, 0x01, + 0x38, 0xB5, 0x11, 0x4B, 0x15, 0x6A, 0x18, 0x60, 0x59, 0x60, 0x50, 0x6A, + 0x0F, 0x4C, 0xD2, 0xE9, 0x0A, 0x12, 0xC3, 0xE9, 0x02, 0x50, 0xC3, 0xE9, + 0x04, 0x12, 0xD4, 0xF8, 0x2C, 0x33, 0x98, 0x47, 0xD4, 0xF8, 0xC0, 0x30, + 0x98, 0x47, 0xFB, 0xF7, 0xAF, 0xFA, 0x09, 0x4B, 0x1B, 0x68, 0x1B, 0x78, + 0x03, 0x2B, 0x02, 0xD1, 0xD4, 0xF8, 0x20, 0x31, 0x98, 0x47, 0xBD, 0xE8, + 0x38, 0x40, 0xFF, 0xF7, 0x79, 0xBB, 0x00, 0xBF, 0xC8, 0x35, 0x17, 0x00, + 0xB0, 0x35, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, + 0x30, 0xB4, 0x08, 0x4B, 0x08, 0x48, 0x18, 0x60, 0xC2, 0x25, 0x40, 0xF6, + 0xEC, 0x20, 0x4F, 0xF4, 0x7A, 0x74, 0x06, 0x49, 0x06, 0x4A, 0xDD, 0x71, + 0x98, 0x80, 0x1C, 0x81, 0x19, 0x61, 0x30, 0xBC, 0x1A, 0x62, 0x70, 0x47, + 0x80, 0x35, 0x17, 0x00, 0x01, 0x00, 0x00, 0x14, 0x95, 0x64, 0x12, 0x00, + 0x4D, 0x64, 0x12, 0x00, 0x90, 0xF8, 0x62, 0x30, 0xCB, 0xB9, 0x0D, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x04, 0x46, + 0x03, 0xDB, 0x00, 0x23, 0x84, 0xF8, 0xAC, 0x30, 0x10, 0xBD, 0x90, 0xF8, + 0xAC, 0x30, 0x01, 0x2B, 0xF7, 0xD0, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF2, + 0xE7, 0x12, 0x1E, 0xF0, 0xBB, 0xFA, 0x00, 0x23, 0x84, 0xF8, 0xAC, 0x30, + 0x10, 0xBD, 0x70, 0x47, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xCC, 0x7E, 0x15, 0x00, 0x13, 0x4A, 0x90, 0xF8, 0x22, 0x30, 0x4F, 0xF4, + 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, + 0x1B, 0xD1, 0x0F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x10, 0xB5, 0x04, 0x46, 0x08, 0xDB, 0x94, 0xF8, 0x23, 0x10, 0x0B, 0x48, + 0x1E, 0xF0, 0x1E, 0xF8, 0x00, 0x23, 0x84, 0xF8, 0x70, 0x32, 0x10, 0xBD, + 0x90, 0xF8, 0x70, 0x32, 0x01, 0x2B, 0xF2, 0xD0, 0x06, 0x49, 0x07, 0x48, + 0x40, 0xF2, 0xF3, 0x12, 0x1E, 0xF0, 0x8A, 0xFA, 0xEB, 0xE7, 0x70, 0x47, + 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x10, 0x7F, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xF0, 0x7E, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x90, 0xF8, 0x62, 0x40, 0x1C, 0xB9, 0x90, 0xF8, 0x64, 0x30, 0x06, 0x46, + 0x0B, 0xB9, 0xBD, 0xE8, 0xF0, 0x81, 0xD0, 0xE9, 0x24, 0x23, 0xD0, 0xF8, + 0x98, 0x10, 0x42, 0x48, 0xDF, 0xF8, 0x30, 0x81, 0x1D, 0xF0, 0xF0, 0xFF, + 0x45, 0x46, 0x06, 0xF5, 0xB2, 0x77, 0x28, 0x46, 0x06, 0x22, 0x39, 0x46, + 0x30, 0xF0, 0xD8, 0xFC, 0x14, 0x35, 0x40, 0xB1, 0x01, 0x34, 0x05, 0x2C, + 0xF5, 0xD1, 0x3A, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x5B, 0xDB, 0x04, 0xEB, 0x84, 0x03, 0x08, 0xEB, 0x83, 0x03, 0xA2, 0x00, + 0xD9, 0x79, 0x00, 0x29, 0xD9, 0xD1, 0x1B, 0x7A, 0x03, 0xBB, 0xD6, 0xF8, + 0x90, 0x30, 0x31, 0x2B, 0x29, 0xD9, 0xD6, 0xF8, 0x94, 0x10, 0xB1, 0xEB, + 0x53, 0x0F, 0x3B, 0xD8, 0x14, 0x44, 0x08, 0xEB, 0x84, 0x08, 0x98, 0xF8, + 0x06, 0x30, 0x00, 0x2B, 0x48, 0xD1, 0x00, 0x23, 0xC6, 0xE9, 0x24, 0x33, + 0x29, 0x4A, 0xC6, 0xF8, 0x98, 0x30, 0x12, 0x69, 0x28, 0x49, 0x29, 0x4B, + 0x06, 0xF1, 0x9C, 0x00, 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, + 0x11, 0x44, 0x18, 0x47, 0xD6, 0xF8, 0x98, 0x30, 0x53, 0xB3, 0xD6, 0xF8, + 0x90, 0x30, 0x00, 0x2B, 0x37, 0xD0, 0x11, 0x19, 0x08, 0xEB, 0x81, 0x01, + 0x00, 0x20, 0x08, 0x72, 0xD3, 0xE7, 0x0B, 0x2B, 0x12, 0xD8, 0xD6, 0xF8, + 0x98, 0x20, 0x14, 0x2A, 0xDB, 0xD9, 0x00, 0x2B, 0xD9, 0xD1, 0x1B, 0x48, + 0x1D, 0xF0, 0x9A, 0xFF, 0x18, 0x4B, 0x01, 0x22, 0x88, 0xF8, 0x06, 0x20, + 0x30, 0x46, 0xD3, 0xF8, 0xBC, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, + 0xD6, 0xF8, 0x94, 0x10, 0x14, 0x4A, 0xA2, 0xFB, 0x03, 0x02, 0x22, 0xF0, + 0x03, 0x00, 0x00, 0xEB, 0x92, 0x02, 0x8A, 0x42, 0xE1, 0xD8, 0xE6, 0xE7, + 0xD6, 0xF8, 0x90, 0x30, 0xD5, 0xE7, 0x0F, 0x49, 0x0F, 0x48, 0x40, 0xF2, + 0x13, 0x22, 0x1E, 0xF0, 0xF5, 0xF9, 0x9C, 0xE7, 0x00, 0x23, 0x0D, 0x48, + 0x88, 0xF8, 0x06, 0x30, 0x1D, 0xF0, 0x74, 0xFF, 0xAF, 0xE7, 0x0B, 0x48, + 0xD4, 0xE7, 0x00, 0xBF, 0x1C, 0x7F, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x80, 0xC3, 0xC9, 0x01, 0x88, 0x1A, 0x17, 0x00, + 0x44, 0x7F, 0x15, 0x00, 0xAB, 0xAA, 0xAA, 0xAA, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x3C, 0x7F, 0x15, 0x00, 0x30, 0x7F, 0x15, 0x00, + 0xCC, 0x35, 0x17, 0x00, 0x06, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, + 0x05, 0xD0, 0x02, 0x2B, 0x01, 0xD0, 0x04, 0xF0, 0xEF, 0xBC, 0x03, 0xF0, + 0xD5, 0xBF, 0x00, 0xF0, 0xD7, 0xBF, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0x08, 0xB5, 0x08, 0x46, 0x00, 0xF0, 0x6C, 0xFE, 0x01, 0x20, 0x08, 0xBD, + 0x70, 0xB5, 0x30, 0x4C, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x1E, 0xD0, + 0x02, 0x2B, 0x14, 0xD1, 0x2D, 0x4B, 0x2E, 0x49, 0x2E, 0x4A, 0xC3, 0xE9, + 0x06, 0x12, 0x2E, 0x4D, 0xD5, 0xF8, 0x14, 0x31, 0x98, 0x47, 0xD5, 0xF8, + 0x18, 0x31, 0x98, 0x47, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x36, 0xD0, + 0x02, 0x2B, 0x1D, 0xD0, 0x03, 0x2B, 0x0E, 0xD0, 0x70, 0xBD, 0x03, 0x2B, + 0xED, 0xD1, 0x22, 0x4B, 0x25, 0x49, 0x26, 0x4A, 0xC3, 0xE9, 0x08, 0x12, + 0xE7, 0xE7, 0x1F, 0x4B, 0x24, 0x49, 0x25, 0x4A, 0xC3, 0xE9, 0x02, 0x12, + 0xE1, 0xE7, 0x24, 0x4B, 0x1B, 0x4C, 0x24, 0x4A, 0x1A, 0x60, 0x04, 0xF0, + 0x87, 0xFC, 0x23, 0x6A, 0x22, 0x48, 0x98, 0x47, 0x63, 0x6A, 0xBD, 0xE8, + 0x70, 0x40, 0x18, 0x47, 0x1D, 0x4B, 0x20, 0x49, 0x20, 0x4A, 0x19, 0x60, + 0x13, 0x4D, 0x42, 0xF2, 0x34, 0x03, 0x00, 0x21, 0xD1, 0x52, 0x04, 0xF0, + 0x1B, 0xF8, 0x03, 0xF0, 0x35, 0xFF, 0xAB, 0x69, 0x18, 0x48, 0x98, 0x47, + 0xEB, 0x69, 0x98, 0x47, 0x04, 0xF0, 0x1A, 0xFC, 0x23, 0x68, 0x1B, 0x78, + 0xCA, 0xE7, 0x12, 0x4B, 0x09, 0x4D, 0x16, 0x4A, 0x1A, 0x60, 0x00, 0xF0, + 0xCB, 0xFE, 0x00, 0xF0, 0xE9, 0xFE, 0x00, 0xF0, 0x13, 0xFF, 0xAB, 0x68, + 0x0E, 0x48, 0x98, 0x47, 0xEB, 0x68, 0x98, 0x47, 0x23, 0x68, 0x1B, 0x78, + 0xB6, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x28, 0x58, 0x17, 0x00, + 0xA1, 0xA9, 0x12, 0x00, 0x85, 0xA9, 0x12, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x3D, 0xB2, 0x12, 0x00, 0x29, 0xB2, 0x12, 0x00, 0x0D, 0x7A, 0x12, 0x00, + 0xF9, 0x79, 0x12, 0x00, 0x1C, 0x58, 0x17, 0x00, 0xBC, 0x60, 0x17, 0x00, + 0xB8, 0x7F, 0x15, 0x00, 0xA4, 0x60, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0x28, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x0B, 0x4C, 0x50, 0x22, 0x51, 0x23, + 0x04, 0xF2, 0x14, 0x50, 0xA4, 0xF8, 0x10, 0x25, 0x84, 0xF8, 0x12, 0x35, + 0x1C, 0xF0, 0xD8, 0xFC, 0x27, 0x22, 0x28, 0x23, 0x04, 0xF5, 0xF4, 0x60, + 0xA4, 0xF8, 0x9C, 0x27, 0x84, 0xF8, 0x9E, 0x37, 0xBD, 0xE8, 0x10, 0x40, + 0x1C, 0xF0, 0xCC, 0xBC, 0x58, 0x58, 0x17, 0x00, 0x70, 0xB5, 0x41, 0xF6, + 0x10, 0x02, 0x25, 0x4D, 0x25, 0x4C, 0x4C, 0xF2, 0xBF, 0x03, 0x41, 0xF6, + 0x12, 0x00, 0x00, 0x26, 0xAB, 0x52, 0x41, 0xF6, 0x14, 0x01, 0x05, 0xF5, + 0xC1, 0x52, 0xA5, 0xF8, 0x00, 0x3C, 0x2E, 0x54, 0x05, 0xF6, 0x08, 0x40, + 0x6E, 0x50, 0x16, 0x70, 0x85, 0xF8, 0x02, 0x6C, 0xC5, 0xF8, 0x04, 0x6C, + 0x1C, 0xF0, 0xAE, 0xFC, 0xA4, 0xF1, 0x0C, 0x00, 0x1C, 0xF0, 0xAA, 0xFC, + 0x04, 0xF5, 0x00, 0x60, 0x1C, 0xF0, 0xA6, 0xFC, 0x04, 0xF6, 0x08, 0x00, + 0x1C, 0xF0, 0xA2, 0xFC, 0x42, 0xF2, 0x34, 0x03, 0x31, 0x46, 0x4F, 0xF4, + 0x00, 0x62, 0x20, 0x46, 0xEE, 0x52, 0x85, 0xF8, 0x02, 0x6C, 0xC5, 0xF8, + 0x04, 0x6C, 0xF9, 0xF7, 0x05, 0xFC, 0x04, 0xF5, 0x00, 0x65, 0x2E, 0x46, + 0x21, 0x46, 0x30, 0x46, 0x10, 0x34, 0x1C, 0xF0, 0x91, 0xFC, 0xAC, 0x42, + 0xF8, 0xD1, 0x09, 0x4A, 0x00, 0x21, 0x02, 0xF5, 0xB4, 0x70, 0xA2, 0xF1, + 0x24, 0x03, 0x43, 0xF8, 0x04, 0x1B, 0x93, 0x42, 0xFB, 0xD1, 0x03, 0xF1, + 0x24, 0x02, 0x82, 0x42, 0xF5, 0xD1, 0x70, 0xBD, 0x7C, 0x36, 0x17, 0x00, + 0xA0, 0x4E, 0x17, 0x00, 0xD8, 0x56, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x40, 0x20, 0x85, 0xB0, 0x1C, 0xF0, 0xF6, 0xFB, 0xA7, 0x4B, 0x9B, 0x68, + 0x03, 0x93, 0x00, 0x2B, 0x00, 0xF0, 0x80, 0x81, 0xDF, 0xF8, 0xB0, 0x92, + 0xDF, 0xF8, 0xB0, 0xB2, 0x09, 0xE0, 0x94, 0xF8, 0x64, 0x30, 0x63, 0xB1, + 0x03, 0x9B, 0x1B, 0x68, 0x03, 0x93, 0x03, 0x9B, 0x00, 0x2B, 0x00, 0xF0, + 0x71, 0x81, 0x03, 0x9C, 0x20, 0x46, 0x07, 0xF0, 0x33, 0xFF, 0x00, 0x28, + 0xEF, 0xD0, 0x03, 0x9B, 0x9A, 0x4C, 0x03, 0xF5, 0xA3, 0x65, 0x01, 0x26, + 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0xC9, 0xF8, + 0x00, 0x60, 0x23, 0x68, 0x28, 0x46, 0x01, 0x33, 0x23, 0x60, 0x1C, 0xF0, + 0x8B, 0xFC, 0x23, 0x68, 0x5A, 0x1E, 0x2B, 0xB1, 0xD9, 0xF8, 0x00, 0x30, + 0x22, 0x60, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x05, 0x21, 0x38, 0xB1, + 0xDB, 0xF8, 0x24, 0x34, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, + 0xE7, 0xD4, 0xE3, 0xE7, 0x89, 0x4B, 0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, + 0xC8, 0xD1, 0xDD, 0xF8, 0x0C, 0xA0, 0x87, 0x4E, 0x04, 0x23, 0x01, 0x93, + 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, 0x00, 0xF0, 0x8C, 0x80, 0x9D, 0xF8, + 0x04, 0x70, 0x0A, 0xF5, 0xA2, 0x68, 0x40, 0x46, 0x1C, 0xF0, 0x62, 0xFC, + 0x80, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, + 0x43, 0x7F, 0x7F, 0xDB, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x62, + 0x92, 0xF8, 0x25, 0x10, 0x19, 0xB9, 0xE9, 0x8B, 0x08, 0x07, 0x40, 0xF1, + 0x07, 0x81, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x62, 0x92, 0xF8, + 0x24, 0x20, 0x01, 0x2A, 0x00, 0xF0, 0x9E, 0x80, 0xDB, 0xF8, 0x24, 0x34, + 0x28, 0x46, 0x39, 0x46, 0x98, 0x47, 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, + 0xD7, 0xD1, 0x0A, 0xF5, 0x9D, 0x65, 0xA8, 0x46, 0xEF, 0xF3, 0x10, 0x83, + 0xDD, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC9, 0xF8, 0x00, 0x30, + 0x23, 0x68, 0xDA, 0xF8, 0xE8, 0x14, 0x5A, 0x1C, 0x22, 0x60, 0x2A, 0xB1, + 0xD9, 0xF8, 0x00, 0x20, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x00, 0x29, 0x34, 0xD0, 0x4A, 0x7F, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x02, 0x63, 0x93, 0xF8, 0x25, 0x00, 0x00, 0x28, 0x00, 0xF0, 0x87, 0x80, + 0x93, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x46, 0xD0, 0xC9, 0x7E, 0xDB, 0xF8, + 0x34, 0x31, 0x10, 0x46, 0x98, 0x47, 0x00, 0x28, 0x00, 0xF0, 0xD7, 0x80, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, + 0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x40, 0x46, 0x01, 0x33, 0x23, 0x60, + 0x1C, 0xF0, 0x00, 0xFC, 0x23, 0x68, 0x05, 0x46, 0x33, 0xB1, 0x01, 0x3B, + 0xD9, 0xF8, 0x00, 0x20, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0xDB, 0xF8, 0x24, 0x34, 0x39, 0x46, 0x28, 0x46, 0x98, 0x47, 0x00, 0x2D, + 0xB4, 0xD1, 0x01, 0x9B, 0x01, 0x3B, 0x1D, 0x46, 0x38, 0x46, 0x01, 0x93, + 0x0B, 0xF0, 0x26, 0xFA, 0x2B, 0x46, 0x01, 0x33, 0xAA, 0xF1, 0x08, 0x0A, + 0x3F, 0xF4, 0x38, 0xAF, 0xDA, 0xF8, 0x10, 0x35, 0x00, 0x2B, 0x7F, 0xF4, + 0x74, 0xAF, 0x9D, 0xF8, 0x04, 0x70, 0x9C, 0xE7, 0x09, 0x2B, 0x7F, 0xF6, + 0x7D, 0xAF, 0x3C, 0x49, 0x3C, 0x48, 0x4F, 0xF4, 0x96, 0x72, 0x1D, 0xF0, + 0xE1, 0xFF, 0x6B, 0x7F, 0x74, 0xE7, 0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, + 0x02, 0xD4, 0x72, 0xB6, 0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x02, 0x92, + 0x01, 0x33, 0x40, 0x46, 0x23, 0x60, 0x1C, 0xF0, 0xC1, 0xFB, 0x23, 0x68, + 0x02, 0x9A, 0x05, 0x46, 0x33, 0xB1, 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x10, + 0x23, 0x60, 0x0B, 0xB9, 0x01, 0xB1, 0x62, 0xB6, 0x01, 0x9B, 0x4F, 0x20, + 0x00, 0xFB, 0x02, 0x30, 0x41, 0x30, 0x06, 0xEB, 0xC0, 0x00, 0x29, 0x46, + 0x1C, 0xF0, 0x68, 0xFB, 0x00, 0x2D, 0x7F, 0xF4, 0x6F, 0xAF, 0xB8, 0xE7, + 0x23, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x4D, 0xDB, + 0xEA, 0x8B, 0xD2, 0x07, 0x7F, 0xF5, 0x5D, 0xAF, 0x01, 0x9A, 0x4F, 0x20, + 0x46, 0x32, 0x10, 0xFB, 0x03, 0x20, 0x29, 0x46, 0x06, 0xEB, 0xC0, 0x00, + 0x1C, 0xF0, 0x50, 0xFB, 0x51, 0xE7, 0x93, 0xF8, 0x23, 0x10, 0x1B, 0x48, + 0x1D, 0xF0, 0x24, 0xFD, 0xEF, 0xF3, 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x01, 0x23, 0xC9, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x40, 0x46, + 0x01, 0x33, 0x23, 0x60, 0x1C, 0xF0, 0x80, 0xFB, 0x4F, 0xF0, 0x00, 0x42, + 0x39, 0x46, 0x05, 0x46, 0x28, 0xF0, 0x2A, 0xFE, 0x23, 0x68, 0x00, 0x2B, + 0x85, 0xD0, 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x20, 0x23, 0x60, 0x00, 0x2B, + 0x7F, 0xF4, 0x7F, 0xAF, 0x00, 0x2A, 0x3F, 0xF4, 0x7C, 0xAF, 0x62, 0xB6, + 0x00, 0x2D, 0x7F, 0xF4, 0x2F, 0xAF, 0x78, 0xE7, 0x00, 0x88, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x50, 0x7F, 0x15, 0x00, + 0x7C, 0x7F, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xEA, 0x8B, 0xD1, 0x07, 0xB2, 0xD4, 0x11, 0x49, 0x11, 0x48, 0x02, 0x93, + 0x40, 0xF2, 0x35, 0x12, 0x1D, 0xF0, 0x5A, 0xFF, 0x02, 0x9B, 0xA5, 0xE7, + 0x92, 0xF8, 0x23, 0x10, 0x0D, 0x48, 0x1D, 0xF0, 0xD9, 0xFC, 0x28, 0x46, + 0x4F, 0xF0, 0x00, 0x42, 0x39, 0x46, 0x28, 0xF0, 0xED, 0xFD, 0xDA, 0xF8, + 0x10, 0x35, 0x00, 0x2B, 0x7F, 0xF4, 0xD3, 0xAE, 0xF9, 0xE6, 0x07, 0x4A, + 0x01, 0x23, 0x82, 0xF8, 0x00, 0x32, 0x42, 0xE7, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x00, 0xBF, 0x70, 0x79, 0x15, 0x00, 0x8C, 0x7F, 0x15, 0x00, + 0x7C, 0x7F, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, 0x08, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0x2B, 0x07, 0xD0, 0x06, 0x4B, + 0xD3, 0xF8, 0x30, 0x31, 0x18, 0x47, 0x04, 0x4B, 0xD3, 0xF8, 0x08, 0x33, + 0x18, 0x47, 0x03, 0xF0, 0x8F, 0xBF, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, + 0x07, 0xD0, 0x02, 0x2B, 0x03, 0xD1, 0x06, 0x4B, 0xD3, 0xF8, 0x34, 0x34, + 0x18, 0x47, 0x04, 0xF0, 0x93, 0xBB, 0x03, 0x4B, 0xD3, 0xF8, 0x00, 0x33, + 0x18, 0x47, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x07, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0x2B, + 0x01, 0xD0, 0x04, 0xF0, 0x83, 0xBB, 0x04, 0xF0, 0x7B, 0xB8, 0x03, 0x4B, + 0xD3, 0xF8, 0x0C, 0x33, 0x18, 0x47, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, + 0x07, 0xD0, 0x02, 0x2B, 0x03, 0xD1, 0x06, 0x4B, 0xD3, 0xF8, 0x38, 0x34, + 0x18, 0x47, 0x04, 0xF0, 0x6D, 0xBB, 0x03, 0x4B, 0xD3, 0xF8, 0x04, 0x33, + 0x18, 0x47, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x06, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0x2B, + 0x01, 0xD0, 0x04, 0xF0, 0x5D, 0xBB, 0x04, 0xF0, 0xAD, 0xB9, 0x01, 0xF0, + 0x6B, 0xB9, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x08, 0xB5, 0x0C, 0x22, + 0x08, 0x23, 0x01, 0x21, 0x40, 0xF2, 0x0D, 0x40, 0x1B, 0xF0, 0xE6, 0xFD, + 0xBD, 0xE8, 0x08, 0x40, 0x1B, 0xF0, 0x12, 0xBE, 0x2D, 0xE9, 0xF0, 0x4F, + 0x89, 0xB0, 0x82, 0x46, 0x00, 0x68, 0x05, 0x91, 0x03, 0x90, 0x07, 0x92, + 0x62, 0xB1, 0xB0, 0xFB, 0xF2, 0xF3, 0x11, 0x46, 0x02, 0xFB, 0x13, 0x02, + 0x0B, 0x46, 0x00, 0x2A, 0x40, 0xF0, 0xDE, 0x80, 0x03, 0x9A, 0x04, 0x3B, + 0x1A, 0x44, 0x03, 0x92, 0x9A, 0xF8, 0x08, 0x30, 0x00, 0x2B, 0x00, 0xF0, + 0xD2, 0x80, 0x00, 0x23, 0xDF, 0xF8, 0xC0, 0x81, 0xDF, 0xF8, 0xC0, 0x91, + 0x00, 0x93, 0x1F, 0x46, 0xD3, 0x46, 0x08, 0xE0, 0x00, 0x9B, 0x9B, 0xF8, + 0x08, 0x20, 0x01, 0x33, 0xDF, 0xB2, 0xBA, 0x42, 0x00, 0x93, 0x40, 0xF2, + 0xC0, 0x80, 0x05, 0x9B, 0xDB, 0xF8, 0x0C, 0x10, 0x33, 0xF8, 0x27, 0x00, + 0x03, 0xEB, 0x87, 0x02, 0x00, 0x24, 0x55, 0x88, 0x07, 0xEB, 0x47, 0x02, + 0x01, 0xEB, 0x82, 0x06, 0x41, 0xF8, 0x22, 0x40, 0xB4, 0x80, 0x00, 0x2D, + 0xE4, 0xD0, 0x03, 0x1D, 0x01, 0x93, 0x03, 0x9B, 0x75, 0x80, 0x03, 0xF1, + 0x04, 0x0A, 0x02, 0x95, 0xB0, 0x80, 0x55, 0x46, 0xCD, 0xF8, 0x18, 0xB0, + 0xA2, 0x46, 0x04, 0x97, 0x34, 0xE0, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, + 0xAB, 0x42, 0x37, 0xD3, 0x04, 0x9B, 0x05, 0xF8, 0x04, 0x3C, 0xD8, 0xF8, + 0x00, 0x30, 0xAB, 0x42, 0x41, 0xD8, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, + 0xAB, 0x42, 0x3C, 0xD3, 0x55, 0x23, 0x05, 0xF8, 0x03, 0x3C, 0xD8, 0xF8, + 0x00, 0x30, 0xAB, 0x42, 0x46, 0xD8, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, + 0xAB, 0x42, 0x41, 0xD3, 0x00, 0x23, 0x05, 0xF8, 0x02, 0x3C, 0xD8, 0xF8, + 0x00, 0x30, 0xAB, 0x42, 0x4B, 0xD8, 0xD8, 0xF8, 0x04, 0x20, 0x13, 0x44, + 0xAB, 0x42, 0x46, 0xD3, 0xCB, 0xF8, 0x04, 0x70, 0x33, 0x88, 0x01, 0x99, + 0x01, 0x33, 0x01, 0x34, 0x33, 0x80, 0x02, 0x9B, 0xA2, 0xB2, 0x93, 0x42, + 0x0D, 0x44, 0x48, 0xD9, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x57, 0x46, + 0xA5, 0xF1, 0x04, 0x0B, 0xAA, 0x46, 0xC2, 0xD9, 0xD9, 0xF8, 0x00, 0x30, + 0xAB, 0x42, 0x04, 0xD8, 0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, + 0xBE, 0xD2, 0x31, 0x48, 0x29, 0x46, 0xFF, 0xF7, 0xE9, 0xF9, 0xD8, 0xF8, + 0x00, 0x30, 0xAB, 0x42, 0xBD, 0xD9, 0xD9, 0xF8, 0x00, 0x30, 0xAB, 0x42, + 0x04, 0xD8, 0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0xB9, 0xD2, + 0x29, 0x48, 0x29, 0x46, 0xFF, 0xF7, 0xD8, 0xF9, 0xD8, 0xF8, 0x00, 0x30, + 0xAB, 0x42, 0xB8, 0xD9, 0xD9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x04, 0xD8, + 0xD9, 0xF8, 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0xB4, 0xD2, 0x22, 0x48, + 0x29, 0x46, 0xFF, 0xF7, 0xC7, 0xF9, 0xD8, 0xF8, 0x00, 0x30, 0xAB, 0x42, + 0xB3, 0xD9, 0xD9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x04, 0xD8, 0xD9, 0xF8, + 0x04, 0x20, 0x13, 0x44, 0xAB, 0x42, 0xAF, 0xD2, 0x29, 0x46, 0x1A, 0x48, + 0xFF, 0xF7, 0xB6, 0xF9, 0xAC, 0xE7, 0x0A, 0x46, 0x5D, 0x1E, 0x03, 0x99, + 0xDD, 0xF8, 0x18, 0xB0, 0xAD, 0xB2, 0x05, 0xFB, 0x02, 0x13, 0x05, 0xFB, + 0x02, 0x25, 0x48, 0x19, 0x07, 0x99, 0x03, 0x90, 0x04, 0x33, 0xB3, 0x60, + 0x00, 0x29, 0x3F, 0xF4, 0x47, 0xAF, 0xB0, 0xFB, 0xF1, 0xF3, 0x01, 0xFB, + 0x13, 0x02, 0x0B, 0x46, 0x22, 0xB1, 0x8B, 0x1A, 0x03, 0x2B, 0x9C, 0xBF, + 0x0A, 0x46, 0x9B, 0x18, 0x03, 0x9A, 0x04, 0x3B, 0x1A, 0x44, 0x03, 0x92, + 0x36, 0xE7, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x8B, 0x1A, 0x03, 0x2B, + 0x9C, 0xBF, 0x0A, 0x46, 0x9B, 0x18, 0x1B, 0xE7, 0xE0, 0x7F, 0x15, 0x00, + 0x10, 0x80, 0x15, 0x00, 0x38, 0x80, 0x15, 0x00, 0x64, 0x80, 0x15, 0x00, + 0xC8, 0x25, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0xF8, 0xB5, 0x06, 0x7A, + 0x00, 0x2E, 0x00, 0xF0, 0xBC, 0x80, 0xC5, 0x68, 0x00, 0x2D, 0x00, 0xF0, + 0x82, 0x80, 0x2C, 0x46, 0x01, 0x23, 0x09, 0xE0, 0x22, 0x88, 0xA2, 0xB9, + 0x9E, 0x42, 0x0F, 0xD9, 0x03, 0xEB, 0x43, 0x04, 0x05, 0xEB, 0x84, 0x04, + 0x01, 0x33, 0xDB, 0xB2, 0xA0, 0x88, 0x88, 0x42, 0x03, 0xEB, 0x43, 0x02, + 0xF0, 0xD2, 0x9E, 0x42, 0x02, 0xD9, 0x05, 0xEB, 0x82, 0x04, 0xF3, 0xE7, + 0x9E, 0x42, 0x00, 0xF0, 0x9E, 0x80, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x4E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x4E, 0x4E, + 0x23, 0x88, 0x35, 0x68, 0x6A, 0x1C, 0x32, 0x60, 0x00, 0x2B, 0x5D, 0xD0, + 0x4B, 0x4F, 0xA5, 0x68, 0x3A, 0x68, 0xAA, 0x42, 0x28, 0xD8, 0x79, 0x68, + 0x11, 0x44, 0x8D, 0x42, 0x24, 0xD8, 0x29, 0x68, 0xA1, 0x60, 0x01, 0x3B, + 0xAA, 0x42, 0x23, 0x80, 0x32, 0xD8, 0x7B, 0x68, 0x13, 0x44, 0xAB, 0x42, + 0x2E, 0xD3, 0x15, 0xF8, 0x03, 0x1C, 0x55, 0x29, 0x53, 0xD1, 0xAA, 0x23, + 0x05, 0xF8, 0x03, 0x3C, 0x3B, 0x68, 0x9D, 0x42, 0x5D, 0xD3, 0x7A, 0x68, + 0x13, 0x44, 0x9D, 0x42, 0x59, 0xD8, 0x01, 0x23, 0x05, 0xF8, 0x02, 0x3C, + 0x33, 0x68, 0x00, 0x2B, 0x34, 0xD0, 0x36, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x33, 0x60, 0x7B, 0xBB, 0x72, 0xB3, 0x35, 0xE0, 0x35, 0x48, 0x01, 0x68, + 0x8D, 0x42, 0x03, 0xD3, 0x40, 0x68, 0x01, 0x44, 0x8D, 0x42, 0xD2, 0xD9, + 0x29, 0x46, 0x32, 0x48, 0xFF, 0xF7, 0x12, 0xF9, 0x23, 0x88, 0x3A, 0x68, + 0x00, 0x21, 0x01, 0x3B, 0xAA, 0x42, 0xA1, 0x60, 0x23, 0x80, 0xCC, 0xD9, + 0x2B, 0x48, 0x03, 0x68, 0xAB, 0x42, 0x1F, 0xD8, 0x41, 0x68, 0x19, 0x44, + 0xA9, 0x42, 0x1B, 0xD3, 0x15, 0xF8, 0x03, 0x1C, 0x55, 0x29, 0x1C, 0xD1, + 0xAA, 0x42, 0x37, 0xD9, 0x42, 0x68, 0x13, 0x44, 0x9D, 0x42, 0xC2, 0xD9, + 0x29, 0x46, 0x24, 0x48, 0xFF, 0xF7, 0xF4, 0xF8, 0xC0, 0xE7, 0x23, 0x48, + 0xFF, 0xF7, 0xF0, 0xF8, 0x28, 0x46, 0xF8, 0xBD, 0xC2, 0xB1, 0x1A, 0x4B, + 0x35, 0x60, 0x1B, 0x68, 0xA5, 0xB9, 0x9B, 0xB1, 0x62, 0xB6, 0xF5, 0xE7, + 0x29, 0x46, 0x1D, 0x48, 0xFF, 0xF7, 0xE2, 0xF8, 0x00, 0x21, 0x33, 0x68, + 0x33, 0xB1, 0x13, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x17, 0x48, 0x2A, 0x46, 0xFF, 0xF7, 0xD4, 0xF8, + 0x00, 0x25, 0x28, 0x46, 0xF8, 0xBD, 0x0F, 0x4A, 0x13, 0x68, 0x9D, 0x42, + 0x03, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x9D, 0x42, 0x9D, 0xD9, 0x29, 0x46, + 0x10, 0x48, 0xFF, 0xF7, 0xC5, 0xF8, 0x9B, 0xE7, 0x79, 0x68, 0x0A, 0x44, + 0x95, 0x42, 0x8A, 0xD9, 0x9D, 0x42, 0xC5, 0xD3, 0xC0, 0xE7, 0x0C, 0x48, + 0xFF, 0xF7, 0xBA, 0xF8, 0x00, 0x25, 0xC7, 0xE7, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xC8, 0x25, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, + 0xCC, 0x80, 0x15, 0x00, 0x10, 0x80, 0x15, 0x00, 0x98, 0x80, 0x15, 0x00, + 0x00, 0x81, 0x15, 0x00, 0x28, 0x81, 0x15, 0x00, 0x38, 0x80, 0x15, 0x00, + 0xB4, 0x80, 0x15, 0x00, 0x00, 0x29, 0x00, 0xF0, 0x0F, 0x81, 0x2D, 0xE9, + 0xF8, 0x43, 0x03, 0x68, 0x8B, 0x42, 0x05, 0x46, 0x0C, 0x46, 0x59, 0xD8, + 0x42, 0x68, 0x13, 0x44, 0x99, 0x42, 0x55, 0xD8, 0x83, 0x4F, 0x3B, 0x68, + 0x99, 0x42, 0x55, 0xD3, 0x7A, 0x68, 0x13, 0x44, 0x99, 0x42, 0x51, 0xD8, + 0x14, 0xF8, 0x04, 0x6C, 0x2B, 0x7A, 0xB3, 0x42, 0x48, 0xD9, 0xD5, 0xF8, + 0x0C, 0x80, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x7A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x7A, 0x4D, 0x38, 0x68, 0x2B, 0x68, + 0x84, 0x42, 0x03, 0xF1, 0x01, 0x03, 0x2B, 0x60, 0x25, 0xD3, 0x7B, 0x68, + 0x03, 0x44, 0x9C, 0x42, 0x21, 0xD8, 0x14, 0xF8, 0x03, 0x9C, 0xB9, 0xF1, + 0xAA, 0x0F, 0x00, 0xF0, 0xAB, 0x80, 0xB9, 0xF1, 0xFF, 0x0F, 0x20, 0xD1, + 0x7B, 0x68, 0x18, 0x44, 0x84, 0x42, 0x00, 0xF2, 0xA1, 0x80, 0x14, 0xF8, + 0x02, 0x0C, 0x01, 0x38, 0xC0, 0xB2, 0x04, 0xF8, 0x02, 0x0C, 0x00, 0x28, + 0x47, 0xD0, 0x2B, 0x68, 0x33, 0xB1, 0x67, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x40, 0xB2, 0xBD, 0xE8, + 0xF8, 0x83, 0x64, 0x4B, 0x1A, 0x68, 0x94, 0x42, 0x1E, 0xD2, 0x63, 0x48, + 0x21, 0x46, 0xFF, 0xF7, 0x47, 0xF8, 0x2B, 0x68, 0x33, 0xB1, 0x5D, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x4F, 0xF0, 0xFF, 0x30, 0xBD, 0xE8, 0xF8, 0x83, 0x59, 0x4B, 0x1A, 0x68, + 0x94, 0x42, 0x03, 0xD3, 0x5B, 0x68, 0x1A, 0x44, 0x94, 0x42, 0xA5, 0xD9, + 0x57, 0x48, 0x21, 0x46, 0xFF, 0xF7, 0x2E, 0xF8, 0x00, 0x26, 0xA1, 0xE7, + 0x59, 0x68, 0x11, 0x44, 0x8C, 0x42, 0xDC, 0xD8, 0x14, 0xF8, 0x03, 0x9C, + 0xB9, 0xF1, 0xAA, 0x0F, 0x6C, 0xD0, 0xB9, 0xF1, 0xFF, 0x0F, 0xD8, 0xD1, + 0x84, 0x42, 0xB5, 0xD2, 0x1A, 0x68, 0x94, 0x42, 0x03, 0xD3, 0x5B, 0x68, + 0x1A, 0x44, 0x94, 0x42, 0xB3, 0xD9, 0x4B, 0x48, 0x21, 0x46, 0xFF, 0xF7, + 0x13, 0xF8, 0xB9, 0xF1, 0xFF, 0x0F, 0x5D, 0xD0, 0x06, 0xEB, 0x46, 0x06, + 0x08, 0xEB, 0x86, 0x09, 0x38, 0xF8, 0x26, 0x20, 0xB9, 0xF8, 0x02, 0x30, + 0x9A, 0x42, 0x4F, 0xEA, 0x86, 0x06, 0xBC, 0xD2, 0x3B, 0x68, 0x9C, 0x42, + 0x31, 0xD3, 0x7A, 0x68, 0x13, 0x44, 0x9C, 0x42, 0x2D, 0xD8, 0x55, 0x23, + 0x04, 0xF8, 0x03, 0x3C, 0x3B, 0x68, 0x9C, 0x42, 0x1A, 0xD3, 0x7A, 0x68, + 0x13, 0x44, 0x9C, 0x42, 0x16, 0xD8, 0xD9, 0xF8, 0x08, 0x30, 0x23, 0x60, + 0x38, 0xF8, 0x06, 0x30, 0x28, 0x68, 0xC9, 0xF8, 0x08, 0x40, 0x01, 0x33, + 0x28, 0xF8, 0x06, 0x30, 0x38, 0xB1, 0x2E, 0x4B, 0x01, 0x38, 0x1B, 0x68, + 0x28, 0x60, 0x10, 0xB9, 0x0B, 0xB1, 0x62, 0xB6, 0xA2, 0xE7, 0x00, 0x20, + 0xBD, 0xE8, 0xF8, 0x83, 0x2A, 0x4A, 0x13, 0x68, 0x9C, 0x42, 0x03, 0xD3, + 0x52, 0x68, 0x13, 0x44, 0x9C, 0x42, 0xE0, 0xD9, 0x21, 0x46, 0x2A, 0x48, + 0xFE, 0xF7, 0xD0, 0xFF, 0xDE, 0xE7, 0x24, 0x4A, 0x13, 0x68, 0x9C, 0x42, + 0x03, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x9C, 0x42, 0xC9, 0xD9, 0x21, 0x46, + 0x24, 0x48, 0xFE, 0xF7, 0xC3, 0xFF, 0xC7, 0xE7, 0x1D, 0x4B, 0xA1, 0xE7, + 0x14, 0xF8, 0x02, 0x0C, 0x01, 0x38, 0xC0, 0xB2, 0x04, 0xF8, 0x02, 0x0C, + 0x00, 0x28, 0x7F, 0xF4, 0x5C, 0xAF, 0xA5, 0xE7, 0x84, 0x42, 0xBF, 0xF4, + 0x4B, 0xAF, 0x96, 0xE7, 0x3B, 0x68, 0x9C, 0x42, 0x11, 0xD3, 0x7A, 0x68, + 0x13, 0x44, 0x9C, 0x42, 0x0D, 0xD8, 0x01, 0x23, 0x04, 0xF8, 0x02, 0x3C, + 0x2B, 0x68, 0x33, 0xB1, 0x0D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x01, 0x20, 0x60, 0xE7, 0x0B, 0x4A, + 0x13, 0x68, 0x9C, 0x42, 0x03, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x9C, 0x42, + 0xE9, 0xD9, 0x21, 0x46, 0x0C, 0x48, 0xFE, 0xF7, 0x91, 0xFF, 0xE7, 0xE7, + 0x4F, 0xF0, 0xFF, 0x30, 0x70, 0x47, 0x00, 0xBF, 0xC8, 0x25, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, + 0x00, 0x81, 0x15, 0x00, 0x50, 0x81, 0x15, 0x00, 0x80, 0x81, 0x15, 0x00, + 0x64, 0x80, 0x15, 0x00, 0x10, 0x80, 0x15, 0x00, 0x38, 0x80, 0x15, 0x00, + 0x0B, 0x4A, 0x13, 0x68, 0x83, 0x42, 0x05, 0xD8, 0x52, 0x68, 0x13, 0x44, + 0x98, 0x42, 0x01, 0xD8, 0x01, 0x20, 0x70, 0x47, 0x07, 0x4A, 0x13, 0x68, + 0x98, 0x42, 0x06, 0xD3, 0x52, 0x68, 0x13, 0x44, 0x98, 0x42, 0x8C, 0xBF, + 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0xC8, 0x25, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x10, 0x4B, 0x70, 0xB5, + 0x10, 0x4C, 0xDC, 0x60, 0x15, 0x46, 0x0E, 0x46, 0x03, 0x24, 0x01, 0x46, + 0x20, 0x22, 0x18, 0x46, 0x5D, 0x60, 0x1C, 0x72, 0x1E, 0x60, 0xFF, 0xF7, + 0xCD, 0xFC, 0x0B, 0x4B, 0x4F, 0xF4, 0x80, 0x32, 0x01, 0x21, 0x4F, 0xF0, + 0x02, 0x15, 0x04, 0x24, 0x4F, 0xF4, 0x80, 0x20, 0x5A, 0x60, 0x00, 0x22, + 0xC3, 0xE9, 0x05, 0x40, 0xDD, 0x60, 0x19, 0x60, 0x99, 0x60, 0x1A, 0x61, + 0x9A, 0x83, 0x70, 0xBD, 0xE4, 0x25, 0x17, 0x00, 0xF4, 0x25, 0x17, 0x00, + 0xA8, 0x25, 0x17, 0x00, 0x38, 0xB5, 0x0F, 0x4B, 0x1B, 0x68, 0x1B, 0x78, + 0x01, 0x2B, 0x05, 0x46, 0x0D, 0xD0, 0x0D, 0x48, 0x7C, 0x21, 0xFF, 0xF7, + 0xAB, 0xFD, 0x04, 0x46, 0x2C, 0xB1, 0x20, 0x46, 0xFF, 0xF7, 0xAC, 0xFF, + 0x38, 0xB1, 0x04, 0xF8, 0x01, 0x5C, 0x20, 0x46, 0x38, 0xBD, 0x00, 0xF0, + 0xC3, 0xF9, 0x04, 0x46, 0xF2, 0xE7, 0x21, 0x46, 0x04, 0x48, 0xFE, 0xF7, + 0x17, 0xFF, 0x20, 0x46, 0x38, 0xBD, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0xE4, 0x25, 0x17, 0x00, 0xAC, 0x81, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, + 0xFF, 0xF7, 0x92, 0xFF, 0x98, 0xB1, 0x31, 0x4B, 0x14, 0xF8, 0x04, 0x2C, + 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x23, 0xD0, 0x02, 0x2B, 0x2A, 0xD0, + 0x03, 0x2B, 0x15, 0xD1, 0x2C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x30, 0xDB, 0x02, 0x2A, 0x30, 0xD0, 0x10, 0xBD, 0x29, 0x48, + 0x21, 0x46, 0xFE, 0xF7, 0xF1, 0xFE, 0x25, 0x4B, 0x1B, 0x68, 0x1B, 0x78, + 0x01, 0x2B, 0x11, 0xD0, 0x02, 0x2B, 0x18, 0xD0, 0x03, 0x2B, 0x29, 0xD0, + 0x20, 0x46, 0xFF, 0xF7, 0x6D, 0xFF, 0x90, 0xB3, 0x21, 0x46, 0x21, 0x48, + 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x3C, 0xBE, 0x02, 0x2A, 0x0F, 0xD0, + 0x00, 0x2A, 0xE3, 0xD1, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x00, 0xF0, + 0x9B, 0xB9, 0x02, 0x2A, 0x26, 0xD0, 0x00, 0x2A, 0xDA, 0xD1, 0x20, 0x46, + 0xBD, 0xE8, 0x10, 0x40, 0x03, 0xF0, 0xF2, 0xB9, 0x20, 0x46, 0xBD, 0xE8, + 0x10, 0x40, 0x00, 0xF0, 0x45, 0xB9, 0x02, 0x2A, 0x0C, 0xD1, 0x13, 0x4B, + 0x20, 0x46, 0xD3, 0xF8, 0xE8, 0x34, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC1, 0xDA, + 0xBD, 0xE8, 0x10, 0x40, 0x0C, 0x49, 0x0D, 0x48, 0xBE, 0x22, 0x1D, 0xF0, + 0xF5, 0xBA, 0x21, 0x46, 0x0B, 0x48, 0xFE, 0xF7, 0xAD, 0xFE, 0xC7, 0xE7, + 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x03, 0xF0, 0x21, 0xB9, 0x00, 0xBF, + 0x78, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x50, 0x81, 0x15, 0x00, + 0xE4, 0x25, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xD4, 0x81, 0x15, 0x00, 0xE4, 0x81, 0x15, 0x00, 0x30, 0xB5, 0x1A, 0x4C, + 0x1A, 0x4A, 0x23, 0x68, 0x1A, 0x48, 0x5D, 0x88, 0x99, 0x88, 0xB2, 0xF8, + 0xD4, 0x20, 0x85, 0xB0, 0x04, 0x3A, 0xAD, 0xF8, 0x02, 0x50, 0xDD, 0x88, + 0xAD, 0xF8, 0x06, 0x10, 0x19, 0x89, 0xAD, 0xF8, 0x0A, 0x50, 0xD3, 0xE9, + 0x05, 0x35, 0xAD, 0xF8, 0x0E, 0x10, 0x01, 0x21, 0x03, 0x60, 0x01, 0x72, + 0x10, 0x4B, 0x45, 0x60, 0x0C, 0x21, 0xC3, 0x60, 0xAD, 0xF8, 0x0C, 0x20, + 0x40, 0xF2, 0x3C, 0x63, 0xAD, 0xF8, 0x00, 0x10, 0x7C, 0x25, 0x69, 0x46, + 0x20, 0x22, 0xAD, 0xF8, 0x08, 0x30, 0xAD, 0xF8, 0x04, 0x50, 0xFF, 0xF7, + 0xE9, 0xFB, 0x23, 0x68, 0x01, 0xA8, 0xD3, 0xE9, 0x07, 0x12, 0xFF, 0xF7, + 0x07, 0xFF, 0x05, 0xB0, 0x30, 0xBD, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xC8, 0x25, 0x17, 0x00, 0xD8, 0x25, 0x17, 0x00, + 0xF8, 0xB5, 0x0C, 0x4D, 0x0C, 0x48, 0x1B, 0xF0, 0x3F, 0xFE, 0x2B, 0x68, + 0x5B, 0x88, 0x83, 0xB1, 0x0A, 0x4F, 0x09, 0x4E, 0x00, 0x24, 0x0C, 0x21, + 0x38, 0x46, 0xFF, 0xF7, 0xCB, 0xFC, 0x01, 0x46, 0x30, 0x46, 0x1B, 0xF0, + 0x35, 0xFE, 0x2B, 0x68, 0x01, 0x34, 0x5A, 0x88, 0xA3, 0xB2, 0x9A, 0x42, + 0xF1, 0xD8, 0xF8, 0xBD, 0x78, 0x36, 0x17, 0x00, 0x08, 0x60, 0x17, 0x00, + 0xC8, 0x25, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xDF, 0xF8, 0x4C, 0x80, + 0x0F, 0x48, 0x1B, 0xF0, 0x1D, 0xFE, 0xD8, 0xF8, 0x00, 0x30, 0x1B, 0x89, + 0xB3, 0xB1, 0x0D, 0x4D, 0x0D, 0x4F, 0x0B, 0x4E, 0x00, 0x24, 0x4F, 0xF4, + 0xD7, 0x61, 0x38, 0x46, 0xFF, 0xF7, 0xA6, 0xFC, 0x01, 0x46, 0x30, 0x46, + 0x1B, 0xF0, 0x10, 0xFE, 0xD8, 0xF8, 0x00, 0x20, 0x2B, 0x68, 0x11, 0x89, + 0x01, 0x34, 0xA2, 0xB2, 0x01, 0x33, 0x91, 0x42, 0x2B, 0x60, 0xEC, 0xD8, + 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x60, 0x17, 0x00, 0x18, 0x26, 0x17, 0x00, + 0xE4, 0x25, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0xF8, 0xB5, 0x0C, 0x4D, + 0x0C, 0x48, 0x1B, 0xF0, 0xF3, 0xFD, 0x2B, 0x68, 0x9B, 0x88, 0x83, 0xB1, + 0x0A, 0x4F, 0x09, 0x4E, 0x00, 0x24, 0x7C, 0x21, 0x38, 0x46, 0xFF, 0xF7, + 0x7F, 0xFC, 0x01, 0x46, 0x30, 0x46, 0x1B, 0xF0, 0xE9, 0xFD, 0x2B, 0x68, + 0x01, 0x34, 0x9A, 0x88, 0xA3, 0xB2, 0x9A, 0x42, 0xF1, 0xD8, 0xF8, 0xBD, + 0x78, 0x36, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, + 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x09, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x09, 0x48, 0x23, 0x68, + 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0x10, 0xFE, 0x23, 0x68, 0x33, 0xB1, + 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x08, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x09, 0x4C, 0x0A, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, + 0xAB, 0xFD, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x08, 0x60, 0x17, 0x00, + 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0C, 0x4C, 0x0C, 0x48, 0x23, 0x68, + 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0xCE, 0xFD, 0x18, 0xB1, 0x0A, 0x4A, + 0x13, 0x68, 0x01, 0x3B, 0x13, 0x60, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x00, 0x60, 0x17, 0x00, 0x18, 0x26, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x0B, 0x4C, 0x0C, 0x48, 0x23, 0x68, 0x01, 0x33, + 0x23, 0x60, 0x1B, 0xF0, 0x61, 0xFD, 0x0A, 0x49, 0x23, 0x68, 0x0A, 0x68, + 0x01, 0x32, 0x0A, 0x60, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x60, 0x17, 0x00, + 0x18, 0x26, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x09, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, + 0x09, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x1B, 0xF0, 0x7E, 0xFD, + 0x23, 0x68, 0x33, 0xB1, 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x20, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x0A, 0x48, 0x23, 0x68, 0x01, 0x33, + 0x23, 0x60, 0x1B, 0xF0, 0x19, 0xFD, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x20, 0x60, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x41, 0x4B, 0xDF, 0xF8, + 0x20, 0xB1, 0x1B, 0x68, 0x40, 0x4D, 0x1F, 0x8E, 0xDF, 0xF8, 0x18, 0x91, + 0xDF, 0xF8, 0x18, 0x81, 0x8B, 0x89, 0x0C, 0x46, 0x06, 0x46, 0x9F, 0x42, + 0x6A, 0xD9, 0xD8, 0xF8, 0x00, 0x30, 0x04, 0x2B, 0x63, 0xD9, 0xD6, 0xE9, + 0x01, 0x03, 0x1B, 0x69, 0x98, 0x47, 0x82, 0x46, 0x00, 0x28, 0x62, 0xD0, + 0xFF, 0xF7, 0x0E, 0xFF, 0x00, 0x28, 0x4A, 0xD0, 0x00, 0x22, 0x34, 0x4B, + 0x02, 0x60, 0x1B, 0x68, 0x42, 0x60, 0x53, 0x44, 0x82, 0x60, 0x03, 0x60, + 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2F, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x2E, 0x4A, 0xDB, 0xF8, 0x00, 0x30, 0xD2, 0xF8, + 0x00, 0xC0, 0x43, 0xF0, 0x01, 0x03, 0x0C, 0xF1, 0x01, 0x01, 0x11, 0x60, + 0xCB, 0xF8, 0x00, 0x30, 0xDB, 0xF8, 0x00, 0x30, 0x9B, 0x07, 0xFB, 0xD4, + 0x2B, 0x68, 0x1B, 0xBB, 0xD9, 0xF8, 0x00, 0x30, 0xC9, 0xF8, 0x00, 0x00, + 0x2B, 0x68, 0xB4, 0xF8, 0x0C, 0xE0, 0x60, 0x60, 0x0E, 0xF1, 0x01, 0x0E, + 0x98, 0xB2, 0x01, 0x30, 0x1F, 0xFA, 0x8E, 0xF3, 0xA3, 0x81, 0x28, 0x60, + 0xDB, 0xF8, 0x00, 0x00, 0x20, 0xF0, 0x01, 0x00, 0xCB, 0xF8, 0x00, 0x00, + 0x00, 0x29, 0xB4, 0xD0, 0x18, 0x49, 0xC2, 0xF8, 0x00, 0xC0, 0x0A, 0x68, + 0xBC, 0xF1, 0x00, 0x0F, 0xAD, 0xD1, 0x00, 0x2A, 0xAB, 0xD0, 0x62, 0xB6, + 0xA3, 0x89, 0xA8, 0xE7, 0x63, 0x68, 0x00, 0x2B, 0xDC, 0xD0, 0x58, 0x60, + 0xDA, 0xE7, 0x12, 0x48, 0xFE, 0xF7, 0xAA, 0xFC, 0xD6, 0xE9, 0x01, 0x03, + 0x51, 0x46, 0x5B, 0x69, 0x98, 0x47, 0x09, 0x4B, 0xA2, 0x89, 0x1B, 0x68, + 0x5B, 0x8E, 0x9A, 0x42, 0x02, 0xD2, 0x04, 0x20, 0x1B, 0xF0, 0xEA, 0xFB, + 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x8F, 0xD8, 0xF8, 0x00, 0x10, 0x08, 0x48, + 0xFE, 0xF7, 0x94, 0xFC, 0xED, 0xE7, 0x00, 0xBF, 0xC8, 0x35, 0x17, 0x00, + 0x64, 0x00, 0x24, 0x40, 0x34, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x24, 0x82, 0x15, 0x00, 0x0C, 0x82, 0x15, 0x00, + 0x60, 0x00, 0x24, 0x40, 0x68, 0x00, 0x24, 0x40, 0x18, 0x26, 0x17, 0x00, + 0x08, 0xB5, 0x03, 0x4B, 0xD3, 0xF8, 0xF8, 0x32, 0x98, 0x47, 0x01, 0x20, + 0x08, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0A, 0x4A, + 0x0A, 0x49, 0x0B, 0x4C, 0x00, 0x23, 0xC2, 0xE9, 0x02, 0x03, 0xC2, 0xE9, + 0x04, 0x33, 0xC2, 0xE9, 0x00, 0x33, 0xC1, 0xE9, 0x00, 0x33, 0x8B, 0x81, + 0x8B, 0x60, 0x8B, 0x73, 0x10, 0x46, 0xD4, 0xF8, 0x10, 0x31, 0x98, 0x47, + 0x01, 0x20, 0x10, 0xBD, 0x28, 0x60, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x89, 0xB0, 0xB9, 0x4B, + 0xD3, 0xF8, 0x14, 0x35, 0x00, 0x2B, 0x00, 0xF0, 0x30, 0x81, 0xEF, 0xF3, + 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0xB4, 0x4A, 0x01, 0x23, + 0x13, 0x60, 0xDF, 0xF8, 0x04, 0x93, 0xB1, 0x4B, 0xD9, 0xF8, 0x00, 0x20, + 0xD3, 0xF8, 0x14, 0x35, 0x51, 0x1C, 0xC9, 0xF8, 0x00, 0x10, 0x31, 0xB1, + 0xAD, 0x49, 0xC9, 0xF8, 0x00, 0x20, 0x09, 0x68, 0x0A, 0xB9, 0x01, 0xB1, + 0x62, 0xB6, 0x93, 0xF8, 0x0C, 0xB0, 0x5A, 0x7B, 0x5C, 0x68, 0x05, 0x92, + 0xBB, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x38, 0x81, 0x00, 0x2C, 0x00, 0xF0, + 0x35, 0x81, 0x9B, 0x68, 0x00, 0x2B, 0x00, 0xF0, 0x31, 0x81, 0xA3, 0x4B, + 0x07, 0x93, 0x9B, 0x89, 0x1F, 0xFA, 0x8B, 0xF2, 0x5B, 0x45, 0x06, 0x92, + 0xC0, 0xF0, 0x5C, 0x81, 0xDF, 0xF8, 0xB0, 0xA2, 0x00, 0x26, 0xAA, 0xE0, + 0xD4, 0xE9, 0x00, 0x53, 0x03, 0x93, 0x6B, 0x1E, 0xB3, 0xF5, 0xE8, 0x1F, + 0x27, 0xD3, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x95, 0x4A, 0x01, 0x23, 0x13, 0x60, 0x03, 0x9B, 0xD9, 0xF8, 0x00, 0x70, + 0x01, 0x93, 0x23, 0x68, 0x93, 0x48, 0x00, 0x93, 0x5A, 0x46, 0x23, 0x46, + 0x31, 0x46, 0x01, 0x37, 0xC9, 0xF8, 0x00, 0x70, 0x1C, 0xF0, 0xC4, 0xFD, + 0x4F, 0xF4, 0x80, 0x71, 0xA4, 0xF1, 0x80, 0x00, 0x1D, 0xF0, 0x9C, 0xF9, + 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x88, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x20, 0x46, + 0xFF, 0xF7, 0x1A, 0xFE, 0x6B, 0x7E, 0x2F, 0x7E, 0x09, 0x2B, 0x09, 0xD8, + 0x83, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, + 0x25, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0xDD, 0x80, 0x6B, 0x8B, 0x13, 0xF0, + 0x08, 0x0F, 0x7E, 0x4B, 0x40, 0xF0, 0xBC, 0x80, 0x1A, 0x46, 0x04, 0x93, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x23, 0x93, 0xF8, 0x64, 0x30, + 0x00, 0x2B, 0x00, 0xF0, 0xCC, 0x80, 0x95, 0xF8, 0x16, 0x80, 0xB8, 0xF1, + 0x05, 0x0F, 0x00, 0xF2, 0x09, 0x81, 0x75, 0x4C, 0x75, 0x48, 0x1B, 0xF0, + 0xF1, 0xFB, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, + 0xC0, 0xF2, 0xA5, 0x80, 0xE1, 0x8B, 0x71, 0x4B, 0xE2, 0x6C, 0x13, 0xF8, + 0x08, 0xC0, 0x21, 0xF0, 0x01, 0x01, 0x00, 0x23, 0xE1, 0x83, 0x63, 0x64, + 0x13, 0x61, 0xE3, 0x62, 0x6B, 0x4B, 0x29, 0x46, 0x0C, 0xF1, 0x01, 0x0C, + 0x1C, 0x22, 0x20, 0x1D, 0x03, 0xF8, 0x08, 0xC0, 0x2F, 0xF0, 0x8A, 0xFA, + 0xE1, 0x8B, 0xDA, 0xF8, 0x00, 0x00, 0x00, 0x23, 0x21, 0xF4, 0x00, 0x42, + 0x84, 0xF8, 0x42, 0x30, 0x22, 0xF0, 0x02, 0x02, 0x2D, 0x1A, 0x63, 0x62, + 0x23, 0x65, 0x0B, 0x07, 0xE2, 0x83, 0xA5, 0x64, 0x00, 0xF1, 0x87, 0x80, + 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, + 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x5A, 0x49, 0xA0, 0x88, 0x03, 0xF6, + 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x02, 0x44, 0x41, 0xF8, 0x23, 0x20, + 0xA4, 0x20, 0x04, 0x9B, 0x00, 0xFB, 0x07, 0x80, 0x99, 0x30, 0x21, 0x46, + 0x03, 0xEB, 0xC0, 0x00, 0x03, 0x9C, 0x1B, 0xF0, 0x61, 0xFB, 0x01, 0x36, + 0xF3, 0xB2, 0x9B, 0x45, 0x16, 0xD9, 0x05, 0x9B, 0x00, 0x2B, 0x3F, 0xF4, + 0x51, 0xAF, 0x4D, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x1C, 0xF0, 0x7E, 0xFD, + 0x20, 0x46, 0xD4, 0xE9, 0x00, 0x54, 0xFF, 0xF7, 0x93, 0xFD, 0xDA, 0xF8, + 0x00, 0x00, 0x01, 0x36, 0x28, 0x1A, 0xFF, 0xF7, 0x4B, 0xFC, 0xF3, 0xB2, + 0x9B, 0x45, 0xE8, 0xD8, 0x07, 0x9A, 0x06, 0x99, 0x93, 0x89, 0x5B, 0x1A, + 0x93, 0x81, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x35, 0x4A, 0x01, 0x23, 0x13, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x3D, 0x48, + 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x1B, 0xF0, 0x75, 0xFB, 0x2F, 0x49, + 0x91, 0xF8, 0x11, 0x35, 0xD1, 0xF8, 0x14, 0x25, 0x01, 0x3B, 0x81, 0xF8, + 0x11, 0x35, 0x00, 0x2A, 0x00, 0xF0, 0x94, 0x80, 0xD9, 0xF8, 0x00, 0x30, + 0x00, 0x2B, 0x3F, 0xF4, 0xDC, 0xAE, 0x28, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0xC9, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0xD4, 0xAE, 0x00, 0x2A, + 0x3F, 0xF4, 0xD1, 0xAE, 0x62, 0xB6, 0x21, 0x4B, 0xD3, 0xF8, 0x14, 0x35, + 0x00, 0x2B, 0x7F, 0xF4, 0xD0, 0xAE, 0x40, 0x20, 0x1B, 0xF0, 0x6A, 0xFA, + 0x04, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x1B, 0xF0, 0x64, 0xBA, + 0x1F, 0x4C, 0x04, 0x93, 0x4F, 0xF0, 0x05, 0x08, 0x50, 0xE7, 0x00, 0x28, + 0x7F, 0xF4, 0x58, 0xAF, 0x21, 0x49, 0x22, 0x48, 0x4F, 0xF4, 0xE5, 0x72, + 0x1C, 0xF0, 0x4C, 0xFF, 0x50, 0xE7, 0x04, 0x9B, 0x4F, 0xF4, 0xA4, 0x60, + 0x00, 0xFB, 0x07, 0x30, 0x21, 0x46, 0x00, 0xF5, 0xA3, 0x60, 0x03, 0x9C, + 0x1B, 0xF0, 0xEC, 0xFA, 0x89, 0xE7, 0xDA, 0xF8, 0x00, 0x00, 0x03, 0x9C, + 0x28, 0x1A, 0xFF, 0xF7, 0xE7, 0xFB, 0x82, 0xE7, 0x0A, 0x4B, 0x16, 0x48, + 0x07, 0x93, 0x1D, 0x46, 0xFE, 0xF7, 0xEE, 0xFA, 0xAB, 0x89, 0x1F, 0xFA, + 0x8B, 0xF2, 0x5B, 0x45, 0x06, 0x92, 0x27, 0xD3, 0xBB, 0xF1, 0x00, 0x0F, + 0x7F, 0xF4, 0xC8, 0xAE, 0x8C, 0xE7, 0x00, 0xBF, 0x58, 0x58, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, 0x50, 0x82, 0x15, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x20, 0x58, 0x17, 0x00, 0x74, 0x28, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0xB4, 0x82, 0x15, 0x00, 0x6C, 0x5D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x9C, 0x82, 0x15, 0x00, 0x34, 0x82, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x34, 0x1A, 0x17, 0x00, 0x10, 0x48, 0xFE, 0xF7, 0xBD, 0xFA, 0xBB, 0xF1, + 0x00, 0x0F, 0x7F, 0xF4, 0x9D, 0xAE, 0x61, 0xE7, 0x0D, 0x48, 0x0E, 0x4C, + 0x1C, 0xF0, 0x7E, 0xFC, 0x80, 0x21, 0xA5, 0xF1, 0x40, 0x00, 0x1D, 0xF0, + 0x57, 0xF8, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, + 0xE9, 0xAE, 0x08, 0x49, 0x08, 0x48, 0x4F, 0xF4, 0xE3, 0x72, 0x1C, 0xF0, + 0xE7, 0xFE, 0xE1, 0xE6, 0x20, 0x20, 0x1B, 0xF0, 0x11, 0xFA, 0x67, 0xE7, + 0x44, 0x82, 0x15, 0x00, 0x74, 0x82, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x88, 0x82, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0xDF, 0xF8, 0x24, 0x91, 0xDF, 0xF8, 0x24, 0x81, 0x42, 0x4F, 0x43, 0x4B, + 0xD3, 0xF8, 0xA0, 0x27, 0x00, 0x2A, 0x5E, 0xD0, 0x15, 0x7B, 0xD2, 0xF8, + 0x04, 0xA0, 0x56, 0x7B, 0x65, 0xB3, 0x4F, 0xF0, 0x00, 0x0B, 0x11, 0xE0, + 0xDA, 0xE9, 0x00, 0x4A, 0xFF, 0xF7, 0xB0, 0xFC, 0x20, 0x46, 0xFD, 0xF7, + 0x03, 0xFB, 0xD8, 0xF8, 0x00, 0x00, 0x0B, 0xF1, 0x01, 0x0B, 0x20, 0x1A, + 0xFF, 0xF7, 0x64, 0xFB, 0x5F, 0xFA, 0x8B, 0xF1, 0xA9, 0x42, 0x17, 0xD2, + 0x50, 0x46, 0x39, 0x46, 0x00, 0x2E, 0xE9, 0xD0, 0x4F, 0xF4, 0x80, 0x60, + 0x1C, 0xF0, 0x80, 0xFC, 0x50, 0x46, 0xDA, 0xE9, 0x00, 0x4A, 0xFF, 0xF7, + 0x95, 0xFC, 0xD8, 0xF8, 0x00, 0x00, 0x0B, 0xF1, 0x01, 0x0B, 0x20, 0x1A, + 0xFF, 0xF7, 0x4C, 0xFB, 0x5F, 0xFA, 0x8B, 0xF1, 0xA9, 0x42, 0xE7, 0xD3, + 0x28, 0x4A, 0x93, 0x89, 0x5D, 0x1B, 0x95, 0x81, 0xEF, 0xF3, 0x10, 0x83, + 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x25, 0x4A, 0x01, 0x23, 0x13, 0x60, + 0xD9, 0xF8, 0x00, 0x30, 0x23, 0x48, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, + 0x1B, 0xF0, 0x76, 0xFA, 0x1D, 0x49, 0xD9, 0xF8, 0x00, 0x20, 0x91, 0xF8, + 0x9D, 0x37, 0x01, 0x3B, 0x81, 0xF8, 0x9D, 0x37, 0x00, 0x2A, 0xAA, 0xD0, + 0x1A, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC9, 0xF8, 0x00, 0x20, 0x00, 0x2A, + 0xA3, 0xD1, 0x00, 0x2B, 0xA1, 0xD0, 0x62, 0xB6, 0x13, 0x4B, 0xD3, 0xF8, + 0xA0, 0x27, 0x00, 0x2A, 0xA0, 0xD1, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD9, 0xF8, + 0x00, 0x30, 0x4F, 0xF4, 0x00, 0x00, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, + 0x1B, 0xF0, 0x8A, 0xF9, 0x04, 0x20, 0x1B, 0xF0, 0x63, 0xF9, 0xD9, 0xF8, + 0x00, 0x30, 0x3B, 0xB1, 0x07, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, + 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, + 0xB0, 0x82, 0x15, 0x00, 0x58, 0x58, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0xF8, 0x5F, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x34, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0xD8, 0x80, + 0xDF, 0xF8, 0xD8, 0x90, 0xDF, 0xF8, 0xD8, 0xA0, 0xD9, 0xF8, 0x08, 0x3C, + 0x00, 0x2B, 0x41, 0xD0, 0x1F, 0x89, 0x5D, 0x68, 0xBF, 0xB1, 0x00, 0x24, + 0x26, 0x46, 0x23, 0x46, 0xB3, 0x42, 0xAB, 0x46, 0x04, 0xF1, 0x01, 0x04, + 0x6D, 0x68, 0x08, 0xD1, 0xDA, 0xF8, 0x8C, 0x32, 0x98, 0x47, 0x9B, 0xF8, + 0x0B, 0x30, 0x03, 0xF0, 0x7F, 0x03, 0x1E, 0x44, 0xB6, 0xB2, 0x58, 0x46, + 0xFF, 0xF7, 0x0A, 0xFC, 0xA3, 0xB2, 0xBB, 0x42, 0xEA, 0xD3, 0xEF, 0xF3, + 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1F, 0x4A, 0x01, 0x23, + 0x13, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x1E, 0x48, 0x01, 0x33, 0xC8, 0xF8, + 0x00, 0x30, 0x1B, 0xF0, 0xF7, 0xF9, 0x99, 0xF8, 0x02, 0x3C, 0xD8, 0xF8, + 0x00, 0x20, 0x01, 0x3B, 0x89, 0xF8, 0x02, 0x3C, 0x00, 0x2A, 0xC7, 0xD0, + 0x15, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC8, 0xF8, 0x00, 0x20, 0x00, 0x2A, + 0xC0, 0xD1, 0x00, 0x2B, 0xBE, 0xD0, 0x62, 0xB6, 0xD9, 0xF8, 0x08, 0x3C, + 0x00, 0x2B, 0xBD, 0xD1, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, + 0x10, 0x20, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x1B, 0xF0, 0x0E, 0xF9, + 0xD8, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x05, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, + 0xF8, 0x8F, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x84, 0x42, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0xB4, 0x80, 0x2A, 0x4E, 0xC1, 0x46, + 0xA8, 0xF1, 0x06, 0x07, 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0x33, 0xD0, + 0x1D, 0x89, 0x5C, 0x68, 0x7D, 0xB1, 0x4F, 0xF0, 0x00, 0x0B, 0x20, 0x68, + 0xA2, 0x46, 0x0B, 0xF1, 0x01, 0x0B, 0x64, 0x68, 0xFF, 0xF7, 0x5E, 0xFA, + 0x50, 0x46, 0xFF, 0xF7, 0x9D, 0xFB, 0x1F, 0xFA, 0x8B, 0xF2, 0xAA, 0x42, + 0xF1, 0xD3, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x1B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x33, 0x68, 0x48, 0x46, 0x01, 0x33, + 0x33, 0x60, 0x1B, 0xF0, 0x8B, 0xF9, 0x3B, 0x78, 0x32, 0x68, 0x01, 0x3B, + 0x3B, 0x70, 0x00, 0x2A, 0xD4, 0xD0, 0x14, 0x4B, 0x01, 0x3A, 0x1B, 0x68, + 0x32, 0x60, 0x00, 0x2A, 0xCE, 0xD1, 0x00, 0x2B, 0xCC, 0xD0, 0x62, 0xB6, + 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0xCB, 0xD1, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0B, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x33, 0x68, 0x08, 0x20, 0x01, 0x33, 0x33, 0x60, 0x1B, 0xF0, 0xA8, 0xF8, + 0x33, 0x68, 0x33, 0xB1, 0x05, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, 0x00, 0xBF, + 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x94, 0x4E, 0x17, 0x00, + 0x10, 0xB5, 0x04, 0x20, 0x1B, 0xF0, 0x92, 0xF8, 0x03, 0x4B, 0x04, 0x49, + 0xD3, 0xF8, 0x10, 0x31, 0x03, 0x48, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0x88, 0x1A, 0x17, 0x00, 0x10, 0x60, 0x17, 0x00, 0x28, 0x60, 0x17, 0x00, + 0xF8, 0xB5, 0xA8, 0x4B, 0xA8, 0x4A, 0x1B, 0x68, 0x14, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xB7, 0x81, 0x65, 0x05, 0x18, 0xD5, + 0xA4, 0x4A, 0x13, 0x68, 0x98, 0x00, 0xFC, 0xD4, 0xA3, 0x4B, 0xA2, 0x49, + 0x13, 0x60, 0x0B, 0x68, 0x13, 0xF0, 0x00, 0x53, 0xFB, 0xD1, 0xA1, 0x49, + 0xA1, 0x48, 0x0A, 0x68, 0x42, 0xF0, 0x10, 0x02, 0x0A, 0x60, 0x02, 0x78, + 0x02, 0xB1, 0x03, 0x70, 0x9E, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x40, 0xF0, + 0xE0, 0x81, 0x21, 0x05, 0x09, 0xD5, 0x97, 0x4A, 0x13, 0x68, 0x9B, 0x00, + 0xFC, 0xD4, 0x9A, 0x4B, 0x94, 0x49, 0x13, 0x60, 0x0B, 0x68, 0x9F, 0x00, + 0xFC, 0xD4, 0xE2, 0x04, 0x05, 0xD5, 0x94, 0x49, 0x96, 0x4B, 0x97, 0x4A, + 0x01, 0x20, 0x08, 0x70, 0x1A, 0x60, 0x66, 0x06, 0x04, 0xD5, 0x95, 0x4B, + 0x95, 0x48, 0x19, 0x68, 0x1C, 0xF0, 0x9C, 0xFA, 0x14, 0xF4, 0x9B, 0x7F, + 0x40, 0xF0, 0x89, 0x81, 0xA5, 0x05, 0x00, 0xF1, 0x8D, 0x81, 0x20, 0x06, + 0x00, 0xF1, 0x94, 0x81, 0x21, 0x04, 0x00, 0xF1, 0x9F, 0x81, 0xE2, 0x02, + 0x00, 0xF1, 0xA6, 0x81, 0xA3, 0x02, 0x03, 0xD5, 0x8B, 0x4B, 0x4F, 0xF4, + 0x00, 0x12, 0x1A, 0x60, 0xE7, 0x03, 0x41, 0xD5, 0x89, 0x4B, 0x93, 0xF8, + 0x11, 0x15, 0x93, 0xF8, 0x12, 0x25, 0x91, 0x42, 0x80, 0xF0, 0xB1, 0x81, + 0x93, 0xF8, 0x10, 0x05, 0x85, 0x4A, 0x86, 0x4D, 0x86, 0x4E, 0x01, 0x30, + 0xA2, 0xFB, 0x00, 0x72, 0x92, 0x09, 0x02, 0xEB, 0xC2, 0x02, 0x02, 0xEB, + 0xC2, 0x02, 0x82, 0x1A, 0x01, 0x31, 0x83, 0xF8, 0x11, 0x15, 0x83, 0xF8, + 0x10, 0x25, 0x03, 0xEB, 0x02, 0x11, 0x30, 0x68, 0x2E, 0x68, 0x4E, 0x60, + 0x6E, 0x68, 0x8E, 0x60, 0x28, 0x3D, 0xC0, 0xF3, 0x00, 0x26, 0x08, 0x73, + 0x4E, 0x73, 0x28, 0x68, 0x40, 0xF0, 0x10, 0x00, 0x11, 0x01, 0x28, 0x60, + 0x28, 0x68, 0x86, 0x06, 0xFC, 0xD4, 0x19, 0x44, 0x75, 0x4B, 0x8A, 0x68, + 0x75, 0x48, 0x52, 0x68, 0x1A, 0x60, 0x2B, 0x68, 0x23, 0xF0, 0x10, 0x03, + 0x2B, 0x60, 0x1B, 0xF0, 0x6F, 0xF8, 0x20, 0x20, 0x1A, 0xF0, 0xCA, 0xFF, + 0x69, 0x4B, 0x4F, 0xF4, 0x80, 0x32, 0x1A, 0x60, 0x65, 0x03, 0x4E, 0xD5, + 0x67, 0x4B, 0x93, 0xF8, 0x9D, 0x17, 0x93, 0xF8, 0x9E, 0x27, 0x91, 0x42, + 0x80, 0xF0, 0x7B, 0x81, 0x93, 0xF8, 0x9C, 0x07, 0x68, 0x4A, 0x69, 0x4F, + 0x69, 0x4D, 0xDF, 0xF8, 0xE0, 0xC1, 0x01, 0x30, 0xA2, 0xFB, 0x00, 0x62, + 0x56, 0x09, 0x06, 0xEB, 0x86, 0x06, 0xA0, 0xEB, 0xC6, 0x06, 0x4A, 0x1C, + 0x83, 0xF8, 0x9D, 0x27, 0x83, 0xF8, 0x9C, 0x67, 0x03, 0xEB, 0x06, 0x11, + 0x3A, 0x68, 0x28, 0x68, 0xC1, 0xF8, 0x20, 0x05, 0x06, 0xF1, 0x52, 0x07, + 0x03, 0xEB, 0x07, 0x15, 0xDC, 0xF8, 0x00, 0x10, 0x5C, 0x48, 0x69, 0x60, + 0xC2, 0xF3, 0x00, 0x21, 0x69, 0x72, 0x2A, 0x72, 0x05, 0x68, 0x45, 0xF0, + 0x04, 0x05, 0x05, 0x60, 0x31, 0x01, 0x05, 0x46, 0x2A, 0x68, 0x10, 0x07, + 0xFC, 0xD4, 0x03, 0xEB, 0x07, 0x12, 0x01, 0xF2, 0x1C, 0x51, 0x50, 0x68, + 0x53, 0x4A, 0x40, 0x68, 0x10, 0x60, 0x2A, 0x68, 0x52, 0x48, 0x22, 0xF0, + 0x04, 0x02, 0x19, 0x44, 0x2A, 0x60, 0x1B, 0xF0, 0x1F, 0xF8, 0x4F, 0xF4, + 0x00, 0x00, 0x1A, 0xF0, 0x79, 0xFF, 0x41, 0x4B, 0x4F, 0xF4, 0x80, 0x22, + 0x1A, 0x60, 0xA2, 0x03, 0x1B, 0xD5, 0x4B, 0x4B, 0x1A, 0x78, 0x00, 0x2A, + 0x40, 0xF0, 0x35, 0x81, 0x49, 0x48, 0x90, 0xF8, 0x02, 0x1C, 0x90, 0xF8, + 0x01, 0x2C, 0x91, 0x42, 0xC0, 0xF0, 0xA2, 0x80, 0x46, 0x48, 0x1C, 0xF0, + 0xDF, 0xF9, 0x36, 0x4B, 0x4F, 0xF4, 0x00, 0x32, 0x1A, 0x60, 0x44, 0x4B, + 0x1B, 0x68, 0x23, 0xB9, 0x43, 0x4A, 0x13, 0x78, 0x23, 0xF0, 0x01, 0x03, + 0x13, 0x70, 0x23, 0x03, 0x1D, 0xD5, 0x3C, 0x4B, 0x1A, 0x78, 0x00, 0x2A, + 0x40, 0xF0, 0x09, 0x81, 0x3A, 0x48, 0x41, 0xF6, 0x12, 0x04, 0x41, 0xF6, + 0x11, 0x03, 0x02, 0x5D, 0xC3, 0x5C, 0x93, 0x42, 0x10, 0xD8, 0x11, 0x46, + 0x39, 0x48, 0x1C, 0xF0, 0xBF, 0xF9, 0x26, 0x4B, 0x4F, 0xF4, 0x00, 0x22, + 0x1A, 0x60, 0x37, 0x4B, 0x1B, 0x68, 0x23, 0xB9, 0x33, 0x4A, 0x13, 0x78, + 0x23, 0xF0, 0x02, 0x03, 0x13, 0x70, 0xF8, 0xBD, 0x41, 0xF6, 0x10, 0x05, + 0x32, 0x4B, 0x41, 0x5D, 0x01, 0x31, 0xA3, 0xFB, 0x01, 0x63, 0xDB, 0x09, + 0x03, 0xEB, 0x43, 0x03, 0xA1, 0xEB, 0x83, 0x13, 0x43, 0x55, 0x03, 0xF1, + 0xC1, 0x01, 0x2D, 0x4E, 0x00, 0xEB, 0x01, 0x11, 0x35, 0x68, 0x4D, 0x60, + 0x2B, 0x4D, 0x00, 0xEB, 0x03, 0x13, 0x01, 0x32, 0x2D, 0x68, 0xA3, 0xF8, + 0x18, 0x5C, 0x02, 0x55, 0x28, 0x48, 0x1A, 0xF0, 0xB9, 0xFF, 0x08, 0x20, + 0x1A, 0xF0, 0x14, 0xFF, 0x0E, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, + 0xCF, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x24, 0x00, 0x24, 0x40, + 0x40, 0x00, 0x24, 0x40, 0x01, 0x09, 0x00, 0x32, 0x44, 0x00, 0x24, 0x40, + 0x1C, 0x26, 0x17, 0x00, 0x3C, 0x36, 0x17, 0x00, 0x02, 0x09, 0x00, 0x32, + 0x2C, 0x00, 0x24, 0x40, 0x09, 0x70, 0x00, 0xCF, 0x08, 0x00, 0x24, 0x40, + 0xDC, 0x82, 0x15, 0x00, 0x28, 0x00, 0x24, 0x40, 0x58, 0x58, 0x17, 0x00, + 0xE7, 0x87, 0x45, 0xCA, 0x88, 0x00, 0x24, 0x40, 0x90, 0x00, 0x24, 0x40, + 0x74, 0x00, 0x24, 0x40, 0x6C, 0x5D, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, + 0x84, 0x00, 0x24, 0x40, 0x7C, 0x00, 0x24, 0x40, 0x60, 0x00, 0x24, 0x40, + 0x6C, 0x00, 0x24, 0x40, 0xF8, 0x5F, 0x17, 0x00, 0x1D, 0x26, 0x17, 0x00, + 0x7C, 0x36, 0x17, 0x00, 0x80, 0x83, 0x15, 0x00, 0xA0, 0x00, 0x24, 0x40, + 0x9C, 0x4E, 0x17, 0x00, 0x98, 0x83, 0x15, 0x00, 0x98, 0x00, 0x24, 0x40, + 0xAB, 0xAA, 0xAA, 0xAA, 0xA4, 0x00, 0x24, 0x40, 0xA8, 0x00, 0x24, 0x40, + 0x94, 0x4E, 0x17, 0x00, 0x80, 0x00, 0x24, 0x40, 0x90, 0xF8, 0x00, 0x2C, + 0x4B, 0x4B, 0x4C, 0x4D, 0x01, 0x32, 0xA3, 0xFB, 0x02, 0x63, 0xDB, 0x09, + 0x03, 0xEB, 0x43, 0x03, 0xA2, 0xEB, 0x83, 0x13, 0x00, 0xEB, 0x03, 0x12, + 0x2D, 0x68, 0x55, 0x60, 0x46, 0x4D, 0x80, 0xF8, 0x00, 0x3C, 0x2B, 0x68, + 0x13, 0x81, 0x01, 0x31, 0x80, 0xF8, 0x02, 0x1C, 0x11, 0x46, 0x00, 0xF6, + 0x08, 0x40, 0x1A, 0xF0, 0x49, 0xFF, 0x10, 0x20, 0x1A, 0xF0, 0xA4, 0xFE, + 0x3F, 0x4B, 0x4F, 0xF4, 0x00, 0x32, 0x1A, 0x60, 0x3F, 0xE7, 0x00, 0x2C, + 0x7F, 0xF4, 0x46, 0xAE, 0x3C, 0x49, 0x3D, 0x48, 0x26, 0x22, 0x1C, 0xF0, + 0x8D, 0xFB, 0x14, 0xF4, 0x9B, 0x7F, 0x3F, 0xF4, 0x77, 0xAE, 0x3A, 0x48, + 0x21, 0x46, 0x1C, 0xF0, 0x0B, 0xF9, 0xA5, 0x05, 0x7F, 0xF5, 0x73, 0xAE, + 0x37, 0x48, 0x1C, 0xF0, 0x05, 0xF9, 0x32, 0x4B, 0x4F, 0xF4, 0x00, 0x72, + 0x20, 0x06, 0x1A, 0x60, 0x7F, 0xF5, 0x6C, 0xAE, 0x33, 0x48, 0x1C, 0xF0, + 0xFB, 0xF8, 0x33, 0x4A, 0x2C, 0x49, 0x13, 0x68, 0x80, 0x20, 0x23, 0xF0, + 0x10, 0x03, 0x13, 0x60, 0x08, 0x60, 0x21, 0x04, 0x7F, 0xF5, 0x61, 0xAE, + 0x2E, 0x48, 0x1C, 0xF0, 0xED, 0xF8, 0x26, 0x4B, 0x4F, 0xF4, 0x00, 0x42, + 0x1A, 0x60, 0xE2, 0x02, 0x7F, 0xF5, 0x5A, 0xAE, 0x2A, 0x4A, 0x2B, 0x4B, + 0x15, 0x68, 0x2B, 0x48, 0x1A, 0x78, 0x29, 0x46, 0xFD, 0xF7, 0x14, 0xFF, + 0x29, 0x4A, 0x1E, 0x4B, 0x15, 0x60, 0x4F, 0xF4, 0x80, 0x12, 0x1A, 0x60, + 0x4A, 0xE6, 0x27, 0x4A, 0x01, 0x21, 0x59, 0x70, 0x13, 0x68, 0x26, 0x49, + 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x02, 0x20, 0x1C, 0xF0, 0x1C, 0xF9, + 0x13, 0xE6, 0x23, 0x48, 0x1C, 0xF0, 0xC8, 0xF8, 0x13, 0x4B, 0x4F, 0xF4, + 0x80, 0x32, 0x1A, 0x60, 0x80, 0xE6, 0x00, 0x22, 0x02, 0x20, 0x1A, 0x70, + 0xFD, 0xF7, 0x86, 0xFF, 0xF0, 0xE6, 0x1D, 0x48, 0x1C, 0xF0, 0xBA, 0xF8, + 0x0C, 0x4B, 0x4F, 0xF4, 0x80, 0x22, 0x1A, 0x60, 0xC3, 0xE6, 0x00, 0x22, + 0x02, 0x20, 0x1A, 0x70, 0xFD, 0xF7, 0x78, 0xFF, 0x17, 0x48, 0x90, 0xF8, + 0x02, 0x1C, 0x90, 0xF8, 0x01, 0x2C, 0x91, 0x42, 0xBF, 0xF4, 0xC6, 0xAE, + 0x66, 0xE7, 0x00, 0xBF, 0xAB, 0xAA, 0xAA, 0xAA, 0xAC, 0x00, 0x24, 0x40, + 0xB0, 0x00, 0x24, 0x40, 0x28, 0x00, 0x24, 0x40, 0x70, 0x79, 0x15, 0x00, + 0xC0, 0x82, 0x15, 0x00, 0xEC, 0x82, 0x15, 0x00, 0x08, 0x83, 0x15, 0x00, + 0x1C, 0x83, 0x15, 0x00, 0x4C, 0x00, 0x24, 0x40, 0x30, 0x83, 0x15, 0x00, + 0x30, 0x00, 0x24, 0x40, 0x45, 0x00, 0x24, 0x40, 0x48, 0x83, 0x15, 0x00, + 0x34, 0x00, 0x24, 0x40, 0x10, 0x00, 0x58, 0x40, 0xD0, 0x82, 0x15, 0x00, + 0xCC, 0x7C, 0x15, 0x00, 0x64, 0x83, 0x15, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0xF8, 0xB5, 0x47, 0x4B, 0x1A, 0x68, 0x42, 0xF0, 0x10, 0x02, 0x1A, 0x60, + 0x1B, 0x68, 0x5A, 0x07, 0x7F, 0xD4, 0x44, 0x49, 0x0B, 0x68, 0x9B, 0x00, + 0xFC, 0xD4, 0x43, 0x4B, 0x41, 0x4A, 0x0B, 0x60, 0x13, 0x68, 0x9F, 0x00, + 0xFC, 0xD4, 0x13, 0x68, 0x9E, 0x07, 0x03, 0xD4, 0x3C, 0x4A, 0x13, 0x68, + 0xDD, 0x07, 0xFC, 0xD5, 0x3A, 0x4A, 0x3D, 0x4D, 0x13, 0x68, 0x3D, 0x48, + 0x3D, 0x49, 0x3E, 0x4C, 0x3E, 0x4F, 0x3F, 0x4E, 0x43, 0xF0, 0x02, 0x03, + 0x13, 0x60, 0x2B, 0x68, 0x03, 0x40, 0x43, 0xF0, 0x10, 0x03, 0x2B, 0x60, + 0x2B, 0x68, 0x9B, 0xB2, 0x43, 0xF4, 0x80, 0x13, 0x2B, 0x60, 0x0B, 0x68, + 0x03, 0x40, 0x43, 0xF0, 0x10, 0x03, 0x0B, 0x60, 0x0B, 0x68, 0x9B, 0xB2, + 0x43, 0xF4, 0x80, 0x13, 0x0B, 0x60, 0x4F, 0xF6, 0xFF, 0x73, 0x23, 0x60, + 0x52, 0xF8, 0x34, 0x3C, 0x03, 0x40, 0x43, 0xF4, 0x88, 0x53, 0x43, 0xF0, + 0x11, 0x03, 0x42, 0xF8, 0x34, 0x3C, 0x03, 0x23, 0xAB, 0x64, 0x4F, 0xF4, + 0xFC, 0x53, 0x3B, 0x60, 0x4F, 0xF0, 0xFF, 0x33, 0x33, 0x60, 0x2A, 0x48, + 0x2A, 0x4B, 0x23, 0x62, 0x00, 0x24, 0x20, 0x23, 0x04, 0x60, 0x41, 0xF8, + 0xAC, 0x3C, 0x52, 0xF8, 0x34, 0x3C, 0x27, 0x4C, 0x27, 0x48, 0x23, 0xF4, + 0x7F, 0x03, 0x43, 0xF4, 0x80, 0x33, 0x42, 0xF8, 0x34, 0x3C, 0x41, 0xF8, + 0x84, 0x4C, 0x1C, 0xF0, 0x1B, 0xF8, 0x17, 0x4B, 0x17, 0x49, 0x1A, 0x68, + 0x94, 0x00, 0xFC, 0xD4, 0x19, 0x60, 0x1A, 0x68, 0x90, 0x00, 0xFC, 0xD4, + 0x1A, 0x68, 0x12, 0xF0, 0x06, 0x0F, 0xF4, 0xD0, 0x10, 0x4A, 0x13, 0x68, + 0x99, 0x00, 0xFC, 0xD4, 0x1A, 0x4B, 0x0E, 0x49, 0x13, 0x60, 0x0B, 0x68, + 0x9B, 0x00, 0xFC, 0xD4, 0x18, 0x48, 0x1C, 0xF0, 0x01, 0xF8, 0x18, 0x4B, + 0x18, 0x49, 0x9A, 0x68, 0xD1, 0xF8, 0xFC, 0x12, 0x91, 0x67, 0xA3, 0xF5, + 0x40, 0x63, 0x4F, 0xF4, 0x80, 0x42, 0x1A, 0x60, 0xF8, 0xBD, 0x14, 0x4B, + 0x0C, 0x4A, 0x1A, 0x60, 0xFE, 0xF7, 0x9A, 0xFB, 0xED, 0xE7, 0x00, 0xBF, + 0x44, 0x00, 0x24, 0x40, 0x40, 0x00, 0x24, 0x40, 0x00, 0x02, 0x00, 0x20, + 0x04, 0x00, 0x24, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x24, 0x40, + 0x0C, 0x00, 0x24, 0x40, 0xB4, 0x00, 0x24, 0x40, 0x28, 0x00, 0x24, 0x40, + 0x38, 0x00, 0x24, 0x40, 0x09, 0x60, 0x00, 0xCF, 0x00, 0x00, 0x20, 0x4E, + 0xB8, 0x83, 0x15, 0x00, 0x06, 0x03, 0x00, 0x30, 0xCC, 0x83, 0x15, 0x00, + 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x00, 0x24, 0x40, + 0x2D, 0xE9, 0xF0, 0x41, 0x07, 0x46, 0x82, 0xB0, 0xEF, 0xF3, 0x10, 0x83, + 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x24, 0x4B, 0x01, 0x20, 0x18, 0x60, + 0x23, 0x4E, 0x24, 0x4B, 0x35, 0x68, 0x1B, 0x68, 0x01, 0x35, 0x35, 0x60, + 0x1C, 0x78, 0x01, 0x2C, 0x2B, 0xD0, 0x21, 0x4C, 0x23, 0x68, 0x43, 0xF4, + 0x80, 0x73, 0x23, 0x60, 0x23, 0x68, 0x9B, 0x05, 0xFC, 0xD4, 0x1E, 0x4B, + 0x18, 0x68, 0xC8, 0xB1, 0x1D, 0x4B, 0x1E, 0x4C, 0xD3, 0xF8, 0x04, 0x0C, + 0x47, 0x60, 0x20, 0x68, 0x01, 0x44, 0x21, 0x60, 0x17, 0x49, 0xC3, 0xF8, + 0x04, 0x2C, 0x0B, 0x68, 0x23, 0xF4, 0x80, 0x73, 0x0B, 0x60, 0x35, 0xB1, + 0x10, 0x4B, 0x01, 0x3D, 0x1B, 0x68, 0x35, 0x60, 0x0D, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x11, 0x48, 0x1F, 0x60, + 0x04, 0x68, 0x0F, 0x4B, 0x21, 0x44, 0x01, 0x60, 0xE6, 0xE7, 0xDF, 0xF8, + 0x3C, 0x80, 0x98, 0xF8, 0x00, 0x30, 0x00, 0x2B, 0xCD, 0xD1, 0x02, 0x20, + 0xCD, 0xE9, 0x00, 0x12, 0xFD, 0xF7, 0x3C, 0xFE, 0xDD, 0xE9, 0x00, 0x12, + 0x35, 0x68, 0x88, 0xF8, 0x00, 0x40, 0xC2, 0xE7, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x60, 0x00, 0x24, 0x40, + 0xA0, 0x00, 0x24, 0x40, 0x7C, 0x36, 0x17, 0x00, 0x9C, 0x00, 0x24, 0x40, + 0x1D, 0x26, 0x17, 0x00, 0x30, 0xB4, 0x85, 0x68, 0x06, 0x4C, 0xC3, 0xF3, + 0x0B, 0x03, 0x2C, 0x40, 0x02, 0x9D, 0x1C, 0x43, 0x44, 0xEA, 0xC5, 0x74, + 0x84, 0x60, 0xC0, 0xE9, 0x00, 0x12, 0x30, 0xBC, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0xF0, 0xFF, 0x7F, 0xF8, 0xB5, 0x04, 0x46, 0xEF, 0xF3, 0x10, 0x83, + 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x23, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x22, 0x4D, 0x23, 0x4B, 0x29, 0x68, 0x1B, 0x68, 0x01, 0x31, 0x29, 0x60, + 0x1E, 0x78, 0x01, 0x2E, 0x30, 0xD0, 0x20, 0x4A, 0x13, 0x68, 0x43, 0xF0, + 0x40, 0x03, 0x13, 0x60, 0x13, 0x68, 0x1B, 0x06, 0xFC, 0xD4, 0x1D, 0x4B, + 0x1A, 0x68, 0xF2, 0xB1, 0x1C, 0x4B, 0x1D, 0x48, 0x41, 0xF6, 0x14, 0x02, + 0x9A, 0x58, 0x54, 0x60, 0x02, 0x68, 0x01, 0x32, 0x02, 0x60, 0x41, 0xF6, + 0x14, 0x02, 0x15, 0x4E, 0x9C, 0x50, 0x18, 0x48, 0x32, 0x68, 0x03, 0x78, + 0x22, 0xF0, 0x40, 0x02, 0x43, 0xF0, 0x02, 0x03, 0x32, 0x60, 0x03, 0x70, + 0x31, 0xB1, 0x0C, 0x4B, 0x01, 0x39, 0x1B, 0x68, 0x29, 0x60, 0x09, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0xF8, 0xBD, 0x0E, 0x48, 0x1C, 0x60, 0x02, 0x68, + 0x0B, 0x4B, 0x01, 0x32, 0x02, 0x60, 0xE2, 0xE7, 0x0C, 0x4F, 0x3B, 0x78, + 0x00, 0x2B, 0xCA, 0xD1, 0x02, 0x20, 0xFD, 0xF7, 0xC9, 0xFD, 0x29, 0x68, + 0x3E, 0x70, 0xC4, 0xE7, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x74, 0x36, 0x17, 0x00, 0x60, 0x00, 0x24, 0x40, 0x98, 0x00, 0x24, 0x40, + 0x7C, 0x36, 0x17, 0x00, 0x94, 0x00, 0x24, 0x40, 0x9C, 0x4E, 0x17, 0x00, + 0x1D, 0x26, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x80, 0x46, 0x04, 0x20, + 0x0F, 0x46, 0x15, 0x46, 0xFE, 0xF7, 0xF0, 0xFD, 0x68, 0xB3, 0x04, 0x46, + 0xFE, 0xF7, 0x34, 0xFF, 0x06, 0x46, 0x00, 0xB3, 0xC5, 0xF3, 0x03, 0x23, + 0x4F, 0xF0, 0x00, 0x09, 0x25, 0x70, 0x63, 0x70, 0x2A, 0x46, 0x84, 0xF8, + 0x02, 0x80, 0x39, 0x46, 0x84, 0xF8, 0x03, 0x90, 0x20, 0x1D, 0x2E, 0xF0, + 0xF9, 0xFB, 0xB2, 0x68, 0x0E, 0x4B, 0xC6, 0xF8, 0x04, 0x90, 0x04, 0x35, + 0x13, 0x40, 0xC5, 0xF3, 0x0B, 0x05, 0x1D, 0x43, 0x45, 0xF0, 0x00, 0x45, + 0x34, 0x60, 0xB5, 0x60, 0x30, 0x46, 0xBD, 0xE8, 0xF8, 0x43, 0xFF, 0xF7, + 0x71, 0xBF, 0x07, 0x48, 0x1C, 0xF0, 0xCC, 0xFF, 0x20, 0x46, 0xBD, 0xE8, + 0xF8, 0x43, 0xFE, 0xF7, 0xE7, 0xBD, 0xBD, 0xE8, 0xF8, 0x43, 0x03, 0x48, + 0x1C, 0xF0, 0xC2, 0xBF, 0x00, 0xF0, 0xFF, 0x7F, 0xEC, 0x83, 0x15, 0x00, + 0xD8, 0x83, 0x15, 0x00, 0x05, 0x4B, 0x1B, 0x78, 0x33, 0xB9, 0x05, 0x4B, + 0x18, 0x68, 0x6F, 0xEA, 0x10, 0x10, 0x00, 0xF0, 0x01, 0x00, 0x70, 0x47, + 0x01, 0x20, 0x70, 0x47, 0x1C, 0x26, 0x17, 0x00, 0x44, 0x00, 0x24, 0x40, + 0x44, 0x4A, 0x13, 0x69, 0x43, 0xF0, 0x01, 0x03, 0x30, 0xB4, 0x13, 0x61, + 0x13, 0x69, 0xD9, 0x07, 0xFC, 0xD4, 0x40, 0x4A, 0x13, 0x69, 0x00, 0x2B, + 0xFC, 0xDA, 0xD3, 0x68, 0x3E, 0x48, 0x3D, 0x49, 0x43, 0xF0, 0x80, 0x43, + 0x43, 0xF0, 0x07, 0x03, 0xD3, 0x60, 0xD3, 0x68, 0x18, 0x43, 0xD0, 0x60, + 0xD3, 0x68, 0x23, 0xF4, 0x71, 0x53, 0x23, 0xF0, 0x28, 0x03, 0xD3, 0x60, + 0x13, 0x69, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x61, 0x0B, 0x69, 0xDA, 0x07, + 0xFC, 0xD4, 0x32, 0x4B, 0x1A, 0x69, 0x00, 0x2A, 0xFC, 0xDA, 0xDA, 0x68, + 0x30, 0x48, 0x2F, 0x49, 0x42, 0xF0, 0x80, 0x42, 0x42, 0xF0, 0x07, 0x02, + 0xDA, 0x60, 0xDA, 0x68, 0x10, 0x43, 0xD8, 0x60, 0xDA, 0x68, 0x22, 0xF4, + 0x71, 0x52, 0x22, 0xF0, 0x28, 0x02, 0xDA, 0x60, 0xD3, 0xF8, 0x00, 0x28, + 0x22, 0xF4, 0xC0, 0x52, 0x22, 0xF0, 0x03, 0x02, 0xC3, 0xF8, 0x00, 0x28, + 0xD3, 0xF8, 0x00, 0x28, 0x42, 0xF4, 0x00, 0x02, 0x42, 0xF0, 0x04, 0x02, + 0xC3, 0xF8, 0x00, 0x28, 0x00, 0x24, 0x4F, 0xF0, 0xFF, 0x35, 0x01, 0x22, + 0x9C, 0x61, 0x01, 0x2A, 0x5D, 0x61, 0xC3, 0xF8, 0x1C, 0x48, 0xC3, 0xF8, + 0x14, 0x48, 0xC3, 0xF8, 0x10, 0x48, 0xA2, 0xF1, 0x02, 0x03, 0x28, 0x46, + 0x01, 0xEB, 0x43, 0x13, 0x0B, 0xD0, 0x05, 0x2A, 0xC3, 0xF8, 0x28, 0x0B, + 0xC3, 0xF8, 0x28, 0x09, 0x0A, 0xD0, 0x01, 0x32, 0x93, 0x1E, 0x01, 0x2A, + 0x01, 0xEB, 0x43, 0x13, 0xF3, 0xD1, 0xC1, 0xF8, 0x08, 0x0B, 0xC1, 0xF8, + 0x08, 0x09, 0xF4, 0xE7, 0x0F, 0x48, 0x10, 0x4B, 0x0C, 0x4A, 0x88, 0x61, + 0x4B, 0x63, 0x53, 0x6B, 0x1B, 0x01, 0xFC, 0xD5, 0xD2, 0xF8, 0x04, 0x38, + 0x23, 0xF0, 0x02, 0x03, 0xC2, 0xF8, 0x04, 0x38, 0xD2, 0xF8, 0x04, 0x38, + 0x2E, 0x21, 0x43, 0xF4, 0x00, 0x43, 0xC2, 0xF8, 0x04, 0x38, 0x91, 0x60, + 0x93, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x30, 0xBC, 0x93, 0x60, 0x70, 0x47, + 0x00, 0x00, 0x20, 0x40, 0x10, 0x00, 0x06, 0x40, 0x00, 0x38, 0x00, 0x80, + 0x41, 0x00, 0x44, 0x02, 0x0A, 0x4B, 0x0B, 0x49, 0x1A, 0x68, 0x08, 0x68, + 0x0A, 0x49, 0x0B, 0x4B, 0xC2, 0xE9, 0x00, 0x10, 0xC3, 0xF8, 0x14, 0x2B, + 0xD3, 0xF8, 0x08, 0x2B, 0xC3, 0xF8, 0x08, 0x2B, 0xD3, 0xF8, 0x00, 0x2B, + 0x42, 0xF0, 0x04, 0x42, 0xC3, 0xF8, 0x00, 0x2B, 0x70, 0x47, 0x00, 0xBF, + 0x5C, 0x60, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, 0x40, 0x00, 0x00, 0x0A, + 0x00, 0x00, 0x20, 0x40, 0x12, 0x4A, 0x13, 0x4B, 0x11, 0x68, 0x18, 0x68, + 0x12, 0x4B, 0x30, 0xB4, 0x12, 0x4C, 0x4F, 0xF0, 0x20, 0x62, 0x00, 0x25, + 0x65, 0x81, 0xC1, 0xE9, 0x00, 0x20, 0x1A, 0x69, 0x22, 0xF4, 0xFC, 0x62, + 0x42, 0xF0, 0x20, 0x02, 0x1A, 0x61, 0x18, 0x69, 0x10, 0xF0, 0x20, 0x00, + 0xFB, 0xD1, 0xD3, 0xF8, 0x08, 0x29, 0xC3, 0xF8, 0x08, 0x29, 0xC3, 0xF8, + 0x14, 0x19, 0xD3, 0xF8, 0x00, 0x29, 0x42, 0xF0, 0x04, 0x42, 0x30, 0xBC, + 0xC3, 0xF8, 0x00, 0x29, 0x70, 0x47, 0x00, 0xBF, 0x40, 0x60, 0x17, 0x00, + 0x58, 0x60, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0xB4, 0x27, 0x17, 0x00, + 0x70, 0xB5, 0x0B, 0x4B, 0x04, 0x46, 0x01, 0x38, 0x03, 0xEB, 0x00, 0x10, + 0x10, 0x22, 0x05, 0x7A, 0x00, 0x21, 0xF7, 0xF7, 0x4D, 0xFB, 0x55, 0xB1, + 0x06, 0x48, 0x00, 0xEB, 0x84, 0x04, 0x23, 0x6A, 0x2B, 0xB1, 0x00, 0x21, + 0xBD, 0xE8, 0x70, 0x40, 0x08, 0x46, 0x01, 0x22, 0x18, 0x47, 0x70, 0xBD, + 0x08, 0x28, 0x17, 0x00, 0x20, 0x26, 0x17, 0x00, 0x70, 0xB5, 0x0B, 0x4B, + 0x04, 0x46, 0x01, 0x38, 0x03, 0xEB, 0x00, 0x10, 0x10, 0x22, 0xC5, 0x7A, + 0x00, 0x21, 0xF7, 0xF7, 0x31, 0xFB, 0x55, 0xB1, 0x06, 0x48, 0x00, 0xEB, + 0x84, 0x04, 0x23, 0x6B, 0x2B, 0xB1, 0x00, 0x21, 0xBD, 0xE8, 0x70, 0x40, + 0x08, 0x46, 0x01, 0x22, 0x18, 0x47, 0x70, 0xBD, 0xC8, 0x27, 0x17, 0x00, + 0x20, 0x26, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x24, 0x82, 0xB0, 0xE0, 0xB2, + 0x01, 0x90, 0x01, 0x34, 0xFF, 0xF7, 0xC0, 0xFF, 0x01, 0x98, 0xFF, 0xF7, + 0xD9, 0xFF, 0x05, 0x2C, 0xF5, 0xD1, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xBF, + 0x38, 0xB5, 0x0C, 0x46, 0x00, 0x28, 0x39, 0xD0, 0x09, 0xBB, 0x1D, 0x4B, + 0x1D, 0x4A, 0x1B, 0x68, 0x51, 0x81, 0x1D, 0x4D, 0x4F, 0xF0, 0x42, 0x42, + 0x1A, 0x60, 0xDA, 0x78, 0x42, 0xF0, 0x04, 0x02, 0xDA, 0x70, 0xD9, 0x78, + 0x28, 0x68, 0x19, 0x4A, 0x58, 0x60, 0x01, 0xF0, 0x07, 0x01, 0x41, 0xF0, + 0x08, 0x01, 0xD9, 0x70, 0xD2, 0xF8, 0x08, 0x19, 0xC2, 0xF8, 0x08, 0x19, + 0xC2, 0xF8, 0x14, 0x39, 0xD2, 0xF8, 0x00, 0x39, 0x43, 0xF0, 0x04, 0x43, + 0xC2, 0xF8, 0x00, 0x39, 0x38, 0xBD, 0x0E, 0x4D, 0x01, 0x46, 0x22, 0x46, + 0x28, 0x68, 0x2E, 0xF0, 0x71, 0xFA, 0x09, 0x4B, 0x09, 0x4A, 0x1B, 0x68, + 0x54, 0x81, 0x4F, 0xF0, 0x40, 0x41, 0xC2, 0x22, 0x40, 0x2C, 0x19, 0x60, + 0x1C, 0x80, 0xDA, 0x70, 0xD3, 0xD1, 0xD2, 0xB2, 0x6F, 0xF3, 0x82, 0x02, + 0xDA, 0x70, 0xD2, 0xE7, 0x02, 0x4D, 0xEC, 0xE7, 0x40, 0x60, 0x17, 0x00, + 0xB4, 0x27, 0x17, 0x00, 0x58, 0x60, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, + 0xF0, 0xB4, 0x80, 0xB3, 0x27, 0x4D, 0x43, 0x1E, 0x05, 0xEB, 0x43, 0x16, + 0x08, 0x36, 0x05, 0xEB, 0x43, 0x15, 0x2F, 0x68, 0x17, 0xF0, 0x80, 0x2F, + 0x22, 0xD0, 0x23, 0x4B, 0x3B, 0x40, 0xB3, 0xF5, 0x00, 0x3F, 0x2C, 0xD0, + 0x21, 0x4C, 0xD4, 0xF8, 0x04, 0x38, 0x43, 0xF4, 0x00, 0x73, 0xC4, 0xF8, + 0x04, 0x38, 0x63, 0x69, 0x1B, 0x06, 0xFC, 0xD5, 0x2B, 0x68, 0x19, 0x43, + 0x41, 0xF0, 0x00, 0x61, 0x41, 0xF4, 0x00, 0x41, 0x29, 0x60, 0x1A, 0xB1, + 0x2B, 0x68, 0x23, 0xEA, 0x02, 0x02, 0x2A, 0x60, 0x60, 0xB9, 0x16, 0x4A, + 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF4, 0x80, 0x63, 0xC2, 0xF8, 0x04, 0x38, + 0xF0, 0xBC, 0xFF, 0xF7, 0x3D, 0xBF, 0x12, 0x4E, 0x12, 0x4D, 0xD2, 0xE7, + 0x00, 0x2F, 0x0C, 0xDB, 0x3B, 0x04, 0xEE, 0xD4, 0x2B, 0x68, 0x23, 0xF4, + 0x00, 0x43, 0x2B, 0x60, 0xE9, 0xE7, 0xB1, 0xF1, 0x00, 0x6F, 0xCF, 0xD1, + 0x00, 0x2A, 0xCD, 0xD1, 0xEA, 0xE7, 0x02, 0x23, 0x33, 0x60, 0x2B, 0x68, + 0x43, 0xF0, 0x80, 0x43, 0x2B, 0x60, 0x33, 0x68, 0x9A, 0x07, 0xFC, 0xD5, + 0x3B, 0x04, 0xD8, 0xD4, 0xE8, 0xE7, 0x00, 0xBF, 0x20, 0x0B, 0x20, 0x40, + 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x20, 0x40, 0x08, 0x0B, 0x20, 0x40, + 0x00, 0x0B, 0x20, 0x40, 0x70, 0xB4, 0x70, 0xB3, 0x44, 0x1E, 0x36, 0x4B, + 0x66, 0x01, 0x03, 0xEB, 0x44, 0x14, 0xF5, 0x58, 0x15, 0xF0, 0x80, 0x2F, + 0x4D, 0xD0, 0x08, 0x36, 0x33, 0x44, 0x32, 0x4E, 0x2E, 0x40, 0xB6, 0xF5, + 0x00, 0x3F, 0x29, 0xD1, 0xB1, 0xF1, 0x00, 0x6F, 0x46, 0xD0, 0x40, 0x26, + 0x1E, 0x60, 0x23, 0x68, 0x0B, 0x43, 0x43, 0xF0, 0x00, 0x63, 0x43, 0xF4, + 0x00, 0x43, 0x23, 0x60, 0x00, 0x2A, 0x45, 0xD1, 0x29, 0x4A, 0x83, 0x01, + 0x43, 0xF0, 0x20, 0x03, 0x13, 0x61, 0x13, 0x69, 0x99, 0x06, 0xFC, 0xD4, + 0x2B, 0x04, 0x03, 0xD4, 0x23, 0x68, 0x23, 0xF4, 0x00, 0x43, 0x23, 0x60, + 0x48, 0xBB, 0x70, 0xBC, 0x70, 0x47, 0x22, 0x4C, 0x25, 0x68, 0x15, 0xF0, + 0x80, 0x2F, 0xF8, 0xD0, 0x1D, 0x4E, 0x20, 0x4B, 0x2E, 0x40, 0xB6, 0xF5, + 0x00, 0x3F, 0xD5, 0xD0, 0x40, 0x26, 0x1E, 0x60, 0x26, 0x68, 0x31, 0x43, + 0x41, 0xF0, 0x00, 0x61, 0x41, 0xF4, 0x00, 0x41, 0x00, 0x2D, 0x21, 0x60, + 0xD6, 0xDA, 0xAE, 0x03, 0x04, 0xD4, 0x19, 0x68, 0x49, 0x06, 0xFC, 0xD5, + 0x40, 0x21, 0x19, 0x60, 0xDA, 0xB9, 0x02, 0x22, 0x1A, 0x60, 0x22, 0x68, + 0x42, 0xF0, 0x80, 0x42, 0x22, 0x60, 0x1A, 0x68, 0x96, 0x07, 0xFC, 0xD5, + 0xC6, 0xE7, 0x70, 0xBC, 0xFF, 0xF7, 0xD4, 0xBE, 0x00, 0x2A, 0xCF, 0xD0, + 0x40, 0x21, 0x19, 0x60, 0x23, 0x68, 0x43, 0xF0, 0x00, 0x63, 0x43, 0xF4, + 0x00, 0x43, 0x23, 0x60, 0x23, 0x68, 0x23, 0xEA, 0x02, 0x02, 0x22, 0x60, + 0xB4, 0xE7, 0x21, 0x68, 0x21, 0xEA, 0x02, 0x02, 0x22, 0x60, 0xDE, 0xE7, + 0x20, 0x09, 0x20, 0x40, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x20, 0x40, + 0x00, 0x09, 0x20, 0x40, 0x08, 0x09, 0x20, 0x40, 0x49, 0xB9, 0x0A, 0x4B, + 0x0A, 0x4A, 0x01, 0x28, 0x0C, 0xBF, 0x18, 0x46, 0x10, 0x46, 0x00, 0x68, + 0xC0, 0xF3, 0x40, 0x50, 0x70, 0x47, 0x01, 0x28, 0x0C, 0xBF, 0x04, 0x48, + 0x04, 0x48, 0x49, 0x01, 0x08, 0x44, 0x00, 0x68, 0xC0, 0xF3, 0x40, 0x50, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x09, 0x20, 0x40, 0x00, 0x0B, 0x20, 0x40, + 0x38, 0xB9, 0x04, 0x29, 0x0D, 0xD8, 0x02, 0x46, 0x08, 0x46, 0x4F, 0xF0, + 0x00, 0x61, 0xFF, 0xF7, 0x07, 0xBF, 0x04, 0x29, 0x05, 0xD8, 0x08, 0x46, + 0x00, 0x22, 0x4F, 0xF0, 0x00, 0x61, 0xFF, 0xF7, 0x5B, 0xBF, 0x70, 0x47, + 0x38, 0xB9, 0x04, 0x29, 0x0D, 0xD8, 0x02, 0x46, 0x08, 0x46, 0x4F, 0xF4, + 0x00, 0x11, 0xFF, 0xF7, 0xF5, 0xBE, 0x04, 0x29, 0x05, 0xD8, 0x08, 0x46, + 0x00, 0x22, 0x4F, 0xF4, 0x00, 0x11, 0xFF, 0xF7, 0x49, 0xBF, 0x70, 0x47, + 0x40, 0xB9, 0x04, 0x29, 0x0F, 0xD8, 0x08, 0x46, 0x4F, 0xF4, 0x00, 0x12, + 0x4F, 0xF0, 0x00, 0x61, 0xFF, 0xF7, 0xE2, 0xBE, 0x04, 0x29, 0x06, 0xD8, + 0x08, 0x46, 0x4F, 0xF4, 0x00, 0x12, 0x4F, 0xF0, 0x00, 0x61, 0xFF, 0xF7, + 0x35, 0xBF, 0x70, 0x47, 0xFF, 0xF7, 0xC6, 0xBF, 0x2D, 0xE9, 0xF8, 0x43, + 0x04, 0x46, 0x0D, 0x46, 0x57, 0x48, 0x00, 0x21, 0x1B, 0xF0, 0x04, 0xFC, + 0x00, 0x2C, 0x00, 0xF0, 0x95, 0x80, 0x23, 0x68, 0x00, 0x2B, 0x7B, 0xD0, + 0x63, 0x68, 0x00, 0x2B, 0x78, 0xD0, 0xA3, 0x68, 0x00, 0x2B, 0x75, 0xD0, + 0x63, 0x69, 0x00, 0x2B, 0x72, 0xD0, 0x4F, 0x4E, 0x33, 0x78, 0x03, 0xF0, + 0xFF, 0x07, 0x00, 0x2B, 0x6F, 0xD1, 0xDF, 0xF8, 0x68, 0x81, 0x21, 0x46, + 0x40, 0x46, 0x01, 0x24, 0x48, 0x22, 0x34, 0x70, 0x2E, 0xF0, 0x06, 0xF9, + 0x48, 0x4B, 0xD3, 0xF8, 0x94, 0x30, 0x00, 0x2B, 0x77, 0xD0, 0x47, 0x48, + 0x1B, 0xF0, 0xDE, 0xFB, 0x46, 0x4B, 0xD3, 0xF8, 0x00, 0x28, 0x12, 0xF4, + 0xFE, 0x6F, 0x5B, 0xD0, 0x44, 0x49, 0x45, 0x4A, 0xD1, 0xF8, 0x00, 0xC0, + 0x44, 0x49, 0x12, 0x68, 0xDF, 0xF8, 0x30, 0x91, 0x09, 0x68, 0xC9, 0xF8, + 0x04, 0x70, 0x04, 0x20, 0xC9, 0xF8, 0x08, 0x70, 0x89, 0xF8, 0x00, 0x70, + 0xC2, 0xF8, 0x04, 0xC0, 0x30, 0x70, 0xC3, 0xF8, 0x14, 0x2B, 0xC8, 0x78, + 0x3C, 0x4A, 0x40, 0xF0, 0xC0, 0x00, 0xD2, 0xF8, 0x00, 0xC0, 0xC8, 0x70, + 0x9C, 0xF8, 0x03, 0x00, 0x39, 0x4A, 0x40, 0xF0, 0xC0, 0x00, 0x17, 0x68, + 0x8C, 0xF8, 0x03, 0x00, 0xF8, 0x78, 0xD2, 0xF8, 0x04, 0xE0, 0x40, 0xF0, + 0xC0, 0x00, 0xF8, 0x70, 0x9E, 0xF8, 0x03, 0x00, 0xD2, 0xE9, 0x02, 0xC7, + 0x40, 0xF0, 0xC0, 0x02, 0x8E, 0xF8, 0x03, 0x20, 0x9C, 0xF8, 0x03, 0x20, + 0x42, 0xF0, 0xC0, 0x02, 0x8C, 0xF8, 0x03, 0x20, 0xFA, 0x78, 0x42, 0xF0, + 0xC0, 0x02, 0xFA, 0x70, 0xC3, 0xF8, 0x14, 0x19, 0xFF, 0xF7, 0x86, 0xFD, + 0xD8, 0xF8, 0x44, 0x30, 0x89, 0xF8, 0x00, 0x40, 0x03, 0xB1, 0x98, 0x47, + 0x26, 0x4B, 0x27, 0x49, 0x9A, 0x68, 0xD1, 0xF8, 0x04, 0x11, 0xD1, 0x67, + 0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF4, 0x00, 0x42, 0x01, 0x2D, 0x1A, 0x60, + 0x23, 0xD0, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x02, 0x20, 0xBD, 0xE8, + 0xF8, 0x83, 0x03, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x9A, 0x68, 0xD2, 0x07, + 0x14, 0xD5, 0x9A, 0x68, 0x22, 0xF0, 0x01, 0x02, 0x9A, 0x60, 0xD3, 0xF8, + 0x04, 0x28, 0x42, 0xF0, 0x02, 0x02, 0xC3, 0xF8, 0x04, 0x28, 0xFF, 0xF7, + 0xC9, 0xFC, 0xD9, 0xE7, 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x14, 0x48, + 0xFD, 0xF7, 0x9C, 0xF9, 0x04, 0x20, 0xE2, 0xE7, 0xFF, 0xF7, 0xBE, 0xFC, + 0xCE, 0xE7, 0x11, 0x4B, 0x11, 0x48, 0x1B, 0x69, 0x1B, 0xF0, 0x5C, 0xFB, + 0x33, 0x78, 0x04, 0x2B, 0xFC, 0xD1, 0xD2, 0xE7, 0xFC, 0x83, 0x15, 0x00, + 0x6F, 0x26, 0x17, 0x00, 0x00, 0x00, 0x10, 0x40, 0x08, 0x84, 0x15, 0x00, + 0x00, 0x00, 0x20, 0x40, 0x60, 0x60, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, + 0x40, 0x60, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, + 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x84, 0x15, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x34, 0x84, 0x15, 0x00, 0x20, 0x26, 0x17, 0x00, + 0xB4, 0x27, 0x17, 0x00, 0x14, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0xC3, 0xF8, + 0x80, 0x20, 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, 0x11, 0x4A, + 0x11, 0x4B, 0x12, 0x48, 0x00, 0x21, 0x11, 0x70, 0x9A, 0x68, 0x22, 0xF0, + 0x01, 0x02, 0x9A, 0x60, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF0, 0x02, 0x02, + 0xC3, 0xF8, 0x04, 0x28, 0x1A, 0x69, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x61, + 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF0, 0x02, 0x02, 0xC3, 0xF8, 0x04, 0x28, + 0x1A, 0x69, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x61, 0x48, 0x22, 0xF7, 0xF7, + 0x9F, 0xB8, 0x00, 0xBF, 0x00, 0xE1, 0x00, 0xE0, 0x6F, 0x26, 0x17, 0x00, + 0x00, 0x00, 0x20, 0x40, 0x20, 0x26, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x4E, 0x1E, 0xF7, 0xB2, 0x03, 0x2F, 0x41, 0xD8, 0x14, 0x46, 0x0D, 0x46, + 0x9B, 0x46, 0x02, 0x46, 0x00, 0x28, 0x3D, 0xD0, 0x04, 0xF0, 0xFD, 0x01, + 0x01, 0x29, 0x5B, 0xD0, 0xDF, 0x1C, 0xBF, 0x10, 0x7F, 0x00, 0xBF, 0xB2, + 0xBA, 0x46, 0x4F, 0xEA, 0x07, 0x49, 0x4F, 0xEA, 0x45, 0x18, 0x08, 0xF1, + 0x80, 0x48, 0x08, 0xF5, 0x00, 0x18, 0xD8, 0xF8, 0x00, 0x19, 0x11, 0xF0, + 0x80, 0x2F, 0x68, 0xD1, 0xA2, 0x04, 0x02, 0xF4, 0x40, 0x22, 0xCB, 0xF3, + 0x0A, 0x03, 0x3B, 0x4C, 0x13, 0x43, 0x43, 0xEA, 0x85, 0x53, 0x21, 0x88, + 0x43, 0xF0, 0xC0, 0x53, 0x43, 0xF4, 0x00, 0x43, 0xC8, 0xF8, 0x00, 0x39, + 0x01, 0xEB, 0x0A, 0x03, 0xB3, 0xF5, 0xC0, 0x6F, 0x5E, 0xDC, 0x34, 0x4A, + 0x40, 0x36, 0x02, 0xEB, 0x86, 0x06, 0x41, 0xEA, 0x09, 0x03, 0x73, 0x60, + 0xD2, 0xF8, 0x1C, 0x38, 0x0F, 0x44, 0x01, 0x21, 0x01, 0xFA, 0x05, 0xF5, + 0x1D, 0x43, 0x27, 0x80, 0xC2, 0xF8, 0x1C, 0x58, 0xBD, 0xE8, 0xF8, 0x8F, + 0x4E, 0x01, 0x06, 0xF1, 0x80, 0x46, 0x06, 0xF5, 0x00, 0x16, 0xD6, 0xF8, + 0x00, 0x2B, 0x12, 0xF0, 0x80, 0x2F, 0x33, 0xD1, 0xA4, 0x04, 0x04, 0xF4, + 0x40, 0x24, 0xCB, 0xF3, 0x0A, 0x03, 0x23, 0x43, 0x43, 0xF0, 0xC0, 0x53, + 0x21, 0x4A, 0x43, 0xF4, 0x00, 0x43, 0xC6, 0xF8, 0x00, 0x3B, 0xD2, 0xF8, + 0x1C, 0x38, 0x4F, 0xF4, 0x80, 0x31, 0x01, 0xFA, 0x05, 0xF5, 0x1D, 0x43, + 0xC2, 0xF8, 0x1C, 0x58, 0xBD, 0xE8, 0xF8, 0x8F, 0xB3, 0xF5, 0x48, 0x7F, + 0x20, 0xD8, 0xDF, 0x1C, 0xBF, 0x10, 0x7F, 0x00, 0xBF, 0xB2, 0xBA, 0x46, + 0x4F, 0xEA, 0x07, 0x49, 0xBB, 0xF5, 0x80, 0x6F, 0x9D, 0xD9, 0x6F, 0xF4, + 0x80, 0x63, 0x0B, 0xEB, 0x03, 0x01, 0xB1, 0xF5, 0x80, 0x6F, 0x25, 0xBF, + 0x10, 0x4B, 0xA3, 0xFB, 0x0B, 0x13, 0x4F, 0xEA, 0x5B, 0x0B, 0xC3, 0xF3, + 0x4F, 0x0B, 0x8E, 0xE7, 0xFF, 0xF7, 0x34, 0xFE, 0xC8, 0xE7, 0x10, 0x46, + 0x29, 0x46, 0xFF, 0xF7, 0x2F, 0xFE, 0x91, 0xE7, 0x4F, 0xF4, 0xC8, 0x7A, + 0x57, 0x46, 0x4F, 0xF0, 0xC8, 0x79, 0xDF, 0xE7, 0x06, 0x48, 0x52, 0x46, + 0x4F, 0xF4, 0xC0, 0x63, 0xFD, 0xF7, 0x9E, 0xF8, 0x21, 0x88, 0x98, 0xE7, + 0x48, 0x28, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0xAB, 0xAA, 0xAA, 0xAA, + 0x40, 0x84, 0x15, 0x00, 0xF8, 0xB5, 0x27, 0x4B, 0x1B, 0x78, 0x04, 0x2B, + 0x3C, 0xD1, 0x44, 0x1E, 0xDF, 0xB2, 0xE3, 0xB2, 0x04, 0x2B, 0x39, 0xD8, + 0x8D, 0x07, 0x3D, 0xD1, 0x22, 0x4E, 0x4F, 0xEA, 0x04, 0x1E, 0x06, 0xEB, + 0x04, 0x1C, 0x56, 0xF8, 0x0E, 0x50, 0x8D, 0xBB, 0x43, 0x01, 0x03, 0xF1, + 0x80, 0x43, 0x03, 0xF5, 0x00, 0x13, 0xD3, 0xF8, 0x00, 0x0B, 0x00, 0x04, + 0x2A, 0xD5, 0x1B, 0x48, 0x46, 0xF8, 0x0E, 0x10, 0x50, 0xF8, 0x24, 0x00, + 0x19, 0x4F, 0x01, 0x26, 0x8C, 0xF8, 0x08, 0x60, 0xC6, 0x78, 0x64, 0x01, + 0x04, 0xF1, 0x80, 0x44, 0xBA, 0x42, 0x04, 0xF5, 0x00, 0x14, 0x06, 0xF0, + 0x31, 0x06, 0x28, 0xBF, 0x3A, 0x46, 0x46, 0xF0, 0x0E, 0x06, 0xCC, 0xF8, + 0x04, 0x20, 0x02, 0x80, 0x41, 0x60, 0xC6, 0x70, 0xC4, 0xF8, 0x34, 0x0B, + 0xD3, 0xF8, 0x00, 0x2B, 0x42, 0xF0, 0x04, 0x42, 0x28, 0x46, 0xC3, 0xF8, + 0x00, 0x2B, 0xF8, 0xBD, 0x01, 0x20, 0xF8, 0xBD, 0x02, 0x20, 0xF8, 0xBD, + 0x38, 0x46, 0xF8, 0xBD, 0x05, 0x20, 0xF8, 0xBD, 0x06, 0x48, 0xFD, 0xF7, + 0x47, 0xF8, 0x03, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x6F, 0x26, 0x17, 0x00, + 0x08, 0x28, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, 0xFF, 0xFF, 0x07, 0x00, + 0x80, 0x84, 0x15, 0x00, 0xF8, 0xB5, 0x28, 0x4B, 0x1B, 0x78, 0x04, 0x2B, + 0x3E, 0xD1, 0x44, 0x1E, 0xDF, 0xB2, 0xE3, 0xB2, 0x04, 0x2B, 0x3B, 0xD8, + 0x8D, 0x07, 0x3F, 0xD1, 0x23, 0x4E, 0x4F, 0xEA, 0x04, 0x1E, 0x06, 0xEB, + 0x04, 0x1C, 0x56, 0xF8, 0x0E, 0x50, 0x9D, 0xBB, 0x43, 0x01, 0x03, 0xF1, + 0x80, 0x43, 0x03, 0xF5, 0x00, 0x13, 0xD3, 0xF8, 0x00, 0x0B, 0x00, 0x04, + 0x2C, 0xD5, 0x1C, 0x48, 0x46, 0xF8, 0x0E, 0x10, 0x50, 0xF8, 0x24, 0x00, + 0x1A, 0x4F, 0x01, 0x26, 0x8C, 0xF8, 0x08, 0x60, 0xC6, 0x78, 0x64, 0x01, + 0x04, 0xF1, 0x80, 0x44, 0xBA, 0x42, 0x04, 0xF5, 0x00, 0x14, 0x06, 0xF0, + 0x31, 0x06, 0x28, 0xBF, 0x3A, 0x46, 0x46, 0xF0, 0x0E, 0x06, 0xCC, 0xF8, + 0x04, 0x20, 0x02, 0x80, 0x41, 0x60, 0xC6, 0x70, 0xC4, 0xF8, 0x34, 0x0B, + 0xD3, 0xF8, 0x00, 0x2B, 0x22, 0xF0, 0x04, 0x42, 0x42, 0xF0, 0x00, 0x42, + 0x28, 0x46, 0xC3, 0xF8, 0x00, 0x2B, 0xF8, 0xBD, 0x01, 0x20, 0xF8, 0xBD, + 0x02, 0x20, 0xF8, 0xBD, 0x38, 0x46, 0xF8, 0xBD, 0x05, 0x20, 0xF8, 0xBD, + 0x06, 0x48, 0xFC, 0xF7, 0xEB, 0xFF, 0x03, 0x20, 0xF8, 0xBD, 0x00, 0xBF, + 0x6F, 0x26, 0x17, 0x00, 0x08, 0x28, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, + 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x84, 0x15, 0x00, 0x10, 0xB5, 0x0C, 0x4C, + 0x0C, 0x4B, 0xE0, 0x89, 0x18, 0x80, 0x20, 0xB9, 0x0B, 0x4B, 0x03, 0x22, + 0x1A, 0x70, 0x01, 0x20, 0x10, 0xBD, 0x0A, 0x4B, 0x5B, 0x69, 0x4B, 0xB1, + 0xC0, 0xB2, 0x98, 0x47, 0x30, 0xB1, 0x06, 0x4A, 0x04, 0x21, 0x07, 0x23, + 0x11, 0x70, 0x23, 0x70, 0x01, 0x20, 0x10, 0xBD, 0x00, 0x20, 0x10, 0xBD, + 0xB4, 0x27, 0x17, 0x00, 0x6C, 0x26, 0x17, 0x00, 0x6F, 0x26, 0x17, 0x00, + 0x20, 0x26, 0x17, 0x00, 0xF8, 0xB5, 0x0C, 0x46, 0x00, 0x28, 0x70, 0xD1, + 0x01, 0xF0, 0x21, 0x03, 0x21, 0x2B, 0x7F, 0xD0, 0xE1, 0x07, 0x76, 0xD5, + 0x14, 0xF0, 0x08, 0x01, 0x00, 0xF0, 0x8B, 0x80, 0xB5, 0x4D, 0x2B, 0x78, + 0x00, 0x2B, 0x40, 0xF0, 0x76, 0x82, 0x63, 0x06, 0x40, 0xF1, 0x15, 0x81, + 0xB2, 0x4B, 0xD3, 0xF8, 0x14, 0x3B, 0x08, 0x3B, 0x00, 0x22, 0xC5, 0xE9, + 0x01, 0x22, 0x02, 0x20, 0x28, 0x70, 0x1A, 0x78, 0x29, 0x7B, 0xD2, 0x09, + 0x62, 0xF3, 0xC7, 0x11, 0x29, 0x73, 0x19, 0x78, 0x2A, 0x7B, 0x49, 0x11, + 0x61, 0xF3, 0x46, 0x12, 0x2A, 0x73, 0x19, 0x78, 0x61, 0xF3, 0x04, 0x02, + 0x2A, 0x73, 0x5A, 0x78, 0x6A, 0x73, 0xD9, 0x78, 0x9A, 0x78, 0x42, 0xEA, + 0x01, 0x22, 0xEA, 0x81, 0x59, 0x79, 0x1A, 0x79, 0x42, 0xEA, 0x01, 0x22, + 0x2A, 0x82, 0xDA, 0x79, 0x9B, 0x79, 0x43, 0xEA, 0x02, 0x23, 0x6B, 0x82, + 0x23, 0xB9, 0x95, 0xF9, 0x0C, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x73, 0x82, + 0x9A, 0x4B, 0x9B, 0x4C, 0xD3, 0xF8, 0x14, 0x28, 0xE1, 0x68, 0x22, 0xF0, + 0x10, 0x02, 0xC3, 0xF8, 0x14, 0x28, 0xD3, 0xF8, 0x10, 0x28, 0x22, 0xF0, + 0x10, 0x02, 0xC3, 0xF8, 0x10, 0x28, 0x21, 0xB1, 0x91, 0x48, 0x88, 0x47, + 0x00, 0x28, 0x40, 0xF0, 0xB5, 0x80, 0x92, 0x4F, 0x2B, 0x7B, 0x3A, 0x78, + 0x13, 0xF0, 0x60, 0x0F, 0xD6, 0xB2, 0x40, 0xF0, 0xCF, 0x80, 0x68, 0x7B, + 0x0B, 0x28, 0x00, 0xF2, 0xDA, 0x80, 0xDF, 0xE8, 0x10, 0xF0, 0xDE, 0x00, + 0x27, 0x01, 0xD8, 0x00, 0xFA, 0x00, 0xD8, 0x00, 0x8C, 0x00, 0x5D, 0x01, + 0xD8, 0x00, 0x4F, 0x01, 0x44, 0x01, 0x98, 0x01, 0x85, 0x01, 0x82, 0x4D, + 0x2B, 0x78, 0x02, 0x2B, 0x53, 0xD0, 0xCA, 0x07, 0x55, 0xD4, 0xA1, 0x06, + 0x02, 0xD5, 0x2B, 0x78, 0x06, 0x2B, 0x3D, 0xD0, 0xF8, 0xBD, 0x7C, 0x4D, + 0x22, 0x07, 0x2B, 0x78, 0x35, 0xD5, 0x01, 0x2B, 0x8B, 0xD0, 0xF8, 0xBD, + 0x79, 0x4A, 0xD2, 0xF8, 0x10, 0x3B, 0x03, 0xF0, 0x7F, 0x03, 0x40, 0x2B, + 0x7F, 0xF4, 0x78, 0xAF, 0xD2, 0xF8, 0x10, 0x3B, 0x18, 0x03, 0x7F, 0xF5, + 0x73, 0xAF, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0xDB, 0xBA, 0x74, 0x4B, + 0x6F, 0x4D, 0x1E, 0x68, 0xF3, 0x78, 0x13, 0xF0, 0x01, 0x03, 0x40, 0xF0, + 0xE2, 0x81, 0x2A, 0x78, 0x02, 0x2A, 0x3F, 0xF4, 0x6E, 0xAF, 0x03, 0x2A, + 0x00, 0xF0, 0xE6, 0x81, 0x05, 0x2A, 0x0D, 0xD1, 0x68, 0x4A, 0x2B, 0x70, + 0xD2, 0xF8, 0x14, 0x38, 0x23, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x14, 0x38, + 0xD2, 0xF8, 0x10, 0x38, 0x23, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x10, 0x38, + 0xFF, 0xF7, 0xBA, 0xFA, 0xBF, 0xE7, 0x02, 0x2B, 0xBD, 0xD1, 0x54, 0xE7, + 0xFF, 0xF7, 0xB4, 0xFA, 0x5D, 0x4A, 0x07, 0x23, 0x2B, 0x70, 0xD2, 0xF8, + 0x14, 0x38, 0x43, 0xF0, 0x10, 0x03, 0xC2, 0xF8, 0x14, 0x38, 0xBD, 0xE8, + 0xF8, 0x40, 0xFF, 0xF7, 0xC5, 0xBA, 0x5B, 0x48, 0xFC, 0xF7, 0xEC, 0xFE, + 0x41, 0xE7, 0x04, 0x2B, 0x00, 0xF0, 0xDD, 0x81, 0x07, 0x2B, 0xA4, 0xD1, + 0x52, 0x4B, 0x57, 0x49, 0x00, 0x20, 0x28, 0x70, 0xD3, 0xF8, 0x14, 0x28, + 0x22, 0xF0, 0x10, 0x02, 0xC3, 0xF8, 0x14, 0x28, 0xD3, 0xF8, 0x10, 0x28, + 0x22, 0xF0, 0x10, 0x02, 0xC3, 0xF8, 0x10, 0x28, 0x0A, 0x78, 0x00, 0x2A, + 0x96, 0xD0, 0xD3, 0xF8, 0x04, 0x48, 0x12, 0x01, 0x02, 0xF0, 0x70, 0x02, + 0x24, 0xF0, 0x70, 0x04, 0x22, 0x43, 0xC3, 0xF8, 0x04, 0x28, 0x08, 0x70, + 0xF8, 0xBD, 0x43, 0x48, 0xE9, 0x89, 0xD0, 0xF8, 0x00, 0x28, 0x0B, 0x01, + 0x22, 0xF4, 0xFE, 0x62, 0x03, 0xF4, 0xFE, 0x63, 0x13, 0x43, 0x07, 0x22, + 0xC0, 0xF8, 0x00, 0x38, 0x2A, 0x70, 0x00, 0x29, 0x40, 0xF0, 0xF2, 0x81, + 0x02, 0x23, 0x3B, 0x70, 0x04, 0x2E, 0x40, 0xF0, 0x9F, 0x80, 0x3B, 0x78, + 0x04, 0x2B, 0x01, 0xD0, 0xFF, 0xF7, 0xE8, 0xFA, 0x2B, 0x78, 0x03, 0x2B, + 0x26, 0xD0, 0x04, 0x2B, 0x00, 0xF0, 0xAB, 0x80, 0x07, 0x2B, 0x00, 0xF0, + 0x91, 0x80, 0x00, 0x24, 0x22, 0x46, 0x20, 0x46, 0x4F, 0xF4, 0x00, 0x11, + 0x2C, 0x70, 0xFF, 0xF7, 0x2F, 0xFB, 0x22, 0x46, 0x20, 0x46, 0x4F, 0xF4, + 0x00, 0x11, 0xFF, 0xF7, 0x85, 0xFB, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, + 0x49, 0xBA, 0x2B, 0x4B, 0x1B, 0x68, 0x5B, 0x68, 0xEA, 0xE6, 0x2C, 0x48, + 0xFC, 0xF7, 0x8A, 0xFE, 0x04, 0x2E, 0xE4, 0xD1, 0x3B, 0x78, 0x04, 0x2B, + 0xE1, 0xD0, 0xFF, 0xF7, 0xBF, 0xFA, 0xDE, 0xE7, 0x6B, 0x68, 0x00, 0x2B, + 0x7F, 0xF4, 0x57, 0xAF, 0x25, 0x4B, 0x6B, 0x60, 0x53, 0xE7, 0x04, 0x2E, + 0xD5, 0xD1, 0x3B, 0x78, 0x04, 0x2B, 0xF0, 0xD1, 0xD1, 0xE7, 0x3B, 0x78, + 0x04, 0x2B, 0x00, 0xF0, 0xCB, 0x81, 0x2B, 0x8A, 0x00, 0x2B, 0xE3, 0xD1, + 0x2B, 0x7B, 0x03, 0xF0, 0x1F, 0x03, 0x01, 0x2B, 0x00, 0xF0, 0xCF, 0x81, + 0x02, 0x2B, 0x00, 0xF0, 0xC1, 0x80, 0x00, 0x2B, 0xE7, 0xD1, 0x19, 0x4A, + 0x19, 0x4B, 0x12, 0x78, 0x1A, 0x80, 0x02, 0x21, 0x04, 0x22, 0x6B, 0x60, + 0x29, 0x81, 0x2A, 0x70, 0x5A, 0xE0, 0x3B, 0x78, 0x04, 0x2B, 0x02, 0xD0, + 0x2B, 0x8A, 0x00, 0x2B, 0xC8, 0xD1, 0x2B, 0x7B, 0x13, 0xF0, 0x1F, 0x03, + 0x00, 0xF0, 0xB9, 0x81, 0x02, 0x2B, 0x03, 0xD1, 0xEB, 0x89, 0x00, 0x2B, + 0x00, 0xF0, 0xBF, 0x81, 0x07, 0x23, 0x04, 0x2E, 0x2B, 0x70, 0xA0, 0xD1, + 0xC9, 0xE7, 0x00, 0xBF, 0xB4, 0x27, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, + 0x20, 0x26, 0x17, 0x00, 0x6F, 0x26, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, + 0x98, 0x84, 0x15, 0x00, 0x70, 0x26, 0x17, 0x00, 0xD8, 0x84, 0x15, 0x00, + 0x74, 0x26, 0x17, 0x00, 0x6E, 0x26, 0x17, 0x00, 0x50, 0x28, 0x17, 0x00, + 0x3B, 0x78, 0x04, 0x2B, 0x02, 0xD0, 0x2B, 0x8A, 0x00, 0x2B, 0x9B, 0xD1, + 0x2B, 0x7B, 0x03, 0xF0, 0x1F, 0x03, 0x02, 0x2B, 0xD8, 0xD1, 0xEB, 0x89, + 0x00, 0x2B, 0xD5, 0xD1, 0x28, 0x8A, 0x00, 0xF0, 0x0F, 0x01, 0xC0, 0xF3, + 0xC0, 0x10, 0xFF, 0xF7, 0xBF, 0xFB, 0x07, 0x23, 0x04, 0x2E, 0x2B, 0x70, + 0x00, 0xF0, 0x95, 0x81, 0xFF, 0xF7, 0xE6, 0xF9, 0xE7, 0xE6, 0xA9, 0x4B, + 0xD3, 0xF8, 0xE0, 0x34, 0x98, 0x47, 0x04, 0x46, 0x04, 0x2E, 0x5A, 0xD0, + 0x00, 0x2C, 0x7F, 0xF4, 0x59, 0xAF, 0x60, 0xE7, 0xA4, 0x4B, 0x6B, 0x60, + 0x02, 0x22, 0x04, 0x23, 0x2A, 0x81, 0x2B, 0x70, 0x04, 0x2E, 0x3F, 0xF4, + 0x4A, 0xAF, 0x29, 0x89, 0x68, 0x68, 0xFF, 0xF7, 0x43, 0xFA, 0xCE, 0xE6, + 0xE8, 0x89, 0x03, 0x0A, 0x01, 0x3B, 0x01, 0x0A, 0x0E, 0x2B, 0x3F, 0xF6, + 0x62, 0xAF, 0x01, 0xA2, 0x52, 0xF8, 0x23, 0xF0, 0xC1, 0x97, 0x12, 0x00, + 0x05, 0x98, 0x12, 0x00, 0xF1, 0x97, 0x12, 0x00, 0xFF, 0x95, 0x12, 0x00, + 0xFF, 0x95, 0x12, 0x00, 0x65, 0x98, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, + 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, + 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, 0xDB, 0x95, 0x12, 0x00, + 0xDB, 0x95, 0x12, 0x00, 0x45, 0x98, 0x12, 0x00, 0xA3, 0x69, 0x00, 0x2B, + 0x3F, 0xF4, 0x40, 0xAF, 0xE9, 0x89, 0x28, 0x8A, 0x98, 0x47, 0x00, 0x28, + 0x3F, 0xF4, 0x3A, 0xAF, 0x85, 0x4A, 0x86, 0x4B, 0x29, 0x8A, 0x11, 0x80, + 0xEA, 0x89, 0x1A, 0x70, 0x07, 0x23, 0x2B, 0x70, 0x06, 0xE7, 0x3B, 0x78, + 0x04, 0x2B, 0xDA, 0xB2, 0x7F, 0xF4, 0x2C, 0xAF, 0x7E, 0x4B, 0x7F, 0x49, + 0x18, 0x88, 0x2A, 0x70, 0x01, 0x23, 0x28, 0x82, 0x69, 0x60, 0x2B, 0x81, + 0xAE, 0xE7, 0x3B, 0x78, 0x04, 0x2B, 0xA1, 0xD0, 0xFF, 0xF7, 0xE4, 0xF9, + 0x00, 0x2C, 0x7F, 0xF4, 0xF9, 0xAE, 0x00, 0xE7, 0x01, 0x46, 0xFF, 0xF7, + 0x0B, 0xFB, 0x00, 0x28, 0x00, 0xF0, 0x05, 0x81, 0x74, 0x4B, 0x01, 0x22, + 0x1A, 0x80, 0x3A, 0xE7, 0x23, 0x68, 0x01, 0x20, 0x98, 0x47, 0x00, 0x28, + 0x3F, 0xF4, 0x0A, 0xAF, 0x03, 0x78, 0x12, 0x2B, 0x7F, 0xF4, 0x06, 0xAF, + 0x42, 0x78, 0x01, 0x2A, 0x7F, 0xF4, 0x02, 0xAF, 0x2B, 0x81, 0x68, 0x60, + 0x6B, 0x8A, 0x2A, 0x89, 0x9A, 0x42, 0x88, 0xBF, 0x2B, 0x81, 0x04, 0x23, + 0x2B, 0x70, 0x83, 0xE7, 0xA3, 0x68, 0xC0, 0xB2, 0x98, 0x47, 0x68, 0x60, + 0x00, 0x28, 0x3F, 0xF4, 0xF1, 0xAE, 0x03, 0x78, 0x2B, 0x81, 0xED, 0xE7, + 0x63, 0x68, 0x00, 0x20, 0x98, 0x47, 0x00, 0x28, 0x3F, 0xF4, 0xE8, 0xAE, + 0x03, 0x78, 0x09, 0x2B, 0x7F, 0xF4, 0xE4, 0xAE, 0x43, 0x78, 0x02, 0x2B, + 0x7F, 0xF4, 0xE0, 0xAE, 0xC2, 0x78, 0x83, 0x78, 0x68, 0x60, 0x43, 0xEA, + 0x02, 0x23, 0x2B, 0x81, 0xC3, 0x79, 0x58, 0x4A, 0x13, 0xF0, 0x40, 0x0F, + 0x13, 0x78, 0x14, 0xBF, 0x43, 0xF0, 0x01, 0x03, 0x23, 0xF0, 0x01, 0x03, + 0x13, 0x70, 0xCD, 0xE7, 0x23, 0x68, 0x0F, 0x20, 0x98, 0x47, 0x00, 0x28, + 0x3F, 0xF4, 0xC8, 0xAE, 0x03, 0x78, 0x05, 0x2B, 0x7F, 0xF4, 0xC4, 0xAE, + 0x43, 0x78, 0x0F, 0x2B, 0x7F, 0xF4, 0xC0, 0xAE, 0x83, 0x78, 0xBB, 0xE7, + 0x23, 0x68, 0x06, 0x20, 0x98, 0x47, 0x00, 0x28, 0x3F, 0xF4, 0xB8, 0xAE, + 0x03, 0x78, 0x0A, 0x2B, 0x7F, 0xF4, 0xB4, 0xAE, 0x42, 0x78, 0x06, 0x2A, + 0x7F, 0xF4, 0xB0, 0xAE, 0xAC, 0xE7, 0x2B, 0x78, 0x00, 0x2B, 0x51, 0xD1, + 0x01, 0x23, 0x2B, 0x70, 0xF8, 0xBD, 0x00, 0x21, 0x01, 0x20, 0xFF, 0xF7, + 0xB3, 0xFA, 0x84, 0xE5, 0x68, 0x89, 0x2B, 0x89, 0x36, 0x88, 0x6A, 0x68, + 0x3C, 0x49, 0x1B, 0x1A, 0xC6, 0xF1, 0x40, 0x06, 0x9B, 0xB2, 0x9E, 0x42, + 0xA8, 0xBF, 0x1E, 0x46, 0x10, 0x44, 0x09, 0x68, 0xB2, 0xB2, 0x2D, 0xF0, + 0x07, 0xFC, 0x6A, 0x89, 0x2B, 0x89, 0x16, 0x44, 0xB6, 0xB2, 0xB3, 0x42, + 0x6E, 0x81, 0x7F, 0xF4, 0x11, 0xAE, 0x33, 0x4B, 0x1B, 0x69, 0x0B, 0xB1, + 0x28, 0x46, 0x98, 0x47, 0xA0, 0x06, 0x35, 0xD4, 0x06, 0x23, 0x2B, 0x70, + 0xF8, 0xBD, 0x29, 0x89, 0x6A, 0x89, 0x88, 0x1A, 0x80, 0xB2, 0x30, 0xB9, + 0x05, 0x23, 0x2B, 0x70, 0xF8, 0xBD, 0x2B, 0x48, 0xFC, 0xF7, 0x00, 0xFD, + 0x88, 0xE5, 0x40, 0x28, 0x22, 0xD0, 0x40, 0x28, 0x28, 0xBF, 0x40, 0x20, + 0x00, 0x26, 0x02, 0x44, 0x92, 0xB2, 0x91, 0x42, 0x6A, 0x81, 0x29, 0xD3, + 0x89, 0x1A, 0x89, 0xB2, 0x40, 0x29, 0x0F, 0xD8, 0x79, 0xB9, 0x66, 0xBB, + 0x21, 0x4A, 0x05, 0x23, 0x2B, 0x70, 0xD2, 0xF8, 0x10, 0x38, 0x43, 0xF0, + 0x10, 0x03, 0xC2, 0xF8, 0x10, 0x38, 0xF8, 0xBD, 0x01, 0x20, 0xFF, 0xF7, + 0x65, 0xFA, 0xA9, 0xE7, 0x40, 0x21, 0x68, 0x68, 0x10, 0x44, 0xFF, 0xF7, + 0x27, 0xF9, 0x98, 0xE5, 0x01, 0x26, 0xDE, 0xE7, 0xFF, 0xF7, 0x8E, 0xF8, + 0x15, 0x4A, 0x07, 0x23, 0x2B, 0x70, 0xD2, 0xF8, 0x14, 0x38, 0x43, 0xF0, + 0x10, 0x03, 0xC2, 0xF8, 0x14, 0x38, 0xFF, 0xF7, 0xA1, 0xF8, 0x8A, 0xE5, + 0x10, 0x48, 0xFC, 0xF7, 0xC7, 0xFC, 0x29, 0x89, 0x6A, 0x89, 0xCF, 0xE7, + 0x03, 0x23, 0x3B, 0x70, 0x0C, 0xE6, 0x08, 0x46, 0xFF, 0xF7, 0x0A, 0xF9, + 0x7B, 0xE5, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x6C, 0x26, 0x17, 0x00, + 0x6A, 0x26, 0x17, 0x00, 0x68, 0x26, 0x17, 0x00, 0x50, 0x28, 0x17, 0x00, + 0x6E, 0x26, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, 0x20, 0x26, 0x17, 0x00, + 0xB4, 0x84, 0x15, 0x00, 0x00, 0x00, 0x20, 0x40, 0xF0, 0x84, 0x15, 0x00, + 0x2B, 0x7B, 0x03, 0xF0, 0x1F, 0x03, 0x01, 0x2B, 0x07, 0xD0, 0x02, 0x2B, + 0x7F, 0xF4, 0x39, 0xAE, 0x28, 0x8A, 0x00, 0xF0, 0x0F, 0x01, 0x04, 0x29, + 0x2A, 0xD9, 0x17, 0x4B, 0x00, 0x22, 0x1A, 0x80, 0x35, 0xE6, 0xE8, 0x89, + 0x02, 0x28, 0x19, 0xD0, 0x00, 0xF1, 0xFF, 0x3C, 0x07, 0x23, 0xDC, 0xF1, + 0x00, 0x04, 0x44, 0xEB, 0x0C, 0x04, 0x2B, 0x70, 0x7E, 0xE6, 0x28, 0x8A, + 0x00, 0xF0, 0x0F, 0x01, 0xC0, 0xF3, 0xC0, 0x10, 0xFF, 0xF7, 0x18, 0xFA, + 0x07, 0x23, 0x04, 0x2E, 0x2B, 0x70, 0x7F, 0xF4, 0x6B, 0xAE, 0x3B, 0x78, + 0x04, 0x2B, 0x3F, 0xF4, 0x67, 0xAE, 0xC9, 0xE5, 0x2B, 0x8A, 0x07, 0x49, + 0x1B, 0x0A, 0x07, 0x22, 0x04, 0x2E, 0x0B, 0x70, 0x2A, 0x70, 0x7F, 0xF4, + 0x5D, 0xAE, 0xF0, 0xE7, 0xC0, 0xF3, 0xC0, 0x10, 0xC7, 0xE6, 0x00, 0xBF, + 0x50, 0x28, 0x17, 0x00, 0x70, 0x26, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0xB4, 0x4B, 0xB5, 0x4D, 0xD3, 0xF8, 0x00, 0x38, 0x13, 0xF4, 0xFE, 0x6F, + 0x03, 0xD0, 0x2B, 0x78, 0x04, 0x2B, 0x00, 0xF0, 0x8F, 0x81, 0xAF, 0x4C, + 0xB0, 0x4A, 0xB1, 0x48, 0x00, 0x21, 0x02, 0x23, 0x2B, 0x70, 0x11, 0x70, + 0x1A, 0xF0, 0x1A, 0xFE, 0xD4, 0xF8, 0x00, 0x3E, 0x23, 0xF0, 0x01, 0x03, + 0xC4, 0xF8, 0x00, 0x3E, 0xD4, 0xF8, 0x04, 0x38, 0x23, 0xF0, 0x01, 0x03, + 0xC4, 0xF8, 0x04, 0x38, 0xFF, 0xF7, 0x7E, 0xF8, 0xA3, 0x69, 0x1D, 0x06, + 0x03, 0xD5, 0xA3, 0x69, 0x23, 0xF0, 0x80, 0x03, 0xA3, 0x61, 0xA0, 0x4B, + 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF4, 0x00, 0x72, 0xC3, 0xF8, 0x04, 0x28, + 0x5A, 0x69, 0x14, 0x06, 0xFC, 0xD5, 0x01, 0x23, 0x01, 0x2B, 0x9E, 0x4C, + 0x9E, 0x4D, 0x9F, 0x4A, 0x9F, 0x4F, 0x4F, 0xF0, 0x02, 0x0C, 0x1C, 0xD0, + 0x4F, 0xEA, 0x43, 0x1E, 0x5E, 0xF8, 0x02, 0x10, 0x11, 0xF0, 0x80, 0x2F, + 0x10, 0xD0, 0x5E, 0xF8, 0x02, 0x00, 0x00, 0x29, 0x40, 0xEA, 0x05, 0x00, + 0x4E, 0xF8, 0x02, 0x00, 0xC0, 0xF2, 0x0F, 0x81, 0x08, 0x04, 0x05, 0xD4, + 0x5E, 0xF8, 0x02, 0x10, 0x21, 0xF4, 0x00, 0x41, 0x4E, 0xF8, 0x02, 0x10, + 0x05, 0x2B, 0x0A, 0xD0, 0x01, 0x33, 0x01, 0x2B, 0xE2, 0xD1, 0x21, 0x68, + 0x11, 0xF0, 0x80, 0x2F, 0xF8, 0xD0, 0x21, 0x68, 0x29, 0x43, 0x21, 0x60, + 0xF4, 0xE7, 0x84, 0x4B, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF4, 0x80, 0x62, + 0xC3, 0xF8, 0x04, 0x28, 0xD3, 0xF8, 0x04, 0x28, 0x42, 0xF0, 0x80, 0x02, + 0xC3, 0xF8, 0x04, 0x28, 0x5A, 0x69, 0x51, 0x06, 0xFC, 0xD5, 0x01, 0x23, + 0x01, 0x2B, 0x83, 0x4F, 0xDF, 0xF8, 0x40, 0x82, 0xDF, 0xF8, 0xF8, 0xC1, + 0x81, 0x4D, 0xDF, 0xF8, 0x3C, 0xE2, 0x4F, 0xF0, 0x40, 0x06, 0x4F, 0xF0, + 0x02, 0x09, 0x19, 0xD0, 0x5A, 0x01, 0x05, 0xEB, 0x43, 0x10, 0x51, 0x59, + 0x11, 0xF0, 0x80, 0x2F, 0x0D, 0xD0, 0x72, 0x44, 0x16, 0x60, 0x04, 0x68, + 0x00, 0x29, 0x44, 0xEA, 0x0C, 0x04, 0x04, 0x60, 0x11, 0xDB, 0x0A, 0x04, + 0x03, 0xD4, 0x02, 0x68, 0x22, 0xF4, 0x00, 0x42, 0x02, 0x60, 0x05, 0x2B, + 0x1A, 0xD0, 0x01, 0x33, 0x01, 0x2B, 0xE5, 0xD1, 0x39, 0x68, 0x11, 0xF0, + 0x80, 0x2F, 0xF8, 0xD0, 0x42, 0x46, 0x38, 0x46, 0xE6, 0xE7, 0x8C, 0x03, + 0x09, 0xD5, 0xC2, 0xF8, 0x00, 0x90, 0x04, 0x68, 0x44, 0xF0, 0x80, 0x44, + 0x04, 0x60, 0x14, 0x68, 0xA4, 0x07, 0xFC, 0xD5, 0xE1, 0xE7, 0x14, 0x68, + 0x64, 0x06, 0xFC, 0xD5, 0x16, 0x60, 0xF0, 0xE7, 0x5B, 0x4B, 0x4F, 0xF4, + 0x86, 0x62, 0x1A, 0x61, 0x1A, 0x69, 0x12, 0xF0, 0x30, 0x0F, 0xFB, 0xD1, + 0xD3, 0xF8, 0x04, 0x28, 0x4F, 0xF0, 0x01, 0x14, 0x42, 0xF4, 0x80, 0x72, + 0x29, 0x20, 0x09, 0x21, 0xC3, 0xF8, 0x04, 0x28, 0xC3, 0xF8, 0x1C, 0x48, + 0xC3, 0xF8, 0x14, 0x08, 0xC3, 0xF8, 0x10, 0x18, 0x9A, 0x69, 0x42, 0xF4, + 0x40, 0x22, 0x9A, 0x61, 0x9A, 0x6C, 0x14, 0x03, 0x4C, 0xD4, 0x4C, 0x4D, + 0x55, 0x4B, 0xD5, 0xF8, 0x00, 0x28, 0x55, 0x48, 0x00, 0x24, 0x22, 0xF4, + 0xFE, 0x62, 0xC5, 0xF8, 0x00, 0x28, 0x21, 0x46, 0xC3, 0xE9, 0x01, 0x44, + 0x40, 0x22, 0x1C, 0x70, 0xF6, 0xF7, 0xDE, 0xFA, 0x21, 0x46, 0x40, 0x22, + 0x4E, 0x48, 0xF6, 0xF7, 0xD9, 0xFA, 0x4E, 0x4A, 0x4E, 0x4B, 0x11, 0x68, + 0x4E, 0x4A, 0x1B, 0x68, 0x12, 0x68, 0x59, 0x60, 0xC5, 0xF8, 0x14, 0x3B, + 0xD1, 0x78, 0x4C, 0x4B, 0x4C, 0x48, 0x1F, 0x68, 0x4C, 0x4B, 0x06, 0x6A, + 0x18, 0x68, 0xD3, 0xF8, 0x04, 0xC0, 0x41, 0xF0, 0xC0, 0x01, 0xD1, 0x70, + 0xF9, 0x78, 0x41, 0xF0, 0xC0, 0x01, 0xF9, 0x70, 0xC1, 0x78, 0x41, 0xF0, + 0xC0, 0x01, 0xC1, 0x70, 0x9C, 0xF8, 0x03, 0x10, 0xD3, 0xE9, 0x02, 0x70, + 0x41, 0xF0, 0xC0, 0x03, 0x8C, 0xF8, 0x03, 0x30, 0xFB, 0x78, 0x43, 0xF0, + 0xC0, 0x03, 0xFB, 0x70, 0xC3, 0x78, 0x43, 0xF0, 0xC0, 0x03, 0xC3, 0x70, + 0xC5, 0xF8, 0x14, 0x29, 0x0E, 0xB1, 0x20, 0x46, 0xB0, 0x47, 0xBD, 0xE8, + 0xF8, 0x43, 0x3A, 0x48, 0x1A, 0xF0, 0x10, 0xBD, 0x39, 0x49, 0x3A, 0x4C, + 0x24, 0x4A, 0x40, 0xF2, 0x17, 0x15, 0x5D, 0x62, 0x4F, 0xF4, 0x9C, 0x70, + 0x9C, 0x62, 0x08, 0x80, 0xD3, 0xF8, 0x04, 0x18, 0x41, 0xF0, 0x80, 0x01, + 0xC3, 0xF8, 0x04, 0x18, 0x53, 0x69, 0x58, 0x06, 0xFC, 0xD5, 0x1C, 0x49, + 0x0B, 0x69, 0x00, 0x2B, 0xFC, 0xDA, 0x4F, 0xF4, 0x84, 0x63, 0x19, 0x4A, + 0x0B, 0x61, 0x13, 0x69, 0x99, 0x06, 0xFC, 0xD4, 0xD2, 0xF8, 0x04, 0x38, + 0x15, 0x49, 0x43, 0xF4, 0x80, 0x73, 0xC2, 0xF8, 0x04, 0x38, 0xD2, 0xF8, + 0x04, 0x38, 0x43, 0xF4, 0x00, 0x73, 0xC2, 0xF8, 0x04, 0x38, 0x4B, 0x69, + 0x1A, 0x06, 0xFC, 0xD5, 0x0B, 0x69, 0x0E, 0x4A, 0x43, 0xF0, 0x10, 0x03, + 0x0B, 0x61, 0x13, 0x69, 0xDB, 0x06, 0xFC, 0xD4, 0xD2, 0xF8, 0x04, 0x38, + 0x43, 0xF4, 0x80, 0x63, 0xC2, 0xF8, 0x04, 0x38, 0x75, 0xE7, 0x4E, 0xF8, + 0x07, 0xC0, 0x5E, 0xF8, 0x02, 0x00, 0x40, 0xF0, 0x80, 0x40, 0x4E, 0xF8, + 0x02, 0x00, 0x0E, 0xEB, 0x07, 0x06, 0x30, 0x68, 0x80, 0x07, 0xFC, 0xD5, + 0xE2, 0xE6, 0x00, 0xBF, 0x00, 0x00, 0x20, 0x40, 0x6F, 0x26, 0x17, 0x00, + 0x6E, 0x26, 0x17, 0x00, 0x20, 0x85, 0x15, 0x00, 0x00, 0x0B, 0x20, 0x40, + 0x00, 0x80, 0x00, 0x08, 0xE0, 0x0A, 0x20, 0x40, 0xE8, 0x0A, 0x20, 0x40, + 0x00, 0x09, 0x20, 0x40, 0xE0, 0x08, 0x20, 0x40, 0xB4, 0x27, 0x17, 0x00, + 0x08, 0x28, 0x17, 0x00, 0xC8, 0x27, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, + 0x5C, 0x60, 0x17, 0x00, 0x40, 0x60, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, + 0x20, 0x26, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, 0x28, 0x85, 0x15, 0x00, + 0x48, 0x28, 0x17, 0x00, 0x17, 0x01, 0x21, 0x00, 0x08, 0x09, 0x20, 0x40, + 0xE8, 0x08, 0x20, 0x40, 0x05, 0x48, 0x1E, 0x21, 0x1A, 0xF0, 0x90, 0xFC, + 0x4F, 0xF4, 0xF0, 0x42, 0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0x18, 0xF0, + 0x7F, 0xFC, 0x64, 0xE6, 0x0C, 0x85, 0x15, 0x00, 0x08, 0xB5, 0x04, 0x49, + 0x04, 0x48, 0x1A, 0xF0, 0x81, 0xFC, 0x04, 0x4B, 0x01, 0x22, 0x1A, 0x70, + 0x08, 0xBD, 0x00, 0xBF, 0x54, 0x85, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, + 0x52, 0x28, 0x17, 0x00, 0x01, 0x4B, 0x18, 0x78, 0x70, 0x47, 0x00, 0xBF, + 0x52, 0x28, 0x17, 0x00, 0x08, 0xB5, 0x07, 0x48, 0x1A, 0xF0, 0x6C, 0xFC, + 0x06, 0x4B, 0x07, 0x4A, 0x00, 0x21, 0x19, 0x70, 0xD2, 0xF8, 0x00, 0x3E, + 0x23, 0xF0, 0x01, 0x03, 0xC2, 0xF8, 0x00, 0x3E, 0x08, 0xBD, 0x00, 0xBF, + 0x30, 0x85, 0x15, 0x00, 0x52, 0x28, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, + 0x38, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x1A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x1A, 0x4C, 0x1A, 0x4D, 0x23, 0x68, + 0x2A, 0x78, 0x01, 0x33, 0x23, 0x60, 0x1A, 0xB1, 0x18, 0x4A, 0x12, 0x78, + 0x04, 0x2A, 0x08, 0xD0, 0x33, 0xB1, 0x13, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x13, 0x4A, + 0x13, 0x49, 0xD2, 0xF8, 0x04, 0x38, 0x43, 0xF0, 0x01, 0x03, 0xC2, 0xF8, + 0x04, 0x38, 0x0A, 0x69, 0x02, 0xF5, 0x0C, 0x52, 0x28, 0x32, 0x0B, 0x69, + 0xD3, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x0B, 0x4A, 0x0C, 0x48, 0xD2, 0xF8, + 0x04, 0x38, 0x23, 0xF0, 0x01, 0x03, 0xC2, 0xF8, 0x04, 0x38, 0x1A, 0xF0, + 0x23, 0xFC, 0x00, 0x22, 0x23, 0x68, 0x2A, 0x70, 0xD8, 0xE7, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x52, 0x28, 0x17, 0x00, + 0x6F, 0x26, 0x17, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x3C, 0x85, 0x15, 0x00, 0x38, 0xB5, 0x04, 0x46, 0x0D, 0x46, 0xFF, 0xF7, + 0xB1, 0xFF, 0x15, 0x4B, 0x1B, 0x78, 0x04, 0x2B, 0x20, 0xD1, 0x62, 0x1E, + 0xD3, 0xB2, 0x04, 0x2B, 0x1E, 0xD8, 0x60, 0x01, 0x00, 0xF1, 0x80, 0x40, + 0x00, 0xF5, 0x00, 0x10, 0xD0, 0xF8, 0x00, 0x39, 0x1B, 0x04, 0x17, 0xD5, + 0x0D, 0x49, 0x53, 0x01, 0x03, 0xF1, 0x80, 0x43, 0x01, 0xEB, 0x02, 0x12, + 0x03, 0xF5, 0x00, 0x13, 0x01, 0x21, 0xD1, 0x72, 0xC3, 0xF8, 0x34, 0x59, + 0xD0, 0xF8, 0x00, 0x39, 0x43, 0xF0, 0x04, 0x43, 0xC0, 0xF8, 0x00, 0x39, + 0x00, 0x20, 0x38, 0xBD, 0x01, 0x20, 0x38, 0xBD, 0x02, 0x20, 0x38, 0xBD, + 0x05, 0x20, 0x38, 0xBD, 0x6F, 0x26, 0x17, 0x00, 0xC8, 0x27, 0x17, 0x00, + 0x93, 0x4B, 0x5A, 0x69, 0x2D, 0xE9, 0xF0, 0x4F, 0x5A, 0x61, 0x9C, 0x69, + 0x14, 0x40, 0xE1, 0x04, 0x85, 0xB0, 0x0A, 0xD5, 0x8F, 0x4B, 0xD3, 0xF8, + 0xDC, 0x34, 0x98, 0x47, 0x14, 0xF4, 0x00, 0x5A, 0x40, 0xF0, 0xAB, 0x80, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDF, 0xF8, 0x44, 0xA2, 0xA2, 0x04, + 0x04, 0xEA, 0x0A, 0x0A, 0x04, 0xF4, 0x80, 0x25, 0x04, 0xF4, 0x00, 0x29, + 0x04, 0xF4, 0x00, 0x6B, 0x00, 0xF1, 0x9F, 0x80, 0x00, 0x2D, 0x42, 0xD0, + 0x81, 0x4D, 0x83, 0x4E, 0xD5, 0xF8, 0x18, 0x28, 0xD5, 0xF8, 0x1C, 0x38, + 0x00, 0x24, 0x02, 0xEA, 0x03, 0x08, 0x01, 0x20, 0x00, 0xFA, 0x04, 0xF3, + 0x13, 0xEA, 0x08, 0x0F, 0xE7, 0xB2, 0x2D, 0xD0, 0x00, 0x2C, 0x00, 0xF0, + 0xA0, 0x80, 0x63, 0x1E, 0x05, 0xEB, 0x43, 0x13, 0xD3, 0xF8, 0x28, 0x29, + 0xC3, 0xF8, 0x28, 0x29, 0xD5, 0xF8, 0x10, 0x18, 0x11, 0x40, 0x11, 0xF0, + 0x09, 0x0F, 0x74, 0xD0, 0x16, 0xF8, 0x05, 0x3C, 0xD3, 0xB1, 0x56, 0xF8, + 0x0C, 0x3C, 0x01, 0x93, 0xD2, 0x43, 0x56, 0xF8, 0x10, 0x3C, 0x02, 0x93, + 0x12, 0xF0, 0x01, 0x03, 0x00, 0x93, 0x40, 0xF0, 0xB6, 0x80, 0x10, 0x22, + 0x00, 0x21, 0xA6, 0xF1, 0x10, 0x00, 0xF6, 0xF7, 0x15, 0xF9, 0x6A, 0x4B, + 0x03, 0xEB, 0x84, 0x03, 0x1B, 0x6B, 0x1B, 0xB1, 0xDD, 0xE9, 0x00, 0x21, + 0x02, 0x98, 0x98, 0x47, 0x04, 0x2F, 0x02, 0xD0, 0x01, 0x34, 0x10, 0x36, + 0xC5, 0xE7, 0xB9, 0xF1, 0x00, 0x0F, 0x3C, 0xD0, 0x5E, 0x4D, 0x62, 0x4E, + 0xD5, 0xF8, 0x18, 0x78, 0xD5, 0xF8, 0x1C, 0x38, 0xDF, 0xF8, 0x90, 0x81, + 0xDF, 0xF8, 0x74, 0x91, 0x1F, 0x40, 0x00, 0x24, 0x4F, 0xF4, 0x80, 0x33, + 0xA3, 0x40, 0x3B, 0x42, 0x0C, 0xD0, 0xC4, 0xB1, 0x63, 0x1E, 0x05, 0xEB, + 0x43, 0x13, 0xD3, 0xF8, 0x28, 0x2B, 0xC3, 0xF8, 0x28, 0x2B, 0xD5, 0xF8, + 0x14, 0x38, 0x13, 0x40, 0xDB, 0x07, 0x5F, 0xD4, 0xE3, 0xB2, 0x04, 0x2B, + 0x1B, 0xD0, 0x01, 0x34, 0x4F, 0xF4, 0x80, 0x33, 0xA3, 0x40, 0x3B, 0x42, + 0x06, 0xF1, 0x10, 0x06, 0xF4, 0xD0, 0x00, 0x2C, 0xE6, 0xD1, 0xD5, 0xF8, + 0x08, 0x1B, 0xC5, 0xF8, 0x08, 0x1B, 0xD5, 0xF8, 0x14, 0x38, 0x0B, 0x40, + 0xDA, 0x06, 0x7B, 0xD4, 0x13, 0xF0, 0x29, 0x0F, 0xE9, 0xD0, 0x44, 0x4B, + 0x20, 0x46, 0xD3, 0xF8, 0x00, 0x31, 0x98, 0x47, 0xE3, 0xE7, 0xBB, 0xF1, + 0x00, 0x0F, 0x03, 0xD0, 0x3F, 0x4B, 0xD3, 0xF8, 0x8C, 0x34, 0x98, 0x47, + 0xBA, 0xF1, 0x00, 0x0F, 0xBF, 0xF6, 0x60, 0xAF, 0x3B, 0x4B, 0xD3, 0xF8, + 0x90, 0x34, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x3C, 0x48, + 0xFC, 0xF7, 0x56, 0xF9, 0xA4, 0xE7, 0x4F, 0xF0, 0x00, 0x0B, 0xD9, 0x46, + 0x5D, 0x46, 0x33, 0x4B, 0xD3, 0xF8, 0x08, 0x38, 0x13, 0xF0, 0x06, 0x0F, + 0xC3, 0xF3, 0x47, 0x02, 0x04, 0xD0, 0xD3, 0x07, 0x02, 0xD5, 0x34, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x2C, 0x4B, 0x33, 0x4A, 0xC3, 0xF8, 0x00, 0x29, + 0xC3, 0xF8, 0x00, 0x2B, 0xFE, 0xF7, 0xF4, 0xFC, 0x4A, 0xE7, 0xD5, 0xF8, + 0x08, 0x19, 0xC5, 0xF8, 0x08, 0x19, 0xD5, 0xF8, 0x10, 0x38, 0x0B, 0x40, + 0x13, 0xF0, 0x18, 0x0F, 0x2B, 0xD1, 0xDF, 0x07, 0x80, 0xD5, 0x23, 0x4B, + 0xD3, 0xF8, 0x00, 0x31, 0x98, 0x47, 0x7B, 0xE7, 0x16, 0xF8, 0x08, 0x3C, + 0x00, 0x2B, 0x9B, 0xD0, 0x58, 0xF8, 0x24, 0x30, 0x56, 0xF8, 0x0C, 0x1C, + 0x1B, 0x88, 0x02, 0x93, 0x30, 0x46, 0xA3, 0x00, 0x50, 0xF8, 0x10, 0x2D, + 0x03, 0x92, 0x01, 0x91, 0x10, 0x22, 0x00, 0x21, 0x00, 0x93, 0xF6, 0xF7, + 0x71, 0xF8, 0x00, 0x9B, 0x4B, 0x44, 0x1B, 0x6A, 0x00, 0x2B, 0x85, 0xD0, + 0xDD, 0xE9, 0x01, 0x01, 0x00, 0x22, 0x41, 0x1A, 0x03, 0x98, 0x98, 0x47, + 0x7E, 0xE7, 0x39, 0x46, 0xFE, 0xF7, 0x8A, 0xFE, 0x45, 0xE7, 0xD5, 0xF8, + 0x10, 0x38, 0x23, 0xF0, 0x10, 0x03, 0xC5, 0xF8, 0x10, 0x38, 0x22, 0x46, + 0x4F, 0xF4, 0x00, 0x11, 0x20, 0x46, 0xFE, 0xF7, 0xE9, 0xFD, 0x49, 0xE7, + 0xD5, 0xF8, 0x14, 0x38, 0x23, 0xF0, 0x10, 0x03, 0xC5, 0xF8, 0x14, 0x38, + 0x22, 0x46, 0x4F, 0xF4, 0x00, 0x11, 0x20, 0x46, 0xFE, 0xF7, 0x80, 0xFD, + 0x63, 0xE7, 0x00, 0xBF, 0x00, 0x00, 0x20, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0xC8, 0x27, 0x17, 0x00, 0x20, 0x26, 0x17, 0x00, 0x08, 0x28, 0x17, 0x00, + 0x48, 0x85, 0x15, 0x00, 0x4C, 0x28, 0x17, 0x00, 0x00, 0x80, 0x00, 0x08, + 0x00, 0x3C, 0x0C, 0x88, 0x40, 0x60, 0x17, 0x00, 0x38, 0xB9, 0x0C, 0x4A, + 0x0C, 0x4B, 0x10, 0x70, 0x18, 0x70, 0x0C, 0x4B, 0x1B, 0x68, 0x5B, 0xB1, + 0x18, 0x47, 0x01, 0x28, 0x09, 0xD0, 0x09, 0x4B, 0x02, 0x38, 0x1B, 0x68, + 0x01, 0x28, 0x94, 0xBF, 0x02, 0x20, 0x03, 0x20, 0x00, 0x2B, 0xF3, 0xD1, + 0x70, 0x47, 0x05, 0x4A, 0x05, 0x4B, 0x10, 0x70, 0x18, 0x70, 0xEA, 0xE7, + 0x59, 0x28, 0x17, 0x00, 0x5A, 0x28, 0x17, 0x00, 0x60, 0x28, 0x17, 0x00, + 0x5B, 0x28, 0x17, 0x00, 0x5C, 0x28, 0x17, 0x00, 0x00, 0x48, 0x70, 0x47, + 0x54, 0x86, 0x15, 0x00, 0x01, 0x28, 0x15, 0xD1, 0x08, 0xB5, 0x0B, 0x4B, + 0x1B, 0x68, 0x0B, 0xB1, 0x04, 0x20, 0x98, 0x47, 0x02, 0x22, 0x11, 0x46, + 0x4F, 0xF4, 0x00, 0x73, 0x01, 0x20, 0xFE, 0xF7, 0x65, 0xFF, 0x4F, 0xF4, + 0x00, 0x73, 0x02, 0x22, 0x01, 0x21, 0x00, 0x20, 0xFE, 0xF7, 0x5E, 0xFF, + 0x01, 0x20, 0x08, 0xBD, 0x00, 0x20, 0x70, 0x47, 0x60, 0x28, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x58, 0x4E, 0xDF, 0xF8, 0x9C, 0xE1, 0x33, 0x88, + 0x57, 0x4C, 0x00, 0x2A, 0x03, 0xF1, 0x01, 0x03, 0x0C, 0xBF, 0x02, 0x25, + 0x03, 0x25, 0x9B, 0xB2, 0x00, 0x27, 0x33, 0x80, 0x8E, 0xF8, 0x00, 0x50, + 0x27, 0x70, 0x9E, 0xF8, 0x00, 0xC0, 0xBC, 0xF1, 0x02, 0x0F, 0x4C, 0xD1, + 0x03, 0x29, 0x04, 0x46, 0x0D, 0x46, 0x8E, 0xF8, 0x00, 0x70, 0x55, 0xD9, + 0x43, 0x78, 0x4C, 0x4A, 0x07, 0x78, 0x12, 0x78, 0x90, 0xF8, 0x02, 0x80, + 0x1B, 0x02, 0x03, 0xF4, 0x70, 0x63, 0x1F, 0x43, 0x00, 0x2A, 0x78, 0xD1, + 0xB8, 0xF1, 0x01, 0x0F, 0x64, 0xD0, 0xB8, 0xF1, 0x11, 0x0F, 0x55, 0xD1, + 0xDF, 0xF8, 0x44, 0x81, 0x98, 0xF8, 0x9D, 0x27, 0x98, 0xF8, 0x9E, 0x37, + 0x9A, 0x42, 0x77, 0xD2, 0x3B, 0x1D, 0xAB, 0x42, 0x02, 0xD0, 0x7B, 0x1D, + 0x9D, 0x42, 0x6E, 0xD1, 0x3D, 0x4B, 0xD3, 0xF8, 0x3C, 0x34, 0x98, 0x47, + 0x98, 0xF8, 0x9C, 0x37, 0x3B, 0x49, 0x98, 0xF8, 0x9D, 0x27, 0x01, 0x33, + 0xA1, 0xFB, 0x03, 0x01, 0x49, 0x09, 0x01, 0xEB, 0x81, 0x01, 0xA3, 0xEB, + 0xC1, 0x01, 0x08, 0xEB, 0x01, 0x15, 0x04, 0x34, 0x53, 0x1C, 0x88, 0xF8, + 0x9C, 0x17, 0x34, 0x48, 0xC5, 0xF8, 0x20, 0x45, 0x05, 0xF2, 0x1C, 0x51, + 0xC5, 0xF8, 0x24, 0x75, 0x88, 0xF8, 0x9D, 0x37, 0x19, 0xF0, 0x22, 0xF8, + 0x4F, 0xF4, 0x00, 0x00, 0x18, 0xF0, 0x7C, 0xFF, 0x0B, 0xE0, 0x9E, 0xF8, + 0x00, 0x10, 0x2C, 0x48, 0xFC, 0xF7, 0x28, 0xF8, 0x47, 0xF2, 0x30, 0x52, + 0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, 0x18, 0xF0, 0xE1, 0xF9, 0x01, 0x20, + 0xBD, 0xE8, 0xF0, 0x81, 0x31, 0x88, 0x26, 0x48, 0x89, 0xB2, 0x2A, 0x46, + 0xFC, 0xF7, 0x18, 0xF8, 0x24, 0x4B, 0x18, 0x68, 0x20, 0x1A, 0xFD, 0xF7, + 0x05, 0xF9, 0x1D, 0x4B, 0xD3, 0xF8, 0x3C, 0x34, 0x98, 0x47, 0x01, 0x20, + 0xBD, 0xE8, 0xF0, 0x81, 0x41, 0x46, 0x1F, 0x48, 0xFC, 0xF7, 0x08, 0xF8, + 0x31, 0x88, 0x1E, 0x48, 0x89, 0xB2, 0x2B, 0x46, 0x3A, 0x46, 0xFC, 0xF7, + 0x01, 0xF8, 0xE7, 0xE7, 0xBD, 0x42, 0x02, 0xD0, 0x7B, 0x1C, 0xAB, 0x42, + 0x12, 0xD1, 0x11, 0x4D, 0xD5, 0xF8, 0x3C, 0x34, 0x98, 0x47, 0x20, 0x1D, + 0xD5, 0xF8, 0x0C, 0x31, 0x98, 0x47, 0x40, 0x20, 0x18, 0xF0, 0x3E, 0xFF, + 0xCD, 0xE7, 0x0A, 0x46, 0x4F, 0xF4, 0x00, 0x70, 0x11, 0x49, 0x1A, 0xF0, + 0x03, 0xFA, 0x7F, 0xE7, 0x31, 0x88, 0x10, 0x48, 0xDE, 0xE7, 0x31, 0x88, + 0x0F, 0x48, 0xDB, 0xE7, 0x0F, 0x48, 0xFB, 0xF7, 0xDF, 0xFF, 0xC5, 0xE7, + 0x56, 0x28, 0x17, 0x00, 0x58, 0x28, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, 0xF8, 0x5F, 0x17, 0x00, + 0xD0, 0x85, 0x15, 0x00, 0xC0, 0x85, 0x15, 0x00, 0x80, 0x1A, 0x17, 0x00, + 0xB0, 0x85, 0x15, 0x00, 0x78, 0x85, 0x15, 0x00, 0x68, 0x85, 0x15, 0x00, + 0x70, 0x85, 0x15, 0x00, 0x84, 0x85, 0x15, 0x00, 0x98, 0x85, 0x15, 0x00, + 0x59, 0x28, 0x17, 0x00, 0x58, 0x58, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x00, 0x2A, 0x2A, 0x4B, 0x0C, 0xBF, 0x02, 0x21, 0x03, 0x21, 0x19, 0x70, + 0x19, 0x78, 0x02, 0x29, 0x3D, 0xD1, 0x27, 0x4C, 0x22, 0x78, 0x00, 0x21, + 0x19, 0x70, 0x52, 0xB3, 0x25, 0x4D, 0x26, 0x4F, 0xA5, 0xF1, 0x08, 0x06, + 0x0A, 0xE0, 0x01, 0x2A, 0x41, 0x46, 0x38, 0x46, 0x28, 0xD1, 0x13, 0x2B, + 0x40, 0x46, 0x01, 0xD0, 0xFD, 0xF7, 0x90, 0xF8, 0x23, 0x78, 0xD3, 0xB1, + 0x28, 0x46, 0x18, 0xF0, 0xCD, 0xFF, 0x42, 0x68, 0x23, 0x78, 0xD2, 0xF8, + 0x04, 0x80, 0x01, 0x3B, 0x01, 0x46, 0x30, 0x46, 0x23, 0x70, 0x18, 0xF0, + 0x7F, 0xFF, 0x98, 0xF8, 0x02, 0x30, 0x1A, 0x09, 0xE3, 0xD1, 0x17, 0x4A, + 0x13, 0x88, 0x10, 0x20, 0x01, 0x33, 0x13, 0x80, 0x18, 0xF0, 0xD2, 0xFE, + 0x23, 0x78, 0x00, 0x2B, 0xE4, 0xD1, 0x13, 0x4B, 0xD3, 0xF8, 0x44, 0x34, + 0x98, 0x47, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0xFB, 0xF7, 0x78, 0xFF, + 0x40, 0x46, 0x20, 0x21, 0x1A, 0xF0, 0x1C, 0xFD, 0xD4, 0xE7, 0x19, 0x78, + 0x0C, 0x48, 0xFB, 0xF7, 0x6F, 0xFF, 0x47, 0xF2, 0x30, 0x52, 0x01, 0x21, + 0x40, 0xF2, 0x1E, 0x40, 0x18, 0xF0, 0x28, 0xF9, 0x01, 0x20, 0xBD, 0xE8, + 0xF0, 0x81, 0x00, 0xBF, 0x5A, 0x28, 0x17, 0x00, 0x64, 0x60, 0x17, 0x00, + 0xA8, 0x56, 0x17, 0x00, 0xF0, 0x85, 0x15, 0x00, 0x54, 0x28, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0x86, 0x15, 0x00, 0x10, 0x4B, 0x11, 0x49, + 0x11, 0x4A, 0x2D, 0xE9, 0xF0, 0x41, 0x05, 0x46, 0x00, 0x68, 0x18, 0x60, + 0xDF, 0xF8, 0x44, 0x80, 0x0E, 0x4F, 0x0F, 0x4E, 0x00, 0x23, 0x0B, 0x70, + 0x13, 0x70, 0x29, 0x7A, 0xD8, 0xF8, 0x08, 0x31, 0x00, 0x39, 0x18, 0xBF, + 0x01, 0x21, 0x38, 0x46, 0x98, 0x47, 0x04, 0x46, 0x01, 0x46, 0x30, 0x46, + 0x1A, 0xF0, 0x04, 0xF9, 0x00, 0x2C, 0xF0, 0xD1, 0x20, 0x46, 0xBD, 0xE8, + 0xF0, 0x81, 0x00, 0xBF, 0x60, 0x28, 0x17, 0x00, 0x59, 0x28, 0x17, 0x00, + 0x5A, 0x28, 0x17, 0x00, 0x38, 0x1A, 0x17, 0x00, 0x20, 0x86, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x1D, 0x4D, 0x2B, 0x78, 0xFB, 0xB9, + 0xD8, 0xB1, 0x0A, 0x46, 0xC9, 0xB1, 0x1B, 0x4F, 0x3B, 0x78, 0xE3, 0xB9, + 0x1A, 0x4C, 0x01, 0x26, 0x3E, 0x70, 0xD4, 0xF8, 0x30, 0x3B, 0x23, 0xF0, + 0xFF, 0x53, 0x23, 0xF4, 0xC0, 0x13, 0x01, 0x46, 0xC4, 0xF8, 0x30, 0x3B, + 0x30, 0x46, 0xFE, 0xF7, 0x7B, 0xFE, 0x04, 0x46, 0xC8, 0xB9, 0x13, 0x4B, + 0x1E, 0x70, 0x2B, 0x78, 0x73, 0xB9, 0x20, 0x46, 0xF8, 0xBD, 0x6F, 0xF0, + 0x0A, 0x04, 0xFA, 0xE7, 0x6F, 0xF0, 0x0D, 0x04, 0xF7, 0xE7, 0x39, 0x78, + 0x0D, 0x48, 0xFB, 0xF7, 0xFD, 0xFE, 0x6F, 0xF0, 0x02, 0x04, 0xF0, 0xE7, + 0x31, 0x46, 0xFE, 0xF7, 0xB3, 0xFC, 0x3C, 0x70, 0x6F, 0xF0, 0x0D, 0x04, + 0xE9, 0xE7, 0x01, 0x46, 0x07, 0x48, 0xFB, 0xF7, 0xEF, 0xFE, 0x4F, 0xF0, + 0xFF, 0x34, 0xE2, 0xE7, 0x5B, 0x28, 0x17, 0x00, 0x59, 0x28, 0x17, 0x00, + 0x00, 0x00, 0x20, 0x40, 0x58, 0x28, 0x17, 0x00, 0x30, 0x86, 0x15, 0x00, + 0x48, 0x86, 0x15, 0x00, 0xF8, 0xB5, 0x20, 0x4D, 0x2B, 0x78, 0x2B, 0xBB, + 0x08, 0xB3, 0x0A, 0x46, 0xF9, 0xB1, 0x1E, 0x4F, 0x3B, 0x78, 0x13, 0xBB, + 0x1D, 0x4C, 0x01, 0x26, 0x3E, 0x70, 0xD4, 0xF8, 0x30, 0x3B, 0x23, 0xF0, + 0xFF, 0x53, 0x23, 0xF4, 0xC0, 0x13, 0xC4, 0xF8, 0x30, 0x3B, 0xD4, 0xF8, + 0x00, 0x38, 0x43, 0xF4, 0x00, 0x53, 0x01, 0x46, 0xC4, 0xF8, 0x00, 0x38, + 0x30, 0x46, 0xFE, 0xF7, 0x87, 0xFE, 0x04, 0x46, 0xC8, 0xB9, 0x13, 0x4B, + 0x1E, 0x70, 0x2B, 0x78, 0x73, 0xB9, 0x20, 0x46, 0xF8, 0xBD, 0x6F, 0xF0, + 0x0A, 0x04, 0xFA, 0xE7, 0x6F, 0xF0, 0x0D, 0x04, 0xF7, 0xE7, 0x39, 0x78, + 0x0D, 0x48, 0xFB, 0xF7, 0xAF, 0xFE, 0x6F, 0xF0, 0x02, 0x04, 0xF0, 0xE7, + 0x31, 0x46, 0xFE, 0xF7, 0x65, 0xFC, 0x3C, 0x70, 0x6F, 0xF0, 0x0D, 0x04, + 0xE9, 0xE7, 0x01, 0x46, 0x07, 0x48, 0xFB, 0xF7, 0xA1, 0xFE, 0x4F, 0xF0, + 0xFF, 0x34, 0xE2, 0xE7, 0x5B, 0x28, 0x17, 0x00, 0x59, 0x28, 0x17, 0x00, + 0x00, 0x00, 0x20, 0x40, 0x58, 0x28, 0x17, 0x00, 0x30, 0x86, 0x15, 0x00, + 0x48, 0x86, 0x15, 0x00, 0xF8, 0xB5, 0x26, 0x4C, 0xFF, 0xF7, 0xFE, 0xFB, + 0x23, 0x78, 0x00, 0x2B, 0x42, 0xD1, 0x24, 0x4D, 0x28, 0x46, 0x18, 0xF0, + 0xFB, 0xFE, 0xDF, 0xF8, 0x90, 0xC0, 0xC0, 0xB2, 0x8C, 0xF8, 0x00, 0x00, + 0x00, 0x28, 0x31, 0xD0, 0x1F, 0x4A, 0x2F, 0x68, 0x42, 0xF2, 0x30, 0x03, + 0x01, 0x28, 0xD6, 0x58, 0x28, 0xD0, 0xBD, 0x89, 0xB3, 0x89, 0xAB, 0x42, + 0x11, 0xD2, 0x39, 0x46, 0x03, 0x46, 0x03, 0xE0, 0x53, 0xB1, 0x95, 0x89, + 0x0E, 0x46, 0x11, 0x46, 0xC2, 0x1A, 0xD2, 0xB2, 0x01, 0x3B, 0xF5, 0xB1, + 0x0A, 0x68, 0xDB, 0xB2, 0x00, 0x2A, 0xF3, 0xD1, 0x8C, 0xF8, 0x00, 0x30, + 0x0E, 0x46, 0xB3, 0x7B, 0x72, 0x68, 0x79, 0x68, 0x01, 0x3B, 0x02, 0xEB, + 0xC3, 0x02, 0x01, 0x20, 0xD3, 0x78, 0x20, 0x70, 0x23, 0xF0, 0x0A, 0x03, + 0x43, 0xF0, 0x0A, 0x03, 0xD3, 0x70, 0x02, 0x20, 0xBD, 0xE8, 0xF8, 0x40, + 0xFF, 0xF7, 0x0A, 0xBC, 0x00, 0x2E, 0xEA, 0xD1, 0x6F, 0xF0, 0x61, 0x00, + 0xF8, 0xBD, 0x8C, 0xF8, 0x00, 0x20, 0xE4, 0xE7, 0x6F, 0xF0, 0x62, 0x00, + 0xF8, 0xBD, 0x00, 0xBF, 0x5A, 0x28, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, + 0x7C, 0x36, 0x17, 0x00, 0x64, 0x60, 0x17, 0x00, 0x01, 0x28, 0x07, 0xD0, + 0x06, 0x28, 0x07, 0xD0, 0x04, 0x4B, 0x0F, 0x28, 0x0C, 0xBF, 0x18, 0x46, + 0x00, 0x20, 0x70, 0x47, 0x02, 0x48, 0x70, 0x47, 0x02, 0x48, 0x70, 0x47, + 0x74, 0x86, 0x15, 0x00, 0x80, 0x86, 0x15, 0x00, 0x94, 0x86, 0x15, 0x00, + 0x06, 0x28, 0x0B, 0xD8, 0x01, 0x38, 0x05, 0x28, 0x16, 0xD8, 0xDF, 0xE8, + 0x00, 0xF0, 0x05, 0x03, 0x13, 0x0F, 0x11, 0x03, 0x09, 0x48, 0x70, 0x47, + 0x09, 0x48, 0x70, 0x47, 0x12, 0x30, 0xC0, 0xB2, 0x06, 0x4B, 0x02, 0x28, + 0x34, 0xBF, 0x18, 0x46, 0x00, 0x20, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, + 0x05, 0x48, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, 0x05, 0x48, 0x70, 0x47, + 0xC4, 0x86, 0x15, 0x00, 0xB4, 0x86, 0x15, 0x00, 0xA0, 0x86, 0x15, 0x00, + 0xA8, 0x86, 0x15, 0x00, 0xD8, 0x86, 0x15, 0x00, 0xEC, 0x86, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0x1D, 0x4F, 0x1E, 0x48, 0x18, 0xF0, 0xE4, 0xFD, + 0x3B, 0x68, 0x1B, 0x89, 0x93, 0xB3, 0xDF, 0xF8, 0x7C, 0x90, 0x1B, 0x4E, + 0xDF, 0xF8, 0x78, 0x80, 0xDF, 0xF8, 0x78, 0xB0, 0xDF, 0xF8, 0x78, 0xA0, + 0x00, 0x25, 0x0C, 0xE0, 0x21, 0x46, 0x15, 0x48, 0x18, 0xF0, 0xD6, 0xFD, + 0x3A, 0x68, 0x33, 0x88, 0x11, 0x89, 0x01, 0x35, 0xAA, 0xB2, 0x01, 0x33, + 0x91, 0x42, 0x33, 0x80, 0x1A, 0xD9, 0xB9, 0xF8, 0xD4, 0x10, 0x04, 0x39, + 0x89, 0xB2, 0x40, 0x46, 0xFC, 0xF7, 0x58, 0xFC, 0x04, 0x46, 0x00, 0x28, + 0xE8, 0xD1, 0xA9, 0xB2, 0x58, 0x46, 0x19, 0xF0, 0x99, 0xFF, 0xDA, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDE, 0xDA, 0x07, 0x49, + 0x07, 0x48, 0x4F, 0xF4, 0xFB, 0x72, 0x1A, 0xF0, 0x07, 0xFA, 0xD7, 0xE7, + 0xBD, 0xE8, 0xF8, 0x8F, 0x78, 0x36, 0x17, 0x00, 0x80, 0x60, 0x17, 0x00, + 0x66, 0x28, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0xF0, 0x86, 0x15, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0C, 0x4C, + 0x0C, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0xD2, 0xFD, + 0x18, 0xB1, 0x0A, 0x4A, 0x13, 0x88, 0x01, 0x3B, 0x13, 0x80, 0x23, 0x68, + 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x80, 0x60, 0x17, 0x00, 0x66, 0x28, 0x17, 0x00, + 0x38, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x28, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x27, 0x4C, 0x28, 0x48, + 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x65, 0xFD, 0x26, 0x4A, + 0x26, 0x49, 0x13, 0x88, 0x0D, 0x78, 0x01, 0x33, 0x9B, 0xB2, 0x13, 0x80, + 0x24, 0x4A, 0x11, 0x78, 0x9D, 0xB9, 0x49, 0xB9, 0x23, 0x68, 0x33, 0xB1, + 0x1C, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0x38, 0xBD, 0x1E, 0x49, 0x09, 0x78, 0x99, 0x42, 0xF1, 0xD8, + 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0x15, 0x70, 0x1B, 0xE0, 0x00, 0x29, + 0xEA, 0xD0, 0x19, 0x49, 0x09, 0x78, 0x99, 0x42, 0xE6, 0xD8, 0x18, 0x4B, + 0x00, 0x21, 0x11, 0x70, 0xD3, 0xF8, 0x00, 0x28, 0x22, 0xF4, 0x00, 0x52, + 0xC3, 0xF8, 0x00, 0x28, 0xD3, 0xF8, 0x20, 0x2B, 0x8A, 0x42, 0x05, 0xDA, + 0xD3, 0xF8, 0x20, 0x2B, 0x42, 0xF0, 0x80, 0x62, 0xC3, 0xF8, 0x20, 0x2B, + 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0x17, 0xF0, 0xA9, 0xFF, 0x0D, 0x49, + 0x4F, 0xF4, 0x00, 0x70, 0x19, 0xF0, 0x4E, 0xFF, 0x0B, 0x4B, 0xD3, 0xF8, + 0x3C, 0x34, 0x98, 0x47, 0xC4, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x80, 0x60, 0x17, 0x00, 0x66, 0x28, 0x17, 0x00, + 0x68, 0x60, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, 0x88, 0x60, 0x17, 0x00, + 0x00, 0x00, 0x20, 0x40, 0x20, 0x87, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xF8, 0xB5, 0x0C, 0x4D, 0x0C, 0x48, 0x18, 0xF0, 0x01, 0xFD, 0x2B, 0x68, + 0x9B, 0x88, 0x83, 0xB1, 0x0A, 0x4F, 0x09, 0x4E, 0x00, 0x24, 0x7C, 0x21, + 0x38, 0x46, 0xFC, 0xF7, 0x8D, 0xFB, 0x01, 0x46, 0x30, 0x46, 0x18, 0xF0, + 0xF7, 0xFC, 0x2B, 0x68, 0x01, 0x34, 0x9A, 0x88, 0xA3, 0xB2, 0x9A, 0x42, + 0xF1, 0xD8, 0xF8, 0xBD, 0x78, 0x36, 0x17, 0x00, 0x70, 0x60, 0x17, 0x00, + 0xE4, 0x25, 0x17, 0x00, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x09, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, + 0x09, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x1E, 0xFD, + 0x23, 0x68, 0x33, 0xB1, 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x70, 0x60, 0x17, 0x00, 0x10, 0xB5, 0x01, 0x46, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x0A, 0x48, 0x23, 0x68, 0x01, 0x33, + 0x23, 0x60, 0x18, 0xF0, 0xB9, 0xFC, 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x10, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x70, 0x60, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x48, 0xFF, 0xF7, 0x5E, 0xFD, + 0x03, 0x48, 0x19, 0xF0, 0x7B, 0xFE, 0x01, 0x20, 0x08, 0xBD, 0x00, 0xBF, + 0xFC, 0x87, 0x15, 0x00, 0x28, 0x87, 0x15, 0x00, 0x70, 0xB5, 0x3C, 0x4D, + 0x3C, 0x4C, 0x2A, 0x68, 0x3C, 0x49, 0x12, 0x69, 0x3C, 0x4B, 0x22, 0x60, + 0x02, 0xF1, 0x40, 0x06, 0x00, 0x24, 0x0E, 0x60, 0x3A, 0x4E, 0x98, 0x60, + 0xC3, 0xE9, 0x00, 0x44, 0x21, 0x46, 0x10, 0x46, 0x4F, 0xF4, 0xA0, 0x72, + 0xC3, 0xE9, 0x04, 0x44, 0xDC, 0x60, 0xB4, 0x81, 0xF5, 0xF7, 0xEC, 0xFB, + 0x2B, 0x68, 0x34, 0x49, 0x58, 0x69, 0x34, 0x4A, 0x34, 0x4B, 0x08, 0x60, + 0x21, 0x46, 0x00, 0xF1, 0x08, 0x04, 0x14, 0x60, 0x00, 0xF1, 0x10, 0x02, + 0x1A, 0x60, 0x00, 0xF1, 0x18, 0x02, 0x5A, 0x60, 0x00, 0xF1, 0x20, 0x02, + 0x9A, 0x60, 0x2E, 0x4C, 0x00, 0xF1, 0x28, 0x02, 0xDA, 0x60, 0x00, 0xF1, + 0x30, 0x03, 0x4F, 0xF4, 0x4B, 0x62, 0x23, 0x60, 0xF5, 0xF7, 0xCE, 0xFB, + 0x29, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x2E, 0xDB, + 0x27, 0x4B, 0x28, 0x49, 0xB3, 0xF8, 0xD4, 0x20, 0x0C, 0x68, 0xB3, 0xF8, + 0xD6, 0x00, 0xB3, 0xF8, 0xE6, 0x10, 0x25, 0x4D, 0x25, 0x4E, 0x12, 0x1B, + 0x25, 0x4C, 0x04, 0x3A, 0x22, 0x60, 0x04, 0x38, 0x24, 0x4C, 0x30, 0x60, + 0x05, 0xFB, 0x01, 0xF1, 0x93, 0xF8, 0xE0, 0x00, 0x22, 0x4D, 0x20, 0x70, + 0x22, 0x4A, 0x93, 0xF8, 0xE1, 0x00, 0x28, 0x70, 0x93, 0xF8, 0xE2, 0x50, + 0x20, 0x48, 0x15, 0x70, 0x20, 0x4C, 0x21, 0x4A, 0x93, 0xF8, 0xE3, 0x50, + 0x93, 0xF8, 0xE4, 0x30, 0x03, 0x70, 0x1F, 0x4B, 0x25, 0x70, 0x91, 0x42, + 0xD4, 0xBF, 0x19, 0x60, 0x1A, 0x60, 0x01, 0x20, 0x70, 0xBD, 0x2B, 0x68, + 0x9B, 0x69, 0xB3, 0xF5, 0x4B, 0x6F, 0xCB, 0xD2, 0x19, 0x49, 0x1A, 0x48, + 0x40, 0xF2, 0xF2, 0x22, 0x1A, 0xF0, 0x76, 0xF8, 0xC4, 0xE7, 0x00, 0xBF, + 0x78, 0x36, 0x17, 0x00, 0x60, 0x60, 0x17, 0x00, 0x58, 0x60, 0x17, 0x00, + 0xA4, 0x60, 0x17, 0x00, 0x8C, 0x60, 0x17, 0x00, 0x5C, 0x60, 0x17, 0x00, + 0x40, 0x60, 0x17, 0x00, 0x44, 0x60, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x80, 0x1A, 0x17, 0x00, + 0x40, 0x42, 0x0F, 0x00, 0x9C, 0x60, 0x17, 0x00, 0x78, 0x60, 0x17, 0x00, + 0x7C, 0x60, 0x17, 0x00, 0x88, 0x60, 0x17, 0x00, 0xA0, 0x60, 0x17, 0x00, + 0x68, 0x60, 0x17, 0x00, 0xA1, 0x60, 0x17, 0x00, 0xFF, 0xA2, 0xE1, 0x11, + 0x6C, 0x60, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x87, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0x43, 0x7E, 0x07, 0x7E, 0x09, 0x2B, 0x05, 0x46, + 0x09, 0xD8, 0x49, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, + 0x93, 0xF8, 0x25, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0x81, 0x80, 0x6B, 0x8B, + 0xDF, 0xF8, 0x30, 0x81, 0x1A, 0x07, 0x5A, 0xD4, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x07, 0x83, 0x93, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x73, 0xD0, + 0x3E, 0x4B, 0xAE, 0x7D, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x63, 0xDB, 0x3C, 0x48, 0x18, 0xF0, 0x0C, 0xFC, 0x04, 0x46, 0x00, 0x28, + 0x4C, 0xD0, 0x3A, 0x48, 0xE1, 0x8B, 0x83, 0x5D, 0xE2, 0x6C, 0x4F, 0xF0, + 0x00, 0x09, 0x01, 0x33, 0x21, 0xF0, 0x01, 0x01, 0x83, 0x55, 0xE1, 0x83, + 0xC4, 0xF8, 0x44, 0x90, 0x29, 0x46, 0xC2, 0xF8, 0x10, 0x90, 0x20, 0x1D, + 0x1C, 0x22, 0xC4, 0xF8, 0x2C, 0x90, 0x2C, 0xF0, 0xA9, 0xFA, 0x30, 0x4B, + 0xE1, 0x8B, 0x1B, 0x68, 0x84, 0xF8, 0x42, 0x90, 0xEB, 0x1A, 0x04, 0x3B, + 0x21, 0xF4, 0x00, 0x42, 0x22, 0xF0, 0x02, 0x02, 0xA3, 0x64, 0x0B, 0x07, + 0xC4, 0xF8, 0x24, 0x90, 0xC4, 0xF8, 0x50, 0x90, 0xE2, 0x83, 0x29, 0xD4, + 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, + 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x23, 0x49, 0xA0, 0x88, 0x03, 0xF6, + 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x02, 0x44, 0x41, 0xF8, 0x23, 0x20, + 0xA4, 0x20, 0x00, 0xFB, 0x07, 0x60, 0x99, 0x30, 0x21, 0x46, 0x08, 0xEB, + 0xC0, 0x00, 0xBD, 0xE8, 0xF8, 0x43, 0x18, 0xF0, 0x7F, 0xBB, 0x16, 0x48, + 0x18, 0xF0, 0xC0, 0xFB, 0x05, 0x26, 0x04, 0x46, 0x00, 0x28, 0xB2, 0xD1, + 0x13, 0x4B, 0x16, 0x48, 0x99, 0x5D, 0xFB, 0xF7, 0x83, 0xFB, 0xFE, 0xE7, + 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x07, 0x80, 0x21, 0x46, 0x00, 0xF5, + 0xA3, 0x60, 0xBD, 0xE8, 0xF8, 0x43, 0x18, 0xF0, 0x67, 0xBB, 0x05, 0x2E, + 0x99, 0xD9, 0x0E, 0x49, 0x0E, 0x48, 0x40, 0xF2, 0x5F, 0x32, 0x19, 0xF0, + 0xB3, 0xFF, 0x92, 0xE7, 0x07, 0x4B, 0x18, 0x68, 0x28, 0x1A, 0x04, 0x38, + 0xBD, 0xE8, 0xF8, 0x43, 0xFC, 0xF7, 0x58, 0xBC, 0x68, 0x65, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x20, 0x58, 0x17, 0x00, 0x74, 0x28, 0x17, 0x00, + 0x80, 0x1A, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x60, 0x87, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x88, 0x82, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x48, 0x81, 0xDF, 0xF8, 0x48, 0x91, + 0xDF, 0xF8, 0x48, 0xA1, 0x59, 0xE0, 0x47, 0x48, 0x18, 0xF0, 0x7A, 0xFB, + 0x04, 0x46, 0xDF, 0xF8, 0x40, 0xE1, 0x1C, 0x22, 0x29, 0x46, 0x04, 0x30, + 0x00, 0x2C, 0x63, 0xD0, 0xB4, 0xF8, 0x1E, 0xB0, 0x1E, 0xF8, 0x07, 0xC0, + 0xE3, 0x6C, 0x66, 0x64, 0x2B, 0xF0, 0x01, 0x0B, 0x0C, 0xF1, 0x01, 0x0C, + 0xA4, 0xF8, 0x1E, 0xB0, 0x1E, 0x61, 0xE6, 0x62, 0x0E, 0xF8, 0x07, 0xC0, + 0x2C, 0xF0, 0x16, 0xFA, 0x95, 0xF8, 0x20, 0x20, 0xE3, 0x8B, 0x38, 0x48, + 0x12, 0xF0, 0x01, 0x0F, 0x14, 0xBF, 0x4F, 0xF4, 0x00, 0x52, 0x4F, 0xF4, + 0x08, 0x52, 0x2A, 0x61, 0x84, 0xF8, 0x42, 0x60, 0xC5, 0xE9, 0x05, 0x66, + 0x62, 0x7F, 0x10, 0x32, 0x92, 0x02, 0x45, 0xF8, 0x18, 0x2C, 0x21, 0x7F, + 0x26, 0x65, 0xA4, 0x22, 0x99, 0x37, 0x23, 0xF4, 0x00, 0x43, 0x12, 0xFB, + 0x01, 0x77, 0x23, 0xF0, 0x02, 0x03, 0x4C, 0x3D, 0xA5, 0x64, 0x00, 0xEB, + 0xC7, 0x00, 0xE3, 0x83, 0x21, 0x46, 0x18, 0xF0, 0xF5, 0xFA, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x24, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x24, 0x4C, 0x24, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, + 0x18, 0xF0, 0x2A, 0xFB, 0x98, 0xF8, 0x11, 0x35, 0x22, 0x68, 0x01, 0x3B, + 0x88, 0xF8, 0x11, 0x35, 0x3A, 0xBB, 0xD8, 0xF8, 0x14, 0x35, 0x00, 0x26, + 0xDB, 0xB1, 0xD9, 0xF8, 0x00, 0x20, 0x5D, 0x68, 0xB2, 0xF9, 0x00, 0x30, + 0xAF, 0x7D, 0x00, 0x2B, 0x99, 0xDA, 0x05, 0x2F, 0x97, 0xD9, 0x18, 0x49, + 0x4F, 0xF4, 0x66, 0x72, 0x50, 0x46, 0x19, 0xF0, 0x1F, 0xFF, 0x90, 0xE7, + 0x15, 0x48, 0x1E, 0xF8, 0x07, 0x10, 0xFB, 0xF7, 0xD5, 0xFA, 0x14, 0x4B, + 0x18, 0x68, 0x28, 0x1A, 0x04, 0x38, 0xFC, 0xF7, 0xC1, 0xFB, 0x20, 0x20, + 0x18, 0xF0, 0x3E, 0xFA, 0xBD, 0xE8, 0xF8, 0x4F, 0x40, 0x20, 0x18, 0xF0, + 0x15, 0xBA, 0x08, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0x22, 0x60, 0x00, 0x2A, + 0x7F, 0xF4, 0x74, 0xAF, 0x00, 0x2B, 0x3F, 0xF4, 0x71, 0xAF, 0x62, 0xB6, + 0x6E, 0xE7, 0x00, 0xBF, 0x20, 0x58, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x6C, 0x5D, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x60, 0x87, 0x15, 0x00, 0x80, 0x1A, 0x17, 0x00, + 0x58, 0x58, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x82, 0x15, 0x00, + 0x74, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0xB8, 0x90, + 0x29, 0x4D, 0x2A, 0x4F, 0xDF, 0xF8, 0xAC, 0x80, 0x29, 0x4E, 0x20, 0xE0, + 0x5C, 0x68, 0x20, 0x46, 0xFA, 0xF7, 0x1E, 0xFB, 0x38, 0x68, 0x20, 0x1A, + 0x04, 0x38, 0xFC, 0xF7, 0x81, 0xFB, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xD9, 0xF8, + 0x00, 0x30, 0x30, 0x46, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x18, 0xF0, + 0xB3, 0xFA, 0x95, 0xF8, 0x9D, 0x37, 0xD9, 0xF8, 0x00, 0x20, 0x01, 0x3B, + 0x85, 0xF8, 0x9D, 0x37, 0x0A, 0xBB, 0xD5, 0xF8, 0xA0, 0x37, 0x00, 0x2B, + 0xDA, 0xD1, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x14, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xD9, 0xF8, 0x00, 0x30, 0x4F, 0xF4, + 0x00, 0x00, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x18, 0xF0, 0xD4, 0xF9, + 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x0D, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, + 0xF8, 0x83, 0x01, 0x3A, 0xD8, 0xF8, 0x00, 0x30, 0xC9, 0xF8, 0x00, 0x20, + 0x00, 0x2A, 0xB3, 0xD1, 0x00, 0x2B, 0xB1, 0xD0, 0x62, 0xB6, 0xAF, 0xE7, + 0x58, 0x58, 0x17, 0x00, 0x80, 0x1A, 0x17, 0x00, 0xF8, 0x5F, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x0E, 0x4B, 0x10, 0xB5, + 0xD3, 0xF8, 0x90, 0x32, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0A, 0x4C, + 0x23, 0x68, 0x10, 0x20, 0x01, 0x33, 0x23, 0x60, 0x18, 0xF0, 0x9E, 0xF9, + 0x23, 0x68, 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xF8, 0xB5, 0x16, 0x4C, + 0x16, 0x4E, 0x17, 0x4F, 0x14, 0x4D, 0x15, 0xE0, 0x58, 0x68, 0xFC, 0xF7, + 0x05, 0xFB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, + 0x01, 0x23, 0x33, 0x60, 0x3B, 0x68, 0x28, 0x46, 0x01, 0x33, 0x3B, 0x60, + 0x18, 0xF0, 0x3A, 0xFA, 0x0E, 0x4A, 0x39, 0x68, 0x13, 0x78, 0x01, 0x3B, + 0x13, 0x70, 0x39, 0xB9, 0x23, 0x68, 0x00, 0x2B, 0xE6, 0xD1, 0xBD, 0xE8, + 0xF8, 0x40, 0x08, 0x20, 0x18, 0xF0, 0x6A, 0xB9, 0x01, 0x39, 0x33, 0x68, + 0x39, 0x60, 0x00, 0x29, 0xDA, 0xD1, 0x00, 0x2B, 0xD8, 0xD0, 0x62, 0xB6, + 0xD6, 0xE7, 0x00, 0xBF, 0x94, 0x4E, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x8E, 0x4E, 0x17, 0x00, 0x59, 0x4B, 0x1B, 0x78, + 0x00, 0x2B, 0x67, 0xD1, 0x2D, 0xE9, 0xF0, 0x47, 0x57, 0x4D, 0x2B, 0x78, + 0x00, 0x2B, 0x47, 0xD1, 0x56, 0x4B, 0x1A, 0x78, 0x00, 0x2A, 0x5B, 0xD1, + 0x55, 0x49, 0x56, 0x4A, 0x09, 0x78, 0x12, 0x88, 0x91, 0x42, 0x5E, 0xD2, + 0x54, 0x4B, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, 0x04, 0x46, + 0x00, 0x28, 0x78, 0xD0, 0x2B, 0x78, 0x00, 0x2B, 0x4D, 0xD0, 0x4C, 0x4B, + 0xDF, 0xF8, 0x60, 0xA1, 0x1B, 0x78, 0x4E, 0x4F, 0xDA, 0xF8, 0x00, 0x00, + 0x00, 0x2B, 0x7B, 0xD1, 0x4C, 0x4B, 0x39, 0x68, 0xD3, 0xF8, 0x40, 0x34, + 0x20, 0x44, 0x98, 0x47, 0x00, 0x28, 0x39, 0xD0, 0x01, 0x46, 0x49, 0x48, + 0xDF, 0xF8, 0x08, 0x91, 0xDF, 0xF8, 0x18, 0x81, 0xFB, 0xF7, 0xAE, 0xF9, + 0x05, 0x26, 0x2B, 0x78, 0x00, 0x2B, 0x48, 0xD1, 0xDA, 0xF8, 0x00, 0x00, + 0xD8, 0xF8, 0x40, 0x34, 0x39, 0x68, 0x20, 0x44, 0x98, 0x47, 0x28, 0xB3, + 0x01, 0x3E, 0xF2, 0xD1, 0x05, 0x21, 0x3F, 0x48, 0xFB, 0xF7, 0x9C, 0xF9, + 0x20, 0x46, 0xFC, 0xF7, 0x8B, 0xFA, 0xBD, 0xE8, 0xF0, 0x47, 0x04, 0x20, + 0x18, 0xF0, 0xE2, 0xB8, 0x34, 0x4B, 0x1B, 0x88, 0x00, 0x2B, 0x46, 0xD0, + 0x31, 0x4A, 0x12, 0x78, 0x9A, 0x42, 0xB9, 0xD3, 0x36, 0x4A, 0x2E, 0x4B, + 0x12, 0x68, 0x01, 0x21, 0x19, 0x70, 0x00, 0x2A, 0x47, 0xD1, 0x34, 0x4B, + 0x34, 0x49, 0x1A, 0x88, 0x4F, 0xF4, 0x00, 0x70, 0x92, 0xB2, 0x19, 0xF0, + 0x97, 0xFB, 0xA9, 0xE7, 0xBD, 0xE8, 0xF0, 0x87, 0x70, 0x47, 0xDF, 0xF8, + 0xC8, 0xA0, 0x28, 0x4F, 0xDA, 0xF8, 0x00, 0x00, 0xB4, 0xE7, 0x1A, 0x78, + 0x00, 0x2A, 0x9D, 0xD1, 0x28, 0x4A, 0x12, 0x68, 0x01, 0x21, 0x19, 0x70, + 0x92, 0xBB, 0x27, 0x4B, 0x27, 0x49, 0x1A, 0x88, 0xBD, 0xE8, 0xF0, 0x47, + 0x4F, 0xF4, 0x00, 0x70, 0x92, 0xB2, 0x19, 0xF0, 0x7B, 0xBB, 0x99, 0xF8, + 0x00, 0x30, 0xDA, 0xF8, 0x00, 0x00, 0x2B, 0xB9, 0xD8, 0xF8, 0x40, 0x34, + 0x39, 0x68, 0x20, 0x44, 0x98, 0x47, 0xB2, 0xE7, 0x39, 0x68, 0x20, 0x44, + 0xFF, 0xF7, 0x72, 0xFA, 0xAD, 0xE7, 0x04, 0x20, 0x18, 0xF0, 0x9C, 0xF8, + 0xBD, 0xE8, 0xF0, 0x47, 0x19, 0x48, 0xFB, 0xF7, 0x49, 0xB9, 0xBD, 0xE8, + 0xF0, 0x47, 0x18, 0x49, 0x4F, 0xF4, 0x00, 0x70, 0x19, 0xF0, 0x5C, 0xBB, + 0x39, 0x68, 0x20, 0x44, 0xFF, 0xF7, 0x5E, 0xFA, 0x84, 0xE7, 0x40, 0xF2, + 0x1F, 0x40, 0x17, 0xF0, 0xF9, 0xFA, 0xB2, 0xE7, 0x40, 0xF2, 0x1F, 0x40, + 0x17, 0xF0, 0xF4, 0xFA, 0xC7, 0xE7, 0x00, 0xBF, 0x58, 0x28, 0x17, 0x00, + 0x68, 0x60, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, 0x7C, 0x60, 0x17, 0x00, + 0x66, 0x28, 0x17, 0x00, 0xA4, 0x60, 0x17, 0x00, 0x78, 0x60, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x8C, 0x87, 0x15, 0x00, 0xAC, 0x87, 0x15, 0x00, + 0x6C, 0x60, 0x17, 0x00, 0x56, 0x28, 0x17, 0x00, 0x7C, 0x87, 0x15, 0x00, + 0x98, 0x87, 0x15, 0x00, 0x84, 0x87, 0x15, 0x00, 0x80, 0x1A, 0x17, 0x00, + 0x08, 0xB5, 0x0F, 0x48, 0x19, 0xF0, 0xD8, 0xFA, 0x0E, 0x4B, 0xD3, 0xE9, + 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, 0x80, 0xB1, 0x0C, 0x4B, 0x0D, 0x49, + 0x1A, 0x68, 0x0D, 0x4B, 0x09, 0x68, 0xD3, 0xF8, 0x40, 0x34, 0x10, 0x44, + 0x98, 0x47, 0x01, 0x1E, 0x00, 0xDB, 0x08, 0xBD, 0xBD, 0xE8, 0x08, 0x40, + 0x08, 0x48, 0xFB, 0xF7, 0xF7, 0xB8, 0xBD, 0xE8, 0x08, 0x40, 0x07, 0x48, + 0xFB, 0xF7, 0xF2, 0xB8, 0xC0, 0x87, 0x15, 0x00, 0xA4, 0x60, 0x17, 0x00, + 0x80, 0x1A, 0x17, 0x00, 0x78, 0x60, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xCC, 0x87, 0x15, 0x00, 0xE4, 0x87, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x20, + 0x18, 0xF0, 0x52, 0xF8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4C, 0x0A, 0x4A, + 0x23, 0x68, 0xD2, 0xF8, 0x3C, 0x24, 0x01, 0x33, 0x23, 0x60, 0x90, 0x47, + 0x23, 0x68, 0x33, 0xB1, 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x11, 0x4D, + 0x11, 0x4F, 0x28, 0x68, 0x00, 0xF5, 0x0D, 0x70, 0x18, 0xF0, 0xA4, 0xF8, + 0x28, 0x68, 0x00, 0xF5, 0x0F, 0x70, 0x18, 0xF0, 0x9F, 0xF8, 0x3B, 0x68, + 0x1B, 0x89, 0x93, 0xB1, 0x0B, 0x4E, 0x00, 0x24, 0x4F, 0xF4, 0xD7, 0x61, + 0x30, 0x46, 0xFB, 0xF7, 0x2B, 0xFF, 0x01, 0x46, 0x28, 0x68, 0x00, 0xF5, + 0x0D, 0x70, 0x18, 0xF0, 0x93, 0xF8, 0x3B, 0x68, 0x01, 0x34, 0x1A, 0x89, + 0xA3, 0xB2, 0x9A, 0x42, 0xEE, 0xD8, 0xF8, 0xBD, 0x00, 0x38, 0x18, 0x00, + 0x78, 0x36, 0x17, 0x00, 0xE4, 0x25, 0x17, 0x00, 0x00, 0x20, 0x70, 0x47, + 0x10, 0xB5, 0x12, 0x4A, 0x01, 0x46, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0E, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4C, 0x0E, 0x4A, 0x23, 0x68, 0x10, 0x68, + 0x01, 0x33, 0x00, 0xF5, 0x0D, 0x70, 0x23, 0x60, 0x18, 0xF0, 0x6C, 0xF8, + 0x23, 0x68, 0x33, 0xB1, 0x06, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x02, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x10, 0xBD, 0x00, 0xBF, 0x4C, 0x40, 0x04, 0x40, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x00, 0x38, 0x18, 0x00, 0x08, 0xB5, 0x03, 0x49, + 0x4F, 0xF4, 0x80, 0x70, 0x19, 0xF0, 0x7A, 0xFA, 0x01, 0x20, 0x08, 0xBD, + 0x08, 0x88, 0x15, 0x00, 0x05, 0x4A, 0x06, 0x49, 0x00, 0x23, 0xC2, 0xE9, + 0x02, 0x03, 0xC2, 0xE9, 0x04, 0x33, 0xC2, 0xE9, 0x00, 0x33, 0x8B, 0x81, + 0x01, 0x20, 0x70, 0x47, 0xBC, 0x60, 0x17, 0x00, 0xD4, 0x60, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x0C, 0x92, 0xDF, 0xF8, 0x0C, 0x82, + 0xD9, 0xF8, 0x14, 0x35, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0xDF, 0xF8, + 0xE8, 0xA1, 0xDF, 0xF8, 0x00, 0xB2, 0x78, 0xE0, 0x71, 0x49, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x06, 0x12, 0x92, 0xF8, 0x64, 0x20, 0x00, 0x2A, + 0x00, 0xF0, 0xB2, 0x80, 0x6D, 0x4A, 0x1F, 0x7A, 0x13, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xA1, 0x80, 0x6A, 0x48, 0x18, 0xF0, + 0x5B, 0xF8, 0x04, 0x46, 0x00, 0x28, 0x6C, 0xD0, 0xC2, 0x8B, 0xC1, 0x6C, + 0x1A, 0xF8, 0x07, 0xC0, 0x00, 0x23, 0x22, 0xF0, 0x01, 0x02, 0xC2, 0x83, + 0x43, 0x64, 0x0C, 0xF1, 0x01, 0x0C, 0x0B, 0x61, 0x1C, 0x22, 0xC3, 0x62, + 0x29, 0x46, 0x04, 0x30, 0x0A, 0xF8, 0x07, 0xC0, 0x2B, 0xF0, 0xFA, 0xFE, + 0xE2, 0x8B, 0xDB, 0xF8, 0x00, 0x10, 0x6D, 0x1A, 0xC2, 0xF3, 0x0E, 0x01, + 0x00, 0x23, 0xE1, 0x83, 0x11, 0x07, 0x84, 0xF8, 0x42, 0x30, 0x23, 0x65, + 0xA5, 0x64, 0x6F, 0xD4, 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, 0xE2, 0x7E, + 0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, 0x53, 0x49, + 0xA0, 0x88, 0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, 0x02, 0x44, + 0x41, 0xF8, 0x23, 0x20, 0xA4, 0x20, 0x00, 0xFB, 0x06, 0x76, 0x4A, 0x48, + 0x99, 0x36, 0x21, 0x46, 0x00, 0xEB, 0xC6, 0x00, 0x17, 0xF0, 0xD6, 0xFF, + 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x48, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x46, 0x48, 0x01, 0x33, + 0xC8, 0xF8, 0x00, 0x30, 0x18, 0xF0, 0x0A, 0xF8, 0x99, 0xF8, 0x11, 0x35, + 0xD8, 0xF8, 0x00, 0x20, 0x01, 0x3B, 0x89, 0xF8, 0x11, 0x35, 0x3A, 0xB1, + 0x3E, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC8, 0xF8, 0x00, 0x20, 0x0A, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0xD9, 0xF8, 0x14, 0x35, 0x83, 0xB1, 0x5D, 0x68, + 0x6A, 0x8B, 0x2E, 0x7E, 0x14, 0x07, 0x81, 0xD5, 0x34, 0x48, 0x17, 0xF0, + 0xEF, 0xFF, 0x05, 0x27, 0x04, 0x46, 0x00, 0x28, 0x92, 0xD1, 0x35, 0x4B, + 0x35, 0x48, 0xD9, 0x5D, 0xFA, 0xF7, 0xB2, 0xFF, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2E, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0xD8, 0xF8, 0x00, 0x30, 0x20, 0x20, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, + 0x17, 0xF0, 0x14, 0xFF, 0x40, 0x20, 0x17, 0xF0, 0xED, 0xFE, 0xD8, 0xF8, + 0x00, 0x30, 0x3B, 0xB1, 0x25, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, + 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x8F, + 0x24, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, 0x21, 0x46, 0x00, 0xFB, 0x06, 0x30, + 0x17, 0xF0, 0x7A, 0xFF, 0xA2, 0xE7, 0x05, 0x2F, 0x7F, 0xF6, 0x5C, 0xAF, + 0x1F, 0x49, 0x20, 0x48, 0xB8, 0x22, 0x19, 0xF0, 0xC5, 0xFB, 0x55, 0xE7, + 0xDB, 0xF8, 0x00, 0x00, 0x28, 0x1A, 0xFC, 0xF7, 0x6D, 0xF8, 0xEF, 0xF3, + 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x12, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x11, 0x48, 0x01, 0x33, 0xC8, 0xF8, + 0x00, 0x30, 0x17, 0xF0, 0x9F, 0xFF, 0x99, 0xF8, 0x11, 0x25, 0xD8, 0xF8, + 0x00, 0x30, 0x01, 0x3A, 0x89, 0xF8, 0x11, 0x25, 0x00, 0x2B, 0x9B, 0xD0, + 0x08, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x00, 0x2B, + 0x94, 0xD1, 0x00, 0x2A, 0x92, 0xD0, 0x90, 0xE7, 0x18, 0x88, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x20, 0x58, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x5D, 0x17, 0x00, 0x74, 0x28, 0x17, 0x00, + 0x1C, 0x88, 0x15, 0x00, 0x30, 0x8D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x88, 0x82, 0x15, 0x00, 0x58, 0x58, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x84, 0x1A, 0x17, 0x00, 0x70, 0x47, 0x00, 0xBF, 0x70, 0x47, 0x00, 0xBF, + 0x70, 0x47, 0x00, 0xBF, 0x04, 0x20, 0x17, 0xF0, 0xA5, 0xBE, 0x00, 0xBF, + 0x2D, 0xE9, 0xF8, 0x43, 0xD0, 0xF8, 0xA8, 0x44, 0xD1, 0xF8, 0xB0, 0x50, + 0x07, 0x46, 0x0E, 0x46, 0x00, 0x2C, 0x00, 0xF0, 0x8F, 0x80, 0xA2, 0x49, + 0xA2, 0x4A, 0x4F, 0xF0, 0xFF, 0x33, 0x0B, 0x60, 0x13, 0x60, 0x94, 0xF8, + 0x60, 0x80, 0xB8, 0xF1, 0x04, 0x0F, 0x00, 0xF2, 0xB9, 0x81, 0xDF, 0xE8, + 0x18, 0xF0, 0x49, 0x00, 0xF3, 0x00, 0x45, 0x01, 0x03, 0x01, 0x05, 0x00, + 0x9A, 0x4B, 0x62, 0x6E, 0x1A, 0x60, 0xA2, 0x6E, 0x5A, 0x60, 0xE2, 0x6E, + 0x9A, 0x60, 0x22, 0x6F, 0xDA, 0x60, 0x22, 0x6D, 0xDA, 0x61, 0x62, 0x6D, + 0x1A, 0x62, 0xA2, 0x6D, 0x5A, 0x62, 0x94, 0x4B, 0x94, 0x4A, 0xE1, 0x6D, + 0x1B, 0x68, 0x11, 0x60, 0x1B, 0x78, 0x13, 0xF0, 0x02, 0x0F, 0xC1, 0x46, + 0x4F, 0xF4, 0x80, 0x63, 0x4F, 0xF4, 0x80, 0x51, 0x4F, 0xF0, 0x01, 0x08, + 0x48, 0xD0, 0x97, 0xF8, 0x63, 0xC0, 0x94, 0xF8, 0x62, 0x00, 0x8C, 0x4A, + 0x43, 0xEA, 0x0C, 0x13, 0x43, 0xEA, 0x00, 0x43, 0x0B, 0x43, 0x43, 0xF0, + 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x5C, 0x00, 0xFC, 0xD4, 0x00, 0x2D, + 0x48, 0xD0, 0x81, 0x4B, 0x7F, 0x49, 0xD6, 0xF8, 0x26, 0x00, 0x72, 0x8D, + 0x08, 0x60, 0x1A, 0x60, 0x95, 0xF8, 0x60, 0x30, 0x04, 0x2B, 0x00, 0xF2, + 0x68, 0x81, 0xDF, 0xE8, 0x13, 0xF0, 0x78, 0x00, 0x41, 0x00, 0xD4, 0x00, + 0xCF, 0x00, 0xC5, 0x00, 0x00, 0x21, 0x4F, 0xF0, 0x01, 0x09, 0x77, 0x4B, + 0x62, 0x6E, 0x1A, 0x60, 0xA2, 0x6E, 0x5A, 0x60, 0xE2, 0x6E, 0x9A, 0x60, + 0x22, 0x6F, 0xDA, 0x60, 0x73, 0x4B, 0x1B, 0x68, 0xB9, 0xF1, 0x02, 0x0F, + 0x1B, 0x78, 0x40, 0xF0, 0xF2, 0x80, 0xD8, 0x07, 0x40, 0xF1, 0x20, 0x81, + 0x71, 0x48, 0x22, 0x6D, 0x02, 0x60, 0x62, 0x6D, 0x42, 0x60, 0xA2, 0x6D, + 0x82, 0x60, 0xE2, 0x6D, 0xC2, 0x60, 0x9B, 0x07, 0x00, 0xF1, 0xFF, 0x80, + 0x4F, 0xF4, 0x00, 0x73, 0x97, 0xF8, 0x63, 0xC0, 0x94, 0xF8, 0x62, 0x00, + 0x67, 0x4A, 0x43, 0xEA, 0x0C, 0x13, 0x43, 0xEA, 0x00, 0x43, 0x0B, 0x43, + 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x58, 0x00, 0xFC, 0xD4, + 0x00, 0x2D, 0xB6, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0xA1, 0x46, 0x4F, 0xF0, + 0x01, 0x08, 0xAE, 0xE7, 0x4F, 0xF0, 0x02, 0x09, 0x59, 0x4B, 0x6A, 0x6E, + 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, 0xEA, 0x6E, 0x9A, 0x60, 0x2A, 0x6F, + 0xDA, 0x60, 0xB9, 0xF1, 0x04, 0x0F, 0x40, 0xF0, 0x96, 0x80, 0x57, 0x4B, + 0x2A, 0x6D, 0x1A, 0x60, 0x6A, 0x6D, 0x5A, 0x60, 0xAA, 0x6D, 0x9A, 0x60, + 0x50, 0x4B, 0x51, 0x4A, 0xE9, 0x6D, 0x1B, 0x68, 0x11, 0x60, 0x1B, 0x78, + 0x99, 0x07, 0x40, 0xF1, 0xD6, 0x80, 0x4F, 0xEA, 0x08, 0x38, 0x4F, 0xF4, + 0x80, 0x69, 0x97, 0xF8, 0x63, 0x30, 0x95, 0xF8, 0x62, 0x10, 0x4A, 0x4A, + 0x1B, 0x01, 0x43, 0xEA, 0x01, 0x43, 0x43, 0xEA, 0x08, 0x03, 0x43, 0xEA, + 0x09, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x58, 0x00, + 0xFC, 0xD4, 0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF0, 0x00, 0x08, 0x4F, 0xF0, + 0x01, 0x09, 0x3D, 0x4B, 0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, + 0xEA, 0x6E, 0x9A, 0x60, 0x2A, 0x6F, 0xDA, 0x60, 0xB9, 0xF1, 0x02, 0x0F, + 0x62, 0xD1, 0x38, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0xDA, 0x07, 0x40, 0xF1, + 0xB3, 0x80, 0x38, 0x4A, 0x29, 0x6D, 0x11, 0x60, 0x69, 0x6D, 0x51, 0x60, + 0xA9, 0x6D, 0x91, 0x60, 0xE9, 0x6D, 0xD1, 0x60, 0x9A, 0x07, 0x7A, 0xD4, + 0x4F, 0xF4, 0x00, 0x79, 0x97, 0xF8, 0x63, 0x30, 0x95, 0xF8, 0x62, 0x10, + 0x2E, 0x4A, 0x1B, 0x01, 0x43, 0xEA, 0x01, 0x43, 0x43, 0xEA, 0x08, 0x03, + 0x43, 0xEA, 0x09, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, + 0x59, 0x00, 0xFC, 0xD4, 0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF0, 0x02, 0x09, + 0x22, 0x4B, 0x62, 0x6E, 0x1A, 0x60, 0xA2, 0x6E, 0x5A, 0x60, 0xE2, 0x6E, + 0x9A, 0x60, 0x22, 0x6F, 0xDA, 0x60, 0x4F, 0xF4, 0x80, 0x51, 0x4F, 0xF0, + 0x01, 0x08, 0x51, 0xE7, 0x4F, 0xF0, 0x01, 0x09, 0xC8, 0x46, 0x4F, 0xF4, + 0x80, 0x51, 0x42, 0xE7, 0x18, 0x4B, 0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, + 0x5A, 0x60, 0xEA, 0x6E, 0x9A, 0x60, 0x2A, 0x6F, 0xDA, 0x60, 0x80, 0xE7, + 0x4F, 0xEA, 0x08, 0x38, 0x4F, 0xF0, 0x01, 0x09, 0xA7, 0xE7, 0x95, 0xF8, + 0x74, 0x30, 0x10, 0x2B, 0x00, 0xF0, 0x83, 0x80, 0x20, 0x2B, 0x7B, 0xD0, + 0x0D, 0x4B, 0x6A, 0x6E, 0x1A, 0x60, 0xAA, 0x6E, 0x5A, 0x60, 0xEA, 0x6E, + 0x9A, 0x60, 0x2A, 0x6F, 0xDA, 0x60, 0x4F, 0xF0, 0x03, 0x09, 0xB9, 0xF1, + 0x02, 0x0F, 0x4F, 0xEA, 0x08, 0x38, 0x9C, 0xD0, 0x06, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x9E, 0x07, 0x56, 0xD4, 0x4F, 0xEA, 0x09, 0x29, 0xA7, 0xE7, + 0xBC, 0x00, 0x32, 0x40, 0xC0, 0x00, 0x32, 0x40, 0xAC, 0x00, 0x32, 0x40, + 0x34, 0x36, 0x17, 0x00, 0xD4, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, + 0xC8, 0x00, 0x32, 0x40, 0x94, 0xF8, 0x74, 0x30, 0x10, 0x2B, 0x5B, 0xD0, + 0x20, 0x2B, 0x4A, 0xD0, 0x4F, 0xF0, 0x03, 0x09, 0xA6, 0xE7, 0x9A, 0x07, + 0x42, 0xD5, 0x09, 0xF1, 0xFF, 0x33, 0xDB, 0xB2, 0x01, 0x2B, 0x14, 0xD9, + 0x4F, 0xEA, 0x09, 0x23, 0xCB, 0xE6, 0x97, 0xF8, 0x63, 0x30, 0x95, 0xF8, + 0x62, 0x10, 0x3A, 0x4A, 0x1B, 0x01, 0x43, 0xEA, 0x01, 0x43, 0x43, 0xEA, + 0x08, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x5C, 0x00, + 0xFC, 0xD4, 0xBD, 0xE8, 0xF8, 0x83, 0x97, 0xF8, 0x63, 0x30, 0x94, 0xF8, + 0x62, 0x00, 0x31, 0x4A, 0x41, 0xEA, 0x03, 0x13, 0x43, 0xEA, 0x00, 0x43, + 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, + 0xB9, 0xE6, 0x4F, 0xEA, 0x08, 0x38, 0x4F, 0xF4, 0x80, 0x69, 0x5F, 0xE7, + 0x29, 0x48, 0x02, 0x68, 0x22, 0xF0, 0x01, 0x02, 0x02, 0x60, 0xE2, 0xE6, + 0x26, 0x49, 0x0A, 0x68, 0x22, 0xF0, 0x01, 0x02, 0x0A, 0x60, 0x4F, 0xE7, + 0x09, 0xF1, 0xFF, 0x33, 0xDB, 0xB2, 0x01, 0x2B, 0xC7, 0xD9, 0x4F, 0xEA, + 0x09, 0x29, 0x14, 0xE7, 0x4F, 0xEA, 0x09, 0x23, 0xD6, 0xE6, 0x4F, 0xF4, + 0x00, 0x51, 0x4F, 0xF0, 0x03, 0x09, 0xB0, 0xE6, 0x4F, 0xF4, 0x00, 0x58, + 0x4F, 0xF0, 0x03, 0x09, 0x1F, 0xE7, 0x4F, 0xF0, 0x00, 0x08, 0x4F, 0xF0, + 0x03, 0x09, 0x1A, 0xE7, 0x00, 0x21, 0x88, 0x46, 0x4F, 0xF0, 0x03, 0x09, + 0xA1, 0xE6, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xBF, 0xF6, 0xD6, 0xAE, 0x12, 0x49, 0x13, 0x48, 0xA6, 0x22, 0x19, 0xF0, + 0xA7, 0xF9, 0xCF, 0xE6, 0x0E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x06, 0xDB, 0x4F, 0xF4, 0x80, 0x51, 0x4F, 0xF0, 0x00, 0x09, + 0x4F, 0xF0, 0x01, 0x08, 0x87, 0xE6, 0x09, 0x49, 0x09, 0x48, 0x4F, 0x22, + 0x19, 0xF0, 0x94, 0xF9, 0x4F, 0xF0, 0x00, 0x09, 0x4F, 0xF4, 0x80, 0x51, + 0x4F, 0xF0, 0x01, 0x08, 0x7B, 0xE6, 0x00, 0xBF, 0xC4, 0x00, 0x32, 0x40, + 0x64, 0x05, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xA3, 0x4E, 0x0D, 0x46, + 0xD6, 0xF8, 0xF0, 0x70, 0x04, 0x46, 0xF4, 0xF7, 0xF7, 0xFE, 0xB8, 0x47, + 0xA0, 0x4A, 0xA1, 0x49, 0x13, 0x68, 0x23, 0xF4, 0x00, 0x63, 0x13, 0x60, + 0x0A, 0x68, 0x9F, 0x4B, 0x42, 0xF4, 0x80, 0x32, 0x0A, 0x60, 0x1A, 0x68, + 0x42, 0xF0, 0x7F, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x02, + 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0xFE, 0x02, 0x42, 0xF4, 0x80, 0x12, + 0x1A, 0x60, 0x97, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x4F, 0xF4, + 0x40, 0x52, 0x00, 0x2B, 0xC1, 0xF8, 0x04, 0x21, 0xC0, 0xF2, 0xAD, 0x80, + 0x92, 0x4B, 0x8E, 0x4A, 0x92, 0x49, 0x19, 0x60, 0x13, 0x68, 0x92, 0x4F, + 0x43, 0xF4, 0x00, 0x53, 0x13, 0x60, 0xF5, 0xF7, 0x49, 0xFD, 0xDF, 0xF8, + 0x9C, 0xC2, 0x8F, 0x49, 0xDC, 0xF8, 0x00, 0x20, 0x43, 0x1C, 0x9B, 0x06, + 0x22, 0xF0, 0xE0, 0x52, 0x03, 0xF0, 0xE0, 0x53, 0x13, 0x43, 0xCC, 0xF8, + 0x00, 0x30, 0x0B, 0x68, 0x89, 0x4A, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, + 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x3B, 0x68, 0x9A, 0x03, + 0x00, 0xF1, 0xAF, 0x80, 0x84, 0x4A, 0x28, 0x8C, 0x13, 0x68, 0x80, 0x49, + 0x9B, 0xB2, 0x43, 0xEA, 0x00, 0x43, 0x13, 0x60, 0x0B, 0x68, 0x1F, 0x04, + 0x00, 0xF1, 0x87, 0x80, 0x75, 0x4B, 0xDF, 0xF8, 0x50, 0xE2, 0x1A, 0x68, + 0xDF, 0xF8, 0x4C, 0xC2, 0x7C, 0x48, 0x7D, 0x4F, 0x7D, 0x49, 0x42, 0xF0, + 0x01, 0x02, 0x1A, 0x60, 0x4F, 0xF4, 0x40, 0x72, 0xCE, 0xF8, 0x00, 0x20, + 0xE2, 0x6D, 0xCC, 0xF8, 0x00, 0x20, 0xB4, 0xF8, 0x60, 0x20, 0x02, 0x60, + 0xA2, 0x6B, 0xA0, 0x8F, 0x3A, 0x60, 0xD4, 0xF8, 0x90, 0x21, 0x08, 0x60, + 0x91, 0x78, 0x74, 0x4A, 0x02, 0xEB, 0x81, 0x01, 0x50, 0x68, 0x49, 0x69, + 0xC7, 0xF8, 0xBC, 0x10, 0x19, 0x68, 0x21, 0xF4, 0xE0, 0x61, 0x19, 0x60, + 0x13, 0x68, 0x6F, 0x49, 0x6F, 0x4A, 0x03, 0x43, 0x3B, 0x64, 0x6F, 0x48, + 0x6F, 0x4B, 0x08, 0x60, 0x13, 0x60, 0xD6, 0xF8, 0xB0, 0x31, 0x94, 0xF8, + 0x63, 0x10, 0x95, 0xF8, 0x23, 0x00, 0x98, 0x47, 0x29, 0x46, 0x20, 0x46, + 0xFF, 0xF7, 0x70, 0xFD, 0x09, 0xF0, 0xAC, 0xFB, 0x68, 0x4B, 0x93, 0xF8, + 0xB6, 0x30, 0x23, 0xB1, 0x67, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, + 0x13, 0x60, 0xD6, 0xF8, 0x60, 0x32, 0x98, 0x47, 0x64, 0x4A, 0x65, 0x49, + 0xD6, 0xF8, 0x9C, 0x34, 0x11, 0x60, 0x98, 0x47, 0x4D, 0x4A, 0x63, 0x48, + 0x13, 0x68, 0x30, 0x24, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x01, 0x21, + 0x04, 0x60, 0x00, 0x20, 0x17, 0xF0, 0xDE, 0xF9, 0x5E, 0x4B, 0x1B, 0x68, + 0x5A, 0x78, 0x22, 0xB1, 0x5D, 0x49, 0x0A, 0x68, 0x42, 0xF0, 0x40, 0x02, + 0x0A, 0x60, 0x5C, 0x49, 0x9B, 0x78, 0x0A, 0x68, 0xD8, 0x06, 0x4C, 0xBF, + 0x22, 0xF0, 0x00, 0x42, 0x42, 0xF0, 0x00, 0x42, 0x0A, 0x60, 0x58, 0x4A, + 0x13, 0xF0, 0x01, 0x0F, 0x13, 0x68, 0x14, 0xBF, 0x43, 0xF4, 0x80, 0x23, + 0x23, 0xF4, 0x80, 0x23, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x3C, 0x4B, + 0x1B, 0x68, 0xB3, 0xF1, 0xC8, 0x5F, 0xBF, 0xF4, 0x4D, 0xAF, 0x50, 0x49, + 0x50, 0x48, 0xF3, 0x22, 0x19, 0xF0, 0x9C, 0xF8, 0x46, 0xE7, 0xF5, 0xF7, + 0x35, 0xFC, 0x00, 0x28, 0x3F, 0xF4, 0x74, 0xAF, 0x6B, 0x68, 0x9A, 0x06, + 0x7F, 0xF5, 0x70, 0xAF, 0x28, 0x8C, 0xF5, 0xF7, 0x71, 0xFC, 0x07, 0xF0, + 0xB9, 0xFF, 0xD6, 0xF8, 0xE0, 0x33, 0x98, 0x47, 0x94, 0xF8, 0x62, 0x30, + 0x04, 0x2B, 0x3F, 0xF4, 0x63, 0xAF, 0xD6, 0xF8, 0x30, 0x33, 0x94, 0xF8, + 0x63, 0x00, 0x98, 0x47, 0x5C, 0xE7, 0xF5, 0xF7, 0x3F, 0xFC, 0x00, 0x28, + 0x3F, 0xF4, 0x4C, 0xAF, 0xF5, 0xF7, 0x6E, 0xFC, 0xDF, 0xF8, 0xF4, 0x80, + 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x02, 0x23, 0xF4, 0xE0, 0x63, 0x00, 0xF4, + 0xE0, 0x60, 0x18, 0x43, 0xC8, 0xF8, 0x00, 0x00, 0xD8, 0xF8, 0x00, 0x30, + 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, 0x60, 0x03, 0xC8, 0xF8, 0x00, 0x30, + 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF0, 0x04, 0x03, 0xC8, 0xF8, 0x00, 0x30, + 0xD8, 0xF8, 0x00, 0x30, 0x43, 0xF0, 0x01, 0x03, 0xC8, 0xF8, 0x00, 0x30, + 0x3B, 0x68, 0x1B, 0x04, 0x0F, 0xD4, 0x15, 0x4B, 0x1B, 0x68, 0x9B, 0x03, + 0x7F, 0xF5, 0x22, 0xAF, 0xF5, 0xF7, 0x18, 0xFC, 0x00, 0x28, 0x3F, 0xF4, + 0x1D, 0xAF, 0x27, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, + 0x16, 0xE7, 0xF5, 0xF7, 0xDF, 0xFB, 0x00, 0x28, 0xEB, 0xD0, 0xD8, 0xF8, + 0x00, 0x30, 0x23, 0xF0, 0x60, 0x63, 0x43, 0xF0, 0x80, 0x63, 0xC8, 0xF8, + 0x00, 0x30, 0xE2, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0x54, 0x00, 0x32, 0x40, 0x64, 0x00, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, + 0xD8, 0x00, 0x32, 0x40, 0x10, 0x19, 0x04, 0x00, 0x04, 0x00, 0x32, 0x40, + 0x48, 0x80, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, 0x68, 0x00, 0x32, 0x40, + 0x14, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, + 0x98, 0x9C, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, + 0x4C, 0xF1, 0x73, 0x8B, 0xC0, 0x07, 0xF9, 0x80, 0x2C, 0x19, 0x17, 0x00, + 0x8C, 0x00, 0x32, 0x40, 0xC0, 0xB3, 0x33, 0x40, 0xA0, 0xA0, 0x28, 0x28, + 0x38, 0x00, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x24, 0x02, 0x32, 0x40, + 0x80, 0x04, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, + 0x40, 0x88, 0x15, 0x00, 0x50, 0x03, 0x32, 0x40, 0x9C, 0x00, 0x32, 0x40, + 0x1C, 0x00, 0x32, 0x40, 0x10, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x47, + 0x5B, 0x4B, 0x5C, 0x4A, 0x1D, 0x68, 0xD2, 0xF8, 0x20, 0x80, 0x15, 0xF0, + 0x01, 0x05, 0xD8, 0xF8, 0xE4, 0x90, 0x84, 0xB0, 0x00, 0xF0, 0x83, 0x80, + 0x1A, 0x68, 0x57, 0x4F, 0x22, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x00, 0x23, + 0x7B, 0x70, 0x01, 0x22, 0x54, 0x48, 0x55, 0x49, 0x03, 0x68, 0x55, 0x4C, + 0x43, 0xF0, 0x10, 0x03, 0x03, 0x60, 0x0B, 0x68, 0x00, 0xF5, 0xEC, 0x10, + 0x00, 0xF6, 0x6C, 0x70, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x23, 0x68, + 0x01, 0x69, 0x00, 0x91, 0x02, 0x20, 0x4E, 0x49, 0x4E, 0x4C, 0x18, 0xF0, + 0x9D, 0xFD, 0x3B, 0x78, 0x00, 0x2B, 0x42, 0xD0, 0xD4, 0xF8, 0x3C, 0x31, + 0xD8, 0xF8, 0x40, 0x60, 0x00, 0x20, 0x98, 0x47, 0x49, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x62, 0xDB, 0xD4, 0xF8, 0x9C, 0x34, + 0xDF, 0xF8, 0x38, 0xA1, 0x98, 0x47, 0xD4, 0xF8, 0x80, 0x34, 0x30, 0x79, + 0x98, 0x47, 0x4F, 0xF0, 0x00, 0x0C, 0x33, 0x89, 0xF2, 0x88, 0x71, 0x79, + 0x30, 0x79, 0xCD, 0xF8, 0x08, 0xC0, 0x96, 0xF8, 0x0D, 0xC0, 0xCD, 0xF8, + 0x04, 0xC0, 0xB6, 0xF8, 0x0A, 0xC0, 0xCD, 0xF8, 0x00, 0xC0, 0xF5, 0xF7, + 0x9F, 0xFA, 0xD4, 0xF8, 0x3C, 0x33, 0x96, 0xF9, 0x0C, 0x00, 0x98, 0x47, + 0x9A, 0xF8, 0x2A, 0x30, 0x00, 0x2B, 0x33, 0xD0, 0xD4, 0xF8, 0xA8, 0x34, + 0xBA, 0xF8, 0x26, 0x00, 0x98, 0x47, 0xBA, 0xF8, 0x26, 0x00, 0xD4, 0xF8, + 0xAC, 0x34, 0x98, 0x47, 0xD4, 0xF8, 0xD8, 0x34, 0x49, 0x46, 0x40, 0x46, + 0x98, 0x47, 0x00, 0x23, 0xC7, 0xE9, 0x01, 0x33, 0x3B, 0x70, 0x00, 0x2D, + 0x33, 0xD0, 0x2B, 0x49, 0x2B, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x73, + 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x28, 0x4A, + 0x28, 0x48, 0x13, 0x68, 0x28, 0x49, 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, + 0x10, 0x03, 0x13, 0x60, 0x83, 0x68, 0xD4, 0xF8, 0xA0, 0x22, 0x5A, 0x65, + 0x20, 0x23, 0x0B, 0x60, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x16, 0x4F, + 0x2A, 0x46, 0x81, 0xE7, 0xD4, 0xF8, 0xA0, 0x34, 0xBA, 0xF8, 0x26, 0x00, + 0x98, 0x47, 0xBA, 0xF8, 0x26, 0x00, 0xD4, 0xF8, 0xA4, 0x34, 0x98, 0x47, + 0xCA, 0xE7, 0x33, 0x7E, 0xFF, 0x2B, 0x99, 0xD1, 0x19, 0x49, 0x1A, 0x48, + 0x40, 0xF2, 0x89, 0x12, 0x18, 0xF0, 0x4C, 0xFF, 0x92, 0xE7, 0x40, 0x46, + 0x0B, 0xF0, 0xF6, 0xF8, 0xD8, 0xF8, 0x04, 0x30, 0x15, 0x4A, 0x43, 0xF0, + 0x01, 0x03, 0xC8, 0xF8, 0x04, 0x30, 0x92, 0xF8, 0xB6, 0x30, 0x00, 0x2B, + 0xC7, 0xD0, 0x03, 0xF0, 0x99, 0xF8, 0xC4, 0xE7, 0x10, 0x00, 0x58, 0x40, + 0x1C, 0x9E, 0x17, 0x00, 0x3C, 0x36, 0x17, 0x00, 0x94, 0x80, 0x32, 0x40, + 0x84, 0x40, 0x04, 0x40, 0x88, 0x00, 0x32, 0x40, 0x88, 0x88, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, + 0x8C, 0x00, 0x32, 0x40, 0x78, 0x00, 0x32, 0x40, 0x00, 0xED, 0x00, 0xE0, + 0x00, 0xE1, 0x00, 0xE0, 0x70, 0x79, 0x15, 0x00, 0xA4, 0x88, 0x15, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0xF8, 0xB5, 0x3F, 0x4F, + 0x3F, 0x4C, 0x3E, 0x6A, 0x3F, 0x49, 0xD6, 0xF8, 0xE4, 0x50, 0x4F, 0xF4, + 0xBE, 0x72, 0x20, 0x46, 0x2B, 0xF0, 0xB0, 0xF9, 0x31, 0x46, 0x4F, 0xF4, + 0xA4, 0x62, 0x04, 0xF5, 0xBE, 0x70, 0x2B, 0xF0, 0xA9, 0xF9, 0x29, 0x46, + 0x4F, 0xF4, 0x1E, 0x72, 0x04, 0xF2, 0x9C, 0x60, 0x2B, 0xF0, 0xA2, 0xF9, + 0x06, 0xF1, 0xEC, 0x01, 0xE8, 0x22, 0x04, 0xF6, 0x14, 0x10, 0x2B, 0xF0, + 0x9B, 0xF9, 0x31, 0x6C, 0x1C, 0x22, 0x04, 0xF6, 0xFC, 0x10, 0x2B, 0xF0, + 0x95, 0xF9, 0x2F, 0x49, 0x34, 0x22, 0x04, 0xF6, 0x18, 0x20, 0x2B, 0xF0, + 0x8F, 0xF9, 0x2D, 0x49, 0x18, 0x22, 0x04, 0xF6, 0x4C, 0x20, 0x2B, 0xF0, + 0x89, 0xF9, 0x2B, 0x49, 0x4F, 0xF4, 0x40, 0x72, 0x04, 0xF6, 0x64, 0x20, + 0x2B, 0xF0, 0x82, 0xF9, 0x28, 0x49, 0x4F, 0xF4, 0x98, 0x62, 0x04, 0xF6, + 0x64, 0x50, 0x2B, 0xF0, 0x7B, 0xF9, 0x26, 0x49, 0x26, 0x48, 0x40, 0x22, + 0x2B, 0xF0, 0x76, 0xF9, 0x39, 0x46, 0x28, 0x22, 0x24, 0x48, 0x2B, 0xF0, + 0x71, 0xF9, 0x24, 0x49, 0x24, 0x48, 0x60, 0x22, 0x2B, 0xF0, 0x6C, 0xF9, + 0x23, 0x4A, 0x24, 0x4B, 0x12, 0x68, 0xD3, 0xF8, 0x84, 0x60, 0xB2, 0xF8, + 0x3C, 0xC0, 0xD3, 0xF8, 0x80, 0x20, 0xD3, 0xE9, 0x22, 0x07, 0x41, 0xF2, + 0x10, 0x33, 0x41, 0xF2, 0x30, 0x31, 0x24, 0xF8, 0x03, 0xC0, 0x41, 0xF2, + 0x2C, 0x33, 0x66, 0x50, 0xE2, 0x50, 0x41, 0xF2, 0x38, 0x36, 0x41, 0xF2, + 0x3C, 0x33, 0x41, 0xF2, 0x34, 0x31, 0x18, 0x4A, 0xE2, 0x50, 0xA7, 0x51, + 0x17, 0x4B, 0x60, 0x50, 0x05, 0xF5, 0xBC, 0x70, 0x05, 0xF5, 0xCE, 0x71, + 0x50, 0xF8, 0x04, 0x2F, 0x1A, 0xB1, 0x14, 0x7B, 0x9C, 0x70, 0x12, 0x89, + 0x1A, 0x80, 0x88, 0x42, 0x03, 0xF1, 0x04, 0x03, 0xF4, 0xD1, 0xF8, 0xBD, + 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x40, 0x1E, 0x00, 0xE4, 0xB8, 0x17, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0x34, 0xE0, 0x17, 0x00, 0xF4, 0xDF, 0x17, 0x00, 0x24, 0x52, 0x1E, 0x00, + 0x64, 0x52, 0x1E, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x8C, 0x52, 0x1E, 0x00, + 0xC8, 0x35, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0xEC, 0x34, 0x17, 0x00, + 0xEC, 0x52, 0x1E, 0x00, 0x70, 0xB5, 0x65, 0x4A, 0x53, 0x78, 0x00, 0x2B, + 0x7F, 0xD1, 0x64, 0x4B, 0x1B, 0x68, 0x3B, 0xB1, 0x63, 0x48, 0xD9, 0x68, + 0x00, 0x69, 0x09, 0x1A, 0xB1, 0xF5, 0xFA, 0x6F, 0x00, 0xF1, 0xA5, 0x80, + 0x13, 0x78, 0x00, 0x2B, 0x68, 0xD0, 0xD2, 0xE9, 0x01, 0x35, 0x5D, 0x48, + 0x5D, 0x4A, 0x5E, 0x49, 0x04, 0x69, 0x0E, 0x68, 0xB2, 0xF8, 0xB0, 0x00, + 0xB2, 0xF8, 0xB2, 0x10, 0xB2, 0x8E, 0x2B, 0x44, 0x1B, 0x1B, 0x1B, 0x1A, + 0x5B, 0x1A, 0x9B, 0x1A, 0x00, 0x2B, 0xC0, 0xF2, 0x98, 0x80, 0xFF, 0xF7, + 0x37, 0xFF, 0x56, 0x4B, 0x1B, 0x6A, 0x1C, 0x6C, 0x23, 0x79, 0x20, 0x89, + 0x00, 0x2B, 0x56, 0xD0, 0x2A, 0xF0, 0xC8, 0xFB, 0x02, 0x46, 0x0B, 0x46, + 0x2A, 0xF0, 0x78, 0xFA, 0x50, 0x4B, 0x00, 0x22, 0x2A, 0xF0, 0x54, 0xFD, + 0x4F, 0x4B, 0x00, 0x22, 0x2A, 0xF0, 0x26, 0xFC, 0x2A, 0xF0, 0x1E, 0xFA, + 0x2A, 0xF0, 0xBC, 0xFE, 0x05, 0x46, 0x20, 0x89, 0x2A, 0xF0, 0xB4, 0xFB, + 0x02, 0x46, 0x0B, 0x46, 0x00, 0x20, 0x49, 0x49, 0x2A, 0xF0, 0x42, 0xFD, + 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, 0x2A, 0xF0, 0x13, 0xFC, 0x2A, 0xF0, + 0x0B, 0xFA, 0x2A, 0xF0, 0xA9, 0xFE, 0x03, 0x46, 0x20, 0x89, 0x1C, 0x46, + 0x2A, 0xF0, 0xA0, 0xFB, 0x34, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x2A, 0xF0, + 0x2F, 0xFD, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, 0x2A, 0xF0, 0x00, 0xFC, + 0x2A, 0xF0, 0xF8, 0xF9, 0x2A, 0xF0, 0x96, 0xFE, 0x3A, 0x4B, 0x3B, 0x49, + 0x03, 0xF5, 0x99, 0x56, 0x02, 0x46, 0x35, 0x60, 0x41, 0xF2, 0x24, 0x30, + 0x41, 0xF2, 0x28, 0x35, 0x1C, 0x50, 0x5A, 0x51, 0x02, 0x20, 0x18, 0xF0, + 0xD5, 0xFB, 0x35, 0x4B, 0x4F, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0x70, 0xBD, + 0x33, 0x49, 0x02, 0x20, 0x18, 0xF0, 0xCC, 0xFB, 0x30, 0x4B, 0x4F, 0xF0, + 0x00, 0x42, 0x1A, 0x60, 0x70, 0xBD, 0x30, 0x49, 0xF5, 0xE7, 0x2A, 0xF0, + 0x71, 0xFB, 0x2F, 0x4B, 0x00, 0x22, 0x2A, 0xF0, 0xD7, 0xFB, 0x25, 0x4B, + 0x00, 0x22, 0x2A, 0xF0, 0xFD, 0xFC, 0x24, 0x4B, 0x00, 0x22, 0x2A, 0xF0, + 0xCF, 0xFB, 0x2A, 0xF0, 0xC7, 0xF9, 0x2A, 0xF0, 0x65, 0xFE, 0x05, 0x46, + 0x20, 0x89, 0x2A, 0xF0, 0x5D, 0xFB, 0x02, 0x46, 0x0B, 0x46, 0x00, 0x20, + 0x24, 0x49, 0x2A, 0xF0, 0xEB, 0xFC, 0x00, 0x22, 0x4F, 0xF0, 0x83, 0x43, + 0x2A, 0xF0, 0xBC, 0xFB, 0x2A, 0xF0, 0xB4, 0xF9, 0x2A, 0xF0, 0x52, 0xFE, + 0x03, 0x46, 0x20, 0x89, 0x1C, 0x46, 0x2A, 0xF0, 0x49, 0xFB, 0x0B, 0xA3, + 0xD3, 0xE9, 0x00, 0x23, 0xA7, 0xE7, 0x5A, 0x68, 0x1A, 0x49, 0x02, 0x20, + 0x18, 0xF0, 0x92, 0xFB, 0x13, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x1A, 0x60, + 0x70, 0xBD, 0x17, 0x49, 0xBB, 0xE7, 0x00, 0xBF, 0xAF, 0xF3, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB3, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xA2, 0x40, 0x3C, 0x36, 0x17, 0x00, 0xD0, 0x9C, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x2C, 0x19, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, + 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x00, 0x6A, 0x40, 0x00, 0x00, 0x50, 0x41, + 0x00, 0x00, 0xB9, 0x40, 0x00, 0x40, 0x1E, 0x00, 0x20, 0x89, 0x15, 0x00, + 0x00, 0x41, 0x04, 0x40, 0x1C, 0x89, 0x15, 0x00, 0xC4, 0x88, 0x15, 0x00, + 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0xA4, 0x40, 0xE8, 0x88, 0x15, 0x00, + 0x00, 0x89, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x2D, 0xED, 0x02, 0x8B, + 0x56, 0x4E, 0xDF, 0xF8, 0x90, 0x81, 0x96, 0xF8, 0xDF, 0x31, 0x96, 0xF8, + 0xBF, 0x56, 0xDF, 0xF8, 0x88, 0xB1, 0x53, 0x4C, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x03, 0xF7, 0x83, 0xB0, 0x08, 0xEB, 0x07, 0x09, 0x06, 0xF5, + 0xBE, 0x71, 0x48, 0x46, 0x01, 0x93, 0x4F, 0xF4, 0x1E, 0x7A, 0x00, 0x97, + 0x2B, 0xF0, 0x0E, 0xF8, 0x07, 0xF1, 0xEC, 0x00, 0x0A, 0xFB, 0x05, 0xF5, + 0x06, 0xF6, 0x14, 0x11, 0xE8, 0x22, 0x40, 0x44, 0x2B, 0xF0, 0x04, 0xF8, + 0x05, 0xEB, 0x0B, 0x03, 0x18, 0x46, 0x52, 0x46, 0x06, 0xF2, 0x9C, 0x61, + 0x08, 0xEE, 0x10, 0x3A, 0x2A, 0xF0, 0xFA, 0xFF, 0x06, 0xF6, 0xFC, 0x11, + 0x1C, 0x22, 0xD9, 0xF8, 0x40, 0x00, 0x3F, 0x4F, 0xDF, 0xF8, 0x30, 0xA1, + 0x2A, 0xF0, 0xF0, 0xFF, 0x06, 0xF6, 0x18, 0x21, 0x34, 0x22, 0x3C, 0x48, + 0x2A, 0xF0, 0xEA, 0xFF, 0x31, 0x46, 0x4F, 0xF4, 0xBE, 0x72, 0x3A, 0x48, + 0x2A, 0xF0, 0xE4, 0xFF, 0x06, 0xF6, 0x4C, 0x21, 0x18, 0x22, 0x38, 0x48, + 0x2A, 0xF0, 0xDE, 0xFF, 0x06, 0xF6, 0x64, 0x21, 0x4F, 0xF4, 0x18, 0x62, + 0x35, 0x48, 0x2A, 0xF0, 0xD7, 0xFF, 0x06, 0xF6, 0x64, 0x51, 0x4F, 0xF4, + 0x98, 0x62, 0x33, 0x48, 0x33, 0x4E, 0x2A, 0xF0, 0xCF, 0xFF, 0x40, 0x22, + 0xA4, 0xF1, 0xC8, 0x01, 0x31, 0x48, 0x2A, 0xF0, 0xC9, 0xFF, 0x28, 0x22, + 0xA4, 0xF1, 0x88, 0x01, 0x2F, 0x48, 0x2A, 0xF0, 0xC3, 0xFF, 0x2F, 0x48, + 0x60, 0x22, 0xA4, 0xF1, 0x60, 0x01, 0x2A, 0xF0, 0xBD, 0xFF, 0x05, 0xF5, + 0xBE, 0x75, 0xAB, 0x44, 0x5B, 0xF8, 0x04, 0x3B, 0x50, 0x46, 0x19, 0x46, + 0x4B, 0xB1, 0xA2, 0x78, 0x1A, 0x73, 0xD7, 0xF8, 0xDC, 0x22, 0x25, 0x88, + 0x1D, 0x81, 0xC3, 0xE9, 0x45, 0x23, 0x17, 0xF0, 0x01, 0xF9, 0x04, 0x34, + 0xB4, 0x42, 0xED, 0xD1, 0x1B, 0x48, 0x22, 0x4D, 0x49, 0x46, 0x17, 0xF0, + 0xF9, 0xF8, 0x21, 0x48, 0x49, 0x46, 0x17, 0xF0, 0xA5, 0xF8, 0x00, 0x9E, + 0x06, 0xF1, 0xE4, 0x00, 0x18, 0xEE, 0x10, 0x1A, 0x40, 0x44, 0x17, 0xF0, + 0x9D, 0xF8, 0x01, 0x9A, 0xA4, 0x24, 0x99, 0x23, 0x14, 0xFB, 0x02, 0x34, + 0x08, 0xEB, 0xC4, 0x04, 0x35, 0x44, 0x20, 0x46, 0x17, 0xF0, 0x8E, 0xF8, + 0x04, 0xF1, 0x28, 0x00, 0x08, 0x34, 0x17, 0xF0, 0x89, 0xF8, 0xAC, 0x42, + 0xF5, 0xD1, 0x00, 0x9B, 0x03, 0xF5, 0xA3, 0x60, 0x40, 0x44, 0x03, 0xB0, + 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x4F, 0x17, 0xF0, 0x7C, 0xB8, + 0x00, 0x40, 0x1E, 0x00, 0xEC, 0x52, 0x1E, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, + 0xF4, 0xE4, 0x17, 0x00, 0x34, 0xE0, 0x17, 0x00, 0x10, 0x53, 0x1E, 0x00, + 0xF4, 0xDF, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, + 0x08, 0x8D, 0x17, 0x00, 0x08, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0xF8, 0xDE, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x6C, 0x4E, 0x6D, 0x4A, 0x33, 0x68, 0xDF, 0xF8, 0x00, 0x82, 0x0D, 0x46, + 0x09, 0x8C, 0x9B, 0xB2, 0x43, 0xEA, 0x01, 0x43, 0xD0, 0xF8, 0x90, 0x11, + 0x33, 0x60, 0x8B, 0x78, 0x67, 0x49, 0x02, 0xEB, 0x83, 0x03, 0x1C, 0x3E, + 0x5B, 0x69, 0x0B, 0x60, 0x31, 0x68, 0x21, 0xF4, 0xE0, 0x61, 0x04, 0x46, + 0x50, 0x68, 0x31, 0x60, 0x13, 0x68, 0x62, 0x49, 0x62, 0x4A, 0x03, 0x43, + 0x0B, 0x60, 0x62, 0x4B, 0x62, 0x49, 0x11, 0x60, 0x62, 0x4A, 0x1A, 0x60, + 0xD8, 0xF8, 0x00, 0x30, 0x9F, 0x03, 0x70, 0xD4, 0x60, 0x4B, 0x1B, 0x68, + 0x1A, 0x68, 0xE2, 0xB1, 0x5F, 0x49, 0x0A, 0x60, 0x5A, 0x68, 0xF2, 0xB1, + 0xC2, 0xF3, 0x0B, 0x01, 0x00, 0x29, 0x61, 0xD1, 0xE1, 0x68, 0x5C, 0x48, + 0x22, 0xF4, 0x7F, 0x62, 0x22, 0xF0, 0x0F, 0x02, 0xC1, 0xF3, 0x0B, 0x01, + 0x0A, 0x43, 0x02, 0x60, 0x9A, 0x68, 0xA2, 0xB9, 0x57, 0x4A, 0x21, 0x69, + 0x11, 0x60, 0xDB, 0x68, 0xA3, 0xB9, 0x56, 0x4B, 0x62, 0x69, 0x1A, 0x60, + 0x12, 0xE0, 0x51, 0x4A, 0xA1, 0x68, 0x11, 0x60, 0x5A, 0x68, 0x00, 0x2A, + 0xE0, 0xD1, 0x4F, 0x4A, 0xE1, 0x68, 0x11, 0x60, 0x9A, 0x68, 0x00, 0x2A, + 0xEA, 0xD0, 0x4D, 0x49, 0x0A, 0x60, 0xDB, 0x68, 0x00, 0x2B, 0xEA, 0xD0, + 0x4B, 0x4A, 0x13, 0x60, 0x4B, 0x4B, 0xD3, 0xF8, 0x60, 0x32, 0x98, 0x47, + 0x4A, 0x4B, 0x1B, 0x68, 0x9C, 0x01, 0x06, 0xD4, 0x49, 0x4B, 0x3E, 0x4A, + 0x01, 0x21, 0x19, 0x60, 0x13, 0x68, 0x0B, 0x43, 0x13, 0x60, 0x28, 0x46, + 0x1B, 0xF0, 0xE4, 0xFA, 0x43, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, + 0x13, 0x60, 0x01, 0x21, 0x00, 0x20, 0x16, 0xF0, 0x51, 0xFD, 0x41, 0x4B, + 0x1B, 0x68, 0x5A, 0x78, 0x22, 0xB1, 0x40, 0x49, 0x0A, 0x68, 0x42, 0xF0, + 0x40, 0x02, 0x0A, 0x60, 0x3E, 0x49, 0x9B, 0x78, 0x0A, 0x68, 0xD8, 0x06, + 0x4C, 0xBF, 0x22, 0xF0, 0x00, 0x42, 0x42, 0xF0, 0x00, 0x42, 0x0A, 0x60, + 0x3A, 0x4A, 0x13, 0xF0, 0x01, 0x0F, 0x13, 0x68, 0x14, 0xBF, 0x43, 0xF4, + 0x80, 0x23, 0x23, 0xF4, 0x80, 0x23, 0x13, 0x60, 0xBD, 0xE8, 0xF0, 0x81, + 0x2B, 0x49, 0x0A, 0x60, 0xB8, 0xE7, 0xF4, 0xF7, 0xD7, 0xFF, 0x00, 0x28, + 0x8A, 0xD0, 0xF5, 0xF7, 0x07, 0xF8, 0x31, 0x4F, 0x3B, 0x68, 0x00, 0x02, + 0x23, 0xF4, 0xE0, 0x63, 0x00, 0xF4, 0xE0, 0x60, 0x18, 0x43, 0x38, 0x60, + 0x3B, 0x68, 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, 0x60, 0x03, 0x3B, 0x60, + 0x3B, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x3B, 0x60, 0x3B, 0x68, 0x43, 0xF0, + 0x01, 0x03, 0x3B, 0x60, 0xD8, 0xF8, 0x00, 0x30, 0x1B, 0x04, 0x0F, 0xD4, + 0x24, 0x4B, 0x1B, 0x68, 0x9E, 0x03, 0x7F, 0xF5, 0x69, 0xAF, 0xF4, 0xF7, + 0xB9, 0xFF, 0x00, 0x28, 0x3F, 0xF4, 0x64, 0xAF, 0x1E, 0x4A, 0x13, 0x68, + 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x5D, 0xE7, 0xF4, 0xF7, 0x80, 0xFF, + 0x00, 0x28, 0xEB, 0xD0, 0x33, 0x68, 0x43, 0xF4, 0x00, 0x23, 0x33, 0x60, + 0x3B, 0x68, 0x23, 0xF0, 0x60, 0x63, 0x43, 0xF0, 0x80, 0x63, 0x3B, 0x60, + 0xE0, 0xE7, 0x00, 0xBF, 0x68, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, + 0xDC, 0x00, 0x32, 0x40, 0x60, 0x00, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, + 0x80, 0x80, 0x32, 0x40, 0x4C, 0xF1, 0x73, 0x8B, 0xC0, 0x07, 0xF9, 0x80, + 0xAC, 0x35, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, + 0x08, 0x02, 0x32, 0x40, 0x0C, 0x02, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x4C, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, + 0x24, 0x02, 0x32, 0x40, 0x80, 0x04, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, + 0x50, 0x03, 0x32, 0x40, 0x04, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x41, + 0x33, 0x4D, 0xDF, 0xF8, 0xE4, 0x80, 0xD5, 0xF8, 0xD0, 0x34, 0x32, 0x4E, + 0x41, 0xF2, 0x12, 0x32, 0x18, 0xF8, 0x02, 0x70, 0x98, 0x47, 0xD5, 0xF8, + 0x9C, 0x34, 0x98, 0x47, 0xD8, 0xF8, 0xBC, 0x41, 0xF4, 0xF7, 0x46, 0xF9, + 0x2C, 0x49, 0xD5, 0xF8, 0x88, 0x24, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x73, + 0x0B, 0x60, 0x20, 0x79, 0x90, 0x47, 0x23, 0x79, 0x86, 0xF8, 0x2A, 0x30, + 0x62, 0x79, 0x86, 0xF8, 0x2B, 0x20, 0x62, 0x7B, 0x86, 0xF8, 0x2C, 0x20, + 0xE1, 0x88, 0x20, 0x89, 0x62, 0x89, 0x32, 0x85, 0xFF, 0xB2, 0xB1, 0x84, + 0xF0, 0x84, 0xD3, 0xB9, 0xD5, 0xF8, 0xA0, 0x34, 0x98, 0x47, 0xF0, 0x8C, + 0xD5, 0xF8, 0xA4, 0x34, 0x98, 0x47, 0x1D, 0x4E, 0x94, 0xF9, 0x0C, 0x00, + 0xD5, 0xF8, 0x3C, 0x33, 0x98, 0x47, 0xD5, 0xF8, 0xD4, 0x34, 0x06, 0xF5, + 0xA4, 0x61, 0x30, 0x46, 0x98, 0x47, 0x17, 0xF0, 0x0D, 0x0F, 0x0C, 0xD0, + 0xD5, 0xF8, 0x54, 0x32, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xD5, 0xF8, + 0xA8, 0x34, 0x98, 0x47, 0xF0, 0x8C, 0xD5, 0xF8, 0xAC, 0x34, 0x98, 0x47, + 0xE3, 0xE7, 0xBB, 0x07, 0x14, 0xD5, 0x0F, 0x4A, 0xD8, 0xF8, 0x80, 0x31, + 0x11, 0x69, 0x0E, 0x48, 0xD5, 0xF8, 0xE0, 0x21, 0x46, 0x61, 0x05, 0x24, + 0x44, 0x77, 0x01, 0xF5, 0x1C, 0x51, 0x43, 0xF0, 0x02, 0x03, 0xC8, 0xF8, + 0x80, 0x31, 0x10, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x0C, 0x30, 0x10, 0x47, + 0xBD, 0xE8, 0xF0, 0x81, 0x88, 0x1A, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, + 0x90, 0xB3, 0x33, 0x40, 0x7C, 0x41, 0x1E, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x40, 0x1E, 0x00, 0x38, 0xB5, 0x50, 0xBB, + 0x1A, 0x4B, 0x1A, 0x68, 0x52, 0xB1, 0x1A, 0x4B, 0x1A, 0x49, 0x18, 0x69, + 0xD3, 0x68, 0xB1, 0xF8, 0xB0, 0x10, 0x1B, 0x1A, 0x5B, 0x1A, 0xB3, 0xF5, + 0xFA, 0x6F, 0x17, 0xD4, 0x16, 0x4A, 0x13, 0x78, 0x7B, 0xB1, 0xD2, 0xE9, + 0x01, 0x34, 0x12, 0x48, 0x14, 0x4D, 0x12, 0x49, 0x00, 0x69, 0x2A, 0x68, + 0xB1, 0xF8, 0xB0, 0x10, 0x92, 0x8E, 0x23, 0x44, 0x1B, 0x1A, 0x5B, 0x1A, + 0x9B, 0x1A, 0x00, 0x2B, 0x0E, 0xDB, 0x0F, 0x4B, 0x4F, 0xF0, 0x80, 0x42, + 0x1A, 0x60, 0x38, 0xBD, 0x52, 0x68, 0x0D, 0x49, 0x02, 0x20, 0x18, 0xF0, + 0xDB, 0xF8, 0x0A, 0x4B, 0x4F, 0xF0, 0x00, 0x42, 0x1A, 0x60, 0x38, 0xBD, + 0x09, 0x49, 0x02, 0x20, 0x18, 0xF0, 0xD2, 0xF8, 0xF5, 0xE7, 0x00, 0xBF, + 0xD0, 0x9C, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x2C, 0x19, 0x17, 0x00, + 0x3C, 0x36, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x41, 0x04, 0x40, + 0xE8, 0x88, 0x15, 0x00, 0x28, 0x89, 0x15, 0x00, 0xF0, 0xB5, 0x1B, 0x4B, + 0x01, 0x22, 0x85, 0xB0, 0xDA, 0x60, 0xEF, 0xF3, 0x14, 0x81, 0xEF, 0xF3, + 0x03, 0x82, 0xEF, 0xF3, 0x09, 0x85, 0xEF, 0xF3, 0x08, 0x84, 0xEF, 0xF3, + 0x10, 0x83, 0x70, 0x46, 0xCD, 0xE9, 0x01, 0x30, 0x00, 0x94, 0x13, 0x48, + 0x2B, 0x46, 0x18, 0xF0, 0x59, 0xF8, 0x15, 0xB9, 0x34, 0xB9, 0x05, 0xB0, + 0xF0, 0xBD, 0x10, 0x48, 0x18, 0xF0, 0x52, 0xF8, 0x00, 0x2C, 0xF8, 0xD0, + 0x0E, 0x48, 0x0F, 0x4F, 0x0F, 0x4E, 0x24, 0xF0, 0x0F, 0x04, 0x18, 0xF0, + 0x49, 0xF8, 0x04, 0xF5, 0x80, 0x75, 0x06, 0xE0, 0x54, 0xF8, 0x04, 0x1B, + 0x30, 0x46, 0x18, 0xF0, 0x41, 0xF8, 0xA5, 0x42, 0xE7, 0xD0, 0x23, 0x07, + 0xF6, 0xD1, 0x21, 0x46, 0x38, 0x46, 0x18, 0xF0, 0x39, 0xF8, 0xF1, 0xE7, + 0x00, 0xA0, 0x10, 0x40, 0x40, 0x89, 0x15, 0x00, 0x94, 0x89, 0x15, 0x00, + 0xA0, 0x89, 0x15, 0x00, 0xAC, 0x89, 0x15, 0x00, 0xB8, 0x89, 0x15, 0x00, + 0x30, 0xB4, 0x0C, 0x4C, 0x0C, 0x49, 0xD4, 0xF8, 0x3C, 0x31, 0x0C, 0x4A, + 0x0C, 0x4D, 0x43, 0xF0, 0x04, 0x03, 0xC4, 0xF8, 0x3C, 0x31, 0xC0, 0x03, + 0x03, 0x24, 0xF4, 0x23, 0x08, 0x60, 0x8C, 0x60, 0x82, 0xF8, 0x44, 0x33, + 0xAB, 0x68, 0x07, 0x49, 0xC3, 0xF8, 0x50, 0x11, 0x10, 0x23, 0x30, 0xBC, + 0x93, 0x60, 0x70, 0x47, 0x00, 0x00, 0x50, 0x40, 0x00, 0xA0, 0x10, 0x40, + 0x00, 0xE1, 0x00, 0xE0, 0x00, 0xED, 0x00, 0xE0, 0xA9, 0xC5, 0x12, 0x00, + 0x01, 0x4B, 0x1A, 0x68, 0x1A, 0x60, 0x70, 0x47, 0x00, 0xA0, 0x10, 0x40, + 0x02, 0x4A, 0x93, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x93, 0x60, 0x70, 0x47, + 0x00, 0xA0, 0x10, 0x40, 0x02, 0x4A, 0x93, 0x68, 0x43, 0xF0, 0x02, 0x03, + 0x93, 0x60, 0x70, 0x47, 0x00, 0xA0, 0x10, 0x40, 0x08, 0xB5, 0x06, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0xFE, 0xE7, + 0x03, 0x49, 0x04, 0x48, 0xBA, 0x22, 0x18, 0xF0, 0x5F, 0xFA, 0xF8, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x0B, 0x4B, 0x41, 0xF2, 0x1C, 0x32, 0x41, 0xF2, 0x18, 0x31, 0x9A, 0x58, + 0x5B, 0x58, 0x72, 0xB1, 0x10, 0xB4, 0x08, 0x4C, 0x00, 0x22, 0x19, 0x68, + 0x58, 0x68, 0x08, 0x60, 0x21, 0x68, 0x02, 0x32, 0x91, 0x42, 0x03, 0xF1, + 0x08, 0x03, 0xF6, 0xD8, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x70, 0x47, + 0x00, 0x40, 0x1E, 0x00, 0x1C, 0x53, 0x1E, 0x00, 0x32, 0x49, 0x33, 0x4B, + 0x99, 0x42, 0x10, 0xB5, 0x0C, 0xD2, 0x01, 0x3B, 0x5B, 0x1A, 0x31, 0x4A, + 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x13, 0x44, 0x52, 0xF8, 0x04, 0x0B, + 0x41, 0xF8, 0x04, 0x0B, 0x9A, 0x42, 0xF9, 0xD1, 0x2C, 0x4A, 0x2D, 0x4B, + 0x9A, 0x42, 0x0A, 0xD2, 0x01, 0x3B, 0x9B, 0x1A, 0x23, 0xF0, 0x03, 0x03, + 0x04, 0x33, 0x13, 0x44, 0x00, 0x21, 0x42, 0xF8, 0x04, 0x1B, 0x9A, 0x42, + 0xFB, 0xD1, 0x27, 0x49, 0x27, 0x4B, 0x99, 0x42, 0x0D, 0xD2, 0x01, 0x3B, + 0x5B, 0x1A, 0x26, 0x4A, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x13, 0x44, + 0x08, 0x46, 0x52, 0xF8, 0x04, 0x4B, 0x40, 0xF8, 0x04, 0x4B, 0x9A, 0x42, + 0xF9, 0xD1, 0x21, 0x4A, 0x21, 0x48, 0xD2, 0xF8, 0x88, 0x30, 0x43, 0xF4, + 0x70, 0x03, 0xC2, 0xF8, 0x88, 0x30, 0x91, 0x60, 0x00, 0x23, 0xFF, 0x21, + 0xC2, 0x18, 0x01, 0x33, 0x50, 0x2B, 0x82, 0xF8, 0x00, 0x13, 0xF9, 0xD1, + 0x1A, 0x4B, 0x1B, 0x68, 0x13, 0xF0, 0x80, 0x6F, 0x16, 0x4B, 0x1B, 0x68, + 0x4F, 0xF6, 0xF0, 0x72, 0x03, 0xEA, 0x02, 0x03, 0x0D, 0xD0, 0x4C, 0xF2, + 0x40, 0x22, 0x93, 0x42, 0x0D, 0xD0, 0x14, 0x4C, 0xF5, 0xF7, 0xBC, 0xFC, + 0xD4, 0xF8, 0x7C, 0x34, 0x98, 0x47, 0xD4, 0xF8, 0x74, 0x34, 0x98, 0x47, + 0xFE, 0xE7, 0x4D, 0xF2, 0x10, 0x22, 0x93, 0x42, 0xF1, 0xD1, 0x0E, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0xED, 0xE7, 0x00, 0xBF, 0x80, 0x01, 0x17, 0x00, + 0x5C, 0x25, 0x17, 0x00, 0x2C, 0xD2, 0x15, 0x00, 0x60, 0x25, 0x17, 0x00, + 0x28, 0x07, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x80, 0x01, 0x17, 0x00, + 0x00, 0x00, 0x12, 0x00, 0x00, 0xED, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xE0, + 0x00, 0x00, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x28, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x72, 0x4F, 0x73, 0x4E, 0x86, 0xB0, 0x3D, 0x46, + 0x00, 0x24, 0x21, 0x46, 0x55, 0xF8, 0x04, 0x2B, 0x30, 0x46, 0x01, 0x34, + 0xF9, 0xF7, 0x6A, 0xFD, 0x0D, 0x2C, 0xF6, 0xD1, 0xD7, 0xE9, 0x11, 0x21, + 0x3B, 0x6C, 0x6C, 0x4D, 0x00, 0x93, 0xCD, 0xE9, 0x01, 0x21, 0x6B, 0x48, + 0x79, 0x6B, 0xD7, 0xE9, 0x0E, 0x23, 0xF9, 0xF7, 0x5B, 0xFD, 0x29, 0x68, + 0x6A, 0x68, 0xAB, 0x68, 0xE8, 0x68, 0x00, 0x90, 0x66, 0x48, 0xF9, 0xF7, + 0x53, 0xFD, 0x69, 0x6A, 0xAA, 0x6A, 0xEB, 0x6A, 0x28, 0x6B, 0xEC, 0x6B, + 0xCD, 0xE9, 0x00, 0x04, 0x62, 0x48, 0xF9, 0xF7, 0x49, 0xFD, 0xAC, 0x6A, + 0x14, 0xF0, 0xFF, 0x01, 0x68, 0xD1, 0xC4, 0xF3, 0x07, 0x25, 0x14, 0xF4, + 0x7F, 0x4F, 0x29, 0x46, 0x44, 0xD1, 0x21, 0x0C, 0x2E, 0xD1, 0xFB, 0x6C, + 0x1C, 0x07, 0x23, 0xD5, 0x5A, 0x48, 0xF9, 0xF7, 0x37, 0xFD, 0x3B, 0x6D, + 0xD8, 0x07, 0x21, 0xD4, 0x58, 0x48, 0xF9, 0xF7, 0x31, 0xFD, 0xFB, 0x6C, + 0x59, 0x07, 0x4C, 0xBF, 0x56, 0x48, 0x57, 0x48, 0xF9, 0xF7, 0x2A, 0xFD, + 0x39, 0x6D, 0xEF, 0xF3, 0x10, 0x82, 0xEF, 0xF3, 0x13, 0x83, 0xEF, 0xF3, + 0x11, 0x80, 0x00, 0x90, 0x52, 0x48, 0xF9, 0xF7, 0x1F, 0xFD, 0xBC, 0x6C, + 0x00, 0x2C, 0x71, 0xD1, 0x7C, 0x6C, 0x00, 0x2C, 0x56, 0xD1, 0x06, 0xB0, + 0xBD, 0xE8, 0xF0, 0x81, 0x4D, 0x48, 0xF9, 0xF7, 0x13, 0xFD, 0xDD, 0xE7, + 0x4C, 0x48, 0xF9, 0xF7, 0x0F, 0xFD, 0xDC, 0xE7, 0xC4, 0xF3, 0x40, 0x63, + 0xC4, 0xF3, 0x00, 0x60, 0xC4, 0xF3, 0xC0, 0x42, 0x03, 0x93, 0xC4, 0xF3, + 0x80, 0x43, 0xCD, 0xE9, 0x01, 0x20, 0x00, 0x93, 0xC4, 0xF3, 0x00, 0x42, + 0xC4, 0xF3, 0x40, 0x43, 0x43, 0x48, 0xF9, 0xF7, 0xFB, 0xFC, 0xBC, 0xE7, + 0xC4, 0xF3, 0xC0, 0x33, 0xC4, 0xF3, 0x00, 0x30, 0xC4, 0xF3, 0xC0, 0x22, + 0x04, 0x93, 0xC4, 0xF3, 0x40, 0x36, 0xC4, 0xF3, 0x80, 0x23, 0xCD, 0xE9, + 0x00, 0x32, 0xCD, 0xE9, 0x02, 0x06, 0xC4, 0xF3, 0x40, 0x23, 0x3A, 0x48, + 0xC4, 0xF3, 0x00, 0x22, 0xF9, 0xF7, 0xE4, 0xFC, 0x2D, 0x06, 0xA2, 0xD5, + 0x2A, 0x4B, 0x37, 0x48, 0x99, 0x6B, 0xF9, 0xF7, 0xDD, 0xFC, 0x9C, 0xE7, + 0xC4, 0xF3, 0xC0, 0x16, 0xC4, 0xF3, 0x40, 0x10, 0xC4, 0xF3, 0x00, 0x12, + 0xC4, 0xF3, 0xC0, 0x03, 0xCD, 0xE9, 0x02, 0x06, 0xCD, 0xE9, 0x00, 0x32, + 0x2F, 0x48, 0xC4, 0xF3, 0x40, 0x03, 0x04, 0xF0, 0x01, 0x02, 0xF9, 0xF7, + 0xC9, 0xFC, 0x26, 0x06, 0x81, 0xD5, 0x69, 0x6B, 0x2B, 0x48, 0xF9, 0xF7, + 0xC3, 0xFC, 0x7C, 0xE7, 0x2A, 0x48, 0x2B, 0x4F, 0x2B, 0x4E, 0x24, 0xF0, + 0x0F, 0x04, 0xF9, 0xF7, 0xBB, 0xFC, 0x04, 0xF5, 0x80, 0x75, 0x06, 0xE0, + 0x54, 0xF8, 0x04, 0x1B, 0x30, 0x46, 0xF9, 0xF7, 0xB3, 0xFC, 0xA5, 0x42, + 0x97, 0xD0, 0x23, 0x07, 0xF6, 0xD1, 0x21, 0x46, 0x38, 0x46, 0xF9, 0xF7, + 0xAB, 0xFC, 0xF1, 0xE7, 0x21, 0x48, 0xDF, 0xF8, 0x7C, 0x80, 0x1F, 0x4E, + 0x24, 0xF0, 0x0F, 0x04, 0xF9, 0xF7, 0xA2, 0xFC, 0x04, 0xF5, 0x80, 0x75, + 0x07, 0xE0, 0x54, 0xF8, 0x04, 0x1B, 0x30, 0x46, 0xF9, 0xF7, 0x9A, 0xFC, + 0xA5, 0x42, 0x3F, 0xF4, 0x7B, 0xAF, 0x22, 0x07, 0xF5, 0xD1, 0x21, 0x46, + 0x40, 0x46, 0xF9, 0xF7, 0x91, 0xFC, 0xF0, 0xE7, 0xE4, 0x60, 0x17, 0x00, + 0xC0, 0x89, 0x15, 0x00, 0x00, 0xED, 0x00, 0xE0, 0xD0, 0x89, 0x15, 0x00, + 0x1C, 0x8A, 0x15, 0x00, 0x50, 0x8A, 0x15, 0x00, 0xF0, 0x8B, 0x15, 0x00, + 0x10, 0x8C, 0x15, 0x00, 0x34, 0x8C, 0x15, 0x00, 0x40, 0x8C, 0x15, 0x00, + 0x4C, 0x8C, 0x15, 0x00, 0x24, 0x8C, 0x15, 0x00, 0x00, 0x8C, 0x15, 0x00, + 0x8C, 0x8B, 0x15, 0x00, 0x04, 0x8B, 0x15, 0x00, 0x7C, 0x8B, 0x15, 0x00, + 0x90, 0x8A, 0x15, 0x00, 0xF4, 0x8A, 0x15, 0x00, 0x80, 0x8C, 0x15, 0x00, + 0xAC, 0x89, 0x15, 0x00, 0xB8, 0x89, 0x15, 0x00, 0xA0, 0x89, 0x15, 0x00, + 0x08, 0xB5, 0x02, 0x48, 0xF9, 0xF7, 0x60, 0xFC, 0xFE, 0xE7, 0x00, 0xBF, + 0x8C, 0x8C, 0x15, 0x00, 0x04, 0x46, 0x08, 0xB5, 0x10, 0x48, 0xF9, 0xF7, + 0x57, 0xFC, 0x30, 0x2C, 0x10, 0xD0, 0x40, 0x2C, 0x16, 0xD0, 0x20, 0x2C, + 0x10, 0xD0, 0x0D, 0x48, 0xF9, 0xF7, 0x4E, 0xFC, 0x0C, 0x48, 0xF9, 0xF7, + 0x4B, 0xFC, 0xFF, 0xF7, 0xD1, 0xFE, 0x0B, 0x48, 0xF9, 0xF7, 0x46, 0xFC, + 0xFF, 0xF7, 0xE0, 0xFF, 0x09, 0x48, 0xF9, 0xF7, 0x41, 0xFC, 0xF1, 0xE7, + 0x08, 0x48, 0xF9, 0xF7, 0x3D, 0xFC, 0xED, 0xE7, 0x07, 0x48, 0xF9, 0xF7, + 0x39, 0xFC, 0xE9, 0xE7, 0x98, 0x8C, 0x15, 0x00, 0xE8, 0x8C, 0x15, 0x00, + 0xF4, 0x8C, 0x15, 0x00, 0x00, 0x8D, 0x15, 0x00, 0xD0, 0x8C, 0x15, 0x00, + 0xC0, 0x8C, 0x15, 0x00, 0xDC, 0x8C, 0x15, 0x00, 0x4F, 0xF0, 0x10, 0x03, + 0x00, 0xF0, 0x0C, 0xB8, 0x4F, 0xF0, 0x20, 0x03, 0x00, 0xF0, 0x08, 0xB8, + 0x4F, 0xF0, 0x30, 0x03, 0x00, 0xF0, 0x04, 0xB8, 0x4F, 0xF0, 0x40, 0x03, + 0x00, 0xF0, 0x00, 0xB8, 0xEF, 0xF3, 0x08, 0x80, 0x4F, 0xF0, 0x04, 0x01, + 0x72, 0x46, 0x0A, 0x42, 0x01, 0xD0, 0xEF, 0xF3, 0x09, 0x80, 0x9C, 0x46, + 0x24, 0x49, 0x02, 0x68, 0x0A, 0x60, 0x04, 0x31, 0x42, 0x68, 0x0A, 0x60, + 0x04, 0x31, 0x82, 0x68, 0x0A, 0x60, 0x04, 0x31, 0xC2, 0x68, 0x0A, 0x60, + 0x04, 0x31, 0xF0, 0xC1, 0x47, 0x46, 0x0F, 0x60, 0x04, 0x31, 0x4F, 0x46, + 0x0F, 0x60, 0x04, 0x31, 0x57, 0x46, 0x0F, 0x60, 0x04, 0x31, 0x5F, 0x46, + 0x0F, 0x60, 0x04, 0x31, 0x02, 0x69, 0x0A, 0x60, 0x08, 0x31, 0x42, 0x69, + 0x0A, 0x60, 0x04, 0x31, 0x82, 0x69, 0x0A, 0x60, 0x04, 0x31, 0xC2, 0x69, + 0x0A, 0x60, 0x04, 0x31, 0x03, 0x46, 0x20, 0x33, 0x4F, 0xF4, 0x00, 0x76, + 0x32, 0x42, 0x00, 0xD0, 0x04, 0x33, 0x75, 0x46, 0x4F, 0xF0, 0x10, 0x06, + 0x35, 0x42, 0x00, 0xD1, 0x48, 0x33, 0x0C, 0x46, 0x10, 0x3C, 0x23, 0x60, + 0xEF, 0xF3, 0x09, 0x82, 0x0A, 0x60, 0x04, 0x31, 0xEF, 0xF3, 0x08, 0x82, + 0x0A, 0x60, 0x04, 0x31, 0x72, 0x46, 0x0A, 0x60, 0x04, 0x31, 0xEF, 0xF3, + 0x14, 0x82, 0x0A, 0x60, 0x03, 0x4B, 0x60, 0x46, 0x01, 0x49, 0x98, 0x47, + 0xFE, 0xE7, 0x00, 0x00, 0xE4, 0x60, 0x17, 0x00, 0x3D, 0xCA, 0x12, 0x00, + 0x08, 0xB5, 0x08, 0x4B, 0x00, 0x22, 0x5A, 0x70, 0x18, 0xF0, 0x3E, 0xF8, + 0x1A, 0xF0, 0x14, 0xFC, 0x05, 0x4B, 0xD3, 0xF8, 0xA8, 0x31, 0x98, 0x47, + 0x16, 0xF0, 0x88, 0xFB, 0xBD, 0xE8, 0x08, 0x40, 0x18, 0xF0, 0x42, 0xB8, + 0x70, 0x28, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x4B, 0x4E, 0x4C, 0x4A, 0x4C, 0x49, 0x4D, 0x48, 0x17, 0xF0, 0x6E, 0xFD, + 0x33, 0x68, 0xDB, 0x78, 0x00, 0x2B, 0x40, 0xF0, 0x89, 0x80, 0x62, 0xB6, + 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, 0x6F, 0x8F, 0xDF, 0xF8, 0x3C, 0x81, + 0xDF, 0xF8, 0x3C, 0x91, 0x45, 0x4D, 0x46, 0x4F, 0x46, 0x4C, 0xDF, 0xF8, + 0x38, 0xB1, 0x4F, 0xF0, 0x01, 0x0A, 0x33, 0x68, 0xDB, 0x78, 0xFB, 0xB9, + 0x98, 0xF8, 0x00, 0x30, 0x13, 0xB3, 0x18, 0xF0, 0x71, 0xFE, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0xC9, 0xF8, 0x00, 0xA0, + 0x2B, 0x68, 0x3A, 0x68, 0x01, 0x33, 0x2B, 0x60, 0xBA, 0xB1, 0x00, 0x2B, + 0xE9, 0xD0, 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x20, 0x2B, 0x60, 0x00, 0x2B, + 0xE3, 0xD1, 0x00, 0x2A, 0xE1, 0xD0, 0x62, 0xB6, 0x33, 0x68, 0xDB, 0x78, + 0x00, 0x2B, 0xDF, 0xD0, 0xFF, 0xF7, 0x2C, 0xFD, 0x98, 0xF8, 0x00, 0x30, + 0x00, 0x2B, 0xDC, 0xD1, 0x16, 0xF0, 0xF8, 0xFA, 0xD9, 0xE7, 0xD4, 0xF8, + 0x7C, 0x32, 0x98, 0x47, 0x33, 0x68, 0xDB, 0x78, 0x00, 0x2B, 0x37, 0xD1, + 0xDB, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x01, 0x2B, 0x17, 0xD0, 0xBF, 0xF3, + 0x4F, 0x8F, 0x30, 0xBF, 0xBF, 0xF3, 0x6F, 0x8F, 0x00, 0xBF, 0x00, 0xBF, + 0x00, 0xBF, 0x00, 0xBF, 0xD4, 0xF8, 0x78, 0x32, 0x98, 0x47, 0x00, 0x28, + 0xF1, 0xD0, 0x33, 0x68, 0xDB, 0x78, 0x23, 0xBB, 0xD4, 0xF8, 0x84, 0x32, + 0x98, 0x47, 0x2B, 0x68, 0x00, 0x2B, 0xB0, 0xD0, 0xC5, 0xE7, 0x1D, 0x4B, + 0x1B, 0x78, 0x00, 0x2B, 0xE3, 0xD0, 0x1C, 0x4B, 0x1B, 0x68, 0x1B, 0x78, + 0x03, 0x2B, 0x17, 0xD0, 0x01, 0x2B, 0x05, 0xD0, 0x00, 0x2B, 0xDA, 0xD1, + 0x18, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xD6, 0xD0, 0x17, 0x4B, 0x5B, 0x78, + 0x00, 0x2B, 0xD2, 0xD0, 0x16, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x53, + 0x13, 0x60, 0xCC, 0xE7, 0xFF, 0xF7, 0xEA, 0xFC, 0xC4, 0xE7, 0xFF, 0xF7, + 0xEF, 0xFC, 0xD7, 0xE7, 0xFB, 0xF7, 0x32, 0xFE, 0x00, 0x28, 0xEF, 0xD1, + 0x0B, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0xDF, 0xE7, 0x10, 0x20, 0xFF, 0xF7, + 0xB1, 0xFC, 0x72, 0xE7, 0x34, 0x36, 0x17, 0x00, 0xDC, 0xD1, 0x15, 0x00, + 0x00, 0xD2, 0x15, 0x00, 0x1C, 0x8D, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x80, 0xB6, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x3D, 0x61, 0x17, 0x00, + 0x74, 0x36, 0x17, 0x00, 0x3C, 0x61, 0x17, 0x00, 0x70, 0x28, 0x17, 0x00, + 0x00, 0x60, 0x50, 0x40, 0x3C, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x78, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xEF, 0xF3, 0x10, 0x83, + 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x72, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x71, 0x4C, 0x72, 0x4A, 0x23, 0x68, 0x72, 0x49, 0x72, 0x4D, 0x01, 0x33, + 0x4F, 0xF4, 0x80, 0x60, 0x23, 0x60, 0x17, 0xF0, 0xF9, 0xFC, 0x4F, 0xF0, + 0x00, 0x40, 0x16, 0xF0, 0x4D, 0xFA, 0xD5, 0xF8, 0xEC, 0x30, 0x98, 0x47, + 0x6C, 0x4B, 0x6D, 0x4A, 0x19, 0x68, 0x21, 0xF0, 0x7F, 0x41, 0x19, 0x60, + 0x19, 0x68, 0x41, 0xF0, 0x10, 0x01, 0x19, 0x60, 0x11, 0x69, 0x64, 0x31, + 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x66, 0x4E, 0xD5, 0xF8, + 0x10, 0x24, 0x33, 0x68, 0x40, 0xF2, 0x11, 0x17, 0x3B, 0x43, 0x33, 0x60, + 0x90, 0x47, 0x60, 0x49, 0x62, 0x4A, 0x0B, 0x68, 0xDF, 0xF8, 0xAC, 0xC1, + 0x23, 0xF0, 0x10, 0x03, 0x0B, 0x60, 0x33, 0x68, 0x23, 0xF4, 0x88, 0x73, + 0x23, 0xF0, 0x01, 0x03, 0x33, 0x60, 0x0B, 0x23, 0x10, 0x68, 0x13, 0x60, + 0xDC, 0xF8, 0x00, 0x30, 0xDB, 0x06, 0x18, 0xD5, 0x59, 0x4B, 0x40, 0xF2, + 0x01, 0x2C, 0x19, 0x68, 0xC3, 0xF8, 0x00, 0xC0, 0x19, 0x60, 0x33, 0x68, + 0xA2, 0xF5, 0x7C, 0x72, 0x1F, 0x43, 0x37, 0x60, 0x11, 0x68, 0x02, 0x31, + 0x13, 0x68, 0x5B, 0x1A, 0x00, 0x2B, 0xFB, 0xDB, 0x4E, 0x4A, 0x13, 0x68, + 0x23, 0xF4, 0x88, 0x73, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x4C, 0x4B, + 0x18, 0x60, 0x0A, 0xF0, 0xBD, 0xFF, 0x00, 0x20, 0x16, 0xF0, 0x8E, 0xF8, + 0x00, 0x28, 0x6C, 0xD0, 0x49, 0x4E, 0x09, 0xF0, 0xA1, 0xFB, 0xB3, 0x79, + 0x00, 0x2B, 0x4F, 0xD0, 0x47, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, + 0x66, 0xD0, 0x33, 0x78, 0x00, 0x2B, 0x47, 0xD0, 0x44, 0x4B, 0x77, 0x79, + 0x1A, 0x68, 0x96, 0xF9, 0x07, 0x30, 0x96, 0xF9, 0x04, 0xE0, 0xDF, 0xF8, + 0x20, 0xC1, 0x41, 0x48, 0xDC, 0xF8, 0x00, 0x10, 0xD5, 0xF8, 0xE0, 0x81, + 0x37, 0x4D, 0x02, 0xF0, 0x0F, 0x02, 0x17, 0x44, 0x7F, 0xB2, 0x3B, 0x44, + 0x73, 0x45, 0xA8, 0xBF, 0x73, 0x46, 0x5F, 0xFA, 0x83, 0xFE, 0x21, 0xF0, + 0xFF, 0x01, 0x41, 0xEA, 0x0E, 0x01, 0xCC, 0xF8, 0x00, 0x10, 0x02, 0x68, + 0x22, 0xF0, 0xFF, 0x02, 0x42, 0xEA, 0x0E, 0x02, 0x02, 0x60, 0xDC, 0xF8, + 0x00, 0x10, 0xDA, 0x1E, 0x5F, 0xFA, 0x82, 0xFE, 0x21, 0xF4, 0x7F, 0x21, + 0x41, 0xEA, 0x0E, 0x31, 0xCC, 0xF8, 0x00, 0x10, 0x02, 0x68, 0xB6, 0xF8, + 0x08, 0xC0, 0x22, 0xF4, 0x7F, 0x22, 0x42, 0xEA, 0x0E, 0x32, 0x02, 0x60, + 0x2A, 0x69, 0x2A, 0x48, 0x5D, 0xB2, 0x4E, 0xF6, 0x60, 0x21, 0x01, 0xFB, + 0x0C, 0x21, 0xF5, 0x71, 0xC0, 0x47, 0x00, 0x23, 0x26, 0x48, 0xB3, 0x71, + 0x29, 0x46, 0x3A, 0x46, 0x17, 0xF0, 0xFC, 0xFB, 0x24, 0x49, 0x4F, 0xF4, + 0x80, 0x60, 0x17, 0xF0, 0x47, 0xFC, 0x08, 0xF0, 0x85, 0xFE, 0x18, 0xB1, + 0x4F, 0xF4, 0x80, 0x10, 0x16, 0xF0, 0x74, 0xF9, 0x23, 0x68, 0x33, 0xB1, + 0x0D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0xBD, 0xE8, 0xF0, 0x81, 0x4F, 0xF0, 0x80, 0x60, 0x16, 0xF0, + 0x89, 0xF9, 0x8D, 0xE7, 0x17, 0x4B, 0x1B, 0x68, 0x00, 0x22, 0x1A, 0x60, + 0xF8, 0xF7, 0x8C, 0xFA, 0x33, 0x78, 0x00, 0x2B, 0xDA, 0xD0, 0xB3, 0x79, + 0x00, 0x2B, 0x8F, 0xD1, 0xD6, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x30, 0x8E, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0x04, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x18, 0x00, 0x34, 0x40, 0x10, 0x05, 0x32, 0x40, 0x00, 0x10, 0x34, 0x40, + 0x80, 0x35, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0x1C, 0x01, 0x32, 0x40, + 0xD4, 0xB3, 0x33, 0x40, 0x8C, 0x35, 0x17, 0x00, 0x30, 0x8D, 0x15, 0x00, + 0x40, 0x8D, 0x15, 0x00, 0x00, 0x38, 0x18, 0x00, 0x0C, 0x05, 0x32, 0x40, + 0xAC, 0xB3, 0x33, 0x40, 0x22, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, + 0x01, 0xD0, 0x01, 0x20, 0x70, 0x47, 0x20, 0x4B, 0xD3, 0xF8, 0x04, 0x31, + 0x1A, 0x03, 0x10, 0xB5, 0x16, 0xD4, 0x00, 0x22, 0x93, 0x00, 0x03, 0xF1, + 0x60, 0x43, 0x03, 0xF5, 0x61, 0x43, 0x01, 0x2A, 0xD3, 0xF8, 0x00, 0x01, + 0x1B, 0x68, 0x00, 0xEA, 0x03, 0x00, 0x04, 0xD0, 0x30, 0xB9, 0x02, 0x2A, + 0x05, 0xD0, 0x01, 0x32, 0xEE, 0xE7, 0x30, 0xF4, 0x00, 0x23, 0xFA, 0xD0, + 0x01, 0x20, 0x10, 0xBD, 0x12, 0x4B, 0x1C, 0x68, 0x41, 0xF6, 0x33, 0x70, + 0x20, 0x40, 0xF7, 0xD1, 0x63, 0x00, 0x0F, 0xD4, 0x00, 0x2C, 0x07, 0xDA, + 0x0E, 0x4B, 0xD3, 0xF8, 0x68, 0x34, 0x98, 0x47, 0x0D, 0x4B, 0x4F, 0xF0, + 0x00, 0x42, 0x1A, 0x60, 0x08, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0xC3, 0xF8, + 0x84, 0x21, 0xD0, 0xE7, 0x07, 0x4B, 0xD3, 0xF8, 0x78, 0x34, 0x98, 0x47, + 0x06, 0x4B, 0x4F, 0xF0, 0x80, 0x42, 0x1A, 0x60, 0xE6, 0xE7, 0x00, 0xBF, + 0x78, 0x36, 0x17, 0x00, 0x00, 0xE1, 0x00, 0xE0, 0x1C, 0x41, 0x04, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x08, 0x41, 0x04, 0x40, 0x38, 0xB5, 0x3F, 0x4C, + 0x3F, 0x4D, 0x23, 0x68, 0x3F, 0x49, 0x03, 0xF0, 0x0F, 0x03, 0x02, 0x20, + 0x2B, 0x70, 0x17, 0xF0, 0x9F, 0xFB, 0x23, 0x68, 0x18, 0x07, 0x40, 0xD0, + 0x3B, 0x49, 0x3C, 0x4A, 0x0B, 0x68, 0x00, 0x20, 0x23, 0xF0, 0x00, 0x43, + 0x0B, 0x60, 0x20, 0x60, 0x13, 0x68, 0x59, 0x07, 0xFC, 0xD5, 0x38, 0x4B, + 0x35, 0x49, 0x38, 0x4A, 0x04, 0x20, 0x18, 0x60, 0x0B, 0x68, 0x43, 0xF0, + 0x00, 0x43, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x63, 0x13, 0x60, + 0x33, 0x4B, 0x1B, 0x78, 0x01, 0x22, 0x6A, 0x70, 0x9B, 0xB1, 0x32, 0x49, + 0x32, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x13, 0x0B, 0x60, 0x13, 0x68, + 0x00, 0x2B, 0xFC, 0xD0, 0x2F, 0x4B, 0x19, 0x68, 0x21, 0xF0, 0x01, 0x01, + 0x19, 0x60, 0x19, 0x68, 0x01, 0x20, 0x41, 0xF0, 0x02, 0x01, 0x19, 0x60, + 0x10, 0x60, 0x20, 0x4B, 0x2A, 0x4A, 0x2B, 0x49, 0x20, 0x20, 0x18, 0x60, + 0x13, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x0B, 0x68, 0x1B, 0x78, + 0x03, 0x2B, 0x26, 0xD0, 0x01, 0x2B, 0x06, 0xD0, 0x38, 0xBD, 0x1E, 0x4A, + 0x13, 0x68, 0x23, 0xF0, 0x00, 0x63, 0x13, 0x60, 0xD0, 0xE7, 0x22, 0x4A, + 0x13, 0x68, 0x5B, 0x03, 0xFC, 0xD5, 0x21, 0x4A, 0x11, 0x69, 0x1C, 0x31, + 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x1E, 0x49, 0x1F, 0x4A, + 0x0B, 0x68, 0x43, 0xF4, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x6D, 0x43, 0xF4, + 0x00, 0x43, 0x13, 0x65, 0xD3, 0x6D, 0x23, 0xF0, 0x03, 0x03, 0x43, 0xF0, + 0x00, 0x43, 0x43, 0xF0, 0x01, 0x03, 0xD3, 0x65, 0x38, 0xBD, 0x17, 0x4B, + 0x1A, 0x68, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x1B, 0x68, 0x5A, 0x07, + 0xD2, 0xD5, 0x14, 0x4B, 0x4F, 0xF4, 0x00, 0x72, 0x1A, 0x60, 0x38, 0xBD, + 0x38, 0x00, 0x32, 0x40, 0x70, 0x28, 0x17, 0x00, 0x50, 0x8D, 0x15, 0x00, + 0x74, 0x80, 0x32, 0x40, 0x6C, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, + 0x48, 0x80, 0x32, 0x40, 0x3D, 0x61, 0x17, 0x00, 0x58, 0x40, 0x34, 0x40, + 0x40, 0x42, 0x04, 0x40, 0x18, 0x00, 0x58, 0x40, 0x10, 0x00, 0x58, 0x40, + 0x78, 0x36, 0x17, 0x00, 0x20, 0x10, 0x04, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x14, 0x00, 0x24, 0x40, 0x00, 0x60, 0x50, 0x40, 0x84, 0x40, 0x04, 0x40, + 0x00, 0x41, 0x04, 0x40, 0x00, 0x28, 0x00, 0xF0, 0xE7, 0x80, 0x2D, 0xE9, + 0xF8, 0x4F, 0x90, 0xF8, 0x64, 0x30, 0x04, 0x46, 0x0B, 0xB9, 0xBD, 0xE8, + 0xF8, 0x8F, 0x83, 0x4B, 0x83, 0x4A, 0x84, 0x4F, 0xDF, 0xF8, 0x2C, 0x92, + 0xDF, 0xF8, 0x64, 0x82, 0x82, 0x4E, 0x83, 0x48, 0x0D, 0x46, 0x83, 0x49, + 0x4F, 0xF0, 0x02, 0x0B, 0xD1, 0xF8, 0x70, 0xC4, 0xC3, 0xF8, 0x80, 0xB1, + 0x92, 0x68, 0x80, 0x49, 0xC2, 0xF8, 0x44, 0xC0, 0x01, 0x22, 0xC3, 0xF8, + 0x00, 0xB0, 0x3A, 0x70, 0xD9, 0xF8, 0x10, 0x20, 0x0B, 0x68, 0x7A, 0x60, + 0x23, 0xF0, 0x02, 0x03, 0x0B, 0x60, 0xD8, 0xF8, 0x00, 0x10, 0xB6, 0xF8, + 0xB2, 0xC0, 0x8B, 0x8F, 0x01, 0x68, 0x63, 0x44, 0xB3, 0xEB, 0x41, 0x1F, + 0x4F, 0xEA, 0x41, 0x1A, 0xD1, 0xD2, 0x74, 0x49, 0x58, 0x46, 0x17, 0xF0, + 0xC9, 0xFA, 0xD9, 0xF8, 0x10, 0x20, 0xFB, 0x68, 0x9B, 0x1A, 0x00, 0x2B, + 0x80, 0xF2, 0xB6, 0x80, 0xB4, 0xF8, 0x68, 0x20, 0x6E, 0x4B, 0xA8, 0x68, + 0x41, 0xF2, 0x13, 0x31, 0x01, 0x2A, 0x5C, 0x5C, 0x40, 0xF2, 0x9F, 0x80, + 0x01, 0x3A, 0x00, 0xFB, 0x02, 0xAA, 0x41, 0xF2, 0x13, 0x31, 0x52, 0x46, + 0x5B, 0x5C, 0x68, 0x49, 0x02, 0x20, 0x17, 0xF0, 0xAD, 0xFA, 0xD8, 0xF8, + 0x00, 0x30, 0xB6, 0xF8, 0xB2, 0x00, 0x9A, 0x8F, 0x60, 0x49, 0x64, 0x4B, + 0xDF, 0xF8, 0xA8, 0xC1, 0x1C, 0x69, 0x0B, 0x68, 0x02, 0x44, 0xAA, 0xEB, + 0x02, 0x02, 0x22, 0xF0, 0x03, 0x05, 0x03, 0xF0, 0x03, 0x03, 0x2B, 0x43, + 0x5E, 0x4D, 0x0B, 0x60, 0x2B, 0x68, 0xBA, 0x60, 0x43, 0xF0, 0x01, 0x03, + 0x2B, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0xDC, 0xF8, 0x00, 0x10, 0xC3, 0xF3, + 0x09, 0x03, 0x21, 0xF4, 0x7F, 0x71, 0x43, 0xF0, 0x01, 0x03, 0x21, 0xF0, + 0x03, 0x01, 0x0B, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0x2B, 0x68, 0x22, 0x44, + 0x5B, 0x07, 0xFA, 0x60, 0x03, 0xD5, 0x52, 0x4B, 0x4F, 0xF4, 0x00, 0x72, + 0x1A, 0x60, 0x51, 0x49, 0x51, 0x4A, 0x0B, 0x68, 0x43, 0xF0, 0x08, 0x03, + 0x0B, 0x60, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x4E, 0x4C, 0x45, 0x49, + 0x23, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x23, 0x60, 0x01, 0x23, 0x13, 0x60, + 0x0B, 0x68, 0x45, 0x4A, 0x43, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x11, 0x69, + 0x01, 0xF5, 0x96, 0x71, 0x13, 0x69, 0x5B, 0x1A, 0x00, 0x2B, 0xFB, 0xDB, + 0x45, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x7F, 0xF4, 0x5D, 0xAF, + 0x43, 0x49, 0x44, 0x4C, 0x4B, 0x6A, 0x24, 0x68, 0x23, 0xF0, 0xFF, 0x03, + 0x43, 0xF0, 0xDF, 0x03, 0x4B, 0x62, 0x4B, 0x6A, 0x23, 0xF4, 0x7F, 0x43, + 0x43, 0xF4, 0x5F, 0x43, 0x4B, 0x62, 0xB4, 0xB1, 0x3D, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x3F, 0xDB, 0xE3, 0x68, 0x62, 0x68, + 0x3A, 0x49, 0x02, 0x20, 0x17, 0xF0, 0x3C, 0xFA, 0xB6, 0xF8, 0xB2, 0x10, + 0xE2, 0x68, 0x2D, 0x4B, 0x52, 0x1A, 0x4F, 0xF4, 0x80, 0x20, 0x04, 0x21, + 0x98, 0x60, 0x1A, 0x63, 0x99, 0x60, 0x34, 0x49, 0x2F, 0x4A, 0x0B, 0x68, + 0x43, 0xF4, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x6D, 0x43, 0xF4, 0x00, 0x43, + 0x13, 0x65, 0xD3, 0x6D, 0x23, 0xF0, 0x03, 0x03, 0x43, 0xF0, 0x00, 0x43, + 0x43, 0xF0, 0x01, 0x03, 0xD3, 0x65, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x53, + 0x13, 0x60, 0x1E, 0xE7, 0x70, 0x47, 0x41, 0xF2, 0x14, 0x32, 0x9C, 0x5C, + 0x01, 0x2C, 0x7F, 0xF6, 0x5E, 0xAF, 0x5C, 0x5C, 0xDC, 0xB1, 0x5A, 0x5C, + 0x01, 0x3A, 0x00, 0xFB, 0x02, 0xAA, 0x56, 0xE7, 0x14, 0x4A, 0x22, 0x49, + 0x41, 0xF2, 0x13, 0x33, 0x58, 0x46, 0xD3, 0x5C, 0x52, 0x46, 0x17, 0xF0, + 0x03, 0xFA, 0x54, 0xE7, 0x12, 0x69, 0xE3, 0x68, 0x9A, 0x1A, 0x10, 0x1A, + 0x00, 0x28, 0xBA, 0xDA, 0x1B, 0x49, 0x1C, 0x48, 0x40, 0xF2, 0x4F, 0x22, + 0x17, 0xF0, 0x20, 0xFC, 0xB2, 0xE7, 0x9A, 0x5C, 0x3A, 0xE7, 0x00, 0xBF, + 0x00, 0xE1, 0x00, 0xE0, 0x00, 0xED, 0x00, 0xE0, 0x3C, 0x36, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x40, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x84, 0x00, 0x32, 0x40, 0x54, 0x8D, 0x15, 0x00, 0x00, 0x40, 0x1E, 0x00, + 0x70, 0x8D, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x84, 0x40, 0x04, 0x40, + 0x00, 0x41, 0x04, 0x40, 0x10, 0x00, 0x58, 0x40, 0x40, 0x42, 0x04, 0x40, + 0x18, 0x00, 0x58, 0x40, 0x78, 0x36, 0x17, 0x00, 0x00, 0x60, 0x50, 0x40, + 0xD0, 0x9C, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0xC8, 0x8D, 0x15, 0x00, + 0x14, 0x00, 0x24, 0x40, 0x5C, 0x8D, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x80, 0x8D, 0x15, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x70, 0xB5, 0x45, 0x4C, + 0x21, 0x68, 0x0B, 0x78, 0x73, 0xB9, 0x44, 0x4B, 0x44, 0x4D, 0x9B, 0x68, + 0x01, 0x22, 0x2A, 0x70, 0x00, 0x2B, 0x3E, 0xD1, 0x0A, 0x78, 0x42, 0x49, + 0x01, 0x23, 0x02, 0x20, 0x17, 0xF0, 0xAC, 0xF9, 0x01, 0x23, 0x2B, 0x70, + 0x3F, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x40, 0xD0, 0x02, 0x2B, + 0x28, 0xD0, 0x11, 0xF0, 0x8F, 0xFD, 0x28, 0xB3, 0x3B, 0x4B, 0xD3, 0xF8, + 0xF8, 0x31, 0x0B, 0xBB, 0x3A, 0x4B, 0x3B, 0x4D, 0x1B, 0x68, 0x95, 0xF8, + 0x24, 0x20, 0xC3, 0xF3, 0x40, 0x63, 0x13, 0x43, 0x18, 0xD0, 0x6B, 0x7F, + 0xB3, 0xB9, 0x37, 0x4E, 0xD6, 0xF8, 0xF4, 0x30, 0x98, 0x47, 0x88, 0xB1, + 0xF8, 0xF7, 0x7E, 0xFB, 0x34, 0x4A, 0xC0, 0xB2, 0x10, 0x70, 0x00, 0x28, + 0x35, 0xD0, 0x23, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD8, 0xD6, 0xF8, + 0xB4, 0x34, 0x98, 0x47, 0x23, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x22, 0xD0, + 0x70, 0xBD, 0x93, 0xF8, 0x64, 0x20, 0x42, 0xB9, 0x1B, 0x68, 0x00, 0x2B, + 0xC0, 0xD0, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0xF5, 0xD0, 0x02, 0x2A, + 0xF6, 0xD1, 0x0A, 0x78, 0x1F, 0x49, 0x00, 0x23, 0x02, 0x20, 0x17, 0xF0, + 0x67, 0xF9, 0x00, 0x23, 0x2B, 0x70, 0x70, 0xBD, 0x23, 0x68, 0x1B, 0x78, + 0x03, 0x2B, 0x15, 0xD0, 0xFB, 0xF7, 0x5A, 0xFA, 0x00, 0x28, 0xE1, 0xD0, + 0x1E, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xB4, 0xD0, 0x70, 0xBD, 0x28, 0x6A, + 0xD6, 0xF8, 0xB8, 0x34, 0xD0, 0xF8, 0xE4, 0x10, 0xBD, 0xE8, 0x70, 0x40, + 0x18, 0x47, 0x19, 0x49, 0x02, 0x20, 0x17, 0xF0, 0x4B, 0xF9, 0xC4, 0xE7, + 0xF8, 0xF7, 0x3C, 0xFB, 0x13, 0x4B, 0x18, 0x70, 0xFB, 0xF7, 0x40, 0xFA, + 0x18, 0xB1, 0x10, 0x4B, 0xD3, 0xF8, 0xB4, 0x34, 0x98, 0x47, 0x12, 0x4A, + 0x13, 0x68, 0x5B, 0x03, 0xFC, 0xD5, 0x11, 0x4A, 0x11, 0x69, 0x1C, 0x31, + 0x13, 0x69, 0xCB, 0x1A, 0x00, 0x2B, 0xFB, 0xDA, 0x70, 0xBD, 0x00, 0xBF, + 0x74, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x3C, 0x61, 0x17, 0x00, + 0xD8, 0x8D, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x4C, 0x00, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x3D, 0x61, 0x17, 0x00, 0x9C, 0x4E, 0x17, 0x00, 0xD4, 0x8D, 0x15, 0x00, + 0x20, 0x10, 0x04, 0x40, 0x00, 0x10, 0x50, 0x40, 0x38, 0xB5, 0x43, 0x4D, + 0x6B, 0x78, 0x03, 0xB9, 0x38, 0xBD, 0x42, 0x48, 0x42, 0x49, 0x03, 0x68, + 0x42, 0x4A, 0x23, 0xF0, 0x10, 0x03, 0x03, 0x60, 0x4B, 0x6F, 0x43, 0xF0, + 0x10, 0x03, 0x4B, 0x67, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x73, 0x13, 0x60, + 0x00, 0xBF, 0x00, 0xBF, 0x00, 0xBF, 0x3C, 0x4C, 0x3C, 0x49, 0x23, 0x68, + 0x43, 0xF0, 0x00, 0x43, 0x23, 0x60, 0x02, 0x20, 0x17, 0xF0, 0xF6, 0xF8, + 0x00, 0x23, 0x22, 0x46, 0x6B, 0x70, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD5, + 0x36, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x3C, 0xDB, + 0x31, 0x4B, 0x34, 0x4A, 0x19, 0x68, 0x21, 0xF0, 0x80, 0x41, 0x19, 0x60, + 0x19, 0x68, 0x21, 0xF0, 0x00, 0x41, 0x19, 0x60, 0x13, 0x68, 0x00, 0x2B, + 0xFC, 0xD0, 0x2F, 0x4B, 0x2F, 0x48, 0x19, 0x68, 0x2F, 0x4C, 0x41, 0xF0, + 0x01, 0x01, 0x19, 0x60, 0x19, 0x68, 0x01, 0x25, 0x21, 0xF0, 0x02, 0x01, + 0x19, 0x60, 0x15, 0x60, 0x03, 0x68, 0x43, 0xF4, 0x00, 0x13, 0x03, 0x60, + 0x23, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x2E, 0xD0, 0x01, 0x2B, 0x26, 0xD0, + 0x26, 0x4B, 0x1B, 0x78, 0x53, 0xB1, 0x1D, 0x4A, 0x25, 0x49, 0x13, 0x68, + 0x43, 0xF0, 0x00, 0x73, 0x13, 0x60, 0x02, 0x20, 0xBD, 0xE8, 0x38, 0x40, + 0x17, 0xF0, 0xB8, 0xB8, 0x16, 0x4A, 0x20, 0x49, 0x53, 0x6F, 0x23, 0xF0, + 0x10, 0x03, 0x53, 0x67, 0x02, 0x20, 0xBD, 0xE8, 0x38, 0x40, 0x17, 0xF0, + 0xAD, 0xB8, 0x1C, 0x4B, 0x2A, 0x78, 0x1B, 0x68, 0x03, 0xF0, 0x0F, 0x03, + 0x9A, 0x42, 0xBB, 0xD0, 0x19, 0x49, 0x1A, 0x48, 0x4F, 0xF4, 0x3A, 0x72, + 0x17, 0xF0, 0xCA, 0xFA, 0xB4, 0xE7, 0x18, 0x4A, 0x13, 0x68, 0x23, 0xF4, + 0x00, 0x43, 0x13, 0x60, 0xD2, 0xE7, 0x16, 0x4A, 0x13, 0x68, 0x23, 0xF0, + 0x01, 0x03, 0x13, 0x60, 0x0D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xCC, 0xD1, + 0xD6, 0xE7, 0x00, 0xBF, 0x70, 0x28, 0x17, 0x00, 0x10, 0x00, 0x58, 0x40, + 0x00, 0x00, 0x50, 0x40, 0xE0, 0x50, 0x34, 0x40, 0x48, 0x80, 0x32, 0x40, + 0xEC, 0x8D, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x40, 0x42, 0x04, 0x40, + 0x18, 0x00, 0x58, 0x40, 0x58, 0x40, 0x34, 0x40, 0x78, 0x36, 0x17, 0x00, + 0x4C, 0x36, 0x17, 0x00, 0x28, 0x8E, 0x15, 0x00, 0x38, 0x00, 0x32, 0x40, + 0x70, 0x79, 0x15, 0x00, 0xF0, 0x8D, 0x15, 0x00, 0x14, 0x00, 0x24, 0x40, + 0x84, 0x40, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x47, 0x1F, 0x48, 0x20, 0x4D, + 0x15, 0xF0, 0x36, 0xFE, 0x1F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x28, 0xDB, 0x1D, 0x4E, 0x28, 0x68, 0xDF, 0xF8, 0x7C, 0x90, + 0xDF, 0xF8, 0x60, 0x80, 0xD9, 0xF8, 0x00, 0x30, 0x1A, 0x89, 0x54, 0x24, + 0x02, 0xFB, 0x04, 0x42, 0x00, 0x21, 0xF2, 0xF7, 0x91, 0xFD, 0x4F, 0xF0, + 0x00, 0x0A, 0x58, 0x27, 0x29, 0x68, 0x33, 0x68, 0x1F, 0xFA, 0x8A, 0xF2, + 0x04, 0xFB, 0x02, 0x11, 0x07, 0xFB, 0x02, 0x33, 0xCB, 0x64, 0x40, 0x46, + 0x15, 0xF0, 0x16, 0xFE, 0xD9, 0xF8, 0x00, 0x30, 0x0A, 0xF1, 0x01, 0x0A, + 0x1A, 0x89, 0x1F, 0xFA, 0x8A, 0xF3, 0x9A, 0x42, 0xEA, 0xD2, 0xBD, 0xE8, + 0xF0, 0x87, 0x28, 0x68, 0x08, 0x4E, 0x10, 0xB1, 0x33, 0x68, 0x00, 0x2B, + 0xD2, 0xD1, 0x07, 0x48, 0x07, 0x49, 0x5B, 0x22, 0x17, 0xF0, 0x54, 0xFA, + 0x28, 0x68, 0xCB, 0xE7, 0x20, 0x58, 0x17, 0x00, 0x40, 0x61, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x14, 0x63, 0x18, 0x00, 0x40, 0x8E, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x78, 0x36, 0x17, 0x00, 0x0D, 0x49, 0x00, 0xEB, + 0xC0, 0x03, 0x10, 0xB4, 0x9C, 0x00, 0x00, 0x22, 0x01, 0xEB, 0x83, 0x03, + 0x16, 0x30, 0x0A, 0x51, 0x01, 0xEB, 0xC0, 0x00, 0x4F, 0xF4, 0x55, 0x64, + 0x4F, 0xF0, 0xFF, 0x31, 0xC3, 0xE9, 0x02, 0x41, 0xC0, 0xE9, 0x01, 0x22, + 0x5D, 0xF8, 0x04, 0x4B, 0x5A, 0x60, 0x83, 0xF8, 0x20, 0x20, 0x5A, 0x61, + 0x19, 0x61, 0x70, 0x47, 0x44, 0x61, 0x17, 0x00, 0x10, 0xB5, 0x04, 0x46, + 0x80, 0x6C, 0x18, 0xB1, 0xF9, 0xF7, 0xCE, 0xFE, 0x00, 0x23, 0xA3, 0x64, + 0x10, 0xBD, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x41, 0x38, 0x4C, 0xDF, 0xF8, + 0xF0, 0x80, 0x38, 0x4F, 0x38, 0x4D, 0x04, 0xF5, 0x20, 0x76, 0xC4, 0xF8, + 0x00, 0x80, 0xF3, 0xF7, 0x0F, 0xFE, 0x80, 0x03, 0x60, 0x60, 0xF3, 0xF7, + 0x0B, 0xFE, 0x01, 0x23, 0x01, 0x30, 0x03, 0xFA, 0x00, 0xF0, 0x01, 0x38, + 0x00, 0x23, 0xC4, 0xE9, 0x02, 0x03, 0xC4, 0xE9, 0x05, 0x33, 0xC4, 0xE9, + 0x07, 0x33, 0x27, 0x61, 0x2B, 0x68, 0x2A, 0x68, 0x1B, 0x02, 0xD2, 0xB2, + 0x9B, 0xB2, 0x13, 0x43, 0x63, 0x62, 0x2B, 0x68, 0x2A, 0x68, 0x1B, 0x02, + 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0xA3, 0x62, 0x2B, 0x68, 0x2A, 0x68, + 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0xE3, 0x62, 0x2B, 0x68, + 0x2A, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, 0x13, 0x43, 0x4F, 0xF4, + 0x08, 0x51, 0x4F, 0xF4, 0x7C, 0x12, 0xA2, 0x63, 0xC4, 0xE9, 0x0C, 0x31, + 0x40, 0x34, 0xB4, 0x42, 0xC5, 0xD1, 0x1B, 0x4C, 0x1B, 0x4F, 0x18, 0x4E, + 0xDF, 0xF8, 0x60, 0x80, 0x04, 0xF5, 0x80, 0x75, 0x27, 0x60, 0xF3, 0xF7, + 0xCF, 0xFD, 0x80, 0x03, 0x60, 0x60, 0xF3, 0xF7, 0xCB, 0xFD, 0x01, 0x23, + 0x01, 0x30, 0x03, 0xFA, 0x00, 0xF0, 0x01, 0x38, 0x00, 0x23, 0xC4, 0xE9, + 0x02, 0x03, 0xC4, 0xE9, 0x05, 0x33, 0xC4, 0xE9, 0x07, 0x33, 0x26, 0x61, + 0xD8, 0xF8, 0x00, 0x20, 0xD8, 0xF8, 0x00, 0x10, 0xA3, 0x62, 0x12, 0x02, + 0xC9, 0xB2, 0x92, 0xB2, 0x0A, 0x43, 0x4F, 0xF4, 0x7C, 0x11, 0x62, 0x62, + 0xC4, 0xE9, 0x0B, 0x33, 0xC4, 0xE9, 0x0D, 0x31, 0x40, 0x34, 0xAC, 0x42, + 0xD8, 0xD1, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x04, 0x39, 0x18, 0x00, + 0x04, 0x07, 0xFF, 0xFF, 0xA0, 0x00, 0x32, 0x40, 0x04, 0x38, 0x18, 0x00, + 0x1E, 0xAB, 0xDC, 0xBA, 0xF0, 0xB5, 0x16, 0x4C, 0x24, 0x68, 0x24, 0x78, + 0x1D, 0x46, 0xE3, 0x07, 0x87, 0xB0, 0x16, 0x46, 0x06, 0xD5, 0x50, 0x19, + 0x00, 0x21, 0x08, 0x22, 0xF2, 0xF7, 0xA8, 0xFC, 0x07, 0xB0, 0xF0, 0xBD, + 0xC3, 0x7E, 0x00, 0x93, 0x02, 0xAC, 0x07, 0x46, 0x07, 0xF1, 0x12, 0x03, + 0x20, 0x46, 0x07, 0xF1, 0x0C, 0x02, 0x1A, 0xF0, 0xE7, 0xFF, 0x2A, 0x46, + 0x31, 0x46, 0x20, 0x46, 0x1B, 0xF0, 0x08, 0xF8, 0x20, 0x46, 0x1B, 0xF0, + 0xA3, 0xF8, 0x35, 0x44, 0x21, 0x46, 0x04, 0xAA, 0x60, 0x1A, 0x14, 0xF8, + 0x01, 0x3B, 0x43, 0x55, 0x94, 0x42, 0xF9, 0xD1, 0x07, 0xB0, 0xF0, 0xBD, + 0x34, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0x6C, 0x90, 0xF8, + 0x42, 0xA0, 0x90, 0xF8, 0x33, 0x40, 0x90, 0xF8, 0x35, 0x20, 0x87, 0x88, + 0x90, 0xF8, 0x32, 0x80, 0xD3, 0xF8, 0x24, 0xC0, 0xC6, 0x6C, 0x93, 0xF8, + 0x20, 0xE0, 0xA3, 0xEB, 0x0A, 0x05, 0xA8, 0x35, 0x22, 0x44, 0x01, 0x3F, + 0xAA, 0xEB, 0x04, 0x04, 0x3A, 0x44, 0x08, 0xEB, 0x05, 0x09, 0x2C, 0xF0, + 0x02, 0x07, 0x04, 0xEB, 0x09, 0x0B, 0x5F, 0x62, 0x54, 0x19, 0x03, 0xF1, + 0x0C, 0x0A, 0xB8, 0xF1, 0x00, 0x0F, 0x03, 0xD0, 0x09, 0xF1, 0xFF, 0x32, + 0xC6, 0xE9, 0x09, 0x52, 0xF2, 0x6C, 0xC3, 0xF8, 0x14, 0xB0, 0x00, 0x25, + 0x42, 0xF4, 0x80, 0x72, 0x1C, 0xF0, 0x01, 0x0F, 0x9C, 0x61, 0x1D, 0x61, + 0xC6, 0xF8, 0x20, 0xA0, 0xDD, 0x61, 0xF2, 0x64, 0x16, 0xD1, 0x40, 0x6A, + 0x00, 0xF4, 0x60, 0x14, 0xB4, 0xF5, 0x60, 0x1F, 0x01, 0xD0, 0x80, 0x02, + 0x0E, 0xD4, 0x09, 0x48, 0x71, 0x44, 0x01, 0xEB, 0xC1, 0x01, 0x00, 0xEB, + 0x81, 0x01, 0x47, 0xF0, 0x01, 0x07, 0x91, 0xF8, 0x20, 0x00, 0x5F, 0x62, + 0x01, 0x30, 0x81, 0xF8, 0x20, 0x00, 0xF2, 0x64, 0x00, 0x22, 0x1A, 0x61, + 0xBD, 0xE8, 0xF0, 0x8F, 0x44, 0x61, 0x17, 0x00, 0x0A, 0x88, 0x03, 0x7F, + 0x0A, 0x49, 0x12, 0xF4, 0x00, 0x5F, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x03, 0x12, 0x4F, 0xF4, 0xA4, 0x60, 0x92, 0xF8, 0xDA, 0x20, 0x00, 0xFB, + 0x03, 0x13, 0x14, 0xBF, 0x42, 0xF0, 0x02, 0x02, 0x02, 0xF0, 0xFD, 0x02, + 0x83, 0xF8, 0xDA, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, + 0x43, 0x6A, 0x2D, 0xE9, 0xF0, 0x47, 0x91, 0x46, 0x9A, 0x02, 0xD0, 0xF8, + 0x48, 0x80, 0x06, 0x46, 0x0F, 0x46, 0x29, 0xD5, 0x03, 0xF4, 0x60, 0x13, + 0xB3, 0xF5, 0x20, 0x1F, 0x24, 0xD0, 0x50, 0x4C, 0x88, 0xF8, 0x20, 0x90, + 0xD4, 0xF8, 0x80, 0x33, 0x39, 0x46, 0x30, 0x46, 0x98, 0x47, 0x31, 0x8B, + 0x48, 0xF6, 0x88, 0x63, 0x99, 0x42, 0x68, 0xD0, 0x4A, 0x4B, 0xB1, 0x6C, + 0x93, 0xF8, 0x05, 0x31, 0x00, 0x2B, 0x59, 0xD1, 0xB3, 0x68, 0x00, 0x2B, + 0x49, 0xDB, 0x4B, 0x6A, 0x46, 0x4A, 0xCA, 0x60, 0x23, 0xF0, 0x10, 0x03, + 0x4B, 0x62, 0x30, 0x46, 0xD4, 0xF8, 0x04, 0x34, 0x8E, 0x60, 0x3A, 0x46, + 0x98, 0x47, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xD6, 0xF8, 0x2C, 0xA0, + 0x08, 0xF1, 0x24, 0x04, 0x0A, 0xF1, 0x40, 0x00, 0x53, 0x46, 0x53, 0xF8, + 0x04, 0x5B, 0x44, 0xF8, 0x04, 0x5F, 0x83, 0x42, 0xF9, 0xD1, 0xF3, 0x8B, + 0x9D, 0x04, 0xCA, 0xD5, 0x38, 0x4B, 0x39, 0x49, 0x1A, 0x68, 0x73, 0x7F, + 0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, + 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x41, 0x38, 0xDB, 0x41, 0x46, 0xDA, 0xF8, + 0x14, 0x20, 0xD4, 0xF8, 0x9C, 0x30, 0xC8, 0xF8, 0x40, 0x20, 0xDA, 0xF8, + 0x24, 0x20, 0xC8, 0xF8, 0x50, 0x20, 0xC3, 0xF3, 0xC2, 0x22, 0x05, 0x2A, + 0xC8, 0xF8, 0x3C, 0x30, 0x31, 0xD0, 0xDA, 0xF8, 0x3C, 0x30, 0x5C, 0x07, + 0x5E, 0xBF, 0xD8, 0xF8, 0x2C, 0x30, 0x23, 0xF4, 0xC0, 0x73, 0xC8, 0xF8, + 0x2C, 0x30, 0x88, 0x46, 0x9F, 0xE7, 0x32, 0x8B, 0x33, 0x65, 0x48, 0xF6, + 0x88, 0x63, 0x9A, 0x42, 0xAF, 0xD1, 0x8B, 0x6B, 0x23, 0xF4, 0x7F, 0x43, + 0x43, 0xF4, 0x60, 0x63, 0x8B, 0x63, 0xA8, 0xE7, 0xF2, 0x8B, 0x10, 0x07, + 0xA5, 0xD4, 0xB2, 0x68, 0x52, 0x00, 0x58, 0xBF, 0x81, 0xF8, 0x39, 0x30, + 0x9F, 0xE7, 0xF3, 0x6C, 0x19, 0x48, 0xDA, 0x6A, 0x16, 0xF0, 0xFA, 0xFD, + 0x90, 0xE7, 0x00, 0x2C, 0xC4, 0xD1, 0x17, 0x49, 0x17, 0x48, 0x40, 0xF2, + 0x4B, 0x12, 0x17, 0xF0, 0x6B, 0xF8, 0xB1, 0x6C, 0xBD, 0xE7, 0x03, 0xF4, + 0xC0, 0x63, 0xD8, 0xF8, 0x4C, 0x20, 0x94, 0xF8, 0xA1, 0x00, 0xB3, 0xF5, + 0x80, 0x6F, 0x14, 0xBF, 0x4F, 0xF4, 0x80, 0x34, 0x4F, 0xF4, 0x00, 0x34, + 0x22, 0xF4, 0x40, 0x33, 0x23, 0x43, 0x20, 0xB1, 0x43, 0xF4, 0x80, 0x23, + 0xC8, 0xF8, 0x4C, 0x30, 0xB7, 0xE7, 0x23, 0xF4, 0x80, 0x23, 0xC8, 0xF8, + 0x4C, 0x30, 0xB2, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0xDE, 0xFA, 0xFE, 0xCA, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x78, 0x8E, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x43, 0x43, 0x6A, 0x85, 0x6C, 0x13, 0xF4, 0x00, 0x18, + 0x83, 0xB0, 0x04, 0x46, 0x05, 0xF1, 0x28, 0x07, 0x08, 0xD0, 0x03, 0xF4, + 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x00, 0xF0, 0x93, 0x80, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x83, 0xC3, 0x8B, 0xC6, 0x6C, 0x1A, 0x07, 0x38, 0xD5, + 0xDF, 0xF8, 0x58, 0x92, 0xD9, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, + 0x00, 0x2A, 0xC0, 0xF2, 0xCF, 0x80, 0x71, 0x6A, 0x09, 0xB9, 0x32, 0x6A, + 0x91, 0x68, 0x18, 0x06, 0x09, 0xD5, 0x94, 0xF8, 0x33, 0x30, 0x00, 0x2B, + 0x40, 0xF0, 0xDD, 0x80, 0x94, 0xF8, 0x35, 0x30, 0x00, 0x2B, 0x40, 0xF0, + 0xDF, 0x80, 0xF3, 0x6C, 0x23, 0xF4, 0xF0, 0x03, 0xF3, 0x64, 0x0B, 0x79, + 0xB7, 0x63, 0x13, 0xF0, 0x01, 0x0F, 0x08, 0xBF, 0x4F, 0xF4, 0x00, 0x78, + 0x00, 0x23, 0xC6, 0xF8, 0x48, 0x80, 0x33, 0x65, 0xEB, 0x6A, 0x2A, 0x6E, + 0x72, 0x63, 0x43, 0xF0, 0x02, 0x03, 0xEB, 0x62, 0x20, 0x46, 0x06, 0xF0, + 0xBB, 0xF8, 0xA2, 0x6C, 0x53, 0x6A, 0x43, 0xF0, 0x10, 0x03, 0x53, 0x62, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x74, 0x4B, 0xD3, 0xF8, 0x28, 0x34, + 0x98, 0x47, 0xEB, 0x6D, 0xB3, 0x64, 0x22, 0x7F, 0x71, 0x49, 0x4F, 0xF4, + 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x12, 0x92, 0xF8, 0x62, 0x20, 0x5A, 0xBB, + 0x6E, 0x49, 0x62, 0x7F, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x02, 0x12, + 0x52, 0x68, 0x91, 0x06, 0x22, 0xD5, 0xE2, 0x8B, 0x12, 0xF4, 0x00, 0x5F, + 0xE2, 0x6A, 0xD2, 0x6B, 0x14, 0xBF, 0xC2, 0xF3, 0x00, 0x12, 0xC2, 0xF3, + 0xC0, 0x02, 0xBA, 0xB9, 0x70, 0x6A, 0x02, 0x88, 0x91, 0xB2, 0x12, 0x04, + 0x12, 0xD5, 0xC1, 0xF3, 0x0E, 0x01, 0x01, 0x80, 0x94, 0xF8, 0x33, 0x10, + 0x94, 0xF8, 0x32, 0x20, 0x04, 0x39, 0x04, 0x3A, 0x84, 0xF8, 0x33, 0x10, + 0x84, 0xF8, 0x32, 0x20, 0xD6, 0xE9, 0x0A, 0x21, 0x04, 0x39, 0x04, 0x3A, + 0xC6, 0xE9, 0x0A, 0x21, 0xDF, 0xF8, 0x70, 0x81, 0xB7, 0x63, 0xD8, 0xF8, + 0x00, 0x20, 0xE7, 0x6C, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x4F, 0xDB, + 0x7A, 0x6A, 0x0A, 0xB9, 0x3A, 0x6A, 0x92, 0x68, 0x23, 0xF4, 0xC0, 0x63, + 0xB3, 0x64, 0x12, 0x79, 0xD2, 0x07, 0x5C, 0xBF, 0x43, 0xF4, 0x00, 0x73, + 0xB3, 0x64, 0x9B, 0xE7, 0x83, 0x6A, 0x46, 0x6C, 0xC3, 0xF3, 0xC2, 0x22, + 0x05, 0x2A, 0x37, 0x63, 0x15, 0xD1, 0x03, 0xF4, 0xC0, 0x63, 0xEA, 0x6C, + 0x90, 0xF8, 0x36, 0x10, 0xB3, 0xF5, 0x80, 0x6F, 0x14, 0xBF, 0x4F, 0xF4, + 0x80, 0x33, 0x4F, 0xF4, 0x00, 0x33, 0x22, 0xF4, 0x40, 0x32, 0x1A, 0x43, + 0x89, 0x06, 0x4C, 0xBF, 0x42, 0xF4, 0x80, 0x22, 0x22, 0xF4, 0x80, 0x22, + 0xEA, 0x64, 0x04, 0xF1, 0x28, 0x00, 0x04, 0xF0, 0xDD, 0xF9, 0xD4, 0xF8, + 0x48, 0xC0, 0xA2, 0x6A, 0xB0, 0x88, 0xDC, 0xF8, 0x24, 0x30, 0xE9, 0x6D, + 0xEA, 0x63, 0xEA, 0x6A, 0x40, 0xF0, 0x08, 0x04, 0xB4, 0x80, 0x41, 0xF4, + 0xC0, 0x60, 0x2C, 0x6E, 0xF4, 0x62, 0x42, 0xF0, 0x02, 0x02, 0x30, 0x64, + 0x43, 0xF0, 0x10, 0x03, 0xEA, 0x62, 0x39, 0x46, 0x06, 0xF5, 0x82, 0x70, + 0x34, 0x22, 0xCC, 0xF8, 0x24, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, + 0x29, 0xF0, 0xFE, 0xB9, 0xA2, 0x6C, 0x00, 0x2A, 0x3C, 0xD0, 0x7A, 0x6A, + 0x00, 0x2A, 0xAD, 0xD1, 0x3A, 0x6A, 0x92, 0xB1, 0xB3, 0x6C, 0xA8, 0xE7, + 0x2D, 0xB3, 0x71, 0x6A, 0x00, 0x29, 0x7F, 0xF4, 0x30, 0xAF, 0x32, 0x6A, + 0x0A, 0xB1, 0xE3, 0x8B, 0x2A, 0xE7, 0x23, 0x49, 0x23, 0x48, 0x40, 0xF2, + 0xB9, 0x12, 0x16, 0xF0, 0x3F, 0xFF, 0x32, 0x6A, 0xF5, 0xE7, 0x1F, 0x49, + 0x1F, 0x48, 0x40, 0xF2, 0xB9, 0x12, 0x16, 0xF0, 0x37, 0xFF, 0x3A, 0x6A, + 0xE4, 0xE7, 0x20, 0x22, 0x20, 0x46, 0x01, 0x91, 0x22, 0xF0, 0xD8, 0xF8, + 0x01, 0x99, 0x20, 0xE7, 0xA2, 0x88, 0x01, 0x91, 0x20, 0x46, 0x23, 0xF0, + 0x87, 0xFA, 0x01, 0x99, 0x19, 0xE7, 0x14, 0x49, 0x15, 0x48, 0x4F, 0xF4, + 0xD9, 0x72, 0x16, 0xF0, 0x21, 0xFF, 0x71, 0x6A, 0xA9, 0xB9, 0xD9, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xCF, 0xDB, 0xD8, 0xE7, + 0x4F, 0xF4, 0xD9, 0x72, 0x0B, 0x49, 0x0D, 0x48, 0x16, 0xF0, 0x12, 0xFF, + 0x7A, 0x6A, 0x42, 0xB9, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xB7, 0xDB, 0xD1, 0xE7, 0xE3, 0x8B, 0xED, 0xE6, 0xB3, 0x6C, + 0x60, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xAC, 0x8E, 0x15, 0x00, + 0x8C, 0x8E, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x05, 0x28, 0x1C, 0xD8, + 0xDF, 0xE8, 0x00, 0xF0, 0x07, 0x0B, 0x0F, 0x13, 0x17, 0x03, 0x12, 0x4B, + 0x20, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x10, 0x4B, 0x02, 0x22, 0x1A, 0x60, + 0x70, 0x47, 0x0E, 0x4B, 0x04, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x0C, 0x4B, + 0x08, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x0A, 0x4B, 0x10, 0x22, 0x1A, 0x60, + 0x70, 0x47, 0x08, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x70, 0x47, 0x07, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, + 0x04, 0x49, 0x05, 0x48, 0x4F, 0xF4, 0x77, 0x72, 0x16, 0xF0, 0xCA, 0xBE, + 0x80, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x05, 0x28, 0x85, 0xB0, + 0x06, 0x46, 0x00, 0xF0, 0xE5, 0x81, 0xAE, 0x4C, 0x00, 0xEB, 0x40, 0x03, + 0xC3, 0xEB, 0xC3, 0x03, 0x04, 0xEB, 0x83, 0x04, 0xAB, 0x4B, 0xAC, 0x4F, + 0xDF, 0xF8, 0xD4, 0x92, 0x01, 0x22, 0x19, 0x46, 0xB2, 0x40, 0x71, 0x18, + 0x00, 0x92, 0xA3, 0x7E, 0x02, 0x91, 0xD2, 0x43, 0x4F, 0xEA, 0x81, 0x08, + 0x01, 0x92, 0x00, 0x2B, 0x3A, 0xD0, 0x3B, 0x68, 0x65, 0x6A, 0x5B, 0x78, + 0xD5, 0xF8, 0x8C, 0x20, 0x00, 0x2B, 0x00, 0xF0, 0x8B, 0x80, 0x69, 0x6D, + 0x00, 0x29, 0x00, 0xF0, 0x11, 0x81, 0x00, 0x2A, 0x80, 0xF2, 0x29, 0x81, + 0x9D, 0x49, 0xD9, 0xF8, 0x00, 0x30, 0x51, 0xF8, 0x26, 0x10, 0x0B, 0x44, + 0x11, 0x02, 0xC8, 0xF8, 0x00, 0x30, 0x40, 0xF1, 0xA2, 0x80, 0xAB, 0x88, + 0x99, 0x06, 0x40, 0xF1, 0x43, 0x81, 0x97, 0x4A, 0x43, 0xF0, 0x10, 0x03, + 0x52, 0xF8, 0x26, 0x00, 0xAB, 0x80, 0x15, 0xF0, 0x87, 0xF9, 0x94, 0xF8, + 0x50, 0x30, 0x3A, 0x68, 0x01, 0x3B, 0x84, 0xF8, 0x50, 0x30, 0x00, 0x23, + 0xA3, 0x76, 0x63, 0x62, 0x53, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, + 0x6B, 0x6D, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0xA5, 0x62, 0xEB, 0x7A, + 0x01, 0x33, 0xEB, 0x72, 0xE5, 0x68, 0x00, 0x2D, 0x00, 0xF0, 0x90, 0x81, + 0xD5, 0xF8, 0x4C, 0xB0, 0xDB, 0xF8, 0x50, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, + 0x80, 0xF2, 0xA9, 0x81, 0x30, 0x46, 0xCB, 0xF8, 0x10, 0xA0, 0x04, 0xF0, + 0x03, 0xF9, 0x6A, 0x6A, 0x12, 0xF4, 0x00, 0x10, 0x11, 0xD1, 0xDB, 0xF8, + 0x18, 0x10, 0x00, 0x29, 0x00, 0xF0, 0x97, 0x80, 0x8B, 0x6B, 0x03, 0xF4, + 0x60, 0x13, 0xB3, 0xF5, 0x00, 0x1F, 0x8C, 0x46, 0x00, 0xF0, 0x29, 0x81, + 0xDC, 0xF8, 0x3C, 0x30, 0x00, 0x2B, 0x80, 0xF2, 0x9D, 0x81, 0x1A, 0xF4, + 0x00, 0x0F, 0x0B, 0xD0, 0x6B, 0x7F, 0x0D, 0x2B, 0x08, 0xD8, 0x73, 0x48, + 0x73, 0x49, 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, 0x03, 0x03, 0x09, 0x69, + 0xC3, 0xF8, 0x58, 0x12, 0x02, 0xF4, 0x60, 0x12, 0xB2, 0xF5, 0x60, 0x1F, + 0x00, 0xF0, 0x9E, 0x80, 0x04, 0xF1, 0x0C, 0x00, 0x15, 0xF0, 0x18, 0xFA, + 0x6B, 0x6A, 0x9B, 0x02, 0x04, 0xD4, 0x94, 0xF8, 0x50, 0x30, 0x01, 0x3B, + 0x84, 0xF8, 0x50, 0x30, 0xAB, 0x88, 0x00, 0x2B, 0x5F, 0xD1, 0x28, 0x46, + 0x02, 0xF0, 0x4C, 0xF8, 0x60, 0x4A, 0xD9, 0xF8, 0x00, 0x30, 0x52, 0xF8, + 0x26, 0x20, 0x13, 0x44, 0xC8, 0xF8, 0x00, 0x30, 0xA3, 0x7E, 0x6A, 0xE7, + 0x29, 0x69, 0x00, 0x29, 0x00, 0xF0, 0xA4, 0x80, 0xAB, 0x6C, 0x00, 0x2B, + 0x80, 0xF2, 0x9D, 0x80, 0x57, 0x4B, 0xD9, 0xF8, 0x00, 0x20, 0x53, 0xF8, + 0x26, 0x10, 0xAB, 0x88, 0x0A, 0x44, 0xC8, 0xF8, 0x00, 0x20, 0x9A, 0x06, + 0x3F, 0xF5, 0x77, 0xAF, 0xDF, 0xF8, 0x6C, 0xB1, 0xDB, 0xF8, 0x9C, 0x32, + 0x98, 0x47, 0x4F, 0xF0, 0x04, 0x0A, 0xAB, 0x88, 0x99, 0x06, 0x3F, 0xF5, + 0x6C, 0xAF, 0xDB, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0xBA, 0xF1, 0x01, 0x0A, + 0xF5, 0xD1, 0xAB, 0x88, 0x9A, 0x06, 0x3F, 0xF5, 0x62, 0xAF, 0x04, 0xF1, + 0x1C, 0x00, 0x15, 0xF0, 0xD3, 0xF9, 0xAB, 0x88, 0x5B, 0xE7, 0x2B, 0x69, + 0x00, 0x2B, 0x7F, 0xF4, 0x71, 0xAF, 0x46, 0x4B, 0x1B, 0x68, 0xEF, 0xF3, + 0x10, 0x82, 0xD0, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x43, 0x4A, 0x01, 0x21, + 0x11, 0x60, 0x43, 0x4A, 0x01, 0x99, 0x10, 0x68, 0x3F, 0x4D, 0x0B, 0x40, + 0x41, 0x1C, 0x11, 0x60, 0x2B, 0x60, 0x29, 0xB1, 0x3D, 0x4B, 0x10, 0x60, + 0x1B, 0x68, 0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x3C, 0x4B, 0x00, 0x9A, + 0x1A, 0x60, 0x00, 0x22, 0xA3, 0x7E, 0x22, 0x60, 0x17, 0xE7, 0x51, 0x46, + 0x28, 0x46, 0x32, 0x46, 0x01, 0xF0, 0xC6, 0xF9, 0x9C, 0xE7, 0x33, 0x4B, + 0x1B, 0x68, 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x30, 0x4A, 0x01, 0x21, 0x11, 0x60, 0xDF, 0xF8, 0xC0, 0xC0, 0x01, 0x99, + 0xDC, 0xF8, 0x00, 0x00, 0x2B, 0x4A, 0x0B, 0x40, 0x41, 0x1C, 0xCC, 0xF8, + 0x00, 0x10, 0x13, 0x60, 0x39, 0xB1, 0x29, 0x4B, 0xCC, 0xF8, 0x00, 0x00, + 0x1B, 0x68, 0x10, 0xB9, 0x00, 0x2B, 0x40, 0xF0, 0xA2, 0x80, 0x27, 0x4B, + 0x00, 0x9A, 0x1A, 0x60, 0x94, 0xF8, 0x50, 0x30, 0x00, 0x22, 0x01, 0x2B, + 0x22, 0x60, 0x7C, 0xD0, 0x6A, 0x6A, 0x4C, 0xE7, 0x6B, 0x6C, 0x63, 0x62, + 0x01, 0x23, 0x40, 0x20, 0xA3, 0x76, 0x15, 0xF0, 0x91, 0xF8, 0x59, 0xE7, + 0x94, 0xF8, 0x50, 0x10, 0x01, 0x29, 0x7F, 0xF4, 0xEA, 0xAE, 0xE1, 0x6A, + 0x00, 0x29, 0x3F, 0xF4, 0xE6, 0xAE, 0x21, 0x6B, 0x19, 0x48, 0x09, 0x7F, + 0x4F, 0xF0, 0xA4, 0x0C, 0x0C, 0xFB, 0x01, 0x61, 0x99, 0x31, 0x50, 0xF8, + 0x31, 0x10, 0x00, 0x29, 0x7B, 0xD0, 0x00, 0x2B, 0x3F, 0xF4, 0x62, 0xAF, + 0x00, 0x2A, 0xFF, 0xF6, 0xD7, 0xAE, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x94, 0xF8, 0x50, 0x10, 0x01, 0x29, 0x7F, 0xF4, 0x57, 0xAF, 0xE1, 0x6A, + 0x00, 0x29, 0xE2, 0xD1, 0x52, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, + 0x4A, 0x80, 0x0C, 0x10, 0x34, 0x36, 0x17, 0x00, 0xB0, 0x35, 0x17, 0x00, + 0xC4, 0x90, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x88, 0x80, 0x32, 0x40, 0x18, 0x88, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0xDF, 0xF8, 0x68, 0xB1, 0xDB, 0xF8, 0x9C, 0x32, + 0x98, 0x47, 0x4F, 0xF0, 0x04, 0x0A, 0xAB, 0x88, 0x9A, 0x06, 0x3F, 0xF5, + 0xB2, 0xAE, 0xDB, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0xBA, 0xF1, 0x01, 0x0A, + 0xF5, 0xD1, 0x4D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xAB, 0x88, 0xBF, 0xF6, 0xA4, 0xAE, 0x98, 0x06, 0x3F, 0xF5, 0xA1, 0xAE, + 0x48, 0x49, 0x49, 0x48, 0x4F, 0xF4, 0xAC, 0x62, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x4F, 0x16, 0xF0, 0xEB, 0xBC, 0x43, 0x48, 0x8B, 0x68, 0x01, 0x68, + 0xB1, 0xF9, 0x00, 0x10, 0x00, 0x29, 0x33, 0xDB, 0x60, 0x46, 0x9C, 0x46, + 0xCC, 0xE6, 0xE3, 0x6A, 0x00, 0x2B, 0x3F, 0xF4, 0x7F, 0xAF, 0x23, 0x6B, + 0x3E, 0x4A, 0x1B, 0x7F, 0xA4, 0x21, 0x01, 0xFB, 0x03, 0x63, 0x99, 0x33, + 0x52, 0xF8, 0x33, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x73, 0xAF, 0x3A, 0x4B, + 0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, 0x7F, 0xF4, 0x6D, 0xAF, 0x38, 0x4B, + 0x30, 0x46, 0xD3, 0xF8, 0x5C, 0x33, 0x98, 0x47, 0x66, 0xE7, 0x62, 0xB6, + 0x5B, 0xE7, 0x33, 0x49, 0x91, 0xF8, 0xFF, 0x11, 0x00, 0x29, 0x7F, 0xF4, + 0x7E, 0xAF, 0x31, 0x4B, 0x03, 0x92, 0xD3, 0xF8, 0x5C, 0x33, 0x30, 0x46, + 0x98, 0x47, 0x3B, 0x68, 0x03, 0x9A, 0x5B, 0x78, 0x00, 0x2B, 0x7F, 0xF4, + 0x75, 0xAF, 0xD5, 0xE6, 0x00, 0x2B, 0xC9, 0xD1, 0x25, 0x49, 0x2A, 0x48, + 0x00, 0x93, 0x40, 0xF2, 0x56, 0x42, 0x16, 0xF0, 0xD9, 0xFC, 0x00, 0x9B, + 0xDB, 0x6B, 0xFF, 0xDE, 0x26, 0x4C, 0x1F, 0xE6, 0x26, 0x4B, 0x25, 0x60, + 0x1B, 0x68, 0xEF, 0xF3, 0x10, 0x82, 0xD0, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x23, 0x4A, 0x01, 0x21, 0x11, 0x60, 0x23, 0x4A, 0x01, 0x99, 0x10, 0x68, + 0x1F, 0x4C, 0x19, 0x40, 0x0B, 0x46, 0x41, 0x1C, 0x11, 0x60, 0x23, 0x60, + 0x29, 0xB1, 0x1D, 0x4B, 0x10, 0x60, 0x1B, 0x68, 0x08, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0x1C, 0x4B, 0x00, 0x9A, 0x1A, 0x60, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x6B, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, + 0x7F, 0xF4, 0x41, 0xAF, 0x68, 0x6C, 0x31, 0x46, 0x0C, 0x30, 0x05, 0xB0, + 0xBD, 0xE8, 0xF0, 0x4F, 0x03, 0xF0, 0x28, 0xBF, 0x10, 0xB1, 0x31, 0x46, + 0x03, 0xF0, 0x24, 0xFF, 0x10, 0x4B, 0x11, 0x4A, 0x53, 0xF8, 0x26, 0x10, + 0x02, 0x9B, 0x12, 0x68, 0x9B, 0x00, 0x0A, 0x44, 0x1A, 0x60, 0x2A, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD4, 0x8E, 0x15, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xC0, 0x8E, 0x15, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x88, 0x80, 0x32, 0x40, + 0xB0, 0x35, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, 0x43, 0x6A, 0x9B, 0x02, + 0x03, 0xD5, 0x4B, 0x6A, 0x5B, 0x07, 0x07, 0xD4, 0x70, 0x47, 0xC1, 0x6C, + 0x05, 0x4B, 0x14, 0x31, 0xD3, 0xF8, 0x9C, 0x33, 0x08, 0x46, 0x18, 0x47, + 0x42, 0x6C, 0x93, 0x88, 0x43, 0xF0, 0x02, 0x03, 0x93, 0x80, 0x70, 0x47, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x43, 0x7F, 0x0B, 0x4E, 0x4F, 0xF4, + 0x1E, 0x75, 0x04, 0x46, 0x05, 0xFB, 0x03, 0xF5, 0x05, 0xF5, 0xFE, 0x70, + 0x01, 0x23, 0xE1, 0x76, 0x84, 0xF8, 0x5D, 0x30, 0x30, 0x44, 0x21, 0x46, + 0x14, 0xF0, 0xFE, 0xFF, 0x04, 0x4B, 0x71, 0x19, 0x20, 0x46, 0x5B, 0x69, + 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x83, 0x88, 0x2D, 0xE9, 0xF0, 0x41, 0x04, 0x46, + 0x0E, 0x46, 0x15, 0x46, 0xEB, 0xB1, 0x3A, 0x4B, 0xD0, 0xF8, 0x4C, 0x80, + 0x1A, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x23, 0xDB, 0xD8, 0xF8, + 0x24, 0x70, 0x17, 0xB9, 0xD8, 0xF8, 0x20, 0x30, 0x9F, 0x68, 0x04, 0x2D, + 0x03, 0xD1, 0x39, 0x46, 0x20, 0x46, 0xFF, 0xF7, 0x13, 0xFB, 0xE3, 0x7E, + 0xFF, 0x2B, 0x25, 0xD0, 0x2F, 0x4F, 0x29, 0x46, 0xD7, 0xF8, 0x00, 0x34, + 0x20, 0x46, 0x98, 0x47, 0x05, 0xE0, 0x82, 0x6C, 0x2B, 0x4F, 0x53, 0x6A, + 0x43, 0xF0, 0x10, 0x03, 0x53, 0x62, 0xD7, 0xF8, 0xA4, 0x33, 0x2A, 0x46, + 0x31, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x82, 0x6C, + 0x5A, 0xB3, 0xD8, 0xF8, 0x24, 0x70, 0x00, 0x2F, 0xDB, 0xD1, 0xD8, 0xF8, + 0x20, 0x30, 0x00, 0x2B, 0xD6, 0xD1, 0x21, 0x49, 0x21, 0x48, 0x40, 0xF2, + 0xB9, 0x12, 0x16, 0xF0, 0x03, 0xFC, 0xCD, 0xE7, 0xE3, 0x8B, 0x1A, 0x07, + 0x04, 0xD5, 0x3A, 0x88, 0x02, 0xF0, 0xDC, 0x02, 0x10, 0x2A, 0x25, 0xD0, + 0xBB, 0x7D, 0x13, 0xF0, 0x0F, 0x03, 0x07, 0xF1, 0x16, 0x07, 0x06, 0xD0, + 0x18, 0x4A, 0xB2, 0xF8, 0xFC, 0x21, 0x43, 0xEA, 0x02, 0x13, 0x3B, 0x80, + 0xC4, 0xE7, 0x15, 0x49, 0xB1, 0xF8, 0xFC, 0x21, 0x01, 0x32, 0x92, 0xB2, + 0xA1, 0xF8, 0xFC, 0x21, 0xF3, 0xE7, 0x0F, 0x49, 0x11, 0x48, 0x4F, 0xF4, + 0xD9, 0x72, 0x16, 0xF0, 0xDF, 0xFB, 0xD8, 0xF8, 0x24, 0x70, 0x00, 0x2F, + 0xA9, 0xD1, 0x08, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC7, 0xDB, 0x9F, 0xE7, 0x7A, 0x8B, 0x00, 0x2A, 0xD6, 0xD1, 0x43, 0xF0, + 0x20, 0x03, 0xE3, 0x83, 0x38, 0x1D, 0x20, 0xF0, 0xF9, 0xFE, 0xCF, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xAC, 0x8E, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, 0x8C, 0x8E, 0x15, 0x00, + 0x38, 0xB5, 0x0C, 0x46, 0x05, 0x29, 0x00, 0xF2, 0x33, 0x81, 0xDF, 0xE8, + 0x01, 0xF0, 0x36, 0x44, 0x51, 0x5E, 0x6B, 0x03, 0x9D, 0x4A, 0x13, 0x68, + 0xC3, 0xF3, 0x01, 0x63, 0x02, 0x2B, 0x00, 0xF0, 0x04, 0x81, 0x9B, 0x4A, + 0x9B, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x42, 0x1A, 0x60, 0x9A, 0x49, + 0x9A, 0x4A, 0x9B, 0x4B, 0x51, 0xF8, 0x24, 0x50, 0x12, 0x68, 0x9A, 0x48, + 0x23, 0x44, 0x9B, 0x00, 0x01, 0x21, 0x2A, 0x44, 0x01, 0xFA, 0x04, 0xF4, + 0x1A, 0x60, 0x04, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, + 0x72, 0xB6, 0x94, 0x4B, 0x19, 0x60, 0x94, 0x4B, 0x94, 0x49, 0x18, 0x68, + 0x0D, 0x68, 0x42, 0x1C, 0x2C, 0x43, 0x1A, 0x60, 0x0C, 0x60, 0x2A, 0xB1, + 0x8E, 0x4A, 0x18, 0x60, 0x13, 0x68, 0x08, 0xB9, 0x03, 0xB1, 0x62, 0xB6, + 0x38, 0xBD, 0x84, 0x4A, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x13, 0x02, 0x2B, + 0x00, 0xF0, 0xAE, 0x80, 0x8A, 0x4A, 0x82, 0x4B, 0x10, 0x60, 0x4F, 0xF4, + 0x00, 0x72, 0x1A, 0x60, 0xCB, 0xE7, 0x7D, 0x4A, 0x13, 0x68, 0xC3, 0xF3, + 0x01, 0x23, 0x02, 0x2B, 0x7D, 0xD0, 0x85, 0x4A, 0x7B, 0x4B, 0x10, 0x60, + 0x4F, 0xF4, 0x80, 0x62, 0x1A, 0x60, 0xBE, 0xE7, 0x76, 0x4A, 0x13, 0x68, + 0xC3, 0xF3, 0x01, 0x33, 0x02, 0x2B, 0x4F, 0xD0, 0x7F, 0x4A, 0x75, 0x4B, + 0x10, 0x60, 0x4F, 0xF4, 0x00, 0x62, 0x1A, 0x60, 0xB1, 0xE7, 0x70, 0x4A, + 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x43, 0x02, 0x2B, 0x21, 0xD0, 0x7A, 0x4A, + 0x6E, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0xA4, 0xE7, + 0x77, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x06, 0xDB, + 0x75, 0x4A, 0x68, 0x4B, 0x10, 0x60, 0x4F, 0xF4, 0x80, 0x72, 0x1A, 0x60, + 0x97, 0xE7, 0x63, 0x4B, 0x1B, 0x68, 0x03, 0xF0, 0x03, 0x03, 0x02, 0x2B, + 0xF2, 0xD1, 0xBD, 0xE8, 0x38, 0x40, 0x6F, 0x49, 0x6F, 0x48, 0x4F, 0xF4, + 0xEC, 0x62, 0x16, 0xF0, 0xFF, 0xBA, 0x60, 0x49, 0x0D, 0x68, 0x02, 0x35, + 0x03, 0xE0, 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, + 0xC3, 0xF3, 0x01, 0x43, 0x02, 0x2B, 0xF6, 0xD0, 0x63, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xCA, 0xDA, 0x52, 0x4B, 0x1B, 0x68, + 0xC3, 0xF3, 0x01, 0x43, 0x02, 0x2B, 0xC4, 0xD1, 0xBD, 0xE8, 0x38, 0x40, + 0x5E, 0x49, 0x60, 0x48, 0x40, 0xF2, 0x6C, 0x72, 0x16, 0xF0, 0xDE, 0xBA, + 0x4F, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, 0x0B, 0x68, 0x5B, 0x1B, + 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x33, 0x02, 0x2B, + 0xF6, 0xD0, 0x53, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x9C, 0xDA, 0x42, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, 0x01, 0x33, 0x02, 0x2B, + 0x96, 0xD1, 0xBD, 0xE8, 0x38, 0x40, 0x4E, 0x49, 0x50, 0x48, 0x4F, 0xF4, + 0xEF, 0x62, 0x16, 0xF0, 0xBD, 0xBA, 0x3F, 0x49, 0x0D, 0x68, 0x02, 0x35, + 0x03, 0xE0, 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, + 0xC3, 0xF3, 0x01, 0x23, 0x02, 0x2B, 0xF6, 0xD0, 0x42, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x6E, 0xAF, 0x31, 0x4B, + 0x1B, 0x68, 0xC3, 0xF3, 0x01, 0x23, 0x02, 0x2B, 0x7F, 0xF4, 0x67, 0xAF, + 0xBD, 0xE8, 0x38, 0x40, 0x3C, 0x49, 0x40, 0x48, 0x40, 0xF2, 0x84, 0x72, + 0x16, 0xF0, 0x9A, 0xBA, 0x2D, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, + 0x0B, 0x68, 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0xC3, 0xF3, + 0x01, 0x13, 0x02, 0x2B, 0xF6, 0xD0, 0x31, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x3E, 0xAF, 0x1F, 0x4B, 0x1B, 0x68, + 0xC3, 0xF3, 0x01, 0x13, 0x02, 0x2B, 0x7F, 0xF4, 0x37, 0xAF, 0xBD, 0xE8, + 0x38, 0x40, 0x2B, 0x49, 0x2F, 0x48, 0x4F, 0xF4, 0xF2, 0x62, 0x16, 0xF0, + 0x77, 0xBA, 0x1C, 0x49, 0x0D, 0x68, 0x02, 0x35, 0x03, 0xE0, 0x0B, 0x68, + 0x5B, 0x1B, 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0xC3, 0xF3, 0x01, 0x63, + 0x02, 0x2B, 0xF6, 0xD0, 0x1F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xBF, 0xF6, 0xE8, 0xAE, 0x0E, 0x4B, 0x1B, 0x68, 0xC3, 0xF3, + 0x01, 0x63, 0x02, 0x2B, 0x7F, 0xF4, 0xE1, 0xAE, 0xBD, 0xE8, 0x38, 0x40, + 0x19, 0x49, 0x1F, 0x48, 0x40, 0xF2, 0x9C, 0x72, 0x16, 0xF0, 0x54, 0xBA, + 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, + 0xD8, 0xAE, 0x13, 0x49, 0x19, 0x48, 0x40, 0xF2, 0xA2, 0x72, 0x16, 0xF0, + 0x79, 0xFA, 0xD0, 0xE6, 0x88, 0x81, 0x32, 0x40, 0x34, 0x83, 0x32, 0x40, + 0x80, 0x81, 0x32, 0x40, 0xB0, 0x35, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, + 0x4A, 0x80, 0x0C, 0x10, 0x88, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, 0x9C, 0x81, 0x32, 0x40, + 0xA0, 0x81, 0x32, 0x40, 0xA4, 0x81, 0x32, 0x40, 0xA8, 0x81, 0x32, 0x40, + 0x38, 0x36, 0x17, 0x00, 0x98, 0x81, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, + 0xF8, 0x8E, 0x15, 0x00, 0x18, 0x8F, 0x15, 0x00, 0x38, 0x8F, 0x15, 0x00, + 0x58, 0x8F, 0x15, 0x00, 0x78, 0x8F, 0x15, 0x00, 0x98, 0x8F, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x05, 0x2A, 0xF8, 0xB5, 0x06, 0x46, 0x0D, 0x46, + 0x35, 0xD0, 0x54, 0x21, 0x33, 0x4C, 0x01, 0xFB, 0x02, 0xF1, 0x02, 0xEB, + 0x42, 0x03, 0x61, 0x58, 0xC3, 0xEB, 0xC3, 0x03, 0x04, 0xEB, 0x83, 0x04, + 0x00, 0x29, 0x37, 0xD0, 0x2E, 0x4F, 0x3B, 0x68, 0x5B, 0x78, 0xF3, 0xB1, + 0x4E, 0x60, 0x05, 0x2A, 0x0B, 0xD0, 0x2C, 0x48, 0x02, 0xEB, 0x42, 0x01, + 0x00, 0xEB, 0x81, 0x01, 0x91, 0xF8, 0x2E, 0x10, 0x41, 0xB9, 0x90, 0xF8, + 0x8C, 0x10, 0x00, 0x29, 0x3E, 0xD1, 0x10, 0x46, 0xFF, 0xF7, 0x2A, 0xFB, + 0x3B, 0x68, 0x5B, 0x78, 0x3B, 0xB9, 0xAA, 0x6B, 0x92, 0x02, 0x46, 0xBF, + 0x01, 0x23, 0xC4, 0xE9, 0x01, 0x63, 0xC4, 0xE9, 0x01, 0x33, 0x25, 0x60, + 0xF8, 0xBD, 0xA0, 0x68, 0x00, 0x28, 0xDD, 0xD0, 0x61, 0x68, 0x4E, 0x60, + 0xDB, 0xE7, 0x19, 0x4C, 0xD4, 0xF8, 0xA4, 0x11, 0x04, 0xF5, 0xD2, 0x74, + 0x00, 0x29, 0xCF, 0xD1, 0x11, 0x46, 0x30, 0x46, 0xFF, 0xF7, 0x44, 0xFE, + 0x14, 0x4B, 0x1B, 0x68, 0x5B, 0x78, 0xDF, 0xE7, 0x13, 0x4B, 0x02, 0xEB, + 0x42, 0x00, 0x03, 0xEB, 0x80, 0x00, 0x51, 0x00, 0x90, 0xF8, 0x2E, 0x00, + 0x38, 0xB9, 0x93, 0xF8, 0x8C, 0x00, 0x93, 0xF8, 0x7E, 0x70, 0x00, 0x28, + 0xE8, 0xD0, 0xBA, 0x42, 0xE6, 0xD1, 0x0A, 0x44, 0x03, 0xEB, 0x82, 0x03, + 0x5A, 0x6A, 0x42, 0xB1, 0x07, 0x4B, 0x1B, 0x68, 0x5B, 0x78, 0xC5, 0xE7, + 0x90, 0xF8, 0x7E, 0x10, 0x91, 0x42, 0xBC, 0xD1, 0xC0, 0xE7, 0x03, 0x4A, + 0x5E, 0x62, 0x13, 0x68, 0x5B, 0x78, 0xBB, 0xE7, 0x20, 0x62, 0x17, 0x00, + 0x34, 0x36, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x38, 0xB5, 0x83, 0x88, + 0x33, 0xB1, 0x04, 0x46, 0x80, 0x6C, 0x18, 0xB1, 0x63, 0x6A, 0x13, 0xF4, + 0x00, 0x15, 0x00, 0xD0, 0x38, 0xBD, 0xF8, 0xF7, 0x75, 0xFE, 0xA5, 0x64, + 0x38, 0xBD, 0x00, 0xBF, 0x70, 0xB5, 0x20, 0x4C, 0x20, 0x4D, 0x02, 0xF0, + 0xD9, 0xFC, 0xD4, 0xF8, 0x44, 0x33, 0x98, 0x47, 0xFE, 0xF7, 0x9E, 0xFF, + 0x00, 0xF0, 0xA8, 0xFD, 0xD4, 0xF8, 0xA8, 0x33, 0x00, 0x20, 0x98, 0x47, + 0x04, 0xF0, 0xBA, 0xFE, 0x4F, 0xF4, 0x01, 0x72, 0x00, 0x21, 0xA5, 0xF1, + 0x0C, 0x00, 0xF1, 0xF7, 0xC3, 0xFC, 0x05, 0xF5, 0xD2, 0x76, 0x00, 0x24, + 0x28, 0x46, 0x14, 0xF0, 0x4D, 0xFD, 0x45, 0xF8, 0x0C, 0x4C, 0xAC, 0x73, + 0x85, 0xF8, 0x44, 0x40, 0xC5, 0xE9, 0x06, 0x44, 0x05, 0xF1, 0x10, 0x00, + 0x54, 0x35, 0x14, 0xF0, 0x41, 0xFD, 0xB5, 0x42, 0xEE, 0xD1, 0x0C, 0x4D, + 0x05, 0xF5, 0xD8, 0x70, 0x14, 0xF0, 0x3A, 0xFD, 0x05, 0xF5, 0xE0, 0x70, + 0xC5, 0xE9, 0x72, 0x44, 0xC5, 0xF8, 0xA4, 0x41, 0x85, 0xF8, 0xBE, 0x41, + 0x85, 0xF8, 0xF4, 0x41, 0x14, 0xF0, 0x2E, 0xFD, 0xA5, 0xF8, 0xFC, 0x41, + 0x70, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x62, 0x17, 0x00, + 0x20, 0x62, 0x17, 0x00, 0x0C, 0x4B, 0x93, 0xF8, 0xFE, 0x31, 0x0B, 0xB1, + 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x04, 0x46, 0x10, 0xF0, 0xBC, 0xF8, + 0x20, 0xB1, 0x94, 0xF8, 0xC0, 0x34, 0x1B, 0xB9, 0x01, 0x20, 0x10, 0xBD, + 0x00, 0x20, 0x10, 0xBD, 0x94, 0xF8, 0xC1, 0x04, 0x11, 0xF0, 0x16, 0xFD, + 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x10, 0xBD, 0x20, 0x62, 0x17, 0x00, + 0x45, 0x4B, 0x01, 0x22, 0x70, 0xB4, 0x1B, 0x68, 0x02, 0xFA, 0x00, 0xF6, + 0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x41, 0x49, + 0x0A, 0x60, 0x41, 0x4A, 0x3E, 0x4D, 0x14, 0x68, 0x23, 0xEA, 0x06, 0x03, + 0x61, 0x1C, 0x11, 0x60, 0x2B, 0x60, 0x29, 0xB1, 0x3B, 0x4B, 0x14, 0x60, + 0x1B, 0x68, 0x0C, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x3A, 0x4B, 0x1E, 0x60, + 0x05, 0x28, 0x5D, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x12, 0x21, 0x3F, 0x30, + 0x4E, 0x03, 0x37, 0x4B, 0x37, 0x4A, 0x4F, 0xF4, 0x00, 0x11, 0x19, 0x60, + 0x13, 0x68, 0x13, 0xF0, 0x40, 0x7F, 0xFB, 0xD1, 0x34, 0x4B, 0x4F, 0xF4, + 0x00, 0x12, 0x70, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x2F, 0x4B, 0x30, 0x4A, + 0x4F, 0xF4, 0x80, 0x31, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF0, 0x30, 0x0F, + 0xFB, 0xD1, 0x2D, 0x4B, 0x4F, 0xF4, 0x80, 0x32, 0x70, 0xBC, 0x1A, 0x60, + 0x70, 0x47, 0x28, 0x4B, 0x28, 0x4A, 0x4F, 0xF4, 0x00, 0x31, 0x19, 0x60, + 0x13, 0x68, 0x13, 0xF4, 0x40, 0x7F, 0xFB, 0xD1, 0x25, 0x4B, 0x4F, 0xF4, + 0x00, 0x32, 0x70, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x20, 0x4B, 0x21, 0x4A, + 0x4F, 0xF4, 0x00, 0x21, 0x19, 0x60, 0x13, 0x68, 0x13, 0xF4, 0x40, 0x3F, + 0xFB, 0xD1, 0x1E, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x70, 0xBC, 0x1A, 0x60, + 0x70, 0x47, 0x19, 0x4B, 0x19, 0x4A, 0x4F, 0xF4, 0x80, 0x21, 0x19, 0x60, + 0x13, 0x68, 0x13, 0xF4, 0x40, 0x5F, 0xFB, 0xD1, 0x16, 0x4B, 0x4F, 0xF4, + 0x80, 0x22, 0x70, 0xBC, 0x1A, 0x60, 0x70, 0x47, 0x11, 0x4B, 0x12, 0x4A, + 0x4F, 0xF4, 0x00, 0x41, 0x19, 0x60, 0x13, 0x68, 0x9B, 0x07, 0xFC, 0xD1, + 0x0F, 0x4B, 0x4F, 0xF4, 0x00, 0x42, 0x1A, 0x60, 0x70, 0xBC, 0x70, 0x47, + 0x0D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xF7, 0xDA, + 0x70, 0xBC, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF6, 0xE7, 0x02, 0x16, 0xF0, + 0xD5, 0xB8, 0x00, 0xBF, 0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x88, 0x80, 0x32, 0x40, 0x80, 0x81, 0x32, 0x40, + 0x88, 0x81, 0x32, 0x40, 0x84, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x70, 0xB5, 0x05, 0x28, + 0x82, 0xB0, 0x04, 0x46, 0x0A, 0x46, 0x3B, 0xD0, 0x1E, 0x4B, 0x00, 0xEB, + 0x40, 0x05, 0xC5, 0xEB, 0xC5, 0x05, 0x03, 0xEB, 0x85, 0x05, 0x1C, 0x4E, + 0x1C, 0x49, 0xD6, 0xF8, 0x84, 0x33, 0x01, 0x92, 0x01, 0xEB, 0xC4, 0x01, + 0x20, 0x46, 0x98, 0x47, 0x01, 0x9A, 0xD6, 0xF8, 0x84, 0x33, 0x05, 0xF1, + 0x0C, 0x01, 0x20, 0x46, 0x98, 0x47, 0x00, 0x23, 0x20, 0x46, 0x2B, 0x60, + 0x6B, 0x61, 0xFE, 0xF7, 0x59, 0xFE, 0x13, 0x4B, 0x01, 0x22, 0x1B, 0x68, + 0x02, 0xFA, 0x04, 0xF4, 0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x02, 0xD4, + 0x72, 0xB6, 0x0F, 0x49, 0x0A, 0x60, 0x0F, 0x4A, 0x0C, 0x4D, 0x11, 0x68, + 0x23, 0xEA, 0x04, 0x03, 0x48, 0x1C, 0x10, 0x60, 0x2B, 0x60, 0x28, 0xB1, + 0x09, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, + 0x08, 0x4B, 0x1C, 0x60, 0x02, 0xB0, 0x70, 0xBD, 0x07, 0x4D, 0xC8, 0xE7, + 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x24, 0x64, 0x17, 0x00, + 0x8C, 0x80, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x88, 0x80, 0x32, 0x40, 0xC4, 0x63, 0x17, 0x00, 0x70, 0xB5, 0x0E, 0x4E, + 0x82, 0xB0, 0x00, 0xF5, 0x9E, 0x64, 0x00, 0x25, 0xE8, 0xB2, 0x21, 0x46, + 0xD6, 0xF8, 0x84, 0x33, 0x01, 0x90, 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, + 0x01, 0x35, 0xA4, 0xF1, 0x28, 0x01, 0x01, 0x98, 0xD6, 0xF8, 0x84, 0x33, + 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, 0x05, 0x2D, 0x04, 0xF1, 0x08, 0x04, + 0xEA, 0xD1, 0x02, 0xB0, 0x70, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x05, 0x29, 0x2D, 0xE9, 0xF0, 0x41, 0x0E, 0x46, 0x04, 0x46, 0x64, 0xD0, + 0x33, 0x4D, 0x01, 0xEB, 0x41, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x05, 0xEB, + 0x83, 0x05, 0x94, 0xF8, 0x35, 0x10, 0x94, 0xF8, 0x33, 0x20, 0xA3, 0x88, + 0x2E, 0x48, 0x0A, 0x44, 0x1A, 0x44, 0xE3, 0x6C, 0xE1, 0x8B, 0x58, 0x61, + 0x04, 0x32, 0xDA, 0x62, 0x00, 0x22, 0xC3, 0xE9, 0x0F, 0x22, 0xC3, 0xE9, + 0x06, 0x22, 0xC3, 0xE9, 0x08, 0x22, 0x5A, 0x64, 0x9A, 0x62, 0x9A, 0x63, + 0xDA, 0x64, 0x1A, 0x63, 0x1A, 0x65, 0xCA, 0x07, 0x05, 0xD4, 0x22, 0x4A, + 0xD2, 0xF8, 0xF8, 0x31, 0x01, 0x33, 0xC2, 0xF8, 0xF8, 0x31, 0x21, 0x4B, + 0x1B, 0x6A, 0x23, 0xB1, 0x20, 0x4A, 0x13, 0x68, 0x43, 0xF4, 0x80, 0x33, + 0x13, 0x60, 0xDF, 0xF8, 0x88, 0x80, 0x61, 0x7F, 0x20, 0x7F, 0x00, 0x22, + 0x12, 0xF0, 0x5A, 0xF9, 0xD8, 0xF8, 0x48, 0x32, 0xE1, 0x7E, 0x60, 0x7F, + 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x16, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x16, 0x4F, 0xD8, 0xF8, 0x68, 0x33, + 0x3A, 0x68, 0x01, 0x32, 0x3A, 0x60, 0x31, 0x46, 0x20, 0x46, 0x98, 0x47, + 0xD8, 0xF8, 0x08, 0x34, 0x31, 0x46, 0x00, 0x22, 0x20, 0x46, 0x98, 0x47, + 0x21, 0x46, 0x05, 0xF1, 0x0C, 0x00, 0x14, 0xF0, 0x99, 0xFB, 0x3B, 0x68, + 0x33, 0xB1, 0x0A, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x07, 0x4D, + 0x9F, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0xBE, 0xBA, 0xFE, 0xCA, + 0x1C, 0x9E, 0x17, 0x00, 0x80, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x03, 0x4A, 0xD2, 0xF8, 0xF8, 0x31, 0x01, 0x33, 0xC2, 0xF8, 0xF8, 0x31, + 0x70, 0x47, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x05, 0x29, 0x2D, 0xE9, + 0xF0, 0x41, 0x0D, 0x46, 0x04, 0x46, 0x1C, 0xD0, 0x47, 0x4E, 0x01, 0xEB, + 0x41, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x06, 0xEB, 0x83, 0x06, 0x22, 0x7F, + 0x44, 0x4B, 0xE7, 0x6C, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x30, + 0xFF, 0xF7, 0x32, 0xFE, 0x68, 0xB9, 0x63, 0x7F, 0xFF, 0x2B, 0x67, 0xD0, + 0x3F, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x90, 0x33, 0x29, 0x46, 0x98, 0x47, + 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x3C, 0x4E, 0xE7, 0xE7, 0x20, 0x46, + 0x1C, 0xF0, 0xEE, 0xFF, 0x00, 0x28, 0xEC, 0xD0, 0xFB, 0x6C, 0x43, 0xF4, + 0x80, 0x73, 0xFB, 0x64, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x35, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x34, 0x4F, 0x96, 0xF8, + 0x50, 0x30, 0x3A, 0x68, 0xF1, 0x6A, 0xDF, 0xF8, 0xBC, 0x80, 0x01, 0x32, + 0x01, 0x33, 0x3A, 0x60, 0x86, 0xF8, 0x50, 0x30, 0x19, 0xB1, 0xD8, 0xF8, + 0x5C, 0x33, 0x28, 0x46, 0x98, 0x47, 0x73, 0x69, 0x00, 0x2B, 0x42, 0xD0, + 0x06, 0xF1, 0x0C, 0x00, 0x21, 0x46, 0x14, 0xF0, 0x21, 0xFB, 0x3B, 0x68, + 0x2B, 0xB1, 0x26, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x00, 0x2B, + 0x31, 0xD0, 0x1F, 0x4A, 0x24, 0x49, 0xD2, 0xF8, 0xF8, 0x31, 0x09, 0x6A, + 0x01, 0x33, 0xC2, 0xF8, 0xF8, 0x31, 0x21, 0xB1, 0x21, 0x4A, 0x13, 0x68, + 0x43, 0xF4, 0x80, 0x33, 0x13, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x19, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x3B, 0x68, + 0xD8, 0xF8, 0x04, 0x64, 0xA1, 0x6C, 0x01, 0x33, 0x3B, 0x60, 0x2A, 0x46, + 0x20, 0x46, 0xB0, 0x47, 0x3B, 0x68, 0x33, 0xB1, 0x12, 0x4A, 0x01, 0x3B, + 0x12, 0x68, 0x3B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x01, 0x20, + 0xBD, 0xE8, 0xF0, 0x81, 0x20, 0x46, 0x00, 0x21, 0x01, 0xF0, 0x7E, 0xF9, + 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x2A, 0xCB, 0xD0, 0x62, 0xB6, + 0xC9, 0xE7, 0xA3, 0x6C, 0x0B, 0x49, 0x5A, 0x6A, 0x9C, 0x60, 0x22, 0xF0, + 0x10, 0x02, 0x5A, 0x62, 0xD9, 0x60, 0xB3, 0xE7, 0x20, 0x62, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x80, 0x00, 0x32, 0x40, 0xDE, 0xFA, 0xFE, 0xCA, 0x70, 0x47, 0x00, 0xBF, + 0x20, 0x4B, 0x70, 0xB5, 0x1C, 0x68, 0xE1, 0x04, 0x2C, 0xD4, 0x1F, 0x4D, + 0x2C, 0x42, 0x24, 0xD1, 0x1E, 0x4B, 0x23, 0x40, 0x20, 0xD0, 0x22, 0x03, + 0x0B, 0xD5, 0x1D, 0x4B, 0x4F, 0xF4, 0x00, 0x22, 0x1A, 0x60, 0x05, 0x24, + 0x1B, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0xA0, 0x33, 0xBD, 0xE8, 0x70, 0x40, + 0x18, 0x47, 0x19, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0xB3, 0xFA, + 0x83, 0xF3, 0xC3, 0xF1, 0x19, 0x04, 0x00, 0x2A, 0xE4, 0xB2, 0x14, 0xDB, + 0x05, 0x2C, 0xE6, 0xD0, 0x10, 0x4A, 0xA1, 0x1D, 0x01, 0x23, 0x8B, 0x40, + 0x13, 0x60, 0xE5, 0xE7, 0x70, 0xBD, 0x04, 0xF0, 0x07, 0xFB, 0x0C, 0x4B, + 0x1D, 0x60, 0xD5, 0xE7, 0x04, 0xF0, 0x56, 0xFA, 0x09, 0x4B, 0x4F, 0xF4, + 0x80, 0x52, 0x1A, 0x60, 0xCB, 0xE7, 0x06, 0x2C, 0xE8, 0xD9, 0x09, 0x49, + 0x09, 0x48, 0x40, 0xF6, 0xC2, 0x22, 0x15, 0xF0, 0xD9, 0xFE, 0xE3, 0xE7, + 0x78, 0x80, 0x32, 0x40, 0x00, 0x08, 0x00, 0x20, 0xC0, 0x07, 0x08, 0x00, + 0x7C, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xB8, 0x8F, 0x15, 0x00, 0x38, 0xB5, 0x0D, 0x4B, + 0x0D, 0x4D, 0x1C, 0x68, 0xE3, 0x06, 0x05, 0xEA, 0x04, 0x05, 0x03, 0xD5, + 0x0B, 0x4B, 0xD3, 0xF8, 0xF0, 0x33, 0x98, 0x47, 0x14, 0xF4, 0x70, 0x04, + 0x08, 0xD0, 0x08, 0x4B, 0xB4, 0xFA, 0x84, 0xF4, 0xC4, 0xF1, 0x0B, 0x00, + 0xD3, 0xF8, 0x48, 0x33, 0xC0, 0xB2, 0x98, 0x47, 0x04, 0x4B, 0x1D, 0x60, + 0x38, 0xBD, 0x00, 0xBF, 0x78, 0x80, 0x32, 0x40, 0x1F, 0x00, 0xF0, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x7C, 0x80, 0x32, 0x40, 0xFF, 0xF7, 0xDA, 0xBF, + 0x2D, 0xE9, 0xF8, 0x43, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x1C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x70, 0x90, + 0x1A, 0x4F, 0xD9, 0xF8, 0x00, 0x30, 0xDF, 0xF8, 0x6C, 0x80, 0x01, 0x33, + 0xC9, 0xF8, 0x00, 0x30, 0x3D, 0x46, 0x46, 0x46, 0x04, 0x24, 0x95, 0xF8, + 0x5E, 0x30, 0xE2, 0xB2, 0x63, 0xB9, 0x97, 0xF8, 0x8C, 0x30, 0x97, 0xF8, + 0x7E, 0x10, 0x10, 0x46, 0x0B, 0xB1, 0x91, 0x42, 0x04, 0xD0, 0xD6, 0xF8, + 0x50, 0x31, 0x0B, 0xB1, 0xFF, 0xF7, 0x1A, 0xFD, 0x01, 0x3C, 0x63, 0x1C, + 0xA5, 0xF1, 0x0C, 0x05, 0xA6, 0xF1, 0x54, 0x06, 0xE7, 0xD1, 0xD9, 0xF8, + 0x00, 0x30, 0x01, 0x22, 0x88, 0xF8, 0xFF, 0x21, 0x3B, 0xB1, 0x05, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x94, 0x64, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x31, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x31, 0x4E, + 0x31, 0x4D, 0x33, 0x68, 0x31, 0x4F, 0xDF, 0xF8, 0xD0, 0xB0, 0xDF, 0xF8, + 0xD0, 0xA0, 0xDF, 0xF8, 0xD0, 0x80, 0x01, 0x33, 0x00, 0x22, 0x33, 0x60, + 0x85, 0xF8, 0xFF, 0x21, 0xB9, 0x46, 0x04, 0x24, 0x99, 0xF8, 0x5E, 0x30, + 0xE0, 0xB2, 0x00, 0x2B, 0x34, 0xD1, 0x97, 0xF8, 0x8C, 0x30, 0x97, 0xF8, + 0x7E, 0x20, 0x0B, 0xB1, 0x82, 0x42, 0x2D, 0xD0, 0xD5, 0xF8, 0x50, 0x31, + 0x43, 0xB3, 0x01, 0x90, 0xFE, 0xF7, 0x36, 0xFF, 0x5A, 0xF8, 0x24, 0x30, + 0xDB, 0xF8, 0x00, 0x20, 0x20, 0x48, 0x1A, 0x44, 0x40, 0xF8, 0x24, 0x20, + 0x01, 0x21, 0x1F, 0x4A, 0x01, 0xFA, 0x04, 0xF3, 0x13, 0x60, 0xEF, 0xF3, + 0x10, 0x82, 0x12, 0xF0, 0x01, 0x0F, 0x01, 0x98, 0x02, 0xD1, 0x72, 0xB6, + 0x14, 0x4A, 0x11, 0x60, 0x32, 0x68, 0xD8, 0xF8, 0x00, 0xC0, 0x51, 0x1C, + 0x43, 0xEA, 0x0C, 0x03, 0x31, 0x60, 0xC8, 0xF8, 0x00, 0x30, 0x29, 0xB1, + 0x0E, 0x4B, 0x32, 0x60, 0x1B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, + 0x03, 0xF0, 0x32, 0xF8, 0x01, 0x3C, 0x63, 0x1C, 0xA9, 0xF1, 0x0C, 0x09, + 0xA5, 0xF1, 0x54, 0x05, 0xBE, 0xD1, 0x33, 0x68, 0x33, 0xB1, 0x06, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x40, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x14, 0xF0, 0xF8, 0xB8, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x94, 0x64, 0x17, 0x00, 0x28, 0x01, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, + 0x20, 0x01, 0x32, 0x40, 0xB0, 0x35, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x4F, 0x5D, 0x4E, 0xDF, 0xF8, 0x90, 0x91, 0xB6, 0xF8, + 0xFC, 0x31, 0x83, 0xB0, 0x4F, 0xF4, 0x78, 0x30, 0x00, 0x93, 0x06, 0xF1, + 0x0C, 0x05, 0x14, 0xF0, 0xFB, 0xF8, 0x01, 0x23, 0x86, 0xF8, 0xFE, 0x31, + 0xAA, 0x46, 0x4F, 0xF4, 0x9E, 0x67, 0x4F, 0xF0, 0x00, 0x0B, 0x01, 0x95, + 0x53, 0x49, 0xD9, 0xF8, 0x84, 0x33, 0x5F, 0xFA, 0x8B, 0xF8, 0x40, 0x46, + 0x4F, 0xF0, 0x80, 0x42, 0x39, 0x44, 0x98, 0x47, 0x4F, 0x4B, 0x9D, 0x68, + 0xA7, 0xF1, 0x28, 0x04, 0xC5, 0xB1, 0xE9, 0x19, 0xD9, 0xF8, 0x84, 0x33, + 0x4F, 0xF0, 0x80, 0x42, 0x40, 0x46, 0x98, 0x47, 0x29, 0x19, 0xD9, 0xF8, + 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x40, 0x46, 0x98, 0x47, 0x05, 0xF5, + 0xA3, 0x61, 0xD9, 0xF8, 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x40, 0x46, + 0x98, 0x47, 0x2D, 0x68, 0x00, 0x2D, 0xE6, 0xD1, 0x51, 0x46, 0xD9, 0xF8, + 0x84, 0x33, 0x40, 0x46, 0x08, 0x37, 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, + 0xB7, 0xF5, 0xA3, 0x6F, 0x0B, 0xF1, 0x01, 0x0B, 0x0A, 0xF1, 0x54, 0x0A, + 0xC8, 0xD1, 0xD9, 0xF8, 0x84, 0x33, 0x39, 0x49, 0x01, 0x9D, 0x4F, 0xF0, + 0x80, 0x42, 0x05, 0x20, 0x98, 0x47, 0x37, 0x49, 0xD9, 0xF8, 0x84, 0x33, + 0x4F, 0xF0, 0x80, 0x42, 0x05, 0x20, 0x98, 0x47, 0x02, 0xF0, 0x30, 0xF9, + 0x00, 0xF0, 0x6A, 0xF9, 0xD9, 0xF8, 0xCC, 0x33, 0x98, 0x47, 0x2C, 0x48, + 0x4F, 0xF4, 0x01, 0x72, 0x00, 0x21, 0xF1, 0xF7, 0x89, 0xF8, 0x2B, 0x4B, + 0xD3, 0xF8, 0x08, 0x80, 0x00, 0x9B, 0xA6, 0xF8, 0xFC, 0x31, 0xB8, 0xF1, + 0x00, 0x0F, 0x17, 0xD0, 0x2B, 0x46, 0x45, 0x46, 0x98, 0x46, 0x05, 0xF5, + 0x9E, 0x64, 0x05, 0xF5, 0xA3, 0x67, 0x20, 0x46, 0x14, 0xF0, 0x06, 0xF9, + 0xA4, 0xF1, 0x28, 0x00, 0x08, 0x34, 0x14, 0xF0, 0x01, 0xF9, 0xBC, 0x42, + 0xF5, 0xD1, 0x20, 0x46, 0x14, 0xF0, 0xFC, 0xF8, 0x2D, 0x68, 0x00, 0x2D, + 0xEB, 0xD1, 0x45, 0x46, 0x1B, 0x4F, 0x00, 0x24, 0x28, 0x46, 0x14, 0xF0, + 0xF3, 0xF8, 0x45, 0xF8, 0x0C, 0x4C, 0xAC, 0x73, 0x85, 0xF8, 0x44, 0x40, + 0xC5, 0xE9, 0x06, 0x44, 0x05, 0xF1, 0x10, 0x00, 0x54, 0x35, 0x14, 0xF0, + 0xE7, 0xF8, 0xAF, 0x42, 0xEE, 0xD1, 0x12, 0x48, 0x14, 0xF0, 0xE2, 0xF8, + 0x12, 0x48, 0xC6, 0xF8, 0xA4, 0x41, 0xC6, 0xE9, 0x72, 0x44, 0x86, 0xF8, + 0xBE, 0x41, 0x86, 0xF8, 0xF4, 0x41, 0x14, 0xF0, 0xD7, 0xF8, 0x0E, 0x4A, + 0x00, 0x21, 0x02, 0xF5, 0xB4, 0x70, 0xA2, 0xF1, 0x24, 0x03, 0x43, 0xF8, + 0x04, 0x1B, 0x93, 0x42, 0xFB, 0xD1, 0x03, 0xF1, 0x24, 0x02, 0x90, 0x42, + 0xF5, 0xD1, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x20, 0x62, 0x17, 0x00, + 0x34, 0x5F, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0xD0, 0x63, 0x17, 0x00, + 0x4C, 0x64, 0x17, 0x00, 0xE0, 0x63, 0x17, 0x00, 0xD8, 0x56, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x03, 0x8C, 0x08, 0x8C, 0x83, 0x42, 0x08, 0xD8, + 0x05, 0xD2, 0xC0, 0x1A, 0x3F, 0x28, 0xCC, 0xBF, 0x00, 0x20, 0x01, 0x20, + 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x51, 0xB9, 0x81, 0x6C, 0x90, 0xF8, 0x42, 0x30, 0xCB, 0x1A, 0x93, 0xF8, + 0xB8, 0x30, 0xDB, 0x07, 0x02, 0xD4, 0x03, 0x8B, 0x08, 0x2B, 0x00, 0xD0, + 0x70, 0x47, 0x91, 0xF8, 0xA8, 0x30, 0x03, 0xF0, 0xF0, 0x03, 0x40, 0x2B, + 0xF8, 0xD1, 0x91, 0xF8, 0xB1, 0x30, 0x06, 0x2B, 0x01, 0xD0, 0x01, 0x2B, + 0xF2, 0xD1, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0xEE, 0xE7, 0x00, 0xBF, + 0x03, 0x6D, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x43, + 0x56, 0x4A, 0x12, 0x68, 0x12, 0x78, 0x02, 0x2A, 0x83, 0xB0, 0x04, 0x46, + 0x0D, 0x46, 0x07, 0xD0, 0x01, 0x2A, 0x7E, 0xD0, 0x03, 0x2A, 0x00, 0xF0, + 0x8D, 0x80, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0xFB, 0xF7, 0x8A, 0xFB, + 0x06, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x94, 0x80, 0xDF, 0xF8, 0x60, 0x91, + 0x42, 0xF2, 0x24, 0x03, 0x59, 0xF8, 0x03, 0x30, 0x00, 0x2B, 0x00, 0xF0, + 0x87, 0x80, 0x48, 0x48, 0x14, 0xF0, 0xA8, 0xF8, 0x4F, 0xF0, 0x00, 0x08, + 0x08, 0x22, 0x12, 0x23, 0x32, 0x70, 0x86, 0xF8, 0x01, 0x80, 0x86, 0xF8, + 0x03, 0x80, 0xB3, 0x70, 0x23, 0x6D, 0x29, 0x68, 0x00, 0x91, 0x23, 0xF0, + 0x40, 0x43, 0x07, 0x46, 0x69, 0x46, 0x30, 0x1D, 0x01, 0x93, 0x27, 0xF0, + 0x49, 0xFF, 0x42, 0xF2, 0x34, 0x03, 0x39, 0xF8, 0x03, 0x30, 0xB3, 0xF5, + 0xC3, 0x7F, 0x62, 0xD8, 0x03, 0xF1, 0x01, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, + 0xDA, 0x00, 0x37, 0x49, 0xBB, 0x81, 0x09, 0x68, 0x36, 0x4B, 0x01, 0xEB, + 0x02, 0x0C, 0x42, 0xF2, 0x34, 0x08, 0xCC, 0xF8, 0x04, 0x60, 0x88, 0x58, + 0x03, 0x40, 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF0, 0x0C, 0x03, 0x8B, 0x50, + 0x99, 0xF8, 0x02, 0x3C, 0x29, 0xF8, 0x08, 0xE0, 0x01, 0x33, 0x01, 0x22, + 0x00, 0x20, 0x0C, 0x21, 0x89, 0xF8, 0x02, 0x3C, 0xC7, 0xF8, 0x04, 0xC0, + 0xBA, 0x73, 0x38, 0x60, 0xB9, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x02, 0xD4, 0x72, 0xB6, 0x26, 0x4B, 0x1A, 0x60, 0x26, 0x4E, 0x2B, 0x68, + 0x31, 0x68, 0x22, 0x8C, 0x25, 0x48, 0x4D, 0x1C, 0x21, 0x46, 0x35, 0x60, + 0x15, 0xF0, 0xEC, 0xF9, 0x23, 0x48, 0x39, 0x46, 0x14, 0xF0, 0x0E, 0xF8, + 0x22, 0x4B, 0xD3, 0xF8, 0x44, 0x34, 0x98, 0x47, 0x33, 0x68, 0x00, 0x2B, + 0x8D, 0xD0, 0x1B, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x00, 0x2B, + 0x87, 0xD1, 0x00, 0x2A, 0x85, 0xD0, 0x62, 0xB6, 0x83, 0xE7, 0x0E, 0x68, + 0x00, 0x96, 0x23, 0xF0, 0x40, 0x43, 0x69, 0x46, 0x08, 0x22, 0x12, 0x20, + 0x01, 0x93, 0xF9, 0xF7, 0xD7, 0xFA, 0x2B, 0x68, 0x22, 0x8C, 0x15, 0x48, + 0x21, 0x46, 0x15, 0xF0, 0xC7, 0xF9, 0x72, 0xE7, 0x13, 0x4B, 0x0A, 0x68, + 0x1B, 0x68, 0x1A, 0x60, 0xF6, 0xF7, 0x72, 0xF8, 0x6B, 0xE7, 0x42, 0x46, + 0x43, 0x46, 0x4F, 0xF0, 0x01, 0x0E, 0x9C, 0xE7, 0x0E, 0x48, 0xF6, 0xF7, + 0xED, 0xFF, 0x62, 0xE7, 0x0D, 0x48, 0xF6, 0xF7, 0xE9, 0xFF, 0x5E, 0xE7, + 0x78, 0x36, 0x17, 0x00, 0xA0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, + 0x00, 0x00, 0xFF, 0x31, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x00, 0x90, 0x15, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x20, 0x90, 0x15, 0x00, 0x00, 0x38, 0x18, 0x00, 0xDC, 0x8F, 0x15, 0x00, + 0xD8, 0x83, 0x15, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x10, 0xB5, 0x0D, 0x4C, + 0x30, 0x22, 0x00, 0x21, 0x20, 0x46, 0xF0, 0xF7, 0x21, 0xFF, 0x20, 0x46, + 0x13, 0xF0, 0xAE, 0xFF, 0x04, 0xF1, 0x08, 0x00, 0x13, 0xF0, 0xAA, 0xFF, + 0x04, 0xF1, 0x10, 0x00, 0x13, 0xF0, 0xA6, 0xFF, 0x04, 0xF1, 0x18, 0x00, + 0x13, 0xF0, 0xA2, 0xFF, 0x04, 0xF1, 0x20, 0x00, 0xBD, 0xE8, 0x10, 0x40, + 0x13, 0xF0, 0x9C, 0xBF, 0x24, 0x64, 0x17, 0x00, 0x38, 0xB5, 0xC3, 0x6C, + 0x04, 0x46, 0x09, 0x48, 0x19, 0x61, 0x00, 0xEB, 0xC2, 0x00, 0x21, 0x46, + 0x15, 0x46, 0x13, 0xF0, 0x93, 0xFF, 0x63, 0x6A, 0x9B, 0x02, 0x00, 0xD5, + 0x38, 0xBD, 0x04, 0x4B, 0x53, 0xF8, 0x25, 0x00, 0xBD, 0xE8, 0x38, 0x40, + 0x13, 0xF0, 0xE6, 0xBE, 0x24, 0x64, 0x17, 0x00, 0xC4, 0x90, 0x15, 0x00, + 0x38, 0xB5, 0x38, 0x4B, 0x93, 0xF8, 0x8C, 0x20, 0x05, 0x46, 0x00, 0x2A, + 0x42, 0xD1, 0x43, 0x6D, 0xC3, 0xF3, 0xC1, 0x23, 0x54, 0x22, 0x1C, 0x21, + 0x33, 0x48, 0x12, 0xFB, 0x03, 0x13, 0x18, 0x44, 0x13, 0xF0, 0xB6, 0xFF, + 0x04, 0x46, 0x31, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x2A, + 0x01, 0xDB, 0x14, 0xB9, 0x38, 0xBD, 0x00, 0x2C, 0x4C, 0xD0, 0xA2, 0x88, + 0x68, 0x6D, 0x42, 0xF0, 0x20, 0x02, 0x81, 0x01, 0xA2, 0x80, 0xF5, 0xD5, + 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF3, 0xCF, 0x31, 0xC0, 0xF3, + 0xC9, 0x33, 0x26, 0xDB, 0x62, 0x7A, 0x10, 0x3B, 0x93, 0x42, 0xE9, 0xD1, + 0xEB, 0x69, 0x99, 0x68, 0x0B, 0x8A, 0x03, 0xF0, 0x1E, 0x02, 0x16, 0x2A, + 0x25, 0xD0, 0x82, 0x05, 0xE0, 0xD4, 0x2A, 0x8E, 0x1C, 0x2A, 0xDD, 0xD1, + 0xA2, 0x7A, 0xB2, 0xEB, 0x13, 0x3F, 0xD9, 0xD1, 0x04, 0xF1, 0xE0, 0x05, + 0x12, 0x31, 0x28, 0x46, 0x0A, 0x22, 0x27, 0xF0, 0x37, 0xFE, 0xC4, 0xF8, + 0xDC, 0x50, 0x1A, 0xE0, 0x93, 0xF8, 0x7E, 0x30, 0x05, 0x2B, 0xBB, 0xD1, + 0x14, 0x48, 0x13, 0xF0, 0x77, 0xFF, 0x04, 0x46, 0xBF, 0xE7, 0x11, 0xF4, + 0x7C, 0x7F, 0xD5, 0xD1, 0xBD, 0xE8, 0x38, 0x40, 0x10, 0x49, 0x11, 0x48, + 0xD0, 0x22, 0x15, 0xF0, 0x49, 0xBB, 0x10, 0x4B, 0x28, 0x46, 0xD3, 0xF8, + 0xB4, 0x33, 0x21, 0x46, 0x98, 0x47, 0x00, 0x28, 0xB4, 0xD0, 0xA3, 0x88, + 0x43, 0xF0, 0x40, 0x03, 0xA3, 0x80, 0x38, 0xBD, 0xBD, 0xE8, 0x38, 0x40, + 0x06, 0x49, 0x09, 0x48, 0x40, 0xF2, 0x5F, 0x12, 0x15, 0xF0, 0x34, 0xBB, + 0x94, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0xE0, 0x63, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x50, 0x90, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x3C, 0x90, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xB0, 0x4B, 0xB1, 0x4C, 0x1B, 0x68, 0xB1, 0x4A, 0xB3, 0xF9, 0x00, 0x30, + 0x2D, 0xED, 0x02, 0x8B, 0x87, 0xB0, 0x01, 0x46, 0x01, 0x90, 0x00, 0x2B, + 0x04, 0xEB, 0xC0, 0x00, 0x08, 0xEE, 0x10, 0x0A, 0x52, 0xF8, 0x21, 0x40, + 0xC0, 0xF2, 0x38, 0x83, 0x20, 0x46, 0x13, 0xF0, 0x6B, 0xFE, 0xA6, 0x4B, + 0x01, 0x9A, 0x53, 0xF8, 0x32, 0x40, 0x00, 0x2C, 0x00, 0xF0, 0xAD, 0x80, + 0x00, 0x23, 0xCD, 0xE9, 0x04, 0x33, 0x9B, 0x46, 0x98, 0x46, 0xA2, 0x4B, + 0x62, 0x7F, 0x93, 0xF8, 0x00, 0x32, 0x03, 0x92, 0x01, 0x2B, 0x22, 0x7F, + 0xE6, 0x6C, 0x67, 0x6C, 0x02, 0x92, 0x00, 0xF0, 0xA1, 0x80, 0x00, 0x2F, + 0x00, 0xF0, 0xA8, 0x80, 0x3B, 0x79, 0xD8, 0x06, 0x40, 0xF1, 0x95, 0x80, + 0x35, 0x69, 0x59, 0x06, 0x25, 0xF4, 0x00, 0x05, 0x0B, 0xF1, 0x01, 0x0B, + 0x35, 0x61, 0x00, 0xF1, 0x9B, 0x81, 0xDF, 0xF8, 0x70, 0xA2, 0x00, 0x21, + 0xDA, 0xF8, 0x18, 0x34, 0x20, 0x46, 0x98, 0x47, 0x63, 0x6A, 0x03, 0xF4, + 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x08, 0xBF, 0xA0, 0x46, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x8B, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0xDF, 0xF8, 0x38, 0x92, 0xD9, 0xF8, 0x00, 0x30, 0x18, 0xEE, + 0x10, 0x0A, 0x01, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x13, 0xF0, 0xE4, 0xFE, + 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x60, 0x1F, 0x00, 0xF0, + 0x5F, 0x81, 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x7F, 0x4A, 0x01, 0x3B, + 0x12, 0x68, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x22, 0x8B, 0x48, 0xF6, 0x88, 0x63, 0x9A, 0x42, 0x00, 0xF0, 0x30, 0x81, + 0xE2, 0x6A, 0xD3, 0x6B, 0x98, 0x06, 0x40, 0xF1, 0xFD, 0x80, 0x15, 0xF4, + 0x00, 0x05, 0x00, 0xF0, 0x7E, 0x81, 0xE1, 0x6C, 0x4F, 0x6A, 0x39, 0x88, + 0x88, 0xB2, 0x09, 0x04, 0x00, 0xF1, 0xEB, 0x81, 0x71, 0x4F, 0x3B, 0x68, + 0x1B, 0x78, 0x00, 0x2B, 0x36, 0xD0, 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, + 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, + 0x6B, 0x49, 0xA0, 0x88, 0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, + 0x12, 0x1A, 0x41, 0xF8, 0x23, 0x20, 0x68, 0x4B, 0x93, 0xF8, 0x04, 0x31, + 0x13, 0xB1, 0x00, 0x2D, 0x40, 0xF0, 0x33, 0x82, 0x06, 0xF1, 0x10, 0x01, + 0x20, 0x46, 0xFF, 0xF7, 0xC9, 0xFD, 0xE3, 0x8B, 0xDA, 0x07, 0x00, 0xF1, + 0x93, 0x81, 0xA0, 0x6C, 0x30, 0xB1, 0xF7, 0xF7, 0x4F, 0xFF, 0x3B, 0x68, + 0x1D, 0x78, 0x01, 0x2D, 0x00, 0xF0, 0xCB, 0x81, 0x9D, 0xF8, 0x04, 0x00, + 0x21, 0x46, 0x15, 0xF0, 0x5B, 0xFB, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, + 0xB3, 0xF5, 0x60, 0x1F, 0x00, 0xF0, 0x74, 0x81, 0x4F, 0x4B, 0x01, 0x9A, + 0x53, 0xF8, 0x32, 0x40, 0x00, 0x2C, 0x7F, 0xF4, 0x58, 0xAF, 0x07, 0xB0, + 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x4B, 0x4A, 0x00, 0x23, + 0x40, 0x20, 0x82, 0xF8, 0x00, 0x32, 0x13, 0xF0, 0x87, 0xFD, 0x00, 0x2F, + 0x7F, 0xF4, 0x58, 0xAF, 0xEF, 0xF3, 0x10, 0x83, 0xDD, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x45, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x47, 0x4D, 0x2B, 0x68, + 0x18, 0xEE, 0x10, 0x0A, 0x01, 0x33, 0x2B, 0x60, 0x13, 0xF0, 0x5A, 0xFE, + 0x2B, 0x68, 0x3B, 0xB1, 0x3E, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, + 0x13, 0xB9, 0x00, 0x2A, 0x40, 0xF0, 0xF3, 0x81, 0x20, 0x46, 0xD6, 0xF8, + 0x10, 0x90, 0x94, 0xF8, 0x1C, 0xA0, 0x23, 0xF0, 0x95, 0xFF, 0xE2, 0x6A, + 0xD3, 0x6B, 0x98, 0x06, 0x40, 0xF1, 0x8C, 0x80, 0x19, 0xF4, 0x00, 0x0F, + 0x0C, 0xD0, 0xE1, 0x6C, 0x4D, 0x6A, 0x29, 0x88, 0x88, 0xB2, 0x09, 0x04, + 0x00, 0xF1, 0xFE, 0x81, 0x32, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x00, 0x2B, + 0x40, 0xF0, 0x86, 0x80, 0x31, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x0A, 0x53, 0x93, 0xF8, 0xC0, 0x24, 0x42, 0xB1, 0x93, 0xF8, 0xC1, 0x34, + 0x2D, 0x4F, 0x03, 0xEB, 0x83, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x07, 0xEB, + 0x83, 0x07, 0x63, 0x7F, 0x09, 0x2B, 0x08, 0xD8, 0xE3, 0x8B, 0x18, 0x07, + 0x05, 0xD4, 0x09, 0xF4, 0x01, 0x09, 0xB9, 0xF5, 0x80, 0x3F, 0x00, 0xF0, + 0x2B, 0x82, 0x25, 0x4F, 0x9D, 0xF8, 0x04, 0x50, 0xD7, 0xF8, 0x18, 0x34, + 0x00, 0x21, 0x20, 0x46, 0x98, 0x47, 0xD7, 0xF8, 0xAC, 0x33, 0x00, 0x22, + 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, 0x22, 0x8B, 0x48, 0xF6, 0x88, 0x63, + 0x9A, 0x42, 0x00, 0xF0, 0x05, 0x81, 0x63, 0x7F, 0x09, 0x2B, 0x0E, 0xD8, + 0xE2, 0x7E, 0x08, 0x2A, 0x0B, 0xD8, 0x03, 0xEB, 0xC3, 0x03, 0x13, 0x44, + 0x11, 0x49, 0xA0, 0x88, 0x03, 0xF6, 0x0E, 0x03, 0x51, 0xF8, 0x23, 0x20, + 0x12, 0x1A, 0x41, 0xF8, 0x23, 0x20, 0x06, 0xF1, 0x10, 0x01, 0x20, 0x46, + 0xFF, 0xF7, 0x1C, 0xFD, 0xE3, 0x8B, 0xDB, 0x07, 0x00, 0xF1, 0x08, 0x81, + 0x21, 0x46, 0x28, 0x46, 0x15, 0xF0, 0xB8, 0xFA, 0x62, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x24, 0x64, 0x17, 0x00, 0xC4, 0x90, 0x15, 0x00, + 0x20, 0x62, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, + 0x7C, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xB7, 0x4F, 0x3B, 0x68, 0x1B, 0x78, 0x00, 0x2B, 0x3F, 0xF4, 0x44, 0xAF, + 0x15, 0xF4, 0x00, 0x05, 0x7F, 0xF4, 0x09, 0xAF, 0xB4, 0xF9, 0x1E, 0x30, + 0xE2, 0x8B, 0x00, 0x2B, 0xC0, 0xF2, 0x81, 0x80, 0x00, 0x25, 0x00, 0xE7, + 0xAF, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x00, 0x2B, 0x3F, 0xF4, 0x7E, 0xAF, + 0x19, 0xF4, 0x00, 0x0F, 0x3F, 0xF4, 0x7A, 0xAF, 0xE3, 0x8B, 0x1D, 0x07, + 0x3F, 0xF5, 0x76, 0xAF, 0x23, 0x7F, 0xA9, 0x4D, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x03, 0x53, 0x03, 0xF1, 0x98, 0x02, 0x93, 0xF8, 0x62, 0x10, + 0x20, 0x46, 0xFF, 0xF7, 0xAF, 0xFC, 0x68, 0xE7, 0x33, 0x69, 0x03, 0xF0, + 0x0F, 0x03, 0x09, 0x2B, 0x7F, 0xF4, 0xCA, 0xAE, 0x03, 0x9B, 0xA0, 0x48, + 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x00, 0x90, 0xF8, 0x5D, 0x32, + 0x01, 0x2B, 0x3F, 0xF6, 0xBF, 0xAE, 0xE2, 0x6C, 0xB0, 0xF8, 0x5E, 0x12, + 0xD2, 0x6A, 0x8A, 0x42, 0x3F, 0xF4, 0xB8, 0xAE, 0x01, 0x33, 0x80, 0xF8, + 0x5D, 0x32, 0xA0, 0xF8, 0x5E, 0x22, 0xB1, 0xE6, 0x95, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9B, 0x80, 0x59, 0x46, + 0x40, 0x46, 0x04, 0x9A, 0x23, 0xF0, 0xCA, 0xFE, 0x38, 0x46, 0x02, 0xF0, + 0x9D, 0xF8, 0x00, 0x23, 0x04, 0x93, 0x9B, 0x46, 0x98, 0x46, 0x8C, 0xE6, + 0xD7, 0xF8, 0xDC, 0x20, 0xDA, 0xB1, 0x11, 0x88, 0x23, 0x8C, 0xA3, 0xEB, + 0x11, 0x13, 0xC3, 0xF3, 0x0B, 0x03, 0x40, 0xF2, 0xFE, 0x71, 0x8B, 0x42, + 0x0C, 0xD8, 0x3F, 0x2B, 0x4F, 0xEA, 0x13, 0x11, 0x08, 0xD8, 0x02, 0xEB, + 0x41, 0x02, 0x03, 0xF0, 0x0F, 0x03, 0x52, 0x88, 0x42, 0xFA, 0x03, 0xF3, + 0xDA, 0x07, 0x04, 0xD4, 0x4F, 0xF4, 0x80, 0x23, 0x1D, 0x43, 0x35, 0x61, + 0x45, 0xE6, 0x04, 0x9B, 0x01, 0x33, 0x04, 0x93, 0x4F, 0xF4, 0x04, 0x03, + 0xF6, 0xE7, 0x75, 0x4F, 0x3B, 0x68, 0x1B, 0x78, 0x00, 0x2B, 0x3F, 0xF4, + 0xBF, 0xAE, 0xB4, 0xF9, 0x1E, 0x30, 0xE2, 0x8B, 0x00, 0x2B, 0xBF, 0xF6, + 0x7F, 0xAF, 0x71, 0x4D, 0x02, 0x99, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x01, 0x53, 0x93, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x74, 0xAF, + 0xE6, 0x6C, 0x01, 0x98, 0x00, 0x21, 0xC2, 0xF3, 0x0E, 0x03, 0x31, 0x65, + 0x43, 0xF0, 0x01, 0x03, 0x61, 0x64, 0x31, 0x61, 0x02, 0x9E, 0xE3, 0x83, + 0x9E, 0x30, 0xA4, 0x23, 0x13, 0xFB, 0x06, 0x00, 0xE1, 0x62, 0x61, 0x62, + 0x65, 0x4A, 0x05, 0xEB, 0xC0, 0x00, 0x21, 0x46, 0x13, 0xF0, 0x60, 0xFD, + 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x60, 0x1F, 0x00, 0xF0, + 0xE4, 0x80, 0x01, 0x23, 0x05, 0x93, 0x8B, 0xE6, 0x05, 0x9B, 0x00, 0x2B, + 0x40, 0xF0, 0xDC, 0x80, 0x40, 0x20, 0x13, 0xF0, 0x1F, 0xFC, 0x00, 0x23, + 0x05, 0x93, 0x81, 0xE6, 0x40, 0x20, 0x13, 0xF0, 0x19, 0xFC, 0x68, 0xE6, + 0x33, 0x69, 0x03, 0xF0, 0x0F, 0x03, 0x09, 0x2B, 0x7F, 0xF4, 0xF5, 0xAE, + 0x03, 0x9B, 0x51, 0x48, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0x00, + 0x90, 0xF8, 0x5D, 0x32, 0x01, 0x2B, 0x3F, 0xF6, 0xEA, 0xAE, 0xE2, 0x6C, + 0xB0, 0xF8, 0x5E, 0x12, 0xD2, 0x6A, 0x8A, 0x42, 0x3F, 0xF4, 0xE3, 0xAE, + 0x01, 0x33, 0x80, 0xF8, 0x5D, 0x32, 0xA0, 0xF8, 0x5E, 0x22, 0xDC, 0xE6, + 0x40, 0x20, 0x13, 0xF0, 0xF7, 0xFB, 0xF3, 0xE6, 0xB8, 0xF1, 0x00, 0x0F, + 0x7F, 0xF4, 0x61, 0xAF, 0x44, 0x49, 0x45, 0x48, 0x40, 0xF2, 0x3D, 0x22, + 0x15, 0xF0, 0xE2, 0xF8, 0x59, 0xE7, 0x00, 0xF0, 0x0C, 0x00, 0x08, 0x28, + 0x7F, 0xF4, 0x10, 0xAE, 0xD7, 0xF8, 0x1A, 0x10, 0x01, 0xF0, 0x3F, 0x01, + 0x07, 0x29, 0x7F, 0xF4, 0x09, 0xAE, 0x23, 0xF0, 0x20, 0x03, 0xD3, 0x63, + 0x04, 0xE6, 0x3B, 0x4B, 0xD3, 0xE9, 0x01, 0x02, 0x13, 0x69, 0x98, 0x47, + 0x06, 0x46, 0x00, 0x28, 0x3F, 0xF4, 0x2C, 0xAE, 0xF7, 0xF7, 0x96, 0xFE, + 0x07, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x02, 0x81, 0x00, 0x22, 0x34, 0x4B, + 0x02, 0x60, 0x1B, 0x68, 0x42, 0x60, 0x1E, 0x44, 0x82, 0x60, 0x06, 0x60, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, 0x2F, 0x4B, + 0x1D, 0x60, 0x2F, 0x49, 0xD9, 0xF8, 0x00, 0x20, 0x0B, 0x68, 0x01, 0x32, + 0x43, 0xF0, 0x01, 0x03, 0xC9, 0xF8, 0x00, 0x20, 0x0B, 0x60, 0x2A, 0x4B, + 0x1B, 0x68, 0x9E, 0x07, 0xFB, 0xD4, 0x29, 0x4B, 0x1B, 0x68, 0x00, 0x2B, + 0x40, 0xF0, 0xE4, 0x80, 0x27, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x40, 0xF0, + 0xF0, 0x80, 0x25, 0x4B, 0x25, 0x4D, 0x1F, 0x60, 0x22, 0x48, 0xA9, 0x89, + 0x03, 0x68, 0x6F, 0x60, 0x01, 0x31, 0xA9, 0x81, 0x01, 0x33, 0x1E, 0x49, + 0x03, 0x60, 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x00, 0x2A, + 0x3F, 0xF4, 0xEC, 0xAD, 0x18, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC9, 0xF8, + 0x00, 0x20, 0x00, 0x2A, 0x7F, 0xF4, 0xE4, 0xAD, 0x00, 0x2B, 0x3F, 0xF4, + 0xE1, 0xAD, 0x62, 0xB6, 0xDE, 0xE5, 0x23, 0x7F, 0x09, 0x4D, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x55, 0x05, 0xF1, 0x98, 0x02, 0x95, 0xF8, + 0x62, 0x10, 0x20, 0x46, 0xFF, 0xF7, 0x70, 0xFB, 0xBE, 0xE5, 0x62, 0xB6, + 0x0A, 0xE6, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x61, 0xF1, 0x12, 0x00, 0x70, 0x79, 0x15, 0x00, 0x90, 0x90, 0x15, 0x00, + 0x28, 0x60, 0x17, 0x00, 0x34, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x60, 0x00, 0x24, 0x40, 0x64, 0x00, 0x24, 0x40, 0x68, 0x00, 0x24, 0x40, + 0x10, 0x60, 0x17, 0x00, 0x00, 0xF0, 0x0C, 0x00, 0x08, 0x28, 0x7F, 0xF4, + 0xFD, 0xAD, 0xD5, 0xF8, 0x1A, 0x10, 0x01, 0xF0, 0x3F, 0x01, 0x07, 0x29, + 0x7F, 0xF4, 0xF6, 0xAD, 0x23, 0xF0, 0x20, 0x03, 0xD3, 0x63, 0xF1, 0xE5, + 0x4E, 0x4D, 0x02, 0x9B, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x03, 0x50, + 0xFE, 0xF7, 0xB8, 0xFE, 0x00, 0x28, 0x3F, 0xF4, 0x19, 0xAF, 0x4A, 0x4B, + 0x93, 0xF8, 0xFF, 0x31, 0x00, 0x2B, 0x7F, 0xF4, 0x13, 0xAF, 0x01, 0x9A, + 0x02, 0x99, 0xA4, 0x23, 0x02, 0xF1, 0x9E, 0x06, 0x13, 0xFB, 0x01, 0x66, + 0x03, 0xFB, 0x01, 0x23, 0x03, 0xF1, 0x9E, 0x04, 0x05, 0xEB, 0xC6, 0x06, + 0xD7, 0xB2, 0xA1, 0x46, 0x0C, 0xE0, 0x13, 0xF0, 0x09, 0xFC, 0xDA, 0xF8, + 0x24, 0x34, 0x20, 0x46, 0x39, 0x46, 0x98, 0x47, 0x3B, 0x4B, 0x93, 0xF8, + 0xFF, 0x31, 0x00, 0x2B, 0x7F, 0xF4, 0xF6, 0xAE, 0x55, 0xF8, 0x39, 0x40, + 0x30, 0x46, 0x00, 0x2C, 0xED, 0xD1, 0xEF, 0xE6, 0x36, 0x4B, 0x1B, 0x68, + 0x1C, 0x42, 0x7F, 0xF4, 0xC3, 0xAC, 0x35, 0x49, 0x35, 0x48, 0x4F, 0xF4, + 0xF2, 0x72, 0x14, 0xF0, 0xFD, 0xFF, 0xBB, 0xE4, 0x4F, 0xF4, 0xA4, 0x69, + 0x09, 0xFB, 0x0A, 0x59, 0x99, 0xF8, 0x64, 0x10, 0x00, 0x29, 0x3F, 0xF4, + 0xCC, 0xAD, 0x2F, 0x48, 0x03, 0x99, 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, + 0x01, 0x01, 0x91, 0xF8, 0x24, 0x10, 0x01, 0x29, 0x0F, 0xD0, 0x99, 0x07, + 0x2F, 0xD4, 0x00, 0x2A, 0x3F, 0xF4, 0xBD, 0xAD, 0x97, 0xF8, 0x70, 0x30, + 0x01, 0x2B, 0x7F, 0xF4, 0xB8, 0xAD, 0x97, 0xF8, 0x85, 0x30, 0x00, 0x2B, + 0x7F, 0xF4, 0xB3, 0xAD, 0xE3, 0x8B, 0xE1, 0x6C, 0x01, 0x98, 0x22, 0x4A, + 0xC3, 0xF3, 0x0E, 0x03, 0x00, 0x26, 0x43, 0xF0, 0x01, 0x03, 0x0E, 0x65, + 0x0E, 0x61, 0x9E, 0x30, 0xE3, 0x83, 0xA4, 0x23, 0x13, 0xFB, 0x0A, 0x00, + 0x05, 0xEB, 0xC0, 0x00, 0xE6, 0x62, 0x21, 0x46, 0x13, 0xF0, 0xFE, 0xFB, + 0x40, 0x20, 0x13, 0xF0, 0xCB, 0xFA, 0x2F, 0xE5, 0x30, 0x46, 0xF7, 0xF7, + 0x6B, 0xFC, 0x1F, 0xE5, 0x15, 0x4D, 0x6B, 0x68, 0x9B, 0xB1, 0x5F, 0x60, + 0x1E, 0xE7, 0xB4, 0xF8, 0x40, 0x00, 0x20, 0xF0, 0x75, 0xFC, 0x00, 0x28, + 0xD6, 0xD0, 0x99, 0xF8, 0xC0, 0x24, 0x00, 0x2A, 0x3F, 0xF4, 0x85, 0xAD, + 0xC6, 0xE7, 0x0E, 0x48, 0x14, 0xF0, 0x2E, 0xFD, 0xD9, 0xF8, 0x00, 0x20, + 0x09, 0xE7, 0x0C, 0x48, 0x14, 0xF0, 0x28, 0xFD, 0xD9, 0xF8, 0x00, 0x20, + 0x06, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x80, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x78, 0x90, 0x15, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x61, 0xF1, 0x12, 0x00, 0x10, 0x60, 0x17, 0x00, + 0xA8, 0x90, 0x15, 0x00, 0xB0, 0x90, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x27, 0x4F, 0xDF, 0xF8, 0xA0, 0xA0, 0x91, 0x46, 0x06, 0x46, 0x0D, 0x46, + 0x42, 0xF0, 0x70, 0x58, 0x28, 0x46, 0x13, 0xF0, 0x6D, 0xFB, 0x04, 0x46, + 0x80, 0xB1, 0x42, 0x6C, 0xC1, 0x6C, 0x00, 0x2A, 0x38, 0xD0, 0xC1, 0xF8, + 0x10, 0x80, 0xA2, 0x88, 0x62, 0xB9, 0x20, 0x46, 0x00, 0xF0, 0xA2, 0xF9, + 0x28, 0x46, 0x13, 0xF0, 0x5D, 0xFB, 0x04, 0x46, 0x00, 0x28, 0xEE, 0xD1, + 0xBD, 0xE8, 0xF0, 0x47, 0x00, 0xF0, 0xBC, 0xB9, 0x0A, 0x69, 0x42, 0xF4, + 0x00, 0x02, 0x41, 0xF8, 0x10, 0x2F, 0x20, 0x46, 0xFF, 0xF7, 0x7E, 0xFA, + 0xD7, 0xF8, 0x18, 0x34, 0x01, 0x21, 0x20, 0x46, 0x98, 0x47, 0x63, 0x7F, + 0x09, 0x2B, 0x0D, 0xD8, 0xE2, 0x7E, 0x08, 0x2A, 0x0A, 0xD8, 0x03, 0xEB, + 0xC3, 0x03, 0x13, 0x44, 0x03, 0xF6, 0x0E, 0x03, 0xA1, 0x88, 0x5A, 0xF8, + 0x23, 0x20, 0x52, 0x1A, 0x4A, 0xF8, 0x23, 0x20, 0x31, 0x46, 0x20, 0x46, + 0xD7, 0xF8, 0x78, 0x33, 0x98, 0x47, 0x21, 0x46, 0x30, 0x46, 0x15, 0xF0, + 0x03, 0xF8, 0xBD, 0xE7, 0x0A, 0x69, 0x00, 0x2A, 0xA8, 0xBF, 0xC1, 0xF8, + 0x10, 0x90, 0xC2, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x6C, 0x80, 0x92, 0x46, 0x06, 0x46, + 0x0F, 0x46, 0x42, 0xF0, 0x70, 0x59, 0x38, 0x46, 0x13, 0xF0, 0x18, 0xFB, + 0x04, 0x46, 0xF0, 0xB1, 0x42, 0x6C, 0xC3, 0x6C, 0x12, 0xB3, 0xC3, 0xF8, + 0x10, 0x90, 0xA2, 0x88, 0x00, 0x21, 0x20, 0x46, 0xCA, 0xB1, 0x1D, 0x69, + 0x45, 0xF4, 0x00, 0x05, 0x1D, 0x61, 0xD8, 0xF8, 0x18, 0x34, 0x98, 0x47, + 0xD8, 0xF8, 0x78, 0x33, 0x20, 0x46, 0x31, 0x46, 0x98, 0x47, 0x21, 0x46, + 0x30, 0x46, 0x14, 0xF0, 0xD1, 0xFF, 0x38, 0x46, 0x13, 0xF0, 0xFA, 0xFA, + 0x04, 0x46, 0x00, 0x28, 0xE0, 0xD1, 0xBD, 0xE8, 0xF0, 0x47, 0x00, 0xF0, + 0x59, 0xB9, 0x00, 0xF0, 0x33, 0xF9, 0xD4, 0xE7, 0x1A, 0x69, 0x00, 0x2A, + 0xA8, 0xBF, 0xC3, 0xF8, 0x10, 0xA0, 0xD8, 0xE7, 0x88, 0x1A, 0x17, 0x00, + 0xF8, 0xB5, 0x14, 0x46, 0x05, 0x46, 0x0F, 0x46, 0x60, 0x22, 0x00, 0x21, + 0x1E, 0x46, 0xF0, 0xF7, 0x07, 0xFA, 0x4F, 0xF0, 0x01, 0x0C, 0x85, 0xF8, + 0x5C, 0xC0, 0x00, 0x23, 0x07, 0x49, 0x08, 0x4A, 0xAF, 0x64, 0x07, 0xF1, + 0x68, 0x00, 0xEE, 0x62, 0xEC, 0x64, 0xC4, 0xE9, 0x0F, 0x33, 0x60, 0x62, + 0x61, 0x61, 0x23, 0x63, 0x63, 0x64, 0x32, 0x60, 0xF8, 0xBD, 0x00, 0xBF, + 0xBE, 0xBA, 0xFE, 0xCA, 0x1E, 0xAB, 0xDC, 0xBA, 0x2D, 0xE9, 0xF8, 0x4F, + 0x07, 0x46, 0x3C, 0x48, 0x3C, 0x4C, 0xDF, 0xF8, 0x08, 0xA1, 0x3C, 0x4E, + 0x3C, 0x4D, 0xDF, 0xF8, 0x04, 0xB1, 0x81, 0x46, 0x13, 0xF0, 0x70, 0xFA, + 0x09, 0xF1, 0x08, 0x00, 0x13, 0xF0, 0x6C, 0xFA, 0x04, 0xF5, 0xC0, 0x78, + 0x00, 0x21, 0x20, 0x46, 0x60, 0x22, 0x17, 0xB1, 0x94, 0xF8, 0x5D, 0x30, + 0xC3, 0xB9, 0xF0, 0xF7, 0xD1, 0xF9, 0x00, 0x22, 0x32, 0x4B, 0xC4, 0xF8, + 0x48, 0xA0, 0x0A, 0xF1, 0x68, 0x0C, 0xC5, 0xE9, 0x0F, 0x22, 0x21, 0x46, + 0x48, 0x46, 0xE6, 0x62, 0xE5, 0x64, 0xC5, 0xF8, 0x14, 0xB0, 0x33, 0x60, + 0x84, 0xF8, 0x5C, 0x20, 0x2A, 0x63, 0x6A, 0x64, 0xC5, 0xF8, 0x24, 0xC0, + 0x13, 0xF0, 0x4E, 0xFA, 0x60, 0x34, 0xA0, 0x45, 0x0A, 0xF5, 0xF4, 0x7A, + 0x06, 0xF1, 0x40, 0x06, 0x05, 0xF1, 0x58, 0x05, 0xD6, 0xD1, 0x24, 0x4E, + 0xDF, 0xF8, 0x88, 0x90, 0xC6, 0xF8, 0x00, 0x90, 0x00, 0x24, 0xC6, 0xE9, + 0x0D, 0x44, 0xF4, 0x63, 0xF1, 0xF7, 0x8E, 0xFA, 0x80, 0x03, 0x70, 0x60, + 0xF1, 0xF7, 0x8A, 0xFA, 0x01, 0x27, 0x43, 0x1C, 0x07, 0xFA, 0x03, 0xF3, + 0x1B, 0x4D, 0xDF, 0xF8, 0x78, 0x80, 0xF4, 0x60, 0x01, 0x3B, 0xB3, 0x60, + 0x4F, 0xF4, 0x80, 0x63, 0xC6, 0xE9, 0x04, 0x83, 0xC6, 0xE9, 0x06, 0x44, + 0x34, 0x62, 0xC5, 0xF8, 0x00, 0x90, 0xC6, 0xE9, 0x0A, 0x44, 0xC5, 0xE9, + 0x0D, 0x44, 0x34, 0x63, 0xEC, 0x63, 0xF1, 0xF7, 0x6F, 0xFA, 0x80, 0x03, + 0x68, 0x60, 0xF1, 0xF7, 0x6B, 0xFA, 0x38, 0x44, 0x87, 0x40, 0x01, 0x3F, + 0x04, 0x23, 0xC5, 0xE9, 0x02, 0x74, 0xC5, 0xE9, 0x06, 0x44, 0xC5, 0xE9, + 0x0A, 0x44, 0xC5, 0xF8, 0x10, 0x80, 0x2C, 0x62, 0x2C, 0x63, 0x6B, 0x61, + 0xBD, 0xE8, 0xF8, 0x8F, 0x54, 0x64, 0x17, 0x00, 0x90, 0x28, 0x17, 0x00, + 0x84, 0x3B, 0x18, 0x00, 0x04, 0x3D, 0x18, 0x00, 0x1E, 0xAB, 0xDC, 0xBA, + 0xC4, 0x3C, 0x18, 0x00, 0x84, 0x3C, 0x18, 0x00, 0x4C, 0x50, 0x18, 0x00, + 0xBE, 0xBA, 0xFE, 0xCA, 0x04, 0x07, 0xFF, 0xFF, 0xF8, 0xB5, 0xD0, 0xE9, + 0x12, 0x64, 0x63, 0x6A, 0x05, 0x46, 0x50, 0x1E, 0x03, 0x44, 0x04, 0x32, + 0xC4, 0xE9, 0x0A, 0x32, 0xC1, 0xB1, 0x01, 0x29, 0x1A, 0xD0, 0x06, 0xF1, + 0x28, 0x01, 0x0F, 0x46, 0x34, 0x22, 0x38, 0x46, 0x27, 0xF0, 0xD8, 0xF8, + 0x0B, 0x4A, 0x13, 0x68, 0x12, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, + 0x13, 0x43, 0x00, 0x22, 0xF3, 0x64, 0xC4, 0xE9, 0x0D, 0x27, 0xE2, 0x64, + 0x22, 0x62, 0xC5, 0xE9, 0x15, 0x22, 0xF8, 0xBD, 0x04, 0x49, 0x06, 0xF1, + 0x28, 0x07, 0xE7, 0xE7, 0x03, 0x49, 0x06, 0xF1, 0x28, 0x07, 0xE3, 0xE7, + 0xA0, 0x00, 0x32, 0x40, 0xC4, 0x3C, 0x18, 0x00, 0x84, 0x3C, 0x18, 0x00, + 0x70, 0xB5, 0x05, 0x46, 0x05, 0x48, 0x0E, 0x46, 0x13, 0xF0, 0xFE, 0xF9, + 0x04, 0x46, 0x18, 0xB1, 0x32, 0x46, 0x29, 0x46, 0xFF, 0xF7, 0xC2, 0xFF, + 0x20, 0x46, 0x70, 0xBD, 0x54, 0x64, 0x17, 0x00, 0x16, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x2D, 0xE9, 0xF0, 0x41, 0xC4, 0x6C, 0x00, 0x2B, + 0x62, 0x6A, 0x05, 0x46, 0x0E, 0x46, 0x16, 0xDB, 0xE3, 0x6C, 0x11, 0x4F, + 0x23, 0xF4, 0xF0, 0x03, 0xE3, 0x64, 0x00, 0x23, 0xC4, 0xE9, 0x06, 0x33, + 0x12, 0x79, 0x23, 0x65, 0x12, 0xF0, 0x01, 0x0F, 0x08, 0xBF, 0x4F, 0xF4, + 0x00, 0x73, 0xA3, 0x64, 0xD7, 0xF8, 0x98, 0x33, 0x31, 0x46, 0x28, 0x46, + 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xD3, 0x07, 0xE6, 0xD5, 0x4F, 0xF4, + 0xB1, 0x72, 0x05, 0x49, 0x05, 0x48, 0x14, 0xF0, 0xD9, 0xFD, 0x62, 0x6A, + 0xDE, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xDC, 0x90, 0x15, 0x00, 0x08, 0xB5, 0x01, 0x46, + 0x04, 0x48, 0x13, 0xF0, 0x75, 0xF9, 0xBD, 0xE8, 0x08, 0x40, 0x4F, 0xF4, + 0x80, 0x20, 0x13, 0xF0, 0xCD, 0xB8, 0x00, 0xBF, 0x5C, 0x64, 0x17, 0x00, + 0x70, 0xB5, 0x90, 0xF8, 0x5C, 0x30, 0x04, 0x46, 0x0D, 0x46, 0x43, 0xB1, + 0x35, 0xB1, 0x63, 0x6D, 0x23, 0xB1, 0xA0, 0x6D, 0x00, 0x21, 0xBD, 0xE8, + 0x70, 0x40, 0x18, 0x47, 0x70, 0xBD, 0x01, 0x46, 0x01, 0x48, 0x13, 0xF0, + 0x59, 0xF9, 0xF1, 0xE7, 0x54, 0x64, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x4F, 0xF4, 0x80, 0x20, 0x13, 0xF0, 0xD2, 0xF8, 0xDF, 0xF8, 0x88, 0x80, + 0x1D, 0x4F, 0x1E, 0x4E, 0x1E, 0x4D, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x02, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0x3B, 0x60, 0xD8, 0xF8, 0x00, 0x30, + 0x30, 0x46, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x13, 0xF0, 0x80, 0xF9, + 0xD8, 0xF8, 0x00, 0x30, 0x04, 0x46, 0x33, 0xB1, 0x01, 0x3B, 0x3A, 0x68, + 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD4, 0xB1, + 0xD5, 0xF8, 0xF8, 0x31, 0x62, 0x6D, 0x01, 0x3B, 0xC5, 0xF8, 0xF8, 0x31, + 0x32, 0xB1, 0xE3, 0x6C, 0xA0, 0x6D, 0x19, 0x6D, 0x90, 0x47, 0x94, 0xF8, + 0x5E, 0x30, 0x43, 0xB9, 0x94, 0xF8, 0x5C, 0x30, 0x00, 0x2B, 0xD2, 0xD1, + 0x08, 0x48, 0x21, 0x46, 0x13, 0xF0, 0x1A, 0xF9, 0xCD, 0xE7, 0x00, 0x23, + 0x84, 0xF8, 0x5E, 0x30, 0xC9, 0xE7, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x5C, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x54, 0x64, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0xDF, 0xF8, 0x78, 0x91, 0x58, 0x4D, 0x80, 0x46, 0x4F, 0xF4, 0x1E, 0x70, + 0x00, 0xFB, 0x08, 0x90, 0x4F, 0xF4, 0xA4, 0x63, 0x90, 0xF8, 0x22, 0xA0, + 0x03, 0xFB, 0x0A, 0x53, 0x0F, 0x46, 0x1B, 0x6C, 0x16, 0x46, 0x00, 0x2B, + 0x00, 0xF0, 0x98, 0x80, 0x50, 0x49, 0x1A, 0x79, 0x0B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x5A, 0xDB, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x0A, 0x53, 0x18, 0x21, 0x93, 0xF8, 0xC0, 0x34, 0x13, 0x43, 0x14, 0xBF, + 0x01, 0x20, 0x00, 0x20, 0xFF, 0xF7, 0x1E, 0xFF, 0x04, 0x46, 0x00, 0x28, + 0x59, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x55, 0x28, 0x46, + 0x21, 0x46, 0x12, 0xF0, 0x11, 0xF8, 0x95, 0xF8, 0x62, 0x20, 0xA3, 0x6C, + 0x02, 0x2A, 0x4F, 0xD0, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x08, 0x92, + 0xE8, 0x6D, 0x52, 0xF8, 0x26, 0x1F, 0xB5, 0xF8, 0x60, 0xC0, 0xB2, 0xF8, + 0x04, 0xE0, 0x15, 0x68, 0xD9, 0x66, 0x91, 0x88, 0xA3, 0xF8, 0x7C, 0x10, + 0x00, 0x22, 0x9D, 0x67, 0x01, 0x21, 0x48, 0x25, 0xA3, 0xF8, 0x70, 0xE0, + 0xC3, 0xF8, 0x72, 0x00, 0xA3, 0xF8, 0x76, 0xC0, 0x83, 0xF8, 0x6A, 0x20, + 0x83, 0xF8, 0x6B, 0x20, 0x83, 0xF8, 0x68, 0x50, 0x83, 0xF8, 0x69, 0x10, + 0x2E, 0x49, 0xB1, 0xF8, 0xFC, 0x51, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, + 0x08, 0x99, 0x01, 0x35, 0xAD, 0xB2, 0xA1, 0xF8, 0xFC, 0x51, 0x99, 0xF8, + 0x22, 0x20, 0x2D, 0x01, 0xA3, 0xF8, 0x7E, 0x50, 0x20, 0x46, 0xC4, 0xE9, + 0x15, 0x76, 0x22, 0x77, 0x84, 0xF8, 0x1D, 0x80, 0x05, 0x21, 0xFF, 0xF7, + 0xE3, 0xFE, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x02, 0x2A, 0xA2, 0xD1, + 0x20, 0x49, 0x21, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0xDC, 0xFC, + 0x01, 0x20, 0x18, 0x21, 0xFF, 0xF7, 0xC4, 0xFE, 0x04, 0x46, 0x00, 0x28, + 0xA5, 0xD1, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x4F, 0xF4, 0x1E, 0x71, + 0x01, 0xFB, 0x08, 0x91, 0xE8, 0x6D, 0x51, 0xF8, 0x26, 0xEF, 0x83, 0xF8, + 0x69, 0x20, 0x89, 0x88, 0xA3, 0xF8, 0x70, 0x10, 0x00, 0x22, 0xB5, 0xF8, + 0x60, 0x10, 0xC3, 0xF8, 0x72, 0x00, 0x4F, 0xF0, 0x48, 0x0C, 0xE8, 0x6D, + 0x83, 0xF8, 0x6A, 0x20, 0x83, 0xF8, 0x6B, 0x20, 0xB5, 0xF8, 0x60, 0x20, + 0xC3, 0xF8, 0x6C, 0xE0, 0x83, 0xF8, 0x68, 0xC0, 0xA3, 0xF8, 0x76, 0x10, + 0x98, 0x67, 0xA3, 0xF8, 0x7C, 0x20, 0xAD, 0xE7, 0x04, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xCB, 0xDA, 0xC4, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x38, 0xB1, 0x49, 0x4C, 0x4F, 0xF4, + 0x1E, 0x75, 0x05, 0xFB, 0x00, 0xB5, 0x06, 0x46, 0x95, 0xF8, 0x22, 0x70, + 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x07, 0x40, 0x98, 0x46, 0x00, 0x6C, + 0x43, 0x4B, 0x8A, 0x46, 0x91, 0x46, 0x00, 0x28, 0x7A, 0xD0, 0x1B, 0x68, + 0x02, 0x79, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x62, 0xDB, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x43, 0x1A, 0x21, 0x93, 0xF8, 0xC0, 0x34, + 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xFF, 0xF7, 0x5C, 0xFE, + 0x05, 0x46, 0x00, 0x28, 0x61, 0xD0, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x07, 0x47, 0x38, 0x46, 0x29, 0x46, 0x11, 0xF0, 0x4F, 0xFF, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x06, 0xB3, 0xAC, 0x6C, 0x53, 0xF8, 0x26, 0x1F, + 0x97, 0xF8, 0x62, 0xC0, 0xB3, 0xF8, 0x04, 0xE0, 0xF8, 0x6D, 0xB7, 0xF8, + 0x60, 0x20, 0xA4, 0xF8, 0x76, 0x20, 0x00, 0x23, 0xA4, 0xF8, 0x70, 0xE0, + 0xE1, 0x66, 0xC4, 0xF8, 0x72, 0x00, 0x84, 0xF8, 0x6A, 0x30, 0x84, 0xF8, + 0x6B, 0x30, 0xBC, 0xF1, 0x00, 0x0F, 0x22, 0xD0, 0xF8, 0x6D, 0xA0, 0x67, + 0x6F, 0xF0, 0x37, 0x01, 0x02, 0x23, 0xA4, 0xF8, 0x7C, 0x20, 0x84, 0xF8, + 0x68, 0x10, 0x84, 0xF8, 0x69, 0x30, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x06, 0xBB, 0x00, 0x27, 0x9B, 0xF8, 0x22, 0x30, 0xA4, 0xF8, 0x80, 0xA0, + 0x84, 0xF8, 0x7E, 0x70, 0x84, 0xF8, 0x7F, 0x70, 0x28, 0x46, 0xC5, 0xE9, + 0x15, 0x98, 0x2B, 0x77, 0x6E, 0x77, 0x05, 0x21, 0xFF, 0xF7, 0x24, 0xFE, + 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, 0x6F, 0xF0, 0x37, 0x02, 0x01, 0x23, + 0xA1, 0x67, 0xA4, 0xF8, 0x7C, 0xE0, 0x84, 0xF8, 0x68, 0x20, 0x84, 0xF8, + 0x69, 0x30, 0xDC, 0xE7, 0x02, 0x2A, 0x9A, 0xD1, 0x0C, 0x49, 0x0D, 0x48, + 0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0x12, 0xFC, 0x01, 0x20, 0x1A, 0x21, + 0xFF, 0xF7, 0xFA, 0xFD, 0x05, 0x46, 0x00, 0x28, 0x9D, 0xD1, 0x01, 0x20, + 0xBD, 0xE8, 0xF8, 0x8F, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xF0, 0xDA, 0xE9, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x9C, 0xA1, 0xDF, 0xF8, 0x9C, 0x81, + 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x00, 0xA6, 0x05, 0x46, 0x96, 0xF8, + 0x22, 0x90, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x09, 0x80, 0x83, 0xB0, + 0x00, 0x6C, 0x00, 0x93, 0x0E, 0x1E, 0x17, 0x46, 0x9D, 0xF8, 0x30, 0x40, + 0x9D, 0xF8, 0x34, 0xB0, 0x55, 0x4A, 0x0C, 0xBF, 0x1E, 0x23, 0x1D, 0x23, + 0x00, 0x28, 0x00, 0xF0, 0x9D, 0x80, 0x12, 0x68, 0x01, 0x79, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0x85, 0x80, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x09, 0x82, 0x92, 0xF8, 0xC0, 0x24, 0x0A, 0x43, 0x14, 0xBF, + 0x01, 0x20, 0x00, 0x20, 0x19, 0x46, 0xFF, 0xF7, 0xAF, 0xFD, 0x03, 0x46, + 0x00, 0x28, 0x00, 0xF0, 0x81, 0x80, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x09, 0x88, 0xD0, 0xF8, 0x48, 0x90, 0x01, 0x93, 0x40, 0x46, 0x19, 0x46, + 0x11, 0xF0, 0x9E, 0xFE, 0xD9, 0xF8, 0x38, 0x00, 0x01, 0x9B, 0x40, 0x4A, + 0x99, 0x6C, 0xB8, 0xF8, 0x60, 0xE0, 0x00, 0x0C, 0x4F, 0xF0, 0x00, 0x0C, + 0x46, 0xEA, 0x07, 0x17, 0x00, 0x04, 0xC9, 0xF8, 0x38, 0x00, 0xD8, 0xF8, + 0x5C, 0x00, 0x8F, 0x67, 0x81, 0xF8, 0x7C, 0xC0, 0x81, 0xF8, 0x7D, 0xC0, + 0x81, 0xF8, 0x7E, 0xC0, 0x81, 0xF8, 0x7F, 0xC0, 0x92, 0xF8, 0x43, 0x70, + 0xDF, 0xF8, 0xE8, 0x80, 0xC1, 0xF8, 0x72, 0x00, 0x24, 0x20, 0xB8, 0xF8, + 0x04, 0x20, 0xA1, 0xF8, 0x76, 0xE0, 0x81, 0xF8, 0x68, 0x00, 0xD8, 0xF8, + 0x00, 0xE0, 0xA1, 0xF8, 0x70, 0x20, 0xB8, 0x06, 0xC1, 0xF8, 0x6C, 0xE0, + 0x81, 0xF8, 0x69, 0xC0, 0x81, 0xF8, 0x6A, 0xC0, 0x81, 0xF8, 0x6B, 0xC0, + 0xC7, 0xF3, 0x40, 0x12, 0x0B, 0xD5, 0x27, 0x48, 0x4F, 0xF4, 0x1E, 0x72, + 0x02, 0xFB, 0x05, 0x02, 0x52, 0x78, 0x12, 0xF0, 0x20, 0x0F, 0x0C, 0xBF, + 0x62, 0x46, 0x4F, 0xF4, 0x80, 0x12, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, + 0x05, 0xA5, 0x64, 0x05, 0x28, 0x8C, 0x00, 0x9D, 0x44, 0xEA, 0x45, 0x34, + 0x04, 0x43, 0x14, 0x43, 0xD8, 0x22, 0xC1, 0xF8, 0x80, 0x40, 0x81, 0xF8, + 0x84, 0x20, 0x6E, 0xB1, 0x0E, 0x9A, 0x5A, 0x65, 0x0F, 0x9A, 0x9A, 0x65, + 0x59, 0x46, 0x18, 0x46, 0xFF, 0xF7, 0x54, 0xFD, 0xB0, 0xFA, 0x80, 0xF0, + 0x40, 0x09, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0x4A, 0x12, 0xF8, + 0x0B, 0x20, 0x92, 0x01, 0x81, 0xF8, 0x85, 0x20, 0xEA, 0xE7, 0x02, 0x29, + 0x7F, 0xF4, 0x78, 0xAF, 0x0E, 0x48, 0x0F, 0x49, 0x01, 0x93, 0x4F, 0xF4, + 0x09, 0x72, 0x14, 0xF0, 0x41, 0xFB, 0x01, 0x9B, 0x01, 0x20, 0x77, 0xE7, + 0x01, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0x68, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0xEC, 0xDB, 0x01, 0x20, 0x6C, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x62, 0x66, 0x17, 0x00, + 0xA0, 0xB2, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xAC, 0xB2, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0x90, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x77, 0xD1, + 0x03, 0x6C, 0x04, 0x46, 0x89, 0x46, 0x00, 0x2B, 0x79, 0xD0, 0x40, 0x4A, + 0x1B, 0x79, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x51, 0xDB, + 0x94, 0xF8, 0xC0, 0x24, 0xDF, 0xF8, 0x08, 0x81, 0x13, 0x43, 0xB8, 0xF8, + 0x00, 0x10, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xFF, 0xF7, 0xEE, 0xFC, + 0x06, 0x46, 0x00, 0x28, 0x54, 0xD0, 0x01, 0x46, 0x20, 0x46, 0x11, 0xF0, + 0xE5, 0xFD, 0xB5, 0x6C, 0x00, 0x27, 0x50, 0x23, 0x49, 0x46, 0x85, 0xF8, + 0x68, 0x30, 0x85, 0xF8, 0x69, 0x70, 0x85, 0xF8, 0x6A, 0x70, 0x85, 0xF8, + 0x6B, 0x70, 0x05, 0xF1, 0x6C, 0x00, 0x06, 0x22, 0x26, 0xF0, 0x90, 0xFD, + 0x2B, 0x49, 0xE0, 0x6D, 0xB1, 0xF8, 0xFC, 0x31, 0xB4, 0xF8, 0x60, 0xC0, + 0xB8, 0xF8, 0x00, 0x20, 0xB4, 0xF8, 0x60, 0xE0, 0xC5, 0xF8, 0x72, 0x00, + 0x01, 0x33, 0x9B, 0xB2, 0xE0, 0x6D, 0xA5, 0xF8, 0x76, 0xC0, 0x4F, 0xEA, + 0x03, 0x1C, 0xA8, 0x67, 0xA5, 0xF8, 0x7C, 0xE0, 0x18, 0x3A, 0xA1, 0xF8, + 0xFC, 0x31, 0x05, 0xF1, 0x80, 0x00, 0xA5, 0xF8, 0x7E, 0xC0, 0x1E, 0x49, + 0x26, 0xF0, 0x70, 0xFD, 0xC6, 0xE9, 0x15, 0x77, 0x94, 0xF8, 0x63, 0x30, + 0x33, 0x77, 0xFF, 0x23, 0x73, 0x77, 0x30, 0x46, 0x05, 0x21, 0xFF, 0xF7, + 0xBB, 0xFC, 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x02, 0x2B, 0xAB, 0xD1, + 0x15, 0x49, 0x16, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0x14, 0xF0, 0xB4, 0xFA, + 0xDF, 0xF8, 0x58, 0x80, 0x01, 0x20, 0xB8, 0xF8, 0x00, 0x10, 0xFF, 0xF7, + 0x99, 0xFC, 0x06, 0x46, 0x00, 0x28, 0xAA, 0xD1, 0xB8, 0xF8, 0x00, 0x10, + 0x0E, 0x48, 0x14, 0xF0, 0x2B, 0xF8, 0x01, 0x20, 0xBD, 0xE8, 0xF8, 0x83, + 0x0C, 0x48, 0x19, 0x46, 0x14, 0xF0, 0x24, 0xF8, 0x01, 0x20, 0xBD, 0xE8, + 0xF8, 0x83, 0x03, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xE0, 0xDA, 0xD9, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x2C, 0x2A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, + 0x28, 0x91, 0x15, 0x00, 0x14, 0x91, 0x15, 0x00, 0x14, 0x2C, 0x17, 0x00, + 0x02, 0x4B, 0x40, 0xEA, 0x41, 0x01, 0x33, 0xF8, 0x11, 0x00, 0x70, 0x47, + 0xA0, 0x92, 0x15, 0x00, 0x02, 0x4B, 0x40, 0xEA, 0x41, 0x01, 0x58, 0x5C, + 0x70, 0x47, 0x00, 0xBF, 0x40, 0x93, 0x15, 0x00, 0xF0, 0xB4, 0x1D, 0x4C, + 0x1D, 0x4D, 0x1E, 0x4F, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, 0x02, 0x42, + 0x16, 0x46, 0x92, 0xF8, 0x22, 0x40, 0x4F, 0xF4, 0xA4, 0x6C, 0x0C, 0xFB, + 0x04, 0x54, 0x56, 0xF8, 0x26, 0x5F, 0xB4, 0xF8, 0x60, 0xC0, 0x02, 0x46, + 0xE0, 0x6D, 0xB4, 0x88, 0xA2, 0xF8, 0x9C, 0x40, 0x00, 0x24, 0x54, 0x65, + 0xC2, 0xF8, 0x8C, 0x40, 0x3C, 0x68, 0x3E, 0x68, 0x9D, 0xF8, 0x10, 0x70, + 0xC2, 0xF8, 0x9E, 0x00, 0x24, 0x02, 0xF6, 0xB2, 0x1B, 0x03, 0xA4, 0xB2, + 0x40, 0xF6, 0x08, 0x00, 0x34, 0x43, 0x40, 0xEA, 0xC7, 0x10, 0x43, 0xF0, + 0x04, 0x03, 0x09, 0x01, 0xC2, 0xF8, 0x98, 0x50, 0xC2, 0xF8, 0xCC, 0x40, + 0xA2, 0xF8, 0xA2, 0xC0, 0xF0, 0xBC, 0xA2, 0xF8, 0xA4, 0x30, 0xA2, 0xF8, + 0xA6, 0x10, 0xC2, 0xF8, 0xBC, 0x00, 0x70, 0x47, 0x68, 0x65, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0xA0, 0x00, 0x32, 0x40, 0xC2, 0x6C, 0x53, 0x6A, + 0x13, 0xB3, 0x12, 0x49, 0x12, 0x4B, 0xC9, 0x6E, 0x10, 0xB5, 0x04, 0x46, + 0x18, 0x68, 0x63, 0x6A, 0x92, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, + 0x60, 0x1F, 0x42, 0xF8, 0x03, 0x1C, 0x08, 0xD0, 0xB0, 0xF9, 0x00, 0x30, + 0x24, 0x68, 0x00, 0x2B, 0x04, 0xDB, 0xE2, 0x6C, 0x53, 0x6A, 0x00, 0x2B, + 0xED, 0xD1, 0x10, 0xBD, 0x00, 0x2C, 0xF8, 0xD1, 0x06, 0x49, 0x07, 0x48, + 0x40, 0xF2, 0xF9, 0x22, 0x14, 0xF0, 0x0E, 0xFA, 0xE3, 0x6C, 0xFF, 0xDE, + 0x70, 0x47, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x89, 0xB0, 0x04, 0x46, 0x9D, 0xF8, 0x48, 0x00, 0x67, 0x6C, 0x07, 0x90, + 0x9B, 0x46, 0x05, 0x28, 0x4F, 0xF0, 0x00, 0x03, 0x06, 0x91, 0x03, 0x92, + 0x9A, 0x46, 0x00, 0xF0, 0x12, 0x81, 0xAA, 0x4A, 0x00, 0xEB, 0x40, 0x03, + 0xC3, 0xEB, 0xC3, 0x03, 0x02, 0xEB, 0x83, 0x03, 0x04, 0x93, 0xDF, 0xF8, + 0xC8, 0x92, 0xA6, 0x48, 0x12, 0xF0, 0xD4, 0xFD, 0xD9, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0xC0, 0xF2, 0xF3, 0x80, + 0xBB, 0x88, 0xAB, 0x80, 0x7B, 0x7A, 0x6B, 0x72, 0xBB, 0x7A, 0xAB, 0x72, + 0x01, 0x23, 0xEB, 0x72, 0xD7, 0xE9, 0x10, 0xC0, 0xFE, 0x6A, 0x79, 0x69, + 0x3A, 0x6B, 0xEE, 0x62, 0x00, 0x23, 0x1E, 0x46, 0x69, 0x61, 0x6B, 0x62, + 0x19, 0x46, 0x98, 0x46, 0x02, 0x93, 0x05, 0xF1, 0x0C, 0x03, 0xC5, 0xE9, + 0x10, 0xC0, 0x2A, 0x63, 0x05, 0x93, 0x01, 0x96, 0x53, 0xE0, 0x9B, 0x45, + 0x40, 0xF2, 0xB4, 0x80, 0xAB, 0xEB, 0x03, 0x0A, 0x1F, 0xFA, 0x8A, 0xFA, + 0x0A, 0xF1, 0x03, 0x0A, 0x4F, 0xEA, 0x9A, 0x0A, 0x03, 0xEB, 0x8A, 0x03, + 0x9B, 0xB2, 0x03, 0x9E, 0x19, 0x44, 0xB1, 0x42, 0x5A, 0xD8, 0xB8, 0xF1, + 0x00, 0x0F, 0x57, 0xD1, 0xDE, 0xF8, 0x24, 0x00, 0x28, 0xB1, 0x87, 0x4E, + 0xDE, 0xF8, 0x28, 0x00, 0xF6, 0x6E, 0x40, 0xF8, 0x03, 0x6C, 0xDC, 0x45, + 0x65, 0x64, 0x0D, 0xD2, 0xDE, 0xF8, 0x4C, 0x20, 0x22, 0xF4, 0xFF, 0x22, + 0x22, 0xF4, 0xC0, 0x62, 0x42, 0xEA, 0x4A, 0x22, 0x42, 0xF4, 0x80, 0x70, + 0x62, 0x62, 0x63, 0x46, 0xCE, 0xF8, 0x4C, 0x00, 0x69, 0x62, 0x79, 0x6A, + 0x02, 0xF4, 0x60, 0x12, 0xCB, 0x1A, 0xB2, 0xF5, 0x60, 0x1F, 0x7B, 0x62, + 0x00, 0xF0, 0xAA, 0x80, 0x77, 0x4A, 0xD9, 0xF8, 0x00, 0x30, 0x11, 0x68, + 0x76, 0x4A, 0x91, 0xF8, 0x3E, 0x80, 0x12, 0x68, 0xB3, 0xF9, 0x00, 0x10, + 0x23, 0x68, 0x02, 0xF0, 0x3F, 0x02, 0x90, 0x45, 0x94, 0xBF, 0x4F, 0xF0, + 0x00, 0x08, 0x4F, 0xF0, 0x01, 0x08, 0x00, 0x29, 0x5D, 0xDB, 0x01, 0x9A, + 0x69, 0x6A, 0x02, 0x94, 0x01, 0x32, 0x01, 0x92, 0x1C, 0x46, 0xD4, 0xF8, + 0x4C, 0xE0, 0x62, 0x6A, 0xDE, 0xF8, 0x2C, 0x30, 0x9D, 0xF8, 0x04, 0x00, + 0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0xC2, 0xF3, + 0x49, 0x2C, 0x03, 0xEB, 0x8C, 0x0C, 0x1F, 0xFA, 0x8C, 0xFC, 0xDC, 0x45, + 0x97, 0xD3, 0x03, 0x9E, 0x63, 0x46, 0x19, 0x44, 0xB1, 0x42, 0xA4, 0xD9, + 0x02, 0x9B, 0x00, 0x2B, 0x00, 0xF0, 0xA2, 0x80, 0x02, 0x9B, 0x5B, 0x6A, + 0x03, 0xF4, 0x60, 0x12, 0xB2, 0xF5, 0x20, 0x1F, 0x41, 0xD0, 0x02, 0x9E, + 0xF2, 0x6C, 0x43, 0xF4, 0x60, 0x11, 0x43, 0xF4, 0x60, 0x13, 0x50, 0x73, + 0xC5, 0xF8, 0x38, 0x61, 0x73, 0x62, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, + 0x00, 0x30, 0x41, 0xF4, 0x80, 0x71, 0x00, 0x20, 0x00, 0x2B, 0xD1, 0x64, + 0xD0, 0x61, 0x3D, 0xDB, 0x04, 0x9A, 0x92, 0xF8, 0x50, 0x30, 0x01, 0x33, + 0x82, 0xF8, 0x50, 0x30, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, + 0x60, 0x1F, 0x73, 0xD0, 0x1C, 0x32, 0x16, 0x46, 0x48, 0x4B, 0x06, 0x9A, + 0x1B, 0x68, 0x14, 0x60, 0x5B, 0x78, 0x13, 0xB9, 0x63, 0x6C, 0x0C, 0x33, + 0x2B, 0x61, 0x29, 0x46, 0x30, 0x46, 0x12, 0xF0, 0xE7, 0xFC, 0x05, 0x98, + 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2B, 0x9F, 0xD1, 0x40, 0x49, + 0x40, 0x48, 0x02, 0x93, 0x40, 0xF2, 0xBD, 0x32, 0x14, 0xF0, 0x0A, 0xF9, + 0x02, 0x9B, 0x96, 0xE7, 0x4F, 0xF0, 0x00, 0x0A, 0x53, 0xE7, 0x02, 0x9E, + 0x3B, 0x4B, 0x01, 0x21, 0xD3, 0xF8, 0x58, 0x33, 0x30, 0x46, 0x98, 0x47, + 0xF3, 0x6C, 0x75, 0x64, 0x14, 0x33, 0x05, 0x93, 0xD9, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC1, 0xDA, 0x04, 0x9B, 0xDB, 0x69, + 0x9F, 0x42, 0xBD, 0xD0, 0x2F, 0x49, 0x32, 0x48, 0x40, 0xF2, 0xC3, 0x32, + 0x14, 0xF0, 0xEA, 0xF8, 0xB6, 0xE7, 0x00, 0x28, 0x7F, 0xF4, 0x0A, 0xAF, + 0x2A, 0x49, 0x2E, 0x48, 0x40, 0xF2, 0x27, 0x32, 0x14, 0xF0, 0xE0, 0xF8, + 0x02, 0xE7, 0x2C, 0x4B, 0x04, 0x93, 0xF2, 0xE6, 0xD9, 0xF8, 0x00, 0x30, + 0xC5, 0xF8, 0x38, 0x41, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x16, 0xDB, + 0x04, 0x9E, 0x1C, 0x36, 0x30, 0x46, 0x12, 0xF0, 0xBF, 0xFC, 0x1E, 0x4B, + 0x1B, 0x68, 0x5B, 0x78, 0x0B, 0xB9, 0x3B, 0x69, 0x2B, 0x61, 0x39, 0x46, + 0xD7, 0xF8, 0x48, 0x01, 0x12, 0xF0, 0x70, 0xFC, 0x06, 0x99, 0x22, 0x68, + 0xE3, 0x6C, 0x0A, 0x60, 0x00, 0x22, 0xDA, 0x61, 0xA1, 0xE7, 0x04, 0x9B, + 0xDB, 0x69, 0xBB, 0x42, 0xE4, 0xD0, 0x14, 0x49, 0x16, 0x48, 0x40, 0xF2, + 0xC3, 0x32, 0x14, 0xF0, 0xB3, 0xF8, 0xDD, 0xE7, 0x04, 0x9E, 0x1C, 0x36, + 0x30, 0x46, 0x12, 0xF0, 0x9D, 0xFC, 0x87, 0xE7, 0x0F, 0x4B, 0x07, 0x99, + 0xD3, 0xF8, 0xBC, 0x33, 0x07, 0xF1, 0x0C, 0x00, 0x98, 0x47, 0x02, 0x9B, + 0xD5, 0xF8, 0x48, 0x01, 0x05, 0x93, 0x29, 0x46, 0x12, 0xF0, 0x4A, 0xFC, + 0x85, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x8C, 0x64, 0x17, 0x00, + 0x94, 0x64, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, + 0x34, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x64, 0x91, 0x15, 0x00, 0x4C, 0x91, 0x15, 0x00, + 0xC4, 0x63, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x0C, 0x46, 0x41, 0x7F, 0x63, 0x7F, 0x99, 0x42, 0x85, 0xB0, 0x05, 0xD1, + 0xE3, 0x7E, 0x16, 0x46, 0xC2, 0x7E, 0x9A, 0x42, 0x05, 0x46, 0x03, 0xD0, + 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD4, 0xE9, 0x11, 0x73, + 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0xBB, 0x88, 0x13, 0xF0, 0x08, 0x00, + 0xF3, 0xD0, 0x13, 0xF0, 0x02, 0x00, 0xF0, 0xD0, 0x13, 0xF0, 0x01, 0x00, + 0x40, 0xF0, 0x86, 0x80, 0xDF, 0xF8, 0x4C, 0x91, 0x54, 0x23, 0x03, 0xFB, + 0x06, 0x93, 0x93, 0xF8, 0x4D, 0x20, 0x01, 0x2A, 0xE3, 0xD0, 0xD3, 0xF8, + 0x34, 0x80, 0xD8, 0xE9, 0x12, 0xBA, 0xBB, 0xF1, 0x00, 0x0F, 0x05, 0xD0, + 0xDA, 0xF8, 0x20, 0x20, 0x46, 0x4B, 0x12, 0x68, 0x9A, 0x42, 0xD6, 0xD1, + 0x45, 0x4A, 0x46, 0x4B, 0x11, 0x68, 0x1A, 0x68, 0x91, 0xF8, 0x3E, 0x30, + 0x91, 0xF8, 0x3F, 0x10, 0x02, 0xF0, 0x3F, 0x02, 0x0B, 0x44, 0x9A, 0x42, + 0xC8, 0xDD, 0xD8, 0xF8, 0x24, 0x20, 0x54, 0x23, 0x03, 0xFB, 0x06, 0x93, + 0x42, 0xF4, 0x60, 0x12, 0x18, 0x6B, 0xC8, 0xF8, 0x24, 0x20, 0xC7, 0xF8, + 0x38, 0x81, 0x03, 0x93, 0x03, 0xF0, 0xE0, 0xF8, 0x39, 0x4A, 0x03, 0x9B, + 0x12, 0x68, 0x93, 0xF8, 0x4D, 0x10, 0x8A, 0xF8, 0x0D, 0x10, 0x52, 0x78, + 0x00, 0x2A, 0x4F, 0xD1, 0xEB, 0x6C, 0x3A, 0x61, 0xD9, 0x6C, 0xCA, 0xE9, + 0x06, 0x22, 0x8A, 0x02, 0x44, 0xD5, 0x6B, 0x6C, 0x07, 0xF1, 0x0C, 0x01, + 0x19, 0x61, 0x54, 0x23, 0x03, 0xFB, 0x06, 0xF3, 0x0A, 0xF1, 0x14, 0x00, + 0x09, 0xEB, 0x03, 0x02, 0x49, 0xF8, 0x03, 0x00, 0x01, 0x23, 0xC2, 0xE9, + 0x01, 0x13, 0xD8, 0xF8, 0x24, 0x30, 0xBA, 0x88, 0x43, 0xF4, 0x80, 0x73, + 0xCA, 0xF8, 0x4C, 0x30, 0x42, 0xF0, 0x01, 0x03, 0xBB, 0x80, 0xBB, 0xF1, + 0x00, 0x0F, 0x08, 0xD0, 0x50, 0x07, 0x06, 0xD4, 0x11, 0x07, 0x37, 0xD4, + 0xA1, 0x6C, 0x4A, 0x6A, 0x42, 0xF0, 0x04, 0x02, 0x4A, 0x62, 0x9B, 0x07, + 0x06, 0xD5, 0x54, 0x23, 0x03, 0xFB, 0x06, 0x93, 0x3A, 0x6B, 0x1B, 0x6B, + 0x9B, 0x6A, 0x53, 0x61, 0x54, 0x24, 0x04, 0xFB, 0x06, 0x90, 0x04, 0xFB, + 0x06, 0x96, 0x1C, 0x30, 0x39, 0x46, 0x12, 0xF0, 0x91, 0xFB, 0x96, 0xF8, + 0x50, 0x30, 0x00, 0x22, 0x01, 0x33, 0xF2, 0x62, 0x86, 0xF8, 0x50, 0x30, + 0x01, 0x20, 0x68, 0xE7, 0xBB, 0x88, 0x72, 0xE7, 0x01, 0x20, 0x64, 0xE7, + 0x07, 0xF1, 0x0C, 0x01, 0x99, 0x61, 0xBA, 0xE7, 0xB8, 0x7A, 0x93, 0xF8, + 0x4E, 0x30, 0x7A, 0x7A, 0xB8, 0xF8, 0x22, 0x10, 0x00, 0x93, 0x03, 0x46, + 0x38, 0x46, 0xFF, 0xF7, 0x55, 0xFD, 0x07, 0xF1, 0x50, 0x03, 0xCA, 0xF8, + 0x1C, 0x30, 0xB6, 0xE7, 0x42, 0xF0, 0x03, 0x03, 0xBB, 0x80, 0xC8, 0xE7, + 0xDE, 0xFA, 0xFE, 0xCA, 0xC8, 0x35, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, + 0x34, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x45, 0x6C, 0x0C, 0x68, 0x6E, 0x7A, 0x60, 0x7F, 0x9D, 0xF8, 0x20, 0x70, + 0x86, 0x42, 0x03, 0xD1, 0xAE, 0x7A, 0xE0, 0x7E, 0x86, 0x42, 0x02, 0xD0, + 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xE6, 0x6C, 0xD5, 0xF8, 0x38, 0xE1, + 0xD6, 0xF8, 0x24, 0xC0, 0xDE, 0xF8, 0x4C, 0x80, 0xBC, 0xF1, 0x00, 0x0F, + 0x00, 0xF0, 0x82, 0x80, 0xBC, 0xF8, 0x00, 0x90, 0x19, 0xF4, 0x00, 0x4F, + 0x1F, 0xFA, 0x89, 0xF0, 0x7A, 0xD1, 0x6F, 0xEA, 0x40, 0x40, 0x6F, 0xEA, + 0x50, 0x40, 0xAC, 0xF8, 0x00, 0x00, 0x94, 0xF8, 0x33, 0x90, 0x94, 0xF8, + 0x32, 0x00, 0x09, 0xF1, 0x04, 0x09, 0x04, 0x30, 0x84, 0xF8, 0x33, 0x90, + 0x84, 0xF8, 0x32, 0x00, 0xF0, 0x6A, 0x00, 0xF1, 0x04, 0x0A, 0xB0, 0x6A, + 0x00, 0xF1, 0x04, 0x09, 0xC6, 0xE9, 0x0A, 0x9A, 0x0A, 0xF1, 0x03, 0x00, + 0x20, 0xF0, 0x03, 0x00, 0x04, 0x30, 0x80, 0xB2, 0x83, 0x42, 0x5C, 0xD9, + 0xA3, 0xEB, 0x00, 0x09, 0x1F, 0xFA, 0x89, 0xF9, 0x09, 0xF1, 0x03, 0x09, + 0x4F, 0xEA, 0x99, 0x09, 0x00, 0xEB, 0x89, 0x00, 0x80, 0xB2, 0x6B, 0x6A, + 0x18, 0x44, 0x90, 0x42, 0xBA, 0xD8, 0x28, 0x4A, 0xDE, 0xF8, 0x24, 0x30, + 0x4F, 0xF0, 0x54, 0x0A, 0x0A, 0xFB, 0x07, 0x27, 0x23, 0xF4, 0xC0, 0x13, + 0x97, 0xF8, 0x50, 0x20, 0xDF, 0xF8, 0x90, 0xA0, 0x01, 0x3A, 0x87, 0xF8, + 0x50, 0x20, 0x43, 0xF4, 0x40, 0x12, 0xCE, 0xF8, 0x24, 0x20, 0x62, 0x6A, + 0xDA, 0xF8, 0x00, 0x70, 0xD4, 0xF8, 0x00, 0xE0, 0x22, 0xF4, 0xC0, 0x12, + 0x42, 0xEA, 0x49, 0x29, 0x43, 0xF4, 0x40, 0x13, 0x49, 0xF4, 0xF0, 0x0A, + 0x43, 0xF4, 0x80, 0x73, 0xC8, 0xF8, 0x4C, 0x30, 0x49, 0xF4, 0xF0, 0x02, + 0x00, 0x23, 0x4A, 0xF4, 0x80, 0x7A, 0x06, 0xF1, 0x14, 0x09, 0xC8, 0xF8, + 0x1C, 0x90, 0x62, 0x62, 0xC6, 0xF8, 0x4C, 0xA0, 0xB3, 0x61, 0xB3, 0x63, + 0x68, 0x62, 0x65, 0x64, 0xC5, 0xF8, 0x38, 0x41, 0xC1, 0xF8, 0x00, 0xE0, + 0x7B, 0x78, 0x03, 0xB9, 0x2B, 0x61, 0xBC, 0xF1, 0x00, 0x0F, 0x04, 0xD0, + 0x09, 0x4A, 0xB3, 0x6A, 0xD2, 0x6E, 0x43, 0xF8, 0x03, 0x2C, 0x98, 0xF8, + 0x0D, 0x30, 0x01, 0x33, 0x73, 0x73, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, + 0xD6, 0xF8, 0x2C, 0xA0, 0x9A, 0xE7, 0x4F, 0xF0, 0x00, 0x09, 0xAA, 0xE7, + 0x20, 0x62, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x85, 0xB0, 0xD1, 0xF8, 0x00, 0xB0, 0x9D, 0xF8, + 0x38, 0x90, 0xDF, 0xF8, 0x20, 0xA1, 0xDB, 0xF8, 0x44, 0x60, 0xDA, 0xF8, + 0x60, 0x43, 0x03, 0x93, 0x0F, 0x46, 0x90, 0x46, 0x59, 0x46, 0x4A, 0x46, + 0x05, 0x46, 0xA0, 0x47, 0x00, 0x28, 0x60, 0xD0, 0xE9, 0x6C, 0x03, 0x9B, + 0xCA, 0x6A, 0x02, 0xF1, 0x03, 0x0E, 0x2E, 0xF0, 0x03, 0x0E, 0x0E, 0xF1, + 0x04, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, 0x73, 0x45, 0x01, 0xF1, 0x14, 0x0C, + 0x54, 0xD8, 0x00, 0x20, 0x72, 0x6A, 0x0E, 0xEB, 0x02, 0x03, 0x43, 0x45, + 0x05, 0xD9, 0x34, 0x4A, 0x12, 0x68, 0x02, 0xF0, 0x3F, 0x02, 0x11, 0x2A, + 0x5D, 0xD9, 0x32, 0x4A, 0x6C, 0x6A, 0x4F, 0xF0, 0x54, 0x0E, 0x0E, 0xFB, + 0x09, 0x22, 0x24, 0xF4, 0xC0, 0x14, 0x92, 0xF8, 0x50, 0xE0, 0x44, 0xEA, + 0x40, 0x24, 0x0E, 0xF1, 0xFF, 0x30, 0x82, 0xF8, 0x50, 0x00, 0x44, 0xF4, + 0xD0, 0x0E, 0x72, 0x69, 0xCA, 0x61, 0xC6, 0xF8, 0x14, 0xC0, 0x73, 0x62, + 0xC5, 0xF8, 0x24, 0xE0, 0xDB, 0xF8, 0x24, 0x20, 0xD6, 0xF8, 0x38, 0xC1, + 0x6E, 0x64, 0x22, 0xF4, 0xC0, 0x12, 0x74, 0x46, 0x42, 0xF4, 0x40, 0x10, + 0xDB, 0xF8, 0x4C, 0xE0, 0xDC, 0xF8, 0x4C, 0xC0, 0x44, 0xF4, 0x80, 0x74, + 0xCC, 0x64, 0x42, 0xF4, 0x40, 0x12, 0x40, 0xF4, 0x80, 0x70, 0x00, 0x24, + 0x8C, 0x63, 0xCB, 0xF8, 0x24, 0x20, 0xCE, 0xF8, 0x4C, 0x00, 0x9C, 0xF8, + 0x0D, 0x20, 0x43, 0x45, 0x02, 0xF1, 0x01, 0x02, 0x8C, 0xF8, 0x0D, 0x20, + 0x16, 0xD9, 0xDA, 0xF8, 0x70, 0x63, 0x03, 0x9B, 0xCD, 0xF8, 0x00, 0x90, + 0x42, 0x46, 0x39, 0x46, 0x28, 0x46, 0xB0, 0x47, 0x20, 0x46, 0x05, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xA3, 0xEB, 0x0E, 0x04, 0xA4, 0xB2, 0x03, 0x34, + 0xA0, 0x08, 0x0E, 0xEB, 0x80, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, 0xA1, 0xE7, + 0x58, 0x46, 0xFF, 0xF7, 0x53, 0xFC, 0xD6, 0xF8, 0x38, 0x31, 0x1B, 0x68, + 0x3B, 0x60, 0x01, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x20, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, 0x54, 0x83, 0x32, 0x40, + 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x2D, 0xED, 0x02, 0x8B, 0x05, 0x46, 0x89, 0xB0, 0x6E, 0x6C, 0x9D, 0xF8, + 0x50, 0x40, 0x04, 0x91, 0x0F, 0x46, 0x1C, 0x20, 0x54, 0x21, 0x11, 0xFB, + 0x04, 0x01, 0xD6, 0xF8, 0x38, 0x01, 0x06, 0x90, 0xAB, 0x48, 0x05, 0x94, + 0x41, 0x18, 0x3C, 0x68, 0x01, 0x92, 0x08, 0x46, 0x08, 0xEE, 0x10, 0x1A, + 0x07, 0x93, 0xD4, 0xF8, 0x44, 0x80, 0xD4, 0xF8, 0x4C, 0x90, 0x12, 0xF0, + 0x41, 0xFA, 0xA5, 0x4B, 0x05, 0x9A, 0xD3, 0xF8, 0x60, 0x33, 0x28, 0x46, + 0x21, 0x46, 0x98, 0x47, 0x00, 0x23, 0x02, 0x93, 0x00, 0x28, 0x00, 0xF0, + 0xF8, 0x80, 0xDF, 0xF8, 0x98, 0xA2, 0x9F, 0x48, 0xDA, 0xF8, 0x00, 0x20, + 0x03, 0x68, 0x92, 0xF8, 0x3E, 0x20, 0x03, 0xF0, 0x3F, 0x03, 0x9A, 0x42, + 0x00, 0xF2, 0xFD, 0x80, 0x06, 0x9A, 0x04, 0x9D, 0x53, 0x6A, 0x2D, 0x68, + 0x03, 0x90, 0x17, 0x46, 0x23, 0xF4, 0xC0, 0x13, 0xD2, 0x6C, 0x43, 0xF4, + 0x40, 0x11, 0x09, 0xF1, 0x14, 0x0C, 0x92, 0xF8, 0x0D, 0xB0, 0xC2, 0xF8, + 0x1C, 0xC0, 0x79, 0x62, 0x61, 0x6A, 0x07, 0x9F, 0x43, 0xF4, 0x40, 0x13, + 0x21, 0xF4, 0xC0, 0x11, 0x43, 0xF4, 0x80, 0x73, 0x41, 0xF4, 0x40, 0x11, + 0xD3, 0x64, 0x61, 0x62, 0x6B, 0x6A, 0x43, 0xF4, 0x80, 0x73, 0xC9, 0xF8, + 0x4C, 0x30, 0x02, 0x9B, 0x99, 0x46, 0x4C, 0xE0, 0x9F, 0x42, 0x40, 0xF2, + 0x93, 0x80, 0xFA, 0x1A, 0x92, 0xB2, 0x03, 0x32, 0x4F, 0xEA, 0x92, 0x09, + 0x03, 0xEB, 0x89, 0x03, 0x9B, 0xB2, 0x72, 0x6A, 0x01, 0x98, 0x1A, 0x44, + 0x82, 0x42, 0x53, 0xD8, 0x03, 0x9D, 0xDA, 0xF8, 0x00, 0x00, 0x2D, 0x68, + 0x90, 0xF8, 0x3E, 0x00, 0x05, 0xF0, 0x3F, 0x05, 0xA8, 0x42, 0x49, 0xD8, + 0xDC, 0xF8, 0x24, 0x00, 0x28, 0xB1, 0x79, 0x4D, 0xDC, 0xF8, 0x28, 0x00, + 0xED, 0x6E, 0x40, 0xF8, 0x03, 0x5C, 0xBE, 0x45, 0x66, 0x64, 0x0D, 0xD2, + 0xDC, 0xF8, 0x4C, 0x10, 0x21, 0xF4, 0xFF, 0x21, 0x21, 0xF4, 0xC0, 0x61, + 0x41, 0xEA, 0x49, 0x21, 0x41, 0xF4, 0x80, 0x70, 0x61, 0x62, 0x73, 0x46, + 0xCC, 0xF8, 0x4C, 0x00, 0x72, 0x62, 0xD8, 0xF8, 0x24, 0x20, 0x01, 0xF4, + 0x60, 0x11, 0xD3, 0x1A, 0xB1, 0xF5, 0x60, 0x1F, 0xC8, 0xF8, 0x24, 0x30, + 0x59, 0xD0, 0x69, 0x4B, 0x25, 0x68, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x0B, 0xF1, 0x01, 0x0B, 0x00, 0x2B, 0x5F, 0xFA, 0x8B, 0xFB, 0x42, 0xDB, + 0x69, 0x6A, 0x02, 0x94, 0x2C, 0x46, 0xD4, 0xF8, 0x4C, 0xC0, 0xDC, 0xF8, + 0x2C, 0x30, 0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, + 0xC1, 0xF3, 0x49, 0x2E, 0x03, 0xEB, 0x8E, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, + 0xBE, 0x45, 0xA1, 0xD3, 0x72, 0x6A, 0x01, 0x98, 0x73, 0x46, 0x1A, 0x44, + 0x82, 0x42, 0xAB, 0xD9, 0xDD, 0xF8, 0x08, 0x90, 0xB9, 0xF1, 0x00, 0x0F, + 0x7E, 0xD0, 0xD9, 0xF8, 0x4C, 0x10, 0x81, 0xF8, 0x0D, 0xB0, 0xD9, 0xF8, + 0x24, 0x30, 0xC6, 0xF8, 0x38, 0x91, 0x43, 0xF4, 0x60, 0x12, 0xC9, 0xF8, + 0x24, 0x20, 0x62, 0x6A, 0x43, 0xF4, 0x60, 0x13, 0x02, 0xF4, 0x60, 0x12, + 0x43, 0xF4, 0x80, 0x73, 0x00, 0x20, 0xB2, 0xF5, 0x60, 0x1F, 0xCB, 0x64, + 0xC8, 0x61, 0x60, 0xD0, 0x48, 0x4B, 0x04, 0x9A, 0x1B, 0x68, 0x14, 0x60, + 0x5D, 0x78, 0x00, 0x2D, 0x47, 0xD1, 0x63, 0x6C, 0x0C, 0x33, 0x33, 0x61, + 0x2C, 0xE0, 0x00, 0x2D, 0xBA, 0xD1, 0x43, 0x49, 0x43, 0x48, 0x40, 0xF2, + 0xF4, 0x52, 0x13, 0xF0, 0x7D, 0xFD, 0xB3, 0xE7, 0x4F, 0xF0, 0x00, 0x09, + 0x71, 0xE7, 0x05, 0x9A, 0x11, 0x46, 0x37, 0x4A, 0x54, 0x23, 0x03, 0xFB, + 0x01, 0x23, 0x3A, 0x49, 0x93, 0xF8, 0x50, 0x20, 0x09, 0x68, 0xC6, 0xF8, + 0x38, 0x41, 0x01, 0x3A, 0x83, 0xF8, 0x50, 0x20, 0x4B, 0x78, 0x43, 0xB3, + 0x18, 0xEE, 0x10, 0x0A, 0x12, 0xF0, 0x54, 0xF9, 0x41, 0x46, 0xD8, 0xF8, + 0x48, 0x01, 0x12, 0xF0, 0x0B, 0xF9, 0x04, 0x99, 0x22, 0x68, 0xE3, 0x6C, + 0x0A, 0x60, 0x00, 0x22, 0xDA, 0x61, 0x01, 0x25, 0x18, 0xEE, 0x10, 0x0A, + 0x31, 0x46, 0x12, 0xF0, 0x23, 0xF9, 0x28, 0x46, 0x09, 0xB0, 0xBD, 0xEC, + 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x05, 0x46, 0x31, 0x46, 0x18, 0xEE, + 0x10, 0x0A, 0x12, 0xF0, 0x17, 0xF9, 0x28, 0x46, 0x09, 0xB0, 0xBD, 0xEC, + 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x25, 0xE6, 0xE7, 0xD8, 0xF8, + 0x10, 0x30, 0x33, 0x61, 0xD2, 0xE7, 0x18, 0xEE, 0x10, 0x0A, 0x31, 0x46, + 0x12, 0xF0, 0x06, 0xF9, 0x02, 0x9D, 0x28, 0x46, 0x09, 0xB0, 0xBD, 0xEC, + 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x18, 0xEE, 0x10, 0x0A, 0x12, 0xF0, + 0x1B, 0xF9, 0x99, 0xE7, 0x06, 0x99, 0x4A, 0x6A, 0xCD, 0x6C, 0x42, 0xF4, + 0x60, 0x13, 0xC5, 0xF8, 0x1C, 0x90, 0x4B, 0x62, 0x63, 0x6A, 0x23, 0xF4, + 0xC0, 0x13, 0x43, 0xF4, 0x20, 0x17, 0x42, 0xF4, 0x60, 0x12, 0x43, 0xF4, + 0x20, 0x13, 0x42, 0xF4, 0x80, 0x72, 0x47, 0xF4, 0x80, 0x77, 0xEA, 0x64, + 0x18, 0xEE, 0x10, 0x0A, 0x63, 0x62, 0x31, 0x46, 0xCC, 0xF8, 0x4C, 0x70, + 0x12, 0xF0, 0xDC, 0xF8, 0x04, 0x9B, 0x4D, 0x46, 0x1C, 0x60, 0xB4, 0xE7, + 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, + 0x94, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xA4, 0x91, 0x15, 0x00, 0xC8, 0x35, 0x17, 0x00, + 0x82, 0x69, 0x03, 0x32, 0x22, 0xF0, 0x03, 0x02, 0x04, 0x32, 0x93, 0xB2, + 0x99, 0x42, 0x04, 0xD9, 0xC8, 0x1A, 0x80, 0xB2, 0x03, 0x30, 0x80, 0x08, + 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x4F, + 0x43, 0x4A, 0x44, 0x4B, 0x11, 0x68, 0x18, 0x68, 0x88, 0x42, 0x08, 0xD0, + 0xD2, 0xE9, 0x01, 0x54, 0xD2, 0xE9, 0x03, 0x02, 0xC3, 0xE9, 0x00, 0x15, + 0xC3, 0xE9, 0x02, 0x40, 0x1A, 0x61, 0x3E, 0x48, 0x3C, 0x4D, 0x3E, 0x4F, + 0xDF, 0xF8, 0x04, 0x81, 0x30, 0x22, 0x00, 0x21, 0x06, 0x46, 0xEE, 0xF7, + 0xE3, 0xFF, 0x05, 0xF1, 0x18, 0x09, 0x3B, 0x68, 0x55, 0xF8, 0x04, 0x0B, + 0x4F, 0xF4, 0xAC, 0x72, 0x02, 0xFB, 0x03, 0xF2, 0x00, 0x21, 0xEE, 0xF7, + 0xD7, 0xFF, 0x57, 0xF8, 0x04, 0x3B, 0x00, 0x2B, 0x58, 0xDD, 0x4F, 0xF0, + 0x00, 0x0B, 0xDA, 0x46, 0x55, 0xF8, 0x04, 0x4C, 0x30, 0x4B, 0x5C, 0x44, + 0x05, 0x20, 0x04, 0xF1, 0xA8, 0x01, 0x63, 0x64, 0x2E, 0x4B, 0xC4, 0xF8, + 0xA8, 0x30, 0x84, 0xF8, 0x97, 0x00, 0x04, 0xF1, 0x94, 0x03, 0x04, 0xF1, + 0xAB, 0x00, 0x61, 0x67, 0x18, 0x21, 0x6F, 0xF0, 0x7B, 0x0C, 0x23, 0x66, + 0x60, 0x66, 0x4F, 0xF4, 0xC0, 0x63, 0x40, 0xF2, 0x43, 0x10, 0xA1, 0x66, + 0x00, 0x21, 0xC4, 0xE9, 0x21, 0x30, 0xC4, 0xE9, 0x0D, 0x11, 0xC4, 0xE9, + 0x16, 0x11, 0xC4, 0xE9, 0x1E, 0x11, 0x84, 0xF8, 0x94, 0xC0, 0x84, 0xF8, + 0x95, 0x10, 0x84, 0xF8, 0x96, 0x10, 0xA1, 0x62, 0xE1, 0x63, 0xE1, 0x66, + 0xC4, 0xF8, 0x80, 0x10, 0x21, 0x67, 0xC4, 0xF8, 0x48, 0x61, 0xC4, 0xF8, + 0x0C, 0x80, 0xC4, 0xF8, 0x50, 0x80, 0xF0, 0xF7, 0x7F, 0xF8, 0x80, 0x03, + 0xC4, 0xF8, 0xAC, 0x00, 0xF0, 0xF7, 0x7A, 0xF8, 0x4F, 0xF0, 0x01, 0x0C, + 0x01, 0x30, 0x0C, 0xFA, 0x00, 0xF0, 0x12, 0x4B, 0xC4, 0xF8, 0xB8, 0x30, + 0x01, 0x38, 0x00, 0x21, 0xC4, 0xE9, 0x2C, 0x01, 0x21, 0x46, 0x30, 0x46, + 0x12, 0xF0, 0x16, 0xF8, 0x57, 0xF8, 0x04, 0x1C, 0x0A, 0xF1, 0x01, 0x0A, + 0x8A, 0x45, 0x0B, 0xF5, 0xAC, 0x7B, 0xA9, 0xDB, 0x4D, 0x45, 0x06, 0xF1, + 0x08, 0x06, 0x94, 0xD1, 0xBD, 0xE8, 0xF8, 0x8F, 0xEC, 0x57, 0x18, 0x00, + 0x74, 0x1F, 0x17, 0x00, 0x64, 0x64, 0x17, 0x00, 0x8C, 0x1F, 0x17, 0x00, + 0x00, 0x01, 0x20, 0x00, 0x1E, 0xAB, 0xDC, 0xBA, 0x04, 0x07, 0xFF, 0xFF, + 0xBE, 0xBA, 0xFE, 0xCA, 0x2D, 0xE9, 0xF8, 0x43, 0x18, 0x4A, 0x19, 0x4B, + 0x11, 0x68, 0x18, 0x68, 0x88, 0x42, 0x08, 0xD0, 0xD2, 0xE9, 0x01, 0x54, + 0xD2, 0xE9, 0x03, 0x02, 0xC3, 0xE9, 0x00, 0x15, 0xC3, 0xE9, 0x02, 0x40, + 0x1A, 0x61, 0x13, 0x4C, 0x13, 0x4F, 0x11, 0x4E, 0x04, 0xF1, 0x30, 0x09, + 0x20, 0x46, 0x11, 0xF0, 0xDB, 0xFF, 0x57, 0xF8, 0x04, 0x3B, 0x00, 0x2B, + 0x0E, 0xDD, 0x00, 0x25, 0xA8, 0x46, 0x31, 0x68, 0x20, 0x46, 0x29, 0x44, + 0x11, 0xF0, 0xD4, 0xFF, 0x57, 0xF8, 0x04, 0x3C, 0x08, 0xF1, 0x01, 0x08, + 0x98, 0x45, 0x05, 0xF5, 0xAC, 0x75, 0xF2, 0xDB, 0x08, 0x34, 0x4C, 0x45, + 0x06, 0xF1, 0x04, 0x06, 0xE4, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, + 0xEC, 0x57, 0x18, 0x00, 0x74, 0x1F, 0x17, 0x00, 0x64, 0x64, 0x17, 0x00, + 0x8C, 0x1F, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x28, 0x82, 0xB0, + 0x06, 0x46, 0x00, 0xF0, 0xBD, 0x80, 0x6A, 0x4C, 0x00, 0xEB, 0x40, 0x03, + 0xC3, 0xEB, 0xC3, 0x03, 0x04, 0xEB, 0x83, 0x04, 0x94, 0xF8, 0x4D, 0x30, + 0xE7, 0x6A, 0x65, 0x6B, 0x01, 0x2B, 0x69, 0xD1, 0xD5, 0xE9, 0x12, 0x38, + 0x00, 0x22, 0x4F, 0xF4, 0x80, 0x71, 0x6A, 0x62, 0xC8, 0xF8, 0x1C, 0x20, + 0xC8, 0xF8, 0x4C, 0x10, 0x00, 0x2B, 0x4C, 0xD0, 0xBA, 0x88, 0x11, 0x07, + 0x49, 0xD5, 0xD3, 0xE9, 0x17, 0x21, 0x28, 0x33, 0xC8, 0xF8, 0x34, 0x10, + 0xC8, 0xF8, 0x48, 0x20, 0xC8, 0xF8, 0x38, 0x30, 0x2B, 0x7F, 0x58, 0x4A, + 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, + 0x63, 0xBB, 0x55, 0x4A, 0x6B, 0x7F, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, + 0x03, 0x23, 0x5B, 0x68, 0x9A, 0x06, 0x23, 0xD5, 0xEB, 0x8B, 0x13, 0xF4, + 0x00, 0x5F, 0xEB, 0x6A, 0xDB, 0x6B, 0x14, 0xBF, 0xC3, 0xF3, 0x00, 0x13, + 0xC3, 0xF3, 0xC0, 0x03, 0xC3, 0xB9, 0xD8, 0xF8, 0x24, 0x10, 0x0B, 0x88, + 0x9A, 0xB2, 0x1B, 0x04, 0x12, 0xD5, 0xC2, 0xF3, 0x0E, 0x02, 0x0A, 0x80, + 0x95, 0xF8, 0x33, 0x20, 0x95, 0xF8, 0x32, 0x30, 0x04, 0x3A, 0x04, 0x3B, + 0x85, 0xF8, 0x33, 0x20, 0x85, 0xF8, 0x32, 0x30, 0xD8, 0xE9, 0x0A, 0x32, + 0x04, 0x3A, 0x04, 0x3B, 0xC8, 0xE9, 0x0A, 0x32, 0x28, 0x46, 0x02, 0xF0, + 0x71, 0xFC, 0x3E, 0x4B, 0x08, 0xF1, 0x14, 0x01, 0xD3, 0xF8, 0x9C, 0x33, + 0x32, 0x46, 0x08, 0x46, 0x98, 0x47, 0xD7, 0xF8, 0x48, 0x01, 0x39, 0x46, + 0x11, 0xF0, 0x4A, 0xFF, 0x00, 0x23, 0x6B, 0x64, 0x94, 0xF8, 0x50, 0x30, + 0x00, 0x22, 0x01, 0x33, 0x84, 0xF8, 0x50, 0x30, 0xE2, 0x62, 0x02, 0xB0, + 0xBD, 0xE8, 0xF0, 0x87, 0x6B, 0x6A, 0xDF, 0xF8, 0xCC, 0x90, 0x20, 0x6B, + 0xD5, 0xE9, 0x12, 0xA8, 0x43, 0xF4, 0x60, 0x13, 0x6B, 0x62, 0xC7, 0xF8, + 0x38, 0x51, 0x02, 0xF0, 0x37, 0xFC, 0x94, 0xF8, 0x4D, 0x20, 0xD9, 0xF8, + 0x00, 0x30, 0x88, 0xF8, 0x0D, 0x20, 0x5B, 0x78, 0x00, 0x2B, 0x34, 0xD1, + 0x3B, 0x61, 0x6B, 0x6A, 0xB9, 0x88, 0x43, 0xF4, 0x80, 0x73, 0x41, 0xF0, + 0x01, 0x02, 0xC8, 0xF8, 0x4C, 0x30, 0xBA, 0x80, 0xBA, 0xF1, 0x00, 0x0F, + 0x09, 0xD0, 0x4D, 0x07, 0x07, 0xD4, 0x08, 0x07, 0x31, 0xD4, 0x23, 0x6B, + 0x99, 0x6C, 0x4B, 0x6A, 0x43, 0xF0, 0x04, 0x03, 0x4B, 0x62, 0x93, 0x07, + 0x10, 0xD5, 0xD9, 0xF8, 0x00, 0x30, 0x5B, 0x78, 0xA3, 0xB9, 0x08, 0xF1, + 0x14, 0x01, 0x23, 0x6B, 0x3A, 0x6B, 0x98, 0x6A, 0x15, 0x4B, 0x50, 0x61, + 0xD3, 0xF8, 0x9C, 0x33, 0x32, 0x46, 0x07, 0xF1, 0x0C, 0x00, 0x98, 0x47, + 0x39, 0x46, 0x04, 0xF1, 0x1C, 0x00, 0x11, 0xF0, 0xF9, 0xFE, 0xAF, 0xE7, + 0x0F, 0x4C, 0x47, 0xE7, 0x07, 0xF1, 0x50, 0x01, 0xE9, 0xE7, 0x94, 0xF8, + 0x4E, 0x00, 0xBB, 0x7A, 0x7A, 0x7A, 0x69, 0x8C, 0x00, 0x90, 0x38, 0x46, + 0xFF, 0xF7, 0xCA, 0xF8, 0x07, 0xF1, 0x50, 0x03, 0xC8, 0xF8, 0x1C, 0x30, + 0xBD, 0xE7, 0x41, 0xF0, 0x03, 0x02, 0xBA, 0x80, 0xCF, 0xE7, 0x00, 0xBF, + 0x20, 0x62, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0xD0, 0xF8, 0x4C, 0x90, 0x8B, 0xB0, 0x09, 0xF1, + 0x14, 0x03, 0x05, 0x29, 0x04, 0x46, 0x0E, 0x46, 0x00, 0x93, 0x00, 0xF0, + 0xAD, 0x81, 0x57, 0x4D, 0x01, 0xEB, 0x41, 0x03, 0xC3, 0xEB, 0xC3, 0x03, + 0x05, 0xEB, 0x83, 0x05, 0x94, 0xF8, 0x1B, 0xB0, 0x94, 0xF8, 0x1D, 0xA0, + 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x50, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x40, 0x81, 0xEA, 0x6A, 0xD8, 0xF8, + 0x00, 0x30, 0x01, 0x33, 0xC8, 0xF8, 0x00, 0x30, 0x00, 0x2A, 0x79, 0xD0, + 0x4A, 0x4F, 0x06, 0xE0, 0xD7, 0xF8, 0x5C, 0x33, 0x30, 0x46, 0x98, 0x47, + 0xEA, 0x6A, 0x00, 0x2A, 0x70, 0xD0, 0x63, 0x6A, 0x99, 0x02, 0xF5, 0xD5, + 0x03, 0xF4, 0x60, 0x11, 0xB1, 0xF5, 0x20, 0x1F, 0xF0, 0xD0, 0x50, 0x7A, + 0x61, 0x7F, 0x88, 0x42, 0xEC, 0xD1, 0x90, 0x7A, 0xE1, 0x7E, 0x88, 0x42, + 0xE8, 0xD1, 0xD9, 0xF8, 0x2C, 0x10, 0xB5, 0xF8, 0x48, 0x00, 0x03, 0x31, + 0x21, 0xF0, 0x03, 0x01, 0x04, 0x31, 0x89, 0xB2, 0x88, 0x42, 0x00, 0xF2, + 0x5D, 0x81, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90, 0x86, 0x46, 0x68, 0x6B, + 0x01, 0x90, 0x50, 0x6A, 0x02, 0x90, 0x01, 0x98, 0x95, 0xF8, 0x4F, 0xC0, + 0xC0, 0x6C, 0x04, 0x90, 0x03, 0x98, 0xA5, 0xF8, 0x4A, 0xE0, 0x08, 0x44, + 0x02, 0x99, 0x05, 0xEB, 0x8C, 0x0E, 0x08, 0x44, 0x4F, 0xEA, 0x8C, 0x01, + 0x03, 0x91, 0xDE, 0xF8, 0x38, 0x10, 0x88, 0x42, 0x40, 0xF2, 0x82, 0x81, + 0x95, 0xF8, 0x4E, 0x10, 0x61, 0x45, 0xBB, 0xD9, 0x95, 0xF8, 0x4D, 0x10, + 0x01, 0x29, 0xB7, 0xD0, 0xDE, 0xF8, 0x3C, 0xE0, 0x70, 0x45, 0xB3, 0xD8, + 0x03, 0x9F, 0x17, 0x44, 0xBB, 0x46, 0x01, 0x9F, 0xCB, 0xF8, 0x3C, 0x71, + 0x0C, 0xF1, 0x01, 0x0C, 0x02, 0x9F, 0xCB, 0xF8, 0x34, 0x70, 0x85, 0xF8, + 0x4F, 0xC0, 0x05, 0x9F, 0x62, 0x64, 0x43, 0xEA, 0x47, 0x23, 0x23, 0xF4, + 0xC0, 0x13, 0x43, 0xF4, 0xE0, 0x03, 0x63, 0x62, 0xC9, 0xF8, 0x4C, 0x30, + 0x04, 0x9B, 0x1F, 0x46, 0x00, 0x9B, 0xFB, 0x61, 0x50, 0x62, 0x95, 0xF8, + 0x4C, 0x20, 0x6C, 0x63, 0x4B, 0x1C, 0xDB, 0xB2, 0x9A, 0x42, 0x85, 0xF8, + 0x4D, 0x30, 0x0D, 0xD8, 0x10, 0x4B, 0x30, 0x46, 0xD3, 0xF8, 0x5C, 0x33, + 0x98, 0x47, 0x07, 0xE0, 0x63, 0x6A, 0x98, 0x02, 0x1C, 0xD4, 0x95, 0xF8, + 0x50, 0x30, 0x01, 0x33, 0x85, 0xF8, 0x50, 0x30, 0xD8, 0xF8, 0x00, 0x30, + 0x3B, 0xB1, 0x07, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x00, 0x20, 0x0B, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xA3, 0x6A, 0xDB, 0x0A, + 0x13, 0xF0, 0x06, 0x0F, 0xDD, 0xD0, 0xB0, 0x48, 0x00, 0xEB, 0xC6, 0x00, + 0x11, 0xF0, 0x4A, 0xFE, 0xE8, 0x62, 0x00, 0x28, 0x00, 0xF0, 0xEA, 0x80, + 0xAC, 0x4F, 0x80, 0xF8, 0x0A, 0xB0, 0x00, 0x23, 0x01, 0x21, 0x3A, 0x68, + 0x80, 0xF8, 0x09, 0xA0, 0x03, 0x72, 0x43, 0x60, 0xC1, 0x72, 0xA3, 0x6A, + 0xB2, 0xF9, 0x00, 0x20, 0x61, 0x7F, 0x03, 0x91, 0xC3, 0xF3, 0xC1, 0x1B, + 0xC3, 0xF3, 0xC7, 0x21, 0x00, 0x2A, 0xC3, 0xF3, 0xC2, 0x23, 0x01, 0x93, + 0xC0, 0xF2, 0xD2, 0x80, 0x01, 0x9B, 0x05, 0x2B, 0x00, 0xF0, 0xD9, 0x80, + 0xD4, 0xF8, 0x28, 0xA0, 0x63, 0x7F, 0x05, 0x93, 0x0A, 0xF0, 0x7F, 0x03, + 0x04, 0x93, 0xCA, 0xF3, 0x40, 0x23, 0x06, 0x93, 0x01, 0x9B, 0x04, 0x2B, + 0x3B, 0x68, 0x00, 0xF0, 0xF2, 0x80, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x01, 0x81, 0x94, 0x4A, 0x05, 0x99, 0x02, 0x92, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x23, 0x04, 0x9A, 0x9B, 0x8A, 0x08, 0x93, + 0xC2, 0xF3, 0xC1, 0x02, 0x01, 0x32, 0x09, 0x92, 0x0A, 0xF0, 0x07, 0x0A, + 0x8D, 0x4B, 0x05, 0x93, 0x8D, 0x4B, 0x9C, 0x46, 0x06, 0x9B, 0x00, 0x27, + 0x43, 0xEA, 0xCA, 0x0A, 0x5F, 0xFA, 0x8B, 0xF3, 0x19, 0x46, 0x05, 0xF1, + 0x38, 0x0B, 0x04, 0x93, 0x85, 0xF8, 0x4E, 0x10, 0x00, 0x23, 0x31, 0x1D, + 0xCD, 0xF8, 0x18, 0x90, 0x07, 0x94, 0xD1, 0x46, 0x85, 0xF8, 0x4F, 0x30, + 0xDA, 0x46, 0x1E, 0x46, 0x64, 0x46, 0x8B, 0x46, 0x01, 0x2A, 0xF1, 0xB2, + 0x00, 0xF0, 0xA8, 0x80, 0x48, 0x46, 0xA0, 0x47, 0x7E, 0x4B, 0x09, 0x9A, + 0x33, 0xF8, 0x1B, 0xC0, 0x08, 0x99, 0x02, 0xFB, 0x0C, 0xFC, 0x00, 0xFB, + 0x0C, 0xF0, 0xF8, 0x40, 0x81, 0x42, 0x28, 0xBF, 0x01, 0x46, 0x4A, 0xF8, + 0x04, 0x1B, 0x95, 0xF8, 0x4E, 0x10, 0x01, 0x36, 0x8E, 0x42, 0xE5, 0xDD, + 0xCA, 0x46, 0x04, 0x99, 0x05, 0x9B, 0x50, 0x46, 0xDD, 0xE9, 0x06, 0x94, + 0x98, 0x47, 0x03, 0x9B, 0xD5, 0xF8, 0x38, 0xC0, 0x1E, 0x46, 0x02, 0x9B, + 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x06, 0x32, 0x09, 0x9B, 0x16, 0x7F, + 0xEA, 0x6A, 0x03, 0xFB, 0x06, 0xF6, 0x00, 0xFB, 0x06, 0xF6, 0xFE, 0x40, + 0xB6, 0xB2, 0xA5, 0xF8, 0x48, 0x60, 0xE1, 0x7E, 0x63, 0x7F, 0xEF, 0x6B, + 0x9E, 0x20, 0x00, 0xFB, 0x03, 0x13, 0x02, 0x99, 0x28, 0x6C, 0x01, 0xEB, + 0x83, 0x03, 0x4F, 0xF0, 0x01, 0x0E, 0x93, 0xF8, 0x5A, 0x31, 0x85, 0xF8, + 0x4C, 0x30, 0xD9, 0xF8, 0x2C, 0x10, 0x00, 0x9B, 0x53, 0x61, 0x03, 0x31, + 0x21, 0xF0, 0x03, 0x01, 0x04, 0x31, 0x00, 0x23, 0x89, 0xB2, 0x51, 0x62, + 0xC2, 0xF8, 0x54, 0x01, 0xC2, 0xE9, 0x53, 0xC7, 0xC2, 0xE9, 0x0D, 0x33, + 0x93, 0x64, 0x93, 0x61, 0xD3, 0x63, 0x85, 0xF8, 0x4D, 0xE0, 0xD9, 0xF8, + 0x2C, 0x00, 0x03, 0x30, 0x20, 0xF0, 0x03, 0x00, 0x04, 0x30, 0x80, 0xB2, + 0xB0, 0x42, 0x57, 0xD2, 0x30, 0x1A, 0x80, 0xB2, 0x03, 0x30, 0x83, 0x10, + 0x01, 0xEB, 0x83, 0x01, 0x80, 0x08, 0x5B, 0x02, 0x66, 0x6A, 0xA5, 0xF8, + 0x4A, 0x00, 0x33, 0x43, 0x23, 0xF4, 0xC0, 0x13, 0x43, 0xF4, 0xD0, 0x03, + 0x51, 0x62, 0xC5, 0xE9, 0x0C, 0x44, 0x63, 0x62, 0x62, 0x64, 0xC9, 0xF8, + 0x4C, 0x30, 0xFF, 0xE6, 0xA0, 0xEB, 0x01, 0x0E, 0x1F, 0xFA, 0x8E, 0xFE, + 0x0E, 0xF1, 0x03, 0x0E, 0x4F, 0xEA, 0xAE, 0x00, 0x05, 0x90, 0x80, 0x00, + 0x4F, 0xEA, 0x9E, 0x0E, 0x03, 0x90, 0x98, 0xE6, 0x3D, 0x4D, 0x57, 0xE6, + 0x60, 0x62, 0xE8, 0xE6, 0x11, 0xF0, 0x06, 0x0F, 0x7F, 0xF4, 0x2A, 0xAF, + 0x3A, 0x49, 0x3B, 0x48, 0x4F, 0xF4, 0xEA, 0x72, 0x13, 0xF0, 0x60, 0xF9, + 0x22, 0xE7, 0x09, 0xAB, 0x08, 0xAA, 0x01, 0x99, 0x20, 0x46, 0x02, 0xF0, + 0x39, 0xF9, 0x36, 0x4B, 0x05, 0x93, 0x36, 0x4B, 0x94, 0xF8, 0x36, 0x70, + 0x09, 0x9A, 0x9C, 0x46, 0x2B, 0x4B, 0x02, 0x93, 0x82, 0x46, 0xC7, 0xF3, + 0x40, 0x17, 0x3F, 0xE7, 0x01, 0x9B, 0x04, 0x2B, 0x7F, 0xF4, 0x54, 0xAF, + 0x4F, 0xEA, 0xE9, 0x02, 0x00, 0x2E, 0x7F, 0xF4, 0x4F, 0xAF, 0x09, 0x2A, + 0x04, 0xBF, 0x09, 0xF0, 0x07, 0x03, 0x43, 0xF0, 0x40, 0x09, 0x47, 0xE7, + 0x18, 0x46, 0xAD, 0xE7, 0x95, 0xF8, 0x4D, 0x10, 0x93, 0xE6, 0x04, 0x9A, + 0xB3, 0xF9, 0x00, 0x30, 0x11, 0x09, 0x4A, 0x1C, 0x00, 0x2B, 0x0A, 0xF0, + 0x0F, 0x0A, 0x09, 0x92, 0x14, 0xDB, 0x19, 0x49, 0x05, 0x98, 0x02, 0x91, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x00, 0x13, 0x1B, 0x69, 0x08, 0x93, + 0x0E, 0xE7, 0x1A, 0xF0, 0x60, 0x0F, 0x3F, 0xF4, 0xFB, 0xAE, 0x17, 0x49, + 0x1A, 0x48, 0x4F, 0xF4, 0xD2, 0x72, 0x13, 0xF0, 0x19, 0xF9, 0xF3, 0xE6, + 0x03, 0x29, 0x04, 0xD8, 0xBA, 0xF1, 0x09, 0x0F, 0x0D, 0xD8, 0x09, 0x9A, + 0xE3, 0xE7, 0x10, 0x49, 0x14, 0x48, 0x40, 0xF2, 0x9B, 0x12, 0x13, 0xF0, + 0x0B, 0xF9, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xEF, 0xDB, + 0xF1, 0xE7, 0x0A, 0x49, 0x0F, 0x48, 0x4F, 0xF4, 0xCE, 0x72, 0x13, 0xF0, + 0xFF, 0xF8, 0xEA, 0xE7, 0x64, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x85, 0x06, 0x13, 0x00, 0x75, 0x06, 0x13, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xB8, 0x91, 0x15, 0x00, 0x21, 0x3B, 0x13, 0x00, 0x05, 0x3B, 0x13, 0x00, + 0x0C, 0x92, 0x15, 0x00, 0xE0, 0x91, 0x15, 0x00, 0xFC, 0x91, 0x15, 0x00, + 0xC3, 0x7A, 0x01, 0x3B, 0xDB, 0xB2, 0xC3, 0x72, 0x03, 0xB1, 0x70, 0x47, + 0x01, 0x46, 0xD0, 0xF8, 0x48, 0x01, 0x11, 0xF0, 0x83, 0xBC, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x47, 0xD0, 0xE9, 0x12, 0x67, 0x00, 0x23, 0x4F, 0xF4, + 0x80, 0x72, 0x43, 0x62, 0x43, 0x64, 0xFB, 0x61, 0xFA, 0x64, 0x00, 0x2E, + 0x00, 0xF0, 0x81, 0x80, 0xD0, 0xF8, 0x2C, 0x80, 0x8A, 0x46, 0x05, 0x46, + 0x06, 0xF1, 0x28, 0x09, 0x08, 0xF1, 0x40, 0x01, 0x43, 0x46, 0x06, 0xF1, + 0x24, 0x02, 0x53, 0xF8, 0x04, 0x4B, 0x42, 0xF8, 0x04, 0x4F, 0x8B, 0x42, + 0xF9, 0xD1, 0xEB, 0x8B, 0x9C, 0x04, 0x22, 0xD5, 0x48, 0x4B, 0x49, 0x49, + 0x1A, 0x68, 0x6B, 0x7F, 0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x70, + 0x00, 0xFB, 0x03, 0x13, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x41, 0x61, 0xDB, + 0xD8, 0xF8, 0x14, 0x20, 0xD4, 0xF8, 0x9C, 0x30, 0x32, 0x64, 0xD8, 0xF8, + 0x24, 0x20, 0x32, 0x65, 0xC3, 0xF3, 0xC2, 0x22, 0x05, 0x2A, 0xF3, 0x63, + 0x5D, 0xD0, 0xD8, 0xF8, 0x3C, 0x30, 0x58, 0x07, 0x03, 0xD4, 0xF3, 0x6A, + 0x23, 0xF4, 0xC0, 0x73, 0xF3, 0x62, 0x39, 0x4A, 0x2B, 0x7F, 0x4F, 0xF4, + 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x7B, 0xB1, + 0x73, 0x6A, 0x43, 0xF0, 0x10, 0x03, 0x28, 0x46, 0x73, 0x62, 0x02, 0xF0, + 0x47, 0xF9, 0xD6, 0xE9, 0x17, 0x23, 0x07, 0xF1, 0x14, 0x00, 0xC7, 0xE9, + 0x0D, 0x39, 0xBA, 0x64, 0xBD, 0xE8, 0xF0, 0x87, 0x2B, 0x4A, 0x6B, 0x7F, + 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x5B, 0x68, 0x99, 0x06, + 0xE6, 0xD5, 0xBA, 0xF1, 0x00, 0x0F, 0xE3, 0xD1, 0xEB, 0x8B, 0x13, 0xF4, + 0x00, 0x5F, 0xEB, 0x6A, 0xDB, 0x6B, 0x14, 0xBF, 0xC3, 0xF3, 0x00, 0x13, + 0xC3, 0xF3, 0xC0, 0x03, 0x00, 0x2B, 0xD7, 0xD1, 0x79, 0x6A, 0x0A, 0x88, + 0x93, 0xB2, 0x12, 0x04, 0xD2, 0xD5, 0xC3, 0xF3, 0x0E, 0x03, 0x0B, 0x80, + 0x95, 0xF8, 0x33, 0x20, 0x95, 0xF8, 0x32, 0x30, 0x04, 0x3A, 0x04, 0x3B, + 0x85, 0xF8, 0x33, 0x20, 0x85, 0xF8, 0x32, 0x30, 0xD7, 0xE9, 0x0A, 0x32, + 0x04, 0x3A, 0x04, 0x3B, 0xC7, 0xE9, 0x0A, 0x32, 0xBE, 0xE7, 0x30, 0x46, + 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x2C, 0x9B, 0xD1, 0x12, 0x49, 0x13, 0x48, + 0x40, 0xF2, 0x4B, 0x12, 0x13, 0xF0, 0x3C, 0xF8, 0x94, 0xE7, 0x03, 0xF4, + 0xC0, 0x63, 0xF2, 0x6C, 0x94, 0xF8, 0xA1, 0x10, 0xB3, 0xF5, 0x80, 0x6F, + 0x14, 0xBF, 0x4F, 0xF4, 0x80, 0x30, 0x4F, 0xF4, 0x00, 0x30, 0x22, 0xF4, + 0x40, 0x33, 0x03, 0x43, 0x19, 0xB1, 0x43, 0xF4, 0x80, 0x23, 0xF3, 0x64, + 0x8D, 0xE7, 0x23, 0xF4, 0x80, 0x23, 0xF3, 0x64, 0x89, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x05, 0x28, 0x89, 0xB0, 0x81, 0x46, 0x00, 0xF0, 0x79, 0x81, 0xBE, 0x4A, + 0x00, 0xEB, 0x40, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x02, 0xEB, 0x83, 0x03, + 0x03, 0x93, 0x03, 0x9B, 0xDC, 0x68, 0xBA, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x09, 0xDA, 0x5D, 0xE1, 0xE3, 0x6C, 0x1B, 0x6D, + 0x00, 0x2B, 0x80, 0xF2, 0xFE, 0x80, 0x24, 0x68, 0x00, 0x2C, 0x00, 0xF0, + 0xFA, 0x80, 0x63, 0x6A, 0x9A, 0x02, 0xF3, 0xD5, 0xB0, 0x4D, 0x2A, 0x68, + 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0x80, 0x81, 0xAE, 0x4B, + 0x67, 0x6C, 0x1B, 0x68, 0xDB, 0xB2, 0x07, 0xEB, 0x83, 0x03, 0xD3, 0xF8, + 0x3C, 0x41, 0xE5, 0x6C, 0x63, 0x6A, 0xAA, 0x49, 0x43, 0xF4, 0x60, 0x10, + 0x09, 0x68, 0x60, 0x62, 0x49, 0x78, 0x23, 0xF4, 0xC0, 0x13, 0x00, 0x29, + 0x40, 0xF0, 0x58, 0x81, 0x43, 0xF4, 0x60, 0x13, 0x43, 0xF4, 0x80, 0x73, + 0x00, 0x2A, 0x26, 0x68, 0xEB, 0x64, 0xE9, 0x61, 0xC0, 0xF2, 0x57, 0x81, + 0x72, 0x6A, 0x02, 0xF4, 0x60, 0x1A, 0xBA, 0xF5, 0x60, 0x1F, 0x00, 0xF0, + 0xEC, 0x80, 0x9D, 0x48, 0x50, 0xF8, 0x39, 0x30, 0x00, 0x2B, 0x00, 0xF0, + 0xE6, 0x80, 0x00, 0xEB, 0xC9, 0x00, 0x11, 0xF0, 0xAD, 0xFB, 0xBB, 0x88, + 0x83, 0x80, 0x7B, 0x7A, 0x43, 0x72, 0xBB, 0x7A, 0x83, 0x72, 0x01, 0x23, + 0xC3, 0x72, 0x72, 0x6A, 0xD6, 0xF8, 0x4C, 0xA0, 0xF9, 0x6A, 0xD7, 0xF8, + 0x4C, 0xB1, 0xB5, 0x6C, 0x05, 0x95, 0x04, 0x46, 0xD7, 0xE9, 0x10, 0x03, + 0x22, 0xF4, 0xC0, 0x12, 0xE1, 0x62, 0x42, 0xF4, 0x20, 0x12, 0x00, 0x21, + 0xC4, 0xE9, 0x10, 0x03, 0xA1, 0x64, 0x3B, 0x6B, 0x72, 0x62, 0xCA, 0xF8, + 0x4C, 0x20, 0xC4, 0xF8, 0x4C, 0xB1, 0x06, 0x93, 0xD7, 0xF8, 0x50, 0x31, + 0xC4, 0xF8, 0x50, 0x31, 0xD7, 0xF8, 0x54, 0x31, 0xC4, 0xF8, 0x54, 0x31, + 0x04, 0xF1, 0x0C, 0x03, 0x0A, 0xF1, 0x14, 0x0C, 0x28, 0x35, 0xC4, 0xE9, + 0x0D, 0x11, 0xA1, 0x61, 0xE1, 0x63, 0x61, 0x62, 0x04, 0x93, 0x04, 0xF5, + 0x82, 0x73, 0xC4, 0xF8, 0x14, 0xC0, 0x25, 0x63, 0xBC, 0x46, 0x08, 0x46, + 0x57, 0x46, 0x07, 0x93, 0xAA, 0x46, 0x8E, 0x46, 0x25, 0x46, 0x0C, 0x46, + 0x06, 0xE0, 0x5A, 0x6A, 0xDF, 0x6C, 0xD8, 0xF8, 0x34, 0x00, 0xD8, 0xF8, + 0x4C, 0xB1, 0x1E, 0x46, 0xFB, 0x6A, 0x03, 0x33, 0xC2, 0xF3, 0x49, 0x28, + 0x23, 0xF0, 0x03, 0x03, 0x03, 0xEB, 0x88, 0x03, 0x04, 0x33, 0x9B, 0xB2, + 0x18, 0x44, 0x01, 0x31, 0x58, 0x45, 0x02, 0xF4, 0x60, 0x12, 0xC9, 0xB2, + 0x06, 0xD9, 0x05, 0xEB, 0x8E, 0x00, 0x0E, 0xF1, 0x01, 0x0E, 0x44, 0x63, + 0x5F, 0xFA, 0x8E, 0xFE, 0x05, 0xEB, 0x8E, 0x08, 0x1C, 0x44, 0xC8, 0xF8, + 0x3C, 0x61, 0xB2, 0xF5, 0x60, 0x1F, 0x33, 0x68, 0x75, 0x64, 0x6C, 0x62, + 0x00, 0xF0, 0x18, 0x81, 0x00, 0x2B, 0xD2, 0xD1, 0x2C, 0x46, 0x98, 0x46, + 0x55, 0x46, 0xC4, 0xF8, 0x38, 0x61, 0xBA, 0x46, 0x67, 0x46, 0x03, 0x98, + 0x8A, 0xF8, 0x0D, 0x10, 0x90, 0xF8, 0x50, 0x30, 0x03, 0xF1, 0x01, 0x0C, + 0x03, 0x46, 0x22, 0x46, 0x1C, 0x30, 0x83, 0xF8, 0x50, 0xC0, 0x39, 0x46, + 0x11, 0xF0, 0xA0, 0xFB, 0x53, 0x4B, 0x1B, 0x68, 0x58, 0x78, 0x00, 0x28, + 0x40, 0xF0, 0x11, 0x81, 0xD7, 0xF8, 0x38, 0x11, 0xF2, 0x6C, 0xDF, 0xF8, + 0x30, 0xC1, 0xC9, 0x6C, 0xD0, 0x61, 0x54, 0x23, 0x03, 0xFB, 0x09, 0xF3, + 0x3A, 0x69, 0x5C, 0xF8, 0x03, 0x00, 0x22, 0x61, 0x14, 0x31, 0x04, 0x9A, + 0x3A, 0x61, 0x88, 0x42, 0x63, 0x44, 0x00, 0xF0, 0x2A, 0x81, 0x06, 0x9B, + 0x07, 0x9A, 0xA3, 0xF1, 0x28, 0x00, 0x05, 0x9B, 0xC0, 0x1A, 0x03, 0xF1, + 0x5C, 0x01, 0x2B, 0x18, 0x1C, 0x68, 0x45, 0xF8, 0x04, 0x4B, 0x1B, 0x68, + 0x42, 0xF8, 0x04, 0x3B, 0x8D, 0x42, 0xF6, 0xD1, 0x3B, 0x4C, 0x48, 0x46, + 0xFC, 0xF7, 0x10, 0xF8, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xD7, 0xF8, 0x38, 0x31, 0x04, 0xDB, 0xB3, 0x42, 0x1C, 0xD1, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xB3, 0x42, 0xFA, 0xD0, 0x36, 0x49, 0x37, 0x48, + 0x40, 0xF6, 0x2A, 0x42, 0x12, 0xF0, 0xF2, 0xFE, 0xD7, 0xF8, 0x38, 0x31, + 0xB3, 0x42, 0xF0, 0xD0, 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x08, 0xDA, 0xB8, 0xF1, 0x00, 0x0F, 0x05, 0xD1, 0x2D, 0x49, 0x2F, 0x48, + 0x4F, 0xF4, 0x43, 0x62, 0x12, 0xF0, 0xE0, 0xFE, 0xD8, 0xF8, 0x24, 0x20, + 0x46, 0x46, 0x02, 0xF4, 0x60, 0x1A, 0x26, 0x4B, 0x1B, 0x68, 0x5B, 0x78, + 0x00, 0x2B, 0x58, 0xD1, 0xD7, 0xF8, 0x38, 0x31, 0xD7, 0xF8, 0x10, 0x80, + 0xDB, 0x6C, 0x07, 0xF1, 0x0C, 0x05, 0x03, 0xF1, 0x14, 0x07, 0x1C, 0x4B, + 0x04, 0x97, 0x54, 0x24, 0x04, 0xFB, 0x09, 0x34, 0x57, 0x46, 0xDF, 0xF8, + 0x88, 0xB0, 0xDF, 0xF8, 0x7C, 0x90, 0xA2, 0x46, 0x03, 0x9C, 0x94, 0xF8, + 0x50, 0x10, 0xDB, 0xF8, 0x58, 0x33, 0x01, 0x31, 0x84, 0xF8, 0x50, 0x10, + 0x30, 0x46, 0x00, 0x21, 0x98, 0x47, 0x58, 0xB1, 0x13, 0x4B, 0x68, 0x60, + 0x1B, 0x68, 0x59, 0x78, 0xDA, 0xF8, 0x00, 0x30, 0x00, 0x29, 0x65, 0xD0, + 0xAB, 0x42, 0x00, 0xF0, 0xAD, 0x80, 0x05, 0x46, 0xB7, 0xF5, 0x60, 0x1F, + 0x65, 0xD1, 0xC0, 0xF8, 0x04, 0x80, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x00, 0x2C, 0x7F, 0xF4, 0xA8, 0xAE, 0x0A, 0x49, 0x0B, 0x48, 0x40, 0xF6, + 0x8B, 0x32, 0x12, 0xF0, 0x99, 0xFE, 0xA0, 0xE6, 0x09, 0x4B, 0x03, 0x93, + 0x8B, 0xE6, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x30, 0x83, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x64, 0x64, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x4C, 0x92, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, + 0xC4, 0x63, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x07, 0xF1, 0x50, 0x01, + 0xA4, 0xE6, 0xD7, 0xF8, 0x54, 0x80, 0x07, 0xF1, 0x50, 0x05, 0x00, 0x27, + 0xA9, 0xE7, 0x00, 0x2E, 0x7F, 0xF4, 0xA6, 0xAE, 0x49, 0x49, 0x4A, 0x48, + 0x40, 0xF6, 0xB6, 0x32, 0x12, 0xF0, 0x6E, 0xFE, 0x9E, 0xE6, 0x03, 0xF4, + 0x60, 0x13, 0xB3, 0xF5, 0x20, 0x1F, 0x3E, 0xD0, 0x40, 0xF6, 0x9B, 0x32, + 0x42, 0x49, 0x44, 0x48, 0x12, 0xF0, 0x62, 0xFE, 0x43, 0x4B, 0x67, 0x6C, + 0x1B, 0x68, 0x2A, 0x68, 0xDB, 0xB2, 0x07, 0xEB, 0x83, 0x03, 0xB2, 0xF9, + 0x00, 0x20, 0xD3, 0xF8, 0x3C, 0x41, 0x00, 0x2A, 0xE5, 0x6C, 0xBF, 0xF6, + 0x6F, 0xAE, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x12, 0xB2, 0xF5, 0x60, 0x1F, + 0x60, 0xD0, 0x3A, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x64, 0xE6, + 0x04, 0x9A, 0x93, 0x42, 0x99, 0xD1, 0xCA, 0xE9, 0x01, 0x11, 0x05, 0x46, + 0x96, 0xE7, 0x34, 0x4B, 0x36, 0x68, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x3F, 0xDB, 0x77, 0x6A, 0x07, 0xF4, 0x60, 0x17, 0x74, 0xE7, + 0x20, 0x46, 0x2C, 0x46, 0x04, 0xEB, 0x8E, 0x0E, 0x55, 0x46, 0xC4, 0xF8, + 0x38, 0x61, 0xBA, 0x46, 0x98, 0x46, 0x67, 0x46, 0xCE, 0xF8, 0x34, 0x00, + 0xE3, 0xE6, 0x27, 0x4B, 0x67, 0x6C, 0x1B, 0x68, 0xDB, 0xB2, 0x07, 0xEB, + 0x83, 0x03, 0xD3, 0xF8, 0x3C, 0x41, 0xE5, 0x6C, 0xCB, 0xE7, 0xB0, 0x6A, + 0xA3, 0x7A, 0x62, 0x7A, 0x71, 0x8C, 0xC0, 0xF3, 0xC1, 0x10, 0x00, 0x90, + 0x20, 0x46, 0xFE, 0xF7, 0xA1, 0xFB, 0x54, 0x23, 0x1E, 0x49, 0xF2, 0x6C, + 0xD7, 0xF8, 0x54, 0xE0, 0x03, 0xFB, 0x09, 0xF3, 0x04, 0xF1, 0x50, 0x00, + 0x51, 0xF8, 0x03, 0xC0, 0xD0, 0x61, 0x07, 0xF1, 0x50, 0x02, 0xC4, 0xF8, + 0x54, 0xE0, 0x94, 0x45, 0x04, 0x9C, 0x7C, 0x65, 0x7F, 0xF4, 0xE5, 0xAE, + 0xC8, 0x50, 0xE2, 0xE6, 0xCA, 0xF8, 0x00, 0x00, 0x05, 0x46, 0x4F, 0xE7, + 0x00, 0x2E, 0xBD, 0xD1, 0x0B, 0x49, 0x40, 0xF6, 0x62, 0x42, 0x48, 0x46, + 0x12, 0xF0, 0xF2, 0xFD, 0xB6, 0xE7, 0x04, 0x99, 0x01, 0x22, 0xC3, 0xE9, + 0x01, 0x12, 0xD0, 0xE6, 0x40, 0xF6, 0xA5, 0x32, 0x04, 0x49, 0x0A, 0x48, + 0x12, 0xF0, 0xE6, 0xFD, 0x06, 0x4B, 0x1A, 0x68, 0x63, 0x6A, 0xB2, 0xF9, + 0x00, 0x20, 0xFC, 0xE5, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x91, 0x15, 0x00, + 0x1C, 0x92, 0x15, 0x00, 0x30, 0x83, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, + 0x20, 0x62, 0x17, 0x00, 0x34, 0x92, 0x15, 0x00, 0x05, 0x28, 0x10, 0xB5, + 0x25, 0xD0, 0x14, 0x4A, 0x00, 0xEB, 0x40, 0x03, 0xC3, 0xEB, 0xC3, 0x03, + 0x02, 0xEB, 0x83, 0x02, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x0F, 0x4B, 0x01, 0x21, 0x19, 0x60, 0x0E, 0x4C, 0x92, 0xF8, + 0x50, 0x10, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x31, 0xB9, 0xD2, 0x6A, + 0x22, 0xB1, 0x0B, 0x4B, 0xD3, 0xF8, 0x5C, 0x33, 0x98, 0x47, 0x23, 0x68, + 0x33, 0xB1, 0x06, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x05, 0x4A, 0xDE, 0xE7, 0x00, 0xBF, + 0x20, 0x62, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xC4, 0x63, 0x17, 0x00, 0x03, 0x68, 0x13, 0xF4, + 0xE0, 0x3F, 0x1A, 0xD1, 0x9A, 0x04, 0x4C, 0xBF, 0x03, 0xF0, 0x0F, 0x02, + 0x03, 0xF0, 0x07, 0x02, 0x02, 0x2A, 0xC3, 0xF3, 0xC1, 0x11, 0x88, 0xBF, + 0x4F, 0xF4, 0x80, 0x12, 0x23, 0xF0, 0xFF, 0x53, 0x98, 0xBF, 0x4F, 0xF4, + 0x00, 0x22, 0x23, 0xF4, 0xFE, 0x13, 0x42, 0xEA, 0x01, 0x62, 0x13, 0x43, + 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF4, 0x00, 0x43, 0x03, 0x60, 0x70, 0x47, + 0xC3, 0x6B, 0x00, 0x2B, 0x00, 0xDB, 0x70, 0x47, 0x10, 0xB4, 0x0E, 0x4C, + 0x42, 0x6A, 0x24, 0x68, 0xB4, 0xF9, 0x00, 0x40, 0x00, 0x2C, 0x01, 0xDA, + 0xDB, 0x03, 0x0B, 0xD5, 0x53, 0x69, 0x23, 0xF4, 0xE0, 0x33, 0x00, 0x24, + 0x43, 0xF4, 0x80, 0x43, 0xC4, 0x63, 0x5D, 0xF8, 0x04, 0x4B, 0x53, 0x61, + 0xFC, 0xF7, 0xA4, 0xB9, 0x04, 0x49, 0x05, 0x48, 0x5D, 0xF8, 0x04, 0x4B, + 0x40, 0xF6, 0xD9, 0x42, 0x12, 0xF0, 0x28, 0xBD, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x78, 0x92, 0x15, 0x00, 0x05, 0x28, 0x10, 0xB5, + 0x17, 0xD0, 0x0D, 0x4C, 0x00, 0xEB, 0x40, 0x00, 0xC0, 0xEB, 0xC0, 0x00, + 0x04, 0xEB, 0x80, 0x04, 0xA1, 0x6A, 0x31, 0xB1, 0xCB, 0x7A, 0x01, 0x3B, + 0xDB, 0xB2, 0xCB, 0x72, 0x13, 0xB1, 0x00, 0x23, 0xA3, 0x62, 0x10, 0xBD, + 0xD1, 0xF8, 0x48, 0x01, 0x11, 0xF0, 0xE8, 0xF8, 0x00, 0x23, 0xA3, 0x62, + 0xF7, 0xE7, 0x02, 0x4C, 0xEC, 0xE7, 0x00, 0xBF, 0x20, 0x62, 0x17, 0x00, + 0xC4, 0x63, 0x17, 0x00, 0xF0, 0xB4, 0xC5, 0x6C, 0x42, 0x6A, 0xEB, 0x6C, + 0xD0, 0xE9, 0x11, 0x67, 0x22, 0xF4, 0xC0, 0x12, 0x23, 0xF4, 0x60, 0x13, + 0x05, 0xF1, 0x14, 0x0C, 0x42, 0xF4, 0x20, 0x14, 0x43, 0xF4, 0x20, 0x12, + 0x06, 0xF5, 0x82, 0x73, 0xC6, 0xF8, 0x14, 0xC0, 0x33, 0x63, 0x44, 0x62, + 0xEA, 0x64, 0x06, 0xF1, 0x0C, 0x00, 0x07, 0xF1, 0x24, 0x02, 0x06, 0xF5, + 0x9C, 0x75, 0x53, 0xF8, 0x04, 0x4B, 0x42, 0xF8, 0x04, 0x4F, 0xAB, 0x42, + 0xF9, 0xD1, 0x77, 0xB1, 0x09, 0x4B, 0x1B, 0x68, 0x5B, 0x78, 0x33, 0xB9, + 0xD6, 0xF8, 0x38, 0x31, 0xDB, 0x6C, 0x14, 0x33, 0x0B, 0x60, 0xF0, 0xBC, + 0x70, 0x47, 0x50, 0x36, 0x0E, 0x60, 0xF0, 0xBC, 0x70, 0x47, 0x01, 0x23, + 0x38, 0x46, 0x73, 0x60, 0xF5, 0xE7, 0x00, 0xBF, 0x34, 0x36, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x47, 0x6A, 0xD0, 0xF8, 0x4C, 0xE0, 0x85, 0xB0, + 0x17, 0xF4, 0x00, 0x1C, 0x9D, 0xF8, 0x38, 0x90, 0x04, 0x46, 0x0E, 0xF1, + 0x14, 0x08, 0x0D, 0x46, 0x16, 0x46, 0x9A, 0x46, 0x2A, 0xD0, 0x07, 0xF4, + 0x60, 0x17, 0xB7, 0xF5, 0x20, 0x1F, 0x40, 0xF0, 0xBB, 0x80, 0xD0, 0xF8, + 0x44, 0xB0, 0xBB, 0xF8, 0x04, 0x70, 0x07, 0xF0, 0x03, 0x07, 0x03, 0x2F, + 0x40, 0xF0, 0xB2, 0x80, 0xDF, 0xF8, 0x30, 0xC2, 0x83, 0x4F, 0xDC, 0xF8, + 0x00, 0xC0, 0x3F, 0x68, 0x9C, 0xF8, 0x3E, 0xC0, 0x07, 0xF0, 0x3F, 0x07, + 0xBC, 0x45, 0x00, 0xF2, 0xA5, 0x80, 0xDB, 0xF8, 0x24, 0x70, 0x97, 0x42, + 0x40, 0xF2, 0xC1, 0x80, 0x7C, 0x4C, 0xCD, 0xF8, 0x38, 0x90, 0xD4, 0xF8, + 0x70, 0x43, 0xA4, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x60, 0x47, + 0x83, 0x6C, 0x00, 0x2B, 0x00, 0xF0, 0x92, 0x80, 0x5B, 0x6A, 0x13, 0xF0, + 0x10, 0x03, 0x00, 0xF0, 0x8D, 0x80, 0x82, 0x88, 0x00, 0x2A, 0x00, 0xF0, + 0x8F, 0x80, 0xC3, 0x8B, 0x1F, 0x07, 0x00, 0xF1, 0x8B, 0x80, 0xDE, 0xF8, + 0x24, 0x10, 0x00, 0x29, 0x00, 0xF0, 0xB9, 0x80, 0x08, 0x88, 0x83, 0xB2, + 0x00, 0x04, 0x00, 0xF1, 0xB4, 0x80, 0x6F, 0xEA, 0x43, 0x43, 0x6F, 0xEA, + 0x53, 0x43, 0x0B, 0x80, 0x94, 0xF8, 0x33, 0x20, 0x94, 0xF8, 0x32, 0x30, + 0x04, 0x32, 0x04, 0x33, 0x84, 0xF8, 0x32, 0x30, 0x84, 0xF8, 0x33, 0x20, + 0xDE, 0xE9, 0x0A, 0x12, 0xD3, 0x1D, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, + 0x9B, 0xB2, 0x04, 0x32, 0x04, 0x31, 0xB3, 0x42, 0xCE, 0xE9, 0x0A, 0x12, + 0x6D, 0xD8, 0xA2, 0x88, 0x32, 0xB1, 0xE3, 0x8B, 0x1F, 0x07, 0x03, 0xD4, + 0x5A, 0x4B, 0xDB, 0x6E, 0x41, 0xF8, 0x03, 0x3C, 0x23, 0x68, 0x2B, 0x60, + 0x00, 0x2B, 0x36, 0xD0, 0x11, 0x46, 0xDF, 0xF8, 0x70, 0xB1, 0x54, 0x4F, + 0x32, 0x46, 0x00, 0x29, 0x2C, 0xD0, 0xE1, 0x8B, 0x0E, 0x07, 0x29, 0xD4, + 0x99, 0x88, 0x39, 0xB3, 0xD9, 0x8B, 0x08, 0x07, 0x24, 0xD4, 0x4D, 0x49, + 0xDB, 0xF8, 0x00, 0x00, 0x09, 0x68, 0x90, 0xF8, 0x3E, 0x60, 0x01, 0xF0, + 0x3F, 0x01, 0x8E, 0x42, 0x1A, 0xD8, 0x5B, 0x6A, 0xBC, 0xF1, 0x00, 0x0F, + 0x4C, 0xD1, 0x9B, 0x02, 0x17, 0xD5, 0xCD, 0xF8, 0x00, 0x90, 0xD7, 0xF8, + 0x54, 0x63, 0x03, 0x92, 0x53, 0x46, 0x29, 0x46, 0x20, 0x46, 0xB0, 0x47, + 0x03, 0x9A, 0x00, 0x28, 0x77, 0xD0, 0x2B, 0x68, 0x00, 0x2B, 0x74, 0xD0, + 0x60, 0x6A, 0xA1, 0x88, 0x00, 0xF4, 0x00, 0x1C, 0x00, 0x29, 0xD2, 0xD1, + 0xBC, 0xF1, 0x00, 0x0F, 0x47, 0xD1, 0x63, 0x6C, 0xD3, 0xB9, 0x3B, 0x48, + 0x11, 0xF0, 0x2C, 0xF8, 0x3A, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x05, 0x46, 0x56, 0xDB, 0x54, 0x23, 0x1C, 0x22, 0x37, 0x48, + 0x13, 0xFB, 0x09, 0x29, 0x00, 0x22, 0x01, 0x23, 0xAA, 0x80, 0xEB, 0x72, + 0x48, 0x44, 0x29, 0x46, 0x65, 0x64, 0x10, 0xF0, 0xF7, 0xFF, 0x01, 0xE0, + 0x4F, 0xF0, 0x00, 0x08, 0x40, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0xDE, 0xF8, 0x2C, 0x30, 0x03, 0x33, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, + 0x9B, 0xB2, 0x9E, 0x42, 0x9A, 0xD2, 0x25, 0x4B, 0x40, 0x46, 0xD3, 0xF8, + 0xBC, 0x33, 0x49, 0x46, 0x98, 0x47, 0x4F, 0xF0, 0x00, 0x08, 0xE9, 0xE7, + 0xCD, 0xF8, 0x00, 0x90, 0x99, 0x02, 0x54, 0xBF, 0xD7, 0xF8, 0x50, 0x63, + 0xD7, 0xF8, 0x4C, 0x63, 0xAF, 0xE7, 0xFE, 0xF7, 0xD1, 0xF9, 0xDB, 0xF8, + 0x38, 0x31, 0x67, 0x6A, 0x1B, 0x68, 0x2B, 0x60, 0x5B, 0xB3, 0xA2, 0x88, + 0x07, 0xF4, 0x00, 0x1C, 0x80, 0xE7, 0x63, 0x6C, 0xD3, 0xF8, 0x38, 0x21, + 0x03, 0xF1, 0x0C, 0x08, 0xD2, 0x6C, 0x00, 0x21, 0x40, 0x46, 0xD1, 0x61, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDE, 0xF8, 0x2C, 0x30, 0x03, 0x33, + 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x9B, 0xB2, 0x9E, 0x42, 0xCC, 0xD3, + 0x00, 0x29, 0x3F, 0xF4, 0x65, 0xAF, 0xDE, 0xF8, 0x28, 0x10, 0x5D, 0xE7, + 0x00, 0x28, 0xA6, 0xD1, 0x0C, 0x49, 0x0D, 0x48, 0x40, 0xF6, 0x92, 0x52, + 0x12, 0xF0, 0xD6, 0xFB, 0x9F, 0xE7, 0x67, 0x6A, 0x07, 0xF4, 0x00, 0x1C, + 0x8C, 0xE7, 0x07, 0xF4, 0x00, 0x1C, 0x89, 0xE7, 0x54, 0x83, 0x32, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x8C, 0x64, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x3C, 0x90, 0x15, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x28, + 0x2C, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x0B, 0x23, 0x13, 0x1B, 0x03, 0x00, + 0x1B, 0x4B, 0x1B, 0x68, 0x13, 0xF0, 0x03, 0x0F, 0x0C, 0xBF, 0x01, 0x20, + 0x00, 0x20, 0x08, 0xBD, 0x17, 0x4B, 0x1B, 0x68, 0x13, 0xF0, 0x30, 0x0F, + 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, 0x13, 0x4B, 0x1B, 0x68, + 0x13, 0xF4, 0x40, 0x5F, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, + 0x0F, 0x4B, 0x1B, 0x68, 0x13, 0xF4, 0x40, 0x3F, 0x0C, 0xBF, 0x01, 0x20, + 0x00, 0x20, 0x08, 0xBD, 0x0B, 0x4B, 0x1B, 0x68, 0x13, 0xF4, 0x40, 0x7F, + 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x08, 0xBD, 0x08, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x01, 0xDB, 0x00, 0x20, 0x08, 0xBD, + 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0xF3, 0x12, 0x12, 0xF0, 0x7E, 0xFB, + 0x00, 0x20, 0x08, 0xBD, 0x88, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x90, 0xF8, 0x25, 0x30, + 0xE3, 0xB1, 0x10, 0xB5, 0x0F, 0x4A, 0x10, 0x4B, 0x11, 0x69, 0xD3, 0xF8, + 0xE0, 0x31, 0x01, 0xF5, 0x9C, 0x51, 0x84, 0xB0, 0x04, 0x46, 0x08, 0x31, + 0x0C, 0x48, 0x98, 0x47, 0x00, 0x21, 0x02, 0x22, 0x05, 0x23, 0x94, 0xF8, + 0x23, 0x00, 0xCD, 0xE9, 0x00, 0x32, 0xCD, 0xE9, 0x02, 0x11, 0x25, 0x23, + 0x40, 0xF6, 0xC4, 0x12, 0xFD, 0xF7, 0x5E, 0xFF, 0x04, 0xB0, 0x10, 0xBD, + 0x03, 0x4A, 0xC2, 0xE9, 0x01, 0x33, 0x70, 0x47, 0x00, 0x10, 0x50, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x03, 0x68, 0x70, 0xB4, + 0xC3, 0xF3, 0xC2, 0x24, 0x05, 0x2C, 0x01, 0xD0, 0x70, 0xBC, 0x70, 0x47, + 0xC3, 0xF3, 0x00, 0x26, 0x75, 0x00, 0x03, 0xF0, 0x7F, 0x04, 0x35, 0x44, + 0x04, 0xEB, 0x44, 0x04, 0x05, 0xEB, 0x44, 0x04, 0xC3, 0xF3, 0x41, 0x25, + 0x2C, 0x44, 0x16, 0x4D, 0x35, 0xF8, 0x14, 0x50, 0xC3, 0xF3, 0xC0, 0x14, + 0x05, 0xFA, 0x04, 0xF4, 0x01, 0x3A, 0x02, 0xFB, 0x04, 0xF2, 0x8A, 0x42, + 0xC3, 0xF3, 0xC1, 0x14, 0xE2, 0xD2, 0x13, 0xF4, 0xE0, 0x3F, 0x06, 0xD0, + 0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0x00, 0x43, 0x70, 0xBC, 0x03, 0x60, + 0x70, 0x47, 0x03, 0xF0, 0x0F, 0x02, 0x02, 0x2A, 0x23, 0xF0, 0xFF, 0x53, + 0x8C, 0xBF, 0x4F, 0xF4, 0x80, 0x12, 0x4F, 0xF4, 0x00, 0x22, 0x23, 0xF4, + 0xFE, 0x13, 0x42, 0xEA, 0x04, 0x62, 0x13, 0x43, 0x43, 0xF0, 0x80, 0x63, + 0x43, 0xF4, 0x00, 0x43, 0xE8, 0xE7, 0x00, 0xBF, 0xE0, 0x94, 0x15, 0x00, + 0x70, 0xB5, 0x0C, 0x4D, 0x00, 0xEB, 0x40, 0x03, 0x05, 0xEB, 0x83, 0x03, + 0x93, 0xF8, 0x2E, 0x20, 0x72, 0xB1, 0x04, 0x46, 0x46, 0x00, 0x58, 0x6A, + 0x00, 0x22, 0x83, 0xF8, 0x2E, 0x20, 0x10, 0xB1, 0x21, 0x46, 0xFB, 0xF7, + 0x35, 0xFF, 0x34, 0x44, 0x05, 0xEB, 0x84, 0x05, 0x00, 0x23, 0x6B, 0x62, + 0x70, 0xBD, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x83, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x41, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x41, 0x4F, 0x41, 0x4E, 0x3B, 0x68, + 0xDF, 0xF8, 0x0C, 0x81, 0x01, 0x33, 0x00, 0x24, 0x3B, 0x60, 0x35, 0x46, + 0xA2, 0x46, 0x4F, 0xF0, 0x01, 0x0B, 0x96, 0xF8, 0x60, 0x10, 0x0B, 0xFA, + 0x04, 0xF3, 0x0B, 0x42, 0x5F, 0xFA, 0x83, 0xF9, 0x4D, 0xD1, 0x96, 0xF8, + 0x61, 0x10, 0x11, 0xEA, 0x09, 0x0F, 0x30, 0xD0, 0xA8, 0x6A, 0x21, 0xEA, + 0x03, 0x03, 0x86, 0xF8, 0x61, 0x30, 0x03, 0x07, 0x4F, 0xD0, 0x33, 0x4B, + 0x43, 0xF8, 0x24, 0x00, 0xE0, 0xB2, 0xD8, 0xF8, 0xD0, 0x33, 0x98, 0x47, + 0x95, 0xF8, 0x2C, 0x30, 0x85, 0xF8, 0x2D, 0x30, 0x49, 0xEA, 0x0A, 0x0A, + 0x01, 0x34, 0x04, 0x2C, 0x05, 0xF1, 0x0C, 0x05, 0xD9, 0xD1, 0xBA, 0xF1, + 0x00, 0x0F, 0x47, 0xD0, 0x29, 0x4A, 0x2A, 0x4B, 0x11, 0x69, 0xD3, 0xF8, + 0xE0, 0x31, 0x29, 0x48, 0x01, 0xF5, 0x00, 0x51, 0x98, 0x47, 0x3B, 0x68, + 0x33, 0xB1, 0x20, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x95, 0xF8, + 0x2D, 0x30, 0x00, 0x2B, 0xDE, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, 0x85, 0xF8, + 0x2D, 0x30, 0x5B, 0xB9, 0x32, 0x69, 0xA3, 0x1C, 0xE0, 0xB2, 0x52, 0xF8, + 0x23, 0x30, 0x17, 0x4A, 0x42, 0xF8, 0x24, 0x30, 0xD8, 0xF8, 0xD0, 0x33, + 0x98, 0x47, 0xCD, 0xE7, 0x49, 0xEA, 0x0A, 0x0A, 0xCA, 0xE7, 0xE0, 0xB2, + 0x01, 0x93, 0xFF, 0xF7, 0xBD, 0xFE, 0x01, 0x9B, 0x00, 0x28, 0xF5, 0xD0, + 0x96, 0xF8, 0x60, 0x10, 0x21, 0xEA, 0x03, 0x01, 0x86, 0xF8, 0x60, 0x10, + 0xA3, 0xE7, 0x95, 0xF8, 0x2E, 0x30, 0x00, 0x2B, 0xB2, 0xD1, 0x85, 0xF8, + 0x2E, 0xB0, 0x96, 0xF8, 0x60, 0x30, 0x49, 0xEA, 0x03, 0x03, 0x86, 0xF8, + 0x60, 0x30, 0xA9, 0xE7, 0xC6, 0xF8, 0x18, 0xA0, 0xBD, 0xE7, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, + 0x00, 0x02, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0xA8, 0x64, 0x17, 0x00, 0x70, 0xB5, 0x14, 0x4C, 0x94, 0xF8, 0x62, 0x20, + 0x4A, 0xB1, 0x94, 0xF8, 0x61, 0x20, 0xA5, 0x69, 0x01, 0x21, 0x01, 0xFA, + 0x00, 0xF3, 0x13, 0x43, 0x84, 0xF8, 0x61, 0x30, 0x05, 0xB1, 0x70, 0xBD, + 0x0D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x07, 0xDB, + 0x0B, 0x4B, 0x0C, 0x48, 0xD3, 0xF8, 0xC8, 0x33, 0xA3, 0x61, 0xBD, 0xE8, + 0x70, 0x40, 0x18, 0x47, 0xFF, 0xF7, 0x74, 0xFE, 0x00, 0x28, 0xF3, 0xD1, + 0xBD, 0xE8, 0x70, 0x40, 0x06, 0x49, 0x07, 0x48, 0x4F, 0xF4, 0x22, 0x72, + 0x12, 0xF0, 0xF4, 0xB9, 0x94, 0x64, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xA8, 0x64, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x90, 0x93, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x1D, 0x4D, 0x1E, 0x4E, + 0x1E, 0x4F, 0xDF, 0xF8, 0x80, 0x80, 0xDF, 0xF8, 0x80, 0x90, 0x2B, 0x68, + 0x00, 0x24, 0x01, 0x2C, 0x11, 0xD0, 0x53, 0xF8, 0x24, 0x30, 0x1B, 0xB9, + 0x33, 0x69, 0xA2, 0x1C, 0x53, 0xF8, 0x22, 0x30, 0x47, 0xF8, 0x24, 0x30, + 0xE0, 0xB2, 0xFF, 0xF7, 0xFB, 0xFE, 0x03, 0x2C, 0x0D, 0xD0, 0x01, 0x34, + 0x01, 0x2C, 0x2B, 0x68, 0xED, 0xD1, 0x5B, 0x68, 0x73, 0xB9, 0x33, 0x69, + 0xDB, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x01, 0x20, 0xFF, 0xF7, 0xEC, 0xFE, + 0xF1, 0xE7, 0x0D, 0x48, 0x08, 0xF0, 0x3C, 0xFC, 0x00, 0x23, 0xB3, 0x61, + 0xBD, 0xE8, 0xF8, 0x83, 0xC3, 0xF3, 0x0B, 0x02, 0x00, 0x2A, 0xEE, 0xD1, + 0x32, 0x69, 0xD2, 0x68, 0x03, 0xEA, 0x09, 0x03, 0xC2, 0xF3, 0x0B, 0x02, + 0x13, 0x43, 0xC8, 0xF8, 0x00, 0x30, 0xE6, 0xE7, 0xAC, 0x35, 0x17, 0x00, + 0x94, 0x64, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, 0xA8, 0x64, 0x17, 0x00, + 0x04, 0x02, 0x32, 0x40, 0x00, 0xF0, 0xFF, 0xFF, 0x1A, 0x4A, 0x1B, 0x4B, + 0xF0, 0xB4, 0x02, 0xF1, 0x74, 0x04, 0x94, 0xE8, 0x03, 0x00, 0x16, 0x69, + 0xC3, 0xF8, 0xE0, 0x03, 0xF0, 0x6D, 0xA3, 0xF8, 0xE4, 0x13, 0xB6, 0xF8, + 0x60, 0x10, 0xC3, 0xF8, 0xE6, 0x03, 0xA3, 0xF8, 0xEA, 0x13, 0x94, 0xE8, + 0x03, 0x00, 0xD3, 0xF8, 0xD4, 0x53, 0xA3, 0xF8, 0xF0, 0x13, 0xD1, 0x6E, + 0xC3, 0xF8, 0xEC, 0x03, 0xC3, 0xF8, 0xF6, 0x13, 0x0D, 0x4F, 0x0E, 0x48, + 0x03, 0xF5, 0x88, 0x64, 0x00, 0x21, 0x82, 0xF8, 0x88, 0x10, 0xC3, 0xF8, + 0xBC, 0x43, 0x05, 0xF4, 0x7F, 0x45, 0x03, 0xF5, 0x66, 0x74, 0x4F, 0xF4, + 0x00, 0x52, 0xC3, 0xF8, 0xD4, 0x53, 0xC3, 0xF8, 0x9C, 0x13, 0x3C, 0x60, + 0xF0, 0xBC, 0x02, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, + 0x60, 0x5D, 0x18, 0x00, 0xAC, 0x81, 0x32, 0x40, 0x80, 0x81, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x68, 0xB2, 0x03, 0x68, 0x90, 0x4C, + 0xDB, 0xF8, 0x10, 0x20, 0x80, 0x46, 0x53, 0xF8, 0x26, 0x0F, 0xA0, 0x64, + 0xD0, 0x6D, 0x9D, 0x88, 0xC4, 0xF8, 0x4E, 0x00, 0x18, 0x68, 0xB8, 0xF8, + 0x12, 0x10, 0x9B, 0x88, 0xB2, 0xF8, 0x60, 0x20, 0x60, 0x65, 0x00, 0x27, + 0x83, 0xB0, 0x04, 0xF1, 0x5C, 0x00, 0xA4, 0xF8, 0x4C, 0x50, 0xA4, 0xF8, + 0x52, 0x20, 0xA4, 0xF8, 0x58, 0x30, 0xA7, 0x61, 0xFE, 0xF7, 0x78, 0xFC, + 0x63, 0x6F, 0xD8, 0xF8, 0x00, 0x10, 0x80, 0x4A, 0x91, 0xF8, 0x23, 0xC0, + 0xA5, 0x69, 0xDE, 0x1C, 0x42, 0xF2, 0x38, 0x0E, 0x26, 0xF0, 0x03, 0x06, + 0x24, 0x23, 0x39, 0x46, 0x04, 0x36, 0x13, 0xFB, 0x0C, 0xE7, 0x06, 0xEB, + 0x80, 0x06, 0x4F, 0xEA, 0x40, 0x2E, 0x17, 0x44, 0xB6, 0xB2, 0x89, 0x46, + 0x04, 0xF1, 0x5C, 0x02, 0xA4, 0x46, 0x4F, 0xF4, 0x20, 0x10, 0xF2, 0x46, + 0x01, 0x97, 0x1C, 0xE0, 0x0F, 0x33, 0x1B, 0x09, 0x1B, 0x02, 0x43, 0xF0, + 0x30, 0x03, 0x9B, 0xB2, 0x4A, 0xEA, 0x00, 0x00, 0x0B, 0x43, 0x90, 0x63, + 0xC2, 0xF8, 0x24, 0x90, 0xC2, 0xF8, 0x3C, 0x90, 0xA2, 0xF8, 0x58, 0x30, + 0xCC, 0xF8, 0x08, 0x20, 0xA5, 0x69, 0x35, 0x44, 0xA5, 0x61, 0x94, 0x46, + 0x4F, 0xF4, 0x40, 0x10, 0x01, 0x31, 0x09, 0x29, 0x02, 0xF1, 0x5C, 0x02, + 0x22, 0xD0, 0x01, 0x9F, 0x57, 0xF8, 0x04, 0x3B, 0x01, 0x97, 0x00, 0x2B, + 0xF4, 0xD0, 0xD8, 0xF8, 0x08, 0x70, 0x06, 0xEB, 0x05, 0x0E, 0xBE, 0x45, + 0x16, 0xD8, 0xB3, 0xF5, 0x7C, 0x7F, 0xD3, 0xD9, 0xB3, 0xF5, 0x80, 0x6F, + 0x0D, 0xD9, 0xB3, 0xF5, 0x86, 0x4F, 0x45, 0xD8, 0x6F, 0xF4, 0x7C, 0x75, + 0x2B, 0x44, 0xC3, 0xF3, 0x07, 0x13, 0x1B, 0x02, 0x43, 0xF4, 0x80, 0x43, + 0x43, 0xF0, 0x30, 0x03, 0xC8, 0xE7, 0x44, 0xF2, 0x30, 0x03, 0xC5, 0xE7, + 0x00, 0x2D, 0x3B, 0xD0, 0xDC, 0xF8, 0x38, 0x30, 0x03, 0xF4, 0x60, 0x11, + 0x00, 0x22, 0xB1, 0xF5, 0x20, 0x1F, 0xCC, 0xF8, 0x08, 0x20, 0x63, 0xD0, + 0x4C, 0x49, 0x4D, 0x4A, 0x4D, 0x4E, 0x43, 0xF4, 0x60, 0x13, 0xCC, 0xF8, + 0x38, 0x30, 0x0D, 0x68, 0x10, 0x68, 0x04, 0x35, 0xC0, 0xF3, 0x05, 0x20, + 0x06, 0xE0, 0x33, 0x68, 0xDB, 0x04, 0x08, 0xD4, 0x0B, 0x68, 0x5B, 0x1B, + 0x00, 0x2B, 0x04, 0xDA, 0x13, 0x68, 0x03, 0xF0, 0x3F, 0x03, 0x98, 0x42, + 0xF3, 0xD0, 0xE3, 0x6B, 0x42, 0x48, 0x43, 0x49, 0x43, 0x4A, 0x04, 0x60, + 0x03, 0xF4, 0x7F, 0x43, 0xE3, 0x63, 0x4F, 0xF4, 0x00, 0x50, 0x00, 0x23, + 0x08, 0x60, 0x63, 0x60, 0x8B, 0xF8, 0x88, 0x30, 0x62, 0x62, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xB3, 0xF5, 0x88, 0x4F, 0x1F, 0xD8, 0x48, 0xF2, + 0x30, 0x03, 0x87, 0xE7, 0xD4, 0xF8, 0x98, 0x30, 0x37, 0x4A, 0x35, 0x4E, + 0x35, 0x49, 0xC4, 0xF8, 0x94, 0x50, 0x03, 0xF4, 0x7F, 0x43, 0xC4, 0xF8, + 0x98, 0x30, 0xA2, 0xF5, 0x79, 0x73, 0xC4, 0xE9, 0x18, 0x55, 0x8B, 0xF8, + 0x88, 0x50, 0x4F, 0xF4, 0x00, 0x50, 0x33, 0x60, 0x30, 0x23, 0x08, 0x60, + 0xA4, 0xF8, 0xB4, 0x30, 0xC4, 0xF8, 0x80, 0x20, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0xB3, 0xF5, 0x0F, 0x3F, 0x2A, 0xD9, 0xB3, 0xF5, 0x11, 0x3F, + 0x32, 0xD9, 0x28, 0x4D, 0xAB, 0x42, 0x32, 0xD8, 0xA3, 0xF1, 0x01, 0x13, + 0xA3, 0xF5, 0x44, 0x43, 0xC3, 0xF3, 0xC7, 0x33, 0x1B, 0x02, 0x43, 0xF4, + 0x40, 0x43, 0x43, 0xF0, 0x30, 0x03, 0x55, 0xE7, 0xDC, 0xF8, 0x3C, 0x30, + 0xCC, 0xF8, 0x38, 0x20, 0xCC, 0xF8, 0x04, 0x20, 0x8B, 0xF8, 0x88, 0x20, + 0x19, 0x48, 0x1A, 0x49, 0x1A, 0x4A, 0xCC, 0xF8, 0x24, 0x20, 0x03, 0xF4, + 0x7F, 0x43, 0xCC, 0xF8, 0x3C, 0x30, 0x4F, 0xF4, 0x00, 0x53, 0xC0, 0xF8, + 0x00, 0xC0, 0x0B, 0x60, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xA3, 0xF5, + 0x70, 0x53, 0x01, 0x3B, 0xC3, 0xF3, 0xC7, 0x23, 0x1B, 0x02, 0x43, 0xF4, + 0x00, 0x43, 0x43, 0xF0, 0x30, 0x03, 0x31, 0xE7, 0x4C, 0xF2, 0x30, 0x03, + 0x2E, 0xE7, 0x4F, 0xF6, 0x30, 0x65, 0x4F, 0xF6, 0x30, 0x77, 0xB3, 0xF1, + 0xFF, 0x3F, 0x08, 0xBF, 0x3D, 0x46, 0x2B, 0x46, 0x24, 0xE7, 0x00, 0xBF, + 0x60, 0x5D, 0x18, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, + 0x54, 0x83, 0x32, 0x40, 0x78, 0x80, 0x32, 0x40, 0xAC, 0x81, 0x32, 0x40, + 0x80, 0x81, 0x32, 0x40, 0xA0, 0x61, 0x18, 0x00, 0x00, 0xC4, 0x20, 0x00, + 0x94, 0x64, 0x17, 0x00, 0x1C, 0x4A, 0x1D, 0x49, 0x13, 0x68, 0xF0, 0xB4, + 0x03, 0xF5, 0xDA, 0x53, 0x1B, 0x4F, 0x1C, 0x4E, 0x1C, 0x4C, 0x1D, 0x4D, + 0x18, 0x33, 0x3B, 0x60, 0x40, 0x23, 0x33, 0x60, 0x23, 0x68, 0x43, 0xF0, + 0x40, 0x03, 0x23, 0x60, 0x17, 0x68, 0x0C, 0x68, 0x01, 0x23, 0x10, 0x3E, + 0x04, 0x37, 0xC4, 0xF3, 0x05, 0x24, 0x85, 0xF8, 0x8C, 0x30, 0x06, 0xE0, + 0x33, 0x68, 0xDB, 0x04, 0x08, 0xD4, 0x13, 0x68, 0xDB, 0x1B, 0x00, 0x2B, + 0x04, 0xDA, 0x0B, 0x68, 0x03, 0xF0, 0x3F, 0x03, 0x9C, 0x42, 0xF3, 0xD0, + 0xC3, 0x6B, 0x0E, 0x4C, 0x0E, 0x4A, 0x0F, 0x49, 0x42, 0x62, 0x03, 0xF4, + 0x7F, 0x43, 0xC3, 0x63, 0x00, 0x22, 0x4F, 0xF4, 0x00, 0x53, 0x42, 0x60, + 0x85, 0xF8, 0x88, 0x20, 0x20, 0x60, 0xF0, 0xBC, 0x0B, 0x60, 0x70, 0x47, + 0x20, 0x01, 0x32, 0x40, 0x54, 0x83, 0x32, 0x40, 0x40, 0x01, 0x32, 0x40, + 0x88, 0x80, 0x32, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x94, 0x64, 0x17, 0x00, + 0xAC, 0x81, 0x32, 0x40, 0xA0, 0x61, 0x18, 0x00, 0x80, 0x81, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x41, 0x10, 0x4F, 0x0C, 0x23, 0x0E, 0x46, 0x54, 0x25, + 0x04, 0x46, 0x15, 0xFB, 0x01, 0x30, 0x05, 0xFB, 0x06, 0x75, 0x38, 0x44, + 0xD4, 0xF8, 0x4C, 0x80, 0x10, 0xF0, 0xEC, 0xFB, 0x95, 0xF8, 0x50, 0x30, + 0xA2, 0x88, 0x01, 0x3B, 0x85, 0xF8, 0x50, 0x30, 0x22, 0xB9, 0x20, 0x46, + 0xBD, 0xE8, 0xF0, 0x41, 0xFD, 0xF7, 0x22, 0xBA, 0xD8, 0xF8, 0x50, 0x10, + 0x32, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xFC, 0xF7, 0xF6, 0xBB, + 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x00, 0x23, 0x2E, 0x4D, + 0x03, 0x60, 0x95, 0xF8, 0x8C, 0x30, 0x82, 0xB0, 0x00, 0x2B, 0x37, 0xD1, + 0x95, 0xF8, 0x85, 0x30, 0x03, 0x2B, 0x33, 0xD8, 0x29, 0x4E, 0xDF, 0xF8, + 0xB4, 0xA0, 0x81, 0x46, 0x4F, 0xF0, 0x03, 0x08, 0x14, 0xE0, 0x95, 0xF8, + 0x7E, 0x30, 0xDA, 0xF8, 0x64, 0x73, 0x00, 0x93, 0x2A, 0x6F, 0xB5, 0xF8, + 0x7A, 0x30, 0x49, 0x46, 0x20, 0x46, 0xB8, 0x47, 0x07, 0x46, 0x20, 0xBB, + 0x95, 0xF8, 0x85, 0x30, 0x08, 0xF1, 0xFF, 0x38, 0x98, 0x45, 0xA6, 0xF1, + 0x54, 0x06, 0x17, 0xDB, 0x96, 0xF8, 0x16, 0x31, 0x5F, 0xFA, 0x88, 0xF7, + 0x01, 0x2B, 0x85, 0xF8, 0x7E, 0x70, 0x0F, 0xD0, 0xD6, 0xF8, 0x08, 0x41, + 0x00, 0x2C, 0xEB, 0xD0, 0x63, 0x6A, 0x9B, 0x02, 0xDB, 0xD4, 0xE3, 0x6C, + 0x1B, 0x6D, 0x00, 0x2B, 0xD7, 0xDA, 0x20, 0x46, 0x39, 0x46, 0xFF, 0xF7, + 0x99, 0xFF, 0xEF, 0xE7, 0x00, 0x27, 0x38, 0x46, 0x02, 0xB0, 0xBD, 0xE8, + 0xF0, 0x87, 0x0E, 0x4B, 0x64, 0x6C, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x07, 0xDB, 0xA3, 0x88, 0x38, 0x46, 0x43, 0xF4, 0x00, 0x73, + 0xA3, 0x80, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x2C, 0xF5, 0xD1, + 0x06, 0x49, 0x07, 0x48, 0x40, 0xF2, 0xDF, 0x42, 0x11, 0xF0, 0x88, 0xFF, + 0xEE, 0xE7, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0x90, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x8C, 0x92, + 0x99, 0xF8, 0x7E, 0x80, 0x83, 0xB0, 0x04, 0x46, 0x00, 0x27, 0x40, 0x46, + 0x01, 0x97, 0xFB, 0xF7, 0x0D, 0xFE, 0x99, 0xF8, 0x7E, 0x00, 0xFF, 0xF7, + 0x15, 0xFA, 0x00, 0x2C, 0x00, 0xF0, 0xA4, 0x80, 0x63, 0x6A, 0x9E, 0x02, + 0x76, 0xD5, 0x03, 0xF4, 0x60, 0x10, 0xB0, 0xF5, 0x60, 0x1F, 0x65, 0x6C, + 0x00, 0xF0, 0xE1, 0x80, 0xB0, 0xF5, 0x40, 0x1F, 0x00, 0xF0, 0xCE, 0x80, + 0xAA, 0x88, 0x02, 0xF0, 0x03, 0x02, 0x03, 0x2A, 0x8E, 0x4A, 0x12, 0x68, + 0x92, 0xF8, 0x01, 0xC0, 0x00, 0xF0, 0xFF, 0x80, 0x2A, 0x6B, 0x52, 0x69, + 0x00, 0x21, 0xC2, 0xF3, 0xC1, 0x1E, 0xC5, 0xE9, 0x0E, 0x11, 0x69, 0x63, + 0x0E, 0x46, 0x0A, 0x46, 0x14, 0xE0, 0xD1, 0xF8, 0x4C, 0x31, 0x9A, 0x45, + 0x02, 0xF1, 0x01, 0x03, 0x22, 0xD9, 0xDA, 0xB2, 0x05, 0xEB, 0x82, 0x03, + 0xB0, 0xF5, 0x60, 0x1F, 0x4E, 0x63, 0x56, 0x46, 0xC3, 0xF8, 0x3C, 0x41, + 0x20, 0xD0, 0x24, 0x68, 0x34, 0xB3, 0x63, 0x6A, 0x03, 0xF4, 0x60, 0x10, + 0xE1, 0x6C, 0xD1, 0xF8, 0x2C, 0xA0, 0xC3, 0xF3, 0x49, 0x2B, 0x0A, 0xF1, + 0x03, 0x03, 0x23, 0xF0, 0x03, 0x03, 0x0B, 0xF1, 0x01, 0x0A, 0x03, 0xEB, + 0x8A, 0x03, 0x9B, 0xB2, 0x96, 0x45, 0x05, 0xEB, 0x82, 0x01, 0x03, 0xEB, + 0x06, 0x0A, 0xD6, 0xD8, 0x05, 0xEB, 0x82, 0x03, 0xB0, 0xF5, 0x60, 0x1F, + 0x56, 0x46, 0xC3, 0xF8, 0x3C, 0x41, 0xDE, 0xD1, 0x6B, 0x6A, 0xB3, 0x42, + 0x00, 0xF0, 0xCE, 0x80, 0x00, 0x23, 0xC5, 0xE9, 0x0D, 0x33, 0xEB, 0x63, + 0x00, 0x2F, 0x49, 0xD0, 0x08, 0xEB, 0x48, 0x03, 0x09, 0xEB, 0x83, 0x09, + 0x01, 0x9A, 0xC9, 0xF8, 0x24, 0x70, 0xBC, 0xF1, 0x00, 0x0F, 0x30, 0xD1, + 0x93, 0x6B, 0x9B, 0x02, 0x00, 0xF1, 0x97, 0x80, 0x53, 0x68, 0x00, 0x2B, + 0x4B, 0xD1, 0x61, 0x49, 0x54, 0x23, 0x03, 0xFB, 0x08, 0xF8, 0x01, 0xEB, + 0x08, 0x03, 0xC3, 0xE9, 0x01, 0xCC, 0x41, 0xF8, 0x08, 0x20, 0x40, 0xE0, + 0xA3, 0x6C, 0x3B, 0xB3, 0xE3, 0x8B, 0xE2, 0x6C, 0x13, 0xF4, 0x00, 0x5F, + 0xE3, 0x6A, 0xDB, 0x6B, 0x02, 0xF1, 0x14, 0x07, 0x14, 0xBF, 0xC3, 0xF3, + 0x00, 0x13, 0xC3, 0xF3, 0xC0, 0x03, 0x01, 0x97, 0x93, 0xB3, 0x52, 0x4B, + 0x1B, 0x68, 0x93, 0xF8, 0x01, 0xC0, 0x3A, 0x46, 0x08, 0xEB, 0x48, 0x03, + 0x09, 0xEB, 0x83, 0x09, 0xC9, 0xF8, 0x24, 0x70, 0xBC, 0xF1, 0x00, 0x0F, + 0xCE, 0xD0, 0x53, 0x68, 0xFB, 0xB9, 0x54, 0x23, 0x03, 0xFB, 0x08, 0xF8, + 0x49, 0x4B, 0x43, 0xF8, 0x08, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x45, 0x4B, 0x1B, 0x68, 0x93, 0xF8, 0x01, 0xC0, 0x44, 0x4B, 0x54, 0x22, + 0x08, 0xEB, 0x48, 0x01, 0x09, 0xEB, 0x81, 0x09, 0x02, 0xFB, 0x08, 0xF8, + 0x00, 0x22, 0x43, 0xF8, 0x08, 0x20, 0xC9, 0xF8, 0x24, 0x20, 0x43, 0x44, + 0xBC, 0xF1, 0x00, 0x0F, 0x01, 0xD1, 0xC3, 0xE9, 0x01, 0xCC, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x50, 0x6A, 0x03, 0x88, 0x1D, 0x04, 0x99, 0xB2, + 0xC7, 0xD5, 0xC1, 0xF3, 0x0E, 0x01, 0x01, 0x80, 0x94, 0xF8, 0x33, 0x10, + 0x94, 0xF8, 0x32, 0x30, 0x32, 0x48, 0x04, 0x39, 0x04, 0x3B, 0x84, 0xF8, + 0x33, 0x10, 0x84, 0xF8, 0x32, 0x30, 0xD2, 0xE9, 0x0A, 0x31, 0x04, 0x39, + 0x04, 0x3B, 0xC2, 0xE9, 0x0A, 0x31, 0x00, 0x68, 0x3A, 0x46, 0x90, 0xF8, + 0x01, 0xC0, 0xB3, 0xE7, 0x2B, 0x4B, 0x01, 0xA9, 0xD3, 0xF8, 0x6C, 0x33, + 0x20, 0x46, 0x98, 0x47, 0x26, 0x4A, 0x63, 0x6A, 0x12, 0x68, 0x07, 0x46, + 0x92, 0xF8, 0x01, 0xC0, 0x03, 0xF4, 0x60, 0x10, 0x2C, 0xE7, 0x24, 0x4B, + 0x21, 0x4E, 0xD3, 0xF8, 0x58, 0x33, 0x39, 0x46, 0x20, 0x46, 0x98, 0x47, + 0x33, 0x68, 0x01, 0x90, 0x5B, 0x78, 0x07, 0x46, 0xD3, 0xB1, 0x08, 0xB1, + 0x6B, 0x6D, 0x43, 0x60, 0xD5, 0xF8, 0x48, 0x01, 0x29, 0x46, 0x10, 0xF0, + 0x13, 0xFA, 0x33, 0x68, 0x93, 0xF8, 0x01, 0xC0, 0x58, 0xE7, 0x7B, 0x68, + 0x00, 0x2B, 0xB4, 0xD1, 0x15, 0x49, 0x54, 0x23, 0x03, 0xFB, 0x08, 0xF8, + 0x01, 0xEB, 0x08, 0x03, 0x01, 0x20, 0xC3, 0xE9, 0x01, 0x70, 0x41, 0xF8, + 0x08, 0x20, 0xA8, 0xE7, 0x00, 0x28, 0xE5, 0xD0, 0x2B, 0x69, 0x43, 0x60, + 0xE2, 0xE7, 0x05, 0xF1, 0x0C, 0x07, 0xBC, 0xF1, 0x00, 0x0F, 0x03, 0xD0, + 0x05, 0xF1, 0x50, 0x02, 0x01, 0x92, 0xF7, 0xE6, 0xD5, 0xF8, 0x38, 0x21, + 0xD2, 0x6C, 0x14, 0x32, 0x01, 0x92, 0xF1, 0xE6, 0xD5, 0xF8, 0x38, 0x31, + 0xA3, 0x42, 0x7F, 0xF4, 0x2D, 0xAF, 0x05, 0xEB, 0x82, 0x02, 0x56, 0x63, + 0x2C, 0xE7, 0x00, 0xBF, 0x34, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, 0x70, 0xB5, 0x1E, 0x48, + 0x82, 0xB0, 0x90, 0xF8, 0x88, 0x30, 0x00, 0x22, 0x01, 0x92, 0x93, 0xB1, + 0x90, 0xF8, 0x7F, 0x30, 0x04, 0x2B, 0x2A, 0xD0, 0x19, 0x4C, 0x01, 0xA8, + 0xD4, 0xF8, 0xE8, 0x33, 0x98, 0x47, 0x08, 0xB3, 0xD4, 0xF8, 0xF8, 0x33, + 0x98, 0x47, 0xD4, 0xF8, 0xD4, 0x33, 0x01, 0x98, 0x98, 0x47, 0x02, 0xB0, + 0x70, 0xBD, 0x13, 0x4A, 0x13, 0x4D, 0xD2, 0xF8, 0x38, 0x14, 0x13, 0x4C, + 0x80, 0xF8, 0x88, 0x30, 0xC2, 0xF8, 0x00, 0x34, 0x01, 0xF4, 0x7F, 0x41, + 0x02, 0xF5, 0x88, 0x66, 0x02, 0xF5, 0x7F, 0x70, 0x4F, 0xF4, 0x00, 0x53, + 0xC2, 0xF8, 0x38, 0x14, 0xC2, 0xF8, 0x20, 0x64, 0x28, 0x60, 0x23, 0x60, + 0x02, 0xB0, 0x70, 0xBD, 0xFF, 0xF7, 0x28, 0xFC, 0xE1, 0xE7, 0x04, 0x4B, + 0x68, 0x30, 0xD3, 0xF8, 0xF4, 0x33, 0x98, 0x47, 0x02, 0xB0, 0x70, 0xBD, + 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x60, 0x5D, 0x18, 0x00, + 0xAC, 0x81, 0x32, 0x40, 0x80, 0x81, 0x32, 0x40, 0xF8, 0xB5, 0x2C, 0x4C, + 0x2C, 0x4D, 0x40, 0xF2, 0x74, 0x42, 0x20, 0x46, 0x00, 0x21, 0x26, 0x46, + 0xED, 0xF7, 0xF4, 0xF8, 0x4F, 0xF4, 0xE4, 0x73, 0x28, 0x4A, 0x26, 0xF8, + 0x44, 0x3F, 0x4F, 0xF6, 0x30, 0x70, 0x48, 0xF2, 0xC8, 0x13, 0x04, 0xF5, + 0x77, 0x77, 0x4F, 0xF0, 0x22, 0x0C, 0x04, 0xF2, 0xFD, 0x31, 0xC4, 0xF8, + 0x40, 0x24, 0xA4, 0xF8, 0xDC, 0x33, 0xA4, 0xF8, 0xF4, 0x03, 0x04, 0xF5, + 0x88, 0x63, 0x00, 0x20, 0x4F, 0xF4, 0x00, 0x12, 0xDF, 0xF8, 0x74, 0xE0, + 0xC4, 0xF8, 0xB0, 0xC3, 0xC4, 0xE9, 0xEA, 0x71, 0xC4, 0xF8, 0xBC, 0x33, + 0xC4, 0xF8, 0x20, 0x34, 0x63, 0x62, 0xA2, 0x63, 0xC4, 0xF8, 0x98, 0x53, + 0xC4, 0xF8, 0xFC, 0x53, 0x25, 0x60, 0xC4, 0xF8, 0xA4, 0x03, 0xC4, 0xF8, + 0xCC, 0x03, 0xC4, 0xF8, 0x30, 0x04, 0x04, 0xF1, 0x5B, 0x0C, 0x04, 0xF1, + 0xB4, 0x03, 0x1E, 0x27, 0x04, 0xF5, 0x7C, 0x74, 0xA3, 0xF1, 0x14, 0x01, + 0x5A, 0x1C, 0x43, 0xF8, 0x58, 0x5C, 0x43, 0xF8, 0x40, 0x7C, 0x43, 0xF8, + 0x24, 0x0C, 0x43, 0xF8, 0x14, 0xEC, 0x43, 0xF8, 0x4C, 0x1C, 0x43, 0xF8, + 0x08, 0x2C, 0x43, 0xE9, 0x12, 0x6C, 0x43, 0xF8, 0x0C, 0x3C, 0x5C, 0x33, + 0x9C, 0x42, 0xE9, 0xD1, 0xF8, 0xBD, 0x00, 0xBF, 0x60, 0x5D, 0x18, 0x00, + 0xBE, 0xBA, 0xFE, 0xCA, 0x1E, 0xAB, 0xDC, 0xBA, 0xDE, 0xFA, 0xFE, 0xCA, + 0x2D, 0xE9, 0xF0, 0x41, 0x13, 0x4A, 0x14, 0x4B, 0x92, 0xF8, 0x7E, 0x40, + 0xD3, 0xF8, 0xAC, 0x33, 0x12, 0x4F, 0x00, 0x22, 0x0E, 0x46, 0x21, 0x46, + 0x05, 0x46, 0x4F, 0xF0, 0x54, 0x08, 0x98, 0x47, 0x0C, 0x20, 0x18, 0xFB, + 0x04, 0x00, 0x38, 0x44, 0x10, 0xF0, 0x5E, 0xF9, 0x22, 0x46, 0x31, 0x46, + 0x28, 0x46, 0xFC, 0xF7, 0x77, 0xF9, 0x6B, 0x6A, 0x03, 0xF4, 0x60, 0x13, + 0xB3, 0xF5, 0x60, 0x1F, 0x05, 0xD1, 0x08, 0xFB, 0x04, 0x74, 0x6B, 0x6C, + 0x63, 0x62, 0x02, 0x23, 0xA3, 0x76, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, + 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x62, 0x40, 0x87, 0xB0, 0x84, 0xB9, + 0x90, 0xF8, 0x64, 0x30, 0x6B, 0xB1, 0x90, 0xF8, 0x6C, 0x30, 0x58, 0x4A, + 0x01, 0x93, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x03, 0x25, 0x95, 0xF8, + 0x25, 0x30, 0x13, 0xB1, 0x6B, 0x68, 0x9B, 0x06, 0x02, 0xD4, 0x07, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x10, 0x22, 0x21, 0x46, 0x02, 0xA8, 0xED, 0xF7, + 0x4D, 0xF8, 0x95, 0xF8, 0x23, 0x30, 0x4E, 0x4A, 0x4E, 0x49, 0x00, 0x94, + 0x42, 0xF2, 0x34, 0x06, 0x03, 0xEB, 0xC3, 0x03, 0x06, 0xEB, 0x83, 0x03, + 0x9E, 0x18, 0x01, 0xF1, 0x08, 0x0B, 0xA6, 0x46, 0x22, 0x46, 0xA2, 0x46, + 0x20, 0x46, 0x56, 0xF8, 0x04, 0x3F, 0xB3, 0xF5, 0xFE, 0x0F, 0x1F, 0x46, + 0x04, 0xF1, 0x01, 0x08, 0x28, 0xBF, 0x4F, 0xF4, 0xFE, 0x07, 0xF3, 0xB1, + 0x42, 0x4C, 0x0B, 0x78, 0xE3, 0x5C, 0x06, 0xAC, 0x04, 0xEB, 0x83, 0x0C, + 0x22, 0xFA, 0x03, 0xF9, 0x5C, 0xF8, 0x10, 0x5C, 0x3D, 0x44, 0x55, 0x45, + 0x84, 0xBF, 0xAA, 0x46, 0x00, 0x93, 0x19, 0xF0, 0x01, 0x0F, 0x5F, 0xFA, + 0x88, 0xF4, 0x38, 0x44, 0x4C, 0xF8, 0x10, 0x5C, 0x07, 0xD1, 0x01, 0x25, + 0x05, 0xFA, 0x03, 0xF3, 0x1A, 0x43, 0xAE, 0x44, 0xD2, 0xB2, 0x5F, 0xFA, + 0x8E, 0xFE, 0x01, 0x31, 0x8B, 0x45, 0xD2, 0xD1, 0x08, 0x2C, 0x41, 0xD0, + 0xA4, 0xEB, 0x0E, 0x04, 0xE4, 0xB2, 0xA4, 0x02, 0x92, 0x01, 0xB0, 0xF5, + 0x7D, 0x6F, 0x1E, 0xD8, 0x0F, 0x30, 0x0A, 0xF1, 0x0F, 0x0A, 0xC0, 0xF3, + 0x07, 0x13, 0xCA, 0xF3, 0x07, 0x1A, 0x00, 0x21, 0x00, 0x98, 0x1B, 0x06, + 0x43, 0xEA, 0x00, 0x33, 0x13, 0x43, 0x23, 0x43, 0x0B, 0x43, 0x01, 0x99, + 0x08, 0x46, 0x21, 0x49, 0x4F, 0xF4, 0x1E, 0x72, 0x43, 0xEA, 0x0A, 0x43, + 0x02, 0xFB, 0x00, 0x12, 0x43, 0xF0, 0x0F, 0x03, 0xC2, 0xF8, 0x04, 0x32, + 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB0, 0xF5, 0x7D, 0x4F, 0x0D, 0xD9, + 0xB0, 0xF5, 0xFD, 0x2F, 0x18, 0xD8, 0x00, 0xF2, 0xFF, 0x70, 0x0A, 0xF2, + 0xFF, 0x7A, 0xC0, 0xF3, 0xC7, 0x23, 0xCA, 0xF3, 0xC7, 0x2A, 0x4F, 0xF4, + 0x00, 0x41, 0xD7, 0xE7, 0xFF, 0x30, 0x0A, 0xF1, 0xFF, 0x0A, 0xC0, 0xF3, + 0x07, 0x23, 0xCA, 0xF3, 0x07, 0x2A, 0x4F, 0xF4, 0x80, 0x41, 0xCD, 0xE7, + 0x4F, 0xF4, 0x40, 0x64, 0x00, 0x22, 0xBE, 0xE7, 0x47, 0xF6, 0xFF, 0x73, + 0xBA, 0xF5, 0xFE, 0x0F, 0x94, 0xBF, 0x9A, 0x44, 0x03, 0xF5, 0xFE, 0x0A, + 0xB0, 0xF5, 0xFE, 0x0F, 0x94, 0xBF, 0x18, 0x18, 0x03, 0xF5, 0xFE, 0x00, + 0xC0, 0xF3, 0xC7, 0x33, 0xCA, 0xF3, 0xC7, 0x3A, 0x4F, 0xF4, 0x40, 0x41, + 0xB4, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0xC0, 0xB2, 0x15, 0x00, 0xA0, 0xB2, 0x15, 0x00, 0x49, 0x4B, 0x4A, 0x4A, + 0x4F, 0xF4, 0x80, 0x11, 0x2D, 0xE9, 0xF0, 0x47, 0x19, 0x60, 0x13, 0x68, + 0x13, 0xF4, 0x40, 0x1F, 0xFB, 0xD1, 0xDF, 0xF8, 0x34, 0x81, 0x45, 0x4A, + 0x98, 0xF8, 0x8C, 0x30, 0x4F, 0xF4, 0x80, 0x11, 0x11, 0x60, 0x00, 0x2B, + 0x6E, 0xD0, 0x98, 0xF8, 0x7E, 0x60, 0xDF, 0xF8, 0x20, 0x91, 0x54, 0x23, + 0x03, 0xFB, 0x06, 0x93, 0x9A, 0x7E, 0x00, 0x2A, 0x38, 0xD0, 0x54, 0x20, + 0x00, 0xFB, 0x06, 0x94, 0x20, 0x46, 0x62, 0x6A, 0x93, 0x88, 0x43, 0xF0, + 0x10, 0x03, 0x93, 0x80, 0x1C, 0x30, 0x10, 0xF0, 0x55, 0xF8, 0x37, 0x4B, + 0x53, 0xF8, 0x26, 0x00, 0x0F, 0xF0, 0x6A, 0xFF, 0x00, 0x23, 0xA3, 0x76, + 0x63, 0x62, 0x06, 0xEB, 0x46, 0x04, 0x08, 0xEB, 0x84, 0x04, 0x94, 0xF8, + 0x2E, 0x50, 0x2D, 0xB9, 0x60, 0x6A, 0x18, 0xB1, 0x31, 0x46, 0xFB, 0xF7, + 0x93, 0xF8, 0x65, 0x62, 0x2D, 0x4A, 0x2E, 0x49, 0x13, 0x68, 0x23, 0xF0, + 0x40, 0x03, 0x13, 0x60, 0x54, 0x23, 0x03, 0xFB, 0x06, 0x99, 0x40, 0x22, + 0x0A, 0x60, 0x99, 0xF8, 0x50, 0x30, 0x00, 0x22, 0x01, 0x3B, 0x30, 0x46, + 0x89, 0xF8, 0x50, 0x30, 0x88, 0xF8, 0x8C, 0x20, 0xBD, 0xE8, 0xF0, 0x47, + 0xFE, 0xF7, 0x66, 0xBE, 0xDC, 0x68, 0x62, 0x6A, 0x92, 0x02, 0x2D, 0xD4, + 0x54, 0x25, 0xDF, 0xF8, 0x98, 0xA0, 0x20, 0x4F, 0x05, 0xFB, 0x06, 0x95, + 0x11, 0xE0, 0xE3, 0x6C, 0x62, 0x6A, 0x19, 0x6D, 0x41, 0xF0, 0x00, 0x41, + 0x41, 0xF4, 0x80, 0x01, 0x19, 0x65, 0x93, 0x02, 0x20, 0x46, 0x17, 0xD5, + 0xD7, 0xF8, 0xD8, 0x33, 0x98, 0x47, 0xAB, 0x7E, 0xEC, 0x68, 0x00, 0x2B, + 0xA9, 0xD1, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xE7, 0xDA, 0x00, 0x2C, 0xE5, 0xD1, 0x12, 0x49, 0x12, 0x48, 0x40, 0xF2, + 0xB3, 0x72, 0x11, 0xF0, 0x0D, 0xFC, 0xDE, 0xE7, 0xBD, 0xE8, 0xF0, 0x87, + 0xD7, 0xF8, 0xE4, 0x33, 0x98, 0x47, 0xA8, 0xE7, 0x5A, 0x69, 0x61, 0x6C, + 0x52, 0x6C, 0x8A, 0x42, 0xCC, 0xD1, 0xD2, 0xF8, 0x38, 0x21, 0x12, 0x68, + 0x5A, 0x61, 0xC7, 0xE7, 0x80, 0x81, 0x32, 0x40, 0x88, 0x81, 0x32, 0x40, + 0x84, 0x81, 0x32, 0x40, 0xC4, 0x90, 0x15, 0x00, 0x8C, 0x80, 0x32, 0x40, + 0x88, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x3C, 0x91, 0x15, 0x00, 0x94, 0x64, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x69, 0x4F, 0xDF, 0xF8, + 0xCC, 0x81, 0x97, 0xF8, 0x7E, 0x60, 0x54, 0x25, 0x05, 0xFB, 0x06, 0x85, + 0xAB, 0x7E, 0x53, 0xBB, 0xDF, 0xF8, 0xA0, 0xA1, 0xDF, 0xF8, 0xAC, 0x91, + 0x15, 0xE0, 0xD4, 0xF8, 0x4C, 0xC0, 0xDF, 0xF8, 0xA0, 0xE1, 0xDC, 0xF8, + 0x50, 0x30, 0x43, 0xF4, 0x80, 0x02, 0x00, 0x2B, 0x20, 0x46, 0x11, 0x46, + 0x26, 0xDA, 0x63, 0x6A, 0xCC, 0xF8, 0x50, 0x20, 0x9C, 0x02, 0x23, 0xD5, + 0xDE, 0xF8, 0xD8, 0x33, 0x98, 0x47, 0xAB, 0x7E, 0x7B, 0xB9, 0xDA, 0xF8, + 0x00, 0x30, 0xEC, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE2, 0xDA, + 0x00, 0x2C, 0xE0, 0xD1, 0x53, 0x48, 0x4F, 0xF4, 0x02, 0x62, 0x49, 0x46, + 0x11, 0xF0, 0xAE, 0xFB, 0xD9, 0xE7, 0x54, 0x22, 0x02, 0xFB, 0x06, 0x82, + 0x02, 0x2B, 0x54, 0x6A, 0x0C, 0xBF, 0x04, 0xF1, 0x0C, 0x03, 0x04, 0xF1, + 0x50, 0x03, 0xDB, 0x6B, 0x00, 0x2B, 0x29, 0xDB, 0xBD, 0xE8, 0xF0, 0x87, + 0xDE, 0xF8, 0xE4, 0x33, 0x98, 0x47, 0x06, 0xEB, 0x46, 0x04, 0x07, 0xEB, + 0x84, 0x04, 0x94, 0xF8, 0x2E, 0x50, 0x2D, 0xB9, 0x60, 0x6A, 0x18, 0xB1, + 0x31, 0x46, 0xFA, 0xF7, 0xD1, 0xFF, 0x65, 0x62, 0x41, 0x4A, 0x42, 0x49, + 0x13, 0x68, 0x23, 0xF0, 0x40, 0x03, 0x13, 0x60, 0x54, 0x23, 0x03, 0xFB, + 0x06, 0x88, 0x40, 0x22, 0x0A, 0x60, 0x98, 0xF8, 0x50, 0x30, 0x00, 0x22, + 0x01, 0x3B, 0x30, 0x46, 0x88, 0xF8, 0x50, 0x30, 0x87, 0xF8, 0x8C, 0x20, + 0xBD, 0xE8, 0xF0, 0x47, 0xFE, 0xF7, 0xA4, 0xBD, 0x18, 0x02, 0x35, 0xD5, + 0xA3, 0x88, 0x99, 0x06, 0x13, 0xD4, 0xDF, 0xF8, 0xE0, 0x90, 0xD9, 0xF8, + 0x9C, 0x32, 0x98, 0x47, 0x04, 0x25, 0xA3, 0x88, 0x9A, 0x06, 0x0A, 0xD4, + 0xD9, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0x01, 0x3D, 0xF7, 0xD1, 0x2E, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x42, 0xDB, 0x97, 0xF8, + 0x87, 0x30, 0x00, 0x2B, 0x37, 0xD0, 0x2A, 0x49, 0x97, 0xF8, 0x64, 0x30, + 0x0A, 0x68, 0x1B, 0x06, 0x22, 0xF0, 0xE0, 0x62, 0x03, 0xF0, 0xE0, 0x63, + 0x13, 0x43, 0x0B, 0x60, 0xA3, 0x88, 0x25, 0x4A, 0x43, 0xF0, 0x10, 0x03, + 0x52, 0xF8, 0x26, 0x00, 0xA3, 0x80, 0x0F, 0xF0, 0x4F, 0xFE, 0x54, 0x23, + 0x03, 0xFB, 0x06, 0x83, 0x00, 0x22, 0x9A, 0x76, 0x5A, 0x62, 0xA2, 0xE7, + 0x54, 0x20, 0x00, 0xFB, 0x06, 0x80, 0x1C, 0x30, 0x0F, 0xF0, 0x28, 0xFF, + 0x97, 0xF8, 0x87, 0x30, 0x00, 0x2B, 0xE5, 0xD0, 0x17, 0x4A, 0x97, 0xF8, + 0x65, 0x00, 0x13, 0x68, 0x11, 0x68, 0xC3, 0xF3, 0x02, 0x63, 0x01, 0x33, + 0x83, 0x42, 0x28, 0xBF, 0x03, 0x46, 0x1B, 0x06, 0x03, 0xF0, 0xE0, 0x63, + 0x21, 0xF0, 0xE0, 0x61, 0x0B, 0x43, 0x13, 0x60, 0xD2, 0xE7, 0x10, 0x4B, + 0x97, 0xF8, 0x7E, 0x00, 0xD3, 0xF8, 0xC0, 0x33, 0x98, 0x47, 0xCB, 0xE7, + 0xA3, 0x88, 0x9B, 0x06, 0xB9, 0xD4, 0xBD, 0xE8, 0xF0, 0x47, 0x0B, 0x49, + 0x0B, 0x48, 0x40, 0xF6, 0x6A, 0x02, 0x11, 0xF0, 0xDD, 0xBA, 0x00, 0xBF, + 0x94, 0x64, 0x17, 0x00, 0x3C, 0x91, 0x15, 0x00, 0x8C, 0x80, 0x32, 0x40, + 0x88, 0x80, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, + 0xC4, 0x90, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xD4, 0x8E, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, 0x10, 0xB5, 0x0D, 0x4C, + 0x90, 0x22, 0x00, 0x21, 0x20, 0x46, 0xEC, 0xF7, 0x09, 0xFE, 0xFF, 0xF7, + 0x09, 0xFD, 0x40, 0xF2, 0xD3, 0x13, 0xE3, 0x66, 0xED, 0xF7, 0xA4, 0xFE, + 0x07, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x70, 0x43, 0x18, 0xB1, 0x43, 0xF0, + 0x30, 0x43, 0x13, 0x60, 0x10, 0xBD, 0x43, 0xF0, 0x10, 0x43, 0x13, 0x60, + 0x10, 0xBD, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x54, 0x83, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x43, 0x2A, 0x4C, 0x65, 0x68, 0x95, 0xB0, 0x00, 0x2D, + 0x44, 0xD0, 0x29, 0x4E, 0xA7, 0x68, 0xD6, 0xF8, 0xD8, 0x31, 0x20, 0x46, + 0x98, 0x47, 0xD4, 0xF8, 0x10, 0x80, 0xB8, 0xF1, 0x00, 0x0F, 0x26, 0xD0, + 0x01, 0x25, 0x24, 0x49, 0x68, 0x46, 0x50, 0x22, 0x23, 0xF0, 0x66, 0xFD, + 0xA3, 0x69, 0x94, 0xF8, 0x62, 0x90, 0x23, 0xB1, 0x1E, 0x4E, 0x1F, 0x48, + 0xD6, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0xFF, 0xF7, 0xBD, 0xFF, 0xC4, 0xF8, + 0x10, 0x80, 0x84, 0xF8, 0x62, 0x90, 0x18, 0x4C, 0x6B, 0x46, 0x22, 0x46, + 0x0C, 0xAE, 0x58, 0x69, 0x19, 0x7E, 0x90, 0x62, 0x0C, 0x33, 0xB3, 0x42, + 0x82, 0xF8, 0x2C, 0x10, 0x02, 0xF1, 0x0C, 0x02, 0xF5, 0xD1, 0xFD, 0xB9, + 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0xFF, 0xF7, 0xA5, 0xFF, 0xC4, 0xF8, + 0x10, 0x80, 0x10, 0x4B, 0x10, 0x4A, 0x19, 0x69, 0x0B, 0x48, 0xD6, 0xF8, + 0xE0, 0x31, 0xA7, 0x60, 0x01, 0xF5, 0x9C, 0x51, 0x08, 0x31, 0x62, 0x60, + 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, 0xD4, 0xF8, 0x10, 0x80, + 0xB8, 0xF1, 0x00, 0x0F, 0xC1, 0xD1, 0xFF, 0xF7, 0x8D, 0xFF, 0xC4, 0xF8, + 0x10, 0x80, 0xDF, 0xE7, 0x01, 0x4E, 0xE4, 0xE7, 0x94, 0x64, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xA8, 0x64, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x95, 0x24, 0x13, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x42, 0x6D, 0xC3, 0x69, + 0x91, 0xF8, 0x09, 0xC0, 0x9D, 0x68, 0x03, 0x8E, 0x88, 0x46, 0x91, 0x05, + 0x02, 0xD5, 0x12, 0xF4, 0x80, 0x60, 0x3B, 0xD0, 0x12, 0x3B, 0x01, 0x2B, + 0x05, 0xF1, 0x12, 0x05, 0x3A, 0xDD, 0x28, 0x4A, 0xDF, 0xF8, 0xA0, 0x90, + 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x0C, 0x2C, 0x40, 0xF2, 0xFD, 0x7E, + 0x15, 0xE0, 0x03, 0x2B, 0x2A, 0xDD, 0x6A, 0x88, 0x12, 0xF0, 0x08, 0x06, + 0xC2, 0xF3, 0x42, 0x01, 0x24, 0xD1, 0x19, 0xF8, 0x01, 0x20, 0x04, 0x32, + 0x9A, 0x42, 0x2B, 0xDC, 0xBC, 0xF8, 0x20, 0x10, 0xB9, 0x42, 0xA3, 0xEB, + 0x02, 0x03, 0x11, 0xD0, 0x01, 0x2B, 0x15, 0x44, 0x1A, 0xDD, 0x2C, 0x88, + 0xC4, 0xF3, 0x0A, 0x07, 0x77, 0x45, 0x13, 0xD0, 0x14, 0xF4, 0x00, 0x60, + 0xE1, 0xD0, 0xBC, 0xF8, 0x20, 0x10, 0x02, 0x22, 0xB9, 0x42, 0xA3, 0xEB, + 0x02, 0x03, 0xED, 0xD1, 0x14, 0xF4, 0x00, 0x60, 0x0B, 0xD1, 0x98, 0xF8, + 0x0A, 0x30, 0xB3, 0xEB, 0x14, 0x3F, 0x0D, 0xD0, 0xBD, 0xE8, 0xF8, 0x83, + 0x0C, 0x22, 0xDB, 0xE7, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0x23, + 0xC8, 0xF8, 0xDC, 0x30, 0x01, 0x20, 0xF3, 0xE7, 0x30, 0x46, 0xF1, 0xE7, + 0x08, 0xF1, 0xE0, 0x04, 0x02, 0x3A, 0xA9, 0x1C, 0x20, 0x46, 0x23, 0xF0, + 0xBD, 0xFC, 0xC8, 0xF8, 0xDC, 0x40, 0x01, 0x20, 0xE6, 0xE7, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x00, 0x96, 0x15, 0x00, 0x85, 0x4B, 0x86, 0x4A, + 0x19, 0x68, 0x43, 0x6D, 0x2D, 0xE9, 0xF0, 0x4F, 0x00, 0x24, 0xC5, 0x69, + 0x82, 0xF8, 0x88, 0x40, 0xB1, 0xF9, 0x00, 0x10, 0xA1, 0x42, 0x83, 0xB0, + 0xC0, 0xF2, 0xC6, 0x80, 0x9E, 0x01, 0x40, 0xF1, 0xAD, 0x80, 0x00, 0x29, + 0xC3, 0xF3, 0xCF, 0x30, 0xC3, 0xF3, 0xC9, 0x33, 0xC0, 0xF2, 0xB3, 0x80, + 0x7A, 0x49, 0x10, 0x3B, 0xDB, 0xB2, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, + 0x03, 0x14, 0x94, 0xF8, 0x25, 0x00, 0x00, 0x28, 0x00, 0xF0, 0x9A, 0x80, + 0x94, 0xF8, 0x22, 0x50, 0x54, 0xF8, 0x26, 0x0F, 0x50, 0x67, 0x73, 0x48, + 0x73, 0x4E, 0xA4, 0x88, 0x84, 0x80, 0x4F, 0xF4, 0xA4, 0x67, 0x10, 0x69, + 0x07, 0xFB, 0x05, 0x65, 0xA8, 0x42, 0x40, 0xF0, 0x93, 0x80, 0x6F, 0x48, + 0x00, 0x68, 0x00, 0xF0, 0x3F, 0x00, 0x09, 0x28, 0x40, 0xF2, 0x8C, 0x80, + 0x6C, 0x4C, 0x6D, 0x48, 0x24, 0x68, 0x05, 0x68, 0xD2, 0xF8, 0x68, 0x80, + 0xC4, 0xF3, 0x0B, 0x10, 0x04, 0xF0, 0x0F, 0x09, 0xC4, 0xF3, 0x01, 0x4E, + 0x24, 0x03, 0x00, 0x90, 0xA2, 0xF8, 0x7C, 0x00, 0x82, 0xF8, 0x7F, 0x90, + 0x82, 0xF8, 0x83, 0xE0, 0xC5, 0xF3, 0x03, 0x10, 0x05, 0xF0, 0x07, 0x06, + 0x40, 0xF1, 0x8B, 0x80, 0x4F, 0xF0, 0x02, 0x0B, 0x4F, 0xF4, 0x80, 0x64, + 0x5F, 0x46, 0x01, 0x94, 0xC5, 0xF3, 0x00, 0x34, 0xC5, 0xF3, 0x42, 0x2C, + 0x82, 0xF8, 0x80, 0x70, 0xF7, 0xB2, 0x82, 0xF8, 0x81, 0x00, 0x82, 0xF8, + 0x87, 0x40, 0x82, 0xF8, 0x82, 0xC0, 0x82, 0xF8, 0x84, 0x70, 0xB9, 0xF1, + 0x00, 0x0F, 0x79, 0xD0, 0x92, 0xF8, 0x86, 0x50, 0xDF, 0xF8, 0x64, 0x91, + 0xD9, 0xF8, 0x00, 0x40, 0x00, 0x2C, 0xFB, 0xDA, 0xD9, 0xF8, 0x00, 0x90, + 0x50, 0x4C, 0x02, 0x2E, 0x09, 0xEA, 0x04, 0x04, 0x76, 0xD8, 0x4F, 0x4F, + 0x00, 0xEB, 0x40, 0x09, 0x57, 0xF8, 0x26, 0x70, 0xD9, 0x44, 0x37, 0xF8, + 0x19, 0x90, 0xD8, 0xF8, 0x0C, 0x70, 0xDF, 0xF8, 0x3C, 0xA1, 0xBC, 0x42, + 0x28, 0xBF, 0x3C, 0x46, 0x14, 0x67, 0xDA, 0xF8, 0x00, 0xB0, 0x01, 0x9F, + 0x98, 0xF8, 0x1C, 0x80, 0x4F, 0xF4, 0x1E, 0x7A, 0x0A, 0xFB, 0x03, 0x13, + 0x07, 0x43, 0x01, 0x21, 0x47, 0xEA, 0xCE, 0x1E, 0x01, 0xFA, 0x05, 0xF5, + 0x4F, 0xEA, 0x1B, 0x67, 0xD3, 0xF8, 0x4C, 0x11, 0x93, 0x66, 0x00, 0x9B, + 0x27, 0x2C, 0x4E, 0xEA, 0x0C, 0x1C, 0x4F, 0xEA, 0x87, 0x17, 0x18, 0xFB, + 0x05, 0xF8, 0x4C, 0xF4, 0x40, 0x5C, 0x46, 0xEA, 0xC3, 0x06, 0x94, 0xBF, + 0x00, 0x24, 0x01, 0x24, 0x47, 0xF0, 0x13, 0x07, 0x18, 0xFB, 0x09, 0xF9, + 0x82, 0xF8, 0x88, 0x40, 0xD7, 0x66, 0xA1, 0xF8, 0x82, 0xC0, 0xA1, 0xF8, + 0x84, 0x60, 0xA2, 0xF8, 0x7A, 0x90, 0x09, 0xE0, 0xAB, 0x68, 0x59, 0x89, + 0xA2, 0xF8, 0x74, 0x10, 0x99, 0x89, 0xA2, 0xF8, 0x76, 0x10, 0xDB, 0x89, + 0xA2, 0xF8, 0x78, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x10, 0xF4, + 0x7C, 0x7F, 0x7F, 0xF4, 0x49, 0xAF, 0x27, 0x49, 0x27, 0x48, 0x40, 0xF6, + 0x53, 0x12, 0x07, 0xE0, 0x00, 0x8E, 0x1C, 0x28, 0x3F, 0xF6, 0x36, 0xAF, + 0x22, 0x49, 0x24, 0x48, 0x40, 0xF6, 0x46, 0x12, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x4F, 0x11, 0xF0, 0xF9, 0xB8, 0x4F, 0xF0, 0x01, 0x0B, 0x4F, 0xF4, + 0x00, 0x74, 0x5F, 0x46, 0x01, 0x94, 0x73, 0xE7, 0xAC, 0x0F, 0xDF, 0xF8, + 0x7C, 0x90, 0xC5, 0xF3, 0x01, 0x65, 0x19, 0xF8, 0x04, 0x40, 0x82, 0xF8, + 0x85, 0x40, 0x82, 0xF8, 0x86, 0x50, 0x7B, 0xE7, 0x03, 0x3F, 0x00, 0xEB, + 0x40, 0x09, 0xC7, 0xF3, 0x46, 0x0A, 0x0B, 0xEB, 0x49, 0x09, 0x4F, 0xF0, + 0x03, 0x0B, 0x1B, 0xFB, 0x0A, 0x99, 0xDF, 0xF8, 0x54, 0xA0, 0x3A, 0xF8, + 0x19, 0x90, 0x07, 0xF0, 0x01, 0x07, 0x09, 0xFA, 0x07, 0xF9, 0x1F, 0xFA, + 0x89, 0xF9, 0x7A, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x08, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x54, 0x83, 0x32, 0x40, 0x58, 0x83, 0x32, 0x40, 0x5C, 0x83, 0x32, 0x40, + 0xFC, 0xFF, 0x0F, 0x00, 0x04, 0x96, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x50, 0x90, 0x15, 0x00, 0xB0, 0x93, 0x15, 0x00, 0x60, 0x83, 0x32, 0x40, + 0x64, 0x83, 0x32, 0x40, 0xA8, 0xB2, 0x15, 0x00, 0x70, 0x95, 0x15, 0x00, + 0x10, 0xB5, 0x04, 0x4C, 0xD4, 0xF8, 0x9C, 0x32, 0x98, 0x47, 0xD4, 0xF8, + 0xEC, 0x33, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, + 0x10, 0xB5, 0x03, 0xF0, 0x85, 0xFB, 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x04, + 0x03, 0xD4, 0x07, 0x4B, 0x00, 0x24, 0x1C, 0x61, 0x10, 0xBD, 0x04, 0x46, + 0xED, 0xF7, 0x62, 0xFC, 0x00, 0x28, 0xF6, 0xD0, 0x02, 0x4B, 0x1C, 0x61, + 0x10, 0xBD, 0x00, 0xBF, 0x04, 0x00, 0x32, 0x40, 0x94, 0x64, 0x17, 0x00, + 0x18, 0x4B, 0x1B, 0x69, 0x63, 0xB3, 0x93, 0xF8, 0x64, 0x20, 0x4A, 0xB3, + 0x16, 0x4A, 0x93, 0xF8, 0x6C, 0x30, 0x10, 0x68, 0x15, 0x49, 0x40, 0xF0, + 0x10, 0x00, 0x30, 0xB4, 0x10, 0x60, 0x10, 0x68, 0x13, 0x4D, 0x14, 0x4C, + 0x40, 0xF4, 0x00, 0x60, 0x10, 0x60, 0x10, 0x68, 0x40, 0xF4, 0x80, 0x50, + 0x10, 0x60, 0x2A, 0x68, 0x10, 0x48, 0xC4, 0xF8, 0x50, 0x04, 0x42, 0xF4, + 0x00, 0x72, 0x2A, 0x60, 0x0A, 0x68, 0x42, 0xF4, 0x80, 0x32, 0x0A, 0x60, + 0x0A, 0x68, 0x10, 0x33, 0xDB, 0xB2, 0x43, 0xEA, 0x83, 0x23, 0x22, 0xF4, + 0x00, 0x32, 0xC4, 0xF8, 0x4C, 0x34, 0x30, 0xBC, 0x0A, 0x60, 0x70, 0x47, + 0x70, 0x47, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x80, 0x80, 0x32, 0x40, + 0x54, 0x83, 0x32, 0x40, 0x24, 0x03, 0x32, 0x40, 0x60, 0x5D, 0x18, 0x00, + 0x04, 0x07, 0xFF, 0xFF, 0x08, 0xB5, 0x0F, 0x4B, 0x1B, 0x69, 0x1B, 0xB1, + 0x0E, 0x4B, 0xD3, 0xF8, 0xC4, 0x33, 0x98, 0x47, 0x0D, 0x48, 0x0E, 0x4B, + 0x02, 0x68, 0x0E, 0x49, 0x22, 0xF4, 0x00, 0x72, 0x02, 0x60, 0x1A, 0x68, + 0x22, 0xF0, 0x10, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0x00, 0x62, + 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0x80, 0x52, 0x1A, 0x60, 0x0B, 0x68, + 0x23, 0xF4, 0x80, 0x33, 0x0B, 0x60, 0x08, 0xBD, 0x94, 0x64, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x24, 0x03, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, + 0x54, 0x83, 0x32, 0x40, 0x43, 0x6C, 0x13, 0xB1, 0x9B, 0x88, 0x9A, 0x05, + 0x0C, 0xD4, 0xC3, 0x6A, 0xDB, 0x6B, 0x9B, 0x06, 0x43, 0xBF, 0x91, 0xF8, + 0x2D, 0x31, 0x48, 0xF2, 0x07, 0x00, 0x40, 0xEA, 0x43, 0x20, 0xD1, 0xF8, + 0x04, 0x02, 0x70, 0x47, 0x01, 0x4B, 0xD8, 0x6E, 0x70, 0x47, 0x00, 0xBF, + 0x94, 0x64, 0x17, 0x00, 0x4B, 0x08, 0x03, 0x22, 0x02, 0xFB, 0x03, 0x00, + 0x03, 0x4B, 0x33, 0xF8, 0x10, 0x00, 0x01, 0xF0, 0x01, 0x01, 0x88, 0x40, + 0x70, 0x47, 0x00, 0xBF, 0xE0, 0x94, 0x15, 0x00, 0x4B, 0x08, 0x03, 0x22, + 0x02, 0xFB, 0x03, 0x00, 0x03, 0x4B, 0x33, 0xF8, 0x10, 0x00, 0x01, 0xF0, + 0x01, 0x01, 0x88, 0x40, 0x80, 0xB2, 0x70, 0x47, 0x70, 0x95, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0x2B, 0x4F, 0x84, 0x6A, 0x3D, 0x68, 0x90, 0xF8, + 0x1D, 0x80, 0xB5, 0xF9, 0x00, 0xC0, 0xBC, 0xF1, 0x00, 0x0F, 0x16, 0x46, + 0x99, 0x46, 0xC4, 0xF3, 0x41, 0x25, 0x12, 0xDB, 0xC4, 0xF3, 0x02, 0x12, + 0x01, 0x32, 0x1A, 0x60, 0x04, 0xF0, 0x0F, 0x04, 0x22, 0x4A, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x08, 0x23, 0x04, 0xEB, 0x44, 0x04, 0xDB, 0x68, + 0x33, 0x60, 0x05, 0xEB, 0x44, 0x00, 0xBD, 0xE8, 0xF8, 0x83, 0x05, 0x29, + 0x1E, 0xD0, 0x1C, 0x49, 0x1C, 0x48, 0x40, 0xF6, 0xF5, 0x12, 0x10, 0xF0, + 0xF5, 0xFF, 0x39, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0xC4, 0xF3, 0x02, 0x12, + 0x01, 0x32, 0x00, 0x29, 0x4F, 0xEA, 0x14, 0x13, 0xC9, 0xF8, 0x00, 0x20, + 0x04, 0xF0, 0x0F, 0x04, 0xDC, 0xDA, 0x5B, 0x07, 0x11, 0xD4, 0x0B, 0x2C, + 0xD8, 0xD9, 0x10, 0x49, 0x11, 0x48, 0x40, 0xF6, 0xFF, 0x12, 0x10, 0xF0, + 0xDD, 0xFF, 0xD1, 0xE7, 0xC4, 0xF3, 0x02, 0x12, 0x01, 0x32, 0x1A, 0x60, + 0x23, 0x09, 0x5B, 0x07, 0x04, 0xF0, 0x0F, 0x04, 0xED, 0xD5, 0x08, 0x49, + 0x0A, 0x48, 0x40, 0xF6, 0xFE, 0x12, 0x10, 0xF0, 0xCD, 0xFF, 0x3B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE2, 0xDB, 0xBC, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xD8, 0x93, 0x15, 0x00, 0xF8, 0x93, 0x15, 0x00, 0xE0, 0x91, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x14, 0x4E, 0xDF, 0xF8, 0x54, 0xC0, 0x35, 0x69, + 0x04, 0x38, 0x31, 0x46, 0x05, 0xF1, 0x08, 0x04, 0x05, 0xF1, 0x18, 0x0E, + 0x00, 0x27, 0x50, 0xF8, 0x04, 0x2F, 0x13, 0x09, 0x02, 0xF0, 0x0F, 0x08, + 0x03, 0xF4, 0x7F, 0x63, 0x43, 0xEA, 0x08, 0x03, 0x12, 0x0C, 0x8B, 0x62, + 0x81, 0xF8, 0x2C, 0x20, 0x25, 0xB1, 0x22, 0x68, 0x02, 0xEA, 0x0C, 0x02, + 0x13, 0x43, 0x8B, 0x62, 0x04, 0x34, 0xA6, 0x45, 0x4F, 0x62, 0x01, 0xF1, + 0x0C, 0x01, 0xE6, 0xD1, 0x01, 0x23, 0x86, 0xF8, 0x62, 0x30, 0xBD, 0xE8, + 0xF0, 0x81, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x00, 0xF0, 0xFF, 0xFF, + 0x03, 0x4B, 0x02, 0x78, 0x83, 0xF8, 0x64, 0x20, 0x42, 0x78, 0x83, 0xF8, + 0x65, 0x20, 0x70, 0x47, 0x94, 0x64, 0x17, 0x00, 0x0A, 0x4B, 0x9A, 0x69, + 0x8A, 0xB1, 0x30, 0xB4, 0x01, 0xEB, 0x41, 0x02, 0x03, 0xEB, 0x82, 0x02, + 0x4C, 0x00, 0x92, 0xF8, 0x2E, 0x50, 0x05, 0xB1, 0x50, 0x62, 0x21, 0x44, + 0x03, 0xEB, 0x81, 0x03, 0x01, 0x22, 0x30, 0xBC, 0x83, 0xF8, 0x2D, 0x20, + 0x70, 0x47, 0x70, 0x47, 0x94, 0x64, 0x17, 0x00, 0x08, 0x4A, 0x09, 0x4B, + 0x11, 0x69, 0x09, 0x4A, 0x10, 0xB4, 0x01, 0xF5, 0x9C, 0x51, 0x08, 0x4C, + 0x5C, 0x60, 0x98, 0x60, 0x5D, 0xF8, 0x04, 0x4B, 0x18, 0x46, 0x08, 0x31, + 0xD2, 0xF8, 0xE0, 0x31, 0x18, 0x47, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, + 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x95, 0x24, 0x13, 0x00, + 0x08, 0x4A, 0x03, 0x7F, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, + 0x40, 0xF2, 0xFF, 0x31, 0xB3, 0xF8, 0xBE, 0x24, 0x8A, 0x42, 0x00, 0xD1, + 0x70, 0x47, 0x43, 0x6C, 0x28, 0x30, 0x59, 0x6A, 0xFE, 0xF7, 0xF2, 0xBB, + 0x18, 0x88, 0x17, 0x00, 0xF8, 0xB5, 0x0E, 0x4A, 0x03, 0x7F, 0x4F, 0xF4, + 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x40, 0xF2, 0xFF, 0x31, 0xB3, 0xF8, + 0xBE, 0x24, 0x8A, 0x42, 0x0F, 0xD0, 0xD0, 0xE9, 0x12, 0x67, 0x1D, 0x46, + 0x06, 0xF1, 0x3C, 0x04, 0x4C, 0x36, 0x20, 0x46, 0xF9, 0x6A, 0x04, 0x34, + 0xFE, 0xF7, 0xD8, 0xFB, 0xB4, 0x42, 0x02, 0xD0, 0xB5, 0xF8, 0xBE, 0x24, + 0xF5, 0xE7, 0xF8, 0xBD, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x9C, 0x4E, 0xD0, 0xF8, 0x44, 0xB0, 0xC7, 0x6C, 0x96, 0xF8, 0x7E, 0x50, + 0x96, 0xF8, 0x87, 0x30, 0x11, 0xF4, 0x00, 0x09, 0x83, 0xB0, 0x04, 0x46, + 0x8A, 0x46, 0x3E, 0xD0, 0x7B, 0xBB, 0xDF, 0xF8, 0x58, 0x82, 0x28, 0x46, + 0xD8, 0xF8, 0xC0, 0x33, 0x98, 0x47, 0xD8, 0xF8, 0x9C, 0x32, 0x98, 0x47, + 0xBB, 0xF8, 0x04, 0x30, 0x99, 0x06, 0x49, 0xD5, 0x13, 0xF0, 0x40, 0x02, + 0x69, 0xD0, 0x58, 0x46, 0xFD, 0xF7, 0x14, 0xFE, 0x00, 0x23, 0xDF, 0xF8, + 0x4C, 0x82, 0x63, 0x64, 0xB9, 0xF1, 0x00, 0x0F, 0x4D, 0xD0, 0x89, 0x4B, + 0x00, 0x22, 0xD3, 0xF8, 0xAC, 0x33, 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, + 0x54, 0x20, 0x00, 0xFB, 0x05, 0x80, 0x0C, 0x30, 0x0F, 0xF0, 0xD2, 0xFA, + 0xA3, 0x88, 0x00, 0x2B, 0x47, 0xD1, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x4F, 0xFC, 0xF7, 0x0B, 0xB9, 0x7F, 0x48, 0x96, 0xF8, 0x64, 0x30, + 0x01, 0x68, 0xDF, 0xF8, 0xF0, 0x81, 0x1B, 0x06, 0x21, 0xF0, 0xE0, 0x61, + 0x03, 0xF0, 0xE0, 0x63, 0x0B, 0x43, 0x03, 0x60, 0xC7, 0xE7, 0x00, 0x2B, + 0xC8, 0xD0, 0x77, 0x48, 0x96, 0xF8, 0x65, 0xE0, 0x01, 0x68, 0x02, 0x68, + 0xC1, 0xF3, 0x02, 0x61, 0x4B, 0x1C, 0x73, 0x45, 0x28, 0xBF, 0x73, 0x46, + 0x1B, 0x06, 0x03, 0xF0, 0xE0, 0x63, 0x22, 0xF0, 0xE0, 0x6C, 0x43, 0xEA, + 0x0C, 0x03, 0x03, 0x60, 0xBB, 0xF8, 0x04, 0x30, 0x99, 0x06, 0xB5, 0xD4, + 0x1C, 0x23, 0xDF, 0xF8, 0xC4, 0x81, 0x54, 0x20, 0x10, 0xFB, 0x05, 0x30, + 0x40, 0x44, 0x0F, 0xF0, 0x99, 0xFA, 0x58, 0x46, 0xFD, 0xF7, 0xC4, 0xFD, + 0x00, 0x23, 0x63, 0x64, 0xB9, 0xF1, 0x00, 0x0F, 0xB1, 0xD1, 0xCA, 0xF3, + 0x07, 0x29, 0xB9, 0xF1, 0x04, 0x0F, 0x1F, 0xD9, 0x3B, 0x6D, 0x43, 0xF4, + 0x80, 0x33, 0x3B, 0x65, 0xA7, 0xE7, 0x2A, 0x46, 0x51, 0x46, 0x20, 0x46, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xFB, 0xF7, 0x9D, 0xBA, 0x3B, 0x6D, + 0x00, 0x92, 0x23, 0xF4, 0x00, 0x03, 0x2A, 0xF4, 0x00, 0x0A, 0x58, 0x46, + 0x3B, 0x65, 0xCA, 0xF3, 0x07, 0x29, 0xFD, 0xF7, 0xA1, 0xFD, 0x00, 0x9A, + 0xDF, 0xF8, 0x64, 0x81, 0x62, 0x64, 0xB9, 0xF1, 0x04, 0x0F, 0xDF, 0xD8, + 0xD4, 0xF8, 0x48, 0xA0, 0xB9, 0xF1, 0x00, 0x0F, 0x25, 0xD0, 0x0A, 0xF1, + 0x28, 0x0B, 0x05, 0xEB, 0x45, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x09, 0xF1, + 0x01, 0x09, 0x59, 0x6A, 0xDA, 0xE9, 0x17, 0x32, 0xBB, 0x64, 0x4F, 0xEA, + 0x09, 0x23, 0xC7, 0xE9, 0x0D, 0x2B, 0x3B, 0x65, 0x07, 0xF1, 0x14, 0x02, + 0x6B, 0x00, 0x00, 0x29, 0x4B, 0xD0, 0xB9, 0x61, 0x54, 0x20, 0x00, 0xFB, + 0x05, 0x88, 0x1D, 0x44, 0x98, 0xF8, 0x50, 0x30, 0x06, 0xEB, 0x85, 0x06, + 0x01, 0x33, 0x72, 0x62, 0x88, 0xF8, 0x50, 0x30, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0xE3, 0x6A, 0x0A, 0xF1, 0x28, 0x0B, 0x03, 0xF1, 0x40, 0x0C, + 0x1A, 0x46, 0x0A, 0xF1, 0x24, 0x01, 0x52, 0xF8, 0x04, 0x0B, 0x41, 0xF8, + 0x04, 0x0F, 0x62, 0x45, 0xF9, 0xD1, 0xE2, 0x8B, 0x92, 0x04, 0x26, 0xD5, + 0x33, 0x4A, 0x34, 0x48, 0x11, 0x68, 0x62, 0x7F, 0xB1, 0xF9, 0x00, 0x10, + 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, 0x02, 0x02, 0x00, 0x29, 0xD2, 0xF8, + 0x4C, 0x21, 0x00, 0x92, 0x29, 0xDB, 0x00, 0x9A, 0x59, 0x69, 0xD2, 0xF8, + 0x9C, 0x20, 0xCA, 0xF8, 0x40, 0x10, 0x59, 0x6A, 0xCA, 0xF8, 0x50, 0x10, + 0xC2, 0xF3, 0xC2, 0x21, 0x05, 0x29, 0xCA, 0xF8, 0x3C, 0x20, 0x25, 0xD0, + 0xDB, 0x6B, 0x5B, 0x07, 0x05, 0xD4, 0xDA, 0xF8, 0x2C, 0x30, 0x23, 0xF4, + 0xC0, 0x73, 0xCA, 0xF8, 0x2C, 0x30, 0x20, 0x46, 0xFF, 0xF7, 0xDC, 0xFE, + 0x9F, 0xE7, 0x54, 0x21, 0x01, 0xFB, 0x05, 0xF1, 0x1E, 0x48, 0x48, 0xF8, + 0x01, 0x20, 0x00, 0x68, 0x40, 0x78, 0x41, 0x44, 0x00, 0x28, 0xA9, 0xD1, + 0xC1, 0xE9, 0x01, 0x00, 0xA6, 0xE7, 0x00, 0x2A, 0xD3, 0xD1, 0x19, 0x49, + 0x19, 0x48, 0x01, 0x93, 0x40, 0xF2, 0x4B, 0x12, 0x10, 0xF0, 0xFE, 0xFD, + 0x01, 0x9B, 0xCA, 0xE7, 0x00, 0x98, 0xDA, 0xF8, 0x4C, 0x10, 0x90, 0xF8, + 0xA1, 0x00, 0x02, 0xF4, 0xC0, 0x62, 0xB2, 0xF5, 0x80, 0x6F, 0x14, 0xBF, + 0x4F, 0xF4, 0x80, 0x3C, 0x4F, 0xF4, 0x00, 0x3C, 0x21, 0xF4, 0x40, 0x32, + 0x42, 0xEA, 0x0C, 0x02, 0x20, 0xB1, 0x42, 0xF4, 0x80, 0x22, 0xCA, 0xF8, + 0x4C, 0x20, 0xC1, 0xE7, 0x22, 0xF4, 0x80, 0x22, 0xCA, 0xF8, 0x4C, 0x20, + 0xBC, 0xE7, 0x00, 0xBF, 0x94, 0x64, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x54, 0x83, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x34, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, + 0x20, 0x62, 0x17, 0x00, 0x10, 0xB5, 0x05, 0x4C, 0x20, 0x46, 0x0F, 0xF0, + 0x6F, 0xF9, 0x10, 0xF0, 0x25, 0xFE, 0x01, 0x38, 0xC0, 0xB2, 0xE0, 0x72, + 0xA0, 0x72, 0x10, 0xBD, 0x24, 0x65, 0x17, 0x00, 0xC2, 0x4B, 0x2D, 0xE9, + 0xF0, 0x4F, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x02, 0x38, 0x85, 0xB0, + 0x98, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x17, 0xD1, 0x4F, 0xF4, 0x1E, 0x79, + 0x93, 0x46, 0x0C, 0x46, 0x09, 0xFB, 0x01, 0xF2, 0xBA, 0x49, 0x01, 0x92, + 0x8E, 0x18, 0xB0, 0xF8, 0x00, 0xA0, 0x96, 0xF8, 0x24, 0x90, 0xB9, 0xF1, + 0x01, 0x0F, 0x05, 0x46, 0x41, 0xF2, 0x04, 0x42, 0x07, 0xD0, 0x0A, 0xEA, + 0x02, 0x0A, 0xBA, 0xF5, 0x80, 0x5F, 0x5A, 0xD0, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x1A, 0xEA, 0x02, 0x02, 0x00, 0xF0, 0x6B, 0x81, 0x0A, 0xF0, + 0xFC, 0x03, 0xA4, 0x2B, 0x00, 0xF0, 0x75, 0x82, 0x0A, 0xF0, 0x8C, 0x03, + 0x88, 0x2B, 0xEF, 0xD1, 0x0A, 0xF4, 0x40, 0x7A, 0xBA, 0xF5, 0x40, 0x7F, + 0x0C, 0xBF, 0xEF, 0x8B, 0x2F, 0x8B, 0xA7, 0x4B, 0xA5, 0x49, 0xA7, 0x4A, + 0x07, 0xF0, 0x07, 0x07, 0x4F, 0xF4, 0x1E, 0x75, 0xDB, 0x5D, 0x05, 0xFB, + 0x04, 0x15, 0xD2, 0x5C, 0x95, 0xF8, 0x2E, 0x31, 0x1A, 0x42, 0xD9, 0xD0, + 0x95, 0xF8, 0x31, 0x30, 0x13, 0xF0, 0x0C, 0x0F, 0x00, 0xF0, 0x7E, 0x82, + 0x95, 0xF8, 0x32, 0x20, 0x12, 0xF0, 0x06, 0x0F, 0xCE, 0xD1, 0x18, 0x07, + 0x95, 0xF8, 0x2F, 0x91, 0x40, 0xF1, 0x8A, 0x82, 0x99, 0x4B, 0x02, 0x22, + 0x85, 0xF8, 0x32, 0x20, 0xD3, 0xF8, 0x20, 0x33, 0x31, 0x46, 0x40, 0x46, + 0x4A, 0x46, 0x98, 0x47, 0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x7A, 0x82, + 0xA9, 0xEB, 0x00, 0x09, 0xB9, 0xF1, 0x00, 0x0F, 0x00, 0xF3, 0x74, 0x82, + 0x8C, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x24, 0x00, 0x23, + 0x1A, 0x46, 0x94, 0xF8, 0x23, 0x00, 0x47, 0xF0, 0x10, 0x01, 0xFC, 0xF7, + 0xA9, 0xF8, 0x00, 0x23, 0x84, 0xF8, 0x32, 0x30, 0xA4, 0xE7, 0x00, 0x22, + 0x0C, 0x21, 0x49, 0x20, 0x0E, 0xF0, 0x58, 0xFC, 0x4F, 0xF0, 0x01, 0x09, + 0x86, 0xF8, 0x24, 0x90, 0x04, 0x70, 0x80, 0xF8, 0x01, 0x90, 0x0E, 0xF0, + 0x7F, 0xFC, 0x96, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x58, 0xD1, 0x96, 0xF8, + 0x23, 0x30, 0x09, 0x2B, 0x54, 0xD8, 0x96, 0xF8, 0x22, 0x20, 0x77, 0x48, + 0x7B, 0x4D, 0xCD, 0xF8, 0x08, 0x90, 0x9E, 0x23, 0xA4, 0x21, 0x11, 0xFB, + 0x02, 0x31, 0x07, 0xFB, 0x02, 0x07, 0x4F, 0x23, 0x46, 0x22, 0x13, 0xFB, + 0x04, 0x24, 0x71, 0x4A, 0x02, 0xF5, 0x16, 0x73, 0x02, 0xEB, 0xC4, 0x04, + 0x01, 0x9A, 0x1A, 0x44, 0x00, 0xEB, 0xC1, 0x0A, 0x91, 0x46, 0xD6, 0xF8, + 0x08, 0x32, 0x1B, 0xB3, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x6D, 0x4B, 0x02, 0x9A, 0x1A, 0x60, 0x2B, 0x68, 0xA4, 0xF1, + 0x28, 0x00, 0x01, 0x33, 0xAA, 0xF1, 0x28, 0x01, 0x01, 0x90, 0x2B, 0x60, + 0x0F, 0xF0, 0x98, 0xF9, 0xD6, 0xE9, 0x82, 0x23, 0x01, 0x98, 0xC7, 0xF8, + 0xC8, 0x24, 0xC7, 0xF8, 0xCC, 0x34, 0x0F, 0xF0, 0x99, 0xF8, 0x2B, 0x68, + 0x5A, 0x1E, 0x2B, 0xB1, 0x60, 0x4B, 0x2A, 0x60, 0x1B, 0x68, 0x0A, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0xD6, 0xF8, 0x30, 0x32, 0x50, 0x46, 0x21, 0x46, + 0x08, 0x36, 0x0A, 0xF1, 0x08, 0x0A, 0x08, 0x37, 0x23, 0xB1, 0x0F, 0xF0, + 0x7B, 0xF9, 0x20, 0x46, 0x0F, 0xF0, 0x82, 0xF8, 0x08, 0x34, 0x4C, 0x45, + 0xC7, 0xD1, 0x40, 0x20, 0x0E, 0xF0, 0xDE, 0xFF, 0x4D, 0x4B, 0x4F, 0xF4, + 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x36, 0x96, 0xF8, 0xDE, 0x20, 0x00, 0x2A, + 0x40, 0xF0, 0x82, 0x80, 0x0B, 0xF1, 0x0A, 0x05, 0x48, 0x4B, 0xED, 0xB2, + 0x4F, 0xF4, 0x1E, 0x79, 0x09, 0xFB, 0x05, 0xF9, 0x03, 0xEB, 0x09, 0x04, + 0x94, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x73, 0xD0, 0x02, 0x23, 0x0C, 0x21, + 0x49, 0x20, 0x0E, 0xF0, 0xD5, 0xFB, 0x4F, 0xF0, 0x01, 0x0A, 0x84, 0xF8, + 0x24, 0xA0, 0x05, 0x70, 0x80, 0xF8, 0x01, 0xA0, 0x0E, 0xF0, 0xFC, 0xFB, + 0x94, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xA9, 0x81, 0x94, 0xF8, + 0x23, 0x30, 0x09, 0x2B, 0x00, 0xF2, 0xA4, 0x81, 0x94, 0xF8, 0x22, 0x00, + 0xCD, 0xF8, 0x08, 0xA0, 0xA4, 0x21, 0x9E, 0x23, 0x11, 0xFB, 0x00, 0x33, + 0x4F, 0xF0, 0x46, 0x0A, 0x4F, 0x21, 0x11, 0xFB, 0x05, 0xAA, 0x36, 0x4A, + 0x2E, 0x4E, 0x2E, 0x49, 0x07, 0xFB, 0x00, 0x67, 0x01, 0xEB, 0xC3, 0x05, + 0x30, 0x4E, 0xA2, 0xF5, 0x16, 0x73, 0x03, 0xEB, 0xCA, 0x0A, 0x91, 0x44, + 0xD4, 0xF8, 0x08, 0x32, 0x1B, 0xB3, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x2A, 0x4B, 0x02, 0x9A, 0x1A, 0x60, 0x33, 0x68, + 0xAA, 0xF1, 0x28, 0x00, 0x01, 0x33, 0xA5, 0xF1, 0x28, 0x01, 0x01, 0x90, + 0x33, 0x60, 0x0F, 0xF0, 0x13, 0xF9, 0xD4, 0xE9, 0x82, 0x23, 0x01, 0x98, + 0xC7, 0xF8, 0xC8, 0x24, 0xC7, 0xF8, 0xCC, 0x34, 0x0F, 0xF0, 0x14, 0xF8, + 0x33, 0x68, 0x5A, 0x1E, 0x2B, 0xB1, 0x1E, 0x4B, 0x32, 0x60, 0x1B, 0x68, + 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0xD4, 0xF8, 0x30, 0x32, 0x28, 0x46, + 0x51, 0x46, 0x08, 0x34, 0x08, 0x35, 0x08, 0x37, 0x23, 0xB1, 0x0F, 0xF0, + 0xF7, 0xF8, 0x50, 0x46, 0x0E, 0xF0, 0xFE, 0xFF, 0x0A, 0xF1, 0x08, 0x0A, + 0xCA, 0x45, 0xC7, 0xD1, 0x40, 0x20, 0x0E, 0xF0, 0x59, 0xFF, 0x0B, 0x4A, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0x23, 0x93, 0xF8, 0xDE, 0x20, + 0x07, 0x48, 0x0B, 0x49, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0x03, + 0x01, 0x32, 0x83, 0xF8, 0xDE, 0x20, 0xD1, 0xF8, 0x0C, 0x32, 0x40, 0x46, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x18, 0x88, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0xC0, 0xB2, 0x15, 0x00, 0xA4, 0xB2, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0xC0, 0x67, 0x17, 0x00, 0x0C, 0x21, 0x49, 0x20, 0x02, 0x92, 0x0E, 0xF0, + 0x41, 0xFB, 0x02, 0x9A, 0x86, 0xF8, 0x24, 0x20, 0x04, 0x70, 0x42, 0x70, + 0x0E, 0xF0, 0x6A, 0xFB, 0x96, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x60, 0xD1, + 0x96, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0x5C, 0xD8, 0x96, 0xF8, 0x22, 0x20, + 0xA8, 0x48, 0xCD, 0xF8, 0x08, 0x90, 0xA4, 0x21, 0x9E, 0x23, 0x11, 0xFB, + 0x02, 0x33, 0xA6, 0x49, 0xDF, 0xF8, 0xA0, 0xA2, 0x03, 0x94, 0x07, 0xFB, + 0x02, 0x19, 0x4F, 0x25, 0x01, 0xEB, 0xC3, 0x07, 0x46, 0x22, 0x01, 0x9B, + 0x15, 0xFB, 0x04, 0x25, 0x00, 0xF5, 0x16, 0x72, 0x13, 0x44, 0x3C, 0x46, + 0x00, 0xEB, 0xC5, 0x05, 0x1F, 0x46, 0xD6, 0xF8, 0x08, 0x22, 0x3A, 0xB3, + 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x99, 0x4B, + 0x02, 0x9A, 0x1A, 0x60, 0xDA, 0xF8, 0x00, 0x20, 0xA5, 0xF1, 0x28, 0x00, + 0x01, 0x32, 0xA4, 0xF1, 0x28, 0x01, 0x01, 0x90, 0xCA, 0xF8, 0x00, 0x20, + 0x0F, 0xF0, 0x7E, 0xF8, 0xD6, 0xE9, 0x82, 0x21, 0x01, 0x98, 0xC9, 0xF8, + 0xC8, 0x24, 0xC9, 0xF8, 0xCC, 0x14, 0x0E, 0xF0, 0x7F, 0xFF, 0xDA, 0xF8, + 0x00, 0x20, 0x51, 0x1E, 0x32, 0xB1, 0x8B, 0x4B, 0xCA, 0xF8, 0x00, 0x10, + 0x1A, 0x68, 0x09, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD6, 0xF8, 0x30, 0x22, + 0x20, 0x46, 0x29, 0x46, 0x08, 0x36, 0x08, 0x34, 0x09, 0xF1, 0x08, 0x09, + 0x22, 0xB1, 0x0F, 0xF0, 0x5F, 0xF8, 0x28, 0x46, 0x0E, 0xF0, 0x66, 0xFF, + 0x08, 0x35, 0xBD, 0x42, 0xC3, 0xD1, 0x40, 0x20, 0x03, 0x9C, 0x0E, 0xF0, + 0xC1, 0xFE, 0x7E, 0x4D, 0x21, 0x46, 0xEB, 0x68, 0x40, 0x46, 0x98, 0x47, + 0x79, 0x4B, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x33, 0x93, 0xF8, + 0xDE, 0xA0, 0x0A, 0xF1, 0xFF, 0x3A, 0x5F, 0xFA, 0x8A, 0xFA, 0x83, 0xF8, + 0xDE, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x84, 0x80, 0x0B, 0xF1, + 0x0A, 0x06, 0x6F, 0x49, 0xF6, 0xB2, 0x4F, 0xF4, 0x1E, 0x79, 0x09, 0xFB, + 0x06, 0xF9, 0x01, 0xEB, 0x09, 0x04, 0x94, 0xF8, 0x24, 0x30, 0x00, 0x2B, + 0x71, 0xD0, 0x02, 0x23, 0x52, 0x46, 0x0C, 0x21, 0x49, 0x20, 0x0E, 0xF0, + 0xAB, 0xFA, 0x84, 0xF8, 0x24, 0xA0, 0x06, 0x70, 0x80, 0xF8, 0x01, 0xA0, + 0x0E, 0xF0, 0xD4, 0xFA, 0x94, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x60, 0xD1, + 0x94, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0x5C, 0xD8, 0x94, 0xF8, 0x22, 0x10, + 0x5E, 0x4A, 0xDF, 0xF8, 0x88, 0xC1, 0xDF, 0xF8, 0x80, 0xA1, 0x02, 0x96, + 0x9E, 0x23, 0xA4, 0x20, 0x10, 0xFB, 0x01, 0x30, 0x07, 0xFB, 0x01, 0x27, + 0x4F, 0x23, 0x46, 0x21, 0x13, 0xFB, 0x06, 0x13, 0xAC, 0xF5, 0x16, 0x71, + 0x02, 0xEB, 0xC0, 0x0B, 0xE1, 0x44, 0x01, 0xEB, 0xC3, 0x03, 0x5E, 0x46, + 0xCB, 0x46, 0xB9, 0x46, 0x1F, 0x46, 0xD4, 0xF8, 0x08, 0x22, 0x3A, 0xB3, + 0xEF, 0xF3, 0x10, 0x82, 0xD3, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x4E, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0xDA, 0xF8, 0x00, 0x20, 0xA7, 0xF1, 0x28, 0x00, + 0x01, 0x32, 0xA6, 0xF1, 0x28, 0x01, 0x01, 0x90, 0xCA, 0xF8, 0x00, 0x20, + 0x0E, 0xF0, 0xE8, 0xFF, 0xD4, 0xE9, 0x82, 0x21, 0x01, 0x98, 0xC9, 0xF8, + 0xC8, 0x24, 0xC9, 0xF8, 0xCC, 0x14, 0x0E, 0xF0, 0xE9, 0xFE, 0xDA, 0xF8, + 0x00, 0x20, 0x51, 0x1E, 0x32, 0xB1, 0x40, 0x4B, 0xCA, 0xF8, 0x00, 0x10, + 0x1A, 0x68, 0x09, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xD4, 0xF8, 0x30, 0x22, + 0x30, 0x46, 0x39, 0x46, 0x08, 0x34, 0x08, 0x36, 0x09, 0xF1, 0x08, 0x09, + 0x22, 0xB1, 0x0E, 0xF0, 0xC9, 0xFF, 0x38, 0x46, 0x0E, 0xF0, 0xD0, 0xFE, + 0x08, 0x37, 0x5F, 0x45, 0xC3, 0xD1, 0x40, 0x20, 0x02, 0x9E, 0x0E, 0xF0, + 0x2B, 0xFE, 0xEB, 0x68, 0x31, 0x46, 0x40, 0x46, 0x98, 0x47, 0xD5, 0xF8, + 0x0C, 0x32, 0x40, 0x46, 0xDC, 0xE6, 0x96, 0xF8, 0x31, 0x20, 0x12, 0xF0, + 0x02, 0x07, 0x16, 0xD0, 0x96, 0xF8, 0x32, 0x30, 0x2B, 0x49, 0x43, 0xF0, + 0x01, 0x03, 0x86, 0xF8, 0x32, 0x30, 0x4A, 0x46, 0xD1, 0xF8, 0x20, 0x33, + 0x40, 0x46, 0x31, 0x46, 0x98, 0x47, 0x96, 0xF8, 0x32, 0x30, 0x23, 0xF0, + 0x01, 0x03, 0x86, 0xF8, 0x32, 0x30, 0x71, 0xE5, 0x96, 0xF8, 0xDE, 0x20, + 0xB4, 0xE6, 0x04, 0x23, 0x3A, 0x46, 0x0C, 0x21, 0x4A, 0x20, 0x0E, 0xF0, + 0x15, 0xFA, 0x04, 0x70, 0x80, 0xF8, 0x01, 0x90, 0x87, 0x70, 0x0E, 0xF0, + 0x3F, 0xFA, 0x61, 0xE5, 0x95, 0xF8, 0x32, 0x30, 0x13, 0xF0, 0x06, 0x04, + 0x7F, 0xF4, 0x50, 0xAD, 0x02, 0x26, 0x95, 0xF8, 0x23, 0x00, 0x85, 0xF8, + 0x32, 0x60, 0x47, 0xF0, 0x10, 0x01, 0x23, 0x46, 0x22, 0x46, 0xFB, 0xF7, + 0x45, 0xFE, 0x85, 0xF8, 0x32, 0x40, 0x41, 0xE5, 0x95, 0xF8, 0x31, 0x30, + 0x59, 0x07, 0x7F, 0xF5, 0x87, 0xAD, 0x0B, 0x4B, 0x4F, 0xF4, 0x1E, 0x70, + 0x00, 0xFB, 0x04, 0x30, 0x04, 0x23, 0x80, 0xF8, 0x32, 0x30, 0x00, 0x22, + 0x0C, 0x21, 0x4A, 0x20, 0x0E, 0xF0, 0xE8, 0xF9, 0x01, 0x22, 0x04, 0x70, + 0x80, 0xF8, 0x01, 0x90, 0x82, 0x70, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, + 0x0E, 0xF0, 0x0E, 0xBA, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0xC0, 0x67, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x05, 0x8E, 0x87, 0xB0, + 0xAD, 0xB1, 0x7A, 0x4B, 0xC6, 0x69, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x04, 0x46, 0x11, 0xDB, 0x77, 0x4A, 0x65, 0x6D, 0x12, 0x68, + 0x12, 0x78, 0x92, 0x07, 0x03, 0xD5, 0x05, 0xF0, 0x3C, 0x02, 0x3C, 0x2A, + 0x77, 0xD0, 0x73, 0x4A, 0xAA, 0x43, 0x0E, 0xD0, 0x01, 0x25, 0x28, 0x46, + 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2E, 0xEB, 0xD1, 0x6F, 0x49, + 0x6F, 0x48, 0x4F, 0xF4, 0xD4, 0x72, 0x35, 0x46, 0x10, 0xF0, 0x5A, 0xFA, + 0xF1, 0xE7, 0x00, 0x2B, 0xC5, 0xF3, 0xCF, 0x30, 0xC5, 0xF3, 0xC9, 0x31, + 0x68, 0xDB, 0x6A, 0x4A, 0x10, 0x39, 0xC9, 0xB2, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x25, 0x00, 0x00, 0x28, 0x68, 0xD0, + 0xD6, 0xF8, 0x08, 0xB0, 0x0D, 0x29, 0xBB, 0xF8, 0x00, 0x00, 0x00, 0x90, + 0x69, 0xD9, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x22, 0x13, 0x8C, + 0xFF, 0x2B, 0x67, 0xD0, 0x01, 0x92, 0x01, 0x9B, 0xDF, 0xF8, 0x88, 0x81, + 0x93, 0xF8, 0x22, 0x90, 0xDF, 0xF8, 0x84, 0xA1, 0x02, 0x91, 0x4F, 0xF4, + 0xA4, 0x67, 0x07, 0xFB, 0x09, 0x87, 0xDA, 0xF8, 0xB8, 0x32, 0x97, 0xF8, + 0x63, 0x20, 0x58, 0x46, 0x98, 0x47, 0x97, 0xF8, 0x64, 0x30, 0x00, 0x2B, + 0xBA, 0xD0, 0x00, 0x9B, 0x13, 0xF0, 0x04, 0x03, 0x03, 0x93, 0x05, 0xD1, + 0x02, 0x99, 0x97, 0xF8, 0x63, 0x00, 0x01, 0x22, 0x0C, 0xF0, 0x96, 0xFB, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x09, 0x88, 0x98, 0xF8, 0x62, 0x30, + 0x00, 0x2B, 0xA7, 0xD1, 0x00, 0x9A, 0x02, 0xF0, 0xFC, 0x07, 0x80, 0x2F, + 0x4A, 0xD0, 0x50, 0x2F, 0x67, 0xD0, 0x03, 0x9B, 0x00, 0x2B, 0x9D, 0xD1, + 0xDA, 0xF8, 0x44, 0x32, 0x29, 0x46, 0x58, 0x46, 0x42, 0x46, 0x98, 0x47, + 0x98, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x93, 0xD0, 0xD0, 0x2F, 0x91, 0xD1, + 0xB1, 0x68, 0x63, 0x6B, 0x22, 0x8E, 0x40, 0x46, 0x0B, 0xF0, 0x5C, 0xFF, + 0x8A, 0xE7, 0x37, 0x4A, 0x25, 0xF0, 0x40, 0x05, 0x45, 0xF4, 0x00, 0x55, + 0xAA, 0x43, 0x65, 0x65, 0x82, 0xD1, 0x90, 0xE7, 0x10, 0xF4, 0x7C, 0x73, + 0x93, 0xD1, 0x32, 0x49, 0x34, 0x48, 0x40, 0xF2, 0xE3, 0x12, 0x1D, 0x46, + 0x10, 0xF0, 0xE0, 0xF9, 0x77, 0xE7, 0x25, 0xF0, 0x00, 0x75, 0x65, 0x65, + 0x01, 0x25, 0x28, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x2E, 0x48, + 0x00, 0x69, 0xC3, 0xF8, 0x58, 0x02, 0x90, 0xE7, 0x00, 0x9B, 0x03, 0xF0, + 0xFC, 0x03, 0x80, 0x2B, 0xED, 0xD1, 0xD3, 0x6A, 0x01, 0x93, 0x93, 0xF8, + 0x23, 0x20, 0x25, 0xF0, 0xFF, 0x73, 0x10, 0x32, 0x23, 0xF4, 0xC0, 0x33, + 0x43, 0xEA, 0xC2, 0x33, 0x63, 0x65, 0x86, 0xE7, 0x04, 0xF1, 0x14, 0x07, + 0x01, 0x9A, 0xDA, 0xF8, 0x98, 0x51, 0x05, 0x93, 0x41, 0x46, 0x05, 0xAB, + 0x38, 0x46, 0xA8, 0x47, 0xDA, 0xF8, 0x40, 0x32, 0x21, 0x8E, 0x05, 0x46, + 0x42, 0x46, 0x05, 0x98, 0x98, 0x47, 0xDA, 0xF8, 0x4C, 0x34, 0x40, 0x46, + 0x98, 0x47, 0x00, 0x2D, 0x3F, 0xF4, 0x41, 0xAF, 0xDA, 0xF8, 0xE4, 0x31, + 0x3A, 0x46, 0x31, 0x46, 0x40, 0x46, 0x98, 0x47, 0x39, 0xE7, 0x14, 0x4B, + 0x5A, 0x7F, 0x07, 0x2A, 0x7F, 0xF4, 0x34, 0xAF, 0x93, 0xF8, 0x24, 0x00, + 0x00, 0x28, 0x7F, 0xF4, 0x2F, 0xAF, 0x10, 0x4C, 0x10, 0x4D, 0x58, 0x77, + 0xD4, 0xE9, 0x00, 0x12, 0x22, 0xF4, 0x00, 0x72, 0x01, 0x20, 0x11, 0x43, + 0x62, 0x60, 0x29, 0x60, 0x83, 0xF8, 0x24, 0x00, 0x05, 0x46, 0x20, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x00, 0x20, 0x00, 0x02, + 0x70, 0x79, 0x15, 0x00, 0x10, 0x96, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x50, 0x90, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x1C, 0x9E, 0x17, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, 0x18, 0x88, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x07, 0x4C, 0xA3, 0x7A, 0xE2, 0x7A, + 0x01, 0x33, 0xDB, 0xB2, 0x9A, 0x42, 0xA3, 0x72, 0x00, 0xD3, 0x10, 0xBD, + 0x10, 0xF0, 0xF6, 0xF9, 0x00, 0x23, 0xA3, 0x72, 0x10, 0xBD, 0x00, 0xBF, + 0x24, 0x65, 0x17, 0x00, 0x10, 0xB5, 0x10, 0x4C, 0xA3, 0x7A, 0xD3, 0xB9, + 0xE3, 0x7A, 0xA3, 0x72, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0B, 0x4A, 0x0C, 0x4C, + 0x11, 0x68, 0x23, 0x68, 0x48, 0x1C, 0x23, 0xF4, 0x80, 0x73, 0x10, 0x60, + 0x23, 0x60, 0x28, 0xB1, 0x05, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0x10, 0xBD, 0x10, 0xF0, 0xCF, 0xF9, 0xE1, 0xE7, + 0x24, 0x65, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x8C, 0x80, 0x32, 0x40, 0x08, 0xB5, 0x00, 0xF0, 0x29, 0xFC, 0xFF, 0xF7, + 0x93, 0xFB, 0xBD, 0xE8, 0x08, 0x40, 0x1A, 0xF0, 0x9F, 0xB8, 0x00, 0xBF, + 0x0A, 0x4A, 0x0B, 0x4B, 0x10, 0xB5, 0xD2, 0xE9, 0x20, 0x04, 0xD2, 0xE9, + 0x22, 0x12, 0x04, 0x44, 0x0A, 0x44, 0xC3, 0xE9, 0x01, 0x40, 0xC3, 0xE9, + 0x03, 0x12, 0x18, 0x60, 0x59, 0x61, 0xFF, 0xF7, 0x7D, 0xFB, 0xBD, 0xE8, + 0x10, 0x40, 0x1A, 0xF0, 0x89, 0xB8, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, + 0xEC, 0x34, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x68, 0x81, + 0xDF, 0xF8, 0x68, 0x91, 0xDF, 0xF8, 0x68, 0xA1, 0xDF, 0xF8, 0x68, 0xB1, + 0x4D, 0x4F, 0x87, 0xB0, 0x00, 0x25, 0x3C, 0xE0, 0xDA, 0xF8, 0x00, 0x30, + 0xB3, 0xF5, 0x80, 0x1F, 0x4E, 0xD8, 0x20, 0x2D, 0x4C, 0xD0, 0x10, 0xF0, + 0x8D, 0xF9, 0x00, 0x28, 0x61, 0xD0, 0x1A, 0xF0, 0x81, 0xFC, 0x00, 0x28, + 0x5D, 0xD0, 0x62, 0x69, 0x5A, 0x45, 0x0E, 0xD0, 0x43, 0x4B, 0xB9, 0x68, + 0x1E, 0x68, 0x53, 0xF8, 0x04, 0x0C, 0x7B, 0x68, 0xCD, 0xE9, 0x02, 0x60, + 0xCD, 0xE9, 0x00, 0x31, 0x3F, 0x48, 0x3B, 0x68, 0x21, 0x46, 0x0F, 0xF0, + 0x97, 0xFE, 0x20, 0x46, 0x3D, 0x4E, 0x01, 0xF0, 0x41, 0xF9, 0x00, 0x22, + 0xD6, 0xF8, 0x94, 0x32, 0x8D, 0xF8, 0x17, 0x20, 0x0D, 0xF1, 0x17, 0x01, + 0x20, 0x46, 0x98, 0x47, 0x58, 0xBB, 0x9D, 0xF8, 0x17, 0x30, 0x73, 0xB3, + 0x36, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x31, 0xD0, 0x03, 0x2B, + 0x02, 0xD1, 0xD6, 0xF8, 0x8C, 0x32, 0x98, 0x47, 0x01, 0x35, 0x01, 0xF0, + 0x09, 0xF9, 0x4F, 0xF4, 0x80, 0x33, 0xC9, 0xF8, 0x00, 0x30, 0x04, 0x46, + 0x4F, 0xF4, 0x80, 0x10, 0x0E, 0xF0, 0x18, 0xFC, 0x98, 0xF8, 0xB8, 0x30, + 0x94, 0xB3, 0x00, 0x2B, 0xB2, 0xD1, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF5, + 0x80, 0x1F, 0x01, 0xD8, 0x03, 0x2D, 0xB2, 0xDD, 0x4F, 0xF4, 0x80, 0x10, + 0x0E, 0xF0, 0xE4, 0xFB, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD6, 0xF8, + 0xC8, 0x32, 0x20, 0x46, 0x98, 0x47, 0x00, 0x28, 0xD0, 0xD1, 0x20, 0x46, + 0x01, 0xF0, 0xC4, 0xF8, 0x1D, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, + 0xCD, 0xD1, 0xD6, 0xF8, 0x90, 0x32, 0x98, 0x47, 0xCE, 0xE7, 0x1A, 0x4B, + 0x01, 0x22, 0x83, 0xF8, 0x45, 0x20, 0x1A, 0xF0, 0x1B, 0xFC, 0xB0, 0xFA, + 0x80, 0xF2, 0x17, 0x49, 0x52, 0x09, 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, + 0x8D, 0xFE, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1B, 0xB1, 0x13, 0x4D, + 0x95, 0xF8, 0x21, 0x30, 0x3B, 0xB9, 0x12, 0x4A, 0x13, 0x68, 0x43, 0xF4, + 0x80, 0x33, 0x13, 0x60, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD5, 0xE9, + 0x05, 0x12, 0x28, 0x69, 0xF3, 0xF7, 0x5E, 0xFE, 0x6C, 0x61, 0xEC, 0x61, + 0x2C, 0x61, 0xAC, 0x61, 0x85, 0xF8, 0x21, 0x40, 0xEB, 0xE7, 0x00, 0xBF, + 0xEC, 0x34, 0x17, 0x00, 0xD4, 0x81, 0x32, 0x40, 0x3C, 0x96, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x78, 0x36, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, + 0x28, 0x96, 0x15, 0x00, 0x30, 0x65, 0x17, 0x00, 0x80, 0x80, 0x32, 0x40, + 0x2C, 0x19, 0x17, 0x00, 0x7C, 0x80, 0x32, 0x40, 0x80, 0xB6, 0x17, 0x00, + 0x0D, 0xF0, 0xAD, 0xBA, 0x4F, 0xF4, 0x80, 0x00, 0x0E, 0xF0, 0x86, 0xBB, + 0x2D, 0xE9, 0xF8, 0x43, 0x30, 0x4D, 0x2C, 0x68, 0x4F, 0xF4, 0x80, 0x00, + 0x0E, 0xF0, 0xA2, 0xFB, 0x00, 0x2C, 0x31, 0xD0, 0xDF, 0xF8, 0xC4, 0x90, + 0x2C, 0x4F, 0x2E, 0x46, 0x4F, 0xF0, 0x01, 0x08, 0x23, 0x7C, 0xD9, 0x07, + 0x02, 0xD4, 0x2B, 0x89, 0x01, 0x33, 0x2B, 0x81, 0x30, 0x46, 0x0E, 0xF0, + 0x53, 0xFC, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x02, 0xD4, 0x72, 0xB6, + 0xC7, 0xF8, 0x00, 0x80, 0xD9, 0xF8, 0x00, 0x30, 0x62, 0x68, 0x01, 0x33, + 0x00, 0x21, 0xC9, 0xF8, 0x00, 0x30, 0x21, 0x74, 0x0A, 0xB1, 0xA0, 0x68, + 0x90, 0x47, 0xE0, 0x68, 0x08, 0xB1, 0x00, 0xF0, 0x77, 0xFB, 0xD9, 0xF8, + 0x00, 0x30, 0x33, 0xB1, 0x01, 0x3B, 0x3A, 0x68, 0xC9, 0xF8, 0x00, 0x30, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x2C, 0x68, 0x00, 0x2C, 0xD3, 0xD1, + 0xAA, 0x7A, 0xEB, 0x7A, 0x9A, 0x42, 0x20, 0xD0, 0x13, 0x4B, 0x14, 0x48, + 0x1B, 0x69, 0x14, 0x4A, 0xC8, 0x33, 0x4F, 0xF4, 0x80, 0x71, 0x03, 0x60, + 0x11, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x0B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0E, 0x4A, 0x0E, 0x4C, 0x11, 0x68, + 0x23, 0x68, 0x48, 0x1C, 0x43, 0xF4, 0x80, 0x73, 0x10, 0x60, 0x23, 0x60, + 0x28, 0xB1, 0x05, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x24, 0x65, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x48, 0x01, 0x32, 0x40, + 0x88, 0x80, 0x32, 0x40, 0x6C, 0x28, 0x17, 0x00, 0x8C, 0x80, 0x32, 0x40, + 0x2D, 0xE9, 0xF8, 0x43, 0x27, 0x4D, 0x2C, 0x68, 0x4F, 0xF4, 0x80, 0x00, + 0x0E, 0xF0, 0x30, 0xFB, 0x9C, 0xB3, 0xDF, 0xF8, 0x9C, 0x80, 0xDF, 0xF8, + 0x9C, 0x90, 0x00, 0x27, 0x2E, 0x46, 0x27, 0xE0, 0x01, 0x27, 0x30, 0x46, + 0x0E, 0xF0, 0xE6, 0xFB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xD9, 0xF8, 0x00, 0x30, + 0x62, 0x68, 0x01, 0x33, 0x00, 0x21, 0xC9, 0xF8, 0x00, 0x30, 0x21, 0x74, + 0x0A, 0xB1, 0xA0, 0x68, 0x90, 0x47, 0xE0, 0x68, 0x08, 0xB1, 0x00, 0xF0, + 0x09, 0xFB, 0xD9, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x01, 0x3B, 0xD8, 0xF8, + 0x00, 0x20, 0xC9, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x2C, 0x68, 0x24, 0xB1, 0x23, 0x7C, 0xDA, 0x07, 0xD5, 0xD4, 0x00, 0x2F, + 0xD2, 0xD0, 0x0B, 0x4C, 0x94, 0xF8, 0x45, 0x30, 0x0B, 0xB9, 0xBD, 0xE8, + 0xF8, 0x83, 0x4F, 0xF4, 0x80, 0x10, 0x0E, 0xF0, 0xCD, 0xFA, 0x07, 0x49, + 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, 0x94, 0xFD, 0x00, 0x23, 0x84, 0xF8, + 0x45, 0x30, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x24, 0x65, 0x17, 0x00, + 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x96, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x2B, 0x4E, 0x34, 0x68, + 0x4F, 0xF4, 0x80, 0x00, 0x0E, 0xF0, 0xD4, 0xFA, 0x00, 0x2C, 0x3F, 0xD0, + 0x28, 0x4D, 0x2B, 0x88, 0x00, 0x2B, 0x3B, 0xD0, 0xDF, 0xF8, 0xA4, 0x80, + 0xDF, 0xF8, 0xA4, 0x90, 0x37, 0x46, 0x23, 0x7C, 0xD9, 0x07, 0x01, 0xD4, + 0x2B, 0x88, 0x6B, 0xB3, 0x38, 0x46, 0x0E, 0xF0, 0x83, 0xFB, 0xEF, 0xF3, + 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, + 0x00, 0x30, 0xD9, 0xF8, 0x00, 0x30, 0x22, 0x7C, 0x01, 0x33, 0xC9, 0xF8, + 0x00, 0x30, 0xD3, 0x07, 0x02, 0xD4, 0x2B, 0x88, 0x01, 0x3B, 0x2B, 0x80, + 0x63, 0x68, 0x00, 0x22, 0x22, 0x74, 0x0B, 0xB1, 0xA0, 0x68, 0x98, 0x47, + 0xE0, 0x68, 0x08, 0xB1, 0x00, 0xF0, 0xA0, 0xFA, 0xD9, 0xF8, 0x00, 0x30, + 0x3B, 0xB1, 0x01, 0x3B, 0xD8, 0xF8, 0x00, 0x20, 0xC9, 0xF8, 0x00, 0x30, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x34, 0x68, 0x00, 0x2C, 0xCC, 0xD1, + 0x0B, 0x4C, 0x94, 0xF8, 0x45, 0x30, 0x0B, 0xB9, 0xBD, 0xE8, 0xF8, 0x83, + 0x4F, 0xF4, 0x80, 0x10, 0x0E, 0xF0, 0x68, 0xFA, 0x07, 0x49, 0x4F, 0xF4, + 0x80, 0x60, 0x0F, 0xF0, 0x2F, 0xFD, 0x00, 0x23, 0x84, 0xF8, 0x45, 0x30, + 0xBD, 0xE8, 0xF8, 0x83, 0x24, 0x65, 0x17, 0x00, 0x54, 0x28, 0x17, 0x00, + 0xB0, 0xDE, 0x17, 0x00, 0x88, 0x96, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xF8, 0xB5, 0x0D, 0x4E, 0x35, 0x68, 0x95, 0xB1, + 0x34, 0x89, 0x01, 0x34, 0xA4, 0xB2, 0x37, 0x46, 0x38, 0x46, 0x0E, 0xF0, + 0x2D, 0xFB, 0x6B, 0x68, 0x0B, 0xB1, 0xA8, 0x68, 0x98, 0x47, 0x0F, 0xF0, + 0x99, 0xFF, 0x35, 0x68, 0x34, 0x81, 0x01, 0x34, 0xA4, 0xB2, 0x00, 0x2D, + 0xF0, 0xD1, 0xBD, 0xE8, 0xF8, 0x40, 0x00, 0xF0, 0xF5, 0xB9, 0x00, 0xBF, + 0x24, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x44, 0x4F, 0x06, 0x68, + 0x15, 0x88, 0xDF, 0xF8, 0x20, 0x91, 0xDF, 0xF8, 0x20, 0xA1, 0xDF, 0xF8, + 0x20, 0xB1, 0x85, 0xB0, 0x4F, 0xF0, 0x00, 0x08, 0xCD, 0xE9, 0x02, 0x02, + 0x87, 0xF8, 0x02, 0x80, 0xCD, 0xF8, 0x04, 0x80, 0x4A, 0xE0, 0xC4, 0x1A, + 0x2C, 0x44, 0x0C, 0x44, 0x55, 0x1B, 0xA9, 0xB2, 0xA4, 0xB2, 0x00, 0x25, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x36, 0x4A, + 0x01, 0x23, 0x13, 0x60, 0xBA, 0xF8, 0x00, 0x30, 0xDB, 0xF8, 0x00, 0x20, + 0xD9, 0xF8, 0x00, 0xC0, 0x00, 0x92, 0x02, 0xEB, 0xC3, 0x00, 0xB2, 0x68, + 0x42, 0x60, 0x00, 0x9A, 0x0C, 0xF1, 0x01, 0x0E, 0xC9, 0xF8, 0x00, 0xE0, + 0x42, 0xF8, 0x33, 0x10, 0xFA, 0x78, 0x01, 0x33, 0x01, 0x32, 0x88, 0x44, + 0xAA, 0xF8, 0x00, 0x30, 0xFA, 0x70, 0x64, 0xBB, 0xC3, 0x78, 0xA7, 0xF8, + 0x00, 0x80, 0x43, 0xF0, 0x04, 0x03, 0x01, 0x22, 0xC3, 0x70, 0xBA, 0x70, + 0xB8, 0x60, 0xBE, 0xF1, 0x00, 0x0F, 0x38, 0xD0, 0x21, 0x4B, 0xC9, 0xF8, + 0x00, 0xC0, 0x1B, 0x68, 0xBC, 0xF1, 0x00, 0x0F, 0x31, 0xD1, 0x00, 0x2B, + 0x2F, 0xD0, 0x62, 0xB6, 0x00, 0x2C, 0x2C, 0xD0, 0x1C, 0x4B, 0x1A, 0x68, + 0x73, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x1A, 0xDB, 0x01, 0x96, + 0x21, 0x46, 0x1E, 0x46, 0xF3, 0x68, 0x30, 0x89, 0x01, 0x33, 0x9B, 0xB2, + 0x1A, 0x1A, 0x92, 0xB2, 0x4C, 0x19, 0x94, 0x42, 0xAB, 0xDA, 0x00, 0x24, + 0xB0, 0xE7, 0xBE, 0xF1, 0x00, 0x0F, 0xE7, 0xD0, 0x0F, 0x4B, 0xC9, 0xF8, + 0x00, 0xC0, 0x1B, 0x68, 0xBC, 0xF1, 0x00, 0x0F, 0xE0, 0xD1, 0x00, 0x2B, + 0xDB, 0xD1, 0xDD, 0xE7, 0x00, 0x2B, 0xE2, 0xD1, 0x0B, 0x49, 0x0C, 0x48, + 0x00, 0x93, 0x4F, 0xF4, 0x17, 0x72, 0x0F, 0xF0, 0xA9, 0xFE, 0x00, 0x9B, + 0xD9, 0xE7, 0x02, 0x9B, 0x01, 0x98, 0x1E, 0x60, 0x03, 0x9B, 0x1D, 0x80, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, 0x54, 0x65, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xA0, 0x96, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xB0, 0x56, 0x17, 0x00, + 0x54, 0x60, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x41, 0x4F, 0xB2, 0xF8, + 0x00, 0xA0, 0x06, 0x68, 0xDF, 0xF8, 0x0C, 0xB1, 0x87, 0xB0, 0x4F, 0xF0, + 0x00, 0x08, 0xCD, 0xE9, 0x04, 0x02, 0x01, 0x22, 0x0B, 0x46, 0x87, 0xF8, + 0x20, 0x20, 0xC1, 0x46, 0xCD, 0xF8, 0x0C, 0x80, 0x39, 0xE0, 0x05, 0x44, + 0xAD, 0x1A, 0xA1, 0xEB, 0x0A, 0x03, 0xAD, 0xB2, 0x9B, 0xB2, 0x00, 0x2D, + 0x02, 0x93, 0x08, 0xBF, 0x4F, 0xF0, 0x01, 0x09, 0xF2, 0xF7, 0x3C, 0xFC, + 0x4F, 0xF0, 0x00, 0x0A, 0x02, 0x9B, 0x04, 0x46, 0x00, 0x28, 0x3A, 0xD0, + 0x7A, 0x68, 0x02, 0xB9, 0x38, 0x60, 0xDB, 0xF8, 0x00, 0x00, 0xF9, 0x68, + 0xB0, 0xF9, 0x00, 0x00, 0x19, 0x44, 0x01, 0x32, 0x00, 0x28, 0xF9, 0x60, + 0x7A, 0x60, 0xB1, 0x68, 0x36, 0xDB, 0xCD, 0xF8, 0x00, 0x90, 0x00, 0x22, + 0x20, 0x46, 0xF3, 0xF7, 0x6F, 0xFC, 0xB8, 0xF1, 0x00, 0x0F, 0x01, 0xD0, + 0xC8, 0xF8, 0x04, 0x40, 0xBC, 0x60, 0x05, 0xB3, 0xDB, 0xF8, 0x00, 0x20, + 0x73, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x2E, 0xDB, 0x03, 0x96, + 0xA0, 0x46, 0x1E, 0x46, 0x2B, 0x46, 0xF2, 0x68, 0x35, 0x89, 0x01, 0x32, + 0x92, 0xB2, 0x51, 0x1B, 0x89, 0xB2, 0x03, 0xEB, 0x0A, 0x00, 0x88, 0x42, + 0xBB, 0xDA, 0x02, 0x93, 0xF2, 0xF7, 0x02, 0xFC, 0x00, 0x25, 0x02, 0x9B, + 0x4F, 0xF0, 0x01, 0x09, 0x04, 0x46, 0x00, 0x28, 0xC4, 0xD1, 0x87, 0xF8, + 0x20, 0x00, 0x04, 0x9B, 0x03, 0x98, 0x1E, 0x60, 0x05, 0x9B, 0xA3, 0xF8, + 0x00, 0xA0, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x29, 0xC6, 0xD1, + 0x0B, 0x49, 0x0C, 0x48, 0x02, 0x93, 0x40, 0xF2, 0x9E, 0x22, 0x0F, 0xF0, + 0x17, 0xFE, 0xB1, 0x68, 0x02, 0x9B, 0xBC, 0xE7, 0x00, 0x2B, 0xCE, 0xD1, + 0x05, 0x49, 0x07, 0x48, 0x02, 0x93, 0x40, 0xF2, 0xB3, 0x22, 0x0F, 0xF0, + 0x0B, 0xFE, 0x02, 0x9B, 0xC5, 0xE7, 0x00, 0xBF, 0x30, 0x65, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xAC, 0x96, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x08, 0x91, + 0x07, 0x68, 0xD9, 0xF8, 0x00, 0x40, 0x1D, 0x88, 0x94, 0xF8, 0x00, 0xC0, + 0xDF, 0xF8, 0xFC, 0xA0, 0x85, 0xB0, 0xB1, 0xF5, 0xC8, 0x6F, 0x0E, 0x9E, + 0x03, 0x93, 0x06, 0xEB, 0x46, 0x06, 0x28, 0xBF, 0x4F, 0xF4, 0xC8, 0x61, + 0xBC, 0xF1, 0x03, 0x0F, 0x08, 0xBF, 0x34, 0x4B, 0x02, 0x90, 0x07, 0xEB, + 0x06, 0x16, 0x06, 0xF1, 0x14, 0x06, 0x90, 0x46, 0x08, 0xBF, 0x1E, 0x60, + 0x00, 0x20, 0x2C, 0xE0, 0xAE, 0xEB, 0x03, 0x04, 0x2C, 0x44, 0x0C, 0x44, + 0x52, 0x1B, 0xA4, 0xB2, 0x91, 0xB2, 0x00, 0x25, 0xBC, 0xF1, 0x03, 0x0F, + 0x0D, 0xD1, 0xB1, 0xF5, 0x00, 0x6F, 0x0B, 0x46, 0x28, 0xBF, 0x4F, 0xF4, + 0x00, 0x63, 0x43, 0xF0, 0x23, 0x43, 0x4F, 0xF0, 0x04, 0x12, 0xB3, 0x60, + 0xF1, 0x60, 0x31, 0x61, 0x72, 0x61, 0x88, 0x44, 0xA4, 0xB3, 0xDA, 0xF8, + 0x00, 0x20, 0x7B, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x03, 0xF1, + 0x14, 0x0B, 0x1C, 0xDB, 0xBC, 0xF1, 0x03, 0x0F, 0x01, 0xD1, 0xC6, 0xF8, + 0x20, 0xB0, 0x38, 0x46, 0x5E, 0x46, 0x1F, 0x46, 0x21, 0x46, 0xD7, 0xE9, + 0x02, 0x43, 0x01, 0x33, 0x1F, 0xFA, 0x84, 0xFE, 0x9B, 0xB2, 0xA3, 0xEB, + 0x0E, 0x02, 0x05, 0xEB, 0x04, 0x0B, 0x92, 0xB2, 0x4C, 0x19, 0x94, 0x42, + 0xC6, 0xF8, 0x04, 0x80, 0xC6, 0xF8, 0x00, 0xB0, 0xC0, 0xDA, 0x00, 0x24, + 0xC6, 0xE7, 0x00, 0x2B, 0xE0, 0xD1, 0x4F, 0xF4, 0x4A, 0x72, 0x0D, 0x49, + 0x0D, 0x48, 0x01, 0x93, 0x0F, 0xF0, 0x90, 0xFD, 0xD9, 0xF8, 0x00, 0x20, + 0x01, 0x9B, 0x92, 0xF8, 0x00, 0xC0, 0xD3, 0xE7, 0xBC, 0xF1, 0x03, 0x0F, + 0x02, 0xD1, 0x05, 0x4B, 0x34, 0x62, 0x5E, 0x60, 0x02, 0x9B, 0x1F, 0x60, + 0x03, 0x9B, 0x1D, 0x80, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0xBF, + 0x60, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, + 0x78, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x61, 0xB3, 0x0B, 0x8A, + 0xDA, 0x07, 0x12, 0xD4, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x20, + 0x02, 0xE0, 0x0B, 0x8A, 0xDB, 0x07, 0x0A, 0xD4, 0x00, 0x2A, 0x49, 0x68, + 0xF9, 0xDA, 0x00, 0x29, 0xF7, 0xD1, 0x11, 0x49, 0x11, 0x48, 0x40, 0xF2, + 0xE6, 0x32, 0x0F, 0xF0, 0x29, 0xBD, 0xCB, 0x68, 0x23, 0xF0, 0x03, 0x03, + 0x04, 0x33, 0x0E, 0x49, 0x4A, 0x68, 0x9A, 0x42, 0x8A, 0x68, 0x08, 0xBF, + 0x0B, 0x68, 0xC0, 0xF8, 0x98, 0x30, 0x22, 0xF0, 0x00, 0x40, 0x83, 0x42, + 0x02, 0xF0, 0x00, 0x42, 0x38, 0xBF, 0x02, 0xF1, 0x00, 0x42, 0x13, 0x43, + 0x8B, 0x60, 0x70, 0x47, 0x00, 0xF1, 0xA0, 0x03, 0xE9, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, + 0xEC, 0x34, 0x17, 0x00, 0x18, 0x4B, 0x19, 0x4A, 0x18, 0x68, 0x19, 0x49, + 0xDF, 0xF8, 0x7C, 0xC0, 0xF0, 0xB5, 0xD0, 0xE9, 0x00, 0x34, 0x17, 0x4D, + 0x13, 0x60, 0x1C, 0x44, 0x2B, 0x60, 0x25, 0x1F, 0x0D, 0x60, 0x15, 0x4E, + 0x15, 0x4D, 0x11, 0x68, 0x31, 0x60, 0x29, 0x60, 0xD0, 0xE9, 0x02, 0x10, + 0xDF, 0xF8, 0x5C, 0xE0, 0x12, 0x4F, 0x54, 0x60, 0x08, 0x44, 0x69, 0x60, + 0x11, 0x4C, 0x93, 0x60, 0x11, 0x4E, 0x03, 0x1F, 0xCE, 0xF8, 0x00, 0x30, + 0xCC, 0xF8, 0x00, 0x10, 0x39, 0x60, 0x6E, 0x61, 0x23, 0x68, 0x10, 0x61, + 0x03, 0xF4, 0x00, 0x23, 0x43, 0xF4, 0xF0, 0x23, 0x43, 0xF0, 0x25, 0x03, + 0xD1, 0x60, 0x51, 0x61, 0x23, 0x60, 0xF0, 0xBD, 0x30, 0x36, 0x17, 0x00, + 0xEC, 0x34, 0x17, 0x00, 0xCC, 0x81, 0x32, 0x40, 0xC8, 0x81, 0x32, 0x40, + 0xD0, 0x81, 0x32, 0x40, 0xD4, 0x81, 0x32, 0x40, 0xE4, 0x81, 0x32, 0x40, + 0x0C, 0x01, 0x32, 0x40, 0x05, 0x12, 0x00, 0x0C, 0xE0, 0x81, 0x32, 0x40, + 0xDC, 0x81, 0x32, 0x40, 0x10, 0xB4, 0x0A, 0x4C, 0x0A, 0x49, 0x22, 0x68, + 0x83, 0x02, 0x03, 0xF4, 0x80, 0x63, 0x22, 0xF4, 0x80, 0x62, 0x13, 0x43, + 0x23, 0x60, 0x0B, 0x68, 0x5D, 0xF8, 0x04, 0x4B, 0xC0, 0x04, 0x00, 0xF4, + 0x00, 0x20, 0x23, 0xF4, 0x00, 0x23, 0x18, 0x43, 0x08, 0x60, 0x70, 0x47, + 0x24, 0x03, 0x32, 0x40, 0x0C, 0x01, 0x32, 0x40, 0x90, 0xF8, 0x9C, 0x20, + 0xD0, 0xF8, 0x98, 0x30, 0x6A, 0xB9, 0x0E, 0x4A, 0x12, 0x68, 0x22, 0xF0, + 0x00, 0x41, 0x8B, 0x42, 0x02, 0xF0, 0x00, 0x42, 0x0A, 0x49, 0x38, 0xBF, + 0x02, 0xF1, 0x00, 0x42, 0x13, 0x43, 0x0B, 0x60, 0x70, 0x47, 0x08, 0x4A, + 0x12, 0x68, 0x22, 0xF0, 0x00, 0x41, 0x8B, 0x42, 0x02, 0xF0, 0x00, 0x42, + 0x04, 0x49, 0x38, 0xBF, 0x02, 0xF1, 0x00, 0x42, 0x13, 0x43, 0x0B, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0xD0, 0x81, 0x32, 0x40, 0xE0, 0x81, 0x32, 0x40, + 0x10, 0xB5, 0x03, 0x8E, 0x82, 0xB0, 0xC3, 0xB1, 0x2D, 0x4B, 0xC4, 0x69, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x38, 0xDB, 0xA3, 0x68, + 0x42, 0x6D, 0x1B, 0x88, 0x03, 0xF0, 0xFC, 0x03, 0x24, 0x2B, 0x43, 0xD0, + 0x94, 0x2B, 0x03, 0xD1, 0x42, 0xF2, 0x02, 0x03, 0x93, 0x43, 0x36, 0xD0, + 0xE3, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x04, 0x33, 0x07, 0xE0, 0x21, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x18, 0xDB, 0x00, 0xF1, + 0xA0, 0x03, 0x1E, 0x49, 0x0A, 0x69, 0x9A, 0x42, 0x4A, 0x69, 0x08, 0xBF, + 0xCB, 0x68, 0xC0, 0xF8, 0x98, 0x30, 0x22, 0xF0, 0x00, 0x44, 0xA3, 0x42, + 0x02, 0xF0, 0x00, 0x42, 0x38, 0xBF, 0x02, 0xF1, 0x00, 0x42, 0x13, 0x43, + 0x4B, 0x61, 0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x9E, 0xBF, + 0xC3, 0x69, 0x00, 0x2B, 0xE3, 0xD0, 0x12, 0x49, 0x12, 0x48, 0x4F, 0xF4, + 0xD7, 0x72, 0x05, 0xE0, 0x00, 0x2C, 0xC4, 0xD1, 0x0E, 0x49, 0x10, 0x48, + 0x4F, 0xF4, 0xC2, 0x72, 0x02, 0xB0, 0xBD, 0xE8, 0x10, 0x40, 0x0F, 0xF0, + 0x2F, 0xBC, 0x0D, 0x4B, 0x01, 0x90, 0xD3, 0xF8, 0x74, 0x33, 0x98, 0x47, + 0x01, 0x98, 0xC1, 0xE7, 0x93, 0x04, 0xBF, 0xD5, 0x08, 0x4B, 0x01, 0x90, + 0xD3, 0xF8, 0xFC, 0x33, 0x98, 0x47, 0x01, 0x98, 0xB8, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0xEC, 0x34, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xC8, 0x96, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x00, 0x29, 0x46, 0xD0, 0x2D, 0xE9, 0xF8, 0x4F, 0x07, 0x46, 0xDF, 0xF8, + 0x8C, 0xA0, 0xDF, 0xF8, 0x8C, 0xB0, 0x08, 0x46, 0x1F, 0x49, 0x99, 0x46, + 0x4F, 0xF0, 0x00, 0x08, 0xD7, 0xE9, 0x02, 0x45, 0x01, 0x35, 0xAB, 0xB2, + 0xA6, 0xB2, 0x9D, 0x1B, 0xAD, 0xB2, 0xAD, 0x1A, 0xA8, 0x42, 0x23, 0xDB, + 0xF6, 0x1A, 0x16, 0x44, 0x06, 0x44, 0xB6, 0xB2, 0xA8, 0xB2, 0xC5, 0x1C, + 0x4F, 0xEA, 0x98, 0x03, 0xAD, 0x08, 0x14, 0x44, 0x09, 0xEB, 0x83, 0x03, + 0x08, 0xD0, 0x1A, 0x46, 0x03, 0xEB, 0x85, 0x05, 0xE3, 0x1A, 0xD4, 0x58, + 0x42, 0xF8, 0x04, 0x4B, 0xAA, 0x42, 0xFA, 0xD1, 0xBE, 0xB1, 0xDA, 0xF8, + 0x00, 0x30, 0x7F, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x80, 0x44, 0x00, 0x2B, + 0x1F, 0xFA, 0x88, 0xF8, 0x04, 0xDB, 0x30, 0x46, 0x00, 0x22, 0xD1, 0xE7, + 0x00, 0x26, 0xDE, 0xE7, 0x00, 0x2F, 0xF8, 0xD1, 0x40, 0xF2, 0x2D, 0x42, + 0x58, 0x46, 0x0F, 0xF0, 0xFF, 0xFB, 0x02, 0x49, 0xF1, 0xE7, 0xBD, 0xE8, + 0xF8, 0x8F, 0x70, 0x47, 0x70, 0x79, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0xEC, 0x96, 0x15, 0x00, 0x38, 0xB5, 0x13, 0x4C, 0x94, 0xF8, 0x21, 0x30, + 0xA3, 0xB9, 0x20, 0x61, 0x11, 0x48, 0xE3, 0x69, 0xE2, 0x68, 0x61, 0x69, + 0x65, 0x68, 0x90, 0xF8, 0xB9, 0x00, 0x13, 0x44, 0x29, 0x44, 0xA2, 0x68, + 0x61, 0x61, 0x01, 0x25, 0xB3, 0xEB, 0x40, 0x2F, 0xE3, 0x61, 0x84, 0xF8, + 0x21, 0x50, 0xA2, 0x61, 0x03, 0xD2, 0x38, 0xBD, 0xA3, 0x69, 0x58, 0x60, + 0xE8, 0xE7, 0x20, 0x69, 0xF3, 0xF7, 0x90, 0xF9, 0x00, 0x23, 0xC4, 0xE9, + 0x04, 0x33, 0xC4, 0xE9, 0x06, 0x33, 0x84, 0xF8, 0x21, 0x30, 0x38, 0xBD, + 0x30, 0x65, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0xAB, 0x4E, 0xD0, 0xF8, 0x1C, 0xC0, 0x35, 0x68, 0x86, 0xB0, 0x04, 0x46, + 0xCD, 0xF8, 0x14, 0xC0, 0xAD, 0xF8, 0x0E, 0x30, 0x2B, 0x78, 0x02, 0x2B, + 0x91, 0x46, 0x00, 0xF0, 0xAD, 0x80, 0x01, 0x2B, 0xDF, 0xF8, 0xC4, 0x82, + 0x22, 0xD0, 0x01, 0x20, 0x00, 0x23, 0xD8, 0xF8, 0xAC, 0x52, 0x4A, 0x46, + 0xCD, 0xE9, 0x00, 0x30, 0x0D, 0xF1, 0x0E, 0x03, 0x05, 0xA8, 0xA8, 0x47, + 0x33, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x05, 0x46, 0x1F, 0xD0, 0x01, 0x2B, + 0x59, 0xD0, 0xD8, 0xF8, 0x98, 0x32, 0x05, 0x99, 0x20, 0x46, 0x2A, 0x46, + 0x98, 0x47, 0x0E, 0x9B, 0x63, 0x60, 0x0F, 0x9B, 0x95, 0x48, 0xA3, 0x60, + 0x21, 0x46, 0x0D, 0xF0, 0x3F, 0xFF, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, + 0xD8, 0xF8, 0xB0, 0x52, 0x00, 0x23, 0x00, 0x93, 0x0D, 0xF1, 0x0E, 0x02, + 0x05, 0xA8, 0xA8, 0x47, 0x33, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x05, 0x46, + 0xDF, 0xD1, 0xDF, 0xF8, 0x64, 0x92, 0x99, 0xF8, 0x02, 0x30, 0x00, 0x2B, + 0xDB, 0xD0, 0xB9, 0xF8, 0x00, 0x30, 0x7A, 0x68, 0x3A, 0x33, 0xBB, 0x60, + 0xD3, 0x78, 0x6F, 0xF3, 0x87, 0x13, 0xD3, 0x70, 0x99, 0xF8, 0x03, 0x30, + 0xBB, 0x73, 0x00, 0x23, 0x3B, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x7F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, + 0x20, 0xA2, 0x7E, 0x48, 0xDA, 0xF8, 0x00, 0x30, 0x39, 0x46, 0x01, 0x33, + 0xCA, 0xF8, 0x00, 0x30, 0x0D, 0xF0, 0x08, 0xFF, 0xD8, 0xF8, 0x44, 0x34, + 0x98, 0x47, 0xDA, 0xF8, 0x00, 0x30, 0x3B, 0xB1, 0x75, 0x4A, 0x01, 0x3B, + 0x12, 0x68, 0xCA, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x00, 0x23, 0xC9, 0xE9, 0x00, 0x33, 0x32, 0x68, 0x13, 0x78, 0x01, 0x2B, + 0xA5, 0xD1, 0xF2, 0xF7, 0x15, 0xF9, 0x07, 0x46, 0x00, 0x28, 0x00, 0xF0, + 0x92, 0x80, 0x6D, 0x4E, 0x96, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x00, 0xF0, + 0x96, 0x80, 0x73, 0x68, 0x81, 0x68, 0x32, 0x68, 0x03, 0xF1, 0x01, 0x0C, + 0x4F, 0xEA, 0x0C, 0x63, 0x21, 0xF0, 0xFE, 0x41, 0x03, 0xF0, 0xFE, 0x43, + 0x0B, 0x43, 0x00, 0x21, 0x83, 0x60, 0x00, 0x91, 0x3A, 0x23, 0x04, 0xF1, + 0x30, 0x01, 0xC6, 0xF8, 0x04, 0xC0, 0xF3, 0xF7, 0x43, 0xF9, 0x60, 0x4A, + 0xF3, 0x68, 0x92, 0xF8, 0xB8, 0x20, 0x3A, 0x33, 0xF3, 0x60, 0x38, 0x46, + 0x00, 0x2A, 0x40, 0xF0, 0xA7, 0x80, 0xD6, 0xE9, 0x01, 0x12, 0xF3, 0xF7, + 0xD3, 0xF8, 0x5A, 0x49, 0x0A, 0x78, 0x00, 0x23, 0x42, 0xF0, 0x01, 0x02, + 0x0A, 0x70, 0x73, 0x60, 0xF3, 0x60, 0x33, 0x60, 0xB3, 0x60, 0x86, 0xF8, + 0x20, 0x30, 0x68, 0xE7, 0x54, 0x4D, 0x42, 0xF2, 0x24, 0x03, 0xEA, 0x58, + 0x00, 0x2A, 0x68, 0xD0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x4A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x42, 0xF2, 0x34, 0x02, + 0xDF, 0xF8, 0x44, 0x81, 0xA8, 0x5A, 0xD8, 0xF8, 0x00, 0x30, 0x02, 0x91, + 0x01, 0x33, 0xB0, 0xF5, 0xC3, 0x7F, 0xC8, 0xF8, 0x00, 0x30, 0x48, 0x48, + 0xDF, 0xF8, 0x3C, 0xA1, 0x84, 0xBF, 0x00, 0x23, 0xAB, 0x52, 0x0D, 0xF0, + 0xD7, 0xFE, 0x45, 0x4A, 0x02, 0x99, 0xD2, 0xF8, 0x00, 0xC0, 0x42, 0xF2, + 0x34, 0x0E, 0x07, 0x46, 0x35, 0xF8, 0x0E, 0x30, 0xBB, 0x81, 0x0C, 0xEB, + 0xC3, 0x00, 0x04, 0xF1, 0x30, 0x02, 0x42, 0x60, 0x4C, 0xF8, 0x33, 0xA0, + 0xDF, 0xF8, 0x08, 0xC1, 0x78, 0x60, 0x95, 0xF8, 0x02, 0xAC, 0x9C, 0xF8, + 0x03, 0x00, 0xD8, 0xF8, 0x00, 0x20, 0x01, 0x33, 0x0A, 0xF1, 0x01, 0x0A, + 0x01, 0x30, 0x25, 0xF8, 0x0E, 0x30, 0x85, 0xF8, 0x02, 0xAC, 0x8C, 0xF8, + 0x03, 0x00, 0x3A, 0xB1, 0x2B, 0x4B, 0x01, 0x3A, 0x1B, 0x68, 0xC8, 0xF8, + 0x00, 0x20, 0x0A, 0xB9, 0x00, 0x2B, 0x48, 0xD1, 0x33, 0x68, 0x1B, 0x78, + 0x02, 0x2B, 0x7F, 0xF4, 0xFE, 0xAE, 0xDF, 0xF8, 0xC4, 0x80, 0x00, 0x23, + 0xD8, 0xF8, 0xB4, 0x52, 0x21, 0xE7, 0x23, 0x7C, 0x29, 0x48, 0x43, 0xF0, + 0x01, 0x03, 0x23, 0x74, 0x0F, 0xF0, 0x2E, 0xF8, 0x20, 0x4B, 0x83, 0xF8, + 0x20, 0x70, 0x26, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x0F, 0xF0, 0x76, 0xF8, + 0x23, 0x7C, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, 0xF9, 0xE6, 0x03, 0x7C, + 0xDF, 0xF8, 0x8C, 0x80, 0x43, 0xF0, 0x01, 0x03, 0x03, 0x74, 0xD8, 0xF8, + 0x98, 0x32, 0x61, 0x46, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x19, 0x4C, + 0xD8, 0xF8, 0x44, 0x24, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x90, 0x47, + 0x23, 0x68, 0x01, 0x46, 0x33, 0xB1, 0x0A, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x11, 0x48, 0xF0, 0xF7, + 0x31, 0xFE, 0xE0, 0xE6, 0xFF, 0xF7, 0x7E, 0xFE, 0x59, 0xE7, 0x62, 0xB6, + 0xB4, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x24, 0x65, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0xA8, 0x56, 0x17, 0x00, 0x30, 0x65, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x9C, 0x4E, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, + 0xA0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, 0x0C, 0x97, 0x15, 0x00, + 0x20, 0x97, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xF8, 0x96, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x54, 0x65, 0x17, 0x00, 0x3C, 0x00, 0x00, 0xC0, + 0x2D, 0xE9, 0xF0, 0x4F, 0xAE, 0x4B, 0xDF, 0xF8, 0x00, 0xA3, 0xC1, 0x69, + 0x9A, 0xF8, 0x32, 0x20, 0x1B, 0x68, 0x87, 0xB0, 0x04, 0x46, 0x05, 0x91, + 0xAD, 0xF8, 0x12, 0x20, 0x1B, 0x78, 0x03, 0x2B, 0x00, 0xF0, 0x3F, 0x81, + 0x02, 0x2B, 0x77, 0xD0, 0xA6, 0x4A, 0x27, 0x8E, 0x12, 0x68, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0xBF, 0x80, 0x01, 0x2B, 0xA3, 0x4E, + 0x4F, 0xF0, 0x00, 0x03, 0x00, 0xF0, 0x3A, 0x81, 0xCD, 0xE9, 0x00, 0x33, + 0x39, 0x46, 0xD6, 0xF8, 0xAC, 0x52, 0x0D, 0xF1, 0x12, 0x03, 0x5A, 0x46, + 0x05, 0xA8, 0xA8, 0x47, 0x07, 0xEB, 0x0B, 0x01, 0xCA, 0xF8, 0x1C, 0x10, + 0x07, 0x46, 0x00, 0x21, 0x04, 0xF1, 0x58, 0x00, 0xEB, 0xF7, 0x7E, 0xFD, + 0x94, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x03, 0x2B, 0x00, 0xF0, 0xB8, 0x80, + 0x01, 0x2B, 0x00, 0xF0, 0x49, 0x81, 0x02, 0x2B, 0x41, 0xD1, 0xDF, 0xF8, + 0x88, 0xA2, 0x9A, 0xF8, 0x02, 0x30, 0x00, 0x2B, 0x3B, 0xD0, 0xBA, 0xF8, + 0x00, 0x30, 0xD8, 0xF8, 0x04, 0x20, 0x3A, 0x33, 0xC8, 0xF8, 0x08, 0x30, + 0xD3, 0x78, 0x6F, 0xF3, 0x87, 0x13, 0xD3, 0x70, 0x9A, 0xF8, 0x03, 0x30, + 0x88, 0xF8, 0x0E, 0x30, 0x00, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0xEF, 0xF3, + 0x10, 0x83, 0xDD, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x83, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0xDF, 0xF8, 0x14, 0xB2, 0x82, 0x48, 0xDB, 0xF8, 0x00, 0x30, + 0x41, 0x46, 0x01, 0x33, 0xCB, 0xF8, 0x00, 0x30, 0x0D, 0xF0, 0x8C, 0xFD, + 0xD6, 0xF8, 0x44, 0x34, 0x98, 0x47, 0xDB, 0xF8, 0x00, 0x30, 0x3B, 0xB1, + 0x79, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x72, 0x4B, 0x1A, 0x68, 0x00, 0x23, 0xCA, 0xE9, + 0x00, 0x33, 0x13, 0x78, 0x03, 0x2B, 0x00, 0xF0, 0x9E, 0x81, 0xD6, 0xF8, + 0x98, 0x32, 0x05, 0x99, 0x3A, 0x46, 0x20, 0x46, 0x98, 0x47, 0x07, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x6E, 0x4E, 0x42, 0xF2, 0x24, 0x03, 0xF2, 0x58, + 0x00, 0x2A, 0x00, 0xF0, 0x60, 0x81, 0xEF, 0xF3, 0x10, 0x83, 0xDF, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x66, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x42, 0xF2, + 0x34, 0x02, 0x67, 0x4F, 0xB1, 0x5A, 0x3B, 0x68, 0x66, 0x48, 0x01, 0x33, + 0xB1, 0xF5, 0xC3, 0x7F, 0x3B, 0x60, 0x84, 0xBF, 0x00, 0x23, 0xB3, 0x52, + 0x0D, 0xF0, 0x92, 0xFD, 0x62, 0x4A, 0x42, 0xF2, 0x34, 0x0E, 0xD2, 0xF8, + 0x00, 0xC0, 0x36, 0xF8, 0x0E, 0x30, 0x83, 0x81, 0x0C, 0xEB, 0xC3, 0x01, + 0x04, 0xF1, 0x30, 0x02, 0x4A, 0x60, 0x5D, 0x4A, 0x4C, 0xF8, 0x33, 0x20, + 0xDF, 0xF8, 0x94, 0xC1, 0x41, 0x60, 0x96, 0xF8, 0x02, 0x1C, 0x9C, 0xF8, + 0x03, 0x20, 0x80, 0x46, 0x38, 0x68, 0x01, 0x33, 0x01, 0x31, 0x01, 0x32, + 0x26, 0xF8, 0x0E, 0x30, 0x86, 0xF8, 0x02, 0x1C, 0x8C, 0xF8, 0x03, 0x20, + 0x30, 0xB1, 0x4C, 0x4B, 0x01, 0x38, 0x1B, 0x68, 0x38, 0x60, 0x08, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0x46, 0x4B, 0x27, 0x8E, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x06, 0xDA, 0x00, 0x2F, 0x00, 0xF0, 0x07, 0x81, + 0xB7, 0xF5, 0x40, 0x5F, 0x00, 0xF2, 0x0A, 0x81, 0x3E, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x02, 0x2B, 0x7F, 0xF4, 0x34, 0xAF, 0x3D, 0x4E, 0x39, 0x46, + 0xD6, 0xF8, 0xB4, 0x72, 0x00, 0x23, 0x00, 0x93, 0x0D, 0xF1, 0x12, 0x02, + 0x05, 0xA8, 0xB8, 0x47, 0x07, 0x46, 0x3C, 0xE7, 0x3F, 0x4A, 0x40, 0x48, + 0x53, 0x68, 0x60, 0x66, 0x04, 0xF1, 0x30, 0x00, 0xA0, 0x66, 0x04, 0xF1, + 0x68, 0x00, 0x3D, 0x49, 0xC4, 0xF8, 0x6C, 0x90, 0x18, 0x62, 0x3A, 0x23, + 0x21, 0x67, 0x63, 0x67, 0x4F, 0xF0, 0x04, 0x11, 0xA3, 0x67, 0x00, 0x23, + 0x03, 0x90, 0xE1, 0x67, 0xC4, 0xF8, 0x88, 0x30, 0x10, 0x68, 0x03, 0x99, + 0x05, 0x22, 0xF0, 0xF7, 0xC5, 0xF9, 0x34, 0x4A, 0x13, 0x68, 0x18, 0x05, + 0xFC, 0xD5, 0x13, 0x68, 0x59, 0x03, 0x03, 0xD5, 0x11, 0x68, 0x41, 0xF0, + 0x80, 0x61, 0x11, 0x60, 0x1A, 0x05, 0x21, 0xD5, 0xEF, 0xF3, 0x05, 0x80, + 0x2D, 0x49, 0x41, 0xF2, 0x4C, 0x12, 0x8B, 0x58, 0x43, 0xF0, 0x00, 0x63, + 0x8B, 0x50, 0x00, 0x28, 0x40, 0xF0, 0xF3, 0x80, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1B, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x1C, 0x4B, 0x25, 0x48, 0x19, 0x68, 0x00, 0x25, 0x4A, 0x1C, 0x1A, 0x60, + 0x45, 0x61, 0x2A, 0xB1, 0x15, 0x4A, 0x19, 0x60, 0x13, 0x68, 0x09, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0x1F, 0x4D, 0x2B, 0x68, 0x00, 0x2B, 0xFC, 0xD0, + 0x1E, 0x4B, 0x18, 0x68, 0xA9, 0xF1, 0x14, 0x01, 0x00, 0xF5, 0x0B, 0x70, + 0x0D, 0xF0, 0xAC, 0xFC, 0x01, 0x23, 0x2B, 0x60, 0xEF, 0xF7, 0x2E, 0xFD, + 0x31, 0xE7, 0x0A, 0xF1, 0x40, 0x00, 0x0F, 0xF0, 0x67, 0xF9, 0x05, 0x4B, + 0x1B, 0x68, 0x81, 0x46, 0x1B, 0x78, 0x00, 0xF1, 0x3C, 0x0B, 0xB5, 0xE6, + 0x39, 0x46, 0xD6, 0xF8, 0xB0, 0x72, 0x8C, 0xE7, 0x78, 0x36, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0xA8, 0x56, 0x17, 0x00, 0x7C, 0x36, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0xA0, 0x56, 0x17, 0x00, 0x54, 0x60, 0x17, 0x00, 0x3C, 0x00, 0x00, 0xC0, + 0x60, 0x65, 0x17, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0x3A, 0x00, 0x00, 0xA3, + 0x4C, 0x11, 0x07, 0x40, 0x00, 0x00, 0x07, 0x40, 0x48, 0x35, 0x17, 0x00, + 0x54, 0x40, 0x04, 0x40, 0x00, 0x38, 0x18, 0x00, 0xB0, 0xDE, 0x17, 0x00, + 0x54, 0x65, 0x17, 0x00, 0xF1, 0xF7, 0x92, 0xFE, 0x83, 0x46, 0x00, 0x28, + 0x3D, 0xD0, 0xDF, 0xF8, 0x38, 0xA1, 0x9A, 0xF8, 0x20, 0x30, 0x00, 0x2B, + 0x41, 0xD0, 0xDA, 0xF8, 0x04, 0x30, 0x81, 0x68, 0xDA, 0xF8, 0x00, 0x20, + 0x03, 0xF1, 0x01, 0x0C, 0x4F, 0xEA, 0x0C, 0x63, 0x21, 0xF0, 0xFE, 0x41, + 0x03, 0xF0, 0xFE, 0x43, 0x0B, 0x43, 0x00, 0x21, 0x83, 0x60, 0x00, 0x91, + 0x3A, 0x23, 0x04, 0xF1, 0x30, 0x01, 0xCA, 0xF8, 0x04, 0xC0, 0xF2, 0xF7, + 0xBF, 0xFE, 0x3C, 0x4A, 0xDA, 0xF8, 0x0C, 0x30, 0x92, 0xF8, 0xB8, 0x20, + 0x3A, 0x33, 0xCA, 0xF8, 0x0C, 0x30, 0x58, 0x46, 0x00, 0x2A, 0x63, 0xD1, + 0xDA, 0xE9, 0x01, 0x12, 0xF2, 0xF7, 0x4E, 0xFE, 0x35, 0x49, 0x0A, 0x78, + 0x00, 0x23, 0x42, 0xF0, 0x01, 0x02, 0x0A, 0x70, 0xCA, 0xF8, 0x04, 0x30, + 0xCA, 0xF8, 0x0C, 0x30, 0xCA, 0xF8, 0x00, 0x30, 0xCA, 0xF8, 0x08, 0x30, + 0x8A, 0xF8, 0x20, 0x30, 0x12, 0xE0, 0x23, 0x7C, 0x2D, 0x48, 0x43, 0xF0, + 0x01, 0x03, 0x23, 0x74, 0x0E, 0xF0, 0x00, 0xFE, 0x2B, 0x4B, 0x83, 0xF8, + 0x20, 0xB0, 0x2B, 0x49, 0x4F, 0xF4, 0x80, 0x60, 0x0E, 0xF0, 0x48, 0xFE, + 0x23, 0x7C, 0x43, 0xF0, 0x01, 0x03, 0x23, 0x74, 0x27, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x02, 0x2B, 0x3F, 0xF4, 0x5D, 0xAE, 0x9A, 0xE6, 0x25, 0x49, + 0x25, 0x48, 0x40, 0xF2, 0x21, 0x52, 0x0F, 0xF0, 0x2F, 0xF8, 0x9C, 0xE6, + 0x21, 0x49, 0x23, 0x48, 0x40, 0xF2, 0x23, 0x52, 0x0F, 0xF0, 0x28, 0xF8, + 0x95, 0xE6, 0x23, 0x7C, 0x20, 0x4E, 0x05, 0x99, 0x43, 0xF0, 0x01, 0x03, + 0x23, 0x74, 0xD6, 0xF8, 0x98, 0x32, 0x20, 0x46, 0x98, 0x47, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x1A, 0x4C, 0xD6, 0xF8, 0x44, 0x24, 0x23, 0x68, 0x01, 0x33, + 0x23, 0x60, 0x90, 0x47, 0x23, 0x68, 0x01, 0x46, 0x33, 0xB1, 0x14, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x12, 0x48, 0xF0, 0xF7, 0xEF, 0xFB, 0x6E, 0xE6, 0xFF, 0xF7, 0x3C, 0xFC, + 0x9C, 0xE7, 0x10, 0x4B, 0x00, 0x22, 0x5A, 0x61, 0x1E, 0xE7, 0x0F, 0x4A, + 0xE8, 0xE6, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, 0x9C, 0x4E, 0x17, 0x00, + 0x0C, 0x97, 0x15, 0x00, 0x30, 0x65, 0x17, 0x00, 0x20, 0x97, 0x15, 0x00, + 0x78, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x34, 0x97, 0x15, 0x00, + 0x44, 0x97, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xFC, 0x96, 0x15, 0x00, 0x48, 0x35, 0x17, 0x00, + 0x60, 0x65, 0x17, 0x00, 0x0D, 0x4B, 0xC1, 0x69, 0xD3, 0xF8, 0x98, 0x32, + 0x10, 0xB5, 0x00, 0x22, 0x04, 0x46, 0x98, 0x47, 0x0A, 0x48, 0x03, 0x68, + 0x53, 0xB1, 0x23, 0x7C, 0x43, 0xF0, 0x01, 0x03, 0x00, 0x22, 0x23, 0x74, + 0x62, 0x60, 0x21, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x0D, 0xF0, 0xA0, 0xBB, + 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x19, 0xBB, 0x00, 0xBF, + 0x88, 0x1A, 0x17, 0x00, 0x24, 0x65, 0x17, 0x00, 0x0C, 0x4A, 0x0D, 0x49, + 0x93, 0x68, 0x09, 0x68, 0x8B, 0x42, 0x11, 0xD0, 0x51, 0x68, 0x23, 0xF0, + 0x00, 0x40, 0x09, 0x1A, 0x9F, 0x29, 0x0C, 0xD8, 0x11, 0x68, 0x03, 0xF0, + 0x00, 0x43, 0x88, 0x42, 0x88, 0xBF, 0x03, 0xF1, 0x00, 0x43, 0x0B, 0x43, + 0x93, 0x60, 0x23, 0xF0, 0x00, 0x40, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0xEC, 0x34, 0x17, 0x00, 0xD4, 0x81, 0x32, 0x40, 0x1E, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x04, 0x46, 0x21, 0xDB, + 0x1B, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x9B, 0x07, 0x04, 0xD5, 0x63, 0x6D, + 0x03, 0xF0, 0x3C, 0x03, 0x3C, 0x2B, 0x25, 0xD0, 0x23, 0x8E, 0x53, 0xB1, + 0x62, 0x6D, 0x02, 0xF0, 0x7C, 0x02, 0x08, 0x2A, 0x0D, 0xD0, 0x0C, 0x2A, + 0x19, 0xD0, 0x04, 0x2A, 0x09, 0xD0, 0x04, 0x3B, 0x23, 0x86, 0x00, 0x23, + 0x10, 0x4A, 0x23, 0x74, 0x84, 0xF8, 0x9C, 0x30, 0xE4, 0x60, 0x62, 0x60, + 0x10, 0xBD, 0x08, 0x3B, 0x23, 0x86, 0xF4, 0xE7, 0x0C, 0x4B, 0x42, 0x69, + 0x9A, 0x42, 0xD9, 0xD0, 0x0B, 0x49, 0x0C, 0x48, 0x40, 0xF2, 0x14, 0x62, + 0x0E, 0xF0, 0x98, 0xFF, 0xD2, 0xE7, 0x0C, 0x3B, 0x23, 0x86, 0xE6, 0xE7, + 0x23, 0x8E, 0x04, 0x3B, 0x9B, 0xB2, 0x23, 0x86, 0xD5, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, 0x3D, 0x48, 0x13, 0x00, + 0x0D, 0xF0, 0xAD, 0xBA, 0x70, 0x79, 0x15, 0x00, 0x64, 0x97, 0x15, 0x00, + 0x06, 0x4B, 0x07, 0x4A, 0x4F, 0xF4, 0x80, 0x31, 0x19, 0x60, 0x13, 0x68, + 0x23, 0xF4, 0x80, 0x33, 0x13, 0x60, 0x4F, 0xF4, 0x80, 0x10, 0x0D, 0xF0, + 0x7F, 0xBA, 0x00, 0xBF, 0x7C, 0x80, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x47, 0x21, 0x4D, 0x22, 0x4E, 0x6B, 0x69, 0x32, 0x68, + 0x93, 0x42, 0x84, 0xB0, 0x38, 0xD0, 0xDF, 0xF8, 0x88, 0x80, 0x1F, 0x4F, + 0xDF, 0xF8, 0x84, 0x90, 0x20, 0xE0, 0x6B, 0x69, 0x1D, 0x48, 0x23, 0xF0, + 0x00, 0x44, 0x21, 0x46, 0x62, 0x69, 0xBA, 0x42, 0x0A, 0xD0, 0xD6, 0xF8, + 0x00, 0xE0, 0xD9, 0xF8, 0x00, 0xA0, 0xCD, 0xE9, 0x00, 0xC3, 0xCD, 0xE9, + 0x02, 0xEA, 0xEB, 0x68, 0x0E, 0xF0, 0xD4, 0xFC, 0x20, 0x46, 0xFF, 0xF7, + 0x7F, 0xFF, 0x01, 0x23, 0x84, 0xF8, 0x9C, 0x30, 0xD8, 0xF8, 0xC0, 0x32, + 0x20, 0x46, 0x98, 0x47, 0x6B, 0x69, 0x32, 0x68, 0x93, 0x42, 0x11, 0xD0, + 0xD5, 0xF8, 0x10, 0xC0, 0x23, 0xF0, 0x00, 0x41, 0xAC, 0xEB, 0x01, 0x02, + 0x9F, 0x2A, 0x03, 0xF0, 0x00, 0x43, 0xD4, 0xD8, 0xEA, 0x68, 0x91, 0x42, + 0x88, 0xBF, 0x03, 0xF1, 0x00, 0x43, 0x13, 0x43, 0x6B, 0x61, 0xCD, 0xE7, + 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0xBF, 0xEC, 0x34, 0x17, 0x00, + 0xE4, 0x81, 0x32, 0x40, 0x0D, 0xF0, 0xAD, 0xBA, 0x90, 0x97, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xE0, 0x81, 0x32, 0x40, 0x00, 0xB5, 0x10, 0x4A, + 0x10, 0x4B, 0x12, 0x68, 0x89, 0xB0, 0x08, 0x33, 0x03, 0x92, 0x53, 0xF8, + 0x08, 0x2C, 0x04, 0x92, 0x53, 0xF8, 0x04, 0x2C, 0x05, 0x92, 0x1B, 0x68, + 0x06, 0x93, 0x01, 0xA8, 0x00, 0x21, 0xEB, 0xF7, 0x73, 0xFA, 0x03, 0x9B, + 0x03, 0xF0, 0x0F, 0x03, 0x02, 0x2B, 0x02, 0xD0, 0x09, 0xB0, 0x5D, 0xF8, + 0x04, 0xFB, 0x01, 0xA8, 0x0E, 0xF0, 0x8C, 0xFF, 0x09, 0xB0, 0x5D, 0xF8, + 0x04, 0xFB, 0x00, 0xBF, 0xB0, 0x10, 0x34, 0x40, 0xB4, 0x10, 0x34, 0x40, + 0x38, 0xB5, 0xD0, 0xF8, 0xFC, 0x31, 0x04, 0x46, 0x00, 0xF5, 0xFE, 0x75, + 0x4B, 0xB1, 0x28, 0x46, 0x0D, 0xF0, 0xDE, 0xFA, 0x01, 0x21, 0xFA, 0xF7, + 0x2B, 0xF9, 0xD4, 0xF8, 0xFC, 0x31, 0x00, 0x2B, 0xF5, 0xD1, 0x4F, 0xF4, + 0x1E, 0x72, 0x00, 0x21, 0x20, 0x46, 0xEA, 0xF7, 0xF9, 0xF9, 0x23, 0x46, + 0x04, 0xF1, 0x48, 0x01, 0x21, 0x22, 0x83, 0xF8, 0xA4, 0x21, 0x83, 0xF8, + 0xA5, 0x21, 0x08, 0x33, 0x8B, 0x42, 0xF8, 0xD1, 0xFF, 0x23, 0x84, 0xF8, + 0x22, 0x30, 0x38, 0xBD, 0x2D, 0xE9, 0xF0, 0x43, 0x49, 0x48, 0x4A, 0x4F, + 0x83, 0xB0, 0x81, 0x46, 0x0D, 0xF0, 0x72, 0xFA, 0x07, 0xF5, 0x0C, 0x75, + 0x00, 0x26, 0x40, 0xF2, 0x16, 0x38, 0xA5, 0xF5, 0x0C, 0x71, 0x08, 0x46, + 0x01, 0x91, 0xFF, 0xF7, 0xC7, 0xFF, 0x01, 0x99, 0x48, 0x46, 0x0D, 0xF0, + 0x67, 0xFA, 0xA5, 0xF1, 0x28, 0x04, 0x20, 0x46, 0x0D, 0xF0, 0x5E, 0xFA, + 0x04, 0xF1, 0x28, 0x00, 0x08, 0x34, 0x0D, 0xF0, 0x59, 0xFA, 0xAC, 0x42, + 0xF5, 0xD1, 0x4F, 0x36, 0x46, 0x45, 0x04, 0xF5, 0x1E, 0x75, 0xE4, 0xD1, + 0x38, 0x4D, 0x40, 0xF2, 0x52, 0x48, 0xA5, 0xF1, 0x28, 0x04, 0x20, 0x46, + 0x0D, 0xF0, 0x4A, 0xFA, 0x04, 0xF1, 0x28, 0x00, 0x08, 0x34, 0x0D, 0xF0, + 0x45, 0xFA, 0xAC, 0x42, 0xF5, 0xD1, 0x4F, 0x36, 0x46, 0x45, 0x04, 0xF5, + 0x1E, 0x75, 0xEE, 0xD1, 0x2F, 0x48, 0x30, 0x4D, 0x30, 0x4C, 0x00, 0xF1, + 0x30, 0x06, 0xFF, 0xF7, 0x97, 0xFF, 0x41, 0xF6, 0xF8, 0x12, 0x4F, 0xF0, + 0x00, 0x08, 0x41, 0xF6, 0x64, 0x11, 0x41, 0xF6, 0xD0, 0x03, 0xBD, 0x50, + 0x06, 0xF5, 0x12, 0x70, 0x86, 0xF8, 0x00, 0x80, 0x4F, 0xF0, 0x20, 0x62, + 0x7C, 0x50, 0xFA, 0x50, 0xFF, 0xF7, 0x84, 0xFF, 0x41, 0xF6, 0x58, 0x30, + 0x41, 0xF6, 0x70, 0x41, 0x07, 0xF8, 0x00, 0x80, 0x41, 0xF6, 0xDC, 0x32, + 0x05, 0xF1, 0x40, 0x00, 0x78, 0x50, 0x41, 0xF6, 0x48, 0x33, 0x04, 0xF5, + 0xA4, 0x61, 0xB9, 0x50, 0x06, 0xF5, 0x98, 0x60, 0x1C, 0x4A, 0xFA, 0x50, + 0xFF, 0xF7, 0x6E, 0xFF, 0x41, 0xF6, 0xD0, 0x52, 0x41, 0xF6, 0xE8, 0x61, + 0x41, 0xF6, 0x54, 0x63, 0x18, 0x48, 0x07, 0xF8, 0x02, 0x80, 0xC6, 0xF8, + 0xE0, 0x04, 0x04, 0xF5, 0x24, 0x62, 0x06, 0xF5, 0xE7, 0x60, 0x05, 0xF1, + 0x80, 0x06, 0x7E, 0x50, 0xFA, 0x50, 0xFF, 0xF7, 0x59, 0xFF, 0x42, 0xF2, + 0x60, 0x16, 0x11, 0x4A, 0x42, 0xF2, 0xCC, 0x00, 0x42, 0xF2, 0x48, 0x01, + 0x42, 0xF2, 0x38, 0x03, 0xC0, 0x35, 0x04, 0xF5, 0x76, 0x64, 0xBD, 0x51, + 0x3C, 0x50, 0x07, 0xF8, 0x01, 0x80, 0xFA, 0x50, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x83, 0x00, 0xBF, 0xF8, 0x87, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x48, 0x80, 0x17, 0x00, 0x18, 0x7E, 0x17, 0x00, 0x04, 0x38, 0x18, 0x00, + 0xC0, 0x8C, 0x17, 0x00, 0x00, 0x00, 0x01, 0x0B, 0x00, 0x00, 0x02, 0x0C, + 0x00, 0x00, 0x03, 0x0D, 0x2D, 0xE9, 0xF0, 0x41, 0x05, 0x46, 0x79, 0x48, + 0x95, 0xF8, 0x19, 0x80, 0x0E, 0x46, 0x0D, 0xF0, 0x11, 0xFA, 0x00, 0x28, + 0x00, 0xF0, 0xE1, 0x80, 0x6B, 0x7F, 0x04, 0x46, 0x00, 0x2B, 0x40, 0xF0, + 0xA5, 0x80, 0x73, 0x4F, 0x05, 0xF1, 0x12, 0x02, 0x11, 0x68, 0x2B, 0x68, + 0x92, 0x88, 0x62, 0x85, 0xC4, 0xF8, 0x26, 0x10, 0x63, 0x60, 0x28, 0x7E, + 0x6E, 0x4B, 0x6F, 0x4A, 0x6F, 0x49, 0x10, 0x28, 0x38, 0xBF, 0x10, 0x20, + 0x20, 0x77, 0x28, 0x8A, 0xA0, 0x82, 0xA8, 0x68, 0x20, 0x61, 0x68, 0x68, + 0xE0, 0x60, 0xE8, 0x68, 0xA0, 0x61, 0xE0, 0x1B, 0xC0, 0x10, 0x03, 0xFB, + 0x00, 0xF3, 0xDB, 0xB2, 0x68, 0x7E, 0x84, 0xF8, 0x22, 0x00, 0x33, 0x70, + 0x4F, 0xF4, 0x80, 0x70, 0x84, 0xF8, 0x23, 0x30, 0x0E, 0xF0, 0xC6, 0xFB, + 0x62, 0x48, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x03, 0x4F, 0xF4, + 0xC8, 0x31, 0x93, 0xF8, 0xC0, 0x24, 0xA1, 0x60, 0x22, 0xB1, 0x93, 0xF8, + 0xC2, 0x24, 0x01, 0x32, 0x83, 0xF8, 0xC2, 0x24, 0x4F, 0xF6, 0xFF, 0x71, + 0xA4, 0xF8, 0xE8, 0x11, 0x04, 0xF5, 0xF4, 0x72, 0x23, 0x46, 0x04, 0xF5, + 0xFD, 0x75, 0x22, 0xF8, 0x02, 0x1F, 0xAA, 0x42, 0xFB, 0xD1, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x08, 0xF8, 0x00, 0xEB, 0x08, 0x05, 0x00, 0x22, + 0x31, 0x78, 0x84, 0xF8, 0x30, 0x20, 0xD5, 0xF8, 0xB0, 0x54, 0x4F, 0x4A, + 0x02, 0xEB, 0x81, 0x12, 0x29, 0x07, 0xC4, 0xF8, 0x48, 0x21, 0x4D, 0x49, + 0x56, 0xBF, 0x08, 0xF5, 0x95, 0x62, 0x04, 0xF1, 0xB0, 0x02, 0x12, 0x18, + 0xC4, 0xF8, 0xB4, 0x20, 0x0A, 0x69, 0xA2, 0xF5, 0x74, 0x22, 0xA2, 0xF5, + 0x10, 0x72, 0x04, 0xF1, 0x48, 0x01, 0xC3, 0xF8, 0xA0, 0x21, 0x08, 0x33, + 0x8B, 0x42, 0xFA, 0xD1, 0xEA, 0x06, 0x03, 0xD5, 0x63, 0x68, 0x43, 0xF0, + 0x08, 0x03, 0x63, 0x60, 0x08, 0xF1, 0xE4, 0x08, 0x40, 0x44, 0x21, 0x46, + 0x0D, 0xF0, 0x4C, 0xF9, 0x3D, 0x4B, 0xC4, 0xF8, 0x04, 0x32, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x3A, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x3A, 0x4B, 0xE0, 0x6A, 0x1A, 0x68, 0x01, 0x25, 0x51, 0x19, + 0x19, 0x60, 0x84, 0xF8, 0x25, 0x50, 0x08, 0xB1, 0x80, 0xF8, 0x25, 0x50, + 0x21, 0xB1, 0x33, 0x49, 0x1A, 0x60, 0x0B, 0x68, 0x00, 0x2A, 0x42, 0xD0, + 0xF6, 0xB2, 0x0D, 0x2E, 0x07, 0xD8, 0x4F, 0xF4, 0x1E, 0x73, 0x2C, 0x4A, + 0x06, 0xFB, 0x03, 0x76, 0x13, 0x69, 0xC6, 0xF8, 0x58, 0x32, 0x00, 0x20, + 0x84, 0xF8, 0x5C, 0x02, 0xBD, 0xE8, 0xF0, 0x81, 0x1F, 0x48, 0x0D, 0xF0, + 0x61, 0xF9, 0x00, 0x28, 0x34, 0xD0, 0x2A, 0x46, 0xE0, 0x62, 0xC4, 0x62, + 0xA9, 0x7F, 0x52, 0xF8, 0x12, 0x3F, 0x95, 0xF8, 0x1D, 0xC0, 0xC0, 0xF8, + 0x26, 0x30, 0x01, 0x23, 0x8B, 0x40, 0x91, 0x88, 0x41, 0x85, 0x01, 0x3B, + 0x41, 0x8D, 0x16, 0x4F, 0x1B, 0x02, 0x1B, 0xB2, 0x21, 0xEA, 0x03, 0x01, + 0x09, 0xB2, 0x41, 0x85, 0xB5, 0xF8, 0x16, 0xE0, 0xAE, 0xEB, 0x0C, 0x2C, + 0x03, 0xEA, 0x0C, 0x03, 0xA0, 0xEB, 0x07, 0x0E, 0xDF, 0xF8, 0x3C, 0xC0, + 0x4F, 0xEA, 0xEE, 0x0E, 0x0B, 0x43, 0x0C, 0xFB, 0x0E, 0xF1, 0x4F, 0xF0, + 0xFF, 0x0C, 0x43, 0x85, 0x80, 0xF8, 0x23, 0x10, 0xA0, 0xF8, 0x20, 0xC0, + 0x2A, 0xE7, 0x00, 0x2B, 0xBA, 0xD0, 0x62, 0xB6, 0xB8, 0xE7, 0x01, 0x20, + 0xBD, 0xE8, 0xF0, 0x81, 0x02, 0x48, 0x21, 0x46, 0x0D, 0xF0, 0xE2, 0xF8, + 0x01, 0x20, 0xBD, 0xE7, 0xF8, 0x87, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0xAF, 0x16, 0x37, 0x61, 0xEC, 0x97, 0x15, 0x00, 0xDC, 0x97, 0x15, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x04, 0x39, 0x18, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x0F, 0xCC, 0xFF, 0xFF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x33, 0x4F, 0xDF, 0xF8, 0xE4, 0x80, 0x4F, 0xF4, + 0x1E, 0x74, 0x04, 0xFB, 0x00, 0x74, 0x4F, 0xF4, 0xA4, 0x63, 0x94, 0xF8, + 0x22, 0x60, 0x03, 0xFB, 0x06, 0x83, 0x05, 0x46, 0x93, 0xF8, 0xC0, 0x24, + 0x22, 0xB1, 0x93, 0xF8, 0xC2, 0x24, 0x01, 0x3A, 0x83, 0xF8, 0xC2, 0x24, + 0x29, 0x4A, 0x2A, 0x49, 0x2B, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x0E, 0xF0, + 0xD5, 0xFA, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x06, 0x80, 0xE4, 0x30, + 0x21, 0x46, 0x0D, 0xF0, 0xF3, 0xF8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x21, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x21, 0x4A, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x73, 0x11, 0x68, 0xD8, 0x6A, + 0x4E, 0x1C, 0x4F, 0xF0, 0x00, 0x0C, 0x16, 0x60, 0x83, 0xF8, 0x25, 0xC0, + 0xD8, 0xB1, 0x80, 0xF8, 0x25, 0xC0, 0x96, 0xB9, 0xFF, 0xF7, 0xE4, 0xFD, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x75, 0x16, 0x48, 0xE9, 0x6A, + 0x0D, 0xF0, 0x80, 0xF8, 0x20, 0x46, 0xFF, 0xF7, 0xD9, 0xFD, 0x21, 0x46, + 0x12, 0x48, 0xBD, 0xE8, 0xF0, 0x41, 0x0D, 0xF0, 0x77, 0xB8, 0x0E, 0x48, + 0x11, 0x60, 0x02, 0x68, 0x41, 0xB1, 0xD8, 0x6A, 0xE6, 0xE7, 0x00, 0x2E, + 0xEE, 0xD0, 0x0A, 0x4B, 0x11, 0x60, 0x1A, 0x68, 0x00, 0x29, 0xE9, 0xD1, + 0x02, 0xB1, 0x62, 0xB6, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x73, + 0xD8, 0x6A, 0x00, 0x28, 0xE0, 0xD0, 0xD5, 0xE7, 0x68, 0x65, 0x17, 0x00, + 0x00, 0x98, 0x15, 0x00, 0xDC, 0x97, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xF8, 0x87, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0x44, 0x78, 0xDF, 0xF8, 0x14, 0x81, 0x4F, 0xF4, + 0x1E, 0x76, 0x06, 0xFB, 0x04, 0xF6, 0x08, 0xEB, 0x06, 0x07, 0x38, 0x36, + 0x87, 0xF8, 0x9A, 0x10, 0x90, 0xF8, 0x28, 0x30, 0x87, 0xF8, 0x98, 0x30, + 0x03, 0x78, 0x87, 0xF8, 0x99, 0x30, 0x46, 0x44, 0x05, 0x46, 0x48, 0x22, + 0x30, 0x46, 0x00, 0x21, 0x97, 0xF8, 0x22, 0x90, 0xE9, 0xF7, 0xA0, 0xFF, + 0x97, 0xF8, 0x98, 0x30, 0x04, 0x2B, 0x55, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, + 0x03, 0x3F, 0x54, 0x03, 0x27, 0x00, 0x21, 0xF0, 0x29, 0xF8, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x83, 0x03, 0xF1, 0x80, 0x02, 0x20, 0xF0, + 0x7F, 0x40, 0xC3, 0xF8, 0x80, 0x00, 0x00, 0x23, 0x53, 0x60, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x83, 0x01, 0x22, 0xD5, 0xE9, 0x02, 0x40, + 0x29, 0x69, 0x83, 0xF8, 0x9B, 0x20, 0x6A, 0x69, 0xC3, 0xF8, 0xB0, 0x60, + 0xC3, 0xE9, 0x27, 0x40, 0xC3, 0xE9, 0x29, 0x12, 0x2A, 0x79, 0x83, 0xF8, + 0xAC, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x20, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x09, 0x39, 0x19, 0xA3, 0xD3, 0xE9, 0x00, 0x23, 0x99, 0xF8, + 0x62, 0x00, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x04, 0x81, 0x02, 0x28, + 0xC1, 0xE9, 0x20, 0x23, 0xD7, 0xD1, 0x15, 0xA3, 0xD3, 0xE9, 0x00, 0x23, + 0xC1, 0xE9, 0x20, 0x23, 0xD1, 0xE7, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x04, 0x83, 0xAA, 0x69, 0xC3, 0xF8, 0x88, 0x20, 0xEA, 0x69, 0xC3, 0xF8, + 0x8C, 0x20, 0x2A, 0x6A, 0xC3, 0xF8, 0x90, 0x20, 0x00, 0x20, 0x6A, 0x6A, + 0xC3, 0xF8, 0x94, 0x20, 0x00, 0x21, 0xC3, 0xE9, 0x20, 0x01, 0xBC, 0xE7, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x83, 0x00, 0x20, 0x00, 0x21, + 0xC3, 0xE9, 0x20, 0x01, 0xB3, 0xE7, 0x00, 0xBF, 0xAF, 0xF3, 0x00, 0x80, + 0x36, 0x5C, 0x36, 0x5C, 0x36, 0x5C, 0x36, 0x5C, 0x37, 0x5C, 0x36, 0x5C, + 0x36, 0x5C, 0x36, 0x5C, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x00, 0x23, 0x01, 0x22, 0x80, 0xF8, 0x30, 0x20, 0x80, 0xF8, 0x9B, 0x30, + 0xC0, 0xF8, 0xB0, 0x30, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x47, + 0xD1, 0xF8, 0xFC, 0xA1, 0x82, 0xB0, 0xBA, 0xF1, 0x00, 0x0F, 0x32, 0xD0, + 0x00, 0x24, 0xDF, 0xF8, 0x6C, 0x80, 0x0D, 0x46, 0x06, 0x46, 0x91, 0x46, + 0x27, 0x46, 0x10, 0xE0, 0x80, 0xF8, 0x5D, 0x70, 0xD8, 0xF8, 0x98, 0x33, + 0xC1, 0x7E, 0x01, 0x34, 0x98, 0x47, 0xB9, 0xF1, 0x00, 0x0F, 0x01, 0xD0, + 0x4C, 0x45, 0x1F, 0xD0, 0xD5, 0xF8, 0xFC, 0xA1, 0xBA, 0xF1, 0x00, 0x0F, + 0x1A, 0xD0, 0x30, 0x46, 0x01, 0x97, 0xF8, 0xF7, 0x6B, 0xFA, 0x03, 0x46, + 0x50, 0x46, 0x9B, 0xB1, 0x15, 0xF0, 0x34, 0xFC, 0x03, 0x46, 0x01, 0xAA, + 0x29, 0x46, 0x30, 0x46, 0x63, 0xB1, 0xD8, 0xF8, 0x10, 0x30, 0x98, 0x47, + 0x01, 0x9B, 0x3B, 0xB9, 0x00, 0x28, 0xD9, 0xD1, 0x05, 0xF5, 0xFE, 0x70, + 0x0C, 0xF0, 0xC2, 0xFF, 0xD4, 0xE7, 0x54, 0x46, 0x20, 0x46, 0x02, 0xB0, + 0xBD, 0xE8, 0xF0, 0x87, 0x88, 0x1A, 0x17, 0x00, 0x0A, 0x4B, 0x9B, 0x68, + 0x93, 0xF8, 0x62, 0x20, 0x7A, 0xB9, 0x93, 0xF8, 0x64, 0x20, 0x62, 0xB1, + 0x93, 0xF8, 0x6D, 0x20, 0x4A, 0xB1, 0x93, 0xF8, 0x6E, 0x20, 0x08, 0x2A, + 0x05, 0xD8, 0x01, 0x23, 0x93, 0x40, 0x01, 0x3B, 0x02, 0x4A, 0x1B, 0x02, + 0x13, 0x60, 0x70, 0x47, 0x00, 0x88, 0x17, 0x00, 0x2C, 0x00, 0x32, 0x40, + 0x10, 0xB5, 0x90, 0xF8, 0xC0, 0x34, 0x04, 0x46, 0x00, 0x2B, 0x2D, 0xD1, + 0x23, 0x6C, 0x1B, 0xB1, 0x1B, 0x4B, 0x20, 0x46, 0x1B, 0x6B, 0x98, 0x47, + 0x63, 0x68, 0xD8, 0x07, 0x1A, 0xD5, 0x19, 0x4A, 0x11, 0x68, 0x89, 0x01, + 0x17, 0xD5, 0x23, 0xF0, 0x01, 0x03, 0x63, 0x60, 0x16, 0x4A, 0x41, 0xF2, + 0x14, 0x33, 0xD3, 0x5C, 0x01, 0x2B, 0x41, 0xF2, 0x13, 0x33, 0x8C, 0xBF, + 0x01, 0x21, 0x00, 0x21, 0xD1, 0x54, 0x12, 0x4B, 0x93, 0xF8, 0xB6, 0x30, + 0x23, 0xB1, 0x11, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x0C, 0xD0, + 0x10, 0xBD, 0x12, 0x68, 0x92, 0x01, 0xFB, 0xD4, 0x0D, 0x4A, 0x92, 0xF8, + 0x24, 0x20, 0x00, 0x2A, 0xF6, 0xD0, 0xDE, 0xE7, 0x0A, 0xF0, 0x34, 0xF8, + 0xCE, 0xE7, 0xF8, 0xF7, 0x1D, 0xFD, 0x09, 0x4A, 0x13, 0x68, 0x23, 0xF0, + 0x01, 0x03, 0x13, 0x60, 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x4C, 0x00, 0x32, 0x40, 0x00, 0x40, 0x1E, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x74, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x8C, 0x00, 0x32, 0x40, + 0x19, 0x48, 0x2D, 0xE9, 0xF0, 0x41, 0x18, 0x22, 0x80, 0x46, 0x00, 0x21, + 0xE9, 0xF7, 0x72, 0xFE, 0x40, 0x46, 0x0C, 0xF0, 0xFF, 0xFE, 0x08, 0xF1, + 0x08, 0x00, 0x14, 0x4C, 0x14, 0x4F, 0x0C, 0xF0, 0xF9, 0xFE, 0x04, 0xF5, + 0xA4, 0x56, 0x45, 0x46, 0x4F, 0xF4, 0xA4, 0x62, 0x00, 0x21, 0x20, 0x46, + 0xE9, 0xF7, 0x60, 0xFE, 0x7F, 0x23, 0xD7, 0xF8, 0x50, 0x24, 0x24, 0x63, + 0x05, 0x21, 0x84, 0xF8, 0x62, 0x10, 0x84, 0xF8, 0x65, 0x30, 0x84, 0xF8, + 0x66, 0x30, 0xE2, 0x62, 0x21, 0x46, 0x28, 0x46, 0x04, 0xF5, 0xA4, 0x64, + 0x0C, 0xF0, 0xE2, 0xFE, 0xB4, 0x42, 0xE5, 0xD1, 0xFF, 0x23, 0x88, 0xF8, + 0x10, 0x30, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x06, 0x4B, + 0x9C, 0x68, 0x3C, 0xB1, 0x05, 0x4D, 0xD5, 0xF8, 0x5C, 0x34, 0x20, 0x46, + 0x98, 0x47, 0x24, 0x68, 0x00, 0x2C, 0xF8, 0xD1, 0x38, 0xBD, 0x00, 0xBF, + 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xAC, 0x4D, 0x8D, 0xB0, 0x2C, 0x68, 0x05, 0x90, 0x88, 0x46, 0x17, 0x46, + 0x04, 0x93, 0x00, 0x2C, 0x00, 0xF0, 0xA4, 0x80, 0x00, 0x2A, 0x40, 0xF0, + 0x9E, 0x80, 0xAC, 0x68, 0x00, 0x2C, 0x00, 0xF0, 0x42, 0x81, 0x05, 0x9B, + 0xA4, 0x48, 0x1A, 0x68, 0x9B, 0x88, 0x06, 0x92, 0x4F, 0xF0, 0x00, 0x09, + 0x07, 0x93, 0xCB, 0x46, 0xBA, 0x46, 0xE7, 0x6D, 0xB4, 0xF8, 0x60, 0x60, + 0x94, 0xF8, 0xC0, 0x34, 0x39, 0x46, 0x32, 0x46, 0x0E, 0xF0, 0x76, 0xF8, + 0x94, 0xF8, 0xC0, 0x34, 0x9A, 0x48, 0x1B, 0xB9, 0x8B, 0xEA, 0x07, 0x0B, + 0x89, 0xEA, 0x06, 0x09, 0x24, 0x68, 0x00, 0x2C, 0xEB, 0xD1, 0x57, 0x46, + 0x00, 0x2F, 0x00, 0xF0, 0x99, 0x80, 0x95, 0x4B, 0x95, 0x48, 0x49, 0xF4, + 0x40, 0x74, 0xDD, 0xE9, 0x06, 0x12, 0x1C, 0x60, 0xC0, 0xF8, 0x00, 0xB0, + 0x5B, 0x46, 0xCD, 0xE9, 0x00, 0x97, 0x91, 0x48, 0x0E, 0xF0, 0x58, 0xF8, + 0x8B, 0x48, 0x0C, 0xF0, 0xBF, 0xFE, 0x05, 0x99, 0x8E, 0x4A, 0x80, 0xF8, + 0x62, 0x80, 0x04, 0x46, 0x8D, 0x4B, 0x82, 0x1A, 0x08, 0x68, 0xE0, 0x65, + 0x52, 0x11, 0x89, 0x88, 0xA4, 0xF8, 0x60, 0x10, 0x03, 0xFB, 0x02, 0xF2, + 0xD3, 0xB2, 0x40, 0xF6, 0x47, 0x21, 0x40, 0xF6, 0x43, 0x22, 0xA1, 0x60, + 0xE2, 0x60, 0x86, 0x49, 0x86, 0x4A, 0x21, 0x61, 0x62, 0x61, 0x40, 0xF2, + 0xFF, 0x31, 0x00, 0x22, 0x84, 0xF8, 0xC0, 0x74, 0xA4, 0xF8, 0xBE, 0x14, + 0x84, 0xF8, 0x63, 0x30, 0x84, 0xF8, 0x4C, 0x30, 0x22, 0x64, 0x84, 0xF8, + 0x84, 0x20, 0x17, 0xB1, 0xEA, 0x7C, 0x01, 0x32, 0xEA, 0x74, 0xB8, 0xF1, + 0x02, 0x0F, 0x00, 0xF0, 0x89, 0x80, 0xB8, 0xF1, 0x04, 0x0F, 0x00, 0xF0, + 0xC3, 0x80, 0xB8, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x9C, 0x80, 0x6B, 0x7C, + 0xAA, 0x7C, 0x13, 0x44, 0x01, 0x2B, 0x78, 0xDD, 0x74, 0x48, 0x75, 0x4E, + 0xD0, 0xE9, 0x00, 0x12, 0x42, 0xF4, 0x80, 0x72, 0x11, 0x43, 0x42, 0x60, + 0x31, 0x60, 0x01, 0x2B, 0x4D, 0xD0, 0x00, 0x2F, 0x52, 0xD1, 0x04, 0x9A, + 0x94, 0xF8, 0x63, 0x30, 0x6E, 0x48, 0x13, 0x70, 0x21, 0x46, 0x0C, 0xF0, + 0x29, 0xFE, 0x04, 0xF5, 0x99, 0x66, 0x04, 0xF5, 0x9E, 0x69, 0x30, 0x46, + 0x0C, 0xF0, 0x1E, 0xFE, 0x06, 0xF1, 0x28, 0x00, 0x08, 0x36, 0x0C, 0xF0, + 0x19, 0xFE, 0x4E, 0x45, 0xF5, 0xD1, 0x04, 0xF5, 0xA3, 0x60, 0x0C, 0xF0, + 0x13, 0xFE, 0x00, 0x24, 0x03, 0xE0, 0x63, 0x4B, 0x1B, 0x78, 0x23, 0xB3, + 0x01, 0x24, 0xAA, 0x7C, 0x6B, 0x7C, 0x61, 0x49, 0x13, 0x44, 0x00, 0x20, + 0x01, 0x2B, 0x08, 0x60, 0x04, 0xDC, 0xFF, 0xF7, 0x91, 0xFE, 0xAA, 0x7C, + 0x6B, 0x7C, 0x13, 0x44, 0x04, 0x99, 0x09, 0x78, 0x4F, 0xF4, 0x80, 0x70, + 0xCD, 0xE9, 0x02, 0x71, 0xCD, 0xE9, 0x00, 0x28, 0x58, 0x49, 0x59, 0x4A, + 0x0E, 0xF0, 0x22, 0xF8, 0x20, 0x46, 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x06, 0x9B, 0x8B, 0xEA, 0x03, 0x0B, 0x07, 0x9B, 0x89, 0xEA, 0x03, 0x09, + 0x5F, 0xE7, 0xAC, 0x68, 0x00, 0x2C, 0x7C, 0xD0, 0xEB, 0x7C, 0x02, 0x2B, + 0x7F, 0xF4, 0x37, 0xAF, 0xD2, 0xE7, 0x4F, 0x4A, 0x13, 0x68, 0x43, 0xF0, + 0x01, 0x03, 0x13, 0x60, 0x00, 0x2F, 0xAC, 0xD0, 0xB8, 0xF1, 0x00, 0x01, + 0x18, 0xBF, 0x01, 0x21, 0x94, 0xF8, 0x63, 0x00, 0x09, 0xF0, 0x22, 0xFD, + 0x48, 0x4B, 0x84, 0xF8, 0xC1, 0x04, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x9C, 0xDA, 0xFF, 0x28, 0x9A, 0xD1, 0x44, 0x49, 0x45, 0x48, + 0x40, 0xF2, 0x0B, 0x22, 0x0E, 0xF0, 0x1A, 0xFA, 0x93, 0xE7, 0x00, 0x2A, + 0x8D, 0xD0, 0x83, 0xE7, 0xAA, 0x7C, 0x00, 0x2A, 0x00, 0xF0, 0xA8, 0x80, + 0x39, 0x46, 0x3F, 0x48, 0x0A, 0x33, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, + 0x03, 0x03, 0x01, 0x32, 0x01, 0x20, 0xAA, 0x74, 0x83, 0xF8, 0x25, 0x00, + 0x11, 0xB1, 0x3A, 0x4B, 0xC4, 0xE9, 0x07, 0x34, 0x39, 0x4B, 0x20, 0x46, + 0xD3, 0xF8, 0x80, 0x31, 0x98, 0x47, 0x6B, 0x7C, 0x64, 0xE7, 0x36, 0x4B, + 0x36, 0x49, 0xD3, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0xFF, 0x23, 0x84, 0xF8, + 0x6C, 0x30, 0x34, 0x4A, 0x6B, 0x7C, 0x24, 0x62, 0xA4, 0xF8, 0x8A, 0x80, + 0xC4, 0xF8, 0xB8, 0x40, 0xC4, 0xF8, 0xB4, 0x10, 0x01, 0x33, 0x92, 0xF8, + 0x04, 0x21, 0xDB, 0xB2, 0x6B, 0x74, 0x00, 0x2A, 0x3F, 0xF4, 0x4C, 0xAF, + 0x2C, 0x4A, 0xC4, 0xF8, 0xA4, 0x40, 0xC4, 0xE9, 0x24, 0x88, 0xC4, 0xF8, + 0x98, 0x80, 0xC4, 0xF8, 0xA0, 0x20, 0x41, 0xE7, 0x2A, 0x7C, 0xFF, 0x2A, + 0x17, 0xD1, 0xAA, 0x68, 0x2B, 0x74, 0x00, 0x2A, 0x4C, 0xD0, 0x14, 0x49, + 0x24, 0x4B, 0x4E, 0x68, 0x12, 0x6C, 0x13, 0x48, 0x0B, 0x60, 0x33, 0x43, + 0x03, 0x60, 0x00, 0x2A, 0x3F, 0xF4, 0x2F, 0xAF, 0x1B, 0x4B, 0x10, 0x7E, + 0x1B, 0x6D, 0x98, 0x47, 0x29, 0xE7, 0x05, 0x98, 0x01, 0xF0, 0x4E, 0xFE, + 0xEA, 0xE6, 0x01, 0x24, 0x6E, 0xE7, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, + 0x14, 0x98, 0x15, 0x00, 0x1C, 0x00, 0x32, 0x40, 0x18, 0x00, 0x32, 0x40, + 0x2C, 0x98, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x19, 0x9C, 0x8F, 0xC1, + 0x32, 0xE4, 0x05, 0x00, 0x22, 0xF3, 0x02, 0x00, 0x98, 0x9C, 0x17, 0x00, + 0x60, 0x00, 0x32, 0x40, 0x08, 0x88, 0x17, 0x00, 0x44, 0x9E, 0x17, 0x00, + 0x2C, 0x00, 0x32, 0x40, 0x74, 0x98, 0x15, 0x00, 0xC8, 0x98, 0x15, 0x00, + 0x94, 0x40, 0x04, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x50, 0x98, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0xB1, 0x7F, 0x13, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xD5, 0x65, 0x12, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x81, 0x66, 0x12, 0x00, 0xDC, 0xFF, 0xFF, 0x7F, 0x10, 0x4E, 0x11, 0x4A, + 0x09, 0x92, 0x40, 0xF6, 0x85, 0x12, 0xD6, 0xF8, 0xE8, 0x30, 0x0A, 0x92, + 0x98, 0x47, 0x73, 0x6C, 0x0D, 0xF1, 0x23, 0x01, 0x09, 0xA8, 0x98, 0x47, + 0x00, 0x28, 0xB6, 0xD1, 0x63, 0x68, 0x32, 0x6D, 0x9D, 0xF8, 0x23, 0x00, + 0x43, 0xF0, 0x80, 0x03, 0x63, 0x60, 0x90, 0x47, 0x6B, 0x7C, 0xD3, 0xE6, + 0x01, 0xF0, 0x32, 0xFE, 0xAA, 0x7C, 0x94, 0xF8, 0x63, 0x30, 0x94, 0xF8, + 0xC0, 0x14, 0x50, 0xE7, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x00, 0x85, 0x09, + 0x2D, 0xE9, 0xF0, 0x4F, 0x02, 0x46, 0x6A, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x02, 0xF3, 0x8B, 0xB0, 0xEF, 0x18, 0x04, 0x90, 0x39, 0x46, + 0x66, 0x48, 0x06, 0x93, 0x0C, 0xF0, 0x4A, 0xFD, 0x97, 0xF8, 0x62, 0x30, + 0x02, 0x2B, 0x00, 0xF0, 0xDD, 0x80, 0x04, 0x2B, 0x00, 0xF0, 0x98, 0x80, + 0xDF, 0xF8, 0x98, 0xA1, 0x60, 0x4C, 0x00, 0x2B, 0x00, 0xF0, 0x89, 0x80, + 0x9A, 0xF8, 0x12, 0x30, 0x9A, 0xF8, 0x11, 0x20, 0x1A, 0x44, 0x01, 0x2A, + 0x5E, 0xD0, 0x0A, 0xB9, 0x5B, 0x4B, 0x1A, 0x60, 0x06, 0x9E, 0xD4, 0xF8, + 0xD8, 0x31, 0x06, 0xF1, 0x18, 0x00, 0x28, 0x44, 0x98, 0x47, 0x06, 0xF1, + 0x28, 0x00, 0xD4, 0xF8, 0xD8, 0x31, 0x28, 0x44, 0x98, 0x47, 0x04, 0x9A, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x53, 0x93, 0xF8, 0xC0, 0x24, + 0x00, 0x2A, 0x3A, 0xD1, 0x04, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x02, 0x53, 0x05, 0x26, 0x93, 0xF8, 0x63, 0x00, 0x0A, 0xF0, 0x02, 0xFA, + 0x4B, 0x4B, 0x1A, 0x69, 0xBA, 0x42, 0x04, 0xBF, 0x00, 0x22, 0x1A, 0x61, + 0x00, 0x21, 0x4F, 0xF4, 0xA4, 0x62, 0x38, 0x46, 0xE9, 0xF7, 0x22, 0xFC, + 0x04, 0x99, 0x9A, 0xF8, 0x11, 0x20, 0x9A, 0xF8, 0x12, 0x30, 0xD4, 0xF8, + 0x50, 0xC4, 0x01, 0x91, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x01, 0x55, + 0x7F, 0x24, 0x00, 0x93, 0x3F, 0x49, 0xC5, 0xF8, 0x2C, 0xC0, 0x13, 0x44, + 0x4F, 0xF4, 0x80, 0x70, 0x3D, 0x4A, 0x2F, 0x63, 0x85, 0xF8, 0x62, 0x60, + 0x85, 0xF8, 0x65, 0x40, 0x85, 0xF8, 0x66, 0x40, 0x0D, 0xF0, 0xC2, 0xFE, + 0x39, 0x48, 0x39, 0x46, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x0C, 0xF0, + 0x91, 0xBC, 0x93, 0xF8, 0xC1, 0x04, 0x01, 0x21, 0x09, 0xF0, 0x2E, 0xFC, + 0x9A, 0xF8, 0x13, 0x30, 0x01, 0x3B, 0x8A, 0xF8, 0x13, 0x30, 0xB9, 0xE7, + 0x31, 0x4A, 0xDA, 0xF8, 0x08, 0x60, 0xDF, 0xF8, 0xC8, 0xE0, 0xDF, 0xF8, + 0xC8, 0x90, 0xDF, 0xF8, 0xC8, 0x80, 0xD2, 0xE9, 0x00, 0x01, 0x21, 0xF0, + 0x10, 0x0C, 0x4C, 0xEA, 0x00, 0x00, 0xC2, 0xF8, 0x04, 0xC0, 0xCE, 0xF8, + 0x00, 0x00, 0xB0, 0x6B, 0xB6, 0x8F, 0xC9, 0xF8, 0x00, 0x00, 0xC8, 0xF8, + 0x00, 0x60, 0x00, 0x2B, 0x88, 0xD1, 0x13, 0x68, 0x21, 0xF4, 0x88, 0x71, + 0x0B, 0x43, 0x51, 0x60, 0xCE, 0xF8, 0x00, 0x30, 0x80, 0xE7, 0x9A, 0xF8, + 0x11, 0x20, 0x9A, 0xF8, 0x12, 0x30, 0x01, 0x3A, 0xD2, 0xB2, 0x8A, 0xF8, + 0x11, 0x20, 0x71, 0xE7, 0xEA, 0xF7, 0x50, 0xFC, 0x00, 0x28, 0x40, 0xF0, + 0x28, 0x81, 0xDF, 0xF8, 0x60, 0xA0, 0x12, 0x4C, 0x9A, 0xF8, 0x10, 0x00, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x53, 0x5A, 0x68, 0x19, 0x6C, + 0x22, 0xF0, 0x80, 0x02, 0x5A, 0x60, 0x09, 0xB1, 0x63, 0x6D, 0x98, 0x47, + 0x9A, 0xF8, 0x12, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x0D, 0x81, 0x0E, 0x48, + 0x0E, 0x49, 0x42, 0x68, 0x0E, 0x4E, 0x01, 0x60, 0x0A, 0x43, 0x32, 0x60, + 0xFF, 0x21, 0x9A, 0xF8, 0x11, 0x20, 0x8A, 0xF8, 0x10, 0x10, 0x49, 0xE7, + 0x18, 0x88, 0x17, 0x00, 0x08, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x94, 0x40, 0x04, 0x40, 0x94, 0x64, 0x17, 0x00, 0xB8, 0x98, 0x15, 0x00, + 0xDC, 0x98, 0x15, 0x00, 0x00, 0x88, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, + 0x8C, 0x84, 0x03, 0x35, 0x60, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, + 0x24, 0x00, 0x32, 0x40, 0x04, 0x9E, 0xDF, 0xF8, 0x28, 0xA2, 0x7F, 0x49, + 0x9A, 0xF8, 0x12, 0x20, 0x7E, 0x4C, 0xDF, 0xF8, 0x20, 0xB2, 0x06, 0xF1, + 0x0A, 0x08, 0x08, 0xEB, 0x88, 0x03, 0x4F, 0xF4, 0x1E, 0x70, 0xC8, 0xEB, + 0x03, 0x13, 0x4F, 0xF0, 0xA4, 0x0C, 0x00, 0xFB, 0x08, 0x18, 0x46, 0x33, + 0x9E, 0x20, 0xCD, 0xE9, 0x08, 0x7A, 0x1C, 0xFB, 0x06, 0x06, 0x01, 0x3A, + 0x00, 0x20, 0x01, 0xEB, 0xC3, 0x03, 0x03, 0x93, 0x8A, 0xF8, 0x12, 0x20, + 0x88, 0xF8, 0x25, 0x00, 0x05, 0x90, 0x05, 0xEB, 0xC6, 0x06, 0xB9, 0x46, + 0xD8, 0xF8, 0x08, 0x32, 0x9D, 0xF8, 0x14, 0x70, 0x3B, 0xB1, 0x03, 0x99, + 0xD4, 0xF8, 0x84, 0x33, 0x4F, 0xF0, 0x80, 0x42, 0x28, 0x39, 0x38, 0x46, + 0x98, 0x47, 0xD8, 0xF8, 0x30, 0x32, 0x33, 0xB1, 0xD4, 0xF8, 0x84, 0x33, + 0x03, 0x99, 0x4F, 0xF0, 0x80, 0x42, 0x38, 0x46, 0x98, 0x47, 0xD9, 0xF8, + 0xF0, 0x34, 0x00, 0x2B, 0x00, 0xF0, 0x93, 0x80, 0x30, 0x46, 0x0C, 0xF0, + 0x55, 0xFC, 0xA6, 0xF1, 0x28, 0x0A, 0x07, 0x90, 0x50, 0x46, 0x0C, 0xF0, + 0x4F, 0xFC, 0x07, 0x99, 0x02, 0x46, 0x5B, 0x48, 0x0D, 0xF0, 0xA0, 0xFD, + 0xEF, 0xF3, 0x10, 0x83, 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x58, 0x4A, + 0x01, 0x23, 0x13, 0x60, 0xDB, 0xF8, 0x00, 0x20, 0xD4, 0xF8, 0x84, 0x33, + 0x01, 0x32, 0xCB, 0xF8, 0x00, 0x20, 0x31, 0x46, 0x4F, 0xF0, 0x80, 0x42, + 0x38, 0x46, 0x98, 0x47, 0xD4, 0xF8, 0x84, 0x33, 0x51, 0x46, 0x38, 0x46, + 0x4F, 0xF0, 0x80, 0x42, 0x98, 0x47, 0xDB, 0xF8, 0x00, 0x30, 0x3B, 0xB1, + 0x4B, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, 0x0B, 0xB9, + 0x00, 0x2A, 0x66, 0xD1, 0x05, 0x9B, 0x03, 0x9A, 0x01, 0x33, 0x08, 0x32, + 0x05, 0x2B, 0x05, 0x93, 0x08, 0xF1, 0x08, 0x08, 0x06, 0xF1, 0x08, 0x06, + 0x09, 0xF1, 0x08, 0x09, 0x03, 0x92, 0xA1, 0xD1, 0x04, 0x9A, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x53, 0xDD, 0xE9, 0x08, 0x7A, 0xD3, 0xF8, + 0x18, 0x35, 0x00, 0x2B, 0x4F, 0xD0, 0x06, 0x9B, 0x03, 0xF5, 0xA3, 0x66, + 0x2E, 0x44, 0x30, 0x46, 0x0C, 0xF0, 0x04, 0xFC, 0x01, 0x46, 0x38, 0x48, + 0x0D, 0xF0, 0x56, 0xFD, 0xEF, 0xF3, 0x10, 0x83, 0xD9, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x33, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDB, 0xF8, 0x00, 0x20, + 0xD4, 0xF8, 0x84, 0x33, 0x01, 0x32, 0xCB, 0xF8, 0x00, 0x20, 0x31, 0x46, + 0x4F, 0xF0, 0x80, 0x42, 0x05, 0x20, 0x98, 0x47, 0xDB, 0xF8, 0x00, 0x30, + 0x3B, 0xB1, 0x2A, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, + 0x0B, 0xB9, 0x00, 0x2A, 0x43, 0xD1, 0x9A, 0xF8, 0x12, 0x20, 0x00, 0x2A, + 0x3C, 0xD0, 0x9A, 0xF8, 0x11, 0x30, 0x13, 0x44, 0x01, 0x2B, 0x7F, 0xF4, + 0x71, 0xAE, 0x23, 0x49, 0xDA, 0xF8, 0x08, 0x00, 0x22, 0x4E, 0xD1, 0xE9, + 0x00, 0x23, 0x23, 0xF0, 0x10, 0x03, 0x4B, 0x60, 0x1A, 0x43, 0x20, 0x49, + 0x20, 0x4B, 0x32, 0x60, 0x86, 0x6B, 0x82, 0x8F, 0x0E, 0x60, 0x1A, 0x60, + 0x5E, 0xE6, 0xD9, 0xF8, 0xC8, 0x34, 0x00, 0x2B, 0x7F, 0xF4, 0x68, 0xAF, + 0xA6, 0xF1, 0x28, 0x0A, 0x72, 0xE7, 0x62, 0xB6, 0x96, 0xE7, 0x06, 0x9B, + 0x03, 0xF5, 0xA3, 0x66, 0x2E, 0x44, 0xB5, 0xE7, 0x01, 0xF0, 0x4E, 0xFC, + 0x9A, 0xF8, 0x12, 0x30, 0xF4, 0xE6, 0x00, 0x20, 0xEA, 0xF7, 0x2C, 0xFB, + 0x12, 0x4B, 0x1A, 0x68, 0xD2, 0x05, 0x7F, 0xF5, 0xD0, 0xAE, 0x4F, 0xF4, + 0x80, 0x72, 0xC3, 0xF8, 0x80, 0x20, 0xBF, 0xF3, 0x4F, 0x8F, 0xBF, 0xF3, + 0x6F, 0x8F, 0xC6, 0xE6, 0x01, 0xF0, 0x5E, 0xFC, 0x2C, 0xE6, 0x62, 0xB6, + 0xB9, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x88, 0x98, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, 0xA0, 0x98, 0x15, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, + 0x24, 0x00, 0x32, 0x40, 0x00, 0xE1, 0x00, 0xE0, 0x00, 0x88, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x46, 0x4F, 0xF4, + 0xA4, 0x60, 0x2E, 0x78, 0x95, 0xF8, 0x29, 0x80, 0x4F, 0x4C, 0x00, 0xFB, + 0x08, 0xF0, 0xC6, 0xEB, 0x06, 0x17, 0x00, 0xEB, 0xC7, 0x07, 0x27, 0x44, + 0x4F, 0xF0, 0x78, 0x0A, 0x1A, 0xFB, 0x06, 0x0A, 0x87, 0xF8, 0x3A, 0x12, + 0x0A, 0xF5, 0xEC, 0x79, 0x95, 0xF8, 0x28, 0x30, 0x87, 0xF8, 0x38, 0x32, + 0xA1, 0x44, 0x87, 0xF8, 0x39, 0x62, 0x48, 0x46, 0x48, 0x22, 0x00, 0x21, + 0xE9, 0xF7, 0x46, 0xFA, 0x97, 0xF8, 0x38, 0x32, 0x37, 0x01, 0x05, 0x2B, + 0x0C, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x41, 0x51, 0x0B, 0x41, 0x6A, 0x03, + 0x0A, 0xF5, 0x0A, 0x70, 0x20, 0x44, 0x10, 0x22, 0x05, 0xF1, 0x08, 0x01, + 0x20, 0xF0, 0xC2, 0xF9, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF3, + 0xBA, 0x1B, 0x03, 0xEB, 0xC2, 0x03, 0x23, 0x44, 0x00, 0x20, 0x00, 0x21, + 0xC3, 0xE9, 0x88, 0x01, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF3, + 0xBA, 0x1B, 0x03, 0xEB, 0xC2, 0x02, 0x22, 0x44, 0x23, 0x44, 0x92, 0xF8, + 0x38, 0x12, 0x05, 0x29, 0x4F, 0xF0, 0x01, 0x00, 0x0C, 0xBF, 0xC3, 0xF8, + 0xAC, 0x94, 0xC3, 0xF8, 0xA8, 0x94, 0x4F, 0xF4, 0xA4, 0x63, 0x82, 0xF8, + 0x3B, 0x02, 0x03, 0xFB, 0x08, 0xF8, 0xD5, 0xE9, 0x02, 0x01, 0xD5, 0xE9, + 0x04, 0x23, 0xBF, 0x1B, 0x08, 0xEB, 0xC7, 0x07, 0x3C, 0x44, 0xC4, 0xE9, + 0x8F, 0x01, 0xC4, 0xE9, 0x91, 0x23, 0x2B, 0x79, 0x84, 0xF8, 0x4C, 0x32, + 0xBD, 0xE8, 0xF0, 0x87, 0x20, 0xF0, 0x90, 0xFA, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x08, 0xF3, 0xBA, 0x1B, 0x03, 0xEB, 0xC2, 0x03, 0x23, 0x44, + 0x20, 0xF0, 0x7F, 0x40, 0x00, 0x21, 0xC3, 0xE9, 0x88, 0x01, 0xC5, 0xE7, + 0x4F, 0xF4, 0xA4, 0x60, 0xBB, 0x1B, 0x00, 0xFB, 0x08, 0xF0, 0x00, 0xEB, + 0xC3, 0x00, 0x20, 0x44, 0xA9, 0x69, 0xC0, 0xF8, 0x28, 0x12, 0xE9, 0x69, + 0xC0, 0xF8, 0x2C, 0x12, 0x29, 0x6A, 0xC0, 0xF8, 0x30, 0x12, 0x00, 0x22, + 0x69, 0x6A, 0xC0, 0xF8, 0x34, 0x12, 0x00, 0x23, 0xC0, 0xE9, 0x88, 0x23, + 0xAC, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0xF2, 0x05, 0xA1, + 0xD1, 0xE9, 0x00, 0x01, 0xBB, 0x1B, 0x02, 0xEB, 0xC3, 0x03, 0x23, 0x44, + 0xC3, 0xE9, 0x88, 0x01, 0x9E, 0xE7, 0x00, 0xBF, 0x36, 0x5C, 0x36, 0x5C, + 0x36, 0x5C, 0x36, 0x5C, 0x18, 0x88, 0x17, 0x00, 0x78, 0x22, 0x10, 0xB4, + 0xC1, 0xEB, 0x01, 0x13, 0xD0, 0xF8, 0xA8, 0x44, 0x02, 0xFB, 0x01, 0x01, + 0x00, 0xEB, 0xC3, 0x03, 0x01, 0xF5, 0xEC, 0x71, 0x00, 0x22, 0x8C, 0x42, + 0x83, 0xF8, 0x3B, 0x22, 0x06, 0xD0, 0xD0, 0xF8, 0xAC, 0x34, 0x8B, 0x42, + 0x1C, 0xD0, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x90, 0xF8, 0x3B, 0x32, + 0xC0, 0xF8, 0xA8, 0x24, 0x00, 0xF5, 0xEC, 0x71, 0x7B, 0xB9, 0x90, 0xF8, + 0xB3, 0x32, 0x00, 0xF5, 0x14, 0x71, 0x53, 0xB9, 0x90, 0xF8, 0x2B, 0x33, + 0x00, 0xF5, 0x32, 0x71, 0x2B, 0xB9, 0x90, 0xF8, 0xA3, 0x33, 0x00, 0xF5, + 0x50, 0x71, 0x00, 0x2B, 0xE1, 0xD0, 0xC0, 0xF8, 0xA8, 0x14, 0xE2, 0xE7, + 0x90, 0xF8, 0x1B, 0x34, 0x00, 0x22, 0xC0, 0xF8, 0xAC, 0x24, 0x43, 0xB9, + 0x90, 0xF8, 0x93, 0x34, 0x00, 0x2B, 0xD8, 0xD0, 0x00, 0xF5, 0x86, 0x63, + 0xC0, 0xF8, 0xAC, 0x34, 0xD3, 0xE7, 0x00, 0xF5, 0x6E, 0x73, 0xF9, 0xE7, + 0x70, 0xB5, 0xD0, 0xF8, 0xE4, 0x40, 0x54, 0xB1, 0x05, 0x4E, 0x05, 0x46, + 0x21, 0x46, 0xD6, 0xF8, 0x20, 0x33, 0x00, 0x22, 0x28, 0x46, 0x98, 0x47, + 0x24, 0x68, 0x00, 0x2C, 0xF6, 0xD1, 0x70, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x04, 0x4A, 0x05, 0x4B, 0x11, 0x69, 0xD3, 0xF8, 0xE0, 0x31, 0x01, 0xF5, + 0x1C, 0x51, 0x28, 0x30, 0x10, 0x31, 0x18, 0x47, 0x00, 0x10, 0x50, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x0B, 0x4B, 0x1A, 0x78, 0x02, 0xB9, 0x70, 0x47, + 0x5B, 0x68, 0x1B, 0x07, 0xFB, 0xD4, 0x43, 0x68, 0x70, 0xB5, 0x04, 0x46, + 0x03, 0xB1, 0x70, 0xBD, 0x06, 0x4D, 0x28, 0x30, 0xD5, 0xF8, 0xD8, 0x31, + 0x98, 0x47, 0xD5, 0xF8, 0x50, 0x34, 0x20, 0x46, 0xBD, 0xE8, 0x70, 0x40, + 0x18, 0x47, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xF0, 0xB4, 0xA0, 0xF8, 0xD2, 0x10, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x1F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x1F, 0x4D, + 0x1F, 0x4B, 0x2E, 0x68, 0x9A, 0x7C, 0x77, 0x1C, 0x01, 0x2A, 0x2F, 0x60, + 0x2B, 0xD9, 0x1D, 0x4C, 0x1A, 0x7D, 0x4F, 0xF4, 0xA4, 0x6C, 0x0C, 0xFB, + 0x02, 0x42, 0xB2, 0xF8, 0xD2, 0x40, 0xA1, 0x42, 0x1C, 0xD3, 0x9B, 0x68, + 0x5B, 0xB1, 0x01, 0x21, 0xB3, 0xF8, 0xD2, 0x20, 0x83, 0xF8, 0xD5, 0x10, + 0xB2, 0xFB, 0xF4, 0xF2, 0x83, 0xF8, 0xD4, 0x20, 0x1B, 0x68, 0x00, 0x2B, + 0xF4, 0xD1, 0x12, 0x4A, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x23, 0x43, + 0x13, 0x60, 0x2F, 0xB1, 0x0A, 0x4B, 0x2E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0xF0, 0xBC, 0x70, 0x47, 0x90, 0xF8, 0x63, 0x20, + 0x1A, 0x75, 0x0C, 0x46, 0xDD, 0xE7, 0x90, 0xF8, 0x63, 0x20, 0x1A, 0x75, + 0x40, 0xF2, 0x01, 0x13, 0x0C, 0x46, 0xA0, 0xF8, 0xD4, 0x30, 0xE2, 0xE7, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x64, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x41, + 0x0C, 0x21, 0x04, 0x46, 0x82, 0xB0, 0x03, 0x23, 0x00, 0x22, 0x58, 0x20, + 0x0B, 0xF0, 0xEA, 0xFC, 0x3B, 0x4F, 0xFF, 0x22, 0x7B, 0x6D, 0x8D, 0xF8, + 0x07, 0x20, 0x05, 0x46, 0x94, 0xF8, 0x63, 0x00, 0x98, 0x47, 0xB4, 0xF8, + 0xB6, 0x14, 0x94, 0xF8, 0xB4, 0x04, 0x10, 0xF0, 0xED, 0xF9, 0x94, 0xF8, + 0xB5, 0x24, 0xB4, 0xF8, 0xB8, 0x64, 0xB4, 0xF8, 0xBA, 0x14, 0x84, 0xF8, + 0xC5, 0x21, 0x04, 0x2A, 0x08, 0xBF, 0x03, 0x22, 0x03, 0x46, 0xC4, 0xF8, + 0x90, 0x01, 0xA4, 0xF8, 0x94, 0x61, 0xA4, 0xF8, 0x96, 0x11, 0x84, 0xF8, + 0xC4, 0x21, 0x00, 0x28, 0x50, 0xD0, 0x1B, 0x79, 0x84, 0xF8, 0xBC, 0x34, + 0x7B, 0x6C, 0x0D, 0xF1, 0x07, 0x01, 0x04, 0xF2, 0xB4, 0x40, 0x98, 0x47, + 0x9D, 0xF8, 0x07, 0x10, 0x68, 0x70, 0xA9, 0x70, 0x06, 0x46, 0x94, 0xF8, + 0x63, 0x00, 0x28, 0x70, 0x94, 0xF8, 0x62, 0x30, 0x2B, 0xBB, 0x84, 0xF8, + 0x8A, 0x30, 0x7E, 0xBB, 0xFB, 0x6C, 0x94, 0xF8, 0x6C, 0x80, 0x98, 0x47, + 0xD7, 0xF8, 0xD8, 0x31, 0x04, 0xF1, 0x28, 0x00, 0x98, 0x47, 0x1A, 0x4A, + 0x1A, 0x49, 0xD7, 0xF8, 0xE0, 0x31, 0x09, 0x69, 0x4F, 0xF4, 0x1E, 0x70, + 0x00, 0xFB, 0x08, 0x28, 0x04, 0xF1, 0x18, 0x00, 0xD8, 0xF8, 0x08, 0x20, + 0x11, 0x44, 0x98, 0x47, 0x01, 0x23, 0x84, 0xF8, 0x78, 0x60, 0x84, 0xF8, + 0x8B, 0x30, 0x28, 0x46, 0x0B, 0xF0, 0xBE, 0xFC, 0x02, 0xB0, 0xBD, 0xE8, + 0xF0, 0x81, 0x02, 0x2B, 0xF7, 0xD1, 0x00, 0x23, 0x84, 0xF8, 0xDB, 0x30, + 0x00, 0x2E, 0xF2, 0xD1, 0xFB, 0x6C, 0x98, 0x47, 0x0A, 0x4B, 0x01, 0x22, + 0x5A, 0x72, 0xEC, 0xE7, 0xD7, 0xF8, 0xBC, 0x31, 0x20, 0x46, 0x98, 0x47, + 0x28, 0x46, 0x0B, 0xF0, 0xA7, 0xFC, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, + 0x1B, 0x79, 0xFF, 0xDE, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0xD8, 0x9C, 0x17, 0x00, 0x07, 0x4A, 0x93, 0x7C, + 0x51, 0x7C, 0x0B, 0x44, 0x01, 0x2B, 0x06, 0xD1, 0x90, 0x68, 0x90, 0xF8, + 0x62, 0x30, 0x00, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x05, 0x4A, 0x06, 0x49, + 0x93, 0x7C, 0x50, 0x7C, 0x03, 0x44, 0x00, 0x22, 0x01, 0x2B, 0x0A, 0x60, + 0x01, 0xDC, 0xFF, 0xF7, 0x65, 0xB9, 0x70, 0x47, 0x00, 0x88, 0x17, 0x00, + 0x2C, 0x00, 0x32, 0x40, 0x13, 0x4B, 0x00, 0x22, 0x02, 0x70, 0x9B, 0x68, + 0x03, 0xB3, 0x10, 0xB4, 0x01, 0x46, 0x01, 0x24, 0x10, 0x46, 0x08, 0xE0, + 0x93, 0xF8, 0x64, 0x20, 0x1A, 0xB1, 0x93, 0xF8, 0xC0, 0x24, 0x72, 0xB9, + 0x01, 0x30, 0x1B, 0x68, 0x7B, 0xB1, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, + 0xF2, 0xD0, 0x93, 0xF8, 0x64, 0x20, 0x00, 0x2A, 0xF5, 0xD0, 0x93, 0xF8, + 0xC0, 0x24, 0x00, 0x2A, 0xF1, 0xD0, 0x0C, 0x70, 0x1B, 0x68, 0x00, 0x2B, + 0xEF, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x18, 0x46, 0x70, 0x47, + 0x00, 0x88, 0x17, 0x00, 0x10, 0xB5, 0x04, 0x23, 0x04, 0x46, 0xFF, 0x22, + 0x00, 0x21, 0x87, 0x20, 0x0B, 0xF0, 0x16, 0xFC, 0x04, 0x60, 0xBD, 0xE8, + 0x10, 0x40, 0x0B, 0xF0, 0x41, 0xBC, 0x00, 0xBF, 0x11, 0xF4, 0x00, 0x01, + 0x70, 0xB5, 0x04, 0x46, 0x16, 0xD0, 0x00, 0x25, 0x2A, 0x4B, 0x80, 0xF8, + 0x78, 0x50, 0x19, 0x69, 0x29, 0x48, 0x2A, 0x4B, 0x80, 0xF8, 0x24, 0x50, + 0x40, 0xF2, 0x01, 0x72, 0x01, 0xF5, 0x1C, 0x51, 0x44, 0x61, 0x82, 0x83, + 0xD3, 0xF8, 0xE0, 0x31, 0x10, 0x31, 0x0C, 0x30, 0x98, 0x47, 0x84, 0xF8, + 0x6B, 0x50, 0x70, 0xBD, 0x90, 0xF8, 0x6B, 0x30, 0x21, 0x4A, 0x01, 0x33, + 0xDB, 0xB2, 0x12, 0x68, 0x80, 0xF8, 0x6B, 0x30, 0x52, 0x78, 0x9A, 0x42, + 0x25, 0xD0, 0x90, 0xF8, 0x64, 0x30, 0xC3, 0xB9, 0x1C, 0x4B, 0x5B, 0x78, + 0x23, 0xB1, 0x1C, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, + 0x15, 0x4B, 0x1A, 0x7A, 0x0A, 0xB1, 0x01, 0x3A, 0x1A, 0x72, 0x14, 0x4A, + 0x17, 0x48, 0xD2, 0xF8, 0xD8, 0x21, 0x01, 0x21, 0x99, 0x83, 0x90, 0x47, + 0x63, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x63, 0x60, 0x70, 0xBD, 0x0E, 0x4B, + 0x90, 0xF8, 0x63, 0x00, 0xD3, 0xF8, 0x94, 0x34, 0x10, 0x49, 0x22, 0x46, + 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x80, 0xF8, 0x6B, 0x10, 0x4F, 0xF4, + 0x80, 0x60, 0x0D, 0x49, 0x0D, 0xF0, 0x74, 0xFA, 0x05, 0x4B, 0x20, 0x46, + 0xD3, 0xF8, 0xBC, 0x31, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, + 0x00, 0x10, 0x50, 0x40, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xC8, 0x35, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, + 0x28, 0x9E, 0x17, 0x00, 0x99, 0x71, 0x13, 0x00, 0xF0, 0x98, 0x15, 0x00, + 0x30, 0xB4, 0x01, 0x25, 0x00, 0x24, 0x1D, 0x70, 0x14, 0x70, 0x04, 0x28, + 0x20, 0xD8, 0xDF, 0xE8, 0x00, 0xF0, 0x03, 0x18, 0x09, 0x05, 0x14, 0x00, + 0x00, 0x21, 0x19, 0x70, 0x01, 0x23, 0x13, 0x70, 0x30, 0xBC, 0x70, 0x47, + 0x09, 0x78, 0x10, 0x29, 0x0F, 0xD0, 0x20, 0x29, 0x01, 0xD1, 0x02, 0x21, + 0x19, 0x70, 0x03, 0x23, 0x13, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x04, 0x23, + 0x13, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x02, 0x23, 0x13, 0x70, 0x30, 0xBC, + 0x70, 0x47, 0x00, 0x21, 0x19, 0x70, 0xF0, 0xE7, 0x05, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE1, 0xDA, 0x30, 0xBC, 0x03, 0x49, + 0x03, 0x48, 0xAD, 0x22, 0x0D, 0xF0, 0x50, 0xBC, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x22, 0x4A, 0x13, 0x68, + 0xC3, 0xF3, 0x0F, 0x33, 0x23, 0xB1, 0x13, 0x68, 0xC3, 0xF3, 0x0F, 0x33, + 0x96, 0x2B, 0x36, 0xD9, 0x96, 0x20, 0x1E, 0x49, 0x1E, 0x4B, 0x0A, 0x68, + 0x18, 0x81, 0xC2, 0xF3, 0x0F, 0x32, 0x22, 0xB1, 0x0A, 0x68, 0xC2, 0xF3, + 0x0F, 0x32, 0x96, 0x2A, 0x25, 0xD9, 0x96, 0x22, 0x19, 0x49, 0x5A, 0x81, + 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0x22, 0xB1, 0x0A, 0x68, 0xC2, 0xF3, + 0x0F, 0x32, 0x96, 0x2A, 0x15, 0xD9, 0x96, 0x22, 0x14, 0x49, 0x9A, 0x81, + 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0x22, 0xB1, 0x0A, 0x68, 0xC2, 0xF3, + 0x0F, 0x32, 0x96, 0x2A, 0x03, 0xD9, 0x96, 0x22, 0xDA, 0x81, 0x1A, 0x82, + 0x70, 0x47, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0xDA, 0x81, 0x1A, 0x82, + 0x70, 0x47, 0x0A, 0x68, 0xC2, 0xF3, 0x0F, 0x32, 0xE6, 0xE7, 0x0A, 0x68, + 0xC2, 0xF3, 0x0F, 0x32, 0xD6, 0xE7, 0x10, 0x68, 0xC0, 0xF3, 0x0F, 0x30, + 0xC5, 0xE7, 0x00, 0xBF, 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, + 0x98, 0x9C, 0x17, 0x00, 0x08, 0x02, 0x32, 0x40, 0x0C, 0x02, 0x32, 0x40, + 0x38, 0xB5, 0x0B, 0x4C, 0x34, 0x22, 0x00, 0x21, 0x20, 0x46, 0xE8, 0xF7, + 0x0B, 0xFF, 0x09, 0x48, 0x09, 0x4A, 0x0A, 0x49, 0x22, 0x60, 0x01, 0x25, + 0x00, 0x23, 0xE5, 0x77, 0x02, 0x60, 0x63, 0x82, 0x63, 0x60, 0xD1, 0xF8, + 0xA0, 0x31, 0x98, 0x47, 0x05, 0x4B, 0x63, 0x62, 0x38, 0xBD, 0x00, 0xBF, + 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, 0xDE, 0xFF, 0xFF, 0x7F, + 0x88, 0x1A, 0x17, 0x00, 0x7D, 0x71, 0x13, 0x00, 0x38, 0xB5, 0x51, 0x4D, + 0x51, 0x4C, 0xAB, 0x78, 0x13, 0xB9, 0xD4, 0xF8, 0xE4, 0x30, 0x98, 0x47, + 0xFF, 0xF7, 0xD4, 0xFF, 0xFF, 0xF7, 0x6A, 0xF8, 0xFE, 0xF7, 0xF8, 0xFC, + 0x09, 0xF0, 0xDC, 0xFC, 0x07, 0xF0, 0x78, 0xFD, 0x08, 0xF0, 0xAA, 0xFE, + 0xD4, 0xF8, 0x8C, 0x33, 0x98, 0x47, 0xAB, 0x78, 0x00, 0x2B, 0x00, 0xF0, + 0x82, 0x80, 0xFD, 0xF7, 0x61, 0xFA, 0x45, 0x4D, 0x2B, 0x68, 0x1B, 0x78, + 0x9B, 0x07, 0x7D, 0xD4, 0x03, 0xF0, 0x70, 0xFD, 0x09, 0xF0, 0x7C, 0xFE, + 0x63, 0x6E, 0x98, 0x47, 0xD4, 0xF8, 0x7C, 0x31, 0x98, 0x47, 0xEF, 0xF7, + 0x0D, 0xF8, 0xEF, 0xF7, 0x0D, 0xF8, 0xEF, 0xF7, 0x0D, 0xF8, 0x3C, 0x4B, + 0x93, 0xF8, 0xFA, 0x30, 0x00, 0x2B, 0x62, 0xD1, 0xD4, 0xF8, 0xE4, 0x34, + 0x98, 0x47, 0x39, 0x4A, 0x29, 0x68, 0x13, 0x68, 0x38, 0x48, 0x39, 0x4D, + 0xC3, 0xF3, 0x15, 0x03, 0x43, 0xF0, 0x20, 0x73, 0x13, 0x60, 0x8B, 0x78, + 0x02, 0x68, 0xDC, 0x06, 0x4C, 0xBF, 0x22, 0xF0, 0x00, 0x42, 0x42, 0xF0, + 0x00, 0x42, 0x02, 0x60, 0x32, 0x4A, 0x33, 0x4C, 0x33, 0x48, 0x13, 0xF0, + 0x01, 0x0F, 0x13, 0x68, 0x14, 0xBF, 0x43, 0xF4, 0x80, 0x23, 0x23, 0xF4, + 0x80, 0x23, 0x13, 0x60, 0x22, 0x68, 0x2F, 0x4B, 0x42, 0xF0, 0x00, 0x62, + 0x22, 0x60, 0x02, 0x68, 0x2D, 0x4C, 0x22, 0xF4, 0x70, 0x02, 0x42, 0xF4, + 0x00, 0x12, 0x02, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0xE0, 0x62, 0x42, 0xF4, + 0xC0, 0x62, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0x60, 0x52, 0x42, 0xF4, + 0x00, 0x52, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, 0xE0, 0x32, 0x42, 0xF4, + 0x40, 0x42, 0x1A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x60, 0x22, 0x1A, 0x60, + 0x2B, 0x68, 0x20, 0x4A, 0x23, 0x40, 0x43, 0xF4, 0xBB, 0x63, 0xA0, 0xF5, + 0x66, 0x70, 0x43, 0xF0, 0x04, 0x03, 0x2B, 0x60, 0x03, 0x68, 0xA5, 0xF1, + 0xF6, 0x55, 0xA5, 0xF5, 0x32, 0x25, 0x23, 0x40, 0x43, 0xF0, 0x3F, 0x03, + 0xA5, 0xF6, 0xFF, 0x15, 0x03, 0x60, 0x15, 0x60, 0x4B, 0x78, 0x2B, 0xB1, + 0xD2, 0xF8, 0x24, 0x31, 0x43, 0xF0, 0x40, 0x03, 0xC2, 0xF8, 0x24, 0x31, + 0x38, 0xBD, 0x12, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x9B, 0xE7, 0xFD, 0xF7, + 0xD5, 0xF9, 0x7C, 0xE7, 0x03, 0x20, 0xEE, 0xF7, 0x8B, 0xFC, 0x7D, 0xE7, + 0x3C, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xF0, 0x00, 0x32, 0x40, 0x80, 0x04, 0x32, 0x40, + 0x20, 0x04, 0x32, 0x40, 0x10, 0x03, 0x32, 0x40, 0x40, 0x04, 0x32, 0x40, + 0x34, 0x04, 0x32, 0x40, 0x2C, 0x04, 0x32, 0x40, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0x01, 0x32, 0x40, 0x80, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x1C, 0x46, 0x05, 0x8C, 0x93, 0xF8, 0x62, 0x30, 0xD2, 0xF8, 0x20, 0x90, + 0x87, 0x69, 0xD0, 0xF8, 0x1C, 0xB0, 0x89, 0xB0, 0x16, 0x46, 0xAD, 0x02, + 0xDD, 0xE9, 0x12, 0x20, 0xD3, 0xB9, 0xB4, 0xF8, 0x68, 0xC0, 0xBC, 0xF1, + 0x00, 0x0F, 0x15, 0xD0, 0xD2, 0x8B, 0xB3, 0x6A, 0x0C, 0xFB, 0x02, 0xF2, + 0x05, 0x92, 0x18, 0x07, 0x05, 0xFB, 0x0C, 0xF2, 0x06, 0x92, 0x19, 0xD0, + 0x00, 0x23, 0xB7, 0xEB, 0x09, 0x0A, 0x4F, 0xF4, 0xFA, 0x76, 0x07, 0x93, + 0x05, 0x9B, 0x03, 0xF5, 0xC8, 0x73, 0xC4, 0xE9, 0x1F, 0xA3, 0x74, 0xE0, + 0x00, 0x28, 0x40, 0xF0, 0xC1, 0x80, 0x06, 0x95, 0x4F, 0xF0, 0x01, 0x0A, + 0xD0, 0x8B, 0xB2, 0x6A, 0x0A, 0xFB, 0x00, 0xF0, 0x12, 0x07, 0x05, 0x90, + 0x40, 0xF0, 0x32, 0x81, 0xF2, 0x6A, 0xDF, 0xF8, 0x94, 0xC2, 0xDF, 0xF8, + 0xD4, 0x82, 0xDC, 0xF8, 0x00, 0x30, 0x9F, 0x48, 0xC2, 0xF3, 0x03, 0x12, + 0x23, 0xF0, 0x7F, 0x03, 0x18, 0xF8, 0x02, 0x20, 0x02, 0xF0, 0x7F, 0x02, + 0x13, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0xB3, 0x6A, 0x99, 0x4A, 0xC3, 0xF3, + 0xC0, 0x13, 0x41, 0xEA, 0x03, 0x51, 0x4F, 0xF0, 0x00, 0x43, 0x01, 0x60, + 0x13, 0x60, 0xBF, 0xF3, 0x4F, 0x8F, 0x00, 0xBF, 0x13, 0x68, 0x58, 0x00, + 0xFC, 0xD5, 0x93, 0x4B, 0x19, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0x00, 0x29, + 0xC0, 0xF2, 0xB4, 0x80, 0x8E, 0x4A, 0x12, 0x68, 0x1F, 0xFA, 0x82, 0xFA, + 0xB2, 0x6A, 0x12, 0x07, 0x40, 0xF0, 0xA3, 0x80, 0xF2, 0x6A, 0x8C, 0x49, + 0x88, 0x48, 0xD1, 0xF8, 0x00, 0xC0, 0xC2, 0xF3, 0x03, 0x12, 0x2C, 0xF0, + 0x7F, 0x0C, 0x18, 0xF8, 0x02, 0x20, 0x02, 0xF0, 0x7F, 0x02, 0x42, 0xEA, + 0x0C, 0x02, 0x0A, 0x60, 0xB2, 0x6A, 0xC2, 0xF3, 0xC0, 0x12, 0x08, 0x31, + 0x12, 0x05, 0x42, 0xF0, 0x18, 0x02, 0x4F, 0xF0, 0x00, 0x46, 0x02, 0x60, + 0x0E, 0x60, 0xBF, 0xF3, 0x4F, 0x8F, 0x00, 0xBF, 0x0A, 0x68, 0x56, 0x00, + 0xFC, 0xD5, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x73, 0xDB, + 0x77, 0x4A, 0x94, 0xF8, 0x62, 0x30, 0x16, 0x68, 0x00, 0x22, 0xB6, 0xB2, + 0xAA, 0xEB, 0x06, 0x0A, 0x07, 0x92, 0xB7, 0xEB, 0x09, 0x09, 0x19, 0xEB, + 0x0A, 0x0A, 0x00, 0x2B, 0x84, 0xD0, 0x4F, 0xEA, 0xE5, 0x79, 0x2A, 0x46, + 0x4B, 0x46, 0x38, 0x46, 0x59, 0x46, 0x1F, 0xF0, 0x67, 0xFB, 0xBA, 0x1B, + 0x02, 0x92, 0x07, 0x9A, 0x00, 0xFB, 0x09, 0xF3, 0x6B, 0xEB, 0x02, 0x02, + 0x05, 0xFB, 0x01, 0x33, 0x03, 0x92, 0xA0, 0xFB, 0x05, 0x01, 0x19, 0x44, + 0xDD, 0xE9, 0x02, 0x23, 0x99, 0x42, 0x08, 0xBF, 0x90, 0x42, 0x38, 0xBF, + 0xCD, 0xE9, 0x02, 0x01, 0x64, 0x4B, 0x06, 0x9A, 0x1B, 0x68, 0xDD, 0xE9, + 0x02, 0x67, 0xB6, 0x18, 0x99, 0x01, 0x34, 0xD4, 0x05, 0x9B, 0xF1, 0x1A, + 0xA1, 0xF5, 0xC8, 0x71, 0x5F, 0x4F, 0x60, 0x4B, 0x3E, 0x69, 0x1B, 0x68, + 0xF6, 0x1A, 0x0E, 0x44, 0xE9, 0xF7, 0xDC, 0xFD, 0x3B, 0x69, 0xF3, 0x1A, + 0xA3, 0xF5, 0x86, 0x53, 0x0C, 0x3B, 0x18, 0x1A, 0x00, 0x28, 0x63, 0x6A, + 0xB8, 0xBF, 0x76, 0x19, 0xB3, 0x42, 0x24, 0xD0, 0x57, 0x4B, 0x1A, 0x6A, + 0xA2, 0x42, 0x43, 0xD0, 0x56, 0x4D, 0x31, 0x46, 0xD5, 0xF8, 0xE0, 0x31, + 0x04, 0xF1, 0x18, 0x00, 0x98, 0x47, 0xD5, 0xF8, 0xA8, 0x30, 0x20, 0x46, + 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x90, 0xF8, 0x02, 0xA0, + 0xBA, 0xF1, 0x00, 0x0F, 0x01, 0xD1, 0x90, 0xF8, 0x03, 0xA0, 0x05, 0xFB, + 0x0A, 0xF0, 0x06, 0x90, 0x36, 0xE7, 0x4B, 0x49, 0x05, 0x9B, 0xC9, 0x1A, + 0xA1, 0xEB, 0x0A, 0x0A, 0x0A, 0xEB, 0x06, 0x01, 0xC6, 0xE7, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x0B, 0x68, 0x58, 0x00, 0x88, 0xD4, 0x45, 0x49, + 0x45, 0x48, 0x4F, 0xF4, 0xBE, 0x72, 0x0D, 0xF0, 0xD7, 0xF9, 0x00, 0x22, + 0x94, 0xF8, 0x62, 0x30, 0x07, 0x92, 0xAA, 0xF5, 0xFA, 0x7A, 0x4F, 0xF4, + 0xFA, 0x76, 0x82, 0xE7, 0x12, 0x68, 0x51, 0x00, 0x3F, 0xF5, 0x48, 0xAF, + 0x3B, 0x49, 0x3C, 0x48, 0x4F, 0xF4, 0xBE, 0x72, 0x0D, 0xF0, 0xC4, 0xF9, + 0x4F, 0xF4, 0xFA, 0x7A, 0x2F, 0x4B, 0x41, 0xE7, 0x30, 0x4A, 0x66, 0x62, + 0x12, 0x68, 0x92, 0x01, 0xB6, 0xD4, 0x36, 0x4A, 0x36, 0x4D, 0x12, 0x68, + 0x93, 0xF8, 0x24, 0x10, 0x41, 0xF2, 0x13, 0x30, 0xC2, 0xF3, 0x07, 0x42, + 0x2A, 0x54, 0x00, 0x29, 0x32, 0xD1, 0x32, 0x4A, 0x32, 0x49, 0x12, 0x68, + 0x09, 0x68, 0x41, 0xF2, 0x14, 0x30, 0xD2, 0xB2, 0x2A, 0x54, 0x01, 0x22, + 0x83, 0xF8, 0x24, 0x20, 0x0B, 0x78, 0x93, 0x42, 0x06, 0xD1, 0x2D, 0x49, + 0x2D, 0x4A, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x13, 0x60, + 0x41, 0xF2, 0x13, 0x32, 0x41, 0xF2, 0x14, 0x33, 0xA8, 0x5C, 0xE9, 0x5C, + 0x88, 0x42, 0x1D, 0xD2, 0x17, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x0F, 0xDA, 0x41, 0xF2, 0x13, 0x32, 0x41, 0xF2, 0x14, 0x33, + 0xAA, 0x5C, 0xEB, 0x5C, 0x9A, 0x42, 0x07, 0xD3, 0x18, 0x49, 0x20, 0x48, + 0x15, 0x4D, 0x40, 0xF2, 0xD7, 0x12, 0x0D, 0xF0, 0xAF, 0xF9, 0x7E, 0xE7, + 0x12, 0x4D, 0x7C, 0xE7, 0x00, 0x22, 0x4F, 0xF4, 0xFA, 0x76, 0x07, 0x92, + 0x92, 0x46, 0x28, 0xE7, 0x12, 0x4E, 0x14, 0x48, 0xA9, 0x5C, 0xEA, 0x5C, + 0x33, 0x68, 0x06, 0x68, 0x16, 0x48, 0xF6, 0xB2, 0x1B, 0x0C, 0x00, 0x96, + 0x0C, 0xF0, 0x20, 0xFF, 0xD4, 0xE7, 0x00, 0xBF, 0x60, 0x81, 0x32, 0x40, + 0x6C, 0x81, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, 0x64, 0x81, 0x32, 0x40, + 0x4C, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0xA4, 0x80, 0x32, 0x40, + 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xFE, 0xFF, 0xFF, + 0x70, 0x79, 0x15, 0x00, 0x04, 0x99, 0x15, 0x00, 0x44, 0x80, 0x32, 0x40, + 0x00, 0x40, 0x1E, 0x00, 0x90, 0x00, 0x32, 0x40, 0x74, 0x36, 0x17, 0x00, + 0x70, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, 0x3C, 0x99, 0x15, 0x00, + 0x28, 0x99, 0x15, 0x00, 0x40, 0xA9, 0x15, 0x00, 0x0B, 0x02, 0x10, 0xB5, + 0x04, 0x46, 0x03, 0xD5, 0x00, 0x23, 0x80, 0xF8, 0x78, 0x30, 0x10, 0xBD, + 0x4F, 0xF4, 0x80, 0x60, 0x04, 0x49, 0x0C, 0xF0, 0x37, 0xFF, 0x04, 0x4B, + 0x20, 0x46, 0xD3, 0xF8, 0xBC, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0xB0, 0x99, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xDF, 0xF8, 0x70, 0x93, 0xD9, 0xF8, 0x20, 0xB0, 0x83, 0xB0, 0x4F, 0xF4, + 0x00, 0x20, 0x0B, 0xF0, 0x79, 0xFC, 0xBB, 0xF1, 0x00, 0x0F, 0x00, 0xF0, + 0xF5, 0x80, 0xBA, 0x4C, 0xDF, 0xF8, 0x58, 0xA3, 0xA1, 0x7F, 0xB9, 0x4F, + 0xDF, 0xF8, 0x54, 0x83, 0xB8, 0x4E, 0x00, 0x29, 0x00, 0xF0, 0xEA, 0x80, + 0x08, 0x07, 0x0E, 0xD5, 0xB6, 0x4B, 0xDB, 0xF8, 0x70, 0x00, 0x1B, 0x68, + 0xDA, 0xF8, 0x10, 0x20, 0x5B, 0x68, 0x03, 0x44, 0x9B, 0x1A, 0x00, 0x2B, + 0xC0, 0xF2, 0xCB, 0x80, 0x01, 0xF0, 0xF7, 0x01, 0xA1, 0x77, 0x4A, 0x07, + 0x00, 0xF1, 0x99, 0x80, 0x8B, 0x07, 0x15, 0xD5, 0xDB, 0xF8, 0x04, 0x30, + 0x23, 0xF0, 0x02, 0x03, 0xCB, 0xF8, 0x04, 0x30, 0x99, 0xF8, 0x1D, 0x30, + 0x05, 0x2B, 0x08, 0xD1, 0xA8, 0x4D, 0xA9, 0x48, 0xD5, 0xF8, 0xD8, 0x31, + 0x98, 0x47, 0x00, 0x23, 0xA1, 0x7F, 0x89, 0xF8, 0x1D, 0x30, 0x01, 0xF0, + 0xFD, 0x01, 0xA1, 0x77, 0xCD, 0x07, 0x2E, 0xD5, 0x33, 0x68, 0x58, 0x01, + 0x40, 0xF1, 0xA3, 0x80, 0x31, 0x68, 0x09, 0x0C, 0x11, 0xF4, 0x7C, 0x7F, + 0x00, 0xF0, 0xAA, 0x80, 0x9E, 0x4A, 0x10, 0x39, 0x01, 0xF0, 0xFF, 0x01, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x25, 0x20, + 0x00, 0x2A, 0x00, 0xF0, 0xA1, 0x80, 0x99, 0x4A, 0x93, 0xF8, 0x22, 0x10, + 0x13, 0x68, 0x98, 0x4A, 0xB3, 0xF9, 0x00, 0x30, 0x4F, 0xF4, 0xA4, 0x60, + 0x00, 0xFB, 0x01, 0x22, 0x00, 0x2B, 0x00, 0x92, 0xC0, 0xF2, 0x9F, 0x80, + 0x3B, 0x68, 0x13, 0xF4, 0xE0, 0x2F, 0x00, 0xF0, 0xA8, 0x80, 0xA1, 0x7F, + 0x01, 0xF0, 0xFE, 0x01, 0xA1, 0x77, 0x8A, 0x06, 0x9D, 0xD5, 0x8E, 0x4E, + 0x8E, 0x49, 0x35, 0x68, 0xC5, 0xF3, 0x41, 0x17, 0x3A, 0x46, 0x02, 0x20, + 0x0C, 0xF0, 0xAA, 0xFE, 0x00, 0x23, 0xC5, 0xF3, 0x47, 0x15, 0x8B, 0xF8, + 0x78, 0x30, 0x00, 0x2F, 0x40, 0xF0, 0xB2, 0x80, 0x87, 0x4B, 0x80, 0x4E, + 0x5A, 0x78, 0x1A, 0x70, 0x86, 0x4A, 0x87, 0x4D, 0x13, 0x68, 0x23, 0xF4, + 0x00, 0x73, 0x13, 0x60, 0xDB, 0xF8, 0x04, 0x30, 0xD6, 0xF8, 0xD8, 0x21, + 0x23, 0xF0, 0x01, 0x03, 0xCB, 0xF8, 0x04, 0x30, 0x0B, 0xF1, 0x28, 0x00, + 0x90, 0x47, 0x2A, 0x68, 0x13, 0x78, 0x02, 0x2B, 0x00, 0xF0, 0x24, 0x81, + 0x78, 0x49, 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x13, 0x78, + 0x01, 0x2B, 0x12, 0xD1, 0x01, 0xF5, 0xFF, 0x41, 0x34, 0x31, 0x78, 0x4A, + 0xDA, 0xF8, 0x10, 0x30, 0x08, 0x68, 0xB2, 0xF8, 0xB2, 0x10, 0xD6, 0xF8, + 0xE0, 0x21, 0x03, 0xEB, 0x40, 0x13, 0x59, 0x1A, 0x0B, 0xF1, 0x18, 0x00, + 0x90, 0x47, 0x2B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x00, 0xF0, 0x00, 0x81, + 0xA1, 0x7F, 0x01, 0xF0, 0xDF, 0x01, 0xA1, 0x77, 0x4B, 0xE7, 0x6D, 0x49, + 0x61, 0x4D, 0x02, 0x20, 0x0C, 0xF0, 0x60, 0xFE, 0x6B, 0x49, 0x63, 0x68, + 0x0A, 0x68, 0x22, 0xF0, 0x04, 0x02, 0x0A, 0x60, 0x22, 0x68, 0x43, 0xF4, + 0x00, 0x73, 0x1A, 0x43, 0x4A, 0x61, 0xD5, 0xF8, 0x98, 0x14, 0x63, 0x60, + 0x9B, 0xF8, 0x63, 0x00, 0xD5, 0xF8, 0x94, 0x34, 0x5A, 0x46, 0x98, 0x47, + 0x3B, 0x68, 0xA1, 0x7F, 0x23, 0xF0, 0x7C, 0x73, 0x3B, 0x60, 0xD8, 0xF8, + 0x00, 0x30, 0x01, 0xF0, 0xFB, 0x01, 0x43, 0xF4, 0x80, 0x03, 0xC8, 0xF8, + 0x00, 0x30, 0xA1, 0x77, 0x3E, 0xE7, 0x5B, 0x48, 0x0C, 0xF0, 0xEA, 0xFD, + 0x7F, 0xE7, 0x00, 0x22, 0x9B, 0xF8, 0x6C, 0x00, 0x11, 0x46, 0xF8, 0xF7, + 0x01, 0xFB, 0x60, 0xB1, 0xA1, 0x7F, 0x2B, 0xE7, 0x55, 0x48, 0x0C, 0xF0, + 0xDD, 0xFD, 0x72, 0xE7, 0x54, 0x48, 0x0C, 0xF0, 0xD9, 0xFD, 0x6E, 0xE7, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDA, 0xF8, 0x10, 0x30, 0xA1, 0x7F, + 0xCB, 0xF8, 0x70, 0x30, 0x1A, 0xE7, 0x93, 0x45, 0x3F, 0xF4, 0x5E, 0xAF, + 0x4D, 0x49, 0x4E, 0x48, 0x40, 0xF2, 0x22, 0x32, 0x0D, 0xF0, 0x40, 0xF8, + 0x3B, 0x68, 0x13, 0xF4, 0xE0, 0x2F, 0x7F, 0xF4, 0x58, 0xAF, 0x32, 0x68, + 0x33, 0x68, 0x49, 0x49, 0xD0, 0x0F, 0xC3, 0xF3, 0x80, 0x73, 0x05, 0x46, + 0x02, 0x46, 0x02, 0x20, 0x01, 0x93, 0x0C, 0xF0, 0x05, 0xFE, 0x01, 0x9B, + 0x53, 0xEA, 0x05, 0x02, 0x28, 0x46, 0x3F, 0xF4, 0x46, 0xAF, 0x2F, 0x4D, + 0x00, 0x9A, 0x19, 0x46, 0xD5, 0xF8, 0x3C, 0x32, 0x98, 0x47, 0x33, 0x68, + 0x23, 0xF0, 0x00, 0x43, 0x33, 0x60, 0x33, 0x68, 0x23, 0xF0, 0x80, 0x43, + 0x33, 0x60, 0x36, 0xE7, 0xDA, 0xF8, 0x10, 0x10, 0x01, 0xF5, 0x9C, 0x51, + 0x32, 0x46, 0x08, 0x31, 0x05, 0xE0, 0xDA, 0xF8, 0x10, 0x30, 0xCB, 0x1A, + 0x00, 0x2B, 0xC0, 0xF2, 0xC2, 0x80, 0x13, 0x68, 0x1B, 0x07, 0xF6, 0xD5, + 0xDF, 0xF8, 0x90, 0x80, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0x08, 0x03, + 0xC8, 0xF8, 0x00, 0x30, 0xD8, 0xF8, 0x00, 0x30, 0xDE, 0x06, 0x19, 0xD5, + 0x2C, 0x49, 0x19, 0x4E, 0x02, 0x20, 0x0C, 0xF0, 0xCF, 0xFD, 0x2B, 0x4B, + 0xDF, 0xF8, 0x74, 0xC0, 0x1A, 0x68, 0xD6, 0xF8, 0x3C, 0x32, 0x12, 0x0C, + 0x8C, 0xF8, 0x00, 0x20, 0x05, 0xF0, 0x01, 0x01, 0x78, 0x08, 0x5A, 0x46, + 0x98, 0x47, 0xD8, 0xF8, 0x00, 0x30, 0x23, 0xF0, 0x10, 0x03, 0xC8, 0xF8, + 0x00, 0x30, 0x1B, 0xE7, 0x21, 0x4B, 0x22, 0x49, 0x0B, 0x4E, 0x01, 0x25, + 0x1D, 0x60, 0x02, 0x20, 0x0C, 0xF0, 0xB2, 0xFD, 0x0F, 0x4A, 0x1F, 0x49, + 0x53, 0x78, 0x0D, 0x60, 0xAB, 0x42, 0x94, 0xBF, 0x00, 0x23, 0x01, 0x23, + 0x13, 0x70, 0x09, 0xE7, 0x98, 0x9C, 0x17, 0x00, 0x74, 0x00, 0x32, 0x40, + 0x70, 0x00, 0x32, 0x40, 0xC8, 0x35, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x28, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x8C, 0x00, 0x32, 0x40, 0x20, 0x9A, 0x15, 0x00, + 0x13, 0x53, 0x1E, 0x00, 0x90, 0xB3, 0x33, 0x40, 0x74, 0x36, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xC0, 0x99, 0x15, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0xC4, 0x99, 0x15, 0x00, 0xDC, 0x99, 0x15, 0x00, 0xF0, 0x99, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x04, 0x9A, 0x15, 0x00, 0x14, 0x9A, 0x15, 0x00, + 0x40, 0x9A, 0x15, 0x00, 0x44, 0x80, 0x32, 0x40, 0x64, 0x85, 0x32, 0x40, + 0x4C, 0x9A, 0x15, 0x00, 0x68, 0x85, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x6C, 0x00, 0x32, 0x40, 0x36, 0x4B, 0x30, 0x22, + 0x1A, 0x60, 0xF7, 0xF7, 0x35, 0xF9, 0xF9, 0xE6, 0xEF, 0xF3, 0x10, 0x83, + 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x32, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x31, 0x4B, 0x2F, 0x4F, 0x1A, 0x68, 0x01, 0x32, 0x1A, 0x60, 0x00, 0x21, + 0x3A, 0x68, 0x39, 0x60, 0x02, 0xF0, 0x0F, 0x08, 0xDA, 0xF8, 0x10, 0x20, + 0x31, 0x46, 0x16, 0x46, 0x0A, 0x46, 0x47, 0xF2, 0x30, 0x50, 0x04, 0xE0, + 0xDA, 0xF8, 0x10, 0x10, 0x89, 0x1B, 0x81, 0x42, 0x1B, 0xD8, 0x39, 0x68, + 0x09, 0x07, 0xF7, 0xD1, 0x25, 0x48, 0x26, 0x49, 0xD0, 0xF8, 0x00, 0xC0, + 0x0F, 0x68, 0x16, 0x46, 0xDA, 0xF8, 0x10, 0x20, 0xB8, 0xF1, 0x00, 0x0F, + 0x1A, 0xD1, 0x22, 0x4A, 0x04, 0x21, 0x11, 0x60, 0x1A, 0x68, 0x32, 0xB1, + 0x1B, 0x49, 0x01, 0x3A, 0x1A, 0x60, 0x0B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0x2A, 0x68, 0xA0, 0xE6, 0x1C, 0x49, 0x00, 0x92, 0x02, 0x20, + 0x0C, 0xF0, 0x24, 0xFD, 0x15, 0x4B, 0x00, 0x9A, 0xD3, 0xE7, 0x19, 0x49, + 0x02, 0x20, 0x0C, 0xF0, 0x1D, 0xFD, 0x3B, 0xE7, 0x07, 0xEA, 0x0C, 0x07, + 0x7F, 0x07, 0xE0, 0xD4, 0xCD, 0xE9, 0x00, 0x16, 0x80, 0x46, 0x16, 0x46, + 0x01, 0xE0, 0x7A, 0x07, 0x12, 0xD4, 0x00, 0x9A, 0xD8, 0xF8, 0x00, 0x70, + 0x12, 0x68, 0xDA, 0xF8, 0x10, 0x10, 0x47, 0xF2, 0x30, 0x50, 0x89, 0x1B, + 0x81, 0x42, 0x07, 0xEA, 0x02, 0x07, 0xF0, 0xD9, 0x0B, 0x49, 0x02, 0x20, + 0x0C, 0xF0, 0x00, 0xFD, 0x03, 0x4B, 0xEA, 0xE7, 0x01, 0x9E, 0xC4, 0xE7, + 0x38, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x6C, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, + 0x5C, 0x9A, 0x15, 0x00, 0x2C, 0x9A, 0x15, 0x00, 0x68, 0x9A, 0x15, 0x00, + 0x10, 0xB5, 0x00, 0x20, 0x0B, 0xF0, 0xD0, 0xF8, 0x01, 0x28, 0x05, 0xD1, + 0x05, 0x4B, 0xBD, 0xE8, 0x10, 0x40, 0xD3, 0xF8, 0x60, 0x31, 0x18, 0x47, + 0x00, 0x21, 0xBD, 0xE8, 0x10, 0x40, 0x08, 0x46, 0x0B, 0xF0, 0x1A, 0xB8, + 0x88, 0x1A, 0x17, 0x00, 0x03, 0x4B, 0x30, 0x22, 0x1A, 0x60, 0x01, 0x21, + 0x00, 0x20, 0x0B, 0xF0, 0x11, 0xB8, 0x00, 0xBF, 0x38, 0x00, 0x32, 0x40, + 0xF8, 0xB5, 0x90, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x46, 0xD0, 0x90, 0xF8, + 0x8A, 0x30, 0x04, 0x46, 0x00, 0x2B, 0x42, 0xD1, 0x3D, 0x4E, 0x3E, 0x49, + 0x94, 0xF8, 0x6C, 0x30, 0x3D, 0x4A, 0x67, 0x6A, 0x4F, 0xF4, 0x1E, 0x70, + 0x00, 0xFB, 0x03, 0x13, 0x9D, 0x68, 0x13, 0x6A, 0xA3, 0x42, 0x3D, 0x44, + 0x54, 0xD0, 0xD6, 0xF8, 0xE0, 0x31, 0x29, 0x46, 0x04, 0xF1, 0x18, 0x00, + 0x98, 0x47, 0x20, 0x46, 0xFF, 0xF7, 0x82, 0xF8, 0xD4, 0xF8, 0x80, 0x10, + 0xD6, 0xF8, 0x14, 0x32, 0x39, 0x44, 0x20, 0x46, 0x98, 0x47, 0xD6, 0xF8, + 0xA4, 0x30, 0x2A, 0x46, 0x39, 0x46, 0x20, 0x46, 0x98, 0x47, 0xD8, 0xB9, + 0x94, 0xF8, 0x78, 0x30, 0x62, 0x68, 0x2C, 0x49, 0x01, 0x33, 0xDB, 0xB2, + 0x42, 0xF0, 0x01, 0x02, 0x09, 0x68, 0x84, 0xF8, 0x78, 0x30, 0x62, 0x60, + 0x0A, 0x78, 0x93, 0x42, 0x21, 0xD8, 0x39, 0xD0, 0xB3, 0xEB, 0x52, 0x0F, + 0x26, 0xD0, 0xB3, 0xEB, 0x92, 0x0F, 0x4F, 0xEA, 0x92, 0x01, 0x21, 0xD0, + 0x01, 0xEB, 0x41, 0x01, 0x8B, 0x42, 0x1D, 0xD0, 0xF8, 0xBD, 0x90, 0xF8, + 0x8C, 0x20, 0x00, 0x2A, 0xB8, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, 0x01, 0x2B, + 0x80, 0xF8, 0x8A, 0x30, 0x29, 0xD9, 0x02, 0x2B, 0x16, 0x4E, 0xB0, 0xD1, + 0x90, 0xF8, 0x63, 0x00, 0xD6, 0xF8, 0xC0, 0x31, 0x00, 0x21, 0x98, 0x47, + 0xA9, 0xE7, 0xD6, 0xF8, 0x64, 0x11, 0x94, 0xF8, 0x6C, 0x00, 0x22, 0x46, + 0xBD, 0xE8, 0xF8, 0x40, 0xF8, 0xF7, 0x30, 0xB9, 0xBD, 0xE8, 0xF8, 0x40, + 0xEA, 0xF7, 0x5A, 0xBE, 0x0F, 0x4B, 0x65, 0x62, 0x93, 0xF8, 0xB5, 0x30, + 0x00, 0x2B, 0xAA, 0xD1, 0x0D, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, + 0x9F, 0xD1, 0xA4, 0xE7, 0xEA, 0xF7, 0x4C, 0xFE, 0x20, 0x46, 0xBD, 0xE8, + 0xF8, 0x40, 0x06, 0xF0, 0x47, 0xBD, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, + 0x9B, 0xB8, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x1C, 0x9E, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x74, 0x36, 0x17, 0x00, 0x38, 0x4B, 0x2D, 0xE9, 0xF0, 0x47, 0x9C, 0x68, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x35, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x34, 0x4D, 0x2B, 0x68, 0x04, 0x20, 0x01, 0x33, + 0x2B, 0x60, 0xF6, 0xF7, 0xF1, 0xFC, 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, + 0xF6, 0xF7, 0x8C, 0xFD, 0x2B, 0x68, 0x2B, 0xB1, 0x2C, 0x4A, 0x01, 0x3B, + 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0x4C, 0xD0, 0xDF, 0xF8, 0xB4, 0x80, + 0x00, 0x2C, 0x43, 0xD0, 0x29, 0x4F, 0x2A, 0x4E, 0x40, 0xF6, 0xE7, 0x35, + 0x02, 0xE0, 0x24, 0x68, 0x00, 0x2C, 0x3B, 0xD0, 0x94, 0xF8, 0x62, 0x30, + 0x02, 0x2B, 0xF8, 0xD1, 0x94, 0xF8, 0xD5, 0x30, 0x01, 0x3B, 0xDB, 0xB2, + 0x84, 0xF8, 0xD5, 0x30, 0x00, 0x2B, 0xF0, 0xD1, 0x94, 0xF8, 0xD4, 0x30, + 0x84, 0xF8, 0xD5, 0x30, 0x20, 0x46, 0xFE, 0xF7, 0xD3, 0xFF, 0x61, 0x6A, + 0xD8, 0xF8, 0x14, 0x32, 0x01, 0xF6, 0xE8, 0x31, 0x20, 0x46, 0x98, 0x47, + 0x3B, 0x68, 0xB4, 0xF8, 0xD2, 0x20, 0x59, 0x01, 0xB5, 0xEB, 0x43, 0x1F, + 0x28, 0xBF, 0x01, 0xEB, 0x82, 0x21, 0x32, 0x69, 0x23, 0x6C, 0xA2, 0xF6, + 0xE8, 0x39, 0x89, 0x44, 0x20, 0x46, 0x4A, 0x46, 0x1B, 0xB1, 0xD8, 0xF8, + 0xA4, 0x30, 0x61, 0x6A, 0x98, 0x47, 0x94, 0xF8, 0xC0, 0x34, 0x04, 0xF1, + 0x18, 0x00, 0x49, 0x46, 0x00, 0x2B, 0xC6, 0xD0, 0xD8, 0xF8, 0xE0, 0x31, + 0x98, 0x47, 0x24, 0x68, 0x00, 0x2C, 0xC3, 0xD1, 0xD8, 0xF8, 0x84, 0x31, + 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x00, 0x2A, 0xB0, 0xD0, 0x62, 0xB6, + 0xAE, 0xE7, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x40, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x08, 0xF0, 0x4A, 0xBE, 0x14, 0x4B, 0x15, 0x4A, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x10, 0xB5, 0x14, 0x68, 0x00, 0x2B, + 0x04, 0xF0, 0x40, 0x74, 0x14, 0xDB, 0x20, 0x46, 0x0B, 0xF0, 0x04, 0xF9, + 0x0F, 0x4B, 0x9B, 0x7C, 0x3B, 0xB9, 0x0F, 0x4A, 0x0F, 0x4B, 0x10, 0x6A, + 0xD3, 0xF8, 0xCC, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x0C, 0x4B, + 0x20, 0x46, 0xD3, 0xF8, 0x68, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0xB4, 0xF1, 0x40, 0x7F, 0xE7, 0xD1, 0x08, 0x49, 0x08, 0x48, 0x4F, 0xF4, + 0x9D, 0x62, 0x0C, 0xF0, 0xBB, 0xFD, 0xE0, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0x80, 0xB6, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x78, 0x9A, 0x15, 0x00, + 0xF0, 0xB5, 0x2D, 0x4E, 0x2D, 0x4B, 0xDF, 0xF8, 0xC8, 0xE0, 0xDF, 0xF8, + 0xC8, 0xC0, 0x2C, 0x4F, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x00, 0x62, + 0x15, 0x8D, 0xD4, 0x8C, 0x44, 0xEA, 0x05, 0x44, 0x1C, 0x60, 0x52, 0x8D, + 0x27, 0x4D, 0x5A, 0x60, 0x00, 0x24, 0x27, 0x4A, 0xCE, 0xF8, 0x00, 0x40, + 0x4F, 0xF0, 0x00, 0x53, 0xCC, 0xF8, 0x00, 0x40, 0x2C, 0x60, 0x00, 0xF1, + 0x10, 0x05, 0x3C, 0x60, 0xEC, 0xB2, 0x13, 0x60, 0x13, 0x68, 0x9F, 0x00, + 0xFC, 0xD4, 0xDD, 0x00, 0x26, 0xD4, 0x15, 0x68, 0xC5, 0xF3, 0x07, 0x43, + 0xA3, 0x42, 0x4F, 0xEA, 0x15, 0x45, 0x1F, 0xD0, 0xED, 0xB2, 0xDF, 0xF8, + 0x5C, 0xE0, 0xDF, 0xF8, 0x68, 0xC0, 0x18, 0x4F, 0x2D, 0x04, 0x4F, 0xF0, + 0xFF, 0x33, 0x45, 0xF0, 0x80, 0x45, 0xCE, 0xF8, 0x00, 0x30, 0xCC, 0xF8, + 0x00, 0x30, 0x15, 0x60, 0x3B, 0x68, 0x5A, 0x00, 0xFC, 0xD4, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x00, 0x63, 0x0C, 0x48, 0x1D, 0x8D, 0xDA, 0x8C, + 0x42, 0xEA, 0x05, 0x42, 0x02, 0x60, 0x0D, 0x4A, 0x5B, 0x8D, 0x13, 0x60, + 0x0B, 0x01, 0x43, 0xEA, 0x04, 0x43, 0x09, 0x4A, 0x43, 0xF0, 0x80, 0x43, + 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, + 0x20, 0x46, 0xF0, 0xBD, 0x68, 0x65, 0x17, 0x00, 0xBC, 0x00, 0x32, 0x40, + 0xB8, 0x00, 0x32, 0x40, 0xB4, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, + 0xC0, 0x00, 0x32, 0x40, 0xAC, 0x00, 0x32, 0x40, 0xB0, 0x00, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x41, 0x82, 0xB0, 0x47, 0x78, 0x90, 0xF8, 0x29, 0x60, + 0x01, 0x23, 0x8D, 0xF8, 0x06, 0x30, 0xFF, 0x2F, 0x4F, 0xF0, 0x00, 0x03, + 0x04, 0x46, 0x00, 0xF1, 0x04, 0x08, 0x8D, 0xF8, 0x07, 0x30, 0x00, 0xF0, + 0x83, 0x80, 0x74, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x73, 0xDB, 0x3A, 0x46, 0x94, 0xF8, 0x28, 0x30, 0x70, 0x49, 0x4F, 0xF4, + 0x80, 0x70, 0x0C, 0xF0, 0xF5, 0xFA, 0x07, 0xF1, 0x10, 0x05, 0x6E, 0x4B, + 0xED, 0xB2, 0xD3, 0xF8, 0x18, 0x33, 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, + 0x6B, 0x4A, 0x6C, 0x48, 0x6C, 0x49, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x07, 0x22, 0x17, 0x8D, 0xD3, 0x8C, 0x43, 0xEA, 0x07, 0x43, 0x03, 0x60, + 0x53, 0x8D, 0x0B, 0x60, 0x0D, 0xF1, 0x06, 0x03, 0x0D, 0xF1, 0x07, 0x02, + 0x94, 0xF8, 0x28, 0x00, 0x41, 0x46, 0xFF, 0xF7, 0x7B, 0xF8, 0x63, 0x4B, + 0xA2, 0x68, 0x1A, 0x60, 0xE2, 0x68, 0x5A, 0x60, 0x22, 0x69, 0x9A, 0x60, + 0x62, 0x69, 0xDA, 0x60, 0x9D, 0xF8, 0x07, 0x30, 0x04, 0x2B, 0x65, 0xD0, + 0x5D, 0x4A, 0x12, 0x68, 0x02, 0x2B, 0x12, 0x78, 0x1F, 0xD1, 0xD1, 0x07, + 0x00, 0xF1, 0x85, 0x80, 0x5A, 0x48, 0x01, 0x68, 0x21, 0xF0, 0x01, 0x01, + 0x01, 0x60, 0x92, 0x07, 0x17, 0xD5, 0x9D, 0xF8, 0x06, 0x00, 0x94, 0xF8, + 0x2A, 0x10, 0x56, 0x4A, 0x2B, 0x04, 0x43, 0xEA, 0x00, 0x33, 0x43, 0xEA, + 0x06, 0x13, 0x43, 0xEA, 0x81, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, + 0x13, 0x68, 0x5C, 0x00, 0xFC, 0xD4, 0x28, 0x46, 0x02, 0xB0, 0xBD, 0xE8, + 0xF0, 0x81, 0x97, 0x07, 0x6F, 0xD4, 0x9D, 0xF8, 0x06, 0x00, 0x94, 0xF8, + 0x2A, 0x10, 0x4A, 0x4A, 0x1B, 0x02, 0x43, 0xEA, 0x00, 0x33, 0x43, 0xEA, + 0x05, 0x43, 0x43, 0xEA, 0x06, 0x13, 0x43, 0xEA, 0x81, 0x03, 0x43, 0xF0, + 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x59, 0x00, 0xFC, 0xD4, 0x28, 0x46, + 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x0D, 0x2F, 0x89, 0xD9, 0x40, 0x49, + 0x40, 0x48, 0x40, 0xF2, 0x5C, 0x52, 0x0C, 0xF0, 0xAB, 0xFC, 0x82, 0xE7, + 0x90, 0xF8, 0x28, 0x30, 0x05, 0x2B, 0x4E, 0xD0, 0x34, 0x48, 0x35, 0x4A, + 0x25, 0x78, 0x3B, 0x49, 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x60, 0x13, 0x60, + 0x94, 0xF8, 0x28, 0x30, 0x94, 0xF8, 0x29, 0x20, 0x4F, 0xF4, 0x80, 0x70, + 0x0C, 0xF0, 0x6C, 0xFA, 0x05, 0xEB, 0x86, 0x05, 0x29, 0x4B, 0xED, 0xB2, + 0xD3, 0xF8, 0x48, 0x34, 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, 0x83, 0xE7, + 0x30, 0x4A, 0xA1, 0x69, 0x11, 0x60, 0xE1, 0x69, 0x51, 0x60, 0x21, 0x6A, + 0x91, 0x60, 0x27, 0x4A, 0x2D, 0x49, 0x60, 0x6A, 0x12, 0x68, 0x08, 0x60, + 0x12, 0x78, 0x90, 0x07, 0xB1, 0xD5, 0x9D, 0xF8, 0x06, 0x00, 0x94, 0xF8, + 0x2A, 0x10, 0x23, 0x4A, 0x1B, 0x02, 0x43, 0xEA, 0x00, 0x33, 0x43, 0xEA, + 0x05, 0x43, 0x43, 0xEA, 0x06, 0x13, 0x43, 0xEA, 0x81, 0x03, 0x43, 0xF0, + 0x80, 0x43, 0x13, 0x60, 0x13, 0x68, 0x58, 0x00, 0xFC, 0xD4, 0x28, 0x46, + 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x1D, 0x49, 0xA0, 0x69, 0x08, 0x60, + 0xE0, 0x69, 0x48, 0x60, 0x20, 0x6A, 0x88, 0x60, 0x60, 0x6A, 0xC8, 0x60, + 0x75, 0xE7, 0x5A, 0x1E, 0x01, 0x2A, 0xDA, 0xD8, 0x73, 0xE7, 0x18, 0x4B, + 0x05, 0x78, 0x1B, 0x68, 0x09, 0x4A, 0x1B, 0x0E, 0x03, 0x3B, 0x2B, 0x44, + 0x03, 0xEB, 0x46, 0x03, 0xDD, 0xB2, 0x29, 0x46, 0xD2, 0xF8, 0x48, 0x34, + 0x98, 0x47, 0x28, 0x46, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0xB4, 0x9A, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0xBC, 0x00, 0x32, 0x40, 0xC0, 0x00, 0x32, 0x40, + 0xAC, 0x00, 0x32, 0x40, 0x34, 0x36, 0x17, 0x00, 0x64, 0x05, 0x32, 0x40, + 0xC4, 0x00, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0xA0, 0x9A, 0x15, 0x00, + 0x90, 0x9A, 0x15, 0x00, 0xC8, 0x00, 0x32, 0x40, 0xD4, 0x00, 0x32, 0x40, + 0xD8, 0x00, 0x32, 0x40, 0x33, 0x4A, 0x13, 0x68, 0xB0, 0xEB, 0x13, 0x6F, + 0x70, 0xB5, 0x04, 0x46, 0x46, 0xD8, 0x0F, 0x28, 0x24, 0xD8, 0x30, 0x4B, + 0x30, 0x4D, 0x31, 0x49, 0x31, 0x48, 0x4F, 0xF0, 0xFF, 0x32, 0x1A, 0x60, + 0xA3, 0x10, 0x2A, 0x60, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x00, + 0xD1, 0xF8, 0x54, 0x34, 0x04, 0xF0, 0x03, 0x01, 0x98, 0x47, 0x2B, 0x4A, + 0x2B, 0x49, 0x2C, 0x4E, 0x2C, 0x4D, 0x2D, 0x48, 0x24, 0x04, 0x00, 0x23, + 0x44, 0xF0, 0x80, 0x44, 0x33, 0x60, 0x2B, 0x60, 0x13, 0x60, 0x03, 0x60, + 0x0A, 0x46, 0x0C, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, 0x70, 0xBD, + 0xA0, 0xF1, 0x10, 0x05, 0x25, 0x48, 0x4F, 0xF4, 0x1E, 0x73, 0xED, 0xB2, + 0x03, 0xFB, 0x05, 0x05, 0x28, 0x46, 0x95, 0xF8, 0x22, 0x60, 0xFD, 0xF7, + 0xD3, 0xFF, 0x1A, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x06, 0x36, + 0x96, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0xE8, 0xD0, 0x28, 0x8D, 0xEB, 0x8C, + 0x11, 0x49, 0x12, 0x4A, 0x43, 0xEA, 0x00, 0x43, 0x0B, 0x60, 0x6B, 0x8D, + 0x13, 0x60, 0xCC, 0xE7, 0x13, 0x68, 0x15, 0x68, 0x0F, 0x48, 0x0E, 0x4A, + 0x1B, 0x0E, 0x01, 0x33, 0xE3, 0x1A, 0x61, 0x1E, 0xA1, 0xEB, 0x15, 0x61, + 0x03, 0xEB, 0xD3, 0x73, 0x5B, 0x10, 0x4F, 0xF4, 0xA4, 0x64, 0x01, 0xF0, + 0x01, 0x01, 0x04, 0xFB, 0x03, 0x00, 0x04, 0x31, 0xBD, 0xE8, 0x70, 0x40, + 0xD2, 0xF8, 0x54, 0x34, 0x18, 0x47, 0x00, 0xBF, 0xD8, 0x00, 0x32, 0x40, + 0xBC, 0x00, 0x32, 0x40, 0xC0, 0x00, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0xB4, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, + 0xAC, 0x00, 0x32, 0x40, 0xB0, 0x00, 0x32, 0x40, 0xB8, 0x00, 0x32, 0x40, + 0x68, 0x65, 0x17, 0x00, 0xF0, 0xB4, 0x0E, 0x49, 0x0E, 0x4F, 0x0F, 0x4E, + 0x0F, 0x4D, 0x10, 0x4C, 0x4F, 0xF0, 0xFF, 0x32, 0x00, 0xF1, 0x10, 0x03, + 0x0E, 0x48, 0x3A, 0x60, 0xDB, 0xB2, 0x0A, 0x60, 0x00, 0x21, 0x01, 0x60, + 0x1B, 0x04, 0x18, 0x30, 0x43, 0xF0, 0x80, 0x43, 0x31, 0x60, 0x02, 0x46, + 0x29, 0x60, 0x21, 0x60, 0x03, 0x60, 0x13, 0x68, 0x5B, 0x00, 0xFC, 0xD4, + 0xF0, 0xBC, 0x70, 0x47, 0xC0, 0x00, 0x32, 0x40, 0xBC, 0x00, 0x32, 0x40, + 0xB0, 0x00, 0x32, 0x40, 0xB4, 0x00, 0x32, 0x40, 0xB8, 0x00, 0x32, 0x40, + 0xAC, 0x00, 0x32, 0x40, 0x08, 0xB5, 0x4F, 0xF0, 0x80, 0x60, 0x0A, 0xF0, + 0xA5, 0xFE, 0x00, 0x21, 0xBD, 0xE8, 0x08, 0x40, 0x08, 0x46, 0x0A, 0xF0, + 0x89, 0xBC, 0x00, 0xBF, 0x14, 0x4B, 0x15, 0x49, 0x1A, 0x68, 0x22, 0xF0, + 0x02, 0x02, 0xF0, 0xB4, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x4F, 0x13, 0x4E, + 0x13, 0x4D, 0x14, 0x4C, 0x42, 0xF0, 0x01, 0x02, 0x1A, 0x60, 0x4F, 0xF4, + 0x40, 0x72, 0x3A, 0x60, 0x07, 0x68, 0x82, 0x88, 0x00, 0x20, 0x30, 0x60, + 0x28, 0x60, 0x27, 0x60, 0x0E, 0x4C, 0x0A, 0x60, 0x19, 0x68, 0x62, 0x68, + 0x0D, 0x4D, 0xA6, 0xF5, 0x00, 0x46, 0x44, 0x3E, 0x2A, 0x43, 0x21, 0xF4, + 0xE0, 0x61, 0x19, 0x60, 0x25, 0x60, 0x32, 0x60, 0xF0, 0xBC, 0xFC, 0xF7, + 0x57, 0xBE, 0x00, 0xBF, 0x4C, 0x00, 0x32, 0x40, 0x14, 0x00, 0x32, 0x40, + 0x1C, 0x00, 0x32, 0x40, 0xA4, 0x80, 0x32, 0x40, 0xA8, 0x80, 0x32, 0x40, + 0x10, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x8C, 0x84, 0x03, 0x35, + 0x0B, 0x49, 0x0C, 0x48, 0x38, 0xB5, 0x02, 0x68, 0x4B, 0x68, 0x0B, 0x4C, + 0x0B, 0x4D, 0x42, 0xF0, 0x02, 0x02, 0x23, 0x43, 0x02, 0x60, 0x0C, 0x60, + 0x00, 0x20, 0x2B, 0x60, 0xFC, 0xF7, 0x36, 0xFE, 0x07, 0x4B, 0x08, 0x49, + 0x08, 0x4A, 0x19, 0x60, 0x13, 0x68, 0x0B, 0x43, 0x13, 0x60, 0x38, 0xBD, + 0x98, 0x9C, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x8C, 0xA4, 0x07, 0x35, + 0x60, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x01, 0x00, 0x04, 0x00, + 0x74, 0x80, 0x32, 0x40, 0x0D, 0x49, 0x0E, 0x48, 0x38, 0xB5, 0x02, 0x68, + 0x4B, 0x68, 0x0D, 0x4C, 0x0D, 0x4D, 0x22, 0xF0, 0x02, 0x02, 0x23, 0x43, + 0x02, 0x60, 0x0C, 0x60, 0x00, 0x20, 0x2B, 0x60, 0xFC, 0xF7, 0x10, 0xFE, + 0x09, 0x4B, 0x0A, 0x4A, 0x0A, 0x49, 0x19, 0x60, 0x13, 0x68, 0x23, 0xF4, + 0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x38, 0xBD, 0x00, 0xBF, + 0x98, 0x9C, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x8C, 0x84, 0x03, 0x35, + 0x60, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xEB, 0x80, 0x03, 0xC0, 0xEB, 0x03, 0x10, + 0x04, 0x4B, 0x08, 0x44, 0x03, 0xEB, 0xC0, 0x00, 0x90, 0xF8, 0xA5, 0x01, + 0x21, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x70, 0x47, 0x68, 0x65, 0x17, 0x00, + 0x00, 0xEB, 0x80, 0x03, 0xC0, 0xEB, 0x03, 0x10, 0x04, 0x4B, 0x08, 0x44, + 0x03, 0xEB, 0xC0, 0x00, 0x90, 0xF8, 0xA4, 0x01, 0x21, 0x38, 0x18, 0xBF, + 0x01, 0x20, 0x70, 0x47, 0x68, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x37, 0x4A, + 0x37, 0x4B, 0x92, 0xF8, 0x30, 0x10, 0x1B, 0x68, 0x00, 0x29, 0x45, 0xD1, + 0x00, 0x28, 0x40, 0xD0, 0x9B, 0xB2, 0x01, 0x21, 0x80, 0xEA, 0xE0, 0x76, + 0x00, 0x28, 0x4F, 0xEA, 0x83, 0x23, 0x82, 0xF8, 0x30, 0x10, 0xA6, 0xEB, + 0xE0, 0x76, 0x4E, 0xDD, 0xB6, 0xEB, 0x53, 0x0F, 0x23, 0xFA, 0x01, 0xF4, + 0x98, 0xBF, 0x04, 0x46, 0xEF, 0xF3, 0x10, 0x81, 0xC9, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x29, 0x49, 0x01, 0x20, 0x08, 0x60, 0x28, 0x4D, 0x29, 0x4F, + 0x29, 0x68, 0x29, 0x48, 0x01, 0x31, 0x00, 0x68, 0x29, 0x60, 0x39, 0x69, + 0x00, 0x2C, 0x4F, 0xEA, 0x40, 0x17, 0x01, 0xEB, 0x40, 0x11, 0x4F, 0xEA, + 0x93, 0x00, 0x25, 0xDD, 0xB8, 0x42, 0x1A, 0xD8, 0x64, 0x36, 0xDB, 0x1B, + 0x9E, 0x42, 0x31, 0xD9, 0x20, 0x4B, 0x94, 0x62, 0x09, 0x1A, 0xD3, 0xF8, + 0xE0, 0x31, 0x1F, 0x48, 0x98, 0x47, 0x2B, 0x68, 0x43, 0xB1, 0x18, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x1B, 0xB9, 0x12, 0xB1, 0x62, 0xB6, + 0x00, 0xE0, 0x04, 0x46, 0x20, 0x46, 0xF8, 0xBD, 0x00, 0x24, 0x20, 0x46, + 0xF8, 0xBD, 0x15, 0x4E, 0x94, 0x62, 0x19, 0x44, 0x09, 0x1A, 0xD6, 0xF8, + 0xE0, 0x31, 0x13, 0x48, 0x98, 0x47, 0xE6, 0xE7, 0x30, 0x44, 0xB8, 0x42, + 0x0E, 0xD3, 0x0F, 0x4B, 0x0F, 0x48, 0xD3, 0xF8, 0xE0, 0x31, 0x94, 0x62, + 0x64, 0x31, 0x98, 0x47, 0xDB, 0xE7, 0x5C, 0x08, 0xB6, 0xEB, 0x53, 0x0F, + 0x8C, 0xBF, 0x64, 0x42, 0x04, 0x46, 0xAF, 0xE7, 0x20, 0x46, 0xFE, 0xF7, + 0x57, 0xFD, 0xD0, 0xE7, 0x98, 0x9C, 0x17, 0x00, 0x64, 0x00, 0x32, 0x40, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x40, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0xB8, 0x9C, 0x17, 0x00, + 0x13, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, + 0x0E, 0xDB, 0x11, 0x4B, 0xDB, 0x7F, 0x2B, 0xB1, 0x10, 0x4A, 0x93, 0x7C, + 0x52, 0x7C, 0x13, 0x44, 0x01, 0x2B, 0x11, 0xDD, 0x0E, 0x4B, 0xBD, 0xE8, + 0x10, 0x40, 0xD3, 0xF8, 0x60, 0x31, 0x18, 0x47, 0x00, 0x20, 0x0A, 0xF0, + 0xED, 0xFB, 0x03, 0x28, 0xEB, 0xD0, 0x0A, 0x49, 0x0A, 0x48, 0x40, 0xF2, + 0x06, 0x72, 0x0C, 0xF0, 0x25, 0xFA, 0xE4, 0xE7, 0x00, 0x21, 0xBD, 0xE8, + 0x10, 0x40, 0x08, 0x46, 0x0A, 0xF0, 0x36, 0xBB, 0x38, 0x36, 0x17, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xC4, 0x9A, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x39, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x61, 0xDB, + 0x37, 0x49, 0x04, 0x20, 0x0B, 0xF0, 0xDC, 0xFF, 0xEF, 0xF3, 0x10, 0x83, + 0xD8, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x34, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0xDF, 0xF8, 0xFC, 0x80, 0x32, 0x4C, 0xD8, 0xF8, 0x00, 0x30, 0x32, 0x4D, + 0x01, 0x33, 0x00, 0x22, 0xC8, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x22, 0x60, + 0x2F, 0x69, 0x03, 0xF0, 0x0F, 0x09, 0x47, 0xF2, 0x30, 0x56, 0x05, 0xE0, + 0xF6, 0xF7, 0x22, 0xFB, 0x2B, 0x69, 0xDB, 0x1B, 0xB3, 0x42, 0x2C, 0xD8, + 0x23, 0x68, 0x19, 0x07, 0xF6, 0xD1, 0x28, 0x4A, 0x28, 0x48, 0x53, 0x68, + 0x28, 0x49, 0x04, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x53, 0x60, 0x0B, 0x68, + 0xB9, 0xF1, 0x00, 0x0F, 0x22, 0xD1, 0x25, 0x4B, 0x25, 0x49, 0x04, 0x20, + 0x18, 0x60, 0x0B, 0xF0, 0xA7, 0xFF, 0x24, 0x4B, 0x93, 0xF8, 0x5A, 0x30, + 0x0B, 0xBB, 0x03, 0x21, 0x00, 0x20, 0x0A, 0xF0, 0xE1, 0xFA, 0x21, 0x4A, + 0xD8, 0xF8, 0x00, 0x30, 0x00, 0x21, 0x51, 0x82, 0x3B, 0xB1, 0x15, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0x1A, 0x49, 0x04, 0x20, 0x0B, 0xF0, + 0x8B, 0xFF, 0xC4, 0xE7, 0x23, 0x40, 0x5A, 0x07, 0xD9, 0xD4, 0x02, 0x68, + 0x0B, 0x68, 0x13, 0x40, 0x5B, 0x07, 0xFA, 0xD5, 0xD3, 0xE7, 0xF6, 0xF7, + 0x07, 0xFB, 0xDA, 0xE7, 0x00, 0x20, 0x0A, 0xF0, 0x65, 0xFB, 0x04, 0x28, + 0x98, 0xD1, 0x10, 0x49, 0x10, 0x48, 0x40, 0xF2, 0x14, 0x72, 0x0C, 0xF0, + 0x9D, 0xF9, 0x91, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x14, 0x9B, 0x15, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x38, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x1C, 0x9E, 0x17, 0x00, 0x6C, 0x80, 0x32, 0x40, 0x74, 0x80, 0x32, 0x40, + 0x70, 0x80, 0x32, 0x40, 0x28, 0x9B, 0x15, 0x00, 0x30, 0x9D, 0x17, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0x5C, 0x9A, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xF0, 0x9A, 0x15, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x24, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x31, 0xDB, 0x00, 0x20, + 0x0A, 0xF0, 0x32, 0xFB, 0x02, 0x28, 0x05, 0xD0, 0xBD, 0xE8, 0x10, 0x40, + 0x04, 0x21, 0x00, 0x20, 0x0A, 0xF0, 0x82, 0xBA, 0x1C, 0x4B, 0x30, 0x22, + 0x1A, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x19, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x19, 0x4C, 0x23, 0x68, 0x4F, 0xF0, + 0x80, 0x60, 0x01, 0x33, 0x23, 0x60, 0x0A, 0xF0, 0x85, 0xFC, 0x16, 0x4B, + 0x1B, 0x68, 0x5B, 0x07, 0x02, 0xD5, 0x15, 0x4B, 0x04, 0x22, 0x1A, 0x60, + 0x23, 0x68, 0x00, 0x2B, 0xDC, 0xD0, 0x0F, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0x23, 0x60, 0x00, 0x2B, 0xD6, 0xD1, 0x00, 0x2A, 0xD4, 0xD0, 0x62, 0xB6, + 0xD2, 0xE7, 0x00, 0x20, 0x0A, 0xF0, 0x00, 0xFB, 0x03, 0x28, 0x04, 0xD0, + 0x00, 0x20, 0x0A, 0xF0, 0xFB, 0xFA, 0x00, 0x28, 0xC3, 0xD1, 0x09, 0x49, + 0x09, 0x48, 0x40, 0xF2, 0x4F, 0x72, 0x0C, 0xF0, 0x33, 0xF9, 0xBC, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x38, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x6C, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, + 0x70, 0x79, 0x15, 0x00, 0x3C, 0x9B, 0x15, 0x00, 0x08, 0xB5, 0x00, 0x20, + 0x0A, 0xF0, 0xDE, 0xFA, 0x04, 0x28, 0x00, 0xD0, 0x08, 0xBD, 0xBD, 0xE8, + 0x08, 0x40, 0x01, 0x21, 0x00, 0x20, 0x0A, 0xF0, 0x2D, 0xBA, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x47, 0xDF, 0xF8, 0x78, 0xA0, 0xDA, 0xF8, 0x1C, 0x33, + 0x17, 0x46, 0x05, 0x46, 0x0E, 0x46, 0x98, 0x47, 0x04, 0x46, 0x60, 0xBB, + 0x96, 0xF8, 0x00, 0x90, 0x16, 0x4A, 0x95, 0xF8, 0x19, 0x80, 0xDA, 0xF8, + 0xB0, 0x31, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x09, 0x29, 0x41, 0x46, + 0x89, 0xF8, 0x5D, 0x02, 0xA9, 0xF8, 0x5E, 0x02, 0x30, 0x78, 0x98, 0x47, + 0x38, 0x70, 0xD9, 0xF8, 0x2C, 0x30, 0x2B, 0xB1, 0xDA, 0xF8, 0xB0, 0x21, + 0x93, 0xF8, 0x23, 0x00, 0x69, 0x7E, 0x90, 0x47, 0x0A, 0x49, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x11, 0x91, 0xF8, 0x62, 0x30, 0x43, 0xB9, + 0x33, 0x78, 0x81, 0xF8, 0x6C, 0x30, 0x6B, 0x7F, 0x81, 0xF8, 0x6D, 0x30, + 0xAB, 0x7F, 0x81, 0xF8, 0x6E, 0x30, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x7C, 0x4E, 0x7D, 0x4C, 0x4F, 0xF4, 0x1E, 0x77, + 0x07, 0xFB, 0x00, 0x67, 0x4F, 0xF0, 0x4F, 0x08, 0x46, 0x23, 0x18, 0xFB, + 0x00, 0x38, 0x97, 0xF8, 0x22, 0xB0, 0x85, 0xB0, 0x05, 0x46, 0x06, 0xEB, + 0xC8, 0x08, 0x4F, 0xF0, 0x00, 0x09, 0xD7, 0xF8, 0x08, 0x32, 0x5F, 0xFA, + 0x89, 0xFA, 0xA8, 0xF1, 0x28, 0x01, 0x4F, 0xF0, 0x80, 0x42, 0x09, 0xF1, + 0x01, 0x09, 0x50, 0x46, 0x13, 0xB1, 0xD4, 0xF8, 0x84, 0x33, 0x98, 0x47, + 0xD7, 0xF8, 0x30, 0x32, 0x41, 0x46, 0x08, 0x37, 0x08, 0xF1, 0x08, 0x08, + 0x4F, 0xF0, 0x80, 0x42, 0x50, 0x46, 0x13, 0xB1, 0xD4, 0xF8, 0x84, 0x33, + 0x98, 0x47, 0xB9, 0xF1, 0x05, 0x0F, 0xE0, 0xD1, 0x65, 0x4B, 0x4F, 0xF4, + 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x33, 0x93, 0xF8, 0x62, 0x10, 0xC1, 0xB9, + 0xFF, 0x22, 0x83, 0xF8, 0x6C, 0x20, 0xD4, 0xF8, 0xAC, 0x31, 0x28, 0x46, + 0x98, 0x47, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x66, 0xF3, 0x6A, + 0x23, 0xB1, 0x93, 0xF8, 0x23, 0x00, 0xD4, 0xF8, 0xAC, 0x31, 0x98, 0x47, + 0xD4, 0xF8, 0x24, 0x33, 0x28, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, + 0x18, 0x47, 0x4F, 0xF4, 0x1E, 0x78, 0x08, 0xFB, 0x05, 0x62, 0x92, 0xF8, + 0x24, 0x90, 0xB9, 0xF1, 0x01, 0x0F, 0x02, 0xD0, 0x02, 0x29, 0xED, 0xD0, + 0xDD, 0xE7, 0x93, 0xF8, 0xDE, 0x20, 0x01, 0x3A, 0xD2, 0xB2, 0x83, 0xF8, + 0xDE, 0x20, 0x00, 0x2A, 0xF4, 0xD1, 0x93, 0xF8, 0x63, 0xA0, 0x0A, 0xF1, + 0x0A, 0x0A, 0x5F, 0xFA, 0x8A, 0xFA, 0x08, 0xFB, 0x0A, 0xF3, 0x06, 0xEB, + 0x03, 0x08, 0x00, 0x93, 0x98, 0xF8, 0x24, 0x30, 0x73, 0xB9, 0x44, 0x4B, + 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x0B, 0x37, 0x38, 0x46, 0x97, 0xF8, + 0x63, 0x10, 0xE3, 0x68, 0x0A, 0x31, 0xC9, 0xB2, 0x98, 0x47, 0x97, 0xF8, + 0x62, 0x10, 0xD7, 0xE7, 0x02, 0x23, 0x0C, 0x21, 0x49, 0x20, 0x01, 0x92, + 0x09, 0xF0, 0x64, 0xFF, 0x01, 0x9A, 0x88, 0xF8, 0x24, 0x20, 0x80, 0xF8, + 0x00, 0xA0, 0x42, 0x70, 0x09, 0xF0, 0x8C, 0xFF, 0x98, 0xF8, 0x24, 0x30, + 0x00, 0x2B, 0xDE, 0xD1, 0x98, 0xF8, 0x23, 0x30, 0x09, 0x2B, 0xDA, 0xD8, + 0x98, 0xF8, 0x22, 0x00, 0x31, 0x4B, 0xCD, 0xF8, 0x04, 0x90, 0x9E, 0x22, + 0xA4, 0x21, 0x11, 0xFB, 0x00, 0x21, 0x2D, 0x4A, 0x03, 0x95, 0x07, 0xFB, + 0x00, 0x27, 0x2B, 0x48, 0x02, 0x97, 0x4F, 0xF0, 0x4F, 0x0C, 0x46, 0x27, + 0x1C, 0xFB, 0x0A, 0x77, 0x00, 0xEB, 0xC1, 0x0A, 0x00, 0x99, 0x28, 0x4A, + 0x02, 0x9D, 0xC1, 0x46, 0x88, 0x46, 0x06, 0xEB, 0xC7, 0x07, 0x98, 0x44, + 0xD9, 0xF8, 0x08, 0x12, 0x31, 0xB3, 0xEF, 0xF3, 0x10, 0x81, 0xCB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x21, 0x4B, 0x01, 0x99, 0x19, 0x60, 0x11, 0x68, + 0xA7, 0xF1, 0x28, 0x00, 0x4B, 0x1C, 0xAA, 0xF1, 0x28, 0x01, 0x13, 0x60, + 0x00, 0x90, 0x0A, 0xF0, 0xA1, 0xFC, 0xD9, 0xF8, 0x08, 0x12, 0xD9, 0xF8, + 0x0C, 0x32, 0x00, 0x98, 0xC5, 0xF8, 0xC8, 0x14, 0xC5, 0xF8, 0xCC, 0x34, + 0x0A, 0xF0, 0xA0, 0xFB, 0x14, 0x4A, 0x11, 0x68, 0x48, 0x1E, 0x29, 0xB1, + 0x13, 0x4B, 0x10, 0x60, 0x19, 0x68, 0x08, 0xB9, 0x01, 0xB1, 0x62, 0xB6, + 0xD9, 0xF8, 0x30, 0x32, 0x50, 0x46, 0x39, 0x46, 0x09, 0xF1, 0x08, 0x09, + 0x0A, 0xF1, 0x08, 0x0A, 0x08, 0x35, 0x2B, 0xB1, 0x0A, 0xF0, 0x80, 0xFC, + 0x38, 0x46, 0x0A, 0xF0, 0x87, 0xFB, 0x08, 0x4A, 0x08, 0x37, 0x47, 0x45, + 0xC2, 0xD1, 0x40, 0x20, 0x03, 0x9D, 0x0A, 0xF0, 0xE1, 0xFA, 0x7A, 0xE7, + 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0xC0, 0x67, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x10, 0xB5, 0x01, 0x23, 0x04, 0x46, 0x00, 0x22, 0x06, 0x21, 0x43, 0x20, + 0x09, 0xF0, 0xE0, 0xFE, 0x94, 0xF8, 0x63, 0x30, 0x03, 0x70, 0xBD, 0xE8, + 0x10, 0x40, 0x09, 0xF0, 0x09, 0xBF, 0x00, 0xBF, 0x70, 0xB5, 0x90, 0xF9, + 0x87, 0x30, 0x04, 0x46, 0x90, 0xF9, 0x86, 0x00, 0x94, 0xF8, 0x88, 0x20, + 0x94, 0xF8, 0x89, 0x60, 0x84, 0xF8, 0x86, 0x10, 0xBB, 0xB1, 0x0D, 0x46, + 0x52, 0xB2, 0xAE, 0xB9, 0x88, 0x42, 0x10, 0xDD, 0x9B, 0x1A, 0x99, 0x42, + 0x0D, 0xDA, 0x01, 0x26, 0x00, 0x22, 0x03, 0x23, 0x0C, 0x21, 0x57, 0x20, + 0x09, 0xF0, 0xBC, 0xFE, 0x94, 0xF8, 0x63, 0x20, 0x02, 0x70, 0x46, 0x70, + 0x85, 0x70, 0x09, 0xF0, 0xE5, 0xFE, 0x84, 0xF8, 0x89, 0x60, 0x70, 0xBD, + 0x01, 0x2E, 0xFA, 0xD1, 0x88, 0x42, 0xF8, 0xDA, 0x13, 0x44, 0x99, 0x42, + 0xF5, 0xDD, 0x00, 0x26, 0xE6, 0xE7, 0x00, 0xBF, 0x14, 0x4B, 0x93, 0xF9, + 0x00, 0x20, 0x22, 0xB3, 0x30, 0xB4, 0x9C, 0x78, 0x90, 0xF9, 0x86, 0x00, + 0x93, 0xF9, 0x01, 0x50, 0x6C, 0xB9, 0x88, 0x42, 0x08, 0xDD, 0x52, 0x1B, + 0x91, 0x42, 0x05, 0xDA, 0x0D, 0x49, 0x0A, 0x68, 0x42, 0xF4, 0x00, 0x72, + 0x0A, 0x60, 0x01, 0x24, 0x9C, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x01, 0x2C, + 0xFA, 0xD1, 0x88, 0x42, 0xF8, 0xDA, 0x2A, 0x44, 0x91, 0x42, 0xF5, 0xDD, + 0x05, 0x49, 0x0A, 0x68, 0x00, 0x24, 0x22, 0xF4, 0x00, 0x72, 0x0A, 0x60, + 0x9C, 0x70, 0x30, 0xBC, 0x70, 0x47, 0x70, 0x47, 0xA4, 0x1F, 0x17, 0x00, + 0xB0, 0xB3, 0x33, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x0C, 0x46, 0x06, 0x46, + 0x80, 0x68, 0x91, 0xF8, 0x8B, 0x10, 0xD0, 0xF8, 0x08, 0x80, 0x60, 0x6F, + 0xB6, 0xF8, 0x1C, 0xB0, 0xDF, 0xF8, 0x1C, 0xA1, 0x87, 0xB0, 0x00, 0x25, + 0x05, 0x90, 0x03, 0x92, 0x1F, 0x46, 0x84, 0xF8, 0x78, 0x50, 0x49, 0xB1, + 0x94, 0xF8, 0x63, 0x00, 0xDA, 0xF8, 0xC0, 0x31, 0x01, 0x21, 0x98, 0x47, + 0xA4, 0xF8, 0x8A, 0x50, 0x84, 0xF8, 0x8C, 0x50, 0x3A, 0x4B, 0x3B, 0x4D, + 0x1B, 0x68, 0x22, 0x6F, 0x5B, 0x68, 0x01, 0x21, 0x84, 0xF8, 0x85, 0x10, + 0x29, 0x69, 0x5B, 0x1A, 0xD3, 0x42, 0x58, 0xD4, 0x96, 0xF9, 0x2D, 0x10, + 0x04, 0x91, 0xE8, 0xF7, 0x35, 0xFB, 0x34, 0x4B, 0x04, 0x99, 0x5B, 0x7C, + 0x01, 0x2B, 0x59, 0xD0, 0xDA, 0xF8, 0x9C, 0x31, 0x20, 0x46, 0xAB, 0xF1, + 0x24, 0x05, 0x98, 0x47, 0xAD, 0xB2, 0x00, 0x22, 0x04, 0x21, 0x08, 0xF1, + 0x20, 0x00, 0x0A, 0xF0, 0x19, 0xFC, 0x00, 0x23, 0x01, 0x2D, 0x3B, 0x60, + 0x08, 0xF1, 0x24, 0x02, 0x22, 0xD9, 0x04, 0x96, 0x3E, 0x46, 0x27, 0x46, + 0x2C, 0x46, 0x09, 0xE0, 0x32, 0x60, 0xC9, 0xF5, 0x7F, 0x42, 0xFE, 0x32, + 0x14, 0x44, 0xA4, 0xB2, 0x01, 0x2C, 0x05, 0xEB, 0x09, 0x02, 0x10, 0xD9, + 0x92, 0xF8, 0x01, 0x90, 0x15, 0x46, 0x09, 0xF1, 0x01, 0x0C, 0xA4, 0x45, + 0x15, 0xF8, 0x02, 0x1B, 0x07, 0xDA, 0x05, 0x29, 0xEA, 0xD0, 0x02, 0x46, + 0x49, 0x46, 0x28, 0x46, 0x0A, 0xF0, 0xF4, 0xFB, 0xE5, 0xE7, 0x3C, 0x46, + 0x37, 0x46, 0x04, 0x9E, 0x60, 0x67, 0x3B, 0x68, 0x01, 0x93, 0x03, 0x9B, + 0x00, 0x93, 0x32, 0x46, 0x59, 0x46, 0x40, 0x46, 0x23, 0x46, 0xDA, 0xF8, + 0xD0, 0x51, 0xA8, 0x47, 0x04, 0x20, 0x0A, 0xF0, 0xA1, 0xF8, 0x01, 0x28, + 0x04, 0xD0, 0x60, 0x6F, 0x05, 0x9B, 0xC0, 0x1A, 0x18, 0xBF, 0x01, 0x20, + 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x22, 0x94, 0xF8, 0x6C, 0x00, + 0x11, 0x46, 0xF7, 0xF7, 0x75, 0xF9, 0x00, 0x28, 0x9E, 0xD1, 0x2B, 0x69, + 0x23, 0x67, 0x9B, 0xE7, 0x20, 0x46, 0xFF, 0xF7, 0x3F, 0xFF, 0x04, 0x99, + 0xA0, 0xE7, 0x00, 0xBF, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x00, 0x22, + 0x05, 0x46, 0x0C, 0x46, 0x02, 0x23, 0x0C, 0x21, 0x59, 0x20, 0x09, 0xF0, + 0xD3, 0xFD, 0x05, 0x70, 0x44, 0x70, 0xBD, 0xE8, 0x38, 0x40, 0x09, 0xF0, + 0xFD, 0xBD, 0x00, 0xBF, 0x08, 0xB5, 0x03, 0x4B, 0x08, 0x46, 0xD3, 0xF8, + 0x74, 0x31, 0x98, 0x47, 0x01, 0x20, 0x08, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x08, 0xB5, 0x04, 0x4A, 0x08, 0x78, 0xD2, 0xF8, 0x5C, 0x22, 0x19, 0x46, + 0x90, 0x47, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0xF8, 0xB5, 0x0E, 0x46, 0x2F, 0x20, 0x19, 0x46, 0x02, 0x23, 0x34, 0x78, + 0x09, 0xF0, 0xAE, 0xFD, 0x0D, 0x49, 0x76, 0x78, 0x0D, 0x4B, 0x4F, 0xF4, + 0xA4, 0x67, 0x05, 0x46, 0x07, 0xFB, 0x04, 0x10, 0x29, 0x46, 0x90, 0xF8, + 0x65, 0x20, 0x80, 0xF8, 0x66, 0x60, 0x01, 0xF8, 0x01, 0x2F, 0x7F, 0x22, + 0xD3, 0xF8, 0x40, 0x33, 0x80, 0xF8, 0x65, 0x20, 0x2A, 0x46, 0x98, 0x47, + 0x28, 0x46, 0x09, 0xF0, 0xC5, 0xFD, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x46, 0x38, 0xB5, + 0x0D, 0x46, 0x03, 0x23, 0x01, 0x46, 0x0B, 0x20, 0x09, 0xF0, 0x86, 0xFD, + 0x06, 0x4B, 0x04, 0x46, 0xD3, 0xF8, 0xC4, 0x31, 0xA2, 0x1C, 0x61, 0x1C, + 0x28, 0x46, 0x98, 0x47, 0x20, 0x70, 0x20, 0x46, 0x09, 0xF0, 0xAA, 0xFD, + 0x00, 0x20, 0x38, 0xBD, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x0E, 0x4E, + 0x0D, 0x46, 0x1C, 0x46, 0x19, 0x46, 0x28, 0x46, 0xD6, 0xF8, 0x80, 0x30, + 0x17, 0x46, 0x98, 0x47, 0x0C, 0xB9, 0x00, 0x20, 0xF8, 0xBD, 0x06, 0x46, + 0x3A, 0x46, 0x21, 0x46, 0x03, 0x23, 0x47, 0x20, 0x09, 0xF0, 0x62, 0xFD, + 0x2A, 0x78, 0x02, 0x70, 0x04, 0x22, 0x46, 0x70, 0x82, 0x70, 0x09, 0xF0, + 0x8B, 0xFD, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x38, 0xB5, 0x0C, 0x46, 0x76, 0x20, 0x19, 0x46, 0x0C, 0x23, 0x09, 0xF0, + 0x4F, 0xFD, 0x23, 0x78, 0x0C, 0x4A, 0x0D, 0x4C, 0x4F, 0xF4, 0x1E, 0x71, + 0x01, 0xFB, 0x03, 0x23, 0x4F, 0xF4, 0xA4, 0x65, 0x93, 0xF8, 0x22, 0x20, + 0xD3, 0xF8, 0x48, 0x11, 0x05, 0xFB, 0x02, 0x42, 0x49, 0x69, 0x92, 0xF8, + 0x86, 0x20, 0x02, 0x72, 0x00, 0x24, 0xC0, 0xE9, 0x00, 0x14, 0x09, 0xF0, + 0x67, 0xFD, 0x20, 0x46, 0x38, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0xF0, 0xB5, 0x00, 0x22, 0x0D, 0x46, 0x85, 0xB0, + 0x01, 0x23, 0x0C, 0x21, 0x53, 0x20, 0x09, 0xF0, 0x27, 0xFD, 0x01, 0x22, + 0x02, 0x70, 0x04, 0x46, 0x28, 0x78, 0x04, 0x28, 0x28, 0xD8, 0x1D, 0x4B, + 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC0, 0x34, + 0x03, 0xB3, 0xAB, 0x78, 0x23, 0xB3, 0x19, 0x4A, 0x19, 0x49, 0x16, 0x68, + 0x09, 0x69, 0x17, 0x68, 0xB0, 0xF8, 0xD2, 0x20, 0xC9, 0x1B, 0x92, 0x02, + 0xEF, 0x68, 0xB6, 0xFB, 0xF2, 0xF6, 0x06, 0xFB, 0x02, 0x22, 0x14, 0x4E, + 0x39, 0x44, 0x6F, 0x68, 0xD6, 0xF8, 0x04, 0x62, 0x01, 0x97, 0x0A, 0x44, + 0xA9, 0x68, 0x00, 0x91, 0x02, 0x92, 0xEA, 0x78, 0x00, 0x21, 0xB0, 0x47, + 0xFF, 0x28, 0x01, 0xD0, 0x00, 0x23, 0x23, 0x70, 0x20, 0x46, 0x09, 0xF0, + 0x25, 0xFD, 0x00, 0x20, 0x05, 0xB0, 0xF0, 0xBD, 0x08, 0x4B, 0x69, 0x78, + 0xD3, 0xF8, 0x08, 0x32, 0x98, 0x47, 0x20, 0x70, 0x20, 0x46, 0x09, 0xF0, + 0x19, 0xFD, 0x00, 0x20, 0x05, 0xB0, 0xF0, 0xBD, 0x18, 0x88, 0x17, 0x00, + 0xA4, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x38, 0xB5, 0x19, 0x46, 0x05, 0x20, 0x1C, 0x23, 0x09, 0xF0, 0xD8, 0xFC, + 0x2C, 0x4D, 0x2D, 0x4B, 0x03, 0x60, 0x2A, 0x68, 0x2C, 0x4B, 0x42, 0x60, + 0x1B, 0x68, 0x83, 0x60, 0x0A, 0x22, 0x04, 0x23, 0x83, 0x76, 0x02, 0x83, + 0x04, 0x46, 0x00, 0xF1, 0x10, 0x01, 0x0C, 0x30, 0xE8, 0xF7, 0x9E, 0xF8, + 0x26, 0x4B, 0x63, 0x61, 0x2B, 0x68, 0x98, 0x03, 0x24, 0xD4, 0x21, 0x4B, + 0x1B, 0x68, 0x99, 0x03, 0x2C, 0xD4, 0x1F, 0x4B, 0x1B, 0x68, 0x9A, 0x04, + 0x03, 0xD5, 0x63, 0x69, 0x43, 0xF4, 0x00, 0x23, 0x63, 0x61, 0xE8, 0xF7, + 0x2F, 0xF9, 0x18, 0xB1, 0x63, 0x69, 0x43, 0xF4, 0x80, 0x33, 0x63, 0x61, + 0x17, 0x4B, 0x1B, 0x68, 0x1B, 0x04, 0x22, 0xD4, 0xE8, 0xF7, 0x2E, 0xF9, + 0x63, 0x69, 0x08, 0xB1, 0x43, 0xF0, 0x80, 0x63, 0x43, 0xF0, 0x40, 0x53, + 0x20, 0x46, 0x63, 0x61, 0x09, 0xF0, 0xCE, 0xFC, 0x00, 0x20, 0x38, 0xBD, + 0xE8, 0xF7, 0x3E, 0xF9, 0x00, 0x28, 0xD6, 0xD0, 0x63, 0x69, 0x43, 0xF4, + 0x00, 0x33, 0x63, 0x61, 0x0A, 0x4B, 0x1B, 0x68, 0x99, 0x03, 0xD2, 0xD5, + 0xE8, 0xF7, 0x3A, 0xF9, 0x00, 0x28, 0xCE, 0xD0, 0x63, 0x69, 0x43, 0xF4, + 0x00, 0x13, 0x63, 0x61, 0xC9, 0xE7, 0xE8, 0xF7, 0x03, 0xF9, 0x00, 0x28, + 0xD8, 0xD0, 0x63, 0x69, 0x43, 0xF0, 0x80, 0x43, 0x63, 0x61, 0xD3, 0xE7, + 0x04, 0x00, 0x32, 0x40, 0x01, 0x03, 0x04, 0x06, 0x08, 0x00, 0x32, 0x40, + 0x5F, 0xFA, 0x10, 0x00, 0xF0, 0xB5, 0x23, 0x48, 0x4D, 0x79, 0x00, 0x68, + 0x8C, 0x79, 0x50, 0xF8, 0x25, 0xC0, 0x21, 0x4F, 0x0E, 0x68, 0x4F, 0xF4, + 0xA4, 0x70, 0x00, 0xFB, 0x04, 0x50, 0x02, 0x30, 0x83, 0xB0, 0x47, 0xF8, + 0x20, 0x60, 0x19, 0x46, 0xBC, 0xF1, 0x00, 0x0F, 0x0A, 0xD0, 0xCC, 0xF3, + 0x0B, 0x03, 0x1B, 0xBB, 0x2C, 0xF4, 0x7F, 0x6C, 0x2C, 0xF0, 0x0F, 0x0C, + 0xC6, 0xF3, 0x0B, 0x06, 0x4C, 0xEA, 0x06, 0x06, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x04, 0x74, 0x94, 0xF8, 0x64, 0x30, 0x73, 0xB1, 0x01, 0x2D, + 0x1A, 0xD0, 0x02, 0x2D, 0x12, 0xD0, 0xA5, 0xB1, 0x0F, 0x4B, 0x1E, 0x60, + 0x0F, 0x4B, 0xD3, 0xF8, 0xA0, 0x31, 0xCD, 0xE9, 0x00, 0x21, 0x98, 0x47, + 0xDD, 0xE9, 0x00, 0x21, 0x1B, 0x20, 0x09, 0xF0, 0xA5, 0xFC, 0x00, 0x20, + 0x03, 0xB0, 0xF0, 0xBD, 0x66, 0x46, 0xE1, 0xE7, 0x08, 0x4B, 0x1E, 0x60, + 0xEC, 0xE7, 0x08, 0x4B, 0x1E, 0x60, 0xE9, 0xE7, 0x07, 0x4B, 0x1E, 0x60, + 0xE6, 0xE7, 0x00, 0xBF, 0xAC, 0x35, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x0C, 0x02, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x08, 0x02, 0x32, 0x40, + 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x38, 0xB5, 0x07, 0x48, + 0x8C, 0x78, 0x0D, 0x88, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x04, 0x04, + 0x19, 0x46, 0x70, 0x20, 0xA4, 0xF8, 0xBE, 0x54, 0x09, 0xF0, 0x7A, 0xFC, + 0x00, 0x20, 0x38, 0xBD, 0x18, 0x88, 0x17, 0x00, 0x10, 0xB5, 0x08, 0x4C, + 0x08, 0x78, 0xD4, 0xF8, 0xC8, 0x41, 0x82, 0xB0, 0x01, 0x92, 0x00, 0x93, + 0xA0, 0x47, 0xDD, 0xE9, 0x00, 0x12, 0x0D, 0x20, 0x09, 0xF0, 0x68, 0xFC, + 0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x10, 0xB5, 0x07, 0x4C, 0x08, 0x78, 0x64, 0x6D, 0x82, 0xB0, 0x01, 0x92, + 0x00, 0x93, 0xA0, 0x47, 0xDD, 0xE9, 0x00, 0x12, 0x3A, 0x20, 0x09, 0xF0, + 0x55, 0xFC, 0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0xB5, 0x0C, 0x78, 0x08, 0x46, 0x19, 0x46, 0x24, 0xB1, 0x25, 0x4B, + 0x93, 0xF8, 0xA9, 0x30, 0x00, 0x2B, 0x36, 0xD1, 0x23, 0x4B, 0x24, 0x4E, + 0x24, 0x4D, 0x00, 0x24, 0x1C, 0x70, 0x34, 0x68, 0x24, 0xF0, 0x00, 0x74, + 0x34, 0x60, 0x6C, 0x6F, 0x24, 0xF0, 0x10, 0x04, 0x6C, 0x67, 0x1E, 0x4D, + 0x2C, 0x68, 0x24, 0xF4, 0x00, 0x64, 0x2C, 0x60, 0xC4, 0x78, 0x9C, 0x70, + 0x84, 0x78, 0x00, 0x25, 0x5D, 0x70, 0xC4, 0xB1, 0x1A, 0x4C, 0x23, 0x68, + 0x43, 0xF0, 0x00, 0x43, 0x23, 0x60, 0x03, 0x79, 0x63, 0xB1, 0x18, 0x4C, + 0x85, 0x68, 0x18, 0x4B, 0x25, 0x60, 0x1C, 0x68, 0xC4, 0xF3, 0x13, 0x04, + 0x1C, 0x60, 0xC4, 0x68, 0x18, 0x68, 0x40, 0xEA, 0x04, 0x50, 0x18, 0x60, + 0x66, 0x20, 0x09, 0xF0, 0x17, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x0E, 0x4C, + 0x23, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x23, 0x60, 0xE5, 0xE7, 0x08, 0x4B, + 0x08, 0x4E, 0x09, 0x4D, 0x01, 0x24, 0x1C, 0x70, 0x34, 0x68, 0x44, 0xF0, + 0x00, 0x74, 0x34, 0x60, 0x6C, 0x6F, 0x44, 0xF0, 0x10, 0x04, 0x6C, 0x67, + 0xC7, 0xE7, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, + 0xE0, 0x50, 0x34, 0x40, 0x00, 0x00, 0x50, 0x40, 0x48, 0x30, 0x34, 0x40, + 0xF4, 0x00, 0x60, 0x40, 0xF8, 0x00, 0x60, 0x40, 0x70, 0xB5, 0x08, 0x46, + 0x07, 0x4C, 0x09, 0x68, 0x46, 0x68, 0x05, 0x89, 0xC4, 0xF8, 0xBD, 0x10, + 0x78, 0x20, 0x19, 0x46, 0xC4, 0xF8, 0xC1, 0x60, 0xA4, 0xF8, 0xC5, 0x50, + 0x09, 0xF0, 0xE2, 0xFB, 0x00, 0x20, 0x70, 0xBD, 0x2C, 0x19, 0x17, 0x00, + 0x38, 0xB5, 0x08, 0x46, 0x0E, 0x49, 0x44, 0x78, 0x0C, 0x70, 0x84, 0x78, + 0x4C, 0x70, 0xC4, 0x78, 0x8C, 0x70, 0x0C, 0x4C, 0x05, 0x79, 0x41, 0x79, + 0x61, 0x70, 0x25, 0x70, 0xC1, 0x79, 0x85, 0x79, 0xA5, 0x70, 0xE1, 0x70, + 0x08, 0x4C, 0x41, 0x68, 0x05, 0x68, 0xC4, 0xF8, 0xCB, 0x10, 0x7A, 0x20, + 0x19, 0x46, 0xC4, 0xF8, 0xC7, 0x50, 0x09, 0xF0, 0xC1, 0xFB, 0x00, 0x20, + 0x38, 0xBD, 0x00, 0xBF, 0x68, 0x25, 0x17, 0x00, 0x6C, 0x25, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x48, 0x09, 0x68, 0x01, 0x60, + 0x19, 0x46, 0x72, 0x20, 0x09, 0xF0, 0xB0, 0xFB, 0x00, 0x20, 0x08, 0xBD, + 0x34, 0x00, 0x32, 0x40, 0x30, 0xB5, 0x19, 0x46, 0x83, 0xB0, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x16, 0x4B, 0x01, 0x20, + 0x18, 0x60, 0x16, 0x4C, 0x16, 0x4D, 0x23, 0x68, 0x01, 0x33, 0xCD, 0xE9, + 0x00, 0x21, 0x23, 0x60, 0x08, 0xF0, 0x12, 0xFA, 0xE7, 0xF7, 0x96, 0xFF, + 0x09, 0xF0, 0x02, 0xFB, 0x0E, 0xF0, 0x22, 0xF8, 0xD5, 0xF8, 0x10, 0x34, + 0x98, 0x47, 0xD5, 0xF8, 0xA8, 0x31, 0x98, 0x47, 0x23, 0x68, 0xDD, 0xE9, + 0x00, 0x21, 0x33, 0xB1, 0x08, 0x48, 0x01, 0x3B, 0x00, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x00, 0xB1, 0x62, 0xB6, 0x01, 0x20, 0x09, 0xF0, 0x7E, 0xFB, + 0x00, 0x21, 0x08, 0x46, 0x09, 0xF0, 0x0C, 0xFD, 0x00, 0x20, 0x03, 0xB0, + 0x30, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x18, 0x46, 0x21, 0x4E, 0x02, 0x23, + 0x0D, 0x46, 0x01, 0x46, 0x25, 0x20, 0x09, 0xF0, 0xFF, 0xFA, 0x33, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x0C, 0xDB, 0x1C, 0x4B, + 0x28, 0x46, 0xD3, 0xF8, 0xB8, 0x31, 0x98, 0x47, 0x00, 0x25, 0x60, 0x70, + 0x25, 0x70, 0x20, 0x46, 0x09, 0xF0, 0x1E, 0xFB, 0x28, 0x46, 0x70, 0xBD, + 0x2B, 0x78, 0x05, 0x2B, 0x19, 0xD8, 0x2B, 0x79, 0x20, 0x2B, 0x0A, 0xD8, + 0x95, 0xF8, 0x28, 0x30, 0x05, 0x2B, 0xE8, 0xD9, 0x11, 0x49, 0x12, 0x48, + 0x40, 0xF2, 0xFB, 0x62, 0x0B, 0xF0, 0xBE, 0xFB, 0xE1, 0xE7, 0x0E, 0x49, + 0x0F, 0x48, 0x4F, 0xF4, 0xDF, 0x62, 0x0B, 0xF0, 0xB7, 0xFB, 0x33, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE9, 0xDB, 0xD5, 0xE7, 0x08, 0x49, + 0x0A, 0x48, 0x40, 0xF2, 0xF2, 0x62, 0x0B, 0xF0, 0xAB, 0xFB, 0x33, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDA, 0xDB, 0xC9, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xE4, 0x9B, 0x15, 0x00, 0xBC, 0x9B, 0x15, 0x00, 0x90, 0x9B, 0x15, 0x00, + 0x11, 0x48, 0x00, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x00, 0x28, 0x70, 0xB5, + 0x0C, 0x46, 0x16, 0x46, 0x1D, 0x46, 0x0B, 0xDB, 0x20, 0x78, 0x0D, 0x4B, + 0xD3, 0xF8, 0xB4, 0x31, 0x98, 0x47, 0x32, 0x46, 0x29, 0x46, 0x27, 0x20, + 0x09, 0xF0, 0x0A, 0xFB, 0x00, 0x20, 0x70, 0xBD, 0x08, 0x4B, 0x08, 0x78, + 0x1B, 0x68, 0x1B, 0x0E, 0x09, 0x33, 0x98, 0x42, 0xED, 0xDD, 0x06, 0x49, + 0x06, 0x48, 0x40, 0xF2, 0x22, 0x72, 0x0B, 0xF0, 0x75, 0xFB, 0xE5, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xD8, 0x00, 0x32, 0x40, + 0x70, 0x79, 0x15, 0x00, 0x14, 0x9C, 0x15, 0x00, 0x16, 0x48, 0x2D, 0xE9, + 0xF0, 0x41, 0x00, 0x68, 0x15, 0x4F, 0x0C, 0x46, 0xB0, 0xF9, 0x00, 0x10, + 0x25, 0x78, 0x00, 0x29, 0x16, 0x46, 0x98, 0x46, 0x11, 0xDB, 0x4F, 0xF4, + 0xA4, 0x60, 0x00, 0xFB, 0x05, 0x70, 0x62, 0x88, 0xA0, 0xF8, 0x68, 0x20, + 0x23, 0x79, 0x80, 0xF8, 0x6A, 0x30, 0x32, 0x46, 0x41, 0x46, 0x4C, 0x20, + 0x09, 0xF0, 0xD4, 0xFA, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x05, 0x72, 0x92, 0xF8, 0x62, 0x20, 0x00, 0x2A, + 0xE5, 0xD0, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF6, 0x5B, 0x22, 0x0B, 0xF0, + 0x3D, 0xFB, 0xDE, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, 0x13, 0x4B, 0x70, 0xB5, + 0x1B, 0x68, 0x0C, 0x78, 0xB3, 0xF9, 0x00, 0x30, 0x11, 0x4E, 0x00, 0x2B, + 0x0D, 0x46, 0x0D, 0xDB, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x63, + 0x6A, 0x78, 0x83, 0xF8, 0x87, 0x20, 0xAA, 0x78, 0x83, 0xF8, 0x88, 0x20, + 0x00, 0x20, 0x83, 0xF8, 0x89, 0x00, 0x70, 0xBD, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x04, 0x63, 0x93, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xE9, 0xD0, + 0x05, 0x49, 0x06, 0x48, 0x40, 0xF6, 0x78, 0x52, 0x0B, 0xF0, 0x0E, 0xFB, + 0xE2, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, 0x20, 0x48, 0x2D, 0xE9, + 0xF0, 0x41, 0x00, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x00, 0x28, 0x84, 0xB0, + 0x0E, 0x46, 0x15, 0x46, 0x98, 0x46, 0x29, 0xDB, 0x30, 0x46, 0xE7, 0xF7, + 0xAB, 0xFD, 0x00, 0x24, 0x19, 0x4F, 0x00, 0x94, 0x40, 0xF6, 0xB4, 0x13, + 0x21, 0x46, 0x1A, 0x46, 0x20, 0x46, 0xCD, 0xE9, 0x01, 0x44, 0xE7, 0xF7, + 0xEB, 0xFD, 0xD7, 0xF8, 0x3C, 0x33, 0x0F, 0x20, 0x98, 0x47, 0x13, 0x4B, + 0xB6, 0xF8, 0x44, 0x20, 0x9A, 0x83, 0x41, 0x46, 0x2A, 0x46, 0x03, 0x20, + 0x09, 0xF0, 0x62, 0xFA, 0xD7, 0xF8, 0x60, 0x31, 0x98, 0x47, 0xD7, 0xF8, + 0xE0, 0x30, 0x98, 0x47, 0x28, 0x46, 0x02, 0x21, 0x09, 0xF0, 0xEA, 0xFB, + 0x20, 0x46, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x10, 0x46, 0x09, 0xF0, + 0x8B, 0xFC, 0x00, 0x28, 0xD0, 0xD0, 0x06, 0x49, 0x06, 0x48, 0x4F, 0xF4, + 0xA7, 0x72, 0x0B, 0xF0, 0xC3, 0xFA, 0xC9, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x58, 0x9C, 0x15, 0x00, 0x70, 0xB5, 0x0C, 0x46, 0x49, 0x78, 0x16, 0x46, + 0x1D, 0x46, 0xE1, 0xB1, 0x01, 0x29, 0x63, 0x88, 0x3C, 0xD0, 0x02, 0x29, + 0x32, 0xD0, 0x03, 0x29, 0x0C, 0xBF, 0x20, 0x48, 0x20, 0x48, 0xA2, 0x88, + 0x18, 0x44, 0x04, 0xF1, 0x08, 0x01, 0x1D, 0xF0, 0x49, 0xFD, 0xE3, 0x88, + 0x23, 0xB1, 0x1D, 0x4B, 0x20, 0x78, 0xD3, 0xF8, 0x80, 0x34, 0x98, 0x47, + 0x32, 0x46, 0x29, 0x46, 0x68, 0x20, 0x09, 0xF0, 0x1D, 0xFA, 0x00, 0x20, + 0x70, 0xBD, 0x04, 0xF1, 0x08, 0x01, 0x4F, 0xF4, 0x40, 0x72, 0x16, 0x48, + 0x1D, 0xF0, 0x34, 0xFD, 0x04, 0xF5, 0x42, 0x71, 0x4F, 0xF4, 0x00, 0x72, + 0x13, 0x48, 0x1D, 0xF0, 0x2D, 0xFD, 0x04, 0xF5, 0xA1, 0x61, 0x80, 0x22, + 0x0C, 0x48, 0x1D, 0xF0, 0x27, 0xFD, 0x40, 0x22, 0x04, 0xF5, 0xB1, 0x61, + 0x0A, 0x48, 0x1D, 0xF0, 0x21, 0xFD, 0xD6, 0xE7, 0x0B, 0x48, 0xA2, 0x88, + 0x18, 0x44, 0x04, 0xF1, 0x08, 0x01, 0x1D, 0xF0, 0x19, 0xFD, 0xCE, 0xE7, + 0x06, 0x48, 0xA2, 0x88, 0x18, 0x44, 0x04, 0xF1, 0x08, 0x01, 0x1D, 0xF0, + 0x11, 0xFD, 0xC6, 0xE7, 0x1C, 0x18, 0x17, 0x00, 0x9C, 0x18, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x13, 0x17, 0x00, 0x1C, 0x16, 0x17, 0x00, + 0x38, 0xB5, 0x19, 0x46, 0x81, 0x20, 0x40, 0x23, 0x09, 0xF0, 0x78, 0xF9, + 0x00, 0x25, 0x04, 0x46, 0x08, 0x49, 0x00, 0xF8, 0x01, 0x5B, 0x24, 0x22, + 0x1D, 0xF0, 0xF8, 0xFC, 0x23, 0x78, 0x24, 0x33, 0xDB, 0xB2, 0xE2, 0x18, + 0x23, 0x70, 0x20, 0x46, 0x55, 0x70, 0x09, 0xF0, 0x97, 0xF9, 0x28, 0x46, + 0x38, 0xBD, 0x00, 0xBF, 0xDC, 0xD1, 0x15, 0x00, 0x10, 0xB5, 0x82, 0xB0, + 0x08, 0x46, 0x1C, 0x46, 0x01, 0x92, 0xFA, 0xF7, 0x83, 0xFA, 0x06, 0x49, + 0x4F, 0xF4, 0x80, 0x70, 0x0B, 0xF0, 0x0E, 0xF8, 0x01, 0x9A, 0x21, 0x46, + 0x6C, 0x20, 0x09, 0xF0, 0xB9, 0xF9, 0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, + 0x7C, 0x9C, 0x15, 0x00, 0x25, 0x48, 0x2D, 0xE9, 0xF8, 0x43, 0x00, 0x68, + 0xDF, 0xF8, 0xA0, 0x90, 0x0C, 0x46, 0xB0, 0xF9, 0x00, 0x10, 0x65, 0x79, + 0x00, 0x29, 0x17, 0x46, 0x1E, 0x46, 0x2D, 0xDB, 0x4F, 0xF4, 0xA4, 0x60, + 0x00, 0xFB, 0x05, 0xF0, 0x09, 0xEB, 0x00, 0x08, 0x21, 0x79, 0x98, 0xF8, + 0xAC, 0x20, 0x23, 0x68, 0xC8, 0xF8, 0xC4, 0x34, 0x01, 0x2A, 0x88, 0xF8, + 0xC3, 0x14, 0x0A, 0xD1, 0x17, 0x4B, 0xB0, 0x30, 0xD3, 0xF8, 0xD8, 0x31, + 0x48, 0x44, 0x98, 0x47, 0x00, 0x22, 0xD8, 0xF8, 0xC4, 0x34, 0x88, 0xF8, + 0xAC, 0x20, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x05, 0x95, 0x11, 0x49, + 0x95, 0xF8, 0xC3, 0x24, 0x4F, 0xF4, 0x80, 0x70, 0x0A, 0xF0, 0xD0, 0xFF, + 0x3A, 0x46, 0x31, 0x46, 0x62, 0x20, 0x09, 0xF0, 0x7B, 0xF9, 0x00, 0x20, + 0xBD, 0xE8, 0xF8, 0x83, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x05, 0x93, + 0x93, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xC9, 0xD0, 0x06, 0x49, 0x07, 0x48, + 0x4F, 0xF4, 0x27, 0x62, 0x0B, 0xF0, 0xE4, 0xF9, 0xC2, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x8C, 0x9C, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x00, 0xB5, 0x83, 0xB0, 0x08, 0x46, 0x01, 0x92, 0x00, 0x93, 0xFA, 0xF7, + 0x45, 0xFA, 0xDD, 0xE9, 0x00, 0x12, 0x6E, 0x20, 0x09, 0xF0, 0x50, 0xF9, + 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0xF0, 0xB5, 0x0C, 0x46, + 0x0E, 0x78, 0x60, 0x78, 0x89, 0x78, 0x83, 0xB0, 0x1D, 0x46, 0x01, 0x92, + 0x9E, 0xB9, 0xFE, 0xF7, 0xD5, 0xFE, 0x01, 0x9A, 0x00, 0xBB, 0x03, 0x26, + 0x29, 0x46, 0x03, 0x23, 0x2B, 0x20, 0x09, 0xF0, 0xD1, 0xF8, 0x62, 0x78, + 0x02, 0x70, 0xA2, 0x78, 0x42, 0x70, 0x86, 0x70, 0x09, 0xF0, 0xFA, 0xF8, + 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0xFE, 0xF7, 0xD1, 0xFE, 0x01, 0x9A, + 0x00, 0x28, 0xEA, 0xD0, 0x60, 0x78, 0x14, 0x4B, 0xA1, 0x78, 0x4F, 0xF4, + 0x1E, 0x76, 0x06, 0xFB, 0x00, 0x30, 0x15, 0xF0, 0x9D, 0xFC, 0x02, 0x26, + 0x01, 0x9A, 0xDF, 0xE7, 0x61, 0x78, 0x94, 0xF8, 0x02, 0xC0, 0x0D, 0x48, + 0x0D, 0x4F, 0x01, 0xEB, 0x81, 0x03, 0xC1, 0xEB, 0x03, 0x13, 0x63, 0x44, + 0x00, 0xEB, 0xC3, 0x03, 0x4F, 0xF0, 0x9E, 0x0E, 0x93, 0xF8, 0xA5, 0x31, + 0x0E, 0xFB, 0x01, 0xC1, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x81, 0x01, + 0x07, 0xEB, 0xC3, 0x03, 0x81, 0xF8, 0x5A, 0x61, 0x1E, 0x81, 0x02, 0x26, + 0xC2, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0x08, 0xB5, 0x08, 0x46, 0x02, 0xF0, 0x0C, 0xFA, 0x01, 0x20, 0x08, 0xBD, + 0x70, 0xB5, 0x48, 0x78, 0xFF, 0x28, 0x0C, 0x46, 0x16, 0x46, 0x1D, 0x46, + 0x01, 0xD0, 0x17, 0xF0, 0xB3, 0xF9, 0x21, 0x78, 0xA0, 0x78, 0x0A, 0x4B, + 0x0A, 0x4A, 0x00, 0x39, 0x18, 0xBF, 0x01, 0x21, 0x00, 0x38, 0x18, 0xBF, + 0x01, 0x20, 0x18, 0x70, 0x11, 0x70, 0x02, 0x46, 0x06, 0x48, 0x0A, 0xF0, + 0xDD, 0xFE, 0x32, 0x46, 0x29, 0x46, 0x64, 0x20, 0x09, 0xF0, 0xD8, 0xF8, + 0x00, 0x20, 0x70, 0xBD, 0xB9, 0x34, 0x17, 0x00, 0xB8, 0x34, 0x17, 0x00, + 0x9C, 0x9C, 0x15, 0x00, 0xF8, 0xB5, 0x19, 0x46, 0x74, 0x20, 0x06, 0x23, + 0x09, 0xF0, 0x62, 0xF8, 0x4F, 0xF4, 0xD2, 0x77, 0x04, 0x46, 0x3B, 0x68, + 0x08, 0x20, 0x98, 0x47, 0x3B, 0x68, 0x06, 0x46, 0x09, 0x20, 0x98, 0x47, + 0x36, 0x0C, 0x36, 0x04, 0x56, 0xEA, 0x00, 0x03, 0x1A, 0xD1, 0x3B, 0x68, + 0x07, 0x20, 0x98, 0x47, 0x3B, 0x68, 0x05, 0x46, 0x08, 0x20, 0x98, 0x47, + 0x83, 0xB2, 0x19, 0x0A, 0x28, 0x0A, 0x2A, 0x0C, 0x63, 0x70, 0x2B, 0x0E, + 0x21, 0x70, 0x20, 0x71, 0xE2, 0x70, 0xA3, 0x70, 0xEA, 0xB2, 0x07, 0x48, + 0x65, 0x71, 0x0A, 0xF0, 0xA5, 0xFE, 0x20, 0x46, 0x09, 0xF0, 0x6A, 0xF8, + 0x00, 0x20, 0xF8, 0xBD, 0x05, 0x04, 0x45, 0xEA, 0x16, 0x45, 0x03, 0x0C, + 0xE7, 0xE7, 0x00, 0xBF, 0xC0, 0x9C, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x0C, 0x46, 0x48, 0x7A, 0x09, 0x7A, 0x16, 0x46, 0xE2, 0x88, 0x84, 0xB0, + 0xCD, 0xE9, 0x00, 0x21, 0x02, 0x90, 0x62, 0x88, 0x5E, 0x48, 0x21, 0x88, + 0x1D, 0x46, 0xA3, 0x88, 0x0A, 0xF0, 0x86, 0xFE, 0xB4, 0xF8, 0x00, 0xC0, + 0x67, 0x88, 0xA0, 0x88, 0xE2, 0x88, 0x5A, 0x4B, 0xBC, 0xF1, 0x00, 0x0F, + 0x00, 0xF0, 0x9E, 0x80, 0x19, 0x68, 0xDF, 0xF8, 0x70, 0x81, 0x0B, 0x68, + 0xDF, 0xF8, 0x6C, 0xE1, 0x03, 0xEA, 0x08, 0x03, 0x43, 0xEA, 0x0C, 0x33, + 0x0B, 0x60, 0xDE, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x08, 0x03, 0x43, 0xEA, + 0x0C, 0x33, 0xCE, 0xF8, 0x00, 0x30, 0x00, 0x2F, 0x79, 0xD0, 0x4B, 0x68, + 0xDF, 0xF8, 0x44, 0xE1, 0xDF, 0xF8, 0x48, 0xC1, 0x03, 0xEA, 0x0E, 0x03, + 0x43, 0xEA, 0x07, 0x33, 0x4B, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, + 0x0E, 0x03, 0x43, 0xEA, 0x07, 0x33, 0xCC, 0xF8, 0x00, 0x30, 0x00, 0x28, + 0x3F, 0xD0, 0x8F, 0x68, 0xDF, 0xF8, 0x1C, 0xE1, 0xDF, 0xF8, 0x14, 0xC1, + 0x07, 0xEA, 0x0E, 0x07, 0x47, 0xEA, 0x00, 0x37, 0x8F, 0x60, 0xDC, 0xF8, + 0x00, 0x30, 0x03, 0xEA, 0x0E, 0x03, 0x43, 0xEA, 0x00, 0x33, 0xCC, 0xF8, + 0x00, 0x30, 0x00, 0x2A, 0x38, 0xD0, 0xC8, 0x68, 0xDF, 0xF8, 0xF4, 0xC0, + 0x38, 0x4F, 0x00, 0xEA, 0x0C, 0x00, 0x40, 0xEA, 0x02, 0x30, 0xC8, 0x60, + 0x3B, 0x68, 0x03, 0xEA, 0x0C, 0x03, 0x43, 0xEA, 0x02, 0x33, 0x3B, 0x60, + 0x23, 0x7A, 0x33, 0x4A, 0x00, 0x2B, 0x31, 0xD0, 0x13, 0x68, 0x43, 0xF0, + 0x10, 0x03, 0x13, 0x60, 0x63, 0x7A, 0x2F, 0x4A, 0x00, 0x2B, 0x31, 0xD0, + 0x13, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x13, 0x60, 0x2C, 0x4B, 0xD3, 0xF8, + 0xA0, 0x31, 0x98, 0x47, 0x32, 0x46, 0x29, 0x46, 0x7F, 0x20, 0x09, 0xF0, + 0x17, 0xF8, 0x00, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x88, 0x68, + 0xDF, 0xF8, 0x9C, 0xC0, 0x25, 0x4F, 0x00, 0xEA, 0x0C, 0x00, 0x88, 0x60, + 0x3B, 0x68, 0x03, 0xEA, 0x0C, 0x03, 0x3B, 0x60, 0x00, 0x2A, 0xC6, 0xD1, + 0xCA, 0x68, 0x21, 0x4F, 0x1C, 0x48, 0x3A, 0x40, 0xCA, 0x60, 0x03, 0x68, + 0x1B, 0x4A, 0x3B, 0x40, 0x03, 0x60, 0x23, 0x7A, 0x00, 0x2B, 0xCD, 0xD1, + 0x13, 0x68, 0x23, 0xF0, 0x10, 0x03, 0x13, 0x60, 0x63, 0x7A, 0x16, 0x4A, + 0x00, 0x2B, 0xCD, 0xD1, 0x13, 0x68, 0x23, 0xF0, 0x02, 0x03, 0x13, 0x60, + 0xCC, 0xE7, 0x4F, 0x68, 0xDF, 0xF8, 0x50, 0xE0, 0xDF, 0xF8, 0x54, 0xC0, + 0x07, 0xEA, 0x0E, 0x07, 0x4F, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, + 0x0E, 0x03, 0xCC, 0xF8, 0x00, 0x30, 0x88, 0xE7, 0x19, 0x68, 0xDF, 0xF8, + 0x34, 0xE0, 0x0B, 0x68, 0xDF, 0xF8, 0x30, 0xC0, 0x03, 0xEA, 0x0E, 0x03, + 0x0B, 0x60, 0xDC, 0xF8, 0x00, 0x30, 0x03, 0xEA, 0x0E, 0x03, 0xCC, 0xF8, + 0x00, 0x30, 0x64, 0xE7, 0xD8, 0x9C, 0x15, 0x00, 0xAC, 0x35, 0x17, 0x00, + 0x0C, 0x02, 0x32, 0x40, 0x24, 0x02, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x08, 0x02, 0x32, 0x40, 0xFF, 0x0F, 0x00, 0xF0, 0x00, 0x02, 0x32, 0x40, + 0x04, 0x02, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x8A, 0x46, 0x83, 0xB0, + 0x49, 0x7C, 0x28, 0x48, 0xDF, 0xF8, 0xBC, 0x90, 0x27, 0x4F, 0x16, 0x46, + 0xDA, 0xF8, 0x0C, 0x20, 0x00, 0x92, 0x01, 0x91, 0x9A, 0xF8, 0x10, 0xB0, + 0xDA, 0xF8, 0x00, 0x10, 0x1D, 0x46, 0xDA, 0xE9, 0x01, 0x23, 0x0A, 0xF0, + 0xA5, 0xFD, 0x21, 0x4A, 0x21, 0x49, 0x9A, 0xF8, 0x11, 0x00, 0x82, 0xF8, + 0x05, 0x01, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0xF3, 0x03, 0xF1, + 0x08, 0x02, 0x01, 0xEB, 0x02, 0x08, 0x01, 0xEB, 0x03, 0x0B, 0xAA, 0xF1, + 0x04, 0x0A, 0x00, 0x24, 0x5A, 0xF8, 0x04, 0x0F, 0xE3, 0xB2, 0x90, 0xB1, + 0x48, 0xF8, 0x24, 0x00, 0x16, 0x4A, 0x9B, 0xF8, 0x64, 0x10, 0x12, 0x68, + 0x42, 0xF8, 0x24, 0x00, 0x49, 0xB1, 0x01, 0x2C, 0x13, 0xD0, 0x02, 0x2B, + 0x17, 0xD0, 0x9B, 0xB1, 0x38, 0x60, 0x11, 0x4B, 0xD3, 0xF8, 0xA0, 0x31, + 0x98, 0x47, 0x01, 0x34, 0x04, 0x2C, 0xE5, 0xD1, 0x32, 0x46, 0x29, 0x46, + 0x83, 0x20, 0x08, 0xF0, 0x73, 0xFF, 0x00, 0x20, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0xC9, 0xF8, 0x00, 0x00, 0xEC, 0xE7, 0x08, 0x4B, 0x18, 0x60, + 0xE9, 0xE7, 0x08, 0x4B, 0x18, 0x60, 0xE6, 0xE7, 0x18, 0x9D, 0x15, 0x00, + 0x0C, 0x02, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0xAC, 0x35, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, + 0x08, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0xF8, 0xB5, 0x7C, 0x20, + 0x0C, 0x46, 0x19, 0x46, 0x02, 0x23, 0x08, 0xF0, 0xE5, 0xFE, 0x23, 0x78, + 0x05, 0x46, 0x00, 0x2B, 0x5F, 0xD0, 0x35, 0x48, 0x0A, 0xF0, 0x46, 0xFD, + 0x34, 0x4B, 0x1B, 0x68, 0x00, 0x22, 0x1A, 0x70, 0x4F, 0xF4, 0xD2, 0x73, + 0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, 0x68, 0x70, 0x62, 0x78, 0x06, 0x46, + 0x00, 0x2A, 0x45, 0xD0, 0x2E, 0x4F, 0xC0, 0xF3, 0x40, 0x11, 0x42, 0x06, + 0x87, 0xF8, 0xB4, 0x10, 0x4F, 0xD4, 0x2C, 0x48, 0x0F, 0x22, 0x01, 0x21, + 0xE8, 0xF7, 0x1C, 0xFC, 0x02, 0x22, 0x11, 0x46, 0x29, 0x48, 0xE8, 0xF7, + 0x17, 0xFC, 0x02, 0x22, 0x11, 0x46, 0x28, 0x48, 0xE8, 0xF7, 0x12, 0xFC, + 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, 0x24, 0x48, 0xE8, 0xF7, 0x0C, 0xFC, + 0x4F, 0xF4, 0x00, 0x52, 0x11, 0x46, 0x22, 0x48, 0xE8, 0xF7, 0x06, 0xFC, + 0x02, 0x22, 0x11, 0x46, 0x20, 0x48, 0xE8, 0xF7, 0x01, 0xFC, 0x4F, 0xF4, + 0x00, 0x52, 0x00, 0x21, 0x1D, 0x48, 0xE8, 0xF7, 0xFB, 0xFB, 0x97, 0xF8, + 0xB4, 0x10, 0x01, 0x22, 0x23, 0x78, 0x6B, 0xB1, 0xE3, 0x78, 0x2B, 0xB1, + 0xB7, 0xF8, 0xAA, 0x30, 0x43, 0xF4, 0x80, 0x43, 0xA7, 0xF8, 0xAA, 0x30, + 0x16, 0x48, 0xF3, 0xB2, 0x0A, 0xF0, 0xFA, 0xFC, 0x97, 0xF8, 0xB4, 0x10, + 0x29, 0x70, 0x28, 0x46, 0x08, 0xF0, 0xBC, 0xFE, 0x00, 0x20, 0xF8, 0xBD, + 0xA3, 0x78, 0x0B, 0x4F, 0xC3, 0xF3, 0x40, 0x11, 0x5B, 0x06, 0x87, 0xF8, + 0xB4, 0x10, 0xB8, 0xD5, 0xE0, 0xE7, 0x0D, 0x48, 0x0A, 0xF0, 0xE6, 0xFC, + 0x04, 0x4B, 0x1B, 0x68, 0x03, 0x22, 0x1A, 0x70, 0x9E, 0xE7, 0x00, 0x22, + 0xD6, 0xE7, 0x00, 0xBF, 0x48, 0x9D, 0x15, 0x00, 0x74, 0x36, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x04, 0x20, 0x01, 0x50, 0x04, 0x10, 0x01, 0x50, + 0x08, 0x10, 0x01, 0x50, 0x00, 0x10, 0x01, 0x50, 0x68, 0x9D, 0x15, 0x00, + 0x58, 0x9D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x18, 0x46, 0xB1, 0xB0, + 0x0C, 0x46, 0x10, 0x23, 0x01, 0x46, 0x6A, 0x20, 0x04, 0x94, 0x08, 0xF0, + 0x59, 0xFE, 0x4F, 0xF4, 0xD2, 0x73, 0x02, 0x46, 0x1B, 0x68, 0x05, 0x92, + 0x06, 0x20, 0x98, 0x47, 0x04, 0x46, 0x01, 0x46, 0x91, 0x48, 0x0A, 0xF0, + 0xB5, 0xFC, 0x14, 0xF4, 0x7F, 0x4F, 0xC4, 0xF3, 0x07, 0x25, 0x6F, 0xD1, + 0x26, 0x0E, 0xE5, 0xB2, 0x6E, 0xD0, 0xF4, 0xB2, 0x00, 0x2D, 0x6F, 0xD1, + 0x04, 0x9B, 0x19, 0x7D, 0x00, 0x29, 0x40, 0xF0, 0x83, 0x80, 0x00, 0x2E, + 0x40, 0xF0, 0x89, 0x80, 0x59, 0x7D, 0x31, 0xB1, 0x86, 0x48, 0x0A, 0xF0, + 0x9D, 0xFC, 0x04, 0x9B, 0x5C, 0x7D, 0x00, 0x2C, 0x7F, 0xD1, 0x04, 0x9B, + 0xDB, 0x68, 0x00, 0x2B, 0x40, 0xF0, 0x8D, 0x80, 0x04, 0x9B, 0xDF, 0xF8, + 0x40, 0xB2, 0x99, 0x68, 0x1A, 0x68, 0x7F, 0x4B, 0xDF, 0xF8, 0x38, 0xA2, + 0xD3, 0xF8, 0x70, 0x32, 0x7D, 0x4C, 0xCD, 0xE9, 0x08, 0x21, 0x08, 0xA8, + 0x0A, 0xA9, 0x98, 0x47, 0x1A, 0xAE, 0x6F, 0xF0, 0x3F, 0x08, 0x09, 0xAF, + 0x0A, 0xAB, 0x07, 0x97, 0xA8, 0xEB, 0x03, 0x08, 0x35, 0x46, 0x0D, 0xF1, + 0x78, 0x09, 0x06, 0x96, 0xE3, 0x79, 0x00, 0x93, 0x08, 0xEB, 0x05, 0x02, + 0x23, 0x68, 0x03, 0x92, 0x59, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x0A, 0xF0, + 0xBD, 0xFC, 0x15, 0xF8, 0x01, 0x6B, 0x57, 0xF8, 0x04, 0x3F, 0x03, 0x9A, + 0x00, 0x96, 0x51, 0x46, 0x23, 0x60, 0xE6, 0x71, 0x4F, 0xF4, 0x00, 0x50, + 0x0A, 0xF0, 0xB0, 0xFC, 0x4D, 0x45, 0x04, 0xF1, 0x10, 0x04, 0xE3, 0xD1, + 0xDF, 0xF8, 0xD8, 0xB1, 0x06, 0x9E, 0x9B, 0xF8, 0xB4, 0x30, 0x00, 0x2B, + 0x52, 0xD1, 0xDF, 0xF8, 0xD0, 0xA1, 0x61, 0x4B, 0x00, 0x20, 0xD3, 0xF8, + 0xB0, 0x34, 0x98, 0x47, 0x05, 0x98, 0x5F, 0x4C, 0x5F, 0x4A, 0x60, 0x4B, + 0x82, 0x60, 0xC0, 0xE9, 0x00, 0x4A, 0xC3, 0x60, 0x08, 0xF0, 0x0C, 0xFE, + 0x00, 0x20, 0x31, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x23, 0x0E, 0x0B, 0xD1, + 0x26, 0x0C, 0xF4, 0xB2, 0x00, 0x2D, 0x8F, 0xD0, 0x3C, 0xB9, 0x04, 0x9B, + 0x59, 0x7D, 0x00, 0x29, 0x40, 0xF0, 0x99, 0x80, 0x00, 0x24, 0x00, 0xE0, + 0xDC, 0xB2, 0x1F, 0x2D, 0x28, 0xBF, 0x1F, 0x25, 0xE9, 0x06, 0x41, 0xEA, + 0x85, 0x51, 0x51, 0x4A, 0x51, 0x48, 0xE8, 0xF7, 0x17, 0xFB, 0x51, 0x48, + 0x29, 0x46, 0x0A, 0xF0, 0x23, 0xFC, 0x86, 0xE7, 0x4F, 0x48, 0x0A, 0xF0, + 0x1F, 0xFC, 0x04, 0x9B, 0x1D, 0x7D, 0x00, 0x2E, 0x70, 0xD0, 0x00, 0x2D, + 0xE7, 0xD1, 0x3F, 0x2C, 0x21, 0x46, 0x4B, 0x48, 0x28, 0xBF, 0x3F, 0x21, + 0x3F, 0x22, 0x03, 0x91, 0xE8, 0xF7, 0x00, 0xFB, 0x03, 0x99, 0x48, 0x48, + 0x0A, 0xF0, 0x0C, 0xFC, 0x04, 0x9B, 0xDB, 0x68, 0x00, 0x2B, 0x3F, 0xF4, + 0x73, 0xAF, 0x04, 0x9B, 0x18, 0x69, 0xEB, 0xF7, 0x6F, 0xF8, 0x6D, 0xE7, + 0x42, 0x4A, 0x38, 0x4D, 0x93, 0x69, 0xD5, 0xF8, 0x28, 0x42, 0xDF, 0xF8, + 0x20, 0xA1, 0x40, 0x4F, 0x43, 0xF0, 0x01, 0x03, 0x93, 0x61, 0x04, 0x9B, + 0x5B, 0x68, 0x08, 0x93, 0x41, 0xF2, 0x7C, 0x52, 0x00, 0x23, 0x11, 0x46, + 0xCD, 0xE9, 0x00, 0x33, 0x01, 0x20, 0xA0, 0x47, 0x39, 0x4A, 0x01, 0x23, + 0x82, 0xF8, 0x2A, 0x30, 0x0A, 0xA9, 0xD5, 0xF8, 0x70, 0x32, 0x37, 0x4D, + 0x08, 0xA8, 0x98, 0x47, 0x54, 0x46, 0xCD, 0xF8, 0x10, 0xA0, 0xDD, 0xF8, + 0x1C, 0xA0, 0xE3, 0x79, 0x00, 0x93, 0x06, 0xEB, 0x08, 0x02, 0x23, 0x68, + 0x03, 0x92, 0x39, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0x0A, 0xF0, 0x22, 0xFC, + 0x16, 0xF8, 0x01, 0xCB, 0x5A, 0xF8, 0x04, 0x3F, 0x03, 0x9A, 0xCD, 0xF8, + 0x00, 0xC0, 0x29, 0x46, 0x23, 0x60, 0x84, 0xF8, 0x07, 0xC0, 0x4F, 0xF4, + 0x00, 0x50, 0x0A, 0xF0, 0x13, 0xFC, 0x4E, 0x45, 0x04, 0xF1, 0x10, 0x04, + 0xE1, 0xD1, 0x9B, 0xF8, 0xB4, 0x30, 0xDD, 0xF8, 0x10, 0xA0, 0x00, 0x2B, + 0x3F, 0xF4, 0x65, 0xAF, 0x13, 0x4B, 0x00, 0x20, 0xD3, 0xF8, 0x80, 0x34, + 0x98, 0x47, 0x1D, 0x4B, 0x1E, 0x49, 0x93, 0xF8, 0x2A, 0x20, 0x08, 0x20, + 0x00, 0x23, 0x0A, 0xF0, 0xFB, 0xFB, 0x5B, 0xE7, 0x59, 0x7D, 0x1C, 0x46, + 0x39, 0xB1, 0x0A, 0x48, 0x0A, 0xF0, 0xA4, 0xFB, 0x64, 0x7D, 0x00, 0x2D, + 0x3F, 0xF4, 0x05, 0xAF, 0x6D, 0xE7, 0x00, 0x2D, 0x3F, 0xF4, 0x03, 0xAF, + 0x66, 0xE7, 0x04, 0x48, 0x0A, 0xF0, 0x98, 0xFB, 0x04, 0x9B, 0x5C, 0x7D, + 0x63, 0xE7, 0x00, 0xBF, 0x90, 0x9D, 0x15, 0x00, 0xBC, 0x9D, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x1C, 0x13, 0x17, 0x00, 0x1C, 0x18, 0x17, 0x00, + 0x9C, 0x18, 0x17, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x04, 0x88, 0x01, 0x50, + 0xD0, 0x9D, 0x15, 0x00, 0xAC, 0x9D, 0x15, 0x00, 0x28, 0x91, 0x01, 0x50, + 0xE4, 0x9D, 0x15, 0x00, 0x00, 0x80, 0x50, 0x40, 0x44, 0x9E, 0x15, 0x00, + 0xBC, 0x34, 0x17, 0x00, 0x64, 0x9E, 0x15, 0x00, 0x9C, 0x77, 0x15, 0x00, + 0xFC, 0x9D, 0x15, 0x00, 0x20, 0x9E, 0x15, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x1C, 0x16, 0x17, 0x00, 0x38, 0xB5, 0x00, 0x22, 0x0D, 0x46, 0x01, 0x23, + 0x0C, 0x21, 0x54, 0x20, 0x08, 0xF0, 0xFA, 0xFC, 0x01, 0x23, 0x03, 0x70, + 0x04, 0x46, 0x28, 0x78, 0x04, 0x28, 0x0D, 0xD8, 0x0C, 0x4B, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC0, 0x34, 0x2B, 0xB1, + 0x00, 0x23, 0x23, 0x70, 0x69, 0x78, 0x31, 0xB1, 0x06, 0xF0, 0xA2, 0xFB, + 0x20, 0x46, 0x08, 0xF0, 0x13, 0xFD, 0x00, 0x20, 0x38, 0xBD, 0x06, 0xF0, + 0xBD, 0xFB, 0x20, 0x46, 0x08, 0xF0, 0x0C, 0xFD, 0x00, 0x20, 0x38, 0xBD, + 0x18, 0x88, 0x17, 0x00, 0x70, 0xB5, 0x10, 0x46, 0x14, 0x46, 0x0D, 0x46, + 0x1E, 0x46, 0x08, 0xF0, 0x73, 0xFF, 0x03, 0x28, 0x25, 0xD0, 0x20, 0x46, + 0x08, 0xF0, 0x6E, 0xFF, 0x04, 0x28, 0x20, 0xD0, 0x2A, 0x78, 0x1B, 0x4D, + 0x20, 0x46, 0xEA, 0x77, 0x72, 0xB9, 0x08, 0xF0, 0x65, 0xFF, 0x02, 0x28, + 0x17, 0xD0, 0x18, 0x4B, 0xD3, 0xF8, 0x60, 0x31, 0x98, 0x47, 0x23, 0x20, + 0x22, 0x46, 0x31, 0x46, 0x08, 0xF0, 0x20, 0xFD, 0x00, 0x20, 0x70, 0xBD, + 0x08, 0xF0, 0x56, 0xFF, 0x58, 0xB1, 0x02, 0x28, 0xF9, 0xD0, 0x10, 0x4B, + 0xD3, 0xF8, 0xE0, 0x30, 0x98, 0x47, 0x20, 0x46, 0x02, 0x21, 0x08, 0xF0, + 0xA3, 0xFE, 0x02, 0x20, 0x70, 0xBD, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x02, 0xDB, 0x00, 0x23, 0x6B, 0x82, 0xE0, 0xE7, + 0x08, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0xF8, 0xD0, 0x07, 0x49, 0x08, 0x48, + 0x40, 0xF2, 0x31, 0x62, 0x0A, 0xF0, 0x76, 0xFD, 0xF1, 0xE7, 0x00, 0xBF, + 0x98, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x38, 0x00, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0x84, 0x9E, 0x15, 0x00, + 0x70, 0xB5, 0x1E, 0x4D, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x0E, 0x46, 0x14, 0x46, 0x1C, 0xDB, 0x20, 0x46, 0x08, 0xF0, 0x1C, 0xFF, + 0x58, 0xB1, 0x02, 0x28, 0x08, 0xD0, 0x18, 0x4B, 0xD3, 0xF8, 0xE0, 0x30, + 0x98, 0x47, 0x20, 0x46, 0x02, 0x21, 0x08, 0xF0, 0x69, 0xFE, 0x02, 0x20, + 0x70, 0xBD, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x13, 0xDB, + 0x20, 0x46, 0x03, 0x21, 0x08, 0xF0, 0x5E, 0xFE, 0x33, 0x68, 0x98, 0x47, + 0x00, 0x20, 0x70, 0xBD, 0x10, 0x46, 0x08, 0xF0, 0xFF, 0xFE, 0x04, 0x28, + 0xDD, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF2, 0x71, 0x62, 0x0A, 0xF0, + 0x37, 0xFD, 0xD6, 0xE7, 0x09, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0xE7, 0xD0, + 0x05, 0x49, 0x08, 0x48, 0x4F, 0xF4, 0xCF, 0x62, 0x0A, 0xF0, 0x2C, 0xFD, + 0xE0, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xAC, 0x9E, 0x15, 0x00, 0x38, 0x00, 0x32, 0x40, + 0x84, 0x9E, 0x15, 0x00, 0x70, 0xB5, 0x12, 0x4C, 0x88, 0x78, 0x4F, 0xF4, + 0xA4, 0x65, 0x05, 0xFB, 0x00, 0x40, 0x82, 0xB0, 0x90, 0xF8, 0x62, 0x40, + 0x1E, 0x46, 0x84, 0xB9, 0x90, 0xF8, 0x6C, 0x00, 0x0C, 0x4D, 0x0C, 0x88, + 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x00, 0x51, 0xA4, 0x02, 0x8C, 0x60, + 0x31, 0x46, 0x15, 0x20, 0x08, 0xF0, 0x8A, 0xFC, 0x00, 0x20, 0x02, 0xB0, + 0x70, 0xBD, 0x06, 0x4C, 0x09, 0x88, 0xD4, 0xF8, 0x60, 0x44, 0x01, 0x92, + 0xA0, 0x47, 0x01, 0x9A, 0xF0, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x88, 0x79, 0x19, 0x4D, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x00, 0xF6, + 0x06, 0xF1, 0x38, 0x00, 0x28, 0x44, 0x35, 0x44, 0x82, 0xB0, 0x90, 0x46, + 0x06, 0x22, 0x1F, 0x46, 0x0C, 0x46, 0x1C, 0xF0, 0x85, 0xFF, 0x95, 0xF8, + 0xC0, 0x34, 0x73, 0xB9, 0x10, 0x49, 0x11, 0x4B, 0x20, 0x68, 0xA2, 0x88, + 0x08, 0x60, 0x1A, 0x60, 0x42, 0x46, 0x39, 0x46, 0x19, 0x20, 0x08, 0xF0, + 0x57, 0xFC, 0x00, 0x20, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x0D, 0xF1, + 0x07, 0x00, 0xFC, 0xF7, 0x9F, 0xFF, 0x00, 0x28, 0xF0, 0xD1, 0x08, 0x49, + 0x08, 0x48, 0xD1, 0xE9, 0x00, 0x23, 0x43, 0xF0, 0x10, 0x03, 0x1A, 0x43, + 0x4B, 0x60, 0x02, 0x60, 0xE6, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, + 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, + 0x60, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x4F, 0x0D, 0x46, 0x9E, 0x4F, + 0x95, 0xF8, 0x03, 0xA0, 0x4F, 0xF4, 0xA4, 0x61, 0x89, 0xB0, 0x01, 0xFB, + 0x0A, 0xFB, 0x07, 0xEB, 0x0B, 0x06, 0x00, 0x24, 0x0D, 0xF1, 0x1F, 0x00, + 0x90, 0x46, 0x99, 0x46, 0x8D, 0xF8, 0x1F, 0x40, 0xFC, 0xF7, 0x72, 0xFF, + 0x96, 0xF8, 0x62, 0x30, 0xAA, 0x78, 0x86, 0xF8, 0x64, 0x20, 0x04, 0x46, + 0x00, 0x2B, 0x40, 0xF0, 0xED, 0x80, 0x96, 0xF8, 0x6C, 0x10, 0x02, 0x91, + 0x00, 0x2A, 0x00, 0xF0, 0x45, 0x81, 0x8E, 0x4A, 0x8E, 0x4B, 0x03, 0x92, + 0x8C, 0x46, 0x8E, 0x49, 0x18, 0x69, 0xD2, 0xF8, 0xE0, 0x31, 0x4F, 0xF4, + 0x1E, 0x72, 0x02, 0xFB, 0x0C, 0x12, 0x0B, 0xF1, 0x18, 0x01, 0x79, 0x18, + 0x04, 0x91, 0x91, 0x68, 0x05, 0x92, 0x41, 0x18, 0x04, 0x98, 0x98, 0x47, + 0x05, 0x9A, 0x2B, 0x88, 0x13, 0x84, 0xFC, 0xF7, 0x39, 0xFF, 0x05, 0x9A, + 0x96, 0xF8, 0xC0, 0x14, 0x01, 0x94, 0x13, 0x8C, 0x92, 0xF8, 0x23, 0x20, + 0x00, 0x91, 0x4F, 0xF4, 0x80, 0x70, 0x7F, 0x49, 0x0A, 0xF0, 0x3C, 0xFA, + 0x96, 0xF8, 0xC0, 0x34, 0x33, 0xB9, 0x7D, 0x4A, 0x29, 0x88, 0x13, 0x68, + 0x9B, 0xB2, 0x43, 0xEA, 0x01, 0x43, 0x13, 0x60, 0x7A, 0x4B, 0x1B, 0x68, + 0x18, 0x04, 0x00, 0xF1, 0xD2, 0x81, 0x79, 0x49, 0x79, 0x4B, 0xB1, 0xF8, + 0x1C, 0xC0, 0x02, 0x99, 0x08, 0x46, 0x72, 0x49, 0x4F, 0xF4, 0x1E, 0x72, + 0x02, 0xFB, 0x00, 0x12, 0x4F, 0xF4, 0xA4, 0x6B, 0x90, 0x68, 0x02, 0x92, + 0x0B, 0xFB, 0x0A, 0x7B, 0x0C, 0xF1, 0x14, 0x0C, 0x00, 0xFB, 0x0C, 0xFC, + 0xA3, 0xFB, 0x0C, 0x3C, 0xDB, 0xF8, 0x04, 0x00, 0x4F, 0xEA, 0x9C, 0x4C, + 0x00, 0x23, 0xA2, 0xF8, 0x1E, 0xC0, 0x40, 0xF0, 0x01, 0x00, 0xDF, 0xF8, + 0x90, 0xC1, 0xAB, 0xF8, 0x68, 0x30, 0x8B, 0xF8, 0x6A, 0x30, 0x8B, 0xF8, + 0x8C, 0x30, 0x8B, 0xF8, 0x78, 0x30, 0xCB, 0xF8, 0x74, 0x30, 0xCB, 0xF8, + 0x04, 0x00, 0xDC, 0xF8, 0x10, 0x00, 0xCB, 0xF8, 0x70, 0x00, 0x30, 0x46, + 0x04, 0xF0, 0xF4, 0xFA, 0x9B, 0xF8, 0xC0, 0x04, 0x5D, 0x49, 0x00, 0x23, + 0x00, 0x28, 0x40, 0xF0, 0x76, 0x81, 0x5D, 0x4B, 0x02, 0x9A, 0x9B, 0x7C, + 0x00, 0x2B, 0x40, 0xF0, 0x8B, 0x81, 0x00, 0x2C, 0x40, 0xF0, 0xD5, 0x81, + 0xDF, 0xF8, 0x7C, 0xB1, 0xDB, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x40, 0xF0, + 0x81, 0x81, 0x9D, 0xF8, 0x1F, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x87, 0x82, + 0x53, 0x49, 0x93, 0x68, 0x0A, 0x68, 0xCB, 0xF8, 0x20, 0x60, 0x12, 0x0C, + 0x12, 0x04, 0xC3, 0xF3, 0x8F, 0x23, 0x13, 0x43, 0x0B, 0x60, 0xDD, 0xE9, + 0x03, 0x30, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x03, 0x9B, 0x8B, 0xF8, + 0x24, 0x40, 0xD3, 0xF8, 0x60, 0x32, 0x98, 0x47, 0xAA, 0x78, 0x11, 0x46, + 0x30, 0x46, 0x05, 0xF0, 0x5B, 0xFF, 0xAB, 0x78, 0x00, 0x2B, 0x38, 0xD0, + 0x45, 0x4B, 0x1B, 0x68, 0x1A, 0x68, 0x00, 0x2A, 0x00, 0xF0, 0xE0, 0x80, + 0x43, 0x49, 0x0A, 0x60, 0x5A, 0x68, 0x00, 0x2A, 0x00, 0xF0, 0xE5, 0x80, + 0xC2, 0xF3, 0x0B, 0x01, 0x00, 0x29, 0x40, 0xF0, 0x4F, 0x81, 0x4F, 0xF4, + 0xA4, 0x61, 0x01, 0xFB, 0x0A, 0x71, 0x22, 0xF4, 0x7F, 0x62, 0xC9, 0x68, + 0x3B, 0x48, 0x22, 0xF0, 0x0F, 0x02, 0xC1, 0xF3, 0x0B, 0x01, 0x0A, 0x43, + 0x02, 0x60, 0x9A, 0x68, 0x00, 0x2A, 0x40, 0xF0, 0xD9, 0x80, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, 0x35, 0x49, 0x12, 0x69, 0x0A, 0x60, + 0xDB, 0x68, 0x00, 0x2B, 0x40, 0xF0, 0xD4, 0x80, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x0A, 0x77, 0x30, 0x4B, 0x7A, 0x69, 0x1A, 0x60, 0x21, 0x4B, + 0xD3, 0xF8, 0xA0, 0x31, 0x98, 0x47, 0x42, 0x46, 0x49, 0x46, 0x1F, 0x20, + 0x08, 0xF0, 0x30, 0xFB, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x80, 0xB1, 0x22, 0x4B, 0x9C, 0x68, 0x6C, 0xB1, 0x94, 0xF8, 0x62, 0x30, + 0x3B, 0xB9, 0x94, 0xF8, 0x64, 0x30, 0x23, 0xB1, 0xA6, 0x42, 0x02, 0xD0, + 0x94, 0xF8, 0xC0, 0x34, 0x13, 0xB1, 0x24, 0x68, 0x00, 0x2C, 0xF1, 0xD1, + 0x00, 0x2A, 0x00, 0xF0, 0xB2, 0x80, 0x1F, 0x4B, 0x19, 0x6A, 0xA1, 0x42, + 0x9D, 0xD1, 0x0E, 0x49, 0x1D, 0x4C, 0xD1, 0xF8, 0x64, 0x12, 0x00, 0x22, + 0x1A, 0x62, 0x83, 0xF8, 0x24, 0x20, 0x88, 0x47, 0x0F, 0x4A, 0x1A, 0x48, + 0xD2, 0xE9, 0x00, 0x13, 0x43, 0xF0, 0x10, 0x03, 0x19, 0x43, 0x01, 0x60, + 0x17, 0x48, 0x18, 0x49, 0x20, 0x60, 0x53, 0x60, 0x0B, 0x68, 0x03, 0x43, + 0x0B, 0x60, 0xAA, 0x78, 0x83, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, + 0xD0, 0x9E, 0x15, 0x00, 0x68, 0x00, 0x32, 0x40, 0x04, 0x00, 0x32, 0x40, + 0x98, 0x9C, 0x17, 0x00, 0x83, 0xDE, 0x1B, 0x43, 0x00, 0x88, 0x17, 0x00, + 0x64, 0x00, 0x32, 0x40, 0xAC, 0x35, 0x17, 0x00, 0x00, 0x02, 0x32, 0x40, + 0x04, 0x02, 0x32, 0x40, 0x08, 0x02, 0x32, 0x40, 0x0C, 0x02, 0x32, 0x40, + 0x1C, 0x9E, 0x17, 0x00, 0x70, 0x80, 0x32, 0x40, 0x60, 0x00, 0x32, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x74, 0x80, 0x32, 0x40, 0xAC, 0x4B, 0x03, 0x93, + 0x0B, 0xF1, 0x18, 0x00, 0x38, 0x44, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, + 0x03, 0x9B, 0xD3, 0xF8, 0xDC, 0x33, 0x98, 0x47, 0xA7, 0x49, 0x96, 0xF8, + 0xC0, 0x24, 0x23, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x0A, 0xF0, 0x0A, 0xF9, + 0xA4, 0x4B, 0x1B, 0x68, 0x19, 0x04, 0x00, 0xF1, 0xD8, 0x80, 0xA3, 0x4B, + 0x9B, 0x7F, 0x3B, 0xB9, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, + 0x82, 0xF8, 0xC3, 0x34, 0xC2, 0xF8, 0xC4, 0x34, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x0A, 0x73, 0x93, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x00, 0xF0, + 0x8C, 0x80, 0x00, 0x2C, 0x00, 0xF0, 0x8E, 0x80, 0x98, 0x4B, 0x9C, 0x68, + 0x00, 0x2C, 0x00, 0xF0, 0x89, 0x80, 0x94, 0xF8, 0x62, 0x30, 0x4B, 0xB9, + 0x94, 0xF8, 0x64, 0x30, 0x33, 0xB1, 0xA6, 0x42, 0x04, 0xD0, 0x94, 0xF8, + 0xC0, 0x34, 0x00, 0x2B, 0x00, 0xF0, 0x4A, 0x81, 0x24, 0x68, 0x00, 0x2C, + 0xEF, 0xD1, 0x77, 0xE0, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, + 0x8C, 0x49, 0x92, 0x68, 0x0A, 0x60, 0x5A, 0x68, 0x00, 0x2A, 0x7F, 0xF4, + 0x1B, 0xAF, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x0A, 0x72, 0x88, 0x49, + 0xD2, 0x68, 0x0A, 0x60, 0x9A, 0x68, 0x00, 0x2A, 0x3F, 0xF4, 0x27, 0xAF, + 0x85, 0x49, 0x0A, 0x60, 0xDB, 0x68, 0x00, 0x2B, 0x3F, 0xF4, 0x2C, 0xAF, + 0x83, 0x4A, 0x13, 0x60, 0x7A, 0x4B, 0xD3, 0xF8, 0xA0, 0x31, 0x98, 0x47, + 0x2F, 0xE7, 0x81, 0x48, 0x81, 0x49, 0x03, 0x68, 0x1B, 0x0C, 0x1B, 0x04, + 0x03, 0x60, 0x0B, 0x6A, 0x00, 0x2B, 0x7F, 0xF4, 0xE6, 0xAE, 0x00, 0x2C, + 0x3F, 0xF4, 0xE3, 0xAE, 0xDF, 0xF8, 0xC4, 0xB1, 0x0C, 0x62, 0x81, 0xF8, + 0x24, 0x20, 0x04, 0xF1, 0x18, 0x00, 0xDB, 0xF8, 0xD8, 0x31, 0x98, 0x47, + 0xDB, 0xF8, 0x60, 0x32, 0x98, 0x47, 0x76, 0x49, 0xDF, 0xF8, 0xE4, 0xC1, + 0x75, 0x48, 0xD4, 0xF8, 0x38, 0xE0, 0xA4, 0x8F, 0xD1, 0xE9, 0x00, 0x32, + 0x22, 0xF0, 0x10, 0x02, 0x13, 0x43, 0xCC, 0xF8, 0x00, 0x30, 0xC0, 0xF8, + 0x00, 0xE0, 0x70, 0x4B, 0x4C, 0xF8, 0x3C, 0x4C, 0x00, 0xF5, 0x00, 0x40, + 0x54, 0x30, 0x6E, 0x4C, 0x1C, 0x60, 0x03, 0x68, 0x4A, 0x60, 0x23, 0xF4, + 0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, 0x03, 0x60, 0x1A, 0xE0, 0xCC, 0xB1, + 0x64, 0x4A, 0x10, 0x6A, 0xB0, 0xB1, 0x13, 0x62, 0x82, 0xF8, 0x24, 0x30, + 0x03, 0x9B, 0xD3, 0xF8, 0x64, 0x32, 0x98, 0x47, 0x60, 0x49, 0x64, 0x48, + 0xD1, 0xE9, 0x00, 0x23, 0x43, 0xF0, 0x10, 0x03, 0x1A, 0x43, 0x4B, 0x60, + 0x02, 0x60, 0xAA, 0x78, 0x9F, 0xE6, 0x02, 0x2C, 0x65, 0xD0, 0x01, 0x2C, + 0x00, 0xF0, 0xC0, 0x80, 0xAA, 0x78, 0x98, 0xE6, 0x52, 0x49, 0x0A, 0x60, + 0x94, 0xE7, 0xE6, 0xF7, 0x1F, 0xFE, 0x00, 0x28, 0x3F, 0xF4, 0x29, 0xAE, + 0x02, 0x9A, 0x11, 0x46, 0x57, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x01, 0x23, 0x5B, 0x68, 0x9A, 0x06, 0x7F, 0xF5, 0x1E, 0xAE, 0x28, 0x88, + 0xE6, 0xF7, 0x54, 0xFE, 0xF9, 0xF7, 0x9C, 0xF9, 0x51, 0x49, 0x4F, 0xF4, + 0x80, 0x70, 0x0A, 0xF0, 0x41, 0xF8, 0x03, 0x9B, 0xD3, 0xF8, 0xE0, 0x33, + 0x98, 0x47, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0A, 0x73, 0x93, 0xF8, + 0x62, 0x20, 0x04, 0x2A, 0x3F, 0xF4, 0x07, 0xAE, 0x93, 0xF8, 0x63, 0x00, + 0x03, 0x9B, 0xD3, 0xF8, 0x30, 0x33, 0x98, 0x47, 0xFF, 0xE5, 0xE6, 0xF7, + 0xF1, 0xFD, 0x00, 0x28, 0x3F, 0xF4, 0x23, 0xAF, 0x41, 0x4B, 0x02, 0x99, + 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x01, 0x3B, 0xDB, 0xF8, 0x04, 0x30, + 0x9B, 0x06, 0x7F, 0xF5, 0x18, 0xAF, 0x96, 0xF8, 0x62, 0x30, 0x04, 0x2B, + 0x3F, 0xF4, 0x13, 0xAF, 0x96, 0xF8, 0x63, 0x00, 0x06, 0xF0, 0x2A, 0xFB, + 0x0D, 0xE7, 0x01, 0x2C, 0xB0, 0xD1, 0x30, 0x4C, 0x22, 0x6A, 0xB2, 0x42, + 0xAC, 0xD0, 0x23, 0x62, 0x02, 0x93, 0xDD, 0xE9, 0x03, 0x30, 0xD3, 0xF8, + 0xD8, 0x21, 0x90, 0x47, 0x02, 0x9B, 0x84, 0xF8, 0x24, 0x30, 0x03, 0x9B, + 0xD3, 0xF8, 0x64, 0x32, 0x98, 0x47, 0xAA, 0x78, 0x37, 0xE6, 0x26, 0x4C, + 0x23, 0x6A, 0x00, 0x2B, 0x98, 0xD1, 0x1E, 0x4B, 0x98, 0x68, 0x20, 0xB9, + 0xA3, 0xE0, 0x00, 0x68, 0x00, 0x28, 0x00, 0xF0, 0xA0, 0x80, 0x90, 0xF8, + 0x62, 0x30, 0x00, 0x2B, 0xF7, 0xD1, 0x90, 0xF8, 0x64, 0x30, 0x00, 0x2B, + 0xF3, 0xD0, 0x86, 0x42, 0xF1, 0xD0, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, + 0xED, 0xD1, 0x1F, 0x49, 0x17, 0x4A, 0x20, 0x62, 0x9B, 0x46, 0x90, 0xF8, + 0x6C, 0x30, 0x4F, 0xF4, 0x1E, 0x7C, 0x0C, 0xFB, 0x03, 0x13, 0x11, 0x68, + 0x9B, 0x68, 0x09, 0x0C, 0x09, 0x04, 0xC3, 0xF3, 0x8F, 0x23, 0x0B, 0x43, + 0x13, 0x60, 0x03, 0x9B, 0x18, 0x30, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, + 0x03, 0x9B, 0x84, 0xF8, 0x24, 0xB0, 0xD3, 0xF8, 0x60, 0x32, 0x98, 0x47, + 0xAA, 0x78, 0xFE, 0xE5, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x9F, 0x15, 0x00, + 0x04, 0x00, 0x32, 0x40, 0x64, 0xBA, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, + 0x00, 0x02, 0x32, 0x40, 0x04, 0x02, 0x32, 0x40, 0x08, 0x02, 0x32, 0x40, + 0x0C, 0x02, 0x32, 0x40, 0x64, 0x00, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, + 0x98, 0x9C, 0x17, 0x00, 0x20, 0x00, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x60, 0x00, 0x32, 0x40, 0x68, 0x65, 0x17, 0x00, + 0xF0, 0x9E, 0x15, 0x00, 0x29, 0x4A, 0x11, 0x6A, 0xB1, 0x42, 0x7F, 0xF4, + 0x3B, 0xAF, 0x13, 0x62, 0x82, 0xF8, 0x24, 0x30, 0x03, 0x9B, 0xD3, 0xF8, + 0x64, 0x32, 0x98, 0x47, 0xAA, 0x78, 0xCC, 0xE5, 0xDF, 0xF8, 0x88, 0xB0, + 0xDB, 0xF8, 0x20, 0x20, 0x00, 0x2A, 0x7F, 0xF4, 0x2B, 0xAF, 0x94, 0xF8, + 0x6C, 0x30, 0x1F, 0x48, 0x1F, 0x49, 0xCB, 0xF8, 0x20, 0x40, 0x4F, 0xF4, + 0x1E, 0x7C, 0x0C, 0xFB, 0x03, 0x03, 0x08, 0x68, 0x9B, 0x68, 0x02, 0x92, + 0x00, 0x0C, 0x00, 0x04, 0xC3, 0xF3, 0x8F, 0x23, 0x03, 0x43, 0x0B, 0x60, + 0x03, 0x9B, 0x04, 0xF1, 0x18, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, + 0x03, 0x9B, 0x02, 0x9A, 0x8B, 0xF8, 0x24, 0x20, 0xD3, 0xF8, 0x60, 0x32, + 0xDF, 0xF8, 0x50, 0xB0, 0x98, 0x47, 0x11, 0x49, 0xDF, 0xF8, 0x4C, 0xC0, + 0x10, 0x48, 0xD4, 0xF8, 0x38, 0xE0, 0xA4, 0x8F, 0xD1, 0xE9, 0x00, 0x23, + 0x23, 0xF0, 0x10, 0x03, 0x1A, 0x43, 0x4B, 0x60, 0xCB, 0xF8, 0x00, 0x20, + 0xCC, 0xF8, 0x00, 0xE0, 0x04, 0x60, 0xAA, 0x78, 0x8F, 0xE5, 0x01, 0x2B, + 0x7F, 0xF4, 0xF2, 0xAE, 0xE1, 0xE6, 0x00, 0x23, 0x93, 0xF8, 0x6C, 0x30, + 0xFF, 0xDE, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x64, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x24, 0x00, 0x32, 0x40, + 0x60, 0x00, 0x32, 0x40, 0x20, 0x00, 0x32, 0x40, 0x38, 0xB5, 0x07, 0x20, + 0x0C, 0x46, 0x19, 0x46, 0x02, 0x23, 0x08, 0xF0, 0x7F, 0xF8, 0x23, 0x46, + 0x07, 0x4D, 0x13, 0xF8, 0x02, 0x1B, 0x22, 0x7A, 0xD5, 0xF8, 0x58, 0x54, + 0x04, 0x46, 0x18, 0x46, 0x63, 0x1C, 0xA8, 0x47, 0x20, 0x70, 0x20, 0x46, + 0x08, 0xF0, 0xA0, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x00, 0xB5, 0x08, 0x78, 0x03, 0x28, 0x83, 0xB0, 0x19, 0x46, 0x07, 0xD8, + 0xCD, 0xE9, 0x00, 0x23, 0x0C, 0x4B, 0xD3, 0xF8, 0x64, 0x34, 0x98, 0x47, + 0xDD, 0xE9, 0x00, 0x21, 0x0A, 0x4B, 0x9B, 0x68, 0x33, 0xB1, 0x09, 0x20, + 0x08, 0xF0, 0xC0, 0xF8, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, + 0x04, 0x4B, 0xD3, 0xF8, 0xE8, 0x30, 0xCD, 0xE9, 0x00, 0x21, 0x98, 0x47, + 0xDD, 0xE9, 0x00, 0x21, 0xEF, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x0D, 0x78, 0x0C, 0x46, + 0x16, 0x46, 0x98, 0x46, 0x00, 0x2D, 0x3B, 0xD1, 0x91, 0xF8, 0x02, 0xC0, + 0x26, 0x49, 0x27, 0x4A, 0x11, 0xF8, 0x0C, 0x00, 0xE1, 0x78, 0x52, 0xF8, + 0x20, 0x20, 0x60, 0x78, 0x24, 0x4F, 0x25, 0x4B, 0x91, 0x42, 0xB8, 0xBF, + 0x4A, 0x08, 0x00, 0xEB, 0x80, 0x01, 0xC0, 0xEB, 0x01, 0x11, 0x61, 0x44, + 0x07, 0xEB, 0xC1, 0x01, 0x4F, 0xF0, 0x9E, 0x0E, 0x91, 0xF8, 0xA5, 0x11, + 0x0E, 0xFB, 0x00, 0xC0, 0xA8, 0xBF, 0x02, 0xEB, 0xD2, 0x72, 0x07, 0xEB, + 0x80, 0x00, 0xA8, 0xBF, 0xC2, 0xF3, 0x47, 0x02, 0x01, 0xEB, 0x41, 0x01, + 0x80, 0xF8, 0x5A, 0x21, 0x03, 0xEB, 0xC1, 0x01, 0xA2, 0x88, 0x0A, 0x81, + 0x32, 0x46, 0x41, 0x46, 0x03, 0x23, 0x29, 0x20, 0x08, 0xF0, 0x0C, 0xF8, + 0x62, 0x78, 0x02, 0x70, 0xA2, 0x78, 0x42, 0x70, 0x85, 0x70, 0x08, 0xF0, + 0x35, 0xF8, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x48, 0x78, 0x0B, 0x49, + 0xA2, 0x88, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0x10, 0xA1, 0x78, + 0x14, 0xF0, 0xA0, 0xFB, 0x08, 0xB9, 0x04, 0x25, 0xE2, 0xE7, 0x07, 0x49, + 0x0A, 0x68, 0x42, 0xF0, 0x80, 0x02, 0x0A, 0x60, 0x00, 0x25, 0xDB, 0xE7, + 0xC0, 0xB2, 0x15, 0x00, 0x7C, 0x28, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0xF4, 0xE4, 0x17, 0x00, 0x54, 0x00, 0x32, 0x40, 0x2D, 0xE9, 0xF0, 0x43, + 0x04, 0x46, 0x87, 0xB0, 0x10, 0x46, 0x15, 0x46, 0x0E, 0x46, 0x1F, 0x46, + 0x08, 0xF0, 0x7C, 0xFA, 0x40, 0xB1, 0x02, 0x38, 0x80, 0xB2, 0x02, 0x28, + 0x4D, 0xD8, 0x02, 0x24, 0x20, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, + 0xDF, 0xF8, 0x88, 0x83, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x65, 0xDB, 0x3B, 0x2C, 0x00, 0xF2, 0xA7, 0x80, 0x05, 0x2C, + 0x40, 0xF2, 0xE3, 0x80, 0x06, 0x3C, 0x35, 0x2C, 0x4A, 0xD8, 0xDF, 0xE8, + 0x14, 0xF0, 0xBF, 0x01, 0x49, 0x00, 0xB5, 0x01, 0x49, 0x00, 0x49, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x88, 0x01, 0x49, 0x00, 0x6E, 0x01, + 0x49, 0x00, 0x5A, 0x01, 0x49, 0x00, 0x50, 0x01, 0x49, 0x00, 0x3A, 0x01, + 0x49, 0x00, 0x30, 0x01, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x1D, 0x01, + 0x49, 0x00, 0x13, 0x01, 0x49, 0x00, 0x00, 0x01, 0x49, 0x00, 0x49, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0xF6, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x49, 0x00, 0xEF, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, + 0xE2, 0x00, 0xB1, 0x4B, 0xB1, 0x4C, 0x1B, 0x68, 0x28, 0x46, 0x03, 0xF0, + 0x0F, 0x03, 0xE3, 0x74, 0x08, 0xF0, 0x20, 0xFA, 0xAE, 0x4B, 0xA0, 0x74, + 0xD3, 0xF8, 0xE0, 0x30, 0x98, 0x47, 0x28, 0x46, 0x02, 0x21, 0x08, 0xF0, + 0x6F, 0xF9, 0x9E, 0xE7, 0xDF, 0xF8, 0xA0, 0x82, 0x02, 0x24, 0x98, 0xF8, + 0x13, 0x30, 0xA5, 0x4A, 0x1B, 0x01, 0xDB, 0xB2, 0x13, 0x60, 0x28, 0x46, + 0x98, 0xF8, 0x12, 0x10, 0x08, 0xF0, 0x60, 0xF9, 0x20, 0x46, 0x07, 0xB0, + 0xBD, 0xE8, 0xF0, 0x83, 0x9E, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x40, 0xF0, + 0x6F, 0x81, 0x3B, 0x2C, 0x67, 0xD8, 0x05, 0x2C, 0x67, 0xD9, 0x06, 0x3C, + 0x35, 0x2C, 0x64, 0xD8, 0xDF, 0xE8, 0x14, 0xF0, 0x56, 0x01, 0x63, 0x00, + 0x4C, 0x01, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x1F, 0x01, 0x63, 0x00, 0x05, 0x01, 0x63, 0x00, 0xF1, 0x00, 0x63, 0x00, + 0xE7, 0x00, 0x63, 0x00, 0xD1, 0x00, 0x63, 0x00, 0xC7, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0xB4, 0x00, 0x63, 0x00, 0xAA, 0x00, 0x63, 0x00, + 0x97, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x8D, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x86, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x79, 0x00, 0x87, 0x2C, 0x3C, 0xD1, + 0xDF, 0xF8, 0xF0, 0x81, 0xDF, 0xF8, 0xF0, 0x91, 0x00, 0x27, 0x88, 0xF8, + 0x30, 0x70, 0x30, 0x68, 0xD9, 0xF8, 0xF8, 0x30, 0x98, 0x47, 0x04, 0x46, + 0x00, 0x28, 0x40, 0xF0, 0x19, 0x81, 0x98, 0xF8, 0x31, 0x30, 0x00, 0x2B, + 0x97, 0xD0, 0x05, 0xA8, 0x88, 0xF8, 0x31, 0x40, 0x01, 0xF0, 0x74, 0xFD, + 0x00, 0x28, 0x90, 0xD0, 0x05, 0x9A, 0x71, 0x49, 0x92, 0xF8, 0x63, 0x30, + 0x92, 0xF8, 0xC1, 0x04, 0x03, 0xEB, 0xC3, 0x02, 0x03, 0xEB, 0x42, 0x03, + 0x01, 0xEB, 0x43, 0x01, 0x05, 0xF0, 0x9C, 0xFF, 0x81, 0xE7, 0x87, 0x2C, + 0xD4, 0xD0, 0x6A, 0x49, 0x6A, 0x48, 0xDF, 0xF8, 0x98, 0x81, 0x40, 0xF6, + 0x06, 0x22, 0x09, 0xF0, 0xCB, 0xFF, 0x02, 0x24, 0x75, 0xE7, 0x87, 0x2C, + 0xC8, 0xD0, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xED, 0xDB, 0xDF, 0xF8, 0x78, 0x81, 0x02, 0x24, 0x69, 0xE7, 0x5D, 0x4B, + 0xDF, 0xF8, 0x6C, 0x81, 0x9B, 0x6D, 0x30, 0x46, 0x98, 0x47, 0x2A, 0x46, + 0x39, 0x46, 0x3C, 0x20, 0x07, 0xF0, 0x38, 0xFF, 0x00, 0x24, 0x5C, 0xE7, + 0x30, 0x46, 0x09, 0xF0, 0xD3, 0xFF, 0xDF, 0xF8, 0x50, 0x81, 0x00, 0x24, + 0x55, 0xE7, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x28, 0x20, 0xFF, 0xF7, + 0x7B, 0xFE, 0xDF, 0xF8, 0x3C, 0x81, 0x04, 0x46, 0x4B, 0xE7, 0x52, 0x4B, + 0x32, 0x78, 0x1B, 0x68, 0x51, 0x48, 0xDF, 0xF8, 0x2C, 0x81, 0xDB, 0xB2, + 0x03, 0xFB, 0x02, 0xF3, 0x42, 0xEA, 0x03, 0x23, 0x03, 0x60, 0x39, 0x46, + 0x2A, 0x46, 0x21, 0x20, 0x07, 0xF0, 0x14, 0xFF, 0x00, 0x24, 0x38, 0xE7, + 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x1E, 0x20, 0xFF, 0xF7, 0xD4, 0xFA, + 0xDF, 0xF8, 0x00, 0x81, 0x04, 0x46, 0x2E, 0xE7, 0x45, 0x48, 0x33, 0x78, + 0x02, 0x68, 0xDF, 0xF8, 0xF4, 0x80, 0x9B, 0x03, 0x22, 0xF4, 0xE0, 0x32, + 0x03, 0xF4, 0xE0, 0x33, 0x13, 0x43, 0x03, 0x60, 0x39, 0x46, 0x2A, 0x46, + 0x1D, 0x20, 0x07, 0xF0, 0xF7, 0xFE, 0x00, 0x24, 0x1B, 0xE7, 0x3B, 0x46, + 0x31, 0x46, 0x2A, 0x46, 0x18, 0x20, 0xFF, 0xF7, 0x77, 0xFA, 0xDF, 0xF8, + 0xC8, 0x80, 0x04, 0x46, 0x11, 0xE7, 0x73, 0x79, 0xDF, 0xF8, 0xBC, 0x80, + 0x36, 0x4A, 0x31, 0x68, 0x92, 0x6A, 0x08, 0xEB, 0x83, 0x00, 0x41, 0x61, + 0x22, 0xB1, 0x12, 0x79, 0x9A, 0x42, 0x04, 0xBF, 0x32, 0x4B, 0x19, 0x60, + 0x39, 0x46, 0x2A, 0x46, 0x17, 0x20, 0x07, 0xF0, 0xD7, 0xFE, 0x00, 0x24, + 0xFB, 0xE6, 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x14, 0x20, 0xFF, 0xF7, + 0x2B, 0xFA, 0xDF, 0xF8, 0x88, 0x80, 0x04, 0x46, 0xF1, 0xE6, 0x2A, 0x4A, + 0x31, 0x78, 0x13, 0x68, 0xDF, 0xF8, 0x78, 0x80, 0x23, 0xF0, 0xFF, 0x03, + 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, + 0x39, 0x46, 0x2A, 0x46, 0x13, 0x20, 0x07, 0xF0, 0xB9, 0xFE, 0x00, 0x24, + 0xDD, 0xE6, 0x39, 0x46, 0x02, 0x23, 0x2A, 0x46, 0x11, 0x20, 0x07, 0xF0, + 0x49, 0xFE, 0x72, 0x7A, 0xF3, 0x88, 0xB1, 0x7A, 0x02, 0x91, 0xCD, 0xE9, + 0x00, 0x32, 0x04, 0x46, 0xB3, 0x88, 0x72, 0x88, 0x71, 0x78, 0x30, 0x78, + 0xDF, 0xF8, 0x34, 0x80, 0xE6, 0xF7, 0x1E, 0xFA, 0x20, 0x46, 0x07, 0xF0, + 0x67, 0xFE, 0x00, 0x24, 0xC3, 0xE6, 0xDF, 0xF8, 0x24, 0x80, 0x33, 0x68, + 0xD8, 0xF8, 0x04, 0x10, 0x11, 0x4A, 0xC8, 0xF8, 0x00, 0x30, 0x0B, 0x43, + 0x13, 0x60, 0x39, 0x46, 0x2A, 0x46, 0x0F, 0x20, 0x07, 0xF0, 0x8E, 0xFE, + 0x00, 0x24, 0xB2, 0xE6, 0x38, 0x00, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x64, 0x3E, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0xE4, 0x00, 0x32, 0x40, 0xE8, 0x00, 0x32, 0x40, + 0x4C, 0x00, 0x32, 0x40, 0x30, 0x9D, 0x17, 0x00, 0xDC, 0x00, 0x32, 0x40, + 0x90, 0x00, 0x32, 0x40, 0x60, 0x00, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, + 0x3B, 0x46, 0x31, 0x46, 0x2A, 0x46, 0x08, 0x20, 0xFF, 0xF7, 0x96, 0xFD, + 0xDF, 0xF8, 0x2C, 0x81, 0x04, 0x46, 0x8C, 0xE6, 0x3B, 0x46, 0x31, 0x46, + 0x2A, 0x46, 0x06, 0x20, 0xFF, 0xF7, 0x72, 0xFD, 0xDF, 0xF8, 0x18, 0x81, + 0x04, 0x46, 0x82, 0xE6, 0xD9, 0xF8, 0x6C, 0x31, 0x30, 0x68, 0x98, 0x47, + 0x3C, 0x46, 0x7C, 0xE6, 0x3F, 0x49, 0x40, 0x48, 0x40, 0xF6, 0xC9, 0x12, + 0x09, 0xF0, 0xCA, 0xFE, 0x3B, 0x2C, 0x3F, 0xF6, 0xFE, 0xAE, 0x05, 0x2C, + 0x7F, 0xF6, 0xFD, 0xAE, 0x06, 0x3C, 0x35, 0x2C, 0x3F, 0xF6, 0xF9, 0xAE, + 0x01, 0xA3, 0x53, 0xF8, 0x24, 0xF0, 0x00, 0xBF, 0xBD, 0xAD, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xA9, 0xAD, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0x4F, 0xAD, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0x1B, 0xAD, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xF3, 0xAC, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xDF, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xB3, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x9F, 0xAC, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0x79, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x65, 0xAC, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0x3F, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0x2B, 0xAC, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0x1D, 0xAC, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, 0xEF, 0xAB, 0x13, 0x00, + 0xEF, 0xAB, 0x13, 0x00, 0x03, 0xAC, 0x13, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x84, 0x9E, 0x15, 0x00, 0x98, 0x9C, 0x17, 0x00, 0xC0, 0x68, 0xCB, 0x68, + 0xC0, 0x1A, 0xC0, 0x0F, 0x70, 0x47, 0x00, 0xBF, 0x01, 0x48, 0x08, 0xF0, + 0xE9, 0xB9, 0x00, 0xBF, 0xD0, 0x9C, 0x17, 0x00, 0x06, 0x4B, 0x38, 0xB1, + 0xC1, 0x68, 0x04, 0x22, 0x4F, 0xF4, 0x80, 0x20, 0x98, 0x60, 0x19, 0x63, + 0x9A, 0x60, 0x70, 0x47, 0x4F, 0xF4, 0x80, 0x62, 0x9A, 0x60, 0x70, 0x47, + 0x00, 0x10, 0x50, 0x40, 0x33, 0x4A, 0xF8, 0xB5, 0x13, 0x69, 0xCB, 0x1A, + 0x00, 0x2B, 0x0C, 0x46, 0x05, 0x46, 0x57, 0xDB, 0x30, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x46, 0xDB, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2C, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x2B, 0x4F, 0x2C, 0x4E, 0x3B, 0x68, 0x32, 0x68, 0x01, 0x33, 0x95, 0x42, + 0x3B, 0x60, 0x19, 0xD0, 0x29, 0x46, 0x30, 0x46, 0x08, 0xF0, 0x08, 0xFA, + 0x30, 0x46, 0x27, 0x4A, 0xEC, 0x60, 0x29, 0x46, 0x08, 0xF0, 0x40, 0xFA, + 0x30, 0x68, 0x85, 0x42, 0x16, 0xD0, 0x3B, 0x68, 0x23, 0xB1, 0x1F, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, 0xA3, 0xB1, 0x1A, 0x4B, 0x19, 0x69, + 0x64, 0x1A, 0x00, 0x2C, 0x17, 0xDB, 0xF8, 0xBD, 0x30, 0x46, 0x08, 0xF0, + 0xE3, 0xF9, 0x30, 0x46, 0x1A, 0x4A, 0xEC, 0x60, 0x29, 0x46, 0x08, 0xF0, + 0x27, 0xFA, 0x30, 0x68, 0x18, 0x4B, 0xD3, 0xF8, 0xDC, 0x31, 0x98, 0x47, + 0xE3, 0xE7, 0x00, 0x2A, 0xE8, 0xD0, 0x62, 0xB6, 0x0E, 0x4B, 0x19, 0x69, + 0x64, 0x1A, 0x00, 0x2C, 0xE7, 0xDA, 0xBD, 0xE8, 0xF8, 0x40, 0x4F, 0xF0, + 0x80, 0x40, 0x08, 0xF0, 0xE3, 0xB8, 0x09, 0x4B, 0x1B, 0x69, 0xE3, 0x1A, + 0x00, 0x2B, 0xB3, 0xDA, 0x0D, 0x49, 0x0E, 0x48, 0x7D, 0x22, 0x09, 0xF0, + 0xCF, 0xFD, 0xAD, 0xE7, 0x13, 0x69, 0x41, 0x68, 0x0B, 0x48, 0x22, 0x46, + 0x09, 0xF0, 0x4E, 0xFB, 0xA0, 0xE7, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, + 0x38, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0xD0, 0x9C, 0x17, 0x00, 0xE9, 0xAE, 0x13, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x74, 0x9F, 0x15, 0x00, 0x4C, 0x9F, 0x15, 0x00, + 0x38, 0xB5, 0x01, 0x46, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0F, 0x4C, 0x10, 0x4D, + 0x23, 0x68, 0x2A, 0x68, 0x01, 0x33, 0x8A, 0x42, 0x23, 0x60, 0x28, 0x46, + 0x0B, 0xD0, 0x08, 0xF0, 0x99, 0xF9, 0x23, 0x68, 0x33, 0xB1, 0x08, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x38, 0xBD, 0x08, 0xF0, 0x81, 0xF9, 0x06, 0x4B, 0x28, 0x68, 0xD3, 0xF8, + 0xDC, 0x31, 0x98, 0x47, 0xED, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xD0, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0x2C, 0x4F, 0x2D, 0x4D, 0xDF, 0xF8, 0xC8, 0xA0, + 0xDF, 0xF8, 0xC0, 0x80, 0x2B, 0x4E, 0xB9, 0x46, 0x01, 0xE0, 0xA0, 0x68, + 0x98, 0x47, 0x4F, 0xF0, 0x80, 0x40, 0x08, 0xF0, 0x9F, 0xF8, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, + 0x00, 0x30, 0x2B, 0x68, 0x3C, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x4C, 0xB3, + 0x32, 0x69, 0xE3, 0x68, 0x9B, 0x1A, 0x32, 0x2B, 0x08, 0xD4, 0xDA, 0xF8, + 0xDC, 0x31, 0x20, 0x46, 0x98, 0x47, 0x32, 0x69, 0xE3, 0x68, 0x9B, 0x1A, + 0x00, 0x2B, 0x2A, 0xDA, 0x48, 0x46, 0x08, 0xF0, 0x43, 0xF9, 0x2B, 0x68, + 0x33, 0xB1, 0x01, 0x3B, 0xD8, 0xF8, 0x00, 0x20, 0x2B, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x63, 0x68, 0xCB, 0xDA, 0x00, 0x2B, 0xC9, 0xD1, 0x11, 0x49, + 0x11, 0x48, 0xEB, 0x22, 0x09, 0xF0, 0x3C, 0xFD, 0x63, 0x68, 0xC2, 0xE7, + 0xDA, 0xF8, 0xDC, 0x31, 0x20, 0x46, 0x98, 0x47, 0x2B, 0x68, 0x33, 0xB1, + 0x0C, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0xBD, 0xE8, 0xF0, 0x87, 0x2B, 0x68, 0x00, 0x2B, 0xFA, 0xD0, + 0xF2, 0xE7, 0x00, 0xBF, 0xD0, 0x9C, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x90, 0x9F, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0xB5, 0x11, 0xF4, 0x00, 0x05, 0x04, 0x46, 0x0E, 0xD1, 0x90, 0xF8, + 0x5C, 0x22, 0x1E, 0x49, 0x1E, 0x48, 0x01, 0x32, 0xD2, 0xB2, 0x84, 0xF8, + 0x5C, 0x22, 0x09, 0xF0, 0x8D, 0xFA, 0x94, 0xF8, 0x5C, 0x32, 0x09, 0x2B, + 0x15, 0xD8, 0x70, 0xBD, 0x17, 0x49, 0x19, 0x48, 0x09, 0xF0, 0x84, 0xFA, + 0x94, 0xF8, 0x23, 0x30, 0x00, 0x22, 0x0D, 0x2B, 0x84, 0xF8, 0x5C, 0x22, + 0xF3, 0xD8, 0x15, 0x49, 0x15, 0x4A, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, + 0x03, 0x13, 0x12, 0x69, 0xC3, 0xF8, 0x58, 0x22, 0x70, 0xBD, 0x2A, 0x46, + 0x08, 0x23, 0x0C, 0x21, 0x7D, 0x20, 0x07, 0xF0, 0x05, 0xFC, 0x94, 0xF8, + 0x23, 0x30, 0x03, 0x70, 0x94, 0xF8, 0x22, 0x30, 0x43, 0x70, 0x06, 0x46, + 0x04, 0xF1, 0x26, 0x01, 0x84, 0xF8, 0x5C, 0x52, 0x02, 0x30, 0x06, 0x22, + 0x1B, 0xF0, 0x7E, 0xFF, 0x30, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x07, 0xF0, + 0x21, 0xBC, 0x00, 0xBF, 0x34, 0xA0, 0x15, 0x00, 0x9C, 0x9F, 0x15, 0x00, + 0xB4, 0x9F, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x63, 0x30, 0x63, 0x4A, 0x4F, 0xF4, + 0x1E, 0x74, 0x0A, 0x33, 0x04, 0xFB, 0x03, 0xF3, 0x11, 0x46, 0x02, 0xF1, + 0x28, 0x04, 0x1C, 0x44, 0x1A, 0x44, 0x83, 0xB0, 0x0B, 0x46, 0xD2, 0xF8, + 0x08, 0x12, 0x00, 0x29, 0x40, 0xF0, 0xA2, 0x80, 0xD2, 0xF8, 0x30, 0x12, + 0x08, 0x32, 0x00, 0x29, 0x40, 0xF0, 0x9C, 0x80, 0xA2, 0x42, 0xF2, 0xD1, + 0x57, 0x4A, 0x58, 0x4C, 0xDF, 0xF8, 0x70, 0xB1, 0x4F, 0xF4, 0xA4, 0x61, + 0x93, 0xF8, 0x25, 0x60, 0x2E, 0xB1, 0x93, 0xF8, 0x22, 0x60, 0x01, 0xFB, + 0x06, 0x46, 0xB0, 0x42, 0x06, 0xD0, 0x03, 0xF5, 0x1E, 0x73, 0x9A, 0x42, + 0xF2, 0xD1, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x93, 0xF8, 0x23, 0x60, + 0x0D, 0x2E, 0x77, 0xD9, 0x4F, 0xF0, 0x00, 0x08, 0xDB, 0xF8, 0x10, 0xE0, + 0x1E, 0x46, 0x03, 0xF1, 0x28, 0x0C, 0xD6, 0xF8, 0x08, 0x72, 0x77, 0xB9, + 0xD6, 0xF8, 0x30, 0x72, 0x08, 0x36, 0x57, 0xB9, 0xB4, 0x45, 0xF6, 0xD1, + 0xCE, 0xF5, 0x64, 0x0E, 0x0E, 0xF5, 0x61, 0x4E, 0x0E, 0xF1, 0xC0, 0x0E, + 0x1E, 0xEB, 0x08, 0x0F, 0xDB, 0xD5, 0x90, 0xF8, 0x63, 0x60, 0x93, 0xF8, + 0x20, 0xE0, 0x00, 0x96, 0x35, 0x46, 0xC6, 0xEB, 0x86, 0x17, 0x3C, 0x4E, + 0x4F, 0xEA, 0xDE, 0x08, 0x06, 0xEB, 0x87, 0x07, 0x0E, 0xF0, 0x07, 0x0C, + 0x01, 0x26, 0x18, 0xF8, 0x07, 0x90, 0x06, 0xFA, 0x0C, 0xFC, 0x1C, 0xEA, + 0x09, 0x0F, 0x07, 0xEB, 0xDE, 0x06, 0x01, 0x96, 0x5F, 0xFA, 0x8C, 0xFA, + 0x0F, 0xFA, 0x85, 0xFE, 0xBD, 0xD1, 0x4A, 0xEA, 0x09, 0x09, 0x08, 0xF8, + 0x07, 0x90, 0xB0, 0xF8, 0xD0, 0x90, 0x90, 0xF8, 0xD8, 0xC0, 0x09, 0xF1, + 0x01, 0x09, 0xC4, 0x45, 0xA0, 0xF8, 0xD0, 0x90, 0x3E, 0xD8, 0xAF, 0x00, + 0x90, 0xF8, 0xD9, 0x90, 0xC1, 0x45, 0x0B, 0xD2, 0x00, 0x9D, 0x28, 0x4E, + 0x80, 0xF8, 0xD9, 0x80, 0x07, 0xEB, 0x05, 0x0A, 0x06, 0xEB, 0xCA, 0x0A, + 0x01, 0x9E, 0xCA, 0xF8, 0x20, 0x60, 0xC1, 0x46, 0x23, 0x4E, 0x00, 0x9D, + 0xCC, 0xF1, 0x06, 0x0C, 0xCC, 0x44, 0x06, 0xEB, 0xCE, 0x0E, 0x1F, 0xFA, + 0x8C, 0xFC, 0x1E, 0x4E, 0xA0, 0xF8, 0xCE, 0xC0, 0xAC, 0xF1, 0x02, 0x08, + 0x8E, 0xF8, 0x01, 0x80, 0x4F, 0xF0, 0x28, 0x0C, 0x2F, 0x44, 0x06, 0xEB, + 0xC7, 0x07, 0x0C, 0xFB, 0x05, 0x66, 0x90, 0xF8, 0xD8, 0xC0, 0x8E, 0xF8, + 0x04, 0xC0, 0x14, 0x36, 0x0E, 0xF1, 0x04, 0x0E, 0xC7, 0xF8, 0x0C, 0xE0, + 0x7E, 0x60, 0x7C, 0xE7, 0x0D, 0x4D, 0x4F, 0xF4, 0x1E, 0x77, 0x07, 0xFB, + 0x06, 0x56, 0xD6, 0xF8, 0x58, 0x82, 0x81, 0xE7, 0x0F, 0x4A, 0x01, 0x21, + 0x11, 0x70, 0x61, 0xE7, 0x00, 0x9D, 0x0B, 0x4E, 0x05, 0xEB, 0x85, 0x09, + 0x08, 0xF0, 0x1E, 0x0C, 0x06, 0xEB, 0xC9, 0x09, 0x67, 0x44, 0x80, 0xF8, + 0xD8, 0xC0, 0xC9, 0xF8, 0x1C, 0x70, 0xAF, 0x00, 0xB2, 0xE7, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x7E, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x3C, 0x4C, 0x18, 0x00, 0x9C, 0x4B, 0x18, 0x00, 0x2C, 0x50, 0x18, 0x00, + 0x16, 0x2C, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x2D, 0xE9, 0xF8, 0x43, + 0x02, 0x88, 0xC3, 0x78, 0x04, 0x46, 0xB2, 0xB9, 0x82, 0x78, 0x00, 0x2A, + 0x40, 0xF0, 0xAD, 0x80, 0x88, 0x48, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, + 0x03, 0x03, 0x83, 0xF8, 0xDA, 0x20, 0x34, 0xF8, 0x04, 0x1C, 0x42, 0x20, + 0x00, 0x22, 0x07, 0xF0, 0x5B, 0xFB, 0xA4, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, + 0xF8, 0x43, 0x07, 0xF0, 0x69, 0xBB, 0x80, 0x48, 0x80, 0x4D, 0x94, 0xF8, + 0x02, 0xE0, 0xC3, 0xEB, 0x83, 0x11, 0x00, 0xEB, 0x81, 0x00, 0x01, 0x26, + 0xC2, 0xF3, 0xC7, 0x01, 0x02, 0xF0, 0x07, 0x02, 0x06, 0xFA, 0x02, 0xF2, + 0x0F, 0x5C, 0x0E, 0x18, 0x5F, 0xFA, 0x82, 0xFC, 0x05, 0xEB, 0xC3, 0x05, + 0xBE, 0xF1, 0x00, 0x0F, 0x4D, 0xD0, 0x1C, 0xEA, 0x07, 0x0F, 0xD8, 0xD1, + 0xDF, 0xF8, 0xC4, 0xE1, 0x4F, 0xF4, 0xA4, 0x62, 0x4C, 0xEA, 0x07, 0x07, + 0x02, 0xFB, 0x03, 0xE2, 0x37, 0x70, 0xB2, 0xF8, 0xD0, 0x70, 0x92, 0xF8, + 0xD8, 0xC0, 0x01, 0x37, 0x8C, 0x45, 0xA2, 0xF8, 0xD0, 0x70, 0x6C, 0x4F, + 0x0A, 0xD9, 0x03, 0xEB, 0x83, 0x0C, 0x01, 0xF0, 0xFE, 0x08, 0x07, 0xEB, + 0xCC, 0x0C, 0x40, 0x44, 0xCC, 0xF8, 0x1C, 0x00, 0x82, 0xF8, 0xD8, 0x80, + 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x03, 0xE0, 0x4F, 0xEA, 0x83, 0x0C, + 0x90, 0xF8, 0xD9, 0x80, 0x88, 0x45, 0x07, 0xD2, 0x0C, 0xEB, 0x03, 0x02, + 0x07, 0xEB, 0xC2, 0x02, 0x80, 0xF8, 0xD9, 0x10, 0x88, 0x46, 0x16, 0x62, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xEE, 0x0C, 0xEB, 0x03, 0x01, + 0x9E, 0xF8, 0xD8, 0x20, 0x2A, 0x71, 0xC2, 0xF1, 0x06, 0x02, 0x28, 0x20, + 0x42, 0x44, 0x07, 0xEB, 0xC1, 0x01, 0x00, 0xFB, 0x03, 0x73, 0x92, 0xB2, + 0x2E, 0x1D, 0x14, 0x33, 0x90, 0x1E, 0xCE, 0x60, 0x4B, 0x60, 0xAE, 0xF8, + 0xCE, 0x20, 0x68, 0x70, 0x8D, 0xE7, 0x1C, 0xEA, 0x07, 0x0F, 0x8A, 0xD0, + 0xDF, 0xF8, 0x28, 0xE1, 0x4F, 0xF4, 0xA4, 0x68, 0x08, 0xFB, 0x03, 0xF8, + 0x27, 0xEA, 0x02, 0x02, 0x0E, 0xEB, 0x08, 0x0C, 0x32, 0x70, 0xBC, 0xF8, + 0xD0, 0x70, 0x01, 0x3F, 0xBF, 0xB2, 0xAC, 0xF8, 0xD0, 0x70, 0x00, 0x2F, + 0x4D, 0xD0, 0x9C, 0xF8, 0xD8, 0x70, 0x01, 0xF0, 0xFE, 0x02, 0x97, 0x42, + 0x29, 0xD0, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xE2, 0x92, 0xF8, + 0xD9, 0x70, 0x8F, 0x42, 0x35, 0xD0, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x03, 0xE3, 0x93, 0xF8, 0xD8, 0x10, 0x29, 0x71, 0xC1, 0xF1, 0x06, 0x01, + 0x39, 0x44, 0x89, 0xB2, 0x8A, 0x1E, 0xA3, 0xF8, 0xCE, 0x10, 0x6A, 0x70, + 0x59, 0xE7, 0x32, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x03, 0x13, + 0x01, 0x22, 0x83, 0xF8, 0xDA, 0x20, 0x50, 0xE7, 0x3A, 0x5C, 0x07, 0xF1, + 0x01, 0x08, 0x00, 0x2A, 0x51, 0xD1, 0x5F, 0xFA, 0x88, 0xF7, 0x8C, 0xF8, + 0xD8, 0x70, 0xFB, 0x2F, 0xF4, 0xD1, 0xFA, 0x22, 0x17, 0x46, 0xDF, 0xF8, + 0xA8, 0x90, 0x03, 0xEB, 0x83, 0x08, 0x4F, 0xF4, 0xA4, 0x6C, 0x09, 0xEB, + 0xC8, 0x08, 0x0C, 0xFB, 0x03, 0xEC, 0x02, 0x44, 0xC8, 0xF8, 0x1C, 0x20, + 0x8C, 0xF8, 0xD8, 0x70, 0xC1, 0xE7, 0x41, 0xB3, 0x37, 0x78, 0x01, 0x39, + 0xB4, 0x46, 0xC9, 0xB2, 0x01, 0x3E, 0x57, 0xBB, 0x82, 0xF8, 0xD9, 0x10, + 0xF5, 0xE7, 0x0E, 0xF1, 0xD8, 0x02, 0x06, 0x21, 0xAC, 0xF8, 0xCE, 0x10, + 0xFF, 0x21, 0x28, 0xF8, 0x02, 0x10, 0x19, 0x4A, 0x9C, 0xF8, 0xCE, 0x10, + 0x2F, 0x71, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0xC3, 0x03, 0x6E, 0x1D, + 0x8A, 0x1E, 0xDE, 0x60, 0x6A, 0x70, 0xE2, 0x78, 0x9C, 0xF8, 0xD9, 0x50, + 0x12, 0x49, 0x02, 0xEB, 0x82, 0x02, 0x28, 0x44, 0x01, 0xEB, 0x82, 0x02, + 0x18, 0x62, 0x5A, 0x60, 0x09, 0xE7, 0x0F, 0x46, 0x0C, 0x4A, 0x03, 0xEB, + 0x83, 0x01, 0x02, 0xEB, 0xC1, 0x02, 0x10, 0x62, 0x97, 0xE7, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xE2, 0x60, 0x46, 0x92, 0xF8, 0xD9, 0x70, + 0xF0, 0xE7, 0x07, 0xF0, 0xFE, 0x07, 0x3A, 0x46, 0xB1, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x3C, 0x4C, 0x18, 0x00, 0x2C, 0x50, 0x18, 0x00, + 0x9C, 0x4B, 0x18, 0x00, 0x4C, 0x40, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x89, 0x46, 0xD0, 0xF8, 0xB8, 0x50, 0x89, 0x88, 0x99, 0xF8, 0x08, 0xA0, + 0x90, 0xF8, 0x63, 0xB0, 0xD5, 0xF8, 0x24, 0x80, 0x2A, 0x4B, 0xB9, 0xF8, + 0x06, 0x70, 0xD3, 0xF8, 0x54, 0x31, 0x29, 0x4E, 0xA1, 0xEB, 0x0A, 0x0A, + 0x04, 0x46, 0x42, 0x46, 0xA0, 0xF8, 0xCC, 0xA0, 0x58, 0x46, 0x98, 0x47, + 0xB9, 0xF8, 0x06, 0x30, 0x6A, 0x6A, 0x21, 0x6C, 0x23, 0x48, 0x03, 0xF1, + 0xFF, 0x3C, 0x62, 0x44, 0xAA, 0x62, 0x99, 0xF8, 0x08, 0xC0, 0x06, 0xEB, + 0xCB, 0x06, 0xDB, 0x43, 0x0B, 0xEB, 0x8B, 0x0B, 0x0C, 0xF1, 0x01, 0x0C, + 0x00, 0xEB, 0x8B, 0x0B, 0x62, 0x44, 0x53, 0x44, 0x13, 0x44, 0x00, 0x20, + 0xCB, 0xE9, 0x02, 0x23, 0x03, 0x37, 0xCB, 0xF8, 0x10, 0x00, 0x31, 0xB3, + 0x94, 0xF8, 0xC0, 0x34, 0x0A, 0x79, 0x16, 0x49, 0xE3, 0xB1, 0x16, 0x4A, + 0x16, 0x48, 0x13, 0x68, 0x12, 0x68, 0x1B, 0x02, 0xD2, 0xB2, 0x9B, 0xB2, + 0x13, 0x43, 0x00, 0x22, 0x4B, 0x62, 0xC5, 0xE9, 0x0D, 0x21, 0xE8, 0x64, + 0x94, 0xF8, 0x63, 0x30, 0x10, 0x4A, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, + 0xC3, 0x03, 0x01, 0x22, 0x2B, 0x62, 0x84, 0xF8, 0xD6, 0x20, 0x18, 0xF8, + 0x07, 0x30, 0xF3, 0x70, 0xBD, 0xE8, 0xF8, 0x8F, 0x0A, 0x4B, 0x82, 0x42, + 0x08, 0xBF, 0x19, 0x46, 0xDD, 0xE7, 0x04, 0x49, 0xDB, 0xE7, 0x00, 0xBF, + 0x88, 0x1A, 0x17, 0x00, 0x2C, 0x50, 0x18, 0x00, 0x4C, 0x40, 0x18, 0x00, + 0x84, 0x3C, 0x18, 0x00, 0xA0, 0x00, 0x32, 0x40, 0x41, 0x00, 0x00, 0x01, + 0x9C, 0x4B, 0x18, 0x00, 0xC4, 0x3C, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x4D, 0x4D, 0x90, 0xF8, 0x63, 0x30, 0xD0, 0xF8, 0xB8, 0x80, 0x05, 0xEB, + 0xC3, 0x05, 0x04, 0x46, 0x2F, 0x79, 0x00, 0xF1, 0x6C, 0x06, 0xFF, 0xF7, + 0x7D, 0xFD, 0xB0, 0xF8, 0xCC, 0x30, 0xB0, 0xF8, 0xCE, 0x20, 0x13, 0x44, + 0x04, 0x33, 0xC8, 0xF8, 0x2C, 0x30, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, + 0x54, 0xD1, 0x42, 0x4A, 0xD8, 0xF8, 0x24, 0x10, 0xB2, 0xF8, 0xFC, 0x31, + 0x01, 0x33, 0x9B, 0xB2, 0x18, 0x01, 0xA2, 0xF8, 0xFC, 0x31, 0xC8, 0x82, + 0x94, 0xF8, 0xD7, 0x30, 0xAB, 0x70, 0x94, 0xF8, 0xDA, 0x90, 0xCB, 0xBB, + 0xB9, 0xF1, 0x00, 0x0F, 0x31, 0xD1, 0x07, 0xF0, 0xFE, 0x07, 0x38, 0x4B, + 0x1B, 0x78, 0x0B, 0xB1, 0x47, 0xF0, 0x01, 0x07, 0xEB, 0x78, 0x84, 0xF8, + 0xD7, 0x30, 0x2F, 0x71, 0x94, 0xF8, 0xD7, 0x30, 0x94, 0xF8, 0xDB, 0x50, + 0x01, 0x3B, 0x84, 0xF8, 0xD7, 0x30, 0xBD, 0xB1, 0x01, 0x3D, 0x94, 0xF8, + 0xDC, 0x30, 0xED, 0xB2, 0x84, 0xF8, 0xDB, 0x50, 0x63, 0xB1, 0xD8, 0xF8, + 0x24, 0x20, 0xD5, 0x54, 0x94, 0xF8, 0xDD, 0x30, 0x23, 0xB1, 0xD8, 0xF8, + 0x24, 0x20, 0x94, 0xF8, 0xDB, 0x10, 0xD1, 0x54, 0x94, 0xF8, 0xDB, 0x50, + 0x7D, 0xBB, 0x01, 0x23, 0x84, 0xF8, 0xDB, 0x30, 0x20, 0x46, 0x31, 0x46, + 0x06, 0xF0, 0xE0, 0xFC, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x47, 0xF0, + 0x01, 0x07, 0x4F, 0xF0, 0x01, 0x09, 0xCA, 0xE7, 0x19, 0xF0, 0x02, 0x09, + 0x1A, 0xBF, 0x47, 0xF0, 0x01, 0x07, 0x4F, 0xF0, 0x01, 0x09, 0x07, 0xF0, + 0xFE, 0x07, 0xC8, 0xE7, 0x90, 0xF8, 0xC1, 0x04, 0x05, 0xF0, 0x7E, 0xF9, + 0x00, 0x28, 0xA4, 0xD0, 0x94, 0xF8, 0x63, 0x10, 0x15, 0x4A, 0xD8, 0xF8, + 0x2C, 0x30, 0x01, 0xEB, 0x81, 0x01, 0x02, 0xEB, 0x81, 0x02, 0x19, 0x18, + 0x93, 0x68, 0xC8, 0xF8, 0x2C, 0x10, 0x01, 0x3B, 0x18, 0x44, 0xD0, 0x60, + 0x93, 0xE7, 0x02, 0x23, 0x00, 0x22, 0x0C, 0x21, 0x4E, 0x20, 0x94, 0xF8, + 0x63, 0x70, 0x07, 0xF0, 0xE3, 0xF8, 0x07, 0x70, 0x45, 0x70, 0x07, 0xF0, + 0x0F, 0xF9, 0x94, 0xF8, 0xDB, 0x30, 0x00, 0x2B, 0xBF, 0xD0, 0x20, 0x46, + 0x31, 0x46, 0x06, 0xF0, 0xA3, 0xFC, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x83, + 0x2C, 0x50, 0x18, 0x00, 0x20, 0x62, 0x17, 0x00, 0x16, 0x2C, 0x17, 0x00, + 0xFC, 0x3E, 0x18, 0x00, 0xF8, 0xB5, 0x18, 0x4D, 0x18, 0x4F, 0x2E, 0x68, + 0x04, 0x46, 0x36, 0xF8, 0x04, 0x1C, 0x00, 0x22, 0x40, 0x20, 0x07, 0xF0, + 0x29, 0xF9, 0xD7, 0xF8, 0x78, 0x31, 0x29, 0x68, 0x20, 0x46, 0x98, 0x47, + 0x2A, 0x68, 0x00, 0x23, 0x84, 0xF8, 0xDB, 0x30, 0x93, 0x7A, 0x84, 0xF8, + 0xDC, 0x30, 0xD2, 0x7A, 0x84, 0xF8, 0xDD, 0x20, 0x0C, 0x3E, 0xD4, 0xF8, + 0xB8, 0x20, 0x23, 0xB1, 0x52, 0x6A, 0xD3, 0x5C, 0x01, 0x33, 0x84, 0xF8, + 0xDB, 0x30, 0x2B, 0x7A, 0x00, 0x22, 0x6A, 0x72, 0x13, 0xB1, 0xD7, 0xF8, + 0x84, 0x31, 0x98, 0x47, 0x00, 0x23, 0x30, 0x46, 0x2B, 0x60, 0xBD, 0xE8, + 0xF8, 0x40, 0x07, 0xF0, 0x17, 0xB9, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x0E, 0x4D, 0x44, 0x7A, 0x0E, 0x4A, + 0x0E, 0x49, 0x03, 0x46, 0x4F, 0xF4, 0x1A, 0x70, 0x00, 0xFB, 0x04, 0x50, + 0x01, 0x25, 0x55, 0x72, 0x00, 0x25, 0x95, 0x72, 0x9A, 0x88, 0x68, 0x30, + 0x1B, 0xF0, 0x0C, 0xFC, 0x08, 0x4A, 0x09, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, + 0x29, 0x46, 0x00, 0xFB, 0x04, 0x20, 0xD3, 0xF8, 0x94, 0x31, 0xBD, 0xE8, + 0x70, 0x40, 0x18, 0x47, 0xFC, 0x41, 0x18, 0x00, 0xD8, 0x9C, 0x17, 0x00, + 0x14, 0x2A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x7E, 0x4B, 0x2D, 0xE9, 0xF0, 0x4F, 0x1B, 0x68, 0x7D, 0x4D, 0xB3, 0xF9, + 0x00, 0x30, 0x6E, 0x68, 0x00, 0x2B, 0x83, 0xB0, 0x04, 0x46, 0x44, 0xDB, + 0x01, 0x3E, 0x6E, 0x60, 0x00, 0x2E, 0x4D, 0xD0, 0xDF, 0xF8, 0xE0, 0x91, + 0x77, 0x4D, 0x78, 0x4E, 0x78, 0x4F, 0xDF, 0xF8, 0x00, 0xA2, 0xDF, 0xF8, + 0x00, 0x82, 0x03, 0xE0, 0x05, 0xF5, 0x1E, 0x75, 0xB5, 0x42, 0x2F, 0xD0, + 0x95, 0xF8, 0x25, 0x20, 0x4F, 0xF4, 0xA4, 0x61, 0x00, 0x2A, 0xF5, 0xD0, + 0x95, 0xF8, 0x22, 0x30, 0x01, 0xFB, 0x03, 0x73, 0x9C, 0x42, 0xEF, 0xD1, + 0x95, 0xF8, 0x23, 0x30, 0x0D, 0x2B, 0x9B, 0xBF, 0x4F, 0xF4, 0x1E, 0x72, + 0x02, 0xFB, 0x03, 0x93, 0x00, 0x22, 0xD3, 0xF8, 0x58, 0x22, 0xDA, 0xF8, + 0x10, 0x30, 0xA8, 0xEB, 0x03, 0x03, 0xD3, 0x42, 0xDE, 0xD5, 0x20, 0x46, + 0xF2, 0xF7, 0x96, 0xFF, 0x00, 0x28, 0xD9, 0xD0, 0x63, 0x49, 0x95, 0xF8, + 0x23, 0x00, 0x2A, 0x46, 0xF4, 0xF7, 0xAE, 0xFB, 0x00, 0x28, 0xD1, 0xD1, + 0x95, 0xF8, 0x23, 0x10, 0x5F, 0x48, 0x08, 0xF0, 0x89, 0xFE, 0xCB, 0xE7, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2E, 0xB8, 0xD1, 0x5C, 0x49, + 0x5C, 0x48, 0x4F, 0xF4, 0x3F, 0x72, 0x09, 0xF0, 0xF7, 0xF8, 0x6E, 0x68, + 0x01, 0x3E, 0x6E, 0x60, 0x00, 0x2E, 0xB1, 0xD1, 0xDF, 0xF8, 0x74, 0xB1, + 0xFC, 0xF7, 0xCC, 0xFF, 0x94, 0xF8, 0x63, 0x30, 0x9B, 0xF8, 0x00, 0x20, + 0x03, 0xF1, 0x0A, 0x08, 0x00, 0x2A, 0x58, 0xD1, 0xDF, 0xF8, 0x2C, 0x91, + 0x51, 0x4B, 0x1B, 0x78, 0x53, 0xB3, 0x08, 0xEB, 0x88, 0x02, 0x4F, 0xF4, + 0x1E, 0x73, 0xC8, 0xEB, 0x02, 0x12, 0x4E, 0x4F, 0x01, 0x92, 0x03, 0xFB, + 0x08, 0x9B, 0x4F, 0xF0, 0x00, 0x0A, 0xDB, 0xF8, 0x08, 0x32, 0x5F, 0xFA, + 0x8A, 0xF6, 0x0B, 0xF5, 0x02, 0x78, 0x53, 0xB1, 0x40, 0x46, 0x07, 0xF0, + 0xBB, 0xFC, 0xD7, 0xF8, 0x24, 0x34, 0x31, 0x46, 0x98, 0x47, 0xDB, 0xF8, + 0x08, 0x32, 0x00, 0x2B, 0xF4, 0xD1, 0xDB, 0xF8, 0x30, 0x22, 0x00, 0x2A, + 0x5B, 0xD1, 0x0A, 0xF1, 0x01, 0x0A, 0xBA, 0xF1, 0x04, 0x0F, 0x0B, 0xF1, + 0x08, 0x0B, 0xE2, 0xD1, 0x3B, 0x4B, 0x1A, 0x70, 0xAB, 0x7A, 0x03, 0xBB, + 0xEB, 0x68, 0x63, 0xB1, 0x39, 0x4F, 0xDF, 0xF8, 0xF8, 0x80, 0xD7, 0xF8, + 0xD4, 0x61, 0x40, 0x46, 0x07, 0xF0, 0x9A, 0xFC, 0x0C, 0x30, 0xB0, 0x47, + 0xEB, 0x68, 0x00, 0x2B, 0xF5, 0xD1, 0x94, 0xF8, 0x63, 0x00, 0x05, 0x44, + 0x29, 0x7D, 0x19, 0xB1, 0x30, 0x4B, 0xD3, 0xF8, 0x90, 0x31, 0x98, 0x47, + 0x94, 0xF8, 0xDB, 0x30, 0x01, 0x2B, 0x7F, 0xF4, 0x59, 0xAF, 0x20, 0x46, + 0xFB, 0xF7, 0xBE, 0xFA, 0x54, 0xE7, 0x2A, 0x4F, 0x28, 0x68, 0xD7, 0xF8, + 0x8C, 0x31, 0x98, 0x47, 0xD8, 0xE7, 0x04, 0x23, 0x32, 0x46, 0x0C, 0x21, + 0x4A, 0x20, 0x06, 0xF0, 0xA5, 0xFF, 0x80, 0xF8, 0x00, 0x80, 0x46, 0x70, + 0x86, 0x70, 0x06, 0xF0, 0xCF, 0xFF, 0x9B, 0xF8, 0x00, 0x30, 0xDF, 0xF8, + 0x60, 0x90, 0x00, 0x2B, 0x96, 0xD0, 0x4F, 0xF4, 0x1E, 0x7A, 0x0A, 0xFB, + 0x08, 0x9A, 0x9A, 0xF8, 0x31, 0x30, 0x9B, 0x07, 0x0B, 0xD5, 0x1A, 0x4F, + 0x09, 0x22, 0x8A, 0xF8, 0x32, 0x20, 0xD7, 0xF8, 0x20, 0x33, 0x32, 0x46, + 0x51, 0x46, 0x20, 0x46, 0x98, 0x47, 0x8A, 0xF8, 0x32, 0x60, 0x00, 0x23, + 0x8B, 0xF8, 0x00, 0x30, 0x7E, 0xE7, 0x01, 0x98, 0x46, 0x30, 0x50, 0x44, + 0x09, 0xEB, 0xC0, 0x00, 0x07, 0xF0, 0x4C, 0xFC, 0x0E, 0x4B, 0x31, 0x46, + 0xD3, 0xF8, 0x24, 0x34, 0x98, 0x47, 0x0D, 0x48, 0x08, 0xF0, 0xDA, 0xFD, + 0xFE, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xD8, 0x9C, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x7E, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x51, 0xB1, 0x13, 0x00, 0xF8, 0x9F, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xC8, 0x9F, 0x15, 0x00, 0x16, 0x2C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xDC, 0x9F, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0xC0, 0xE1, 0xE4, 0x00, + 0x10, 0x2A, 0x17, 0x00, 0xE4, 0x9C, 0x17, 0x00, 0x38, 0xB5, 0x0E, 0x4D, + 0x0E, 0x4C, 0x18, 0x22, 0x00, 0x21, 0x28, 0x46, 0xE4, 0xF7, 0x42, 0xFB, + 0x05, 0xF1, 0x0C, 0x00, 0x07, 0xF0, 0xCE, 0xFB, 0x20, 0x46, 0x04, 0xF0, + 0xD9, 0xFF, 0x04, 0xF1, 0x26, 0x00, 0x04, 0xF0, 0xD5, 0xFF, 0x04, 0xF1, + 0x4C, 0x00, 0x04, 0xF0, 0xD1, 0xFF, 0x04, 0xF1, 0x72, 0x00, 0xBD, 0xE8, + 0x38, 0x40, 0x04, 0xF0, 0xCB, 0xBF, 0x00, 0xBF, 0xD8, 0x9C, 0x17, 0x00, + 0x64, 0x3E, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x90, 0xF8, 0x63, 0x30, + 0x3F, 0x4D, 0x40, 0x49, 0x40, 0x4F, 0xDF, 0xF8, 0x1C, 0x91, 0x04, 0x46, + 0x03, 0xEB, 0x83, 0x02, 0x3E, 0x48, 0x4F, 0xF4, 0x1A, 0x76, 0x03, 0xEB, + 0x42, 0x02, 0x06, 0xFB, 0x03, 0x11, 0x05, 0xEB, 0xC2, 0x02, 0x00, 0xEB, + 0x83, 0x13, 0x04, 0xF1, 0x6C, 0x00, 0xF4, 0xF7, 0xFD, 0xF8, 0x94, 0xF8, + 0x63, 0x30, 0x37, 0x49, 0xDF, 0xF8, 0xF0, 0xC0, 0x36, 0x48, 0x06, 0x22, + 0xA4, 0xF8, 0xCE, 0x20, 0x00, 0x25, 0x01, 0xEB, 0xC3, 0x02, 0x4F, 0xF0, + 0x05, 0x0E, 0xFF, 0x26, 0xA4, 0xF8, 0xD8, 0x60, 0x84, 0xF8, 0xD7, 0x50, + 0xA4, 0xF8, 0xD0, 0x50, 0x84, 0xF8, 0xDA, 0x50, 0x04, 0x26, 0x01, 0xF8, + 0x33, 0xE0, 0x56, 0x70, 0x94, 0xF8, 0xD7, 0x10, 0x91, 0x70, 0x01, 0x21, + 0x15, 0x71, 0x55, 0x71, 0xD1, 0x70, 0x94, 0xF8, 0xD9, 0x10, 0x03, 0xEB, + 0x83, 0x08, 0xC3, 0xEB, 0x83, 0x16, 0x00, 0xEB, 0x86, 0x00, 0x0C, 0xEB, + 0xC8, 0x06, 0x01, 0x44, 0x07, 0xEB, 0x88, 0x03, 0x31, 0x62, 0x02, 0xEB, + 0x0E, 0x01, 0xC6, 0xE9, 0x03, 0x15, 0x4C, 0xF8, 0x38, 0x90, 0xB2, 0x60, + 0x73, 0x60, 0xB3, 0x61, 0x29, 0x46, 0xFC, 0x22, 0xC6, 0xF8, 0x14, 0x90, + 0xE4, 0xF7, 0xCE, 0xFA, 0x07, 0xEB, 0x88, 0x03, 0x47, 0xF8, 0x28, 0x90, + 0x5D, 0x60, 0x1D, 0x61, 0x94, 0xF8, 0xC0, 0x34, 0x93, 0xB1, 0x94, 0xF8, + 0x63, 0x30, 0x15, 0x48, 0x15, 0x49, 0x03, 0xEB, 0xC3, 0x02, 0x03, 0xEB, + 0x42, 0x02, 0x03, 0xEB, 0x83, 0x03, 0x01, 0xEB, 0x42, 0x01, 0x00, 0xEB, + 0x83, 0x02, 0xC2, 0xE9, 0x01, 0x51, 0x40, 0xF8, 0x23, 0x90, 0x15, 0x61, + 0xD4, 0xF8, 0xB8, 0x30, 0x0D, 0x49, 0x00, 0x22, 0x5A, 0x63, 0xDA, 0x64, + 0x1A, 0x62, 0xD1, 0xF8, 0x88, 0x31, 0xC4, 0xE9, 0x30, 0x34, 0xBD, 0xE8, + 0xF8, 0x83, 0x00, 0xBF, 0x9C, 0x40, 0x18, 0x00, 0xFC, 0x41, 0x18, 0x00, + 0x4C, 0x40, 0x18, 0x00, 0x4C, 0x3F, 0x18, 0x00, 0x2C, 0x50, 0x18, 0x00, + 0x3C, 0x4C, 0x18, 0x00, 0xFC, 0x3E, 0x18, 0x00, 0x64, 0x3E, 0x18, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xDE, 0xFA, 0xFE, 0xCA, 0x9C, 0x4B, 0x18, 0x00, + 0x05, 0x4B, 0x5A, 0x68, 0x18, 0x60, 0x12, 0xB1, 0x01, 0x22, 0x9A, 0x72, + 0x70, 0x47, 0x03, 0x4B, 0xD3, 0xF8, 0x8C, 0x31, 0x18, 0x47, 0x00, 0xBF, + 0xD8, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x06, 0x4B, 0x5A, 0x68, + 0x1A, 0xB9, 0x06, 0x4B, 0xD3, 0xF8, 0xD4, 0x31, 0x18, 0x47, 0xA0, 0xF1, + 0x0C, 0x01, 0x03, 0xF1, 0x0C, 0x00, 0x07, 0xF0, 0x05, 0xBB, 0x00, 0xBF, + 0xD8, 0x9C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x40, 0x4B, 0x41, 0x4A, 0x1B, 0x68, 0x94, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x3F, 0x4E, 0x00, 0x2B, 0x41, 0xDB, 0x75, 0x7A, 0x00, 0x2D, 0x4A, 0xD1, + 0x3D, 0x4A, 0x35, 0x72, 0x17, 0x68, 0x7F, 0x01, 0x6C, 0xB1, 0xDF, 0xF8, + 0xF8, 0x90, 0xDF, 0xF8, 0xF8, 0x80, 0xAA, 0x46, 0x4F, 0xF0, 0x01, 0x0B, + 0x94, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x04, 0xD0, 0x24, 0x68, 0x00, 0x2C, + 0xF8, 0xD1, 0xBD, 0xE8, 0xF8, 0x8F, 0x94, 0xF8, 0xD6, 0x30, 0x00, 0x2B, + 0xF6, 0xD0, 0x94, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xF2, 0xD0, 0x94, 0xF8, + 0xD5, 0x20, 0x94, 0xF8, 0xD4, 0x30, 0x9A, 0x42, 0xEC, 0xD1, 0xD9, 0xF8, + 0x70, 0x31, 0x20, 0x46, 0x98, 0x47, 0x20, 0xB1, 0x98, 0xF8, 0x00, 0x30, + 0x01, 0x33, 0x88, 0xF8, 0x00, 0x30, 0xBB, 0xF1, 0x00, 0x0F, 0x05, 0xD0, + 0xA7, 0xF1, 0x32, 0x02, 0x40, 0xF6, 0xB6, 0x33, 0x9A, 0x42, 0x18, 0xD8, + 0xD5, 0xB9, 0x20, 0x46, 0x02, 0xF0, 0x7A, 0xFE, 0x83, 0x46, 0xF0, 0xB9, + 0x88, 0xF8, 0x00, 0x50, 0xD0, 0xE7, 0x73, 0x68, 0x00, 0x2B, 0xBA, 0xD0, + 0x1D, 0x49, 0x1E, 0x48, 0x40, 0xF2, 0x2F, 0x42, 0x08, 0xF0, 0xFE, 0xFE, + 0x75, 0x7A, 0x00, 0x2D, 0xB4, 0xD0, 0x01, 0x23, 0x33, 0x72, 0xBD, 0xE8, + 0xF8, 0x8F, 0x20, 0x46, 0x02, 0xF0, 0x62, 0xFE, 0x88, 0xF8, 0x00, 0xA0, + 0x24, 0x68, 0x4F, 0xF0, 0x00, 0x0B, 0x01, 0x25, 0x00, 0x2C, 0xB1, 0xD1, + 0xB7, 0xE7, 0x94, 0xF8, 0x63, 0x30, 0x84, 0xF8, 0x88, 0x30, 0xFF, 0x23, + 0x84, 0xF8, 0x89, 0x30, 0x04, 0x21, 0x04, 0xF1, 0x6C, 0x00, 0xF4, 0xF7, + 0xDB, 0xF8, 0x73, 0x68, 0x08, 0xB1, 0x01, 0x33, 0x73, 0x60, 0x01, 0x2B, + 0x02, 0xD0, 0x4F, 0xF0, 0x00, 0x0B, 0x9F, 0xE7, 0xFC, 0xF7, 0x58, 0xFD, + 0x4F, 0xF0, 0x00, 0x0B, 0x9A, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0xD8, 0x9C, 0x17, 0x00, 0x40, 0x80, 0x32, 0x40, + 0x70, 0x79, 0x15, 0x00, 0x20, 0xA0, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x10, 0x2A, 0x17, 0x00, 0xF8, 0xB5, 0x27, 0x4F, 0x7B, 0x68, 0x04, 0x46, + 0x0E, 0x46, 0x13, 0xB1, 0x3C, 0x44, 0x21, 0x75, 0xF8, 0xBD, 0x02, 0x29, + 0x34, 0xD0, 0x03, 0x29, 0x21, 0xD0, 0x01, 0x29, 0x14, 0xD0, 0x21, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x32, 0xDB, 0x1F, 0x4D, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x53, 0x3C, 0x44, 0x00, 0x22, + 0x22, 0x75, 0x93, 0xF8, 0xC1, 0x04, 0x31, 0x46, 0xBD, 0xE8, 0xF8, 0x40, + 0x04, 0xF0, 0xC6, 0xBE, 0x18, 0x4B, 0x19, 0x4A, 0x16, 0x4D, 0x00, 0xEB, + 0x80, 0x01, 0x03, 0xEB, 0x81, 0x03, 0x02, 0xEB, 0x81, 0x02, 0x5A, 0x60, + 0xE6, 0xE7, 0x12, 0x4D, 0x14, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x00, 0x52, 0x00, 0xEB, 0xC0, 0x03, 0x00, 0xEB, 0x43, 0x03, 0x01, 0xEB, + 0x43, 0x01, 0x92, 0xF8, 0xC1, 0x04, 0x04, 0xF0, 0x47, 0xFE, 0xD5, 0xE7, + 0x0A, 0x4A, 0x09, 0x4D, 0x00, 0xEB, 0x80, 0x01, 0x02, 0xEB, 0x81, 0x02, + 0x53, 0x60, 0xCD, 0xE7, 0x09, 0x49, 0x0A, 0x48, 0x04, 0x4D, 0x40, 0xF2, + 0xC6, 0x42, 0x08, 0xF0, 0x71, 0xFE, 0xC5, 0xE7, 0xD8, 0x9C, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x4C, 0x40, 0x18, 0x00, + 0xFC, 0x3E, 0x18, 0x00, 0x64, 0x3E, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x04, 0x23, 0x00, 0x22, + 0x0C, 0x21, 0x44, 0x20, 0x06, 0xF0, 0x76, 0xFD, 0x23, 0x7E, 0x03, 0x70, + 0x04, 0x2B, 0x09, 0xD0, 0x00, 0x23, 0x00, 0x22, 0x43, 0x70, 0xC2, 0x70, + 0xA3, 0x7E, 0x83, 0x70, 0xBD, 0xE8, 0x10, 0x40, 0x06, 0xF0, 0x98, 0xBD, + 0xE3, 0x89, 0x00, 0x3B, 0x18, 0xBF, 0x01, 0x23, 0xF1, 0xE7, 0x00, 0xBF, + 0x38, 0xB5, 0x05, 0xF0, 0xE1, 0xFA, 0x0C, 0x23, 0x05, 0x46, 0x19, 0x46, + 0x00, 0x22, 0x4F, 0x20, 0x06, 0xF0, 0x58, 0xFD, 0x2B, 0x88, 0x03, 0x80, + 0x04, 0x46, 0x28, 0x46, 0x05, 0xF0, 0xDE, 0xFA, 0x10, 0x4A, 0x11, 0x4D, + 0x11, 0x49, 0xA2, 0xFB, 0x00, 0x03, 0x9B, 0x09, 0x63, 0x60, 0x2B, 0x68, + 0xA2, 0xFB, 0x03, 0x23, 0x9B, 0x09, 0x00, 0x22, 0xA3, 0x60, 0xA2, 0x70, + 0x0A, 0x23, 0x0A, 0x68, 0x52, 0xB2, 0x01, 0x3B, 0x3A, 0xB9, 0x13, 0xF0, + 0xFF, 0x03, 0xF8, 0xD1, 0x20, 0x46, 0xBD, 0xE8, 0x38, 0x40, 0x06, 0xF0, + 0x67, 0xBD, 0xA2, 0x70, 0x20, 0x46, 0xBD, 0xE8, 0x38, 0x40, 0x06, 0xF0, + 0x61, 0xBD, 0x00, 0xBF, 0xD3, 0x4D, 0x62, 0x10, 0x20, 0x02, 0x32, 0x40, + 0x0C, 0xB2, 0x33, 0x40, 0x10, 0xB5, 0xC1, 0x89, 0x04, 0x46, 0x02, 0x23, + 0x00, 0x22, 0x48, 0x20, 0x06, 0xF0, 0x22, 0xFD, 0x22, 0x7E, 0x42, 0x70, + 0xA1, 0x7E, 0x05, 0x4A, 0x01, 0x70, 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, + 0xBD, 0xE8, 0x10, 0x40, 0x13, 0x60, 0x06, 0xF0, 0x45, 0xBD, 0x00, 0xBF, + 0x94, 0x40, 0x04, 0x40, 0xF0, 0xB5, 0x04, 0x68, 0x0E, 0x68, 0xA5, 0x1B, + 0x32, 0xD4, 0x8E, 0x46, 0xAB, 0x42, 0x0C, 0xD2, 0xDE, 0xE9, 0x00, 0x76, + 0xDC, 0x19, 0xF6, 0x1B, 0xED, 0x1A, 0xAB, 0x42, 0x06, 0xEB, 0x04, 0x07, + 0xA4, 0x46, 0x1C, 0x44, 0xF8, 0xD3, 0xCE, 0xE9, 0x00, 0xC7, 0xB5, 0xEB, + 0x53, 0x0F, 0x05, 0xD9, 0xDE, 0xE9, 0x00, 0x54, 0x1D, 0x44, 0x23, 0x44, + 0xCE, 0xE9, 0x00, 0x53, 0x43, 0x68, 0x4C, 0x68, 0x1D, 0x1B, 0x00, 0x2D, + 0x09, 0xDB, 0xB2, 0xB1, 0x05, 0x68, 0x09, 0x68, 0x53, 0x60, 0x68, 0x1A, + 0x00, 0x28, 0x17, 0xDA, 0x58, 0x1B, 0x15, 0x60, 0xF0, 0xBD, 0xAA, 0xB1, + 0x05, 0x68, 0x09, 0x68, 0x54, 0x60, 0x6B, 0x1A, 0x00, 0x2B, 0xA8, 0xBF, + 0x60, 0x1A, 0x18, 0xDB, 0x11, 0x60, 0xF0, 0xBD, 0x35, 0x1B, 0x86, 0x46, + 0xCA, 0xE7, 0x00, 0x68, 0x0A, 0x68, 0x81, 0x1A, 0x00, 0x29, 0x0C, 0xDA, + 0x18, 0x1A, 0xF0, 0xBD, 0x58, 0x1A, 0xF1, 0xE7, 0x00, 0x68, 0x0B, 0x68, + 0xC1, 0x1A, 0x00, 0x29, 0xA8, 0xBF, 0xE0, 0x1A, 0xE0, 0xDA, 0x20, 0x1A, + 0xF0, 0xBD, 0x98, 0x1A, 0xF0, 0xBD, 0x60, 0x1B, 0xD9, 0xE7, 0x00, 0xBF, + 0x70, 0xB5, 0x19, 0x4E, 0x90, 0xF8, 0xC1, 0x44, 0x8C, 0x23, 0x03, 0xFB, + 0x04, 0x63, 0x05, 0x46, 0x93, 0xF8, 0x20, 0x20, 0x0A, 0xB9, 0x1B, 0x7C, + 0xFB, 0xB9, 0x8C, 0x23, 0x03, 0xFB, 0x04, 0x64, 0x94, 0xF8, 0x50, 0x20, + 0x12, 0xB9, 0x94, 0xF8, 0x40, 0x30, 0x7B, 0xB9, 0x0F, 0x4B, 0x9B, 0x68, + 0x5B, 0xB1, 0x95, 0xF8, 0x63, 0x10, 0xFF, 0x20, 0x93, 0xF8, 0x4E, 0x20, + 0x8A, 0x42, 0x08, 0xBF, 0x83, 0xF8, 0x4E, 0x00, 0x1B, 0x68, 0x00, 0x2B, + 0xF6, 0xD1, 0x70, 0xBD, 0x08, 0x4B, 0x01, 0x21, 0xD3, 0xF8, 0x08, 0x32, + 0x28, 0x46, 0x98, 0x47, 0xE8, 0xE7, 0x05, 0x4B, 0x11, 0x46, 0xD3, 0xF8, + 0x08, 0x32, 0x98, 0x47, 0xD9, 0xE7, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x48, 0x4B, 0x93, 0xF8, 0x5A, 0x30, 0x9B, 0xB0, 0x01, 0x2B, 0x08, 0x90, + 0x40, 0xF2, 0x93, 0x81, 0xDF, 0xF8, 0x20, 0x91, 0xD9, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xB7, 0x81, 0x08, 0x9C, + 0x40, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x94, 0x30, 0x98, 0x47, 0x23, 0x6C, + 0x94, 0xF8, 0x63, 0x20, 0xDA, 0x76, 0x94, 0xF8, 0x62, 0x20, 0x00, 0x2A, + 0x00, 0xF0, 0xB9, 0x81, 0x02, 0x2A, 0x08, 0xBF, 0x08, 0x9A, 0x39, 0x48, + 0x0A, 0xBF, 0xB2, 0xF8, 0xD2, 0x20, 0x4F, 0xF4, 0xC8, 0x32, 0x92, 0x02, + 0x0A, 0x92, 0x1A, 0x7E, 0x02, 0x2A, 0x02, 0xF1, 0x01, 0x03, 0x00, 0xF0, + 0xB9, 0x81, 0xC3, 0xEB, 0xC3, 0x04, 0x00, 0xEB, 0x84, 0x04, 0xD9, 0x00, + 0x24, 0x7E, 0xFF, 0x2C, 0x0D, 0xD1, 0x01, 0x2A, 0x02, 0xF1, 0x02, 0x03, + 0x08, 0xBF, 0x00, 0x23, 0xC3, 0xEB, 0xC3, 0x02, 0x00, 0xEB, 0x82, 0x02, + 0xD9, 0x00, 0x12, 0x7E, 0xFF, 0x2A, 0x00, 0xF0, 0x98, 0x82, 0x28, 0x4A, + 0xCB, 0x1A, 0x00, 0xEB, 0x83, 0x03, 0x96, 0x68, 0x5B, 0x7E, 0x06, 0x93, + 0x00, 0x2E, 0x00, 0xF0, 0x4A, 0x81, 0x0A, 0x9B, 0x4F, 0xF0, 0x00, 0x0B, + 0x5B, 0x00, 0x0B, 0x93, 0x5F, 0x46, 0x03, 0xE0, 0x36, 0x68, 0x00, 0x2E, + 0x00, 0xF0, 0x9A, 0x80, 0x33, 0x6C, 0x00, 0x2B, 0xF8, 0xD0, 0x08, 0x9A, + 0x12, 0x6C, 0x93, 0x42, 0xF4, 0xD0, 0x96, 0xF8, 0x62, 0x30, 0x00, 0x2B, + 0x00, 0xF0, 0x93, 0x81, 0x02, 0x2B, 0x0A, 0xBF, 0xB6, 0xF8, 0xD2, 0x30, + 0x4F, 0xF4, 0xC8, 0x3B, 0x4F, 0xEA, 0x83, 0x2B, 0x0B, 0x9B, 0x5B, 0x45, + 0x04, 0xD8, 0x0A, 0x9B, 0xBB, 0xFB, 0xF3, 0xF2, 0xBB, 0xFB, 0xF2, 0xFB, + 0x06, 0x9B, 0x4F, 0xEA, 0x5B, 0x00, 0xB0, 0xFB, 0xF3, 0xF5, 0x09, 0x95, + 0xE5, 0xF7, 0x7C, 0xF8, 0x43, 0xF2, 0xB0, 0x64, 0x20, 0x44, 0xA8, 0x42, + 0x00, 0xF2, 0x18, 0x81, 0x00, 0x2F, 0x00, 0xF0, 0x1C, 0x81, 0x06, 0x9B, + 0x09, 0x9A, 0x03, 0xFB, 0x02, 0xF3, 0x07, 0x93, 0x10, 0xAC, 0x00, 0x25, + 0x10, 0xE0, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x90, 0x9D, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x01, 0x35, 0xAF, 0x42, 0x04, 0xF1, 0x14, 0x04, 0x00, 0xF0, 0x03, 0x81, + 0x22, 0x68, 0x5A, 0x45, 0xF6, 0xD1, 0x72, 0x6A, 0x0C, 0x92, 0xD4, 0xE9, + 0x02, 0x01, 0x0D, 0xF1, 0x38, 0x0C, 0x0D, 0xF1, 0x30, 0x0A, 0x02, 0xF5, + 0x1C, 0x5E, 0x8C, 0xE8, 0x03, 0x00, 0x0E, 0xF1, 0x10, 0x0E, 0x52, 0x46, + 0x61, 0x46, 0x50, 0x46, 0x5B, 0x46, 0xCD, 0xF8, 0x34, 0xE0, 0xFF, 0xF7, + 0xB7, 0xFE, 0xD9, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, + 0x80, 0x46, 0xC0, 0xF2, 0x2D, 0x81, 0x06, 0x9B, 0x5A, 0x1E, 0x07, 0x9B, + 0xB3, 0xFB, 0xF2, 0xF2, 0x05, 0x92, 0xE5, 0xF7, 0x31, 0xF8, 0x05, 0x9A, + 0x61, 0x68, 0xA2, 0xF5, 0x7A, 0x62, 0x12, 0x1A, 0x8A, 0x42, 0x38, 0xBF, + 0x0A, 0x46, 0x42, 0x45, 0xC6, 0xD9, 0x05, 0x92, 0x05, 0xEB, 0x85, 0x05, + 0xE5, 0xF7, 0x22, 0xF8, 0x1A, 0xAB, 0x03, 0xEB, 0x85, 0x05, 0x96, 0xF8, + 0x63, 0x10, 0x05, 0x9A, 0x55, 0xF8, 0x18, 0x3C, 0x36, 0x68, 0x01, 0x24, + 0x8C, 0x40, 0x02, 0x44, 0x9A, 0xE8, 0x03, 0x00, 0x23, 0x43, 0x02, 0xF5, + 0x7A, 0x62, 0xA5, 0xF1, 0x20, 0x04, 0x84, 0xE8, 0x03, 0x00, 0x45, 0xF8, + 0x24, 0x2C, 0x45, 0xF8, 0x18, 0x3C, 0x00, 0x2E, 0x7F, 0xF4, 0x66, 0xAF, + 0x00, 0x2F, 0x00, 0xF0, 0xA2, 0x80, 0xDF, 0xF8, 0x88, 0xA3, 0xDD, 0xF8, + 0x20, 0xB0, 0x05, 0x96, 0x09, 0x96, 0x0B, 0x96, 0x07, 0x96, 0x12, 0xAC, + 0x06, 0x97, 0x54, 0xF8, 0x08, 0x7C, 0x0A, 0x9B, 0xB7, 0xFB, 0xF3, 0xF2, + 0x03, 0xFB, 0x12, 0x72, 0x00, 0x2A, 0x00, 0xF0, 0x3A, 0x81, 0xE4, 0xF7, + 0xED, 0xFF, 0x54, 0xE9, 0x01, 0x63, 0xA3, 0xF5, 0xBB, 0x53, 0x10, 0x3B, + 0x1D, 0x1A, 0xE4, 0xF7, 0xE5, 0xFF, 0xDA, 0xF8, 0x10, 0x30, 0x54, 0xF8, + 0x08, 0x1C, 0xEB, 0x1A, 0x06, 0xF5, 0x7A, 0x66, 0x00, 0x2B, 0x06, 0xEB, + 0x00, 0x07, 0xC0, 0xF2, 0xEA, 0x80, 0xDA, 0xF8, 0x10, 0x20, 0x6B, 0x1A, + 0x9A, 0x1A, 0x00, 0x2A, 0x80, 0xF2, 0xDB, 0x80, 0xCD, 0xE9, 0x01, 0x75, + 0xBE, 0x4B, 0x00, 0x91, 0xD3, 0xF8, 0x04, 0x32, 0xDF, 0xF8, 0x1C, 0x83, + 0x1E, 0x46, 0x00, 0x22, 0xFF, 0x23, 0x01, 0x21, 0x58, 0x46, 0xB0, 0x47, + 0xEB, 0x19, 0xB9, 0x4E, 0x25, 0x60, 0x63, 0x60, 0x07, 0x46, 0x00, 0x25, + 0xA3, 0x68, 0xEB, 0x40, 0xDB, 0x07, 0x22, 0xD5, 0x72, 0x6A, 0x54, 0xF8, + 0x08, 0x3C, 0x0E, 0x92, 0x02, 0xF5, 0x1C, 0x5C, 0x0C, 0xF1, 0x10, 0x0C, + 0x00, 0x22, 0x0E, 0xA9, 0x20, 0x46, 0xCD, 0xF8, 0x3C, 0xC0, 0xFF, 0xF7, + 0x21, 0xFE, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0xC3, 0x80, 0x0E, 0x9A, 0x63, 0x68, 0x9B, 0xF8, 0x63, 0x10, + 0x86, 0xF8, 0x4E, 0x10, 0x9B, 0x1A, 0x00, 0x22, 0x73, 0x65, 0x86, 0xF8, + 0x4F, 0x70, 0xA6, 0xF8, 0x58, 0x20, 0x01, 0x35, 0x04, 0x2D, 0x06, 0xF5, + 0xA4, 0x66, 0xD3, 0xD1, 0x05, 0x9B, 0x06, 0x9A, 0x01, 0x33, 0x9A, 0x42, + 0x05, 0x93, 0x04, 0xF1, 0x14, 0x04, 0x90, 0xD1, 0x07, 0x9B, 0x33, 0xB3, + 0x0B, 0x9B, 0x0A, 0x99, 0x03, 0xF5, 0x9C, 0x50, 0x09, 0x9B, 0x08, 0x30, + 0x83, 0x42, 0xA8, 0xBF, 0x03, 0x46, 0x18, 0x46, 0x01, 0xEB, 0xD1, 0x73, + 0xB0, 0xEB, 0x63, 0x0F, 0x4F, 0xEA, 0x63, 0x02, 0x00, 0xF3, 0x18, 0x81, + 0x52, 0x42, 0x82, 0x42, 0xC4, 0xBF, 0x0A, 0x9B, 0xC0, 0x18, 0x8F, 0x4B, + 0xD3, 0xF8, 0x6C, 0x31, 0x98, 0x47, 0x08, 0x9C, 0x8E, 0x4A, 0x94, 0xF8, + 0x4D, 0x30, 0x20, 0x65, 0x43, 0xF0, 0x20, 0x03, 0x01, 0x21, 0x84, 0xF8, + 0x4D, 0x30, 0x82, 0xF8, 0x31, 0x10, 0x1B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0xE4, 0xF7, 0x5C, 0xFF, 0x03, 0x19, 0x09, 0x93, 0x00, 0x2F, 0x7F, 0xF4, + 0xE4, 0xAE, 0xD9, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, + 0x7B, 0xDB, 0x1A, 0xAB, 0x07, 0xEB, 0x87, 0x02, 0x70, 0x6A, 0x03, 0xEB, + 0x82, 0x02, 0x09, 0x9B, 0x42, 0xF8, 0x28, 0xBC, 0x00, 0xF5, 0x1C, 0x51, + 0x42, 0xE9, 0x09, 0x30, 0x10, 0x31, 0x42, 0xF8, 0x1C, 0x1C, 0xBC, 0x00, + 0x96, 0xF8, 0x63, 0x20, 0x3C, 0x44, 0x1A, 0xAB, 0x03, 0xEB, 0x84, 0x04, + 0x01, 0x23, 0x93, 0x40, 0x01, 0x37, 0x44, 0xF8, 0x18, 0x3C, 0x8F, 0xE6, + 0x03, 0x6C, 0xDB, 0x7E, 0xFF, 0x2B, 0x3F, 0xF4, 0x44, 0xAE, 0x90, 0xF8, + 0x63, 0x20, 0x9A, 0x42, 0x3F, 0xF4, 0x3F, 0xAE, 0x6E, 0x49, 0x6F, 0x48, + 0x40, 0xF2, 0xA7, 0x22, 0x08, 0xF0, 0x8E, 0xFB, 0x37, 0xE6, 0x08, 0x9A, + 0x6C, 0x49, 0x92, 0xF8, 0x6C, 0x20, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, + 0x02, 0x12, 0x6A, 0x48, 0x92, 0x68, 0x0A, 0x92, 0x1A, 0x7E, 0x02, 0x2A, + 0x02, 0xF1, 0x01, 0x03, 0x7F, 0xF4, 0x47, 0xAE, 0x03, 0x7E, 0xFF, 0x2B, + 0x40, 0xF0, 0xEE, 0x80, 0x01, 0x23, 0x4D, 0xE6, 0x06, 0x9B, 0x01, 0x2B, + 0x3F, 0xF6, 0xCF, 0xAE, 0x5D, 0x49, 0x61, 0x48, 0x40, 0xF2, 0xD3, 0x22, + 0x08, 0xF0, 0x6C, 0xFB, 0xC7, 0xE6, 0x5C, 0x4A, 0x96, 0xF8, 0x6C, 0x30, + 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0xD3, 0xF8, 0x08, 0xB0, + 0x6A, 0xE6, 0xDA, 0xF8, 0x10, 0x20, 0x1D, 0x46, 0x5B, 0x1A, 0x9A, 0x1A, + 0x00, 0x2A, 0xF8, 0xDA, 0x1C, 0xE7, 0xDA, 0xF8, 0x10, 0x30, 0x0D, 0x44, + 0xEB, 0x1A, 0x00, 0x2B, 0xBF, 0xF6, 0x16, 0xAF, 0xDA, 0xF8, 0x10, 0x30, + 0x0D, 0x44, 0xEB, 0x1A, 0x00, 0x2B, 0xF2, 0xDB, 0x0E, 0xE7, 0x96, 0xF8, + 0x4E, 0x30, 0xFF, 0x2B, 0x3F, 0xF4, 0x38, 0xAF, 0x47, 0x49, 0x4F, 0xF4, + 0x58, 0x72, 0x40, 0x46, 0x08, 0xF0, 0x40, 0xFB, 0x30, 0xE7, 0x02, 0x2F, + 0x00, 0xF0, 0x98, 0x80, 0x1A, 0xAB, 0x07, 0xEB, 0x87, 0x02, 0x70, 0x6A, + 0x03, 0xEB, 0x82, 0x02, 0x09, 0x9B, 0x42, 0xF8, 0x28, 0xBC, 0x00, 0xF5, + 0x1C, 0x51, 0x42, 0xE9, 0x09, 0x30, 0x10, 0x31, 0x42, 0xF8, 0x1C, 0x1C, + 0xBC, 0x00, 0x96, 0xF8, 0x63, 0x20, 0x1F, 0x2A, 0x7F, 0xF6, 0x7E, 0xAF, + 0x37, 0x49, 0x3C, 0x48, 0x40, 0xF2, 0xED, 0x22, 0x08, 0xF0, 0x20, 0xFB, + 0x74, 0xE7, 0x3A, 0x4B, 0xDA, 0xF8, 0x10, 0x00, 0x19, 0x68, 0x0A, 0x9B, + 0x00, 0xEB, 0x41, 0x10, 0x9F, 0x42, 0x28, 0xBF, 0x1F, 0x46, 0x00, 0xF5, + 0x1C, 0x55, 0x10, 0x35, 0x3B, 0x46, 0x0E, 0xA9, 0x0E, 0x90, 0x20, 0x46, + 0x0F, 0x95, 0xFF, 0xF7, 0x17, 0xFD, 0x0E, 0x9E, 0x23, 0x68, 0x54, 0xF8, + 0x04, 0x5C, 0x9A, 0x1B, 0x00, 0x2A, 0x1D, 0x44, 0x62, 0x68, 0xA5, 0xF5, + 0xFA, 0x65, 0xB4, 0xBF, 0xB6, 0x1A, 0x3E, 0x1A, 0xAD, 0x1A, 0xE4, 0xF7, + 0x91, 0xFE, 0x00, 0xF5, 0x7A, 0x60, 0xA8, 0x42, 0x34, 0xDC, 0x54, 0xE9, + 0x02, 0x78, 0xE4, 0xF7, 0x89, 0xFE, 0xA7, 0xF5, 0x5A, 0x53, 0x30, 0x3B, + 0xA3, 0xEB, 0x08, 0x03, 0x07, 0x9A, 0xAD, 0x1B, 0x1B, 0x1A, 0x2B, 0x44, + 0xDA, 0xB1, 0x09, 0x9A, 0xAA, 0x42, 0x1F, 0xDB, 0x0B, 0x9A, 0x9A, 0x42, + 0x0A, 0xDD, 0x0A, 0x9A, 0x13, 0x44, 0x15, 0x44, 0x09, 0x9A, 0xAA, 0x42, + 0xFF, 0xF6, 0x83, 0xAE, 0x0B, 0x9A, 0x9A, 0x42, 0x3F, 0xF7, 0x7F, 0xAE, + 0x0B, 0x9A, 0xAA, 0x42, 0xB8, 0xBF, 0x2A, 0x46, 0x0B, 0x92, 0x09, 0x9A, + 0x9A, 0x42, 0xA8, 0xBF, 0x1A, 0x46, 0x09, 0x92, 0x73, 0xE6, 0x09, 0x93, + 0x01, 0x23, 0x0B, 0x95, 0x07, 0x93, 0x6E, 0xE6, 0x40, 0x1A, 0xEA, 0xE6, + 0x0A, 0x9A, 0xAD, 0x1A, 0x9B, 0x1A, 0xE1, 0xE7, 0xE4, 0xF7, 0x56, 0xFE, + 0x00, 0xF5, 0x7A, 0x65, 0xC5, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x48, 0xA0, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, + 0xD0, 0xA0, 0x15, 0x00, 0x00, 0xA1, 0x15, 0x00, 0x40, 0x80, 0x32, 0x40, + 0x00, 0x10, 0x50, 0x40, 0x10, 0xA1, 0x15, 0x00, 0x40, 0xF2, 0xE7, 0x22, + 0x14, 0x49, 0x15, 0x48, 0x08, 0xF0, 0x9E, 0xFA, 0xD9, 0xF8, 0x00, 0x20, + 0x09, 0x9B, 0xB2, 0xF9, 0x00, 0x20, 0xCD, 0xF8, 0x68, 0xB0, 0x1B, 0x93, + 0x73, 0x6A, 0x1C, 0x93, 0x03, 0xF5, 0x1C, 0x53, 0x10, 0x33, 0x00, 0x2A, + 0x1D, 0x93, 0x4F, 0xF0, 0x08, 0x04, 0xFF, 0xF6, 0x60, 0xAF, 0xDF, 0xE6, + 0x00, 0x23, 0x19, 0x46, 0x67, 0xE5, 0xD9, 0xF8, 0x00, 0x30, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x05, 0xDA, 0x04, 0x49, 0x05, 0x48, 0x40, 0xF2, + 0xAE, 0x22, 0x08, 0xF0, 0x7B, 0xFA, 0x00, 0x23, 0x5B, 0x7E, 0xFF, 0xDE, + 0x70, 0x79, 0x15, 0x00, 0xE4, 0xA0, 0x15, 0x00, 0xC4, 0xA0, 0x15, 0x00, + 0x0A, 0x4B, 0x03, 0xF1, 0x54, 0x01, 0x1A, 0x7E, 0xFF, 0x2A, 0x02, 0xD0, + 0xDA, 0x7E, 0xFF, 0x2A, 0x04, 0xD1, 0x1C, 0x33, 0x8B, 0x42, 0xF6, 0xD1, + 0x00, 0x20, 0x70, 0x47, 0x04, 0x4B, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, + 0x02, 0x32, 0x02, 0x60, 0x01, 0x20, 0x70, 0x47, 0x90, 0x9D, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x0E, 0x46, 0x85, 0xB0, + 0x14, 0x46, 0x05, 0x46, 0x00, 0x28, 0x54, 0xD0, 0x07, 0x46, 0x00, 0x2C, + 0x3A, 0xD0, 0xA3, 0x7A, 0xFF, 0x2B, 0x37, 0xD0, 0x3D, 0x4A, 0x23, 0x7A, + 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x20, + 0x00, 0x2A, 0x5E, 0xD0, 0x02, 0x2A, 0x52, 0xD0, 0x4F, 0xF4, 0x48, 0x4A, + 0x4F, 0xF4, 0xC8, 0x39, 0x60, 0x68, 0xDF, 0xF8, 0xE0, 0x80, 0x00, 0xF5, + 0x1C, 0x5B, 0xE4, 0xF7, 0xC9, 0xFD, 0x0B, 0xF1, 0x10, 0x0B, 0x03, 0x46, + 0xE1, 0x7A, 0xD8, 0xF8, 0xFC, 0x21, 0x28, 0x46, 0x9B, 0x44, 0x90, 0x47, + 0x83, 0x1B, 0x13, 0xEB, 0x0A, 0x0F, 0x05, 0xD5, 0xAA, 0xEB, 0x06, 0x03, + 0x48, 0x44, 0xC3, 0x42, 0xFC, 0xD4, 0x83, 0x1B, 0x00, 0x2B, 0x0B, 0xF5, + 0x0C, 0x53, 0xB8, 0xBF, 0x00, 0xF1, 0xFF, 0x36, 0x28, 0x33, 0x9B, 0x1B, + 0x00, 0x2B, 0x31, 0xDB, 0x0B, 0xF5, 0x7A, 0x60, 0x80, 0x1B, 0x06, 0xE0, + 0xE4, 0xF7, 0xA6, 0xFD, 0xDF, 0xF8, 0x8C, 0x80, 0x00, 0xF5, 0x5A, 0x50, + 0x30, 0x30, 0x00, 0x22, 0x01, 0x23, 0xCD, 0xE9, 0x01, 0x06, 0xD8, 0xF8, + 0x04, 0x42, 0x00, 0x92, 0x38, 0x46, 0x19, 0x46, 0xA0, 0x47, 0xFF, 0x38, + 0x18, 0xBF, 0x01, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x17, 0x4B, + 0x03, 0xF1, 0x54, 0x01, 0x1A, 0x7E, 0xFF, 0x2A, 0x02, 0xD0, 0xDF, 0x7E, + 0xFF, 0x2F, 0x1C, 0xD1, 0x1C, 0x33, 0x99, 0x42, 0xF6, 0xD1, 0x00, 0x20, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB3, 0xF8, 0xD2, 0x30, 0x4F, 0xEA, + 0x83, 0x29, 0x4F, 0xEA, 0x43, 0x2A, 0xA9, 0xE7, 0x41, 0xF2, 0x88, 0x30, + 0xD5, 0xE7, 0x93, 0xF8, 0x6C, 0x30, 0x0A, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, + 0x01, 0xFB, 0x03, 0x23, 0xD3, 0xF8, 0x08, 0x90, 0x4F, 0xEA, 0x59, 0x0A, + 0x9A, 0xE7, 0x03, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x37, + 0x7F, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x0C, 0x46, + 0x02, 0x7A, 0x17, 0x49, 0x23, 0x7A, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, + 0x02, 0x12, 0x05, 0xFB, 0x03, 0x13, 0x12, 0x6C, 0x1B, 0x6C, 0x9A, 0x42, + 0x0D, 0xD0, 0x45, 0x68, 0xE4, 0xF7, 0x4A, 0xFD, 0x64, 0x68, 0x06, 0x46, + 0xE4, 0xF7, 0x46, 0xFD, 0x2A, 0x1B, 0x06, 0xD4, 0x63, 0x1B, 0x00, 0x2B, + 0x0C, 0xDB, 0xA5, 0x42, 0x08, 0xD0, 0x00, 0x20, 0x70, 0xBD, 0xA4, 0xF5, + 0x5A, 0x53, 0x30, 0x3B, 0x5B, 0x1B, 0x9E, 0x1B, 0x00, 0x2E, 0xF1, 0xDA, + 0x01, 0x20, 0x70, 0xBD, 0xA2, 0xF5, 0x5A, 0x53, 0x30, 0x3B, 0x1B, 0x1A, + 0x00, 0x2B, 0xF7, 0xDB, 0xA5, 0x42, 0xEC, 0xD1, 0xF4, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x07, 0x46, 0x83, 0xB0, + 0x0D, 0x46, 0x00, 0xF1, 0x44, 0x08, 0x91, 0x46, 0x22, 0xB9, 0x90, 0xF8, + 0x4D, 0x30, 0xDB, 0x07, 0x00, 0xF1, 0xA3, 0x80, 0xDF, 0xF8, 0x64, 0xA1, + 0xD7, 0xF8, 0x40, 0xB0, 0xDA, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x79, 0xD1, + 0xDA, 0xF8, 0x50, 0x30, 0x0B, 0xB1, 0x9B, 0x45, 0x2E, 0xD1, 0xBD, 0x64, + 0xE4, 0xF7, 0x0A, 0xFD, 0x05, 0xF5, 0x5A, 0x53, 0xDA, 0xF8, 0x10, 0x40, + 0x2F, 0x33, 0x1E, 0x18, 0x00, 0x2C, 0x00, 0xF0, 0x88, 0x80, 0xDF, 0xF8, + 0x38, 0xA1, 0x0B, 0xE0, 0xDA, 0xF8, 0xA0, 0x30, 0x98, 0x47, 0xD3, 0x46, + 0x40, 0xBB, 0x63, 0x68, 0xEB, 0x1A, 0x00, 0x2B, 0x08, 0xDB, 0x24, 0x68, + 0x00, 0x2C, 0x78, 0xD0, 0x63, 0x68, 0xF3, 0x1A, 0x00, 0x2B, 0x21, 0x46, + 0x40, 0x46, 0xED, 0xDA, 0x3F, 0x48, 0x42, 0x46, 0x21, 0x46, 0x06, 0xF0, + 0xD9, 0xFD, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x01, 0x03, 0x87, 0xF8, + 0x4D, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDA, 0xF8, 0x54, 0x60, + 0xE4, 0xF7, 0xDA, 0xFC, 0xAE, 0x1B, 0xA6, 0xF5, 0x7A, 0x66, 0x30, 0x1A, + 0xC4, 0x0F, 0x00, 0x2C, 0xC5, 0xD0, 0xDF, 0xF8, 0xDC, 0xB0, 0x00, 0x24, + 0x97, 0xF8, 0xC0, 0x34, 0x4B, 0xB1, 0x31, 0x4A, 0x97, 0xF8, 0xC1, 0x34, + 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x70, 0x30, 0x01, 0x2B, + 0x1D, 0xD0, 0x97, 0xF8, 0x62, 0x30, 0xDB, 0xF8, 0x2C, 0x40, 0x7B, 0xB1, + 0x02, 0x2B, 0x0A, 0xBF, 0xB7, 0xF8, 0xD2, 0x10, 0x4F, 0xF4, 0xC8, 0x31, + 0x89, 0x02, 0x09, 0xF1, 0x01, 0x02, 0x29, 0x44, 0x38, 0x46, 0x23, 0x46, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x22, 0x4A, 0x97, 0xF8, + 0x6C, 0x30, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x99, 0x68, + 0xED, 0xE7, 0xDB, 0xF8, 0x90, 0x30, 0x22, 0x46, 0x29, 0x46, 0x38, 0x46, + 0x98, 0x47, 0x97, 0xF8, 0x62, 0x30, 0xDB, 0xF8, 0x2C, 0x40, 0x00, 0x2B, + 0xDA, 0xD1, 0xE9, 0xE7, 0xDA, 0xF8, 0x24, 0x20, 0x01, 0x92, 0x56, 0x68, + 0xE4, 0xF7, 0x92, 0xFC, 0x01, 0x9A, 0x93, 0x68, 0x06, 0xF5, 0x7A, 0x66, + 0x9B, 0x45, 0x06, 0xEB, 0x00, 0x04, 0x0A, 0xD0, 0xE4, 0xF7, 0x88, 0xFC, + 0x01, 0x9A, 0xD3, 0x68, 0x04, 0xF5, 0x7A, 0x64, 0x04, 0x44, 0x13, 0xB1, + 0x04, 0xF5, 0x1C, 0x54, 0x10, 0x34, 0x2C, 0x1B, 0xE4, 0x0F, 0x00, 0x2C, + 0x3F, 0xF4, 0x6D, 0xAF, 0xA5, 0xE7, 0x00, 0x24, 0x8A, 0xE7, 0x05, 0x48, + 0x41, 0x46, 0x06, 0xF0, 0xD9, 0xFC, 0x97, 0xF8, 0x4D, 0x30, 0x23, 0xF0, + 0x01, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x51, 0xE7, 0x40, 0x9D, 0x17, 0x00, + 0x48, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x81, 0x46, 0x1A, 0x48, + 0x88, 0x46, 0x17, 0x46, 0x06, 0xF0, 0xB4, 0xFC, 0x18, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x0C, 0xDB, 0x16, 0x4D, + 0x28, 0x46, 0x21, 0x46, 0x50, 0xF8, 0x20, 0x6F, 0xE7, 0x60, 0xC4, 0xE9, + 0x01, 0x98, 0x06, 0xF0, 0x5F, 0xFC, 0x4E, 0xB1, 0xBD, 0xE8, 0xF0, 0x87, + 0x00, 0x28, 0xF0, 0xD1, 0x0F, 0x49, 0x10, 0x48, 0xD6, 0x22, 0x08, 0xF0, + 0xA9, 0xF8, 0xEA, 0xE7, 0x0E, 0x4B, 0x61, 0x68, 0x1B, 0x69, 0xAC, 0x64, + 0xCB, 0x1A, 0x14, 0x2B, 0x07, 0xD4, 0x0C, 0x4B, 0x05, 0xF1, 0x40, 0x00, + 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x6B, 0x6C, + 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x48, 0x9D, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x48, 0xA1, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0xC1, 0x4B, 0xDF, 0xF8, 0x0C, 0x83, 0x1D, 0x69, + 0xD0, 0xF8, 0x40, 0x90, 0x2F, 0x7A, 0x6B, 0x68, 0x89, 0xB0, 0x4F, 0xF4, + 0xA4, 0x6A, 0xA3, 0xF5, 0x7A, 0x63, 0x0A, 0xFB, 0x07, 0x8B, 0x0C, 0x46, + 0x03, 0x92, 0x01, 0x93, 0x06, 0x46, 0xE4, 0xF7, 0x05, 0xFC, 0x01, 0x9B, + 0xDB, 0xF8, 0x40, 0x20, 0x1B, 0x1B, 0x1B, 0x1A, 0x4A, 0x45, 0x01, 0x93, + 0x66, 0xD0, 0x6B, 0x68, 0x02, 0x93, 0xE4, 0xF7, 0xF9, 0xFB, 0x02, 0x9B, + 0x99, 0xF8, 0x1B, 0x20, 0x04, 0x90, 0xA3, 0xF5, 0x7A, 0x63, 0x19, 0x1A, + 0xFF, 0x2A, 0x02, 0x91, 0x20, 0xD1, 0x96, 0xF8, 0x4E, 0x60, 0x05, 0x93, + 0xFF, 0x2E, 0x40, 0xF0, 0x8F, 0x80, 0x01, 0x9B, 0x03, 0x9A, 0x18, 0x46, + 0x10, 0x44, 0xB2, 0xEB, 0x50, 0x0F, 0x4F, 0xEA, 0x50, 0x03, 0x00, 0xF2, + 0xA9, 0x80, 0x03, 0x9A, 0xA4, 0x4E, 0xA4, 0x1A, 0x1C, 0x44, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x87, 0x2A, 0x46, 0xD6, 0xF8, 0x88, 0x30, + 0x39, 0x6C, 0x20, 0x46, 0x98, 0x47, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x0A, 0xFB, 0x02, 0x8A, 0x50, 0x46, 0x07, 0xAA, 0x06, 0xA9, 0xDB, 0xF8, + 0x40, 0x90, 0x01, 0x93, 0x03, 0xF0, 0xE8, 0xFB, 0x83, 0x46, 0x00, 0x28, + 0x00, 0xF0, 0x8C, 0x80, 0x07, 0x9C, 0x02, 0x99, 0x01, 0x9B, 0x0A, 0x1B, + 0x00, 0x2A, 0xC0, 0xF2, 0x41, 0x81, 0x06, 0x9A, 0xD1, 0x1A, 0x04, 0x9B, + 0xD9, 0x42, 0x7D, 0xD5, 0x14, 0x1B, 0xE4, 0xF7, 0xB1, 0xFB, 0x00, 0xF5, + 0x0C, 0x50, 0x28, 0x30, 0x84, 0x42, 0x40, 0xF2, 0x3B, 0x81, 0x8B, 0x4E, + 0x07, 0x98, 0xD6, 0xF8, 0x88, 0x30, 0x49, 0x46, 0x00, 0x22, 0x98, 0x47, + 0x06, 0x9C, 0xD6, 0xF8, 0x88, 0x90, 0xE4, 0xF7, 0x9F, 0xFB, 0xA4, 0xF5, + 0x7A, 0x64, 0x20, 0x1A, 0xDA, 0xF8, 0x40, 0x10, 0x02, 0x9C, 0x00, 0x22, + 0xC8, 0x47, 0xBA, 0xE7, 0xE4, 0xF7, 0x94, 0xFB, 0x01, 0x9B, 0xA3, 0xF5, + 0x7A, 0x62, 0x12, 0x1A, 0x41, 0xF2, 0x87, 0x33, 0x9A, 0x42, 0x01, 0x92, + 0xB9, 0xDD, 0x6F, 0x68, 0xE4, 0xF7, 0x88, 0xFB, 0x99, 0xF8, 0x1B, 0xB0, + 0x02, 0x97, 0x3B, 0x1A, 0xBB, 0xF1, 0xFF, 0x0F, 0x01, 0x9A, 0x04, 0x90, + 0xA3, 0xF5, 0x7A, 0x67, 0x70, 0xD0, 0x0A, 0xFB, 0x0B, 0x80, 0x07, 0xAA, + 0x06, 0xA9, 0x03, 0xF0, 0x9B, 0xFB, 0x00, 0x28, 0x40, 0xF0, 0xE6, 0x80, + 0xE4, 0xF7, 0x72, 0xFB, 0x06, 0x9E, 0xC6, 0xF5, 0x9C, 0x52, 0x08, 0x32, + 0x00, 0xF5, 0x7A, 0x60, 0x22, 0x44, 0x12, 0xEB, 0x40, 0x03, 0x00, 0xF1, + 0xF9, 0x80, 0xE4, 0xF7, 0x65, 0xFB, 0x07, 0x9C, 0x04, 0xF5, 0x0C, 0x53, + 0x28, 0x33, 0xDB, 0x1B, 0xC3, 0x42, 0x8C, 0xD5, 0x64, 0x4E, 0xDF, 0xF8, + 0x98, 0xA1, 0x5F, 0xE0, 0x07, 0xAA, 0x0A, 0xFB, 0x06, 0x80, 0x06, 0xA9, + 0x03, 0xF0, 0x78, 0xFB, 0x83, 0x46, 0xE4, 0xF7, 0x51, 0xFB, 0x06, 0x9A, + 0xA2, 0xF5, 0x7A, 0x62, 0x10, 0x1A, 0xDD, 0xE9, 0x04, 0x23, 0x06, 0x90, + 0xA2, 0xEB, 0x03, 0x0A, 0xBB, 0xF1, 0x00, 0x0F, 0x05, 0xD1, 0x02, 0x9B, + 0x10, 0xEB, 0x0A, 0x0F, 0x54, 0xBF, 0x1C, 0x46, 0x04, 0x46, 0xE4, 0xF7, + 0x3D, 0xFB, 0x07, 0x9B, 0x03, 0xF5, 0x0C, 0x53, 0x28, 0x33, 0x53, 0x44, + 0xC3, 0x42, 0x65, 0xD4, 0x50, 0x4E, 0x58, 0xE7, 0x06, 0x9E, 0x02, 0x9B, + 0x9A, 0x1B, 0x00, 0x2A, 0xF8, 0xDB, 0xE4, 0xF7, 0x2D, 0xFB, 0x00, 0xF5, + 0x0C, 0x50, 0x36, 0x1B, 0x28, 0x30, 0x86, 0x42, 0x49, 0x4E, 0x11, 0xD9, + 0x49, 0x46, 0x20, 0x46, 0x5A, 0x46, 0xD6, 0xF8, 0x88, 0x30, 0x98, 0x47, + 0x06, 0x9C, 0xD6, 0xF8, 0x88, 0x90, 0xE4, 0xF7, 0x1B, 0xFB, 0xA4, 0xF5, + 0x7A, 0x64, 0xDA, 0xF8, 0x40, 0x10, 0x20, 0x1A, 0x5A, 0x46, 0xC8, 0x47, + 0x07, 0x9C, 0x02, 0x9B, 0x1B, 0x1B, 0x00, 0x2B, 0xBF, 0xF6, 0x33, 0xAF, + 0x02, 0x9C, 0x30, 0xE7, 0x96, 0xF8, 0x4E, 0x00, 0x01, 0x93, 0xFF, 0x28, + 0x51, 0xD1, 0x03, 0x99, 0x0A, 0x44, 0xB1, 0xEB, 0x52, 0x0F, 0x4F, 0xEA, + 0x52, 0x03, 0xA1, 0xD8, 0x03, 0x9A, 0x35, 0x4E, 0xDF, 0xF8, 0xD8, 0xA0, + 0xA4, 0x1A, 0x1C, 0x44, 0x99, 0xF8, 0x18, 0x30, 0xD6, 0xF8, 0x88, 0x80, + 0x02, 0x2B, 0x03, 0xF1, 0x01, 0x01, 0x7B, 0xD0, 0xC1, 0xEB, 0xC1, 0x01, + 0x0A, 0xEB, 0x81, 0x01, 0x0A, 0x7E, 0xFF, 0x2A, 0x0E, 0xD1, 0x01, 0x2B, + 0x03, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, 0xC3, 0xEB, 0xC3, 0x03, + 0x0A, 0xEB, 0x83, 0x0A, 0x9A, 0xF8, 0x18, 0x30, 0xFF, 0x2B, 0x14, 0xBF, + 0x51, 0x46, 0x00, 0x21, 0x20, 0x46, 0x00, 0x22, 0xC0, 0x47, 0xD6, 0xF8, + 0x88, 0x30, 0x2A, 0x46, 0x49, 0x46, 0x38, 0x46, 0x98, 0x47, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x06, 0x83, + 0x1B, 0x4E, 0x19, 0x6C, 0xD6, 0xF8, 0x88, 0x30, 0x20, 0x46, 0x00, 0x22, + 0x98, 0x47, 0xD6, 0xF8, 0x88, 0x30, 0x07, 0x98, 0x49, 0x46, 0x00, 0x22, + 0x98, 0x47, 0xBB, 0xF1, 0x00, 0x0F, 0xAD, 0xD0, 0x06, 0x9C, 0x02, 0x9B, + 0x1A, 0xEB, 0x04, 0x0F, 0x58, 0xBF, 0x1C, 0x46, 0xD9, 0xE6, 0x07, 0xAA, + 0x06, 0xA9, 0x0A, 0xFB, 0x00, 0x80, 0x03, 0xF0, 0xD3, 0xFA, 0x06, 0x9C, + 0xE4, 0xF7, 0xAC, 0xFA, 0x01, 0x9B, 0x1B, 0x1B, 0xC3, 0x42, 0x3F, 0xF5, + 0xD6, 0xAE, 0x06, 0x9C, 0x08, 0x4E, 0xDF, 0xF8, 0x28, 0xA0, 0xE4, 0xF7, + 0xA1, 0xFA, 0x07, 0x9B, 0xA4, 0xF5, 0x7A, 0x64, 0xFA, 0x1A, 0x24, 0x1A, + 0x17, 0xEA, 0x22, 0x07, 0x38, 0xBF, 0x1F, 0x46, 0x9C, 0xE7, 0x00, 0xBF, + 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x90, 0x9D, 0x17, 0x00, 0xDD, 0xE9, 0x06, 0x64, 0xE4, 0xF7, 0x8A, 0xFA, + 0x02, 0x9B, 0x04, 0x9A, 0xF6, 0x1A, 0x32, 0x44, 0x13, 0x1A, 0x00, 0x2B, + 0x5B, 0xDB, 0xE4, 0xF7, 0x81, 0xFA, 0x3B, 0x1B, 0xA3, 0xF5, 0x0C, 0x53, + 0x28, 0x3B, 0x18, 0x1A, 0x00, 0x28, 0xBF, 0xF6, 0x1B, 0xAF, 0xA6, 0xE6, + 0x37, 0x4E, 0x67, 0xE7, 0x9A, 0xF8, 0x18, 0x30, 0xFF, 0x2B, 0x5F, 0xD1, + 0x01, 0x23, 0x89, 0xE7, 0x02, 0x9C, 0x37, 0xE7, 0xE4, 0xF7, 0x6C, 0xFA, + 0x02, 0x9B, 0xF6, 0x1A, 0x04, 0x9B, 0x33, 0x44, 0x1B, 0x1A, 0x00, 0x2B, + 0x4A, 0xDB, 0x01, 0x97, 0xE4, 0xF7, 0x62, 0xFA, 0x07, 0x9B, 0x03, 0xF5, + 0x0C, 0x53, 0x28, 0x33, 0xDB, 0x1B, 0xC3, 0x42, 0x4A, 0xD5, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0x83, 0x27, 0x4E, 0x1A, 0x6C, 0xDF, 0xF8, + 0x9C, 0xA0, 0x11, 0x7E, 0xD6, 0xF8, 0x88, 0x30, 0x02, 0x29, 0x01, 0xF1, + 0x01, 0x02, 0x2B, 0xD0, 0xC2, 0xEB, 0xC2, 0x00, 0x0A, 0xEB, 0x80, 0x00, + 0x00, 0x7E, 0xFF, 0x28, 0x37, 0xD1, 0x01, 0x29, 0x01, 0xF1, 0x02, 0x02, + 0x08, 0xBF, 0x00, 0x22, 0xC2, 0xEB, 0xC2, 0x01, 0x0A, 0xEB, 0x81, 0x01, + 0x09, 0x7E, 0xFF, 0x29, 0x08, 0xBF, 0x00, 0x21, 0x29, 0xD1, 0x20, 0x46, + 0x00, 0x22, 0x98, 0x47, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x0B, 0x88, + 0x01, 0x98, 0xD8, 0xF8, 0x40, 0x10, 0xD6, 0xF8, 0x88, 0x30, 0x00, 0x22, + 0x98, 0x47, 0x07, 0x9C, 0x2C, 0xE7, 0x06, 0x9E, 0xE4, 0xF7, 0x24, 0xFA, + 0xA6, 0xF5, 0x7A, 0x66, 0x37, 0x1A, 0x9C, 0xE7, 0x9A, 0xF8, 0x18, 0x20, + 0xFF, 0x2A, 0x0D, 0xD1, 0x01, 0x22, 0xD9, 0xE7, 0x06, 0x9E, 0xE4, 0xF7, + 0x17, 0xFA, 0xA6, 0xF5, 0x7A, 0x66, 0x33, 0x1A, 0x01, 0x93, 0xAD, 0xE7, + 0x05, 0x49, 0x33, 0xE7, 0x01, 0x9F, 0xAF, 0xE6, 0x00, 0x22, 0x1C, 0x21, + 0x01, 0xFB, 0x02, 0xA1, 0xD1, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x90, 0x9D, 0x17, 0x00, 0x30, 0xB5, 0x0E, 0x48, 0x83, 0xB0, 0x06, 0xF0, + 0x59, 0xFA, 0x01, 0x90, 0xA0, 0xB1, 0x0C, 0x4B, 0x0C, 0x4C, 0xD3, 0xF8, + 0xD8, 0x31, 0x0C, 0x48, 0x98, 0x47, 0x00, 0x23, 0x01, 0x99, 0xA3, 0x64, + 0x04, 0xF1, 0x18, 0x05, 0x20, 0x34, 0x28, 0x46, 0x06, 0xF0, 0x04, 0xFA, + 0x20, 0x46, 0x06, 0xF0, 0x45, 0xFA, 0x01, 0x46, 0x00, 0x28, 0xF6, 0xD1, + 0x03, 0xB0, 0x30, 0xBD, 0x50, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x30, 0x9D, 0x17, 0x00, 0x70, 0x9D, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x4C, 0x4B, 0x42, 0x69, 0x1F, 0x69, 0x4C, 0x4B, 0x4C, 0x4C, 0x98, 0x42, + 0x83, 0xB0, 0x05, 0x46, 0x17, 0x44, 0x6F, 0xD0, 0xA3, 0x6A, 0xAB, 0x42, + 0x04, 0xD0, 0xE4, 0xF7, 0xCD, 0xF9, 0x07, 0xF5, 0x7A, 0x67, 0x07, 0x44, + 0x94, 0xF8, 0x5B, 0x80, 0x94, 0xF8, 0x58, 0x30, 0xC4, 0xE9, 0x14, 0x57, + 0xB8, 0xF1, 0x00, 0x0F, 0x57, 0xD1, 0x42, 0x4E, 0x23, 0xF0, 0x40, 0x03, + 0x84, 0xF8, 0x58, 0x30, 0x73, 0x6B, 0x98, 0x47, 0xD6, 0xF8, 0x88, 0x30, + 0x42, 0x46, 0x41, 0x46, 0x38, 0x46, 0x98, 0x47, 0xD4, 0xF8, 0x10, 0xB0, + 0xBB, 0xF1, 0x00, 0x0F, 0x3A, 0xD0, 0x3A, 0x4B, 0xDF, 0xF8, 0xF8, 0x90, + 0xDB, 0x1B, 0x01, 0x93, 0x4F, 0xF4, 0xA4, 0x68, 0x0C, 0xE0, 0x02, 0x2A, + 0x04, 0xBF, 0xB0, 0xF8, 0xD2, 0x20, 0x91, 0x02, 0x61, 0x44, 0x00, 0x22, + 0x98, 0x47, 0xD4, 0xF8, 0x10, 0xB0, 0xBB, 0xF1, 0x00, 0x0F, 0x25, 0xD0, + 0xDB, 0xF8, 0x04, 0xA0, 0xE4, 0xF7, 0x96, 0xF9, 0x01, 0x9B, 0xAA, 0xEB, + 0x00, 0x00, 0xD8, 0x42, 0x1C, 0xD5, 0x9B, 0xF8, 0x08, 0x00, 0xDB, 0xF8, + 0x04, 0xC0, 0xF3, 0x6A, 0x08, 0xFB, 0x00, 0x90, 0x4F, 0xF4, 0xC8, 0x31, + 0x90, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0xDC, 0xD1, 0x90, 0xF8, 0x6C, 0x20, + 0x24, 0x4F, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x02, 0x72, 0x91, 0x68, + 0x00, 0x22, 0x61, 0x44, 0x98, 0x47, 0xD4, 0xF8, 0x10, 0xB0, 0xBB, 0xF1, + 0x00, 0x0F, 0xD9, 0xD1, 0xE3, 0x6A, 0xD3, 0xB1, 0x1D, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x1B, 0xDB, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x43, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x94, 0xF8, 0x58, 0x30, 0x5A, 0x07, 0x8B, 0xD4, + 0x23, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0xD6, 0xF8, 0x9C, 0x30, 0x28, 0x46, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x4F, 0x18, 0x47, 0x94, 0xF8, 0x58, 0x30, 0x13, 0xF0, 0x0C, 0x0F, + 0xDE, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x40, 0xF2, 0x86, 0x62, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x4F, 0x07, 0xF0, 0xAC, 0xBD, 0x00, 0x10, 0x50, 0x40, + 0x00, 0x9E, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x60, 0xF0, 0xFF, 0xFF, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x5C, 0xA1, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x10, 0xB5, 0x22, 0x4C, 0x94, 0xF8, 0x58, 0x30, 0xD8, 0x07, 0x11, 0xD5, + 0x20, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x22, 0xDB, + 0x23, 0xF0, 0x01, 0x03, 0x43, 0xF0, 0x04, 0x03, 0x84, 0xF8, 0x58, 0x30, + 0x1B, 0x4B, 0x1C, 0x48, 0xDB, 0x6D, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0x03, 0xF0, 0x06, 0x02, 0x02, 0x2A, 0x11, 0xD1, 0x15, 0x4A, 0x12, 0x68, + 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x17, 0xDB, 0x23, 0xF0, 0x02, 0x03, + 0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x58, 0x30, 0x10, 0x4B, 0x12, 0x48, + 0xDB, 0x6D, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x10, 0xBD, 0x59, 0x07, + 0xDA, 0xD5, 0x0F, 0x49, 0x0F, 0x48, 0x40, 0xF2, 0x9B, 0x62, 0x07, 0xF0, + 0x61, 0xFD, 0x94, 0xF8, 0x58, 0x30, 0xD1, 0xE7, 0x1A, 0x07, 0xE5, 0xD5, + 0x09, 0x49, 0x0B, 0x48, 0x40, 0xF2, 0xA6, 0x62, 0x07, 0xF0, 0x56, 0xFD, + 0x94, 0xF8, 0x58, 0x30, 0xDC, 0xE7, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x9E, 0x17, 0x00, + 0xE4, 0x9D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x8C, 0xA1, 0x15, 0x00, + 0xC0, 0xA1, 0x15, 0x00, 0x0D, 0x4A, 0x92, 0xF8, 0x58, 0x30, 0xD9, 0x06, + 0x14, 0xD4, 0x92, 0xF8, 0x5A, 0x00, 0x43, 0xF0, 0x10, 0x03, 0x82, 0xF8, + 0x58, 0x30, 0x50, 0xB1, 0x08, 0x49, 0x09, 0x4B, 0x09, 0x69, 0xD3, 0xF8, + 0xE0, 0x31, 0x01, 0xF5, 0xEA, 0x41, 0x02, 0xF1, 0x30, 0x00, 0x30, 0x31, + 0x18, 0x47, 0x04, 0x4B, 0xDB, 0x6B, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, + 0x30, 0x9D, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0xB5, 0x32, 0x4C, 0x00, 0x23, 0x05, 0x46, 0xA3, 0x62, 0xEF, 0xF3, + 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2E, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x2E, 0x4A, 0x2E, 0x4E, 0x11, 0x68, 0x73, 0x68, 0x48, 0x1C, + 0x23, 0xF0, 0x02, 0x03, 0x10, 0x60, 0x73, 0x60, 0x18, 0xB1, 0x28, 0x4B, + 0x11, 0x60, 0x1B, 0x68, 0xF9, 0xB1, 0x29, 0x49, 0x94, 0xF8, 0x5C, 0x30, + 0x0A, 0x68, 0x9B, 0x00, 0x22, 0xF0, 0x04, 0x02, 0x03, 0xF0, 0x04, 0x03, + 0x13, 0x43, 0x0B, 0x60, 0x2B, 0x7E, 0x03, 0x2B, 0x26, 0xD0, 0x04, 0x2B, + 0x94, 0xF8, 0x58, 0x30, 0x19, 0xD0, 0x23, 0xF0, 0x10, 0x02, 0xFF, 0x21, + 0x9B, 0x07, 0x29, 0x76, 0x84, 0xF8, 0x58, 0x20, 0x02, 0xD0, 0x1D, 0x4B, + 0x1B, 0x6C, 0x98, 0x47, 0xE3, 0x6A, 0x23, 0xB1, 0x70, 0xBD, 0x00, 0x2B, + 0xDD, 0xD0, 0x62, 0xB6, 0xDB, 0xE7, 0x18, 0x4B, 0xD3, 0xF8, 0xA4, 0x31, + 0x98, 0x47, 0xBD, 0xE8, 0x70, 0x40, 0xFB, 0xF7, 0x93, 0xBA, 0x23, 0xF0, + 0x04, 0x02, 0x84, 0xF8, 0x58, 0x20, 0xEA, 0x89, 0x92, 0xB9, 0x03, 0xF0, + 0xDB, 0x03, 0xDC, 0xE7, 0x94, 0xF8, 0x58, 0x30, 0x23, 0xF0, 0x08, 0x03, + 0x84, 0xF8, 0x58, 0x30, 0xFE, 0xF7, 0x84, 0xFE, 0xFF, 0x22, 0x02, 0x21, + 0x86, 0x20, 0x05, 0xF0, 0x49, 0xFC, 0x94, 0xF8, 0x58, 0x30, 0xCC, 0xE7, + 0x28, 0x46, 0xFE, 0xF7, 0xB1, 0xFE, 0x94, 0xF8, 0x58, 0x30, 0xC6, 0xE7, + 0x30, 0x9D, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x1C, 0x9E, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x6B, 0x4F, 0x6C, 0x4E, 0x04, 0x46, 0x6C, 0x48, + 0x06, 0xF0, 0x96, 0xF8, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x05, 0x46, 0xC0, 0xF2, 0x85, 0x80, 0x33, 0x78, 0x00, 0x2B, 0x44, 0xD0, + 0x66, 0x4C, 0x01, 0x2B, 0x42, 0xD1, 0x94, 0xF8, 0x58, 0x30, 0x19, 0x07, + 0x00, 0xF1, 0x9D, 0x80, 0x5A, 0x07, 0x40, 0xF1, 0xB0, 0x80, 0x62, 0x4F, + 0xE3, 0x6A, 0xBB, 0x42, 0x02, 0xD0, 0x0B, 0xB1, 0x01, 0x22, 0x1A, 0x74, + 0xA3, 0x6A, 0x0B, 0xB1, 0x01, 0x22, 0x1A, 0x74, 0x00, 0x23, 0xC4, 0xE9, + 0x0A, 0x73, 0x39, 0x7E, 0x04, 0x23, 0x03, 0x29, 0x3B, 0x74, 0x00, 0xF0, + 0xA0, 0x80, 0x02, 0x29, 0x24, 0xD9, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x55, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x55, 0x4A, + 0x55, 0x48, 0x17, 0x68, 0x43, 0x68, 0x79, 0x1C, 0x43, 0xF0, 0x02, 0x03, + 0x11, 0x60, 0x43, 0x60, 0x29, 0xB1, 0x4F, 0x4B, 0x17, 0x60, 0x1B, 0x68, + 0x0F, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x4F, 0x4A, 0xA3, 0x6A, 0x11, 0x68, + 0xC1, 0xF3, 0x80, 0x01, 0x84, 0xF8, 0x5C, 0x10, 0x11, 0x68, 0x21, 0xF0, + 0x04, 0x01, 0x11, 0x60, 0x01, 0xE0, 0x44, 0x4C, 0xA3, 0x6A, 0x01, 0x22, + 0x1A, 0x74, 0x22, 0x6D, 0x00, 0x23, 0x33, 0x70, 0x00, 0x2A, 0x31, 0xD0, + 0x94, 0xF8, 0x5A, 0x20, 0x23, 0x65, 0x00, 0x2A, 0x53, 0xD0, 0x01, 0x2A, + 0x53, 0xD0, 0x23, 0x69, 0x00, 0x2B, 0x50, 0xD0, 0x1B, 0x7A, 0x40, 0x4A, + 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x18, 0x6C, 0xA8, 0x60, + 0x18, 0xB1, 0x3D, 0x4B, 0xD3, 0xF8, 0x9C, 0x30, 0x98, 0x47, 0x3C, 0x48, + 0x29, 0x46, 0x05, 0xF0, 0xDF, 0xFF, 0xA0, 0x6A, 0x03, 0x7E, 0x02, 0x2B, + 0x02, 0xD9, 0x37, 0x4B, 0x9B, 0x6B, 0x98, 0x47, 0x20, 0x6A, 0xA0, 0x64, + 0x58, 0xB3, 0x36, 0x4B, 0x41, 0x68, 0x1B, 0x69, 0xCB, 0x1A, 0x14, 0x2B, + 0x27, 0xD4, 0x31, 0x4B, 0x33, 0x48, 0xD3, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, + 0xF0, 0x41, 0x18, 0x47, 0xA8, 0x68, 0xDD, 0xE7, 0x84, 0x42, 0x32, 0xD0, + 0x2F, 0x49, 0x30, 0x48, 0x40, 0xF2, 0x4F, 0x72, 0x07, 0xF0, 0x12, 0xFC, + 0x33, 0x78, 0x00, 0x2B, 0x7F, 0xF4, 0x72, 0xAF, 0x3B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xB1, 0xDA, 0x1D, 0x4C, 0xA3, 0x6A, 0x00, 0x2B, + 0xAF, 0xD1, 0x26, 0x49, 0x27, 0x48, 0x40, 0xF2, 0x51, 0x72, 0x07, 0xF0, + 0xFF, 0xFB, 0x33, 0x78, 0x61, 0xE7, 0xBD, 0xE8, 0xF0, 0x81, 0x63, 0x6C, + 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x22, 0x4F, 0x64, 0xE7, 0xAA, 0x60, + 0xBB, 0xE7, 0x21, 0x48, 0x02, 0x7E, 0xFF, 0x2A, 0xB1, 0xD1, 0x90, 0xF8, + 0x34, 0x20, 0xFF, 0x2A, 0x12, 0xD1, 0x90, 0xF8, 0x50, 0x20, 0xFF, 0x2A, + 0x10, 0xD1, 0xAB, 0x60, 0xAD, 0xE7, 0x33, 0x78, 0x00, 0x2B, 0xD8, 0xD0, + 0x44, 0xE7, 0xE7, 0x6A, 0x00, 0x2F, 0x87, 0xD0, 0x52, 0xE7, 0x02, 0x20, + 0x05, 0xF0, 0xF2, 0xFC, 0x39, 0x7E, 0x5A, 0xE7, 0x1C, 0x30, 0x98, 0xE7, + 0x38, 0x30, 0x96, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x17, 0x2C, 0x17, 0x00, + 0x50, 0x9D, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x00, 0x9E, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x4C, 0x00, 0x32, 0x40, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x48, 0x9D, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x9D, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xF4, 0xA1, 0x15, 0x00, 0x10, 0xA2, 0x15, 0x00, + 0xE4, 0x9D, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x0D, 0x4B, 0x93, 0xF8, + 0x58, 0x20, 0x11, 0x07, 0x03, 0xD4, 0x52, 0x07, 0x0D, 0xD5, 0x0B, 0x49, + 0x00, 0xE0, 0x0B, 0x49, 0xDA, 0x6A, 0x8A, 0x42, 0x03, 0xD0, 0x0A, 0xB1, + 0x01, 0x20, 0x10, 0x74, 0xD9, 0x62, 0x08, 0x4B, 0xD3, 0xF8, 0x98, 0x30, + 0x18, 0x47, 0xDB, 0x6A, 0x00, 0x2B, 0xF8, 0xD1, 0x05, 0x49, 0x08, 0x20, + 0x07, 0xF0, 0x68, 0xB9, 0x30, 0x9D, 0x17, 0x00, 0x00, 0x9E, 0x17, 0x00, + 0xE4, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x28, 0xA2, 0x15, 0x00, + 0x0B, 0x4A, 0x92, 0xF8, 0x59, 0x30, 0x43, 0xB1, 0x01, 0x3B, 0xDB, 0xB2, + 0x82, 0xF8, 0x59, 0x30, 0x1B, 0xB9, 0x08, 0x4A, 0x11, 0x78, 0x01, 0x29, + 0x00, 0xD0, 0x70, 0x47, 0x10, 0xB5, 0x06, 0x4C, 0x13, 0x70, 0xD4, 0xF8, + 0xA4, 0x31, 0x98, 0x47, 0xE3, 0x6F, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0x30, 0x9D, 0x17, 0x00, 0x17, 0x2C, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xF8, 0xB5, 0x1D, 0x4B, 0x1D, 0x49, 0x1E, 0x4A, 0xD3, 0xF8, 0xE0, 0x33, + 0x8C, 0x68, 0x95, 0x6A, 0x98, 0x47, 0x1C, 0x4B, 0x5B, 0x78, 0x23, 0xB1, + 0x1B, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x1A, 0x4A, + 0x13, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x13, 0x60, 0x1C, 0xB3, 0x18, 0x4F, + 0x8C, 0x26, 0x01, 0xE0, 0x24, 0x68, 0xF4, 0xB1, 0x23, 0x6C, 0xAB, 0x42, + 0xFA, 0xD1, 0x94, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xF6, 0xD1, 0x94, 0xF8, + 0x64, 0x30, 0x00, 0x2B, 0xF2, 0xD0, 0x94, 0xF8, 0xC0, 0x34, 0x00, 0x22, + 0x11, 0x46, 0x3B, 0xB1, 0x94, 0xF8, 0xC1, 0x34, 0x06, 0xFB, 0x03, 0x73, + 0x93, 0xF8, 0x85, 0x30, 0x00, 0x2B, 0xE5, 0xD0, 0x94, 0xF8, 0x6C, 0x00, + 0xF2, 0xF7, 0xD6, 0xFD, 0x24, 0x68, 0x00, 0x2C, 0xE0, 0xD1, 0xF8, 0xBD, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, + 0x4C, 0x36, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, + 0x48, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x08, 0x81, + 0x3D, 0x4A, 0x3E, 0x4E, 0xD8, 0xF8, 0xDC, 0x33, 0x94, 0x68, 0x96, 0xF8, + 0x59, 0x90, 0x83, 0xB0, 0x98, 0x47, 0xB5, 0x6A, 0x00, 0x2D, 0x5E, 0xD0, + 0x39, 0x4A, 0x3A, 0x49, 0x13, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, + 0x4B, 0x78, 0x4F, 0x46, 0x00, 0x2B, 0x4D, 0xD1, 0x00, 0x2C, 0x3A, 0xD0, + 0xDF, 0xF8, 0xD8, 0xB0, 0xDF, 0xF8, 0xD8, 0xA0, 0x4F, 0xF0, 0x06, 0x09, + 0x01, 0xE0, 0x24, 0x68, 0x7C, 0xB3, 0x23, 0x6C, 0x9D, 0x42, 0xFA, 0xD1, + 0x94, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0xF6, 0xD1, 0x94, 0xF8, 0x64, 0x30, + 0x00, 0x2B, 0xF2, 0xD0, 0x94, 0xF8, 0x6C, 0x00, 0xFF, 0x28, 0x4F, 0xF0, + 0x8C, 0x01, 0x4F, 0xF0, 0x00, 0x02, 0xEA, 0xD0, 0x94, 0xF8, 0xC0, 0x34, + 0x3B, 0xB1, 0x94, 0xF8, 0xC1, 0x34, 0x01, 0xFB, 0x03, 0xA3, 0x93, 0xF8, + 0x85, 0x30, 0x00, 0x2B, 0xDF, 0xD0, 0x2B, 0x7C, 0x85, 0xF8, 0x10, 0x90, + 0xD8, 0xF8, 0xB0, 0x10, 0x01, 0x93, 0xF2, 0xF7, 0x79, 0xFD, 0x01, 0x9B, + 0x00, 0xB9, 0x01, 0x37, 0x01, 0x22, 0x2B, 0x74, 0x8B, 0xF8, 0x00, 0x20, + 0x24, 0x68, 0x00, 0x2C, 0xCF, 0xD1, 0x5F, 0xFA, 0x87, 0xF9, 0x96, 0xF8, + 0x59, 0x40, 0xF5, 0x6A, 0x86, 0xF8, 0x59, 0x90, 0x3C, 0x1B, 0xAD, 0xB1, + 0x27, 0xB1, 0x03, 0x23, 0x2B, 0x74, 0xD8, 0xF8, 0x60, 0x31, 0x98, 0x47, + 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD2, 0xF8, 0xE8, 0x33, + 0x43, 0xF0, 0x00, 0x43, 0xC2, 0xF8, 0xE8, 0x33, 0xAA, 0xE7, 0x00, 0x24, + 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD8, 0xF8, 0x60, 0x31, + 0x98, 0x47, 0x00, 0x2F, 0xF5, 0xD0, 0x96, 0xF8, 0x59, 0x30, 0x01, 0x3B, + 0x2C, 0x46, 0x86, 0xF8, 0x59, 0x30, 0xE3, 0xE7, 0x00, 0x88, 0x17, 0x00, + 0x30, 0x9D, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x4C, 0x36, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x17, 0x2C, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, + 0x10, 0xB5, 0x06, 0x4C, 0xD4, 0xF8, 0xA4, 0x31, 0x98, 0x47, 0xA3, 0x6E, + 0x98, 0x47, 0x18, 0xB9, 0xE3, 0x6F, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0x10, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x43, + 0x4D, 0x4E, 0x4E, 0x4F, 0xF4, 0x6A, 0x85, 0xB0, 0x00, 0x25, 0xE2, 0x88, + 0x61, 0x79, 0x23, 0x89, 0x20, 0x79, 0x02, 0x95, 0x65, 0x7B, 0x01, 0x95, + 0x65, 0x89, 0x00, 0x95, 0xE3, 0xF7, 0x72, 0xFD, 0xD7, 0xF8, 0x3C, 0x33, + 0x94, 0xF9, 0x0C, 0x00, 0x98, 0x47, 0x21, 0x79, 0x44, 0x4B, 0x45, 0x4A, + 0x03, 0xEB, 0x81, 0x03, 0x5B, 0x69, 0x13, 0x60, 0x23, 0x7E, 0x03, 0x2B, + 0x02, 0xD0, 0x20, 0x46, 0xFE, 0xF7, 0xFE, 0xFB, 0xB3, 0x6A, 0x0B, 0xB1, + 0x01, 0x22, 0x1A, 0x74, 0x00, 0x23, 0xC6, 0xE9, 0x0A, 0x43, 0x23, 0x7E, + 0x04, 0x22, 0x02, 0x2B, 0x22, 0x74, 0x4E, 0xD9, 0x96, 0xF8, 0x5A, 0x20, + 0x00, 0x2A, 0x4A, 0xD0, 0x03, 0x2B, 0x52, 0xD0, 0x04, 0x2B, 0x24, 0xD0, + 0xFB, 0x6E, 0x98, 0x47, 0x23, 0x7E, 0x02, 0x2B, 0x1F, 0xD8, 0x34, 0x4B, + 0x9D, 0x68, 0x00, 0x2D, 0x37, 0xD0, 0xDF, 0xF8, 0xE4, 0x90, 0x4F, 0xF0, + 0x01, 0x08, 0x01, 0xE0, 0x2D, 0x68, 0x8D, 0xB1, 0x2B, 0x6C, 0xA3, 0x42, + 0xFA, 0xD1, 0x95, 0xF8, 0x63, 0x30, 0xD7, 0xF8, 0x5C, 0x24, 0xC3, 0xEB, + 0xC3, 0x03, 0x09, 0xEB, 0x83, 0x03, 0x28, 0x46, 0x83, 0xF8, 0x1B, 0x80, + 0x90, 0x47, 0x2D, 0x68, 0x00, 0x2D, 0xED, 0xD1, 0x23, 0x7E, 0x02, 0x2B, + 0x1B, 0xD9, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x22, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x22, 0x4A, 0x22, 0x4C, 0x11, 0x68, + 0x63, 0x68, 0x48, 0x1C, 0x43, 0xF0, 0x02, 0x03, 0x10, 0x60, 0x63, 0x60, + 0x28, 0xBB, 0x1F, 0x4B, 0x19, 0x68, 0x1A, 0x68, 0xC1, 0xF3, 0x80, 0x01, + 0x22, 0xF0, 0x04, 0x02, 0x86, 0xF8, 0x5C, 0x10, 0x1A, 0x60, 0xD7, 0xF8, + 0x60, 0x31, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, 0x18, 0x4A, + 0x92, 0xF8, 0xFF, 0x21, 0x00, 0x2A, 0xAF, 0xD0, 0xF1, 0xF7, 0xA2, 0xFB, + 0x23, 0x7E, 0x03, 0x2B, 0xAC, 0xD1, 0x14, 0x4B, 0x00, 0x22, 0x1A, 0x60, + 0x02, 0x21, 0xFF, 0x22, 0x85, 0x20, 0x05, 0xF0, 0x77, 0xF9, 0x23, 0x7E, + 0x02, 0x2B, 0xE4, 0xD9, 0xC7, 0xE7, 0x09, 0x4B, 0x11, 0x60, 0x1B, 0x68, + 0x00, 0x29, 0xD4, 0xD1, 0x00, 0x2B, 0xD2, 0xD0, 0x62, 0xB6, 0xD0, 0xE7, + 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, + 0xDC, 0x00, 0x32, 0x40, 0x00, 0x88, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0x20, 0x62, 0x17, 0x00, 0x20, 0x02, 0x32, 0x40, 0x80, 0x9F, 0x17, 0x00, + 0x70, 0xB5, 0x25, 0x4D, 0xEA, 0x6A, 0x04, 0x46, 0x0A, 0xB1, 0xE8, 0x62, + 0x70, 0xBD, 0xAE, 0x6A, 0x86, 0x42, 0x3D, 0xD0, 0x5E, 0xB1, 0x33, 0x7E, + 0x03, 0x2B, 0x08, 0xD0, 0x01, 0x23, 0x0C, 0x21, 0x45, 0x20, 0x05, 0xF0, + 0xD7, 0xF8, 0x33, 0x7E, 0x03, 0x70, 0x05, 0xF0, 0x03, 0xF9, 0x1B, 0x4B, + 0x5B, 0x68, 0x00, 0x2B, 0x1C, 0xDD, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x17, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x17, 0x4E, + 0x33, 0x68, 0x04, 0x20, 0x01, 0x33, 0x33, 0x60, 0xF1, 0xF7, 0x42, 0xF8, + 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, 0xF1, 0xF7, 0xDD, 0xF8, 0x33, 0x68, + 0x33, 0xB1, 0x0F, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x33, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x02, 0x22, 0xEC, 0x62, 0x04, 0x23, 0x22, 0x74, + 0x00, 0x21, 0xFF, 0x22, 0x84, 0x20, 0x05, 0xF0, 0xA9, 0xF8, 0x09, 0x4B, + 0x1B, 0x6E, 0x03, 0x60, 0xBD, 0xE8, 0x70, 0x40, 0x05, 0xF0, 0xD2, 0xB8, + 0x04, 0x23, 0x33, 0x74, 0x70, 0xBD, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, + 0xD8, 0x9C, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x0A, 0x4D, 0x04, 0x46, 0xD5, 0xF8, + 0x6C, 0x31, 0x00, 0x6D, 0x98, 0x47, 0xD5, 0xF8, 0x00, 0x32, 0x20, 0x65, + 0x01, 0x46, 0x20, 0x46, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, 0x23, 0xF0, + 0x40, 0x03, 0x43, 0xF0, 0x20, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0x38, 0xBD, + 0x88, 0x1A, 0x17, 0x00, 0x02, 0x6D, 0x41, 0x6A, 0x70, 0xB5, 0x17, 0x4D, + 0x04, 0x46, 0xD5, 0xF8, 0xE0, 0x31, 0x11, 0x44, 0x18, 0x30, 0x98, 0x47, + 0x94, 0xF8, 0x4D, 0x30, 0x23, 0xF0, 0x20, 0x02, 0xDB, 0x07, 0x84, 0xF8, + 0x4D, 0x20, 0x0E, 0xD5, 0x10, 0x4B, 0x5B, 0x6A, 0x23, 0xB1, 0xDA, 0x68, + 0x04, 0xF1, 0x44, 0x03, 0x9A, 0x42, 0x07, 0xD0, 0xEB, 0x6A, 0x61, 0x6A, + 0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x70, 0xBD, + 0x6B, 0x6B, 0x98, 0x47, 0xEB, 0x6A, 0x61, 0x6A, 0x20, 0x46, 0x00, 0x22, + 0x98, 0x47, 0x06, 0x4A, 0xD5, 0xF8, 0x84, 0x30, 0x11, 0x69, 0x20, 0x46, + 0x00, 0x22, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, + 0x30, 0x9D, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x2D, 0xE9, 0xF8, 0x43, + 0xDF, 0xF8, 0xB8, 0x80, 0x90, 0xF8, 0x4E, 0x70, 0x4F, 0xF4, 0xA4, 0x65, + 0x05, 0xFB, 0x07, 0x85, 0x95, 0xF8, 0x4D, 0x60, 0x16, 0xF0, 0x60, 0x06, + 0x1F, 0xD1, 0x26, 0x4B, 0x04, 0x46, 0xD3, 0xF8, 0xFC, 0x31, 0x89, 0x46, + 0x90, 0xF8, 0x4F, 0x10, 0x28, 0x46, 0x98, 0x47, 0x63, 0x6D, 0xA0, 0xEB, + 0x09, 0x01, 0x58, 0x1A, 0x00, 0xB2, 0x80, 0xEA, 0xE0, 0x73, 0xA3, 0xEB, + 0xE0, 0x73, 0x9B, 0xB2, 0xB3, 0xF5, 0xFA, 0x6F, 0xA4, 0xF8, 0x58, 0x00, + 0x09, 0xD9, 0x95, 0xF8, 0x4D, 0x30, 0x23, 0xF0, 0x40, 0x03, 0x43, 0xF0, + 0x10, 0x03, 0x85, 0xF8, 0x4D, 0x30, 0xBD, 0xE8, 0xF8, 0x83, 0xC8, 0x2B, + 0xFB, 0xD9, 0x15, 0x4B, 0x9B, 0x68, 0x9B, 0xB1, 0x95, 0xF8, 0x63, 0x10, + 0x30, 0x46, 0x93, 0xF8, 0x4E, 0x20, 0x8A, 0x42, 0x07, 0xD1, 0xB3, 0xF9, + 0x58, 0x20, 0x90, 0x42, 0xA8, 0xBF, 0x10, 0x46, 0x96, 0x42, 0xB8, 0xBF, + 0x16, 0x46, 0x1B, 0x68, 0x00, 0x2B, 0xF0, 0xD1, 0x60, 0xB9, 0x73, 0x10, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x87, 0x97, 0xF8, 0x4D, 0x20, + 0x3B, 0x65, 0x42, 0xF0, 0x40, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0xD8, 0xE7, + 0x00, 0x2E, 0xD6, 0xD1, 0x00, 0xEB, 0xD0, 0x73, 0x5B, 0x10, 0xED, 0xE7, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x23, 0x48, 0x2D, 0xE9, 0xF0, 0x41, 0x60, 0x22, 0x00, 0x21, 0x22, 0x4F, + 0x06, 0x46, 0xE2, 0xF7, 0xD3, 0xFB, 0x00, 0x25, 0x3C, 0x46, 0xA8, 0x46, + 0x00, 0x21, 0x1C, 0x22, 0x20, 0x46, 0xE2, 0xF7, 0xCB, 0xFB, 0xFF, 0x23, + 0x02, 0x2D, 0xE3, 0x81, 0x23, 0x76, 0xE3, 0x76, 0x21, 0x46, 0x30, 0x46, + 0x04, 0xD8, 0x05, 0xF0, 0x55, 0xFC, 0x01, 0x35, 0x1C, 0x34, 0xED, 0xE7, + 0x03, 0x2D, 0x22, 0xD0, 0x04, 0x2D, 0xF8, 0xD1, 0x14, 0x48, 0x05, 0xF0, + 0x47, 0xFC, 0x14, 0x48, 0x05, 0xF0, 0x44, 0xFC, 0x13, 0x49, 0x11, 0x48, + 0x05, 0xF0, 0x44, 0xFC, 0x12, 0x49, 0x0F, 0x48, 0x05, 0xF0, 0x40, 0xFC, + 0x11, 0x49, 0x0D, 0x48, 0x05, 0xF0, 0x3C, 0xFC, 0x10, 0x49, 0x0B, 0x48, + 0x05, 0xF0, 0x38, 0xFC, 0x0F, 0x4A, 0x07, 0x4B, 0xD2, 0xF8, 0xAC, 0x10, + 0xD0, 0x6B, 0x58, 0x63, 0x00, 0x22, 0xC3, 0xE9, 0x11, 0x12, 0xBD, 0xE8, + 0xF0, 0x81, 0xA7, 0xF8, 0x5E, 0x80, 0x87, 0xF8, 0x59, 0x80, 0xD2, 0xE7, + 0x30, 0x9D, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x48, 0x9D, 0x17, 0x00, + 0x50, 0x9D, 0x17, 0x00, 0xF0, 0x9C, 0x17, 0x00, 0x00, 0x9D, 0x17, 0x00, + 0x10, 0x9D, 0x17, 0x00, 0x20, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x43, 0x21, 0x4C, 0x24, 0x68, 0xB4, 0xF9, 0x00, 0x40, + 0x83, 0xB0, 0x00, 0x2C, 0x9D, 0xF8, 0x28, 0x90, 0x9D, 0xF8, 0x2C, 0x80, + 0x1D, 0x4C, 0x07, 0x46, 0x0D, 0x46, 0x16, 0x46, 0x27, 0xDB, 0x1C, 0x49, + 0x84, 0xF8, 0x58, 0x70, 0x91, 0xF8, 0x58, 0x20, 0xA4, 0xF8, 0x5C, 0x50, + 0xA4, 0xF8, 0x5A, 0x50, 0x42, 0xF0, 0x02, 0x07, 0x84, 0xF8, 0x60, 0x60, + 0xFF, 0x25, 0x03, 0x26, 0x01, 0x20, 0xA3, 0x66, 0xD3, 0x06, 0x84, 0xF8, + 0x61, 0x90, 0x84, 0xF8, 0x6E, 0x80, 0x81, 0xF8, 0x58, 0x70, 0x84, 0xF8, + 0x6C, 0x60, 0xA4, 0xF8, 0x62, 0x50, 0x84, 0xF8, 0x64, 0x00, 0x05, 0xD4, + 0x0D, 0x4B, 0x1B, 0x6C, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x94, 0xF8, 0x6C, 0x20, 0xFF, 0x2A, + 0xD3, 0xD0, 0x08, 0x49, 0x08, 0x48, 0x01, 0x93, 0x40, 0xF6, 0x8C, 0x22, + 0x07, 0xF0, 0x26, 0xF8, 0x01, 0x9B, 0xCA, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0x90, 0x9D, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x48, 0xA2, 0x15, 0x00, 0xF0, 0xB5, 0x65, 0x4F, + 0x04, 0x46, 0x83, 0xB0, 0x97, 0xF8, 0x80, 0x00, 0xE3, 0x68, 0x22, 0x78, + 0x00, 0x90, 0x0E, 0x46, 0x08, 0x20, 0x61, 0x49, 0x06, 0xF0, 0xE0, 0xFD, + 0x25, 0x78, 0x25, 0xB3, 0x01, 0x2D, 0x2F, 0xD1, 0x97, 0xF8, 0x88, 0x30, + 0xFF, 0x2B, 0x1A, 0xD0, 0x97, 0xF8, 0x80, 0x30, 0x03, 0x2B, 0x2B, 0xD8, + 0x01, 0x2B, 0x5A, 0x4C, 0x44, 0xD8, 0x09, 0xD1, 0x94, 0xF8, 0x58, 0x30, + 0x07, 0xF1, 0x70, 0x00, 0x23, 0xF0, 0x05, 0x03, 0x84, 0xF8, 0x58, 0x30, + 0xFE, 0xF7, 0xE4, 0xF9, 0x94, 0xF8, 0x58, 0x30, 0x03, 0xF0, 0x12, 0x02, + 0xFF, 0x21, 0x10, 0x2A, 0x87, 0xF8, 0x88, 0x10, 0x24, 0xD0, 0x00, 0x25, + 0x28, 0x46, 0x03, 0xB0, 0xF0, 0xBD, 0x97, 0xF8, 0x88, 0x30, 0xFF, 0x2B, + 0x3A, 0xD0, 0x4B, 0x4A, 0x92, 0xF8, 0x58, 0x30, 0x99, 0x06, 0x03, 0xD5, + 0x23, 0xF0, 0x20, 0x03, 0x82, 0xF8, 0x58, 0x30, 0x01, 0x25, 0x28, 0x46, + 0x03, 0xB0, 0xF0, 0xBD, 0x04, 0x2B, 0x17, 0xD1, 0x44, 0x48, 0x45, 0x4D, + 0xA0, 0xF1, 0x40, 0x04, 0xD5, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x00, 0x22, + 0xD5, 0xF8, 0xAC, 0x30, 0x20, 0x6A, 0xA2, 0x64, 0x98, 0x47, 0xD1, 0xE7, + 0x3E, 0x4A, 0x3F, 0x48, 0xD2, 0xF8, 0xD8, 0x21, 0x23, 0xF0, 0x10, 0x03, + 0x84, 0xF8, 0x58, 0x30, 0x90, 0x47, 0xD0, 0xE7, 0x37, 0x4C, 0xC5, 0xE7, + 0x94, 0xF8, 0x58, 0x30, 0xE2, 0x6A, 0x23, 0xF0, 0x04, 0x03, 0x84, 0xF8, + 0x58, 0x30, 0x2A, 0xB1, 0x07, 0xF1, 0x70, 0x03, 0x9A, 0x42, 0x50, 0xD0, + 0x00, 0x23, 0xE3, 0x62, 0x33, 0x48, 0xFE, 0xF7, 0x99, 0xF9, 0xB3, 0xE7, + 0x97, 0xF8, 0x80, 0x30, 0x04, 0x2B, 0xC0, 0xD0, 0x04, 0x20, 0x05, 0xF0, + 0x5D, 0xF9, 0x01, 0x28, 0xBB, 0xD0, 0x04, 0x23, 0x87, 0xF8, 0x88, 0x30, + 0xA3, 0x78, 0x87, 0xF8, 0x74, 0x30, 0xE3, 0x78, 0x87, 0xF8, 0x75, 0x30, + 0xA3, 0x88, 0xE2, 0x88, 0xA7, 0xF8, 0x76, 0x30, 0x01, 0x21, 0x23, 0x89, + 0x87, 0xF8, 0x80, 0x10, 0xA7, 0xF8, 0x78, 0x20, 0xE2, 0x68, 0xA7, 0xF8, + 0x7A, 0x30, 0x4F, 0xF4, 0x7A, 0x73, 0x03, 0xFB, 0x02, 0xF3, 0x23, 0x2A, + 0x84, 0xBF, 0xA3, 0xF5, 0x08, 0x43, 0xB8, 0x3B, 0xA7, 0xF8, 0x7E, 0x60, + 0xC7, 0xF8, 0x84, 0x30, 0x63, 0x78, 0x17, 0x4A, 0x87, 0xF8, 0x8A, 0x30, + 0x23, 0x7C, 0x87, 0xF8, 0x7C, 0x30, 0x16, 0x49, 0x92, 0xF8, 0x58, 0x30, + 0x66, 0xB9, 0x43, 0xF0, 0x04, 0x03, 0xC9, 0x6D, 0x14, 0x48, 0x82, 0xF8, + 0x58, 0x30, 0x88, 0x47, 0x13, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x04, 0x03, + 0x13, 0x60, 0x8A, 0xE7, 0x43, 0xF0, 0x01, 0x03, 0x09, 0x6C, 0x82, 0xF8, + 0x58, 0x30, 0x88, 0x47, 0xF2, 0xE7, 0x23, 0x6D, 0x93, 0x42, 0xAB, 0xD1, + 0x08, 0x4B, 0x04, 0xF1, 0x40, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, + 0x00, 0x23, 0xA3, 0x64, 0xA2, 0xE7, 0x00, 0xBF, 0x90, 0x9D, 0x17, 0x00, + 0x68, 0xA2, 0x15, 0x00, 0x30, 0x9D, 0x17, 0x00, 0x70, 0x9D, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x60, 0x9D, 0x17, 0x00, 0x00, 0x9E, 0x17, 0x00, + 0x94, 0x40, 0x04, 0x40, 0x2D, 0xE9, 0xF0, 0x41, 0x36, 0x4E, 0x84, 0xB0, + 0x04, 0x46, 0x0F, 0x46, 0x33, 0x46, 0x00, 0x25, 0x1A, 0x7E, 0xFF, 0x2A, + 0x03, 0xD0, 0x1A, 0x79, 0x20, 0x78, 0x90, 0x42, 0x1B, 0xD0, 0x01, 0x35, + 0x03, 0x2D, 0x03, 0xF1, 0x1C, 0x03, 0xF3, 0xD1, 0x2E, 0x48, 0x05, 0xF0, + 0x15, 0xFB, 0x03, 0x46, 0x70, 0xB3, 0x2D, 0x4A, 0x86, 0x1B, 0xB6, 0x10, + 0x02, 0xFB, 0x06, 0xF6, 0xF6, 0xB2, 0x06, 0x76, 0x3E, 0x70, 0x20, 0x68, + 0x61, 0x68, 0x04, 0x33, 0x03, 0xC3, 0x22, 0x89, 0x1A, 0x80, 0x00, 0x20, + 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0xD9, 0x88, 0x62, 0x88, 0x8A, 0x42, + 0xDF, 0xD1, 0x93, 0xF8, 0x05, 0xC0, 0x61, 0x78, 0x8C, 0x45, 0x08, 0xD0, + 0x02, 0xD2, 0xBC, 0xF1, 0x03, 0x0F, 0x13, 0xD1, 0x8C, 0x45, 0xD4, 0xD9, + 0x03, 0x29, 0xD2, 0xD0, 0x07, 0xE0, 0x19, 0x89, 0xA2, 0x88, 0x91, 0x42, + 0xCD, 0xD1, 0x59, 0x89, 0xE2, 0x88, 0x91, 0x42, 0xC9, 0xD1, 0x3D, 0x70, + 0x00, 0x20, 0xDF, 0xE7, 0x01, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, + 0xDF, 0xF8, 0x48, 0xE0, 0xB4, 0xF8, 0x04, 0x80, 0xB4, 0xF8, 0x06, 0xC0, + 0xDE, 0xF8, 0x28, 0x30, 0xC5, 0xEB, 0xC5, 0x04, 0x06, 0xEB, 0x84, 0x04, + 0xA3, 0x42, 0x61, 0x71, 0xA4, 0xF8, 0x08, 0x80, 0xA4, 0xF8, 0x0A, 0xC0, + 0xE5, 0xD1, 0x9E, 0xF8, 0x5A, 0x40, 0x01, 0x2C, 0xE1, 0xD1, 0x1C, 0x24, + 0x04, 0xFB, 0x05, 0x66, 0x00, 0x24, 0x76, 0x7B, 0xCD, 0xF8, 0x00, 0xC0, + 0xCD, 0xE9, 0x01, 0x64, 0x43, 0x46, 0xE3, 0xF7, 0xCF, 0xF9, 0xD4, 0xE7, + 0x90, 0x9D, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, 0xB7, 0x6D, 0xDB, 0xB6, + 0x2D, 0xE9, 0xF0, 0x41, 0xDF, 0xF8, 0x98, 0x80, 0x20, 0x4D, 0xD8, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0xC0, 0xEB, 0xC0, 0x06, 0x00, 0x2B, + 0x04, 0x46, 0x05, 0xEB, 0x86, 0x06, 0x12, 0xDB, 0xC7, 0x00, 0x1B, 0x48, + 0x31, 0x46, 0x3C, 0x1B, 0x05, 0xF0, 0x5C, 0xFA, 0x05, 0xEB, 0x84, 0x04, + 0x30, 0x46, 0x1C, 0x22, 0x00, 0x21, 0xE2, 0xF7, 0xC1, 0xF9, 0xFF, 0x23, + 0xE3, 0x81, 0x23, 0x76, 0xE3, 0x76, 0xBD, 0xE8, 0xF0, 0x81, 0xC0, 0xEB, + 0xC0, 0x03, 0x05, 0xEB, 0x83, 0x03, 0xC7, 0x00, 0x1B, 0x7E, 0xFF, 0x2B, + 0x0C, 0xD0, 0x3B, 0x1B, 0x05, 0xEB, 0x83, 0x03, 0x5B, 0x7E, 0x00, 0x2B, + 0xDF, 0xD0, 0x0C, 0x49, 0x0C, 0x48, 0x40, 0xF6, 0x5C, 0x32, 0x06, 0xF0, + 0x8F, 0xFE, 0xD8, 0xE7, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF6, 0x5A, 0x32, + 0x06, 0xF0, 0x88, 0xFE, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xE6, 0xDB, 0xCB, 0xE7, 0x00, 0xBF, 0x90, 0x9D, 0x17, 0x00, + 0x30, 0x9D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x84, 0xA2, 0x15, 0x00, + 0xA4, 0x88, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xDF, 0xF8, 0x4C, 0x82, 0xDF, 0xF8, 0x24, 0xA2, 0xD8, 0xF8, 0x00, 0x20, + 0x84, 0x4F, 0xB2, 0xF9, 0x00, 0x30, 0xC1, 0xEB, 0xC1, 0x06, 0x00, 0x2B, + 0x85, 0xB0, 0x0C, 0x46, 0x05, 0x46, 0x0A, 0xEB, 0x86, 0x06, 0x5F, 0xDB, + 0x4F, 0xEA, 0xC4, 0x0B, 0xAB, 0xEB, 0x04, 0x01, 0x0A, 0xEB, 0x81, 0x01, + 0x4F, 0xF4, 0xA4, 0x63, 0x4A, 0x7E, 0xDF, 0xF8, 0x1C, 0x92, 0x01, 0x32, + 0x03, 0xFB, 0x05, 0x73, 0xD2, 0xB2, 0x00, 0x20, 0x01, 0x2A, 0x4A, 0x76, + 0x1E, 0x64, 0x83, 0xF8, 0x4D, 0x00, 0x6B, 0xD0, 0xDF, 0xF8, 0x04, 0x82, + 0x99, 0xF8, 0x5B, 0x10, 0x99, 0xF8, 0x5A, 0x30, 0x4F, 0xF4, 0x80, 0x70, + 0xCD, 0xE9, 0x00, 0x31, 0x6F, 0x49, 0x23, 0x46, 0x06, 0xF0, 0x12, 0xFC, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x05, 0x73, 0xFF, 0x21, 0x93, 0xF8, + 0xC0, 0x24, 0x83, 0xF8, 0x4E, 0x10, 0x4A, 0xB1, 0x69, 0x49, 0x93, 0xF8, + 0xC1, 0x24, 0x8C, 0x20, 0x00, 0xFB, 0x02, 0x12, 0x92, 0xF8, 0x70, 0x20, + 0x01, 0x2A, 0x20, 0xD0, 0x65, 0x4B, 0x03, 0xF1, 0x54, 0x01, 0x1A, 0x7E, + 0xFF, 0x2A, 0x03, 0xD0, 0xDA, 0x7E, 0xFF, 0x2A, 0x40, 0xF0, 0xAA, 0x80, + 0x1C, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0xD8, 0xF8, 0xB4, 0x30, 0x30, 0x46, + 0x98, 0x47, 0x5E, 0x4B, 0x1B, 0x7C, 0xAB, 0x42, 0x08, 0xD0, 0xFF, 0x2B, + 0x06, 0xD0, 0xD8, 0xF8, 0x50, 0x30, 0x20, 0x46, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x4F, 0x18, 0x47, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x93, 0xF8, + 0x4D, 0x20, 0x42, 0xF0, 0x10, 0x02, 0x83, 0xF8, 0x4D, 0x20, 0xE4, 0xE7, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x73, 0x1B, 0x6C, 0x5B, 0xB1, + 0x50, 0x49, 0x51, 0x48, 0x40, 0xF6, 0x6B, 0x32, 0x06, 0xF0, 0xF4, 0xFD, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x8D, 0xDA, + 0xC4, 0xEB, 0xC4, 0x03, 0x0A, 0xEB, 0x83, 0x03, 0x4F, 0xEA, 0xC4, 0x0B, + 0x1B, 0x7E, 0xFF, 0x2B, 0x86, 0xD1, 0x46, 0x49, 0x47, 0x48, 0x40, 0xF6, + 0x6C, 0x32, 0x06, 0xF0, 0xDF, 0xFD, 0x7F, 0xE7, 0x99, 0xF8, 0x5A, 0x00, + 0x0A, 0x74, 0x42, 0x1C, 0xD8, 0xF8, 0x00, 0x30, 0xD2, 0xB2, 0x89, 0xF8, + 0x5A, 0x20, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0x02, 0x2A, + 0x3C, 0xD0, 0x3E, 0x48, 0x31, 0x46, 0x05, 0xF0, 0x77, 0xF9, 0x99, 0xF8, + 0x58, 0x30, 0x13, 0xF0, 0x0C, 0x0F, 0x0F, 0xD0, 0xD8, 0xF8, 0x00, 0x20, + 0xD9, 0xF8, 0x20, 0x30, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x20, 0xDB, + 0xAB, 0xEB, 0x04, 0x0B, 0x0A, 0xEB, 0x8B, 0x0A, 0x9E, 0x60, 0x9A, 0xF8, + 0x19, 0x20, 0x6B, 0xE7, 0xD9, 0xF8, 0x2C, 0x30, 0x8B, 0xB3, 0xAB, 0xEB, + 0x04, 0x0B, 0x0A, 0xEB, 0x8B, 0x0A, 0xDF, 0xF8, 0xD0, 0x80, 0x9A, 0xF8, + 0x19, 0x20, 0xC9, 0xF8, 0x2C, 0x60, 0x5F, 0xE7, 0x02, 0x2A, 0xD4, 0xD9, + 0x40, 0xF6, 0x81, 0x32, 0x25, 0x49, 0x29, 0x48, 0x06, 0xF0, 0xA0, 0xFD, + 0x99, 0xF8, 0x5A, 0x20, 0xCB, 0xE7, 0x00, 0x2B, 0xDC, 0xD1, 0x21, 0x49, + 0x25, 0x48, 0x03, 0x93, 0x4F, 0xF4, 0x39, 0x62, 0x06, 0xF0, 0x94, 0xFD, + 0x03, 0x9B, 0xD3, 0xE7, 0x22, 0x48, 0x05, 0xF0, 0x37, 0xF9, 0x16, 0x4B, + 0x03, 0xF5, 0xA4, 0x51, 0x93, 0xF8, 0x4D, 0x20, 0x22, 0xF0, 0x01, 0x02, + 0x83, 0xF8, 0x4D, 0x20, 0x03, 0xF5, 0xA4, 0x63, 0x99, 0x42, 0xF5, 0xD1, + 0xB1, 0xE7, 0xDF, 0xF8, 0x74, 0x80, 0xAB, 0xEB, 0x04, 0x0B, 0x0A, 0xEB, + 0x8B, 0x0A, 0xD8, 0xF8, 0x9C, 0x30, 0x30, 0x46, 0x98, 0x47, 0x9A, 0xF8, + 0x19, 0x20, 0x2B, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x72, + 0x12, 0x6C, 0xB2, 0x42, 0x3F, 0xF4, 0x51, 0xAF, 0x03, 0xFB, 0x05, 0x77, + 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x10, 0x03, 0x87, 0xF8, 0x4D, 0x30, + 0x47, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0xE0, 0xA2, 0x15, 0x00, + 0x48, 0x9E, 0x17, 0x00, 0x90, 0x9D, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xA0, 0xA2, 0x15, 0x00, 0xA4, 0x88, 0x15, 0x00, + 0x38, 0x9D, 0x17, 0x00, 0xB8, 0xA2, 0x15, 0x00, 0xD4, 0xA2, 0x15, 0x00, + 0x40, 0x9D, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0xBC, 0xA2, + 0xDF, 0xF8, 0xB4, 0x82, 0xDA, 0xF8, 0x00, 0x30, 0x4F, 0xF4, 0xA4, 0x69, + 0xB3, 0xF9, 0x00, 0x30, 0x09, 0xFB, 0x00, 0xF9, 0x08, 0xEB, 0x09, 0x02, + 0x00, 0x2B, 0x14, 0x6C, 0x85, 0xB0, 0x05, 0x46, 0xC0, 0xF2, 0x99, 0x80, + 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x05, 0x86, 0x9A, 0x4F, 0x96, 0xF8, + 0x4D, 0x00, 0x21, 0x7C, 0x97, 0xF8, 0x5A, 0x30, 0x62, 0x7E, 0x00, 0x93, + 0xCD, 0xE9, 0x01, 0x01, 0x97, 0xF8, 0x5B, 0x30, 0x95, 0x49, 0x4F, 0xF4, + 0x80, 0x70, 0x06, 0xF0, 0xEF, 0xFA, 0x09, 0xF1, 0x44, 0x01, 0x07, 0xF1, + 0x10, 0x00, 0x41, 0x44, 0x05, 0xF0, 0x0E, 0xF9, 0x96, 0xF8, 0x4D, 0x30, + 0x23, 0xF0, 0x01, 0x02, 0x86, 0xF8, 0x4D, 0x20, 0x9A, 0x07, 0x09, 0xD5, + 0x97, 0xF8, 0x5B, 0x30, 0x97, 0xF8, 0x5A, 0x20, 0x01, 0x3B, 0xDB, 0xB2, + 0x01, 0x2A, 0x87, 0xF8, 0x5B, 0x30, 0x5D, 0xD9, 0xDF, 0xF8, 0x3C, 0xB2, + 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x05, 0x85, 0x00, 0x23, 0x85, 0xF8, + 0x4D, 0x30, 0x2B, 0x64, 0x66, 0x7E, 0x23, 0x7C, 0x01, 0x3E, 0xF6, 0xB2, + 0x66, 0x76, 0x00, 0x2B, 0x45, 0xD0, 0x95, 0xF8, 0x63, 0x30, 0xE2, 0x7E, + 0x9A, 0x42, 0x00, 0xF0, 0x85, 0x80, 0x7C, 0x4B, 0x03, 0xF1, 0x54, 0x01, + 0x1A, 0x7E, 0xFF, 0x2A, 0x03, 0xD0, 0xD8, 0x7E, 0xFF, 0x28, 0x40, 0xF0, + 0xBD, 0x80, 0x1C, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0x00, 0x2E, 0x4E, 0xD0, + 0xDB, 0xF8, 0xB4, 0x30, 0x20, 0x46, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, + 0x18, 0x47, 0x97, 0xF8, 0x5A, 0x30, 0x00, 0x20, 0xB8, 0x62, 0x00, 0x2B, + 0x59, 0xD0, 0x21, 0x7E, 0xDB, 0xF8, 0x9C, 0x50, 0x6C, 0x4A, 0x02, 0x29, + 0x01, 0xF1, 0x01, 0x03, 0x00, 0xF0, 0xC0, 0x80, 0xC3, 0xEB, 0xC3, 0x06, + 0x02, 0xEB, 0x86, 0x06, 0xD8, 0x00, 0x36, 0x7E, 0xFF, 0x2E, 0x40, 0xF0, + 0xC3, 0x80, 0x01, 0x29, 0x01, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, + 0xC3, 0xEB, 0xC3, 0x01, 0x02, 0xEB, 0x81, 0x01, 0xD8, 0x00, 0x09, 0x7E, + 0xFF, 0x29, 0x08, 0xBF, 0x00, 0x20, 0x40, 0xF0, 0xB3, 0x80, 0xA8, 0x47, + 0x66, 0x7E, 0x00, 0x2E, 0xCC, 0xD1, 0xDB, 0xF8, 0x48, 0x30, 0x20, 0x7E, + 0x98, 0x47, 0xC7, 0xE7, 0x00, 0x2B, 0x9F, 0xD1, 0x97, 0xF8, 0x58, 0x30, + 0xDF, 0xF8, 0x78, 0xB1, 0x5B, 0x06, 0x9B, 0xD5, 0x38, 0x6D, 0xDB, 0xF8, + 0x5C, 0x30, 0x98, 0x47, 0x96, 0xE7, 0x00, 0x2C, 0x7F, 0xF4, 0x64, 0xAF, + 0x51, 0x49, 0x52, 0x48, 0x40, 0xF6, 0xC4, 0x32, 0x06, 0xF0, 0x8C, 0xFC, + 0x5C, 0xE7, 0x50, 0x48, 0x21, 0x46, 0x05, 0xF0, 0x83, 0xF8, 0x26, 0x74, + 0x97, 0xF8, 0x5A, 0x30, 0xDA, 0xF8, 0x00, 0x20, 0x01, 0x3B, 0xDB, 0xB2, + 0x87, 0xF8, 0x5A, 0x30, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x0A, 0xDB, + 0x03, 0xBB, 0xBB, 0x6A, 0xA3, 0x42, 0xA2, 0xD0, 0xFB, 0x6A, 0xA3, 0x42, + 0x31, 0xD0, 0x66, 0x7E, 0x00, 0x2E, 0xC8, 0xD0, 0x94, 0xE7, 0x01, 0x2B, + 0xF2, 0xD9, 0x3F, 0x49, 0x41, 0x48, 0x4F, 0xF4, 0x40, 0x62, 0x06, 0xF0, + 0x67, 0xFC, 0x97, 0xF8, 0x5A, 0x30, 0xE9, 0xE7, 0xDB, 0xF8, 0x94, 0x30, + 0x08, 0xEB, 0x09, 0x00, 0x98, 0x47, 0x66, 0x7E, 0xFF, 0x23, 0xE3, 0x76, + 0x00, 0x2E, 0x7F, 0xF4, 0x7F, 0xAF, 0xCC, 0xE7, 0x38, 0x48, 0x04, 0xF0, + 0xFD, 0xFF, 0x38, 0x4B, 0x03, 0xF5, 0xA4, 0x51, 0x93, 0xF8, 0x4D, 0x20, + 0x22, 0xF0, 0x01, 0x02, 0x83, 0xF8, 0x4D, 0x20, 0x03, 0xF5, 0xA4, 0x63, + 0x99, 0x42, 0xF5, 0xD1, 0x3B, 0x6D, 0x00, 0x2B, 0xCB, 0xD1, 0xDB, 0xF8, + 0x34, 0x30, 0x98, 0x47, 0xC7, 0xE7, 0x21, 0x7E, 0x27, 0x4A, 0x02, 0x29, + 0x01, 0xF1, 0x01, 0x03, 0x29, 0xD0, 0xC3, 0xEB, 0xC3, 0x05, 0x02, 0xEB, + 0x85, 0x05, 0xD8, 0x00, 0x2D, 0x7E, 0xFF, 0x2D, 0x35, 0xD1, 0x01, 0x29, + 0x01, 0xF1, 0x02, 0x03, 0x08, 0xBF, 0x00, 0x23, 0xC3, 0xEB, 0xC3, 0x01, + 0x02, 0xEB, 0x81, 0x01, 0xD8, 0x00, 0x09, 0x7E, 0xFF, 0x29, 0x08, 0xBF, + 0x00, 0x22, 0x26, 0xD1, 0xFA, 0x62, 0xAE, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x00, 0x80, 0x03, 0x6C, 0xA3, 0x42, 0x3F, 0xF4, 0x3E, 0xAF, + 0x66, 0xB1, 0xDB, 0xF8, 0x8C, 0x30, 0x98, 0x47, 0x66, 0x7E, 0x00, 0x2E, + 0x7F, 0xF4, 0x38, 0xAF, 0x85, 0xE7, 0x13, 0x7E, 0xFF, 0x2B, 0x0E, 0xD1, + 0x01, 0x23, 0xDD, 0xE7, 0xDB, 0xF8, 0x94, 0x30, 0x98, 0x47, 0x66, 0x7E, + 0x00, 0x2E, 0x7F, 0xF4, 0x2B, 0xAF, 0x78, 0xE7, 0x13, 0x7E, 0xFF, 0x2B, + 0x07, 0xD1, 0x01, 0x23, 0x48, 0xE7, 0x00, 0x23, 0x18, 0x46, 0xC3, 0x1A, + 0x02, 0xEB, 0x83, 0x02, 0xD4, 0xE7, 0x03, 0x46, 0xC0, 0x1A, 0x02, 0xEB, + 0x80, 0x00, 0x48, 0xE7, 0x30, 0x9D, 0x17, 0x00, 0x08, 0xA3, 0x15, 0x00, + 0x90, 0x9D, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xF8, 0xA2, 0x15, 0x00, + 0x38, 0x9D, 0x17, 0x00, 0x28, 0xA3, 0x15, 0x00, 0x40, 0x9D, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x43, 0x03, 0x46, 0x05, 0x78, 0x29, 0x4E, 0x2A, 0x4A, + 0x04, 0x46, 0x53, 0xF8, 0x02, 0x0F, 0x97, 0x6A, 0x59, 0x68, 0xB3, 0xF8, + 0x08, 0xC0, 0xC5, 0xEB, 0xC5, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x04, 0x33, + 0x03, 0xC3, 0xC5, 0xEB, 0xC5, 0x02, 0x06, 0xEB, 0x82, 0x02, 0x97, 0x42, + 0x85, 0xB0, 0xA3, 0xF8, 0x00, 0xC0, 0x02, 0xD0, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x83, 0x4F, 0xEA, 0xC5, 0x08, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x1A, 0x4F, + 0xDF, 0xF8, 0x68, 0x90, 0x3B, 0x68, 0xD9, 0xF8, 0xA0, 0x22, 0x01, 0x33, + 0x3B, 0x60, 0x90, 0x47, 0xD9, 0xF8, 0x88, 0x32, 0x00, 0x20, 0x98, 0x47, + 0x3B, 0x68, 0x33, 0xB1, 0x11, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x3B, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xE2, 0x7A, 0x23, 0x89, 0x00, 0x93, + 0x00, 0x21, 0xCD, 0xE9, 0x01, 0x21, 0xA8, 0xEB, 0x05, 0x05, 0xE3, 0x88, + 0xA0, 0x78, 0xA2, 0x88, 0xE1, 0x78, 0x06, 0xEB, 0x85, 0x06, 0xE2, 0xF7, + 0x91, 0xFE, 0xD9, 0xF8, 0x3C, 0x33, 0x96, 0xF9, 0x0C, 0x00, 0x05, 0xB0, + 0xBD, 0xE8, 0xF0, 0x43, 0x18, 0x47, 0x00, 0xBF, 0x90, 0x9D, 0x17, 0x00, + 0x30, 0x9D, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x12, 0x4D, 0x12, 0x4A, 0x2B, 0x7C, + 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x03, 0x24, 0x06, 0x46, 0x22, 0x6C, + 0x4A, 0xB1, 0x0F, 0x4C, 0x18, 0x46, 0x63, 0x6D, 0x98, 0x47, 0xE3, 0x6C, + 0x28, 0x7C, 0x31, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x05, 0x22, + 0x11, 0x46, 0x02, 0x23, 0x41, 0xF2, 0x17, 0x40, 0x04, 0xF0, 0x7E, 0xFA, + 0x01, 0x22, 0x02, 0x70, 0x94, 0xF8, 0x63, 0x20, 0x42, 0x70, 0x04, 0xF0, + 0xA7, 0xFA, 0x03, 0x4C, 0xE9, 0xE7, 0x00, 0xBF, 0x00, 0x88, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x6B, 0x4D, 0x2C, 0x69, 0x07, 0x46, 0x8B, 0x46, 0x91, 0x46, 0x8C, 0xB3, + 0x63, 0x68, 0xD0, 0xF8, 0x40, 0xA0, 0xD5, 0xF8, 0x28, 0x80, 0x8B, 0x42, + 0x12, 0xD0, 0x05, 0xF1, 0x10, 0x06, 0xA3, 0xEB, 0x0B, 0x03, 0x00, 0x2B, + 0x21, 0x46, 0x30, 0x46, 0x26, 0xDA, 0x04, 0xF0, 0x33, 0xFF, 0x63, 0x7A, + 0x23, 0xF0, 0x01, 0x03, 0x63, 0x72, 0x2C, 0x69, 0xF4, 0xB1, 0x63, 0x68, + 0x5B, 0x45, 0xEE, 0xD1, 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x4F, 0xF0, + 0x00, 0x04, 0x1B, 0xD8, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x02, 0x03, + 0x87, 0xF8, 0x4D, 0x30, 0x95, 0xF8, 0x5B, 0x30, 0xB8, 0xEB, 0x0A, 0x00, + 0x03, 0xF1, 0x01, 0x03, 0x18, 0xBF, 0x01, 0x20, 0x85, 0xF8, 0x5B, 0x30, + 0xBD, 0xE8, 0xF8, 0x8F, 0xD0, 0xF8, 0x40, 0xA0, 0xD5, 0xF8, 0x28, 0x80, + 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x4F, 0xF0, 0x01, 0x04, 0xE3, 0xD9, + 0x97, 0xF8, 0x4E, 0x30, 0xFF, 0x2B, 0x26, 0xD0, 0x49, 0x4E, 0x59, 0x46, + 0x73, 0x6F, 0x38, 0x46, 0x98, 0x47, 0x00, 0x2C, 0x41, 0xD0, 0x97, 0xF8, + 0x4D, 0x30, 0x97, 0xF8, 0xC0, 0x24, 0x43, 0xF0, 0x04, 0x03, 0x87, 0xF8, + 0x4D, 0x30, 0x82, 0xB1, 0x42, 0x4A, 0x97, 0xF8, 0xC1, 0x34, 0x8C, 0x21, + 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x06, 0xD1, + 0xBB, 0x6C, 0x4B, 0x45, 0x03, 0xD0, 0xA3, 0xEB, 0x09, 0x02, 0x32, 0x2A, + 0x5D, 0xD4, 0xB8, 0xEB, 0x0A, 0x00, 0x18, 0xBF, 0x01, 0x20, 0xBD, 0xE8, + 0xF8, 0x8F, 0x97, 0xF8, 0xC0, 0x34, 0xB3, 0xB3, 0x35, 0x4A, 0x97, 0xF8, + 0xC1, 0x34, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x21, 0x91, 0xF8, 0x70, 0x10, + 0x01, 0x29, 0x35, 0xD0, 0x00, 0x2C, 0x4F, 0xD1, 0x30, 0x48, 0x07, 0xF1, + 0x44, 0x01, 0x04, 0xF0, 0xC9, 0xFE, 0x97, 0xF8, 0x4D, 0x30, 0x03, 0xF0, + 0xFE, 0x03, 0x43, 0xF0, 0x02, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x95, 0xF8, + 0x5B, 0x30, 0x01, 0x33, 0x85, 0xF8, 0x5B, 0x30, 0xD7, 0xE7, 0x97, 0xF8, + 0xC0, 0x34, 0x00, 0x2B, 0xE8, 0xD0, 0x24, 0x4A, 0x97, 0xF8, 0xC1, 0x34, + 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x70, 0x30, 0x01, 0x2B, + 0xDE, 0xD1, 0xF3, 0x6A, 0x49, 0x46, 0x00, 0x22, 0x38, 0x46, 0x98, 0x47, + 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x08, 0x03, 0xDD, 0xE7, 0x00, 0x2C, + 0xD2, 0xD0, 0x97, 0xF8, 0x4D, 0x30, 0x43, 0xF0, 0x04, 0x03, 0x87, 0xF8, + 0x4D, 0x30, 0xB6, 0xE7, 0x97, 0xF8, 0x4D, 0x10, 0xC8, 0x06, 0x0B, 0xD5, + 0x12, 0x4E, 0x38, 0x46, 0xD6, 0xF8, 0x8C, 0x30, 0x98, 0x47, 0x97, 0xF8, + 0x4D, 0x30, 0x23, 0xF0, 0x10, 0x03, 0x87, 0xF8, 0x4D, 0x30, 0x8A, 0xE7, + 0x4E, 0x06, 0x10, 0xD4, 0x54, 0xB9, 0x0B, 0x4E, 0xD7, 0xE7, 0xA9, 0xEB, + 0x03, 0x03, 0x32, 0x2B, 0x9D, 0xD5, 0xC7, 0xF8, 0x48, 0x90, 0x9A, 0xE7, + 0x97, 0xF8, 0x4D, 0x10, 0x41, 0xF0, 0x04, 0x01, 0x87, 0xF8, 0x4D, 0x10, + 0x85, 0xE7, 0x03, 0x4E, 0x38, 0x46, 0x33, 0x6F, 0x98, 0x47, 0x72, 0xE7, + 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, + 0x40, 0x9D, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x4D, 0x4D, 0x95, 0xF8, + 0x5A, 0x30, 0x01, 0x2B, 0x2B, 0xD9, 0x90, 0xF8, 0x4D, 0x20, 0x04, 0x46, + 0xD0, 0x06, 0x0F, 0xD5, 0x49, 0x4B, 0x03, 0xF1, 0x54, 0x00, 0x19, 0x7E, + 0xFF, 0x29, 0x02, 0xD0, 0xD9, 0x7E, 0xFF, 0x29, 0x3B, 0xD1, 0x1C, 0x33, + 0x98, 0x42, 0xF6, 0xD1, 0x02, 0xF0, 0xEF, 0x02, 0x84, 0xF8, 0x4D, 0x20, + 0x91, 0x07, 0x14, 0xD4, 0x53, 0x07, 0x6E, 0x6A, 0x44, 0xBF, 0x22, 0xF0, + 0x04, 0x02, 0x84, 0xF8, 0x4D, 0x20, 0x26, 0xB1, 0xF2, 0x68, 0x04, 0xF1, + 0x44, 0x03, 0x9A, 0x42, 0x09, 0xD0, 0x3B, 0x4B, 0x61, 0x6A, 0xDB, 0x6A, + 0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0xBD, 0xE8, + 0xF0, 0x81, 0xD4, 0xF8, 0x48, 0x80, 0x67, 0x6A, 0xA8, 0xEB, 0x07, 0x03, + 0x00, 0x2B, 0x20, 0xDB, 0xA7, 0xEB, 0x08, 0x03, 0x00, 0x2B, 0x29, 0xDB, + 0x30, 0x4D, 0x6B, 0x6B, 0x98, 0x47, 0xEB, 0x6A, 0x61, 0x6A, 0x20, 0x46, + 0x00, 0x22, 0x98, 0x47, 0x2D, 0x4A, 0xD5, 0xF8, 0x84, 0x30, 0x11, 0x69, + 0x20, 0x46, 0x00, 0x22, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x2A, 0x4A, + 0x27, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x01, 0x20, 0xD3, 0xF8, + 0x8C, 0x30, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x20, 0xBA, 0xE7, 0xE2, 0xF7, + 0xA5, 0xFD, 0xA7, 0xF5, 0x7A, 0x67, 0xA7, 0xEB, 0x08, 0x07, 0x38, 0x1A, + 0x00, 0x28, 0x0C, 0xDB, 0x67, 0x6A, 0xD4, 0xF8, 0x48, 0x80, 0xD1, 0xE7, + 0xE2, 0xF7, 0x98, 0xFD, 0xA8, 0xF5, 0x7A, 0x68, 0xA8, 0xEB, 0x07, 0x07, + 0x3F, 0x1A, 0x00, 0x2F, 0xCC, 0xDA, 0x67, 0x6A, 0xA7, 0x64, 0xE2, 0xF7, + 0x8D, 0xFD, 0x73, 0x68, 0xFF, 0x1A, 0x3F, 0x1A, 0xB7, 0xF5, 0x7A, 0x6F, + 0xB5, 0xD5, 0xA4, 0x6C, 0xE2, 0xF7, 0x84, 0xFD, 0xAB, 0x6C, 0xA4, 0xF5, + 0x7A, 0x64, 0x24, 0x1A, 0xB3, 0x42, 0x74, 0x60, 0xAB, 0xD1, 0x0D, 0x4C, + 0x0F, 0x48, 0xD4, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x0B, 0x4B, 0x71, 0x68, + 0x1B, 0x69, 0xAE, 0x64, 0xCB, 0x1A, 0x14, 0x2B, 0x05, 0xD4, 0xD4, 0xF8, + 0xE0, 0x31, 0x09, 0x48, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x6B, 0x6C, + 0x30, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x30, 0x9D, 0x17, 0x00, + 0x90, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x18, 0x88, 0x17, 0x00, 0x70, 0x9D, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x45, 0x4D, 0x95, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x04, 0x46, 0x90, 0xF8, + 0x4D, 0x30, 0x51, 0xD9, 0x9E, 0x06, 0x04, 0xD5, 0x41, 0x4B, 0x9B, 0x6F, + 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, 0x67, 0x6A, 0x13, 0xF0, 0x04, 0x06, + 0x3D, 0xD1, 0x99, 0x07, 0x42, 0xD5, 0x03, 0xF0, 0xFD, 0x03, 0x84, 0xF8, + 0x4D, 0x30, 0x95, 0xF8, 0x5B, 0x20, 0x01, 0x3A, 0xD2, 0xB2, 0x85, 0xF8, + 0x5B, 0x20, 0x4A, 0xB9, 0x95, 0xF8, 0x58, 0x20, 0x52, 0x06, 0x5B, 0xD5, + 0x34, 0x4B, 0x28, 0x6D, 0xDB, 0x6D, 0x98, 0x47, 0x94, 0xF8, 0x4D, 0x30, + 0xD4, 0xF8, 0x48, 0x80, 0x13, 0xF0, 0x08, 0x02, 0x42, 0xD0, 0x94, 0xF8, + 0x62, 0x20, 0x23, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0x00, 0x2A, + 0x4A, 0xD0, 0x02, 0x2A, 0x0A, 0xBF, 0xB4, 0xF8, 0xD2, 0x30, 0x4F, 0xF4, + 0xC8, 0x33, 0x9B, 0x02, 0xA8, 0xEB, 0x03, 0x08, 0xB6, 0xB1, 0xEB, 0x6A, + 0x26, 0x4A, 0x15, 0x69, 0x93, 0xB9, 0x24, 0x4E, 0x73, 0x6B, 0x98, 0x47, + 0xD6, 0xF8, 0x84, 0x30, 0xA5, 0xEB, 0x08, 0x02, 0x29, 0x46, 0x20, 0x46, + 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x13, 0xF0, 0x01, 0x02, 0x23, 0xD0, + 0x23, 0xF0, 0x04, 0x03, 0x84, 0xF8, 0x4D, 0x30, 0xBD, 0xE8, 0xF0, 0x81, + 0x9A, 0x07, 0xFB, 0xD5, 0x23, 0xF0, 0x02, 0x03, 0x80, 0xF8, 0x4D, 0x30, + 0x95, 0xF8, 0x5B, 0x30, 0x01, 0x3B, 0xDB, 0xB2, 0x85, 0xF8, 0x5B, 0x30, + 0x00, 0x2B, 0xEF, 0xD1, 0x95, 0xF8, 0x58, 0x30, 0x5F, 0x06, 0xEB, 0xD5, + 0x10, 0x4B, 0x28, 0x6D, 0xDB, 0x6D, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, + 0x0D, 0x4B, 0x39, 0x46, 0xDB, 0x6A, 0x20, 0x46, 0x98, 0x47, 0xC7, 0xE7, + 0x0A, 0x4B, 0x39, 0x46, 0xDB, 0x6A, 0x20, 0x46, 0x98, 0x47, 0x94, 0xF8, + 0x4D, 0x30, 0xD3, 0xE7, 0x01, 0x26, 0xA7, 0xE7, 0x07, 0x4A, 0x94, 0xF8, + 0x6C, 0x30, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x03, 0x23, 0x9B, 0x68, + 0xB2, 0xE7, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, 0x28, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x2D, 0xE9, 0xF0, 0x41, 0x07, 0x6C, + 0x05, 0x46, 0x3E, 0xDB, 0x24, 0x4E, 0x96, 0xF8, 0x58, 0x20, 0x12, 0xF0, + 0x20, 0x04, 0x03, 0xD1, 0x96, 0xF8, 0x5A, 0x30, 0x01, 0x2B, 0x01, 0xD8, + 0xBD, 0xE8, 0xF0, 0x81, 0x14, 0x23, 0x22, 0x46, 0x21, 0x46, 0x46, 0x20, + 0x95, 0xF8, 0x6C, 0x80, 0x04, 0xF0, 0x2E, 0xF8, 0x04, 0x70, 0x95, 0xF8, + 0x63, 0x10, 0x41, 0x70, 0x39, 0x79, 0x19, 0x4A, 0x81, 0x70, 0x4F, 0xF4, + 0x1E, 0x71, 0x01, 0xFB, 0x08, 0x28, 0x7A, 0x79, 0xC2, 0x70, 0xD8, 0xF8, + 0x08, 0x20, 0x15, 0x4D, 0xB7, 0xF8, 0x06, 0xC0, 0x3C, 0x89, 0x79, 0x89, + 0x01, 0x81, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, 0xA5, 0xFB, 0x02, 0x52, + 0x92, 0x09, 0xA0, 0xF8, 0x04, 0xC0, 0xC4, 0x80, 0xC2, 0x60, 0x3A, 0x7B, + 0x02, 0x74, 0x04, 0xF0, 0x3B, 0xF8, 0x96, 0xF8, 0x58, 0x30, 0x43, 0xF0, + 0x20, 0x03, 0x86, 0xF8, 0x58, 0x30, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x2F, + 0xBE, 0xD1, 0x07, 0x49, 0x07, 0x48, 0x40, 0xF6, 0x71, 0x52, 0x06, 0xF0, + 0xDD, 0xF8, 0xB7, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x30, 0x9D, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0xD3, 0x4D, 0x62, 0x10, 0x70, 0x79, 0x15, 0x00, + 0xC8, 0xA0, 0x15, 0x00, 0x70, 0x47, 0x00, 0xBF, 0x0A, 0x4B, 0x9B, 0x6A, + 0x83, 0xB1, 0x1A, 0x7E, 0x02, 0x2A, 0x05, 0xD8, 0x00, 0x6C, 0xC0, 0x1A, + 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x9B, 0x7E, 0x90, 0xF8, + 0x63, 0x00, 0x18, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, + 0x18, 0x46, 0x70, 0x47, 0x30, 0x9D, 0x17, 0x00, 0x10, 0x4A, 0x93, 0x6A, + 0xDB, 0xB1, 0x19, 0x7E, 0x02, 0x29, 0x0E, 0xD8, 0x00, 0x6C, 0xC0, 0x1A, + 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x88, 0xB1, 0xD2, 0x6A, 0x7A, 0xB1, + 0x18, 0x7C, 0xA0, 0xF1, 0x06, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, + 0x70, 0x47, 0x90, 0xF8, 0x63, 0x10, 0x98, 0x7E, 0x40, 0x1A, 0xB0, 0xFA, + 0x80, 0xF0, 0x40, 0x09, 0x00, 0x28, 0xED, 0xD1, 0x70, 0x47, 0x18, 0x46, + 0x70, 0x47, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, 0x0E, 0x4B, 0x9B, 0x6A, + 0x23, 0xB1, 0x02, 0x6C, 0x98, 0x88, 0x91, 0x88, 0x88, 0x42, 0x01, 0xD0, + 0x00, 0x20, 0x70, 0x47, 0x58, 0x7B, 0x51, 0x7B, 0x88, 0x42, 0xF9, 0xD1, + 0xD8, 0x88, 0xD1, 0x88, 0x88, 0x42, 0xF5, 0xD1, 0x18, 0x89, 0x11, 0x89, + 0x88, 0x42, 0xF1, 0xD1, 0x5B, 0x89, 0x50, 0x89, 0x18, 0x1A, 0xB0, 0xFA, + 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x00, 0xBF, 0x30, 0x9D, 0x17, 0x00, + 0x43, 0x7E, 0xDB, 0xB1, 0x0E, 0x4B, 0x30, 0xB4, 0x7F, 0x21, 0x03, 0xF5, + 0xA4, 0x54, 0x1A, 0x6C, 0x82, 0x42, 0x08, 0xD0, 0x03, 0xF5, 0xA4, 0x63, + 0xA3, 0x42, 0xF8, 0xD1, 0x7F, 0x29, 0x30, 0xBC, 0x18, 0xBF, 0x01, 0x73, + 0x70, 0x47, 0x93, 0xF9, 0x66, 0x20, 0x93, 0xF9, 0x65, 0x50, 0xAA, 0x42, + 0xA8, 0xBF, 0x2A, 0x46, 0x91, 0x42, 0xA8, 0xBF, 0x11, 0x46, 0xEB, 0xE7, + 0x70, 0x47, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x70, 0xB5, 0x11, 0x4E, + 0x11, 0x4A, 0xD6, 0xF8, 0x4C, 0x32, 0x04, 0x46, 0x98, 0x47, 0xD0, 0xB1, + 0x0F, 0x4B, 0x10, 0x4D, 0x5B, 0x78, 0x00, 0x22, 0x2A, 0x77, 0x23, 0xB1, + 0x0E, 0x4A, 0x13, 0x68, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, 0x2B, 0x7A, + 0x0B, 0xB1, 0x01, 0x3B, 0x2B, 0x72, 0xD6, 0xF8, 0xD8, 0x31, 0x0A, 0x48, + 0x98, 0x47, 0x00, 0x23, 0x6B, 0x77, 0x63, 0x68, 0x23, 0xF4, 0x01, 0x73, + 0x23, 0xF0, 0x02, 0x03, 0x63, 0x60, 0x70, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0xDD, 0xEA, 0x13, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x34, 0x04, 0x32, 0x40, 0x28, 0x9E, 0x17, 0x00, 0x70, 0xB5, 0x14, 0x4D, + 0x14, 0x4A, 0xD5, 0xF8, 0x4C, 0x32, 0x04, 0x46, 0x98, 0x47, 0xF8, 0xB1, + 0x12, 0x4A, 0x13, 0x4B, 0x52, 0x78, 0x01, 0x21, 0x19, 0x77, 0x22, 0xB1, + 0x11, 0x49, 0x0A, 0x68, 0x22, 0xF0, 0x00, 0x42, 0x0A, 0x60, 0x1A, 0x7A, + 0x0A, 0xB1, 0x01, 0x3A, 0x1A, 0x72, 0x0E, 0x4A, 0x0E, 0x49, 0x12, 0x68, + 0x09, 0x69, 0xD0, 0x8E, 0x5C, 0x61, 0x04, 0x26, 0x5E, 0x77, 0x01, 0x44, + 0xD5, 0xF8, 0xE0, 0x21, 0x0A, 0x48, 0x90, 0x47, 0x63, 0x68, 0x43, 0xF4, + 0x00, 0x73, 0x63, 0x60, 0x70, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x3D, 0xEB, 0x13, 0x00, 0x4C, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x34, 0x04, 0x32, 0x40, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x28, 0x9E, 0x17, 0x00, 0x38, 0xB5, 0x10, 0x4A, 0x0B, 0x46, 0x0C, 0x46, + 0x05, 0x46, 0x0F, 0x49, 0x02, 0x20, 0x05, 0xF0, 0xB3, 0xFD, 0x0E, 0x4B, + 0x0E, 0x4A, 0xD3, 0xF8, 0x4C, 0x32, 0x21, 0x46, 0x28, 0x46, 0x98, 0x47, + 0x30, 0xB1, 0x0C, 0x4A, 0x13, 0x7A, 0x23, 0xB1, 0x01, 0x3B, 0xDB, 0xB2, + 0x13, 0x72, 0x03, 0xB1, 0x38, 0xBD, 0x01, 0x23, 0x13, 0x70, 0x51, 0x88, + 0xBD, 0xE8, 0x38, 0x40, 0x00, 0x22, 0x32, 0x20, 0x03, 0xF0, 0x4A, 0xBF, + 0x68, 0xA3, 0x15, 0x00, 0x44, 0xA3, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xB1, 0xEB, 0x13, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x38, 0xB5, 0x18, 0x4A, + 0x0B, 0x46, 0x0C, 0x46, 0x05, 0x46, 0x17, 0x49, 0x02, 0x20, 0x05, 0xF0, + 0x87, 0xFD, 0x16, 0x4B, 0x16, 0x4A, 0xD3, 0xF8, 0x4C, 0x32, 0x21, 0x46, + 0x28, 0x46, 0x98, 0x47, 0xF8, 0xB1, 0x14, 0x48, 0x03, 0x7A, 0xBB, 0xB9, + 0x13, 0x4B, 0x9B, 0x68, 0x63, 0xB1, 0x93, 0xF8, 0x62, 0x20, 0x32, 0xB9, + 0x93, 0xF8, 0x64, 0x20, 0x1A, 0xB1, 0x5A, 0x68, 0x22, 0xF0, 0x0E, 0x02, + 0x5A, 0x60, 0x1B, 0x68, 0x00, 0x2B, 0xF2, 0xD1, 0x00, 0x22, 0x02, 0x70, + 0x41, 0x88, 0xBD, 0xE8, 0x38, 0x40, 0x32, 0x20, 0x03, 0xF0, 0x14, 0xBF, + 0x01, 0x3B, 0xDB, 0xB2, 0x03, 0x72, 0x00, 0x2B, 0xE2, 0xD0, 0x38, 0xBD, + 0x78, 0xA3, 0x15, 0x00, 0x44, 0xA3, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x09, 0xEC, 0x13, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, + 0x38, 0xB5, 0x11, 0xF4, 0x00, 0x03, 0x04, 0x46, 0x2A, 0xD1, 0x90, 0xF8, + 0x6B, 0x00, 0x25, 0x49, 0x01, 0x30, 0xC0, 0xB2, 0x09, 0x68, 0x84, 0xF8, + 0x6B, 0x00, 0x49, 0x78, 0x81, 0x42, 0x29, 0xD0, 0x94, 0xF8, 0x64, 0x50, + 0x00, 0x2D, 0x34, 0xD1, 0x1F, 0x4A, 0x20, 0x4B, 0x52, 0x78, 0x01, 0x21, + 0x19, 0x77, 0x22, 0xB1, 0x1E, 0x49, 0x0A, 0x68, 0x22, 0xF0, 0x00, 0x42, + 0x0A, 0x60, 0x1A, 0x7A, 0x0A, 0xB1, 0x01, 0x3A, 0x1A, 0x72, 0x1B, 0x4A, + 0x1B, 0x48, 0xD2, 0xF8, 0xD8, 0x21, 0x00, 0x21, 0x59, 0x77, 0x90, 0x47, + 0x63, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x63, 0x60, 0x28, 0x46, 0x38, 0xBD, + 0x28, 0xB1, 0x00, 0x23, 0x01, 0x25, 0x80, 0xF8, 0x6B, 0x30, 0x28, 0x46, + 0x38, 0xBD, 0x01, 0x25, 0x28, 0x46, 0x38, 0xBD, 0x11, 0x49, 0x84, 0xF8, + 0x6B, 0x30, 0x4F, 0xF4, 0x80, 0x60, 0x05, 0xF0, 0x11, 0xFD, 0x0C, 0x4B, + 0x20, 0x46, 0xD3, 0xF8, 0xBC, 0x31, 0x01, 0x25, 0x98, 0x47, 0x28, 0x46, + 0x38, 0xBD, 0x11, 0x46, 0x1D, 0x46, 0x94, 0xF8, 0x6C, 0x00, 0x22, 0x46, + 0xF1, 0xF7, 0xD0, 0xF9, 0x28, 0x46, 0x38, 0xBD, 0xC8, 0x35, 0x17, 0x00, + 0x4C, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x28, 0x9E, 0x17, 0x00, 0x4C, 0xA3, 0x15, 0x00, + 0x70, 0xB5, 0x13, 0x4D, 0x2B, 0x78, 0x13, 0xB3, 0x2B, 0x7F, 0x03, 0xB3, + 0x11, 0x4A, 0x12, 0x49, 0x13, 0x68, 0x8C, 0x68, 0x43, 0xF0, 0x04, 0x03, + 0x00, 0x21, 0x13, 0x60, 0x29, 0x72, 0xB4, 0xB1, 0x0E, 0x4E, 0x94, 0xF8, + 0x62, 0x30, 0x7B, 0xB9, 0x94, 0xF8, 0x64, 0x30, 0x63, 0xB1, 0x94, 0xF8, + 0x6C, 0x00, 0xFF, 0x28, 0x22, 0x46, 0x07, 0xD0, 0xD6, 0xF8, 0x34, 0x12, + 0xF1, 0xF7, 0xA0, 0xF9, 0x10, 0xB9, 0x2B, 0x7A, 0x01, 0x33, 0x2B, 0x72, + 0x24, 0x68, 0x00, 0x2C, 0xE9, 0xD1, 0x70, 0xBD, 0x1C, 0x9E, 0x17, 0x00, + 0x4C, 0x00, 0x32, 0x40, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0xB5, 0x12, 0x4D, 0x2B, 0x7F, 0xFB, 0xB9, 0x11, 0x49, 0x12, 0x48, + 0x0A, 0x68, 0x84, 0x68, 0x2B, 0x72, 0x22, 0xF0, 0x04, 0x02, 0x0A, 0x60, + 0xB4, 0xB1, 0x0F, 0x4E, 0x94, 0xF8, 0x62, 0x30, 0x7B, 0xB9, 0x94, 0xF8, + 0x64, 0x30, 0x63, 0xB1, 0x94, 0xF8, 0x6C, 0x00, 0xFF, 0x28, 0x22, 0x46, + 0x07, 0xD0, 0xD6, 0xF8, 0x58, 0x12, 0xF1, 0xF7, 0x73, 0xF9, 0x10, 0xB9, + 0x2B, 0x7A, 0x01, 0x33, 0x2B, 0x72, 0x24, 0x68, 0x00, 0x2C, 0xE9, 0xD1, + 0x70, 0xBD, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x2E, 0x4B, + 0x2E, 0x4D, 0x1B, 0x68, 0x2E, 0x4A, 0x1B, 0x78, 0xD2, 0xF8, 0xF8, 0x21, + 0x01, 0x2B, 0x6B, 0x68, 0x04, 0x46, 0x03, 0xF0, 0x20, 0x03, 0x44, 0xD0, + 0x13, 0x43, 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x94, 0xF8, 0xAC, 0x30, + 0x53, 0xB1, 0x27, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x13, 0xB1, 0x94, 0xF8, + 0x64, 0x30, 0x33, 0xBB, 0x00, 0x23, 0x6B, 0x77, 0x63, 0x60, 0x70, 0xBD, + 0x21, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x00, 0x2B, 0xF6, 0xD0, 0x94, 0xF8, + 0x64, 0x30, 0x00, 0x2B, 0xF2, 0xD0, 0xC0, 0xB1, 0x1D, 0x4B, 0x1A, 0x68, + 0x92, 0x01, 0x05, 0xD4, 0x1B, 0x68, 0x9B, 0x01, 0x11, 0xD4, 0x95, 0xF8, + 0x24, 0x30, 0x73, 0xB1, 0x6B, 0x7F, 0x05, 0x2B, 0x05, 0xD1, 0x63, 0x68, + 0x00, 0x22, 0x23, 0xF0, 0x02, 0x03, 0x63, 0x60, 0x6A, 0x77, 0x15, 0x4B, + 0xBD, 0xE8, 0x70, 0x40, 0xD3, 0xF8, 0x50, 0x32, 0x18, 0x47, 0x13, 0x4B, + 0x13, 0x4A, 0x19, 0x68, 0x10, 0x4B, 0xC9, 0x8E, 0x6C, 0x61, 0x01, 0x20, + 0x68, 0x77, 0x12, 0x69, 0xD3, 0xF8, 0xE0, 0x31, 0x0F, 0x48, 0xBD, 0xE8, + 0x70, 0x40, 0x11, 0x44, 0x18, 0x47, 0x13, 0x43, 0x01, 0xD0, 0x00, 0x20, + 0xBA, 0xE7, 0xE9, 0xF7, 0x37, 0xFD, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, + 0xB4, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x20, 0x62, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x28, 0x9E, 0x17, 0x00, 0x10, 0xB5, 0x06, 0x4C, 0x28, 0x22, 0x20, 0x46, + 0x00, 0x21, 0xE1, 0xF7, 0x5F, 0xF9, 0x04, 0x4A, 0x01, 0x23, 0xD2, 0xF8, + 0x38, 0x22, 0x22, 0x61, 0x23, 0x77, 0x10, 0xBD, 0x1C, 0x9E, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0C, 0x4C, 0x23, 0x78, 0x33, 0xB9, + 0x0B, 0x4B, 0xD3, 0xF8, 0xF8, 0x31, 0x98, 0x47, 0x08, 0xB9, 0x00, 0x20, + 0x10, 0xBD, 0x63, 0x68, 0x00, 0x2B, 0xFA, 0xD1, 0x07, 0x4B, 0x9B, 0x68, + 0x13, 0xB9, 0x05, 0xE0, 0x1B, 0x68, 0x1B, 0xB1, 0x5A, 0x68, 0x00, 0x2A, + 0xFA, 0xD0, 0xF0, 0xE7, 0x01, 0x20, 0x10, 0xBD, 0x1C, 0x9E, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x08, 0x4B, 0x09, 0x4A, + 0x1B, 0x68, 0x51, 0x80, 0x1B, 0x78, 0x02, 0x2B, 0x07, 0x4B, 0x03, 0xD0, + 0x07, 0x49, 0x00, 0x28, 0x18, 0xBF, 0x0B, 0x46, 0x00, 0x20, 0x10, 0x72, + 0x4F, 0xF4, 0x00, 0x01, 0x18, 0x47, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, + 0x1C, 0x9E, 0x17, 0x00, 0x09, 0xEC, 0x13, 0x00, 0xB1, 0xEB, 0x13, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0x92, 0xF8, 0x6C, 0x30, 0x42, 0x4C, 0x43, 0x4E, + 0x51, 0x68, 0x4F, 0xF4, 0x1E, 0x75, 0x91, 0x46, 0x05, 0xFB, 0x03, 0x43, + 0x32, 0x78, 0x1D, 0x8C, 0x21, 0xF0, 0x01, 0x07, 0xC9, 0xF8, 0x04, 0x70, + 0x00, 0x2A, 0x49, 0xD0, 0x04, 0x46, 0x00, 0x28, 0x46, 0xD0, 0x99, 0xF8, + 0x6A, 0x30, 0x00, 0x2B, 0x44, 0xD0, 0x00, 0xF1, 0x04, 0x08, 0x98, 0xF8, + 0x00, 0x30, 0x03, 0xF0, 0xFE, 0x03, 0xB3, 0xEB, 0xD5, 0x0F, 0x4F, 0xEA, + 0xD5, 0x00, 0x31, 0xD8, 0x61, 0x78, 0x04, 0x39, 0x19, 0x44, 0x88, 0x42, + 0x2C, 0xD8, 0x20, 0x44, 0xC3, 0x1A, 0x05, 0xF0, 0x07, 0x05, 0x59, 0x79, + 0x01, 0x23, 0x03, 0xFA, 0x05, 0xF5, 0x29, 0x42, 0x22, 0xD0, 0x2C, 0x4B, + 0x19, 0x68, 0x8A, 0x05, 0x03, 0xD5, 0x19, 0x68, 0x21, 0xF4, 0x00, 0x71, + 0x19, 0x60, 0x29, 0x4C, 0xD4, 0xF8, 0x54, 0x32, 0x98, 0x47, 0x28, 0x48, + 0xD9, 0xF8, 0x04, 0x30, 0x00, 0x68, 0x27, 0x49, 0xD4, 0xF8, 0xE0, 0x41, + 0x40, 0x8F, 0x43, 0xF0, 0x04, 0x03, 0xC9, 0xF8, 0x04, 0x30, 0x09, 0x69, + 0xC6, 0xF8, 0x14, 0x90, 0x06, 0x23, 0x73, 0x77, 0x01, 0x44, 0x23, 0x46, + 0x20, 0x48, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0xD9, 0xF8, 0x04, 0x30, + 0x23, 0xF0, 0x04, 0x03, 0xC9, 0xF8, 0x04, 0x30, 0xBD, 0xE8, 0xF0, 0x87, + 0x03, 0x79, 0x00, 0xF1, 0x04, 0x08, 0xD8, 0x07, 0x1E, 0xD5, 0x14, 0x4B, + 0x47, 0xF0, 0x02, 0x07, 0xC9, 0xF8, 0x04, 0x70, 0x19, 0x68, 0x89, 0x05, + 0x03, 0xD5, 0x19, 0x68, 0x21, 0xF4, 0x00, 0x71, 0x19, 0x60, 0x73, 0x7F, + 0x00, 0x2B, 0xA8, 0xD1, 0x0E, 0x4B, 0x0F, 0x49, 0x1B, 0x68, 0x09, 0x69, + 0x1F, 0x8F, 0x0B, 0x4B, 0xC6, 0xF8, 0x14, 0x90, 0x05, 0x20, 0x70, 0x77, + 0xD3, 0xF8, 0xE0, 0x31, 0x0A, 0x48, 0x39, 0x44, 0x98, 0x47, 0x98, 0xE7, + 0x21, 0xF0, 0x03, 0x01, 0xC9, 0xF8, 0x04, 0x10, 0x93, 0xE7, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x28, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x21, 0x4E, 0x14, 0x46, + 0x52, 0x68, 0x35, 0x78, 0x22, 0xF0, 0x01, 0x03, 0x63, 0x60, 0x00, 0x2D, + 0x32, 0xD0, 0x0F, 0x46, 0x94, 0xF8, 0x6A, 0x10, 0xA1, 0xB9, 0x00, 0x28, + 0x2E, 0xD0, 0x1B, 0x4A, 0x1B, 0x49, 0x10, 0x68, 0x1B, 0x4A, 0x00, 0x8F, + 0xD2, 0xF8, 0xE0, 0x21, 0x43, 0xF0, 0x02, 0x03, 0x63, 0x60, 0x09, 0x69, + 0x74, 0x61, 0x05, 0x23, 0x01, 0x44, 0x73, 0x77, 0x06, 0xF1, 0x0C, 0x00, + 0x90, 0x47, 0x63, 0x68, 0xAF, 0xB1, 0x13, 0x4D, 0x43, 0xF0, 0x04, 0x03, + 0x63, 0x60, 0xD5, 0xF8, 0x54, 0x32, 0x98, 0x47, 0x0D, 0x4B, 0x0E, 0x4A, + 0x1B, 0x68, 0x11, 0x69, 0x58, 0x8F, 0x74, 0x61, 0x06, 0x22, 0xD5, 0xF8, + 0xE0, 0x31, 0x72, 0x77, 0x01, 0x44, 0xBD, 0xE8, 0xF0, 0x41, 0x0A, 0x48, + 0x18, 0x47, 0x23, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xBD, 0xE8, 0xF0, 0x81, + 0x22, 0xF0, 0x03, 0x03, 0x00, 0x2F, 0xF6, 0xD0, 0xDF, 0xE7, 0x00, 0xBF, + 0x1C, 0x9E, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x28, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x21, 0x4D, 0x2B, 0x78, 0xAB, 0xB1, 0x03, 0x79, 0x06, 0x88, 0xDF, 0x07, + 0x14, 0x46, 0x12, 0xD5, 0x6B, 0x7F, 0x05, 0x2B, 0x07, 0xD1, 0x1D, 0x4B, + 0x05, 0xF1, 0x0C, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x00, 0x23, + 0x6B, 0x77, 0xB5, 0x04, 0x23, 0xD4, 0x63, 0x68, 0x23, 0xF0, 0x02, 0x03, + 0x63, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x88, 0x05, 0xFB, 0xD4, 0x15, 0x4A, + 0x15, 0x4B, 0x12, 0x68, 0x1B, 0x69, 0xD1, 0x8E, 0x11, 0x4F, 0x6C, 0x61, + 0x02, 0x22, 0x19, 0x44, 0x6A, 0x77, 0xD7, 0xF8, 0xE0, 0x31, 0x05, 0xF1, + 0x0C, 0x00, 0x98, 0x47, 0xB1, 0x04, 0x63, 0x68, 0x0E, 0xD5, 0x5A, 0x07, + 0x5C, 0xBF, 0x43, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xD7, 0xF8, 0x54, 0x32, + 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x94, 0xF8, 0x6A, 0x30, 0x00, 0x2B, + 0xDB, 0xD0, 0xD6, 0xE7, 0x23, 0xF0, 0x04, 0x03, 0x63, 0x60, 0xBD, 0xE8, + 0xF0, 0x81, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xC8, 0x35, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x38, 0xB5, 0x23, 0x4B, + 0x1A, 0x78, 0x00, 0x2A, 0x3F, 0xD0, 0xFF, 0x28, 0x3D, 0xD0, 0xFF, 0x29, + 0x3B, 0xD0, 0x20, 0x4A, 0x20, 0x49, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, + 0x00, 0x20, 0x4F, 0xF4, 0xA4, 0x64, 0x90, 0xF8, 0x22, 0x20, 0x04, 0xFB, + 0x02, 0x12, 0x92, 0xF8, 0x62, 0x10, 0x00, 0x29, 0x2B, 0xD1, 0x92, 0xF8, + 0x64, 0x10, 0x41, 0xB3, 0x18, 0x48, 0x19, 0x49, 0x00, 0x68, 0x09, 0x69, + 0xC5, 0x8E, 0x18, 0x4C, 0x5A, 0x61, 0x03, 0x20, 0x58, 0x77, 0xD4, 0xF8, + 0xE0, 0x21, 0x03, 0xF1, 0x0C, 0x00, 0x29, 0x44, 0x90, 0x47, 0x14, 0x4B, + 0x1B, 0x68, 0x5B, 0x07, 0x15, 0xD5, 0x13, 0x4B, 0x93, 0xF8, 0xB6, 0x30, + 0x73, 0xB1, 0x12, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x02, 0x2B, 0x09, 0xD1, + 0x10, 0x49, 0x11, 0x4A, 0x0B, 0x68, 0x23, 0xF4, 0x00, 0x73, 0x0B, 0x60, + 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0xD4, 0xF8, 0x54, 0x32, + 0x98, 0x47, 0x00, 0x20, 0x38, 0xBD, 0x00, 0xBF, 0x1C, 0x9E, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0x2C, 0x19, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x90, 0xB3, 0x33, 0x40, + 0x8C, 0x00, 0x32, 0x40, 0x3B, 0x4A, 0xDF, 0xF8, 0x1C, 0xC1, 0x13, 0x68, + 0x3A, 0x49, 0xF0, 0xB5, 0x3A, 0x4F, 0x3B, 0x4C, 0xB7, 0xF8, 0xB2, 0x00, + 0x3A, 0x4D, 0x3B, 0x4E, 0x43, 0xF0, 0x80, 0x43, 0x13, 0x60, 0x23, 0x68, + 0x39, 0x4A, 0x43, 0xF0, 0x80, 0x53, 0x23, 0x60, 0xDC, 0xF8, 0x00, 0x30, + 0x23, 0xF4, 0x70, 0x23, 0xCC, 0xF8, 0x00, 0x30, 0xDC, 0xF8, 0x00, 0x30, + 0x23, 0xF0, 0xFF, 0x03, 0x43, 0xF0, 0x10, 0x03, 0xCC, 0xF8, 0x00, 0x30, + 0x2B, 0x68, 0x23, 0xF0, 0xFC, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x2B, 0x60, + 0x0B, 0x68, 0x40, 0x09, 0x00, 0xF1, 0x20, 0x0C, 0xC3, 0xF3, 0x15, 0x03, + 0x43, 0xEA, 0x8C, 0x53, 0x0B, 0x60, 0x83, 0xB0, 0x33, 0x68, 0x29, 0x49, + 0x1B, 0x78, 0xCD, 0xF8, 0x00, 0xC0, 0x02, 0x20, 0x05, 0xF0, 0x0A, 0xFA, + 0x32, 0x68, 0x13, 0x78, 0x01, 0x2B, 0x15, 0xD0, 0x02, 0x2B, 0x11, 0xD1, + 0x23, 0x48, 0x24, 0x49, 0x03, 0x68, 0x24, 0x4C, 0x1D, 0x4A, 0x43, 0xF4, + 0x80, 0x33, 0x03, 0x60, 0x0B, 0x68, 0x3F, 0x20, 0x23, 0xF0, 0x00, 0x73, + 0x0B, 0x60, 0x20, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, + 0x03, 0xB0, 0xF0, 0xBD, 0x97, 0xF8, 0xB5, 0x10, 0x69, 0xB1, 0x19, 0x49, + 0x19, 0x48, 0x0B, 0x68, 0x23, 0xF0, 0x00, 0x73, 0x0B, 0x60, 0x2B, 0x68, + 0x24, 0x21, 0x43, 0xF4, 0x00, 0x13, 0x2B, 0x60, 0x01, 0x60, 0x13, 0x78, + 0xD8, 0xE7, 0x12, 0x48, 0x12, 0x4E, 0x01, 0x68, 0x12, 0x4D, 0x41, 0xF0, + 0x00, 0x71, 0x01, 0x60, 0x04, 0x21, 0x31, 0x60, 0x2B, 0x60, 0x23, 0x68, + 0x23, 0xF4, 0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, 0x23, 0x60, 0x13, 0x78, + 0xC6, 0xE7, 0x00, 0xBF, 0x90, 0x00, 0x32, 0x40, 0xF0, 0x00, 0x32, 0x40, + 0x2C, 0x19, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, + 0x74, 0x36, 0x17, 0x00, 0x88, 0xA3, 0x15, 0x00, 0x5C, 0xA3, 0x15, 0x00, + 0x44, 0x00, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, 0x98, 0x80, 0x32, 0x40, + 0x70, 0x80, 0x32, 0x40, 0x78, 0x00, 0x32, 0x40, 0x15, 0x48, 0x16, 0x4A, + 0x16, 0x49, 0x38, 0xB5, 0x03, 0x68, 0x43, 0xF0, 0x00, 0x73, 0x03, 0x60, + 0x02, 0x20, 0x05, 0xF0, 0xA7, 0xF9, 0x13, 0x4B, 0x9B, 0x7C, 0x23, 0xB9, + 0x12, 0x4A, 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x11, 0x4C, + 0x11, 0x48, 0x23, 0x68, 0x0E, 0x49, 0x11, 0x4D, 0x11, 0x4A, 0x23, 0xF4, + 0x80, 0x33, 0x23, 0x60, 0x03, 0x68, 0x23, 0xF0, 0x80, 0x43, 0x03, 0x60, + 0x0B, 0x68, 0x00, 0x20, 0x23, 0xF0, 0x80, 0x53, 0x0B, 0x60, 0x28, 0x60, + 0x13, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x13, 0x60, 0x38, 0xBD, 0x00, 0xBF, + 0x4C, 0x00, 0x32, 0x40, 0x98, 0xA3, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, 0x44, 0x00, 0x32, 0x40, + 0x90, 0x00, 0x32, 0x40, 0x98, 0x80, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, + 0x70, 0xB5, 0x90, 0xF8, 0x72, 0x30, 0x01, 0x2B, 0x04, 0x46, 0x11, 0xD0, + 0x02, 0x2B, 0x00, 0xD0, 0x70, 0xBD, 0x0C, 0x4D, 0x41, 0x6F, 0x01, 0x23, + 0x80, 0xF8, 0x72, 0x30, 0xD5, 0xF8, 0xE0, 0x31, 0x60, 0x30, 0x98, 0x47, + 0xD5, 0xF8, 0x18, 0x32, 0x20, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, + 0x04, 0x4B, 0x00, 0x22, 0x80, 0xF8, 0x72, 0x20, 0xBD, 0xE8, 0x70, 0x40, + 0xD3, 0xF8, 0x18, 0x32, 0x18, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x4F, 0xF0, 0x00, 0x0C, 0x4F, 0xF0, 0x01, 0x0E, + 0x83, 0xB0, 0x06, 0x46, 0x04, 0x46, 0x00, 0xF1, 0x60, 0x05, 0x03, 0x46, + 0x67, 0x46, 0x71, 0x46, 0x1A, 0x7C, 0x02, 0x2A, 0x13, 0xD1, 0xDA, 0x7C, + 0x01, 0x2A, 0x10, 0xD8, 0x96, 0xF8, 0x87, 0x20, 0x32, 0xB1, 0x93, 0xF8, + 0x21, 0x20, 0x1A, 0xB1, 0x93, 0xF8, 0x20, 0x20, 0x01, 0x2A, 0x06, 0xD0, + 0xDA, 0x68, 0x00, 0x29, 0x00, 0xF0, 0xC0, 0x80, 0x01, 0x37, 0x94, 0x46, + 0x00, 0x21, 0x30, 0x33, 0x9D, 0x42, 0xE5, 0xD1, 0x01, 0x22, 0x8E, 0x46, + 0x33, 0x46, 0x4F, 0xF0, 0x00, 0x09, 0x00, 0x92, 0xA0, 0x46, 0x1A, 0x7C, + 0x02, 0x2A, 0x1D, 0xD1, 0xD9, 0x7C, 0x01, 0x29, 0x1A, 0xD9, 0x96, 0xF8, + 0x87, 0x20, 0x32, 0xB1, 0x93, 0xF8, 0x21, 0x20, 0x1A, 0xB1, 0x93, 0xF8, + 0x20, 0x20, 0x01, 0x2A, 0x10, 0xD0, 0xD3, 0xE9, 0x06, 0x04, 0xDA, 0x68, + 0x04, 0xEB, 0x02, 0x0A, 0xAA, 0xEB, 0x00, 0x00, 0xBE, 0xF1, 0x00, 0x0F, + 0x42, 0xD0, 0x00, 0x21, 0x00, 0x91, 0x01, 0x37, 0x81, 0x46, 0x94, 0x46, + 0x4F, 0xF0, 0x00, 0x0E, 0x30, 0x33, 0x9D, 0x42, 0xDB, 0xD1, 0x01, 0x96, + 0x44, 0x46, 0x00, 0x9E, 0x18, 0xE0, 0x00, 0x2F, 0x5F, 0xD1, 0xA1, 0xEB, + 0x09, 0x02, 0x00, 0x2A, 0x58, 0xDB, 0xAC, 0xEB, 0x03, 0x02, 0x00, 0x2A, + 0x0B, 0xDB, 0xA3, 0xEB, 0x09, 0x00, 0xAC, 0xEB, 0x01, 0x02, 0x39, 0xEA, + 0x20, 0x09, 0x28, 0xBF, 0x99, 0x46, 0x3C, 0xEA, 0x22, 0x0C, 0x28, 0xBF, + 0x8C, 0x46, 0x30, 0x34, 0xA5, 0x42, 0x0F, 0xD0, 0x23, 0x7C, 0x01, 0x2B, + 0xF9, 0xD1, 0xE3, 0x68, 0xA1, 0x69, 0x19, 0x44, 0xBE, 0xF1, 0x00, 0x0F, + 0xDD, 0xD0, 0x30, 0x34, 0x00, 0x26, 0xA5, 0x42, 0x99, 0x46, 0x8C, 0x46, + 0xB6, 0x46, 0xEF, 0xD1, 0x33, 0x46, 0x01, 0x9E, 0xC6, 0xF8, 0x80, 0xC0, + 0x0B, 0xB1, 0x0C, 0xF1, 0x0A, 0x09, 0xC6, 0xF8, 0x7C, 0x90, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xA0, 0xEB, 0x0C, 0x0A, 0xBA, 0xF1, 0x00, 0x0F, + 0x80, 0xF2, 0x88, 0x80, 0xA4, 0xEB, 0x02, 0x0B, 0x02, 0xEB, 0x0C, 0x0A, + 0x01, 0x39, 0x83, 0x44, 0xA0, 0xEB, 0x0A, 0x0A, 0x01, 0xE0, 0x01, 0x39, + 0xB2, 0xD0, 0x0B, 0xEB, 0x02, 0x00, 0x22, 0x44, 0x1A, 0xEB, 0x02, 0x0F, + 0xF7, 0xD4, 0xAC, 0xEB, 0x02, 0x04, 0x3C, 0xEA, 0x24, 0x0C, 0x28, 0xBF, + 0x94, 0x46, 0x01, 0x29, 0x3D, 0xD0, 0x62, 0x46, 0x00, 0x99, 0x00, 0x29, + 0x99, 0xD1, 0xA0, 0xEB, 0x09, 0x01, 0x10, 0xEA, 0x21, 0x00, 0x38, 0xBF, + 0x48, 0x46, 0x94, 0xE7, 0x99, 0x46, 0x8C, 0x46, 0xB3, 0xE7, 0xA1, 0xEB, + 0x0C, 0x02, 0x00, 0x2A, 0x94, 0xF8, 0x13, 0x80, 0x61, 0xDA, 0x08, 0xF1, + 0xFF, 0x30, 0xB8, 0xF1, 0x00, 0x0F, 0xA8, 0xD0, 0xD4, 0xF8, 0x1C, 0xB0, + 0x9A, 0x46, 0x03, 0xE0, 0x42, 0x1E, 0x00, 0x28, 0xA1, 0xD0, 0x10, 0x46, + 0xDA, 0x44, 0x01, 0xEB, 0x0A, 0x08, 0xA8, 0xEB, 0x0C, 0x02, 0xD2, 0x1A, + 0x00, 0x2A, 0xA8, 0xEB, 0x03, 0x08, 0xF1, 0xDB, 0xA6, 0xB1, 0xAC, 0xEB, + 0x0A, 0x03, 0x00, 0x2B, 0x29, 0xDB, 0x58, 0xB3, 0xE3, 0x69, 0xC4, 0x46, + 0x0A, 0xEB, 0x03, 0x09, 0x00, 0x26, 0x8A, 0xE7, 0xAC, 0xEB, 0x02, 0x01, + 0x12, 0xEA, 0x21, 0x02, 0x38, 0xBF, 0x62, 0x46, 0x38, 0xE7, 0x48, 0x46, + 0x62, 0x46, 0x5E, 0xE7, 0xA9, 0xEB, 0x0A, 0x03, 0x00, 0x2B, 0x11, 0xDB, + 0xAC, 0xEB, 0x0A, 0x03, 0x00, 0x2B, 0x15, 0xDB, 0xA8, 0xEB, 0x09, 0x03, + 0x00, 0x2B, 0x14, 0xDB, 0x1B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x29, 0xDB, 0xE3, 0x69, 0xC4, 0x46, 0x0A, 0xEB, 0x03, 0x09, + 0x4F, 0xF0, 0x00, 0x0E, 0x67, 0xE7, 0xD1, 0x46, 0x00, 0x26, 0x64, 0xE7, + 0xC4, 0x46, 0x62, 0xE7, 0xD1, 0x46, 0xB6, 0x46, 0x5F, 0xE7, 0x01, 0x28, + 0x15, 0xDD, 0xE3, 0x69, 0x9A, 0x44, 0xAA, 0xEB, 0x09, 0x03, 0xC4, 0x46, + 0x39, 0xEA, 0x23, 0x09, 0x28, 0xBF, 0xD1, 0x46, 0xB6, 0x46, 0x52, 0xE7, + 0xAC, 0xEB, 0x02, 0x01, 0x12, 0xEA, 0x21, 0x02, 0x38, 0xBF, 0x62, 0x46, + 0x8A, 0xE7, 0x40, 0x46, 0x9A, 0x46, 0x88, 0x46, 0xB0, 0xE7, 0xC4, 0x46, + 0xB6, 0x46, 0x44, 0xE7, 0x04, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x4D, 0x12, + 0x05, 0xF0, 0x64, 0xFA, 0xCE, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x03, 0x7C, 0x02, 0x2B, 0x83, 0xB0, 0x04, 0x46, 0x69, 0xD0, 0x90, 0xF8, + 0x40, 0x30, 0x02, 0x2B, 0x54, 0xD0, 0x94, 0xF8, 0x73, 0xA0, 0xBA, 0xF1, + 0x00, 0x0F, 0x18, 0xD1, 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x40, 0xF0, + 0xD2, 0x80, 0x94, 0xF8, 0x70, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xB8, 0x80, + 0xDF, 0xF8, 0x24, 0x93, 0xC3, 0x4B, 0x94, 0xF8, 0x71, 0x20, 0xD3, 0xF8, + 0x5C, 0x34, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x90, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x94, 0xF8, 0x72, 0x30, 0x01, 0x2B, + 0x00, 0xF0, 0x54, 0x81, 0x94, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x00, 0xF0, + 0xB9, 0x81, 0xB9, 0x4A, 0x92, 0xF8, 0x00, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, + 0x00, 0xF0, 0xA8, 0x80, 0x52, 0x68, 0x11, 0x07, 0x00, 0xF1, 0xD4, 0x81, + 0x94, 0xF8, 0x85, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0x8F, 0x80, 0x94, 0xF8, + 0x71, 0x80, 0xDF, 0xF8, 0xD0, 0x92, 0x02, 0x23, 0x0C, 0x21, 0x00, 0x22, + 0x4D, 0x20, 0x03, 0xF0, 0x15, 0xF9, 0x01, 0x25, 0x94, 0xF8, 0x71, 0x20, + 0x02, 0x70, 0x45, 0x70, 0x03, 0xF0, 0x3E, 0xF9, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x08, 0x93, 0x00, 0x22, 0x84, 0xF8, 0x85, 0x20, 0x18, 0x6C, + 0x29, 0x46, 0xFF, 0xF7, 0x15, 0xF9, 0x55, 0xE0, 0x90, 0xF8, 0x87, 0x30, + 0x00, 0x2B, 0x7B, 0xD0, 0xFF, 0x23, 0x00, 0x21, 0x94, 0xF8, 0x51, 0x20, + 0x00, 0x2A, 0x6F, 0xD0, 0x94, 0xF8, 0x50, 0x20, 0x01, 0x2A, 0x6B, 0xD1, + 0x00, 0x29, 0x9A, 0xD0, 0x11, 0xE0, 0x90, 0xF8, 0x87, 0x30, 0x00, 0x2B, + 0x5F, 0xD0, 0x90, 0xF8, 0x21, 0x30, 0x23, 0xB1, 0x90, 0xF8, 0x20, 0x30, + 0x01, 0x2B, 0x00, 0xF0, 0xA6, 0x81, 0x94, 0xF8, 0x40, 0x20, 0x23, 0x7D, + 0x02, 0x2A, 0x00, 0xF0, 0x9E, 0x81, 0x01, 0x2B, 0xB8, 0xD0, 0x94, 0xF8, + 0x86, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x0D, 0x81, 0x94, 0xF8, + 0x72, 0x50, 0x94, 0xF8, 0x85, 0x30, 0xA5, 0xF1, 0x01, 0x06, 0xB6, 0xFA, + 0x86, 0xF6, 0x76, 0x09, 0xB3, 0x42, 0x00, 0xF0, 0x4C, 0x81, 0x02, 0x23, + 0x0C, 0x21, 0x52, 0x46, 0x4D, 0x20, 0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, + 0x20, 0x92, 0x03, 0xF0, 0xC1, 0xF8, 0x6F, 0x1E, 0x18, 0xBF, 0x01, 0x27, + 0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, 0x47, 0x70, 0x03, 0xF0, 0xE8, 0xF8, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, 0x84, 0xF8, 0x85, 0x60, + 0x18, 0x6C, 0x39, 0x46, 0xFF, 0xF7, 0xC0, 0xF8, 0x01, 0x2D, 0x4C, 0xD0, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, 0x93, 0xF8, 0x62, 0x20, + 0x02, 0x2A, 0x00, 0xF0, 0xF1, 0x80, 0x94, 0xF8, 0x70, 0x30, 0x7B, 0xB9, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x98, 0x98, 0xF8, 0x6C, 0x30, + 0xFF, 0x2B, 0x07, 0xD0, 0x6E, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, + 0x03, 0x23, 0x01, 0x22, 0x83, 0xF8, 0x24, 0x20, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x90, 0xF8, 0x40, 0x20, 0x03, 0x7D, 0x02, 0x2A, 0xA8, 0xD1, + 0x94, 0xF8, 0x44, 0x20, 0x93, 0x42, 0x28, 0xBF, 0x13, 0x46, 0xA2, 0xE7, + 0xFF, 0x23, 0xF7, 0xE7, 0x94, 0xF8, 0x85, 0x20, 0x01, 0x2A, 0x3F, 0xF4, + 0x30, 0xAF, 0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, 0x88, 0x91, 0x02, 0x23, + 0x0C, 0x21, 0x00, 0x22, 0x4D, 0x20, 0x03, 0xF0, 0x71, 0xF8, 0x00, 0x25, + 0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, 0x45, 0x70, 0x03, 0xF0, 0x9A, 0xF8, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, 0x01, 0x22, 0x84, 0xF8, + 0x85, 0x20, 0x18, 0x6C, 0x29, 0x46, 0xFF, 0xF7, 0x71, 0xF8, 0x94, 0xF8, + 0x70, 0xE0, 0xBE, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0xD4, 0x80, 0x4F, 0xF4, + 0xA4, 0x67, 0x07, 0xFB, 0x08, 0x97, 0x97, 0xF8, 0x6C, 0x10, 0xFF, 0x29, + 0x00, 0xF0, 0xF0, 0x80, 0x4A, 0x4D, 0x01, 0x94, 0x4F, 0xF4, 0x1E, 0x7B, + 0xA4, 0x23, 0x0B, 0xFB, 0x01, 0xF0, 0x03, 0xFB, 0x08, 0xF3, 0x05, 0xF5, + 0x16, 0x7B, 0x2E, 0x18, 0x9E, 0x33, 0x58, 0x44, 0x00, 0x90, 0x09, 0xEB, + 0xC3, 0x0B, 0x4F, 0xF0, 0x4F, 0x0C, 0x46, 0x20, 0x1C, 0xFB, 0x01, 0x01, + 0x5C, 0x46, 0x40, 0x4A, 0xDD, 0xF8, 0x00, 0xB0, 0x86, 0xF8, 0x24, 0xE0, + 0x05, 0xEB, 0xC1, 0x05, 0xD6, 0xF8, 0x08, 0x12, 0x39, 0xB3, 0xEF, 0xF3, + 0x10, 0x81, 0xCB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x39, 0x4B, 0x01, 0x21, + 0x19, 0x60, 0x11, 0x68, 0xA5, 0xF1, 0x28, 0x00, 0x4B, 0x1C, 0xA4, 0xF1, + 0x28, 0x01, 0x13, 0x60, 0x00, 0x90, 0x03, 0xF0, 0x9D, 0xFD, 0xD6, 0xF8, + 0x08, 0x12, 0xD6, 0xF8, 0x0C, 0x32, 0x00, 0x98, 0xC7, 0xF8, 0xC8, 0x14, + 0xC7, 0xF8, 0xCC, 0x34, 0x03, 0xF0, 0x9C, 0xFC, 0x2C, 0x4A, 0x11, 0x68, + 0x48, 0x1E, 0x31, 0xB1, 0x2B, 0x4B, 0x10, 0x60, 0x19, 0x68, 0x10, 0xB9, + 0x00, 0x29, 0x40, 0xF0, 0xB5, 0x80, 0xD6, 0xF8, 0x30, 0x32, 0x20, 0x46, + 0x29, 0x46, 0x08, 0x36, 0x08, 0x34, 0x08, 0x37, 0x2B, 0xB1, 0x03, 0xF0, + 0x7D, 0xFD, 0x28, 0x46, 0x03, 0xF0, 0x84, 0xFC, 0x20, 0x4A, 0x08, 0x35, + 0x5D, 0x45, 0xC3, 0xD1, 0x01, 0x9C, 0x40, 0x20, 0x03, 0xF0, 0xDE, 0xFB, + 0x94, 0xF8, 0x70, 0x20, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x98, + 0x98, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x13, 0xD0, 0x00, 0x2A, 0x7F, 0xF4, + 0x55, 0xAF, 0xBA, 0xF1, 0x00, 0x0F, 0x7F, 0xF4, 0x51, 0xAF, 0x99, 0xE6, + 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x3F, 0xF4, 0x8E, 0xAE, 0x94, 0xF8, + 0x71, 0x80, 0xDF, 0xF8, 0x48, 0x90, 0x4F, 0xF0, 0x00, 0x0A, 0x5C, 0xE7, + 0xD8, 0xF8, 0x04, 0x30, 0x43, 0xF0, 0x20, 0x03, 0xC8, 0xF8, 0x04, 0x30, + 0x00, 0x2A, 0x7F, 0xF4, 0x3B, 0xAF, 0xE4, 0xE7, 0x94, 0xF8, 0x85, 0x30, + 0x01, 0x2B, 0x3F, 0xF4, 0x35, 0xAF, 0x94, 0xF8, 0x71, 0x80, 0xDF, 0xF8, + 0x1C, 0x90, 0x4F, 0xF0, 0x01, 0x0A, 0x46, 0xE7, 0x88, 0x1A, 0x17, 0x00, + 0x1C, 0x9E, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x3C, 0x49, 0x5A, 0x68, + 0x49, 0x68, 0x22, 0xF0, 0x20, 0x02, 0x00, 0x29, 0x5A, 0x60, 0x7F, 0xF7, + 0x06, 0xAF, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x36, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x36, 0x4D, 0x2B, 0x68, 0x04, 0x20, + 0x01, 0x33, 0x2B, 0x60, 0xEE, 0xF7, 0x1C, 0xFF, 0x4F, 0xF0, 0x80, 0x41, + 0x04, 0x20, 0xEE, 0xF7, 0xB7, 0xFF, 0x2B, 0x68, 0x00, 0x2B, 0x3F, 0xF4, + 0xEE, 0xAE, 0x2D, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, + 0x7F, 0xF4, 0xE7, 0xAE, 0x00, 0x2A, 0x3F, 0xF4, 0xE4, 0xAE, 0x62, 0xB6, + 0xE1, 0xE6, 0x40, 0x20, 0x03, 0xF0, 0x6E, 0xFB, 0x94, 0xF8, 0x70, 0x20, + 0x8E, 0xE7, 0x94, 0xF8, 0x70, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0xEA, 0xAE, + 0x01, 0x2D, 0x7F, 0xF4, 0xE7, 0xAE, 0x2D, 0xE6, 0x94, 0xF8, 0x71, 0x80, + 0xDF, 0xF8, 0x80, 0x90, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x93, + 0x93, 0xF8, 0xDE, 0x20, 0x93, 0xF8, 0xC2, 0x34, 0x9A, 0x42, 0x20, 0xD0, + 0x94, 0xF8, 0x85, 0x30, 0x01, 0x2B, 0x3F, 0xF4, 0xD3, 0xAE, 0x4F, 0xF0, + 0x00, 0x0A, 0xE8, 0xE6, 0x97, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x7F, 0xF4, + 0x76, 0xAF, 0x7B, 0x68, 0x43, 0xF0, 0x20, 0x03, 0x7B, 0x60, 0xBA, 0xF1, + 0x00, 0x0F, 0x7F, 0xF4, 0xC3, 0xAE, 0x0B, 0xE6, 0x62, 0xB6, 0x48, 0xE7, + 0x94, 0xF8, 0x85, 0x20, 0x01, 0x2A, 0x7F, 0xF4, 0x70, 0xAF, 0x00, 0x2B, + 0x3F, 0xF4, 0x00, 0xAE, 0xB6, 0xE6, 0x94, 0xF8, 0x85, 0x30, 0x00, 0x2B, + 0x7F, 0xF4, 0x27, 0xAE, 0xB0, 0xE6, 0x01, 0x21, 0x42, 0xE6, 0x90, 0xF8, + 0x40, 0x30, 0x02, 0x2B, 0x7F, 0xF4, 0xE3, 0xAD, 0x3A, 0xE6, 0x00, 0xBF, + 0xD8, 0x9C, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0xF4, 0x92, + 0x47, 0x7C, 0xB6, 0x49, 0x90, 0xF8, 0x10, 0xB0, 0x8C, 0x23, 0x03, 0xFB, + 0x07, 0x93, 0x83, 0xB0, 0x93, 0xF8, 0x71, 0x20, 0x93, 0xF8, 0x70, 0x30, + 0x00, 0x92, 0x07, 0xEB, 0x87, 0x06, 0x4F, 0xF4, 0xA4, 0x6A, 0xC6, 0xEB, + 0xC6, 0x06, 0x01, 0x2B, 0x05, 0x46, 0x0A, 0xFB, 0x02, 0x1A, 0x09, 0xEB, + 0x86, 0x06, 0x00, 0xF0, 0x0B, 0x81, 0xAA, 0x4B, 0xC4, 0x6A, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xD3, 0x80, 0xDA, 0xF8, + 0x7C, 0x30, 0xE4, 0x1A, 0xA4, 0x4B, 0xA5, 0x49, 0xDF, 0xF8, 0x94, 0x82, + 0xBB, 0xF1, 0x01, 0x0F, 0x17, 0xD0, 0xBB, 0xF1, 0x02, 0x0F, 0x00, 0xF0, + 0x82, 0x80, 0x1A, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x7F, 0xDB, + 0xD8, 0xF8, 0x10, 0x20, 0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, + 0x00, 0x2A, 0x80, 0xF2, 0xE9, 0x80, 0xBB, 0xF1, 0x00, 0x0F, 0xE7, 0xD1, + 0xDF, 0xF8, 0x70, 0x82, 0x20, 0xE0, 0xA8, 0x69, 0xDF, 0xF8, 0x68, 0x82, + 0x95, 0x4B, 0x1B, 0x69, 0x04, 0x44, 0xE3, 0x1A, 0xA3, 0xF5, 0x9C, 0x53, + 0x08, 0x3B, 0x00, 0x2B, 0x80, 0xF2, 0xFA, 0x80, 0xEA, 0x7C, 0xFF, 0x2A, + 0x1B, 0xD0, 0x01, 0x3A, 0xD2, 0xB2, 0xEA, 0x74, 0xBA, 0xB9, 0x8C, 0x23, + 0x03, 0xFB, 0x07, 0x97, 0x97, 0xF8, 0x70, 0x30, 0x01, 0x2B, 0x5D, 0xD0, + 0xD8, 0xF8, 0xE8, 0x31, 0x28, 0x46, 0x98, 0x47, 0x87, 0x4B, 0x1B, 0x69, + 0xD8, 0xF8, 0x1C, 0x32, 0x30, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0x18, 0x32, + 0x30, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x18, 0x47, 0x4F, 0xF0, + 0x8C, 0x0E, 0x0E, 0xFB, 0x07, 0x9E, 0xD5, 0xE9, 0x06, 0x0B, 0x9E, 0xF8, + 0x70, 0x30, 0xAB, 0xEB, 0x00, 0x01, 0x01, 0x2B, 0x0C, 0x44, 0x47, 0xD0, + 0x7A, 0x4A, 0x12, 0x69, 0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, + 0x00, 0x2A, 0xA8, 0xBF, 0x4F, 0xF0, 0x01, 0x0B, 0xBE, 0xDB, 0x53, 0xB9, + 0x72, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, + 0xB0, 0x80, 0xDA, 0xF8, 0x7C, 0x30, 0x23, 0x44, 0xEB, 0x62, 0x21, 0x46, + 0xD8, 0xF8, 0xE0, 0x31, 0x28, 0x46, 0x98, 0x47, 0x85, 0xF8, 0x10, 0xB0, + 0xD8, 0xF8, 0x1C, 0x32, 0x30, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0x18, 0x32, + 0x30, 0x46, 0x98, 0x47, 0x00, 0x9A, 0x11, 0x46, 0x63, 0x4A, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x01, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, + 0x00, 0xF0, 0xA4, 0x80, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDF, 0xF8, + 0x90, 0x81, 0x9B, 0xE7, 0x5F, 0x48, 0x4F, 0xF4, 0x31, 0x72, 0x04, 0xF0, + 0x53, 0xFF, 0x5A, 0x4B, 0x5A, 0x49, 0x77, 0xE7, 0xD8, 0xF8, 0x08, 0x32, + 0xA9, 0x7C, 0x50, 0x46, 0x98, 0x47, 0x58, 0x4B, 0x1B, 0x69, 0x9F, 0xE7, + 0x9E, 0xF8, 0x84, 0x10, 0x00, 0x29, 0x36, 0xD0, 0xA9, 0x6A, 0x01, 0x91, + 0x69, 0x6A, 0x01, 0xEB, 0x0B, 0x0C, 0x01, 0x99, 0x01, 0x39, 0xC5, 0xE9, + 0x09, 0xC1, 0x00, 0x29, 0x5E, 0xD1, 0x2A, 0x75, 0xBB, 0xF1, 0x00, 0x0F, + 0x05, 0xD0, 0x4F, 0xF0, 0x00, 0x43, 0xB3, 0xFB, 0xFB, 0xF3, 0x01, 0x3B, + 0xAB, 0x62, 0x00, 0x9B, 0x19, 0x46, 0x46, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x01, 0x32, 0xD8, 0xF8, 0x90, 0x31, 0x92, 0xF8, 0x63, 0x00, + 0x03, 0x21, 0x98, 0x47, 0x43, 0x4B, 0x1B, 0x69, 0xE3, 0x1A, 0xA3, 0xF5, + 0x9C, 0x53, 0x08, 0x3B, 0x00, 0x2B, 0x71, 0xDA, 0xA8, 0x69, 0x51, 0xE7, + 0x9A, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x28, 0xAF, 0x3B, 0x49, + 0x3D, 0x48, 0x58, 0x22, 0x04, 0xF0, 0x0E, 0xFF, 0x21, 0xE7, 0x39, 0x4A, + 0x12, 0x69, 0xA2, 0x1A, 0xA2, 0xF5, 0x9C, 0x52, 0x08, 0x3A, 0x00, 0x2A, + 0xFF, 0xF6, 0x3E, 0xAF, 0xD8, 0xF8, 0xE0, 0x21, 0x01, 0x93, 0x21, 0x46, + 0x28, 0x46, 0x90, 0x47, 0x01, 0x9B, 0x2B, 0x74, 0xD8, 0xF8, 0x1C, 0x32, + 0x30, 0x46, 0x98, 0x47, 0xD8, 0xF8, 0x18, 0x32, 0x30, 0x46, 0x98, 0x47, + 0x00, 0x9A, 0x11, 0x46, 0x28, 0x4A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x01, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x8A, 0xD1, 0x31, 0xE0, + 0xC4, 0x68, 0xFD, 0xE6, 0xBB, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x16, 0xAF, + 0x8C, 0x23, 0x03, 0xFB, 0x07, 0x97, 0xDF, 0xF8, 0x98, 0x80, 0x97, 0xF8, + 0x70, 0x30, 0x54, 0xE7, 0x1F, 0x4A, 0x12, 0x69, 0xA2, 0x1A, 0xA2, 0xF5, + 0x9C, 0x52, 0x08, 0x3A, 0x00, 0x2A, 0xFF, 0xF6, 0x0B, 0xAF, 0x9B, 0x46, + 0x9E, 0xF8, 0x70, 0x30, 0x47, 0xE7, 0x9A, 0xF8, 0x62, 0x30, 0x00, 0x2B, + 0x3F, 0xF4, 0x4B, 0xAF, 0x15, 0x49, 0x18, 0x48, 0x49, 0x22, 0x04, 0xF0, + 0xC3, 0xFE, 0x44, 0xE7, 0x8C, 0x23, 0x03, 0xFB, 0x07, 0x97, 0x4F, 0xF0, + 0x02, 0x0B, 0x97, 0xF8, 0x70, 0x30, 0x34, 0xE7, 0xBB, 0xF1, 0x01, 0x0F, + 0x7F, 0xF4, 0x58, 0xAF, 0x00, 0x9A, 0x11, 0x46, 0x09, 0x4A, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x01, 0x23, 0x5A, 0x68, 0x42, 0xF0, 0x20, 0x02, + 0x5A, 0x60, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x8C, 0x23, 0x03, 0xFB, + 0x07, 0x97, 0x4F, 0xF0, 0x01, 0x0B, 0x97, 0xF8, 0x70, 0x30, 0x1A, 0xE7, + 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x64, 0x7D, 0x15, 0x00, 0x40, 0x9C, 0x15, 0x00, + 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x00, 0x22, + 0x04, 0x46, 0x0D, 0x46, 0x10, 0x23, 0x0C, 0x21, 0x55, 0x20, 0x02, 0xF0, + 0xA5, 0xFD, 0x05, 0xEB, 0x45, 0x03, 0x94, 0xF8, 0x71, 0x20, 0x02, 0x70, + 0x04, 0xEB, 0x03, 0x13, 0x45, 0x70, 0x1A, 0x7C, 0x22, 0xB9, 0xC2, 0x70, + 0xBD, 0xE8, 0x38, 0x40, 0x02, 0xF0, 0xC6, 0xBD, 0x1A, 0x7D, 0xC2, 0x70, + 0x00, 0x2A, 0xF7, 0xD0, 0x93, 0xF8, 0x20, 0x20, 0x82, 0x70, 0xD3, 0xE9, + 0x06, 0x12, 0x5B, 0x6A, 0xC3, 0x60, 0xC0, 0xE9, 0x01, 0x12, 0xBD, 0xE8, + 0x38, 0x40, 0x02, 0xF0, 0xB5, 0xBD, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x41, + 0x16, 0x46, 0x2D, 0x4D, 0x4F, 0xF4, 0xA4, 0x62, 0xB3, 0x42, 0x04, 0x46, + 0x02, 0xFB, 0x01, 0x58, 0x0B, 0xD3, 0xC2, 0x7C, 0x01, 0x2A, 0x30, 0xD0, + 0xC5, 0x69, 0x9B, 0x1B, 0xB3, 0xFB, 0xF5, 0xF3, 0x03, 0xFB, 0x05, 0x55, + 0x2E, 0x44, 0x5F, 0x1C, 0x00, 0xE0, 0x00, 0x27, 0x23, 0x4B, 0xE6, 0x62, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0xE3, 0x7C, + 0xD8, 0xF8, 0x7C, 0x00, 0xFF, 0x2B, 0xA6, 0xEB, 0x00, 0x00, 0x31, 0xD0, + 0xBB, 0x42, 0x94, 0xBF, 0xDB, 0x1A, 0xDB, 0x1B, 0x1B, 0x4A, 0xDB, 0xB2, + 0xE3, 0x74, 0x12, 0x69, 0x82, 0x1A, 0x00, 0x2A, 0x0C, 0xDA, 0x18, 0x49, + 0x5B, 0xB1, 0xE5, 0x69, 0xFF, 0x2B, 0x28, 0x44, 0x0A, 0xD0, 0x01, 0x3B, + 0xDB, 0xB2, 0xE3, 0x74, 0x0A, 0x69, 0x82, 0x1A, 0x00, 0x2A, 0xF3, 0xDB, + 0x03, 0xB9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x0A, 0x69, 0x82, 0x1A, + 0x00, 0x2A, 0xED, 0xDB, 0xBD, 0xE8, 0xF0, 0x81, 0x98, 0xF8, 0x62, 0x30, + 0x00, 0x2B, 0xD2, 0xD0, 0x0B, 0x48, 0x0C, 0x49, 0x58, 0x22, 0x04, 0xF0, + 0x15, 0xFE, 0xE3, 0x7C, 0xD8, 0xF8, 0x7C, 0x00, 0xFF, 0x2B, 0xA6, 0xEB, + 0x00, 0x00, 0xCD, 0xD1, 0x04, 0x4A, 0x12, 0x69, 0x82, 0x1A, 0x00, 0x2A, + 0xD3, 0xDB, 0xE1, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x40, 0x9C, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x70, 0xB5, 0x08, 0x4E, 0xD6, 0xF8, 0xEC, 0x41, 0x05, 0x46, 0xA0, 0x47, + 0x04, 0x46, 0x30, 0xB1, 0xD6, 0xF8, 0xE0, 0x31, 0x01, 0x46, 0x28, 0x46, + 0x98, 0x47, 0x01, 0x23, 0x2B, 0x74, 0xE0, 0xB2, 0x70, 0xBD, 0x00, 0xBF, + 0x88, 0x1A, 0x17, 0x00, 0x03, 0x7C, 0x43, 0xB1, 0x10, 0xB5, 0x04, 0x4B, + 0x04, 0x46, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x00, 0x23, 0x23, 0x74, + 0x10, 0xBD, 0x70, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x5C, 0x4F, 0x00, 0xEB, 0x80, 0x04, 0xC4, 0xEB, 0xC4, 0x04, 0x4F, 0xEA, + 0x84, 0x0A, 0x83, 0xB0, 0x05, 0x46, 0x07, 0xEB, 0x84, 0x04, 0x0E, 0x46, + 0x00, 0x29, 0x74, 0xD0, 0x8C, 0x23, 0x03, 0xFB, 0x00, 0x73, 0x91, 0x46, + 0xCA, 0x78, 0x93, 0xF8, 0x84, 0x10, 0x00, 0x29, 0x40, 0xF0, 0x8A, 0x80, + 0x4F, 0xF0, 0x8C, 0x08, 0x08, 0xFB, 0x05, 0x78, 0x01, 0x21, 0x98, 0xF8, + 0x79, 0x30, 0x88, 0xF8, 0x78, 0x20, 0x88, 0xF8, 0x84, 0x10, 0xAB, 0xB1, + 0xDF, 0xF8, 0x30, 0xB1, 0x20, 0x46, 0xDB, 0xF8, 0xE8, 0x31, 0x98, 0x47, + 0x00, 0x22, 0x0A, 0xF1, 0x30, 0x00, 0xDB, 0xF8, 0xE8, 0x31, 0x88, 0xF8, + 0x79, 0x20, 0x38, 0x44, 0x98, 0x47, 0x00, 0x22, 0xDB, 0xF8, 0x18, 0x32, + 0x88, 0xF8, 0x79, 0x20, 0x20, 0x46, 0x98, 0x47, 0xB6, 0xF8, 0x01, 0x20, + 0x3F, 0x49, 0x02, 0x3A, 0x81, 0xFB, 0x02, 0x31, 0xD3, 0x17, 0xC3, 0xEB, + 0xA1, 0x03, 0x13, 0xF0, 0xFF, 0x0B, 0x2E, 0xD0, 0x8C, 0x23, 0x03, 0xFB, + 0x05, 0x73, 0x00, 0x93, 0x06, 0xF1, 0x05, 0x08, 0x4F, 0xF0, 0x00, 0x0A, + 0x01, 0x95, 0x98, 0xF8, 0x00, 0x20, 0x36, 0x49, 0x22, 0x75, 0x0A, 0xF1, + 0x01, 0x0A, 0x20, 0x46, 0x4B, 0x46, 0x9A, 0xB1, 0x01, 0x2A, 0xD8, 0xF8, + 0x05, 0x50, 0x00, 0xD9, 0x75, 0xB1, 0xD8, 0xF8, 0x01, 0xC0, 0xE2, 0x74, + 0xC4, 0xE9, 0x06, 0xC5, 0x00, 0x9A, 0xD1, 0xF8, 0xF4, 0x51, 0x92, 0xF8, + 0x71, 0x10, 0xD8, 0xF8, 0x09, 0x20, 0xA8, 0x47, 0x00, 0x28, 0x45, 0xD1, + 0x5F, 0xFA, 0x8A, 0xF3, 0x5B, 0x45, 0x08, 0xF1, 0x0D, 0x08, 0x04, 0xF1, + 0x30, 0x04, 0xDA, 0xD3, 0x01, 0x9D, 0x96, 0xF9, 0x04, 0x20, 0x33, 0x79, + 0x00, 0x2A, 0x2D, 0xDB, 0x8C, 0x20, 0x00, 0xFB, 0x05, 0x75, 0x00, 0x23, + 0x85, 0xF8, 0x73, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xF0, + 0x8C, 0x08, 0x08, 0xFB, 0x00, 0x78, 0x98, 0xF8, 0x79, 0x30, 0x88, 0xF8, + 0x84, 0x10, 0x00, 0x2B, 0xEC, 0xD0, 0xDF, 0xF8, 0x60, 0x90, 0x20, 0x46, + 0xD9, 0xF8, 0xE8, 0x31, 0x98, 0x47, 0x0A, 0xF1, 0x30, 0x00, 0xD9, 0xF8, + 0xE8, 0x31, 0x88, 0xF8, 0x79, 0x60, 0x38, 0x44, 0x98, 0x47, 0xD9, 0xF8, + 0x18, 0x32, 0x88, 0xF8, 0x79, 0x60, 0x20, 0x46, 0x98, 0x47, 0xD7, 0xE7, + 0x93, 0xF8, 0x78, 0x30, 0x93, 0x42, 0x7F, 0xF4, 0x71, 0xAF, 0xD7, 0xE7, + 0x8C, 0x20, 0x00, 0xFB, 0x05, 0x75, 0x03, 0xF0, 0x7F, 0x03, 0x85, 0xF8, + 0x73, 0x30, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x9A, 0x92, 0xF8, + 0x79, 0x30, 0x01, 0x33, 0x82, 0xF8, 0x79, 0x30, 0xB2, 0xE7, 0x00, 0xBF, + 0x48, 0x9E, 0x17, 0x00, 0x4F, 0xEC, 0xC4, 0x4E, 0x88, 0x1A, 0x17, 0x00, + 0x08, 0xB5, 0x01, 0x22, 0x05, 0x48, 0x00, 0x21, 0xE0, 0xF7, 0x2C, 0xF8, + 0x04, 0x4B, 0xFF, 0x22, 0x83, 0xF8, 0x71, 0x20, 0x83, 0xF8, 0xFD, 0x20, + 0x08, 0xBD, 0x00, 0xBF, 0x44, 0x9E, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0x25, 0x4C, 0x94, 0xF8, 0x71, 0x30, 0xFF, 0x2B, + 0x07, 0x46, 0x0E, 0x46, 0x08, 0xD0, 0x94, 0xF8, 0xFD, 0x30, 0xFF, 0x2B, + 0x18, 0xBF, 0xFF, 0x25, 0x36, 0xD0, 0x28, 0x46, 0xBD, 0xE8, 0xF0, 0x87, + 0x00, 0x25, 0xA8, 0x46, 0x4F, 0xF0, 0x30, 0x0A, 0xA1, 0x46, 0x8C, 0x22, + 0x00, 0x21, 0x48, 0x46, 0xE0, 0xF7, 0x04, 0xF8, 0x8C, 0x23, 0x03, 0xFB, + 0x08, 0x43, 0x01, 0x2E, 0x83, 0xF8, 0x71, 0x70, 0x83, 0xF8, 0x70, 0x60, + 0x03, 0xD1, 0x15, 0x4A, 0x13, 0x78, 0x01, 0x33, 0x13, 0x70, 0x8C, 0x23, + 0x03, 0xFB, 0x08, 0x43, 0x12, 0x4A, 0xC3, 0xF8, 0x08, 0x90, 0x54, 0x44, + 0x00, 0x21, 0x01, 0x26, 0x9C, 0x63, 0x99, 0x74, 0x0F, 0x4C, 0xD2, 0xF8, + 0x10, 0x12, 0x5D, 0x74, 0x83, 0xF8, 0x41, 0x50, 0xC3, 0xF8, 0x68, 0x90, + 0x83, 0xF8, 0x42, 0x60, 0x5C, 0x66, 0x59, 0x60, 0x59, 0x63, 0x48, 0x46, + 0xD2, 0xF8, 0x18, 0x32, 0x98, 0x47, 0xC8, 0xE7, 0x01, 0x25, 0xA8, 0x46, + 0x4F, 0xF0, 0xBC, 0x0A, 0x04, 0xF1, 0x8C, 0x09, 0xC9, 0xE7, 0x00, 0xBF, + 0x48, 0x9E, 0x17, 0x00, 0x44, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x41, 0xF4, 0x13, 0x00, 0x0E, 0x4A, 0x8C, 0x23, 0x03, 0xFB, 0x00, 0x23, + 0x10, 0xB4, 0x93, 0xF8, 0x71, 0x40, 0xFF, 0x2C, 0x0A, 0xD0, 0x93, 0xF8, + 0x70, 0x30, 0x01, 0x2B, 0x09, 0xD0, 0x29, 0xB1, 0x8C, 0x23, 0x03, 0xFB, + 0x00, 0x20, 0xFF, 0x23, 0x80, 0xF8, 0x71, 0x30, 0x5D, 0xF8, 0x04, 0x4B, + 0x70, 0x47, 0x04, 0x4C, 0x23, 0x78, 0x01, 0x3B, 0x23, 0x70, 0x00, 0x29, + 0xF6, 0xD0, 0xEF, 0xE7, 0x48, 0x9E, 0x17, 0x00, 0x44, 0x9E, 0x17, 0x00, + 0x90, 0xF8, 0xC0, 0x34, 0xBB, 0xB3, 0x2D, 0xE9, 0xF0, 0x47, 0x90, 0xF8, + 0x62, 0x40, 0x0C, 0x43, 0x2F, 0xD1, 0x90, 0xF8, 0xC1, 0x54, 0xDF, 0xF8, + 0x64, 0x80, 0x17, 0x4F, 0x05, 0xEB, 0x85, 0x00, 0xC0, 0xEB, 0xC0, 0x00, + 0x08, 0xEB, 0x80, 0x09, 0xD7, 0xF8, 0xE8, 0x31, 0x86, 0x00, 0x48, 0x46, + 0x98, 0x47, 0x06, 0xF1, 0x30, 0x00, 0xD7, 0xF8, 0xE8, 0x31, 0x40, 0x44, + 0x98, 0x47, 0x8C, 0x23, 0x03, 0xFB, 0x05, 0x85, 0x95, 0xF8, 0x72, 0x30, + 0x85, 0xF8, 0x73, 0x40, 0x85, 0xF8, 0x78, 0x40, 0x85, 0xF8, 0x84, 0x40, + 0x3B, 0xB1, 0x06, 0xF1, 0x60, 0x00, 0xD7, 0xF8, 0xD8, 0x31, 0x40, 0x44, + 0x98, 0x47, 0x85, 0xF8, 0x72, 0x40, 0xD7, 0xF8, 0x18, 0x32, 0x48, 0x46, + 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0xBD, 0xE8, 0xF0, 0x87, 0x70, 0x47, + 0x88, 0x1A, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x03, 0x4B, 0x8C, 0x22, + 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0x85, 0x00, 0x70, 0x47, 0x00, 0xBF, + 0x48, 0x9E, 0x17, 0x00, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x70, 0xB5, 0x05, 0x46, 0x0C, 0x46, 0x16, 0x46, 0x0E, 0xDB, + 0x95, 0xF8, 0xC1, 0x34, 0x0C, 0x4A, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, + 0xD3, 0xF8, 0x80, 0x20, 0x22, 0x60, 0xD8, 0x6F, 0x30, 0x60, 0x23, 0x68, + 0xC0, 0x1A, 0xC0, 0x0F, 0x70, 0xBD, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, + 0xEC, 0xD1, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x06, 0x52, 0x04, 0xF0, + 0x23, 0xFC, 0xE5, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xA4, 0xA3, 0x15, 0x00, 0x70, 0xB5, 0x35, 0x4E, + 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x0C, 0x46, + 0x12, 0xDB, 0x90, 0xF8, 0xC1, 0x24, 0x31, 0x48, 0x8C, 0x23, 0x01, 0xEB, + 0x41, 0x01, 0x03, 0xFB, 0x02, 0xF3, 0x03, 0xEB, 0x01, 0x13, 0x03, 0x44, + 0x61, 0x00, 0x1B, 0x7C, 0x01, 0x2B, 0x28, 0xD0, 0x02, 0x2B, 0x1D, 0xD0, + 0x00, 0x20, 0x70, 0xBD, 0x90, 0xF8, 0xC0, 0x34, 0x0B, 0xB1, 0x01, 0x29, + 0x30, 0xD9, 0x27, 0x49, 0x27, 0x48, 0x40, 0xF2, 0x14, 0x52, 0x04, 0xF0, + 0xF3, 0xFB, 0x95, 0xF8, 0xC1, 0x24, 0x22, 0x48, 0x8C, 0x23, 0x04, 0xEB, + 0x44, 0x01, 0x03, 0xFB, 0x02, 0xF3, 0x03, 0xEB, 0x01, 0x13, 0x03, 0x44, + 0x61, 0x00, 0x1B, 0x7C, 0x01, 0x2B, 0x0A, 0xD0, 0x02, 0x2B, 0x13, 0xD1, + 0x8C, 0x23, 0x0C, 0x44, 0x03, 0xFB, 0x02, 0xF1, 0x01, 0xEB, 0x04, 0x11, + 0x01, 0x44, 0xC8, 0x68, 0x70, 0xBD, 0x8C, 0x23, 0x0C, 0x44, 0x03, 0xFB, + 0x02, 0xF1, 0x01, 0xEB, 0x04, 0x14, 0x01, 0x19, 0xC8, 0x68, 0x8B, 0x69, + 0x18, 0x44, 0x70, 0xBD, 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC8, 0xDA, 0x10, 0xE0, 0x90, 0xF8, 0xC1, 0x24, 0x0C, 0x48, 0x8C, 0x23, + 0x01, 0xEB, 0x41, 0x01, 0x03, 0xFB, 0x02, 0xF3, 0x03, 0xEB, 0x01, 0x13, + 0x03, 0x44, 0x61, 0x00, 0x1B, 0x7C, 0x01, 0x2B, 0xDF, 0xD0, 0x02, 0x2B, + 0xD4, 0xD0, 0x06, 0x49, 0x07, 0x48, 0x4F, 0xF4, 0xA4, 0x62, 0x04, 0xF0, + 0xC9, 0xFB, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x48, 0x9E, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xB0, 0xA3, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x90, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x43, 0xD0, + 0x2D, 0xE9, 0xF0, 0x41, 0x28, 0x4F, 0x90, 0xF8, 0xC1, 0x24, 0x44, 0x68, + 0x8C, 0x26, 0x06, 0xFB, 0x02, 0x76, 0x02, 0xEB, 0x82, 0x03, 0x96, 0xF8, + 0x73, 0xC0, 0x01, 0x25, 0xC3, 0xEB, 0xC3, 0x03, 0x24, 0xF0, 0x40, 0x04, + 0x86, 0xF8, 0x86, 0x50, 0x4F, 0xEA, 0x83, 0x0E, 0x07, 0xEB, 0x83, 0x05, + 0x44, 0x60, 0xBC, 0xF1, 0x00, 0x0F, 0x06, 0xD1, 0x1C, 0x4E, 0x28, 0x46, + 0xD6, 0xF8, 0x18, 0x32, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x96, 0xF8, + 0x70, 0x30, 0x01, 0xEB, 0x8C, 0x24, 0x3B, 0xB9, 0x17, 0x4B, 0x18, 0x69, + 0x01, 0xF5, 0x96, 0x73, 0xC1, 0x1A, 0x11, 0xF1, 0x32, 0x0F, 0x14, 0xD4, + 0x8C, 0x23, 0x03, 0xFB, 0x02, 0x72, 0x11, 0x4E, 0x0E, 0xF1, 0x60, 0x00, + 0x01, 0x23, 0x38, 0x44, 0x21, 0x46, 0x82, 0xF8, 0x72, 0x30, 0xD6, 0xF8, + 0xE0, 0x31, 0x98, 0x47, 0xD6, 0xF8, 0x18, 0x32, 0x28, 0x46, 0xBD, 0xE8, + 0xF0, 0x41, 0x18, 0x47, 0x70, 0x47, 0x08, 0x4D, 0x74, 0x67, 0x0E, 0xF1, + 0x60, 0x00, 0x02, 0x22, 0x38, 0x44, 0x19, 0x46, 0x86, 0xF8, 0x72, 0x20, + 0xD5, 0xF8, 0xE0, 0x31, 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x00, 0xBF, + 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x30, 0xB4, 0x0A, 0x49, 0x90, 0xF8, 0xC1, 0x34, 0x09, 0x4C, 0x8C, 0x20, + 0x03, 0xEB, 0x83, 0x02, 0x00, 0xFB, 0x03, 0x13, 0x00, 0x25, 0xC2, 0xEB, + 0xC2, 0x02, 0x83, 0xF8, 0x86, 0x50, 0x01, 0xEB, 0x82, 0x00, 0xD4, 0xF8, + 0x18, 0x32, 0x30, 0xBC, 0x18, 0x47, 0x00, 0xBF, 0x48, 0x9E, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x90, 0xF8, 0xC0, 0x44, + 0x00, 0x2C, 0x3E, 0xD0, 0x90, 0xF8, 0x62, 0x30, 0x05, 0x46, 0x00, 0x2B, + 0x3C, 0xD1, 0x27, 0x4B, 0x90, 0xF8, 0xC1, 0x74, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x88, 0x46, 0x16, 0x46, 0x36, 0xDB, 0xD8, 0xF8, + 0x08, 0x00, 0xB2, 0x8B, 0x00, 0xF1, 0x24, 0x03, 0x10, 0x44, 0x83, 0x42, + 0x02, 0xD3, 0x38, 0xE0, 0x98, 0x42, 0x36, 0xD9, 0x5D, 0x78, 0x1A, 0x78, + 0xA9, 0x1C, 0xDD, 0x2A, 0x1C, 0x46, 0x0B, 0x44, 0xF6, 0xD1, 0x62, 0x79, + 0x09, 0x2A, 0xF3, 0xD1, 0x06, 0x34, 0x04, 0x3D, 0x14, 0xFA, 0x85, 0xF5, + 0xAC, 0x42, 0x06, 0xD3, 0xEC, 0xE7, 0xB4, 0xF8, 0x01, 0x10, 0x03, 0x31, + 0x0C, 0x44, 0xA5, 0x42, 0xE6, 0xD9, 0x22, 0x78, 0x0C, 0x2A, 0xF6, 0xD1, + 0x00, 0x2C, 0xE1, 0xD0, 0xB2, 0x68, 0x0F, 0x4B, 0x92, 0x68, 0xD3, 0xF8, + 0xF0, 0x31, 0x92, 0x69, 0x38, 0x46, 0x21, 0x46, 0x98, 0x47, 0x20, 0x46, + 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x24, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, + 0x01, 0x2F, 0xC6, 0xD9, 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x73, 0x52, + 0x04, 0xF0, 0xD8, 0xFA, 0x95, 0xF8, 0xC1, 0x74, 0xBD, 0xE7, 0x00, 0x24, + 0xE2, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xD8, 0xA3, 0x15, 0x00, 0xF0, 0xB5, 0x0C, 0x7E, + 0x7F, 0x2C, 0x83, 0xB0, 0x23, 0xD1, 0x4A, 0x7F, 0x0A, 0xBB, 0xCA, 0x7F, + 0xDD, 0x2A, 0x1E, 0xD1, 0x91, 0xF8, 0x24, 0x20, 0x09, 0x2A, 0x1A, 0xD1, + 0x91, 0xF8, 0x25, 0x20, 0x0C, 0x2A, 0x01, 0xF1, 0x25, 0x04, 0x14, 0xD1, + 0x11, 0x4A, 0x12, 0x49, 0x12, 0x68, 0xD1, 0xF8, 0xF0, 0x61, 0xB2, 0xF9, + 0x00, 0x20, 0x90, 0xF8, 0xC1, 0x74, 0x00, 0x2A, 0x05, 0x46, 0x0A, 0xDB, + 0xEA, 0x6F, 0x21, 0x46, 0x1A, 0x44, 0x38, 0x46, 0x33, 0x46, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x40, 0x18, 0x47, 0x03, 0xB0, 0xF0, 0xBD, 0x90, 0xF8, + 0x62, 0x20, 0x00, 0x2A, 0xF0, 0xD0, 0x06, 0x49, 0x06, 0x48, 0x01, 0x93, + 0x49, 0x22, 0x04, 0xF0, 0x95, 0xFA, 0x01, 0x9B, 0xE8, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x40, 0x9C, 0x15, 0x00, 0x12, 0x4B, 0x18, 0x78, 0xF8, 0xB1, 0x12, 0x4B, + 0x58, 0x7C, 0xD8, 0xB9, 0x9A, 0x7C, 0x01, 0x2A, 0x19, 0xD8, 0x9B, 0x68, + 0x13, 0xB9, 0x16, 0xE0, 0x1B, 0x68, 0xAB, 0xB1, 0x93, 0xF8, 0x62, 0x20, + 0x02, 0x2A, 0xF9, 0xD1, 0x93, 0xF8, 0xC0, 0x24, 0x00, 0x2A, 0xF5, 0xD0, + 0x93, 0xF8, 0xC1, 0x34, 0x08, 0x4A, 0x8C, 0x21, 0x01, 0xFB, 0x03, 0x23, + 0x93, 0xF8, 0x85, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x44, 0x9E, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x18, 0x4B, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC0, 0x34, 0x1B, 0xB1, + 0x90, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x00, 0xD0, 0x70, 0x47, 0x70, 0xB5, + 0x90, 0xF8, 0xC1, 0x34, 0x11, 0x4C, 0x8C, 0x22, 0x02, 0xFB, 0x03, 0x42, + 0x00, 0x39, 0x03, 0xEB, 0x83, 0x03, 0x92, 0xF8, 0x84, 0x50, 0x18, 0xBF, + 0x01, 0x21, 0xC3, 0xEB, 0xC3, 0x03, 0x82, 0xF8, 0x87, 0x10, 0x04, 0xEB, + 0x83, 0x04, 0x35, 0xB9, 0x09, 0x4D, 0xD5, 0xF8, 0x18, 0x32, 0x20, 0x46, + 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x06, 0x4D, 0x92, 0xF8, 0x71, 0x00, + 0xD5, 0xF8, 0x90, 0x31, 0x03, 0x21, 0x98, 0x47, 0xF1, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0xB5, 0x0E, 0x4E, 0x90, 0xF8, 0xC1, 0x44, 0x0D, 0x4D, 0x8C, 0x23, + 0x03, 0xFB, 0x04, 0x63, 0x01, 0x22, 0x04, 0xEB, 0x84, 0x04, 0x93, 0xF8, + 0x71, 0x00, 0x83, 0xF8, 0x73, 0x10, 0x83, 0xF8, 0x72, 0x20, 0xC4, 0xEB, + 0xC4, 0x04, 0xD5, 0xF8, 0x90, 0x31, 0x03, 0x21, 0x98, 0x47, 0xD5, 0xF8, + 0x18, 0x32, 0x06, 0xEB, 0x84, 0x00, 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, + 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x1D, 0x4F, 0x90, 0xF8, 0xC1, 0x44, 0x8C, 0x26, 0x06, 0xFB, 0x04, 0x76, + 0x04, 0xEB, 0x84, 0x00, 0x96, 0xF8, 0x72, 0x20, 0xC0, 0xEB, 0xC0, 0x00, + 0x4F, 0xF0, 0x00, 0x09, 0x07, 0xEB, 0x80, 0x05, 0x86, 0xF8, 0x73, 0x90, + 0x9A, 0xB9, 0xDF, 0xF8, 0x54, 0x80, 0xD8, 0xF8, 0x18, 0x32, 0x28, 0x46, + 0x98, 0x47, 0x8C, 0x23, 0x03, 0xFB, 0x04, 0x74, 0x94, 0xF8, 0x79, 0x30, + 0x9B, 0xB9, 0xD8, 0xF8, 0x90, 0x31, 0x94, 0xF8, 0x71, 0x00, 0x02, 0x21, + 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x83, 0x00, 0xDF, 0xF8, 0x28, 0x80, + 0x03, 0xF1, 0x60, 0x00, 0x38, 0x44, 0xD8, 0xF8, 0xD8, 0x31, 0x98, 0x47, + 0x86, 0xF8, 0x72, 0x90, 0xE1, 0xE7, 0xD8, 0xF8, 0x90, 0x31, 0x94, 0xF8, + 0x71, 0x00, 0x03, 0x21, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x00, 0xBF, + 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x90, 0xF8, 0xC0, 0x34, + 0x63, 0xB1, 0x90, 0xF8, 0xC1, 0x34, 0x06, 0x4A, 0x06, 0x48, 0x03, 0xEB, + 0x83, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x00, 0xEB, 0x83, 0x00, 0xD2, 0xF8, + 0x18, 0x32, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x48, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, 0x42, 0x4E, 0x90, 0xF8, + 0xC1, 0x84, 0xDD, 0xF8, 0x30, 0xC0, 0x8C, 0x24, 0x04, 0xFB, 0x08, 0x64, + 0x94, 0xF8, 0x70, 0x70, 0x01, 0x2F, 0x0F, 0xD1, 0x08, 0xEB, 0x88, 0x05, + 0x94, 0xF8, 0x10, 0x90, 0xC5, 0xEB, 0xC5, 0x05, 0xA8, 0x00, 0x06, 0xEB, + 0x85, 0x05, 0xB9, 0xF1, 0x00, 0x0F, 0x08, 0xD0, 0x94, 0xF8, 0x40, 0x40, + 0x00, 0x2C, 0x64, 0xD0, 0x4F, 0xF0, 0xFF, 0x09, 0x48, 0x46, 0xBD, 0xE8, + 0xF8, 0x8F, 0x28, 0x46, 0xCA, 0x46, 0x8C, 0x24, 0x4F, 0xEA, 0x4A, 0x07, + 0x04, 0xFB, 0x08, 0xF4, 0x07, 0xEB, 0x0A, 0x0B, 0x06, 0xEB, 0x04, 0x0E, + 0x04, 0xEB, 0x0B, 0x14, 0x00, 0x29, 0x06, 0xEB, 0x04, 0x01, 0x9E, 0xF8, + 0x79, 0xB0, 0xCB, 0x74, 0x0B, 0x75, 0x0A, 0x9B, 0xCB, 0x61, 0x0B, 0xF1, + 0x01, 0x0B, 0x0B, 0x9B, 0x8B, 0x61, 0x0C, 0xBF, 0x01, 0x24, 0x00, 0x24, + 0xC1, 0xF8, 0x24, 0xC0, 0x81, 0xF8, 0x21, 0x20, 0x81, 0xF8, 0x20, 0x40, + 0x8E, 0xF8, 0x79, 0xB0, 0x04, 0xD0, 0x9E, 0xF8, 0x7A, 0x30, 0x01, 0x33, + 0x8E, 0xF8, 0x7A, 0x30, 0x0A, 0x9B, 0x73, 0xB1, 0x8C, 0x23, 0x07, 0xEB, + 0x0A, 0x02, 0x03, 0xFB, 0x08, 0xF3, 0x03, 0xEB, 0x02, 0x13, 0x33, 0x44, + 0x0A, 0x99, 0x4F, 0xF0, 0x00, 0x42, 0xB2, 0xFB, 0xF1, 0xF2, 0x01, 0x3A, + 0x9A, 0x62, 0x15, 0x4C, 0x61, 0x46, 0xD4, 0xF8, 0xE0, 0x31, 0x98, 0x47, + 0x8C, 0x23, 0x03, 0xFB, 0x08, 0xF8, 0x57, 0x44, 0x08, 0xEB, 0x07, 0x17, + 0x37, 0x44, 0x46, 0x44, 0x01, 0x23, 0x96, 0xF8, 0x71, 0x00, 0x3B, 0x74, + 0x03, 0x21, 0xD4, 0xF8, 0x90, 0x31, 0x98, 0x47, 0x49, 0x46, 0x28, 0x46, + 0xFF, 0xF7, 0xA4, 0xFA, 0xD4, 0xF8, 0x1C, 0x32, 0x28, 0x46, 0x98, 0x47, + 0x28, 0x46, 0xD4, 0xF8, 0x18, 0x32, 0x98, 0x47, 0x48, 0x46, 0xBD, 0xE8, + 0xF8, 0x8F, 0x30, 0x30, 0xB9, 0x46, 0x30, 0x44, 0xBA, 0x46, 0x9C, 0xE7, + 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x90, 0xF8, 0xC1, 0x64, 0x37, 0x4D, 0x8C, 0x23, 0x03, 0xFB, 0x06, 0xF3, + 0xE8, 0x18, 0x90, 0xF8, 0x70, 0x00, 0x01, 0x28, 0x5C, 0xD1, 0x01, 0x29, + 0x0C, 0x46, 0x57, 0xD8, 0x01, 0xEB, 0x41, 0x01, 0x03, 0xEB, 0x01, 0x13, + 0x2B, 0x44, 0x4F, 0xEA, 0x44, 0x08, 0x19, 0x7C, 0x00, 0x29, 0x4D, 0xD0, + 0x1A, 0xB1, 0x93, 0xF8, 0x20, 0x30, 0x00, 0x2B, 0x48, 0xD0, 0x06, 0xEB, + 0x86, 0x07, 0x04, 0xEB, 0x44, 0x00, 0xDF, 0xF8, 0xA4, 0x90, 0xC7, 0xEB, + 0xC7, 0x07, 0x00, 0x01, 0x00, 0xEB, 0x87, 0x00, 0xD9, 0xF8, 0xD8, 0x31, + 0x28, 0x44, 0x98, 0x47, 0x8C, 0x23, 0x03, 0xFB, 0x06, 0xFA, 0xA0, 0x44, + 0x0A, 0xEB, 0x08, 0x18, 0xA8, 0x44, 0x00, 0x23, 0x05, 0xEB, 0x87, 0x07, + 0x88, 0xF8, 0x10, 0x30, 0xD9, 0xF8, 0x1C, 0x22, 0x38, 0x46, 0x90, 0x47, + 0xD9, 0xF8, 0x18, 0x22, 0x38, 0x46, 0x90, 0x47, 0x05, 0xEB, 0x0A, 0x03, + 0x98, 0xF8, 0x20, 0x10, 0x93, 0xF8, 0x79, 0x20, 0x01, 0x3A, 0xD2, 0xB2, + 0x01, 0x29, 0x83, 0xF8, 0x79, 0x20, 0x04, 0xD1, 0x93, 0xF8, 0x7A, 0x10, + 0x01, 0x39, 0x83, 0xF8, 0x7A, 0x10, 0x8C, 0x23, 0x03, 0xFB, 0x06, 0x53, + 0x93, 0xF8, 0x73, 0x10, 0x01, 0xB9, 0x92, 0xB1, 0x8C, 0x23, 0x03, 0xFB, + 0x06, 0x55, 0x03, 0x21, 0xD9, 0xF8, 0x90, 0x31, 0x95, 0xF8, 0x71, 0x00, + 0x98, 0x47, 0x38, 0x46, 0x21, 0x46, 0xFF, 0xF7, 0x29, 0xFA, 0x00, 0x20, + 0xBD, 0xE8, 0xF0, 0x87, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xD9, 0xF8, + 0x90, 0x21, 0x93, 0xF8, 0x71, 0x00, 0x02, 0x21, 0x90, 0x47, 0xEE, 0xE7, + 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x1F, 0x4F, 0x90, 0xF8, 0xC1, 0x84, 0x8C, 0x25, 0x05, 0xFB, 0x08, 0x75, + 0x08, 0xEB, 0x88, 0x03, 0x95, 0xF8, 0x20, 0x20, 0xC3, 0xEB, 0xC3, 0x03, + 0x0E, 0x46, 0x9C, 0x00, 0xAA, 0xB9, 0x2B, 0x7C, 0x9B, 0xB1, 0xE9, 0x68, + 0xDF, 0xF8, 0x5C, 0x90, 0x31, 0x44, 0xD9, 0xF8, 0xE0, 0x31, 0x38, 0x19, + 0x98, 0x47, 0x95, 0xF8, 0x50, 0x30, 0x13, 0xB9, 0x95, 0xF8, 0x40, 0x30, + 0x6B, 0xB9, 0xD9, 0xF8, 0x1C, 0x32, 0x38, 0x19, 0xBD, 0xE8, 0xF0, 0x47, + 0x18, 0x47, 0x95, 0xF8, 0x50, 0x30, 0xAB, 0xB9, 0x95, 0xF8, 0x40, 0x30, + 0x93, 0xB1, 0xDF, 0xF8, 0x2C, 0x90, 0x8C, 0x23, 0x03, 0xFB, 0x08, 0x73, + 0x04, 0xF1, 0x30, 0x00, 0xD9, 0x6B, 0xD9, 0xF8, 0xE0, 0x31, 0x38, 0x44, + 0x31, 0x44, 0x98, 0x47, 0xD9, 0xF8, 0x1C, 0x32, 0x38, 0x19, 0xBD, 0xE8, + 0xF0, 0x47, 0x18, 0x47, 0xBD, 0xE8, 0xF0, 0x87, 0x48, 0x9E, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x0A, 0x4B, 0x8C, 0x22, 0x02, 0xFB, 0x00, 0x33, + 0x93, 0xF8, 0x71, 0x20, 0xFF, 0x2A, 0x0B, 0xD0, 0x93, 0xF8, 0x84, 0x00, + 0x48, 0xB1, 0x93, 0xF8, 0x88, 0x00, 0x00, 0xEB, 0x40, 0x03, 0x00, 0xEB, + 0x83, 0x00, 0x0B, 0x30, 0xC0, 0xB2, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x48, 0x9E, 0x17, 0x00, 0x30, 0xB4, 0xDD, 0x23, 0x50, 0x25, 0x6F, 0x24, + 0x9A, 0x21, 0x09, 0x22, 0x03, 0x70, 0x0C, 0x23, 0x85, 0x70, 0xC4, 0x70, + 0x01, 0x71, 0x42, 0x71, 0x83, 0x71, 0x30, 0xBC, 0x70, 0x47, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x43, 0x2D, 0x4E, 0x8C, 0x23, 0x03, 0xFB, 0x00, 0x63, + 0x93, 0xF8, 0x78, 0x20, 0x4A, 0x72, 0x93, 0xF8, 0x73, 0x40, 0x01, 0x32, + 0x83, 0xF8, 0x78, 0x20, 0x00, 0x2C, 0x46, 0xD0, 0x64, 0xF0, 0x7F, 0x04, + 0x8C, 0x72, 0x00, 0xEB, 0x80, 0x03, 0xC3, 0xEB, 0xC3, 0x03, 0x4F, 0xF0, + 0x8C, 0x0C, 0xDF, 0xF8, 0x8C, 0x90, 0xDF, 0xF8, 0x8C, 0x80, 0x06, 0xEB, + 0x83, 0x03, 0x0C, 0xFB, 0x00, 0x6C, 0x01, 0xF1, 0x0B, 0x02, 0x01, 0xF1, + 0x25, 0x0E, 0x00, 0x24, 0x1D, 0x7C, 0xC5, 0xB1, 0x9C, 0xF8, 0x87, 0x50, + 0x15, 0xB1, 0x93, 0xF8, 0x21, 0x50, 0x55, 0xBB, 0x1D, 0x7D, 0x15, 0x70, + 0xD3, 0xE9, 0x06, 0x57, 0xC2, 0xF8, 0x01, 0x50, 0xC2, 0xF8, 0x05, 0x70, + 0xD9, 0xF8, 0x00, 0x50, 0xD8, 0xF8, 0x10, 0x70, 0xED, 0x1B, 0x5F, 0x6A, + 0x01, 0x34, 0x3D, 0x44, 0xE4, 0xB2, 0xC2, 0xF8, 0x09, 0x50, 0x0D, 0x32, + 0x72, 0x45, 0x03, 0xF1, 0x30, 0x03, 0xDF, 0xD1, 0x8C, 0x22, 0x04, 0xEB, + 0x44, 0x03, 0x04, 0xEB, 0x83, 0x03, 0x02, 0xFB, 0x00, 0x60, 0x03, 0xF1, + 0x09, 0x02, 0x80, 0xF8, 0x88, 0x40, 0x02, 0x33, 0x4A, 0x70, 0xA1, 0xF8, + 0x07, 0x30, 0xBD, 0xE8, 0xF0, 0x83, 0x8C, 0x72, 0xB9, 0xE7, 0x93, 0xF8, + 0x20, 0x50, 0x01, 0x2D, 0xD0, 0xD1, 0xE2, 0xE7, 0x48, 0x9E, 0x17, 0x00, + 0xA4, 0x80, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, 0x02, 0x29, 0x20, 0xD0, + 0x03, 0x29, 0x0F, 0xD0, 0x01, 0x29, 0x06, 0xD0, 0x15, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x1E, 0xDB, 0x70, 0x47, 0x13, 0x4B, + 0x8C, 0x22, 0x02, 0xFB, 0x00, 0x30, 0x80, 0xF8, 0x84, 0x10, 0x70, 0x47, + 0x0F, 0x4B, 0x8C, 0x22, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0x84, 0x30, + 0x00, 0x2B, 0xEF, 0xD1, 0x0C, 0x4B, 0x90, 0xF8, 0x71, 0x00, 0xD3, 0xF8, + 0x90, 0x31, 0x01, 0x21, 0x18, 0x47, 0x08, 0x4B, 0x8C, 0x22, 0x02, 0xFB, + 0x00, 0x30, 0x00, 0x23, 0x80, 0xF8, 0x84, 0x30, 0x70, 0x47, 0x06, 0x49, + 0x06, 0x48, 0x4F, 0xF4, 0xEA, 0x62, 0x03, 0xF0, 0xA5, 0xBF, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x48, 0x9E, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x90, 0xF8, 0xC0, 0x34, + 0x33, 0xB1, 0x90, 0xF8, 0x64, 0x30, 0x1B, 0xB1, 0x43, 0x68, 0x43, 0xF0, + 0x40, 0x03, 0x43, 0x60, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x47, + 0x36, 0x4F, 0x02, 0x7E, 0xDF, 0xF8, 0xE0, 0x80, 0x35, 0x49, 0xD8, 0xF8, + 0xB0, 0x33, 0x0E, 0x69, 0x05, 0x46, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, + 0x02, 0x70, 0x98, 0x47, 0xEB, 0x7E, 0x00, 0x2B, 0x3A, 0xD0, 0xD5, 0xE9, + 0x04, 0x43, 0x02, 0x2C, 0x8C, 0xBF, 0x01, 0x24, 0x00, 0x24, 0x02, 0x2B, + 0x6B, 0x7E, 0x95, 0xF8, 0x18, 0xA0, 0x88, 0xBF, 0x44, 0xF0, 0x02, 0x04, + 0x63, 0x40, 0x9B, 0x07, 0x44, 0xD1, 0xD1, 0x46, 0x4F, 0xF4, 0xA4, 0x60, + 0x00, 0xFB, 0x0A, 0x7A, 0x6C, 0x76, 0xDA, 0xF8, 0xE4, 0x00, 0x18, 0xB3, + 0xDF, 0xF8, 0x94, 0xC0, 0x4F, 0xF0, 0x00, 0x0E, 0x90, 0xF8, 0x23, 0x10, + 0x00, 0x68, 0x01, 0xEB, 0x41, 0x04, 0x64, 0x44, 0x4B, 0x00, 0x62, 0x78, + 0xA4, 0x78, 0x02, 0x2A, 0x0B, 0x44, 0x88, 0xBF, 0x01, 0x22, 0x0C, 0xEB, + 0x03, 0x01, 0x98, 0xBF, 0x00, 0x22, 0x02, 0x2C, 0x88, 0xBF, 0x42, 0xF0, + 0x02, 0x02, 0x0C, 0xF8, 0x03, 0x20, 0x81, 0xF8, 0x01, 0xE0, 0x81, 0xF8, + 0x02, 0xE0, 0x00, 0x28, 0xE2, 0xD1, 0x01, 0xE0, 0x95, 0xF8, 0x18, 0x90, + 0x11, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x09, 0x77, 0x9B, 0x6A, + 0x39, 0x6C, 0x00, 0x22, 0x5B, 0x1A, 0xC5, 0xE9, 0x04, 0x22, 0xB3, 0xFA, + 0x83, 0xF3, 0x5B, 0x09, 0x06, 0xF5, 0xC3, 0x31, 0xEB, 0x76, 0xD8, 0xF8, + 0xE0, 0x31, 0x28, 0x46, 0xA0, 0x31, 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, + 0x21, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0xC4, 0xFC, 0x95, 0xF8, 0x18, 0x90, + 0xB4, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x60, 0x9F, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x10, 0x4D, 0xDF, 0xF8, 0x44, 0x80, 0xC0, 0xEB, + 0xC0, 0x03, 0x05, 0xEB, 0x83, 0x03, 0xC0, 0xEB, 0xC0, 0x06, 0x9B, 0x7E, + 0x04, 0x46, 0x05, 0xEB, 0x86, 0x06, 0xC7, 0x00, 0x1B, 0xB1, 0xD8, 0xF8, + 0xD8, 0x31, 0x30, 0x46, 0x98, 0x47, 0x3F, 0x1B, 0x05, 0xEB, 0x87, 0x05, + 0x1C, 0x22, 0x00, 0x21, 0x30, 0x46, 0xDF, 0xF7, 0x0F, 0xFA, 0xD8, 0xF8, + 0x34, 0x33, 0xAE, 0x60, 0x2C, 0x76, 0x6B, 0x60, 0xBD, 0xE8, 0xF0, 0x81, + 0x80, 0x9F, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x08, 0xB5, 0x00, 0x20, + 0xFF, 0xF7, 0xD4, 0xFF, 0x01, 0x20, 0xFF, 0xF7, 0xD1, 0xFF, 0x02, 0x20, + 0xFF, 0xF7, 0xCE, 0xFF, 0x03, 0x20, 0xFF, 0xF7, 0xCB, 0xFF, 0x05, 0x4B, + 0x00, 0x22, 0x03, 0xF1, 0x1E, 0x01, 0x5A, 0x70, 0x9A, 0x70, 0x03, 0xF8, + 0x03, 0x2B, 0x8B, 0x42, 0xF9, 0xD1, 0x08, 0xBD, 0x60, 0x9F, 0x17, 0x00, + 0x0B, 0x4A, 0xC0, 0xEB, 0xC0, 0x03, 0x02, 0xEB, 0x83, 0x03, 0x99, 0x7E, + 0x71, 0xB9, 0x30, 0xB4, 0x08, 0x49, 0x09, 0x4C, 0x09, 0x69, 0xD4, 0xF8, + 0xE0, 0x41, 0x01, 0x25, 0x01, 0xF5, 0xC3, 0x31, 0x9D, 0x76, 0x18, 0x46, + 0xA0, 0x31, 0x23, 0x46, 0x30, 0xBC, 0x18, 0x47, 0x70, 0x47, 0x00, 0xBF, + 0x80, 0x9F, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0x09, 0x29, 0x08, 0xB5, 0x09, 0xD9, 0x6A, 0xBB, 0x21, 0x4B, 0xC0, 0xEB, + 0xC0, 0x00, 0x03, 0xEB, 0x80, 0x00, 0x03, 0x69, 0x01, 0x33, 0x03, 0x61, + 0x08, 0xBD, 0x8A, 0xB1, 0x1C, 0x4B, 0x1D, 0x4A, 0xC0, 0xEB, 0xC0, 0x00, + 0x01, 0xEB, 0x41, 0x01, 0x03, 0xEB, 0x80, 0x00, 0x11, 0x44, 0x42, 0x69, + 0x8B, 0x78, 0x01, 0x32, 0x02, 0x2B, 0x42, 0x61, 0xEE, 0xD8, 0x01, 0x33, + 0x8B, 0x70, 0x08, 0xBD, 0x13, 0x4B, 0x14, 0x4A, 0xC0, 0xEB, 0xC0, 0x00, + 0x01, 0xEB, 0x41, 0x01, 0x03, 0xEB, 0x80, 0x00, 0x11, 0x44, 0x03, 0x69, + 0x4A, 0x78, 0x01, 0x33, 0x02, 0x2A, 0x03, 0x61, 0xDC, 0xD8, 0x01, 0x32, + 0x4A, 0x70, 0x08, 0xBD, 0x0A, 0x4A, 0x0C, 0x4B, 0x1C, 0x21, 0x01, 0xFB, + 0x00, 0x20, 0x1A, 0x68, 0x43, 0x69, 0xB2, 0xF9, 0x00, 0x20, 0x01, 0x33, + 0x00, 0x2A, 0x43, 0x61, 0x05, 0xDA, 0x07, 0x49, 0x07, 0x48, 0x40, 0xF2, + 0x69, 0x12, 0x03, 0xF0, 0x6F, 0xFE, 0x00, 0x23, 0x9B, 0x78, 0xFF, 0xDE, + 0x80, 0x9F, 0x17, 0x00, 0x60, 0x9F, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xF8, 0xA3, 0x15, 0x00, 0x70, 0xB5, 0x1E, 0x46, + 0x0D, 0x46, 0x01, 0x23, 0x31, 0x46, 0x40, 0xF6, 0x01, 0x00, 0x01, 0xF0, + 0x77, 0xFD, 0x04, 0x46, 0x02, 0x20, 0x02, 0xF0, 0x15, 0xF8, 0x18, 0x4A, + 0x18, 0x49, 0x03, 0x46, 0x04, 0x20, 0x03, 0xF0, 0x25, 0xFC, 0x02, 0x20, + 0x02, 0xF0, 0x0C, 0xF8, 0xA0, 0xB9, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x16, 0xDB, 0x13, 0x4A, 0x00, 0x23, 0x23, 0x70, + 0x28, 0x46, 0x15, 0x60, 0x93, 0x72, 0x16, 0x81, 0x01, 0x25, 0x00, 0xF0, + 0x7D, 0xF9, 0x20, 0x46, 0x01, 0xF0, 0x86, 0xFD, 0x28, 0x46, 0x70, 0xBD, + 0x08, 0x23, 0x20, 0x46, 0x23, 0x70, 0x00, 0x25, 0x01, 0xF0, 0x7E, 0xFD, + 0x28, 0x46, 0x70, 0xBD, 0x95, 0xF8, 0x6F, 0x31, 0x00, 0x2B, 0xE4, 0xD1, + 0x06, 0x49, 0x07, 0x48, 0x46, 0x22, 0x03, 0xF0, 0x25, 0xFE, 0xDE, 0xE7, + 0x84, 0xA4, 0x15, 0x00, 0x00, 0xA4, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0xF4, 0x9F, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x08, 0xA4, 0x15, 0x00, + 0x17, 0x4A, 0x18, 0x4B, 0x12, 0x68, 0x70, 0xB5, 0xB2, 0xF9, 0x00, 0x20, + 0x1D, 0x68, 0x9C, 0x7A, 0x00, 0x2A, 0x19, 0xDB, 0x14, 0x4A, 0x15, 0x48, + 0xD2, 0xE9, 0x00, 0x63, 0x04, 0xEB, 0x44, 0x04, 0x05, 0xEB, 0x44, 0x04, + 0x43, 0xF4, 0x08, 0x53, 0xE1, 0x78, 0x53, 0x60, 0x33, 0x43, 0x03, 0x60, + 0xCB, 0x07, 0x03, 0xD4, 0x0E, 0x4B, 0xD3, 0xF8, 0xEC, 0x32, 0x98, 0x47, + 0x03, 0x21, 0x02, 0x20, 0x01, 0xF0, 0x0E, 0xFF, 0x00, 0x20, 0x70, 0xBD, + 0x02, 0x20, 0x01, 0xF0, 0xB1, 0xFF, 0x02, 0x28, 0xE0, 0xD0, 0x08, 0x49, + 0x08, 0x48, 0x9C, 0x22, 0x03, 0xF0, 0xEA, 0xFD, 0xDA, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0xF4, 0x9F, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, + 0x60, 0x00, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x1C, 0xA4, 0x15, 0x00, 0x38, 0xB5, 0x22, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x32, 0xDB, 0x20, 0x49, 0x20, 0x48, 0x21, 0x4C, + 0xD1, 0xE9, 0x00, 0x32, 0x22, 0xF4, 0x08, 0x52, 0x13, 0x43, 0x03, 0x60, + 0xA3, 0x7A, 0x20, 0x68, 0x4A, 0x60, 0x90, 0xF8, 0x6F, 0x51, 0x01, 0x33, + 0xDB, 0xB2, 0x9D, 0x42, 0xA3, 0x72, 0x01, 0xD9, 0xE3, 0x7A, 0x93, 0xB1, + 0x0C, 0x38, 0x01, 0xF0, 0x55, 0xFD, 0xE3, 0x7A, 0x8B, 0xB1, 0x16, 0x4B, + 0x21, 0x89, 0xD3, 0xF8, 0xF0, 0x32, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, + 0xE3, 0x72, 0x00, 0x21, 0x02, 0x20, 0x01, 0xF0, 0xC5, 0xFE, 0x00, 0x20, + 0x38, 0xBD, 0x00, 0xF0, 0x8D, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x21, 0x89, + 0x02, 0x22, 0x40, 0xF6, 0x02, 0x00, 0x01, 0xF0, 0x27, 0xFD, 0xEE, 0xE7, + 0x02, 0x20, 0x01, 0xF0, 0x5D, 0xFF, 0x03, 0x28, 0xC7, 0xD0, 0x08, 0x49, + 0x08, 0x48, 0xC2, 0x22, 0x03, 0xF0, 0x96, 0xFD, 0xC1, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x98, 0x9C, 0x17, 0x00, 0x60, 0x00, 0x32, 0x40, + 0xF4, 0x9F, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x4C, 0xA4, 0x15, 0x00, 0x38, 0xB5, 0x02, 0x20, 0x1D, 0x46, 0x01, 0xF0, + 0x41, 0xFF, 0x0A, 0x4A, 0x0A, 0x49, 0x04, 0x46, 0x03, 0x46, 0x04, 0x20, + 0x03, 0xF0, 0x50, 0xFB, 0x24, 0xB1, 0x08, 0x4B, 0x01, 0x22, 0xDA, 0x72, + 0x00, 0x20, 0x38, 0xBD, 0x06, 0x4B, 0x29, 0x46, 0xD3, 0xF8, 0xF0, 0x32, + 0x01, 0x20, 0x98, 0x47, 0x00, 0x20, 0x38, 0xBD, 0x9C, 0xA4, 0x15, 0x00, + 0x00, 0xA4, 0x15, 0x00, 0xF4, 0x9F, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x15, 0x4A, 0x03, 0x88, 0x11, 0x68, 0x40, 0xF6, 0x6C, 0x12, 0x93, 0x42, + 0x08, 0x69, 0x1F, 0xD0, 0x40, 0xF6, 0x85, 0x12, 0x93, 0x42, 0x1B, 0xD0, + 0x40, 0xF6, 0x9E, 0x12, 0x93, 0x42, 0x17, 0xD0, 0x40, 0xF6, 0xA8, 0x12, + 0x93, 0x42, 0x13, 0xD0, 0x41, 0xF2, 0x3C, 0x42, 0x93, 0x42, 0x0F, 0xD0, + 0x41, 0xF2, 0x64, 0x42, 0x93, 0x42, 0x0B, 0xD0, 0x41, 0xF2, 0x85, 0x62, + 0x93, 0x42, 0x07, 0xD0, 0x41, 0xF2, 0x99, 0x62, 0x93, 0x42, 0x03, 0xD0, + 0x41, 0xF2, 0xAD, 0x62, 0x93, 0x42, 0x02, 0xD1, 0x00, 0xF5, 0x9C, 0x40, + 0x20, 0x30, 0x70, 0x47, 0xC8, 0x35, 0x17, 0x00, 0x08, 0xB5, 0x0C, 0x22, + 0x00, 0x21, 0x08, 0x48, 0xDF, 0xF7, 0x48, 0xF8, 0x00, 0x21, 0x02, 0x20, + 0x01, 0xF0, 0x44, 0xFE, 0x05, 0x4B, 0x06, 0x4A, 0x1A, 0x60, 0x03, 0xF1, + 0x14, 0x01, 0x00, 0x22, 0x99, 0x60, 0x1A, 0x61, 0x5A, 0x60, 0x08, 0xBD, + 0xF4, 0x9F, 0x17, 0x00, 0xD4, 0x61, 0x18, 0x00, 0xDE, 0xFA, 0xFE, 0xCA, + 0x2D, 0xE9, 0xF0, 0x41, 0x2A, 0x4F, 0xBB, 0x7A, 0x3E, 0x68, 0x03, 0xEB, + 0x43, 0x03, 0x06, 0xEB, 0x43, 0x05, 0x82, 0xB0, 0x95, 0xF8, 0x03, 0x80, + 0x18, 0xF0, 0x05, 0x0F, 0x4F, 0xEA, 0x43, 0x04, 0x28, 0xD0, 0x24, 0x4B, + 0x1B, 0x68, 0x5B, 0x69, 0x96, 0xF8, 0x6E, 0xC1, 0x95, 0xF9, 0x04, 0x20, + 0x31, 0x5B, 0xA8, 0x78, 0xCD, 0xE9, 0x00, 0x8C, 0xFC, 0xF7, 0x94, 0xFC, + 0x7B, 0x68, 0x93, 0xB1, 0xAA, 0x78, 0x31, 0x5B, 0xDA, 0xB9, 0xA1, 0xF6, + 0x6C, 0x10, 0x48, 0x28, 0x0A, 0xD8, 0x40, 0xF6, 0xB4, 0x12, 0x91, 0x42, + 0x28, 0xD0, 0x18, 0x48, 0xA1, 0xF6, 0x67, 0x12, 0xA0, 0xFB, 0x02, 0x12, + 0xC2, 0xF3, 0x87, 0x02, 0x9A, 0x70, 0x02, 0x21, 0x08, 0x46, 0x02, 0xB0, + 0xBD, 0xE8, 0xF0, 0x41, 0x01, 0xF0, 0xFA, 0xBD, 0x28, 0x46, 0xFF, 0xF7, + 0x7B, 0xFF, 0x03, 0x46, 0xD4, 0xE7, 0x01, 0x2A, 0x02, 0xD0, 0x00, 0x22, + 0x9A, 0x70, 0xEE, 0xE7, 0xA1, 0xF5, 0x9C, 0x51, 0xA1, 0xF1, 0x0D, 0x02, + 0x92, 0xB2, 0xB2, 0xF5, 0x4D, 0x7F, 0xF4, 0xD8, 0x07, 0x4A, 0x08, 0x39, + 0xA2, 0xFB, 0x01, 0x12, 0xC2, 0xF3, 0x87, 0x02, 0x9A, 0x70, 0xDE, 0xE7, + 0x0E, 0x22, 0x9A, 0x70, 0xDB, 0xE7, 0x00, 0xBF, 0xF4, 0x9F, 0x17, 0x00, + 0xC8, 0x35, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, 0x70, 0xB5, 0x0B, 0x4E, + 0x0B, 0x4C, 0x33, 0x68, 0x05, 0x46, 0xB3, 0xF8, 0x6C, 0x11, 0x20, 0x46, + 0x02, 0xF0, 0x7A, 0xFB, 0x70, 0x60, 0xFF, 0xF7, 0x95, 0xFF, 0x54, 0xF8, + 0x0C, 0x2C, 0xB5, 0xF8, 0x6C, 0x11, 0x01, 0x3A, 0x0A, 0x44, 0x00, 0x21, + 0x44, 0xE9, 0x02, 0x21, 0x70, 0xBD, 0x00, 0xBF, 0xF4, 0x9F, 0x17, 0x00, + 0xE8, 0x61, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0xD8, 0x90, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0x93, 0x06, 0x46, 0x93, 0xF8, + 0xC0, 0x04, 0x93, 0xF8, 0x6C, 0x50, 0x88, 0x46, 0x17, 0x46, 0x00, 0x28, + 0x52, 0xD1, 0x1B, 0x6C, 0x18, 0x79, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, + 0x1A, 0x21, 0xEE, 0xF7, 0x75, 0xFE, 0x04, 0x46, 0x00, 0x28, 0x4E, 0xD0, + 0x28, 0x4A, 0xDF, 0xF8, 0xA8, 0xE0, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, + 0x05, 0x21, 0xD0, 0xE9, 0x12, 0x3C, 0x0A, 0x46, 0xBE, 0xF8, 0xFC, 0x51, + 0x52, 0xF8, 0x26, 0x0F, 0xD8, 0x66, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, + 0x06, 0x99, 0x40, 0x20, 0x83, 0xF8, 0x68, 0x00, 0x90, 0x88, 0xA3, 0xF8, + 0x70, 0x00, 0xD9, 0xF8, 0x5C, 0x00, 0xB9, 0xF8, 0x60, 0x90, 0xC3, 0xF8, + 0x72, 0x00, 0x01, 0x35, 0x90, 0x88, 0xA3, 0xF8, 0x76, 0x90, 0xAD, 0xB2, + 0xD2, 0xF8, 0x00, 0x90, 0xA3, 0xF8, 0x7C, 0x00, 0x00, 0x20, 0x83, 0xF8, + 0x69, 0x00, 0x83, 0xF8, 0x6A, 0x00, 0x83, 0xF8, 0x6B, 0x00, 0xC3, 0xF8, + 0x78, 0x90, 0xAE, 0xF8, 0xFC, 0x51, 0x2D, 0x01, 0x83, 0xF8, 0x80, 0x00, + 0x83, 0xF8, 0x81, 0x00, 0xA3, 0xF8, 0x7E, 0x50, 0xCC, 0xF8, 0x20, 0x00, + 0x26, 0x77, 0x91, 0xF8, 0x23, 0x30, 0x63, 0x77, 0xC4, 0xE9, 0x15, 0x87, + 0x20, 0x46, 0x05, 0x21, 0xBD, 0xE8, 0xF8, 0x43, 0xEE, 0xF7, 0x3A, 0xBE, + 0x01, 0x20, 0x1A, 0x21, 0xEE, 0xF7, 0x26, 0xFE, 0x04, 0x46, 0x00, 0x28, + 0xB0, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x52, 0x4B, 0x83, 0xB0, 0x1D, 0x68, 0x9B, 0x7A, 0x01, 0x93, 0x95, 0xF8, + 0x70, 0x31, 0x95, 0xF8, 0x6E, 0x81, 0x00, 0x2B, 0x00, 0xF0, 0x8B, 0x80, + 0x4D, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x08, 0x38, 0x08, 0xF1, + 0x5C, 0x07, 0x05, 0xF1, 0xFD, 0x09, 0x00, 0x26, 0x98, 0xF8, 0xC0, 0x34, + 0x00, 0x2B, 0x7F, 0xD1, 0x01, 0x9B, 0x03, 0xEB, 0x43, 0x03, 0x05, 0xEB, + 0x43, 0x03, 0x9B, 0x78, 0x00, 0x2B, 0x77, 0xD1, 0x95, 0xF8, 0x71, 0x01, + 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x19, 0xF8, 0x01, 0x3C, 0xB5, 0xF8, + 0x6C, 0x11, 0x1A, 0x33, 0x19, 0x44, 0xEE, 0xF7, 0xE9, 0xFD, 0x4A, 0x46, + 0x01, 0x46, 0x00, 0x28, 0x63, 0xD0, 0xD0, 0xE9, 0x12, 0x3C, 0x40, 0x24, + 0x00, 0x20, 0x83, 0xF8, 0x68, 0x40, 0x83, 0xF8, 0x69, 0x00, 0x83, 0xF8, + 0x6A, 0x00, 0x83, 0xF8, 0x6B, 0x00, 0x95, 0xF8, 0x60, 0x01, 0xC0, 0x07, + 0x58, 0xD4, 0xD5, 0xF8, 0x60, 0x01, 0xB5, 0xF8, 0x64, 0x41, 0xA3, 0xF8, + 0x70, 0x40, 0xD8, 0x66, 0x05, 0xF5, 0xB0, 0x7A, 0xDF, 0xF8, 0xC0, 0xE0, + 0x38, 0x68, 0xBE, 0xF8, 0xFC, 0x41, 0xB7, 0xF8, 0x04, 0xB0, 0xC3, 0xF8, + 0x72, 0x00, 0x01, 0x34, 0xDA, 0xF8, 0x00, 0x00, 0xBA, 0xF8, 0x04, 0xA0, + 0xA3, 0xF8, 0x76, 0xB0, 0xA4, 0xB2, 0x4F, 0xF0, 0x00, 0x0B, 0x98, 0x67, + 0xA3, 0xF8, 0x7C, 0xA0, 0xAE, 0xF8, 0xFC, 0x41, 0x83, 0xF8, 0x80, 0xB0, + 0x19, 0xF8, 0x01, 0x0C, 0x83, 0xF8, 0x81, 0x00, 0x19, 0xF8, 0x01, 0x0C, + 0x24, 0x01, 0xA3, 0xF8, 0x7E, 0x40, 0x40, 0xB1, 0x81, 0x33, 0x09, 0xEB, + 0x00, 0x04, 0x12, 0xF8, 0x01, 0x0B, 0x03, 0xF8, 0x01, 0x0F, 0xA2, 0x42, + 0xF9, 0xD1, 0xB5, 0xF8, 0x6C, 0x21, 0xDC, 0xF8, 0x28, 0x30, 0x16, 0x48, + 0xCC, 0xF8, 0x20, 0x00, 0x9B, 0x1A, 0x00, 0x22, 0xCC, 0xF8, 0x28, 0x30, + 0xC1, 0xE9, 0x15, 0x22, 0x95, 0xF8, 0x6E, 0x31, 0x0B, 0x77, 0xFF, 0x23, + 0x4B, 0x77, 0x08, 0x46, 0x05, 0x21, 0xEE, 0xF7, 0x99, 0xFD, 0x95, 0xF8, + 0x70, 0x31, 0x01, 0x36, 0xB3, 0x42, 0x09, 0xF1, 0x21, 0x09, 0x3F, 0xF7, + 0x7F, 0xAF, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x20, 0x8A, 0xE7, + 0x07, 0x48, 0x04, 0x68, 0x80, 0x88, 0xDC, 0x66, 0xA3, 0xF8, 0x70, 0x00, + 0x05, 0xF5, 0xB0, 0x7A, 0xA6, 0xE7, 0x00, 0xBF, 0xF4, 0x9F, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0xD4, 0x61, 0x18, 0x00, 0xAC, 0xB2, 0x15, 0x00, + 0x20, 0x62, 0x17, 0x00, 0x38, 0xB5, 0x02, 0x22, 0x05, 0x46, 0x01, 0x23, + 0x40, 0xF6, 0x04, 0x00, 0x01, 0xF0, 0x92, 0xFA, 0x04, 0x46, 0x02, 0x20, + 0x01, 0xF0, 0x30, 0xFD, 0x05, 0x4A, 0x06, 0x49, 0x03, 0x46, 0x04, 0x20, + 0x03, 0xF0, 0x40, 0xF9, 0x25, 0x70, 0x20, 0x46, 0xBD, 0xE8, 0x38, 0x40, + 0x01, 0xF0, 0xB2, 0xBA, 0xBC, 0xA4, 0x15, 0x00, 0x00, 0xA4, 0x15, 0x00, + 0x03, 0x4A, 0x93, 0x7A, 0x10, 0x68, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, + 0x43, 0x00, 0x70, 0x47, 0xF4, 0x9F, 0x17, 0x00, 0xC3, 0x78, 0x13, 0xF0, + 0x05, 0x0F, 0x03, 0xD0, 0x02, 0x4B, 0x1B, 0x68, 0x58, 0x69, 0x70, 0x47, + 0xFF, 0xF7, 0xE8, 0xBD, 0xC8, 0x35, 0x17, 0x00, 0x0E, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDA, 0x0C, 0x4B, 0x1B, 0x68, + 0x1B, 0x07, 0x0D, 0xD1, 0x0B, 0x48, 0x0C, 0x49, 0x02, 0x68, 0x4B, 0x68, + 0x22, 0xF0, 0x80, 0x02, 0x02, 0x60, 0x23, 0xF0, 0x04, 0x03, 0x4F, 0xF0, + 0x80, 0x60, 0x4B, 0x60, 0x01, 0xF0, 0x3C, 0xBE, 0x06, 0x49, 0x07, 0x48, + 0x84, 0x22, 0x03, 0xF0, 0xFB, 0xBA, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x38, 0x00, 0x32, 0x40, 0x8C, 0x80, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x84, 0x9E, 0x15, 0x00, 0x5A, 0x4A, 0x5B, 0x49, + 0x13, 0x68, 0xF0, 0xB4, 0x14, 0x68, 0x5A, 0x4E, 0x5A, 0x4D, 0x24, 0xF0, + 0xFF, 0x04, 0x04, 0x43, 0x14, 0x60, 0x14, 0x68, 0x17, 0x68, 0xC4, 0xF3, + 0x09, 0x24, 0x27, 0xF4, 0x7F, 0x37, 0xDB, 0xB2, 0x00, 0xFB, 0x04, 0xF4, + 0x27, 0xF4, 0x40, 0x77, 0xB4, 0xFB, 0xF3, 0xF4, 0x01, 0xEA, 0x04, 0x24, + 0x3C, 0x43, 0x14, 0x60, 0x11, 0x68, 0x14, 0x68, 0xC1, 0xF3, 0x89, 0x41, + 0x2C, 0x40, 0x00, 0xFB, 0x01, 0xF1, 0xB1, 0xFB, 0xF3, 0xF1, 0x06, 0xEA, + 0x81, 0x41, 0x21, 0x43, 0x11, 0x60, 0x11, 0x68, 0x49, 0x4E, 0x4A, 0x4C, + 0x0D, 0x40, 0x45, 0xF0, 0x89, 0x65, 0x15, 0x60, 0x32, 0x68, 0x35, 0x68, + 0x47, 0x49, 0xC2, 0xF3, 0x0F, 0x22, 0x25, 0xF4, 0x7F, 0x05, 0x25, 0xF4, + 0x7F, 0x45, 0x00, 0xFB, 0x02, 0xF2, 0xB2, 0xFB, 0xF3, 0xF2, 0x04, 0xEA, + 0x02, 0x22, 0x2A, 0x43, 0x32, 0x60, 0x0A, 0x68, 0x0D, 0x68, 0x40, 0x4C, + 0xC2, 0xF3, 0x09, 0x52, 0x25, 0xF0, 0x7F, 0x55, 0x00, 0xFB, 0x02, 0xF2, + 0x25, 0xF4, 0x40, 0x15, 0xB2, 0xFB, 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x52, + 0x2A, 0x43, 0x0A, 0x60, 0x0A, 0x68, 0x0C, 0x68, 0xC2, 0xF3, 0x09, 0x02, + 0x24, 0xF4, 0x7F, 0x74, 0x00, 0xFB, 0x02, 0xF2, 0x24, 0xF0, 0x03, 0x04, + 0xB2, 0xFB, 0xF3, 0xF2, 0xC2, 0xF3, 0x09, 0x02, 0x22, 0x43, 0x1D, 0x28, + 0x0A, 0x60, 0x44, 0xD8, 0x4A, 0x68, 0x42, 0xF0, 0x03, 0x02, 0x4A, 0x60, + 0x2E, 0x49, 0x2B, 0x4C, 0x0A, 0x68, 0x2E, 0x4E, 0x0F, 0x68, 0x2E, 0x4D, + 0xC2, 0xF3, 0x0F, 0x22, 0x37, 0x40, 0x00, 0xFB, 0x02, 0xF2, 0xB2, 0xFB, + 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x22, 0x3A, 0x43, 0x0A, 0x60, 0x2A, 0x68, + 0x2F, 0x68, 0xC2, 0xF3, 0x0F, 0x22, 0x00, 0xFB, 0x02, 0xF2, 0x3E, 0x40, + 0xB2, 0xFB, 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x22, 0x32, 0x43, 0x2A, 0x60, + 0x0A, 0x69, 0x0D, 0x69, 0x1D, 0x4C, 0xC2, 0xF3, 0x09, 0x52, 0x25, 0xF0, + 0x7F, 0x55, 0x00, 0xFB, 0x02, 0xF2, 0x25, 0xF4, 0x40, 0x15, 0xB2, 0xFB, + 0xF3, 0xF2, 0x04, 0xEA, 0x02, 0x52, 0x2A, 0x43, 0x0A, 0x61, 0x0C, 0x69, + 0x0A, 0x69, 0xC4, 0xF3, 0x09, 0x04, 0x22, 0xF4, 0x7F, 0x72, 0x00, 0xFB, + 0x04, 0xF0, 0x22, 0xF0, 0x03, 0x02, 0xB0, 0xFB, 0xF3, 0xF0, 0xC0, 0xF3, + 0x09, 0x00, 0x10, 0x43, 0xF0, 0xBC, 0x08, 0x61, 0x70, 0x47, 0x11, 0x49, + 0x0A, 0x68, 0x3B, 0x28, 0x22, 0xF0, 0x03, 0x02, 0x94, 0xBF, 0x42, 0xF0, + 0x02, 0x02, 0x42, 0xF0, 0x01, 0x02, 0x0A, 0x60, 0xB2, 0xE7, 0x00, 0xBF, + 0xE4, 0x00, 0x32, 0x40, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0x0F, + 0xFF, 0xFF, 0x03, 0xF0, 0xE8, 0x00, 0x32, 0x40, 0x00, 0xFF, 0xFF, 0x00, + 0xEC, 0x00, 0x32, 0x40, 0x00, 0x00, 0xF0, 0x3F, 0xF4, 0x00, 0x32, 0x40, + 0xFF, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x32, 0x40, 0xF0, 0x00, 0x32, 0x40, + 0x1D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x2C, 0xDB, + 0xF0, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x18, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x18, 0x4B, 0x18, 0x49, 0x1B, 0x68, + 0x0E, 0x68, 0x18, 0x4C, 0x18, 0x4A, 0x19, 0x4D, 0x19, 0x4F, 0x03, 0xF5, + 0xC3, 0x43, 0x28, 0x33, 0x70, 0x1C, 0x08, 0x60, 0x23, 0x60, 0x17, 0x4C, + 0x80, 0x23, 0x13, 0x60, 0x2A, 0x68, 0x63, 0x68, 0x42, 0xF0, 0x80, 0x02, + 0x43, 0xF0, 0x04, 0x03, 0x2A, 0x60, 0x63, 0x60, 0x00, 0x23, 0x3B, 0x60, + 0x28, 0xB1, 0x09, 0x4B, 0x0E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0xF0, 0xBC, 0x70, 0x47, 0x0B, 0x4B, 0x1B, 0x68, 0x1A, 0x07, + 0xCE, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0xD9, 0x22, 0x03, 0xF0, 0xE4, 0xB9, + 0x38, 0x36, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x20, 0x01, 0x32, 0x40, + 0x6C, 0x28, 0x17, 0x00, 0x44, 0x01, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, + 0x8C, 0x80, 0x32, 0x40, 0x38, 0x00, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xD4, 0xA4, 0x15, 0x00, 0x03, 0x4A, 0x01, 0x23, + 0x13, 0x60, 0x13, 0x68, 0x13, 0xF0, 0xFF, 0x0F, 0xFB, 0xD1, 0x70, 0x47, + 0x50, 0x80, 0x32, 0x40, 0x70, 0xB5, 0x76, 0x4A, 0x01, 0x23, 0x82, 0xB0, + 0x13, 0x60, 0x13, 0x68, 0x13, 0xF0, 0xFF, 0x0F, 0xFB, 0xD1, 0x73, 0x4B, + 0xD3, 0xF8, 0xF0, 0x40, 0xDE, 0xF7, 0x66, 0xFF, 0xA0, 0x47, 0x71, 0x4B, + 0x71, 0x49, 0x72, 0x4A, 0x19, 0x60, 0x13, 0x68, 0x71, 0x49, 0x23, 0xF4, + 0x00, 0x63, 0x13, 0x60, 0x0B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x86, 0x80, 0x6D, 0x48, 0x6E, 0x4B, 0x6A, 0x49, 0x6E, 0x4C, + 0x6E, 0x4A, 0x04, 0x60, 0x1A, 0x60, 0x0A, 0x68, 0x6D, 0x4C, 0x6E, 0x4D, + 0x42, 0xF0, 0x80, 0x62, 0x42, 0xF4, 0xF8, 0x62, 0x0A, 0x60, 0x0A, 0x68, + 0x22, 0xF0, 0x80, 0x62, 0x0A, 0x60, 0x50, 0xF8, 0x84, 0x2C, 0x69, 0x49, + 0xA3, 0xF5, 0x00, 0x43, 0x1C, 0x3B, 0x42, 0xF4, 0x80, 0x32, 0x40, 0xF8, + 0x84, 0x2C, 0x25, 0x60, 0x1A, 0x68, 0x42, 0xF0, 0x7F, 0x42, 0x1A, 0x60, + 0x1A, 0x68, 0x42, 0xF4, 0x00, 0x02, 0x1A, 0x60, 0x1A, 0x68, 0x22, 0xF4, + 0xFE, 0x02, 0x42, 0xF4, 0x80, 0x12, 0x1A, 0x60, 0x8A, 0x78, 0x2A, 0xB9, + 0x1A, 0x68, 0x12, 0x0C, 0x12, 0x04, 0x42, 0xF0, 0x64, 0x02, 0x1A, 0x60, + 0x5A, 0x4B, 0x5B, 0x49, 0x50, 0x4C, 0x5B, 0x4E, 0x5B, 0x4D, 0x00, 0x22, + 0x4F, 0xF4, 0x40, 0x50, 0x08, 0x60, 0x1A, 0x60, 0x0D, 0xF1, 0x06, 0x01, + 0x0D, 0xF1, 0x07, 0x00, 0xE0, 0xF7, 0x1C, 0xF9, 0x9D, 0xF8, 0x07, 0x20, + 0x9D, 0xF8, 0x06, 0x00, 0x54, 0x49, 0x13, 0x02, 0x43, 0xEA, 0x00, 0x43, + 0x13, 0x43, 0x0B, 0x60, 0x23, 0x68, 0x52, 0x4A, 0x43, 0xF4, 0x80, 0x53, + 0x23, 0x60, 0x23, 0x68, 0x41, 0xF6, 0x25, 0x40, 0x43, 0xF4, 0x00, 0x53, + 0x23, 0x60, 0xC1, 0xF8, 0x70, 0x04, 0x13, 0x68, 0x23, 0xF0, 0x80, 0x03, + 0x13, 0x60, 0xDF, 0xF7, 0x77, 0xFD, 0x32, 0x68, 0x49, 0x49, 0x43, 0x1C, + 0x9B, 0x06, 0x22, 0xF0, 0xE0, 0x52, 0x03, 0xF0, 0xE0, 0x53, 0x13, 0x43, + 0x33, 0x60, 0x23, 0x68, 0x45, 0x4A, 0x43, 0xF0, 0x20, 0x03, 0x23, 0x60, + 0x0B, 0x68, 0x23, 0xF0, 0x01, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x43, 0xF0, + 0x02, 0x03, 0x13, 0x60, 0x23, 0x68, 0x43, 0xF0, 0x00, 0x73, 0x23, 0x60, + 0x2B, 0x68, 0x99, 0x03, 0x13, 0xD4, 0x3D, 0x4A, 0x13, 0x68, 0x43, 0xF0, + 0x01, 0x03, 0x13, 0x60, 0x02, 0xB0, 0x70, 0xBD, 0x2A, 0x4B, 0x1B, 0x68, + 0xB3, 0xF1, 0xC8, 0x5F, 0xBF, 0xF4, 0x74, 0xAF, 0x37, 0x49, 0x38, 0x48, + 0x40, 0xF2, 0x21, 0x12, 0x03, 0xF0, 0x46, 0xF9, 0x6C, 0xE7, 0xDF, 0xF7, + 0x05, 0xFD, 0x00, 0x28, 0xE7, 0xD0, 0xDF, 0xF7, 0x35, 0xFD, 0x33, 0x4E, + 0x32, 0x68, 0x00, 0x02, 0x00, 0xF4, 0xE0, 0x63, 0x22, 0xF4, 0xE0, 0x62, + 0x13, 0x43, 0x33, 0x60, 0x33, 0x68, 0x23, 0xF0, 0xE0, 0x03, 0x43, 0xF0, + 0x60, 0x03, 0x33, 0x60, 0x33, 0x68, 0x43, 0xF0, 0x04, 0x03, 0x33, 0x60, + 0x33, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x33, 0x60, 0x2B, 0x68, 0x1B, 0x04, + 0x0D, 0xD4, 0x1E, 0x4B, 0x1B, 0x68, 0x9A, 0x03, 0xC7, 0xD5, 0xDF, 0xF7, + 0xE9, 0xFC, 0x00, 0x28, 0xC3, 0xD0, 0x22, 0x4A, 0x13, 0x68, 0x43, 0xF0, + 0x02, 0x03, 0x13, 0x60, 0xBD, 0xE7, 0xDF, 0xF7, 0xB1, 0xFC, 0x00, 0x28, + 0xED, 0xD0, 0x23, 0x68, 0x43, 0xF4, 0x00, 0x23, 0x23, 0x60, 0x33, 0x68, + 0x23, 0xF0, 0x60, 0x63, 0x43, 0xF0, 0x80, 0x63, 0x33, 0x60, 0xE2, 0xE7, + 0x50, 0x80, 0x32, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x74, 0x80, 0x32, 0x40, + 0x4C, 0xF1, 0x73, 0x8B, 0x4C, 0x00, 0x32, 0x40, 0x38, 0x36, 0x17, 0x00, + 0xD8, 0x00, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, 0x10, 0x19, 0x04, 0x00, + 0xC0, 0x07, 0xF9, 0x80, 0x60, 0x00, 0x32, 0x40, 0xDE, 0xFF, 0xFF, 0x7F, + 0x3C, 0x36, 0x17, 0x00, 0x24, 0x02, 0x32, 0x40, 0x58, 0x01, 0x32, 0x40, + 0x9C, 0x00, 0x32, 0x40, 0x04, 0x00, 0x32, 0x40, 0xA0, 0x00, 0x32, 0x40, + 0x10, 0x03, 0x32, 0x40, 0x48, 0x80, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, + 0x00, 0x04, 0x32, 0x40, 0x70, 0x79, 0x15, 0x00, 0x40, 0x88, 0x15, 0x00, + 0x50, 0x03, 0x32, 0x40, 0x05, 0x49, 0x06, 0x4A, 0x0B, 0x68, 0x23, 0xF0, + 0x00, 0x43, 0x0B, 0x60, 0x13, 0x68, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0x74, 0x80, 0x32, 0x40, 0x80, 0x80, 0x32, 0x40, + 0x1D, 0x4A, 0x1E, 0x49, 0x13, 0x68, 0x1E, 0x48, 0x30, 0xB4, 0x23, 0xF0, + 0x80, 0x03, 0x00, 0x25, 0x3C, 0x24, 0x13, 0x60, 0x0D, 0x60, 0x0A, 0x46, + 0x04, 0x60, 0x13, 0x68, 0x1B, 0x07, 0xFC, 0xD1, 0x17, 0x4A, 0x18, 0x49, + 0x13, 0x68, 0x18, 0x4D, 0x18, 0x48, 0x19, 0x4C, 0x43, 0xF4, 0x80, 0x33, + 0x13, 0x60, 0x0B, 0x68, 0x02, 0xF5, 0x00, 0x42, 0x23, 0xF0, 0xFF, 0x03, + 0x0B, 0x60, 0x20, 0x32, 0x4F, 0xF0, 0xFF, 0x33, 0x2B, 0x60, 0x04, 0x60, + 0x13, 0x68, 0x12, 0x4C, 0x12, 0x49, 0x43, 0xF0, 0x00, 0x43, 0x13, 0x60, + 0x22, 0x68, 0x4B, 0x68, 0xA0, 0xF5, 0x00, 0x40, 0x24, 0x38, 0x42, 0xF0, + 0x00, 0x42, 0x22, 0x60, 0x02, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x42, 0xF0, + 0x80, 0x02, 0x02, 0x60, 0x30, 0xBC, 0x4B, 0x60, 0x70, 0x47, 0x00, 0xBF, + 0x4C, 0x00, 0x32, 0x40, 0x38, 0x00, 0x32, 0x40, 0x54, 0x00, 0x32, 0x40, + 0x8C, 0x80, 0x32, 0x40, 0x7C, 0x80, 0x32, 0x40, 0x70, 0x80, 0x32, 0x40, + 0x44, 0xF1, 0x73, 0x0B, 0x80, 0x80, 0x32, 0x40, 0x1C, 0x9E, 0x17, 0x00, + 0x0B, 0x49, 0x0C, 0x4A, 0x0C, 0x4B, 0x10, 0xB4, 0x04, 0x68, 0x80, 0x88, + 0x0C, 0x60, 0x4F, 0xF0, 0x00, 0x51, 0x10, 0x60, 0x1A, 0x46, 0x19, 0x60, + 0x10, 0x68, 0x81, 0x00, 0xFC, 0xD4, 0xC3, 0x00, 0x5D, 0xBF, 0x00, 0x0C, + 0x10, 0x38, 0xC0, 0xB2, 0xFF, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0xBC, 0x00, 0x32, 0x40, 0xC0, 0x00, 0x32, 0x40, 0xC4, 0x00, 0x32, 0x40, + 0x38, 0xB5, 0x11, 0x4B, 0x11, 0x48, 0x19, 0x68, 0x42, 0x68, 0x11, 0x4C, + 0x11, 0x4D, 0x21, 0xF0, 0x01, 0x01, 0x19, 0x60, 0x19, 0x68, 0x21, 0xF0, + 0x02, 0x01, 0x19, 0x60, 0x23, 0x68, 0x0E, 0x49, 0x43, 0xF4, 0xE0, 0x63, + 0x2A, 0x43, 0x23, 0x60, 0x05, 0x60, 0x01, 0x20, 0x0A, 0x60, 0xF3, 0xF7, + 0x51, 0xFB, 0x23, 0x68, 0x23, 0xF4, 0xE0, 0x33, 0x43, 0xF4, 0x80, 0x33, + 0x23, 0x60, 0x23, 0x68, 0x43, 0xF4, 0x00, 0x53, 0x23, 0x60, 0x38, 0xBD, + 0x74, 0x80, 0x32, 0x40, 0x98, 0x9C, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0xDE, 0xFF, 0xFF, 0x7F, 0x60, 0x00, 0x32, 0x40, 0x80, 0xEA, 0xE0, 0x72, + 0xF0, 0xB4, 0xA2, 0xEB, 0xE0, 0x72, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x16, 0x4B, 0x01, 0x21, 0x19, 0x60, 0x16, 0x4D, + 0x16, 0x4B, 0x2E, 0x68, 0x1B, 0x68, 0x16, 0x49, 0x77, 0x1C, 0x00, 0x28, + 0x09, 0x68, 0x2F, 0x60, 0x43, 0xF0, 0x80, 0x73, 0x15, 0xDD, 0x8A, 0x42, + 0x18, 0xD8, 0x11, 0x49, 0x0F, 0x4C, 0x0A, 0x68, 0x10, 0x1A, 0x08, 0x60, + 0x23, 0x60, 0x08, 0x60, 0x23, 0x60, 0x08, 0x60, 0x00, 0x20, 0x23, 0x60, + 0x2F, 0xB1, 0x08, 0x4B, 0x2E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0xF0, 0xBC, 0x70, 0x47, 0xEA, 0xD0, 0xC9, 0x43, 0x20, 0x32, + 0x91, 0x42, 0xE6, 0xD2, 0x4F, 0xF0, 0xFF, 0x30, 0xEE, 0xE7, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, + 0xA4, 0x80, 0x32, 0x40, 0x35, 0x4B, 0x1B, 0x68, 0x70, 0xB5, 0xC3, 0xF3, + 0x40, 0x64, 0x9B, 0x01, 0x12, 0xD4, 0x33, 0x49, 0x33, 0x48, 0x0B, 0x69, + 0x33, 0x4A, 0x05, 0x68, 0x08, 0x69, 0xB2, 0xF8, 0xB0, 0x10, 0xB2, 0xF8, + 0xB2, 0x20, 0xA3, 0xF5, 0xFA, 0x63, 0x03, 0xEB, 0x45, 0x13, 0x1B, 0x1A, + 0x5B, 0x1A, 0x9B, 0x1A, 0x00, 0x2B, 0x17, 0xDB, 0x2C, 0x4B, 0x1D, 0x68, + 0x9D, 0xB1, 0x28, 0x48, 0x29, 0x4E, 0xEA, 0x68, 0x03, 0x69, 0xB6, 0xF8, + 0xB0, 0x40, 0xB6, 0xF8, 0xB2, 0x10, 0xD3, 0x1A, 0xA3, 0xF5, 0xFA, 0x63, + 0x1B, 0x1B, 0x5B, 0x1A, 0x00, 0x2B, 0x07, 0xDB, 0x24, 0x4B, 0x1B, 0x68, + 0x1C, 0x78, 0x01, 0x2C, 0x0B, 0xD0, 0x01, 0x24, 0x20, 0x46, 0x70, 0xBD, + 0x21, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x12, 0xDB, + 0x00, 0x24, 0x20, 0x46, 0x70, 0xBD, 0x1D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x18, 0xDB, 0x15, 0x4B, 0x52, 0x1A, 0x4F, 0xF4, + 0x80, 0x20, 0x04, 0x21, 0x98, 0x60, 0x1A, 0x63, 0x20, 0x46, 0x99, 0x60, + 0x70, 0xBD, 0x03, 0x69, 0xD2, 0x1A, 0x02, 0xF5, 0x9C, 0x52, 0x08, 0x32, + 0x00, 0x2A, 0xE5, 0xDA, 0x12, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x3E, 0x22, + 0x02, 0xF0, 0x92, 0xFF, 0x00, 0x24, 0xD5, 0xE7, 0x03, 0x69, 0xD3, 0x1A, + 0x5B, 0x1A, 0x00, 0x2B, 0xE1, 0xDA, 0x0C, 0x49, 0x0D, 0x48, 0x40, 0xF2, + 0x43, 0x22, 0x02, 0xF0, 0x85, 0xFF, 0xEA, 0x68, 0xB6, 0xF8, 0xB2, 0x10, + 0xD7, 0xE7, 0x00, 0xBF, 0x4C, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x40, 0x80, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, 0xD0, 0x9C, 0x17, 0x00, + 0x74, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xFC, 0xA4, 0x15, 0x00, 0x80, 0x8D, 0x15, 0x00, 0x70, 0xB4, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0B, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x0B, 0x4B, 0x0B, 0x49, 0x0C, 0x4D, 0x0E, 0x68, 0x1A, 0x68, + 0x28, 0x68, 0x09, 0x68, 0x54, 0x1C, 0xB1, 0x42, 0x18, 0xBF, 0x28, 0x68, + 0x1C, 0x60, 0x2C, 0xB1, 0x03, 0x4C, 0x1A, 0x60, 0x23, 0x68, 0x0A, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0x70, 0xBC, 0x70, 0x47, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xA8, 0x80, 0x32, 0x40, 0xA4, 0x80, 0x32, 0x40, + 0x3B, 0x4A, 0x3C, 0x4B, 0x10, 0xB5, 0x14, 0x68, 0x1C, 0x60, 0x61, 0x05, + 0x1D, 0xD4, 0xE2, 0x05, 0x16, 0xD4, 0xA3, 0x05, 0x10, 0xD4, 0xE0, 0x06, + 0x31, 0xD4, 0x37, 0x4B, 0x1A, 0x78, 0x22, 0xB1, 0x14, 0xF0, 0x2F, 0x0F, + 0x1C, 0xBF, 0x01, 0x22, 0x9A, 0x71, 0x34, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x0D, 0xDB, 0x10, 0xBD, 0x31, 0x48, 0x02, 0xF0, + 0xAD, 0xFC, 0xFE, 0xE7, 0xF2, 0xF7, 0x96, 0xFD, 0xA3, 0x05, 0xE6, 0xD5, + 0xF6, 0xE7, 0x2E, 0x48, 0x02, 0xF0, 0xA4, 0xFC, 0xFE, 0xE7, 0xE1, 0x07, + 0x1C, 0xD4, 0xA2, 0x07, 0x42, 0xD4, 0x63, 0x07, 0x38, 0xD4, 0x20, 0x07, + 0x2E, 0xD4, 0x21, 0x06, 0x24, 0xD4, 0x62, 0x06, 0x1A, 0xD4, 0xA3, 0x06, + 0xE3, 0xD5, 0xBD, 0xE8, 0x10, 0x40, 0x25, 0x49, 0x25, 0x48, 0x40, 0xF2, + 0xB5, 0x22, 0x02, 0xF0, 0xD5, 0xBE, 0x04, 0x20, 0xEC, 0xF7, 0xA4, 0xFD, + 0x4F, 0xF0, 0x80, 0x41, 0x04, 0x20, 0xEC, 0xF7, 0x3F, 0xFE, 0xC4, 0xE7, + 0xBD, 0xE8, 0x10, 0x40, 0x1C, 0x49, 0x1E, 0x48, 0x4F, 0xF4, 0x2B, 0x72, + 0x02, 0xF0, 0xC4, 0xBE, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x49, 0x1B, 0x48, + 0x40, 0xF2, 0xB3, 0x22, 0x02, 0xF0, 0xBC, 0xBE, 0xBD, 0xE8, 0x10, 0x40, + 0x14, 0x49, 0x18, 0x48, 0x40, 0xF2, 0xB1, 0x22, 0x02, 0xF0, 0xB4, 0xBE, + 0xBD, 0xE8, 0x10, 0x40, 0x10, 0x49, 0x15, 0x48, 0x40, 0xF2, 0xAF, 0x22, + 0x02, 0xF0, 0xAC, 0xBE, 0xBD, 0xE8, 0x10, 0x40, 0x0C, 0x49, 0x12, 0x48, + 0x40, 0xF2, 0xAE, 0x22, 0x02, 0xF0, 0xA4, 0xBE, 0xBD, 0xE8, 0x10, 0x40, + 0x08, 0x49, 0x0F, 0x48, 0x40, 0xF2, 0xAD, 0x22, 0x02, 0xF0, 0x9C, 0xBE, + 0x84, 0x80, 0x32, 0x40, 0x88, 0x80, 0x32, 0x40, 0x80, 0x35, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x5C, 0xA5, 0x15, 0x00, 0x28, 0xA5, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x80, 0xA6, 0x15, 0x00, 0x90, 0xA5, 0x15, 0x00, + 0x58, 0xA6, 0x15, 0x00, 0x30, 0xA6, 0x15, 0x00, 0x08, 0xA6, 0x15, 0x00, + 0xE0, 0xA5, 0x15, 0x00, 0xB8, 0xA5, 0x15, 0x00, 0x38, 0xB5, 0x62, 0x4A, + 0x62, 0x4B, 0x11, 0x68, 0x1C, 0x68, 0x62, 0x4B, 0x0C, 0x40, 0x23, 0x40, + 0x54, 0x60, 0x00, 0x2B, 0x54, 0xD1, 0x60, 0x4B, 0x23, 0x40, 0x00, 0x2B, + 0x4B, 0xD1, 0x62, 0x07, 0x03, 0xD5, 0x5E, 0x4B, 0xD3, 0xF8, 0xDC, 0x30, + 0x98, 0x47, 0x23, 0x07, 0x03, 0xD5, 0x5B, 0x4B, 0xD3, 0xF8, 0xD4, 0x30, + 0x98, 0x47, 0xE5, 0x00, 0x2E, 0xD4, 0xE0, 0x05, 0x28, 0xD4, 0x58, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x00, 0xDB, 0x38, 0xBD, + 0x61, 0x02, 0x3C, 0xD4, 0xA2, 0x02, 0x42, 0xD4, 0x63, 0x06, 0x48, 0xD4, + 0xE5, 0x04, 0x4E, 0xD4, 0xA0, 0x04, 0x54, 0xD4, 0x61, 0x04, 0x5A, 0xD4, + 0x22, 0x04, 0x60, 0xD4, 0xE3, 0x03, 0x66, 0xD4, 0xA5, 0x03, 0x6C, 0xD4, + 0xE0, 0x01, 0x72, 0xD4, 0xA1, 0x01, 0x78, 0xD4, 0xE2, 0x02, 0x7E, 0xD4, + 0x23, 0x01, 0xE4, 0xD5, 0xBD, 0xE8, 0x38, 0x40, 0x47, 0x49, 0x48, 0x48, + 0x40, 0xF2, 0x19, 0x32, 0x02, 0xF0, 0x38, 0xBE, 0x46, 0x48, 0x02, 0xF0, + 0xED, 0xFB, 0xD2, 0xE7, 0x45, 0x4B, 0x46, 0x4A, 0x1D, 0x68, 0x93, 0x7F, + 0x05, 0xF0, 0x3F, 0x01, 0x0B, 0x43, 0x4F, 0xF4, 0x00, 0x20, 0x93, 0x77, + 0x01, 0xF0, 0x64, 0xF9, 0x41, 0x4B, 0x1D, 0x60, 0xC1, 0xE7, 0x4F, 0xF0, + 0x80, 0x70, 0x01, 0xF0, 0x5D, 0xF9, 0xAE, 0xE7, 0x4F, 0xF0, 0x00, 0x70, + 0x01, 0xF0, 0x58, 0xF9, 0xA5, 0xE7, 0xBD, 0xE8, 0x38, 0x40, 0x35, 0x49, + 0x3A, 0x48, 0x40, 0xF2, 0x0B, 0x32, 0x02, 0xF0, 0x13, 0xBE, 0xBD, 0xE8, + 0x38, 0x40, 0x31, 0x49, 0x37, 0x48, 0x4F, 0xF4, 0x43, 0x72, 0x02, 0xF0, + 0x0B, 0xBE, 0xBD, 0xE8, 0x38, 0x40, 0x2D, 0x49, 0x34, 0x48, 0x40, 0xF2, + 0x0D, 0x32, 0x02, 0xF0, 0x03, 0xBE, 0xBD, 0xE8, 0x38, 0x40, 0x29, 0x49, + 0x31, 0x48, 0x4F, 0xF4, 0x44, 0x72, 0x02, 0xF0, 0xFB, 0xBD, 0xBD, 0xE8, + 0x38, 0x40, 0x25, 0x49, 0x2E, 0x48, 0x40, 0xF2, 0x11, 0x32, 0x02, 0xF0, + 0xF3, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x21, 0x49, 0x2B, 0x48, 0x40, 0xF2, + 0x12, 0x32, 0x02, 0xF0, 0xEB, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x1D, 0x49, + 0x28, 0x48, 0x40, 0xF2, 0x13, 0x32, 0x02, 0xF0, 0xE3, 0xBD, 0xBD, 0xE8, + 0x38, 0x40, 0x19, 0x49, 0x25, 0x48, 0x4F, 0xF4, 0x45, 0x72, 0x02, 0xF0, + 0xDB, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x15, 0x49, 0x22, 0x48, 0x40, 0xF2, + 0x15, 0x32, 0x02, 0xF0, 0xD3, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x11, 0x49, + 0x1F, 0x48, 0x40, 0xF2, 0x16, 0x32, 0x02, 0xF0, 0xCB, 0xBD, 0xBD, 0xE8, + 0x38, 0x40, 0x0D, 0x49, 0x1C, 0x48, 0x40, 0xF2, 0x17, 0x32, 0x02, 0xF0, + 0xC3, 0xBD, 0xBD, 0xE8, 0x38, 0x40, 0x09, 0x49, 0x19, 0x48, 0x4F, 0xF4, + 0x46, 0x72, 0x02, 0xF0, 0xBB, 0xBD, 0x00, 0xBF, 0x6C, 0x80, 0x32, 0x40, + 0x74, 0x80, 0x32, 0x40, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x10, 0xA9, 0x15, 0x00, 0xA8, 0xA6, 0x15, 0x00, 0x90, 0x80, 0x32, 0x40, + 0x98, 0x9C, 0x17, 0x00, 0x94, 0x80, 0x32, 0x40, 0xD8, 0xA6, 0x15, 0x00, + 0x00, 0xA7, 0x15, 0x00, 0x34, 0xA7, 0x15, 0x00, 0x68, 0xA7, 0x15, 0x00, + 0x90, 0xA7, 0x15, 0x00, 0xC0, 0xA7, 0x15, 0x00, 0xF0, 0xA7, 0x15, 0x00, + 0x20, 0xA8, 0x15, 0x00, 0x50, 0xA8, 0x15, 0x00, 0x80, 0xA8, 0x15, 0x00, + 0xB4, 0xA8, 0x15, 0x00, 0xE8, 0xA8, 0x15, 0x00, 0x10, 0xB5, 0x18, 0x4B, + 0x84, 0xB0, 0xD3, 0xF8, 0x20, 0x32, 0x8D, 0xF8, 0x07, 0x00, 0x0D, 0xF1, + 0x0F, 0x02, 0x0D, 0xF1, 0x0E, 0x01, 0x0D, 0xF1, 0x07, 0x00, 0x98, 0x47, + 0x12, 0x4A, 0x13, 0x49, 0x13, 0x68, 0x9D, 0xF8, 0x0E, 0x40, 0x91, 0xF8, + 0xBA, 0x00, 0x23, 0xF4, 0x7F, 0x43, 0x43, 0xEA, 0x04, 0x23, 0x13, 0x60, + 0x18, 0xB1, 0x0E, 0x4B, 0x93, 0xF8, 0x2A, 0x30, 0x4B, 0xB1, 0x0A, 0x4A, + 0x9D, 0xF8, 0x0F, 0x10, 0x13, 0x68, 0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x43, + 0x13, 0x60, 0x04, 0xB0, 0x10, 0xBD, 0x13, 0x68, 0x91, 0xF8, 0xBB, 0x10, + 0x23, 0xF0, 0xFF, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x04, 0xB0, 0x10, 0xBD, + 0x88, 0x1A, 0x17, 0x00, 0xA0, 0x00, 0x32, 0x40, 0x2C, 0x19, 0x17, 0x00, + 0xBC, 0x34, 0x17, 0x00, 0x30, 0xB5, 0x90, 0xF9, 0x65, 0x50, 0x7F, 0x2D, + 0x83, 0xB0, 0x0E, 0xD0, 0x90, 0xF9, 0x66, 0x30, 0x0B, 0x48, 0x9D, 0x42, + 0xA8, 0xBF, 0x1D, 0x46, 0x8D, 0xF8, 0x07, 0x50, 0xD0, 0xF8, 0x20, 0x32, + 0x0D, 0xF1, 0x07, 0x00, 0x98, 0x47, 0x03, 0xB0, 0x30, 0xBD, 0x0C, 0x46, + 0x05, 0x49, 0x13, 0x46, 0x0A, 0x68, 0x12, 0x0A, 0x22, 0x70, 0x0A, 0x68, + 0x1A, 0x70, 0x03, 0xB0, 0x30, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0xA0, 0x00, 0x32, 0x40, 0x91, 0xF9, 0x00, 0x30, 0x7F, 0x2B, 0x40, 0xD0, + 0xF0, 0xB5, 0x20, 0x4E, 0x90, 0xF9, 0x65, 0x70, 0xD6, 0xF8, 0x20, 0x32, + 0x85, 0xB0, 0x0C, 0x46, 0x05, 0x46, 0x11, 0x46, 0x20, 0x46, 0x0D, 0xF1, + 0x0F, 0x02, 0x01, 0x91, 0x98, 0x47, 0x94, 0xF9, 0x00, 0x30, 0x95, 0xF9, + 0x66, 0x20, 0x85, 0xF8, 0x65, 0x30, 0x93, 0x42, 0x20, 0xDC, 0x94, 0xF9, + 0x00, 0x30, 0xBB, 0x42, 0x1A, 0xD0, 0xD5, 0xF8, 0xE4, 0x30, 0x43, 0xB1, + 0x93, 0xF8, 0x56, 0x21, 0x42, 0xF0, 0x10, 0x02, 0x83, 0xF8, 0x56, 0x21, + 0x1B, 0x68, 0x00, 0x2B, 0xF6, 0xD1, 0x28, 0x6C, 0x60, 0xB1, 0xD6, 0xF8, + 0xB4, 0x30, 0x98, 0x47, 0x28, 0x46, 0xFC, 0xF7, 0x5D, 0xFC, 0x28, 0xB1, + 0x2A, 0x6C, 0xD6, 0xF8, 0x3C, 0x33, 0x92, 0xF9, 0x0C, 0x00, 0x98, 0x47, + 0x05, 0xB0, 0xF0, 0xBD, 0x22, 0x70, 0x01, 0x99, 0xD6, 0xF8, 0x20, 0x32, + 0x0D, 0xF1, 0x0F, 0x02, 0x20, 0x46, 0x98, 0x47, 0xD5, 0xE7, 0x70, 0x47, + 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x15, 0x4B, 0x82, 0xB0, 0x0C, 0x46, + 0xD3, 0xF8, 0x38, 0x33, 0x0D, 0xF1, 0x07, 0x02, 0x0D, 0xF1, 0x06, 0x01, + 0x98, 0x47, 0xE2, 0x6C, 0x10, 0x4B, 0x94, 0x6B, 0x93, 0xF8, 0xBD, 0x30, + 0x61, 0x69, 0xC1, 0xF3, 0xC2, 0x20, 0xC9, 0xB2, 0x6B, 0xB9, 0x01, 0xF0, + 0x7C, 0x01, 0x50, 0xEA, 0x01, 0x03, 0x0C, 0xBF, 0x9D, 0xF8, 0x06, 0x30, + 0x9D, 0xF8, 0x07, 0x30, 0x43, 0xEA, 0x03, 0x23, 0x63, 0x62, 0x02, 0xB0, + 0x10, 0xBD, 0x01, 0xF0, 0x7F, 0x01, 0xDF, 0xF7, 0xB1, 0xFA, 0x40, 0xEA, + 0x00, 0x20, 0x60, 0x62, 0x02, 0xB0, 0x10, 0xBD, 0x88, 0x1A, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x00, 0x29, 0x11, 0xDD, 0x10, 0xB4, 0x01, 0x39, + 0x00, 0x23, 0x01, 0x24, 0x10, 0xF0, 0x01, 0x0F, 0x1C, 0xBF, 0x04, 0xFA, + 0x01, 0xF2, 0x13, 0x43, 0x01, 0x39, 0x4F, 0xEA, 0x50, 0x00, 0xF5, 0xD2, + 0x18, 0x46, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x23, 0x18, 0x46, + 0x70, 0x47, 0x00, 0xBF, 0x0B, 0x1F, 0x03, 0x44, 0x01, 0x44, 0x03, 0xF8, + 0x01, 0x2B, 0x8B, 0x42, 0x4F, 0xEA, 0x12, 0x22, 0xF9, 0xD1, 0x70, 0x47, + 0x2D, 0xE9, 0xF0, 0x4F, 0x89, 0xB0, 0x8D, 0x88, 0x0C, 0x7D, 0x00, 0x95, + 0x0D, 0x68, 0x01, 0x95, 0x03, 0x93, 0x1C, 0xB1, 0x0B, 0x69, 0xAB, 0x42, + 0x00, 0xF0, 0xAC, 0x81, 0x01, 0x9B, 0xD9, 0x4F, 0x9C, 0xB2, 0x4F, 0xEA, + 0x13, 0x4C, 0xCC, 0x80, 0xA1, 0xF8, 0x08, 0xC0, 0x53, 0x78, 0x16, 0x78, + 0x46, 0xEA, 0x03, 0x26, 0x4E, 0x81, 0xD3, 0x78, 0x95, 0x78, 0x45, 0xEA, + 0x03, 0x25, 0x8D, 0x81, 0x92, 0xF8, 0x05, 0xE0, 0x13, 0x79, 0x43, 0xEA, + 0x0E, 0x23, 0xCB, 0x81, 0x4F, 0xF0, 0x00, 0x09, 0x09, 0xF0, 0x01, 0x0A, + 0x00, 0xEB, 0x4A, 0x02, 0x10, 0xF8, 0x1A, 0x80, 0x92, 0xF8, 0x01, 0xE0, + 0x02, 0x92, 0x48, 0xEA, 0x0E, 0x22, 0x5A, 0x40, 0x4F, 0xEA, 0x12, 0x2E, + 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, 0x12, 0x80, 0x4F, 0xEA, + 0x1E, 0x22, 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, 0x08, 0x02, 0x4F, 0xEA, + 0x4A, 0x08, 0x14, 0x44, 0x08, 0xF1, 0x04, 0x02, 0xA4, 0xB2, 0x00, 0xEB, + 0x02, 0x0E, 0xCC, 0x80, 0x82, 0x5C, 0x9E, 0xF8, 0x01, 0xE0, 0x42, 0xEA, + 0x0E, 0x2E, 0x84, 0xEA, 0x0E, 0x0E, 0xCE, 0xF3, 0x0F, 0x22, 0x5F, 0xFA, + 0x8E, 0xFE, 0x37, 0xF8, 0x12, 0x20, 0x37, 0xF8, 0x1E, 0xB0, 0x4F, 0xEA, + 0x12, 0x2E, 0x4E, 0xEA, 0x02, 0x2E, 0x8E, 0xEA, 0x0B, 0x0B, 0xDC, 0x44, + 0x08, 0xF1, 0x08, 0x0E, 0x1F, 0xFA, 0x8C, 0xFC, 0x00, 0xEB, 0x0E, 0x02, + 0xA1, 0xF8, 0x08, 0xC0, 0x10, 0xF8, 0x0E, 0xE0, 0x52, 0x78, 0x4E, 0xEA, + 0x02, 0x22, 0x8C, 0xEA, 0x02, 0x02, 0xC2, 0xF3, 0x0F, 0x2E, 0xD2, 0xB2, + 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, 0x12, 0xB0, 0x4F, 0xEA, 0x1E, 0x22, + 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, 0x0B, 0x0B, 0x08, 0xF1, 0x0C, 0x08, + 0x5E, 0x44, 0x00, 0xEB, 0x08, 0x02, 0xB6, 0xB2, 0x4E, 0x81, 0x92, 0xF8, + 0x01, 0xE0, 0x10, 0xF8, 0x08, 0x20, 0x42, 0xEA, 0x0E, 0x22, 0x72, 0x40, + 0xC2, 0xF3, 0x0F, 0x2E, 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, + 0x12, 0x80, 0x4F, 0xEA, 0x1E, 0x22, 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, + 0x08, 0x02, 0x15, 0x44, 0xAD, 0xB2, 0x02, 0x9A, 0x8D, 0x81, 0x92, 0xF8, + 0x01, 0xE0, 0x10, 0xF8, 0x1A, 0x20, 0x42, 0xEA, 0x0E, 0x22, 0x6A, 0x40, + 0xC2, 0xF3, 0x0F, 0x2E, 0xD2, 0xB2, 0x37, 0xF8, 0x1E, 0xE0, 0x37, 0xF8, + 0x12, 0x80, 0x4F, 0xEA, 0x1E, 0x22, 0x42, 0xEA, 0x0E, 0x22, 0x82, 0xEA, + 0x08, 0x02, 0x19, 0xFA, 0x82, 0xF2, 0x13, 0x44, 0x09, 0xF1, 0x01, 0x09, + 0x9B, 0xB2, 0xB9, 0xF1, 0x08, 0x0F, 0xCB, 0x81, 0x7F, 0xF4, 0x6E, 0xAF, + 0x01, 0x9A, 0x0A, 0x61, 0x4F, 0xF0, 0x01, 0x0E, 0x81, 0xF8, 0x14, 0xE0, + 0x00, 0x9A, 0x90, 0xF8, 0x01, 0x80, 0x90, 0xF8, 0x00, 0xE0, 0x90, 0xF8, + 0x03, 0x90, 0x1A, 0x44, 0x4E, 0xEA, 0x08, 0x2E, 0x92, 0xB2, 0x82, 0xEA, + 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x28, 0x5F, 0xFA, 0x8E, 0xFE, 0x37, 0xF8, + 0x18, 0xA0, 0x37, 0xF8, 0x1E, 0x80, 0x4F, 0xEA, 0x1A, 0x2E, 0x4E, 0xEA, + 0x0A, 0x2A, 0x8A, 0xEA, 0x08, 0x0A, 0x90, 0xF8, 0x02, 0x80, 0x90, 0xF8, + 0x05, 0xE0, 0x54, 0x44, 0xA4, 0xB2, 0x48, 0xEA, 0x09, 0x28, 0x84, 0xEA, + 0x08, 0x08, 0x4F, 0xEA, 0x18, 0x2A, 0x5F, 0xFA, 0x88, 0xF8, 0x37, 0xF8, + 0x1A, 0xA0, 0x37, 0xF8, 0x18, 0x90, 0x4F, 0xEA, 0x1A, 0x28, 0x48, 0xEA, + 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x04, 0x90, 0x90, 0xF8, + 0x07, 0x80, 0xD4, 0x44, 0x1F, 0xFA, 0x8C, 0xFC, 0x49, 0xEA, 0x0E, 0x2E, + 0x8C, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x2A, 0x5F, 0xFA, 0x8E, 0xFE, + 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x1E, 0x90, 0x4F, 0xEA, 0x1A, 0x2E, + 0x4E, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x06, 0x90, + 0x90, 0xF8, 0x09, 0xE0, 0x56, 0x44, 0xB6, 0xB2, 0x49, 0xEA, 0x08, 0x28, + 0x86, 0xEA, 0x08, 0x08, 0x4F, 0xEA, 0x18, 0x2A, 0x5F, 0xFA, 0x88, 0xF8, + 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x18, 0x90, 0x4F, 0xEA, 0x1A, 0x28, + 0x48, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x08, 0x90, + 0x90, 0xF8, 0x0B, 0x80, 0x55, 0x44, 0xAD, 0xB2, 0x49, 0xEA, 0x0E, 0x2E, + 0x85, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x2A, 0x5F, 0xFA, 0x8E, 0xFE, + 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x1E, 0x90, 0x4F, 0xEA, 0x1A, 0x2E, + 0x4E, 0xEA, 0x0A, 0x2A, 0x8A, 0xEA, 0x09, 0x0A, 0x90, 0xF8, 0x0A, 0xE0, + 0x90, 0xF8, 0x0D, 0x90, 0x53, 0x44, 0x9B, 0xB2, 0x4E, 0xEA, 0x08, 0x2E, + 0x83, 0xEA, 0x0E, 0x0E, 0x4F, 0xEA, 0x1E, 0x2A, 0x5F, 0xFA, 0x8E, 0xFE, + 0x37, 0xF8, 0x1A, 0xA0, 0x37, 0xF8, 0x1E, 0x80, 0x07, 0x7B, 0x4F, 0xEA, + 0x1A, 0x2E, 0x4E, 0xEA, 0x0A, 0x2E, 0x8E, 0xEA, 0x08, 0x08, 0x42, 0x44, + 0x92, 0xB2, 0x47, 0xEA, 0x09, 0x29, 0x82, 0xEA, 0x09, 0x07, 0xFF, 0x03, + 0x82, 0xEA, 0x09, 0x09, 0x90, 0xF8, 0x0F, 0xE0, 0x47, 0xEA, 0x59, 0x09, + 0x87, 0x7B, 0x4C, 0x44, 0xA4, 0xB2, 0x47, 0xEA, 0x0E, 0x27, 0x84, 0xEA, + 0x07, 0x0E, 0x4F, 0xEA, 0xCE, 0x3E, 0x67, 0x40, 0x4E, 0xEA, 0x57, 0x07, + 0x67, 0x44, 0xBF, 0xB2, 0x4F, 0xEA, 0xC7, 0x3C, 0x4C, 0xEA, 0x57, 0x0C, + 0x66, 0x44, 0xB6, 0xB2, 0x4F, 0xEA, 0xC6, 0x3C, 0x4C, 0xEA, 0x56, 0x0C, + 0x65, 0x44, 0xAD, 0xB2, 0x4F, 0xEA, 0xC5, 0x3C, 0x4C, 0xEA, 0x55, 0x0C, + 0x63, 0x44, 0x1F, 0xFA, 0x83, 0xF9, 0x00, 0x9B, 0xAD, 0xF8, 0x18, 0x60, + 0x4F, 0xEA, 0x13, 0x2E, 0x0E, 0xF0, 0x7F, 0x0C, 0xAD, 0xF8, 0x16, 0x70, + 0xAD, 0xF8, 0x1A, 0x50, 0x03, 0x9E, 0x00, 0x9D, 0xB5, 0x70, 0x4C, 0xF0, + 0x20, 0x0C, 0x86, 0xF8, 0x00, 0xE0, 0x86, 0xF8, 0x01, 0xC0, 0x4F, 0xEA, + 0xC9, 0x38, 0x45, 0x78, 0x03, 0x78, 0xAD, 0xF8, 0x1C, 0x90, 0x48, 0xEA, + 0x59, 0x08, 0x42, 0x44, 0x92, 0xB2, 0x43, 0xEA, 0x05, 0x23, 0xAD, 0xF8, + 0x1E, 0x20, 0x5A, 0x40, 0x52, 0x08, 0xF2, 0x70, 0x33, 0x46, 0x06, 0xF1, + 0x0C, 0x00, 0x05, 0xAA, 0x01, 0xE0, 0x32, 0xF8, 0x02, 0x4F, 0x1C, 0x71, + 0x25, 0x0A, 0x5D, 0x71, 0x02, 0x33, 0x98, 0x42, 0xF7, 0xD1, 0x00, 0x23, + 0x0B, 0x75, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xCC, 0x88, 0xB1, 0xF8, + 0x08, 0xC0, 0x4E, 0x89, 0x8D, 0x89, 0xCB, 0x89, 0x00, 0x4F, 0xFD, 0xE6, + 0x50, 0xA9, 0x15, 0x00, 0xF0, 0xB4, 0x13, 0x4F, 0x01, 0x22, 0x3C, 0x1F, + 0x00, 0x23, 0xC7, 0xF8, 0x00, 0x24, 0xC7, 0xF8, 0x04, 0x34, 0x22, 0x46, + 0x42, 0xF8, 0x04, 0x3F, 0x01, 0x33, 0xB3, 0xF5, 0x80, 0x7F, 0xF9, 0xD1, + 0x00, 0x23, 0xDF, 0xF8, 0x30, 0xC0, 0x1D, 0x46, 0xC2, 0x5C, 0x54, 0xF8, + 0x04, 0x6F, 0x2A, 0x44, 0x32, 0x44, 0xD5, 0xB2, 0x01, 0x33, 0x57, 0xF8, + 0x25, 0x20, 0x22, 0x60, 0x8B, 0x42, 0xA8, 0xBF, 0x00, 0x23, 0xA4, 0x45, + 0x47, 0xF8, 0x25, 0x60, 0xEE, 0xD1, 0x00, 0x20, 0xF0, 0xBC, 0x70, 0x47, + 0x18, 0x2C, 0x17, 0x00, 0x14, 0x30, 0x17, 0x00, 0x71, 0xB3, 0x18, 0x4B, + 0xF0, 0xB5, 0xD3, 0xF8, 0x00, 0x54, 0xD3, 0xF8, 0x04, 0x24, 0x53, 0xF8, + 0x25, 0x60, 0x32, 0x44, 0x01, 0x39, 0xD2, 0xB2, 0x89, 0xB2, 0x01, 0x31, + 0x53, 0xF8, 0x22, 0x40, 0x01, 0x44, 0x6F, 0x1C, 0x43, 0xF8, 0x22, 0x60, + 0x43, 0xF8, 0x25, 0x40, 0xFD, 0xB2, 0x34, 0x44, 0xE4, 0xB2, 0x53, 0xF8, + 0x25, 0x60, 0x53, 0xF8, 0x24, 0x70, 0x10, 0xF8, 0x01, 0x4B, 0x02, 0xEB, + 0x06, 0x0C, 0x96, 0x46, 0x5F, 0xFA, 0x8C, 0xF2, 0x67, 0x40, 0x88, 0x42, + 0x53, 0xF8, 0x22, 0x40, 0x00, 0xF8, 0x01, 0x7C, 0xE5, 0xD1, 0xC3, 0xF8, + 0x00, 0x54, 0xC3, 0xF8, 0x04, 0xE4, 0xF0, 0xBD, 0x70, 0x47, 0x00, 0xBF, + 0x18, 0x2C, 0x17, 0x00, 0xFF, 0xF7, 0xCA, 0xBF, 0x83, 0x68, 0x8A, 0x68, + 0x03, 0x48, 0x9B, 0x1A, 0x83, 0x42, 0x94, 0xBF, 0x00, 0x20, 0x01, 0x20, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0xA3, 0xE1, 0x11, 0x83, 0x88, 0xB3, 0xEB, + 0x11, 0x4F, 0x01, 0xD0, 0x00, 0x20, 0x70, 0x47, 0xC0, 0x88, 0x89, 0xB2, + 0x40, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x00, 0xBF, + 0x2D, 0xE9, 0xF8, 0x4F, 0xDF, 0xF8, 0x4C, 0xB1, 0xDB, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x07, 0x46, 0x89, 0x46, 0x15, 0x46, + 0x5E, 0xDB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x3F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0x2C, 0x81, 0xDF, 0xF8, + 0x2C, 0xA1, 0xD8, 0xF8, 0x00, 0x30, 0xDA, 0xF8, 0x14, 0x60, 0x01, 0x33, + 0xC8, 0xF8, 0x00, 0x30, 0x1E, 0xB1, 0xB3, 0x88, 0xBB, 0x42, 0x40, 0xD0, + 0x00, 0x26, 0x37, 0x49, 0x37, 0x48, 0x49, 0xEA, 0x07, 0x42, 0x00, 0xF0, + 0xF5, 0xF9, 0x04, 0x46, 0x00, 0x28, 0x47, 0xD0, 0x34, 0x4B, 0x35, 0x4A, + 0x1B, 0x69, 0x32, 0x48, 0x1D, 0x44, 0xA5, 0x60, 0x21, 0x46, 0x00, 0xF0, + 0x87, 0xFE, 0x9E, 0xB9, 0xDA, 0xF8, 0x14, 0x30, 0xA3, 0x42, 0x13, 0xD0, + 0xD8, 0xF8, 0x00, 0x30, 0x2B, 0xB1, 0x29, 0x4A, 0x01, 0x3B, 0x12, 0x68, + 0xC8, 0xF8, 0x00, 0x30, 0x8B, 0xB1, 0x29, 0x4B, 0x1A, 0x69, 0xAD, 0x1A, + 0x00, 0x2D, 0x14, 0xDB, 0xBD, 0xE8, 0xF8, 0x8F, 0xDA, 0xF8, 0x14, 0x40, + 0x00, 0x2C, 0xEB, 0xD0, 0x25, 0x4B, 0xA1, 0x68, 0xD3, 0xF8, 0xE0, 0x31, + 0x24, 0x48, 0x98, 0x47, 0xE4, 0xE7, 0x00, 0x2A, 0xEB, 0xD0, 0x62, 0xB6, + 0x1E, 0x4B, 0x1A, 0x69, 0xAD, 0x1A, 0x00, 0x2D, 0xEA, 0xDA, 0xBD, 0xE8, + 0xF8, 0x4F, 0x4F, 0xF0, 0x00, 0x50, 0x00, 0xF0, 0x29, 0xBD, 0xF6, 0x88, + 0xA6, 0xEB, 0x09, 0x06, 0xB6, 0xFA, 0x86, 0xF6, 0x76, 0x09, 0xB8, 0xE7, + 0xB2, 0xB1, 0x19, 0x4B, 0x9A, 0x42, 0x9C, 0xD9, 0x18, 0x49, 0x19, 0x48, + 0x94, 0x22, 0x02, 0xF0, 0x0F, 0xFA, 0x96, 0xE7, 0x0C, 0x20, 0x00, 0xF0, + 0xFB, 0xF9, 0xDB, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x04, 0x46, 0x09, 0xDB, 0xA7, 0x80, 0xA4, 0xF8, 0x06, 0x90, 0xA9, 0xE7, + 0x0E, 0x49, 0x10, 0x48, 0x93, 0x22, 0x02, 0xF0, 0xFB, 0xF9, 0x82, 0xE7, + 0x00, 0x28, 0xF3, 0xD1, 0x0A, 0x49, 0x0D, 0x48, 0xA5, 0x22, 0x02, 0xF0, + 0xF3, 0xF9, 0xED, 0xE7, 0x38, 0x61, 0x17, 0x00, 0x59, 0x26, 0x14, 0x00, + 0x94, 0xB6, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x41, 0x26, 0x14, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xA0, 0xB6, 0x17, 0x00, 0xFF, 0xA2, 0xE1, 0x11, + 0x70, 0x79, 0x15, 0x00, 0x5C, 0xAB, 0x15, 0x00, 0x50, 0xAB, 0x15, 0x00, + 0x78, 0xAB, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x80, 0xB6, 0x17, 0x00, 0xF8, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x25, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x25, 0x4D, + 0x25, 0x4E, 0x2B, 0x68, 0x74, 0x69, 0x01, 0x33, 0x2B, 0x60, 0x74, 0xB1, + 0xA3, 0x88, 0x83, 0x42, 0x02, 0xD1, 0xE3, 0x88, 0x8B, 0x42, 0x11, 0xD0, + 0x41, 0xEA, 0x00, 0x42, 0x1F, 0x49, 0x20, 0x48, 0x00, 0xF0, 0x54, 0xF9, + 0x04, 0x46, 0x38, 0xBB, 0x2B, 0x68, 0x33, 0xB1, 0x18, 0x4A, 0x01, 0x3B, + 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xF8, 0xBD, + 0x06, 0xF1, 0x14, 0x00, 0x00, 0xF0, 0x98, 0xFD, 0x77, 0x69, 0x17, 0x4B, + 0xDF, 0xB1, 0xD3, 0xF8, 0xE0, 0x31, 0xB9, 0x68, 0x06, 0xF1, 0x20, 0x00, + 0x98, 0x47, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x0A, 0xDA, 0x12, 0x4A, 0xBB, 0x68, 0x12, 0x69, 0x9B, 0x1A, 0x00, 0x2B, + 0x04, 0xDA, 0x10, 0x49, 0x10, 0x48, 0xE7, 0x22, 0x02, 0xF0, 0x8E, 0xF9, + 0x20, 0x46, 0x00, 0xF0, 0xED, 0xF9, 0x2B, 0x68, 0xD3, 0xE7, 0xD3, 0xF8, + 0xD8, 0x31, 0x06, 0xF1, 0x20, 0x00, 0x98, 0x47, 0xF4, 0xE7, 0x00, 0xBF, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, + 0x59, 0x26, 0x14, 0x00, 0x94, 0xB6, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, + 0x80, 0xAB, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x28, 0x4D, 0x29, 0x4F, + 0xDF, 0xF8, 0xB0, 0x80, 0x28, 0x4E, 0xDF, 0xF8, 0xB0, 0x90, 0x21, 0xE0, + 0xA1, 0x68, 0x33, 0x69, 0xCB, 0x1A, 0x32, 0x2B, 0x07, 0xD4, 0xD9, 0xF8, + 0xE0, 0x31, 0x98, 0x47, 0xA3, 0x68, 0x32, 0x69, 0x9B, 0x1A, 0x00, 0x2B, + 0x30, 0xDA, 0x21, 0x48, 0x00, 0xF0, 0x44, 0xFD, 0x2B, 0x68, 0x04, 0x46, + 0x5A, 0x1E, 0x2B, 0xB1, 0xD8, 0xF8, 0x00, 0x30, 0x2A, 0x60, 0x0A, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0xA0, 0x88, 0xE1, 0x88, 0xFF, 0x22, 0x00, 0xF0, + 0xCB, 0xF8, 0x20, 0x46, 0x00, 0xF0, 0xA4, 0xF9, 0x4F, 0xF0, 0x00, 0x50, + 0x00, 0xF0, 0x6C, 0xFC, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x01, 0x23, 0xC8, 0xF8, 0x00, 0x30, 0x2A, 0x68, 0x7C, 0x69, + 0x10, 0x48, 0x53, 0x1C, 0x2B, 0x60, 0x00, 0x2C, 0xCA, 0xD1, 0x2B, 0xB1, + 0x0E, 0x4B, 0x2A, 0x60, 0x1B, 0x68, 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, + 0xBD, 0xE8, 0xF8, 0x83, 0x2B, 0x68, 0x00, 0x2B, 0xFA, 0xD0, 0x09, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0xF4, 0xD1, 0x00, 0x2A, + 0xF2, 0xD0, 0xF0, 0xE7, 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x94, 0xB6, 0x17, 0x00, 0xA0, 0xB6, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0E, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x0E, 0x4D, 0x0E, 0x4C, 0x2B, 0x68, 0x4F, 0xF0, 0x00, 0x50, + 0x01, 0x33, 0x2B, 0x60, 0x00, 0xF0, 0x28, 0xFC, 0x01, 0xE0, 0x00, 0xF0, + 0x59, 0xF9, 0x20, 0x46, 0x00, 0xF0, 0xE4, 0xFC, 0x00, 0x28, 0xF8, 0xD1, + 0x2B, 0x68, 0x33, 0xB1, 0x03, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x38, 0xBD, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x94, 0xB6, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x80, 0x46, 0x03, 0xF1, 0x0C, 0x00, 0x1D, 0x46, 0x0F, 0x46, 0x16, 0x46, + 0x00, 0xF0, 0xC8, 0xF8, 0x0F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x04, 0x46, 0x0F, 0xDB, 0x00, 0x21, 0xA4, 0xF8, 0x04, 0x80, + 0x04, 0xF1, 0x0C, 0x08, 0xE7, 0x80, 0x26, 0x81, 0x65, 0x81, 0x2A, 0x46, + 0x21, 0x60, 0x40, 0x46, 0xDD, 0xF7, 0xDC, 0xFB, 0x40, 0x46, 0xBD, 0xE8, + 0xF0, 0x81, 0x00, 0x28, 0xED, 0xD1, 0x04, 0x49, 0x04, 0x48, 0x52, 0x22, + 0x02, 0xF0, 0xBA, 0xF8, 0xE7, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xA8, 0xAB, 0x15, 0x00, 0x16, 0x4B, 0x1A, 0x68, + 0x30, 0xF8, 0x06, 0x3C, 0xB2, 0xF9, 0x00, 0x10, 0x00, 0x29, 0x10, 0xB5, + 0xDA, 0xB2, 0x04, 0x46, 0x0C, 0xDB, 0x0B, 0x2A, 0x13, 0xD8, 0x11, 0x48, + 0xA4, 0xF1, 0x0C, 0x01, 0x00, 0xF0, 0x4C, 0xFC, 0xBD, 0xE8, 0x10, 0x40, + 0x4F, 0xF0, 0x00, 0x60, 0x00, 0xF0, 0xA4, 0xBB, 0x0D, 0x2A, 0xF0, 0xD9, + 0x0B, 0x49, 0x0C, 0x48, 0xBB, 0x22, 0x02, 0xF0, 0x93, 0xF8, 0x34, 0xF8, + 0x06, 0x3C, 0x34, 0xF8, 0x04, 0x2C, 0x34, 0xF8, 0x08, 0x1C, 0x08, 0x48, + 0x01, 0xF0, 0x10, 0xFE, 0xA4, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, 0x10, 0x40, + 0x02, 0xF0, 0xDE, 0xB8, 0x38, 0x36, 0x17, 0x00, 0x84, 0xB6, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, 0xB4, 0xAB, 0x15, 0x00, + 0x08, 0xB5, 0x00, 0x23, 0xFF, 0xF7, 0x94, 0xFF, 0xBD, 0xE8, 0x08, 0x40, + 0xFF, 0xF7, 0xC0, 0xBF, 0x10, 0xB4, 0x5D, 0xF8, 0x04, 0x4B, 0x20, 0xF8, + 0x08, 0x1C, 0x20, 0xF8, 0x06, 0x2C, 0x20, 0xF8, 0x04, 0x3C, 0xFF, 0xF7, + 0xB5, 0xBF, 0x00, 0xBF, 0x00, 0xF0, 0xC6, 0xB8, 0x2D, 0xE9, 0xF0, 0x41, + 0x04, 0x68, 0xD4, 0xB1, 0x07, 0x46, 0x0D, 0x46, 0x16, 0x46, 0x4F, 0xF0, + 0x00, 0x08, 0x02, 0xE0, 0xA0, 0x46, 0x93, 0xB1, 0x1C, 0x46, 0x31, 0x46, + 0x20, 0x46, 0xA8, 0x47, 0x23, 0x68, 0x00, 0x28, 0xF6, 0xD0, 0xB8, 0xF1, + 0x00, 0x0F, 0x0C, 0xD0, 0xC8, 0xF8, 0x00, 0x30, 0x23, 0x68, 0x5B, 0xB1, + 0x00, 0x23, 0x23, 0x60, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x24, + 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x3B, 0x60, 0x00, 0x2B, 0xF3, 0xD1, + 0xC7, 0xF8, 0x04, 0x80, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, + 0x0F, 0x48, 0x30, 0xB4, 0x20, 0xF0, 0x03, 0x00, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x0C, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x0B, 0x4A, 0x0C, 0x4B, 0x11, 0x68, 0x23, 0xF0, 0x03, 0x03, 0x4C, 0x1C, + 0x1B, 0x1A, 0x00, 0x25, 0x14, 0x60, 0xC0, 0xE9, 0x00, 0x53, 0x2C, 0xB1, + 0x04, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, + 0x30, 0xBC, 0x70, 0x47, 0x03, 0xA0, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0xF8, 0xB5, 0x31, 0x4F, + 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x03, 0x30, 0x20, 0xF0, 0x03, 0x04, + 0x00, 0x2B, 0x04, 0xF1, 0x04, 0x06, 0x48, 0xDB, 0x2C, 0x4B, 0xDB, 0x69, + 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x2A, 0x4A, + 0x01, 0x21, 0x11, 0x60, 0x29, 0x4D, 0x2A, 0x68, 0x02, 0xF1, 0x01, 0x0C, + 0xC5, 0xF8, 0x00, 0xC0, 0x00, 0x2B, 0x3E, 0xD0, 0x04, 0xF1, 0x0C, 0x00, + 0x00, 0x21, 0x05, 0xE0, 0x4C, 0x68, 0xA2, 0x42, 0x38, 0xBF, 0x19, 0x46, + 0x1B, 0x68, 0x43, 0xB1, 0x5A, 0x68, 0x82, 0x42, 0xFA, 0xD3, 0x00, 0x29, + 0xF4, 0xD1, 0x19, 0x46, 0x1B, 0x68, 0x00, 0x2B, 0xF6, 0xD1, 0x3B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x12, 0xDB, 0x0A, 0x46, 0x4B, 0x68, + 0x9B, 0x1B, 0x98, 0x18, 0x4B, 0x60, 0x04, 0x30, 0x9E, 0x50, 0xBC, 0xF1, + 0x00, 0x0F, 0x07, 0xD0, 0x13, 0x4A, 0x0C, 0xF1, 0xFF, 0x33, 0x12, 0x68, + 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xF8, 0xBD, 0x00, 0x29, + 0xEA, 0xD1, 0x10, 0x49, 0x10, 0x48, 0x97, 0x22, 0x01, 0xF0, 0xC0, 0xFF, + 0x00, 0x22, 0xD5, 0xF8, 0x00, 0xC0, 0x11, 0x46, 0xE1, 0xE7, 0x07, 0x2E, + 0xB4, 0xD8, 0x0A, 0x49, 0x0B, 0x48, 0x7B, 0x22, 0x01, 0xF0, 0xB4, 0xFF, + 0xAE, 0xE7, 0x3A, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xE8, 0xDB, + 0x5B, 0x68, 0xFF, 0xDE, 0x38, 0x36, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x08, 0xAC, 0x15, 0x00, 0xE0, 0xAB, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0xDF, 0xF8, 0xF4, 0x90, 0x36, 0x4A, 0xD9, 0xF8, 0x00, 0x30, 0xD4, 0x69, + 0xB3, 0xF9, 0x00, 0x30, 0x50, 0xF8, 0x04, 0x8C, 0x00, 0x2B, 0x06, 0x46, + 0xA0, 0xF1, 0x04, 0x05, 0x2F, 0xDB, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x2E, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2E, 0x48, + 0xD0, 0xF8, 0x00, 0xC0, 0x0C, 0xF1, 0x01, 0x07, 0x07, 0x60, 0x00, 0x2C, + 0x47, 0xD0, 0x63, 0x68, 0x1A, 0x19, 0xAA, 0x42, 0x23, 0xD0, 0xAC, 0x42, + 0x06, 0xD9, 0x37, 0xE0, 0x63, 0x68, 0x1A, 0x19, 0xAA, 0x42, 0x1C, 0xD0, + 0xAC, 0x42, 0x26, 0xD8, 0x21, 0x46, 0x24, 0x68, 0x00, 0x2C, 0xF5, 0xD1, + 0x0D, 0x60, 0x46, 0xE9, 0x01, 0x48, 0x47, 0xB1, 0x1E, 0x4B, 0xC0, 0xF8, + 0x00, 0xC0, 0x1B, 0x68, 0xBC, 0xF1, 0x00, 0x0F, 0x01, 0xD1, 0x03, 0xB1, + 0x62, 0xB6, 0xBD, 0xE8, 0xF8, 0x83, 0xA0, 0x42, 0xCD, 0xD8, 0x1A, 0x49, + 0x1A, 0x48, 0xC7, 0x22, 0x01, 0xF0, 0x56, 0xFF, 0xC7, 0xE7, 0x43, 0x44, + 0x22, 0x68, 0x63, 0x60, 0xE1, 0x18, 0x8A, 0x42, 0xE5, 0xD1, 0xD2, 0xE9, + 0x00, 0x21, 0x0B, 0x44, 0x22, 0x60, 0x63, 0x60, 0xDF, 0xE7, 0x05, 0xEB, + 0x08, 0x03, 0x9C, 0x42, 0x0D, 0x60, 0xD8, 0xD1, 0x23, 0x68, 0x46, 0xF8, + 0x04, 0x3C, 0x52, 0x1B, 0x32, 0x60, 0xD4, 0xE7, 0xD9, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0xDB, 0x00, 0x23, 0x1D, 0x60, + 0xFF, 0xDE, 0x25, 0x60, 0xFF, 0xDE, 0x06, 0x49, 0x07, 0x48, 0xE2, 0x22, + 0x01, 0xF0, 0x2E, 0xFF, 0xF4, 0xE7, 0x00, 0xBF, 0x80, 0xB6, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x18, 0xAC, 0x15, 0x00, 0x3C, 0xAC, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0xC0, 0x88, 0x40, 0x1A, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, + 0x2A, 0xB3, 0xF8, 0xB5, 0x53, 0x1E, 0x0F, 0x46, 0x0A, 0x68, 0x01, 0xE0, + 0x59, 0x1C, 0x11, 0xD0, 0x32, 0xF8, 0x33, 0x40, 0x84, 0x42, 0x4F, 0xEA, + 0xC3, 0x06, 0x02, 0xEB, 0xC3, 0x05, 0x03, 0xF1, 0xFF, 0x33, 0xF3, 0xD1, + 0x0B, 0x4B, 0x68, 0x68, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x02, 0xDB, 0xF8, 0xBD, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0x28, 0xFA, 0xD1, + 0x06, 0x49, 0x07, 0x48, 0xF4, 0x22, 0x01, 0xF0, 0xF5, 0xFE, 0x3B, 0x68, + 0x1E, 0x44, 0x70, 0x68, 0xF8, 0xBD, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x50, 0xAC, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0x44, 0x4F, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x04, 0x46, 0x0D, 0x46, 0x4F, 0xEA, 0x10, 0x29, 0xC6, 0xB2, + 0x3B, 0xDB, 0x40, 0x4B, 0x03, 0xEB, 0x06, 0x16, 0xB3, 0x68, 0x03, 0xEB, + 0x49, 0x09, 0x3E, 0x48, 0x2A, 0x46, 0x21, 0x46, 0x01, 0xF0, 0x56, 0xFC, + 0xB9, 0xF8, 0x00, 0x30, 0xAB, 0x42, 0x01, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, + 0xDF, 0xF8, 0x0C, 0x81, 0x38, 0x4F, 0x39, 0x4E, 0xA9, 0xF8, 0x00, 0x50, + 0x19, 0xE0, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x02, 0xD4, 0x72, 0xB6, + 0x01, 0x23, 0x33, 0x60, 0x34, 0x4D, 0x35, 0x48, 0x2B, 0x68, 0x01, 0x33, + 0x2B, 0x60, 0x00, 0xF0, 0x61, 0xFA, 0x2A, 0x68, 0x53, 0x1E, 0x22, 0xB1, + 0x32, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x4F, 0xF0, + 0x00, 0x60, 0x00, 0xF0, 0xB3, 0xF9, 0x41, 0x46, 0x22, 0x46, 0x38, 0x46, + 0xFF, 0xF7, 0x40, 0xFE, 0x01, 0x46, 0x00, 0x28, 0xDD, 0xD1, 0xBD, 0xE8, + 0xF8, 0x83, 0x0C, 0x2E, 0x23, 0xD8, 0x33, 0xD0, 0x20, 0x4B, 0x03, 0xEB, + 0x06, 0x16, 0xF3, 0x89, 0x4B, 0x45, 0x0B, 0xD9, 0xB3, 0x68, 0x03, 0xEB, + 0x49, 0x09, 0xB9, 0xF1, 0x00, 0x0F, 0xBA, 0xD1, 0x20, 0x49, 0x21, 0x48, + 0xB9, 0x22, 0x01, 0xF0, 0x8B, 0xFE, 0xB4, 0xE7, 0xB4, 0x22, 0x1D, 0x49, + 0x1E, 0x48, 0x01, 0xF0, 0x85, 0xFE, 0x3A, 0x68, 0xB3, 0x68, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0x03, 0xEB, 0x49, 0x09, 0xA7, 0xDA, 0xB9, 0xF1, + 0x00, 0x0F, 0xA4, 0xD1, 0xE8, 0xE7, 0x15, 0x49, 0x17, 0x48, 0xB2, 0x22, + 0x01, 0xF0, 0x74, 0xFE, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x93, 0xDA, 0x0D, 0x2E, 0x04, 0xD0, 0x0F, 0x49, 0x12, 0x48, 0xBB, 0x22, + 0x01, 0xF0, 0x68, 0xFE, 0x0C, 0x49, 0x11, 0x48, 0xB3, 0x22, 0x01, 0xF0, + 0x63, 0xFE, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC1, 0xDB, + 0x81, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x14, 0xAD, 0x15, 0x00, + 0xC8, 0xAC, 0x15, 0x00, 0x8C, 0xB6, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x84, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xB8, 0xAC, 0x15, 0x00, 0x98, 0xAC, 0x15, 0x00, 0x74, 0xAC, 0x15, 0x00, + 0x10, 0x7D, 0x15, 0x00, 0x84, 0xAC, 0x15, 0x00, 0x41, 0x2D, 0x14, 0x00, + 0x70, 0xB5, 0x20, 0x4D, 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x4F, 0xEA, 0x10, 0x26, 0xC4, 0xB2, 0x06, 0xDB, 0x1C, 0x4D, 0x24, 0x01, + 0x25, 0x44, 0xAB, 0x68, 0x33, 0xF8, 0x16, 0x00, 0x70, 0xBD, 0x0C, 0x2C, + 0x11, 0xD8, 0x21, 0xD0, 0x17, 0x4D, 0x05, 0xEB, 0x04, 0x13, 0x24, 0x01, + 0xDB, 0x89, 0xB3, 0x42, 0xF0, 0xD8, 0x25, 0x44, 0x14, 0x49, 0x15, 0x48, + 0xD9, 0x22, 0x01, 0xF0, 0x1F, 0xFE, 0xAB, 0x68, 0x33, 0xF8, 0x16, 0x00, + 0x70, 0xBD, 0x10, 0x49, 0x11, 0x48, 0xD7, 0x22, 0x01, 0xF0, 0x16, 0xFE, + 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xDA, 0xDA, 0x0D, 0x2C, + 0x04, 0xD0, 0x0A, 0x49, 0x0C, 0x48, 0xBB, 0x22, 0x01, 0xF0, 0x0A, 0xFE, + 0x07, 0x49, 0x0B, 0x48, 0xD8, 0x22, 0x01, 0xF0, 0x05, 0xFE, 0x2B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xD3, 0xDB, 0xC8, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x14, 0xAD, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x98, 0xAC, 0x15, 0x00, 0x74, 0xAC, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, + 0x84, 0xAC, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0xEF, 0xF3, 0x10, 0x83, + 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x68, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x67, 0x4D, 0x68, 0x48, 0x2B, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x00, 0xF0, + 0xCF, 0xF9, 0x2B, 0x68, 0x04, 0x46, 0x2B, 0xB1, 0x61, 0x4A, 0x01, 0x3B, + 0x12, 0x68, 0x2B, 0x60, 0x00, 0x2B, 0x54, 0xD0, 0x00, 0x2C, 0x39, 0xD0, + 0x60, 0x4F, 0xB4, 0xF8, 0x06, 0xA0, 0x3B, 0x68, 0xB4, 0xF8, 0x04, 0x80, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x5F, 0xFA, 0x8A, 0xF6, 0x4F, 0xEA, + 0x1A, 0x2A, 0x48, 0xDB, 0xDF, 0xF8, 0x90, 0x91, 0x36, 0x01, 0x59, 0xF8, + 0x06, 0x10, 0xB1, 0x44, 0x00, 0x29, 0x52, 0xD0, 0xD9, 0xF8, 0x08, 0x30, + 0x33, 0xF8, 0x1A, 0x30, 0x01, 0xEB, 0xC3, 0x01, 0x40, 0x46, 0x8A, 0x88, + 0xFF, 0xF7, 0x9C, 0xFE, 0x06, 0x46, 0x00, 0x28, 0x45, 0xD0, 0xE3, 0x88, + 0x22, 0x89, 0xA1, 0x88, 0x4E, 0x48, 0x01, 0xF0, 0x31, 0xFB, 0x23, 0x89, + 0xE2, 0x88, 0xA0, 0x88, 0x04, 0xF1, 0x0C, 0x01, 0xB0, 0x47, 0x01, 0x28, + 0x08, 0xD0, 0x02, 0x28, 0x7B, 0xD0, 0x00, 0x28, 0x50, 0xD0, 0x3B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x79, 0xDB, 0xEF, 0xF3, 0x10, 0x83, + 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x3E, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x41, 0x4A, 0x2B, 0x68, 0x52, 0x68, 0x01, 0x33, 0x2B, 0x60, 0x00, 0x2A, + 0x40, 0xD0, 0x33, 0xB1, 0x38, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0x2A, + 0xA8, 0xD0, 0x62, 0xB6, 0xA6, 0xE7, 0x0C, 0x2E, 0x36, 0xD8, 0x48, 0xD0, + 0xDF, 0xF8, 0xF8, 0x90, 0x09, 0xEB, 0x06, 0x13, 0x36, 0x01, 0xDB, 0x89, + 0x53, 0x45, 0xAE, 0xD8, 0x32, 0x49, 0x33, 0x48, 0x4F, 0xF4, 0x89, 0x72, + 0x01, 0xF0, 0x6C, 0xFD, 0xA7, 0xE7, 0xD9, 0xF8, 0x04, 0x10, 0x69, 0xB1, + 0x8A, 0x88, 0x40, 0x46, 0xFF, 0xF7, 0x4C, 0xFE, 0xE3, 0x88, 0x22, 0x89, + 0xA1, 0x88, 0x06, 0x46, 0x27, 0x48, 0x01, 0xF0, 0xE3, 0xFA, 0x00, 0x2E, + 0xAF, 0xD1, 0x05, 0xE0, 0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x23, 0x48, + 0x01, 0xF0, 0xDA, 0xFA, 0xE3, 0x88, 0x22, 0x89, 0xA1, 0x88, 0x24, 0x48, + 0x01, 0xF0, 0xD4, 0xFA, 0x20, 0x46, 0xFF, 0xF7, 0xE5, 0xFC, 0xAF, 0xE7, + 0x4F, 0xF0, 0x00, 0x60, 0x00, 0xF0, 0x74, 0xF8, 0x2B, 0x68, 0xB8, 0xE7, + 0x1B, 0x49, 0x1E, 0x48, 0x4F, 0xF4, 0x88, 0x72, 0x01, 0xF0, 0x3E, 0xFD, + 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x72, 0xAF, + 0x0D, 0x2E, 0x04, 0xD0, 0x14, 0x49, 0x18, 0x48, 0xBB, 0x22, 0x01, 0xF0, + 0x31, 0xFD, 0x12, 0x49, 0x16, 0x48, 0x40, 0xF2, 0x11, 0x12, 0x01, 0xF0, + 0x2B, 0xFD, 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xAB, 0xDB, + 0x5E, 0xE7, 0x12, 0x48, 0x21, 0x46, 0x00, 0xF0, 0xCD, 0xF8, 0x85, 0xE7, + 0x09, 0x49, 0x10, 0x48, 0x40, 0xF2, 0x6D, 0x12, 0x01, 0xF0, 0x1A, 0xFD, + 0x7E, 0xE7, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x84, 0xB6, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0xB4, 0xAB, 0x15, 0x00, + 0x80, 0xB6, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x98, 0xAC, 0x15, 0x00, + 0xDC, 0xAC, 0x15, 0x00, 0x74, 0xAC, 0x15, 0x00, 0x10, 0x7D, 0x15, 0x00, + 0x84, 0xAC, 0x15, 0x00, 0x8C, 0xB6, 0x17, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x14, 0xAD, 0x15, 0x00, 0x00, 0x20, 0x70, 0x47, 0x02, 0x20, 0x70, 0x47, + 0x30, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x09, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x09, 0x4A, 0x09, 0x4D, 0x11, 0x68, + 0x2B, 0x68, 0x4C, 0x1C, 0x18, 0x43, 0x14, 0x60, 0x28, 0x60, 0x2C, 0xB1, + 0x03, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, 0x62, 0xB6, + 0x30, 0xBC, 0x70, 0x47, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x80, 0xB6, 0x17, 0x00, 0x4F, 0xF0, 0x00, 0x50, 0xFF, 0xF7, 0xDC, 0xBF, + 0x30, 0xB4, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0A, 0x4A, 0x0A, 0x4D, 0x11, 0x68, + 0x2B, 0x68, 0x4C, 0x1C, 0x23, 0xEA, 0x00, 0x00, 0x14, 0x60, 0x28, 0x60, + 0x2C, 0xB1, 0x04, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, 0x03, 0xB1, + 0x62, 0xB6, 0x30, 0xBC, 0x70, 0x47, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x80, 0xB6, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x18, 0x4E, 0x34, 0x68, 0xDC, 0xB1, 0xDF, 0xF8, 0x68, 0x80, 0x17, 0x4D, + 0x17, 0x4F, 0xDF, 0xF8, 0x64, 0xA0, 0xDF, 0xF8, 0x64, 0x90, 0xD8, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xB4, 0xFA, 0x84, 0xF4, + 0x12, 0xDB, 0x55, 0xF8, 0x34, 0x30, 0x05, 0xEB, 0xC4, 0x04, 0x60, 0x68, + 0x98, 0x47, 0x3B, 0x68, 0x34, 0x68, 0xDB, 0x78, 0x1B, 0xB9, 0x00, 0x2C, + 0xEB, 0xD1, 0xBD, 0xE8, 0xF0, 0x87, 0xE9, 0xF7, 0x09, 0xFA, 0x00, 0x2C, + 0xE5, 0xD1, 0xF8, 0xE7, 0x1D, 0x2C, 0x03, 0xDC, 0x55, 0xF8, 0x34, 0x30, + 0x00, 0x2B, 0xE8, 0xD1, 0xDC, 0x22, 0x51, 0x46, 0x48, 0x46, 0x01, 0xF0, + 0x7D, 0xFC, 0xE0, 0xE7, 0x80, 0xB6, 0x17, 0x00, 0x70, 0x21, 0x17, 0x00, + 0x34, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xE4, 0xAD, 0x15, 0x00, 0x08, 0xB5, 0xFF, 0xF7, 0x35, 0xFC, 0x08, 0x4B, + 0x08, 0x49, 0xD8, 0x61, 0x00, 0x22, 0xC3, 0xE9, 0x03, 0x22, 0xC3, 0xE9, + 0x01, 0x22, 0xC3, 0xE9, 0x05, 0x22, 0x59, 0x62, 0x4F, 0xF0, 0xFF, 0x30, + 0xBD, 0xE8, 0x08, 0x40, 0xFF, 0xF7, 0x8A, 0xBF, 0x80, 0xB6, 0x17, 0x00, + 0xD1, 0x31, 0x14, 0x00, 0x00, 0x23, 0xC0, 0xE9, 0x00, 0x33, 0x70, 0x47, + 0x38, 0xB5, 0x0E, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x05, 0x46, 0x0C, 0x46, 0x07, 0xDB, 0x2B, 0x68, 0x6B, 0xB1, 0x6B, 0x68, + 0x1C, 0x60, 0x00, 0x23, 0x6C, 0x60, 0x23, 0x60, 0x38, 0xBD, 0x00, 0x29, + 0xF5, 0xD1, 0x06, 0x49, 0x06, 0x48, 0x48, 0x22, 0x01, 0xF0, 0x3C, 0xFC, + 0xEF, 0xE7, 0x00, 0x23, 0x2C, 0x60, 0x6C, 0x60, 0x23, 0x60, 0x38, 0xBD, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x14, 0xAE, 0x15, 0x00, + 0x38, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x05, 0x46, 0x0C, 0x46, 0x04, 0xDB, 0x2B, 0x68, 0x53, 0xB1, 0x23, 0x60, + 0x2C, 0x60, 0x38, 0xBD, 0x00, 0x29, 0xF8, 0xD1, 0x05, 0x49, 0x06, 0x48, + 0x5F, 0x22, 0x01, 0xF0, 0x1B, 0xFC, 0xF2, 0xE7, 0x6C, 0x60, 0x23, 0x60, + 0x2C, 0x60, 0x38, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x14, 0xAE, 0x15, 0x00, 0x03, 0x68, 0x33, 0xB1, 0x42, 0x68, 0x19, 0x68, + 0x01, 0x60, 0x9A, 0x42, 0x04, 0xBF, 0x00, 0x22, 0x42, 0x60, 0x18, 0x46, + 0x70, 0x47, 0x00, 0xBF, 0x38, 0xB5, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, 0x0C, 0x46, 0x0B, 0xDB, 0x2B, 0x68, + 0x43, 0xB1, 0xA3, 0x42, 0x02, 0xD1, 0x14, 0xE0, 0xA3, 0x42, 0x0C, 0xD0, + 0x1A, 0x46, 0x1B, 0x68, 0x00, 0x2B, 0xF9, 0xD1, 0x38, 0xBD, 0x00, 0x28, + 0xF1, 0xD1, 0x0C, 0x49, 0x0C, 0x48, 0x84, 0x22, 0x01, 0xF0, 0xE8, 0xFB, + 0xEB, 0xE7, 0x6B, 0x68, 0xA3, 0x42, 0x0A, 0xD0, 0x23, 0x68, 0x13, 0x60, + 0x38, 0xBD, 0x6B, 0x68, 0x22, 0x68, 0x2A, 0x60, 0xA3, 0x42, 0xEB, 0xD1, + 0x00, 0x23, 0x6B, 0x60, 0x38, 0xBD, 0x6A, 0x60, 0xF2, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x28, 0xAE, 0x15, 0x00, + 0x03, 0x68, 0x2B, 0xB1, 0x00, 0x20, 0x1B, 0x68, 0x01, 0x30, 0x00, 0x2B, + 0xFB, 0xD1, 0x70, 0x47, 0x18, 0x46, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x41, + 0xD0, 0xE9, 0x00, 0x47, 0x80, 0x46, 0x0D, 0x46, 0x16, 0x46, 0x1F, 0xB1, + 0x39, 0x46, 0x28, 0x46, 0x90, 0x47, 0x88, 0xB1, 0x00, 0x27, 0x24, 0xB9, + 0x1A, 0xE0, 0x23, 0x68, 0x27, 0x46, 0x8B, 0xB1, 0x1C, 0x46, 0x21, 0x46, + 0x28, 0x46, 0xB0, 0x47, 0x00, 0x28, 0xF6, 0xD0, 0x2C, 0x60, 0x67, 0xB9, + 0xC8, 0xF8, 0x00, 0x50, 0xBD, 0xE8, 0xF0, 0x81, 0x3D, 0x60, 0xC8, 0xF8, + 0x04, 0x50, 0x28, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0xC8, 0xF8, 0x04, 0x50, + 0x2B, 0x60, 0x3D, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x23, 0xC8, 0xF8, + 0x04, 0x50, 0x2B, 0x60, 0xEA, 0xE7, 0x00, 0xBF, 0x03, 0x68, 0xB9, 0xB1, + 0xCB, 0xB1, 0x8B, 0x42, 0x10, 0xB4, 0x04, 0x46, 0x02, 0xD1, 0x07, 0xE0, + 0x99, 0x42, 0x05, 0xD0, 0x1B, 0x68, 0x00, 0x2B, 0xFA, 0xD1, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x63, 0x68, 0x08, 0x68, 0x10, 0x60, 0x8B, 0x42, + 0x0A, 0x60, 0xF6, 0xD1, 0x62, 0x60, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x11, 0x46, 0xFF, 0xF7, 0x49, 0xBF, 0x70, 0x47, 0x81, 0xB1, 0x03, 0x68, + 0x8B, 0x42, 0x0A, 0xD0, 0x2B, 0xB1, 0x18, 0x68, 0x88, 0x42, 0x03, 0xD0, + 0x03, 0x46, 0x00, 0x2B, 0xF9, 0xD1, 0x70, 0x47, 0x11, 0x60, 0x1A, 0x60, + 0x70, 0x47, 0x11, 0x46, 0xFF, 0xF7, 0x36, 0xBF, 0x11, 0x46, 0xFF, 0xF7, + 0x0F, 0xBF, 0x00, 0xBF, 0x0B, 0x46, 0x09, 0x68, 0x99, 0xB1, 0x02, 0x46, + 0x00, 0x68, 0x48, 0xB1, 0x10, 0xB4, 0x54, 0x68, 0x58, 0x68, 0x21, 0x60, + 0x50, 0x60, 0x00, 0x22, 0x5D, 0xF8, 0x04, 0x4B, 0x1A, 0x60, 0x70, 0x47, + 0x93, 0xE8, 0x03, 0x00, 0x82, 0xE8, 0x03, 0x00, 0x00, 0x22, 0x1A, 0x60, + 0x70, 0x47, 0x70, 0x47, 0xF8, 0xB5, 0x1F, 0x4F, 0x3B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x06, 0x46, 0x0D, 0x46, 0x14, 0x46, 0x0A, 0xDB, + 0x25, 0xB3, 0x23, 0x68, 0x2B, 0x60, 0x73, 0x68, 0xA3, 0x42, 0x4F, 0xF0, + 0x00, 0x03, 0x08, 0xBF, 0x75, 0x60, 0x23, 0x60, 0xF8, 0xBD, 0xE0, 0xB1, + 0xB5, 0xB1, 0x2B, 0x68, 0xA3, 0x42, 0x0A, 0xD0, 0x13, 0x49, 0x14, 0x48, + 0x40, 0xF2, 0x75, 0x12, 0x01, 0xF0, 0x2A, 0xFB, 0x3B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xE5, 0xDA, 0x00, 0x2C, 0xE3, 0xD1, 0x0D, 0x49, + 0x0E, 0x48, 0x4F, 0xF4, 0xBB, 0x72, 0x01, 0xF0, 0x1D, 0xFB, 0xDB, 0xE7, + 0x00, 0x2C, 0xF6, 0xD0, 0x23, 0x68, 0x33, 0x60, 0xD9, 0xE7, 0x07, 0x49, + 0x09, 0x48, 0x4F, 0xF4, 0xBA, 0x72, 0x01, 0xF0, 0x11, 0xFB, 0x3B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xD7, 0xDB, 0xCA, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x38, 0xAE, 0x15, 0x00, + 0x74, 0xAE, 0x15, 0x00, 0x28, 0xAE, 0x15, 0x00, 0x81, 0xB1, 0x10, 0xB4, + 0x08, 0x4C, 0x01, 0x44, 0x10, 0xF8, 0x01, 0x3B, 0x83, 0xEA, 0x12, 0x63, + 0x81, 0x42, 0x54, 0xF8, 0x23, 0x30, 0x83, 0xEA, 0x02, 0x22, 0xF5, 0xD1, + 0x10, 0x46, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x10, 0x46, 0x70, 0x47, + 0x84, 0xAE, 0x15, 0x00, 0xF8, 0xB5, 0x0F, 0x18, 0xB8, 0x42, 0xBC, 0x46, + 0x06, 0xD3, 0x1D, 0xE0, 0x44, 0x78, 0x2E, 0x78, 0x02, 0x34, 0xFF, 0x2E, + 0x20, 0x44, 0x06, 0xD0, 0x46, 0x1C, 0xB7, 0x42, 0x05, 0x46, 0xF5, 0xD8, + 0x00, 0x25, 0x28, 0x46, 0xF8, 0xBD, 0x87, 0x42, 0xFA, 0xD3, 0x1C, 0x80, + 0x00, 0x2D, 0xF7, 0xD0, 0xEE, 0x1C, 0x66, 0x45, 0xF4, 0xD8, 0xAE, 0x78, + 0x96, 0x42, 0xF2, 0xD0, 0x0C, 0x1B, 0x84, 0x45, 0xA1, 0xB2, 0x01, 0xD9, + 0x0F, 0x18, 0xE7, 0xE7, 0x06, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xE5, 0xDA, 0x84, 0x45, 0xE3, 0xD0, 0x03, 0x49, 0x04, 0x48, + 0x7F, 0x22, 0x01, 0xF0, 0xB9, 0xFA, 0xDD, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x84, 0xB2, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x01, 0xEB, 0x00, 0x08, 0x40, 0x45, 0xC6, 0x46, 0x2D, 0xD2, 0x02, 0xF1, + 0x05, 0x0C, 0xC2, 0xF1, 0x02, 0x07, 0x05, 0xE0, 0x44, 0x78, 0x35, 0x78, + 0x02, 0x34, 0xDD, 0x2D, 0x20, 0x44, 0x07, 0xD0, 0x45, 0x1C, 0xA8, 0x45, + 0x06, 0x46, 0xF5, 0xD8, 0x00, 0x26, 0x30, 0x46, 0xBD, 0xE8, 0xF8, 0x83, + 0x80, 0x45, 0xF9, 0xD3, 0x1C, 0x80, 0x00, 0x2E, 0xF6, 0xD0, 0xF5, 0x1D, + 0xAE, 0x45, 0xF3, 0xD3, 0x15, 0x46, 0x01, 0xE0, 0x65, 0x45, 0xF0, 0xD0, + 0x05, 0xEB, 0x06, 0x08, 0x15, 0xF8, 0x01, 0x9B, 0x18, 0xF8, 0x07, 0x80, + 0xC1, 0x45, 0xF5, 0xD0, 0x0C, 0x1B, 0x86, 0x45, 0xA1, 0xB2, 0x02, 0xD9, + 0x01, 0xEB, 0x00, 0x08, 0xDC, 0xE7, 0x07, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xDA, 0xDA, 0x86, 0x45, 0xD8, 0xD0, 0x04, 0x49, + 0x04, 0x48, 0xB4, 0x22, 0x01, 0xF0, 0x70, 0xFA, 0xD2, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x84, 0xB2, 0x15, 0x00, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x70, 0xB4, 0x03, 0xE0, + 0x6B, 0x1C, 0x99, 0x42, 0x28, 0x46, 0x10, 0xD9, 0x44, 0x78, 0x06, 0x78, + 0xA3, 0x1C, 0x01, 0x2E, 0x03, 0xEB, 0x00, 0x05, 0xF4, 0xD1, 0xA9, 0x42, + 0x07, 0xD3, 0x38, 0xB1, 0x0A, 0x2B, 0x04, 0xD8, 0x02, 0x2B, 0x02, 0xD0, + 0x14, 0x70, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x17, 0xD9, + 0x70, 0xB4, 0x03, 0xE0, 0x6B, 0x1C, 0x99, 0x42, 0x28, 0x46, 0x0E, 0xD9, + 0x44, 0x78, 0x06, 0x78, 0xA3, 0x1C, 0x32, 0x2E, 0x03, 0xEB, 0x00, 0x05, + 0xF4, 0xD1, 0xA9, 0x42, 0x05, 0xD3, 0x28, 0xB1, 0x02, 0x2B, 0x02, 0xD0, + 0x14, 0x70, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0xBC, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, + 0x70, 0xB4, 0x03, 0xE0, 0x73, 0x1C, 0x99, 0x42, 0x30, 0x46, 0x10, 0xD9, + 0x45, 0x78, 0x04, 0x78, 0xAB, 0x1C, 0x1E, 0x18, 0x00, 0x2C, 0xF5, 0xD1, + 0xB1, 0x42, 0x05, 0xD3, 0x10, 0xB1, 0x22, 0x2B, 0x02, 0xD8, 0x15, 0x70, + 0x70, 0xBC, 0x70, 0x47, 0x20, 0x46, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, + 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x17, 0xD9, 0x70, 0xB4, 0x03, 0xE0, 0x6B, 0x1C, 0x99, 0x42, + 0x28, 0x46, 0x0E, 0xD9, 0x44, 0x78, 0x06, 0x78, 0xA3, 0x1C, 0x07, 0x2E, + 0x03, 0xEB, 0x00, 0x05, 0xF4, 0xD1, 0xA9, 0x42, 0x05, 0xD3, 0x28, 0xB1, + 0x07, 0x2B, 0x02, 0xD9, 0x14, 0x70, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, + 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x17, 0xD9, 0x70, 0xB4, 0x03, 0xE0, 0x6B, 0x1C, 0x99, 0x42, + 0x28, 0x46, 0x0E, 0xD9, 0x44, 0x78, 0x06, 0x78, 0xA3, 0x1C, 0x30, 0x2E, + 0x03, 0xEB, 0x00, 0x05, 0xF4, 0xD1, 0xA9, 0x42, 0x05, 0xD3, 0x28, 0xB1, + 0x13, 0x2B, 0x02, 0xD9, 0x14, 0x70, 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, + 0x70, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, + 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x25, 0x2C, + 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, + 0x05, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, + 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, + 0x02, 0x33, 0x3C, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, + 0x06, 0xD3, 0x30, 0xB1, 0x06, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x1A, 0xD9, + 0x30, 0xB4, 0x03, 0xE0, 0x63, 0x1C, 0x99, 0x42, 0x20, 0x46, 0x11, 0xD9, + 0x43, 0x78, 0x05, 0x78, 0x02, 0x33, 0x3E, 0x2D, 0x03, 0xEB, 0x00, 0x04, + 0xF4, 0xD1, 0xA1, 0x42, 0x08, 0xD3, 0x40, 0xB1, 0xA3, 0xF1, 0x03, 0x03, + 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, 0x30, 0xBC, 0x13, 0x70, 0x70, 0x47, + 0x00, 0x20, 0x30, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x2B, 0xD9, 0x30, 0xB4, 0x03, 0xE0, + 0x18, 0x46, 0x01, 0x33, 0x99, 0x42, 0x16, 0xD9, 0x44, 0x78, 0x05, 0x78, + 0xA3, 0x1C, 0xC4, 0x2D, 0x03, 0x44, 0xF5, 0xD1, 0x99, 0x42, 0x0E, 0xD3, + 0x70, 0xB1, 0x02, 0x30, 0x04, 0x44, 0x07, 0xE0, 0x43, 0x78, 0x05, 0x78, + 0x02, 0x33, 0xC2, 0x2D, 0x03, 0xEB, 0x00, 0x01, 0x06, 0xD0, 0x08, 0x46, + 0x43, 0x1C, 0x9C, 0x42, 0xF4, 0xD8, 0x00, 0x20, 0x30, 0xBC, 0x70, 0x47, + 0x8C, 0x42, 0xFA, 0xD3, 0x00, 0x28, 0xF9, 0xD0, 0xA3, 0xF1, 0x05, 0x03, + 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, 0x30, 0xBC, 0x13, 0x70, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, + 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, + 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x03, 0x2C, 0x03, 0xEB, 0x00, 0x02, + 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x03, 0x2B, 0x18, 0xBF, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, + 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x4C, 0x2C, + 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, + 0x12, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, + 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, + 0x02, 0x33, 0x2A, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, + 0x06, 0xD3, 0x30, 0xB1, 0x03, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, + 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, + 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0xC7, 0x2C, 0x03, 0xEB, 0x00, 0x02, + 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x03, 0x2B, 0x18, 0xBF, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, + 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x20, 0x2C, + 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, + 0x03, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, + 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, + 0x02, 0x33, 0x36, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, + 0x06, 0xD3, 0x30, 0xB1, 0x05, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x00, 0xB5, 0x83, 0xB0, 0x06, 0x4A, 0x0D, 0xF1, + 0x06, 0x03, 0xFF, 0xF7, 0xC1, 0xFD, 0x20, 0xB1, 0xBD, 0xF8, 0x06, 0x30, + 0x1A, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, + 0x98, 0xB2, 0x15, 0x00, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, + 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, + 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x2D, 0x2C, 0x03, 0xEB, 0x00, 0x02, + 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x1C, 0x2B, 0x18, 0xBF, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, + 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x47, 0x2C, + 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, + 0x06, 0x2B, 0x38, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x1D, 0xD9, 0x10, 0xB4, 0x03, 0xE0, + 0x63, 0x1C, 0x99, 0x42, 0x20, 0x46, 0x13, 0xD9, 0x43, 0x78, 0x02, 0x78, + 0x02, 0x33, 0x1C, 0x18, 0x00, 0x2A, 0xF5, 0xD1, 0xA1, 0x42, 0x03, 0xD2, + 0x10, 0x46, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x28, 0xFA, 0xD0, + 0x06, 0x2B, 0x38, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, + 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, + 0x02, 0x33, 0x53, 0x2C, 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, + 0x06, 0xD3, 0x30, 0xB1, 0x04, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, + 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, + 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x55, 0x2C, 0x03, 0xEB, 0x00, 0x02, + 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x02, 0x2B, 0x08, 0xBF, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, + 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0xBF, 0x2C, + 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, + 0x0E, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x10, 0xB5, 0x82, 0xB0, 0x14, 0x46, 0x0D, 0xF1, 0x06, 0x03, 0x23, 0x22, + 0xFF, 0xF7, 0xB2, 0xFC, 0x40, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0xA3, 0xF1, + 0x18, 0x02, 0x21, 0x2A, 0x9A, 0xBF, 0x03, 0x3B, 0x23, 0x70, 0x00, 0x20, + 0x02, 0xB0, 0x10, 0xBD, 0x01, 0x44, 0x43, 0x1C, 0x99, 0x42, 0x19, 0xD9, + 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, 0x10, 0x46, 0x0F, 0xD9, + 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0x3D, 0x2C, 0x03, 0xEB, 0x00, 0x02, + 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, 0x18, 0x2B, 0x18, 0xBF, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x01, 0x44, 0x43, 0x1C, + 0x99, 0x42, 0x19, 0xD9, 0x10, 0xB4, 0x03, 0xE0, 0x53, 0x1C, 0x99, 0x42, + 0x10, 0x46, 0x0F, 0xD9, 0x43, 0x78, 0x04, 0x78, 0x02, 0x33, 0xC0, 0x2C, + 0x03, 0xEB, 0x00, 0x02, 0xF4, 0xD1, 0x91, 0x42, 0x06, 0xD3, 0x30, 0xB1, + 0x07, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, + 0x10, 0xB5, 0x82, 0xB0, 0x14, 0x46, 0x0D, 0xF1, 0x06, 0x03, 0x24, 0x22, + 0xFF, 0xF7, 0x5E, 0xFC, 0x40, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0xA3, 0xF1, + 0x09, 0x02, 0x09, 0x2A, 0x9A, 0xBF, 0x03, 0x3B, 0x23, 0x70, 0x00, 0x20, + 0x02, 0xB0, 0x10, 0xBD, 0x00, 0xB5, 0x83, 0xB0, 0x0D, 0xF1, 0x06, 0x03, + 0x26, 0x22, 0xFF, 0xF7, 0x4B, 0xFC, 0x20, 0xB1, 0xBD, 0xF8, 0x06, 0x30, + 0x10, 0x2B, 0x18, 0xBF, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, + 0x00, 0xB5, 0x83, 0xB0, 0x0D, 0xF1, 0x06, 0x03, 0x25, 0x22, 0xFF, 0xF7, + 0x3B, 0xFC, 0x20, 0xB1, 0xBD, 0xF8, 0x06, 0x30, 0x04, 0x2B, 0x18, 0xBF, + 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x43, 0x79, 0x02, 0x79, + 0x58, 0x00, 0x40, 0xEA, 0xD2, 0x10, 0x80, 0x05, 0x70, 0x47, 0x00, 0xBF, + 0x43, 0x79, 0x07, 0x48, 0x83, 0xEA, 0x13, 0x13, 0x5B, 0x01, 0xC1, 0xF3, + 0x08, 0x01, 0x03, 0xF4, 0xF0, 0x73, 0x0B, 0x44, 0x00, 0xEA, 0x83, 0x50, + 0x40, 0xF4, 0x7C, 0x10, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x28, 0x08, 0xDA, 0x10, 0xF1, 0x6D, 0x0F, 0x01, 0xDA, 0x00, 0x20, + 0x70, 0x47, 0x6E, 0x30, 0x40, 0x00, 0xC0, 0xB2, 0x70, 0x47, 0xDC, 0x20, + 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x1D, 0x46, 0x95, 0xB0, + 0x90, 0x46, 0xDD, 0xF8, 0x78, 0xB0, 0x15, 0xF8, 0x01, 0x2B, 0x03, 0x91, + 0x07, 0x46, 0x00, 0x28, 0x00, 0xF0, 0x7F, 0x81, 0x00, 0x2A, 0x00, 0xF0, + 0x91, 0x83, 0x00, 0x24, 0xCD, 0xE9, 0x00, 0x44, 0x03, 0x9E, 0x02, 0x94, + 0xA1, 0x46, 0xA2, 0x46, 0xA2, 0xF1, 0x20, 0x03, 0x58, 0x2B, 0x5A, 0xD8, + 0xDF, 0xE8, 0x13, 0xF0, 0x35, 0x01, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x34, 0x03, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x17, 0x03, 0x35, 0x01, 0x59, 0x00, 0x35, 0x01, 0x36, 0x03, 0x59, 0x00, + 0x12, 0x01, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x10, 0x01, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x10, 0x01, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, + 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x6E, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x6E, 0x00, 0xA2, 0xF1, 0x31, 0x01, 0x08, 0x29, 0x40, 0xF2, 0xE2, 0x80, + 0x00, 0x21, 0x9E, 0x48, 0x00, 0xEB, 0xCA, 0x0A, 0x1A, 0xF8, 0x01, 0xA0, + 0xBA, 0xF1, 0x07, 0x0F, 0x00, 0xF2, 0xD8, 0x83, 0xDF, 0xE8, 0x0A, 0xF0, + 0x75, 0x5B, 0x45, 0x9A, 0x70, 0x8E, 0x80, 0x06, 0x07, 0x21, 0xEE, 0xE7, + 0xA2, 0xF1, 0x41, 0x03, 0x37, 0x2B, 0x00, 0xF2, 0x05, 0x82, 0xDF, 0xE8, + 0x13, 0xF0, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, + 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, + 0x03, 0x02, 0x54, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, + 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, + 0x29, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, + 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x05, 0x02, 0x29, 0x01, 0x5E, 0x01, + 0x29, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0xA3, 0x01, + 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x54, 0x02, 0x03, 0x02, 0x03, 0x02, + 0x29, 0x01, 0x03, 0x02, 0x03, 0x02, 0xF8, 0x01, 0x03, 0x02, 0x29, 0x01, + 0x03, 0x02, 0x03, 0x02, 0x29, 0x01, 0x10, 0x2B, 0x00, 0xF2, 0xCA, 0x80, + 0xDF, 0xE8, 0x13, 0xF0, 0xD2, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, + 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, 0xC8, 0x00, + 0xC8, 0x00, 0xD9, 0x00, 0xC8, 0x00, 0xE0, 0x00, 0xC8, 0x00, 0xC8, 0x00, + 0xC1, 0x00, 0x00, 0x23, 0x00, 0x93, 0x02, 0x93, 0x4F, 0xF0, 0xFF, 0x33, + 0x01, 0x93, 0x4F, 0xF0, 0x01, 0x0A, 0x15, 0xF8, 0x01, 0x2B, 0x00, 0x2A, + 0x7F, 0xF4, 0x28, 0xAF, 0x00, 0x2E, 0x62, 0xD0, 0x00, 0x23, 0x3B, 0x70, + 0x20, 0x46, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x23, 0x01, 0x93, + 0x4F, 0xF0, 0x04, 0x0A, 0xED, 0xE7, 0x2E, 0xB1, 0xA0, 0x45, 0x9C, 0xBF, + 0x07, 0xF8, 0x01, 0x2B, 0x06, 0xF1, 0xFF, 0x36, 0x01, 0x34, 0x4F, 0xF0, + 0x00, 0x0A, 0xE2, 0xE7, 0x68, 0x2A, 0x7B, 0xD0, 0x6C, 0x2A, 0x3F, 0xD0, + 0x57, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, + 0x92, 0x82, 0x4F, 0xF0, 0x06, 0x0A, 0xD4, 0xE7, 0x2A, 0x2A, 0x61, 0xD0, + 0x01, 0x9B, 0x30, 0x3A, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0x43, 0x03, + 0x01, 0x93, 0x4F, 0xF0, 0x05, 0x0A, 0xC8, 0xE7, 0x2A, 0x2A, 0x5B, 0xD0, + 0x02, 0x9B, 0x30, 0x3A, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0x43, 0x03, + 0x02, 0x93, 0x4F, 0xF0, 0x03, 0x0A, 0xBC, 0xE7, 0x06, 0x21, 0x4C, 0xE7, + 0x44, 0x4B, 0x03, 0xEB, 0xCA, 0x0A, 0x9A, 0xF8, 0x03, 0xA0, 0xBA, 0xF1, + 0x07, 0x0F, 0x00, 0xF2, 0x25, 0x83, 0x01, 0xA3, 0x53, 0xF8, 0x2A, 0xF0, + 0x8F, 0x3F, 0x14, 0x00, 0x5B, 0x3F, 0x14, 0x00, 0xBB, 0x40, 0x14, 0x00, + 0xD9, 0x3F, 0x14, 0x00, 0x85, 0x3F, 0x14, 0x00, 0xC1, 0x3F, 0x14, 0x00, + 0xA5, 0x3F, 0x14, 0x00, 0xB1, 0x3E, 0x14, 0x00, 0x00, 0x9B, 0x43, 0xF0, + 0x02, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x06, 0x0A, 0x97, 0xE7, 0x05, 0x21, + 0x27, 0xE7, 0x03, 0x9B, 0x00, 0x2B, 0x9B, 0xD0, 0x20, 0x46, 0x07, 0xF8, + 0x01, 0x6C, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x2D, 0x49, 0x01, 0xEB, + 0xCA, 0x0A, 0x9A, 0xF8, 0x04, 0xA0, 0xBA, 0xF1, 0x07, 0x0F, 0x00, 0xF2, + 0xF7, 0x82, 0x01, 0xA1, 0x51, 0xF8, 0x2A, 0xF0, 0x8F, 0x3F, 0x14, 0x00, + 0x5B, 0x3F, 0x14, 0x00, 0x2F, 0x3F, 0x14, 0x00, 0xDD, 0x3F, 0x14, 0x00, + 0x85, 0x3F, 0x14, 0x00, 0xC1, 0x3F, 0x14, 0x00, 0xA5, 0x3F, 0x14, 0x00, + 0xB1, 0x3E, 0x14, 0x00, 0x5B, 0xF8, 0x04, 0x3B, 0x01, 0x93, 0x4F, 0xF0, + 0x05, 0x0A, 0x6A, 0xE7, 0x5B, 0xF8, 0x04, 0x3B, 0x02, 0x93, 0x4F, 0xF0, + 0x03, 0x0A, 0x64, 0xE7, 0x00, 0x9B, 0x43, 0xF0, 0x01, 0x03, 0x00, 0x93, + 0x4F, 0xF0, 0x06, 0x0A, 0x5D, 0xE7, 0x14, 0x46, 0x00, 0x2A, 0x3F, 0xF4, + 0x63, 0xAF, 0x03, 0x90, 0x7D, 0xE6, 0x00, 0x9B, 0x43, 0xF0, 0x40, 0x03, + 0x00, 0x93, 0x4F, 0xF0, 0x02, 0x0A, 0x50, 0xE7, 0x10, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9E, 0x82, 0x4F, 0xF0, + 0x02, 0x0A, 0x46, 0xE7, 0x00, 0x9B, 0x43, 0xF0, 0x10, 0x03, 0x00, 0x93, + 0x4F, 0xF0, 0x02, 0x0A, 0x3F, 0xE7, 0x00, 0x9B, 0x43, 0xF0, 0x08, 0x03, + 0x00, 0x93, 0x4F, 0xF0, 0x02, 0x0A, 0x38, 0xE7, 0x00, 0x9B, 0x43, 0xF0, + 0x20, 0x03, 0x00, 0x93, 0x4F, 0xF0, 0x02, 0x0A, 0x31, 0xE7, 0x00, 0xBF, + 0x24, 0xB3, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x9B, 0x9B, 0x07, + 0x00, 0xF1, 0x94, 0x81, 0x00, 0x9B, 0xD8, 0x07, 0x40, 0xF1, 0x90, 0x81, + 0x64, 0x2A, 0x00, 0xF0, 0x32, 0x82, 0x5B, 0xF8, 0x04, 0x1B, 0x58, 0x3A, + 0x89, 0xB2, 0x20, 0x2A, 0x00, 0xF2, 0x24, 0x82, 0xDF, 0xE8, 0x12, 0xF0, + 0x5A, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, + 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x4E, 0x02, 0x22, 0x02, + 0x72, 0x00, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, + 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, + 0x36, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x22, 0x02, 0x72, 0x00, + 0x22, 0x02, 0x22, 0x02, 0x69, 0x02, 0x02, 0x9B, 0x59, 0x1E, 0x5B, 0xF8, + 0x04, 0x3B, 0x8D, 0xF8, 0x10, 0x30, 0x00, 0x9B, 0x04, 0xAA, 0x03, 0xF0, + 0x40, 0x00, 0x01, 0x23, 0x00, 0x28, 0x70, 0xD1, 0x00, 0x98, 0x80, 0x06, + 0x40, 0xF1, 0x15, 0x81, 0x00, 0x2B, 0x00, 0xF0, 0xEA, 0x81, 0x10, 0x46, + 0x02, 0xEB, 0x03, 0x09, 0xA4, 0xEB, 0x02, 0x0E, 0x09, 0xE0, 0xE0, 0x45, + 0x04, 0xD8, 0x07, 0x78, 0x02, 0xF8, 0x01, 0x7B, 0x01, 0x3E, 0x17, 0x46, + 0x01, 0x30, 0x48, 0x45, 0x07, 0xD0, 0x00, 0xEB, 0x0E, 0x0C, 0x3A, 0x46, + 0x00, 0x2E, 0xF0, 0xD1, 0x01, 0x30, 0x48, 0x45, 0xF4, 0xD1, 0x23, 0x44, + 0x00, 0x29, 0x40, 0xF3, 0xCA, 0x81, 0xCC, 0x18, 0x20, 0x21, 0x08, 0xE0, + 0x98, 0x45, 0x03, 0xD8, 0x02, 0xF8, 0x01, 0x1B, 0x01, 0x3E, 0x17, 0x46, + 0x01, 0x33, 0xA3, 0x42, 0x05, 0xD0, 0x3A, 0x46, 0x00, 0x2E, 0xF3, 0xD1, + 0x01, 0x33, 0xA3, 0x42, 0xF6, 0xD1, 0x4F, 0xF0, 0x07, 0x0A, 0xB2, 0xE6, + 0x00, 0x9B, 0x99, 0x07, 0x03, 0xD4, 0x00, 0x9B, 0xDA, 0x07, 0x00, 0xF1, + 0xBC, 0x81, 0x5B, 0xF8, 0x04, 0x1B, 0x00, 0x29, 0xC0, 0xF2, 0xBE, 0x81, + 0xDF, 0xF8, 0x5C, 0xA4, 0x00, 0x23, 0x0D, 0xF1, 0x50, 0x0E, 0xAA, 0xFB, + 0x01, 0x2C, 0x4F, 0xEA, 0xDC, 0x0C, 0x0C, 0xEB, 0x8C, 0x00, 0xA1, 0xEB, + 0x40, 0x00, 0x89, 0x46, 0x30, 0x30, 0xB9, 0xF1, 0x09, 0x0F, 0x72, 0x46, + 0x61, 0x46, 0x0E, 0xF8, 0x01, 0x0D, 0x18, 0x46, 0x03, 0xF1, 0x01, 0x03, + 0xEB, 0xD8, 0x00, 0x99, 0x09, 0x06, 0x00, 0xF1, 0x9E, 0x81, 0x00, 0x99, + 0x09, 0x07, 0x40, 0xF1, 0xE7, 0x81, 0x83, 0x1C, 0x2B, 0x20, 0x0E, 0xF8, + 0x01, 0x0C, 0x00, 0x98, 0x02, 0x99, 0x00, 0xF0, 0x40, 0x00, 0x02, 0x3A, + 0xC9, 0x1A, 0x00, 0x28, 0x8E, 0xD0, 0x00, 0x29, 0x14, 0xDD, 0x0C, 0x44, + 0x4F, 0xF0, 0x30, 0x0E, 0x08, 0xE0, 0xE0, 0x45, 0x03, 0xD8, 0x00, 0xF8, + 0x01, 0xEB, 0x01, 0x3E, 0x07, 0x46, 0x01, 0x39, 0x00, 0xF0, 0xB0, 0x80, + 0xA4, 0xEB, 0x01, 0x0C, 0x38, 0x46, 0x00, 0x2E, 0xF1, 0xD1, 0x01, 0x39, + 0xF5, 0xD1, 0x00, 0x21, 0x00, 0x2B, 0x7F, 0xF4, 0x7C, 0xAF, 0x91, 0x46, + 0xA7, 0xE7, 0x5B, 0xF8, 0x04, 0x2B, 0x00, 0x2A, 0x40, 0xF0, 0x2C, 0x81, + 0x00, 0x9B, 0x02, 0x99, 0x03, 0xF0, 0x40, 0x00, 0x00, 0x23, 0x65, 0xE7, + 0x4A, 0x46, 0xF7, 0xE7, 0x5B, 0xF8, 0x04, 0x3B, 0x02, 0x9A, 0xDF, 0xF8, + 0xB0, 0xE3, 0x9C, 0x46, 0x1C, 0xF8, 0x01, 0x3B, 0x00, 0x2A, 0x00, 0xF0, + 0x09, 0x81, 0x19, 0x11, 0x15, 0x2A, 0x03, 0xF0, 0x0F, 0x03, 0x1E, 0xF8, + 0x01, 0x10, 0x1E, 0xF8, 0x03, 0x30, 0x8D, 0xF8, 0x10, 0x10, 0x28, 0xBF, + 0x15, 0x22, 0x02, 0xEB, 0x42, 0x01, 0x01, 0x3A, 0x8D, 0xF8, 0x11, 0x30, + 0x01, 0xF1, 0xFF, 0x33, 0xC1, 0xF1, 0x01, 0x01, 0x1D, 0xD0, 0x0C, 0xEB, + 0x02, 0x0A, 0x0D, 0xF1, 0x13, 0x02, 0x1C, 0xF0, 0x03, 0x0F, 0x1C, 0xF8, + 0x01, 0x0B, 0x4F, 0xEA, 0x20, 0x19, 0x00, 0xF0, 0x0F, 0x00, 0x1E, 0xF8, + 0x09, 0x90, 0x82, 0xF8, 0x00, 0x90, 0x1E, 0xF8, 0x00, 0x00, 0x50, 0x70, + 0x0C, 0xBF, 0x4F, 0xF0, 0x3A, 0x09, 0x4F, 0xF0, 0x2E, 0x09, 0xE2, 0x45, + 0x02, 0xF8, 0x01, 0x9C, 0x02, 0xF1, 0x03, 0x02, 0xE5, 0xD1, 0x00, 0x9A, + 0x02, 0xF0, 0x40, 0x02, 0x00, 0x2A, 0x40, 0xF0, 0x69, 0x81, 0x00, 0x98, + 0x02, 0x92, 0x80, 0x06, 0x04, 0xAA, 0x3F, 0xF5, 0x1F, 0xAF, 0x00, 0x2B, + 0x7F, 0xF4, 0x1F, 0xAF, 0xA1, 0xE7, 0x5B, 0xF8, 0x04, 0x1B, 0xDF, 0xF8, + 0x14, 0xE3, 0x8C, 0x46, 0x4F, 0xF0, 0x3A, 0x09, 0x1C, 0xF8, 0x06, 0x3B, + 0x1A, 0x11, 0x03, 0xF0, 0x0F, 0x03, 0x1E, 0xF8, 0x02, 0x20, 0x1E, 0xF8, + 0x03, 0x30, 0x8D, 0xF8, 0x11, 0x30, 0x8D, 0xF8, 0x10, 0x20, 0x01, 0x31, + 0x04, 0xAB, 0x11, 0xF8, 0x01, 0x2B, 0x83, 0xF8, 0x02, 0x90, 0x10, 0x11, + 0x02, 0xF0, 0x0F, 0x02, 0x1E, 0xF8, 0x00, 0x00, 0x1E, 0xF8, 0x02, 0x20, + 0xD8, 0x70, 0x8C, 0x45, 0x1A, 0x71, 0x03, 0xF1, 0x03, 0x03, 0xEE, 0xD1, + 0x02, 0x9B, 0xA3, 0xF1, 0x11, 0x01, 0x00, 0x9B, 0x04, 0xAA, 0x03, 0xF0, + 0x40, 0x00, 0x11, 0x23, 0xE4, 0xE6, 0x00, 0x29, 0x7F, 0xF7, 0x6C, 0xAF, + 0x21, 0x44, 0x4F, 0xF0, 0x20, 0x0C, 0x08, 0xE0, 0xA0, 0x45, 0x03, 0xD8, + 0x00, 0xF8, 0x01, 0xCB, 0x01, 0x3E, 0x07, 0x46, 0x01, 0x34, 0xA1, 0x42, + 0x05, 0xD0, 0x38, 0x46, 0x00, 0x2E, 0xF3, 0xD1, 0x01, 0x34, 0xA1, 0x42, + 0xF6, 0xD1, 0x0C, 0x46, 0x00, 0x21, 0x00, 0x2B, 0x7F, 0xF4, 0xD3, 0xAE, + 0x55, 0xE7, 0x04, 0x23, 0x9A, 0x49, 0x01, 0xEB, 0xCA, 0x0A, 0x1A, 0xF8, + 0x03, 0xA0, 0xBA, 0xF1, 0x07, 0x0F, 0x00, 0xF2, 0x1F, 0x81, 0x01, 0xA3, + 0x53, 0xF8, 0x2A, 0xF0, 0x8F, 0x3F, 0x14, 0x00, 0x5B, 0x3F, 0x14, 0x00, + 0xC9, 0x40, 0x14, 0x00, 0xD9, 0x3F, 0x14, 0x00, 0x85, 0x3F, 0x14, 0x00, + 0xC1, 0x3F, 0x14, 0x00, 0xA5, 0x3F, 0x14, 0x00, 0xB1, 0x3E, 0x14, 0x00, + 0x01, 0x23, 0xE1, 0xE7, 0x02, 0x21, 0x26, 0xE5, 0x58, 0x3A, 0x5B, 0xF8, + 0x04, 0x1B, 0x20, 0x2A, 0x00, 0xF2, 0x98, 0x80, 0x01, 0xA3, 0x53, 0xF8, + 0x22, 0xF0, 0x00, 0xBF, 0xED, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0xD5, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x17, 0x42, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0xA5, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x1D, 0x42, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, 0x7D, 0x45, 0x14, 0x00, + 0x0B, 0x46, 0x14, 0x00, 0x03, 0x9E, 0x14, 0x46, 0x4A, 0xE5, 0x64, 0x49, + 0x64, 0x48, 0x4F, 0xF4, 0xA2, 0x72, 0x00, 0xF0, 0x49, 0xFB, 0x4F, 0xF0, + 0x06, 0x0A, 0x3C, 0xE5, 0x1A, 0x11, 0x03, 0xF0, 0x0F, 0x03, 0x1E, 0xF8, + 0x02, 0x20, 0x1E, 0xF8, 0x03, 0x30, 0x8D, 0xF8, 0x10, 0x20, 0x8D, 0xF8, + 0x11, 0x30, 0x6F, 0xF0, 0x2E, 0x01, 0x2F, 0x23, 0x0F, 0x22, 0xFC, 0xE6, + 0x13, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x97, 0x80, 0x01, 0x9B, 0x00, 0x2B, + 0x3F, 0xF4, 0xCC, 0xAE, 0x01, 0x9B, 0x11, 0x46, 0xC2, 0xF1, 0x01, 0x00, + 0x00, 0x2B, 0x00, 0xEB, 0x01, 0x0C, 0x0F, 0xDD, 0x11, 0xF8, 0x01, 0xEF, + 0x01, 0x3B, 0xBE, 0xF1, 0x00, 0x0F, 0x10, 0xD0, 0x00, 0x2B, 0xF3, 0xD1, + 0x02, 0x99, 0x00, 0x98, 0x01, 0x93, 0x63, 0x46, 0xC9, 0x1A, 0x00, 0xF0, + 0x40, 0x00, 0x1F, 0xE6, 0x00, 0xEB, 0x01, 0x0C, 0x11, 0xF8, 0x01, 0xEF, + 0xBE, 0xF1, 0x00, 0x0F, 0xE4, 0xD1, 0x01, 0x93, 0x63, 0x46, 0x02, 0x99, + 0x00, 0x98, 0xC9, 0x1A, 0x00, 0xF0, 0x40, 0x00, 0x10, 0xE6, 0x1C, 0x46, + 0x4F, 0xF0, 0x07, 0x0A, 0xF9, 0xE4, 0x23, 0x46, 0x91, 0x46, 0x2B, 0xE6, + 0x00, 0x9B, 0x02, 0x99, 0x03, 0xF0, 0x40, 0x00, 0x14, 0xAA, 0x00, 0x23, + 0x02, 0xE6, 0x5B, 0xF8, 0x04, 0x1B, 0x09, 0xB2, 0x41, 0xE6, 0x83, 0x1C, + 0x2D, 0x20, 0x64, 0xE6, 0x00, 0x9B, 0x43, 0xF0, 0x80, 0x03, 0x49, 0x42, + 0x00, 0x93, 0x3B, 0xE6, 0x00, 0x9B, 0x43, 0xF0, 0x40, 0x03, 0x00, 0x93, + 0x08, 0x23, 0x40, 0x20, 0x02, 0x93, 0xDF, 0xF8, 0xD0, 0xC0, 0x14, 0xAA, + 0x01, 0xF0, 0x0F, 0x03, 0x09, 0x09, 0x1C, 0xF8, 0x03, 0x30, 0x02, 0xF8, + 0x01, 0x3D, 0x14, 0xAB, 0xA3, 0xEB, 0x02, 0x03, 0xF4, 0xD1, 0x02, 0x99, + 0xC9, 0x1A, 0xDD, 0xE5, 0x14, 0xAA, 0x01, 0xF0, 0x01, 0x03, 0x30, 0x33, + 0x02, 0xF8, 0x01, 0x3D, 0x49, 0x08, 0x14, 0xAB, 0xA3, 0xEB, 0x02, 0x03, + 0xF5, 0xD1, 0xBA, 0xE7, 0xDF, 0xF8, 0x90, 0xE0, 0x14, 0xAA, 0x01, 0xF0, + 0x0F, 0x03, 0x09, 0x09, 0x1E, 0xF8, 0x03, 0x30, 0x02, 0xF8, 0x01, 0x3D, + 0x14, 0xAB, 0xA3, 0xEB, 0x02, 0x03, 0xF4, 0xD1, 0xAB, 0xE7, 0x00, 0x9B, + 0x03, 0xF0, 0x40, 0x00, 0xCF, 0xE7, 0x17, 0x49, 0x17, 0x48, 0x40, 0xF2, + 0x11, 0x12, 0x00, 0xF0, 0xAF, 0xFA, 0x4F, 0xF0, 0x02, 0x0A, 0xA2, 0xE4, + 0x00, 0x22, 0x02, 0x92, 0x04, 0xAA, 0xBA, 0xE5, 0x00, 0x99, 0xC9, 0x06, + 0x06, 0xD4, 0x02, 0x98, 0xC1, 0x1A, 0x00, 0x98, 0x72, 0x46, 0x00, 0xF0, + 0x40, 0x00, 0xA7, 0xE5, 0x83, 0x1C, 0x20, 0x20, 0x0D, 0xE6, 0x00, 0x99, + 0x01, 0xF0, 0x40, 0x00, 0x02, 0x99, 0x9F, 0xE5, 0x09, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x86, 0xAC, 0x04, 0x49, + 0x04, 0x48, 0x4F, 0xF4, 0x12, 0x72, 0x00, 0xF0, 0x89, 0xFA, 0x7E, 0xE4, + 0x24, 0xB3, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x38, 0x36, 0x17, 0x00, 0xCD, 0xCC, 0xCC, 0xCC, 0x10, 0xB3, 0x15, 0x00, + 0xFC, 0xB2, 0x15, 0x00, 0x0F, 0xB4, 0x2D, 0xE9, 0xF0, 0x47, 0x21, 0x4E, + 0xD6, 0xF8, 0x04, 0x31, 0x82, 0xB0, 0xFB, 0xB1, 0x0A, 0x9C, 0xDF, 0xF8, + 0x80, 0x80, 0xDF, 0xF8, 0x80, 0xA0, 0xDF, 0xF8, 0x80, 0x90, 0xA7, 0x1C, + 0x20, 0x46, 0x14, 0xF8, 0x01, 0x5B, 0x29, 0x06, 0xA5, 0xF1, 0x80, 0x02, + 0x0A, 0xD5, 0x88, 0x2D, 0x13, 0xD8, 0xD6, 0xF8, 0x00, 0x31, 0xDB, 0x43, + 0xD3, 0x40, 0xDB, 0x07, 0x08, 0xD4, 0xA7, 0x42, 0x20, 0x46, 0xED, 0xD1, + 0x12, 0x4B, 0x0B, 0xA9, 0xD3, 0xF8, 0x30, 0x34, 0x01, 0x91, 0x98, 0x47, + 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x47, 0x04, 0xB0, 0x70, 0x47, 0xD8, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x20, 0x05, 0xF1, 0x66, 0x03, 0x00, 0x2A, + 0xDB, 0xB2, 0x05, 0xDB, 0xD6, 0xF8, 0x04, 0x31, 0x9A, 0x3D, 0xAB, 0x42, + 0xE3, 0xD8, 0xEB, 0xE7, 0x05, 0x2B, 0xF7, 0xD9, 0x40, 0xF2, 0xA9, 0x22, + 0x51, 0x46, 0x48, 0x46, 0x00, 0xF0, 0x36, 0xFA, 0xF0, 0xE7, 0x00, 0xBF, + 0xB0, 0xB6, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xCC, 0xB2, 0x15, 0x00, 0x0E, 0xB4, 0x09, 0x4B, + 0x00, 0xB5, 0x1B, 0x68, 0x1B, 0x88, 0x18, 0x42, 0x82, 0xB0, 0x06, 0xD0, + 0x06, 0x4B, 0x03, 0x98, 0xD3, 0xF8, 0x30, 0x34, 0x04, 0xA9, 0x01, 0x91, + 0x98, 0x47, 0x02, 0xB0, 0x5D, 0xF8, 0x04, 0xEB, 0x03, 0xB0, 0x70, 0x47, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x08, 0xB5, 0x05, 0x48, + 0xFF, 0xF7, 0x94, 0xFF, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, 0xFE, 0xF7, + 0x35, 0xF8, 0xE0, 0xF7, 0x0F, 0xFC, 0xFE, 0xE7, 0x64, 0xB3, 0x15, 0x00, + 0x08, 0xB5, 0x05, 0x48, 0xFF, 0xF7, 0x86, 0xFF, 0x01, 0x21, 0x40, 0xF2, + 0x1E, 0x40, 0xFE, 0xF7, 0x27, 0xF8, 0xE0, 0xF7, 0x01, 0xFC, 0xFE, 0xE7, + 0x7C, 0xB3, 0x15, 0x00, 0x30, 0xB5, 0x17, 0x48, 0x00, 0x68, 0x00, 0x78, + 0x02, 0x28, 0x83, 0xB0, 0x1D, 0x46, 0x06, 0xD1, 0x48, 0x78, 0x83, 0x1E, + 0x01, 0x2B, 0x0C, 0x46, 0x0E, 0xD9, 0x05, 0x28, 0x0C, 0xD0, 0x11, 0x48, + 0x01, 0x92, 0xFF, 0xF7, 0x69, 0xFF, 0x01, 0x9A, 0x29, 0x46, 0x40, 0xF2, + 0x1C, 0x40, 0xFE, 0xF7, 0x63, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, + 0x23, 0x78, 0x53, 0xB9, 0xA3, 0x78, 0x01, 0x92, 0x1B, 0xB1, 0xE1, 0xF7, + 0x17, 0xFE, 0x01, 0x9A, 0xEE, 0xE7, 0xE1, 0xF7, 0x1D, 0xFE, 0x01, 0x9A, + 0xEA, 0xE7, 0x01, 0x21, 0x01, 0x92, 0xE1, 0xF7, 0xE1, 0xFD, 0x60, 0x78, + 0x01, 0x9A, 0xED, 0xE7, 0x78, 0x36, 0x17, 0x00, 0x88, 0xB3, 0x15, 0x00, + 0x30, 0xB5, 0x83, 0xB0, 0x0C, 0x46, 0x09, 0x48, 0x09, 0x68, 0x01, 0x92, + 0x1D, 0x46, 0xFF, 0xF7, 0x3F, 0xFF, 0x07, 0x4B, 0x21, 0x68, 0xC3, 0xF8, + 0x04, 0x11, 0x01, 0x9A, 0x29, 0x46, 0x40, 0xF2, 0x07, 0x40, 0xFE, 0xF7, + 0x35, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0xA0, 0xB3, 0x15, 0x00, + 0xB0, 0xB6, 0x17, 0x00, 0x30, 0xB5, 0x83, 0xB0, 0x0C, 0x46, 0x09, 0x48, + 0x09, 0x68, 0x01, 0x92, 0x1D, 0x46, 0xFF, 0xF7, 0x25, 0xFF, 0x07, 0x4B, + 0x21, 0x68, 0xC3, 0xF8, 0x00, 0x11, 0x01, 0x9A, 0x29, 0x46, 0x40, 0xF2, + 0x05, 0x40, 0xFE, 0xF7, 0x1B, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, + 0xC8, 0xB3, 0x15, 0x00, 0xB0, 0xB6, 0x17, 0x00, 0x18, 0x46, 0x38, 0xB5, + 0x0D, 0x46, 0x04, 0x23, 0x01, 0x46, 0x4F, 0xF4, 0x82, 0x60, 0xFE, 0xF7, + 0xA3, 0xF8, 0x22, 0x4B, 0xA9, 0x88, 0x93, 0xF8, 0xA9, 0x30, 0x04, 0x46, + 0xEB, 0xB1, 0x4B, 0x1E, 0x01, 0x2B, 0x0D, 0xD9, 0x02, 0x29, 0x2A, 0xD0, + 0x03, 0x29, 0x2F, 0xD0, 0x04, 0x29, 0x1C, 0xD1, 0x1B, 0x4B, 0x2A, 0x68, + 0xDA, 0x65, 0x4F, 0xF0, 0x80, 0x72, 0xC3, 0xF8, 0x34, 0x21, 0x14, 0xE0, + 0x18, 0x48, 0x17, 0x4A, 0x03, 0x68, 0x43, 0xF0, 0x00, 0x73, 0x03, 0x60, + 0x53, 0x6F, 0x16, 0x48, 0x43, 0xF0, 0x10, 0x03, 0x53, 0x67, 0x01, 0x23, + 0x03, 0x70, 0x01, 0x29, 0xE2, 0xD1, 0x10, 0x4B, 0x2A, 0x68, 0xDA, 0x63, + 0x40, 0x22, 0xC3, 0xF8, 0x24, 0x21, 0x00, 0x25, 0x0F, 0x48, 0x25, 0x60, + 0xFF, 0xF7, 0xDA, 0xFE, 0x20, 0x46, 0xFE, 0xF7, 0x9F, 0xF8, 0x28, 0x46, + 0x38, 0xBD, 0x08, 0x4B, 0x2A, 0x68, 0x9A, 0x65, 0x20, 0x22, 0xC3, 0xF8, + 0x24, 0x21, 0xEE, 0xE7, 0x04, 0x4B, 0x2A, 0x68, 0x1A, 0x64, 0x80, 0x22, + 0xC3, 0xF8, 0x24, 0x21, 0xE7, 0xE7, 0x00, 0xBF, 0x2C, 0x19, 0x17, 0x00, + 0x00, 0x00, 0x50, 0x40, 0xE0, 0x50, 0x34, 0x40, 0x4C, 0x36, 0x17, 0x00, + 0xF0, 0xB3, 0x15, 0x00, 0x30, 0xB5, 0x18, 0x46, 0x0C, 0x46, 0x08, 0x23, + 0x01, 0x46, 0x85, 0xB0, 0x40, 0xF2, 0x12, 0x40, 0xFE, 0xF7, 0x4A, 0xF8, + 0x18, 0x4B, 0x22, 0x68, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x3B, 0x01, 0x2B, + 0x05, 0x46, 0x19, 0xD9, 0x11, 0x68, 0xA3, 0x68, 0x60, 0x68, 0x4B, 0x40, + 0x03, 0x40, 0x4B, 0x40, 0x13, 0x60, 0x22, 0x68, 0x2A, 0x60, 0x11, 0x68, + 0xA3, 0x68, 0x69, 0x60, 0xCD, 0xE9, 0x01, 0x11, 0x00, 0x92, 0x61, 0x68, + 0x0D, 0x48, 0x1A, 0x46, 0xFF, 0xF7, 0x96, 0xFE, 0x28, 0x46, 0xFE, 0xF7, + 0x5B, 0xF8, 0x00, 0x20, 0x05, 0xB0, 0x30, 0xBD, 0x09, 0x4B, 0x9A, 0x42, + 0x07, 0xD1, 0xD4, 0xE9, 0x01, 0x03, 0x11, 0x68, 0x4B, 0x40, 0x03, 0x40, + 0x4B, 0x40, 0x13, 0x60, 0x22, 0x68, 0xA3, 0x68, 0xC5, 0xE9, 0x00, 0x23, + 0x19, 0x46, 0xE1, 0xE7, 0x78, 0x36, 0x17, 0x00, 0x04, 0xB4, 0x15, 0x00, + 0x58, 0x40, 0x34, 0x40, 0x10, 0xB5, 0x19, 0x46, 0x40, 0xF2, 0x0A, 0x40, + 0x0C, 0x23, 0xFE, 0xF7, 0x0B, 0xF8, 0x00, 0x24, 0xC0, 0xE9, 0x00, 0x44, + 0x84, 0x60, 0xFE, 0xF7, 0x35, 0xF8, 0x20, 0x46, 0x10, 0xBD, 0x00, 0xBF, + 0x30, 0xB5, 0x18, 0x46, 0x83, 0xB0, 0x08, 0x23, 0x0C, 0x46, 0x01, 0x46, + 0x40, 0xF2, 0x03, 0x40, 0xFD, 0xF7, 0xF8, 0xFF, 0x10, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x01, 0x3B, 0x01, 0x2B, 0x05, 0x46, 0x13, 0xD9, 0xD4, 0xE9, + 0x00, 0x32, 0x1A, 0x60, 0x23, 0x68, 0x03, 0x60, 0x19, 0x68, 0x62, 0x68, + 0x41, 0x60, 0xCD, 0xE9, 0x00, 0x11, 0x09, 0x48, 0x11, 0x46, 0xFF, 0xF7, + 0x4B, 0xFE, 0x28, 0x46, 0xFE, 0xF7, 0x10, 0xF8, 0x00, 0x20, 0x03, 0xB0, + 0x30, 0xBD, 0xD4, 0xE9, 0x00, 0x32, 0xC0, 0xE9, 0x00, 0x32, 0x11, 0x46, + 0xED, 0xE7, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x58, 0xB4, 0x15, 0x00, + 0x38, 0xB5, 0x0D, 0x46, 0x40, 0xF2, 0x01, 0x40, 0x19, 0x46, 0x08, 0x23, + 0xFD, 0xF7, 0xCA, 0xFF, 0x29, 0x68, 0x0B, 0x68, 0x04, 0x46, 0xC4, 0xE9, + 0x00, 0x13, 0x1A, 0x46, 0x03, 0x48, 0xFF, 0xF7, 0x29, 0xFE, 0x20, 0x46, + 0xFD, 0xF7, 0xEE, 0xFF, 0x00, 0x20, 0x38, 0xBD, 0x98, 0xB4, 0x15, 0x00, + 0x38, 0xB5, 0x0C, 0x46, 0x40, 0xF2, 0x0E, 0x40, 0x19, 0x46, 0x04, 0x23, + 0xFD, 0xF7, 0xB2, 0xFF, 0x61, 0x68, 0x02, 0x29, 0x05, 0x46, 0x20, 0xD9, + 0x03, 0x29, 0x11, 0xD0, 0x13, 0x48, 0xFF, 0xF7, 0x11, 0xFE, 0x4F, 0xF4, + 0xD2, 0x73, 0x0F, 0x20, 0x1B, 0x68, 0x98, 0x47, 0xC0, 0xB2, 0x28, 0x60, + 0x0F, 0x48, 0xFF, 0xF7, 0x07, 0xFE, 0x28, 0x46, 0xFD, 0xF7, 0xCC, 0xFF, + 0x00, 0x20, 0x38, 0xBD, 0x24, 0x68, 0x0C, 0x48, 0x21, 0x46, 0xFF, 0xF7, + 0xFD, 0xFD, 0x5C, 0xB1, 0xA2, 0x02, 0x01, 0x21, 0x40, 0xF2, 0x1E, 0x40, + 0xFD, 0xF7, 0xEC, 0xFD, 0xE3, 0xE7, 0x22, 0x68, 0x06, 0x48, 0xFF, 0xF7, + 0xF1, 0xFD, 0xDE, 0xE7, 0xE0, 0xF7, 0x70, 0xFA, 0xFE, 0xE7, 0x00, 0xBF, + 0xF4, 0xB4, 0x15, 0x00, 0x08, 0xB5, 0x15, 0x00, 0xE8, 0xB4, 0x15, 0x00, + 0xC8, 0xB4, 0x15, 0x00, 0x30, 0xB5, 0x40, 0xF2, 0x0C, 0x40, 0x83, 0xB0, + 0x0C, 0x46, 0x19, 0x46, 0x04, 0x23, 0xFD, 0xF7, 0x73, 0xFF, 0x05, 0x46, + 0x20, 0x68, 0x00, 0x23, 0x82, 0x07, 0x62, 0x68, 0x2B, 0x60, 0x1C, 0xBF, + 0xFF, 0x23, 0x2B, 0x60, 0x93, 0x07, 0x1C, 0xBF, 0x01, 0x23, 0x2B, 0x60, + 0x04, 0xF1, 0x08, 0x01, 0x12, 0xF0, 0xEA, 0xFA, 0xD4, 0xE9, 0x00, 0x12, + 0x28, 0x68, 0xA3, 0x68, 0x00, 0x90, 0x0A, 0x44, 0x04, 0x48, 0xFF, 0xF7, + 0xC1, 0xFD, 0x28, 0x46, 0xFD, 0xF7, 0x86, 0xFF, 0x00, 0x20, 0x03, 0xB0, + 0x30, 0xBD, 0x00, 0xBF, 0x1C, 0xB5, 0x15, 0x00, 0x70, 0xB5, 0x06, 0x46, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x11, 0x4B, + 0x01, 0x20, 0x18, 0x60, 0x10, 0x4C, 0x11, 0x48, 0x25, 0x68, 0x22, 0xF0, + 0x7F, 0x43, 0x01, 0x35, 0x0A, 0x46, 0x31, 0x46, 0x25, 0x60, 0xFF, 0xF7, + 0xA3, 0xFD, 0x0D, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x05, 0xDB, 0xFC, 0xF7, + 0x41, 0xFF, 0x4F, 0xF0, 0x00, 0x40, 0xFE, 0xF7, 0x1D, 0xFB, 0x23, 0x68, + 0x33, 0xB1, 0x04, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, + 0x02, 0xB1, 0x62, 0xB6, 0x70, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x78, 0xB5, 0x15, 0x00, 0x80, 0xB6, 0x17, 0x00, + 0x70, 0xB5, 0x04, 0x46, 0x72, 0xB6, 0x07, 0x4D, 0x07, 0x48, 0x00, 0x26, + 0x22, 0xF0, 0x7F, 0x43, 0x2E, 0x60, 0x0A, 0x46, 0x21, 0x46, 0xFF, 0xF7, + 0x79, 0xFD, 0x04, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0xFD, 0xD1, 0x70, 0xBD, + 0x38, 0x00, 0x32, 0x40, 0x78, 0xB5, 0x15, 0x00, 0xD0, 0x22, 0x17, 0x00, + 0x10, 0xB4, 0x0C, 0x46, 0x22, 0xF0, 0x7F, 0x43, 0x01, 0x46, 0x22, 0x46, + 0x02, 0x48, 0x5D, 0xF8, 0x04, 0x4B, 0xFF, 0xF7, 0x63, 0xBD, 0x00, 0xBF, + 0x90, 0xB5, 0x15, 0x00, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, + 0x72, 0xB6, 0x07, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x06, 0x4B, 0x1A, 0x68, + 0x51, 0x1C, 0x19, 0x60, 0x29, 0xB1, 0x03, 0x49, 0x1A, 0x60, 0x0B, 0x68, + 0x0A, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x70, 0x47, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x10, 0xB5, 0x06, 0x4C, 0x4F, 0xF4, 0x84, 0x72, + 0x20, 0x46, 0x00, 0x21, 0xDB, 0xF7, 0xD2, 0xFA, 0x4F, 0xF0, 0xFF, 0x32, + 0x02, 0x23, 0xC4, 0xE9, 0x40, 0x23, 0x10, 0xBD, 0xB0, 0xB6, 0x17, 0x00, + 0x08, 0xB5, 0x08, 0x22, 0x00, 0x21, 0x02, 0x48, 0xDB, 0xF7, 0xC4, 0xFA, + 0x00, 0x20, 0x08, 0xBD, 0xB8, 0xB7, 0x17, 0x00, 0xE0, 0xF7, 0xB4, 0xBC, + 0x01, 0x4B, 0xD3, 0xF8, 0x24, 0x31, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, + 0x02, 0x20, 0x70, 0x47, 0xE0, 0xF7, 0xCC, 0xBB, 0x04, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x03, 0x2B, 0x01, 0xD0, 0x01, 0x20, 0x70, 0x47, 0xE0, 0xF7, + 0x5F, 0xBB, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0xE0, 0xF7, 0x6E, 0xBB, + 0x70, 0xB5, 0x04, 0x68, 0x9C, 0xB1, 0x0A, 0x4E, 0x05, 0x46, 0x03, 0xE0, + 0xFE, 0xF7, 0x32, 0xFB, 0x2C, 0x68, 0x64, 0xB1, 0x28, 0x46, 0xFE, 0xF7, + 0x71, 0xFB, 0xE3, 0x68, 0x21, 0x46, 0x30, 0x46, 0x00, 0x2B, 0xF3, 0xD1, + 0xA2, 0x68, 0x2C, 0x68, 0x13, 0x81, 0x00, 0x2C, 0xF2, 0xD1, 0x70, 0xBD, + 0x24, 0x65, 0x17, 0x00, 0x38, 0xB5, 0x14, 0x4B, 0x1B, 0x68, 0x1B, 0x78, + 0x03, 0x2B, 0x00, 0xD0, 0x38, 0xBD, 0x04, 0x46, 0xE0, 0xF7, 0x80, 0xFB, + 0x05, 0x46, 0xB8, 0xB1, 0x4C, 0xF2, 0xDE, 0x03, 0xA3, 0x61, 0x21, 0x46, + 0x1C, 0x22, 0x12, 0xF0, 0x07, 0xFA, 0x0C, 0x4C, 0x23, 0x68, 0x00, 0x2B, + 0xFC, 0xD0, 0x0B, 0x4B, 0x18, 0x68, 0x29, 0x1F, 0x00, 0xF5, 0x07, 0x70, + 0xFE, 0xF7, 0x02, 0xFB, 0x01, 0x23, 0x23, 0x60, 0xBD, 0xE8, 0x38, 0x40, + 0xE0, 0xF7, 0x90, 0xBB, 0xBD, 0xE8, 0x38, 0x40, 0x04, 0x48, 0xFF, 0xF7, + 0xD1, 0xBC, 0x00, 0xBF, 0x78, 0x36, 0x17, 0x00, 0x58, 0x40, 0x04, 0x40, + 0x00, 0x38, 0x18, 0x00, 0xA8, 0xB5, 0x15, 0x00, 0x01, 0x4B, 0xD3, 0xF8, + 0x28, 0x31, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x04, 0x46, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x10, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x0F, 0x4D, 0x10, 0x48, 0x2B, 0x68, 0x01, 0x33, + 0x2B, 0x60, 0xFE, 0xF7, 0xD7, 0xFA, 0x05, 0x2C, 0x03, 0xD8, 0x0D, 0x4A, + 0x13, 0x5D, 0x01, 0x3B, 0x13, 0x55, 0x2B, 0x68, 0x33, 0xB1, 0x07, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x07, 0x4A, 0xD2, 0xF8, 0xF8, 0x31, 0x01, 0x3B, 0xC2, 0xF8, 0xF8, 0x31, + 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x20, 0x58, 0x17, 0x00, 0x74, 0x28, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x0C, 0x4C, 0xDF, 0xF8, 0x3C, 0x80, 0x0C, 0x4F, + 0x0C, 0x4E, 0x04, 0xF5, 0x7C, 0x75, 0x62, 0x69, 0x30, 0x46, 0x13, 0x46, + 0x3A, 0xB1, 0x12, 0x78, 0x21, 0x69, 0x20, 0x2A, 0x0C, 0xBF, 0x42, 0x46, + 0x3A, 0x46, 0xE1, 0xF7, 0xB1, 0xFA, 0x10, 0x34, 0xAC, 0x42, 0xF0, 0xD1, + 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0x24, 0x30, 0x17, 0x00, + 0xC4, 0xB5, 0x15, 0x00, 0xC8, 0xB5, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xF8, 0xB5, 0x10, 0xF8, 0x01, 0x3C, 0x09, 0x2B, 0x00, 0xF1, 0xFF, 0x36, + 0x30, 0xD1, 0x1C, 0x4C, 0x23, 0x68, 0x99, 0x42, 0x0D, 0x46, 0x08, 0xDA, + 0x1A, 0x4F, 0x38, 0x46, 0x00, 0xF0, 0x64, 0xFD, 0x23, 0x68, 0x01, 0x3B, + 0xAB, 0x42, 0x23, 0x60, 0xF7, 0xDC, 0x17, 0x4D, 0xAE, 0x42, 0x19, 0xD9, + 0x16, 0x4F, 0x06, 0xE0, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0x00, 0xF0, + 0x53, 0xFD, 0xAE, 0x42, 0x10, 0xD0, 0x15, 0xF8, 0x01, 0x0B, 0x09, 0x28, + 0xF4, 0xD1, 0x20, 0x68, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x44, 0x00, 0xF0, + 0x49, 0xFD, 0x23, 0x68, 0x23, 0xF0, 0x07, 0x03, 0x08, 0x33, 0xAE, 0x42, + 0x23, 0x60, 0xEE, 0xD1, 0x0A, 0x4A, 0x13, 0x68, 0x01, 0x3B, 0x30, 0x46, + 0x13, 0x60, 0xF8, 0xBD, 0x04, 0x48, 0x00, 0xF0, 0x39, 0xFD, 0x02, 0x4A, + 0x13, 0x68, 0x01, 0x3B, 0x13, 0x60, 0xF1, 0xE7, 0x24, 0x34, 0x17, 0x00, + 0x1C, 0xB8, 0x15, 0x00, 0x28, 0x34, 0x17, 0x00, 0x20, 0xB8, 0x15, 0x00, + 0x68, 0x34, 0x17, 0x00, 0x61, 0xB3, 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, + 0x64, 0x90, 0x16, 0x4F, 0xDF, 0xF8, 0x58, 0x80, 0x0E, 0x46, 0x45, 0x1E, + 0x00, 0x24, 0x08, 0xE0, 0x15, 0xF8, 0x01, 0x1F, 0x38, 0x46, 0xFF, 0xF7, + 0x11, 0xFC, 0x23, 0x07, 0x10, 0xD0, 0xB4, 0x42, 0x13, 0xD0, 0x14, 0xF0, + 0x07, 0x0F, 0x04, 0xF1, 0x01, 0x04, 0xF1, 0xD1, 0x48, 0x46, 0xFF, 0xF7, + 0x05, 0xFC, 0x15, 0xF8, 0x01, 0x1F, 0x38, 0x46, 0xFF, 0xF7, 0x00, 0xFC, + 0x23, 0x07, 0xEE, 0xD1, 0x40, 0x46, 0xFF, 0xF7, 0xFB, 0xFB, 0xB4, 0x42, + 0xEB, 0xD1, 0xBD, 0xE8, 0xF8, 0x43, 0x04, 0x48, 0xFF, 0xF7, 0xF4, 0xBB, + 0x02, 0x48, 0xFF, 0xF7, 0xF1, 0xBB, 0x00, 0xBF, 0xD8, 0xB5, 0x15, 0x00, + 0xB4, 0x79, 0x15, 0x00, 0xD4, 0xB5, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x87, 0xB0, 0x04, 0x93, 0x00, 0x29, 0x7E, 0xD0, 0x04, 0x2A, 0x14, 0x46, + 0x02, 0xD0, 0x53, 0x1E, 0x01, 0x2B, 0x78, 0xD8, 0x65, 0x42, 0x04, 0xFB, + 0x01, 0xF3, 0xDF, 0xF8, 0x8C, 0x91, 0x03, 0x93, 0x05, 0x40, 0x5C, 0x48, + 0x29, 0x46, 0xE1, 0xF7, 0x09, 0xFA, 0x03, 0x9A, 0x2B, 0x0E, 0x10, 0x2A, + 0x17, 0x46, 0x28, 0xBF, 0x10, 0x27, 0x01, 0x2B, 0x68, 0xD0, 0x2B, 0x0D, + 0xB3, 0xF5, 0xA0, 0x6F, 0x64, 0xD0, 0x00, 0x2A, 0x00, 0xF0, 0x9C, 0x80, + 0xDF, 0xF8, 0x60, 0x81, 0xDF, 0xF8, 0x60, 0xA1, 0x2E, 0x46, 0x4F, 0xF0, + 0x00, 0x0B, 0x0A, 0xE0, 0x02, 0x2C, 0x0A, 0xBF, 0x31, 0x88, 0x31, 0x78, + 0x50, 0x46, 0xA3, 0x44, 0xE1, 0xF7, 0xEA, 0xF9, 0x5F, 0x45, 0x26, 0x44, + 0x0A, 0xD9, 0x04, 0x2C, 0x40, 0x46, 0xF1, 0xD1, 0x31, 0x68, 0x48, 0x48, + 0xA3, 0x44, 0xE1, 0xF7, 0xDF, 0xF9, 0x5F, 0x45, 0x26, 0x44, 0xF4, 0xD8, + 0x04, 0x9B, 0xB3, 0xB3, 0x03, 0x9B, 0x0F, 0x2B, 0x7D, 0xD8, 0x4F, 0xF0, + 0x00, 0x08, 0xC7, 0xF1, 0x10, 0x03, 0x04, 0xF1, 0xFF, 0x3A, 0x05, 0x94, + 0xDF, 0xF8, 0x14, 0xB1, 0x44, 0x46, 0x98, 0x46, 0x04, 0xE0, 0x58, 0x46, + 0x00, 0xF0, 0x9A, 0xFC, 0xA0, 0x45, 0x0C, 0xD0, 0x1A, 0xEA, 0x04, 0x0F, + 0x04, 0xF1, 0x01, 0x04, 0xF5, 0xD1, 0x20, 0x20, 0x00, 0xF0, 0x8E, 0xFC, + 0x58, 0x46, 0x00, 0xF0, 0x8D, 0xFC, 0xA0, 0x45, 0xF2, 0xD1, 0x34, 0x48, + 0x05, 0x9C, 0x00, 0xF0, 0x87, 0xFC, 0x03, 0x9B, 0x00, 0x2B, 0x4D, 0xD0, + 0x4F, 0xF0, 0x00, 0x08, 0x15, 0xF8, 0x08, 0x00, 0xA0, 0xF1, 0x1F, 0x03, + 0x5F, 0x2B, 0x88, 0xBF, 0x2E, 0x20, 0x08, 0xF1, 0x01, 0x08, 0x00, 0xF0, + 0x75, 0xFC, 0x47, 0x45, 0xF2, 0xD8, 0x35, 0x46, 0x29, 0x48, 0x00, 0xF0, + 0x71, 0xFC, 0x03, 0x9B, 0xDB, 0x1B, 0x03, 0x93, 0x8D, 0xD1, 0x07, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x03, 0x9B, 0x8B, 0xB3, 0xDF, 0xF8, 0x84, 0xA0, + 0x4F, 0xF0, 0x00, 0x08, 0x09, 0xE0, 0xCD, 0xF8, 0x00, 0xC0, 0xE1, 0xF7, + 0x8D, 0xF9, 0x08, 0xF1, 0x04, 0x08, 0x47, 0x45, 0x05, 0xF1, 0x04, 0x05, + 0x1A, 0xD9, 0x28, 0x46, 0xDD, 0xF7, 0xEE, 0xF9, 0x04, 0x2C, 0x06, 0x46, + 0x4F, 0xEA, 0x10, 0x6C, 0xC0, 0xF3, 0x07, 0x43, 0xC0, 0xF3, 0x07, 0x22, + 0xC1, 0xB2, 0x48, 0x46, 0x0F, 0xD0, 0x02, 0x2C, 0xE5, 0xD1, 0x15, 0x48, + 0x32, 0x0C, 0xB1, 0xB2, 0x08, 0xF1, 0x04, 0x08, 0xE1, 0xF7, 0x70, 0xF9, + 0x47, 0x45, 0x05, 0xF1, 0x04, 0x05, 0xE4, 0xD8, 0x00, 0x23, 0x04, 0x93, + 0xC6, 0xE7, 0x31, 0x46, 0x50, 0x46, 0xE1, 0xF7, 0x65, 0xF9, 0xD6, 0xE7, + 0x0A, 0x48, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0x00, 0xF0, 0x30, 0xBC, + 0x04, 0x9B, 0x00, 0x2B, 0xB8, 0xD0, 0x2E, 0x46, 0x81, 0xE7, 0x04, 0x48, + 0x00, 0xF0, 0x28, 0xFC, 0xA2, 0xE7, 0x00, 0xBF, 0xE0, 0xB5, 0x15, 0x00, + 0xB8, 0x89, 0x15, 0x00, 0x1C, 0xB6, 0x15, 0x00, 0xD0, 0x79, 0x15, 0x00, + 0xE8, 0xB5, 0x15, 0x00, 0xF4, 0xB5, 0x15, 0x00, 0x14, 0xB6, 0x15, 0x00, + 0x0C, 0xB6, 0x15, 0x00, 0xD4, 0xB5, 0x15, 0x00, 0x10, 0xB5, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x22, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x22, 0x4C, 0x22, 0x48, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, + 0xFE, 0xF7, 0x1E, 0xF9, 0x20, 0x48, 0xFE, 0xF7, 0x1B, 0xF9, 0x20, 0x49, + 0x1D, 0x48, 0xFE, 0xF7, 0x1B, 0xF9, 0x1F, 0x49, 0x1B, 0x48, 0xFE, 0xF7, + 0x17, 0xF9, 0x1E, 0x49, 0x19, 0x48, 0xFE, 0xF7, 0x13, 0xF9, 0x1D, 0x49, + 0x17, 0x48, 0xFE, 0xF7, 0x0F, 0xF9, 0x23, 0x68, 0x33, 0xB1, 0x13, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x01, 0x22, 0x00, 0xF0, 0xFC, 0xFB, + 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x04, 0x22, 0x00, 0xF0, 0xF6, 0xFB, + 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x03, 0x22, 0x00, 0xF0, 0xF0, 0xFB, + 0x17, 0x4B, 0x18, 0x49, 0x18, 0x48, 0x04, 0x22, 0x00, 0xF0, 0xEA, 0xFB, + 0xBD, 0xE8, 0x10, 0x40, 0x16, 0x4B, 0x17, 0x49, 0x17, 0x48, 0x02, 0x22, + 0x00, 0xF0, 0xE2, 0xBB, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0xD8, 0xB8, 0x17, 0x00, 0xC0, 0xB7, 0x17, 0x00, 0xC8, 0xB7, 0x17, 0x00, + 0x0C, 0xB8, 0x17, 0x00, 0x50, 0xB8, 0x17, 0x00, 0x94, 0xB8, 0x17, 0x00, + 0x69, 0x4D, 0x14, 0x00, 0x24, 0xB6, 0x15, 0x00, 0x30, 0xB6, 0x15, 0x00, + 0x61, 0x56, 0x14, 0x00, 0x38, 0xB6, 0x15, 0x00, 0x7C, 0xAB, 0x15, 0x00, + 0x2D, 0x57, 0x14, 0x00, 0x4C, 0xB6, 0x15, 0x00, 0x58, 0xB6, 0x15, 0x00, + 0xED, 0x55, 0x14, 0x00, 0x5C, 0xB6, 0x15, 0x00, 0x68, 0xB6, 0x15, 0x00, + 0x99, 0x57, 0x14, 0x00, 0x6C, 0xB6, 0x15, 0x00, 0x7C, 0xB6, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x41, 0x54, 0x4D, 0x55, 0x4E, 0x29, 0x68, 0x31, 0x60, + 0x17, 0x28, 0x04, 0x46, 0x10, 0xD8, 0x17, 0x28, 0x00, 0xF2, 0x8E, 0x80, + 0xDF, 0xE8, 0x00, 0xF0, 0x15, 0x8C, 0x8C, 0x71, 0x8C, 0x8C, 0x8C, 0x8C, + 0x48, 0x8C, 0x1A, 0x8C, 0x8C, 0x1A, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, + 0x8C, 0x55, 0x8C, 0x60, 0x7F, 0x28, 0x39, 0xD0, 0x49, 0x4F, 0x3B, 0x68, + 0x3D, 0x2B, 0x65, 0xDD, 0x07, 0x20, 0x00, 0xF0, 0x75, 0xFB, 0x4F, 0xF0, + 0xFF, 0x34, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x44, 0x4E, 0x45, 0x48, + 0x33, 0x68, 0xDF, 0xF8, 0x20, 0x81, 0x00, 0x22, 0x1A, 0x70, 0x00, 0xF0, + 0x69, 0xFB, 0x34, 0x68, 0xA4, 0xEB, 0x08, 0x04, 0x00, 0x2C, 0xEE, 0xDB, + 0x0F, 0xD1, 0x3F, 0x48, 0x00, 0xF0, 0x60, 0xFB, 0x00, 0x24, 0x3D, 0x48, + 0x12, 0xF0, 0x70, 0xF9, 0x38, 0x4B, 0x28, 0x60, 0x00, 0x22, 0xC6, 0xF8, + 0x00, 0x80, 0x1A, 0x60, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x38, 0x48, + 0xFE, 0xF7, 0xB2, 0xF8, 0x07, 0x46, 0x00, 0x28, 0x48, 0xD0, 0x41, 0x46, + 0x04, 0x30, 0x12, 0xF0, 0xED, 0xF8, 0x34, 0x48, 0x39, 0x46, 0xFE, 0xF7, + 0x63, 0xF8, 0xE4, 0xE7, 0x2C, 0x4B, 0x2D, 0x4E, 0x1B, 0x68, 0x30, 0x68, + 0x0B, 0xB1, 0xFF, 0xF7, 0xC9, 0xFD, 0x4F, 0xF0, 0xFF, 0x34, 0x30, 0x60, + 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x27, 0x4A, 0x25, 0x4B, 0x2B, 0x49, + 0x11, 0x60, 0x4F, 0xF0, 0xFF, 0x34, 0x00, 0x22, 0x1A, 0x60, 0x20, 0x46, + 0xBD, 0xE8, 0xF0, 0x81, 0x20, 0x4F, 0x21, 0x4E, 0x3B, 0x68, 0x30, 0x68, + 0x0B, 0xB9, 0xAE, 0xE7, 0x29, 0x68, 0xFF, 0xF7, 0xAF, 0xFD, 0x3B, 0x68, + 0x30, 0x60, 0x00, 0x2B, 0xA7, 0xDD, 0x03, 0x78, 0x20, 0x2B, 0xF5, 0xD1, + 0xA3, 0xE7, 0xDF, 0xF8, 0x78, 0x80, 0x18, 0x4E, 0x00, 0x23, 0x88, 0xF8, + 0x00, 0x30, 0xB0, 0xE7, 0x01, 0x31, 0x20, 0x46, 0x31, 0x60, 0x00, 0xF0, + 0x0D, 0xFB, 0x13, 0x49, 0x0B, 0x68, 0x1C, 0x70, 0x3A, 0x68, 0x01, 0x33, + 0x01, 0x32, 0x0B, 0x60, 0x3A, 0x60, 0x4F, 0xF0, 0xFF, 0x34, 0x8E, 0xE7, + 0x13, 0x48, 0x00, 0xF0, 0x01, 0xFB, 0xA0, 0xE7, 0x0A, 0x4F, 0x3B, 0x68, + 0x3D, 0x2B, 0x81, 0xDC, 0x09, 0x28, 0xE5, 0xD1, 0x0F, 0x48, 0x01, 0xF0, + 0x07, 0x01, 0x08, 0x44, 0x00, 0xF0, 0xF4, 0xFA, 0x33, 0x68, 0x23, 0xF0, + 0x07, 0x03, 0x08, 0x33, 0x33, 0x60, 0xDE, 0xE7, 0x6C, 0x34, 0x17, 0x00, + 0x24, 0x34, 0x17, 0x00, 0x68, 0x34, 0x17, 0x00, 0xD4, 0x22, 0x17, 0x00, + 0xD0, 0x79, 0x15, 0x00, 0xA0, 0xB6, 0x15, 0x00, 0xD8, 0xB8, 0x17, 0x00, + 0xC0, 0xB7, 0x17, 0x00, 0x28, 0x34, 0x17, 0x00, 0x84, 0xB6, 0x15, 0x00, + 0x20, 0xB8, 0x15, 0x00, 0xF8, 0xB5, 0x0C, 0x4D, 0x2C, 0x68, 0x3F, 0x2C, + 0x0D, 0xD8, 0x0B, 0x4F, 0x4F, 0xEA, 0x04, 0x1C, 0x07, 0xEB, 0x04, 0x16, + 0x01, 0x34, 0x47, 0xF8, 0x0C, 0x00, 0xC6, 0xE9, 0x01, 0x12, 0xF3, 0x60, + 0x2C, 0x60, 0x00, 0x20, 0xF8, 0xBD, 0x05, 0x48, 0xE0, 0xF7, 0xF0, 0xFF, + 0x4F, 0xF0, 0xFF, 0x30, 0xF8, 0xBD, 0x00, 0xBF, 0x20, 0x30, 0x17, 0x00, + 0x24, 0x30, 0x17, 0x00, 0xA8, 0xB6, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x95, 0xB0, 0xEF, 0xF3, 0x10, 0x83, 0xDA, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x76, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDF, 0xF8, 0xFC, 0xB1, 0x75, 0x48, + 0xDB, 0xF8, 0x00, 0x30, 0x01, 0x33, 0xCB, 0xF8, 0x00, 0x30, 0xFE, 0xF7, + 0x05, 0xF8, 0xDB, 0xF8, 0x00, 0x30, 0x06, 0x46, 0x3B, 0xB1, 0x6E, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0xCB, 0xF8, 0x00, 0x30, 0x0B, 0xB9, 0x02, 0xB1, + 0x62, 0xB6, 0x00, 0x2E, 0x00, 0xF0, 0x94, 0x80, 0x33, 0x1D, 0x03, 0xAC, + 0x01, 0x22, 0x4F, 0xF0, 0x00, 0x0C, 0x57, 0x1E, 0x3D, 0x46, 0x19, 0x46, + 0x13, 0xF8, 0x01, 0x0B, 0x20, 0x28, 0xFA, 0xD0, 0x09, 0x28, 0xF8, 0xD0, + 0x00, 0x28, 0x00, 0xF0, 0xA0, 0x80, 0x22, 0x28, 0x00, 0xF0, 0x83, 0x80, + 0x21, 0x60, 0x08, 0x78, 0x15, 0x46, 0x00, 0x28, 0x00, 0xF0, 0xAC, 0x80, + 0x0B, 0x46, 0x06, 0xE0, 0x09, 0x28, 0x06, 0xD0, 0x13, 0xF8, 0x01, 0x0F, + 0x00, 0x28, 0x00, 0xF0, 0xA3, 0x80, 0x20, 0x28, 0xF6, 0xD1, 0x19, 0x78, + 0x00, 0x29, 0x00, 0xF0, 0x9D, 0x80, 0x01, 0x32, 0x11, 0x2A, 0x03, 0xF8, + 0x01, 0xCB, 0x04, 0xF1, 0x04, 0x04, 0xD4, 0xD1, 0x52, 0x48, 0x10, 0x21, + 0xE0, 0xF7, 0x8E, 0xFF, 0x10, 0x25, 0xDD, 0xF8, 0x0C, 0x90, 0x2E, 0x21, + 0x48, 0x46, 0x11, 0xF0, 0x95, 0xFF, 0x00, 0x28, 0x00, 0xF0, 0x83, 0x80, + 0xA0, 0xEB, 0x09, 0x04, 0x4B, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x28, 0xDD, + 0x4A, 0x4F, 0x01, 0x95, 0x4F, 0xF0, 0x00, 0x08, 0xC2, 0x46, 0x3D, 0x46, + 0x05, 0xE0, 0x46, 0x4B, 0x1A, 0x68, 0x92, 0x45, 0x07, 0xF1, 0x10, 0x07, + 0x16, 0xDA, 0x39, 0x68, 0x22, 0x46, 0x48, 0x46, 0x0A, 0xF1, 0x01, 0x0A, + 0x12, 0xF0, 0xBE, 0xF8, 0x00, 0x28, 0xF0, 0xD1, 0x38, 0x68, 0x12, 0xF0, + 0x4B, 0xF8, 0x84, 0x42, 0x43, 0xD0, 0x3C, 0x4B, 0x1A, 0x68, 0x92, 0x45, + 0x3D, 0x46, 0x08, 0xF1, 0x01, 0x08, 0x07, 0xF1, 0x10, 0x07, 0xE8, 0xDB, + 0xB8, 0xF1, 0x01, 0x0F, 0x2B, 0x46, 0x01, 0x9D, 0x37, 0xD0, 0x03, 0x99, + 0x36, 0x48, 0xE0, 0xF7, 0x51, 0xFF, 0x36, 0x48, 0x00, 0xF0, 0x20, 0xFA, + 0x35, 0x48, 0x00, 0xF0, 0x1D, 0xFA, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x2A, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xDB, 0xF8, + 0x00, 0x30, 0x30, 0x48, 0x01, 0x33, 0x31, 0x46, 0xCB, 0xF8, 0x00, 0x30, + 0xFD, 0xF7, 0x2A, 0xFF, 0x25, 0x48, 0xFD, 0xF7, 0x6B, 0xFF, 0xDB, 0xF8, + 0x00, 0x30, 0x06, 0x46, 0x00, 0x2B, 0x7F, 0xF4, 0x64, 0xAF, 0x00, 0x2E, + 0x7F, 0xF4, 0x6C, 0xAF, 0x15, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4B, 0x1C, + 0x23, 0x60, 0x49, 0x78, 0x15, 0x46, 0x19, 0xB9, 0x28, 0xE0, 0x13, 0xF8, + 0x01, 0x1F, 0x29, 0xB3, 0x22, 0x29, 0xFA, 0xD1, 0x81, 0xE7, 0x01, 0x9D, + 0x3B, 0x46, 0x9A, 0x68, 0xAA, 0x42, 0x24, 0xDB, 0xDB, 0x68, 0x00, 0x2B, + 0xC8, 0xD0, 0x28, 0x46, 0x03, 0xA9, 0x98, 0x47, 0x00, 0x28, 0xC3, 0xD0, + 0xBF, 0xE7, 0x14, 0xAB, 0x03, 0xEB, 0x87, 0x03, 0x43, 0xF8, 0x44, 0x0C, + 0x00, 0x2F, 0xB8, 0xD0, 0xDD, 0xF8, 0x0C, 0x90, 0x2E, 0x21, 0x48, 0x46, + 0x11, 0xF0, 0x12, 0xFF, 0x00, 0x28, 0x7F, 0xF4, 0x7D, 0xAF, 0x48, 0x46, + 0x11, 0xF0, 0xE4, 0xFF, 0x04, 0x46, 0x79, 0xE7, 0x14, 0xAB, 0x03, 0xEB, + 0x82, 0x02, 0x00, 0x23, 0x42, 0xF8, 0x44, 0x3C, 0x67, 0xE7, 0x59, 0x68, + 0x0A, 0x48, 0xE0, 0xF7, 0xF1, 0xFE, 0x9E, 0xE7, 0x38, 0x61, 0x17, 0x00, + 0xC0, 0xB7, 0x17, 0x00, 0xC4, 0xB6, 0x15, 0x00, 0x20, 0x30, 0x17, 0x00, + 0x24, 0x30, 0x17, 0x00, 0xE4, 0xB6, 0x15, 0x00, 0x08, 0xB7, 0x15, 0x00, + 0xA0, 0xB6, 0x15, 0x00, 0xD8, 0xB8, 0x17, 0x00, 0xFC, 0xB6, 0x15, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0xF0, 0xB4, 0x05, 0x78, 0x30, 0x2D, 0x2B, 0xD0, + 0x00, 0x2A, 0x08, 0xBF, 0x0A, 0x22, 0x2D, 0x2D, 0x32, 0xD0, 0x00, 0x27, + 0x00, 0x26, 0xA5, 0xF1, 0x30, 0x03, 0x5F, 0xFA, 0x83, 0xFC, 0x25, 0xF0, + 0x20, 0x04, 0xBC, 0xF1, 0x09, 0x0F, 0xA4, 0xF1, 0x41, 0x04, 0x12, 0xD9, + 0x05, 0x2C, 0x06, 0xD9, 0x07, 0xB1, 0x76, 0x42, 0x01, 0xB1, 0x08, 0x60, + 0x30, 0x46, 0xF0, 0xBC, 0x70, 0x47, 0xA5, 0xF1, 0x61, 0x04, 0xA5, 0xF1, + 0x20, 0x03, 0x19, 0x2C, 0xDB, 0xB2, 0x94, 0xBF, 0x37, 0x3B, 0xA5, 0xF1, + 0x37, 0x03, 0x93, 0x42, 0xEC, 0xD2, 0x10, 0xF8, 0x01, 0x5F, 0x02, 0xFB, + 0x06, 0x36, 0xDA, 0xE7, 0x45, 0x78, 0x78, 0x2D, 0x00, 0xF1, 0x01, 0x03, + 0x0A, 0xD0, 0x18, 0x46, 0x00, 0x2A, 0xCE, 0xD1, 0x2D, 0x2D, 0x4F, 0xF0, + 0x08, 0x02, 0xCC, 0xD1, 0x01, 0x27, 0x45, 0x78, 0x38, 0x44, 0xC9, 0xE7, + 0x84, 0x78, 0xA4, 0xF1, 0x30, 0x06, 0x09, 0x2E, 0x09, 0xD9, 0x24, 0xF0, + 0x20, 0x06, 0x41, 0x3E, 0x05, 0x2E, 0x04, 0xD9, 0x3A, 0xB9, 0x17, 0x46, + 0x18, 0x46, 0x08, 0x22, 0xBA, 0xE7, 0x02, 0x30, 0x25, 0x46, 0x10, 0x22, + 0xB3, 0xE7, 0x18, 0x46, 0xB3, 0xE7, 0x00, 0xBF, 0x38, 0xB5, 0x0A, 0x22, + 0x0C, 0x46, 0x05, 0x46, 0x48, 0x68, 0x00, 0x21, 0xFF, 0xF7, 0xA2, 0xFF, + 0xC0, 0xB1, 0x01, 0x28, 0x10, 0xD1, 0x02, 0x2D, 0x1C, 0xDD, 0x10, 0x22, + 0xA0, 0x68, 0x00, 0x21, 0xFF, 0xF7, 0x98, 0xFF, 0x0E, 0x4B, 0x1B, 0x68, + 0x01, 0x46, 0x19, 0x80, 0x0D, 0x48, 0x89, 0xB2, 0xFF, 0xF7, 0x34, 0xF8, + 0x00, 0x20, 0x38, 0xBD, 0x01, 0x46, 0x0B, 0x48, 0xFF, 0xF7, 0x2E, 0xF8, + 0x00, 0x20, 0x38, 0xBD, 0x06, 0x4B, 0x09, 0x48, 0x1B, 0x68, 0x19, 0x88, + 0xFF, 0xF7, 0x26, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x06, 0x48, 0xFF, 0xF7, + 0x21, 0xF8, 0x00, 0x20, 0x38, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x2C, 0xB7, 0x15, 0x00, 0x50, 0xB7, 0x15, 0x00, 0x18, 0xB7, 0x15, 0x00, + 0x40, 0xB7, 0x15, 0x00, 0x01, 0x28, 0xF8, 0xB5, 0x2A, 0xDD, 0x0D, 0x46, + 0x04, 0x46, 0x10, 0x22, 0x68, 0x68, 0x00, 0x21, 0xFF, 0xF7, 0x66, 0xFF, + 0x02, 0x2C, 0x06, 0x46, 0x0D, 0xD1, 0x03, 0x0E, 0x01, 0x2B, 0x22, 0xD0, + 0x03, 0x0D, 0xB3, 0xF5, 0xA0, 0x6F, 0x1E, 0xD0, 0x32, 0x68, 0x24, 0x48, + 0x31, 0x46, 0xFE, 0xF7, 0xFB, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0x22, + 0xA8, 0x68, 0x11, 0x46, 0x00, 0xF0, 0x18, 0xF9, 0x03, 0x2C, 0x07, 0x46, + 0x19, 0xD1, 0x04, 0x20, 0x01, 0x2F, 0x1C, 0xD0, 0xC2, 0xB2, 0x39, 0x46, + 0x30, 0x46, 0x00, 0x23, 0xFF, 0xF7, 0xFE, 0xFB, 0x00, 0x20, 0xF8, 0xBD, + 0x18, 0x48, 0xFE, 0xF7, 0xE3, 0xFF, 0x01, 0x20, 0xF8, 0xBD, 0x30, 0x46, + 0xDC, 0xF7, 0x7E, 0xFE, 0x31, 0x46, 0x02, 0x46, 0x12, 0x48, 0xFE, 0xF7, + 0xD9, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0x22, 0xE8, 0x68, 0x11, 0x46, + 0xFF, 0xF7, 0x2E, 0xFF, 0xE0, 0xE7, 0x33, 0x0E, 0x01, 0x2B, 0xEC, 0xD0, + 0x33, 0x0D, 0xB3, 0xF5, 0xA0, 0x6F, 0xE8, 0xD0, 0x01, 0x28, 0x06, 0xD1, + 0x32, 0x78, 0x0A, 0x48, 0x31, 0x46, 0xFE, 0xF7, 0xC3, 0xFF, 0x00, 0x20, + 0xF8, 0xBD, 0x02, 0x28, 0xBE, 0xD1, 0x32, 0x88, 0x06, 0x48, 0x92, 0xB2, + 0x31, 0x46, 0xFE, 0xF7, 0xB9, 0xFF, 0x00, 0x20, 0xF8, 0xBD, 0x00, 0xBF, + 0x7C, 0xB7, 0x15, 0x00, 0x64, 0xB7, 0x15, 0x00, 0x90, 0xB7, 0x15, 0x00, + 0xA4, 0xB7, 0x15, 0x00, 0x02, 0x28, 0x38, 0xB5, 0x21, 0xDD, 0x0D, 0x46, + 0x10, 0x22, 0x68, 0x68, 0x00, 0x21, 0xFF, 0xF7, 0x01, 0xFF, 0x10, 0x22, + 0x04, 0x46, 0x00, 0x21, 0xA8, 0x68, 0xFF, 0xF7, 0xFB, 0xFE, 0x21, 0x46, + 0x02, 0x46, 0x05, 0x46, 0x0F, 0x48, 0xFE, 0xF7, 0x99, 0xFF, 0x23, 0x0E, + 0x01, 0x2B, 0x06, 0xD0, 0x23, 0x0D, 0xB3, 0xF5, 0xA0, 0x6F, 0x0D, 0xD0, + 0x25, 0x60, 0x00, 0x20, 0x38, 0xBD, 0x20, 0x46, 0x29, 0x46, 0xDC, 0xF7, + 0x53, 0xFE, 0x00, 0x20, 0x38, 0xBD, 0x07, 0x48, 0xFE, 0xF7, 0x86, 0xFF, + 0x01, 0x20, 0x38, 0xBD, 0xB4, 0xF1, 0xA0, 0x4F, 0xF1, 0xD1, 0x28, 0x46, + 0xDC, 0xF7, 0xF6, 0xFD, 0x00, 0x20, 0x38, 0xBD, 0x7C, 0xB7, 0x15, 0x00, + 0xB8, 0xB7, 0x15, 0x00, 0x02, 0x28, 0x38, 0xB5, 0x46, 0xDC, 0x01, 0x28, + 0x32, 0xD0, 0x00, 0x22, 0x48, 0x68, 0x11, 0x46, 0xFF, 0xF7, 0xCA, 0xFE, + 0x25, 0x4A, 0x26, 0x4B, 0x02, 0xFB, 0x00, 0xF2, 0x9A, 0x42, 0x04, 0x46, + 0x3E, 0xD8, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x21, 0x4B, 0x01, 0x21, 0x19, 0x60, 0x21, 0x4D, 0x21, 0x49, 0x2B, 0x68, + 0x0A, 0x60, 0x01, 0x33, 0x2B, 0x60, 0x82, 0xB1, 0x1F, 0x49, 0x09, 0x78, + 0xF9, 0xB9, 0x33, 0xB1, 0x1A, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x1B, 0x48, 0x21, 0x46, 0xFE, 0xF7, + 0x49, 0xFF, 0x00, 0x20, 0x38, 0xBD, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, + 0xFC, 0xF7, 0xE8, 0xFF, 0x2B, 0x68, 0xEA, 0xE7, 0x12, 0x4A, 0x15, 0x4B, + 0x11, 0x68, 0x15, 0x48, 0xA3, 0xFB, 0x01, 0x31, 0x89, 0x0C, 0xFE, 0xF7, + 0x37, 0xFF, 0x00, 0x20, 0x38, 0xBD, 0x01, 0x21, 0x40, 0xF2, 0x1F, 0x40, + 0xFC, 0xF7, 0x26, 0xFF, 0x2B, 0x68, 0xD8, 0xE7, 0x0E, 0x48, 0xFE, 0xF7, + 0x2B, 0xFF, 0x4F, 0xF0, 0xFF, 0x30, 0x38, 0xBD, 0x0C, 0x48, 0xFE, 0xF7, + 0x25, 0xFF, 0x4F, 0xF0, 0xFF, 0x30, 0x38, 0xBD, 0x40, 0x42, 0x0F, 0x00, + 0xFF, 0xA2, 0xE1, 0x11, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x6C, 0x60, 0x17, 0x00, 0x64, 0x28, 0x17, 0x00, 0xF8, 0xB7, 0x15, 0x00, + 0x83, 0xDE, 0x1B, 0x43, 0xE8, 0xB7, 0x15, 0x00, 0xD0, 0xB7, 0x15, 0x00, + 0x08, 0xB8, 0x15, 0x00, 0x10, 0xB5, 0x07, 0x4C, 0x01, 0xE0, 0x04, 0x2A, + 0x05, 0xD0, 0x23, 0x68, 0x03, 0xF0, 0x0F, 0x02, 0xDB, 0x07, 0xF8, 0xD5, + 0x10, 0xBD, 0xE0, 0xF7, 0x1D, 0xFC, 0xFF, 0xF7, 0x6B, 0xFC, 0xF4, 0xE7, + 0x08, 0x10, 0x04, 0x40, 0xE0, 0xF7, 0x0A, 0xBC, 0x10, 0xB5, 0x04, 0x46, + 0x00, 0x78, 0x28, 0xB1, 0xE0, 0xF7, 0x04, 0xFC, 0x14, 0xF8, 0x01, 0x0F, + 0x00, 0x28, 0xF9, 0xD1, 0x10, 0xBD, 0x00, 0xBF, 0x10, 0xB5, 0x04, 0x4C, + 0xD4, 0xF8, 0xB8, 0x30, 0x98, 0x47, 0xD4, 0xF8, 0x28, 0x33, 0xBD, 0xE8, + 0x10, 0x40, 0x18, 0x47, 0x88, 0x1A, 0x17, 0x00, 0xFF, 0xF7, 0x2E, 0xBD, + 0xFF, 0xF7, 0x0C, 0xBD, 0xFF, 0xF7, 0x36, 0xBE, 0x70, 0xB4, 0x02, 0x68, + 0x1C, 0x4C, 0x2D, 0x21, 0xA3, 0x89, 0x11, 0x70, 0x02, 0x68, 0x1A, 0x21, + 0x51, 0x70, 0x23, 0xF0, 0x1C, 0x03, 0x02, 0x68, 0x9B, 0xB2, 0x43, 0xF0, + 0x0C, 0x03, 0x53, 0x80, 0xA3, 0x7B, 0x13, 0x71, 0x06, 0x68, 0x04, 0xF1, + 0x0F, 0x03, 0x04, 0xF1, 0x1F, 0x05, 0x13, 0xF8, 0x01, 0x1B, 0x1A, 0x1B, + 0x32, 0x44, 0xAB, 0x42, 0x02, 0xF8, 0x0B, 0x1C, 0xF7, 0xD1, 0x01, 0x68, + 0x0E, 0x4A, 0x00, 0x23, 0xCB, 0x73, 0x01, 0x68, 0x0B, 0x74, 0x05, 0x68, + 0x23, 0x8C, 0xA5, 0xF8, 0x15, 0x30, 0x05, 0xF1, 0x17, 0x03, 0x1B, 0x35, + 0x12, 0xF8, 0x01, 0x1B, 0x03, 0xF8, 0x01, 0x1B, 0xAB, 0x42, 0xF9, 0xD1, + 0x03, 0x68, 0x94, 0xF8, 0x28, 0x20, 0xDA, 0x76, 0x03, 0x68, 0x1C, 0x33, + 0x03, 0x60, 0x70, 0xBC, 0x1C, 0x20, 0x70, 0x47, 0xE4, 0xB8, 0x17, 0x00, + 0x08, 0xB9, 0x17, 0x00, 0x03, 0x68, 0x28, 0x4A, 0xFF, 0x21, 0x70, 0xB4, + 0x19, 0x70, 0x03, 0x68, 0x23, 0x21, 0x99, 0x70, 0x05, 0x68, 0xEB, 0x1C, + 0x05, 0xF1, 0x09, 0x04, 0x12, 0xF8, 0x01, 0x1F, 0x03, 0xF8, 0x01, 0x1B, + 0xA3, 0x42, 0xF9, 0xD1, 0x20, 0x4A, 0xA2, 0xF1, 0x41, 0x01, 0x02, 0xF1, + 0x0B, 0x06, 0xA2, 0xF1, 0x38, 0x03, 0x12, 0xF8, 0x01, 0x4F, 0x5B, 0x1A, + 0xB2, 0x42, 0x5C, 0x55, 0xF7, 0xD1, 0x91, 0xF8, 0x42, 0x30, 0xB1, 0xF8, + 0x50, 0x40, 0xB1, 0xF8, 0x4E, 0x20, 0xEC, 0x82, 0x1C, 0x07, 0xAA, 0x82, + 0x05, 0xF1, 0x18, 0x06, 0x4F, 0xEA, 0x63, 0x02, 0x07, 0xD5, 0xB1, 0xF8, + 0x52, 0x40, 0xB1, 0xF8, 0x54, 0x30, 0x6B, 0x83, 0x2C, 0x83, 0x05, 0xF1, + 0x1C, 0x06, 0x13, 0x07, 0x04, 0xD5, 0xB1, 0xF8, 0x56, 0x30, 0x33, 0x80, + 0x73, 0x80, 0x04, 0x36, 0x0C, 0x4C, 0x32, 0x46, 0x14, 0xF8, 0x01, 0x5F, + 0x15, 0x70, 0x91, 0xF8, 0x75, 0x51, 0x93, 0x1B, 0x9D, 0x42, 0x02, 0xF1, + 0x01, 0x02, 0xF5, 0xDA, 0x03, 0x68, 0xD2, 0x1A, 0x91, 0x1E, 0x59, 0x70, + 0x03, 0x68, 0x13, 0x44, 0x03, 0x60, 0x70, 0xBC, 0x10, 0x46, 0x70, 0x47, + 0x1F, 0xB9, 0x17, 0x00, 0x25, 0xB9, 0x17, 0x00, 0x3D, 0xB9, 0x17, 0x00, + 0x70, 0xB4, 0x0F, 0x4C, 0x03, 0x46, 0x22, 0x6B, 0x09, 0xB1, 0x22, 0xF4, + 0xC0, 0x52, 0x19, 0x68, 0xBF, 0x20, 0x08, 0x70, 0x19, 0x68, 0x0C, 0x20, + 0x48, 0x70, 0x18, 0x68, 0xA1, 0x8E, 0xC0, 0xF8, 0x02, 0x20, 0x1A, 0x68, + 0x60, 0x8F, 0xE6, 0x8E, 0x25, 0x8F, 0xD1, 0x80, 0x02, 0xF1, 0x0E, 0x01, + 0x16, 0x81, 0x55, 0x81, 0x90, 0x81, 0x70, 0xBC, 0x0E, 0x20, 0x19, 0x60, + 0x70, 0x47, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, 0x03, 0x68, 0x10, 0xB4, + 0xC7, 0x24, 0x1C, 0x70, 0x03, 0x68, 0x01, 0x24, 0x5C, 0x70, 0x03, 0x68, + 0x42, 0xEA, 0x01, 0x11, 0x99, 0x70, 0x03, 0x68, 0x5D, 0xF8, 0x04, 0x4B, + 0x03, 0x33, 0x03, 0x60, 0x03, 0x20, 0x70, 0x47, 0x03, 0x68, 0x46, 0x22, + 0x1A, 0x70, 0x03, 0x68, 0x05, 0x22, 0x5A, 0x70, 0x03, 0x68, 0x70, 0x22, + 0x9A, 0x70, 0x02, 0x68, 0x00, 0x23, 0xD3, 0x70, 0x02, 0x68, 0x13, 0x71, + 0x02, 0x68, 0x53, 0x71, 0x02, 0x68, 0x93, 0x71, 0x03, 0x68, 0x07, 0x33, + 0x03, 0x60, 0x07, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x30, 0xB4, 0x02, 0x9C, + 0x01, 0x80, 0x42, 0x80, 0x83, 0x80, 0x84, 0xB1, 0x10, 0x22, 0x80, 0x23, + 0x82, 0x71, 0xC3, 0x71, 0xE5, 0x18, 0x22, 0x46, 0x13, 0x46, 0x08, 0x33, + 0x12, 0xF8, 0x01, 0x1B, 0x1B, 0x1B, 0xAA, 0x42, 0x19, 0x54, 0xF7, 0xD1, + 0x88, 0x20, 0x30, 0xBC, 0x70, 0x47, 0x06, 0x20, 0x30, 0xBC, 0x70, 0x47, + 0x01, 0x80, 0x02, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, + 0x8F, 0xB0, 0x1F, 0x46, 0x1A, 0x9E, 0x03, 0x93, 0x34, 0x8F, 0xB6, 0xF8, + 0x36, 0x80, 0x0D, 0x46, 0x03, 0x46, 0x01, 0x2C, 0x38, 0x46, 0x38, 0xBF, + 0x01, 0x24, 0x07, 0x93, 0x17, 0x46, 0x01, 0xF0, 0xC1, 0xFE, 0xB5, 0xF8, + 0xAE, 0x90, 0x07, 0x9B, 0x09, 0xF0, 0x10, 0x09, 0x40, 0xEA, 0x09, 0x00, + 0x06, 0xF1, 0x40, 0x02, 0x5C, 0x80, 0x02, 0x92, 0x18, 0x80, 0x1F, 0xFA, + 0x80, 0xF9, 0x14, 0x46, 0x00, 0x2F, 0x00, 0xF0, 0xDE, 0x81, 0x3A, 0x88, + 0x9A, 0x80, 0x7A, 0x88, 0xDA, 0x80, 0xBA, 0x88, 0x1A, 0x81, 0x0A, 0x22, + 0x17, 0x46, 0x18, 0x99, 0x98, 0x18, 0x08, 0x60, 0x00, 0x21, 0x07, 0x90, + 0x95, 0xF8, 0x7E, 0x00, 0x99, 0x54, 0x07, 0x9B, 0x00, 0xF1, 0x02, 0x0E, + 0x58, 0x70, 0x00, 0x28, 0x40, 0xF0, 0xC7, 0x80, 0x07, 0x9B, 0x95, 0xF8, + 0xB0, 0x10, 0x0E, 0xEB, 0x03, 0x00, 0x01, 0x22, 0x07, 0x90, 0x0E, 0xF8, + 0x03, 0x20, 0x07, 0x9B, 0x08, 0x29, 0x8C, 0x46, 0x28, 0xBF, 0x4F, 0xF0, + 0x08, 0x0C, 0x83, 0xF8, 0x01, 0xC0, 0x07, 0x9B, 0x1F, 0xFA, 0x8E, 0xFE, + 0x0C, 0xF1, 0x02, 0x0A, 0x05, 0xF1, 0xB1, 0x02, 0x51, 0xB1, 0x0C, 0xF1, + 0xB1, 0x0C, 0xAC, 0x44, 0x12, 0xF8, 0x01, 0x0B, 0xD1, 0x18, 0x49, 0x1B, + 0x94, 0x45, 0x01, 0xF8, 0xB0, 0x0C, 0xF7, 0xD1, 0x95, 0xF8, 0xB0, 0x20, + 0xD6, 0x44, 0x0A, 0xEB, 0x03, 0x01, 0x08, 0x2A, 0x77, 0x44, 0x07, 0x91, + 0x1A, 0xD9, 0x32, 0x21, 0x0A, 0xF8, 0x03, 0x10, 0x07, 0x9B, 0xA2, 0xF1, + 0x08, 0x01, 0x59, 0x70, 0x02, 0xF1, 0xB1, 0x0C, 0x07, 0x9B, 0xA2, 0xF1, + 0x06, 0x0E, 0xAC, 0x44, 0x05, 0xF1, 0xB9, 0x02, 0x12, 0xF8, 0x01, 0x0B, + 0xD1, 0x18, 0x49, 0x1B, 0x94, 0x45, 0x01, 0xF8, 0xB8, 0x0C, 0xF7, 0xD1, + 0x73, 0x44, 0x77, 0x44, 0x07, 0x93, 0xBF, 0xB2, 0x19, 0xF4, 0x80, 0x7F, + 0x40, 0xF0, 0xB5, 0x80, 0x07, 0xA8, 0xFF, 0xF7, 0x3F, 0xFF, 0x47, 0x44, + 0x07, 0x9B, 0x80, 0xB2, 0xBF, 0xB2, 0xB8, 0xF1, 0x00, 0x0F, 0x0A, 0xD0, + 0x02, 0x9A, 0x42, 0x44, 0x94, 0x46, 0x14, 0xF8, 0x01, 0x1B, 0xE2, 0x18, + 0x92, 0x1B, 0x64, 0x45, 0x02, 0xF8, 0x41, 0x1C, 0xF7, 0xD1, 0xD5, 0xF8, + 0xE0, 0x40, 0x07, 0x44, 0x43, 0x44, 0xE2, 0x07, 0xBF, 0xB2, 0x07, 0x93, + 0x1A, 0xD5, 0xB4, 0x4A, 0x07, 0xCA, 0x0A, 0xAE, 0x03, 0xC6, 0x00, 0x20, + 0x0A, 0xA9, 0x32, 0x80, 0xAD, 0xF8, 0x36, 0x00, 0xCD, 0xF8, 0x32, 0x00, + 0x8D, 0xF8, 0x30, 0x00, 0x5B, 0x1A, 0x0C, 0xA8, 0xDD, 0x22, 0x01, 0xE0, + 0x11, 0xF8, 0x01, 0x2F, 0x5A, 0x54, 0x88, 0x42, 0xFA, 0xD1, 0x07, 0x9B, + 0x09, 0x37, 0x09, 0x33, 0xBF, 0xB2, 0x07, 0x93, 0xA6, 0x07, 0x04, 0xD5, + 0xA6, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0xDC, 0x07, 0x53, 0xD4, 0xA5, 0x4B, + 0x9B, 0x7D, 0x01, 0x2B, 0x5A, 0xD0, 0xD5, 0xF8, 0xE0, 0x30, 0x18, 0x07, + 0x04, 0xD5, 0xA0, 0x4A, 0x92, 0xF8, 0x76, 0x21, 0x51, 0x07, 0x3C, 0xD4, + 0x5A, 0x07, 0x22, 0xD5, 0x9C, 0x4D, 0x95, 0xF8, 0x76, 0x31, 0x9B, 0x07, + 0x1D, 0xD5, 0x03, 0x99, 0x9B, 0x4B, 0x9C, 0x4C, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x01, 0x33, 0x07, 0xA8, 0x93, 0xF8, 0xC0, 0x14, 0xD4, 0xF8, + 0x50, 0x21, 0x90, 0x47, 0x07, 0x44, 0x28, 0x8F, 0xD4, 0xF8, 0x4C, 0x61, + 0x01, 0xF0, 0x9A, 0xFC, 0x95, 0xF8, 0x75, 0x21, 0x04, 0x2A, 0x01, 0x46, + 0x08, 0xBF, 0x03, 0x22, 0x07, 0xA8, 0xB0, 0x47, 0xBF, 0xB2, 0x38, 0x44, + 0x87, 0xB2, 0x18, 0x9B, 0x1A, 0x68, 0x07, 0x9B, 0x9B, 0x1A, 0x19, 0x9A, + 0x38, 0x46, 0x13, 0x80, 0x0F, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x7F, 0x30, + 0x07, 0x9B, 0x28, 0x44, 0x05, 0xF1, 0x7F, 0x02, 0x12, 0xF8, 0x01, 0xCB, + 0xD1, 0x18, 0x49, 0x1B, 0x90, 0x42, 0x01, 0xF8, 0x7E, 0xCC, 0xF7, 0xD1, + 0x2B, 0xE7, 0x82, 0x4B, 0x07, 0xA8, 0xD3, 0xF8, 0x44, 0x31, 0x98, 0x47, + 0x38, 0x44, 0xD5, 0xF8, 0xE0, 0x30, 0x87, 0xB2, 0xB8, 0xE7, 0x7D, 0x4B, + 0x07, 0xA8, 0xD3, 0xF8, 0x48, 0x31, 0x98, 0x47, 0x78, 0x4B, 0x9B, 0x7D, + 0x38, 0x44, 0x01, 0x2B, 0x87, 0xB2, 0xA4, 0xD1, 0xB5, 0xF8, 0xE4, 0x30, + 0x00, 0x2B, 0xA0, 0xD0, 0x07, 0x9B, 0x36, 0x22, 0x1A, 0x70, 0x07, 0x9B, + 0x03, 0x22, 0x5A, 0x70, 0x07, 0x9B, 0xB5, 0xF8, 0xE4, 0x20, 0x5A, 0x80, + 0x95, 0xF8, 0xE6, 0x20, 0x1A, 0x71, 0x07, 0x9B, 0x05, 0x37, 0x05, 0x33, + 0xBF, 0xB2, 0x07, 0x93, 0x8D, 0xE7, 0x07, 0x9B, 0x21, 0x22, 0x59, 0x1C, + 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x02, 0x22, 0x59, 0x1C, 0x07, 0x91, + 0x0A, 0xA8, 0x1A, 0x70, 0x0D, 0xF1, 0x27, 0x01, 0xDB, 0xF7, 0x8E, 0xFE, + 0xD5, 0xF8, 0xA4, 0x30, 0x9D, 0xF9, 0x28, 0x20, 0x93, 0xF9, 0x04, 0x30, + 0x9A, 0x42, 0xC8, 0xBF, 0x8D, 0xF8, 0x28, 0x30, 0x07, 0x9B, 0x9D, 0xF8, + 0x27, 0x20, 0x59, 0x1C, 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x9D, 0xF8, + 0x28, 0x20, 0x59, 0x1C, 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x24, 0x22, + 0x59, 0x1C, 0x07, 0x91, 0x1A, 0x70, 0x07, 0x9B, 0x04, 0x93, 0x1A, 0x46, + 0x02, 0xF1, 0x01, 0x0B, 0xD5, 0xF8, 0xA4, 0x30, 0xCD, 0xF8, 0x1C, 0xB0, + 0x9B, 0x78, 0x4F, 0x4A, 0x00, 0x2B, 0x52, 0xD1, 0x01, 0x23, 0x92, 0xF8, + 0x72, 0xA1, 0x05, 0x93, 0x76, 0x32, 0xBA, 0xF1, 0x00, 0x0F, 0x00, 0xF0, + 0x8C, 0x80, 0x00, 0x21, 0x06, 0x95, 0x01, 0x91, 0x08, 0x46, 0x8E, 0x46, + 0xA1, 0x46, 0x0D, 0x46, 0x1A, 0x96, 0xD3, 0x78, 0x13, 0xF0, 0x02, 0x03, + 0x1F, 0xD1, 0x94, 0x78, 0xB2, 0xF8, 0x00, 0xC0, 0x00, 0x2C, 0x43, 0xD1, + 0xAC, 0xF6, 0x6C, 0x14, 0x48, 0x2C, 0x3A, 0xD8, 0x40, 0xF6, 0xB4, 0x13, + 0x9C, 0x45, 0x6F, 0xD0, 0x40, 0x4C, 0xAC, 0xF6, 0x67, 0x13, 0xA4, 0xFB, + 0x03, 0x43, 0x9C, 0x08, 0xC3, 0xF3, 0x87, 0x03, 0x00, 0x28, 0x45, 0xD0, + 0xA4, 0xEB, 0x0E, 0x0E, 0x05, 0x9C, 0xA6, 0x45, 0x44, 0xD1, 0x01, 0x30, + 0xC0, 0xB2, 0x9E, 0x46, 0x06, 0x32, 0x01, 0x31, 0xCB, 0xB2, 0x9A, 0x45, + 0xD7, 0xD8, 0x01, 0x9B, 0x1A, 0x9E, 0x03, 0xF1, 0x02, 0x0E, 0x29, 0x46, + 0x5F, 0xFA, 0x8E, 0xF3, 0x06, 0x9D, 0x4C, 0x46, 0x9E, 0x46, 0x0B, 0xF1, + 0x01, 0x02, 0x07, 0x92, 0x8B, 0xF8, 0x00, 0x10, 0x07, 0x9A, 0x51, 0x1C, + 0x07, 0x91, 0x06, 0x37, 0x10, 0x70, 0x04, 0x9A, 0x1E, 0xFA, 0x87, 0xF7, + 0xBF, 0xB2, 0x13, 0x70, 0xC0, 0xE6, 0x04, 0x23, 0x92, 0xF8, 0x73, 0xA1, + 0x05, 0x93, 0xCA, 0x32, 0xAB, 0xE7, 0xD8, 0xB9, 0x86, 0x46, 0x05, 0x46, + 0x01, 0x20, 0xD5, 0xE7, 0x01, 0x2C, 0xF8, 0xD1, 0xAC, 0xF5, 0x9C, 0x5C, + 0xAC, 0xF1, 0x0D, 0x04, 0xA4, 0xB2, 0xB4, 0xF5, 0x4D, 0x7F, 0xF0, 0xD8, + 0x1D, 0x4B, 0xAC, 0xF1, 0x08, 0x0C, 0xA3, 0xFB, 0x0C, 0x43, 0x9C, 0x08, + 0xC3, 0xF3, 0x87, 0x03, 0x00, 0x28, 0xB9, 0xD1, 0x9E, 0x46, 0x1D, 0x46, + 0x01, 0x20, 0xBD, 0xE7, 0x0B, 0xF1, 0x01, 0x04, 0x07, 0x94, 0x8B, 0xF8, + 0x00, 0x50, 0x07, 0x9C, 0x01, 0x9E, 0x04, 0xF1, 0x01, 0x0C, 0x06, 0xF1, + 0x02, 0x0E, 0xCD, 0xF8, 0x1C, 0xC0, 0x00, 0xF1, 0x02, 0x0C, 0x20, 0x70, + 0x5F, 0xFA, 0x8E, 0xF0, 0x01, 0x90, 0xDD, 0xF8, 0x1C, 0xB0, 0x9E, 0x46, + 0x5F, 0xFA, 0x8C, 0xF0, 0xA4, 0xE7, 0x04, 0x22, 0x17, 0x46, 0x26, 0xE6, + 0x0E, 0x23, 0x1C, 0x46, 0x94, 0xE7, 0x02, 0x23, 0x50, 0x46, 0x51, 0x46, + 0x9E, 0x46, 0xA8, 0xE7, 0x2C, 0xB8, 0x15, 0x00, 0xE4, 0xB8, 0x17, 0x00, + 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xCD, 0xCC, 0xCC, 0xCC, 0x03, 0x22, 0x00, 0x23, 0x30, 0xB4, 0x02, 0x70, + 0x43, 0x70, 0x4B, 0x7C, 0x83, 0x70, 0x0B, 0x7C, 0x8C, 0x7B, 0xCA, 0x7B, + 0x4D, 0x89, 0xA0, 0xF8, 0x05, 0x50, 0x9B, 0x00, 0x43, 0xEA, 0x44, 0x03, + 0x43, 0xEA, 0x82, 0x13, 0xA0, 0xF8, 0x03, 0x30, 0x0B, 0x89, 0x1B, 0x01, + 0xA0, 0xF8, 0x07, 0x30, 0x30, 0xBC, 0x09, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x30, 0xB4, 0x22, 0xF0, 0x01, 0x02, 0xBD, 0xF8, 0x08, 0x40, 0xA0, 0xF8, + 0x05, 0x20, 0x03, 0x25, 0x01, 0x22, 0xA0, 0xF8, 0x03, 0x40, 0x83, 0x70, + 0x05, 0x70, 0x42, 0x70, 0x2C, 0xB1, 0x00, 0x23, 0xC3, 0x71, 0x03, 0x72, + 0x30, 0xBC, 0x09, 0x20, 0x70, 0x47, 0x4B, 0x89, 0xA0, 0xF8, 0x07, 0x30, + 0x30, 0xBC, 0x09, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x10, 0xB4, 0x02, 0x23, + 0x03, 0x24, 0x04, 0x70, 0x43, 0x70, 0x0B, 0x7C, 0x49, 0x7B, 0x5D, 0xF8, + 0x04, 0x4B, 0x82, 0x80, 0x1B, 0x03, 0x9B, 0xB2, 0x01, 0x29, 0x08, 0xBF, + 0x43, 0xF4, 0x00, 0x63, 0x43, 0x80, 0x06, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x41, 0x82, 0xB0, 0x16, 0x46, 0x0D, 0xF1, 0x07, 0x02, + 0x07, 0x46, 0x88, 0x46, 0xFD, 0xF7, 0x7A, 0xFB, 0xA8, 0xB3, 0x9D, 0xF8, + 0x07, 0x40, 0x83, 0x1C, 0x7C, 0xB1, 0x02, 0x34, 0x20, 0x44, 0x00, 0x24, + 0x1D, 0x78, 0x25, 0xF0, 0x81, 0x02, 0x7E, 0x2A, 0x03, 0xF1, 0x01, 0x03, + 0x03, 0xD0, 0x32, 0x19, 0x01, 0x34, 0x55, 0x70, 0xE4, 0xB2, 0x98, 0x42, + 0xF2, 0xD1, 0x0D, 0xF1, 0x07, 0x02, 0x41, 0x46, 0x38, 0x46, 0xFD, 0xF7, + 0x7F, 0xFB, 0xB0, 0xB1, 0x9D, 0xF8, 0x07, 0x30, 0x81, 0x1C, 0x93, 0xB1, + 0x02, 0x33, 0x1F, 0x18, 0x0A, 0x78, 0x22, 0xF0, 0x81, 0x00, 0x63, 0x1C, + 0x7E, 0x28, 0x06, 0xEB, 0x04, 0x05, 0x01, 0xF1, 0x01, 0x01, 0xDB, 0xB2, + 0x03, 0xD0, 0x0B, 0x2B, 0x6A, 0x70, 0x1C, 0x46, 0x01, 0xD8, 0x8F, 0x42, + 0xEE, 0xD1, 0x34, 0x70, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x04, 0x46, + 0x34, 0x70, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x10, 0xB5, 0x14, 0x46, + 0xFD, 0xF7, 0xE8, 0xFC, 0x00, 0xB1, 0x80, 0x78, 0x84, 0xF8, 0xDA, 0x00, + 0x10, 0xBD, 0x00, 0xBF, 0xF0, 0xB5, 0x83, 0xB0, 0x14, 0x46, 0x0D, 0xF1, + 0x07, 0x02, 0xFD, 0xF7, 0x8B, 0xFB, 0x60, 0xB3, 0xD4, 0xF8, 0xA4, 0xE0, + 0x9E, 0xF8, 0x02, 0x40, 0x4C, 0xB3, 0x01, 0x2C, 0xBE, 0xF8, 0x00, 0x30, + 0x40, 0xD0, 0x00, 0x24, 0x04, 0x25, 0x9D, 0xF8, 0x07, 0x70, 0x02, 0x37, + 0xFF, 0xB2, 0x08, 0x2F, 0x8D, 0xF8, 0x07, 0x70, 0x19, 0xD9, 0x05, 0x26, + 0x06, 0xEB, 0x00, 0x0C, 0x33, 0x5C, 0x9C, 0xF8, 0x01, 0x10, 0x69, 0xB1, + 0x9C, 0x42, 0x25, 0xD0, 0x01, 0x39, 0xC9, 0xB2, 0x00, 0x22, 0x01, 0xE0, + 0x9C, 0x42, 0x1F, 0xD0, 0x2B, 0x44, 0x8A, 0x42, 0xDB, 0xB2, 0x02, 0xF1, + 0x01, 0x02, 0xF7, 0xD1, 0x03, 0x36, 0xF6, 0xB2, 0xF3, 0x1C, 0x9F, 0x42, + 0xE6, 0xDC, 0x03, 0xB0, 0xF0, 0xBD, 0xBE, 0xF8, 0x00, 0x30, 0xA3, 0xF6, + 0x6C, 0x12, 0x48, 0x2A, 0x12, 0xD8, 0x40, 0xF6, 0xB4, 0x12, 0x93, 0x42, + 0x20, 0xD0, 0x12, 0x4A, 0xA3, 0xF6, 0x67, 0x14, 0xA2, 0xFB, 0x04, 0x34, + 0xC4, 0xF3, 0x87, 0x04, 0x01, 0x25, 0xC8, 0xE7, 0x9C, 0xF8, 0x02, 0x30, + 0x8E, 0xF8, 0x04, 0x30, 0x03, 0xB0, 0xF0, 0xBD, 0x01, 0x25, 0xC0, 0xE7, + 0xA3, 0xF5, 0x9C, 0x53, 0xA3, 0xF1, 0x0D, 0x02, 0x92, 0xB2, 0xB2, 0xF5, + 0x4D, 0x7F, 0xB6, 0xD8, 0x05, 0x4C, 0x08, 0x3B, 0xA4, 0xFB, 0x03, 0x34, + 0xC4, 0xF3, 0x87, 0x04, 0x04, 0x25, 0xB0, 0xE7, 0x0E, 0x24, 0x01, 0x25, + 0xAD, 0xE7, 0x00, 0xBF, 0xCD, 0xCC, 0xCC, 0xCC, 0x10, 0xB5, 0x14, 0x46, + 0xFD, 0xF7, 0x96, 0xFC, 0x48, 0xB1, 0x83, 0x78, 0xC2, 0x78, 0x43, 0xEA, + 0x02, 0x23, 0xA4, 0xF8, 0xE4, 0x30, 0x03, 0x79, 0x84, 0xF8, 0xE6, 0x30, + 0x10, 0xBD, 0x84, 0xF8, 0xE6, 0x00, 0xA4, 0xF8, 0xE4, 0x00, 0x10, 0xBD, + 0x2D, 0xE9, 0xF0, 0x47, 0x82, 0xB0, 0x1C, 0x46, 0x05, 0x46, 0x0E, 0x46, + 0x91, 0x46, 0xFD, 0xF7, 0x49, 0xFB, 0x31, 0x46, 0x07, 0x46, 0x28, 0x46, + 0xFD, 0xF7, 0x64, 0xFB, 0x57, 0xEA, 0x00, 0x03, 0x72, 0xD0, 0x80, 0x46, + 0x0D, 0xF1, 0x07, 0x02, 0x31, 0x46, 0x28, 0x46, 0xFD, 0xF7, 0x7A, 0xFB, + 0x82, 0x46, 0x18, 0xB1, 0x9D, 0xF8, 0x07, 0x30, 0x00, 0x2B, 0x65, 0xD0, + 0x31, 0x46, 0x0D, 0xF1, 0x07, 0x02, 0x28, 0x46, 0xFD, 0xF7, 0x90, 0xFB, + 0x01, 0x46, 0x00, 0x28, 0x58, 0xD1, 0x00, 0x2F, 0x7A, 0xD0, 0xBB, 0x78, + 0x38, 0x79, 0x89, 0xF8, 0x00, 0x30, 0x97, 0xF8, 0x03, 0xC0, 0x00, 0x28, + 0x08, 0xBF, 0x02, 0x20, 0xBC, 0xF1, 0x0E, 0x0F, 0x0C, 0xF1, 0xFF, 0x33, + 0x8C, 0xBF, 0x01, 0x27, 0x00, 0x27, 0x4D, 0xD8, 0x0D, 0x2B, 0x70, 0xD8, + 0xBC, 0xF1, 0x0E, 0x0F, 0x00, 0xF0, 0x97, 0x80, 0x0C, 0xEB, 0x8C, 0x06, + 0x06, 0xF6, 0x67, 0x16, 0x00, 0x29, 0x4A, 0xD0, 0x8D, 0x78, 0xCA, 0x78, + 0x91, 0xF8, 0x04, 0xE0, 0x05, 0xF1, 0xFF, 0x38, 0xB8, 0xF1, 0x02, 0x0F, + 0x9A, 0xBF, 0x01, 0x35, 0xED, 0xB2, 0x01, 0x25, 0xBC, 0xF1, 0x0E, 0x0F, + 0x93, 0xB2, 0x1F, 0xFA, 0x8E, 0xF1, 0x57, 0xD8, 0x02, 0xF1, 0xFF, 0x3C, + 0xBC, 0xF1, 0x0D, 0x0F, 0x72, 0xD8, 0x0E, 0x2A, 0x00, 0xF0, 0x90, 0x80, + 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF6, 0x67, 0x13, 0x61, 0xB1, 0x0E, 0xF1, + 0xFF, 0x32, 0x0D, 0x2A, 0x60, 0xD8, 0xBE, 0xF1, 0x0E, 0x0F, 0x00, 0xF0, + 0x9A, 0x80, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF6, 0x67, 0x11, 0x89, 0xB2, + 0x4B, 0x4A, 0x92, 0xF8, 0x75, 0x21, 0xAA, 0x42, 0x24, 0xD2, 0x01, 0x2A, + 0x67, 0xD0, 0x02, 0x2A, 0x5E, 0xD0, 0x00, 0x2A, 0x08, 0xBF, 0x33, 0x46, + 0x15, 0x46, 0x1B, 0xE0, 0x9D, 0xF8, 0x07, 0x30, 0x00, 0x2B, 0xA2, 0xD1, + 0x00, 0x20, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0xA4, 0x2B, 0x22, 0xD8, + 0x0C, 0xEB, 0x8C, 0x06, 0x06, 0xF5, 0x9C, 0x56, 0x08, 0x36, 0x00, 0x29, + 0xB4, 0xD1, 0xBA, 0xF1, 0x00, 0x0F, 0x31, 0xD0, 0x9A, 0xF8, 0x02, 0x50, + 0x01, 0x2D, 0x3A, 0xD0, 0x03, 0x2D, 0x50, 0xD0, 0x0D, 0x46, 0x33, 0x46, + 0x27, 0x70, 0x65, 0x70, 0x66, 0x80, 0xA3, 0x80, 0xE1, 0x80, 0x02, 0xB0, + 0xBD, 0xE8, 0xF0, 0x87, 0x98, 0xF8, 0x02, 0x30, 0x98, 0xF8, 0x05, 0x00, + 0x89, 0xF8, 0x00, 0x30, 0x98, 0xF8, 0x04, 0xC0, 0x81, 0xE7, 0x4F, 0xF6, + 0xFF, 0x76, 0x93, 0xE7, 0x01, 0x3A, 0xA4, 0x2A, 0x19, 0xD8, 0x03, 0xEB, + 0x83, 0x03, 0x03, 0xF5, 0x9C, 0x53, 0x08, 0x33, 0x00, 0x29, 0xB7, 0xD0, + 0x0E, 0xF1, 0xFF, 0x3E, 0xBE, 0xF1, 0xA4, 0x0F, 0x0A, 0xD8, 0x01, 0xEB, + 0x81, 0x01, 0x01, 0xF5, 0x9C, 0x51, 0x08, 0x31, 0x89, 0xB2, 0xAB, 0xE7, + 0x51, 0x46, 0x55, 0x46, 0x33, 0x46, 0xD1, 0xE7, 0x4F, 0xF6, 0xFF, 0x71, + 0xA4, 0xE7, 0x4F, 0xF6, 0xFF, 0x73, 0xE7, 0xE7, 0x4F, 0xF6, 0xFF, 0x73, + 0x90, 0xE7, 0x06, 0xF1, 0x0A, 0x03, 0x9B, 0xB2, 0xC4, 0xE7, 0x40, 0xF6, + 0xB4, 0x16, 0x69, 0xE7, 0x9E, 0x42, 0x94, 0xBF, 0x28, 0x3B, 0x28, 0x33, + 0x9B, 0xB2, 0x15, 0x46, 0xBA, 0xE7, 0x02, 0x2D, 0x0F, 0xD0, 0x03, 0xF1, + 0x28, 0x05, 0xB5, 0x42, 0x15, 0xDA, 0x3C, 0x33, 0x9B, 0xB2, 0x15, 0x46, + 0xB0, 0xE7, 0xA6, 0xF1, 0x0A, 0x03, 0x9B, 0xB2, 0x01, 0x25, 0xAB, 0xE7, + 0x40, 0xF6, 0xB4, 0x13, 0x70, 0xE7, 0x9E, 0x42, 0x03, 0xD8, 0x14, 0x3B, + 0x9B, 0xB2, 0x15, 0x46, 0xA2, 0xE7, 0x14, 0x33, 0x9B, 0xB2, 0x15, 0x46, + 0x9E, 0xE7, 0x9E, 0x42, 0xF9, 0xD8, 0xA3, 0xF1, 0x27, 0x05, 0xAE, 0x42, + 0xF1, 0xDA, 0x3C, 0x3B, 0x9B, 0xB2, 0x15, 0x46, 0x94, 0xE7, 0x40, 0xF6, + 0xB4, 0x11, 0x67, 0xE7, 0xE4, 0xB8, 0x17, 0x00, 0x70, 0xB5, 0x1D, 0x46, + 0x14, 0x46, 0xFD, 0xF7, 0x95, 0xFB, 0x00, 0x23, 0x2B, 0x70, 0x00, 0x28, + 0x48, 0xD0, 0x02, 0x7A, 0xA1, 0x7C, 0x02, 0xF0, 0x0F, 0x03, 0x99, 0x42, + 0x40, 0xD0, 0x01, 0x21, 0x29, 0x70, 0xA3, 0x74, 0x22, 0x74, 0xD0, 0xF8, + 0x0A, 0x20, 0x13, 0x0A, 0xD1, 0x08, 0x02, 0xF0, 0x0F, 0x02, 0x52, 0xEA, + 0x03, 0x12, 0x04, 0xBF, 0x40, 0xF6, 0x43, 0x23, 0x63, 0x60, 0xD0, 0xF8, + 0x0E, 0x30, 0x18, 0xBF, 0x62, 0x60, 0x1D, 0x0A, 0x03, 0xF0, 0x0F, 0x02, + 0x52, 0xEA, 0x05, 0x12, 0x08, 0xBF, 0x40, 0xF6, 0x47, 0x22, 0x22, 0x60, + 0xD0, 0xF8, 0x12, 0x20, 0x95, 0x08, 0x16, 0x0A, 0x02, 0xF0, 0x0F, 0x02, + 0x52, 0xEA, 0x06, 0x12, 0x08, 0xBF, 0x12, 0x4A, 0xA2, 0x60, 0xD0, 0xF8, + 0x16, 0x20, 0xC3, 0xF3, 0x00, 0x13, 0x50, 0x08, 0x05, 0xF0, 0x04, 0x05, + 0x01, 0xF0, 0x02, 0x01, 0x2B, 0x43, 0x00, 0xF0, 0x08, 0x00, 0x49, 0xB2, + 0x03, 0x43, 0x0B, 0x43, 0x11, 0x0A, 0x02, 0xF0, 0x0F, 0x02, 0x52, 0xEA, + 0x01, 0x12, 0x63, 0x74, 0x0A, 0xBF, 0x07, 0x4B, 0xE2, 0x60, 0xE3, 0x60, + 0x01, 0x20, 0x70, 0xBD, 0x40, 0xF6, 0x43, 0x23, 0xC4, 0xE9, 0x00, 0x33, + 0xC4, 0xE9, 0x02, 0x33, 0x70, 0xBD, 0x00, 0xBF, 0x32, 0xE4, 0x05, 0x00, + 0x22, 0xF3, 0x02, 0x00, 0x38, 0xB5, 0x14, 0x46, 0xFD, 0xF7, 0x4A, 0xFB, + 0xE8, 0xB1, 0xC2, 0x78, 0x83, 0x78, 0x43, 0xEA, 0x02, 0x23, 0x23, 0x80, + 0x23, 0x46, 0x02, 0x79, 0x03, 0xF8, 0x02, 0x2F, 0x04, 0xF1, 0x12, 0x05, + 0xC4, 0xF1, 0x03, 0x02, 0xC1, 0x18, 0x89, 0x5C, 0x03, 0xF8, 0x01, 0x1F, + 0xAB, 0x42, 0xF9, 0xD1, 0x43, 0x7D, 0x82, 0x7D, 0xB0, 0xF8, 0x17, 0x10, + 0xA1, 0x61, 0x43, 0xEA, 0x02, 0x23, 0xA3, 0x82, 0xC3, 0x7E, 0x23, 0x77, + 0x01, 0x20, 0x38, 0xBD, 0xF8, 0xB5, 0x14, 0x46, 0xFD, 0xF7, 0xCA, 0xFB, + 0xB8, 0xB1, 0xC7, 0x79, 0x43, 0x7A, 0x85, 0x79, 0x02, 0x7A, 0x81, 0x7A, + 0xC6, 0x7A, 0x45, 0xEA, 0x07, 0x25, 0x42, 0xEA, 0x03, 0x22, 0xD0, 0xF8, + 0x02, 0x70, 0x03, 0x7B, 0x40, 0x7B, 0x27, 0x60, 0x43, 0xEA, 0x00, 0x23, + 0x41, 0xEA, 0x06, 0x21, 0xA5, 0x80, 0x21, 0x81, 0xE2, 0x80, 0x63, 0x81, + 0x01, 0x20, 0xF8, 0xBD, 0xF0, 0xB5, 0x83, 0xB0, 0x15, 0x46, 0x0D, 0xF1, + 0x07, 0x02, 0xFD, 0xF7, 0xC9, 0xFB, 0x00, 0x28, 0x45, 0xD0, 0x9D, 0xF8, + 0x07, 0x30, 0xC6, 0x1C, 0xC5, 0xF1, 0x04, 0x04, 0x1E, 0x44, 0x04, 0x44, + 0x6B, 0x1E, 0x69, 0x1D, 0x1A, 0x5D, 0x03, 0xF8, 0x01, 0x2F, 0x8B, 0x42, + 0xFA, 0xD1, 0x05, 0xF1, 0x10, 0x02, 0x19, 0x5D, 0x03, 0xF8, 0x01, 0x1F, + 0x93, 0x42, 0xFA, 0xD1, 0x02, 0x7D, 0x47, 0x7D, 0x83, 0x7D, 0xC4, 0x7D, + 0xA9, 0x79, 0x42, 0xEA, 0x07, 0x22, 0x43, 0xEA, 0x04, 0x23, 0x6A, 0x82, + 0x4A, 0x10, 0x09, 0x07, 0xAB, 0x82, 0x00, 0xF1, 0x18, 0x03, 0x0E, 0xD5, + 0x00, 0xF1, 0x1C, 0x01, 0xB1, 0x42, 0x1C, 0xD8, 0x5F, 0x78, 0x04, 0x7E, + 0x83, 0x7E, 0xC0, 0x7E, 0x44, 0xEA, 0x07, 0x24, 0x43, 0xEA, 0x00, 0x20, + 0xEC, 0x82, 0x0B, 0x46, 0x28, 0x83, 0x12, 0x07, 0x12, 0xD5, 0x1A, 0x1D, + 0xB2, 0x42, 0x0C, 0xD8, 0x58, 0x78, 0x19, 0x78, 0x9A, 0x78, 0xDB, 0x78, + 0x41, 0xEA, 0x00, 0x21, 0x42, 0xEA, 0x03, 0x23, 0x01, 0x20, 0x69, 0x83, + 0xAB, 0x83, 0x03, 0xB0, 0xF0, 0xBD, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, + 0x01, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0x00, 0xBF, 0x10, 0xB5, 0x82, 0xB0, + 0x14, 0x46, 0x0D, 0xF1, 0x07, 0x02, 0xFD, 0xF7, 0xC7, 0xFB, 0x40, 0xB1, + 0xD0, 0xF8, 0x03, 0x30, 0xC4, 0xF8, 0xDC, 0x30, 0x00, 0x38, 0x18, 0xBF, + 0x01, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x01, 0x4B, 0xF6, 0xE7, 0x00, 0xBF, + 0x00, 0x00, 0x01, 0x80, 0xF8, 0xB5, 0x1D, 0x46, 0x14, 0x46, 0xFD, 0xF7, + 0xC7, 0xFB, 0x00, 0x23, 0x2B, 0x70, 0x00, 0xB3, 0xC2, 0x78, 0x61, 0x7C, + 0x02, 0xF0, 0x0F, 0x03, 0x99, 0x42, 0x1B, 0xD0, 0x01, 0x26, 0x2E, 0x70, + 0x22, 0x74, 0x63, 0x74, 0xB0, 0xF8, 0x05, 0x10, 0x03, 0x79, 0x02, 0x89, + 0xB0, 0xF8, 0x0B, 0x70, 0xC5, 0x89, 0x43, 0xEA, 0x01, 0x23, 0x63, 0x60, + 0xC1, 0x79, 0x41, 0xEA, 0x02, 0x21, 0x21, 0x60, 0x82, 0x7A, 0x42, 0xEA, + 0x07, 0x22, 0xA2, 0x60, 0x43, 0x7B, 0x43, 0xEA, 0x05, 0x23, 0x30, 0x46, + 0xE3, 0x60, 0xF8, 0xBD, 0x01, 0x20, 0xF8, 0xBD, 0x10, 0xB5, 0x14, 0x46, + 0xFD, 0xF7, 0xAC, 0xFB, 0x40, 0xB1, 0xC3, 0x78, 0x03, 0xF0, 0x07, 0x02, + 0xC3, 0xF3, 0xC2, 0x03, 0x22, 0x70, 0x63, 0x70, 0x01, 0x20, 0x10, 0xBD, + 0x03, 0x22, 0x05, 0x23, 0x22, 0x70, 0x63, 0x70, 0x10, 0xBD, 0x00, 0xBF, + 0x38, 0xB5, 0x07, 0x48, 0x1C, 0x46, 0x15, 0x46, 0xFE, 0x22, 0x10, 0xF0, + 0x67, 0xFD, 0x2A, 0x46, 0x21, 0x46, 0x41, 0xF2, 0x03, 0x40, 0xFC, 0xF7, + 0x41, 0xFA, 0x00, 0x20, 0x38, 0xBD, 0x00, 0xBF, 0x5A, 0xB9, 0x17, 0x00, + 0x70, 0xB5, 0x32, 0x4C, 0x08, 0x78, 0x24, 0x68, 0x01, 0x28, 0x19, 0x46, + 0x20, 0x70, 0x29, 0xD0, 0x02, 0x28, 0x05, 0xD0, 0x41, 0xF2, 0x16, 0x40, + 0xFC, 0xF7, 0x2E, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x2B, 0x4C, 0x2C, 0x48, + 0x23, 0x68, 0x2C, 0x4E, 0x2C, 0x4D, 0x43, 0xF4, 0x80, 0x33, 0x23, 0x60, + 0x03, 0x68, 0x2B, 0x4C, 0x23, 0xF0, 0x00, 0x73, 0x03, 0x60, 0x3F, 0x23, + 0x33, 0x60, 0x2B, 0x68, 0x28, 0x48, 0x23, 0xF0, 0x01, 0x03, 0x2B, 0x60, + 0x23, 0x6D, 0x23, 0xF4, 0x80, 0x23, 0x23, 0x65, 0x03, 0x69, 0x43, 0xF0, + 0x80, 0x03, 0x03, 0x61, 0x41, 0xF2, 0x16, 0x40, 0xFC, 0xF7, 0x0C, 0xFA, + 0x00, 0x20, 0x70, 0xBD, 0x20, 0x4B, 0x1B, 0x4C, 0x93, 0xF8, 0xB5, 0x30, + 0x0B, 0xBB, 0x23, 0x68, 0x19, 0x4E, 0x1E, 0x4D, 0x43, 0xF0, 0x00, 0x73, + 0x23, 0x60, 0x04, 0xF5, 0x00, 0x44, 0x04, 0x23, 0x28, 0x34, 0x33, 0x60, + 0x28, 0x60, 0x23, 0x68, 0x23, 0xF4, 0x80, 0x23, 0x23, 0xF0, 0x01, 0x03, + 0x23, 0x60, 0x13, 0x4C, 0x13, 0x48, 0x23, 0x6D, 0x43, 0xF4, 0x80, 0x23, + 0x23, 0x65, 0x03, 0x69, 0x23, 0xF0, 0x80, 0x03, 0x03, 0x61, 0x41, 0xF2, + 0x16, 0x40, 0xFC, 0xF7, 0xE5, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0x23, 0x68, + 0x09, 0x48, 0x08, 0x4D, 0x23, 0xF0, 0x00, 0x73, 0x23, 0x60, 0x03, 0x68, + 0x24, 0x24, 0x43, 0xF4, 0x00, 0x13, 0x03, 0x60, 0x2C, 0x60, 0xE2, 0xE7, + 0x74, 0x36, 0x17, 0x00, 0x44, 0x00, 0x32, 0x40, 0x4C, 0x00, 0x32, 0x40, + 0x98, 0x80, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, 0x00, 0x60, 0x50, 0x40, + 0x00, 0x00, 0x50, 0x40, 0x2C, 0x19, 0x17, 0x00, 0x70, 0x80, 0x32, 0x40, + 0xF8, 0xB5, 0x4C, 0x78, 0x08, 0x78, 0x16, 0x46, 0x1D, 0x46, 0x2C, 0xB3, + 0x17, 0x4C, 0x18, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x00, 0x44, + 0x4F, 0xF4, 0xA4, 0x61, 0x94, 0xF8, 0x22, 0x20, 0x01, 0xFB, 0x02, 0x32, + 0x02, 0x23, 0x92, 0xF8, 0x62, 0x70, 0x84, 0xF8, 0x30, 0x30, 0x5F, 0xB9, + 0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xFC, 0xF7, 0x3E, 0xF9, + 0x07, 0x70, 0x94, 0xF8, 0x22, 0x20, 0x42, 0x70, 0xFC, 0xF7, 0x68, 0xF9, + 0x32, 0x46, 0x29, 0x46, 0x41, 0xF2, 0x05, 0x40, 0xFC, 0xF7, 0x9A, 0xF9, + 0x00, 0x20, 0xF8, 0xBD, 0x04, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, + 0x00, 0x30, 0x01, 0x23, 0x80, 0xF8, 0x30, 0x30, 0xEE, 0xE7, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x0C, 0x20, 0x0C, 0x46, 0x17, 0x46, 0x00, 0x21, 0x05, 0x22, 0x1E, 0x46, + 0x01, 0x23, 0xFC, 0xF7, 0x17, 0xF9, 0xDF, 0xF8, 0x6C, 0x90, 0xDF, 0xF8, + 0x6C, 0x80, 0xD9, 0xF8, 0x24, 0x30, 0x05, 0x46, 0x20, 0x78, 0x98, 0x47, + 0x23, 0x78, 0x2B, 0x70, 0x28, 0x46, 0xFC, 0xF7, 0x39, 0xF9, 0x20, 0x78, + 0xD9, 0xF8, 0xD8, 0x31, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0xF0, + 0x00, 0xF5, 0x18, 0x70, 0x40, 0x44, 0x98, 0x47, 0x63, 0x78, 0x43, 0xB9, + 0x3A, 0x46, 0x31, 0x46, 0x41, 0xF2, 0x0A, 0x40, 0xFC, 0xF7, 0x5E, 0xF9, + 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x83, 0x02, 0x23, 0x06, 0x22, 0x05, 0x21, + 0x41, 0xF2, 0x19, 0x40, 0xFC, 0xF7, 0xEC, 0xF8, 0x00, 0x22, 0x02, 0x70, + 0x22, 0x78, 0x05, 0xFB, 0x02, 0x88, 0x98, 0xF8, 0x22, 0x20, 0x42, 0x70, + 0xFC, 0xF7, 0x12, 0xF9, 0xE4, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x0C, 0x46, 0x89, 0x78, + 0x25, 0x78, 0xDF, 0xF8, 0xAC, 0x80, 0x1E, 0x46, 0x17, 0x46, 0x63, 0x78, + 0xA1, 0xB1, 0x00, 0x2B, 0x44, 0xD1, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, 0x02, 0xF0, 0xFB, 0x02, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x2E, 0x11, 0x83, 0xF8, + 0x31, 0x20, 0x0F, 0x29, 0x1E, 0xD1, 0x0A, 0xE0, 0x2B, 0xBB, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, 0x22, 0xF0, + 0x01, 0x02, 0x83, 0xF8, 0x31, 0x20, 0x04, 0x23, 0x05, 0x22, 0x00, 0x21, + 0x41, 0x20, 0xFC, 0xF7, 0xAB, 0xF8, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x05, 0x85, 0x95, 0xF8, 0x22, 0x30, 0x2A, 0x8C, 0x02, 0x80, 0xC3, 0x70, + 0x63, 0x78, 0x83, 0x70, 0xFC, 0xF7, 0xCE, 0xF8, 0x3A, 0x46, 0x31, 0x46, + 0x41, 0xF2, 0x0D, 0x40, 0xFC, 0xF7, 0x00, 0xF9, 0x00, 0x20, 0xBD, 0xE8, + 0xF0, 0x81, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, + 0x31, 0x20, 0x42, 0xF0, 0x01, 0x02, 0x83, 0xF8, 0x31, 0x20, 0xD8, 0xE7, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x83, 0x93, 0xF8, 0x31, 0x20, + 0x42, 0xF0, 0x04, 0x02, 0xB9, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0x31, 0x20, 0x0D, 0x46, 0x4B, 0x4C, 0x91, 0x46, + 0x98, 0x46, 0x05, 0x22, 0x01, 0x23, 0x00, 0x21, 0xFC, 0xF7, 0x72, 0xF8, + 0x00, 0x23, 0x84, 0xF8, 0x76, 0x31, 0x95, 0xF8, 0x67, 0x30, 0x82, 0x46, + 0x5B, 0xB1, 0x01, 0x23, 0x84, 0xF8, 0x76, 0x31, 0x2F, 0x46, 0x0F, 0xCF, + 0x04, 0xF1, 0x0C, 0x06, 0x0F, 0xC6, 0x97, 0xE8, 0x0F, 0x00, 0x86, 0xE8, + 0x0F, 0x00, 0x95, 0xF8, 0x68, 0x30, 0x5B, 0xB1, 0x94, 0xF8, 0x76, 0x21, + 0x3C, 0x4B, 0x42, 0xF0, 0x02, 0x02, 0x84, 0xF8, 0x76, 0x21, 0x05, 0xF1, + 0x20, 0x02, 0x07, 0xCA, 0x83, 0xE8, 0x07, 0x00, 0x95, 0xF8, 0x69, 0x30, + 0x93, 0xB1, 0x94, 0xF8, 0x76, 0x31, 0x36, 0x4E, 0x43, 0xF0, 0x04, 0x03, + 0x84, 0xF8, 0x76, 0x31, 0x05, 0xF1, 0x2C, 0x07, 0x0F, 0xCF, 0x0F, 0xC6, + 0x0F, 0xCF, 0x0F, 0xC6, 0x0F, 0xCF, 0x0F, 0xC6, 0x97, 0xE8, 0x03, 0x00, + 0x86, 0xE8, 0x03, 0x00, 0x95, 0xF8, 0x6A, 0x30, 0x2B, 0xB1, 0x94, 0xF8, + 0x76, 0x31, 0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x76, 0x31, 0x95, 0xF8, + 0x66, 0x30, 0x84, 0xF8, 0x75, 0x31, 0x4A, 0x46, 0x41, 0x46, 0x41, 0xF2, + 0x01, 0x40, 0xFC, 0xF7, 0x8F, 0xF8, 0x94, 0xF8, 0x76, 0x31, 0x13, 0xF0, + 0x01, 0x03, 0x14, 0xD1, 0x84, 0xF8, 0x74, 0x31, 0x95, 0xF8, 0x6B, 0x30, + 0xB5, 0xF8, 0x64, 0x10, 0x84, 0xF8, 0x77, 0x31, 0x95, 0xF8, 0x6D, 0x20, + 0xA1, 0x85, 0x00, 0x2A, 0x14, 0xBF, 0x02, 0x22, 0x01, 0x22, 0x84, 0xF8, + 0x78, 0x21, 0xF3, 0xB9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xDA, 0xF7, + 0xE3, 0xFC, 0x94, 0xF8, 0x76, 0x31, 0x01, 0x30, 0x40, 0x10, 0x5B, 0x07, + 0x84, 0xF8, 0x74, 0x01, 0xE2, 0xD5, 0x94, 0xF8, 0x75, 0x21, 0x94, 0xF8, + 0x44, 0x30, 0x02, 0x2A, 0x88, 0xBF, 0x94, 0xF8, 0x49, 0x20, 0x4F, 0xEA, + 0x93, 0x03, 0x88, 0xBF, 0x03, 0xEA, 0x92, 0x13, 0x03, 0xF0, 0x01, 0x03, + 0x84, 0xF8, 0x74, 0x30, 0xD0, 0xE7, 0xFF, 0x23, 0x23, 0x81, 0x50, 0x46, + 0x8A, 0xF8, 0x00, 0x20, 0xFC, 0xF7, 0x1A, 0xF8, 0x01, 0x21, 0x05, 0x20, + 0xFC, 0xF7, 0xE0, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x00, 0xBF, + 0xE4, 0xB8, 0x17, 0x00, 0x14, 0xB9, 0x17, 0x00, 0x20, 0xB9, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x41, 0xF2, 0x08, 0x40, 0x97, 0xB0, 0x0C, 0x46, + 0x19, 0x46, 0x03, 0x23, 0xFB, 0xF7, 0xD2, 0xFF, 0x4F, 0xF0, 0x00, 0x0A, + 0xCD, 0xE9, 0x0C, 0xAA, 0x05, 0x46, 0xAD, 0xF8, 0x2E, 0xA0, 0x8D, 0xF8, + 0x2C, 0xA0, 0x08, 0xF0, 0xEB, 0xFB, 0x94, 0xF8, 0x81, 0x70, 0xA2, 0x6F, + 0x06, 0x90, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x07, 0xF1, 0x12, 0xF0, + 0x02, 0x06, 0x07, 0x91, 0x1B, 0xD0, 0x12, 0xF0, 0x04, 0x06, 0x04, 0xF1, + 0x14, 0x08, 0x40, 0xF0, 0xDC, 0x81, 0xB1, 0x46, 0x0B, 0xAB, 0x12, 0xF0, + 0x20, 0x02, 0x0D, 0xF1, 0x34, 0x0C, 0x02, 0x93, 0x0C, 0xAB, 0xCD, 0xE9, + 0x00, 0x3C, 0x18, 0xBF, 0x04, 0xF1, 0x40, 0x02, 0x0D, 0xF1, 0x2E, 0x03, + 0x49, 0x46, 0x40, 0x46, 0x00, 0xF0, 0x00, 0xFE, 0x94, 0xF8, 0x81, 0x30, + 0x00, 0xE0, 0x3B, 0x46, 0x00, 0x22, 0xDF, 0xF8, 0xC4, 0x93, 0x20, 0x68, + 0x0C, 0x99, 0xB4, 0xF8, 0x04, 0xE0, 0xBD, 0xF8, 0x2E, 0xC0, 0x0E, 0x92, + 0x8D, 0xF8, 0x55, 0x20, 0x8D, 0xF8, 0x56, 0x20, 0x9D, 0xF8, 0x2C, 0x20, + 0x8D, 0xF8, 0x51, 0x30, 0xCD, 0xF8, 0x4A, 0x00, 0x10, 0x91, 0x8D, 0xF8, + 0x50, 0x20, 0xD9, 0xF8, 0xC4, 0x31, 0x11, 0x96, 0xAD, 0xF8, 0x4E, 0xE0, + 0xAD, 0xF8, 0x48, 0xC0, 0x0D, 0xF1, 0x2D, 0x02, 0x29, 0x46, 0x0E, 0xA8, + 0x98, 0x47, 0x83, 0x46, 0x68, 0x70, 0x00, 0x28, 0x40, 0xF0, 0x1C, 0x81, + 0x23, 0x46, 0x2E, 0x78, 0x53, 0xF8, 0x06, 0x0F, 0xDF, 0xF8, 0x70, 0x83, + 0x59, 0x68, 0x9A, 0x68, 0x93, 0xF8, 0x0C, 0xE0, 0xD4, 0xF8, 0x78, 0xC0, + 0x04, 0x96, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0xF3, 0x08, 0xEB, + 0x03, 0x0A, 0x08, 0x93, 0x0A, 0xF1, 0xB8, 0x03, 0x07, 0xC3, 0x1C, 0xF0, + 0x01, 0x0F, 0x83, 0xF8, 0x00, 0xE0, 0x40, 0xF0, 0x06, 0x81, 0xC7, 0x4B, + 0x05, 0x93, 0x1C, 0xF0, 0x08, 0x0F, 0x08, 0xD0, 0x04, 0x9A, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, 0x5A, 0x68, 0x42, 0xF0, 0x08, 0x02, + 0x5A, 0x60, 0x04, 0x9A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, + 0x94, 0xF8, 0x7E, 0x20, 0x83, 0xF8, 0x2E, 0x21, 0x94, 0xF8, 0x7F, 0x10, + 0xB4, 0xF8, 0x7C, 0x20, 0x1A, 0x84, 0x83, 0xF8, 0x2F, 0x11, 0x50, 0x46, + 0x09, 0x93, 0x00, 0xF0, 0xBB, 0xFE, 0xA2, 0x6F, 0xD2, 0x06, 0x06, 0xD5, + 0x94, 0xF9, 0x80, 0x20, 0x94, 0xF8, 0x80, 0x10, 0x00, 0x2A, 0x80, 0xF2, + 0x77, 0x81, 0xBB, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x7F, 0x81, 0x05, 0x9B, + 0xAF, 0x48, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x07, 0x34, 0x04, 0x9B, + 0xB4, 0xF8, 0xE0, 0x20, 0x4F, 0xF4, 0x1E, 0x7B, 0x0B, 0xFB, 0x03, 0x86, + 0xD4, 0xF8, 0xB0, 0x34, 0x96, 0xF8, 0x56, 0x11, 0xC6, 0xF8, 0x68, 0xA2, + 0x03, 0xF0, 0x01, 0x03, 0xC3, 0xF1, 0x02, 0x03, 0x86, 0xF8, 0x30, 0x30, + 0x41, 0xF0, 0x10, 0x01, 0xA3, 0x4B, 0x86, 0xF8, 0x56, 0x11, 0x52, 0xBA, + 0x4F, 0xF0, 0x01, 0x0A, 0xC6, 0xF8, 0x64, 0x02, 0xB2, 0x86, 0x08, 0x98, + 0x86, 0xF8, 0x70, 0xA2, 0x1A, 0x69, 0x9E, 0x49, 0xD9, 0xF8, 0xE0, 0x31, + 0x00, 0xF5, 0x18, 0x70, 0x40, 0x44, 0x11, 0x44, 0x98, 0x47, 0x06, 0x9B, + 0xAB, 0x70, 0x00, 0x2B, 0x00, 0xF0, 0x9A, 0x80, 0x94, 0xF8, 0xDE, 0x20, + 0x86, 0xF8, 0x24, 0x30, 0x00, 0x2A, 0x40, 0xF0, 0x85, 0x80, 0x94, 0xF8, + 0x63, 0x60, 0x0A, 0x36, 0xF6, 0xB2, 0x0B, 0xFB, 0x06, 0xF3, 0x08, 0xEB, + 0x03, 0x0B, 0x04, 0x93, 0x9B, 0xF8, 0x24, 0x30, 0x53, 0x45, 0x77, 0xD0, + 0x02, 0x23, 0x0C, 0x21, 0x49, 0x20, 0xFB, 0xF7, 0xDB, 0xFE, 0x8B, 0xF8, + 0x24, 0xA0, 0x06, 0x70, 0x80, 0xF8, 0x01, 0xA0, 0xFB, 0xF7, 0x04, 0xFF, + 0x9B, 0xF8, 0x24, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x48, 0x81, 0x9B, 0xF8, + 0x23, 0x30, 0x09, 0x2B, 0x00, 0xF2, 0x43, 0x81, 0x9B, 0xF8, 0x22, 0x00, + 0x05, 0x9C, 0xCD, 0xF8, 0x18, 0xA0, 0x9E, 0x23, 0xA4, 0x21, 0x4F, 0xF4, + 0xA4, 0x6C, 0x11, 0xFB, 0x00, 0x31, 0x0C, 0xFB, 0x00, 0x4A, 0x4F, 0x23, + 0x46, 0x20, 0x13, 0xFB, 0x06, 0x03, 0x7B, 0x4A, 0x05, 0x98, 0x7B, 0x4C, + 0x08, 0x95, 0x08, 0xEB, 0xC3, 0x08, 0x04, 0x9B, 0x00, 0xEB, 0xC1, 0x06, + 0x13, 0x44, 0x35, 0x46, 0x1E, 0x46, 0xDB, 0xF8, 0x08, 0x22, 0x1A, 0xB3, + 0xEF, 0xF3, 0x10, 0x82, 0xD3, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x73, 0x4B, + 0x06, 0x9A, 0x1A, 0x60, 0x22, 0x68, 0xA8, 0xF1, 0x28, 0x00, 0x01, 0x32, + 0xA5, 0xF1, 0x28, 0x01, 0x04, 0x90, 0x22, 0x60, 0xFC, 0xF7, 0x18, 0xFC, + 0xDB, 0xE9, 0x82, 0x21, 0x04, 0x98, 0xCA, 0xF8, 0xC8, 0x24, 0xCA, 0xF8, + 0xCC, 0x14, 0xFC, 0xF7, 0x19, 0xFB, 0x22, 0x68, 0x51, 0x1E, 0x2A, 0xB1, + 0x66, 0x4B, 0x21, 0x60, 0x1A, 0x68, 0x09, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0xDB, 0xF8, 0x30, 0x22, 0x28, 0x46, 0x41, 0x46, 0x0B, 0xF1, 0x08, 0x0B, + 0x08, 0x35, 0x0A, 0xF1, 0x08, 0x0A, 0x22, 0xB1, 0xFC, 0xF7, 0xFA, 0xFB, + 0x40, 0x46, 0xFC, 0xF7, 0x01, 0xFB, 0x08, 0xF1, 0x08, 0x08, 0x46, 0x45, + 0xC5, 0xD1, 0x40, 0x20, 0x08, 0x9D, 0xFC, 0xF7, 0x5B, 0xFA, 0x05, 0x9A, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x23, 0x93, 0xF8, 0xDE, 0x20, + 0x05, 0x9C, 0xD9, 0xF8, 0x0C, 0x32, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, + 0x07, 0x47, 0x07, 0x99, 0x01, 0x32, 0x21, 0x44, 0x08, 0x46, 0x87, 0xF8, + 0xDE, 0x20, 0x98, 0x47, 0x28, 0x46, 0xFB, 0xF7, 0x87, 0xFE, 0x00, 0x20, + 0x17, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xDA, 0xF8, 0x04, 0x30, 0x05, 0x93, + 0x1C, 0xF0, 0x02, 0x0F, 0x43, 0xF0, 0x01, 0x03, 0xCA, 0xF8, 0x04, 0x30, + 0x3F, 0xF4, 0xEF, 0xAE, 0x45, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0x09, 0x93, + 0x13, 0xF0, 0x01, 0x0B, 0x3F, 0xF4, 0xE7, 0xAE, 0x04, 0xF1, 0x14, 0x0E, + 0xBE, 0xE8, 0x0F, 0x00, 0x0A, 0xF1, 0xC8, 0x0B, 0xAB, 0xE8, 0x0F, 0x00, + 0x9E, 0xE8, 0x0F, 0x00, 0x05, 0x9E, 0x1C, 0xF0, 0x20, 0x0F, 0x46, 0xF0, + 0x03, 0x0E, 0x8B, 0xE8, 0x0F, 0x00, 0xCA, 0xF8, 0x04, 0xE0, 0x22, 0xD0, + 0x09, 0x9B, 0x58, 0x07, 0x1F, 0xD5, 0x04, 0xF1, 0x40, 0x0E, 0xBE, 0xE8, + 0x0F, 0x00, 0x0A, 0xF1, 0xF4, 0x0B, 0xAB, 0xE8, 0x0F, 0x00, 0xBE, 0xE8, + 0x0F, 0x00, 0xAB, 0xE8, 0x0F, 0x00, 0xBE, 0xE8, 0x0F, 0x00, 0xAB, 0xE8, + 0x0F, 0x00, 0x9E, 0xE8, 0x03, 0x00, 0x46, 0xF0, 0x23, 0x03, 0xCA, 0xF8, + 0x04, 0x30, 0x09, 0x9B, 0x8B, 0xE8, 0x03, 0x00, 0x19, 0x07, 0x04, 0xD5, + 0x50, 0x46, 0xEC, 0xF7, 0x85, 0xFF, 0xD4, 0xF8, 0x78, 0xC0, 0x1C, 0xF0, + 0x04, 0x0F, 0x1F, 0xD0, 0x24, 0x4B, 0x04, 0x9A, 0x93, 0xF8, 0x76, 0x31, + 0x13, 0xF0, 0x02, 0x0F, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, + 0xD3, 0xF8, 0x04, 0xC0, 0x02, 0xD1, 0x1C, 0xF0, 0x20, 0x0F, 0x0F, 0xD0, + 0x04, 0xF1, 0x34, 0x03, 0x93, 0xE8, 0x07, 0x00, 0x04, 0x9E, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x06, 0x83, 0x03, 0xF1, 0xE8, 0x0E, 0x8E, 0xE8, + 0x07, 0x00, 0x4C, 0xF0, 0x04, 0x02, 0x5A, 0x60, 0x07, 0x9A, 0x0D, 0x4B, + 0x05, 0x93, 0x02, 0xF1, 0xEC, 0x01, 0x19, 0x44, 0x50, 0x46, 0x00, 0xF0, + 0x53, 0xFB, 0xD4, 0xF8, 0x78, 0xC0, 0x83, 0x46, 0x81, 0xE6, 0x07, 0x4B, + 0x05, 0x93, 0x0B, 0x44, 0x04, 0xF1, 0x34, 0x09, 0x93, 0xF8, 0x62, 0x30, + 0x02, 0x2B, 0x43, 0xD0, 0x03, 0x2B, 0x2F, 0xD0, 0xA3, 0xB3, 0x56, 0x46, + 0x16, 0xE6, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x1D, 0x66, 0x12, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x40, 0x4B, 0x4C, 0x00, 0xC0, 0x67, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x09, 0x9B, 0x0A, 0x09, + 0x93, 0xF8, 0x23, 0x00, 0x01, 0xF0, 0x03, 0x01, 0x01, 0xF0, 0x34, 0xF8, + 0xBB, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x81, 0xAE, 0x04, 0x9A, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x83, 0xFF, 0x21, 0x93, 0xF8, 0x23, 0x00, + 0x00, 0x22, 0x01, 0xF0, 0x25, 0xF8, 0x74, 0xE6, 0x20, 0x46, 0xFC, 0xF7, + 0x61, 0xFF, 0xA2, 0x6F, 0x06, 0x46, 0xE3, 0xE5, 0x09, 0x4B, 0x01, 0xF5, + 0xB2, 0x70, 0x03, 0x44, 0xB4, 0xF8, 0x7C, 0x10, 0x18, 0x46, 0xFC, 0xF7, + 0x5D, 0xFF, 0xA2, 0x6F, 0x06, 0x46, 0xD7, 0xE5, 0x07, 0x9B, 0x03, 0xF1, + 0x5C, 0x00, 0x05, 0x9B, 0xF1, 0xE7, 0x94, 0xF8, 0xDE, 0x20, 0x1B, 0xE7, + 0x18, 0x88, 0x17, 0x00, 0xF0, 0xB5, 0x0C, 0x46, 0x21, 0x4D, 0x09, 0x78, + 0x6F, 0x68, 0x1E, 0x46, 0x63, 0x78, 0x01, 0x20, 0x83, 0xB0, 0x98, 0x40, + 0xC1, 0xB1, 0x38, 0x43, 0x95, 0xF8, 0x77, 0x31, 0x68, 0x60, 0x5B, 0xB1, + 0x05, 0x20, 0x01, 0x92, 0xFC, 0xF7, 0x10, 0xF8, 0x01, 0x28, 0x2C, 0xD0, + 0x17, 0xF0, 0xFF, 0x0F, 0x23, 0x78, 0x01, 0x9A, 0x0B, 0xD0, 0x63, 0xB1, + 0x41, 0xF2, 0x1A, 0x40, 0x31, 0x46, 0xFB, 0xF7, 0xC9, 0xFD, 0x00, 0x20, + 0x03, 0xB0, 0xF0, 0xBD, 0x27, 0xEA, 0x00, 0x00, 0xE4, 0xE7, 0x00, 0x2B, + 0xF2, 0xD0, 0x01, 0x23, 0x00, 0x21, 0x31, 0x20, 0x01, 0x92, 0xFB, 0xF7, + 0x53, 0xFD, 0x6B, 0x68, 0x01, 0x9A, 0x2E, 0x81, 0x63, 0xB1, 0x00, 0x23, + 0x03, 0x70, 0x01, 0x92, 0xFB, 0xF7, 0x7A, 0xFD, 0x01, 0x9A, 0x01, 0x21, + 0x10, 0x46, 0xFB, 0xF7, 0x3F, 0xFF, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, + 0x95, 0xF8, 0x78, 0x31, 0xF0, 0xE7, 0x02, 0x20, 0xDC, 0xE7, 0x00, 0xBF, + 0xE4, 0xB8, 0x17, 0x00, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x10, 0xB5, 0x14, 0x46, 0x0E, 0xDB, 0x0E, 0x4B, 0x19, 0x89, + 0xFF, 0x29, 0x04, 0xD0, 0x22, 0x46, 0x41, 0xF2, 0x18, 0x40, 0xFB, 0xF7, + 0x91, 0xFD, 0x20, 0x46, 0x00, 0x21, 0xFB, 0xF7, 0x1F, 0xFF, 0x00, 0x20, + 0x10, 0xBD, 0x10, 0x46, 0xFB, 0xF7, 0xC2, 0xFF, 0x01, 0x28, 0xEB, 0xD0, + 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x7F, 0x22, 0xFD, 0xF7, 0xFA, 0xFD, + 0xE4, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x3C, 0xB8, 0x15, 0x00, 0x11, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x10, 0xB5, 0x14, 0x46, 0x0E, 0xDB, + 0x0E, 0x4B, 0x19, 0x89, 0xFF, 0x29, 0x04, 0xD0, 0x22, 0x46, 0x41, 0xF2, + 0x1A, 0x40, 0xFB, 0xF7, 0x65, 0xFD, 0x20, 0x46, 0x00, 0x21, 0xFB, 0xF7, + 0xF3, 0xFE, 0x00, 0x20, 0x10, 0xBD, 0x10, 0x46, 0xFB, 0xF7, 0x96, 0xFF, + 0x01, 0x28, 0xEB, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x15, 0x32, + 0xFD, 0xF7, 0xCE, 0xFD, 0xE4, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0xE4, 0xB8, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x3C, 0xB8, 0x15, 0x00, + 0x70, 0xB5, 0x0C, 0x46, 0x41, 0xF2, 0x0F, 0x40, 0x19, 0x46, 0xC8, 0x23, + 0xFB, 0xF7, 0xDA, 0xFC, 0x22, 0x78, 0x37, 0x49, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x02, 0x13, 0x06, 0x46, 0xD3, 0xF8, 0x4C, 0x51, 0x02, 0x70, + 0x00, 0x2D, 0x5C, 0xD0, 0xB5, 0xF8, 0xB4, 0x00, 0xB5, 0xF8, 0x90, 0x10, + 0xB5, 0xF8, 0x92, 0x20, 0xD5, 0xF8, 0x94, 0x30, 0xB3, 0x60, 0x70, 0x80, + 0xB1, 0x80, 0xF2, 0x80, 0x95, 0xF8, 0xA4, 0x30, 0x33, 0x73, 0xB5, 0xF8, + 0x98, 0x30, 0x73, 0x73, 0x08, 0x22, 0x05, 0xF1, 0x88, 0x01, 0x06, 0xF1, + 0x0E, 0x00, 0x10, 0xF0, 0x3D, 0xF8, 0x78, 0x22, 0x29, 0x1D, 0x06, 0xF1, + 0x16, 0x00, 0x10, 0xF0, 0x37, 0xF8, 0xB5, 0xF8, 0xB4, 0x30, 0x83, 0xB1, + 0x00, 0x24, 0x00, 0x22, 0xE1, 0xB2, 0x28, 0x46, 0x0C, 0xF0, 0x2C, 0xFE, + 0xA3, 0xB2, 0x06, 0xEB, 0x83, 0x03, 0xB5, 0xF8, 0xB4, 0x20, 0xC3, 0xF8, + 0x9C, 0x00, 0x01, 0x34, 0xA3, 0xB2, 0x9A, 0x42, 0xEF, 0xD8, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x16, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x05, 0xF1, 0x7C, 0x03, 0x07, 0xCB, 0x14, 0x4C, 0xC6, 0xF8, + 0x8E, 0x00, 0x23, 0x68, 0xC6, 0xF8, 0x92, 0x10, 0x01, 0x33, 0xC6, 0xF8, + 0x96, 0x20, 0x28, 0x46, 0x00, 0x22, 0x0A, 0x21, 0x23, 0x60, 0x0C, 0xF0, + 0x07, 0xFE, 0x23, 0x68, 0xC6, 0xF8, 0xC4, 0x00, 0x33, 0xB1, 0x0A, 0x4A, + 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, + 0x30, 0x46, 0xFB, 0xF7, 0xA3, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x45, 0x80, + 0x30, 0x46, 0xFB, 0xF7, 0x9D, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, + 0x70, 0xB5, 0x23, 0x4A, 0x0B, 0x78, 0x12, 0x68, 0x0C, 0x46, 0x22, 0x49, + 0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, + 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x51, 0x22, 0xDB, 0x66, 0x88, 0x4F, 0xF6, + 0xFF, 0x73, 0x9E, 0x42, 0x0B, 0xD1, 0x95, 0xF8, 0xA2, 0x30, 0xA5, 0xF8, + 0xBA, 0x60, 0x03, 0xF0, 0xCF, 0x03, 0x85, 0xF8, 0xA2, 0x30, 0x1B, 0x06, + 0x1C, 0xD4, 0x00, 0x20, 0x70, 0xBD, 0x31, 0x46, 0x28, 0x46, 0x0C, 0xF0, + 0x65, 0xFD, 0x00, 0x28, 0xF7, 0xD0, 0x95, 0xF8, 0xA2, 0x30, 0xA5, 0xF8, + 0xBA, 0x60, 0x23, 0xF0, 0x30, 0x03, 0x43, 0xF0, 0x10, 0x03, 0x85, 0xF8, + 0xA2, 0x30, 0x00, 0x20, 0x70, 0xBD, 0x00, 0x2D, 0xDA, 0xD1, 0x0B, 0x49, + 0x0B, 0x48, 0x40, 0xF2, 0xAF, 0x32, 0xFD, 0xF7, 0x0B, 0xFD, 0xD3, 0xE7, + 0x20, 0x78, 0x0C, 0xF0, 0xC9, 0xFB, 0x95, 0xF8, 0xA2, 0x30, 0x03, 0xF0, + 0x7F, 0x03, 0x85, 0xF8, 0xA2, 0x30, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x68, 0x8E, 0x15, 0x00, 0xF8, 0xB5, 0x05, 0x20, 0x0E, 0x46, 0x15, 0x46, + 0x1C, 0x46, 0xFB, 0xF7, 0xAF, 0xFE, 0x01, 0x28, 0x4F, 0xD0, 0x2A, 0x46, + 0x0C, 0x23, 0x21, 0x46, 0x41, 0xF2, 0x12, 0x40, 0xFB, 0xF7, 0x04, 0xFC, + 0x37, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0x46, + 0x2A, 0xDB, 0x35, 0x4B, 0x1C, 0x7C, 0xDA, 0xF7, 0x7F, 0xF8, 0x00, 0x28, + 0x30, 0xD1, 0xF3, 0x7A, 0x53, 0xB1, 0x32, 0x4B, 0x32, 0x49, 0x9A, 0x68, + 0xD1, 0xF8, 0x2C, 0x12, 0x11, 0x66, 0xA3, 0xF5, 0x40, 0x63, 0x4F, 0xF4, + 0x80, 0x72, 0x1A, 0x60, 0x2E, 0x4F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x04, 0x77, 0x3C, 0x6C, 0x4C, 0xB3, 0x23, 0x7E, 0x2B, 0x70, 0xB3, 0x7A, + 0xE3, 0xB9, 0x23, 0x1D, 0x03, 0xCB, 0x1B, 0x88, 0x6B, 0x81, 0xC5, 0xF8, + 0x02, 0x00, 0xC5, 0xF8, 0x06, 0x10, 0x28, 0x46, 0xFB, 0xF7, 0x04, 0xFC, + 0x00, 0x20, 0xF8, 0xBD, 0x1F, 0x4F, 0x3C, 0x7C, 0xFF, 0x2C, 0xD2, 0xD1, + 0x21, 0x49, 0x22, 0x48, 0x40, 0xF2, 0xEB, 0x32, 0xFD, 0xF7, 0xAA, 0xFC, + 0x3C, 0x7C, 0xCA, 0xE7, 0xF0, 0x7A, 0xDA, 0xF7, 0x53, 0xF8, 0xCA, 0xE7, + 0x1D, 0x48, 0xFC, 0xF7, 0xD1, 0xF8, 0x01, 0x28, 0x0A, 0xD0, 0x3C, 0x6C, + 0xDB, 0xE7, 0x02, 0x20, 0xF8, 0xBD, 0xFF, 0x23, 0x28, 0x46, 0x2B, 0x70, + 0xFB, 0xF7, 0xE4, 0xFB, 0x20, 0x46, 0xF8, 0xBD, 0x05, 0x22, 0x0C, 0x23, + 0x00, 0x21, 0x3B, 0x20, 0xFB, 0xF7, 0xAC, 0xFB, 0x39, 0x6C, 0x03, 0x46, + 0x09, 0x7E, 0x03, 0xF8, 0x02, 0x1B, 0x31, 0x89, 0x37, 0x68, 0x74, 0x68, + 0xC0, 0xF8, 0x02, 0x70, 0x19, 0x81, 0x5C, 0x60, 0xFB, 0xF7, 0xCE, 0xFB, + 0x31, 0x68, 0x72, 0x68, 0x33, 0x89, 0x6B, 0x81, 0xC5, 0xF8, 0x02, 0x10, + 0xC5, 0xF8, 0x06, 0x20, 0xBD, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x00, 0xED, 0x00, 0xE0, 0x88, 0x1A, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x60, 0xB8, 0x15, 0x00, + 0x08, 0x88, 0x17, 0x00, 0xF8, 0xB5, 0x05, 0x20, 0x0C, 0x46, 0x15, 0x46, + 0x1E, 0x46, 0xFB, 0xF7, 0x1F, 0xFE, 0x01, 0x28, 0x3C, 0xD0, 0x1F, 0x4F, + 0x3B, 0x68, 0x73, 0xB1, 0x22, 0x78, 0xB2, 0xB1, 0x61, 0x78, 0x01, 0x22, + 0x8A, 0x40, 0x13, 0x43, 0x31, 0x46, 0x2A, 0x46, 0x41, 0xF2, 0x18, 0x40, + 0x3B, 0x60, 0xFB, 0xF7, 0xD3, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x23, 0x78, + 0x3B, 0xB9, 0x2A, 0x46, 0x31, 0x46, 0x41, 0xF2, 0x18, 0x40, 0xFB, 0xF7, + 0xC9, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x01, 0x23, 0x00, 0x21, 0x2A, 0x46, + 0x22, 0x20, 0xFB, 0xF7, 0x59, 0xFB, 0x23, 0x78, 0x61, 0x78, 0x8B, 0xB1, + 0x3A, 0x68, 0x01, 0x23, 0x8B, 0x40, 0x13, 0x43, 0xB3, 0xFA, 0x83, 0xF2, + 0x52, 0x09, 0x3B, 0x60, 0x3E, 0x81, 0x02, 0x70, 0xFB, 0xF7, 0x7A, 0xFB, + 0x28, 0x46, 0x01, 0x21, 0xFB, 0xF7, 0x40, 0xFD, 0x00, 0x20, 0xF8, 0xBD, + 0x3B, 0x68, 0x01, 0x22, 0x8A, 0x40, 0x23, 0xEA, 0x02, 0x03, 0xEB, 0xE7, + 0x02, 0x20, 0xF8, 0xBD, 0xE4, 0xB8, 0x17, 0x00, 0xF8, 0xB5, 0x05, 0x20, + 0x0D, 0x46, 0x17, 0x46, 0x1E, 0x46, 0xFB, 0xF7, 0xD5, 0xFD, 0x01, 0x28, + 0x24, 0xD0, 0x13, 0x4C, 0x2B, 0x78, 0x61, 0x68, 0x00, 0x3B, 0x18, 0xBF, + 0x01, 0x23, 0x84, 0xF8, 0x77, 0x31, 0x81, 0xB9, 0x01, 0x23, 0x05, 0x22, + 0x31, 0x20, 0xFB, 0xF7, 0x23, 0xFB, 0x94, 0xF8, 0x77, 0x31, 0xFF, 0x22, + 0x22, 0x81, 0x73, 0xB9, 0x03, 0x70, 0xFB, 0xF7, 0x4B, 0xFB, 0x01, 0x21, + 0x05, 0x20, 0xFB, 0xF7, 0x11, 0xFD, 0x3A, 0x46, 0x31, 0x46, 0x41, 0xF2, + 0x14, 0x40, 0xFB, 0xF7, 0x79, 0xFB, 0x00, 0x20, 0xF8, 0xBD, 0x94, 0xF8, + 0x78, 0x31, 0xED, 0xE7, 0x02, 0x20, 0xF8, 0xBD, 0xE4, 0xB8, 0x17, 0x00, + 0x08, 0xB5, 0x4F, 0xF4, 0xBE, 0x72, 0x00, 0x21, 0x09, 0x48, 0xD8, 0xF7, + 0xFB, 0xFE, 0x00, 0x21, 0x05, 0x20, 0xFB, 0xF7, 0xF7, 0xFC, 0x04, 0xF0, + 0xFB, 0xFF, 0x04, 0xF0, 0x7D, 0xFA, 0x02, 0xF0, 0x25, 0xF9, 0x09, 0xF0, + 0x41, 0xF9, 0xBD, 0xE8, 0x08, 0x40, 0x0E, 0xF0, 0xD5, 0xB8, 0x00, 0xBF, + 0xE4, 0xB8, 0x17, 0x00, 0xA8, 0xB9, 0x10, 0x4B, 0x93, 0xF8, 0x72, 0x01, + 0x76, 0x33, 0xC8, 0xB1, 0x00, 0xEB, 0x40, 0x00, 0x10, 0xB4, 0x03, 0xEB, + 0x40, 0x04, 0x01, 0xE0, 0xA3, 0x42, 0x0D, 0xD0, 0x1A, 0x88, 0x8A, 0x42, + 0x18, 0x46, 0x03, 0xF1, 0x06, 0x03, 0xF7, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, + 0x70, 0x47, 0x05, 0x4B, 0x93, 0xF8, 0x73, 0x01, 0xCA, 0x33, 0xE8, 0xE7, + 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x70, 0x47, 0x00, 0xBF, + 0xE4, 0xB8, 0x17, 0x00, 0xF0, 0xB9, 0x4B, 0x1E, 0x0D, 0x2B, 0x31, 0xD8, + 0x0E, 0x29, 0x32, 0xD0, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF6, 0x67, 0x11, + 0x19, 0x4B, 0x93, 0xF8, 0x72, 0x01, 0x76, 0x33, 0x60, 0xB3, 0x00, 0xEB, + 0x40, 0x00, 0x10, 0xB4, 0x03, 0xEB, 0x40, 0x04, 0x01, 0xE0, 0xA3, 0x42, + 0x1A, 0xD0, 0x1A, 0x88, 0x8A, 0x42, 0x18, 0x46, 0x03, 0xF1, 0x06, 0x03, + 0xF7, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0x01, 0x28, 0x06, 0xD0, + 0x4F, 0xF6, 0xFF, 0x71, 0x0C, 0x4B, 0x93, 0xF8, 0x73, 0x01, 0xCA, 0x33, + 0xE4, 0xE7, 0x4B, 0x1E, 0xA4, 0x2B, 0xF5, 0xD8, 0x01, 0xEB, 0x81, 0x01, + 0x01, 0xF5, 0x9C, 0x51, 0x08, 0x31, 0xF1, 0xE7, 0x00, 0x20, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x4F, 0xF6, 0xFF, 0x71, 0xD0, 0xE7, 0x40, 0xF6, + 0xB4, 0x11, 0xCD, 0xE7, 0x70, 0x47, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, + 0xF0, 0xB4, 0x03, 0x46, 0x42, 0x48, 0x5C, 0x68, 0x90, 0xF8, 0x75, 0x21, + 0xA5, 0x06, 0x2E, 0xD5, 0x93, 0xF8, 0xFA, 0x70, 0x93, 0xF8, 0xFC, 0x50, + 0x93, 0xF8, 0x01, 0x61, 0x7C, 0x10, 0xFF, 0x06, 0x4F, 0xEA, 0xD5, 0x05, + 0x55, 0xD5, 0x04, 0x24, 0x05, 0xEA, 0xD6, 0x16, 0x90, 0xF8, 0x74, 0x50, + 0xB3, 0xF8, 0xC8, 0x00, 0xB5, 0x42, 0x28, 0xBF, 0x35, 0x46, 0x94, 0x42, + 0x28, 0xBF, 0x14, 0x46, 0x83, 0xF8, 0x2C, 0x41, 0x91, 0xF8, 0xD9, 0x20, + 0x04, 0x2A, 0x46, 0xD0, 0xA2, 0x42, 0x28, 0xBF, 0x22, 0x46, 0x04, 0x2A, + 0x43, 0xD0, 0xD2, 0xB2, 0x00, 0xF0, 0x0C, 0x00, 0x0C, 0x38, 0x83, 0xF8, + 0x2D, 0x21, 0x83, 0xF8, 0x30, 0x51, 0x18, 0xBF, 0x01, 0x20, 0xF0, 0xBC, + 0x70, 0x47, 0x90, 0xF8, 0x74, 0x51, 0x60, 0x07, 0x13, 0xD5, 0xD3, 0xF8, + 0xE8, 0x00, 0x00, 0xF0, 0x0C, 0x04, 0x04, 0x2C, 0x44, 0xD0, 0x08, 0x2C, + 0x0C, 0xBF, 0x04, 0x24, 0x02, 0x24, 0xC0, 0xF3, 0x02, 0x20, 0x04, 0x28, + 0x27, 0xD8, 0x85, 0x42, 0x28, 0xBF, 0x05, 0x46, 0xB3, 0xF8, 0xC8, 0x00, + 0xCD, 0xE7, 0xB3, 0xF8, 0xC8, 0x00, 0x10, 0xF0, 0x02, 0x04, 0xC0, 0xF3, + 0x01, 0x26, 0x28, 0xD0, 0x01, 0x2A, 0x28, 0xBF, 0x01, 0x22, 0x83, 0xF8, + 0x2C, 0x21, 0x14, 0x46, 0x91, 0xF8, 0xD9, 0x20, 0xB5, 0x42, 0x28, 0xBF, + 0x35, 0x46, 0x04, 0x2A, 0xC2, 0xD1, 0x02, 0x2C, 0x22, 0x46, 0x28, 0xBF, + 0x02, 0x22, 0xD2, 0xB2, 0xC2, 0xE7, 0x67, 0x07, 0x09, 0xD5, 0x03, 0x24, + 0xA6, 0xE7, 0x04, 0x2C, 0xF3, 0xD1, 0x03, 0x22, 0xBA, 0xE7, 0xB3, 0xF8, + 0xC8, 0x00, 0x00, 0x25, 0xA7, 0xE7, 0xA6, 0x07, 0x47, 0xBF, 0x05, 0xF0, + 0x01, 0x06, 0x02, 0x24, 0x04, 0xF0, 0x01, 0x04, 0x05, 0xF0, 0x01, 0x06, + 0x96, 0xE7, 0xB5, 0x42, 0x83, 0xF8, 0x2C, 0x41, 0x28, 0xBF, 0x35, 0x46, + 0x22, 0x46, 0xA5, 0xE7, 0x03, 0x24, 0xBC, 0xE7, 0xE4, 0xB8, 0x17, 0x00, + 0x00, 0xF0, 0x03, 0x00, 0x01, 0x28, 0x04, 0xD0, 0x02, 0x28, 0x14, 0xBF, + 0x07, 0x20, 0x09, 0x20, 0x70, 0x47, 0x08, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0xF0, 0x03, 0x00, 0x01, 0x28, 0x04, 0xD0, 0x02, 0x28, 0x14, 0xBF, + 0x07, 0x20, 0x0B, 0x20, 0x70, 0x47, 0x09, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x10, 0xB4, 0x0E, 0x22, 0x04, 0x46, 0x07, 0x20, 0x44, 0xFA, 0x02, 0xF3, + 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, + 0x02, 0x02, 0x02, 0xD1, 0x11, 0xF0, 0xFF, 0x00, 0xF2, 0xD1, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0xC3, 0x78, 0x33, 0xB9, 0x83, 0x78, 0x33, 0xB9, + 0x40, 0x78, 0x00, 0x28, 0x18, 0xBF, 0x01, 0x20, 0x70, 0x47, 0x03, 0x20, + 0x70, 0x47, 0x02, 0x20, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x23, 0x40, 0xFA, + 0x03, 0xF2, 0x12, 0xF0, 0x01, 0x0F, 0xD9, 0xB2, 0x03, 0xF1, 0x01, 0x03, + 0x02, 0xD1, 0x0C, 0x2B, 0xF5, 0xD1, 0x19, 0x46, 0x08, 0x46, 0x70, 0x47, + 0x68, 0xB1, 0x00, 0x23, 0xC3, 0xF1, 0x0B, 0x02, 0x40, 0xFA, 0x02, 0xF2, + 0xD2, 0x07, 0xD9, 0xB2, 0x03, 0xF1, 0x01, 0x03, 0x05, 0xD4, 0x0C, 0x2B, + 0xF4, 0xD1, 0xFF, 0x20, 0x70, 0x47, 0x0C, 0x20, 0x70, 0x47, 0xC1, 0xF1, + 0x0B, 0x01, 0xC8, 0xB2, 0x70, 0x47, 0x00, 0xBF, 0xF0, 0xB5, 0xDD, 0xE9, + 0x05, 0x56, 0x00, 0x24, 0x1C, 0x80, 0x2C, 0x60, 0x34, 0x60, 0x50, 0xB3, + 0x84, 0x78, 0xC4, 0xF3, 0x82, 0x0C, 0xBC, 0xF1, 0x02, 0x0F, 0x04, 0xF0, + 0x03, 0x04, 0x23, 0xDC, 0x4F, 0xF0, 0x01, 0x0C, 0x04, 0xF1, 0x0D, 0x00, + 0x4F, 0xF0, 0x01, 0x0E, 0x0E, 0xFA, 0x00, 0xF0, 0x07, 0x9F, 0x01, 0x38, + 0x80, 0xB2, 0x87, 0xF8, 0x00, 0xC0, 0x18, 0x80, 0xF9, 0xB1, 0x09, 0x68, + 0xC1, 0xF3, 0xC2, 0x51, 0x01, 0xF1, 0x0D, 0x03, 0x0E, 0xFA, 0x03, 0xF3, + 0x01, 0x3B, 0x2B, 0x60, 0x4A, 0xB1, 0x07, 0x29, 0x11, 0xD1, 0xD3, 0x78, + 0xC3, 0xF3, 0xC1, 0x03, 0x14, 0x33, 0x0E, 0xFA, 0x03, 0xF7, 0x01, 0x3F, + 0x37, 0x60, 0xF0, 0xBD, 0xAC, 0xF1, 0x03, 0x00, 0x4F, 0xF0, 0x01, 0x0C, + 0x0C, 0xFA, 0x00, 0xFC, 0x5F, 0xFA, 0x8C, 0xFC, 0xD4, 0xE7, 0x33, 0x60, + 0xF0, 0xBD, 0x00, 0x2A, 0xF1, 0xD0, 0x03, 0x2C, 0x01, 0xD0, 0x30, 0x60, + 0xF0, 0xBD, 0xD3, 0x78, 0xC3, 0xF3, 0xC1, 0x03, 0x10, 0x33, 0x0E, 0xFA, + 0x03, 0xF7, 0x01, 0x3F, 0x37, 0x60, 0xF0, 0xBD, 0x00, 0xF0, 0x7F, 0x03, + 0x48, 0x2B, 0x31, 0xD8, 0x10, 0xF0, 0x7E, 0x0F, 0x2C, 0xD0, 0x02, 0x3B, + 0x46, 0x2B, 0x29, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x26, 0x28, 0x24, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x35, 0x37, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x39, 0x28, 0x28, 0x28, 0x3B, 0x28, 0x3D, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x3F, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x41, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x33, 0x00, 0x01, 0x20, 0x70, 0x47, + 0x00, 0x20, 0x70, 0x47, 0xFF, 0x20, 0x70, 0x47, 0x60, 0x2B, 0x04, 0xD0, + 0x6C, 0x2B, 0x14, 0xBF, 0xFF, 0x20, 0x0B, 0x20, 0x70, 0x47, 0x0A, 0x20, + 0x70, 0x47, 0x09, 0x20, 0x70, 0x47, 0x02, 0x20, 0x70, 0x47, 0x04, 0x20, + 0x70, 0x47, 0x05, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, 0x06, 0x20, + 0x70, 0x47, 0x07, 0x20, 0x70, 0x47, 0x08, 0x20, 0x70, 0x47, 0x00, 0xBF, + 0x2D, 0xE9, 0xF8, 0x4F, 0x90, 0xF8, 0x00, 0xB0, 0xBB, 0xF1, 0x00, 0x0F, + 0x34, 0xD0, 0xDF, 0xF8, 0x70, 0x80, 0xDF, 0xF8, 0x70, 0xA0, 0xDF, 0xF8, + 0x70, 0x90, 0x05, 0x46, 0x0E, 0x46, 0x04, 0x46, 0x00, 0x27, 0x9E, 0xB9, + 0x60, 0x78, 0xFF, 0xF7, 0x9B, 0xFF, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x4F, 0xF0, 0x01, 0x03, 0x0E, 0xDB, 0x0B, 0x28, + 0x0E, 0xDD, 0x01, 0x34, 0x63, 0x1B, 0x5B, 0x45, 0xED, 0xDB, 0x38, 0x46, + 0xBD, 0xE8, 0xF8, 0x8F, 0x94, 0xF9, 0x01, 0x30, 0x60, 0x78, 0x00, 0x2B, + 0xE7, 0xDB, 0xF2, 0xE7, 0x0B, 0x28, 0x04, 0xDC, 0x03, 0xFA, 0x00, 0xF0, + 0x07, 0x43, 0xBF, 0xB2, 0xEB, 0xE7, 0x4F, 0xF4, 0x15, 0x72, 0x51, 0x46, + 0x48, 0x46, 0xFD, 0xF7, 0xC5, 0xF9, 0x95, 0xF8, 0x00, 0xB0, 0xE2, 0xE7, + 0x5F, 0x46, 0x38, 0x46, 0xBD, 0xE8, 0xF8, 0x8F, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x94, 0xB8, 0x15, 0x00, 0xF0, 0xB4, 0x00, 0x24, + 0x4F, 0xF6, 0xFF, 0x77, 0x03, 0x26, 0x40, 0xFA, 0x04, 0xF3, 0x03, 0xF0, + 0x03, 0x03, 0x06, 0xFA, 0x04, 0xF2, 0x41, 0xFA, 0x04, 0xF5, 0x03, 0x2B, + 0x27, 0xEA, 0x02, 0x02, 0x05, 0xF0, 0x03, 0x05, 0x0A, 0xD0, 0x03, 0x2D, + 0x08, 0xD0, 0xAB, 0x42, 0x28, 0xBF, 0x2B, 0x46, 0xA3, 0x40, 0x02, 0x34, + 0x1A, 0x43, 0x10, 0x2C, 0x97, 0xB2, 0xE6, 0xD1, 0x38, 0x46, 0xF0, 0xBC, + 0x70, 0x47, 0x00, 0xBF, 0x08, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x00, 0x30, 0x41, 0xF2, 0x21, 0x42, 0xD0, 0xF8, 0x90, 0x31, 0x98, 0x78, + 0x41, 0xF2, 0x21, 0x53, 0x01, 0x28, 0x14, 0xBF, 0x10, 0x46, 0x18, 0x46, + 0x70, 0x47, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0xD0, 0xF8, 0xDC, 0x30, + 0xC3, 0xF3, 0x05, 0x60, 0x5B, 0x00, 0x54, 0xBF, 0x40, 0xF4, 0x80, 0x70, + 0x40, 0xF4, 0x40, 0x70, 0x70, 0x47, 0x00, 0xBF, 0x10, 0xB5, 0x04, 0x46, + 0x0C, 0xF0, 0x86, 0xFB, 0x03, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x5C, 0x31, + 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, + 0x38, 0xB5, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x05, 0x46, 0x90, 0xF8, 0xB8, 0x00, 0x18, 0xDB, 0x68, 0xB1, 0x05, 0xF1, + 0xB8, 0x03, 0x1C, 0x18, 0x00, 0x20, 0x13, 0xF8, 0x01, 0x2F, 0x22, 0xF0, + 0x80, 0x01, 0x81, 0x42, 0xC8, 0xBF, 0x02, 0xF0, 0x7F, 0x00, 0xA3, 0x42, + 0xF5, 0xD1, 0xFF, 0xF7, 0xFF, 0xFE, 0x01, 0x46, 0x28, 0x46, 0x0C, 0xF0, + 0x5F, 0xF9, 0x00, 0x23, 0x85, 0xF8, 0x56, 0x31, 0x38, 0xBD, 0x00, 0x28, + 0xE5, 0xD1, 0x05, 0x48, 0x05, 0x49, 0x40, 0xF2, 0xC1, 0x22, 0xFD, 0xF7, + 0x25, 0xF9, 0x95, 0xF8, 0xB8, 0x00, 0xDB, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0xB0, 0xB8, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x90, 0xF8, 0x56, 0x31, 0xD0, 0xF8, 0x48, 0x71, 0x99, 0xB0, 0x00, 0x2B, + 0x00, 0xF0, 0xDB, 0x80, 0xFA, 0x6B, 0x09, 0x92, 0x7A, 0x68, 0x05, 0x92, + 0x07, 0xF1, 0x14, 0x04, 0xBA, 0x68, 0x07, 0x92, 0x10, 0xAE, 0x0D, 0xF1, + 0x50, 0x08, 0x05, 0x46, 0x22, 0x46, 0xB4, 0x46, 0x40, 0x46, 0x07, 0xF1, + 0x24, 0x0B, 0x52, 0xF8, 0x04, 0x1B, 0x4C, 0xF8, 0x04, 0x1B, 0x5A, 0x45, + 0xD1, 0x68, 0x40, 0xF8, 0x04, 0x1B, 0xF6, 0xD1, 0x13, 0xF0, 0x01, 0x02, + 0x06, 0x92, 0x40, 0xF0, 0xC0, 0x80, 0x09, 0x9A, 0xC2, 0xF3, 0xC0, 0x02, + 0x06, 0x92, 0x9A, 0x06, 0x00, 0xF1, 0x16, 0x81, 0x98, 0x07, 0x1A, 0xD5, + 0xDF, 0xF8, 0x64, 0x93, 0x06, 0xF1, 0x10, 0x0E, 0x31, 0x46, 0x51, 0xF8, + 0x04, 0x2B, 0xC2, 0xF3, 0xC2, 0x2A, 0x02, 0xF0, 0x7C, 0x00, 0x5A, 0xEA, + 0x00, 0x00, 0xC2, 0xF3, 0xC1, 0x1C, 0x02, 0xEA, 0x09, 0x02, 0x06, 0xD0, + 0xD5, 0xF8, 0x50, 0x01, 0x02, 0x43, 0x42, 0xEA, 0x0C, 0x62, 0x41, 0xF8, + 0x04, 0x2C, 0x8E, 0x45, 0xE9, 0xD1, 0xD9, 0x06, 0x5C, 0xD5, 0x95, 0xF8, + 0x22, 0x10, 0xC3, 0x4A, 0xC3, 0x4B, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, + 0x01, 0x20, 0xD3, 0xF8, 0x38, 0x33, 0x0D, 0xF1, 0x3F, 0x02, 0x0D, 0xF1, + 0x3E, 0x01, 0x98, 0x47, 0x06, 0xF1, 0x10, 0x03, 0x06, 0x94, 0x08, 0x95, + 0x0D, 0xF1, 0x50, 0x09, 0x1C, 0x46, 0x35, 0x46, 0xBA, 0x4B, 0x59, 0xF8, + 0x04, 0xAB, 0x55, 0xF8, 0x04, 0x1B, 0x93, 0xF8, 0xBD, 0x30, 0x4F, 0xEA, + 0x1A, 0x4A, 0xC1, 0xF3, 0xC7, 0x22, 0xC1, 0xF3, 0xC2, 0x20, 0x5F, 0xFA, + 0x81, 0xFC, 0x4F, 0xEA, 0x0A, 0x4A, 0x01, 0xF0, 0x7F, 0x01, 0xD3, 0xB9, + 0x0C, 0xF0, 0x7C, 0x0C, 0x50, 0xEA, 0x0C, 0x03, 0x00, 0xF0, 0x29, 0x81, + 0xAD, 0x4B, 0x93, 0xF8, 0xBA, 0x30, 0x00, 0x2B, 0x00, 0xF0, 0xF3, 0x80, + 0xAB, 0x4B, 0x93, 0xF8, 0x2A, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xED, 0x80, + 0x00, 0x28, 0x40, 0xF0, 0x2F, 0x81, 0x09, 0x29, 0x00, 0xF2, 0x2C, 0x81, + 0x02, 0xF0, 0x06, 0x02, 0x2D, 0xE1, 0xD9, 0xF7, 0x47, 0xFE, 0xA4, 0x4B, + 0x1A, 0x7D, 0x00, 0x2A, 0x00, 0xF0, 0x06, 0x81, 0x5A, 0x7D, 0x00, 0x2A, + 0x00, 0xF0, 0x02, 0x81, 0x4A, 0xEA, 0x00, 0x20, 0x40, 0xF0, 0xA8, 0x00, + 0x49, 0xF8, 0x04, 0x0C, 0xAC, 0x42, 0xBD, 0xD1, 0x08, 0x9D, 0x06, 0x9C, + 0x95, 0xF8, 0x56, 0x31, 0x5A, 0x06, 0x13, 0xD5, 0x94, 0x4A, 0x95, 0xF8, + 0x22, 0x30, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x07, 0x9A, + 0xD3, 0xF8, 0xC8, 0x31, 0x22, 0xF0, 0x7C, 0x72, 0x00, 0x2B, 0x07, 0x92, + 0x04, 0xDB, 0xC3, 0xF3, 0x05, 0x63, 0x42, 0xEA, 0x03, 0x53, 0x07, 0x93, + 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, 0x8D, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x8C, 0x4A, 0x05, 0x9B, 0x11, 0x68, 0x7B, 0x60, + 0x48, 0x1C, 0x07, 0x9B, 0xBB, 0x60, 0x10, 0x60, 0x56, 0xF8, 0x04, 0x3B, + 0x44, 0xF8, 0x04, 0x3B, 0x58, 0xF8, 0x04, 0x3B, 0xE3, 0x60, 0xA3, 0x45, + 0xF6, 0xD1, 0x28, 0xB1, 0x82, 0x4B, 0x11, 0x60, 0x1B, 0x68, 0x09, 0xB9, + 0x03, 0xB1, 0x62, 0xB6, 0x00, 0x23, 0x85, 0xF8, 0x56, 0x31, 0x38, 0x46, + 0x19, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD5, 0xF8, 0x4C, 0x01, 0x95, 0xF8, + 0x30, 0x21, 0x0D, 0x92, 0xCD, 0xE9, 0x0B, 0x34, 0x00, 0x22, 0x08, 0x92, + 0x00, 0xF1, 0x88, 0x0E, 0x0A, 0x92, 0x31, 0x46, 0x82, 0x46, 0x3E, 0xF8, + 0x02, 0x3B, 0x03, 0xEB, 0x43, 0x03, 0x0A, 0xEB, 0x83, 0x03, 0x58, 0x89, + 0xC0, 0xF3, 0x0D, 0x03, 0x43, 0xF0, 0x80, 0x43, 0x4F, 0xEA, 0xD3, 0x29, + 0x19, 0xF0, 0x06, 0x0C, 0x00, 0xF0, 0x8E, 0x80, 0x09, 0xF0, 0x07, 0x09, + 0xB9, 0xF1, 0x04, 0x0F, 0x03, 0xF0, 0x7F, 0x0C, 0x00, 0xF0, 0xE5, 0x80, + 0xB9, 0xF1, 0x05, 0x0F, 0x00, 0xF0, 0xE4, 0x80, 0xCC, 0xF3, 0xC1, 0x0C, + 0x00, 0x2A, 0x00, 0xF0, 0xD1, 0x80, 0x08, 0x98, 0x00, 0x28, 0x40, 0xF0, + 0x95, 0x80, 0x08, 0x68, 0x20, 0xF0, 0x60, 0x40, 0x20, 0xF4, 0x7F, 0x50, + 0x20, 0xF0, 0x3F, 0x00, 0x18, 0x43, 0x08, 0x60, 0x01, 0x32, 0x04, 0x2A, + 0x01, 0xF1, 0x04, 0x01, 0xCB, 0xD1, 0x05, 0x9A, 0x22, 0xF4, 0xC0, 0x71, + 0x08, 0x9A, 0x05, 0x91, 0xDD, 0xE9, 0x0B, 0x34, 0x22, 0xB1, 0x0A, 0x9A, + 0x01, 0x32, 0x41, 0xEA, 0xC2, 0x12, 0x05, 0x92, 0x06, 0x9A, 0x00, 0x2A, + 0x7E, 0xD1, 0x09, 0x9A, 0x22, 0xF0, 0x08, 0x02, 0x43, 0xF0, 0x02, 0x03, + 0xFA, 0x63, 0x9A, 0x06, 0x85, 0xF8, 0x56, 0x31, 0x7F, 0xF5, 0xEA, 0xAE, + 0xD5, 0xF8, 0x4C, 0x01, 0x7A, 0x69, 0x90, 0xF8, 0xA0, 0x30, 0xDF, 0xF8, + 0x38, 0xE1, 0x05, 0x99, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, + 0x0E, 0xEA, 0x02, 0x0E, 0xB3, 0xF8, 0x0A, 0xC0, 0xCC, 0xF3, 0x0D, 0x02, + 0xC1, 0xF3, 0xC1, 0x13, 0x42, 0xF0, 0x80, 0x42, 0x11, 0xF4, 0xC0, 0x7F, + 0xCC, 0xF3, 0x80, 0x3C, 0x4E, 0xEA, 0x02, 0x01, 0x03, 0xF1, 0xFF, 0x33, + 0xDB, 0xB2, 0x80, 0xF8, 0xA1, 0xC0, 0xC0, 0xF8, 0x9C, 0x10, 0x4F, 0xF0, + 0x00, 0x02, 0x06, 0x98, 0x00, 0x93, 0x03, 0x90, 0x14, 0xBF, 0x01, 0x23, + 0x13, 0x46, 0xCD, 0xE9, 0x01, 0x22, 0x38, 0x46, 0x0C, 0xF0, 0x56, 0xFF, + 0x95, 0xF8, 0x56, 0x31, 0xB6, 0xE6, 0x9D, 0xF8, 0x3F, 0x00, 0x40, 0xEA, + 0x00, 0x20, 0x40, 0xEA, 0x0A, 0x00, 0x02, 0xF0, 0x06, 0x02, 0x49, 0xF8, + 0x04, 0x0C, 0x00, 0x2A, 0x3F, 0xF4, 0x20, 0xAF, 0x09, 0x29, 0x7F, 0xF6, + 0x1D, 0xAF, 0x29, 0x4B, 0x59, 0xF8, 0x04, 0x2C, 0x93, 0xF8, 0xAF, 0x10, + 0x12, 0x0C, 0x41, 0xEA, 0x01, 0x21, 0x12, 0x04, 0x0A, 0x43, 0x49, 0xF8, + 0x04, 0x2C, 0x0F, 0xE7, 0x08, 0x68, 0xCD, 0xF8, 0x18, 0xC0, 0x20, 0xF0, + 0x60, 0x40, 0x20, 0xF4, 0x7F, 0x50, 0x20, 0xF0, 0x3F, 0x00, 0x18, 0x43, + 0x08, 0x60, 0x83, 0xE7, 0x40, 0xEA, 0x00, 0x20, 0x40, 0xEA, 0x0A, 0x00, + 0x49, 0xF8, 0x04, 0x0C, 0xFC, 0xE6, 0x9D, 0xF8, 0x3E, 0x20, 0x42, 0xEA, + 0x02, 0x22, 0x42, 0xEA, 0x0A, 0x02, 0x49, 0xF8, 0x04, 0x2C, 0xF3, 0xE6, + 0x0A, 0x98, 0xAC, 0xEB, 0x00, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, + 0x08, 0x90, 0x62, 0xE7, 0x09, 0x9A, 0x42, 0xF0, 0x08, 0x02, 0x7F, 0xE7, + 0x12, 0xF0, 0x06, 0x02, 0x0B, 0xD0, 0x04, 0x29, 0x09, 0xD8, 0x0C, 0x4B, + 0x93, 0xF8, 0xBB, 0x00, 0x40, 0xEA, 0x00, 0x20, 0x40, 0xEA, 0x0A, 0x00, + 0x49, 0xF8, 0x04, 0x0C, 0xB5, 0xE7, 0x07, 0x4B, 0xB3, 0xF8, 0xBB, 0x00, + 0x40, 0xBA, 0x80, 0xB2, 0x40, 0xEA, 0x0A, 0x00, 0x49, 0xF8, 0x04, 0x0C, + 0xAB, 0xE7, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xBC, 0x34, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0xFF, 0x3F, 0x00, 0xE0, + 0x00, 0xC0, 0xFF, 0x1F, 0x0D, 0x98, 0x84, 0x45, 0x0A, 0x98, 0x38, 0xBF, + 0x60, 0x46, 0x0A, 0x90, 0x08, 0x98, 0x38, 0xBF, 0x01, 0x20, 0x08, 0x90, + 0x27, 0xE7, 0x4F, 0xEA, 0x1C, 0x1C, 0x1D, 0xE7, 0x14, 0xAC, 0x03, 0xF4, + 0xC0, 0x69, 0x54, 0xF8, 0x22, 0x40, 0xB9, 0xF5, 0x80, 0x6F, 0x0C, 0xBF, + 0x4F, 0xF4, 0x00, 0x39, 0x4F, 0xF4, 0x80, 0x39, 0x24, 0xF4, 0x40, 0x34, + 0x44, 0xEA, 0x09, 0x09, 0x40, 0x04, 0x14, 0xAC, 0x4C, 0xBF, 0x49, 0xF4, + 0x80, 0x20, 0x29, 0xF4, 0x80, 0x20, 0x44, 0xF8, 0x22, 0x00, 0x4F, 0xEA, + 0x1C, 0x1C, 0x01, 0xE7, 0xF0, 0xB4, 0xD2, 0xF8, 0xA4, 0x50, 0x2C, 0x88, + 0x30, 0xBB, 0x00, 0x29, 0x44, 0xD0, 0x51, 0x4E, 0x03, 0x46, 0x96, 0xF8, + 0x75, 0x01, 0x26, 0x46, 0x01, 0x28, 0x4F, 0xD9, 0x8F, 0x78, 0x17, 0xF0, + 0x03, 0x07, 0x3C, 0xD0, 0xAD, 0x78, 0xCB, 0x78, 0x09, 0x79, 0x00, 0x2D, + 0x41, 0xD1, 0x5E, 0x1E, 0x0D, 0x2E, 0x40, 0xD8, 0x0E, 0x2B, 0x00, 0xF0, + 0x86, 0x80, 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF6, 0x67, 0x13, 0x00, 0x29, + 0x47, 0xD0, 0x03, 0x2F, 0x60, 0xD0, 0x02, 0x2F, 0x57, 0xD0, 0x02, 0x20, + 0x1C, 0x46, 0x00, 0x21, 0x03, 0x46, 0x05, 0xE0, 0x3E, 0x4B, 0x93, 0xF8, + 0x75, 0x31, 0x5B, 0xB9, 0x18, 0x46, 0x00, 0x21, 0xA2, 0xF8, 0xA8, 0x40, + 0x82, 0xF8, 0xD8, 0x30, 0xF0, 0xBC, 0x82, 0xF8, 0xD9, 0x00, 0xA2, 0xF8, + 0xAA, 0x10, 0x70, 0x47, 0xC0, 0x78, 0x10, 0xF0, 0x03, 0x00, 0x12, 0xD0, + 0x01, 0x28, 0x4F, 0xF6, 0xF6, 0x76, 0x08, 0xBF, 0x0A, 0x26, 0x26, 0x44, + 0xB6, 0xB2, 0x51, 0xBB, 0x01, 0x23, 0x34, 0x46, 0x18, 0x46, 0xE5, 0xE7, + 0x08, 0x46, 0x0B, 0x46, 0xE2, 0xE7, 0x34, 0x46, 0x39, 0x46, 0x18, 0x46, + 0xDE, 0xE7, 0x99, 0xB1, 0x1F, 0x46, 0x26, 0x46, 0x03, 0x46, 0x38, 0x46, + 0xB2, 0xE7, 0x01, 0x2D, 0x1A, 0xD0, 0x4F, 0xF6, 0xFF, 0x73, 0xC2, 0xE7, + 0x34, 0x46, 0xCF, 0xE7, 0x4F, 0xF6, 0xD8, 0x71, 0x9C, 0x42, 0x94, 0xBF, + 0x0C, 0x46, 0x28, 0x24, 0x23, 0x44, 0x9C, 0xB2, 0x03, 0x46, 0x00, 0x21, + 0xC6, 0xE7, 0x02, 0x2F, 0x11, 0xD0, 0x03, 0x2F, 0x20, 0xD0, 0x02, 0x20, + 0x1C, 0x46, 0x03, 0x46, 0xBE, 0xE7, 0x18, 0x46, 0x01, 0x23, 0x95, 0xE7, + 0x5E, 0x1E, 0xA4, 0x2E, 0xE1, 0xD8, 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF5, + 0x9C, 0x53, 0x08, 0x33, 0xA1, 0xE7, 0x02, 0x28, 0xDE, 0xD0, 0x03, 0x20, + 0x1C, 0x46, 0x00, 0x21, 0x03, 0x46, 0xAB, 0xE7, 0x85, 0xB9, 0x4C, 0x1E, + 0x0D, 0x2C, 0x0A, 0xD8, 0x0E, 0x29, 0x19, 0xD0, 0x01, 0xEB, 0x81, 0x01, + 0x01, 0xF6, 0x67, 0x11, 0x04, 0x28, 0x94, 0xD1, 0x1C, 0x46, 0x03, 0x23, + 0x9C, 0xE7, 0x4F, 0xF6, 0xFF, 0x71, 0xF7, 0xE7, 0x01, 0x2D, 0xFA, 0xD1, + 0x4C, 0x1E, 0xA4, 0x2C, 0xF7, 0xD8, 0x01, 0xEB, 0x81, 0x01, 0x01, 0xF5, + 0x9C, 0x51, 0x08, 0x31, 0xEC, 0xE7, 0x40, 0xF6, 0xB4, 0x13, 0x7A, 0xE7, + 0x40, 0xF6, 0xB4, 0x11, 0xE6, 0xE7, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0x7B, 0x4F, 0xDF, 0xF8, 0x08, 0x92, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x00, 0x73, 0x04, 0x46, 0x93, 0xF8, 0x22, 0x60, + 0x58, 0x68, 0x77, 0x4B, 0x1B, 0x68, 0x10, 0xF0, 0x20, 0x0A, 0xB3, 0xF9, + 0x00, 0x30, 0x0D, 0x46, 0x90, 0x46, 0x4F, 0xD0, 0x00, 0x2B, 0xC0, 0xF2, + 0x9F, 0x80, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x73, 0x0E, 0x21, + 0xB3, 0xF8, 0x06, 0xC1, 0x07, 0x22, 0x4C, 0xFA, 0x01, 0xF3, 0x03, 0xF0, + 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, 0xFF, 0x30, 0xA1, 0xF1, 0x02, 0x01, + 0x40, 0xF0, 0xB3, 0x80, 0x10, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, 0x90, 0x46, + 0xB9, 0xF8, 0x50, 0xC0, 0x0E, 0x21, 0x07, 0x22, 0x4C, 0xFA, 0x01, 0xF3, + 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, 0xFF, 0x30, 0xA1, 0xF1, + 0x02, 0x01, 0x40, 0xF0, 0x9B, 0x80, 0x10, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, + 0x5D, 0x4B, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x04, 0x74, 0x4F, 0xF4, + 0xA4, 0x61, 0x01, 0xFB, 0x06, 0x36, 0x94, 0xF8, 0x2C, 0x31, 0x96, 0xF8, + 0xC4, 0x11, 0x94, 0xF8, 0x23, 0x00, 0x04, 0x2B, 0x08, 0xBF, 0x03, 0x23, + 0xA9, 0x42, 0x28, 0xBF, 0x29, 0x46, 0x99, 0x42, 0x28, 0xBF, 0x19, 0x46, + 0x84, 0xF8, 0x2D, 0x11, 0x0B, 0xF0, 0x22, 0xFD, 0x94, 0xF8, 0x56, 0x31, + 0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x56, 0x31, 0xBD, 0xE8, 0xF8, 0x8F, + 0x10, 0xF0, 0x04, 0x0B, 0x28, 0xD0, 0x00, 0x2B, 0x58, 0xDB, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x73, 0x0E, 0x22, 0xB3, 0xF8, 0xEC, 0xC0, + 0x07, 0x20, 0x4C, 0xFA, 0x02, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, + 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, 0x02, 0x02, 0x6A, 0xD1, 0x11, 0xF0, + 0xFF, 0x00, 0xF2, 0xD1, 0xB9, 0xF8, 0x38, 0xC0, 0x0E, 0x21, 0x07, 0x22, + 0x4C, 0xFA, 0x01, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, + 0xFF, 0x30, 0xA1, 0xF1, 0x02, 0x01, 0x54, 0xD1, 0x10, 0xF0, 0xFF, 0x02, + 0xF2, 0xD1, 0xAF, 0xE7, 0x00, 0x2B, 0x3A, 0xDB, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x04, 0x73, 0x03, 0xF1, 0xCB, 0x02, 0x93, 0xF8, 0xCE, 0x30, + 0x00, 0x2B, 0x54, 0xD1, 0x93, 0x78, 0x00, 0x2B, 0x4B, 0xD1, 0x53, 0x78, + 0x01, 0x20, 0x00, 0x2B, 0x48, 0xD1, 0x99, 0xF8, 0x12, 0x30, 0x00, 0x2B, + 0x4B, 0xD1, 0x99, 0xF8, 0x11, 0x30, 0x00, 0x2B, 0x49, 0xD1, 0x99, 0xF8, + 0x10, 0x20, 0x00, 0x3A, 0x18, 0xBF, 0x01, 0x22, 0x93, 0x45, 0x58, 0x46, + 0x28, 0xBF, 0x10, 0x46, 0xC2, 0xB2, 0x89, 0xE7, 0x99, 0xF8, 0x76, 0x31, + 0x59, 0x07, 0x3F, 0xF5, 0x5C, 0xAF, 0x21, 0x49, 0x21, 0x48, 0x40, 0xF2, + 0x55, 0x52, 0xFC, 0xF7, 0x99, 0xFD, 0x54, 0xE7, 0x99, 0xF8, 0x76, 0x31, + 0x9A, 0x07, 0xA2, 0xD4, 0x1B, 0x49, 0x1D, 0x48, 0x40, 0xF2, 0x62, 0x52, + 0xFC, 0xF7, 0x8E, 0xFD, 0x9B, 0xE7, 0x99, 0xF8, 0x76, 0x31, 0xDB, 0x07, + 0xC0, 0xD4, 0x16, 0x49, 0x18, 0x48, 0x40, 0xF2, 0x6D, 0x52, 0xFC, 0xF7, + 0x83, 0xFD, 0xB9, 0xE7, 0x42, 0x45, 0x28, 0xBF, 0x42, 0x46, 0xD2, 0xB2, + 0x62, 0xE7, 0x90, 0x45, 0x28, 0xBF, 0x90, 0x46, 0x4C, 0xE7, 0x52, 0x45, + 0x28, 0xBF, 0x52, 0x46, 0xD2, 0xB2, 0x59, 0xE7, 0x40, 0x45, 0x28, 0xBF, + 0x40, 0x46, 0x82, 0x46, 0x92, 0xE7, 0x02, 0x20, 0x80, 0x45, 0x28, 0xBF, + 0x80, 0x46, 0xC3, 0x46, 0xB1, 0xE7, 0x03, 0x20, 0xF8, 0xE7, 0x03, 0x22, + 0xBA, 0xE7, 0x02, 0x22, 0xB8, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xC4, 0xB8, 0x15, 0x00, 0xD4, 0xB8, 0x15, 0x00, 0xE4, 0xB8, 0x15, 0x00, + 0xE4, 0xB8, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x2D, 0xED, 0x02, 0x8B, + 0xDF, 0xF8, 0xE4, 0xA3, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0xF3, + 0x0A, 0xEB, 0x03, 0x06, 0x8B, 0xB0, 0xB6, 0xF8, 0xC2, 0x41, 0x02, 0x93, + 0x01, 0x90, 0xD6, 0xF8, 0x90, 0x31, 0x96, 0xF8, 0xC6, 0x51, 0x04, 0x95, + 0x00, 0x20, 0xA6, 0xF8, 0xC2, 0x01, 0x98, 0x78, 0x02, 0x9D, 0xD6, 0xF8, + 0xC8, 0x31, 0x03, 0x94, 0x03, 0xF0, 0x7F, 0x43, 0x05, 0xF1, 0xEC, 0x0C, + 0x24, 0x32, 0x05, 0x93, 0x0A, 0xEB, 0x0C, 0x03, 0xD6, 0xF8, 0xE4, 0x40, + 0x96, 0xF8, 0xC5, 0x71, 0x08, 0xEE, 0x10, 0x2A, 0x08, 0xEE, 0x90, 0x3A, + 0xA1, 0xF1, 0x24, 0x09, 0x00, 0x28, 0x00, 0xF0, 0xDD, 0x81, 0x1F, 0xFA, + 0x89, 0xF8, 0x01, 0x9B, 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, 0x03, 0xA9, + 0xD9, 0xF8, 0xCC, 0x31, 0xDD, 0x07, 0x05, 0xD5, 0x99, 0xF8, 0x62, 0xB0, + 0xBB, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0x5C, 0x82, 0xD2, 0x4B, 0x93, 0xF8, + 0x76, 0xB1, 0x1B, 0xF0, 0x01, 0x0B, 0x40, 0xF0, 0xE9, 0x81, 0xD9, 0x46, + 0x48, 0x46, 0x18, 0xEE, 0x90, 0x2A, 0x59, 0x46, 0xFF, 0xF7, 0xF8, 0xFD, + 0x02, 0x9B, 0x03, 0xF2, 0xB4, 0x43, 0x18, 0xEE, 0x10, 0x0A, 0x53, 0x44, + 0x0D, 0xF1, 0x25, 0x02, 0x41, 0x46, 0xFD, 0xF7, 0xD5, 0xFF, 0x10, 0xF0, + 0xFF, 0x09, 0x1F, 0xD0, 0x01, 0x9B, 0x4F, 0xF4, 0xA4, 0x6B, 0x0B, 0xFB, + 0x03, 0xAB, 0x9B, 0xF8, 0x62, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x9D, 0x81, + 0x9B, 0xF8, 0x8A, 0x10, 0x00, 0x29, 0x00, 0xF0, 0x6F, 0x82, 0x89, 0x45, + 0x07, 0xD0, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, + 0x01, 0x22, 0x83, 0xF8, 0x8C, 0x20, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x02, 0xA3, 0x83, 0xF8, 0x8A, 0x90, 0x18, 0xEE, 0x90, 0x2A, + 0x41, 0x46, 0x18, 0xEE, 0x10, 0x0A, 0xFD, 0xF7, 0x25, 0xFF, 0x01, 0x9A, + 0x04, 0x99, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0x93, 0xF8, + 0xC6, 0x21, 0x8A, 0x42, 0x0E, 0xD0, 0xD3, 0xF8, 0x90, 0x11, 0xAC, 0x4B, + 0x09, 0x79, 0xD3, 0xF8, 0x40, 0x33, 0x8A, 0x1A, 0x8D, 0xF8, 0x26, 0x20, + 0x0D, 0xF1, 0x26, 0x01, 0x0D, 0xF1, 0x27, 0x02, 0x30, 0x46, 0x98, 0x47, + 0x01, 0x9B, 0x4F, 0xF4, 0xA4, 0x68, 0x08, 0xFB, 0x03, 0xA8, 0x98, 0xF8, + 0xC5, 0x31, 0xBB, 0x42, 0x00, 0xF2, 0x01, 0x81, 0x00, 0x2C, 0x00, 0xF0, + 0x8E, 0x80, 0x01, 0x9B, 0x9F, 0x4E, 0x03, 0x9D, 0xDD, 0xF8, 0x14, 0x90, + 0x4F, 0xF4, 0xA4, 0x68, 0x08, 0xFB, 0x03, 0xA8, 0xB8, 0xF8, 0xC2, 0x21, + 0xAA, 0x42, 0x1D, 0xD0, 0x29, 0x46, 0x30, 0x46, 0xFC, 0xF7, 0x1A, 0xFA, + 0x94, 0xF8, 0x56, 0x31, 0xB8, 0xF8, 0xC2, 0x21, 0x94, 0xF8, 0x23, 0x00, + 0x43, 0xF0, 0x02, 0x03, 0x84, 0xF8, 0x56, 0x31, 0x53, 0x07, 0x4F, 0xF0, + 0x00, 0x01, 0x58, 0xBF, 0x4F, 0xF4, 0x80, 0x63, 0xC4, 0xF8, 0x50, 0x11, + 0x4E, 0xBF, 0xA4, 0xF8, 0x54, 0x11, 0xA4, 0xF8, 0x54, 0x31, 0x01, 0x21, + 0x0B, 0xF0, 0x02, 0xFC, 0x98, 0xF8, 0xC5, 0x31, 0xBB, 0x42, 0x4B, 0xD0, + 0x04, 0x2B, 0x94, 0xF8, 0x2C, 0xA1, 0x5F, 0xD0, 0x53, 0x45, 0x28, 0xBF, + 0x53, 0x46, 0x04, 0x2B, 0x00, 0xF0, 0x93, 0x80, 0x5F, 0xFA, 0x83, 0xFA, + 0x94, 0xF8, 0x2D, 0x31, 0x53, 0x45, 0x3B, 0xD0, 0x63, 0x68, 0x13, 0xF0, + 0x20, 0x0B, 0x58, 0xD0, 0x7F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xC0, 0xF2, 0xA7, 0x80, 0xB4, 0xF8, 0x06, 0xC1, 0x0E, 0x22, + 0x07, 0x20, 0x4C, 0xFA, 0x02, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, + 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, 0x02, 0x02, 0x02, 0xD1, 0x11, 0xF0, + 0xFF, 0x00, 0xF2, 0xD1, 0x70, 0x4B, 0x07, 0x22, 0xB3, 0xF8, 0x50, 0xE0, + 0x0E, 0x23, 0x4E, 0xFA, 0x03, 0xF1, 0x01, 0xF0, 0x03, 0x01, 0x03, 0x29, + 0x02, 0xF1, 0xFF, 0x3C, 0xA3, 0xF1, 0x02, 0x03, 0x40, 0xF0, 0xF4, 0x80, + 0x1C, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, 0x94, 0xF8, 0x23, 0x00, 0x84, 0xF8, + 0x2D, 0xA1, 0x51, 0x46, 0x0B, 0xF0, 0x54, 0xFB, 0x94, 0xF8, 0x56, 0x31, + 0x43, 0xF0, 0x08, 0x03, 0x84, 0xF8, 0x56, 0x31, 0xD8, 0xF8, 0xC8, 0x31, + 0x03, 0xF0, 0x7F, 0x43, 0x4B, 0x45, 0x08, 0xD0, 0x63, 0x68, 0x9B, 0x06, + 0x05, 0xD5, 0x94, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x40, 0x03, 0x84, 0xF8, + 0x56, 0x31, 0x24, 0x68, 0x00, 0x2C, 0x7F, 0xF4, 0x7B, 0xAF, 0x0B, 0xB0, + 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0xBA, 0xF1, 0x03, 0x0F, + 0x35, 0xD8, 0xBA, 0xF1, 0x02, 0x0F, 0x28, 0xBF, 0x4F, 0xF0, 0x02, 0x0A, + 0x9E, 0xE7, 0x13, 0xF0, 0x04, 0x0F, 0x52, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x2B, 0xD0, 0x00, 0x2B, 0xC0, 0xF2, 0xA7, 0x80, 0xB4, 0xF8, + 0xEC, 0xC0, 0x0E, 0x22, 0x07, 0x20, 0x4C, 0xFA, 0x02, 0xF3, 0x03, 0xF0, + 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF1, 0xFF, 0x31, 0xA2, 0xF1, 0x02, 0x02, + 0x40, 0xF0, 0x97, 0x81, 0x11, 0xF0, 0xFF, 0x00, 0xF1, 0xD1, 0x42, 0x4B, + 0xB3, 0xF8, 0x38, 0xC0, 0x0E, 0x21, 0x07, 0x22, 0x4C, 0xFA, 0x01, 0xF3, + 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x02, 0xF1, 0xFF, 0x30, 0xA1, 0xF1, + 0x02, 0x01, 0x40, 0xF0, 0x7F, 0x81, 0x10, 0xF0, 0xFF, 0x02, 0xF1, 0xD1, + 0xA1, 0xE7, 0x4F, 0xF0, 0x03, 0x0A, 0x6B, 0xE7, 0x00, 0x2B, 0x5E, 0xDB, + 0x94, 0xF8, 0xCE, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xDF, 0x81, 0x94, 0xF8, + 0xCD, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0xE0, 0x81, 0x94, 0xF8, 0xCC, 0x20, + 0x11, 0x1E, 0x18, 0xBF, 0x01, 0x21, 0x2E, 0x4A, 0x93, 0x7C, 0x00, 0x2B, + 0x40, 0xF0, 0xD2, 0x81, 0x53, 0x7C, 0x00, 0x2B, 0x40, 0xF0, 0xD0, 0x81, + 0x13, 0x7C, 0x1A, 0x1E, 0x18, 0xBF, 0x01, 0x22, 0x8A, 0x42, 0x28, 0xBF, + 0x0A, 0x46, 0x7C, 0xE7, 0x25, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0x58, 0x07, + 0x3F, 0xF5, 0x53, 0xAF, 0x26, 0x49, 0x27, 0x48, 0x40, 0xF2, 0xCD, 0x12, + 0xFC, 0xF7, 0xA8, 0xFB, 0x4B, 0xE7, 0x0C, 0x23, 0x05, 0x22, 0x00, 0x21, + 0x3B, 0x20, 0xFA, 0xF7, 0xBF, 0xFA, 0x1F, 0x4B, 0xD8, 0xF8, 0x40, 0x20, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x81, 0x46, 0xC0, 0xF2, + 0x18, 0x81, 0x13, 0x7E, 0x89, 0xF8, 0x00, 0x30, 0xD6, 0xF8, 0x90, 0x31, + 0x99, 0x78, 0x89, 0xF8, 0x02, 0x10, 0x96, 0xF8, 0xC5, 0x11, 0x89, 0xF8, + 0x03, 0x10, 0xB3, 0xF8, 0x00, 0xC0, 0xB6, 0xF8, 0x94, 0x01, 0xB6, 0xF8, + 0x96, 0x11, 0xA9, 0xF8, 0x08, 0x10, 0xA9, 0xF8, 0x06, 0x00, 0xA9, 0xF8, + 0x04, 0xC0, 0x12, 0x7B, 0x89, 0xF8, 0x0A, 0x20, 0xDB, 0x78, 0x89, 0xF8, + 0x0B, 0x30, 0x48, 0x46, 0xFA, 0xF7, 0xC4, 0xFA, 0xCC, 0xE6, 0x06, 0x4B, + 0x93, 0xF8, 0x76, 0x31, 0xDA, 0x07, 0x9B, 0xD4, 0x07, 0x49, 0x09, 0x48, + 0x40, 0xF2, 0xE5, 0x12, 0xFC, 0xF7, 0x6A, 0xFB, 0x94, 0xE7, 0x00, 0xBF, + 0xE4, 0xB8, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x0C, 0xB9, 0x15, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xC4, 0xB8, 0x15, 0x00, + 0xE4, 0xB8, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0xB9, 0x4B, 0x93, 0xF8, + 0x76, 0x31, 0x99, 0x07, 0x3F, 0xF5, 0x53, 0xAF, 0xB7, 0x49, 0xB8, 0x48, + 0x4F, 0xF4, 0xED, 0x72, 0xFC, 0xF7, 0x4C, 0xFB, 0x4B, 0xE7, 0x02, 0x2B, + 0x08, 0xBF, 0x8B, 0xF8, 0xDB, 0x90, 0x73, 0xE6, 0x82, 0x42, 0x28, 0xBF, + 0x02, 0x46, 0x0A, 0xE7, 0x1F, 0xFA, 0x89, 0xF8, 0x41, 0x46, 0x10, 0x46, + 0xFB, 0xF7, 0x42, 0xFA, 0x00, 0x28, 0x3F, 0xF4, 0x1A, 0xAE, 0xB6, 0xF8, + 0xC2, 0x31, 0x82, 0x78, 0x23, 0xF0, 0x07, 0x03, 0x9B, 0xB2, 0xD1, 0x07, + 0x48, 0xBF, 0x43, 0xF0, 0x01, 0x03, 0xA6, 0xF8, 0xC2, 0x31, 0x53, 0x07, + 0x7F, 0xF5, 0x0B, 0xAE, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x02, 0xA3, 0xB3, 0xF8, 0xC2, 0x21, 0x42, 0xF0, 0x04, 0x02, 0xA3, 0xF8, + 0xC2, 0x21, 0x00, 0xE6, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, 0xFB, 0xF7, + 0x89, 0xFB, 0x9A, 0x4B, 0x93, 0xF8, 0x76, 0xB1, 0x1B, 0xF0, 0x06, 0x0B, + 0x81, 0x46, 0x3F, 0xF4, 0x0B, 0xAE, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, + 0xFB, 0xF7, 0x9C, 0xFB, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x02, 0xA3, 0x83, 0x46, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0x00, 0xF0, + 0xAA, 0x80, 0x8E, 0x4B, 0x93, 0xF8, 0x76, 0x31, 0x59, 0x07, 0x7F, 0xF5, + 0xF5, 0xAD, 0x18, 0xEE, 0x90, 0x2A, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, + 0xFD, 0xF7, 0xD6, 0xFF, 0x00, 0x28, 0x00, 0xF0, 0x09, 0x81, 0x01, 0x9A, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, 0xD3, 0xF8, 0xC8, 0x31, + 0xC3, 0xF3, 0x09, 0x12, 0x15, 0x46, 0xA2, 0xB1, 0x04, 0x23, 0x05, 0x22, + 0x00, 0x21, 0x6F, 0x20, 0xFA, 0xF7, 0xFE, 0xF9, 0x01, 0x9B, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x03, 0xA2, 0x06, 0x92, 0x92, 0xF8, 0x63, 0x10, + 0x81, 0x70, 0x05, 0x80, 0xFA, 0xF7, 0x22, 0xFA, 0x06, 0x9A, 0xD2, 0xF8, + 0xC8, 0x31, 0x05, 0x9A, 0x03, 0xF0, 0x7F, 0x43, 0x93, 0x42, 0x3F, 0xF4, + 0xC5, 0xAD, 0x04, 0x23, 0x05, 0x22, 0x00, 0x21, 0x71, 0x20, 0xFA, 0xF7, + 0xE3, 0xF9, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x02, 0xA3, + 0xD3, 0xF8, 0xC8, 0x21, 0xC2, 0xF3, 0x05, 0x63, 0x52, 0x00, 0x54, 0xBF, + 0x43, 0xF4, 0x80, 0x73, 0x43, 0xF4, 0x40, 0x73, 0x03, 0x60, 0xFA, 0xF7, + 0x01, 0xFA, 0xAB, 0xE5, 0x02, 0x9B, 0x03, 0xF5, 0xD6, 0x72, 0x52, 0x44, + 0x0D, 0xF1, 0x27, 0x03, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, 0x06, 0x92, + 0xFD, 0xF7, 0x92, 0xFE, 0x9D, 0xF8, 0x27, 0x30, 0x00, 0x2B, 0x3F, 0xF4, + 0x93, 0xAD, 0x06, 0x9A, 0x06, 0x97, 0x03, 0x9F, 0x25, 0x46, 0x4C, 0x46, + 0x91, 0x46, 0x08, 0x23, 0x05, 0x22, 0x00, 0x21, 0x1A, 0x20, 0xFA, 0xF7, + 0xB3, 0xF9, 0x59, 0xF8, 0x04, 0x1B, 0x80, 0xF8, 0x05, 0xB0, 0x94, 0xF8, + 0x63, 0x20, 0x82, 0x71, 0x4F, 0xF0, 0x00, 0x02, 0x01, 0x60, 0x0B, 0xF1, + 0x01, 0x0B, 0x02, 0x71, 0xFA, 0xF7, 0xD4, 0xF9, 0xBB, 0xF1, 0x04, 0x0F, + 0xE7, 0xD1, 0x03, 0x97, 0x2C, 0x46, 0x06, 0x9F, 0x70, 0xE5, 0x00, 0x2A, + 0x7F, 0xF4, 0xE5, 0xAE, 0x45, 0x22, 0x4C, 0x49, 0x4D, 0x48, 0xFC, 0xF7, + 0x77, 0xFA, 0xD8, 0xF8, 0x40, 0x20, 0xDC, 0xE6, 0x9B, 0xF8, 0x8C, 0x30, + 0x00, 0x2B, 0x3F, 0xF4, 0x96, 0xAD, 0x9D, 0xF8, 0x25, 0x30, 0x01, 0x2B, + 0x7F, 0xF4, 0x91, 0xAD, 0x46, 0x4B, 0x9B, 0xF8, 0x63, 0x00, 0xD3, 0xF8, + 0xC0, 0x31, 0x98, 0x47, 0x9B, 0xF8, 0x8A, 0x10, 0x00, 0x29, 0x3F, 0xF4, + 0x86, 0xAD, 0x7A, 0xE5, 0x5A, 0x45, 0x28, 0xBF, 0x5A, 0x46, 0xD2, 0xB2, + 0x21, 0xE6, 0x83, 0x46, 0x69, 0xE6, 0x18, 0xEE, 0x10, 0x0A, 0x41, 0x46, + 0x06, 0x93, 0xFB, 0xF7, 0x77, 0xF9, 0xB0, 0xB1, 0x06, 0x9B, 0x3A, 0x49, + 0x93, 0xF8, 0x6C, 0x20, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x13, + 0x5B, 0x68, 0x13, 0xF0, 0x24, 0x0F, 0x0A, 0xD0, 0x90, 0xF9, 0x02, 0x30, + 0x81, 0x78, 0x00, 0x2B, 0x05, 0xDB, 0x10, 0x46, 0x0A, 0x09, 0x01, 0xF0, + 0x03, 0x01, 0xFF, 0xF7, 0xDD, 0xFB, 0x01, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x02, 0xA3, 0x06, 0x93, 0xD3, 0xF8, 0xCC, 0x31, 0x18, 0x07, + 0x7F, 0xF5, 0x2D, 0xAF, 0x02, 0x23, 0x05, 0x22, 0x00, 0x21, 0x6D, 0x20, + 0xFA, 0xF7, 0x46, 0xF9, 0x41, 0x46, 0x02, 0x46, 0x07, 0x90, 0x18, 0xEE, + 0x10, 0x0A, 0xFD, 0xF7, 0x45, 0xFF, 0x07, 0x9A, 0x10, 0x46, 0xFA, 0xF7, + 0x6B, 0xF9, 0x22, 0x4B, 0x1B, 0x69, 0x00, 0x2B, 0x3F, 0xF4, 0x17, 0xAF, + 0x02, 0x9B, 0x03, 0xF5, 0xA8, 0x72, 0x18, 0xEE, 0x10, 0x0A, 0x0D, 0xF1, + 0x27, 0x03, 0x52, 0x44, 0x41, 0x46, 0xFD, 0xF7, 0x05, 0xFF, 0x9D, 0xF8, + 0x27, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x07, 0xAF, 0x10, 0x23, 0x05, 0x22, + 0x00, 0x21, 0x6B, 0x20, 0xFA, 0xF7, 0x20, 0xF9, 0x06, 0x9A, 0x11, 0x46, + 0x15, 0x46, 0xD2, 0xF8, 0x50, 0xE1, 0xD2, 0xF8, 0x54, 0x21, 0xD1, 0xF8, + 0x58, 0x11, 0xD5, 0xF8, 0x5C, 0x51, 0xC5, 0x60, 0xC0, 0xE9, 0x00, 0xE2, + 0x81, 0x60, 0xFA, 0xF7, 0x3F, 0xF9, 0xEE, 0xE6, 0x03, 0x21, 0x28, 0xE6, + 0x03, 0x22, 0x33, 0xE6, 0x02, 0x22, 0x31, 0xE6, 0x02, 0x21, 0x22, 0xE6, + 0x40, 0xF2, 0xFF, 0x33, 0x1D, 0x46, 0xFD, 0xE6, 0xE4, 0xB8, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xD4, 0xB8, 0x15, 0x00, 0xF4, 0xB8, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x94, 0x64, 0x17, 0x00, + 0x70, 0xB5, 0x0C, 0x46, 0x84, 0xB0, 0x89, 0x78, 0x0C, 0x4D, 0x26, 0x79, + 0x8D, 0xF8, 0x04, 0x10, 0xAD, 0xF8, 0x08, 0x20, 0x01, 0x46, 0x9D, 0xF8, + 0x20, 0x20, 0x20, 0x88, 0xE4, 0x78, 0xAD, 0xF8, 0x0A, 0x30, 0xAD, 0xF8, + 0x06, 0x00, 0x6B, 0x6C, 0x8D, 0xF8, 0x0C, 0x60, 0x8D, 0xF8, 0x0D, 0x40, + 0x8D, 0xF8, 0x05, 0x20, 0x01, 0xA8, 0x98, 0x47, 0x04, 0xB0, 0x70, 0xBD, + 0x88, 0x1A, 0x17, 0x00, 0x03, 0x68, 0x30, 0xB4, 0x0C, 0x68, 0x5A, 0x40, + 0x84, 0xEA, 0xF2, 0x34, 0x22, 0x44, 0x13, 0x0A, 0x15, 0x02, 0x05, 0xF0, + 0xFF, 0x25, 0x03, 0xF0, 0xFF, 0x13, 0x2B, 0x43, 0x63, 0x40, 0x1A, 0x44, + 0x83, 0xEA, 0x72, 0x73, 0x1A, 0x44, 0x83, 0xEA, 0xB2, 0x03, 0x1A, 0x44, + 0x0B, 0x60, 0x30, 0xBC, 0x02, 0x60, 0x70, 0x47, 0xF8, 0xB5, 0x1F, 0x88, + 0xD3, 0xF8, 0x02, 0x50, 0x0B, 0x68, 0x96, 0x88, 0x12, 0x68, 0x03, 0x60, + 0x9D, 0xF8, 0x18, 0x40, 0x4B, 0x68, 0x43, 0x60, 0x00, 0x23, 0xFF, 0x2C, + 0x83, 0x60, 0x03, 0x73, 0x00, 0xF1, 0x04, 0x01, 0x46, 0xEA, 0x07, 0x46, + 0x14, 0xBF, 0x04, 0xF0, 0x07, 0x04, 0x00, 0x24, 0xFF, 0xF7, 0xCC, 0xFF, + 0x32, 0x46, 0xFF, 0xF7, 0xC9, 0xFF, 0x2A, 0x46, 0xFF, 0xF7, 0xC6, 0xFF, + 0x22, 0x46, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0xC1, 0xBF, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x4F, 0x21, 0xF0, 0x03, 0x06, 0x01, 0xF0, 0x03, 0x01, + 0xC1, 0xF1, 0x04, 0x03, 0x37, 0x68, 0x90, 0xF8, 0x0C, 0xC0, 0x85, 0x68, + 0xDB, 0xB2, 0x04, 0x36, 0xC9, 0x00, 0x9A, 0x42, 0x83, 0xB0, 0x27, 0xFA, + 0x01, 0xF1, 0xB1, 0x46, 0x78, 0xD2, 0xC2, 0xF1, 0x04, 0x04, 0xE3, 0x00, + 0x4F, 0xF0, 0xFF, 0x34, 0x4F, 0xF0, 0x00, 0x0B, 0xDC, 0x40, 0x21, 0x40, + 0xD8, 0x46, 0x5F, 0x46, 0x0C, 0xEB, 0x02, 0x04, 0x03, 0x2C, 0x52, 0xD8, + 0x4F, 0xEA, 0xCC, 0x0C, 0x01, 0xFA, 0x0C, 0xF1, 0x0D, 0x43, 0xB8, 0xF1, + 0x00, 0x0F, 0x22, 0xD0, 0xE3, 0x00, 0xC4, 0xF1, 0x04, 0x0A, 0x00, 0x93, + 0x4F, 0xEA, 0x88, 0x03, 0x4F, 0xEA, 0xCA, 0x0A, 0x01, 0x1D, 0x01, 0x93, + 0x06, 0xEB, 0x88, 0x08, 0xB1, 0x46, 0xD9, 0xF8, 0x00, 0x30, 0x00, 0x9A, + 0x03, 0xFA, 0x02, 0xF2, 0xBA, 0xF1, 0x20, 0x0F, 0x42, 0xEA, 0x05, 0x02, + 0x09, 0xF1, 0x04, 0x09, 0x14, 0xBF, 0x23, 0xFA, 0x0A, 0xF5, 0x00, 0x25, + 0xFF, 0xF7, 0x76, 0xFF, 0xC1, 0x45, 0xEC, 0xD1, 0x01, 0x9B, 0x33, 0x44, + 0x99, 0x46, 0x5F, 0x45, 0x20, 0xD9, 0x07, 0xF0, 0x03, 0x07, 0xC7, 0xF1, + 0x04, 0x03, 0xDA, 0x00, 0x20, 0x2A, 0xD9, 0xF8, 0x00, 0x10, 0x40, 0xD0, + 0x4F, 0xF0, 0xFF, 0x33, 0xD3, 0x40, 0x0B, 0x40, 0xE2, 0x00, 0x03, 0xFA, + 0x02, 0xF2, 0x15, 0x43, 0x27, 0x44, 0x03, 0x2F, 0x2F, 0xD9, 0xC4, 0xF1, + 0x04, 0x04, 0xE4, 0x00, 0x20, 0x2C, 0x14, 0xBF, 0xE3, 0x40, 0x00, 0x23, + 0x2A, 0x46, 0x01, 0x1D, 0x3C, 0x1F, 0x1D, 0x46, 0xFF, 0xF7, 0x4E, 0xFF, + 0x85, 0x60, 0x04, 0x73, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xEA, + 0xCC, 0x02, 0xCC, 0xF1, 0x04, 0x0C, 0x4F, 0xEA, 0xCC, 0x0C, 0xBC, 0xF1, + 0x20, 0x0F, 0x01, 0xFA, 0x02, 0xF2, 0x42, 0xEA, 0x05, 0x02, 0x18, 0xBF, + 0x21, 0xFA, 0x0C, 0xF5, 0x00, 0xF1, 0x04, 0x01, 0x08, 0xBF, 0x00, 0x25, + 0x04, 0x3C, 0xFF, 0xF7, 0x33, 0xFF, 0x9A, 0xE7, 0xD7, 0x1A, 0x4F, 0xEA, + 0x97, 0x08, 0x1A, 0x46, 0x27, 0xF0, 0x03, 0x0B, 0x8A, 0xE7, 0x3C, 0x46, + 0x85, 0x60, 0x04, 0x73, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x23, + 0xC4, 0xE7, 0x00, 0xBF, 0x38, 0xB5, 0x10, 0x4B, 0x85, 0x68, 0x1B, 0x68, + 0x02, 0x7B, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x0D, 0xDB, + 0x5A, 0x23, 0xD2, 0x00, 0x03, 0xFA, 0x02, 0xF2, 0x2A, 0x43, 0x21, 0x1D, + 0x20, 0x46, 0xFF, 0xF7, 0x0F, 0xFF, 0xBD, 0xE8, 0x38, 0x40, 0x00, 0x22, + 0xFF, 0xF7, 0x0A, 0xBF, 0x03, 0x2A, 0xEF, 0xD9, 0x40, 0xF2, 0x41, 0x12, + 0x03, 0x49, 0x04, 0x48, 0xFC, 0xF7, 0xB8, 0xF8, 0x22, 0x7B, 0xE7, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x20, 0xB9, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x06, 0x20, 0x83, 0xB0, 0x00, 0x24, 0xCD, 0xE9, + 0x00, 0x44, 0x91, 0xF8, 0x3D, 0x90, 0x0D, 0x46, 0x17, 0x46, 0x1E, 0x46, + 0xFA, 0xF7, 0x62, 0xFA, 0x09, 0x28, 0x79, 0xD0, 0x01, 0x23, 0x3A, 0x46, + 0x31, 0x46, 0x41, 0xF6, 0x01, 0x00, 0xF9, 0xF7, 0xB7, 0xFF, 0x80, 0x46, + 0x06, 0x20, 0xFA, 0xF7, 0x55, 0xFA, 0x48, 0xB1, 0x08, 0x26, 0x40, 0x46, + 0x88, 0xF8, 0x00, 0x60, 0xF9, 0xF7, 0xDC, 0xFF, 0x20, 0x46, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xDF, 0xF8, 0xAC, 0xA1, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x09, 0xA3, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0x4F, 0xD1, + 0x93, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x4B, 0xD1, 0xDF, 0xF8, 0x94, 0xB1, + 0x5A, 0x4A, 0x5B, 0x49, 0x13, 0x68, 0x43, 0xF0, 0x10, 0x03, 0x13, 0x60, + 0x95, 0xF8, 0x3B, 0x30, 0x01, 0x22, 0x02, 0x2B, 0xCA, 0x75, 0x0E, 0xD0, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x09, 0xA2, 0x92, 0xF8, 0x64, 0x10, + 0x29, 0xB9, 0x53, 0x4C, 0x21, 0x68, 0xB1, 0xF9, 0x00, 0x10, 0x00, 0x29, + 0x7F, 0xDB, 0x03, 0x2B, 0x57, 0xD0, 0x3A, 0x46, 0x4F, 0xF4, 0x55, 0x73, + 0x31, 0x46, 0x41, 0xF6, 0x02, 0x00, 0xCB, 0xF8, 0x00, 0x50, 0xF9, 0xF7, + 0x73, 0xFF, 0x95, 0xF8, 0x3B, 0x30, 0xCB, 0xF8, 0x04, 0x00, 0x00, 0x27, + 0x02, 0x2B, 0x8B, 0xF8, 0x16, 0x70, 0x4F, 0xD0, 0x9B, 0xF8, 0x1E, 0x60, + 0x3E, 0xB3, 0x95, 0xF8, 0x3D, 0x10, 0x44, 0x48, 0x4F, 0xF4, 0xA4, 0x64, + 0x04, 0xFB, 0x01, 0xA1, 0x06, 0x22, 0x38, 0x31, 0x0E, 0xF0, 0xE4, 0xFA, + 0x09, 0x21, 0x06, 0x20, 0xFA, 0xF7, 0x52, 0xF9, 0x95, 0xF8, 0x3D, 0x00, + 0x39, 0x46, 0x04, 0xFB, 0x00, 0xA0, 0x01, 0xF0, 0xCB, 0xF8, 0x3E, 0x46, + 0x01, 0x24, 0x9C, 0xE7, 0x95, 0xF8, 0x3B, 0x30, 0x02, 0x2B, 0xAF, 0xD0, + 0x2C, 0x6B, 0x14, 0xF0, 0x20, 0x04, 0x17, 0xD1, 0x09, 0x26, 0x92, 0xE7, + 0x02, 0x24, 0x20, 0x46, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0xA9, + 0x68, 0x46, 0x00, 0xF0, 0x75, 0xFD, 0xDD, 0xE9, 0x00, 0x01, 0x28, 0xB1, + 0x21, 0xB1, 0x32, 0x46, 0x00, 0xF0, 0x14, 0xFE, 0x01, 0x24, 0x80, 0xE7, + 0x00, 0xF0, 0x90, 0xFD, 0x01, 0x24, 0x7C, 0xE7, 0xDF, 0xF8, 0xBC, 0xB0, + 0x28, 0x48, 0x01, 0x23, 0x8B, 0xF8, 0x1E, 0x30, 0xFB, 0xF7, 0x8E, 0xFD, + 0x8C, 0xE7, 0xE9, 0x8E, 0x05, 0xF1, 0x40, 0x00, 0x02, 0xF0, 0x32, 0xF8, + 0x00, 0x28, 0xC4, 0xBF, 0x00, 0x23, 0x85, 0xF8, 0x3B, 0x30, 0x9C, 0xE7, + 0x95, 0xF8, 0x3D, 0x10, 0x1F, 0x48, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, + 0x01, 0xA1, 0x06, 0x22, 0x38, 0x31, 0x01, 0x24, 0x8B, 0xF8, 0x16, 0x40, + 0x0E, 0xF0, 0x94, 0xFA, 0x09, 0x21, 0x06, 0x20, 0xFA, 0xF7, 0x02, 0xF9, + 0x95, 0xF8, 0x3D, 0x00, 0x39, 0x46, 0x06, 0xFB, 0x00, 0xA0, 0x01, 0xF0, + 0x7B, 0xF8, 0x3E, 0x46, 0x4D, 0xE7, 0x92, 0xF8, 0x6C, 0x30, 0xFF, 0x2B, + 0x09, 0xD0, 0x12, 0x49, 0x12, 0x48, 0x64, 0x22, 0xFB, 0xF7, 0xD8, 0xFF, + 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0B, 0xDA, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x09, 0xA9, 0xD9, 0xF8, 0x40, 0x30, 0x23, 0xB1, + 0x09, 0x49, 0x0B, 0x48, 0x65, 0x22, 0xFB, 0xF7, 0xC7, 0xFF, 0x95, 0xF8, + 0x3B, 0x30, 0x62, 0xE7, 0x94, 0x40, 0x04, 0x40, 0x4C, 0x36, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x84, 0xBA, 0x17, 0x00, 0x40, 0xB9, 0x15, 0x00, + 0x7C, 0xBA, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x4C, 0xB9, 0x15, 0x00, + 0xA0, 0xA2, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, + 0x38, 0xB5, 0x0B, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x0F, 0x49, 0x1C, 0x78, + 0xFB, 0xF7, 0x7C, 0xFD, 0x06, 0x20, 0xFA, 0xF7, 0x63, 0xF9, 0xA8, 0xB9, + 0x0C, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, 0x94, 0xF8, + 0x62, 0x50, 0x15, 0xB9, 0x94, 0xF8, 0x64, 0x00, 0x00, 0xB9, 0x38, 0xBD, + 0x09, 0x21, 0x06, 0x20, 0xFA, 0xF7, 0xAA, 0xF8, 0x20, 0x46, 0x01, 0x21, + 0x01, 0xF0, 0x26, 0xF8, 0x28, 0x46, 0x38, 0xBD, 0x02, 0x20, 0x38, 0xBD, + 0x70, 0xB9, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x08, 0xB5, 0x06, 0x20, + 0xFA, 0xF7, 0x42, 0xF9, 0x05, 0x28, 0x04, 0xD0, 0x06, 0x20, 0xFA, 0xF7, + 0x3D, 0xF9, 0x06, 0x28, 0x04, 0xD1, 0x01, 0x20, 0x01, 0xF0, 0x9C, 0xF9, + 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xFA, 0xF7, 0x33, 0xF9, 0x07, 0x28, + 0xF5, 0xD0, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x16, 0x4B, 0x00, 0xB5, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x23, 0x83, 0xB0, 0x9A, 0x42, + 0xCD, 0xE9, 0x00, 0x33, 0x15, 0xDB, 0x68, 0x46, 0x01, 0xA9, 0x00, 0xF0, + 0xB7, 0xFC, 0x00, 0x98, 0x40, 0xB1, 0x01, 0x99, 0x31, 0xB1, 0x00, 0x22, + 0x00, 0xF0, 0x56, 0xFD, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, + 0x01, 0x20, 0x01, 0xF0, 0x75, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0x5D, 0xF8, + 0x04, 0xFB, 0x06, 0x20, 0xFA, 0xF7, 0x0A, 0xF9, 0x01, 0x28, 0xE4, 0xD0, + 0x04, 0x49, 0x05, 0x48, 0x4F, 0xF4, 0x8F, 0x72, 0xFB, 0xF7, 0x42, 0xFF, + 0xDD, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x80, 0xB9, 0x15, 0x00, 0x93, 0x4B, 0x2D, 0xE9, 0xF0, 0x4F, 0x1B, 0x68, + 0x92, 0x4D, 0xB3, 0xF9, 0x00, 0x30, 0x2F, 0x68, 0x00, 0x2B, 0x89, 0xB0, + 0xC0, 0xF2, 0x91, 0x80, 0x97, 0xF8, 0x3D, 0x80, 0x8E, 0x4E, 0x4F, 0xF4, + 0xA4, 0x64, 0x04, 0xFB, 0x08, 0x64, 0xD4, 0xF8, 0xCC, 0x31, 0x00, 0x2B, + 0x18, 0xDB, 0x6B, 0x7D, 0x33, 0xB9, 0x01, 0x20, 0x01, 0xF0, 0x42, 0xF9, + 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x23, 0x07, 0xA9, + 0x06, 0xA8, 0xCD, 0xE9, 0x06, 0x33, 0x00, 0xF0, 0x6B, 0xFC, 0xDD, 0xE9, + 0x06, 0x01, 0x01, 0x22, 0x00, 0xF0, 0x0C, 0xFD, 0x00, 0x20, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x07, 0xA8, 0x00, 0xF0, 0xE1, 0xFD, 0x00, 0x28, + 0x74, 0xD1, 0x01, 0x46, 0x20, 0x23, 0x06, 0x22, 0x0A, 0x20, 0xF9, 0xF7, + 0x1D, 0xFE, 0x94, 0xF8, 0xC0, 0x34, 0x05, 0x46, 0x2B, 0xB1, 0xD4, 0xF8, + 0xCC, 0x21, 0x22, 0xF0, 0x08, 0x02, 0xC4, 0xF8, 0xCC, 0x21, 0x74, 0x4A, + 0x92, 0xF8, 0x04, 0x21, 0x4A, 0xB1, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x08, 0xF2, 0xB1, 0x18, 0xD1, 0xF8, 0x90, 0x01, 0x80, 0x78, 0x01, 0x28, + 0x6D, 0xD0, 0x6E, 0x4B, 0x97, 0xF8, 0x3D, 0x00, 0xDB, 0x6C, 0x9D, 0xF8, + 0x1C, 0x10, 0x98, 0x47, 0x4F, 0xF4, 0xA4, 0x6B, 0x00, 0x23, 0x2B, 0x60, + 0x0B, 0xFB, 0x08, 0xFB, 0x97, 0xF8, 0x3D, 0x20, 0x6A, 0x76, 0x06, 0xEB, + 0x0B, 0x0A, 0xDA, 0xF8, 0x64, 0x01, 0xBA, 0xF8, 0x68, 0x21, 0xAB, 0x76, + 0x9A, 0xF8, 0x8B, 0x31, 0x6B, 0x77, 0x9A, 0xF8, 0x8C, 0x31, 0xAB, 0x77, + 0xDA, 0xF8, 0xCC, 0x31, 0xC5, 0xF8, 0x12, 0x00, 0x13, 0xF0, 0x02, 0x04, + 0xEA, 0x82, 0x1B, 0xD0, 0x0B, 0xF1, 0xEC, 0x09, 0x13, 0xF0, 0x04, 0x04, + 0xB1, 0x44, 0x6E, 0xD1, 0x21, 0x46, 0x13, 0xF0, 0x08, 0x02, 0x05, 0xF1, + 0x18, 0x03, 0x18, 0xBF, 0x0B, 0xF5, 0x8C, 0x72, 0x05, 0xF1, 0x04, 0x0C, + 0x02, 0x93, 0x05, 0xF1, 0x08, 0x03, 0xCD, 0xE9, 0x00, 0x3C, 0x18, 0xBF, + 0x92, 0x19, 0x48, 0x46, 0x05, 0xF1, 0x10, 0x03, 0xFE, 0xF7, 0x22, 0xFC, + 0x28, 0x46, 0xEC, 0x60, 0xF9, 0xF7, 0xF0, 0xFD, 0x03, 0x21, 0x06, 0x20, + 0xF9, 0xF7, 0xB6, 0xFF, 0x0F, 0xE0, 0x06, 0x20, 0xFA, 0xF7, 0x5A, 0xF8, + 0x02, 0x28, 0x3F, 0xF4, 0x69, 0xAF, 0x47, 0x49, 0x47, 0x48, 0x4F, 0xF4, + 0xA3, 0x72, 0xFB, 0xF7, 0x91, 0xFE, 0x61, 0xE7, 0x01, 0x20, 0x01, 0xF0, + 0xB1, 0xF8, 0x3A, 0x6B, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x66, + 0x53, 0x07, 0xC6, 0xF8, 0xB0, 0x24, 0x7F, 0xF5, 0x65, 0xAF, 0xD6, 0xF8, + 0xCC, 0x31, 0x00, 0x20, 0x23, 0xF0, 0x0E, 0x03, 0xC6, 0xF8, 0xCC, 0x31, + 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xD1, 0xF8, 0xCC, 0x11, 0x11, 0xF0, + 0x0C, 0x0F, 0x8C, 0xD0, 0x00, 0x2B, 0x8A, 0xD1, 0xDF, 0xF8, 0xD8, 0x90, + 0x02, 0xF5, 0xB2, 0x72, 0xB4, 0x18, 0x9A, 0x46, 0xCB, 0x46, 0x58, 0x46, + 0x06, 0x22, 0x21, 0x46, 0x0E, 0xF0, 0xDC, 0xF8, 0x0B, 0xF1, 0x14, 0x0B, + 0x18, 0xB3, 0x0A, 0xF1, 0x01, 0x0A, 0xBA, 0xF1, 0x05, 0x0F, 0xF2, 0xD1, + 0x2C, 0x49, 0x50, 0x22, 0x01, 0xF1, 0x14, 0x00, 0x0E, 0xF0, 0xFE, 0xF8, + 0x29, 0x48, 0x21, 0x46, 0x06, 0x22, 0x0E, 0xF0, 0xF9, 0xF8, 0x01, 0x23, + 0xA9, 0xF8, 0x06, 0x30, 0x89, 0xF8, 0x08, 0x30, 0x65, 0xE7, 0x0B, 0xF5, + 0xB2, 0x70, 0x0B, 0xF5, 0x86, 0x71, 0x31, 0x44, 0x30, 0x44, 0x05, 0x91, + 0xFA, 0xF7, 0x28, 0xFF, 0xDA, 0xF8, 0xCC, 0x31, 0x05, 0x99, 0x04, 0x46, + 0x83, 0xE7, 0x0A, 0xEB, 0x8A, 0x03, 0x09, 0xEB, 0x83, 0x03, 0x4F, 0xEA, + 0x8A, 0x0B, 0x9A, 0x79, 0x14, 0x23, 0x03, 0xFB, 0x0A, 0x93, 0x4A, 0xB1, + 0xDB, 0x79, 0x53, 0xB1, 0x0B, 0xEB, 0x0A, 0x03, 0x09, 0xEB, 0x83, 0x09, + 0x01, 0x23, 0x89, 0xF8, 0x08, 0x30, 0x42, 0xE7, 0x01, 0x22, 0x9A, 0x71, + 0xF4, 0xE7, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x08, 0x64, 0x00, 0x92, + 0xB4, 0xF8, 0x68, 0x31, 0xB4, 0xF8, 0x66, 0x21, 0xB4, 0xF8, 0x64, 0x11, + 0x0C, 0x48, 0xFB, 0xF7, 0x9F, 0xFB, 0xD4, 0xF8, 0xCC, 0x31, 0x23, 0xF0, + 0x0C, 0x03, 0xC4, 0xF8, 0xCC, 0x31, 0xDF, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA8, 0xB9, 0x15, 0x00, + 0xCC, 0x35, 0x17, 0x00, 0xCC, 0xB9, 0x15, 0x00, 0x08, 0xB5, 0x16, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0F, 0xDB, 0x06, 0x20, + 0xF9, 0xF7, 0xB6, 0xFF, 0x04, 0x28, 0x06, 0xD0, 0x06, 0x20, 0xF9, 0xF7, + 0xB1, 0xFF, 0x09, 0x28, 0x01, 0xD0, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xF0, + 0xF5, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0xA6, 0xFF, + 0x04, 0x28, 0xEA, 0xD0, 0x06, 0x20, 0xF9, 0xF7, 0xA1, 0xFF, 0x00, 0x28, + 0xE5, 0xD0, 0x06, 0x20, 0xF9, 0xF7, 0x9C, 0xFF, 0x09, 0x28, 0xE0, 0xD0, + 0x04, 0x49, 0x05, 0x48, 0x4F, 0xF4, 0x16, 0x72, 0xFB, 0xF7, 0xD4, 0xFD, + 0xD9, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xE4, 0xB9, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, 0xCD, 0xFC, 0x00, 0x20, + 0x08, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0x7E, 0xFF, 0x04, 0x28, 0xF6, 0xD0, + 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x79, 0x22, 0xFB, 0xF7, 0xB6, 0xFD, + 0x00, 0xF0, 0xBE, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x6C, 0xBA, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, + 0xAD, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0x5E, 0xFF, + 0x09, 0x28, 0xF6, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x29, 0x32, + 0xFB, 0xF7, 0x96, 0xFD, 0x00, 0xF0, 0x9E, 0xFC, 0x00, 0x20, 0x08, 0xBD, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x9C, 0xBA, 0x15, 0x00, + 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x03, 0xDB, 0x00, 0xF0, 0x8D, 0xFC, 0x00, 0x20, 0x08, 0xBD, 0x06, 0x20, + 0xF9, 0xF7, 0x3E, 0xFF, 0x09, 0x28, 0xF6, 0xD0, 0x05, 0x49, 0x06, 0x48, + 0x40, 0xF2, 0x43, 0x32, 0xFB, 0xF7, 0x76, 0xFD, 0x00, 0xF0, 0x7E, 0xFC, + 0x00, 0x20, 0x08, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x9C, 0xBA, 0x15, 0x00, 0x37, 0x4B, 0x30, 0xB5, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x83, 0xB0, 0x37, 0xDB, 0x06, 0x20, 0xF9, 0xF7, + 0x21, 0xFF, 0x09, 0x28, 0x10, 0xD0, 0x32, 0x4B, 0x9A, 0x7D, 0x01, 0x2A, + 0x50, 0xD0, 0x1B, 0x68, 0x93, 0xF8, 0x3B, 0x30, 0x02, 0x2B, 0x3A, 0xD9, + 0x03, 0x2B, 0x3F, 0xD1, 0x2D, 0x48, 0x01, 0xF0, 0xF5, 0xFC, 0x00, 0x20, + 0x03, 0xB0, 0x30, 0xBD, 0x29, 0x4C, 0xA2, 0x6A, 0x23, 0x7D, 0x00, 0x25, + 0xC2, 0xF8, 0xCC, 0x51, 0x00, 0x2B, 0x40, 0xD1, 0xA0, 0x68, 0x0C, 0x30, + 0xF9, 0xF7, 0x90, 0xFC, 0xA3, 0x7D, 0x00, 0x22, 0x01, 0x2B, 0xA2, 0x60, + 0x01, 0xD0, 0xA1, 0x7F, 0x61, 0xB3, 0x00, 0x24, 0x01, 0xA9, 0x68, 0x46, + 0xCD, 0xE9, 0x00, 0x44, 0x00, 0xF0, 0x8C, 0xFA, 0xDD, 0xE9, 0x00, 0x01, + 0x22, 0x46, 0x00, 0xF0, 0x2D, 0xFB, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, + 0x06, 0x20, 0xF9, 0xF7, 0xE9, 0xFE, 0x04, 0x28, 0xC2, 0xD0, 0x06, 0x20, + 0xF9, 0xF7, 0xE4, 0xFE, 0x09, 0x28, 0xBD, 0xD0, 0x15, 0x49, 0x16, 0x48, + 0x40, 0xF2, 0x93, 0x22, 0xFB, 0xF7, 0x1C, 0xFD, 0xB6, 0xE7, 0x00, 0x21, + 0x01, 0x20, 0x01, 0xF0, 0x2B, 0xF8, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, + 0x01, 0x20, 0x00, 0xF0, 0x35, 0xFF, 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, + 0x06, 0x20, 0xF9, 0xF7, 0x23, 0xFE, 0xDA, 0xE7, 0x01, 0xF0, 0x48, 0xF9, + 0x00, 0x20, 0x03, 0xB0, 0x30, 0xBD, 0x06, 0x22, 0x0C, 0x21, 0x41, 0xF6, + 0x04, 0x00, 0xF9, 0xF7, 0x85, 0xFC, 0x25, 0x75, 0xB6, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x08, 0xAC, 0x0F, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xC8, 0xBA, 0x15, 0x00, 0x4B, 0x88, 0x03, 0xF0, + 0xFC, 0x03, 0xB0, 0x2B, 0x10, 0xB5, 0x0C, 0x46, 0x13, 0xD0, 0x10, 0x2B, + 0x0A, 0xD0, 0x30, 0x2B, 0x08, 0xD0, 0xC0, 0x2B, 0x01, 0xD0, 0xA0, 0x2B, + 0x14, 0xD1, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0x01, 0xF0, 0x78, 0xBB, + 0x06, 0x20, 0xF9, 0xF7, 0x9B, 0xFE, 0x07, 0x28, 0x13, 0xD0, 0x00, 0x20, + 0x10, 0xBD, 0x06, 0x20, 0xF9, 0xF7, 0x94, 0xFE, 0x05, 0x28, 0xF8, 0xD1, + 0x20, 0x46, 0x01, 0xF0, 0x37, 0xFA, 0xF4, 0xE7, 0xD0, 0x2B, 0xF2, 0xD1, + 0x23, 0x7B, 0x08, 0x2B, 0xEF, 0xD1, 0x20, 0x46, 0x01, 0xF0, 0xD4, 0xFB, + 0xEB, 0xE7, 0x20, 0x46, 0x01, 0xF0, 0x70, 0xFA, 0xE7, 0xE7, 0x00, 0xBF, + 0x10, 0xB5, 0x06, 0x20, 0x0C, 0x46, 0xF9, 0xF7, 0x7B, 0xFE, 0x06, 0x28, + 0x01, 0xD0, 0x00, 0x20, 0x10, 0xBD, 0x60, 0x88, 0x01, 0xF0, 0xC8, 0xFC, + 0x00, 0x20, 0x10, 0xBD, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x03, 0xD4, 0x72, 0xB6, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x0D, 0x4C, + 0x0D, 0x4A, 0x23, 0x68, 0xD2, 0x7D, 0x01, 0x33, 0x01, 0x2A, 0x23, 0x60, + 0x0C, 0xD0, 0x33, 0xB1, 0x07, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x23, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x07, 0x48, 0xFB, 0xF7, 0x1C, 0xFA, + 0x00, 0x20, 0x10, 0xBD, 0x00, 0xF0, 0x16, 0xFB, 0x23, 0x68, 0xEE, 0xE7, + 0x38, 0x61, 0x17, 0x00, 0x6C, 0x28, 0x17, 0x00, 0x4C, 0x36, 0x17, 0x00, + 0x28, 0xBB, 0x15, 0x00, 0x38, 0xB5, 0x06, 0x20, 0x0D, 0x46, 0xF9, 0xF7, + 0x43, 0xFE, 0x30, 0xB9, 0x04, 0x46, 0x29, 0x88, 0xA8, 0x78, 0x00, 0xF0, + 0xB7, 0xFD, 0x20, 0x46, 0x38, 0xBD, 0x02, 0x20, 0x38, 0xBD, 0x00, 0xBF, + 0x8B, 0x4B, 0x2D, 0xE9, 0xF0, 0x4F, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x89, 0xB0, 0x0C, 0x46, 0xC0, 0xF2, 0xFD, 0x80, 0x25, 0x78, + 0x00, 0x2D, 0x40, 0xF0, 0xF2, 0x80, 0x63, 0x78, 0x00, 0x93, 0x4F, 0xF4, + 0x1E, 0x74, 0x04, 0xFB, 0x03, 0xF4, 0x82, 0x4B, 0xDF, 0xF8, 0x18, 0xA2, + 0x1F, 0x19, 0x4F, 0xF4, 0xA4, 0x6C, 0x97, 0xF8, 0x22, 0xE0, 0x0C, 0xFB, + 0x0E, 0xAC, 0x0C, 0xF5, 0xCE, 0x73, 0x0F, 0xCB, 0x07, 0xF1, 0xB8, 0x06, + 0x07, 0xC6, 0xDC, 0xF8, 0xCC, 0x81, 0x33, 0x70, 0x18, 0xF0, 0x01, 0x0F, + 0x03, 0xD0, 0x7B, 0x68, 0x43, 0xF0, 0x01, 0x03, 0x7B, 0x60, 0x18, 0xF0, + 0x02, 0x0F, 0x58, 0xD0, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, 0x0E, 0xA3, + 0x03, 0xF1, 0xEC, 0x0B, 0x00, 0x9E, 0x01, 0x93, 0xBB, 0xE8, 0x0F, 0x00, + 0xB4, 0x46, 0x6E, 0x4E, 0x4F, 0xF4, 0x1E, 0x79, 0x09, 0xFB, 0x0C, 0x69, + 0x09, 0xF1, 0xC8, 0x0C, 0xAC, 0xE8, 0x0F, 0x00, 0x9B, 0xE8, 0x0F, 0x00, + 0xD9, 0xF8, 0x04, 0xB0, 0x18, 0xF0, 0x08, 0x0F, 0x4B, 0xF0, 0x02, 0x06, + 0x8C, 0xE8, 0x0F, 0x00, 0xC9, 0xF8, 0x04, 0x60, 0x15, 0xD0, 0x01, 0x9B, + 0x03, 0xF5, 0x8C, 0x76, 0x0F, 0xCE, 0x09, 0xF1, 0xF4, 0x0C, 0xAC, 0xE8, + 0x0F, 0x00, 0x0F, 0xCE, 0xAC, 0xE8, 0x0F, 0x00, 0x0F, 0xCE, 0xAC, 0xE8, + 0x0F, 0x00, 0x96, 0xE8, 0x03, 0x00, 0x8C, 0xE8, 0x03, 0x00, 0x4B, 0xF0, + 0x22, 0x03, 0xC9, 0xF8, 0x04, 0x30, 0x18, 0xF0, 0x04, 0x0F, 0x16, 0xD0, + 0x4F, 0xF4, 0xA4, 0x63, 0x00, 0x9E, 0x03, 0xFB, 0x0E, 0xA3, 0x03, 0xF5, + 0x86, 0x73, 0x93, 0xE8, 0x07, 0x00, 0xB4, 0x46, 0x51, 0x4E, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x0C, 0x63, 0x03, 0xF1, 0xE8, 0x06, 0x86, 0xE8, + 0x07, 0x00, 0x5A, 0x68, 0x42, 0xF0, 0x04, 0x02, 0x5A, 0x60, 0x4F, 0xF4, + 0xA4, 0x61, 0x01, 0xFB, 0x0E, 0xA1, 0xEC, 0x31, 0x38, 0x46, 0xFE, 0xF7, + 0x81, 0xF8, 0x48, 0x4B, 0xD3, 0xF8, 0x14, 0x33, 0x98, 0x47, 0x47, 0x4B, + 0x1B, 0x78, 0x00, 0x2B, 0x66, 0xD0, 0x00, 0x9A, 0x42, 0x49, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x02, 0x13, 0x93, 0xF8, 0xB8, 0x20, 0x00, 0x23, + 0xCD, 0xE9, 0x02, 0x33, 0xCD, 0xE9, 0x05, 0x33, 0x04, 0x93, 0x07, 0x93, + 0x00, 0x2A, 0x70, 0xD0, 0x01, 0x3A, 0xD2, 0xB2, 0xB8, 0x34, 0x02, 0xAE, + 0x0D, 0xF1, 0x14, 0x0C, 0x9B, 0x46, 0x0D, 0xF1, 0x09, 0x03, 0x01, 0x92, + 0x0C, 0x44, 0x03, 0xEB, 0x02, 0x09, 0x31, 0x46, 0x62, 0x46, 0x4F, 0xF0, + 0x01, 0x08, 0x40, 0xF2, 0x05, 0x2A, 0x07, 0xE0, 0x01, 0xF8, 0x01, 0x0B, + 0x49, 0x45, 0x82, 0xF8, 0x00, 0x80, 0x02, 0xF1, 0x01, 0x02, 0x14, 0xD0, + 0x14, 0xF8, 0x01, 0x0F, 0x00, 0xF0, 0x7F, 0x03, 0x02, 0x3B, 0xDB, 0xB2, + 0x09, 0x2B, 0x08, 0xFA, 0x03, 0xFE, 0xED, 0xD8, 0x1E, 0xEA, 0x0A, 0x0F, + 0xEA, 0xD0, 0x01, 0xF8, 0x01, 0x0B, 0x49, 0x45, 0x82, 0xF8, 0x00, 0xB0, + 0x02, 0xF1, 0x01, 0x02, 0xEA, 0xD1, 0x01, 0x9A, 0x0C, 0xF1, 0x01, 0x03, + 0x1A, 0x44, 0x11, 0x46, 0x00, 0x9A, 0x10, 0x46, 0x1E, 0x4A, 0x4F, 0xF4, + 0x1E, 0x74, 0x04, 0xFB, 0x00, 0x24, 0x00, 0xE0, 0x01, 0x33, 0x9C, 0xF8, + 0x00, 0x20, 0x9C, 0x46, 0x2A, 0xB1, 0x62, 0x19, 0x30, 0x78, 0x82, 0xF8, + 0xB9, 0x00, 0x01, 0x35, 0xED, 0xB2, 0x8B, 0x42, 0x06, 0xF1, 0x01, 0x06, + 0xF0, 0xD1, 0x00, 0x9A, 0x11, 0x46, 0x13, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x01, 0x23, 0x83, 0xF8, 0xB8, 0x50, 0x38, 0x46, 0xFE, 0xF7, + 0x1D, 0xFA, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x20, + 0x00, 0xF0, 0x98, 0xFD, 0x00, 0x20, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x06, 0x20, 0xF9, 0xF7, 0x2D, 0xFD, 0x03, 0x28, 0x3F, 0xF4, 0xFD, 0xAE, + 0x08, 0x49, 0x09, 0x48, 0x40, 0xF2, 0xF1, 0x12, 0xFB, 0xF7, 0x64, 0xFB, + 0xF5, 0xE6, 0x15, 0x46, 0xD9, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xB8, 0x34, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x40, 0xBB, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x70, 0xB5, 0x06, 0x20, 0xF9, 0xF7, 0x0E, 0xFD, 0x08, 0x28, 0x06, 0xD0, + 0x06, 0x20, 0xF9, 0xF7, 0x09, 0xFD, 0x09, 0x28, 0x33, 0xD0, 0x00, 0x20, + 0x70, 0xBD, 0x22, 0x4A, 0x22, 0x4B, 0x14, 0x68, 0x94, 0xF8, 0x3D, 0x60, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x06, 0x36, 0x06, 0x23, 0x1A, 0x46, + 0x00, 0x21, 0x4B, 0x20, 0x96, 0xF8, 0x6C, 0x50, 0xF9, 0xF7, 0x52, 0xFA, + 0x94, 0xF8, 0x3A, 0x20, 0x02, 0x71, 0x22, 0x8F, 0x42, 0x80, 0x94, 0xF8, + 0x3D, 0x20, 0x02, 0x70, 0xF9, 0xF7, 0x78, 0xFA, 0xD6, 0xF8, 0xB0, 0x34, + 0x15, 0x4A, 0xA1, 0x8E, 0x4F, 0xF4, 0x1E, 0x70, 0x03, 0xF0, 0x01, 0x03, + 0x00, 0xFB, 0x05, 0x22, 0xC3, 0xF1, 0x02, 0x03, 0x49, 0xBA, 0x02, 0x2B, + 0x82, 0xF8, 0x30, 0x30, 0x91, 0x86, 0x08, 0xD0, 0x00, 0x20, 0x00, 0xF0, + 0x39, 0xFD, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xF0, 0x1B, 0xFA, 0x00, 0x20, + 0x70, 0xBD, 0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF9, 0xF7, + 0x27, 0xFA, 0x00, 0x22, 0x02, 0x70, 0x94, 0xF8, 0x3D, 0x20, 0x42, 0x70, + 0xF9, 0xF7, 0x50, 0xFA, 0xE8, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x70, 0xB5, 0x06, 0x46, + 0x06, 0x20, 0x0D, 0x46, 0xF9, 0xF7, 0xB4, 0xFC, 0x2B, 0x46, 0x02, 0x46, + 0x0A, 0x49, 0x04, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xFB, 0xF7, 0xC2, 0xF8, + 0x08, 0x4B, 0x1D, 0x42, 0x04, 0xD0, 0x24, 0xF0, 0x02, 0x01, 0x89, 0xB2, + 0x05, 0x29, 0x00, 0xD0, 0x70, 0xBD, 0x30, 0x46, 0xE6, 0xF7, 0xDC, 0xFC, + 0x01, 0x23, 0x86, 0xF8, 0x5E, 0x30, 0x70, 0xBD, 0x70, 0xBB, 0x15, 0x00, + 0x00, 0x00, 0x03, 0x40, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x04, 0xDB, 0xBD, 0xE8, 0x08, 0x40, 0x09, 0x48, + 0xF9, 0xF7, 0x74, 0xBE, 0x08, 0x4B, 0xDB, 0x68, 0x00, 0x2B, 0xF6, 0xD0, + 0x07, 0x48, 0x08, 0x49, 0x70, 0x22, 0xFB, 0xF7, 0xC3, 0xFA, 0xBD, 0xE8, + 0x08, 0x40, 0x02, 0x48, 0xF9, 0xF7, 0x66, 0xBE, 0x38, 0x36, 0x17, 0x00, + 0x70, 0xBA, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x80, 0xBB, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x03, 0x4A, 0x04, 0x4B, 0x00, 0x21, 0x06, 0x20, + 0xD1, 0x75, 0x19, 0x60, 0xF9, 0xF7, 0xC4, 0xBB, 0x4C, 0x36, 0x17, 0x00, + 0x64, 0xBA, 0x17, 0x00, 0x70, 0xB5, 0x11, 0x4B, 0x1E, 0x68, 0x00, 0x23, + 0x03, 0x60, 0x0B, 0x60, 0x96, 0xF8, 0x22, 0x30, 0xDB, 0x07, 0x05, 0x46, + 0x0C, 0x46, 0x08, 0xD5, 0x30, 0x46, 0x03, 0xF0, 0x57, 0xFB, 0x58, 0xB1, + 0x83, 0x1C, 0x2B, 0x60, 0xC3, 0x6A, 0x23, 0x60, 0x70, 0xBD, 0x06, 0xF1, + 0x22, 0x00, 0x28, 0x60, 0x03, 0xF0, 0x46, 0xFB, 0x00, 0x28, 0xF5, 0xD1, + 0x32, 0x8D, 0x4F, 0xF6, 0xFF, 0x73, 0x9A, 0x42, 0x1C, 0xBF, 0x28, 0x36, + 0x26, 0x60, 0x70, 0xBD, 0x64, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x3B, 0x4C, 0x4F, 0xF4, 0xBA, 0x73, 0x06, 0x22, 0x84, 0xB0, 0x80, 0x46, + 0x0F, 0x46, 0x4F, 0xF4, 0x80, 0x50, 0x04, 0x21, 0x25, 0x68, 0xF9, 0xF7, + 0x91, 0xF9, 0x95, 0xF8, 0x3D, 0x30, 0x80, 0xF8, 0x6E, 0x31, 0x04, 0x46, + 0x0F, 0xCD, 0x4F, 0xF0, 0x00, 0x0C, 0x04, 0xF1, 0xFC, 0x06, 0xC4, 0xF8, + 0x68, 0xC1, 0xA4, 0xF8, 0x6C, 0xC1, 0x0F, 0xC6, 0x0F, 0xCD, 0x0F, 0xC6, + 0x01, 0x23, 0x2A, 0x68, 0x32, 0x70, 0x84, 0xF8, 0x70, 0x31, 0xB8, 0xF1, + 0x00, 0x0F, 0x19, 0xD0, 0xD8, 0xF8, 0x00, 0x00, 0xC4, 0xF8, 0x60, 0x01, + 0xB8, 0xF8, 0x04, 0x30, 0xA4, 0xF8, 0x64, 0x31, 0xCF, 0xB1, 0x38, 0x68, + 0x20, 0x60, 0xBB, 0x88, 0xA3, 0x80, 0x01, 0x23, 0x84, 0xF8, 0x6F, 0x31, + 0x20, 0x46, 0xF9, 0xF7, 0x95, 0xF9, 0x01, 0x21, 0x06, 0x20, 0x04, 0xB0, + 0xBD, 0xE8, 0xF0, 0x41, 0xF9, 0xF7, 0x58, 0xBB, 0x1C, 0x4B, 0x18, 0x68, + 0x9B, 0x88, 0xC4, 0xF8, 0x60, 0x01, 0xA4, 0xF8, 0x64, 0x31, 0x00, 0x2F, + 0xE5, 0xD1, 0x19, 0x4B, 0x02, 0x93, 0x93, 0xF8, 0xFD, 0x50, 0x93, 0xF8, + 0xFC, 0x00, 0x8D, 0xF8, 0x05, 0x50, 0x03, 0xF1, 0x54, 0x02, 0x03, 0x92, + 0x84, 0xF8, 0x6F, 0x71, 0x0D, 0xF1, 0x08, 0x0C, 0x06, 0x26, 0xB8, 0xB1, + 0x5C, 0xF8, 0x27, 0x30, 0x16, 0xFB, 0x00, 0x30, 0xDA, 0x78, 0x92, 0x07, + 0x0D, 0xD4, 0x94, 0xF8, 0x6F, 0x21, 0x51, 0x1C, 0x84, 0xF8, 0x6F, 0x11, + 0x02, 0xEB, 0x42, 0x02, 0x19, 0x68, 0x44, 0xF8, 0x12, 0x10, 0x04, 0xEB, + 0x42, 0x02, 0x99, 0x88, 0x91, 0x80, 0x06, 0x33, 0x83, 0x42, 0xEB, 0xD1, + 0x00, 0x2F, 0xC1, 0xD1, 0x28, 0x46, 0x01, 0x27, 0xE1, 0xE7, 0x00, 0xBF, + 0x64, 0xBA, 0x17, 0x00, 0xAC, 0xB2, 0x15, 0x00, 0x5A, 0xB9, 0x17, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0x8B, 0x78, 0x0D, 0x46, 0x80, 0x46, 0x17, 0x46, + 0x1B, 0xB9, 0x37, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x49, 0xDB, 0x36, 0x4C, + 0xDF, 0xF8, 0xEC, 0xA0, 0x4F, 0xF0, 0x00, 0x09, 0x4F, 0xF4, 0xBA, 0x73, + 0x06, 0x22, 0x04, 0x21, 0x41, 0xF2, 0x02, 0x00, 0xDA, 0xF8, 0x00, 0xB0, + 0x84, 0xF8, 0x17, 0x90, 0xF9, 0xF7, 0x04, 0xF9, 0x04, 0x46, 0x28, 0x68, + 0x20, 0x60, 0x4F, 0xF0, 0x01, 0x0C, 0xB5, 0xF8, 0x04, 0xE0, 0x84, 0xF8, + 0x6F, 0xC1, 0x5E, 0x46, 0x0F, 0xCE, 0x04, 0xF1, 0xFC, 0x05, 0xA4, 0xF8, + 0x04, 0xE0, 0x0F, 0xC5, 0x0F, 0xCE, 0x0F, 0xC5, 0x33, 0x68, 0x2B, 0x70, + 0x84, 0xF8, 0x70, 0xC1, 0xA4, 0xF8, 0x6C, 0x91, 0xC4, 0xF8, 0x68, 0x91, + 0x9B, 0xF8, 0x3D, 0x30, 0x84, 0xF8, 0x6E, 0x31, 0xD8, 0xF8, 0x00, 0x00, + 0xC4, 0xF8, 0x60, 0x01, 0xB8, 0xF8, 0x04, 0x30, 0xA4, 0xF8, 0x64, 0x31, + 0x1F, 0xB1, 0xE3, 0x78, 0x43, 0xEA, 0x0C, 0x03, 0xE3, 0x70, 0xB7, 0xFA, + 0x87, 0xF2, 0x20, 0x46, 0x52, 0x09, 0x8A, 0xF8, 0x15, 0x20, 0xF9, 0xF7, + 0x01, 0xF9, 0xBD, 0xE8, 0xF8, 0x4F, 0x02, 0x21, 0x06, 0x20, 0xF9, 0xF7, + 0xC5, 0xBA, 0x12, 0x4B, 0x10, 0x4C, 0xD3, 0xF8, 0x24, 0x31, 0x5B, 0x06, + 0xB0, 0xD5, 0xE3, 0x7D, 0x01, 0x2B, 0xAD, 0xD1, 0x0E, 0x4A, 0x63, 0x70, + 0x13, 0x68, 0x0E, 0x49, 0x0E, 0x48, 0x23, 0xF0, 0x00, 0x43, 0x13, 0x60, + 0x08, 0x60, 0x0D, 0x4A, 0xC4, 0xF8, 0x0C, 0x80, 0x06, 0x21, 0x41, 0xF6, + 0x09, 0x00, 0x25, 0x61, 0xA7, 0x75, 0xF8, 0xF7, 0x0D, 0xFF, 0xBD, 0xE8, + 0xF8, 0x4F, 0xDC, 0xF7, 0xF9, 0xB8, 0x00, 0xBF, 0x48, 0x30, 0x34, 0x40, + 0x4C, 0x36, 0x17, 0x00, 0x00, 0x00, 0x50, 0x40, 0x34, 0x04, 0x32, 0x40, + 0x20, 0x04, 0x32, 0x40, 0x40, 0x1F, 0xDC, 0x05, 0xA0, 0x86, 0x01, 0x00, + 0x64, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x27, 0x4D, 0xDF, 0xF8, + 0xA0, 0x80, 0xAF, 0x7D, 0xD8, 0xF8, 0x00, 0x90, 0x4F, 0xF4, 0xBA, 0x73, + 0x06, 0x22, 0x04, 0x21, 0x41, 0xF2, 0x02, 0x00, 0xF9, 0xF7, 0x8A, 0xF8, + 0x06, 0x21, 0x04, 0x46, 0x41, 0xF6, 0x09, 0x00, 0xF8, 0xF7, 0x92, 0xFF, + 0xD5, 0xE9, 0x03, 0x23, 0x4F, 0xF0, 0x00, 0x0C, 0x85, 0xF8, 0x17, 0xC0, + 0x10, 0x68, 0xC4, 0xF8, 0x60, 0x01, 0x18, 0x68, 0x95, 0x88, 0x20, 0x60, + 0x4F, 0xF0, 0x01, 0x0E, 0xB3, 0xF8, 0x04, 0xA0, 0x84, 0xF8, 0x6F, 0xE1, + 0x4E, 0x46, 0x0F, 0xCE, 0xA4, 0xF8, 0x64, 0x51, 0x04, 0xF1, 0xFC, 0x05, + 0xA4, 0xF8, 0x04, 0xA0, 0x0F, 0xC5, 0x0F, 0xCE, 0x0F, 0xC5, 0x33, 0x68, + 0x2B, 0x70, 0x84, 0xF8, 0x70, 0xE1, 0xA4, 0xF8, 0x6C, 0xC1, 0xC4, 0xF8, + 0x68, 0xC1, 0x99, 0xF8, 0x3D, 0x30, 0x84, 0xF8, 0x6E, 0x31, 0x1F, 0xB1, + 0xE3, 0x78, 0x43, 0xEA, 0x0E, 0x03, 0xE3, 0x70, 0xB7, 0xFA, 0x87, 0xF3, + 0x20, 0x46, 0x5B, 0x09, 0x88, 0xF8, 0x15, 0x30, 0xF9, 0xF7, 0x7E, 0xF8, + 0xBD, 0xE8, 0xF0, 0x47, 0x02, 0x21, 0x06, 0x20, 0xF9, 0xF7, 0x42, 0xBA, + 0x4C, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, 0x30, 0xB5, 0x14, 0x4A, + 0x14, 0x4B, 0x11, 0x68, 0x14, 0x4A, 0x91, 0xF8, 0x3D, 0x10, 0x54, 0x6C, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0xF2, 0x99, 0x18, 0x85, 0xB0, + 0xD1, 0xF8, 0x90, 0x31, 0x91, 0xF8, 0xC5, 0x51, 0x8D, 0xF8, 0x05, 0x50, + 0x0A, 0x46, 0x99, 0x78, 0xD2, 0xF8, 0x94, 0x21, 0x8D, 0xF8, 0x04, 0x10, + 0x19, 0x88, 0x02, 0x92, 0x1A, 0x79, 0xAD, 0xF8, 0x06, 0x10, 0x8D, 0xF8, + 0x0C, 0x20, 0xDB, 0x78, 0x8D, 0xF8, 0x0D, 0x30, 0x01, 0x46, 0x01, 0xA8, + 0xA0, 0x47, 0x05, 0xB0, 0x30, 0xBD, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0C, 0x48, + 0xF9, 0xF7, 0xE2, 0xFC, 0x0B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x04, 0x46, 0x05, 0xDB, 0x04, 0xF1, 0x0C, 0x00, 0xBD, 0xE8, + 0x10, 0x40, 0xF9, 0xF7, 0x33, 0xB8, 0x00, 0x28, 0xF7, 0xD1, 0x05, 0x49, + 0x05, 0x48, 0x40, 0xF2, 0x0D, 0x22, 0xFB, 0xF7, 0xDD, 0xF8, 0xF0, 0xE7, + 0x70, 0xBA, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xA8, 0xAB, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x02, 0x23, 0x04, 0x46, + 0x06, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF8, 0xF7, 0xE8, 0xFF, + 0x06, 0x22, 0x02, 0x23, 0x06, 0x46, 0x05, 0x21, 0x41, 0xF2, 0x17, 0x40, + 0xF8, 0xF7, 0xE0, 0xFF, 0x38, 0x4F, 0x39, 0x49, 0x05, 0x46, 0x4F, 0xF4, + 0x80, 0x70, 0xFA, 0xF7, 0x91, 0xFE, 0xFF, 0xF7, 0xE1, 0xFD, 0x20, 0x46, + 0xE5, 0xF7, 0x4A, 0xF8, 0x4F, 0xF0, 0x00, 0x08, 0x94, 0xF8, 0x6C, 0x00, + 0x7B, 0x6A, 0x98, 0x47, 0x86, 0xF8, 0x00, 0x80, 0x94, 0xF8, 0x63, 0x30, + 0x73, 0x70, 0x2F, 0x48, 0xA6, 0xF1, 0x0C, 0x01, 0xF9, 0xF7, 0x52, 0xFC, + 0x94, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0x3F, 0xD1, 0x94, 0xF8, 0x6C, 0x30, + 0xFF, 0x2B, 0x0D, 0xD0, 0x01, 0x23, 0x00, 0x21, 0x06, 0x22, 0x0C, 0x20, + 0xF8, 0xF7, 0xB6, 0xFF, 0x01, 0x46, 0x94, 0xF8, 0x6C, 0x30, 0x01, 0xF8, + 0x0C, 0x39, 0x23, 0x48, 0xF9, 0xF7, 0x3C, 0xFC, 0x23, 0x6C, 0x6B, 0xB1, + 0x01, 0x23, 0x00, 0x21, 0x06, 0x22, 0x39, 0x20, 0xF8, 0xF7, 0xA6, 0xFF, + 0x01, 0x46, 0x94, 0xF8, 0x63, 0x30, 0x01, 0xF8, 0x0C, 0x39, 0x1B, 0x48, + 0xF9, 0xF7, 0x2C, 0xFC, 0x00, 0x26, 0x2E, 0x70, 0x94, 0xF8, 0x63, 0x20, + 0x18, 0x4B, 0x6A, 0x70, 0x93, 0xF8, 0x04, 0x31, 0x43, 0xB1, 0xD7, 0xF8, + 0xD8, 0x31, 0x04, 0xF1, 0x9C, 0x00, 0x98, 0x47, 0xC4, 0xE9, 0x24, 0x66, + 0xC4, 0xF8, 0x98, 0x60, 0x00, 0x23, 0xA5, 0xF1, 0x0C, 0x01, 0xC4, 0xF8, + 0xCC, 0x31, 0x0E, 0x48, 0xF9, 0xF7, 0x12, 0xFC, 0xBD, 0xE8, 0xF0, 0x41, + 0xFF, 0xF7, 0x6C, 0xBF, 0x41, 0x46, 0x04, 0x23, 0x06, 0x22, 0x1E, 0x20, + 0xF8, 0xF7, 0x7A, 0xFF, 0x80, 0xF8, 0x02, 0x80, 0x94, 0xF8, 0x63, 0x30, + 0xC3, 0x70, 0xA0, 0xF1, 0x0C, 0x01, 0x04, 0x48, 0xF9, 0xF7, 0xFE, 0xFB, + 0xAE, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0xA8, 0xBB, 0x15, 0x00, + 0x70, 0xBA, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x6A, 0x4B, 0xDF, 0xF8, 0xB4, 0xA1, 0x1D, 0x68, 0x83, 0xB0, 0x95, 0xF8, + 0x3D, 0x20, 0x00, 0x92, 0x16, 0x46, 0x02, 0x23, 0x06, 0x22, 0x05, 0x21, + 0x41, 0xF2, 0x19, 0x40, 0xF8, 0xF7, 0x54, 0xFF, 0x08, 0x23, 0x81, 0x46, + 0x06, 0x22, 0x00, 0x21, 0x18, 0x20, 0xF8, 0xF7, 0x4D, 0xFF, 0x08, 0x23, + 0x07, 0x46, 0x06, 0x22, 0x00, 0x21, 0x16, 0x20, 0xF8, 0xF7, 0x46, 0xFF, + 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x06, 0xF4, 0x04, 0x23, 0x06, 0x46, + 0x06, 0x22, 0x00, 0x21, 0x14, 0x20, 0xF8, 0xF7, 0x3B, 0xFF, 0x02, 0x23, + 0x06, 0x22, 0x05, 0x21, 0x83, 0x46, 0x41, 0xF2, 0x17, 0x40, 0xF8, 0xF7, + 0x33, 0xFF, 0x80, 0x46, 0xFF, 0xF7, 0x3A, 0xFD, 0x4F, 0xF0, 0x01, 0x02, + 0x89, 0xF8, 0x00, 0x20, 0x95, 0xF8, 0x3D, 0x30, 0x89, 0xF8, 0x01, 0x30, + 0x0A, 0xEB, 0x04, 0x03, 0x01, 0x93, 0x4B, 0x4B, 0xA9, 0xF1, 0x0C, 0x01, + 0x03, 0xF1, 0x0C, 0x00, 0xF9, 0xF7, 0xAC, 0xFB, 0x01, 0x9B, 0xD3, 0xF8, + 0x64, 0x01, 0xB3, 0xF8, 0x68, 0x21, 0xBA, 0x80, 0x44, 0x4B, 0x38, 0x60, + 0x95, 0xF8, 0x3D, 0x20, 0xBA, 0x71, 0x03, 0xF1, 0x0C, 0x00, 0xA7, 0xF1, + 0x0C, 0x01, 0xF9, 0xF7, 0x9B, 0xFB, 0x01, 0x9B, 0xD3, 0xF8, 0x90, 0x31, + 0x04, 0xF5, 0xCE, 0x70, 0x9B, 0x78, 0x73, 0x71, 0x01, 0x21, 0x50, 0x44, + 0xFD, 0xF7, 0xFE, 0xFD, 0x73, 0x79, 0x30, 0x60, 0x95, 0xF8, 0x3D, 0x20, + 0x32, 0x71, 0x2B, 0xB9, 0xC1, 0x07, 0x4F, 0xD5, 0x36, 0x4B, 0x4F, 0xF4, + 0x80, 0x62, 0x5A, 0x61, 0xA6, 0xF1, 0x0C, 0x01, 0x34, 0x48, 0xF9, 0xF7, + 0x7F, 0xFB, 0x00, 0x9B, 0x32, 0x48, 0x4F, 0xF4, 0xA4, 0x66, 0x06, 0xFB, + 0x03, 0xA6, 0xAB, 0xF1, 0x0C, 0x01, 0xB6, 0xF8, 0x98, 0x31, 0xAB, 0xF8, + 0x00, 0x30, 0x95, 0xF8, 0x3D, 0x30, 0x8B, 0xF8, 0x02, 0x30, 0xF9, 0xF7, + 0x6D, 0xFB, 0xD6, 0xF8, 0xCC, 0x31, 0x1B, 0x07, 0x36, 0xD4, 0x04, 0xF5, + 0xD6, 0x74, 0x00, 0x26, 0x26, 0x4F, 0xA2, 0x44, 0x34, 0x46, 0x08, 0x23, + 0x06, 0x22, 0x00, 0x21, 0x1A, 0x20, 0xF8, 0xF7, 0xCF, 0xFE, 0x5A, 0xF8, + 0x04, 0x3B, 0x03, 0x60, 0x46, 0x71, 0x95, 0xF8, 0x3D, 0x30, 0x83, 0x71, + 0x04, 0x71, 0xA0, 0xF1, 0x0C, 0x01, 0x01, 0x36, 0x38, 0x46, 0xF9, 0xF7, + 0x4F, 0xFB, 0x04, 0x2E, 0xE9, 0xD1, 0x01, 0x23, 0x88, 0xF8, 0x00, 0x30, + 0x95, 0xF8, 0x3D, 0x30, 0x17, 0x48, 0x88, 0xF8, 0x01, 0x30, 0xA8, 0xF1, + 0x0C, 0x01, 0xF9, 0xF7, 0x41, 0xFB, 0xFF, 0xF7, 0x9D, 0xFE, 0x31, 0x46, + 0x06, 0x20, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xF9, 0xF7, 0xA4, 0xB8, + 0xC2, 0x06, 0xB1, 0xD5, 0x0D, 0x4B, 0x04, 0x22, 0x5A, 0x61, 0xAD, 0xE7, + 0x06, 0x22, 0x00, 0x21, 0x04, 0x23, 0x71, 0x20, 0xF8, 0xF7, 0x9E, 0xFE, + 0x04, 0xF1, 0xEC, 0x03, 0x06, 0x46, 0x0A, 0xEB, 0x03, 0x00, 0xFD, 0xF7, + 0x0F, 0xFE, 0x31, 0x46, 0x03, 0x46, 0x41, 0xF8, 0x0C, 0x39, 0x04, 0x48, + 0xF9, 0xF7, 0x1E, 0xFB, 0xB3, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, + 0xC4, 0x3C, 0x18, 0x00, 0x70, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x06, 0x23, 0x2D, 0xE9, 0xF0, 0x41, 0x1A, 0x46, 0x04, 0x46, 0x0F, 0x46, + 0x41, 0xF6, 0x05, 0x00, 0x0C, 0x21, 0xF8, 0xF7, 0x7B, 0xFE, 0x38, 0x4E, + 0x94, 0xF8, 0xC0, 0x34, 0xB4, 0x62, 0x05, 0x46, 0x00, 0x2B, 0x3F, 0xD0, + 0x35, 0x4B, 0x9B, 0x68, 0x00, 0x2B, 0x61, 0xD0, 0x93, 0xF8, 0x62, 0x20, + 0x7A, 0xB9, 0x33, 0x49, 0x33, 0x4A, 0xD8, 0x6D, 0x08, 0x60, 0xB3, 0xF8, + 0x60, 0x10, 0x11, 0x60, 0x93, 0xF8, 0x64, 0x20, 0x2A, 0xB1, 0x30, 0x49, + 0x98, 0x6B, 0x30, 0x4A, 0x08, 0x60, 0x99, 0x8F, 0x11, 0x60, 0x2F, 0x4A, + 0x12, 0x68, 0x00, 0x2A, 0x2C, 0xDB, 0xDF, 0xF8, 0xC4, 0x80, 0x00, 0x20, + 0xDB, 0xF7, 0x86, 0xFE, 0x00, 0x22, 0xD8, 0xF8, 0xD8, 0x31, 0x84, 0xF8, + 0xAC, 0x20, 0x04, 0xF1, 0xB0, 0x00, 0x98, 0x47, 0xD8, 0xF8, 0x10, 0x33, + 0x20, 0x46, 0x98, 0x47, 0x2F, 0x80, 0x94, 0xF8, 0x63, 0x30, 0xAB, 0x70, + 0xB3, 0x7D, 0x01, 0x2B, 0x08, 0xBF, 0xEB, 0x70, 0xB3, 0x7F, 0xA3, 0xF1, + 0x01, 0x03, 0xB3, 0xFA, 0x83, 0xF3, 0x5B, 0x09, 0xA5, 0xF1, 0x0C, 0x02, + 0x2B, 0x71, 0xB2, 0x60, 0xBD, 0xE8, 0xF0, 0x81, 0x1A, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0xD6, 0xDA, 0x13, 0x4B, 0x9B, 0x68, 0x00, 0x2B, 0xD2, 0xD0, + 0x00, 0x21, 0x93, 0xF8, 0x62, 0x20, 0x1A, 0xB9, 0x93, 0xF8, 0x64, 0x20, + 0x02, 0xB1, 0x01, 0x31, 0x1B, 0x68, 0x00, 0x2B, 0xF5, 0xD1, 0x01, 0x29, + 0xC5, 0xD1, 0x11, 0x4A, 0x11, 0x49, 0x53, 0x70, 0x0B, 0x68, 0x11, 0x4A, + 0x43, 0xF0, 0x00, 0x43, 0x0B, 0x60, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, + 0x43, 0xF4, 0xBB, 0x63, 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0xB4, 0xE7, + 0x07, 0x4B, 0x1B, 0x68, 0xB1, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x10, 0x00, 0x32, 0x40, 0x14, 0x00, 0x32, 0x40, + 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x48, 0x30, 0x34, 0x40, + 0x4C, 0x36, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, 0x20, 0x04, 0x32, 0x40, + 0x88, 0x1A, 0x17, 0x00, 0x10, 0xB5, 0x0A, 0x46, 0x04, 0x46, 0x05, 0x49, + 0x4F, 0xF4, 0x80, 0x70, 0xFA, 0xF7, 0xA4, 0xFC, 0x20, 0x46, 0x00, 0x21, + 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x60, 0xBF, 0xBC, 0xBB, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x43, 0xDF, 0xF8, 0xC8, 0x81, 0x4F, 0xF4, 0xA4, 0x64, + 0x04, 0xFB, 0x00, 0x84, 0x0B, 0x46, 0x02, 0x46, 0x06, 0x46, 0x0F, 0x46, + 0x4F, 0xF4, 0x80, 0x70, 0x66, 0x49, 0x94, 0xF8, 0x6C, 0x90, 0xFA, 0xF7, + 0x89, 0xFC, 0x94, 0xF8, 0x62, 0x50, 0x15, 0xB9, 0x94, 0xF8, 0x64, 0x30, + 0x3B, 0xB9, 0xBD, 0xE8, 0xF8, 0x43, 0x06, 0x22, 0x0C, 0x21, 0x41, 0xF6, + 0x04, 0x00, 0xF8, 0xF7, 0x2B, 0xBE, 0x5E, 0x4B, 0x01, 0x25, 0x09, 0x21, + 0x06, 0x20, 0x1D, 0x75, 0xF8, 0xF7, 0xB6, 0xFF, 0x94, 0xF8, 0xC0, 0x34, + 0x00, 0x2B, 0x79, 0xD1, 0xD4, 0xF8, 0x90, 0x31, 0x9D, 0x78, 0x2C, 0x1E, + 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x06, 0x85, 0x28, 0x46, 0x18, 0xBF, + 0x01, 0x24, 0xE4, 0xF7, 0x11, 0xFD, 0x00, 0x28, 0x74, 0xD0, 0x20, 0x46, + 0x4F, 0xF4, 0xC0, 0x71, 0xE6, 0xF7, 0x72, 0xF8, 0x04, 0x46, 0x01, 0x46, + 0x28, 0x46, 0x00, 0x2C, 0x6C, 0xD0, 0xF8, 0xF7, 0x69, 0xF9, 0x4C, 0x4B, + 0xD4, 0xF8, 0x48, 0x80, 0x4B, 0x49, 0xE8, 0x6D, 0x4F, 0xF4, 0x1E, 0x72, + 0x02, 0xFB, 0x09, 0x39, 0xB1, 0xF8, 0xFC, 0x31, 0x59, 0xF8, 0x26, 0x2F, + 0xC8, 0xF8, 0x6C, 0x20, 0x6F, 0xF0, 0x3F, 0x02, 0x88, 0xF8, 0x68, 0x20, + 0xB9, 0xF8, 0x04, 0x20, 0xA8, 0xF8, 0x70, 0x20, 0xB5, 0xF8, 0x60, 0x20, + 0xA8, 0xF8, 0x76, 0x20, 0x01, 0x33, 0xD9, 0xF8, 0x00, 0x20, 0xC8, 0xF8, + 0x72, 0x00, 0x9B, 0xB2, 0xB9, 0xF8, 0x04, 0x00, 0xC8, 0xF8, 0x78, 0x20, + 0x00, 0x22, 0xA8, 0xF8, 0x7C, 0x00, 0x88, 0xF8, 0x69, 0x20, 0x88, 0xF8, + 0x6A, 0x20, 0x88, 0xF8, 0x6B, 0x20, 0x18, 0x01, 0xA1, 0xF8, 0xFC, 0x31, + 0x35, 0x4B, 0xA8, 0xF8, 0x7E, 0x00, 0x26, 0x77, 0xA5, 0x65, 0x63, 0x65, + 0x95, 0xF8, 0x6C, 0x30, 0x63, 0x77, 0x84, 0xF8, 0x33, 0x20, 0x84, 0xF8, + 0x35, 0x20, 0xC0, 0x21, 0x20, 0x46, 0x07, 0xF0, 0x5F, 0xF9, 0x01, 0x28, + 0x06, 0x46, 0x08, 0xF1, 0x68, 0x09, 0x34, 0xD0, 0x39, 0x46, 0x08, 0xF1, + 0x80, 0x00, 0xFB, 0xF7, 0xDD, 0xFD, 0x02, 0x2E, 0x00, 0xF1, 0x18, 0x05, + 0x3D, 0xD0, 0xE2, 0x6C, 0x53, 0x6A, 0x01, 0x3B, 0x2B, 0x44, 0x04, 0x35, + 0xC2, 0xE9, 0x0A, 0x35, 0x05, 0x21, 0x20, 0x46, 0xE6, 0xF7, 0x20, 0xF8, + 0x05, 0x46, 0x88, 0xB1, 0xBD, 0xE8, 0xF8, 0x83, 0x2C, 0x46, 0x4F, 0xF4, + 0xA4, 0x65, 0x05, 0xFB, 0x06, 0x85, 0x28, 0x46, 0xE4, 0xF7, 0x9C, 0xFC, + 0x00, 0x28, 0x8A, 0xD1, 0x01, 0x46, 0x28, 0x46, 0xBD, 0xE8, 0xF8, 0x43, + 0xFF, 0xF7, 0xA8, 0xBE, 0xA4, 0x6D, 0x17, 0x49, 0x02, 0x46, 0x4F, 0xF4, + 0x80, 0x70, 0xFA, 0xF7, 0xDF, 0xFB, 0x29, 0x46, 0x20, 0x46, 0xBD, 0xE8, + 0xF8, 0x43, 0xFF, 0xF7, 0x9B, 0xBE, 0x18, 0x22, 0x49, 0x46, 0x20, 0x46, + 0x05, 0xF0, 0x84, 0xFF, 0x94, 0xF8, 0x33, 0x50, 0x18, 0x35, 0x09, 0xEB, + 0x05, 0x00, 0x39, 0x46, 0xFB, 0xF7, 0xA0, 0xFD, 0x94, 0xF8, 0x35, 0x20, + 0x15, 0x44, 0x05, 0x44, 0xC1, 0xE7, 0x2A, 0x46, 0x49, 0x46, 0x20, 0x46, + 0x07, 0xF0, 0x4A, 0xF9, 0x05, 0x44, 0xBA, 0xE7, 0xD4, 0xBB, 0x15, 0x00, + 0x64, 0xBA, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0xD1, 0x9D, 0x14, 0x00, 0xBC, 0xBB, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x43, 0x66, 0x4D, 0x67, 0x49, 0xD5, 0xE9, 0x00, 0x34, + 0x93, 0xF8, 0x3D, 0x70, 0x67, 0x72, 0x0A, 0x68, 0x20, 0x80, 0x22, 0xF0, + 0x10, 0x02, 0x4F, 0xF4, 0xA4, 0x66, 0x83, 0xB0, 0x80, 0x46, 0x06, 0xFB, + 0x07, 0xF6, 0x0A, 0x60, 0x00, 0x28, 0x6C, 0xD1, 0xDF, 0xF8, 0x98, 0x91, + 0x09, 0xEB, 0x06, 0x01, 0x91, 0xF8, 0x6C, 0x20, 0xD1, 0xF8, 0x64, 0x01, + 0xB1, 0xF8, 0x68, 0xC1, 0xA2, 0x72, 0x0A, 0x6C, 0xA4, 0xF8, 0x06, 0xC0, + 0xC4, 0xF8, 0x02, 0x00, 0x10, 0x7E, 0xE0, 0x72, 0x10, 0x79, 0x84, 0xF8, + 0x36, 0x03, 0xD0, 0x88, 0xB2, 0xF8, 0x08, 0xC0, 0xA4, 0xF8, 0x38, 0x03, + 0x50, 0x89, 0xC4, 0xE9, 0xCF, 0xC0, 0x52, 0x79, 0x84, 0xF8, 0x3A, 0x23, + 0xD1, 0xF8, 0xCC, 0x21, 0x02, 0xF0, 0x01, 0x02, 0x22, 0x73, 0x00, 0x2A, + 0x6D, 0xD1, 0x42, 0x46, 0x62, 0x73, 0x1A, 0x6B, 0x4F, 0xF4, 0xA4, 0x63, + 0x02, 0xF0, 0x20, 0x02, 0x03, 0xFB, 0x07, 0x93, 0x22, 0x72, 0x93, 0xF8, + 0xC0, 0x24, 0xA2, 0xB1, 0xB3, 0xF8, 0x5E, 0x00, 0xB3, 0xF8, 0x5C, 0x20, + 0x42, 0x49, 0x42, 0xEA, 0x00, 0x42, 0x0A, 0x60, 0x41, 0x4A, 0xB3, 0xF8, + 0x60, 0x10, 0x11, 0x60, 0x58, 0x8F, 0x1A, 0x8F, 0x3F, 0x49, 0x42, 0xEA, + 0x00, 0x42, 0x0A, 0x60, 0x3E, 0x4A, 0x9B, 0x8F, 0x13, 0x60, 0x20, 0x46, + 0xF8, 0xF7, 0xC8, 0xFC, 0x94, 0xF8, 0x3A, 0x33, 0xB4, 0xF8, 0x3C, 0x03, + 0x40, 0xEA, 0x03, 0x40, 0x40, 0xF0, 0x00, 0x40, 0xDB, 0xF7, 0xC0, 0xFC, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x07, 0x97, 0x01, 0x22, 0x35, 0x4B, + 0x87, 0xF8, 0xAC, 0x20, 0x1A, 0x69, 0x34, 0x49, 0x34, 0x4B, 0x06, 0xF1, + 0xB0, 0x00, 0x48, 0x44, 0x11, 0x44, 0xD3, 0xF8, 0xE0, 0x31, 0x98, 0x47, + 0x00, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0x72, 0xFE, 0x12, 0xE0, 0x2F, 0x4B, + 0x1B, 0x68, 0x00, 0x2B, 0x26, 0xDB, 0x2E, 0x4B, 0x06, 0x20, 0x09, 0x21, + 0x1E, 0x44, 0xF8, 0xF7, 0x67, 0xFE, 0x29, 0x4A, 0xAE, 0x62, 0xA4, 0xF1, + 0x0C, 0x03, 0xD2, 0xF8, 0x10, 0x23, 0xAB, 0x60, 0x30, 0x46, 0x90, 0x47, + 0xB4, 0xF8, 0x34, 0x33, 0x62, 0x7A, 0x26, 0x49, 0x00, 0x93, 0x4F, 0xF4, + 0x80, 0x70, 0x43, 0x46, 0xFA, 0xF7, 0x12, 0xFB, 0x28, 0x68, 0x0C, 0x38, + 0xF8, 0xF7, 0xD2, 0xFC, 0x00, 0x23, 0x2B, 0x60, 0xAB, 0x75, 0xAB, 0x77, + 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x91, 0xF8, 0xBD, 0x21, 0x8F, 0xE7, + 0x1C, 0x4B, 0x9A, 0x68, 0x62, 0xB1, 0x00, 0x21, 0x92, 0xF8, 0x62, 0x30, + 0x1B, 0xB9, 0x92, 0xF8, 0x64, 0x30, 0x03, 0xB1, 0x01, 0x31, 0x12, 0x68, + 0x00, 0x2A, 0xF5, 0xD1, 0x00, 0x29, 0xC8, 0xD1, 0x15, 0x4B, 0x16, 0x49, + 0x00, 0x22, 0x5A, 0x70, 0x0B, 0x68, 0x15, 0x4A, 0x43, 0xF0, 0x00, 0x43, + 0x0B, 0x60, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x43, 0xF4, 0xBB, 0x63, + 0x43, 0xF0, 0x04, 0x03, 0x13, 0x60, 0xB6, 0xE7, 0x64, 0xBA, 0x17, 0x00, + 0x94, 0x40, 0x04, 0x40, 0x10, 0x00, 0x32, 0x40, 0x14, 0x00, 0x32, 0x40, + 0x20, 0x00, 0x32, 0x40, 0x24, 0x00, 0x32, 0x40, 0x00, 0x10, 0x50, 0x40, + 0x40, 0x4B, 0x4C, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x48, 0x30, 0x34, 0x40, + 0x18, 0x88, 0x17, 0x00, 0xE8, 0xBB, 0x15, 0x00, 0x00, 0x88, 0x17, 0x00, + 0x4C, 0x36, 0x17, 0x00, 0x34, 0x04, 0x32, 0x40, 0x20, 0x04, 0x32, 0x40, + 0x2D, 0xE9, 0xF0, 0x4F, 0x8B, 0x4B, 0x8C, 0x4E, 0xD3, 0xF8, 0x00, 0x90, + 0x8B, 0x4A, 0x99, 0xF8, 0x3D, 0x50, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, + 0x05, 0x64, 0x89, 0xB0, 0x07, 0x46, 0x88, 0x46, 0x4F, 0xF4, 0x80, 0x70, + 0x86, 0x49, 0x94, 0xF8, 0x6C, 0xA0, 0xFA, 0xF7, 0xAB, 0xFA, 0x94, 0xF8, + 0xC0, 0x34, 0x00, 0x2B, 0x40, 0xF0, 0x82, 0x80, 0xD4, 0xF8, 0x90, 0x31, + 0x98, 0x78, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, + 0xE5, 0xF7, 0xB2, 0xFE, 0x04, 0x46, 0x00, 0x28, 0x7C, 0xD0, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x05, 0x65, 0x28, 0x46, 0x21, 0x46, 0xF7, 0xF7, + 0xA5, 0xFF, 0x78, 0x4B, 0xA2, 0x6C, 0x78, 0x49, 0x4F, 0xF4, 0x1E, 0x70, + 0x00, 0xFB, 0x0A, 0x3A, 0x53, 0x46, 0xB1, 0xF8, 0xFC, 0x61, 0x53, 0xF8, + 0x26, 0x0F, 0xD0, 0x66, 0x6F, 0xF0, 0x4F, 0x00, 0x82, 0xF8, 0x68, 0x00, + 0x98, 0x88, 0xA2, 0xF8, 0x70, 0x00, 0xE8, 0x6D, 0xC2, 0xF8, 0x72, 0x00, + 0x01, 0x36, 0xB5, 0xF8, 0x60, 0x00, 0xA2, 0xF8, 0x76, 0x00, 0x4F, 0xF0, + 0x00, 0x0B, 0x18, 0x68, 0x9B, 0x88, 0xA2, 0xF8, 0x7C, 0x30, 0xB6, 0xB2, + 0x90, 0x67, 0x82, 0xF8, 0x69, 0xB0, 0x82, 0xF8, 0x6A, 0xB0, 0x82, 0xF8, + 0x6B, 0xB0, 0x65, 0x4B, 0xA1, 0xF8, 0xFC, 0x61, 0x30, 0x01, 0x95, 0xF8, + 0x63, 0x10, 0xA2, 0xF8, 0x7E, 0x00, 0x21, 0x77, 0x95, 0xF8, 0x6C, 0x10, + 0x1B, 0x68, 0x61, 0x77, 0x84, 0xF8, 0x33, 0xB0, 0x84, 0xF8, 0x35, 0xB0, + 0x1B, 0x78, 0x99, 0xF8, 0x3B, 0x10, 0x9B, 0x07, 0x02, 0xF1, 0x68, 0x05, + 0x38, 0xD4, 0x01, 0x29, 0x44, 0xD0, 0x18, 0x26, 0xCD, 0xF8, 0x00, 0x80, + 0x3A, 0x46, 0xA8, 0x19, 0x00, 0x23, 0xFB, 0xF7, 0xFF, 0xFB, 0x30, 0x44, + 0xE1, 0x6C, 0x94, 0xF8, 0x35, 0x30, 0x4A, 0x6A, 0xA4, 0x65, 0x18, 0x44, + 0x01, 0x3A, 0x02, 0x44, 0x03, 0x1D, 0x50, 0x48, 0x60, 0x65, 0xC1, 0xE9, + 0x0A, 0x23, 0x20, 0x46, 0x05, 0x21, 0xE5, 0xF7, 0x59, 0xFE, 0x4D, 0x4B, + 0x1B, 0x68, 0x06, 0x21, 0xDA, 0x68, 0x41, 0xF6, 0x08, 0x00, 0xF8, 0xF7, + 0xD1, 0xF9, 0x05, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0x69, 0xFD, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE5, 0xF7, + 0x35, 0xFE, 0x04, 0x46, 0x00, 0x28, 0x82, 0xD1, 0x01, 0x20, 0xFF, 0xF7, + 0x67, 0xFE, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x29, 0x01, 0xD1, + 0x03, 0x2F, 0x17, 0xD0, 0xCD, 0xF8, 0x00, 0x80, 0x3A, 0x46, 0x05, 0xF1, + 0x18, 0x00, 0x00, 0x23, 0xFB, 0xF7, 0xC4, 0xFB, 0x18, 0x30, 0xC3, 0xE7, + 0x03, 0x2F, 0xB8, 0xD1, 0x29, 0x46, 0x20, 0x46, 0x18, 0x22, 0x05, 0xF0, + 0xB1, 0xFD, 0x94, 0xF8, 0x33, 0x00, 0x99, 0xF8, 0x3B, 0x10, 0x00, 0xF1, + 0x18, 0x06, 0xAD, 0xE7, 0xDA, 0xF8, 0xB4, 0x30, 0x29, 0x46, 0x18, 0x22, + 0x20, 0x46, 0x1E, 0x68, 0x05, 0xF0, 0xA2, 0xFD, 0x94, 0xF8, 0x33, 0x00, + 0x99, 0xF8, 0x3B, 0x10, 0xCD, 0xF8, 0x00, 0x80, 0x00, 0xF1, 0x18, 0x08, + 0x05, 0xEB, 0x08, 0x09, 0x5B, 0x46, 0x3A, 0x46, 0x48, 0x46, 0xFB, 0xF7, + 0x9D, 0xFB, 0x05, 0x46, 0x3A, 0x46, 0x29, 0x46, 0x4F, 0xF0, 0xFF, 0x33, + 0x48, 0x46, 0xDB, 0xF7, 0x67, 0xFD, 0x96, 0xF8, 0x60, 0x30, 0x21, 0x8F, + 0x62, 0x8F, 0xAD, 0xF8, 0x10, 0x10, 0x8D, 0xF8, 0x12, 0x20, 0x06, 0xF1, + 0x64, 0x01, 0x93, 0xB1, 0x03, 0x2B, 0x1A, 0xD0, 0x03, 0x20, 0xDB, 0xF7, + 0x8F, 0xFD, 0x29, 0x1D, 0x02, 0x46, 0x89, 0xB2, 0x48, 0x46, 0x03, 0x91, + 0xF7, 0xF7, 0x20, 0xFF, 0x48, 0x46, 0x03, 0x99, 0xF8, 0xF7, 0x16, 0xF9, + 0x05, 0xEB, 0x08, 0x00, 0x78, 0xE7, 0x05, 0x22, 0x0D, 0xF1, 0x13, 0x00, + 0x0C, 0xF0, 0x88, 0xFE, 0x04, 0xA8, 0x08, 0x21, 0xF8, 0xF7, 0xDE, 0xF8, + 0xE4, 0xE7, 0x0D, 0x22, 0x0D, 0xF1, 0x13, 0x00, 0x0C, 0xF0, 0x7E, 0xFE, + 0x04, 0xA8, 0x10, 0x21, 0xF8, 0xF7, 0xD4, 0xF8, 0xDA, 0xE7, 0x00, 0xBF, + 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x9C, 0xBC, 0x15, 0x00, + 0xCC, 0xB5, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x34, 0x36, 0x17, 0x00, 0x89, 0x95, 0x14, 0x00, 0xC8, 0x35, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x77, 0x4F, 0x78, 0x4E, 0xD7, 0xF8, 0x00, 0x80, + 0x77, 0x4A, 0x98, 0xF8, 0x3D, 0x50, 0x77, 0x49, 0x4F, 0xF4, 0xA4, 0x64, + 0x04, 0xFB, 0x05, 0x64, 0x87, 0xB0, 0x4F, 0xF4, 0x80, 0x70, 0x94, 0xF8, + 0x6C, 0xA0, 0xFA, 0xF7, 0x81, 0xF9, 0x94, 0xF8, 0xC0, 0x34, 0x00, 0x2B, + 0x40, 0xF0, 0xAA, 0x80, 0xD4, 0xF8, 0x90, 0x31, 0x98, 0x78, 0x00, 0x38, + 0x18, 0xBF, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE5, 0xF7, 0x88, 0xFD, + 0x04, 0x46, 0x00, 0x28, 0x00, 0xF0, 0xA5, 0x80, 0x4F, 0xF4, 0xA4, 0x6B, + 0x0B, 0xFB, 0x05, 0xFB, 0x06, 0xEB, 0x0B, 0x00, 0x21, 0x46, 0xD7, 0xF8, + 0x04, 0x90, 0xF7, 0xF7, 0x77, 0xFE, 0xBA, 0x7D, 0xA3, 0x6C, 0x01, 0x2A, + 0x03, 0xF1, 0x68, 0x0C, 0x00, 0xF0, 0x99, 0x80, 0xBA, 0x7F, 0x00, 0x2A, + 0x00, 0xF0, 0xA7, 0x80, 0x20, 0x22, 0x00, 0x21, 0x83, 0xF8, 0x68, 0x20, + 0x5B, 0x4A, 0x83, 0xF8, 0x69, 0x10, 0x5B, 0x49, 0x5B, 0x4F, 0x4F, 0xF4, + 0x1E, 0x70, 0x00, 0xFB, 0x0A, 0x10, 0xB7, 0xF8, 0xFC, 0xE1, 0x50, 0xF8, + 0x26, 0xAF, 0xC3, 0xF8, 0x6C, 0xA0, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, + 0x05, 0x65, 0xB0, 0xF8, 0x04, 0xA0, 0xA3, 0xF8, 0x70, 0xA0, 0x0B, 0xF1, + 0xEC, 0x01, 0x0E, 0xF1, 0x01, 0x0E, 0xD0, 0xF8, 0x00, 0xA0, 0xB0, 0xF8, + 0x04, 0xB0, 0xE8, 0x6D, 0xC3, 0xF8, 0x72, 0x00, 0x1F, 0xFA, 0x8E, 0xFE, + 0x31, 0x44, 0x00, 0x26, 0xB5, 0xF8, 0x60, 0x00, 0xC3, 0xF8, 0x78, 0xA0, + 0x83, 0xF8, 0x6A, 0x60, 0x83, 0xF8, 0x6B, 0x60, 0x4F, 0xEA, 0x0E, 0x1A, + 0x46, 0x4E, 0xA3, 0xF8, 0x76, 0x00, 0xA3, 0xF8, 0x7C, 0xB0, 0x0C, 0xF1, + 0x18, 0x00, 0xA7, 0xF8, 0xFC, 0xE1, 0x0D, 0xF1, 0x12, 0x0C, 0xA3, 0xF8, + 0x7E, 0xA0, 0x05, 0xAF, 0x95, 0xF8, 0x63, 0x30, 0xCD, 0xF8, 0x08, 0x80, + 0xD6, 0xF8, 0x58, 0x61, 0xCD, 0xE9, 0x00, 0x7C, 0xB0, 0x47, 0x95, 0xF8, + 0x63, 0x30, 0x23, 0x77, 0x95, 0xF8, 0x6C, 0x30, 0xE1, 0x6C, 0x63, 0x77, + 0x4B, 0x6A, 0xBD, 0xF8, 0x12, 0x20, 0x37, 0x4D, 0xA4, 0x65, 0x17, 0x33, + 0x03, 0x44, 0xB2, 0xF5, 0x48, 0x7F, 0x00, 0xF1, 0x1C, 0x00, 0x65, 0x65, + 0xC1, 0xE9, 0x0A, 0x30, 0x3B, 0xD8, 0x05, 0x98, 0x6A, 0xB1, 0x4A, 0x44, + 0x13, 0x38, 0x13, 0x32, 0xA0, 0xEB, 0x09, 0x00, 0x09, 0xF1, 0x13, 0x03, + 0xC1, 0x5C, 0x03, 0xF8, 0x01, 0x1F, 0x93, 0x42, 0xFA, 0xD1, 0xBD, 0xF8, + 0x12, 0x20, 0xA9, 0xF8, 0x0E, 0x20, 0x20, 0x46, 0x05, 0x21, 0xE5, 0xF7, + 0x07, 0xFD, 0x27, 0x4B, 0x1B, 0x68, 0x06, 0x21, 0x9A, 0x68, 0x41, 0xF6, + 0x08, 0x00, 0xF8, 0xF7, 0x7F, 0xF8, 0x07, 0x21, 0x06, 0x20, 0xF8, 0xF7, + 0x17, 0xFC, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x20, 0x4F, 0xF4, + 0xC0, 0x71, 0xE5, 0xF7, 0xE3, 0xFC, 0x04, 0x46, 0x00, 0x28, 0x7F, 0xF4, + 0x5B, 0xAF, 0x01, 0x20, 0xFF, 0xF7, 0x14, 0xFD, 0x07, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x20, 0x22, 0x00, 0x21, 0x83, 0xF8, 0x68, 0x20, 0x83, 0xF8, + 0x69, 0x10, 0x16, 0x4A, 0x69, 0xE7, 0x16, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x08, 0xDB, 0x00, 0x23, 0xA9, 0xF8, 0x0E, 0x30, + 0xCB, 0xE7, 0x83, 0xF8, 0x68, 0x20, 0x83, 0xF8, 0x69, 0x20, 0x5A, 0xE7, + 0x0F, 0x49, 0x10, 0x48, 0x4F, 0xF4, 0x82, 0x62, 0xFA, 0xF7, 0xE8, 0xFA, + 0xEF, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0xAC, 0xBC, 0x15, 0x00, 0xCC, 0xB5, 0x15, 0x00, 0x84, 0xBA, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x89, 0x95, 0x14, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x7C, 0xBA, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x38, 0xB5, 0x0B, 0x4D, 0x04, 0x46, 0x04, 0x23, 0x00, 0x21, 0x06, 0x22, + 0x1E, 0x20, 0x2D, 0x68, 0xF8, 0xF7, 0xC6, 0xF9, 0x01, 0x22, 0x04, 0x80, + 0x82, 0x70, 0x95, 0xF8, 0x3D, 0x20, 0xC2, 0x70, 0xF8, 0xF7, 0xEE, 0xF9, + 0xBD, 0xE8, 0x38, 0x40, 0x08, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0xB2, 0xBB, + 0x64, 0xBA, 0x17, 0x00, 0x70, 0xB5, 0x00, 0xF1, 0x0C, 0x06, 0x06, 0x21, + 0x04, 0x46, 0x41, 0xF6, 0x08, 0x00, 0xF8, 0xF7, 0xBB, 0xF8, 0xB5, 0x88, + 0x19, 0x49, 0x2A, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xFA, 0xF7, 0x5E, 0xF8, + 0x45, 0xB9, 0xA3, 0x89, 0x13, 0xB1, 0x01, 0x2B, 0x09, 0xD0, 0x70, 0xBD, + 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0xBE, 0xBE, 0x28, 0x46, 0xBD, 0xE8, + 0x70, 0x40, 0xFF, 0xF7, 0x9D, 0xBC, 0x73, 0x88, 0x04, 0x2B, 0xF3, 0xD0, + 0x02, 0x2B, 0x11, 0xD0, 0x0D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x04, 0xDB, 0xBD, 0xE8, 0x70, 0x40, 0x01, 0x20, 0xFF, 0xF7, + 0x8D, 0xBC, 0x09, 0x49, 0x09, 0x48, 0x4F, 0xF4, 0x8C, 0x62, 0xFA, 0xF7, + 0x7B, 0xFA, 0xF3, 0xE7, 0x04, 0xF1, 0x14, 0x01, 0x03, 0x20, 0xBD, 0xE8, + 0x70, 0x40, 0xFF, 0xF7, 0x6F, 0xBD, 0x00, 0xBF, 0x00, 0xBC, 0x15, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x69, 0x4B, 0xD3, 0xE9, 0x00, 0x2A, 0x05, 0x46, + 0x83, 0xB0, 0x06, 0x21, 0x00, 0x24, 0x41, 0xF6, 0x08, 0x00, 0x92, 0xF8, + 0x3D, 0x80, 0x8D, 0xF8, 0x06, 0x40, 0xF8, 0xF7, 0x6D, 0xF8, 0x29, 0x88, + 0xEE, 0x89, 0x4F, 0xF4, 0xA4, 0x67, 0x05, 0x29, 0x05, 0xF1, 0x0C, 0x09, + 0x07, 0xFB, 0x08, 0xF7, 0x34, 0xD9, 0xBA, 0xF8, 0x0E, 0x30, 0x06, 0x39, + 0x89, 0xB2, 0xCA, 0x18, 0x05, 0xF1, 0x12, 0x0B, 0xB2, 0xF5, 0x48, 0x7F, + 0x5C, 0x46, 0x09, 0xDD, 0x58, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, + 0x00, 0x2A, 0xC0, 0xF2, 0x81, 0x80, 0xC3, 0xF5, 0x48, 0x71, 0x89, 0xB2, + 0x0A, 0xF1, 0x14, 0x00, 0x18, 0x44, 0x8B, 0x44, 0x39, 0xB1, 0xA4, 0xF1, + 0x12, 0x03, 0x14, 0xF8, 0x01, 0x2B, 0x5B, 0x1B, 0x5C, 0x45, 0x1A, 0x54, + 0xF7, 0xD1, 0xAA, 0xF8, 0x10, 0x10, 0x32, 0x46, 0x4C, 0x49, 0x4F, 0xF4, + 0x80, 0x70, 0xF9, 0xF7, 0xE3, 0xFF, 0x9E, 0xB1, 0x4A, 0x4B, 0x93, 0xF8, + 0x04, 0x31, 0x2B, 0xBB, 0x30, 0x46, 0xFF, 0xF7, 0x29, 0xFC, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x44, 0x49, 0xAA, 0xF8, 0x10, 0x40, 0x32, 0x46, + 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, 0xD0, 0xFF, 0x00, 0x2E, 0xEB, 0xD1, + 0xB9, 0xF8, 0x04, 0x00, 0x40, 0x4C, 0xC0, 0xF3, 0x0D, 0x00, 0xFF, 0xF7, + 0x3F, 0xFF, 0x3D, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x63, 0xB3, 0x4F, 0xF4, + 0xA4, 0x65, 0x05, 0xFB, 0x08, 0x45, 0xD5, 0xF8, 0x90, 0x31, 0x9A, 0x78, + 0x01, 0x2A, 0x48, 0xD0, 0x38, 0x4E, 0x28, 0xE0, 0x12, 0x2E, 0xD7, 0xD1, + 0x35, 0x4B, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x08, 0x38, 0xD8, 0xF8, + 0x90, 0x21, 0x92, 0x78, 0x01, 0x2A, 0xCD, 0xD1, 0x98, 0xF8, 0xC0, 0x44, + 0x00, 0x2C, 0xC9, 0xD1, 0x30, 0x4D, 0x07, 0xF5, 0xB2, 0x77, 0x1F, 0x44, + 0xA8, 0x46, 0x40, 0x46, 0x06, 0x22, 0x39, 0x46, 0x0C, 0xF0, 0x3E, 0xFC, + 0x08, 0xF1, 0x14, 0x08, 0x00, 0x28, 0x3F, 0xD0, 0x01, 0x34, 0x05, 0x2C, + 0xF3, 0xD1, 0xB7, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x43, + 0x24, 0x4E, 0xD3, 0xF8, 0x90, 0x31, 0x1B, 0x79, 0xD6, 0xF8, 0x40, 0x53, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x08, 0x48, 0xE0, 0x19, 0x98, 0xF8, + 0xC6, 0x21, 0x9B, 0x1A, 0x8D, 0xF8, 0x07, 0x30, 0x0D, 0xF1, 0x06, 0x02, + 0x0D, 0xF1, 0x07, 0x01, 0xA8, 0x47, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x1A, 0x49, 0x1B, 0x48, 0x40, 0xF2, 0x8B, 0x42, 0xFA, 0xF7, 0xB6, 0xF9, + 0xBA, 0xF8, 0x0E, 0x30, 0x75, 0xE7, 0xD5, 0xF8, 0xCC, 0x21, 0x12, 0xF0, + 0x0C, 0x0F, 0xB1, 0xD0, 0x95, 0xF8, 0xC0, 0x24, 0x00, 0x2A, 0xAD, 0xD1, + 0x13, 0x4B, 0x14, 0x49, 0x1B, 0x69, 0x0E, 0x4E, 0x07, 0xF1, 0x9C, 0x00, + 0x19, 0x44, 0x20, 0x44, 0xD6, 0xF8, 0xE0, 0x31, 0x98, 0x47, 0xD5, 0xF8, + 0x90, 0x31, 0xCA, 0xE7, 0x04, 0xEB, 0x84, 0x04, 0x05, 0xEB, 0x84, 0x04, + 0x01, 0x23, 0xE3, 0x71, 0x74, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x14, 0xBC, 0x15, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xCC, 0x35, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x80, 0x96, 0x98, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x04, 0x46, 0x06, 0x20, + 0x25, 0x7A, 0xF8, 0xF7, 0x1F, 0xFB, 0x09, 0x28, 0x0A, 0xD0, 0x06, 0x20, + 0xF8, 0xF7, 0x1A, 0xFB, 0x48, 0xB1, 0x2D, 0x4A, 0x23, 0x7A, 0x12, 0x68, + 0x92, 0xF8, 0x3D, 0x20, 0x9A, 0x42, 0x0D, 0xD0, 0x02, 0x20, 0xBD, 0xE8, + 0xF0, 0x87, 0x29, 0x4F, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x05, 0xF5, + 0x7E, 0x19, 0x96, 0xF8, 0x64, 0x00, 0x60, 0xB9, 0xBD, 0xE8, 0xF0, 0x87, + 0x24, 0x49, 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, 0x15, 0xFF, 0x01, 0x20, + 0xFF, 0xF7, 0x60, 0xFB, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xA4, 0x89, + 0x1F, 0x49, 0x22, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0xF9, 0xF7, 0x08, 0xFF, + 0x1D, 0x4B, 0x93, 0xF8, 0x04, 0x31, 0x0B, 0xB1, 0x08, 0x2C, 0x0A, 0xD0, + 0x09, 0x21, 0x06, 0x20, 0xF8, 0xF7, 0x40, 0xFA, 0x78, 0x19, 0x21, 0x46, + 0xFF, 0xF7, 0xBC, 0xF9, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0xD6, 0xF8, + 0x90, 0x31, 0x9B, 0x78, 0x01, 0x2B, 0xEF, 0xD1, 0x96, 0xF8, 0xC0, 0x64, + 0x00, 0x2E, 0xEB, 0xD1, 0xDF, 0xF8, 0x44, 0x90, 0x05, 0xF5, 0xB2, 0x7A, + 0xC8, 0x46, 0xBA, 0x44, 0x40, 0x46, 0x06, 0x22, 0x51, 0x46, 0x0C, 0xF0, + 0x83, 0xFB, 0x08, 0xF1, 0x14, 0x08, 0x18, 0xB1, 0x01, 0x36, 0x05, 0x2E, + 0xF4, 0xD1, 0xD9, 0xE7, 0x06, 0xEB, 0x86, 0x06, 0x09, 0xEB, 0x86, 0x06, + 0x01, 0x23, 0xB3, 0x71, 0xD2, 0xE7, 0x00, 0xBF, 0x64, 0xBA, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x2C, 0xBC, 0x15, 0x00, 0x50, 0xBC, 0x15, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0xCC, 0x35, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x46, 0x4B, 0x04, 0x7A, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, + 0x94, 0xF8, 0x64, 0x30, 0xC3, 0xB1, 0x94, 0xF8, 0x62, 0x30, 0xAB, 0xB9, + 0xC3, 0x79, 0xFF, 0x2B, 0x05, 0x46, 0x11, 0xD0, 0x94, 0xF8, 0x6C, 0x20, + 0x9A, 0x42, 0x0D, 0xD1, 0x3D, 0x4E, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x02, 0x66, 0x96, 0xF8, 0x30, 0x30, 0x02, 0x2B, 0x04, 0xD1, 0x90, 0xF8, + 0x0D, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x01, 0xD0, 0xBD, 0xE8, 0xF8, 0x83, + 0x80, 0x79, 0xB5, 0xF8, 0x0E, 0x80, 0x00, 0x38, 0x18, 0xBF, 0x01, 0x20, + 0x4F, 0xF4, 0xC0, 0x71, 0xE5, 0xF7, 0xAE, 0xFA, 0x07, 0x46, 0x00, 0x28, + 0xF0, 0xD0, 0x01, 0x46, 0x20, 0x46, 0xF7, 0xF7, 0xA5, 0xFB, 0x32, 0x46, + 0xDF, 0xF8, 0xB4, 0xC0, 0xBB, 0x6C, 0x52, 0xF8, 0x26, 0x0F, 0xBC, 0xF8, + 0xFC, 0x11, 0xD8, 0x66, 0x6F, 0xF0, 0x2F, 0x00, 0x83, 0xF8, 0x68, 0x00, + 0x01, 0x31, 0x90, 0x88, 0xA3, 0xF8, 0x70, 0x00, 0x89, 0xB2, 0xE0, 0x6D, + 0xB4, 0xF8, 0x60, 0x40, 0xA3, 0xF8, 0x76, 0x40, 0xC3, 0xF8, 0x72, 0x00, + 0x14, 0x68, 0x90, 0x88, 0x83, 0xF8, 0x69, 0x90, 0x0A, 0x01, 0x83, 0xF8, + 0x6A, 0x90, 0x83, 0xF8, 0x6B, 0x90, 0x9C, 0x67, 0xA3, 0xF8, 0x7C, 0x00, + 0xAC, 0xF8, 0xFC, 0x11, 0xA3, 0xF8, 0x7E, 0x20, 0x2A, 0x7A, 0x3A, 0x77, + 0xEA, 0x79, 0x7A, 0x77, 0x03, 0xF1, 0x68, 0x04, 0x87, 0xF8, 0x33, 0x90, + 0x87, 0xF8, 0x35, 0x90, 0x08, 0x22, 0xD0, 0x21, 0x38, 0x46, 0x06, 0xF0, + 0xA5, 0xFB, 0x21, 0x46, 0x38, 0x46, 0x18, 0x22, 0x05, 0xF0, 0x04, 0xFA, + 0x97, 0xF8, 0x33, 0x30, 0x18, 0x33, 0x1A, 0x19, 0x08, 0x21, 0x19, 0x55, + 0x01, 0x21, 0x51, 0x70, 0xF9, 0x6C, 0xA2, 0xF8, 0x02, 0x80, 0x97, 0xF8, + 0x35, 0x00, 0x4A, 0x6A, 0x04, 0x30, 0x03, 0x44, 0x01, 0x3A, 0x1A, 0x44, + 0x04, 0x33, 0xC1, 0xE9, 0x0A, 0x23, 0x38, 0x46, 0x05, 0x21, 0xBD, 0xE8, + 0xF8, 0x43, 0xE5, 0xF7, 0x5F, 0xBA, 0x00, 0xBF, 0x18, 0x88, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, 0x31, 0x4B, 0x32, 0x4A, + 0x1B, 0x68, 0x2D, 0xE9, 0xF0, 0x41, 0xB3, 0xF9, 0x00, 0x30, 0xD2, 0xF8, + 0x00, 0x80, 0x2F, 0x4F, 0x98, 0xF8, 0x3D, 0x50, 0x00, 0x2B, 0x06, 0x46, + 0x45, 0xDB, 0x2C, 0x23, 0x06, 0x22, 0x0C, 0x21, 0x41, 0xF6, 0x06, 0x00, + 0xF7, 0xF7, 0x64, 0xFF, 0x4F, 0xF4, 0xA4, 0x61, 0x03, 0x46, 0x98, 0xF8, + 0x3D, 0x20, 0x03, 0xF8, 0x01, 0x2B, 0x01, 0xFB, 0x05, 0x71, 0x01, 0xF5, + 0xB5, 0x72, 0x04, 0x46, 0x01, 0xF5, 0xC5, 0x71, 0xD2, 0xF8, 0x00, 0xE0, + 0xD2, 0xF8, 0x04, 0xC0, 0x90, 0x68, 0xD2, 0xF8, 0x0C, 0x80, 0xC3, 0xF8, + 0x0C, 0x80, 0x10, 0x32, 0x8A, 0x42, 0xC3, 0xF8, 0x00, 0xE0, 0xC3, 0xF8, + 0x04, 0xC0, 0x98, 0x60, 0x03, 0xF1, 0x10, 0x03, 0xEC, 0xD1, 0x4F, 0xF4, + 0xA4, 0x61, 0x12, 0x78, 0x1A, 0x70, 0x01, 0xFB, 0x05, 0x75, 0x36, 0xBA, + 0xD5, 0xF8, 0x64, 0x01, 0xB5, 0xF8, 0x68, 0x31, 0xE3, 0x84, 0x06, 0x21, + 0xC4, 0xF8, 0x22, 0x00, 0xA6, 0x62, 0x08, 0x46, 0xF8, 0xF7, 0x2A, 0xF9, + 0x41, 0xF6, 0x08, 0x00, 0x0E, 0x4A, 0x06, 0x21, 0xF7, 0xF7, 0x88, 0xFD, + 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xF7, 0xF7, 0x55, 0xBF, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x05, 0x73, 0xD3, 0xF8, 0xCC, 0x31, 0x00, 0x2B, + 0xB1, 0xDB, 0x07, 0x49, 0x07, 0x48, 0x4F, 0xF4, 0xAB, 0x62, 0xF9, 0xF7, + 0xF9, 0xFF, 0xAA, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x64, 0xBA, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0xC0, 0x27, 0x09, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x74, 0xBC, 0x15, 0x00, 0x10, 0xB5, 0x06, 0x21, 0x04, 0x46, 0x41, 0xF6, + 0x08, 0x00, 0xF7, 0xF7, 0x11, 0xFE, 0x1C, 0xB9, 0xBD, 0xE8, 0x10, 0x40, + 0xFF, 0xF7, 0x20, 0xBC, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, + 0xFF, 0xB9, 0x00, 0xBF, 0x08, 0xB5, 0x06, 0x20, 0xF8, 0xF7, 0x96, 0xF9, + 0xA0, 0xF1, 0x06, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x08, 0xBD, + 0x00, 0xB5, 0x83, 0xB0, 0x0D, 0xF1, 0x07, 0x02, 0xF8, 0xF7, 0xDE, 0xFD, + 0xB8, 0xB1, 0x9D, 0xF8, 0x07, 0x30, 0x1D, 0x2B, 0x16, 0xD9, 0x02, 0x89, + 0x92, 0x00, 0x0A, 0x3B, 0x92, 0xB2, 0x9B, 0x1A, 0xDB, 0xB2, 0x15, 0x2B, + 0x0E, 0xD9, 0x0A, 0x30, 0x02, 0x3B, 0x81, 0x5A, 0x89, 0x00, 0x89, 0xB2, + 0x5B, 0x1A, 0xDB, 0xB2, 0x13, 0x2B, 0x10, 0x44, 0x04, 0xD9, 0x04, 0x30, + 0x40, 0x5A, 0x03, 0xB0, 0x5D, 0xF8, 0x04, 0xFB, 0x00, 0x20, 0x03, 0xB0, + 0x5D, 0xF8, 0x04, 0xFB, 0x2D, 0xE9, 0xF0, 0x4F, 0x4F, 0xF4, 0xA4, 0x68, + 0x95, 0xB0, 0xDF, 0xF8, 0x50, 0x93, 0xDF, 0xF8, 0x50, 0xB3, 0x08, 0xFB, + 0x00, 0xF3, 0x07, 0x93, 0x4B, 0x44, 0x05, 0x46, 0xD3, 0xF8, 0x90, 0x01, + 0x93, 0xF8, 0x6C, 0x40, 0x80, 0x78, 0x02, 0x93, 0x17, 0x46, 0x4F, 0xF4, + 0x1E, 0x78, 0x00, 0x38, 0x08, 0xFB, 0x04, 0xB6, 0x0A, 0x46, 0x3B, 0x78, + 0xD6, 0xF8, 0xB0, 0xA0, 0x04, 0x94, 0x18, 0xBF, 0x01, 0x20, 0x4F, 0xF4, + 0xC0, 0x71, 0x05, 0x92, 0x06, 0x93, 0xE5, 0xF7, 0x6F, 0xF9, 0x00, 0x28, + 0x00, 0xF0, 0xED, 0x80, 0x02, 0x9B, 0x04, 0x46, 0x21, 0x46, 0x18, 0x46, + 0xF7, 0xF7, 0x64, 0xFA, 0xB9, 0x4B, 0x96, 0xF8, 0x23, 0x00, 0xD3, 0xF8, + 0x34, 0x21, 0xA3, 0x6C, 0x02, 0x93, 0x00, 0x21, 0x90, 0x47, 0x02, 0x9B, + 0x03, 0x90, 0x03, 0xF1, 0x68, 0x02, 0x08, 0x92, 0x00, 0x28, 0x40, 0xF0, + 0xD9, 0x80, 0xB2, 0x49, 0xB1, 0xF8, 0xFC, 0x21, 0x01, 0x32, 0x92, 0xB2, + 0x08, 0x20, 0x83, 0xF8, 0x68, 0x00, 0x10, 0x01, 0x01, 0x26, 0x80, 0xB2, + 0x83, 0xF8, 0x69, 0x60, 0x09, 0x90, 0xA1, 0xF8, 0xFC, 0x21, 0x04, 0x99, + 0x02, 0x93, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x01, 0xB2, 0x4F, 0xF4, + 0xA4, 0x66, 0x52, 0xF8, 0x26, 0x1F, 0xD9, 0x66, 0x06, 0xFB, 0x05, 0x96, + 0x91, 0x88, 0xF0, 0x6D, 0xB6, 0xF8, 0x60, 0x20, 0xA3, 0xF8, 0x76, 0x20, + 0x4F, 0xF0, 0x00, 0x08, 0xA3, 0xF8, 0x70, 0x10, 0xC3, 0xF8, 0x72, 0x00, + 0x05, 0x99, 0x83, 0xF8, 0x6A, 0x80, 0x83, 0xF8, 0x6B, 0x80, 0x06, 0x22, + 0x03, 0xF1, 0x78, 0x00, 0x0C, 0xF0, 0xDC, 0xF9, 0x09, 0x9B, 0x96, 0xF8, + 0x63, 0x20, 0x19, 0x01, 0x02, 0x9B, 0xA3, 0xF8, 0x7E, 0x10, 0x22, 0x77, + 0x96, 0xF8, 0x6C, 0x20, 0x62, 0x77, 0x03, 0x9A, 0x00, 0x2A, 0x00, 0xF0, + 0xE1, 0x80, 0x1A, 0x22, 0x83, 0xF8, 0x80, 0x80, 0x83, 0xF8, 0x81, 0x80, + 0x02, 0x92, 0x7A, 0x78, 0x00, 0x21, 0x12, 0xF0, 0x40, 0x02, 0xCD, 0xE9, + 0x0A, 0x11, 0x40, 0xF0, 0xB5, 0x80, 0x84, 0xF8, 0x33, 0x20, 0x84, 0xF8, + 0x35, 0x20, 0x89, 0x4B, 0x02, 0x9A, 0x93, 0xE8, 0x03, 0x00, 0x08, 0x9B, + 0x13, 0x44, 0x1E, 0x46, 0x0D, 0xF1, 0x30, 0x0C, 0x07, 0x9B, 0x8C, 0xE8, + 0x03, 0x00, 0x08, 0x22, 0x61, 0x46, 0x30, 0x46, 0x03, 0xF1, 0x5C, 0x08, + 0x0C, 0xF0, 0xA8, 0xF9, 0x7F, 0x4B, 0xD3, 0xE9, 0x02, 0x01, 0x08, 0x22, + 0x0E, 0xAB, 0x83, 0xE8, 0x03, 0x00, 0xC8, 0x44, 0x19, 0x46, 0xB0, 0x18, + 0x0C, 0xF0, 0x9C, 0xF9, 0x06, 0x22, 0x41, 0x46, 0x06, 0xF1, 0x10, 0x00, + 0x0C, 0xF0, 0x96, 0xF9, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x05, 0x95, + 0x9D, 0xF9, 0x18, 0x20, 0xD5, 0xF8, 0xC4, 0x34, 0xB3, 0x75, 0xD5, 0xF8, + 0xC4, 0x34, 0x1B, 0x0A, 0xF3, 0x75, 0xB5, 0xF8, 0xC6, 0x34, 0x33, 0x76, + 0x95, 0xF8, 0xC7, 0x34, 0x73, 0x76, 0x7B, 0x78, 0x58, 0x06, 0x67, 0xD4, + 0x00, 0x2A, 0xB8, 0xBF, 0x07, 0xF1, 0x2A, 0x01, 0x4F, 0xF0, 0x0A, 0x02, + 0xA8, 0xBF, 0x07, 0xF1, 0x28, 0x01, 0x06, 0xF1, 0x1A, 0x00, 0x0C, 0xF0, + 0x73, 0xF9, 0xE2, 0x6C, 0x94, 0xF8, 0x35, 0x50, 0x53, 0x6A, 0x02, 0x99, + 0xA4, 0x65, 0x24, 0x35, 0x0D, 0x44, 0x01, 0x3B, 0x2B, 0x44, 0x00, 0x20, + 0x29, 0x1D, 0x60, 0x65, 0xC2, 0xE9, 0x0A, 0x31, 0x03, 0x9B, 0x6B, 0xB1, + 0x04, 0x9B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0xB3, 0x93, 0xF8, + 0x23, 0x30, 0x02, 0xFB, 0x03, 0xBB, 0x9B, 0xF8, 0xA5, 0x91, 0xB9, 0xF1, + 0x21, 0x0F, 0x6A, 0xD1, 0x7B, 0x78, 0x59, 0x06, 0x2F, 0xD5, 0x9A, 0xF8, + 0x60, 0x30, 0x01, 0x2B, 0x00, 0xF0, 0x53, 0x81, 0x52, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x9B, 0x07, 0x09, 0xD5, 0x9A, 0xF8, 0x60, 0x30, 0x01, 0x2B, + 0x0A, 0xF1, 0x64, 0x09, 0x40, 0xF2, 0x36, 0x81, 0x03, 0x2B, 0x00, 0xF0, + 0x34, 0x81, 0x20, 0x46, 0x05, 0x21, 0xE5, 0xF7, 0x8F, 0xF8, 0x15, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x96, 0xF8, 0x23, 0x20, 0x08, 0xFB, 0x02, 0xB8, + 0x6F, 0xF0, 0x77, 0x02, 0xB8, 0xF8, 0x34, 0x11, 0x83, 0xF8, 0x68, 0x20, + 0x4A, 0x1C, 0x01, 0x20, 0xC2, 0xF3, 0x0B, 0x02, 0x83, 0xF8, 0x69, 0x00, + 0x09, 0x91, 0x03, 0x90, 0xA8, 0xF8, 0x34, 0x21, 0x21, 0xE7, 0x3D, 0x4B, + 0x1B, 0x68, 0x1B, 0x78, 0x9A, 0x07, 0xDE, 0xD5, 0xBA, 0xF1, 0x00, 0x0F, + 0xDB, 0xD0, 0xD0, 0xE7, 0x00, 0x2A, 0xB8, 0xBF, 0x07, 0xF1, 0x32, 0x01, + 0x4F, 0xF0, 0x0A, 0x02, 0xA8, 0xBF, 0x07, 0xF1, 0x30, 0x01, 0x06, 0xF1, + 0x1A, 0x00, 0x0C, 0xF0, 0x0B, 0xF9, 0x96, 0xE7, 0xE2, 0x6C, 0xB3, 0xF8, + 0x68, 0x10, 0x90, 0x6B, 0x41, 0xF4, 0x80, 0x41, 0xC2, 0x68, 0xA3, 0xF8, + 0x68, 0x10, 0x22, 0xF4, 0x7F, 0x73, 0x9A, 0xF8, 0x62, 0x20, 0x08, 0x99, + 0x23, 0xF0, 0x03, 0x03, 0x13, 0x43, 0xC3, 0x60, 0x9A, 0xF8, 0x60, 0x30, + 0x02, 0x98, 0x0E, 0x18, 0x04, 0x2B, 0x00, 0xF2, 0xD3, 0x81, 0xDF, 0xE8, + 0x03, 0xF0, 0x1E, 0x51, 0xBA, 0x1E, 0x85, 0x00, 0x18, 0x22, 0x02, 0x92, + 0x21, 0xE7, 0x4F, 0xEA, 0x09, 0x20, 0x40, 0xF0, 0x08, 0x00, 0xF7, 0xF7, + 0xFD, 0xFF, 0x01, 0x28, 0x8C, 0xD1, 0x1E, 0x4B, 0x09, 0x99, 0x09, 0xEB, + 0x49, 0x09, 0x03, 0xEB, 0xC9, 0x09, 0x02, 0x22, 0xD9, 0xF8, 0x14, 0x00, + 0x02, 0x90, 0x05, 0xF0, 0x1D, 0xFB, 0x02, 0x98, 0x05, 0xF0, 0xF8, 0xFA, + 0x7C, 0xE7, 0x04, 0x23, 0x84, 0xF8, 0x33, 0x30, 0x84, 0xF8, 0x35, 0x30, + 0xDA, 0xE9, 0x12, 0x32, 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, 0x18, 0x46, + 0x11, 0x46, 0x53, 0x46, 0xE3, 0xE9, 0x12, 0x01, 0x06, 0x22, 0x19, 0x46, + 0x0A, 0xA8, 0x0C, 0xF0, 0xBD, 0xF8, 0x02, 0x99, 0x08, 0x9A, 0xBD, 0xF8, + 0x28, 0x30, 0x53, 0x52, 0xBD, 0xF8, 0x2A, 0x30, 0x9A, 0xF8, 0x61, 0x20, + 0x43, 0xEA, 0x82, 0x33, 0x73, 0x80, 0x94, 0xF8, 0x33, 0x30, 0xCB, 0x18, + 0x02, 0x93, 0xF0, 0xE6, 0x88, 0x1A, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x8C, 0xBC, 0x15, 0x00, 0x34, 0x36, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x08, 0x22, 0x0C, 0x23, + 0x84, 0xF8, 0x33, 0x20, 0x84, 0xF8, 0x35, 0x30, 0xDA, 0xE9, 0x12, 0x32, + 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, 0x18, 0x46, 0x11, 0x46, 0x53, 0x46, + 0xE3, 0xE9, 0x12, 0x01, 0x06, 0x22, 0x19, 0x46, 0x0A, 0xA8, 0x0C, 0xF0, + 0x89, 0xF8, 0xBD, 0xF8, 0x28, 0x20, 0x02, 0x99, 0x42, 0xF4, 0x00, 0x53, + 0x03, 0xF4, 0xFE, 0x43, 0x43, 0xEA, 0x12, 0x23, 0x08, 0x9A, 0x53, 0x52, + 0x9D, 0xF8, 0x28, 0x30, 0x9A, 0xF8, 0x61, 0x20, 0x43, 0xEA, 0x82, 0x33, + 0x43, 0xF4, 0x00, 0x53, 0x73, 0x80, 0xBD, 0xF8, 0x2A, 0x30, 0xB3, 0x80, + 0xBD, 0xF8, 0x2C, 0x30, 0xF3, 0x80, 0x94, 0xF8, 0x33, 0x30, 0xCB, 0x18, + 0x02, 0x93, 0xAE, 0xE6, 0x10, 0x23, 0x12, 0x21, 0x84, 0xF8, 0x33, 0x10, + 0x84, 0xF8, 0x35, 0x30, 0x0F, 0x2A, 0xDA, 0xF8, 0x48, 0x30, 0xDA, 0xF8, + 0x4C, 0x20, 0x40, 0xF2, 0x00, 0x81, 0x02, 0x33, 0x42, 0xF1, 0x00, 0x02, + 0x18, 0x46, 0x11, 0x46, 0x53, 0x46, 0xE3, 0xE9, 0x12, 0x01, 0x08, 0x22, + 0x19, 0x46, 0x0A, 0xA8, 0x0C, 0xF0, 0x50, 0xF8, 0x9A, 0xF8, 0x61, 0x30, + 0x33, 0x80, 0xBD, 0xF8, 0x28, 0x30, 0x73, 0x80, 0xBD, 0xF8, 0x2A, 0x30, + 0xB3, 0x80, 0xBD, 0xF8, 0x2C, 0x30, 0xF3, 0x80, 0xBD, 0xF8, 0x2E, 0x30, + 0x33, 0x81, 0x45, 0xF6, 0x36, 0x43, 0x73, 0x81, 0xB3, 0x81, 0xF3, 0x81, + 0x33, 0x82, 0x02, 0x9A, 0x94, 0xF8, 0x33, 0x30, 0x1A, 0x44, 0x02, 0x92, + 0x79, 0xE6, 0x08, 0x23, 0x84, 0xF8, 0x33, 0x30, 0x84, 0xF8, 0x35, 0x30, + 0xDA, 0xE9, 0x12, 0x32, 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, 0x18, 0x46, + 0x11, 0x46, 0x53, 0x46, 0xE3, 0xE9, 0x12, 0x01, 0x06, 0x22, 0x19, 0x46, + 0x0A, 0xA8, 0x0C, 0xF0, 0x21, 0xF8, 0x08, 0x9A, 0xBD, 0xF8, 0x28, 0x30, + 0x10, 0x46, 0x02, 0x9A, 0x83, 0x52, 0x9A, 0xF8, 0x61, 0x30, 0x9B, 0x03, + 0x43, 0xF4, 0x00, 0x53, 0x73, 0x80, 0xBD, 0xF8, 0x2A, 0x30, 0xB3, 0x80, + 0xBD, 0xF8, 0x2C, 0x30, 0xF3, 0x80, 0x94, 0xF8, 0x33, 0x30, 0xD3, 0x18, + 0x02, 0x93, 0x4E, 0xE6, 0x31, 0xD0, 0x03, 0x9B, 0x0D, 0xF1, 0x40, 0x0B, + 0x00, 0x2B, 0x5D, 0xD1, 0x94, 0xF8, 0x33, 0x70, 0x94, 0xF8, 0x35, 0x30, + 0x1F, 0x44, 0xC7, 0xF5, 0x7F, 0x47, 0xEC, 0x37, 0x2F, 0x44, 0xBF, 0xB2, + 0x5C, 0xE0, 0x05, 0x99, 0x06, 0x22, 0x04, 0xF1, 0x0C, 0x00, 0x0B, 0xF0, + 0xF3, 0xFF, 0x06, 0x22, 0x41, 0x46, 0x04, 0xF1, 0x12, 0x00, 0x0B, 0xF0, + 0xED, 0xFF, 0x03, 0x9B, 0x00, 0x22, 0xE2, 0x76, 0x00, 0x2B, 0x78, 0xD0, + 0x94, 0xF8, 0x35, 0x10, 0x94, 0xF8, 0x33, 0x30, 0x69, 0x48, 0x0B, 0x44, + 0xEB, 0x1A, 0xD0, 0xF8, 0x7C, 0x73, 0x00, 0x92, 0x1A, 0x3B, 0x32, 0x46, + 0x0A, 0xF1, 0x50, 0x01, 0x20, 0x46, 0xB8, 0x47, 0x8A, 0xE6, 0x03, 0x9B, + 0x94, 0xF8, 0x33, 0x70, 0x00, 0x2B, 0x00, 0xF0, 0x82, 0x80, 0x94, 0xF8, + 0x35, 0x30, 0x1F, 0x44, 0xC7, 0xF5, 0x7F, 0x47, 0xF2, 0x37, 0x2F, 0x44, + 0xBF, 0xB2, 0x39, 0x1F, 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, 0x30, 0x46, + 0xDA, 0xF7, 0x7E, 0xFE, 0xDA, 0xF8, 0x48, 0xC0, 0xDA, 0xF8, 0x4C, 0x00, + 0x57, 0x49, 0x4F, 0xEA, 0x1C, 0x43, 0x43, 0xEA, 0x00, 0x43, 0x0D, 0xF1, + 0x40, 0x0B, 0x0B, 0x60, 0x42, 0x46, 0x5B, 0x46, 0x48, 0x46, 0xA1, 0xF8, + 0x04, 0xC0, 0xF7, 0xF7, 0x45, 0xF8, 0x58, 0x46, 0x10, 0x21, 0xF7, 0xF7, + 0x05, 0xFA, 0x9A, 0xF8, 0x60, 0x30, 0x00, 0x2B, 0x40, 0xF0, 0x85, 0x80, + 0x94, 0xF8, 0x33, 0x70, 0x94, 0xF8, 0x35, 0x30, 0x1F, 0x44, 0xC7, 0xF5, + 0x7F, 0x47, 0xEA, 0x37, 0x2F, 0x44, 0xBF, 0xB2, 0x4F, 0xF0, 0xFF, 0x33, + 0x03, 0x22, 0x39, 0x1F, 0x30, 0x46, 0xDA, 0xF7, 0x51, 0xFE, 0x9A, 0xF8, + 0x60, 0x30, 0xBA, 0xF8, 0x48, 0x10, 0xBA, 0xF8, 0x4A, 0x20, 0xAD, 0xF8, + 0x40, 0x10, 0x8D, 0xF8, 0x42, 0x20, 0x49, 0x46, 0x7B, 0xBB, 0x05, 0x22, + 0x0D, 0xF1, 0x43, 0x00, 0x0B, 0xF0, 0x84, 0xFF, 0x58, 0x46, 0x08, 0x21, + 0xF7, 0xF7, 0xDA, 0xF9, 0x03, 0x20, 0xDA, 0xF7, 0x71, 0xFE, 0x39, 0x46, + 0x02, 0x46, 0x30, 0x46, 0xF7, 0xF7, 0x04, 0xF8, 0x39, 0x46, 0x30, 0x46, + 0xF7, 0xF7, 0xFA, 0xF9, 0x20, 0x46, 0x05, 0x21, 0xE4, 0xF7, 0xC6, 0xFE, + 0x35, 0xE6, 0x94, 0xF8, 0x35, 0x20, 0x94, 0xF8, 0x33, 0x30, 0x2D, 0x49, + 0x13, 0x44, 0xD1, 0xF8, 0x7C, 0x73, 0x03, 0x99, 0x00, 0x91, 0xEB, 0x1A, + 0x18, 0x3B, 0x32, 0x46, 0x0A, 0xF1, 0x50, 0x01, 0x20, 0x46, 0xB8, 0x47, + 0x10, 0xE6, 0x01, 0x33, 0x42, 0xF1, 0x00, 0x02, 0xFE, 0xE6, 0x0D, 0x22, + 0x0D, 0xF1, 0x43, 0x00, 0x0B, 0xF0, 0x54, 0xFF, 0x58, 0x46, 0x10, 0x21, + 0xF7, 0xF7, 0xAA, 0xF9, 0xCE, 0xE7, 0x94, 0xF8, 0x35, 0x30, 0x1F, 0x44, + 0xC7, 0xF5, 0x7F, 0x47, 0xF4, 0x37, 0x2F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, + 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, 0x30, 0x46, 0xDA, 0xF7, 0xFC, 0xFD, + 0xDA, 0xF8, 0x48, 0xC0, 0xDA, 0xF8, 0x4C, 0x00, 0x16, 0x49, 0x4F, 0xEA, + 0x1C, 0x43, 0x43, 0xEA, 0x00, 0x43, 0x0D, 0xF1, 0x40, 0x0B, 0x0B, 0x60, + 0x42, 0x46, 0x5B, 0x46, 0x48, 0x46, 0xA1, 0xF8, 0x04, 0xC0, 0xF6, 0xF7, + 0xC3, 0xFF, 0x58, 0x46, 0x10, 0x21, 0xF7, 0xF7, 0x83, 0xF9, 0x9A, 0xF8, + 0x60, 0x30, 0x00, 0x2B, 0x3F, 0xF4, 0x20, 0xAF, 0x03, 0x2B, 0xA1, 0xD1, + 0x1C, 0xE7, 0x03, 0x2B, 0x9E, 0xD1, 0x77, 0xE7, 0x08, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xDC, 0xAE, 0x06, 0x49, + 0x06, 0x48, 0x40, 0xF2, 0x2C, 0x62, 0xF9, 0xF7, 0x6B, 0xFC, 0xD4, 0xE6, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0x34, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0xDB, 0x0A, 0x4B, + 0x00, 0x20, 0x5B, 0x68, 0x98, 0x47, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, + 0xF7, 0xF7, 0x10, 0xFE, 0x02, 0x28, 0xF4, 0xD0, 0x05, 0x49, 0x06, 0x48, + 0x40, 0xF2, 0x31, 0x12, 0xF9, 0xF7, 0x48, 0xFC, 0xED, 0xE7, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xC0, 0xBC, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x0C, 0x46, 0x36, 0x49, + 0x60, 0x7C, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x00, 0x10, 0x86, 0xB0, + 0x90, 0xF8, 0x62, 0x10, 0x00, 0x25, 0x02, 0x29, 0x98, 0x46, 0x8D, 0xF8, + 0x0B, 0x50, 0x10, 0xD0, 0x04, 0x25, 0x41, 0x46, 0x02, 0x23, 0x41, 0xF6, + 0x05, 0x40, 0xF7, 0xF7, 0x43, 0xFB, 0x05, 0x70, 0x9D, 0xF8, 0x0B, 0x20, + 0x42, 0x70, 0xF7, 0xF7, 0x6D, 0xFB, 0x00, 0x20, 0x06, 0xB0, 0xBD, 0xE8, + 0xF0, 0x81, 0x90, 0xF8, 0x64, 0x10, 0x09, 0xB1, 0x08, 0x25, 0xEA, 0xE7, + 0x07, 0x20, 0x01, 0x92, 0xF7, 0xF7, 0xD2, 0xFD, 0x01, 0x9A, 0x00, 0x28, + 0xF6, 0xD1, 0xA7, 0x78, 0x20, 0x7C, 0x21, 0x88, 0x1F, 0x4E, 0x8D, 0xF8, + 0x0C, 0x70, 0x8D, 0xF8, 0x0D, 0x00, 0xA7, 0x68, 0xE0, 0x68, 0xAD, 0xF8, + 0x0E, 0x10, 0x21, 0x79, 0x75, 0x6C, 0xAD, 0xF8, 0x12, 0x00, 0x8D, 0xF8, + 0x14, 0x10, 0xAD, 0xF8, 0x10, 0x70, 0x0D, 0xF1, 0x0B, 0x01, 0x03, 0xA8, + 0xA8, 0x47, 0x01, 0x9A, 0x05, 0x46, 0x10, 0xBB, 0xF6, 0x6C, 0x60, 0x7C, + 0x9D, 0xF8, 0x0B, 0x10, 0xB0, 0x47, 0xEF, 0xF3, 0x10, 0x81, 0x11, 0xF0, + 0x01, 0x0F, 0x01, 0x9A, 0x03, 0xD1, 0x72, 0xB6, 0x0E, 0x49, 0x01, 0x20, + 0x08, 0x60, 0x0E, 0x48, 0x0E, 0x4F, 0x04, 0x68, 0x79, 0x68, 0x66, 0x1C, + 0x41, 0xF0, 0x10, 0x01, 0x06, 0x60, 0x79, 0x60, 0x00, 0x2E, 0xAE, 0xD0, + 0x07, 0x49, 0x04, 0x60, 0x09, 0x68, 0x00, 0x2C, 0xA9, 0xD1, 0x00, 0x29, + 0xA7, 0xD0, 0x62, 0xB6, 0xA5, 0xE7, 0x01, 0x25, 0xA3, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x43, + 0x0C, 0x46, 0x85, 0xB0, 0x90, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x4A, 0x69, + 0x4D, 0x49, 0x4E, 0x4F, 0x99, 0x46, 0xF9, 0xF7, 0x8D, 0xF9, 0x94, 0xF8, + 0x33, 0x60, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x06, 0x75, 0x95, 0xF8, + 0x62, 0x10, 0x02, 0x29, 0x11, 0xD0, 0x04, 0x25, 0x42, 0x46, 0x49, 0x46, + 0x04, 0x23, 0x41, 0xF6, 0x01, 0x40, 0xF7, 0xF7, 0xC3, 0xFA, 0x05, 0x70, + 0x94, 0xF8, 0x33, 0x20, 0x42, 0x70, 0xF7, 0xF7, 0xED, 0xFA, 0x00, 0x20, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x07, 0x20, 0xF7, 0xF7, 0x58, 0xFD, + 0xC0, 0xB9, 0x95, 0xF8, 0x64, 0x30, 0xBB, 0xB9, 0x3B, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x13, 0xDB, 0x23, 0x7F, 0x39, 0x49, + 0x00, 0x93, 0xD4, 0xE9, 0x05, 0x23, 0x0C, 0x60, 0x0D, 0xF1, 0x0D, 0x00, + 0x04, 0xF1, 0x0E, 0x01, 0xFD, 0xF7, 0xAC, 0xF9, 0x05, 0x46, 0x70, 0xB1, + 0x01, 0x25, 0xD1, 0xE7, 0x08, 0x25, 0xCF, 0xE7, 0x09, 0x25, 0xCD, 0xE7, + 0x2B, 0x6C, 0x00, 0x2B, 0xE8, 0xD0, 0x2F, 0x49, 0x2F, 0x48, 0x56, 0x22, + 0xF9, 0xF7, 0x72, 0xFB, 0xE2, 0xE7, 0xE1, 0x89, 0x20, 0x7C, 0xDF, 0xF8, + 0xB4, 0x80, 0xFB, 0xF7, 0x9B, 0xFF, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x06, 0xF2, 0x07, 0xEB, 0x02, 0x09, 0xC9, 0xF8, 0x90, 0x01, 0x94, 0xF9, + 0x12, 0x30, 0x03, 0x71, 0xD4, 0xE9, 0x05, 0x31, 0xA9, 0xF8, 0x96, 0x11, + 0xA9, 0xF8, 0x94, 0x31, 0x23, 0x7F, 0x89, 0xF8, 0xC5, 0x31, 0x04, 0x2B, + 0x08, 0xBF, 0x03, 0x23, 0x89, 0xF8, 0xC4, 0x31, 0x89, 0xF8, 0xC6, 0x51, + 0xD8, 0xF8, 0x4C, 0x30, 0x94, 0xF8, 0x33, 0x00, 0x9D, 0xF8, 0x0D, 0x10, + 0x15, 0x46, 0x98, 0x47, 0x23, 0x7C, 0xA3, 0xB1, 0x00, 0xF0, 0x8C, 0xFA, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x06, 0x73, 0x78, 0x19, 0xD3, 0xF8, + 0x90, 0x31, 0xD8, 0xF8, 0x40, 0x43, 0x1B, 0x79, 0x8D, 0xF8, 0x0E, 0x30, + 0x0D, 0xF1, 0x0F, 0x02, 0x0D, 0xF1, 0x0E, 0x01, 0xA0, 0x47, 0x01, 0x20, + 0x92, 0xE7, 0x05, 0xF5, 0xCE, 0x70, 0x38, 0x44, 0x01, 0x21, 0xFC, 0xF7, + 0x45, 0xF9, 0x10, 0xF0, 0x0F, 0x00, 0x1A, 0xBF, 0xB0, 0xFA, 0x80, 0xF0, + 0xC0, 0xF1, 0x1F, 0x03, 0x01, 0x23, 0x89, 0xF8, 0xC1, 0x31, 0xD9, 0xE7, + 0xEC, 0xBC, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x94, 0xBA, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xA0, 0xA2, 0x15, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x4F, 0x88, 0x0D, 0x48, 0x0C, 0x46, + 0x16, 0x46, 0x04, 0x31, 0x3A, 0x46, 0x1D, 0x46, 0x0B, 0xF0, 0xAE, 0xFD, + 0xDF, 0xF8, 0x28, 0xC0, 0x32, 0x46, 0x29, 0x46, 0x02, 0x23, 0x41, 0xF6, + 0x09, 0x40, 0xAC, 0xF8, 0x00, 0x70, 0xF7, 0xF7, 0x1B, 0xFA, 0x01, 0x22, + 0x02, 0x70, 0x22, 0x78, 0x42, 0x70, 0xF7, 0xF7, 0x45, 0xFA, 0x00, 0x20, + 0xF8, 0xBD, 0x00, 0xBF, 0x14, 0x2A, 0x17, 0x00, 0x14, 0x2C, 0x17, 0x00, + 0x08, 0xB5, 0x15, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x0F, 0xDB, 0x07, 0x20, 0xF7, 0xF7, 0xA6, 0xFC, 0x01, 0x28, 0x06, 0xD0, + 0x07, 0x20, 0xF7, 0xF7, 0xA1, 0xFC, 0x03, 0x28, 0x01, 0xD0, 0x00, 0x20, + 0x08, 0xBD, 0x00, 0xF0, 0x01, 0xFA, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, + 0xF7, 0xF7, 0x96, 0xFC, 0x01, 0x28, 0xEA, 0xD0, 0x07, 0x20, 0xF7, 0xF7, + 0x91, 0xFC, 0x00, 0x28, 0xE5, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x8C, 0xFC, + 0x03, 0x28, 0xE0, 0xD0, 0x03, 0x49, 0x04, 0x48, 0xC2, 0x22, 0xF9, 0xF7, + 0xC5, 0xFA, 0xDA, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0xFC, 0xBC, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, 0xDB, 0xF9, 0x00, 0x20, + 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x70, 0xFC, 0x01, 0x28, 0xF6, 0xD0, + 0x05, 0x49, 0x06, 0x48, 0xE6, 0x22, 0xF9, 0xF7, 0xA9, 0xFA, 0x00, 0xF0, + 0xCD, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x84, 0xBD, 0x15, 0x00, 0x08, 0xB5, 0x0C, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, + 0xBB, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x50, 0xFC, + 0x03, 0x28, 0xF6, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x4B, 0x12, + 0xF9, 0xF7, 0x88, 0xFA, 0x00, 0xF0, 0xAC, 0xF9, 0x00, 0x20, 0x08, 0xBD, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xB4, 0xBD, 0x15, 0x00, + 0x08, 0xB5, 0x11, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x06, 0xDB, 0x07, 0x20, 0xF7, 0xF7, 0x34, 0xFC, 0x03, 0x28, 0x12, 0xD0, + 0x00, 0x20, 0x08, 0xBD, 0x07, 0x20, 0xF7, 0xF7, 0x2D, 0xFC, 0x03, 0x28, + 0xF3, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x28, 0xFC, 0x00, 0x28, 0xEE, 0xD0, + 0x06, 0x49, 0x07, 0x48, 0x40, 0xF2, 0x65, 0x12, 0xF9, 0xF7, 0x60, 0xFA, + 0xE7, 0xE7, 0x00, 0xF0, 0x83, 0xF9, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xDC, 0xBD, 0x15, 0x00, + 0xF8, 0xB5, 0x0C, 0x46, 0x4F, 0xF4, 0x80, 0x70, 0x13, 0x49, 0x16, 0x46, + 0x1D, 0x46, 0xF9, 0xF7, 0x21, 0xF8, 0x24, 0x78, 0x11, 0x4B, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, 0x94, 0xF8, 0x62, 0x70, 0x02, 0x2F, + 0x02, 0xD1, 0x94, 0xF8, 0x64, 0x30, 0x3B, 0xB9, 0x32, 0x46, 0x29, 0x46, + 0x41, 0xF6, 0x03, 0x40, 0xF7, 0xF7, 0xBE, 0xF9, 0x00, 0x20, 0xF8, 0xBD, + 0x07, 0x20, 0xF7, 0xF7, 0xF3, 0xFB, 0x05, 0x46, 0x28, 0xB9, 0x06, 0x4B, + 0x20, 0x46, 0x9B, 0x68, 0x98, 0x47, 0x28, 0x46, 0xF8, 0xBD, 0x38, 0x46, + 0xF8, 0xBD, 0x00, 0xBF, 0x30, 0xBE, 0x15, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0xB5, 0x0C, 0x46, 0x21, 0x49, 0x20, 0x78, + 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x00, 0x10, 0x82, 0xB0, 0x90, 0xF8, + 0x62, 0x50, 0x02, 0x2D, 0x19, 0x46, 0x06, 0xD0, 0x41, 0xF6, 0x07, 0x40, + 0xF7, 0xF7, 0x96, 0xF9, 0x00, 0x20, 0x02, 0xB0, 0x70, 0xBD, 0x90, 0xF8, + 0x64, 0x30, 0x00, 0x2B, 0xF4, 0xD1, 0x07, 0x20, 0xCD, 0xE9, 0x00, 0x21, + 0xF7, 0xF7, 0xC4, 0xFB, 0xDD, 0xE9, 0x00, 0x21, 0x00, 0x28, 0xEB, 0xD1, + 0x12, 0x4B, 0x20, 0x78, 0x5B, 0x6D, 0x98, 0x47, 0xEF, 0xF3, 0x10, 0x83, + 0x13, 0xF0, 0x01, 0x0F, 0xDD, 0xE9, 0x00, 0x21, 0x03, 0xD1, 0x72, 0xB6, + 0x0D, 0x4B, 0x01, 0x20, 0x18, 0x60, 0x0D, 0x48, 0x0D, 0x4E, 0x04, 0x68, + 0x73, 0x68, 0x65, 0x1C, 0x23, 0xF0, 0x10, 0x03, 0x05, 0x60, 0x73, 0x60, + 0x00, 0x2D, 0xD1, 0xD0, 0x06, 0x4B, 0x04, 0x60, 0x1B, 0x68, 0x00, 0x2C, + 0xCC, 0xD1, 0x00, 0x2B, 0xCA, 0xD0, 0x62, 0xB6, 0xC8, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, 0x10, 0xB5, 0x22, 0x4C, + 0x23, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0x07, 0x20, + 0xF7, 0xF7, 0x88, 0xFB, 0x01, 0x28, 0x13, 0xD1, 0x23, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x03, 0xDB, 0x00, 0xF0, 0x9B, 0xF9, 0x00, 0x20, + 0x10, 0xBD, 0x19, 0x4B, 0x5B, 0x68, 0x00, 0x2B, 0xF7, 0xD0, 0x18, 0x49, + 0x18, 0x48, 0x40, 0xF2, 0x0B, 0x12, 0xF9, 0xF7, 0xB3, 0xF9, 0xF0, 0xE7, + 0x07, 0x20, 0xF7, 0xF7, 0x6F, 0xFB, 0x03, 0x28, 0xED, 0xD1, 0x07, 0x22, + 0x0C, 0x21, 0x41, 0xF6, 0x03, 0x40, 0xF7, 0xF7, 0x2D, 0xF9, 0x00, 0x21, + 0x07, 0x20, 0xF7, 0xF7, 0xBB, 0xFA, 0xE2, 0xE7, 0x07, 0x20, 0xF7, 0xF7, + 0x5F, 0xFB, 0x01, 0x28, 0xD1, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x5A, 0xFB, + 0x00, 0x28, 0xCC, 0xD0, 0x07, 0x20, 0xF7, 0xF7, 0x55, 0xFB, 0x03, 0x28, + 0xC7, 0xD0, 0x05, 0x49, 0x06, 0x48, 0x40, 0xF2, 0x03, 0x12, 0xF9, 0xF7, + 0x8D, 0xF9, 0xC0, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x94, 0xBA, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x3C, 0xBE, 0x15, 0x00, 0xFC, 0xBC, 0x15, 0x00, + 0x08, 0xB5, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x04, 0xDB, 0xBD, 0xE8, 0x08, 0x40, 0x09, 0x48, 0xF7, 0xF7, 0x1E, 0xBD, + 0x08, 0x4B, 0x5B, 0x68, 0x00, 0x2B, 0xF6, 0xD0, 0x07, 0x48, 0x08, 0x49, + 0x2D, 0x22, 0xF9, 0xF7, 0x6D, 0xF9, 0xBD, 0xE8, 0x08, 0x40, 0x02, 0x48, + 0xF7, 0xF7, 0x10, 0xBD, 0x38, 0x36, 0x17, 0x00, 0x98, 0xBA, 0x17, 0x00, + 0x94, 0xBA, 0x17, 0x00, 0x3C, 0xBE, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x10, 0xB5, 0x06, 0x4C, 0x00, 0x21, 0x20, 0x46, 0x10, 0x22, 0xD4, 0xF7, + 0x6F, 0xFC, 0x00, 0x21, 0x21, 0x73, 0x07, 0x20, 0xBD, 0xE8, 0x10, 0x40, + 0xF7, 0xF7, 0x68, 0xBA, 0x94, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0xDF, 0xF8, 0xD8, 0x80, 0x05, 0x46, 0x04, 0x23, 0x07, 0x22, 0x0C, 0x21, + 0x41, 0xF6, 0x01, 0x40, 0xD8, 0xF8, 0x00, 0x60, 0xF7, 0xF7, 0x5E, 0xF8, + 0x04, 0x46, 0x95, 0xB1, 0x96, 0xF8, 0x33, 0x30, 0x63, 0x70, 0x20, 0x46, + 0x25, 0x70, 0xF7, 0xF7, 0x85, 0xF8, 0xA6, 0xF1, 0x0C, 0x00, 0xF7, 0xF7, + 0xCD, 0xF8, 0x00, 0x21, 0xC8, 0xF8, 0x00, 0x10, 0x07, 0x20, 0xBD, 0xE8, + 0xF0, 0x47, 0xF7, 0xF7, 0x43, 0xBA, 0x04, 0x23, 0x29, 0x46, 0x07, 0x22, + 0x1E, 0x20, 0x96, 0xF8, 0x33, 0x70, 0xF7, 0xF7, 0x41, 0xF8, 0x21, 0x4A, + 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, 0x07, 0x29, 0x4F, 0xF0, 0x01, 0x0A, + 0x80, 0xF8, 0x02, 0xA0, 0x99, 0xF8, 0x63, 0x20, 0xC2, 0x70, 0xF7, 0xF7, + 0x63, 0xF8, 0xF1, 0x6A, 0x32, 0x8E, 0xD9, 0xF8, 0x40, 0x30, 0xC9, 0xF8, + 0xB0, 0x14, 0xA9, 0xF8, 0xE0, 0x20, 0x89, 0xF8, 0xDE, 0x50, 0x1B, 0x7E, + 0xA3, 0x70, 0x96, 0xF8, 0x33, 0x30, 0xDF, 0xF8, 0x54, 0xC0, 0x0A, 0x33, + 0xE3, 0x70, 0x96, 0xE8, 0x0F, 0x00, 0x4F, 0xF4, 0x1E, 0x7E, 0x0A, 0x37, + 0x0E, 0xFB, 0x07, 0xC7, 0x07, 0xF1, 0xB8, 0x0C, 0xAC, 0xE8, 0x07, 0x00, + 0x02, 0x22, 0x87, 0xF8, 0x30, 0x20, 0x8C, 0xF8, 0x00, 0x30, 0x38, 0x46, + 0xFB, 0xF7, 0xA0, 0xFF, 0x97, 0xF8, 0x56, 0x31, 0xA7, 0xF8, 0x26, 0xA0, + 0x43, 0xF0, 0x10, 0x03, 0x87, 0xF8, 0x56, 0x31, 0x96, 0xF8, 0x33, 0x30, + 0x03, 0xF1, 0x0A, 0x02, 0x87, 0xF8, 0x23, 0x20, 0xA4, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x94, 0xBA, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x10, 0xB5, 0x0C, 0x48, 0xF7, 0xF7, 0xC6, 0xFC, 0x0B, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x05, 0xDB, 0x04, 0xF1, + 0x0C, 0x00, 0xBD, 0xE8, 0x10, 0x40, 0xF7, 0xF7, 0x17, 0xB8, 0x00, 0x28, + 0xF7, 0xD1, 0x05, 0x49, 0x05, 0x48, 0xCB, 0x22, 0xF9, 0xF7, 0xC2, 0xF8, + 0xF1, 0xE7, 0x00, 0xBF, 0x98, 0xBA, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xA8, 0xAB, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x4F, + 0x44, 0x4B, 0xDF, 0xF8, 0x1C, 0xB1, 0x1C, 0x68, 0x07, 0x22, 0x08, 0x23, + 0x00, 0x21, 0x18, 0x20, 0x94, 0xF8, 0x33, 0x90, 0xF6, 0xF7, 0xC8, 0xFF, + 0x08, 0x23, 0x07, 0x22, 0x00, 0x21, 0x06, 0x46, 0x16, 0x20, 0xF6, 0xF7, + 0xC1, 0xFF, 0x04, 0x23, 0x07, 0x22, 0x00, 0x21, 0x05, 0x46, 0x14, 0x20, + 0xF6, 0xF7, 0xBA, 0xFF, 0x02, 0x23, 0x07, 0x22, 0x05, 0x21, 0x80, 0x46, + 0x41, 0xF2, 0x17, 0x40, 0xF6, 0xF7, 0xB2, 0xFF, 0x4F, 0xF4, 0xA4, 0x6A, + 0x0A, 0xFB, 0x09, 0xBA, 0x07, 0x46, 0xFF, 0xF7, 0x0B, 0xFF, 0x9A, 0xF8, + 0xC0, 0x34, 0x00, 0x2B, 0x49, 0xD0, 0x2F, 0x4A, 0x13, 0x68, 0x23, 0xF0, + 0x04, 0x03, 0x13, 0x60, 0xDA, 0xF8, 0x04, 0x30, 0x43, 0xF0, 0x20, 0x03, + 0xCA, 0xF8, 0x04, 0x30, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x09, 0xB9, + 0xA6, 0xF1, 0x0C, 0x01, 0xD9, 0xF8, 0x5C, 0x00, 0xB9, 0xF8, 0x60, 0x30, + 0xB3, 0x80, 0x30, 0x60, 0x94, 0xF8, 0x33, 0x30, 0xB3, 0x71, 0x23, 0x48, + 0xF7, 0xF7, 0x18, 0xFC, 0x23, 0x7C, 0x6B, 0x71, 0x01, 0x21, 0x20, 0x46, + 0xFB, 0xF7, 0x80, 0xFE, 0x28, 0x60, 0x94, 0xF8, 0x33, 0x30, 0x2B, 0x71, + 0xA5, 0xF1, 0x0C, 0x01, 0x1B, 0x48, 0xF7, 0xF7, 0x09, 0xFC, 0x23, 0x8D, + 0xA8, 0xF8, 0x00, 0x30, 0x94, 0xF8, 0x33, 0x30, 0x88, 0xF8, 0x02, 0x30, + 0xA8, 0xF1, 0x0C, 0x01, 0x01, 0x25, 0x15, 0x48, 0xF7, 0xF7, 0xFC, 0xFB, + 0x3D, 0x70, 0x94, 0xF8, 0x33, 0x30, 0x12, 0x48, 0x7B, 0x70, 0xA7, 0xF1, + 0x0C, 0x01, 0xF7, 0xF7, 0xF3, 0xFB, 0xFF, 0xF7, 0x6B, 0xFF, 0x29, 0x46, + 0x07, 0x20, 0xBD, 0xE8, 0xF8, 0x4F, 0xF7, 0xF7, 0x57, 0xB9, 0x02, 0x23, + 0x07, 0x22, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF6, 0xF7, 0x56, 0xFF, + 0x01, 0x23, 0x03, 0x70, 0x9A, 0xF8, 0x63, 0x30, 0x43, 0x70, 0x03, 0x4B, + 0x01, 0x46, 0x0C, 0x39, 0x18, 0x1D, 0xF7, 0xF7, 0xD9, 0xFB, 0xAD, 0xE7, + 0x94, 0xBA, 0x17, 0x00, 0x4C, 0x00, 0x32, 0x40, 0x98, 0xBA, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x38, 0xB5, 0x0E, 0x4C, 0x0C, 0x23, 0x07, 0x22, + 0x00, 0x21, 0x3F, 0x20, 0x24, 0x68, 0xF6, 0xF7, 0x39, 0xFF, 0xA1, 0x8C, + 0xE2, 0x8C, 0x25, 0x6A, 0x05, 0x60, 0x81, 0x80, 0xC2, 0x80, 0x94, 0xF8, + 0x32, 0x20, 0x02, 0x72, 0x94, 0xF8, 0x33, 0x20, 0x42, 0x72, 0xF6, 0xF7, + 0x5B, 0xFF, 0xBD, 0xE8, 0x38, 0x40, 0x02, 0x21, 0x07, 0x20, 0xF7, 0xF7, + 0x1F, 0xB9, 0x00, 0xBF, 0x94, 0xBA, 0x17, 0x00, 0xF8, 0xB5, 0x07, 0x22, + 0x04, 0x46, 0x02, 0x23, 0x05, 0x21, 0x41, 0xF2, 0x19, 0x40, 0xF6, 0xF7, + 0x19, 0xFF, 0x02, 0x23, 0x06, 0x46, 0x07, 0x22, 0x05, 0x21, 0x41, 0xF2, + 0x17, 0x40, 0xF6, 0xF7, 0x11, 0xFF, 0x00, 0x27, 0x05, 0x46, 0xFF, 0xF7, + 0x6D, 0xFE, 0x37, 0x70, 0x94, 0xF8, 0x63, 0x30, 0x73, 0x70, 0x1D, 0x48, + 0xA6, 0xF1, 0x0C, 0x01, 0xF7, 0xF7, 0x92, 0xFB, 0x94, 0xF8, 0x64, 0x30, + 0x0B, 0xBB, 0x23, 0x6C, 0x6B, 0xB1, 0x01, 0x23, 0x00, 0x21, 0x07, 0x22, + 0x39, 0x20, 0xF6, 0xF7, 0xF9, 0xFE, 0x01, 0x46, 0x94, 0xF8, 0x63, 0x30, + 0x01, 0xF8, 0x0C, 0x39, 0x12, 0x48, 0xF7, 0xF7, 0x7F, 0xFB, 0x00, 0x23, + 0x2B, 0x70, 0x94, 0xF8, 0x63, 0x30, 0x0F, 0x48, 0x6B, 0x70, 0xA5, 0xF1, + 0x0C, 0x01, 0xF7, 0xF7, 0x75, 0xFB, 0xFF, 0xF7, 0xED, 0xFE, 0xBD, 0xE8, + 0xF8, 0x40, 0x03, 0x21, 0x07, 0x20, 0xF7, 0xF7, 0xD9, 0xB8, 0x39, 0x46, + 0x04, 0x23, 0x07, 0x22, 0x1E, 0x20, 0xF6, 0xF7, 0xD9, 0xFE, 0x87, 0x70, + 0x94, 0xF8, 0x63, 0x30, 0xC3, 0x70, 0xA0, 0xF1, 0x0C, 0x01, 0x02, 0x48, + 0xF7, 0xF7, 0x5E, 0xFB, 0xCD, 0xE7, 0x00, 0xBF, 0x98, 0xBA, 0x17, 0x00, + 0x15, 0x4A, 0x03, 0x7F, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, + 0x93, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x13, 0xD1, 0x43, 0x7F, 0x0D, 0x2B, + 0x10, 0xD8, 0x82, 0x88, 0x2A, 0xB9, 0x82, 0x6C, 0xB2, 0xF8, 0x68, 0x20, + 0xB2, 0xF5, 0x12, 0x7F, 0x08, 0xD0, 0x0C, 0x4A, 0x4F, 0xF4, 0x1E, 0x71, + 0x01, 0xFB, 0x03, 0x22, 0x92, 0xF8, 0x24, 0x30, 0x01, 0x2B, 0x02, 0xD0, + 0x01, 0x23, 0x18, 0x46, 0x70, 0x47, 0x92, 0xF8, 0x32, 0x20, 0x12, 0xF0, + 0x03, 0x02, 0xF8, 0xD1, 0xC1, 0x8B, 0x41, 0xF4, 0x80, 0x51, 0x13, 0x46, + 0xC1, 0x83, 0xF2, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0xC3, 0x8B, 0xDB, 0x04, 0x00, 0xD4, 0x70, 0x47, 0x10, 0xB5, 0x0C, 0x46, + 0xC2, 0x7E, 0x15, 0x49, 0x94, 0xF8, 0x2E, 0x31, 0x8A, 0x5C, 0x13, 0x42, + 0x1A, 0xD0, 0x94, 0xF8, 0x31, 0x20, 0x11, 0x07, 0x1A, 0xD4, 0x42, 0xF0, + 0x08, 0x02, 0x0F, 0x2B, 0x84, 0xF8, 0x31, 0x20, 0x14, 0xD1, 0x05, 0x22, + 0x04, 0x23, 0x00, 0x21, 0x41, 0x20, 0xF6, 0xF7, 0x7F, 0xFE, 0x22, 0x8C, + 0x02, 0x80, 0x94, 0xF8, 0x22, 0x20, 0xC2, 0x70, 0x01, 0x22, 0x82, 0x70, + 0xBD, 0xE8, 0x10, 0x40, 0xF6, 0xF7, 0xA4, 0xBE, 0x94, 0xF8, 0x31, 0x30, + 0x9A, 0x07, 0x00, 0xD5, 0x10, 0xBD, 0x43, 0xF0, 0x02, 0x03, 0x84, 0xF8, + 0x31, 0x30, 0xE4, 0xE7, 0xA4, 0xB2, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x90, 0xF8, 0x62, 0x70, 0x02, 0x2F, 0x91, 0x46, 0x5A, 0xD1, 0x91, 0xF8, + 0x32, 0x20, 0x0E, 0x46, 0x00, 0x2A, 0x55, 0xD0, 0x12, 0xF0, 0x01, 0x08, + 0x91, 0xF8, 0x31, 0x30, 0x04, 0xBF, 0x08, 0x27, 0x4F, 0xF0, 0x04, 0x08, + 0x1F, 0x42, 0x78, 0xD0, 0xD1, 0xF8, 0xFC, 0x41, 0x00, 0x2C, 0x68, 0xD0, + 0xA2, 0xF1, 0x02, 0x02, 0xB2, 0xFA, 0x82, 0xF2, 0x91, 0xF8, 0x2E, 0x11, + 0x3C, 0x4D, 0x52, 0x09, 0x4F, 0xF0, 0x00, 0x0A, 0x04, 0xE0, 0x23, 0x68, + 0xA2, 0x46, 0x00, 0x2B, 0x59, 0xD0, 0x1C, 0x46, 0xE3, 0x7E, 0xEB, 0x5C, + 0x19, 0x42, 0x0C, 0xBF, 0x01, 0x23, 0x00, 0x23, 0x93, 0x42, 0xF2, 0xD0, + 0x51, 0x46, 0x22, 0x46, 0x06, 0xF5, 0xFE, 0x70, 0xF7, 0xF7, 0xC8, 0xFB, + 0x96, 0xF8, 0x32, 0x10, 0x11, 0xF0, 0x08, 0x0F, 0x0C, 0xBF, 0x03, 0x23, + 0x04, 0x23, 0xE3, 0x76, 0xBA, 0xF1, 0x00, 0x0F, 0x52, 0xD0, 0xDA, 0xF8, + 0x00, 0x30, 0x0B, 0xB3, 0xA1, 0xF1, 0x02, 0x01, 0xB1, 0xFA, 0x81, 0xF1, + 0x96, 0xF8, 0x2E, 0x01, 0x49, 0x09, 0x01, 0xE0, 0x1B, 0x68, 0xBB, 0xB1, + 0xDA, 0x7E, 0xAA, 0x5C, 0x10, 0x42, 0x0C, 0xBF, 0x01, 0x22, 0x00, 0x22, + 0x8A, 0x42, 0xF5, 0xD0, 0xA2, 0x6C, 0xB2, 0xF8, 0x68, 0x30, 0x43, 0xF4, + 0x00, 0x53, 0xA2, 0xF8, 0x68, 0x30, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, + 0x00, 0x24, 0xC9, 0xF8, 0x00, 0x40, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, + 0x96, 0xF8, 0x31, 0x10, 0x21, 0xEA, 0x07, 0x07, 0x17, 0xEA, 0x08, 0x01, + 0x86, 0xF8, 0x31, 0x70, 0x07, 0xEA, 0x08, 0x05, 0xE4, 0xD1, 0x04, 0x23, + 0x05, 0x22, 0x41, 0x20, 0xF6, 0xF7, 0xF0, 0xFD, 0x32, 0x8C, 0x02, 0x80, + 0x96, 0xF8, 0x22, 0x20, 0xC2, 0x70, 0x85, 0x70, 0xF6, 0xF7, 0x18, 0xFE, + 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0x0C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x05, 0xDA, 0x0A, 0x49, 0x0A, 0x48, 0x40, 0xF2, + 0x91, 0x12, 0xF8, 0xF7, 0xD3, 0xFE, 0x01, 0x23, 0x00, 0x24, 0xC9, 0xF8, + 0x00, 0x30, 0x20, 0x46, 0xBD, 0xE8, 0xF0, 0x87, 0xD6, 0xF8, 0xFC, 0x31, + 0xAB, 0xE7, 0x00, 0xBF, 0xA4, 0xB2, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x38, 0xB5, 0x90, 0xF8, + 0x62, 0x30, 0x02, 0x2B, 0x14, 0xD1, 0x13, 0x4C, 0x13, 0x4B, 0x4F, 0xF4, + 0x1E, 0x72, 0x02, 0xFB, 0x01, 0x44, 0x21, 0x46, 0xD3, 0xF8, 0x20, 0x33, + 0x00, 0x22, 0x98, 0x47, 0x94, 0xF8, 0x31, 0x10, 0x11, 0xF0, 0x0A, 0x0F, + 0x04, 0xD0, 0x01, 0xF0, 0xF5, 0x05, 0x84, 0xF8, 0x31, 0x50, 0x05, 0xB1, + 0x38, 0xBD, 0x29, 0x46, 0x04, 0x23, 0x05, 0x22, 0x41, 0x20, 0xF6, 0xF7, + 0xA5, 0xFD, 0x94, 0xF8, 0x22, 0x20, 0x21, 0x8C, 0xC2, 0x70, 0x85, 0x70, + 0xBD, 0xE8, 0x38, 0x40, 0x01, 0x80, 0xF6, 0xF7, 0xCB, 0xBD, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x03, 0x6C, 0x2D, 0xE9, + 0xF0, 0x41, 0x04, 0x46, 0x88, 0x46, 0x00, 0x2B, 0x6C, 0xD0, 0x3A, 0x4A, + 0x1B, 0x79, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x53, 0xDB, + 0x94, 0xF8, 0xC0, 0x24, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, + 0x4F, 0xF4, 0xC0, 0x71, 0xE4, 0xF7, 0x4C, 0xF8, 0x05, 0x46, 0x00, 0x28, + 0x56, 0xD0, 0x01, 0x46, 0x20, 0x46, 0xF6, 0xF7, 0x43, 0xF9, 0xAE, 0x6C, + 0x00, 0x27, 0x6F, 0xF0, 0x3F, 0x03, 0x41, 0x46, 0x86, 0xF8, 0x68, 0x30, + 0x86, 0xF8, 0x69, 0x70, 0x86, 0xF8, 0x6A, 0x70, 0x86, 0xF8, 0x6B, 0x70, + 0x06, 0xF1, 0x6C, 0x00, 0x06, 0x22, 0x0B, 0xF0, 0xED, 0xF8, 0x26, 0x4A, + 0xE0, 0x6D, 0xB2, 0xF8, 0xFC, 0x31, 0xB4, 0xF8, 0x60, 0x10, 0xB4, 0xF8, + 0x60, 0xC0, 0xC6, 0xF8, 0x72, 0x00, 0x01, 0x33, 0x9B, 0xB2, 0xE0, 0x6D, + 0xA6, 0xF8, 0x76, 0x10, 0x19, 0x01, 0xB0, 0x67, 0xA6, 0xF8, 0x7C, 0xC0, + 0xA2, 0xF8, 0xFC, 0x31, 0xA6, 0xF8, 0x7E, 0x10, 0xC5, 0xE9, 0x15, 0x74, + 0x94, 0xF8, 0x63, 0x30, 0x2B, 0x77, 0xFF, 0x23, 0x6B, 0x77, 0x06, 0xF1, + 0x80, 0x00, 0x07, 0x21, 0xF9, 0xF7, 0xCE, 0xFD, 0xE9, 0x6C, 0x4B, 0x6A, + 0x17, 0x33, 0x1A, 0x18, 0x00, 0xF1, 0x1C, 0x03, 0xC1, 0xE9, 0x0A, 0x23, + 0x28, 0x46, 0x05, 0x21, 0xBD, 0xE8, 0xF0, 0x41, 0xE4, 0xF7, 0x12, 0xB8, + 0x02, 0x2B, 0xA9, 0xD1, 0x0D, 0x49, 0x0E, 0x48, 0x4F, 0xF4, 0x09, 0x72, + 0xF8, 0xF7, 0x0E, 0xFE, 0x01, 0x20, 0x4F, 0xF4, 0xC0, 0x71, 0xE3, 0xF7, + 0xF5, 0xFF, 0x05, 0x46, 0x00, 0x28, 0xA8, 0xD1, 0xBD, 0xE8, 0xF0, 0x81, + 0x03, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xEF, 0xDA, + 0xE8, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0xF8, 0xB5, 0x14, 0x4A, + 0x14, 0x4D, 0x41, 0xF2, 0x0A, 0x00, 0x41, 0xF2, 0x08, 0x07, 0x00, 0x26, + 0x16, 0x52, 0x0C, 0x46, 0xD3, 0x53, 0x41, 0xF2, 0x0C, 0x06, 0xD1, 0xF8, + 0x64, 0x11, 0xD4, 0xF8, 0x60, 0x01, 0x90, 0x51, 0x0B, 0x2B, 0x14, 0x60, + 0xA9, 0x80, 0x0D, 0xD0, 0x19, 0x46, 0x04, 0x22, 0x02, 0x23, 0x41, 0xF2, + 0x09, 0x00, 0xF6, 0xF7, 0xF5, 0xFC, 0x01, 0x22, 0x42, 0x70, 0x94, 0xF8, + 0x6E, 0x21, 0x02, 0x70, 0xF6, 0xF7, 0x1E, 0xFD, 0x04, 0x4B, 0xD3, 0xF8, + 0xF4, 0x32, 0x98, 0x47, 0x01, 0x20, 0xF8, 0xBD, 0xA8, 0xBA, 0x17, 0x00, + 0xB4, 0xCA, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x1A, 0x46, 0x70, 0xB5, + 0x40, 0x23, 0x14, 0x4C, 0x0D, 0x46, 0x41, 0xF2, 0x06, 0x00, 0x11, 0x46, + 0x04, 0x22, 0xF6, 0xF7, 0xD7, 0xFC, 0xA3, 0x88, 0x06, 0x46, 0x13, 0xB1, + 0x2A, 0x78, 0x93, 0x42, 0x06, 0xD8, 0x00, 0x23, 0x30, 0x46, 0x33, 0x70, + 0xF6, 0xF7, 0xFC, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x04, 0xEB, 0x82, 0x14, + 0x08, 0x34, 0x0F, 0xCC, 0x35, 0x46, 0x0F, 0xC5, 0x0F, 0xCC, 0x0F, 0xC5, + 0x0F, 0xCC, 0x0F, 0xC5, 0x94, 0xE8, 0x0F, 0x00, 0x85, 0xE8, 0x0F, 0x00, + 0x30, 0x46, 0xF6, 0xF7, 0xE9, 0xFC, 0x00, 0x20, 0x70, 0xBD, 0x00, 0xBF, + 0xA8, 0xBA, 0x17, 0x00, 0x08, 0xB5, 0x04, 0x22, 0x01, 0x23, 0x02, 0x21, + 0x40, 0xF6, 0x03, 0x00, 0xF6, 0xF7, 0xAC, 0xFC, 0xF6, 0xF7, 0xDA, 0xFC, + 0x04, 0x20, 0xF6, 0xF7, 0x49, 0xFF, 0x03, 0x49, 0x02, 0x46, 0x08, 0x20, + 0xF8, 0xF7, 0x5A, 0xFB, 0x00, 0x20, 0x08, 0xBD, 0x6C, 0xBE, 0x15, 0x00, + 0x08, 0xB5, 0x19, 0x46, 0x04, 0x22, 0x01, 0x23, 0x41, 0xF2, 0x0B, 0x00, + 0xF6, 0xF7, 0x96, 0xFC, 0xF6, 0xF7, 0xC4, 0xFC, 0x02, 0x49, 0x08, 0x20, + 0xF8, 0xF7, 0x48, 0xFB, 0x00, 0x20, 0x08, 0xBD, 0x80, 0xBE, 0x15, 0x00, + 0x1A, 0x46, 0x38, 0xB5, 0x41, 0xF2, 0x08, 0x00, 0x0D, 0x46, 0x02, 0x23, + 0x11, 0x46, 0x04, 0x22, 0xF6, 0xF7, 0x82, 0xFC, 0x06, 0x49, 0x04, 0x46, + 0x08, 0x20, 0xF8, 0xF7, 0x35, 0xFB, 0x01, 0x23, 0x23, 0x70, 0xAB, 0x78, + 0x63, 0x70, 0x20, 0x46, 0xF6, 0xF7, 0xA6, 0xFC, 0x00, 0x20, 0x38, 0xBD, + 0x98, 0xBE, 0x15, 0x00, 0x10, 0xB5, 0x41, 0xF2, 0x08, 0x00, 0x04, 0x4C, + 0x04, 0x49, 0x1A, 0x46, 0x23, 0x5A, 0x08, 0x20, 0xF8, 0xF7, 0x20, 0xFB, + 0x02, 0x20, 0x10, 0xBD, 0xA8, 0xBA, 0x17, 0x00, 0xB4, 0xBE, 0x15, 0x00, + 0xF8, 0xB5, 0x36, 0x4C, 0x91, 0xF8, 0x6E, 0x21, 0x35, 0x4E, 0x21, 0x60, + 0x0D, 0x46, 0x41, 0xF2, 0x08, 0x00, 0x4F, 0xF4, 0xA4, 0x67, 0x41, 0xF2, + 0x0A, 0x01, 0x07, 0xFB, 0x02, 0x62, 0x01, 0x26, 0x23, 0x52, 0x66, 0x52, + 0x00, 0x23, 0xC2, 0xF8, 0xCC, 0x31, 0x05, 0xF5, 0xB0, 0x77, 0x97, 0xE8, + 0x03, 0x00, 0xDF, 0xF8, 0xC4, 0xC0, 0x41, 0xF2, 0x0C, 0x02, 0xAC, 0xF8, + 0x04, 0x10, 0x41, 0xF2, 0x3B, 0x01, 0xA0, 0x50, 0x63, 0x54, 0x38, 0x46, + 0x1A, 0x46, 0x19, 0x46, 0x00, 0xF0, 0x4A, 0xF9, 0x18, 0xB1, 0x90, 0xF8, + 0x3D, 0x10, 0x03, 0x46, 0x91, 0xB9, 0x97, 0xE8, 0x03, 0x00, 0x21, 0x4B, + 0x41, 0xF2, 0x34, 0x02, 0x99, 0x80, 0x20, 0x4B, 0xA0, 0x50, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x28, 0xDB, 0x1D, 0x4B, 0xD3, 0xF8, + 0xF4, 0x32, 0x98, 0x47, 0x01, 0x20, 0xF8, 0xBD, 0x02, 0x46, 0x41, 0xF2, + 0x34, 0x0C, 0x52, 0xF8, 0x02, 0x0F, 0x93, 0xF8, 0x3E, 0x70, 0x44, 0xF8, + 0x0C, 0x00, 0x14, 0x48, 0x92, 0x88, 0x82, 0x80, 0xBE, 0x40, 0x41, 0xF2, + 0x38, 0x00, 0x01, 0x3E, 0x22, 0x5A, 0x36, 0x02, 0x36, 0xB2, 0x22, 0xEA, + 0x06, 0x02, 0x12, 0xB2, 0x22, 0x52, 0xDB, 0x88, 0xA3, 0xEB, 0x01, 0x21, + 0x0E, 0x40, 0x0C, 0x4B, 0x16, 0x43, 0x26, 0x52, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xD6, 0xDA, 0x95, 0xF8, 0x60, 0x31, 0xDB, 0x07, + 0xD2, 0xD5, 0x08, 0x49, 0x08, 0x48, 0xA1, 0x22, 0xF8, 0xF7, 0xD8, 0xFC, + 0xCC, 0xE7, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0xDC, 0xCA, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xD0, 0xBE, 0x15, 0x00, 0xB4, 0xCA, 0x17, 0x00, + 0x1A, 0x46, 0x38, 0xB5, 0x41, 0xF2, 0x08, 0x00, 0x0D, 0x46, 0x02, 0x23, + 0x11, 0x46, 0x04, 0x22, 0xF6, 0xF7, 0xDA, 0xFB, 0x0A, 0x49, 0x04, 0x46, + 0x08, 0x20, 0xF8, 0xF7, 0x8D, 0xFA, 0x29, 0x46, 0x08, 0x48, 0x31, 0xF8, + 0x03, 0x2B, 0x20, 0xF8, 0x03, 0x2B, 0x0A, 0xF0, 0x55, 0xFF, 0x01, 0x23, + 0x23, 0x70, 0xAB, 0x78, 0x63, 0x70, 0x20, 0x46, 0xF6, 0xF7, 0xF6, 0xFB, + 0x00, 0x20, 0x38, 0xBD, 0xF0, 0xBE, 0x15, 0x00, 0x68, 0xCB, 0x17, 0x00, + 0x08, 0x78, 0x08, 0xB9, 0x00, 0x20, 0x70, 0x47, 0x08, 0xB5, 0x00, 0xF0, + 0x31, 0xF8, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, 0x70, 0xB5, 0x0B, 0x4E, + 0x41, 0xF2, 0x08, 0x05, 0x01, 0x23, 0x0C, 0x46, 0x04, 0x22, 0x71, 0x5B, + 0x41, 0xF2, 0x0B, 0x00, 0xF6, 0xF7, 0xAA, 0xFB, 0xF6, 0xF7, 0xD8, 0xFB, + 0x72, 0x5B, 0x05, 0x49, 0x08, 0x20, 0xF8, 0xF7, 0x5B, 0xFA, 0x20, 0x78, + 0x00, 0xF0, 0x18, 0xF8, 0x00, 0x20, 0x70, 0xBD, 0xA8, 0xBA, 0x17, 0x00, + 0x00, 0xBF, 0x15, 0x00, 0x08, 0xB5, 0x05, 0x49, 0x41, 0xF2, 0x0B, 0x02, + 0x8B, 0x5C, 0x01, 0x33, 0x8B, 0x54, 0x00, 0xF0, 0x65, 0xFD, 0x00, 0x20, + 0x08, 0xBD, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x08, 0x46, 0x00, 0xF0, + 0x19, 0xB9, 0x00, 0xBF, 0xF0, 0xB5, 0x39, 0x4C, 0x41, 0xF2, 0x0A, 0x05, + 0x83, 0xB0, 0x63, 0x5D, 0x06, 0x46, 0x00, 0x2B, 0x43, 0xD0, 0x41, 0xF2, + 0x08, 0x02, 0x03, 0x23, 0xA1, 0x5A, 0x41, 0xF2, 0x03, 0x00, 0x04, 0x22, + 0xF6, 0xF7, 0x76, 0xFB, 0x05, 0x46, 0x23, 0x68, 0x30, 0x49, 0x93, 0xF8, + 0x6E, 0x21, 0x00, 0x96, 0x41, 0xF2, 0x0A, 0x07, 0x08, 0x20, 0xE3, 0x5D, + 0xF8, 0xF7, 0x22, 0xFA, 0xE3, 0x5D, 0x63, 0xB9, 0x2B, 0x49, 0x2C, 0x4A, + 0x0B, 0x68, 0x2C, 0x48, 0x23, 0xF0, 0x04, 0x03, 0x0B, 0x60, 0x13, 0x68, + 0x01, 0x88, 0x1B, 0x0C, 0x1B, 0x04, 0x0B, 0x43, 0x13, 0x60, 0x20, 0x68, + 0x27, 0x4B, 0x90, 0xF8, 0x6E, 0x21, 0x2A, 0x70, 0x6E, 0x70, 0xA2, 0x88, + 0xAA, 0x70, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x20, 0xD0, 0x0C, 0x38, + 0xF6, 0xF7, 0xC8, 0xFB, 0x00, 0x26, 0x28, 0x46, 0x26, 0x60, 0xF6, 0xF7, + 0x77, 0xFB, 0x1F, 0x4A, 0x53, 0x68, 0x31, 0x46, 0x23, 0xF0, 0x20, 0x03, + 0x04, 0x20, 0x53, 0x60, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0xF6, 0xF7, + 0x35, 0xBD, 0xA3, 0x88, 0xF3, 0xB1, 0x41, 0xF2, 0x08, 0x02, 0x03, 0x23, + 0xA1, 0x5A, 0x41, 0xF2, 0x01, 0x00, 0x04, 0x22, 0xF6, 0xF7, 0x30, 0xFB, + 0x05, 0x46, 0xB8, 0xE7, 0x13, 0x4B, 0x93, 0xF8, 0xB5, 0x30, 0x00, 0x2B, + 0xD9, 0xD0, 0x12, 0x49, 0x12, 0x4B, 0x0A, 0x68, 0x22, 0xF0, 0x7C, 0x72, + 0x0A, 0x60, 0x1A, 0x68, 0x42, 0xF4, 0x80, 0x02, 0x1A, 0x60, 0x1A, 0x68, + 0x42, 0xF4, 0x00, 0x12, 0x1A, 0x60, 0xCA, 0xE7, 0xD6, 0xF7, 0xCC, 0xFB, + 0x63, 0x5D, 0x00, 0x2B, 0xDB, 0xD0, 0x94, 0xE7, 0xA8, 0xBA, 0x17, 0x00, + 0x30, 0xBF, 0x15, 0x00, 0x94, 0x40, 0x04, 0x40, 0x20, 0x04, 0x32, 0x40, + 0x28, 0x25, 0x17, 0x00, 0x74, 0x36, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0x2C, 0x19, 0x17, 0x00, 0x74, 0x00, 0x32, 0x40, 0x6C, 0x00, 0x32, 0x40, + 0x08, 0xB5, 0x00, 0x21, 0x04, 0x20, 0xF6, 0xF7, 0xF5, 0xFC, 0xBD, 0xE8, + 0x08, 0x40, 0x03, 0x48, 0x4F, 0xF4, 0x86, 0x52, 0x00, 0x21, 0xD3, 0xF7, + 0xED, 0xBE, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x3C, 0x4D, 0x83, 0xB0, 0xA8, 0x46, 0x2B, 0x46, 0x00, 0x22, 0x08, 0xE0, + 0x5F, 0x89, 0x04, 0x88, 0xA7, 0x42, 0x14, 0xD0, 0x01, 0x32, 0x40, 0x2A, + 0x03, 0xF1, 0x40, 0x03, 0x1C, 0xD0, 0x1C, 0x7A, 0x03, 0xF1, 0x08, 0x06, + 0x00, 0x2C, 0xF1, 0xD1, 0x00, 0x29, 0xF3, 0xD0, 0x08, 0xEB, 0x82, 0x12, + 0x80, 0x23, 0x82, 0xF8, 0x44, 0x30, 0x30, 0x46, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x9F, 0x89, 0x44, 0x88, 0xA7, 0x42, 0xE6, 0xD1, 0xDF, 0x89, + 0x84, 0x88, 0xA7, 0x42, 0xF3, 0xD0, 0x01, 0x32, 0x40, 0x2A, 0x03, 0xF1, + 0x40, 0x03, 0xE2, 0xD1, 0x00, 0x29, 0x46, 0xD0, 0x26, 0x4F, 0x4F, 0xF0, + 0x00, 0x0B, 0x4F, 0xF0, 0x21, 0x0A, 0x06, 0xE0, 0x0B, 0xF1, 0x01, 0x0B, + 0xBB, 0xF1, 0x40, 0x0F, 0x05, 0xF1, 0x40, 0x05, 0x39, 0xD0, 0x2B, 0x7A, + 0x05, 0xF1, 0x08, 0x06, 0x00, 0x2B, 0xF3, 0xD0, 0x95, 0xF8, 0x45, 0x40, + 0x00, 0x2C, 0xEF, 0xD1, 0x38, 0x68, 0x30, 0xB3, 0x90, 0xF8, 0x70, 0x31, + 0x1B, 0xB3, 0x05, 0xF1, 0x11, 0x01, 0x4F, 0xF0, 0xFD, 0x09, 0x06, 0xE0, + 0x38, 0x68, 0x01, 0x34, 0x90, 0xF8, 0x70, 0x31, 0xE4, 0xB2, 0xA3, 0x42, + 0x15, 0xD9, 0x04, 0xEB, 0x44, 0x13, 0x03, 0x44, 0x93, 0xF8, 0xFC, 0x30, + 0x00, 0x2B, 0xF1, 0xD0, 0x2A, 0x7C, 0x9A, 0x42, 0xEE, 0xD1, 0x1A, 0xFB, + 0x04, 0x93, 0x18, 0x44, 0x01, 0x91, 0x0A, 0xF0, 0xE1, 0xFD, 0x01, 0x99, + 0x00, 0x28, 0xE5, 0xD1, 0x3B, 0x68, 0x93, 0xF8, 0x70, 0x31, 0x9C, 0x42, + 0xC6, 0xD1, 0x08, 0xEB, 0x8B, 0x11, 0x80, 0x20, 0x00, 0x23, 0x81, 0xF8, + 0x44, 0x00, 0x0B, 0x72, 0xA5, 0xE7, 0x00, 0x26, 0x30, 0x46, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xA8, 0xBA, 0x17, 0x00, 0xF4, 0x9F, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x2D, 0xED, 0x02, 0x8B, 0x61, 0x4B, 0x99, 0xB0, + 0x1C, 0x68, 0x03, 0x46, 0x04, 0x93, 0x04, 0x20, 0x94, 0xF8, 0x6E, 0x31, + 0x07, 0x93, 0xF6, 0xF7, 0x03, 0xFD, 0x01, 0x28, 0x05, 0xD0, 0x00, 0x20, + 0x19, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0x58, 0x49, + 0x41, 0xF2, 0x0C, 0x03, 0xCA, 0x5C, 0xD2, 0x07, 0x19, 0xD4, 0xCA, 0x5A, + 0x04, 0x9B, 0x9B, 0x8B, 0x9A, 0x42, 0x00, 0xF0, 0x85, 0x80, 0x52, 0x49, + 0x41, 0xF2, 0x34, 0x02, 0x8A, 0x5A, 0x9A, 0x42, 0xE7, 0xD1, 0x04, 0x9A, + 0x41, 0xF2, 0x36, 0x03, 0xD2, 0x8B, 0xCB, 0x5A, 0x9A, 0x42, 0xE0, 0xD1, + 0x04, 0x9A, 0x41, 0xF2, 0x38, 0x03, 0x12, 0x8C, 0xCB, 0x5A, 0x9A, 0x42, + 0xD9, 0xD1, 0x04, 0x98, 0x30, 0xF8, 0x30, 0x3B, 0x0B, 0x90, 0x24, 0x3B, + 0x9B, 0xB2, 0x0D, 0xF1, 0x37, 0x02, 0x19, 0x46, 0x08, 0xEE, 0x10, 0x3A, + 0xF7, 0xF7, 0xE4, 0xF8, 0x00, 0x28, 0x73, 0xD0, 0x9D, 0xF8, 0x37, 0x60, + 0x10, 0xAD, 0x4E, 0xB1, 0xAF, 0x19, 0x2B, 0x46, 0xC5, 0xF1, 0x02, 0x01, + 0xC2, 0x18, 0x52, 0x5C, 0x03, 0xF8, 0x01, 0x2B, 0xBB, 0x42, 0xF9, 0xD1, + 0x04, 0x9F, 0x38, 0x46, 0x01, 0x21, 0x2B, 0x46, 0x32, 0x46, 0x1C, 0x30, + 0xFF, 0xF7, 0x24, 0xFF, 0x01, 0x46, 0x0A, 0x90, 0x00, 0x28, 0xB0, 0xD0, + 0xBB, 0x8B, 0x43, 0x80, 0xFB, 0x8B, 0x83, 0x80, 0x3B, 0x8C, 0xC3, 0x80, + 0x97, 0xF8, 0x2C, 0x30, 0x97, 0xF8, 0x2D, 0x20, 0x43, 0xEA, 0x02, 0x23, + 0x03, 0x86, 0xFB, 0x8D, 0x43, 0x86, 0x03, 0xF0, 0x01, 0x03, 0xC3, 0xF1, + 0x02, 0x03, 0x43, 0x85, 0x00, 0x2E, 0x46, 0xD1, 0x0A, 0x9B, 0x1E, 0x72, + 0x27, 0x4A, 0x41, 0xF2, 0x3A, 0x03, 0xD3, 0x5C, 0x00, 0x2B, 0x40, 0xF0, + 0xA5, 0x82, 0x24, 0x4A, 0x41, 0xF2, 0x0A, 0x03, 0xD5, 0x5C, 0x00, 0x2D, + 0x48, 0xD1, 0x94, 0xF8, 0x70, 0x11, 0x00, 0x29, 0x44, 0xD0, 0x0A, 0x9B, + 0x26, 0x46, 0x03, 0xF1, 0x09, 0x07, 0x98, 0x46, 0x08, 0x46, 0x05, 0xE0, + 0x01, 0x35, 0xA8, 0x42, 0x06, 0xF1, 0x21, 0x06, 0x03, 0x46, 0x34, 0xDD, + 0x96, 0xF8, 0xFC, 0x30, 0x83, 0xB3, 0x98, 0xF8, 0x08, 0x20, 0x9A, 0x42, + 0xF2, 0xD1, 0x39, 0x46, 0x06, 0xF1, 0xFD, 0x00, 0x0A, 0xF0, 0x26, 0xFD, + 0x00, 0x28, 0x00, 0xF0, 0x2C, 0x83, 0x94, 0xF8, 0x70, 0x01, 0xE7, 0xE7, + 0x04, 0x99, 0x0F, 0x48, 0xC9, 0x8B, 0x41, 0xF2, 0x0E, 0x02, 0x82, 0x5A, + 0x91, 0x42, 0x7F, 0xF4, 0x72, 0xAF, 0x04, 0x99, 0x41, 0xF2, 0x10, 0x02, + 0x09, 0x8C, 0x82, 0x5A, 0x91, 0x42, 0x7F, 0xF4, 0x6A, 0xAF, 0x7C, 0xE7, + 0x06, 0x46, 0x10, 0xAD, 0x96, 0xE7, 0x0B, 0x46, 0x03, 0xF8, 0x08, 0x6F, + 0x2E, 0x44, 0x15, 0xF8, 0x01, 0x2B, 0x03, 0xF8, 0x01, 0x2F, 0xAE, 0x42, + 0xF9, 0xD1, 0xAF, 0xE7, 0xA8, 0xBA, 0x17, 0x00, 0x03, 0x46, 0x9D, 0x42, + 0x3F, 0xF4, 0x43, 0xAF, 0x18, 0xEE, 0x10, 0x1A, 0x0B, 0x98, 0xF7, 0xF7, + 0x45, 0xF9, 0x00, 0x28, 0x00, 0xF0, 0x3A, 0x82, 0x04, 0x9B, 0x9A, 0x79, + 0x83, 0x78, 0x00, 0x2A, 0x40, 0xF0, 0x56, 0x82, 0x59, 0x1E, 0x0D, 0x29, + 0x00, 0xF2, 0x4F, 0x82, 0x0E, 0x2B, 0x00, 0xF0, 0xEB, 0x82, 0x03, 0xEB, + 0x83, 0x03, 0x03, 0xF6, 0x67, 0x11, 0x10, 0x46, 0xFA, 0xF7, 0x98, 0xFE, + 0x0A, 0x99, 0x04, 0x9B, 0xC8, 0x62, 0x91, 0xF9, 0x3C, 0x20, 0x93, 0xF9, + 0x09, 0x30, 0x9A, 0x42, 0xB8, 0xBF, 0x81, 0xF8, 0x3C, 0x30, 0x04, 0x99, + 0x03, 0x88, 0x8A, 0x88, 0x9A, 0x42, 0x00, 0xD0, 0x8B, 0x80, 0x41, 0xF2, + 0xBD, 0x03, 0xB4, 0x4A, 0x00, 0x25, 0xD5, 0x54, 0x18, 0xEE, 0x10, 0x3A, + 0x00, 0x2B, 0x6C, 0xD0, 0x0B, 0x9B, 0x8D, 0xED, 0x05, 0x8A, 0x2C, 0x46, + 0xA8, 0x46, 0x06, 0x93, 0xDD, 0xE9, 0x05, 0x10, 0xF7, 0xF7, 0xFC, 0xF9, + 0x08, 0x90, 0x00, 0x28, 0x5F, 0xD0, 0x43, 0x78, 0xAA, 0x4A, 0x81, 0x78, + 0x11, 0x70, 0x5E, 0x1E, 0x02, 0x33, 0xB6, 0xB2, 0x09, 0x93, 0x00, 0xF1, + 0x03, 0x0A, 0x00, 0x2E, 0x44, 0xD0, 0x31, 0x46, 0x50, 0x46, 0xF7, 0xF7, + 0x09, 0xFA, 0x07, 0x46, 0x00, 0x28, 0x3D, 0xD0, 0x90, 0xF8, 0x01, 0x90, + 0x00, 0xF1, 0x02, 0x0B, 0x09, 0xF1, 0x02, 0x03, 0xF6, 0x1A, 0x58, 0x46, + 0x04, 0x21, 0xB6, 0xB2, 0x9A, 0x44, 0xF7, 0xF7, 0x1D, 0xFA, 0x00, 0x28, + 0x00, 0xF0, 0x81, 0x81, 0x49, 0x46, 0x58, 0x46, 0xF7, 0xF7, 0x36, 0xFA, + 0x07, 0xF1, 0x04, 0x08, 0x04, 0x46, 0x49, 0x46, 0x58, 0x46, 0x0E, 0xAA, + 0xF6, 0xF7, 0xE8, 0xFF, 0x05, 0x46, 0x00, 0x2C, 0xD7, 0xD0, 0x00, 0x2D, + 0xD5, 0xD0, 0x92, 0x4B, 0x98, 0xF8, 0x00, 0xC0, 0x1A, 0x78, 0xA7, 0x78, + 0xA3, 0xF1, 0x81, 0x00, 0x81, 0x1D, 0x98, 0xF8, 0x01, 0x30, 0x01, 0xF8, + 0x32, 0x70, 0x4C, 0xEA, 0x03, 0x21, 0x53, 0x1C, 0xDB, 0xB2, 0x07, 0x1D, + 0x10, 0x2B, 0x40, 0xF8, 0x32, 0x50, 0x80, 0xF8, 0x81, 0x30, 0x27, 0xF8, + 0x32, 0x10, 0x12, 0xD0, 0x4F, 0xF0, 0x00, 0x08, 0x00, 0x2E, 0xBA, 0xD1, + 0x06, 0x9B, 0x08, 0x9A, 0x05, 0x99, 0x9B, 0x1A, 0x19, 0x44, 0x09, 0x9B, + 0xA1, 0xEB, 0x03, 0x0B, 0x1F, 0xFA, 0x8B, 0xF1, 0xD3, 0x18, 0x05, 0x91, + 0x06, 0x93, 0x00, 0x29, 0x98, 0xD1, 0x0A, 0x99, 0x00, 0x23, 0x4B, 0x63, + 0x8B, 0x63, 0x41, 0xF2, 0x0A, 0x02, 0x77, 0x4B, 0x9B, 0x5C, 0x00, 0x2B, + 0x00, 0xF0, 0xB4, 0x80, 0x0A, 0x9A, 0x07, 0x9F, 0x76, 0x4C, 0x56, 0x8D, + 0x51, 0x8E, 0x13, 0x46, 0x4F, 0xF4, 0xA4, 0x65, 0x53, 0xF8, 0x02, 0x0F, + 0x12, 0x8E, 0x9B, 0x88, 0x05, 0xFB, 0x07, 0xF5, 0x67, 0x19, 0xA7, 0xF8, + 0x68, 0x31, 0xA7, 0xF8, 0x98, 0x21, 0xFF, 0x23, 0x0A, 0x9A, 0xA7, 0xF8, + 0x8E, 0x61, 0xC7, 0xF8, 0x64, 0x01, 0xA7, 0xF8, 0x9A, 0x11, 0x87, 0xF8, + 0x61, 0x31, 0x87, 0xF8, 0xBE, 0x31, 0x13, 0x7A, 0x05, 0xF1, 0xEC, 0x06, + 0x26, 0x44, 0x00, 0x2B, 0x40, 0xF0, 0xA2, 0x81, 0x0A, 0x9A, 0xD2, 0x6A, + 0xC7, 0xF8, 0x90, 0x21, 0xA7, 0xF8, 0xC2, 0x31, 0x07, 0x9B, 0x0A, 0x9A, + 0x0B, 0x98, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x03, 0x47, 0x92, 0xF8, + 0x3D, 0x30, 0x87, 0xF8, 0x8B, 0x31, 0x92, 0xF8, 0x3E, 0x30, 0x87, 0xF8, + 0x8C, 0x31, 0x05, 0xF5, 0xCE, 0x78, 0x00, 0x23, 0xA0, 0x44, 0xC7, 0xF8, + 0xCC, 0x31, 0x18, 0xEE, 0x10, 0x1A, 0x42, 0x46, 0xF9, 0xF7, 0xA4, 0xFB, + 0x0A, 0x9B, 0xDB, 0x6A, 0x9B, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0xB3, 0x81, + 0x05, 0xF5, 0xD6, 0x72, 0x18, 0xEE, 0x10, 0x1A, 0x0B, 0x98, 0x22, 0x44, + 0x0E, 0xAB, 0xF9, 0xF7, 0x6D, 0xFD, 0x80, 0xB1, 0x07, 0x9A, 0x4F, 0xF4, + 0xA4, 0x63, 0x03, 0xFB, 0x02, 0x43, 0xB3, 0xF8, 0x9A, 0x11, 0xD3, 0xF8, + 0xCC, 0x21, 0x41, 0xF4, 0x00, 0x71, 0x42, 0xF0, 0x01, 0x02, 0xA3, 0xF8, + 0x9A, 0x11, 0xC3, 0xF8, 0xCC, 0x21, 0x45, 0x4F, 0x97, 0xF8, 0x76, 0x31, + 0xDB, 0x07, 0x09, 0xD5, 0x07, 0x9B, 0x4F, 0xF4, 0xA4, 0x69, 0x09, 0xFB, + 0x03, 0x49, 0xD9, 0xF8, 0xCC, 0x31, 0xD8, 0x07, 0x00, 0xF1, 0x98, 0x81, + 0x00, 0x21, 0x88, 0x46, 0x40, 0x46, 0x32, 0x46, 0xFB, 0xF7, 0x52, 0xFA, + 0x0B, 0x9D, 0x18, 0xEE, 0x10, 0x1A, 0x28, 0x46, 0x32, 0x46, 0xF9, 0xF7, + 0xAD, 0xFB, 0x28, 0x46, 0x18, 0xEE, 0x10, 0x1A, 0x32, 0x46, 0xF9, 0xF7, + 0xB1, 0xFB, 0x28, 0x46, 0x18, 0xEE, 0x10, 0x1A, 0x32, 0x46, 0xF9, 0xF7, + 0x13, 0xFC, 0x07, 0x9A, 0x31, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x02, 0x44, 0x29, 0x6D, 0xD4, 0xF8, 0xCC, 0x31, 0x43, 0xF0, 0x00, 0x43, + 0x41, 0xF2, 0x3B, 0x02, 0xC4, 0xF8, 0xCC, 0x31, 0x25, 0x4B, 0x01, 0x20, + 0x98, 0x54, 0x2A, 0x6A, 0x00, 0x29, 0x00, 0xF0, 0x1C, 0x81, 0x00, 0x2A, + 0x00, 0xF0, 0x19, 0x81, 0x0B, 0x7E, 0x03, 0x2B, 0x08, 0xD1, 0x25, 0x4B, + 0x05, 0xF1, 0x40, 0x00, 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0xD5, 0xE9, + 0x11, 0x30, 0x98, 0x47, 0x0A, 0x9A, 0x14, 0x78, 0xDC, 0xB9, 0x19, 0x48, + 0x1F, 0x4B, 0x81, 0x88, 0x1B, 0x68, 0x01, 0x31, 0x89, 0xB2, 0x81, 0x80, + 0x1B, 0x88, 0x5B, 0x07, 0x11, 0xD5, 0x13, 0x7A, 0x00, 0x2B, 0x40, 0xF0, + 0x7A, 0x81, 0x1A, 0x4D, 0x0A, 0x9A, 0x04, 0x9C, 0xD2, 0x6A, 0x94, 0xF9, + 0x09, 0x00, 0x12, 0x88, 0x00, 0x90, 0xCD, 0xE9, 0x01, 0x35, 0x16, 0x48, + 0x23, 0x7B, 0xF7, 0xF7, 0x89, 0xFE, 0x0A, 0x99, 0x00, 0x25, 0x01, 0x22, + 0x0A, 0x70, 0x81, 0xF8, 0x3D, 0x50, 0x81, 0xF8, 0x3E, 0x50, 0x41, 0xF2, + 0xBD, 0x03, 0x08, 0x46, 0x05, 0x49, 0xCB, 0x5C, 0x00, 0x2B, 0x4D, 0xD0, + 0x0D, 0x4C, 0x83, 0x46, 0x04, 0xF1, 0x80, 0x0A, 0x04, 0xF1, 0x81, 0x09, + 0x43, 0xE0, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, 0x64, 0xCB, 0x17, 0x00, + 0x65, 0xCB, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, + 0x30, 0x9D, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x48, 0xBF, 0x15, 0x00, 0x84, 0xBF, 0x15, 0x00, 0xE4, 0xCA, 0x17, 0x00, + 0x9A, 0xF8, 0x00, 0x70, 0x08, 0x2F, 0x2B, 0xD8, 0x5A, 0x46, 0x21, 0x68, + 0x52, 0xF8, 0x02, 0x0F, 0x4E, 0x78, 0x0E, 0x90, 0x92, 0x88, 0xAD, 0xF8, + 0x3C, 0x20, 0xBB, 0xF8, 0x06, 0x20, 0xBD, 0xF9, 0x3C, 0x10, 0x4F, 0xF0, + 0x01, 0x08, 0x02, 0xEB, 0x03, 0x22, 0x08, 0xFA, 0x07, 0xF3, 0x4A, 0x40, + 0x01, 0x3B, 0x02, 0xEA, 0x03, 0x22, 0x00, 0x23, 0x81, 0xEA, 0x02, 0x0C, + 0x0E, 0xA8, 0x1A, 0x46, 0x19, 0x46, 0xAD, 0xF8, 0x3C, 0xC0, 0xFF, 0xF7, + 0xDF, 0xFC, 0x68, 0xB3, 0x99, 0xF8, 0x00, 0x30, 0x01, 0x35, 0x9D, 0x42, + 0x04, 0xF1, 0x08, 0x04, 0x02, 0xDA, 0xA3, 0x79, 0x00, 0x2B, 0xCF, 0xD1, + 0x04, 0x98, 0x04, 0x23, 0x0C, 0x22, 0x41, 0xF2, 0x04, 0x01, 0xF6, 0xF7, + 0x2D, 0xF8, 0x01, 0x20, 0x5C, 0xE5, 0xB8, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, + 0x62, 0xAE, 0x4C, 0xB1, 0x00, 0x2D, 0x7F, 0xF4, 0x88, 0xAE, 0x49, 0x46, + 0x58, 0x46, 0x0E, 0xAA, 0xF6, 0xF7, 0x66, 0xFE, 0x05, 0x46, 0x7E, 0xE6, + 0x49, 0x46, 0x58, 0x46, 0xF7, 0xF7, 0xA6, 0xF8, 0x04, 0x46, 0x00, 0x2D, + 0x3F, 0xF4, 0x6F, 0xAE, 0x00, 0x28, 0x3F, 0xF4, 0x4C, 0xAE, 0x74, 0xE6, + 0x23, 0x68, 0x41, 0x46, 0x02, 0x33, 0x32, 0x46, 0x0E, 0xA8, 0xFF, 0xF7, + 0xA9, 0xFC, 0x86, 0x46, 0x00, 0x28, 0xD1, 0xD0, 0xD8, 0x46, 0xB8, 0xE8, + 0x0F, 0x00, 0xF4, 0x46, 0xAC, 0xE8, 0x0F, 0x00, 0xB8, 0xE8, 0x0F, 0x00, + 0xAC, 0xE8, 0x0F, 0x00, 0xB8, 0xE8, 0x0F, 0x00, 0xAC, 0xE8, 0x0F, 0x00, + 0x98, 0xE8, 0x0F, 0x00, 0x8C, 0xE8, 0x0F, 0x00, 0x0E, 0x98, 0xCE, 0xF8, + 0x02, 0x00, 0xBD, 0xF8, 0x3C, 0x30, 0x8E, 0xF8, 0x08, 0x60, 0x21, 0x68, + 0xAE, 0xF8, 0x06, 0x30, 0x5E, 0xB1, 0x08, 0x36, 0x06, 0x39, 0x76, 0x44, + 0xA1, 0xEB, 0x0E, 0x01, 0x0E, 0xF1, 0x08, 0x03, 0xCA, 0x5C, 0x03, 0xF8, + 0x01, 0x2F, 0x9E, 0x42, 0xFA, 0xD1, 0x7E, 0x49, 0x8E, 0xF8, 0x3E, 0x70, + 0x8B, 0x88, 0xA2, 0x79, 0x8E, 0xF8, 0x3D, 0x20, 0x01, 0x33, 0x01, 0x22, + 0x8B, 0x80, 0x8E, 0xF8, 0x00, 0x20, 0x91, 0xE7, 0x04, 0x9B, 0x93, 0xF9, + 0x09, 0x20, 0x0A, 0x9B, 0x93, 0xF9, 0x3C, 0x30, 0x9A, 0x42, 0x7F, 0xF7, + 0xE2, 0xAD, 0x04, 0x9C, 0xA1, 0x88, 0xA0, 0x79, 0xFA, 0xF7, 0x64, 0xFC, + 0x0A, 0x9A, 0xD0, 0x62, 0x63, 0x7A, 0x82, 0xF8, 0x3C, 0x30, 0xD6, 0xE5, + 0x0A, 0x9B, 0x6E, 0x49, 0x07, 0x22, 0x03, 0xF1, 0x09, 0x00, 0x0A, 0xF0, + 0x9D, 0xFA, 0x00, 0x28, 0x7F, 0xF4, 0xE3, 0xAC, 0x9E, 0xE5, 0x4F, 0xF6, + 0xFF, 0x71, 0xB4, 0xE5, 0x01, 0x2A, 0xFA, 0xD1, 0x59, 0x1E, 0xA4, 0x29, + 0xF7, 0xD8, 0x03, 0xEB, 0x83, 0x03, 0x03, 0xF5, 0x9C, 0x51, 0x08, 0x31, + 0xA9, 0xE5, 0xB2, 0xFA, 0x82, 0xF2, 0x62, 0x48, 0x52, 0x09, 0xF7, 0xF7, + 0x95, 0xFD, 0xEB, 0xE6, 0x02, 0xF1, 0x09, 0x00, 0x0A, 0xF0, 0xAC, 0xFC, + 0xA8, 0xB1, 0x0A, 0x9B, 0x07, 0xF5, 0xB5, 0x77, 0x03, 0xF1, 0x08, 0x08, + 0x03, 0xF1, 0x28, 0x0E, 0xC4, 0x46, 0xBC, 0xE8, 0x0F, 0x00, 0xF4, 0x45, + 0x38, 0x60, 0x79, 0x60, 0xBA, 0x60, 0xFB, 0x60, 0xE0, 0x46, 0x07, 0xF1, + 0x10, 0x07, 0xF3, 0xD1, 0x9C, 0xF8, 0x00, 0x30, 0x3B, 0x70, 0x0A, 0x9B, + 0x07, 0x98, 0x19, 0x7A, 0x0A, 0x9B, 0xDA, 0x6A, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x00, 0x43, 0x00, 0x27, 0xC3, 0xF8, 0x90, 0x21, 0xA3, 0xF8, + 0xC2, 0x71, 0x00, 0x29, 0x3F, 0xF4, 0x38, 0xAE, 0x0B, 0x44, 0x05, 0xF2, + 0x6B, 0x11, 0x12, 0x88, 0x48, 0x48, 0x83, 0xF8, 0x6B, 0x71, 0x21, 0x44, + 0xF7, 0xF7, 0x5E, 0xFD, 0x2C, 0xE6, 0x40, 0x46, 0x01, 0x21, 0xFA, 0xF7, + 0xED, 0xFD, 0x10, 0xF0, 0x0F, 0x00, 0x1A, 0xBF, 0xB0, 0xFA, 0x80, 0xF0, + 0xC0, 0xF1, 0x1F, 0x03, 0x01, 0x23, 0x87, 0xF8, 0xC1, 0x31, 0x3D, 0xE6, + 0x18, 0xEE, 0x10, 0x1A, 0x0B, 0x98, 0x32, 0x46, 0xF9, 0xF7, 0x0C, 0xFC, + 0x00, 0x28, 0x3F, 0xF4, 0x5F, 0xAE, 0xD9, 0xF8, 0xCC, 0x31, 0x0B, 0x98, + 0x43, 0xF0, 0x02, 0x03, 0x18, 0xEE, 0x10, 0x1A, 0xC9, 0xF8, 0xCC, 0x31, + 0xF7, 0xF7, 0x24, 0xF8, 0x97, 0xF8, 0x76, 0x31, 0x59, 0x07, 0x80, 0x46, + 0x30, 0xD4, 0x9A, 0x07, 0x0A, 0xD4, 0x07, 0x9A, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x02, 0x43, 0xD3, 0xF8, 0xCC, 0x11, 0x11, 0xF0, 0x08, 0x01, + 0x3F, 0xF4, 0x44, 0xAE, 0x05, 0xF5, 0x86, 0x72, 0x18, 0xEE, 0x10, 0x1A, + 0x0B, 0x98, 0x22, 0x44, 0xF9, 0xF7, 0x08, 0xFC, 0x30, 0xBB, 0x01, 0x46, + 0x38, 0xE6, 0x02, 0xF1, 0x09, 0x05, 0x28, 0x46, 0x16, 0x46, 0x0A, 0xF0, + 0x33, 0xFC, 0x20, 0xB9, 0x1E, 0x4B, 0x22, 0x4D, 0x99, 0x88, 0x33, 0x7A, + 0x7A, 0xE6, 0x0A, 0x9A, 0x1B, 0x49, 0x13, 0x7A, 0x89, 0x88, 0x1A, 0x44, + 0x54, 0x72, 0x73, 0xE6, 0x40, 0xF6, 0xB4, 0x11, 0x15, 0xE5, 0x94, 0xF8, + 0x70, 0x31, 0xF6, 0xE4, 0x05, 0xF5, 0x8C, 0x72, 0x18, 0xEE, 0x10, 0x1A, + 0x0B, 0x98, 0x22, 0x44, 0xF9, 0xF7, 0x02, 0xFC, 0xA0, 0xB9, 0x97, 0xF8, + 0x76, 0x31, 0xC2, 0xE7, 0x07, 0x9A, 0x0B, 0x98, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x02, 0x43, 0x18, 0xEE, 0x10, 0x1A, 0xD3, 0xF8, 0xCC, 0x21, + 0x42, 0xF0, 0x04, 0x02, 0xC3, 0xF8, 0xCC, 0x21, 0xF6, 0xF7, 0xF2, 0xFF, + 0x01, 0x46, 0x01, 0xE6, 0xD9, 0xF8, 0xCC, 0x31, 0x0B, 0x98, 0x43, 0xF0, + 0x08, 0x03, 0x18, 0xEE, 0x10, 0x1A, 0x32, 0x46, 0xC9, 0xF8, 0xCC, 0x31, + 0xF9, 0xF7, 0x36, 0xFC, 0xDD, 0xE7, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, + 0x54, 0xBF, 0x15, 0x00, 0x68, 0xBF, 0x15, 0x00, 0x5C, 0xBF, 0x15, 0x00, + 0x48, 0xBF, 0x15, 0x00, 0x00, 0x23, 0x1A, 0x46, 0x19, 0x46, 0xFF, 0xF7, + 0x71, 0xBB, 0x00, 0xBF, 0x2D, 0xE9, 0xF8, 0x43, 0x03, 0x78, 0x43, 0xB3, + 0x16, 0x4C, 0x07, 0x46, 0x4F, 0xF0, 0x00, 0x08, 0x04, 0xF5, 0x80, 0x56, + 0x6F, 0xF0, 0x7F, 0x05, 0x00, 0xF1, 0x01, 0x09, 0x02, 0xE0, 0x40, 0x34, + 0xB4, 0x42, 0x17, 0xD0, 0x23, 0x7A, 0xAB, 0xB1, 0x94, 0xF9, 0x44, 0x30, + 0xAB, 0x42, 0xF6, 0xDD, 0x23, 0x7C, 0x3A, 0x78, 0x9A, 0x42, 0xF2, 0xD1, + 0x49, 0x46, 0x04, 0xF1, 0x11, 0x00, 0x0A, 0xF0, 0x97, 0xF9, 0x00, 0x28, + 0xEB, 0xD1, 0x94, 0xF9, 0x44, 0x50, 0x04, 0xF1, 0x08, 0x08, 0x40, 0x34, + 0xB4, 0x42, 0xE7, 0xD1, 0x40, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x98, 0x46, + 0x40, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0x41, 0xF2, 0x0B, 0x03, 0xC2, 0x4D, 0xE9, 0x5C, + 0x2E, 0x68, 0x01, 0x29, 0x82, 0xB0, 0x00, 0xF2, 0xB8, 0x81, 0x96, 0xF8, + 0x6F, 0x01, 0x00, 0x27, 0x00, 0x28, 0x00, 0xF0, 0x57, 0x81, 0x33, 0x46, + 0x00, 0x24, 0x03, 0xE0, 0x01, 0x34, 0x84, 0x42, 0x00, 0xF0, 0x50, 0x81, + 0x9A, 0x78, 0x8A, 0x42, 0x03, 0xF1, 0x06, 0x03, 0xF6, 0xD1, 0x17, 0xB1, + 0x41, 0xF2, 0x0B, 0x03, 0xE9, 0x54, 0x4F, 0xF4, 0xBA, 0x73, 0x02, 0x21, + 0x04, 0x22, 0x4F, 0xF4, 0x00, 0x60, 0xF5, 0xF7, 0x03, 0xFE, 0x96, 0xF8, + 0x6E, 0x31, 0x80, 0xF8, 0x6E, 0x31, 0x07, 0x46, 0xD6, 0xE9, 0x58, 0x01, + 0xC7, 0xF8, 0x60, 0x01, 0xA7, 0xF8, 0x64, 0x11, 0x96, 0xF8, 0x70, 0x01, + 0x87, 0xF8, 0x70, 0x01, 0x96, 0xF8, 0x71, 0x31, 0x87, 0xF8, 0x71, 0x31, + 0x96, 0xF8, 0x6F, 0x31, 0x9C, 0x42, 0x80, 0xF2, 0x79, 0x81, 0x41, 0xF2, + 0x0B, 0x02, 0x04, 0xEB, 0x44, 0x04, 0x06, 0x21, 0x15, 0xF8, 0x02, 0x80, + 0x06, 0xEB, 0x44, 0x04, 0x11, 0xFB, 0x03, 0x61, 0xA3, 0x78, 0x43, 0x45, + 0x10, 0xD1, 0x97, 0xF8, 0x6F, 0x31, 0xD4, 0xF8, 0x00, 0xC0, 0x03, 0xEB, + 0x43, 0x02, 0x01, 0x33, 0x47, 0xF8, 0x12, 0xC0, 0x07, 0xEB, 0x42, 0x02, + 0xB4, 0xF8, 0x04, 0xC0, 0xA2, 0xF8, 0x04, 0xC0, 0x87, 0xF8, 0x6F, 0x31, + 0x06, 0x34, 0xA1, 0x42, 0xE8, 0xD1, 0xF0, 0xB1, 0x4F, 0xF0, 0x21, 0x0A, + 0xFC, 0x21, 0x1A, 0xFB, 0x00, 0x1A, 0x73, 0x18, 0x03, 0xF1, 0x20, 0x09, + 0x7A, 0x18, 0xD3, 0xF8, 0x00, 0xC0, 0x5C, 0x68, 0x98, 0x68, 0xD3, 0xF8, + 0x0C, 0xE0, 0xC2, 0xF8, 0x0C, 0xE0, 0x10, 0x33, 0x4B, 0x45, 0xC2, 0xF8, + 0x00, 0xC0, 0x54, 0x60, 0x90, 0x60, 0x02, 0xF1, 0x10, 0x02, 0xEE, 0xD1, + 0x21, 0x31, 0x1B, 0x78, 0x13, 0x70, 0x51, 0x45, 0xE5, 0xD1, 0x2B, 0x68, + 0xDF, 0xF8, 0x2C, 0xC2, 0xB3, 0xF8, 0x6C, 0x91, 0x81, 0x4C, 0xB9, 0xF1, + 0xC9, 0x0F, 0x28, 0xBF, 0x4F, 0xF0, 0x00, 0x09, 0xB8, 0xF1, 0x01, 0x0F, + 0x66, 0x46, 0x00, 0xF0, 0xE5, 0x80, 0x93, 0xF8, 0x71, 0x21, 0x7C, 0x4B, + 0x00, 0x2A, 0xA3, 0xF1, 0x04, 0x02, 0x0A, 0xBF, 0x13, 0x46, 0x4F, 0xF0, + 0x08, 0x0E, 0x4F, 0xF0, 0x0C, 0x0E, 0x78, 0x4A, 0x01, 0x20, 0x08, 0x21, + 0x10, 0x75, 0x15, 0x32, 0x61, 0x70, 0x58, 0x18, 0x13, 0xF8, 0x01, 0x1B, + 0x02, 0xF8, 0x01, 0x1F, 0x98, 0x42, 0xF9, 0xD1, 0x72, 0x4B, 0x01, 0x93, + 0xB9, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x99, 0x80, 0xBE, 0xF1, 0x08, 0x0F, + 0x19, 0xD0, 0x01, 0x9B, 0x6E, 0x4A, 0x58, 0x1C, 0x32, 0x21, 0x01, 0x90, + 0x19, 0x70, 0x01, 0x9B, 0xAE, 0xF1, 0x08, 0x0E, 0x59, 0x1C, 0x5F, 0xFA, + 0x8E, 0xFE, 0x01, 0x91, 0x83, 0xF8, 0x00, 0xE0, 0x01, 0x9B, 0x18, 0x1D, + 0x12, 0xF8, 0x01, 0x1B, 0x03, 0xF8, 0x01, 0x1B, 0x98, 0x42, 0xF9, 0xD1, + 0x01, 0x9B, 0x73, 0x44, 0x01, 0x93, 0x41, 0xF2, 0x0B, 0x03, 0xEB, 0x5C, + 0x63, 0xB9, 0x01, 0x9B, 0x03, 0x22, 0x59, 0x1C, 0x01, 0x91, 0x1A, 0x70, + 0x01, 0x9B, 0x01, 0x22, 0x59, 0x1C, 0x01, 0x91, 0x1A, 0x70, 0x01, 0x9B, + 0x13, 0x44, 0x01, 0x93, 0xB9, 0xF1, 0x00, 0x0F, 0x36, 0xD1, 0xDF, 0xF8, + 0x7C, 0x81, 0x98, 0xF8, 0x76, 0x31, 0xD8, 0x07, 0x06, 0xD5, 0x56, 0x4B, + 0x01, 0xA8, 0xD3, 0xF8, 0x48, 0x31, 0x98, 0x47, 0x98, 0xF8, 0x76, 0x31, + 0x41, 0xF2, 0x0B, 0x02, 0xAA, 0x5C, 0x01, 0x2A, 0x4A, 0xD0, 0x5D, 0x07, + 0x04, 0xD5, 0x4F, 0x4B, 0x01, 0xA8, 0xD3, 0xF8, 0x44, 0x31, 0x98, 0x47, + 0x4D, 0x4D, 0x01, 0x98, 0x29, 0x46, 0x31, 0xF8, 0x03, 0x2B, 0x0A, 0xF0, + 0xB1, 0xF8, 0x4B, 0x4A, 0x01, 0x99, 0x12, 0x68, 0x2B, 0x88, 0xB2, 0xF9, + 0x00, 0x20, 0x0B, 0x44, 0x00, 0x2A, 0x01, 0x93, 0xA3, 0xEB, 0x04, 0x03, + 0x5D, 0xDB, 0x00, 0x22, 0xA7, 0xF8, 0x6C, 0x31, 0xC7, 0xF8, 0x68, 0x21, + 0x38, 0x46, 0xF5, 0xF7, 0x45, 0xFD, 0x02, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, + 0x32, 0x78, 0x3B, 0x2A, 0x60, 0xD0, 0xDF, 0xF8, 0x08, 0x81, 0x98, 0xF8, + 0x76, 0x31, 0xD9, 0x07, 0x58, 0xD5, 0x39, 0x4B, 0x01, 0xA8, 0xD3, 0xF8, + 0x48, 0x31, 0x98, 0x47, 0xB9, 0xF1, 0x00, 0x0F, 0xC2, 0xD0, 0x01, 0x99, + 0x32, 0x78, 0x0B, 0x46, 0x76, 0x1A, 0x49, 0x44, 0x00, 0xE0, 0xF2, 0x5C, + 0x03, 0xF8, 0x01, 0x2B, 0x99, 0x42, 0xFA, 0xD1, 0x01, 0x9A, 0x98, 0xF8, + 0x76, 0x31, 0x4A, 0x44, 0x01, 0x92, 0x41, 0xF2, 0x0B, 0x02, 0xAA, 0x5C, + 0x01, 0x2A, 0xB4, 0xD1, 0x9E, 0x07, 0xB2, 0xD5, 0x29, 0x4B, 0x00, 0x21, + 0xD3, 0xF8, 0x50, 0x31, 0x01, 0xA8, 0x98, 0x47, 0x98, 0xF8, 0x76, 0x31, + 0xA9, 0xE7, 0x9C, 0xF8, 0x00, 0x20, 0x0A, 0x2A, 0x7F, 0xF4, 0x62, 0xAF, + 0x9C, 0xF8, 0x01, 0x60, 0x02, 0x36, 0x16, 0xF0, 0xFF, 0x06, 0x09, 0xD0, + 0x22, 0x49, 0x98, 0x19, 0x01, 0xE0, 0x11, 0xF8, 0x01, 0x2F, 0x03, 0xF8, + 0x01, 0x2B, 0x83, 0x42, 0xF9, 0xD1, 0x01, 0x9B, 0x33, 0x44, 0xA9, 0xEB, + 0x06, 0x09, 0x01, 0x93, 0x1F, 0xFA, 0x89, 0xF9, 0x66, 0x44, 0x49, 0xE7, + 0x01, 0x27, 0xB9, 0x42, 0x53, 0xD0, 0x39, 0x46, 0xA0, 0xE6, 0xB3, 0xF5, + 0x96, 0x7F, 0x9E, 0xD9, 0x16, 0x49, 0x17, 0x48, 0xB4, 0x22, 0xF7, 0xF7, + 0x99, 0xFD, 0x01, 0x9B, 0x1B, 0x1B, 0x96, 0xE7, 0x0A, 0x4B, 0x4F, 0xF0, + 0x08, 0x0E, 0x22, 0xE7, 0x01, 0x99, 0xAE, 0xE7, 0x70, 0x78, 0x01, 0x99, + 0x02, 0x30, 0x10, 0xF0, 0xFF, 0x00, 0x42, 0xD0, 0x0B, 0x46, 0xA6, 0xEB, + 0x03, 0x0C, 0x01, 0x44, 0x1C, 0xE0, 0x00, 0xBF, 0xA8, 0xBA, 0x17, 0x00, + 0xE8, 0x61, 0x18, 0x00, 0xB8, 0xB2, 0x15, 0x00, 0xD4, 0x61, 0x18, 0x00, + 0xF2, 0x61, 0x18, 0x00, 0xBC, 0xB2, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x68, 0xCB, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x18, 0x63, 0x18, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x9C, 0xBF, 0x15, 0x00, 0xE4, 0xB8, 0x17, 0x00, + 0x1C, 0xF8, 0x03, 0x20, 0x03, 0xF8, 0x01, 0x2B, 0x99, 0x42, 0xF9, 0xD1, + 0xDF, 0xF8, 0x48, 0x80, 0x01, 0x9B, 0x98, 0xF8, 0x76, 0x21, 0x03, 0x44, + 0xA9, 0xEB, 0x00, 0x09, 0x01, 0x93, 0xD3, 0x07, 0x1F, 0xFA, 0x89, 0xF9, + 0x06, 0x44, 0x7F, 0xF5, 0x6F, 0xAF, 0x68, 0xE7, 0x41, 0xF2, 0x0B, 0x03, + 0x15, 0xF8, 0x03, 0x80, 0xA3, 0xE6, 0x41, 0xF2, 0x0B, 0x03, 0x02, 0x22, + 0xEA, 0x54, 0x00, 0x20, 0xFF, 0xF7, 0xDE, 0xF8, 0x4F, 0xE7, 0xDF, 0xF8, + 0x10, 0x80, 0x98, 0xF8, 0x76, 0x31, 0xDB, 0x07, 0x3F, 0xF5, 0x55, 0xAF, + 0x5D, 0xE7, 0x00, 0xBF, 0xE4, 0xB8, 0x17, 0x00, 0xF0, 0xB5, 0x4C, 0x4B, + 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x83, 0xB0, 0x04, 0xD1, 0x4A, 0x4A, + 0x13, 0x68, 0x23, 0xF4, 0x00, 0x13, 0x13, 0x60, 0x48, 0x4C, 0x49, 0x4D, + 0x23, 0x68, 0x5B, 0x07, 0x4E, 0xD4, 0x48, 0x4E, 0x41, 0xF2, 0x0A, 0x03, + 0xEB, 0x5C, 0x5B, 0xB9, 0x44, 0x4A, 0x19, 0x46, 0x02, 0xF5, 0x80, 0x54, + 0x80, 0x20, 0x11, 0x72, 0x82, 0xF8, 0x44, 0x00, 0x40, 0x32, 0x94, 0x42, + 0xF9, 0xD1, 0xA9, 0x80, 0x29, 0x68, 0x91, 0xF8, 0x70, 0x21, 0x01, 0x2A, + 0x5F, 0xD0, 0x00, 0x24, 0x20, 0x46, 0x41, 0xF2, 0x3A, 0x02, 0xA8, 0x54, + 0x91, 0xF8, 0x6E, 0x21, 0x91, 0xF8, 0x6F, 0x11, 0x08, 0x20, 0xCD, 0xE9, + 0x00, 0x41, 0x38, 0x49, 0xF7, 0xF7, 0xDC, 0xFA, 0x41, 0xF2, 0x0A, 0x03, + 0xEB, 0x5C, 0x83, 0xB9, 0x35, 0x49, 0x36, 0x4A, 0x0B, 0x68, 0x36, 0x48, + 0x43, 0xF0, 0x04, 0x03, 0x0B, 0x60, 0x13, 0x68, 0x03, 0x80, 0x13, 0x68, + 0x1B, 0x0C, 0x1B, 0x04, 0x43, 0xF4, 0xBB, 0x63, 0x43, 0xF0, 0x04, 0x03, + 0x13, 0x60, 0x73, 0x68, 0x01, 0x21, 0x43, 0xF0, 0x20, 0x03, 0x04, 0x20, + 0x73, 0x60, 0xF5, 0xF7, 0x01, 0xFE, 0x2B, 0x68, 0xD3, 0xF8, 0x68, 0x11, + 0x19, 0xB1, 0xB3, 0xF8, 0x6C, 0x21, 0xC8, 0x2A, 0x23, 0xD9, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x40, 0xFF, 0xF7, 0xCE, 0xBD, 0x2B, 0x68, 0x25, 0x4A, + 0x93, 0xF8, 0x6E, 0x31, 0x24, 0x49, 0x1E, 0x4E, 0x10, 0x68, 0x24, 0x4A, + 0xC0, 0x8E, 0x4F, 0xF4, 0xA4, 0x67, 0x07, 0xFB, 0x03, 0x13, 0x03, 0x21, + 0x71, 0x77, 0x11, 0x69, 0x20, 0x4A, 0x73, 0x61, 0x01, 0x44, 0xD2, 0xF8, + 0xE0, 0x31, 0x06, 0xF1, 0x0C, 0x00, 0x98, 0x47, 0x01, 0x23, 0x33, 0x77, + 0x23, 0x68, 0x23, 0xF0, 0x04, 0x03, 0x23, 0x60, 0x92, 0xE7, 0x1A, 0x48, + 0x09, 0xF0, 0x60, 0xFF, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x40, 0xFF, 0xF7, + 0xA7, 0xBD, 0x91, 0xF8, 0xFC, 0x20, 0x07, 0x2A, 0x9B, 0xD1, 0x01, 0xF1, + 0xFD, 0x00, 0x14, 0x49, 0x09, 0xF0, 0x22, 0xFF, 0x41, 0xF2, 0x0A, 0x03, + 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0xEB, 0x5C, 0x29, 0x68, 0x04, 0x46, + 0x8F, 0xE7, 0x00, 0xBF, 0x74, 0x36, 0x17, 0x00, 0x6C, 0x00, 0x32, 0x40, + 0x4C, 0x00, 0x32, 0x40, 0xA8, 0xBA, 0x17, 0x00, 0x1C, 0x9E, 0x17, 0x00, + 0xCC, 0xBF, 0x15, 0x00, 0x94, 0x40, 0x04, 0x40, 0x20, 0x04, 0x32, 0x40, + 0x28, 0x25, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x18, 0x63, 0x18, 0x00, + 0x54, 0xBF, 0x15, 0x00, 0x00, 0x22, 0x02, 0x81, 0xE7, 0xF7, 0xE0, 0xBA, + 0x2D, 0xE9, 0xF0, 0x41, 0x14, 0x46, 0x52, 0x78, 0x00, 0x2B, 0x18, 0xBF, + 0x02, 0x23, 0x52, 0x06, 0x44, 0xBF, 0x08, 0x33, 0xDB, 0xB2, 0x23, 0x44, + 0x06, 0x46, 0x9A, 0x7F, 0x08, 0x2A, 0x0D, 0x46, 0x03, 0xD0, 0x00, 0x27, + 0x38, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0xDA, 0x7F, 0x06, 0x2A, 0xF8, 0xD1, + 0x93, 0xF8, 0x26, 0x70, 0x00, 0x2F, 0xF4, 0xD1, 0x93, 0xF8, 0x27, 0x80, + 0xB8, 0xF1, 0x01, 0x0F, 0x07, 0xD0, 0xB8, 0xF1, 0x02, 0x0F, 0xED, 0xD1, + 0x13, 0x49, 0x80, 0x20, 0xF7, 0xF7, 0x2E, 0xFA, 0xE8, 0xE7, 0x93, 0xF8, + 0x3A, 0x70, 0x93, 0xF8, 0x3B, 0xC0, 0x93, 0xF8, 0x38, 0x00, 0x93, 0xF8, + 0x39, 0x20, 0x0B, 0x68, 0x0D, 0x49, 0x3F, 0x04, 0x47, 0xEA, 0x0C, 0x67, + 0x07, 0x43, 0x47, 0xEA, 0x02, 0x27, 0x3A, 0x46, 0x80, 0x20, 0xF7, 0xF7, + 0x19, 0xFA, 0x2B, 0x68, 0x9F, 0x42, 0x01, 0xD0, 0x47, 0x46, 0xCF, 0xE7, + 0x06, 0x4B, 0x30, 0x78, 0x9B, 0x69, 0x22, 0x46, 0x04, 0xF1, 0x10, 0x01, + 0x47, 0x46, 0x98, 0x47, 0xC6, 0xE7, 0x00, 0xBF, 0x08, 0xC0, 0x15, 0x00, + 0xE8, 0xBF, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, 0xF8, 0xB5, 0x21, 0x4B, + 0x21, 0x4D, 0x1E, 0x68, 0x95, 0xF8, 0x44, 0x40, 0xB6, 0xF9, 0x00, 0x70, + 0x1F, 0x4B, 0x04, 0xEB, 0x84, 0x06, 0x00, 0x2F, 0x8E, 0x46, 0x03, 0xEB, + 0x06, 0x16, 0x23, 0xDB, 0xA7, 0x00, 0x07, 0xEB, 0x04, 0x0C, 0x03, 0xEB, + 0x0C, 0x1C, 0xCC, 0xF8, 0x0C, 0x00, 0x10, 0xB1, 0x01, 0x7C, 0x8C, 0xF8, + 0x10, 0x10, 0x3C, 0x44, 0x03, 0xEB, 0x04, 0x13, 0x31, 0x46, 0x5A, 0x64, + 0xA3, 0xF8, 0x4C, 0xE0, 0x13, 0x48, 0xF5, 0xF7, 0xB5, 0xFF, 0x95, 0xF8, + 0x44, 0x20, 0x12, 0x4B, 0x01, 0x32, 0xA3, 0xFB, 0x02, 0x13, 0xDB, 0x09, + 0x03, 0xEB, 0x43, 0x03, 0xA2, 0xEB, 0x83, 0x13, 0x85, 0xF8, 0x44, 0x30, + 0x30, 0x46, 0xF8, 0xBD, 0x04, 0xEB, 0x84, 0x01, 0x03, 0xEB, 0x01, 0x11, + 0xA7, 0x00, 0xB1, 0xF8, 0x4C, 0x10, 0x00, 0x29, 0xD3, 0xD0, 0x08, 0x49, + 0x08, 0x48, 0xC6, 0x22, 0xF7, 0xF7, 0xBA, 0xFB, 0x00, 0x26, 0xED, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0xE0, 0x63, 0x18, 0x00, + 0xE8, 0xDE, 0x17, 0x00, 0xAB, 0xAA, 0xAA, 0xAA, 0x70, 0x79, 0x15, 0x00, + 0x14, 0xC0, 0x15, 0x00, 0x70, 0xB5, 0x0C, 0x4D, 0x42, 0x69, 0x04, 0x46, + 0x04, 0x21, 0x00, 0x20, 0xFF, 0xF7, 0xA6, 0xFF, 0x21, 0x46, 0x28, 0x46, + 0xF5, 0xF7, 0xCC, 0xFF, 0xA5, 0xF1, 0x08, 0x00, 0x21, 0x46, 0xF5, 0xF7, + 0x77, 0xFF, 0x05, 0x4B, 0xA5, 0xF1, 0x20, 0x00, 0xD3, 0xF8, 0x38, 0x31, + 0xBD, 0xE8, 0x70, 0x40, 0x18, 0x47, 0x00, 0xBF, 0x08, 0xDF, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0xB3, 0x4B, 0x01, 0xF0, + 0x7C, 0x04, 0x1A, 0x7A, 0x04, 0x3C, 0x00, 0xEB, 0x02, 0x0C, 0x01, 0xF4, + 0x80, 0x6E, 0x18, 0x2C, 0x0E, 0xD8, 0xDF, 0xE8, 0x04, 0xF0, 0x54, 0x0D, + 0x0D, 0x0D, 0x58, 0x0D, 0x0D, 0x0D, 0x8D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xB5, 0x00, + 0x00, 0x24, 0xA7, 0x4D, 0x2D, 0x68, 0x2D, 0x78, 0xAD, 0x07, 0x03, 0xD5, + 0x01, 0xF0, 0x3C, 0x01, 0x3C, 0x29, 0x02, 0xD0, 0x20, 0x46, 0xBD, 0xE8, + 0xF0, 0x87, 0xBE, 0xF1, 0x00, 0x0F, 0x00, 0xF0, 0xD1, 0x80, 0xBC, 0xF8, + 0x02, 0x10, 0x9E, 0x7A, 0x9E, 0x4C, 0x8D, 0x0B, 0x4F, 0xF4, 0xA4, 0x61, + 0xC5, 0xEB, 0x05, 0x17, 0x01, 0xFB, 0x06, 0xF1, 0x01, 0xEB, 0xC7, 0x01, + 0x21, 0x44, 0x2F, 0x01, 0x91, 0xF8, 0x3B, 0xE2, 0xBE, 0xF1, 0x00, 0x0F, + 0x00, 0xF0, 0xCC, 0x80, 0x91, 0xF8, 0x38, 0x12, 0x01, 0x29, 0x00, 0xF0, + 0xEB, 0x80, 0x02, 0x29, 0x00, 0xF0, 0xC1, 0x80, 0x0A, 0x1F, 0x01, 0x2A, + 0x40, 0xF2, 0xBD, 0x80, 0x1A, 0x7A, 0x04, 0x32, 0x1A, 0x72, 0xDC, 0xF8, + 0x00, 0x00, 0xC1, 0x17, 0xC3, 0xE9, 0x04, 0x01, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x06, 0xF2, 0x79, 0x1B, 0x02, 0xF5, 0xEC, 0x72, 0x02, 0xEB, + 0xC1, 0x02, 0x22, 0x44, 0x1A, 0x62, 0x01, 0x24, 0xC2, 0xE7, 0x14, 0x1D, + 0x1C, 0x72, 0x01, 0x24, 0xB5, 0xE7, 0x02, 0xF1, 0x08, 0x04, 0x1C, 0x72, + 0x30, 0xF8, 0x02, 0x80, 0xBC, 0xF8, 0x06, 0x40, 0x9C, 0xF8, 0x02, 0xA0, + 0x93, 0xF8, 0x30, 0x90, 0x4F, 0xEA, 0x08, 0x28, 0x1F, 0xFA, 0x88, 0xF8, + 0x46, 0x46, 0xF7, 0x17, 0x44, 0xEA, 0x07, 0x06, 0xBC, 0xF8, 0x04, 0x40, + 0x4A, 0xEA, 0x04, 0x44, 0x44, 0xEA, 0x08, 0x04, 0x49, 0xF0, 0x03, 0x09, + 0xC3, 0xE9, 0x04, 0x46, 0x83, 0xF8, 0x30, 0x90, 0xBE, 0xF1, 0x00, 0x0F, + 0x5F, 0xD0, 0x9E, 0x7A, 0xBC, 0xF8, 0x02, 0x50, 0x4F, 0xF4, 0xA4, 0x64, + 0x04, 0xFB, 0x06, 0xF4, 0xAD, 0x0B, 0x6E, 0x4E, 0x04, 0xF5, 0xEC, 0x74, + 0xC5, 0xEB, 0x05, 0x15, 0x04, 0xEB, 0xC5, 0x04, 0x34, 0x44, 0x1C, 0x62, + 0x01, 0x24, 0x80, 0xE7, 0xBE, 0xF1, 0x00, 0x0F, 0x50, 0xD0, 0x9E, 0x7A, + 0xBC, 0xF8, 0x02, 0x50, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x06, 0xF4, + 0xAD, 0x0B, 0x63, 0x4E, 0x04, 0xF5, 0xEC, 0x74, 0xC5, 0xEB, 0x05, 0x15, + 0x04, 0xEB, 0xC5, 0x04, 0x34, 0x44, 0x02, 0xF1, 0x08, 0x05, 0x1D, 0x72, + 0xBC, 0xF8, 0x04, 0x60, 0x93, 0xF8, 0x30, 0x80, 0x1C, 0x62, 0x84, 0x5A, + 0xBC, 0xF8, 0x06, 0x50, 0x5D, 0x61, 0x44, 0xEA, 0x06, 0x44, 0x48, 0xF0, + 0x02, 0x05, 0x1C, 0x61, 0x83, 0xF8, 0x30, 0x50, 0x01, 0x24, 0x58, 0xE7, + 0xBE, 0xF1, 0x00, 0x0F, 0x2F, 0xD0, 0x9E, 0x7A, 0xBC, 0xF8, 0x02, 0x50, + 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x06, 0xF4, 0xAD, 0x0B, 0x4F, 0x4E, + 0x04, 0xF5, 0xEC, 0x74, 0xC5, 0xEB, 0x05, 0x15, 0x04, 0xEB, 0xC5, 0x04, + 0x34, 0x44, 0x02, 0xF1, 0x12, 0x05, 0x66, 0x46, 0x1D, 0x72, 0x56, 0xF8, + 0x02, 0x7F, 0x93, 0xF8, 0x30, 0x50, 0x76, 0x68, 0x1C, 0x62, 0x45, 0xF0, + 0x02, 0x04, 0x83, 0xF8, 0x30, 0x40, 0xC3, 0xE9, 0x04, 0x76, 0x01, 0x24, + 0x33, 0xE7, 0x5C, 0x7A, 0x42, 0x4D, 0x4F, 0xF4, 0x1E, 0x76, 0x06, 0xFB, + 0x04, 0x54, 0xA8, 0xE7, 0x5C, 0x7A, 0x3F, 0x4D, 0x4F, 0xF4, 0x1E, 0x76, + 0x06, 0xFB, 0x04, 0x54, 0xB7, 0xE7, 0x5C, 0x7A, 0x3B, 0x4D, 0x4F, 0xF4, + 0x1E, 0x76, 0x06, 0xFB, 0x04, 0x54, 0xD8, 0xE7, 0x59, 0x7A, 0x39, 0x4D, + 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, 0x01, 0xF4, 0x29, 0x19, 0x91, 0xF8, + 0x98, 0x10, 0x01, 0x29, 0x43, 0xD0, 0x02, 0x29, 0x04, 0xD1, 0x34, 0x48, + 0xF7, 0xF7, 0x36, 0xF8, 0x00, 0x24, 0x15, 0xE7, 0x0A, 0x1F, 0x01, 0x2A, + 0xF7, 0xD9, 0x18, 0x7A, 0xBC, 0xF8, 0x02, 0x10, 0x9D, 0x7A, 0x2B, 0x4E, + 0x04, 0x30, 0x18, 0x72, 0xDC, 0xF8, 0x00, 0x40, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x05, 0xF2, 0x89, 0x0B, 0xE5, 0x17, 0xC1, 0xEB, 0x01, 0x11, + 0x02, 0xF5, 0xEC, 0x72, 0xC3, 0xE9, 0x04, 0x45, 0x02, 0xEB, 0xC1, 0x02, + 0x32, 0x44, 0x92, 0xF8, 0x63, 0x10, 0x00, 0x29, 0xDE, 0xD0, 0x1A, 0x62, + 0x01, 0x24, 0xF3, 0xE6, 0x19, 0x7A, 0x93, 0xF8, 0x30, 0xE0, 0x08, 0x31, + 0x19, 0x72, 0x82, 0x5A, 0x9C, 0xF8, 0x02, 0x80, 0xBC, 0xF8, 0x04, 0x00, + 0xBC, 0xF8, 0x06, 0x90, 0x12, 0x02, 0x92, 0xB2, 0xD1, 0x17, 0x48, 0xEA, + 0x00, 0x40, 0x49, 0xEA, 0x01, 0x09, 0x02, 0x43, 0x4E, 0xF0, 0x03, 0x0E, + 0xC3, 0xE9, 0x04, 0x29, 0x83, 0xF8, 0x30, 0xE0, 0x08, 0xE7, 0x19, 0x7A, + 0x93, 0xF8, 0x30, 0x70, 0x08, 0x31, 0x19, 0x72, 0x81, 0x5A, 0xBC, 0xF8, + 0x04, 0x80, 0x9C, 0xF8, 0x02, 0x00, 0xBC, 0xF8, 0x06, 0x60, 0x09, 0x02, + 0x89, 0xB2, 0x04, 0xF1, 0x38, 0x02, 0x40, 0xEA, 0x08, 0x44, 0x0C, 0x43, + 0xC9, 0x17, 0x47, 0xF0, 0x03, 0x07, 0x0E, 0x43, 0xC3, 0xE9, 0x04, 0x46, + 0x2A, 0x44, 0x83, 0xF8, 0x30, 0x70, 0xC0, 0xE7, 0xB0, 0xDE, 0x17, 0x00, + 0x34, 0x36, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xA0, 0x65, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x34, 0xC0, 0x15, 0x00, 0x70, 0xB5, 0x18, 0x4E, + 0x18, 0x4A, 0xB3, 0x7A, 0x75, 0x7A, 0x12, 0x7C, 0x1B, 0x02, 0x43, 0xEA, + 0x05, 0x43, 0xF5, 0x7A, 0x04, 0x46, 0x00, 0x6E, 0x43, 0xEA, 0x05, 0x63, + 0xFF, 0x2A, 0x0D, 0x46, 0x43, 0xEA, 0x00, 0x03, 0x17, 0xD0, 0x41, 0xF0, + 0x80, 0x05, 0x43, 0xF0, 0x80, 0x03, 0xEA, 0x07, 0x48, 0xBF, 0x43, 0xF0, + 0x40, 0x03, 0x0D, 0x4A, 0x58, 0xBF, 0x23, 0xF0, 0x40, 0x03, 0x23, 0x66, + 0x20, 0x46, 0xD2, 0xF8, 0xA8, 0x32, 0x98, 0x47, 0x32, 0x6C, 0x29, 0x46, + 0x20, 0x46, 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0xEF, 0xBD, 0x29, 0x06, + 0x58, 0xBF, 0x23, 0xF0, 0x80, 0x03, 0xE6, 0xD5, 0xE3, 0xE7, 0x00, 0xBF, + 0xB0, 0xDE, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xF8, 0xB5, 0x21, 0x4B, 0x21, 0x4E, 0x1B, 0x7C, 0xFF, 0x2B, 0x04, 0x46, + 0x0D, 0x46, 0x21, 0xD0, 0xB2, 0x7A, 0xFF, 0x2A, 0x32, 0xD0, 0x01, 0xF0, + 0x01, 0x01, 0x45, 0xF0, 0x80, 0x05, 0x77, 0x7A, 0x20, 0x6E, 0x13, 0x02, + 0x43, 0xEA, 0x07, 0x43, 0x03, 0x43, 0x43, 0xF0, 0x82, 0x03, 0x11, 0xB3, + 0x43, 0xF0, 0x40, 0x03, 0x16, 0x49, 0x23, 0x66, 0x00, 0x22, 0xD1, 0xF8, + 0xA8, 0x32, 0x86, 0xF8, 0x32, 0x20, 0x20, 0x46, 0x98, 0x47, 0x32, 0x6C, + 0x29, 0x46, 0x20, 0x46, 0xBD, 0xE8, 0xF8, 0x40, 0xFF, 0xF7, 0xB8, 0xBD, + 0xB3, 0x7A, 0x71, 0x7A, 0x02, 0x6E, 0x1B, 0x02, 0x43, 0xEA, 0x01, 0x43, + 0x13, 0x43, 0x2A, 0x06, 0x0D, 0xD4, 0x23, 0xF0, 0x80, 0x03, 0x05, 0xF0, + 0x01, 0x01, 0x43, 0xF0, 0x02, 0x03, 0x00, 0x29, 0xDC, 0xD1, 0x23, 0xF0, + 0x40, 0x03, 0xDB, 0xE7, 0x00, 0x21, 0x80, 0x25, 0xCD, 0xE7, 0x05, 0xF0, + 0x01, 0x01, 0xD0, 0xE7, 0x00, 0x88, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x32, 0x4B, 0x01, 0x88, 0x70, 0xB4, 0x19, 0x80, + 0xC2, 0x8A, 0x5A, 0x80, 0x01, 0xF0, 0x88, 0x06, 0xC2, 0xF3, 0x0B, 0x14, + 0x00, 0x25, 0x02, 0xF0, 0x0F, 0x02, 0x88, 0x2E, 0x9C, 0x80, 0x9A, 0x71, + 0x8C, 0xB2, 0x83, 0xF8, 0x30, 0x50, 0x45, 0xD0, 0xDD, 0x71, 0x04, 0xF4, + 0x40, 0x72, 0xB2, 0xF5, 0x40, 0x7F, 0x04, 0xF0, 0xFC, 0x05, 0x0C, 0xBF, + 0x1E, 0x22, 0x18, 0x22, 0x88, 0x2D, 0x08, 0xBF, 0x02, 0x32, 0x0E, 0x04, + 0x44, 0xBF, 0x04, 0x32, 0xD2, 0xB2, 0x1A, 0x72, 0x02, 0x79, 0xD5, 0x07, + 0x44, 0xBF, 0x08, 0x22, 0x83, 0xF8, 0x30, 0x20, 0xE4, 0x05, 0x12, 0xD5, + 0x02, 0x8A, 0x9A, 0x84, 0x42, 0x8A, 0xDA, 0x84, 0x82, 0x8A, 0x1A, 0x85, + 0x02, 0x88, 0x91, 0x05, 0x12, 0xD5, 0xD2, 0x05, 0x18, 0xD5, 0x02, 0x8B, + 0x5A, 0x85, 0x42, 0x8B, 0x9A, 0x85, 0x82, 0x8B, 0xDA, 0x85, 0x70, 0xBC, + 0x70, 0x47, 0x82, 0x88, 0x9A, 0x84, 0xC2, 0x88, 0xDA, 0x84, 0x02, 0x89, + 0x1A, 0x85, 0x02, 0x88, 0x91, 0x05, 0xEC, 0xD4, 0x42, 0x89, 0x5A, 0x85, + 0x82, 0x89, 0x9A, 0x85, 0xC2, 0x89, 0xDA, 0x85, 0x70, 0xBC, 0x70, 0x47, + 0x02, 0x8A, 0x5A, 0x85, 0x42, 0x8A, 0x9A, 0x85, 0x82, 0x8A, 0xDA, 0x85, + 0x70, 0xBC, 0x70, 0x47, 0x04, 0xF4, 0x40, 0x72, 0xB2, 0xF5, 0x40, 0x7F, + 0x0C, 0xBF, 0xC5, 0x8B, 0x05, 0x8B, 0x05, 0xF0, 0x07, 0x05, 0xDD, 0x71, + 0xB1, 0xE7, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, 0xF8, 0xB5, 0x05, 0x22, + 0x18, 0x23, 0x0C, 0x21, 0x41, 0xF2, 0x06, 0x40, 0xF5, 0xF7, 0x74, 0xF8, + 0x0F, 0x4A, 0x03, 0x46, 0x51, 0x7A, 0x0F, 0x48, 0x94, 0x69, 0x4F, 0xF4, + 0x1E, 0x75, 0x05, 0xFB, 0x01, 0x01, 0xD2, 0xE9, 0x04, 0x67, 0x51, 0xF8, + 0x26, 0x0F, 0x89, 0x88, 0x99, 0x80, 0xC3, 0xE9, 0x02, 0x67, 0x18, 0x60, + 0x91, 0x7A, 0x99, 0x74, 0xC4, 0xF3, 0x80, 0x24, 0x1C, 0x74, 0x12, 0x6A, + 0x92, 0xF8, 0x61, 0x20, 0x5A, 0x74, 0x18, 0x46, 0xBD, 0xE8, 0xF8, 0x40, + 0xF5, 0xF7, 0x84, 0xB8, 0xB0, 0xDE, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0xDF, 0xF8, 0x3C, 0x82, 0xD8, 0xF8, 0x00, 0x40, + 0x27, 0x78, 0x87, 0xB0, 0x17, 0xF0, 0x01, 0x07, 0x04, 0x46, 0x03, 0x93, + 0x08, 0xD0, 0x43, 0x6D, 0x03, 0xF0, 0x07, 0x03, 0x02, 0x2B, 0x7F, 0xD0, + 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x80, 0x4D, 0x89, 0x46, + 0x00, 0x2A, 0x40, 0xF0, 0xA2, 0x80, 0x02, 0x8E, 0x2B, 0x7A, 0xC6, 0x69, + 0xD4, 0x1A, 0x03, 0x9A, 0xA4, 0xB2, 0x10, 0x31, 0x12, 0xB1, 0x07, 0x2C, + 0x40, 0xF2, 0xA9, 0x80, 0x08, 0x22, 0x48, 0x46, 0xFA, 0xF7, 0x92, 0xFF, + 0x29, 0x7A, 0x8A, 0xB2, 0xD6, 0xE9, 0x02, 0x03, 0x08, 0x3C, 0x01, 0x33, + 0xA5, 0xB2, 0x1C, 0x1A, 0xA4, 0xB2, 0x4B, 0x19, 0x9C, 0x42, 0x01, 0x44, + 0x80, 0xF2, 0x82, 0x80, 0xDF, 0xF8, 0xD4, 0xA1, 0x13, 0x1B, 0x1D, 0x44, + 0xA2, 0x1A, 0x92, 0xB2, 0x48, 0x46, 0xAD, 0xB2, 0xFA, 0xF7, 0x7A, 0xFF, + 0x00, 0x22, 0x95, 0xB1, 0xDA, 0xF8, 0x00, 0x30, 0x76, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x93, 0x42, 0x4D, 0xDB, 0xD6, 0xE9, 0x02, 0x14, 0x01, 0x34, + 0x64, 0x1A, 0xA4, 0xB2, 0xAC, 0x42, 0xE7, 0xD3, 0x2C, 0x46, 0x2A, 0x46, + 0x48, 0x46, 0xFA, 0xF7, 0x65, 0xFF, 0xDF, 0xF8, 0x98, 0xE1, 0x0D, 0xF1, + 0x10, 0x0C, 0x08, 0x25, 0xD6, 0xE9, 0x02, 0x32, 0x01, 0x32, 0x98, 0xB2, + 0x92, 0xB2, 0xA2, 0xEB, 0x00, 0x0A, 0x1F, 0xFA, 0x8A, 0xFA, 0x29, 0x19, + 0x51, 0x45, 0x23, 0x44, 0x3B, 0xDD, 0xAA, 0xEB, 0x04, 0x0A, 0x1F, 0xFA, + 0x8A, 0xFA, 0x0A, 0xF1, 0xFF, 0x3B, 0xBA, 0xF1, 0x00, 0x0F, 0x37, 0xD0, + 0x82, 0x1A, 0x14, 0x44, 0x25, 0x44, 0xAD, 0xB2, 0x59, 0x1C, 0x59, 0x44, + 0xAC, 0xEB, 0x03, 0x00, 0x1A, 0x78, 0xC2, 0x54, 0x01, 0x33, 0x8B, 0x42, + 0xFA, 0xD1, 0xD4, 0x44, 0x65, 0xB3, 0xDE, 0xF8, 0x00, 0x30, 0x76, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x24, 0xA3, 0x42, 0xD2, 0xDA, 0x00, 0x2E, + 0xD0, 0xD1, 0x47, 0x49, 0x47, 0x48, 0x40, 0xF2, 0x66, 0x42, 0xF7, 0xF7, + 0x6F, 0xF8, 0x7F, 0xE7, 0xFF, 0xF7, 0x40, 0xFF, 0x00, 0x27, 0x38, 0x46, + 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x00, 0x2E, 0xAF, 0xD1, 0x3F, 0x49, + 0x3F, 0x48, 0x40, 0xF2, 0x3C, 0x42, 0xF7, 0xF7, 0x5F, 0xF8, 0x38, 0x46, + 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xAA, 0x46, 0x05, 0xF1, 0xFF, 0x3B, + 0x00, 0x25, 0xCB, 0xE7, 0x01, 0x44, 0x8A, 0x1A, 0x95, 0xB2, 0xD2, 0xE7, + 0x03, 0x9B, 0x00, 0x2B, 0x3C, 0xD1, 0xDD, 0xE9, 0x04, 0x23, 0xC9, 0xE9, + 0x04, 0x23, 0x01, 0x27, 0x38, 0x46, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x2A, 0x44, 0x94, 0xB2, 0x95, 0xE7, 0x29, 0x6A, 0xEB, 0x79, 0x00, 0x93, + 0x58, 0x31, 0x05, 0xF1, 0x2A, 0x03, 0x05, 0xF1, 0x24, 0x02, 0x48, 0x46, + 0xFA, 0xF7, 0xCE, 0xFE, 0x29, 0x7A, 0x23, 0x8E, 0xE6, 0x69, 0x5C, 0x1A, + 0xA4, 0xB2, 0x8A, 0xB2, 0x5C, 0xE7, 0xB5, 0x68, 0x03, 0x91, 0x22, 0x46, + 0x48, 0x46, 0x1D, 0x44, 0xFA, 0xF7, 0xE6, 0xFE, 0x03, 0x99, 0xC4, 0xF1, + 0x08, 0x06, 0x04, 0xAB, 0xF6, 0xB2, 0x21, 0x44, 0xF2, 0x18, 0xC9, 0x1A, + 0xC8, 0x5C, 0x03, 0xF8, 0x01, 0x0B, 0x9A, 0x42, 0xFA, 0xD1, 0xD6, 0xF1, + 0x08, 0x06, 0x07, 0xD0, 0x2B, 0x46, 0xD2, 0x1A, 0x35, 0x44, 0x19, 0x78, + 0xD1, 0x54, 0x01, 0x33, 0x9D, 0x42, 0xFA, 0xD1, 0x48, 0x46, 0xFA, 0xF7, + 0x69, 0xFF, 0x04, 0x9A, 0xD9, 0xF8, 0x00, 0x30, 0x9A, 0x42, 0x0D, 0xD0, + 0xD8, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x9B, 0x07, 0x05, 0xD5, 0x03, 0x20, + 0xD8, 0xF7, 0xCE, 0xF9, 0x0F, 0x4B, 0x98, 0x42, 0x12, 0xD1, 0xFF, 0xF7, + 0xD1, 0xFE, 0x0D, 0xE7, 0xD9, 0xF8, 0x04, 0x30, 0x05, 0x9A, 0x9A, 0x42, + 0xEC, 0xD1, 0xD8, 0xF8, 0x00, 0x30, 0x1B, 0x78, 0x9A, 0x07, 0xA6, 0xD5, + 0x03, 0x20, 0xD8, 0xF7, 0xBB, 0xF9, 0x06, 0x4B, 0x98, 0x42, 0xA0, 0xD0, + 0x05, 0x48, 0xF6, 0xF7, 0xA1, 0xFD, 0xF9, 0xE6, 0xB0, 0xDE, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xA0, 0x96, 0x15, 0x00, 0x1C, 0xDF, 0x44, 0x21, + 0x44, 0xC0, 0x15, 0x00, 0x34, 0x36, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x10, 0xB5, 0x10, 0x48, 0xF5, 0xF7, 0xF8, 0xFB, 0x10, 0xB1, 0x04, 0x46, + 0x20, 0x46, 0x10, 0xBD, 0x0D, 0x48, 0xF5, 0xF7, 0xF1, 0xFB, 0x0D, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x04, 0x46, 0x06, 0xDB, + 0x62, 0x69, 0x04, 0x21, 0x00, 0x20, 0xFF, 0xF7, 0xC7, 0xFB, 0x20, 0x46, + 0x10, 0xBD, 0x00, 0x28, 0xF6, 0xD1, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF2, + 0xEA, 0x42, 0xF6, 0xF7, 0xEB, 0xFF, 0xEF, 0xE7, 0x00, 0xDF, 0x17, 0x00, + 0x08, 0xDF, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x54, 0xC0, 0x15, 0x00, 0x10, 0xB5, 0x04, 0x46, 0x00, 0x20, 0x63, 0x79, + 0x62, 0x69, 0x83, 0x42, 0x14, 0xBF, 0x18, 0x21, 0x08, 0x21, 0xFF, 0xF7, + 0xA7, 0xFB, 0x08, 0xB1, 0xA3, 0x89, 0x83, 0x64, 0x10, 0xBD, 0x00, 0xBF, + 0x2D, 0xE9, 0xF0, 0x47, 0xA3, 0x4F, 0x8A, 0xB0, 0x05, 0x46, 0x14, 0x46, + 0x1A, 0xB3, 0x3E, 0x88, 0x97, 0xF8, 0x07, 0x80, 0x16, 0xF4, 0x80, 0x66, + 0x22, 0xD1, 0x97, 0xF8, 0x06, 0xA0, 0xBA, 0xF1, 0x00, 0x0F, 0x6A, 0xD0, + 0xBC, 0x6D, 0xBA, 0x88, 0x14, 0xB9, 0x31, 0xE1, 0x24, 0x68, 0xEC, 0xB1, + 0xA3, 0x79, 0x8B, 0x42, 0xFA, 0xD1, 0xE3, 0x79, 0x43, 0x45, 0xF7, 0xD1, + 0x63, 0x89, 0x93, 0x42, 0xF4, 0xD1, 0x23, 0x7A, 0x53, 0x45, 0x00, 0xF0, + 0x90, 0x80, 0x4F, 0xF0, 0x00, 0x0A, 0x50, 0x46, 0x0A, 0xB0, 0xBD, 0xE8, + 0xF0, 0x87, 0x3E, 0x88, 0x16, 0xF4, 0x80, 0x66, 0x90, 0x46, 0xDC, 0xD0, + 0xBC, 0x6D, 0xBA, 0x88, 0x97, 0xF8, 0x06, 0xA0, 0x00, 0x2C, 0xE1, 0xD1, + 0xBA, 0xF1, 0x00, 0x0F, 0xEB, 0xD1, 0x03, 0x91, 0xFF, 0xF7, 0x88, 0xFF, + 0x01, 0x26, 0x03, 0x99, 0x81, 0x71, 0x80, 0xF8, 0x07, 0x80, 0x06, 0x72, + 0xBA, 0x88, 0x80, 0xF8, 0x04, 0xA0, 0x39, 0x7A, 0x82, 0x4B, 0xC0, 0xF8, + 0x10, 0xA0, 0x41, 0x72, 0x19, 0x69, 0xDF, 0xF8, 0x0C, 0x92, 0x80, 0x4B, + 0x42, 0x81, 0x01, 0xF5, 0xC3, 0x31, 0x83, 0x63, 0xC0, 0x63, 0xD9, 0xF8, + 0xE0, 0x31, 0x04, 0x46, 0xA0, 0x31, 0x34, 0x30, 0x98, 0x47, 0x97, 0xF8, + 0x30, 0x30, 0xDA, 0x07, 0x00, 0xF1, 0xC9, 0x80, 0x2B, 0x6E, 0x23, 0xF0, + 0x20, 0x03, 0x2B, 0x66, 0xD9, 0xF8, 0xE8, 0x32, 0x01, 0x21, 0x28, 0x46, + 0x98, 0x47, 0x3B, 0x6C, 0xFA, 0x69, 0x73, 0x48, 0xC4, 0xE9, 0x04, 0x23, + 0x97, 0xF8, 0x31, 0x30, 0x63, 0x71, 0x2B, 0x8E, 0xA3, 0x81, 0x21, 0x46, + 0xF5, 0xF7, 0x08, 0xFB, 0x6B, 0x4B, 0x4F, 0xF0, 0x01, 0x0A, 0x1B, 0x69, + 0xA3, 0x61, 0x50, 0x46, 0x0A, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x97, 0xF8, + 0x30, 0x30, 0xD8, 0x07, 0x1D, 0xD5, 0x68, 0x4A, 0x01, 0x23, 0xD2, 0xF8, + 0xCC, 0x62, 0x04, 0xA9, 0x1A, 0x46, 0x28, 0x46, 0xB0, 0x47, 0x00, 0x28, + 0x9B, 0xD0, 0x2B, 0x8E, 0x63, 0x4A, 0x08, 0x3B, 0x12, 0x68, 0x2B, 0x86, + 0x13, 0x78, 0x99, 0x07, 0x0B, 0xD5, 0x6B, 0x6D, 0x03, 0xF0, 0x3C, 0x02, + 0x3C, 0x2A, 0x06, 0xD1, 0x23, 0xF0, 0x7C, 0x03, 0x43, 0xF4, 0x00, 0x53, + 0x43, 0xF0, 0x08, 0x03, 0x6B, 0x65, 0x5B, 0x4B, 0xB8, 0x7A, 0x4F, 0xF4, + 0xA4, 0x62, 0x02, 0xFB, 0x00, 0x30, 0x90, 0xF8, 0xC3, 0x34, 0x00, 0x2B, + 0x6D, 0xD1, 0x54, 0x4B, 0x28, 0x46, 0xD3, 0xF8, 0xE8, 0x32, 0x03, 0x21, + 0x98, 0x47, 0x4F, 0xF0, 0x01, 0x0A, 0x50, 0x46, 0x0A, 0xB0, 0xBD, 0xE8, + 0xF0, 0x87, 0x29, 0x8E, 0x94, 0xF8, 0x09, 0x80, 0xA3, 0x89, 0xDF, 0xF8, + 0x30, 0x91, 0xA1, 0xEB, 0x08, 0x08, 0x1F, 0xFA, 0x88, 0xF8, 0x43, 0x44, + 0x0A, 0xF1, 0x01, 0x0A, 0x84, 0xF8, 0x08, 0xA0, 0xA3, 0x81, 0x97, 0xF8, + 0x30, 0x30, 0xDB, 0x07, 0x22, 0xD5, 0xB6, 0xFA, 0x86, 0xF3, 0xD9, 0xF8, + 0xCC, 0x72, 0x5B, 0x09, 0x00, 0x22, 0x04, 0xF1, 0x1C, 0x01, 0x28, 0x46, + 0xB8, 0x47, 0x00, 0x28, 0x4C, 0xD0, 0x2B, 0x6E, 0x00, 0x2E, 0x57, 0xD0, + 0x61, 0x7A, 0x22, 0x69, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x40, 0x03, + 0x2B, 0x66, 0x41, 0x44, 0x00, 0x23, 0x01, 0x93, 0x00, 0x93, 0xD9, 0xF8, + 0xA4, 0x62, 0x89, 0xB2, 0x28, 0x46, 0xB0, 0x47, 0x23, 0x69, 0x43, 0x44, + 0x23, 0x61, 0x87, 0xE7, 0x01, 0x27, 0x2B, 0x6E, 0x22, 0x69, 0x23, 0xF0, + 0x20, 0x03, 0x43, 0xF0, 0x40, 0x03, 0x2B, 0x66, 0x00, 0x23, 0xCD, 0xE9, + 0x00, 0x33, 0x28, 0x46, 0xD9, 0xF8, 0xA4, 0x52, 0xA8, 0x47, 0x23, 0x69, + 0x43, 0x44, 0x23, 0x61, 0x00, 0x2E, 0x7F, 0xF4, 0x73, 0xAF, 0x20, 0x46, + 0xFF, 0xF7, 0xEC, 0xFE, 0x62, 0x69, 0x39, 0x46, 0x00, 0x20, 0xFF, 0xF7, + 0x99, 0xFA, 0xD9, 0xF8, 0xD8, 0x31, 0x04, 0xF1, 0x34, 0x00, 0x98, 0x47, + 0x21, 0x46, 0x20, 0x48, 0xF5, 0xF7, 0xBA, 0xFA, 0x22, 0x48, 0x21, 0x46, + 0xF5, 0xF7, 0x66, 0xFA, 0x5C, 0xE7, 0xEA, 0x69, 0x00, 0xF2, 0xC4, 0x41, + 0x92, 0x68, 0x23, 0x46, 0x63, 0x30, 0xFF, 0xF7, 0x31, 0xFA, 0x01, 0x28, + 0x87, 0xD1, 0x04, 0xE7, 0x61, 0x7A, 0x41, 0x44, 0x89, 0xB2, 0x04, 0x27, + 0xC5, 0xE7, 0x32, 0x46, 0x53, 0x46, 0xD9, 0xF8, 0xCC, 0x62, 0x04, 0xF1, + 0x1C, 0x01, 0x28, 0x46, 0xB0, 0x47, 0x2D, 0xE7, 0xA0, 0x89, 0x61, 0x7A, + 0x22, 0x69, 0x23, 0xF0, 0x20, 0x03, 0x43, 0xF0, 0x40, 0x03, 0x08, 0x38, + 0xA0, 0x81, 0x41, 0x44, 0x2B, 0x66, 0x28, 0x46, 0x33, 0x46, 0xCD, 0xE9, + 0x00, 0x66, 0xD9, 0xF8, 0xA4, 0x52, 0x89, 0xB2, 0xA8, 0x47, 0x23, 0x69, + 0x43, 0x44, 0x23, 0x61, 0x01, 0x27, 0xB8, 0xE7, 0xA2, 0x46, 0xDC, 0xE6, + 0xB0, 0xDE, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0xC5, 0xD3, 0x14, 0x00, + 0x08, 0xDF, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x00, 0xDF, 0x17, 0x00, 0xF8, 0xB5, 0x03, 0x88, + 0x13, 0x4D, 0x13, 0xF4, 0x00, 0x6F, 0x04, 0x46, 0xC3, 0x8A, 0x0B, 0xD1, + 0x05, 0xF1, 0x60, 0x07, 0x00, 0xF1, 0x0A, 0x06, 0x30, 0x68, 0xB2, 0x88, + 0xBA, 0x80, 0x28, 0x66, 0xA5, 0xF8, 0x66, 0x30, 0x01, 0x20, 0xF8, 0xBD, + 0xB5, 0xF8, 0x66, 0x20, 0x9A, 0x42, 0x04, 0xD0, 0x00, 0xF1, 0x0A, 0x06, + 0x05, 0xF1, 0x60, 0x07, 0xEE, 0xE7, 0x05, 0xF1, 0x60, 0x07, 0x00, 0xF1, + 0x0A, 0x06, 0x39, 0x46, 0x30, 0x46, 0x06, 0x22, 0x09, 0xF0, 0xC6, 0xF8, + 0x00, 0x28, 0xEA, 0xD0, 0xE3, 0x8A, 0xE1, 0xE7, 0xB0, 0xDE, 0x17, 0x00, + 0xF0, 0xB4, 0x01, 0xB3, 0x00, 0x22, 0x87, 0x7A, 0x94, 0x46, 0x07, 0xE0, + 0x1E, 0x69, 0x1E, 0xB1, 0x01, 0x3C, 0xC3, 0xF8, 0x10, 0xC0, 0xC4, 0x72, + 0x8D, 0x42, 0x09, 0xD2, 0xBB, 0x18, 0xC4, 0x7A, 0x03, 0xF0, 0x3F, 0x03, + 0x01, 0x32, 0x00, 0xEB, 0x83, 0x03, 0x95, 0xB2, 0x00, 0x2C, 0xED, 0xD1, + 0x03, 0x89, 0x0F, 0x44, 0x19, 0x44, 0x07, 0xF0, 0x3F, 0x07, 0xC1, 0xF3, + 0x0B, 0x01, 0x87, 0x72, 0x01, 0x81, 0xF0, 0xBC, 0x70, 0x47, 0x87, 0x7A, + 0xF2, 0xE7, 0x00, 0xBF, 0xF8, 0xB5, 0x83, 0x7A, 0x04, 0x33, 0x50, 0xF8, + 0x23, 0x30, 0x53, 0xB3, 0xC1, 0x7A, 0x15, 0x4D, 0x15, 0x4F, 0x16, 0x4E, + 0x04, 0x46, 0x15, 0xE0, 0xA3, 0x7A, 0x22, 0x89, 0x18, 0x1D, 0x01, 0x33, + 0x03, 0xF0, 0x3F, 0x03, 0x01, 0x39, 0x4F, 0xF0, 0x00, 0x0C, 0x44, 0xF8, + 0x20, 0xC0, 0xC9, 0xB2, 0x18, 0x1D, 0xA3, 0x72, 0xE1, 0x72, 0x54, 0xF8, + 0x20, 0x00, 0x53, 0x1C, 0xC3, 0xF3, 0x0B, 0x03, 0x23, 0x81, 0x70, 0xB1, + 0x2B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE4, 0xDA, 0x00, 0x29, + 0xE2, 0xD1, 0x39, 0x46, 0x4F, 0xF4, 0xD6, 0x62, 0x30, 0x46, 0xF6, 0xF7, + 0xF5, 0xFD, 0xE1, 0x7A, 0xDA, 0xE7, 0xF8, 0xBD, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x64, 0xC0, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x9E, 0x23, 0x0C, 0x8A, 0x38, 0x4A, 0x03, 0xFB, 0x00, 0xF0, 0x00, 0xEB, + 0x14, 0x30, 0x02, 0xEB, 0x80, 0x00, 0xD0, 0xF8, 0x7C, 0x41, 0x4C, 0xB3, + 0x94, 0xF8, 0x21, 0x31, 0x49, 0x8A, 0xC3, 0xB1, 0xEF, 0xF3, 0x10, 0x83, + 0xDA, 0x07, 0x30, 0xD5, 0x30, 0x48, 0x31, 0x4D, 0x03, 0x68, 0x2E, 0x68, + 0x03, 0xF0, 0x60, 0x42, 0x77, 0x1C, 0xB2, 0xF1, 0xC0, 0x4F, 0x2F, 0x60, + 0x31, 0xD0, 0x2D, 0x4B, 0x80, 0x22, 0x1A, 0x60, 0x2F, 0xB1, 0x2C, 0x4B, + 0x2E, 0x60, 0x1B, 0x68, 0x0E, 0xB9, 0x03, 0xB1, 0x62, 0xB6, 0x22, 0x89, + 0xB2, 0xEB, 0x11, 0x1F, 0x4F, 0xEA, 0x11, 0x13, 0x06, 0xD0, 0x9B, 0x1A, + 0x99, 0xB2, 0x1B, 0x05, 0x04, 0xD5, 0x94, 0xF8, 0x21, 0x31, 0x9B, 0xB1, + 0xBD, 0xE8, 0xF0, 0x81, 0x22, 0x4D, 0x20, 0x46, 0xD5, 0xF8, 0xD8, 0x32, + 0xC1, 0xF3, 0x0B, 0x01, 0x98, 0x47, 0xD5, 0xF8, 0x38, 0x31, 0x1F, 0x48, + 0xBD, 0xE8, 0xF0, 0x41, 0x18, 0x47, 0x72, 0xB6, 0x1A, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0xC9, 0xE7, 0x1B, 0x48, 0xF6, 0xF7, 0x23, 0xFB, 0x01, 0x23, + 0x84, 0xF8, 0x21, 0x31, 0xE4, 0xE7, 0x19, 0x4A, 0x03, 0xF4, 0xF0, 0x33, + 0xD2, 0xF8, 0x00, 0xC0, 0xB3, 0xF5, 0xF0, 0x3F, 0x0C, 0xF1, 0x10, 0x0C, + 0xC3, 0xD0, 0x96, 0x46, 0x03, 0x68, 0x03, 0xF0, 0x60, 0x42, 0xB2, 0xF1, + 0xC0, 0x4F, 0x02, 0xD0, 0x10, 0x4B, 0x1B, 0x68, 0xB9, 0xE7, 0x03, 0xF4, + 0xF0, 0x33, 0xB3, 0xF5, 0xF0, 0x3F, 0xF7, 0xD0, 0xDE, 0xF8, 0x00, 0x30, + 0xA3, 0xEB, 0x0C, 0x03, 0x00, 0x2B, 0xEB, 0xDB, 0x00, 0x2F, 0xB6, 0xD0, + 0xAF, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x04, 0x05, 0x32, 0x40, + 0x6C, 0x28, 0x17, 0x00, 0x54, 0x00, 0x32, 0x40, 0x38, 0x61, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xE8, 0xDE, 0x17, 0x00, 0x7C, 0xC0, 0x15, 0x00, + 0x20, 0x01, 0x32, 0x40, 0x2D, 0xE9, 0xF8, 0x43, 0x8D, 0x4F, 0x8E, 0x4B, + 0xBC, 0x7A, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x04, 0x34, 0x80, 0x46, + 0x94, 0xF8, 0xC3, 0x54, 0x89, 0x46, 0x00, 0x2D, 0x40, 0xF0, 0x90, 0x80, + 0xF8, 0x79, 0x88, 0x49, 0xBA, 0x88, 0x9E, 0x23, 0x03, 0xFB, 0x09, 0x03, + 0x01, 0xEB, 0x83, 0x03, 0xD3, 0xF8, 0x7C, 0x41, 0x23, 0x89, 0x9A, 0x42, + 0x00, 0xF0, 0xA5, 0x80, 0xD2, 0x1A, 0x12, 0xF4, 0x7C, 0x6F, 0xC2, 0xF3, + 0x0B, 0x03, 0x38, 0xD1, 0xA6, 0x7A, 0x1E, 0x44, 0x06, 0xF0, 0x3F, 0x06, + 0x01, 0x23, 0x04, 0xEB, 0x86, 0x06, 0x84, 0xF8, 0x20, 0x31, 0x33, 0x69, + 0x00, 0x2B, 0x6B, 0xD1, 0x8D, 0xB9, 0xD8, 0xF8, 0x60, 0x20, 0xB8, 0xF8, + 0x32, 0x30, 0x77, 0x49, 0x42, 0xF0, 0x20, 0x02, 0xC8, 0xF8, 0x60, 0x20, + 0x23, 0xF0, 0xFF, 0x03, 0xD1, 0xF8, 0xE8, 0x22, 0xA8, 0xF8, 0x32, 0x30, + 0x40, 0x46, 0x03, 0x21, 0x90, 0x47, 0x71, 0x4B, 0x33, 0x61, 0xE3, 0x7A, + 0x70, 0x4A, 0x01, 0x33, 0x12, 0x68, 0xDB, 0xB2, 0xE3, 0x72, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, 0xB1, 0x80, 0x01, 0x2B, 0x00, 0xF0, + 0xB9, 0x80, 0xC5, 0xF1, 0x01, 0x05, 0xED, 0xB2, 0xF9, 0x79, 0x48, 0x46, + 0x02, 0xF0, 0xFE, 0xFE, 0x28, 0x46, 0xBD, 0xE8, 0xF8, 0x83, 0x40, 0xF2, + 0xFE, 0x72, 0x93, 0x42, 0x40, 0xF2, 0x91, 0x80, 0x94, 0xF8, 0x20, 0x31, + 0x13, 0xB1, 0x94, 0xF8, 0x21, 0x31, 0x9B, 0xB3, 0x3B, 0x88, 0x1B, 0x05, + 0x21, 0xD4, 0x7A, 0x88, 0x4F, 0xF4, 0x9E, 0x73, 0x03, 0xFB, 0x09, 0x03, + 0x01, 0xEB, 0x43, 0x03, 0xA3, 0xF8, 0xEA, 0x21, 0x15, 0xBB, 0xD8, 0xF8, + 0x60, 0x20, 0xB8, 0xF8, 0x32, 0x30, 0x55, 0x49, 0x42, 0xF0, 0x20, 0x02, + 0x23, 0xF0, 0xFF, 0x03, 0xC8, 0xF8, 0x60, 0x20, 0xD1, 0xF8, 0xE8, 0x22, + 0xA8, 0xF8, 0x32, 0x30, 0x40, 0x46, 0x03, 0x21, 0x90, 0x47, 0xF9, 0x79, + 0x48, 0x46, 0x02, 0xF0, 0xCD, 0xFE, 0x01, 0x25, 0xCC, 0xE7, 0x4F, 0xF4, + 0x9E, 0x73, 0x03, 0xFB, 0x09, 0x03, 0x01, 0xEB, 0x43, 0x03, 0x7A, 0x88, + 0xB3, 0xF8, 0xEA, 0x31, 0x93, 0x42, 0xD3, 0xD1, 0xF9, 0x79, 0x48, 0x46, + 0x02, 0xF0, 0xBC, 0xFE, 0x00, 0x25, 0x28, 0x46, 0xBD, 0xE8, 0xF8, 0x83, + 0xC2, 0x69, 0x04, 0xF2, 0xC4, 0x41, 0x92, 0x68, 0x01, 0x23, 0x04, 0xF1, + 0x63, 0x00, 0xFF, 0xF7, 0x3B, 0xF8, 0x05, 0x46, 0xF8, 0x79, 0x3B, 0x49, + 0xBA, 0x88, 0x9E, 0x23, 0x03, 0xFB, 0x09, 0x03, 0x01, 0xEB, 0x83, 0x03, + 0x01, 0x2D, 0xD3, 0xF8, 0x7C, 0x41, 0x23, 0x89, 0x60, 0xD0, 0x9A, 0x42, + 0x09, 0xD0, 0xD2, 0x1A, 0x12, 0xF4, 0x7C, 0x6F, 0x4F, 0xF0, 0x00, 0x05, + 0xC2, 0xF3, 0x0B, 0x03, 0x3F, 0xF4, 0x62, 0xAF, 0x99, 0xE7, 0xD8, 0xF8, + 0x60, 0x20, 0xB8, 0xF8, 0x32, 0x30, 0x2E, 0x49, 0x42, 0xF0, 0x20, 0x02, + 0x23, 0xF0, 0xFF, 0x03, 0xC8, 0xF8, 0x60, 0x20, 0xD1, 0xF8, 0xE8, 0x22, + 0xA8, 0xF8, 0x32, 0x30, 0x40, 0x46, 0x03, 0x21, 0x90, 0x47, 0x23, 0x89, + 0x01, 0x25, 0x01, 0x20, 0x28, 0x4A, 0xA1, 0x7A, 0x84, 0xF8, 0x20, 0x01, + 0x12, 0x69, 0x62, 0x60, 0x04, 0xEB, 0x81, 0x00, 0x02, 0x69, 0x12, 0xB1, + 0xE2, 0x7A, 0x01, 0x3A, 0xE2, 0x72, 0x5A, 0x1C, 0x01, 0x31, 0xC2, 0xF3, + 0x0B, 0x02, 0x01, 0xF0, 0x3F, 0x01, 0x00, 0x23, 0x03, 0x61, 0x20, 0x46, + 0x22, 0x81, 0xA1, 0x72, 0xFF, 0xF7, 0x4E, 0xFE, 0x62, 0xE7, 0x18, 0x4A, + 0xA3, 0xF1, 0x3F, 0x01, 0x89, 0xB2, 0xD2, 0xF8, 0xD8, 0x32, 0x20, 0x46, + 0x98, 0x47, 0xBB, 0x88, 0x21, 0x89, 0x5B, 0x1A, 0xC3, 0xF3, 0x0B, 0x03, + 0x22, 0xE7, 0x40, 0x2B, 0x7F, 0xF6, 0x4C, 0xAF, 0x13, 0x49, 0x14, 0x48, + 0x40, 0xF2, 0xDB, 0x72, 0xF6, 0xF7, 0x5A, 0xFC, 0xE3, 0x7A, 0x43, 0xE7, + 0x0E, 0x4A, 0x0B, 0x4B, 0x11, 0x69, 0xD3, 0xF8, 0xE0, 0x31, 0x01, 0xF5, + 0x43, 0x41, 0x04, 0xF5, 0x88, 0x70, 0x50, 0x31, 0x98, 0x47, 0x3A, 0xE7, + 0x9A, 0x42, 0x7F, 0xF4, 0x03, 0xAF, 0x00, 0x25, 0xB9, 0xE7, 0x00, 0xBF, + 0xB0, 0xDE, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x87, 0xA9, 0xDC, 0xFE, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, 0x90, 0xC0, 0x15, 0x00, + 0xC3, 0x7A, 0x03, 0xB9, 0x70, 0x47, 0x1A, 0x4B, 0x42, 0x68, 0x1B, 0x69, + 0xC3, 0xF5, 0x43, 0x43, 0x50, 0x33, 0xD3, 0x42, 0x10, 0xB5, 0x04, 0x46, + 0x00, 0xD4, 0x10, 0xBD, 0x83, 0x7A, 0x1A, 0x1D, 0x50, 0xF8, 0x22, 0x20, + 0x42, 0xB9, 0x02, 0x89, 0x01, 0x33, 0x01, 0x32, 0x03, 0xF0, 0x3F, 0x03, + 0xC2, 0xF3, 0x0B, 0x02, 0x83, 0x72, 0x02, 0x81, 0x20, 0x46, 0xFF, 0xF7, + 0xF1, 0xFD, 0xE3, 0x7A, 0x53, 0xB9, 0x0B, 0x4A, 0x0B, 0x4B, 0x11, 0x69, + 0xD3, 0xF8, 0xE0, 0x31, 0x01, 0xF5, 0x43, 0x41, 0x04, 0xF5, 0x88, 0x70, + 0x50, 0x31, 0x98, 0x47, 0x07, 0x48, 0x83, 0x6B, 0x00, 0x2B, 0xDC, 0xD0, + 0x04, 0x4B, 0xBD, 0xE8, 0x10, 0x40, 0xD3, 0xF8, 0x38, 0x31, 0x38, 0x30, + 0x18, 0x47, 0x00, 0xBF, 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, + 0xB0, 0xDE, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, 0x19, 0x4B, 0x1B, 0x7C, + 0xFF, 0x2B, 0x05, 0x46, 0x04, 0xD0, 0x03, 0x88, 0x03, 0xF0, 0xEC, 0x03, + 0xC4, 0x2B, 0x11, 0xD0, 0x15, 0x4F, 0x05, 0xF1, 0x04, 0x08, 0x07, 0xF5, + 0xA4, 0x56, 0xB9, 0x46, 0x3C, 0x46, 0x94, 0xF8, 0x64, 0x30, 0x1B, 0xB1, + 0x94, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0x06, 0xD0, 0x04, 0xF5, 0xA4, 0x64, + 0xA6, 0x42, 0xF4, 0xD1, 0x00, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x06, 0x22, + 0x04, 0xF1, 0x5C, 0x01, 0x40, 0x46, 0x08, 0xF0, 0x45, 0xFE, 0xA4, 0xEB, + 0x07, 0x0A, 0x00, 0x28, 0xEE, 0xD1, 0x07, 0x49, 0x07, 0x48, 0xF6, 0xF7, + 0x4D, 0xF9, 0x05, 0xF1, 0x0A, 0x01, 0x09, 0xEB, 0x0A, 0x00, 0xFD, 0xF7, + 0x49, 0xFD, 0xE7, 0xE7, 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x20, 0xC1, 0x15, 0x00, 0xA8, 0xC0, 0x15, 0x00, 0x13, 0x4B, 0x93, 0xF8, + 0x73, 0x20, 0x12, 0xB1, 0x11, 0xF4, 0x00, 0x71, 0x00, 0xD0, 0x70, 0x47, + 0x10, 0xB4, 0x42, 0x89, 0xB3, 0xF8, 0x6C, 0x40, 0x94, 0x42, 0x02, 0xD0, + 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, 0xB3, 0xF8, 0x6E, 0x40, 0x82, 0x89, + 0x94, 0x42, 0xF7, 0xD1, 0xB3, 0xF8, 0x70, 0x40, 0xC2, 0x89, 0x94, 0x42, + 0xF2, 0xD1, 0x02, 0x88, 0x02, 0xF4, 0xA0, 0x52, 0xB2, 0xF5, 0x80, 0x5F, + 0x06, 0xBF, 0x01, 0x22, 0x83, 0xF8, 0x72, 0x20, 0x83, 0xF8, 0x72, 0x10, + 0xE6, 0xE7, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, 0xF8, 0xB5, 0xBD, 0xF8, + 0x1C, 0x60, 0x06, 0x9D, 0xFF, 0x2A, 0x00, 0xEB, 0x06, 0x07, 0x2E, 0xD0, + 0x14, 0x46, 0x82, 0x5D, 0x03, 0x3A, 0x12, 0x2A, 0x18, 0xD8, 0xDF, 0xE8, + 0x02, 0xF0, 0x2B, 0x17, 0x0A, 0x17, 0x30, 0x49, 0x17, 0x17, 0x17, 0x17, + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x5C, 0x00, 0x1B, 0x78, + 0x4B, 0x4A, 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, + 0x62, 0x30, 0x02, 0x2B, 0x02, 0xD0, 0x7B, 0x78, 0x00, 0x2B, 0x6A, 0xD0, + 0x01, 0x26, 0x2B, 0x88, 0xFF, 0x2B, 0x0A, 0xD0, 0x44, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x57, 0xDB, 0x6F, 0xF0, 0xFF, 0x03, + 0x2A, 0x88, 0x13, 0x43, 0x2B, 0x80, 0x30, 0x46, 0xF8, 0xBD, 0x01, 0x26, + 0x30, 0x46, 0xF8, 0xBD, 0x08, 0x23, 0x2B, 0x80, 0x00, 0x26, 0x00, 0x23, + 0xF2, 0xE7, 0x7E, 0x78, 0x00, 0x2E, 0x52, 0xD0, 0x01, 0x2E, 0xE1, 0xD1, + 0x38, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x04, 0x23, 0x5E, 0x68, + 0x16, 0xF0, 0x02, 0x06, 0xD9, 0xD0, 0xBE, 0x78, 0x16, 0xF0, 0x01, 0x06, + 0x5A, 0xD0, 0x20, 0x46, 0x00, 0x22, 0xFF, 0x21, 0xF9, 0xF7, 0xDC, 0xFC, + 0x00, 0x26, 0xCE, 0xE7, 0x89, 0x1B, 0x03, 0x29, 0x2A, 0xDD, 0x1B, 0x78, + 0xFF, 0x2B, 0xC7, 0xD0, 0x29, 0x4A, 0x7E, 0x78, 0x4F, 0xF4, 0xA4, 0x61, + 0x01, 0xFB, 0x03, 0x23, 0x93, 0xF8, 0x62, 0x30, 0x1E, 0x43, 0xBD, 0xD1, + 0x06, 0x23, 0x2B, 0x80, 0xD1, 0xE7, 0x7B, 0x78, 0x01, 0x2B, 0x36, 0xD0, + 0x02, 0x2B, 0xB5, 0xD1, 0x22, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x04, 0x23, 0x5E, 0x68, 0x16, 0xF0, 0x24, 0x06, 0xAD, 0xD0, 0x97, 0xF9, + 0x02, 0x30, 0xB9, 0x78, 0x00, 0x2B, 0x07, 0xDB, 0x0A, 0x09, 0x20, 0x46, + 0x01, 0xF0, 0x03, 0x01, 0xF9, 0xF7, 0xAE, 0xFC, 0x00, 0x26, 0xA0, 0xE7, + 0x00, 0x26, 0x9E, 0xE7, 0x17, 0x49, 0x18, 0x48, 0x40, 0xF6, 0x78, 0x12, + 0xF6, 0xF7, 0x00, 0xFB, 0x6F, 0xF0, 0xFF, 0x03, 0xA0, 0xE7, 0x0B, 0x23, + 0x2B, 0x80, 0x01, 0x26, 0xA7, 0xE7, 0x10, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x04, 0x23, 0x5B, 0x68, 0x9B, 0x07, 0x89, 0xD5, 0xB9, 0x78, + 0x01, 0x29, 0x86, 0xD8, 0x20, 0x46, 0xFF, 0x22, 0xF9, 0xF7, 0x8E, 0xFC, + 0x81, 0xE7, 0x07, 0xF1, 0x0A, 0x01, 0xB8, 0x1C, 0xD2, 0xF7, 0xB6, 0xFE, + 0x00, 0x26, 0x7A, 0xE7, 0xFF, 0x22, 0x20, 0x46, 0x11, 0x46, 0xF9, 0xF7, + 0x81, 0xFC, 0x74, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xBC, 0xC0, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x43, 0x89, 0xB0, 0x1F, 0x46, 0x10, 0x9E, 0x34, 0x78, + 0xFF, 0x2C, 0x47, 0xD0, 0x69, 0x4D, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x04, 0x55, 0x00, 0xF0, 0xFC, 0x04, 0x80, 0x2C, 0x95, 0xF8, 0x62, 0x80, + 0x46, 0xD0, 0x0F, 0xD8, 0x40, 0x2C, 0x6B, 0xD0, 0x2C, 0xD9, 0x50, 0x2C, + 0x4F, 0xF0, 0x01, 0x04, 0x04, 0xD1, 0x13, 0x9A, 0x14, 0x70, 0x12, 0x9A, + 0x04, 0x23, 0x13, 0x80, 0x20, 0x46, 0x09, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, + 0xC0, 0x2C, 0x21, 0xD0, 0x10, 0xD9, 0xD0, 0x2C, 0x15, 0xD1, 0x13, 0x9B, + 0x11, 0x98, 0xCD, 0xE9, 0x01, 0x23, 0x12, 0x9B, 0x00, 0x93, 0x3A, 0x46, + 0x33, 0x46, 0xFF, 0xF7, 0x11, 0xFF, 0x04, 0x46, 0x20, 0x46, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x83, 0xA0, 0x2C, 0x0D, 0xD0, 0xB0, 0x2C, 0x02, 0xD1, + 0xFC, 0xF7, 0xBA, 0xFA, 0x40, 0xB1, 0x01, 0x24, 0x20, 0x46, 0x09, 0xB0, + 0xBD, 0xE8, 0xF0, 0x83, 0x00, 0xF0, 0xDC, 0x00, 0x10, 0x28, 0xF6, 0xD1, + 0xB8, 0xF1, 0x00, 0x0F, 0xF3, 0xD1, 0x12, 0x9A, 0x06, 0x23, 0x13, 0x80, + 0x01, 0x24, 0xCF, 0xE7, 0x00, 0xF0, 0xFC, 0x00, 0xB0, 0x28, 0x72, 0xD0, + 0x28, 0xD8, 0x40, 0x28, 0x2A, 0xD0, 0x80, 0x28, 0xE5, 0xD1, 0x00, 0x25, + 0x04, 0x20, 0x05, 0x91, 0xF4, 0xF7, 0x34, 0xFC, 0x01, 0x28, 0x05, 0x99, + 0x0E, 0xD1, 0x13, 0x9A, 0x3D, 0x4B, 0x10, 0x70, 0x12, 0x98, 0x1B, 0x68, + 0x3A, 0x4D, 0x04, 0x22, 0x02, 0x80, 0x93, 0xF8, 0x6E, 0x41, 0x34, 0x70, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x04, 0x55, 0xFF, 0x2F, 0xCC, 0xD0, + 0x95, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xC8, 0xD0, 0x34, 0x4B, 0x30, 0x78, + 0xD3, 0xF8, 0x54, 0x31, 0x11, 0x9A, 0x98, 0x47, 0x01, 0x24, 0xA1, 0xE7, + 0xD0, 0x28, 0xA8, 0xD0, 0x01, 0x24, 0xBD, 0xE7, 0x2F, 0x4B, 0x9A, 0x7C, + 0x00, 0x2A, 0xB8, 0xD0, 0x2E, 0x4A, 0x12, 0x68, 0x12, 0x78, 0x01, 0x3A, + 0x01, 0x2A, 0xB2, 0xD8, 0x9D, 0x68, 0x00, 0x2D, 0xAF, 0xD0, 0x18, 0x39, + 0x2A, 0x4F, 0x1F, 0xFA, 0x81, 0xF8, 0x01, 0x24, 0x02, 0xE0, 0x2D, 0x68, + 0x00, 0x2D, 0x87, 0xD0, 0x95, 0xF8, 0x62, 0x30, 0x02, 0x2B, 0xF8, 0xD1, + 0x95, 0xF8, 0x64, 0x30, 0x00, 0x2B, 0xF4, 0xD0, 0x95, 0xF8, 0xC0, 0x34, + 0x00, 0x2B, 0xF0, 0xD1, 0x11, 0x9B, 0xB7, 0xF8, 0x00, 0x90, 0x03, 0xF1, + 0x18, 0x00, 0x0D, 0xF1, 0x1E, 0x02, 0x41, 0x46, 0xF4, 0xF7, 0xFA, 0xFF, + 0xA9, 0xF1, 0x24, 0x01, 0x06, 0x46, 0x89, 0xB2, 0x0D, 0xF1, 0x1F, 0x02, + 0x19, 0x48, 0xF4, 0xF7, 0xF1, 0xFF, 0x9D, 0xF8, 0x1E, 0x30, 0x18, 0x49, + 0x02, 0x36, 0x81, 0x46, 0x07, 0x22, 0x30, 0x46, 0x53, 0xB9, 0x11, 0x9B, + 0x28, 0x46, 0x03, 0xF1, 0x0A, 0x01, 0xE1, 0xF7, 0xED, 0xFE, 0x00, 0x24, + 0xCD, 0xE7, 0xFC, 0xF7, 0x2F, 0xFA, 0x74, 0xE7, 0x08, 0xF0, 0x7C, 0xFC, + 0x00, 0x28, 0xC6, 0xD0, 0x9D, 0xF8, 0x1F, 0x30, 0x9D, 0xF8, 0x1E, 0x20, + 0x9A, 0x42, 0xC0, 0xD1, 0x09, 0xF1, 0x02, 0x01, 0x30, 0x46, 0x08, 0xF0, + 0x6F, 0xFC, 0x00, 0x28, 0xE3, 0xD0, 0xB8, 0xE7, 0x18, 0x88, 0x17, 0x00, + 0xA8, 0xBA, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, + 0x78, 0x36, 0x17, 0x00, 0x14, 0x2C, 0x17, 0x00, 0x38, 0x2A, 0x17, 0x00, + 0x54, 0xBF, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0xC6, 0x69, 0x8D, 0xB0, + 0xD6, 0xF8, 0x08, 0x90, 0x01, 0x23, 0x8D, 0xF8, 0x24, 0x30, 0x04, 0x46, + 0xB9, 0xF8, 0x00, 0x00, 0x10, 0xF4, 0x80, 0x60, 0x40, 0xF0, 0x8B, 0x80, + 0xB9, 0xF8, 0x16, 0x70, 0x17, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x89, 0x80, + 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB9, 0xF8, 0x00, 0x30, 0x98, 0xF8, + 0x08, 0x20, 0x04, 0x92, 0xDF, 0xF8, 0x08, 0xE2, 0xB4, 0xF8, 0x30, 0xA0, + 0xBD, 0xF8, 0x10, 0x10, 0xAD, 0xF8, 0x16, 0x30, 0x4F, 0xF0, 0xFF, 0x0C, + 0x18, 0x46, 0xAD, 0xF8, 0x26, 0xC0, 0xB3, 0x68, 0xDE, 0xF8, 0xE0, 0x92, + 0x07, 0x93, 0x0D, 0xF1, 0x25, 0x0C, 0x01, 0x93, 0xCD, 0xF8, 0x0C, 0xC0, + 0x72, 0x4B, 0x06, 0x91, 0x0D, 0xF1, 0x26, 0x0C, 0x0A, 0x46, 0x00, 0x93, + 0x51, 0x46, 0x8D, 0xF8, 0x25, 0xB0, 0x80, 0xB2, 0xCD, 0xF8, 0x08, 0xC0, + 0x2B, 0x46, 0xC8, 0x47, 0xBD, 0xF8, 0x26, 0x10, 0xFF, 0x29, 0x00, 0xF0, + 0x90, 0x80, 0x0A, 0xF1, 0x0C, 0x03, 0x9B, 0xB2, 0x0A, 0x22, 0x4F, 0xF4, + 0x20, 0x50, 0xF4, 0xF7, 0xB5, 0xF8, 0x59, 0x46, 0x81, 0x46, 0x0A, 0xA8, + 0xD2, 0xF7, 0xFA, 0xFC, 0x9D, 0xF8, 0x25, 0x30, 0xD3, 0x46, 0x63, 0xB9, + 0x61, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, + 0xAE, 0x80, 0x04, 0x9B, 0x06, 0x9F, 0xAA, 0xEB, 0x03, 0x0B, 0x1F, 0xFA, + 0x8B, 0xFA, 0x4B, 0x46, 0x3A, 0x46, 0x51, 0x46, 0x23, 0xF8, 0x0C, 0xAB, + 0x30, 0x46, 0xE6, 0xF7, 0x35, 0xFD, 0x98, 0xF8, 0x0A, 0x30, 0x89, 0xF8, + 0x08, 0x30, 0xBD, 0xF8, 0x16, 0x30, 0x89, 0xF8, 0x07, 0x50, 0xA9, 0xF8, + 0x02, 0x30, 0x94, 0xF9, 0x41, 0x50, 0xD2, 0xF7, 0x75, 0xFD, 0x0A, 0x9B, + 0x89, 0xF8, 0x06, 0x30, 0x1A, 0x0C, 0x89, 0xF8, 0x09, 0x50, 0xA9, 0xF8, + 0x04, 0x20, 0x48, 0x46, 0xF4, 0xF7, 0xAE, 0xF8, 0xBD, 0xF8, 0x26, 0x30, + 0x04, 0x2B, 0x10, 0xD1, 0xE1, 0x6B, 0xB9, 0xF8, 0x04, 0x30, 0x62, 0x6B, + 0x07, 0x98, 0xC1, 0xF3, 0x03, 0x11, 0x02, 0x91, 0x99, 0xF9, 0x09, 0x10, + 0x01, 0x91, 0x99, 0xF8, 0x06, 0x10, 0x00, 0x91, 0x59, 0x46, 0x07, 0xF0, + 0x15, 0xFB, 0x00, 0x20, 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x0D, 0x46, + 0xD2, 0xF7, 0x4E, 0xFD, 0xFF, 0x2D, 0x38, 0xD0, 0x3C, 0x4B, 0x1B, 0x7C, + 0xFF, 0x2B, 0x31, 0xD0, 0x99, 0xF8, 0x04, 0x30, 0xDF, 0xF8, 0xEC, 0x80, + 0xDA, 0x07, 0x10, 0xD4, 0x98, 0xF8, 0x0A, 0x00, 0x37, 0x4A, 0xB9, 0xF8, + 0x04, 0x10, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x00, 0xF3, 0x5C, 0x33, + 0x98, 0x18, 0x9B, 0x5A, 0x8B, 0x42, 0x45, 0xD0, 0xFF, 0x23, 0x88, 0xF8, + 0x0A, 0x30, 0x22, 0x8E, 0x30, 0x48, 0x09, 0xAB, 0x49, 0x46, 0x02, 0xF0, + 0x81, 0xFB, 0x83, 0x46, 0x00, 0x28, 0x3F, 0xF4, 0x50, 0xAF, 0x9D, 0xF8, + 0x24, 0x00, 0x00, 0x28, 0x3F, 0xF4, 0x48, 0xAF, 0x2A, 0x4B, 0x20, 0x46, + 0xD3, 0xF8, 0xE4, 0x32, 0x03, 0x21, 0x98, 0x47, 0x9D, 0xF8, 0x24, 0x00, + 0x3E, 0xE7, 0x8D, 0xF8, 0x24, 0x00, 0xF0, 0xE7, 0xDF, 0xF8, 0x8C, 0x80, + 0xE1, 0xE7, 0x63, 0x6D, 0x13, 0xF4, 0xC0, 0x6F, 0x1E, 0xD1, 0x1E, 0x4B, + 0x9B, 0x68, 0x9B, 0xB3, 0xB9, 0xF8, 0x04, 0x10, 0x01, 0xE0, 0x1B, 0x68, + 0xB3, 0xB1, 0xB3, 0xF8, 0x5C, 0x20, 0x8A, 0x42, 0xF9, 0xD1, 0xB3, 0xF8, + 0x5E, 0x00, 0xB9, 0xF8, 0x06, 0x20, 0x90, 0x42, 0xF3, 0xD1, 0xB3, 0xF8, + 0x60, 0x00, 0xB9, 0xF8, 0x08, 0x20, 0x90, 0x42, 0xED, 0xD1, 0x93, 0xF8, + 0x63, 0x30, 0xDF, 0xF8, 0x4C, 0x80, 0x88, 0xF8, 0x0A, 0x30, 0xBE, 0xE7, + 0xFF, 0x23, 0xF8, 0xE7, 0x42, 0x88, 0xB9, 0xF8, 0x06, 0x30, 0x9A, 0x42, + 0xB4, 0xD1, 0x82, 0x88, 0xB9, 0xF8, 0x08, 0x30, 0x9A, 0x42, 0xAF, 0xD1, + 0xB1, 0xE7, 0x04, 0x9A, 0x93, 0x07, 0x3F, 0xF4, 0x4E, 0xAF, 0x0A, 0x49, + 0x0A, 0x48, 0x40, 0xF6, 0x97, 0x22, 0xF6, 0xF7, 0xE7, 0xF8, 0x46, 0xE7, + 0x2B, 0x46, 0xE0, 0xE7, 0xBA, 0xDE, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x00, 0x88, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD0, 0xC0, 0x15, 0x00, + 0x1D, 0x48, 0x70, 0xB5, 0x00, 0xF1, 0x10, 0x06, 0xF4, 0xF7, 0x5E, 0xFC, + 0x30, 0x46, 0x1B, 0x4C, 0xF4, 0xF7, 0x5A, 0xFC, 0x04, 0xF5, 0x92, 0x55, + 0x21, 0x46, 0x30, 0x46, 0x04, 0xF5, 0x92, 0x74, 0xF4, 0xF7, 0x56, 0xFC, + 0xAC, 0x42, 0xF7, 0xD1, 0x15, 0x48, 0xF4, 0xF7, 0x4D, 0xFC, 0x15, 0x48, + 0xF4, 0xF7, 0x4A, 0xFC, 0x14, 0x49, 0x12, 0x48, 0xF4, 0xF7, 0x4A, 0xFC, + 0x13, 0x49, 0x10, 0x48, 0xF4, 0xF7, 0x46, 0xFC, 0x12, 0x49, 0x0E, 0x48, + 0xF4, 0xF7, 0x42, 0xFC, 0x11, 0x4A, 0x12, 0x4B, 0x12, 0x48, 0x4F, 0xF6, + 0xFF, 0x71, 0xA2, 0xF8, 0x66, 0x10, 0x03, 0xF5, 0x70, 0x51, 0x00, 0x22, + 0x03, 0xF8, 0x34, 0x2C, 0x1A, 0x81, 0x43, 0xE9, 0x10, 0x03, 0x43, 0xF8, + 0x30, 0x3C, 0x50, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0x70, 0xBD, 0x00, 0xBF, + 0xE8, 0xDE, 0x17, 0x00, 0x70, 0xCC, 0x17, 0x00, 0x00, 0xDF, 0x17, 0x00, + 0x08, 0xDF, 0x17, 0x00, 0x28, 0xDF, 0x17, 0x00, 0x6C, 0xDF, 0x17, 0x00, + 0xB0, 0xDF, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, 0x24, 0x64, 0x18, 0x00, + 0x75, 0xD2, 0x14, 0x00, 0x70, 0xB5, 0x90, 0xF9, 0x00, 0x30, 0x82, 0xB0, + 0x00, 0x2B, 0x01, 0xF0, 0x78, 0x02, 0x05, 0x46, 0xB8, 0xBF, 0x1A, 0x23, + 0x4F, 0xF0, 0x00, 0x00, 0xA8, 0xBF, 0x18, 0x23, 0x08, 0x2A, 0xAD, 0xF8, + 0x06, 0x00, 0x19, 0xD0, 0x01, 0xF0, 0x7C, 0x01, 0x04, 0x29, 0x1F, 0xD0, + 0x06, 0x33, 0xDC, 0xB2, 0x2E, 0x19, 0x31, 0x46, 0x02, 0x22, 0x0D, 0xF1, + 0x06, 0x00, 0x08, 0xF0, 0xF3, 0xFA, 0x28, 0x79, 0x10, 0xF0, 0x01, 0x00, + 0x0B, 0xD0, 0xBD, 0xF8, 0x06, 0x00, 0xA0, 0xF5, 0xC1, 0x60, 0xB0, 0xFA, + 0x80, 0xF0, 0x40, 0x09, 0x02, 0xB0, 0x70, 0xBD, 0x08, 0x33, 0xDB, 0xB2, + 0xE6, 0xE7, 0xBD, 0xF8, 0x06, 0x30, 0x08, 0x2B, 0x04, 0xD0, 0x01, 0x20, + 0x02, 0xB0, 0x70, 0xBD, 0x04, 0x33, 0xDD, 0xE7, 0xF3, 0x7A, 0x02, 0x2B, + 0xEE, 0xD0, 0x11, 0x2B, 0xF5, 0xD1, 0xB2, 0x78, 0xA3, 0x1C, 0x02, 0xF0, + 0x0F, 0x04, 0x03, 0xEB, 0x84, 0x04, 0x2C, 0x44, 0x14, 0xF8, 0x04, 0x3C, + 0xEF, 0x2B, 0xEA, 0xD1, 0x14, 0xF8, 0x03, 0x3C, 0xFF, 0x2B, 0xE6, 0xD1, + 0x14, 0xF8, 0x02, 0x3C, 0xFF, 0x2B, 0xE2, 0xD1, 0x14, 0xF8, 0x01, 0x0C, + 0xFA, 0x38, 0x18, 0xBF, 0x01, 0x20, 0xD3, 0xE7, 0x70, 0xB5, 0x90, 0xF9, + 0x00, 0x30, 0x82, 0xB0, 0x00, 0x2B, 0x01, 0xF0, 0x78, 0x05, 0x4F, 0xF0, + 0x00, 0x06, 0xB4, 0xBF, 0x1A, 0x23, 0x18, 0x23, 0x08, 0x2D, 0x14, 0x46, + 0xAD, 0xF8, 0x06, 0x60, 0x13, 0xD0, 0x01, 0xF0, 0x7C, 0x01, 0x04, 0x29, + 0x12, 0xD0, 0x99, 0x1D, 0x50, 0xFA, 0x81, 0xF1, 0x02, 0x22, 0x0D, 0xF1, + 0x06, 0x00, 0x08, 0xF0, 0x9F, 0xFA, 0xBD, 0xF8, 0x06, 0x10, 0x48, 0xF6, + 0x88, 0x63, 0x99, 0x42, 0x06, 0xD0, 0x02, 0xB0, 0x70, 0xBD, 0x08, 0x33, + 0xDB, 0xB2, 0xEC, 0xE7, 0x04, 0x33, 0xEA, 0xE7, 0x02, 0x48, 0x22, 0x46, + 0xF5, 0xF7, 0x6E, 0xFD, 0x02, 0xB0, 0x70, 0xBD, 0xEC, 0xC0, 0x15, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x45, 0x6D, 0x2D, 0xED, 0x02, 0x8B, 0xAF, 0x04, + 0x87, 0xB0, 0x04, 0x46, 0x1F, 0xD4, 0xC1, 0x4B, 0x1B, 0x68, 0x1B, 0x78, + 0x9E, 0x07, 0x03, 0xD5, 0x05, 0xF0, 0x3C, 0x03, 0x3C, 0x2B, 0x16, 0xD0, + 0xBD, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x71, 0xD0, 0xBC, 0x4E, 0xBD, 0x4D, + 0xB3, 0x72, 0x20, 0x46, 0xD5, 0xF8, 0xE4, 0x32, 0x80, 0x21, 0x98, 0x47, + 0x01, 0x27, 0xD5, 0xF8, 0x38, 0x31, 0xB9, 0x48, 0x98, 0x47, 0x38, 0x46, + 0x07, 0xB0, 0xBD, 0xEC, 0x02, 0x8B, 0xBD, 0xE8, 0xF0, 0x8F, 0xD4, 0xF8, + 0x1C, 0xA0, 0xB2, 0x4E, 0xDA, 0xF8, 0x08, 0x80, 0x00, 0x23, 0xB8, 0xF8, + 0x00, 0x90, 0x23, 0x66, 0x40, 0x46, 0xFF, 0x23, 0x73, 0x72, 0xB3, 0x72, + 0xFE, 0xF7, 0xE6, 0xFD, 0xA8, 0x01, 0x50, 0xD5, 0xC5, 0xF3, 0xC9, 0x37, + 0xDF, 0xF8, 0xBC, 0xB2, 0x10, 0x3F, 0xFF, 0xB2, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x07, 0xB3, 0x93, 0xF8, 0x25, 0x20, 0x00, 0x2A, 0x39, 0xD0, + 0x93, 0xF8, 0x22, 0x10, 0xA5, 0x48, 0xD3, 0xF8, 0xB0, 0x30, 0x77, 0x72, + 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, 0x01, 0x02, 0xB5, 0x61, 0x92, 0xF8, + 0x62, 0x20, 0xB1, 0x72, 0x02, 0x2A, 0x00, 0x93, 0x52, 0xD0, 0x09, 0xF4, + 0x40, 0x73, 0xB3, 0xF5, 0x40, 0x7F, 0x03, 0xD1, 0x23, 0x6E, 0x43, 0xF0, + 0x04, 0x03, 0x23, 0x66, 0x33, 0x88, 0x5B, 0x04, 0x00, 0xF1, 0x90, 0x80, + 0x98, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x09, 0xF0, 0x0C, 0x03, + 0x00, 0xF0, 0x90, 0x80, 0x08, 0x2B, 0x00, 0xF0, 0x97, 0x80, 0x4F, 0xF4, + 0x1E, 0x72, 0x02, 0xFB, 0x07, 0xB2, 0x92, 0xF8, 0x5D, 0x22, 0x01, 0x2A, + 0x40, 0xF2, 0xE7, 0x80, 0x04, 0x2B, 0x00, 0xF0, 0xFA, 0x80, 0x08, 0x2B, + 0x00, 0xF0, 0x97, 0x80, 0x00, 0x2B, 0x33, 0xD0, 0x85, 0x4B, 0x1B, 0x7C, + 0xFF, 0x2B, 0x01, 0xD0, 0x85, 0x4D, 0x8F, 0xE7, 0x84, 0x4D, 0x00, 0x27, + 0x93, 0xE7, 0x29, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0x9D, 0xFB, 0x19, 0xF0, + 0x0C, 0x0F, 0x0B, 0xD1, 0xFF, 0xF7, 0xDA, 0xF8, 0x00, 0x28, 0xEB, 0xD0, + 0x33, 0x88, 0x59, 0x04, 0x55, 0xD5, 0x05, 0xF0, 0x7C, 0x03, 0x04, 0x2B, + 0x4B, 0xD0, 0x40, 0x46, 0x21, 0x46, 0xFF, 0xF7, 0x4D, 0xFB, 0x78, 0x4D, + 0x07, 0x46, 0x75, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, 0x3F, 0xF4, 0x77, 0xAF, + 0x00, 0x2F, 0x7F, 0xF4, 0x74, 0xAF, 0x6B, 0xE7, 0x96, 0xF8, 0x24, 0x30, + 0xDA, 0x07, 0xA8, 0xD4, 0x06, 0xF1, 0x24, 0x00, 0xF2, 0xF7, 0xB8, 0xFE, + 0xF0, 0x72, 0xA2, 0xE7, 0x19, 0xF4, 0x00, 0x6F, 0x00, 0xF0, 0xCF, 0x80, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, 0x72, 0x88, 0xB3, 0xF8, + 0xE8, 0x31, 0x93, 0x42, 0xBE, 0xD0, 0x96, 0xF8, 0x30, 0x10, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB7, 0x8D, 0x07, 0xA7, 0xF8, 0xE8, 0x21, + 0x0A, 0xD5, 0x35, 0x6A, 0xD6, 0xE9, 0x04, 0x01, 0xD5, 0xE9, 0x10, 0x23, + 0x8B, 0x42, 0x08, 0xBF, 0x82, 0x42, 0xAB, 0xD2, 0xC5, 0xE9, 0x10, 0x01, + 0x5F, 0x4B, 0x1B, 0x68, 0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD1, 0x98, 0xF8, + 0x00, 0x30, 0x80, 0x2B, 0x00, 0xF0, 0xCF, 0x80, 0x71, 0x7A, 0x57, 0x4D, + 0x20, 0x46, 0xFF, 0xF7, 0x17, 0xFD, 0x07, 0x46, 0xB9, 0xE7, 0x29, 0x46, + 0x40, 0x46, 0xFE, 0xF7, 0x39, 0xFB, 0x00, 0x28, 0xAD, 0xD0, 0xFF, 0x21, + 0x20, 0x46, 0xFF, 0xF7, 0x0B, 0xFD, 0x4F, 0x4D, 0x07, 0x46, 0xAC, 0xE7, + 0xB1, 0x69, 0x40, 0x46, 0xFE, 0xF7, 0x2C, 0xFB, 0x00, 0x28, 0x7F, 0xF4, + 0x69, 0xAF, 0x83, 0xE7, 0x08, 0x2B, 0x7F, 0xF4, 0x70, 0xAF, 0x29, 0x46, + 0x40, 0x46, 0xFF, 0xF7, 0x73, 0xFE, 0x00, 0x28, 0x3F, 0xF4, 0x7A, 0xAF, + 0x3B, 0x46, 0x22, 0x8E, 0x29, 0x46, 0x40, 0x46, 0xFF, 0xF7, 0xC0, 0xFE, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, 0x93, 0xF8, 0x5D, 0x32, + 0x01, 0x2B, 0x40, 0xF2, 0x87, 0x80, 0x41, 0x4B, 0x93, 0xF8, 0x04, 0x31, + 0x73, 0xB1, 0xB3, 0x7A, 0x3C, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x03, 0x13, 0x93, 0xF8, 0x62, 0x20, 0x2A, 0xB9, 0xD3, 0xF8, 0x90, 0x21, + 0x92, 0x78, 0x01, 0x2A, 0x00, 0xF0, 0x8D, 0x80, 0x19, 0xF0, 0x40, 0x03, + 0x00, 0x93, 0x7F, 0xF4, 0x53, 0xAF, 0x09, 0xF0, 0x80, 0x03, 0x00, 0x2B, + 0x14, 0xBF, 0x4F, 0xF0, 0x01, 0x08, 0x4F, 0xF0, 0x00, 0x08, 0x71, 0xD0, + 0x96, 0xF8, 0x30, 0x30, 0x1A, 0x07, 0x40, 0xF1, 0x9A, 0x80, 0xF2, 0x79, + 0x4F, 0xF4, 0x9E, 0x73, 0xF5, 0x32, 0x03, 0xFB, 0x07, 0x23, 0x0B, 0xEB, + 0x43, 0x03, 0x19, 0xF4, 0x00, 0x6F, 0x72, 0x88, 0x03, 0xD0, 0x19, 0x88, + 0x91, 0x42, 0x3F, 0xF4, 0x35, 0xAF, 0x1F, 0x49, 0x1A, 0x80, 0x0B, 0x68, + 0x1B, 0x78, 0x9B, 0x07, 0x04, 0xD5, 0x05, 0xF0, 0x3C, 0x05, 0x3C, 0x2D, + 0x00, 0xF0, 0x8E, 0x80, 0x1C, 0x4D, 0x39, 0x46, 0xD5, 0xF8, 0xC4, 0x32, + 0x42, 0x46, 0x20, 0x46, 0x98, 0x47, 0x07, 0x46, 0x41, 0xE7, 0x00, 0x9A, + 0x00, 0x2A, 0x3F, 0xF4, 0x15, 0xAF, 0x92, 0xF8, 0x60, 0x20, 0x01, 0x3A, + 0x01, 0x2A, 0x3F, 0xF6, 0x0F, 0xAF, 0x19, 0xF4, 0x80, 0x4F, 0x3F, 0xF4, + 0x0B, 0xAF, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x07, 0xB2, 0x02, 0x21, + 0x82, 0xF8, 0x5D, 0x12, 0x02, 0xE7, 0x09, 0xF0, 0xFC, 0x09, 0xB9, 0xF1, + 0x84, 0x0F, 0x7F, 0xF4, 0x05, 0xAF, 0x0A, 0x4D, 0x41, 0x46, 0xD5, 0xF8, + 0xD0, 0x32, 0x38, 0x46, 0x98, 0x47, 0x05, 0x4B, 0x1B, 0x7C, 0xFF, 0x2B, + 0x7F, 0xF4, 0x90, 0xAE, 0xFF, 0xE6, 0x72, 0x88, 0x37, 0xE7, 0x00, 0xBF, + 0x34, 0x36, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0xB0, 0xDE, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0xE8, 0xDE, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x74, 0x36, 0x17, 0x00, 0x2C, 0x19, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x00, 0x9B, 0x00, 0x2B, 0x3F, 0xF4, 0x75, 0xAF, 0x93, 0xF8, 0x60, 0x30, + 0x01, 0x3B, 0x01, 0x2B, 0x3F, 0xF6, 0x6F, 0xAF, 0x08, 0x23, 0xC0, 0xE7, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x07, 0xB3, 0x03, 0xF5, 0xF4, 0x73, + 0x93, 0xE7, 0x98, 0xF8, 0x01, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x2C, 0xAF, + 0xCA, 0xE6, 0xD3, 0xF8, 0xCC, 0x21, 0x12, 0xF0, 0x0C, 0x0F, 0x3F, 0xF4, + 0x6D, 0xAF, 0x98, 0xF8, 0x04, 0x20, 0xD0, 0x07, 0x3F, 0xF5, 0x68, 0xAF, + 0xE2, 0x6B, 0x12, 0xF0, 0x0C, 0x0F, 0x3F, 0xF4, 0x63, 0xAF, 0xD3, 0xF8, + 0x90, 0x20, 0x01, 0x32, 0xC3, 0xF8, 0x90, 0x20, 0x98, 0xF8, 0x01, 0x20, + 0x11, 0x07, 0x7F, 0xF5, 0x59, 0xAF, 0xD3, 0xF8, 0x94, 0x20, 0x01, 0x32, + 0xC3, 0xF8, 0x94, 0x20, 0x52, 0xE7, 0xF1, 0x79, 0x38, 0x46, 0xE9, 0xF7, + 0x33, 0xFB, 0x00, 0x28, 0x3F, 0xF4, 0x5F, 0xAF, 0x61, 0x4D, 0x39, 0x46, + 0xD5, 0xF8, 0xD4, 0x32, 0x20, 0x46, 0x98, 0x47, 0x07, 0x46, 0xBC, 0xE6, + 0x33, 0x6A, 0x01, 0x93, 0x93, 0xF8, 0x60, 0x10, 0x01, 0x29, 0x03, 0xF1, + 0x64, 0x09, 0x64, 0xD0, 0x00, 0x29, 0x40, 0xF0, 0x97, 0x80, 0x08, 0xF1, + 0x0E, 0x03, 0x5B, 0x00, 0xDA, 0xE9, 0x01, 0x25, 0x58, 0x19, 0x08, 0xEE, + 0x10, 0x0A, 0x00, 0x2A, 0x52, 0xD0, 0xDA, 0xF8, 0x0C, 0x20, 0x20, 0x8E, + 0x01, 0x32, 0x52, 0x1B, 0x04, 0x30, 0xD2, 0x1A, 0xC0, 0x1A, 0x93, 0xB2, + 0x82, 0xB2, 0x9A, 0x42, 0x00, 0x92, 0x28, 0xBF, 0x1A, 0x46, 0x15, 0x46, + 0x01, 0x29, 0x2F, 0xD0, 0x00, 0x29, 0x50, 0xD0, 0x03, 0x29, 0x66, 0xD0, + 0x18, 0xEE, 0x10, 0x0A, 0x29, 0x46, 0xF3, 0xF7, 0x2F, 0xFB, 0x4F, 0xF0, + 0xFF, 0x33, 0x18, 0xEE, 0x10, 0x0A, 0x03, 0x22, 0x29, 0x46, 0xD6, 0xF7, + 0x29, 0xFF, 0xDA, 0xF8, 0x04, 0x30, 0x23, 0xB1, 0x00, 0x9A, 0x55, 0x1B, + 0xAD, 0xB2, 0x00, 0x2D, 0x67, 0xD1, 0x01, 0x9B, 0x93, 0xF8, 0x60, 0x30, + 0x13, 0xB1, 0x03, 0x2B, 0x7F, 0xF4, 0x2C, 0xAF, 0x03, 0x20, 0xD6, 0xF7, + 0x4F, 0xFF, 0x3A, 0x4B, 0x98, 0x42, 0x01, 0x46, 0x3F, 0xD1, 0x63, 0x6D, + 0x23, 0xF0, 0x7C, 0x03, 0x43, 0xF4, 0x00, 0x53, 0x43, 0xF0, 0x04, 0x03, + 0x63, 0x65, 0x1B, 0xE7, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x07, 0xB2, + 0x02, 0xAB, 0x32, 0x49, 0x26, 0x32, 0x48, 0x46, 0xF3, 0xF7, 0xDA, 0xF8, + 0x10, 0x21, 0x02, 0xA8, 0xF3, 0xF7, 0x9A, 0xFA, 0x01, 0x9B, 0x93, 0xF8, + 0x60, 0x10, 0xBD, 0xE7, 0x22, 0x8E, 0x04, 0x32, 0xD3, 0x1A, 0x9D, 0xB2, + 0xB6, 0xE7, 0xD6, 0xE9, 0x04, 0x53, 0x28, 0x48, 0x2A, 0x0C, 0x42, 0xEA, + 0x03, 0x42, 0x08, 0xF1, 0x10, 0x03, 0x02, 0x60, 0x85, 0x80, 0x5B, 0x00, + 0x94, 0xE7, 0x32, 0x8A, 0x73, 0x8A, 0xAD, 0xF8, 0x08, 0x20, 0x49, 0x46, + 0x05, 0x22, 0x0D, 0xF1, 0x0B, 0x00, 0x8D, 0xF8, 0x0A, 0x30, 0x08, 0xF0, + 0x1F, 0xF8, 0x08, 0x21, 0x02, 0xA8, 0xF3, 0xF7, 0x75, 0xFA, 0x01, 0x9B, + 0x93, 0xF8, 0x60, 0x10, 0x9A, 0xE7, 0x1A, 0x48, 0xF5, 0xF7, 0xF4, 0xFA, + 0x0A, 0xE6, 0x32, 0x8A, 0x73, 0x8A, 0xAD, 0xF8, 0x08, 0x20, 0x49, 0x46, + 0x0D, 0x22, 0x0D, 0xF1, 0x0B, 0x00, 0x8D, 0xF8, 0x0A, 0x30, 0x08, 0xF0, + 0x07, 0xF8, 0x02, 0xA8, 0x10, 0x21, 0xF3, 0xF7, 0x5D, 0xFA, 0x87, 0xE7, + 0x03, 0x29, 0x3F, 0xF4, 0x66, 0xAF, 0x00, 0x23, 0x66, 0xE7, 0xD3, 0xF8, + 0x08, 0x90, 0x29, 0x46, 0x48, 0x46, 0xF3, 0xF7, 0xB1, 0xFA, 0x03, 0x20, + 0xD6, 0xF7, 0xE8, 0xFE, 0x20, 0x21, 0xC0, 0x43, 0xF3, 0xF7, 0x64, 0xF8, + 0x29, 0x46, 0x03, 0x46, 0x03, 0x22, 0x48, 0x46, 0xD6, 0xF7, 0xA6, 0xFE, + 0x83, 0xE7, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x1C, 0xDF, 0x44, 0x21, + 0x88, 0x34, 0x17, 0x00, 0x00, 0xC1, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0x00, 0xEB, 0x81, 0x04, 0xD4, 0xF8, 0x7C, 0x61, 0x16, 0xB1, 0x00, 0x20, + 0xBD, 0xE8, 0xF0, 0x81, 0x15, 0x48, 0x0D, 0x46, 0x17, 0x46, 0xF4, 0xF7, + 0x1B, 0xF9, 0x80, 0x46, 0x00, 0x28, 0xF4, 0xD0, 0x31, 0x46, 0x4F, 0xF4, + 0x92, 0x72, 0xD1, 0xF7, 0x3B, 0xF8, 0x07, 0xF0, 0x3F, 0x02, 0x0F, 0x4B, + 0x88, 0xF8, 0x0C, 0x50, 0x88, 0xF8, 0x0A, 0x20, 0x19, 0x69, 0x0D, 0x4B, + 0xC8, 0xF8, 0x04, 0x10, 0xD3, 0xF8, 0xDC, 0x22, 0xA8, 0xF8, 0x08, 0x70, + 0xC8, 0xE9, 0x45, 0x28, 0x01, 0xF5, 0x43, 0x41, 0xC4, 0xF8, 0x7C, 0x81, + 0x08, 0xF5, 0x88, 0x70, 0xD3, 0xF8, 0xE0, 0x31, 0x50, 0x31, 0x98, 0x47, + 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0xBF, 0xF8, 0xDE, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x10, 0x4B, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0xEB, 0x81, 0x04, 0x00, 0x2B, + 0xD4, 0xF8, 0x7C, 0x51, 0x0D, 0xDB, 0x0C, 0x4B, 0x05, 0xF5, 0x88, 0x70, + 0xD3, 0xF8, 0xD8, 0x31, 0x98, 0x47, 0x0A, 0x48, 0x29, 0x46, 0xF4, 0xF7, + 0x95, 0xF8, 0x00, 0x23, 0xC4, 0xF8, 0x7C, 0x31, 0x38, 0xBD, 0x00, 0x2D, + 0xEF, 0xD1, 0x06, 0x49, 0x06, 0x48, 0x40, 0xF6, 0x7F, 0x52, 0xF5, 0xF7, + 0xDD, 0xFC, 0xE8, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xF8, 0xDE, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x10, 0xC1, 0x15, 0x00, + 0x08, 0x4B, 0x93, 0xF8, 0x73, 0x20, 0x62, 0xB9, 0x02, 0x88, 0xA3, 0xF8, + 0x6C, 0x20, 0x42, 0x88, 0xA3, 0xF8, 0x6E, 0x20, 0x82, 0x88, 0xA3, 0xF8, + 0x70, 0x20, 0x4F, 0xF4, 0x80, 0x72, 0xA3, 0xF8, 0x72, 0x20, 0x70, 0x47, + 0xB0, 0xDE, 0x17, 0x00, 0x03, 0x4B, 0x00, 0x22, 0x93, 0xF8, 0x72, 0x00, + 0xA3, 0xF8, 0x72, 0x20, 0x70, 0x47, 0x00, 0xBF, 0xB0, 0xDE, 0x17, 0x00, + 0x10, 0xB5, 0x4F, 0xF4, 0x00, 0x10, 0xF3, 0xF7, 0xDD, 0xFF, 0x03, 0x4B, + 0x03, 0x48, 0xD3, 0xF8, 0x38, 0x31, 0xBD, 0xE8, 0x10, 0x40, 0x18, 0x47, + 0x88, 0x1A, 0x17, 0x00, 0xE8, 0xDE, 0x17, 0x00, 0x06, 0x4B, 0x07, 0x4A, + 0x93, 0xF8, 0x44, 0x30, 0x03, 0xEB, 0x83, 0x03, 0x02, 0xEB, 0x03, 0x13, + 0xB3, 0xF8, 0x4C, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, + 0xB0, 0xDE, 0x17, 0x00, 0xE0, 0x63, 0x18, 0x00, 0xF8, 0xB5, 0x55, 0x4F, + 0x46, 0x7F, 0x05, 0x7F, 0x54, 0x4A, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, + 0x06, 0x74, 0xD4, 0xE9, 0x2C, 0xC3, 0x4F, 0xF4, 0xA4, 0x6E, 0x0E, 0xFB, + 0x05, 0x25, 0x1B, 0x68, 0xD5, 0xF8, 0xA8, 0xE4, 0x00, 0x22, 0x0A, 0x60, + 0x4B, 0xB3, 0xBE, 0xF1, 0x00, 0x0F, 0x26, 0xD0, 0xD5, 0xF8, 0xB0, 0x54, + 0xAA, 0x07, 0x06, 0xD5, 0x05, 0x8B, 0xB4, 0xF8, 0x34, 0xE0, 0x6C, 0xBA, + 0xA4, 0xB2, 0xA6, 0x45, 0x1B, 0xD0, 0xBC, 0xF1, 0x00, 0x0F, 0x04, 0xD0, + 0x9C, 0xF8, 0x60, 0x20, 0x01, 0x3A, 0x01, 0x2A, 0x1C, 0xD9, 0x93, 0xF8, + 0x60, 0x20, 0x04, 0x2A, 0x04, 0xD8, 0xDF, 0xE8, 0x02, 0xF0, 0x10, 0x20, + 0x27, 0x10, 0x3C, 0x00, 0x3D, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x04, 0xDA, 0x3B, 0x49, 0x3C, 0x48, 0xC4, 0x22, 0xF5, 0xF7, + 0x53, 0xFC, 0x00, 0x20, 0xF8, 0xBD, 0xC2, 0x8B, 0x04, 0x24, 0xD5, 0x07, + 0x0C, 0x60, 0x54, 0xD5, 0x20, 0x46, 0xF8, 0xBD, 0x4F, 0xF4, 0x1E, 0x72, + 0x02, 0xFB, 0x06, 0x76, 0x96, 0xF8, 0x5D, 0x22, 0x01, 0x2A, 0xDA, 0xD8, + 0xED, 0xE7, 0xC2, 0x8B, 0x0C, 0x24, 0x0C, 0x60, 0xD4, 0x07, 0x35, 0xD5, + 0x08, 0x20, 0xF8, 0xBD, 0xC2, 0x8B, 0x08, 0x24, 0x0C, 0x60, 0xD1, 0x07, + 0xF8, 0xD4, 0xD3, 0xE9, 0x12, 0x21, 0x01, 0x32, 0x41, 0xF1, 0x00, 0x01, + 0x16, 0x46, 0x0F, 0x46, 0x19, 0x46, 0xE1, 0xE9, 0x12, 0x67, 0x06, 0x22, + 0x38, 0x30, 0x07, 0xF0, 0xCD, 0xFE, 0x20, 0x46, 0xF8, 0xBD, 0xC2, 0x8B, + 0x10, 0x24, 0xD2, 0x07, 0x0C, 0x60, 0x13, 0xD4, 0x93, 0xF8, 0x62, 0x20, + 0x0F, 0x2A, 0xD3, 0xE9, 0x12, 0x21, 0x0F, 0xD9, 0x02, 0x32, 0x41, 0xF1, + 0x00, 0x01, 0x14, 0x46, 0x0D, 0x46, 0x19, 0x46, 0xE1, 0xE9, 0x12, 0x45, + 0x08, 0x22, 0x38, 0x30, 0x07, 0xF0, 0xB4, 0xFE, 0x12, 0x20, 0xF8, 0xBD, + 0x12, 0x20, 0xF8, 0xBD, 0x01, 0x32, 0x41, 0xF1, 0x00, 0x01, 0xEE, 0xE7, + 0xD3, 0xE9, 0x12, 0x21, 0x01, 0x32, 0x41, 0xF1, 0x00, 0x01, 0x14, 0x46, + 0x0D, 0x46, 0x19, 0x46, 0xE1, 0xE9, 0x12, 0x45, 0x06, 0x22, 0x38, 0x30, + 0x07, 0xF0, 0x9E, 0xFE, 0xBA, 0xE7, 0xD3, 0xE9, 0x12, 0x21, 0x01, 0x32, + 0x41, 0xF1, 0x00, 0x01, 0x16, 0x46, 0x0F, 0x46, 0x19, 0x46, 0xE1, 0xE9, + 0x12, 0x67, 0x22, 0x46, 0x38, 0x30, 0x07, 0xF0, 0x8F, 0xFE, 0x20, 0x46, + 0xF8, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0xF0, 0xB5, 0xC3, 0x8B, 0x04, 0x46, 0xD8, 0x07, 0x83, 0xB0, 0x44, 0xD4, + 0xE0, 0x7E, 0x66, 0x7F, 0x22, 0x7F, 0xFF, 0x28, 0x44, 0xD0, 0x4F, 0xF4, + 0x9E, 0x71, 0x01, 0xFB, 0x06, 0x01, 0x21, 0x48, 0x98, 0x31, 0x00, 0xEB, + 0x41, 0x01, 0x1A, 0x25, 0x8F, 0x88, 0x78, 0x1C, 0xC0, 0xF3, 0x0B, 0x00, + 0x88, 0x80, 0x27, 0x84, 0xD9, 0x05, 0x1C, 0x4B, 0x4F, 0xF4, 0xA4, 0x61, + 0x01, 0xFB, 0x02, 0x33, 0x48, 0xBF, 0x06, 0x35, 0x93, 0xF8, 0x62, 0x30, + 0x43, 0xB9, 0x16, 0x4B, 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x06, 0x36, + 0x73, 0x68, 0x9B, 0x06, 0x48, 0xBF, 0x04, 0x35, 0x01, 0xA9, 0x84, 0xF8, + 0x32, 0x50, 0x20, 0x46, 0xFF, 0xF7, 0x16, 0xFF, 0x23, 0x8B, 0xA2, 0x88, + 0x22, 0x86, 0x5B, 0xBA, 0x9B, 0xB2, 0xB3, 0xF5, 0xC0, 0x6F, 0x28, 0x44, + 0x88, 0xBF, 0x08, 0x30, 0xC0, 0xB2, 0x01, 0x9B, 0x84, 0xF8, 0x33, 0x00, + 0x8C, 0xBF, 0x08, 0x21, 0x00, 0x21, 0x84, 0xF8, 0x42, 0x00, 0x84, 0xF8, + 0x34, 0x10, 0x84, 0xF8, 0x35, 0x30, 0x00, 0x23, 0xC4, 0xE9, 0x09, 0x33, + 0x03, 0xB0, 0xF0, 0xBD, 0x18, 0x25, 0xC7, 0xE7, 0x68, 0x65, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x1D, 0xA0, + 0xDF, 0xF8, 0x58, 0x92, 0x90, 0xF8, 0x1C, 0x80, 0x92, 0x4F, 0x4F, 0xF4, + 0x1E, 0x76, 0x06, 0xFB, 0x0A, 0xF6, 0x09, 0xEB, 0x06, 0x02, 0x4F, 0xF4, + 0xA4, 0x64, 0x04, 0xFB, 0x08, 0x74, 0xD2, 0xF8, 0xB4, 0x30, 0x94, 0xF8, + 0x62, 0xC0, 0xD3, 0xF8, 0x00, 0xB0, 0xD2, 0xF8, 0xB0, 0x30, 0x83, 0xB0, + 0x05, 0x46, 0x01, 0x93, 0xD4, 0xF8, 0xA8, 0x34, 0x00, 0x93, 0x0C, 0x46, + 0xBC, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x8D, 0x80, 0x53, 0x68, 0x13, 0xF0, + 0x20, 0x03, 0x40, 0xF0, 0x9F, 0x80, 0xE9, 0x7E, 0xB5, 0xF8, 0x1E, 0xC0, + 0xFF, 0x29, 0x0C, 0xBF, 0xA4, 0xF1, 0x18, 0x00, 0xA4, 0xF1, 0x1A, 0x00, + 0x1C, 0xF4, 0x80, 0x72, 0x1D, 0xBF, 0x06, 0x38, 0x00, 0xF1, 0x1E, 0x04, + 0x02, 0x46, 0x00, 0xF1, 0x18, 0x04, 0xFF, 0x29, 0x00, 0xF0, 0x94, 0x80, + 0x6F, 0xF0, 0x7F, 0x0C, 0x4F, 0xF0, 0x00, 0x0E, 0x80, 0xF8, 0x00, 0xC0, + 0x80, 0xF8, 0x01, 0xE0, 0x21, 0x80, 0x29, 0x8C, 0xB5, 0xF8, 0x1E, 0xC0, + 0x09, 0x01, 0x1C, 0xF4, 0x00, 0x7F, 0xC1, 0x82, 0x63, 0xD1, 0x01, 0x88, + 0x0B, 0x43, 0x43, 0xF0, 0x08, 0x01, 0x1C, 0xF4, 0x00, 0x6F, 0x01, 0x80, + 0x69, 0xD0, 0x23, 0xF4, 0x40, 0x71, 0x41, 0xF0, 0x08, 0x01, 0x89, 0xB2, + 0x01, 0x80, 0x4F, 0xF4, 0xA4, 0x64, 0x1C, 0xF0, 0x04, 0x0F, 0x04, 0xFB, + 0x08, 0xF4, 0x18, 0xBF, 0x41, 0xF4, 0x00, 0x51, 0x04, 0xF1, 0x5C, 0x03, + 0x18, 0xBF, 0x01, 0x80, 0x07, 0xEB, 0x03, 0x0C, 0xFB, 0x5A, 0x43, 0x81, + 0xBC, 0xF8, 0x02, 0x30, 0x83, 0x81, 0x01, 0xF4, 0x40, 0x71, 0xBC, 0xF8, + 0x04, 0x30, 0xC3, 0x81, 0xB1, 0xF5, 0x80, 0x7F, 0x5C, 0xD0, 0xB1, 0xF5, + 0x00, 0x7F, 0x76, 0xD0, 0x00, 0x29, 0x40, 0xF0, 0x81, 0x80, 0xAB, 0x89, + 0x83, 0x80, 0xEB, 0x89, 0xC3, 0x80, 0x2B, 0x8A, 0x03, 0x81, 0x04, 0xF5, + 0xB2, 0x74, 0x3B, 0x5B, 0x03, 0x82, 0x3C, 0x44, 0x63, 0x88, 0x43, 0x82, + 0xA3, 0x88, 0x83, 0x82, 0xBB, 0xF1, 0x00, 0x0F, 0x1C, 0xD0, 0x00, 0x9B, + 0xD3, 0xB1, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x77, 0xD7, 0xF8, + 0xB0, 0x34, 0x9B, 0x07, 0x0A, 0xD5, 0x6A, 0x7F, 0x2B, 0x8B, 0x4F, 0xF4, + 0x1E, 0x71, 0x01, 0xFB, 0x02, 0x92, 0x5B, 0xBA, 0x92, 0x8E, 0x9B, 0xB2, + 0x9A, 0x42, 0x07, 0xD0, 0x01, 0x9B, 0x00, 0x2B, 0x7B, 0xD0, 0x93, 0xF8, + 0x60, 0x30, 0x01, 0x3B, 0x01, 0x2B, 0x6E, 0xD9, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x00, 0x23, 0x75, 0xE7, 0x21, 0x88, 0x41, 0xF0, 0x10, 0x01, + 0x21, 0x80, 0x01, 0x88, 0xB5, 0xF8, 0x1E, 0xC0, 0x0B, 0x43, 0x43, 0xF0, + 0x08, 0x01, 0x1C, 0xF4, 0x00, 0x6F, 0x01, 0x80, 0x95, 0xD1, 0x1C, 0xF4, + 0x80, 0x7F, 0x22, 0xD0, 0x43, 0xF4, 0x42, 0x71, 0x01, 0x80, 0x94, 0xE7, + 0x32, 0x4B, 0x11, 0x46, 0xD3, 0xF8, 0xB8, 0x33, 0x98, 0x47, 0x4F, 0xF4, + 0x00, 0x43, 0x44, 0xF8, 0x04, 0x0D, 0x56, 0xE7, 0x00, 0x21, 0x81, 0x75, + 0xC1, 0x75, 0x7A, 0xE7, 0x26, 0x36, 0x09, 0xEB, 0x06, 0x03, 0x39, 0xF8, + 0x06, 0x20, 0x82, 0x80, 0x5A, 0x88, 0xC2, 0x80, 0x9B, 0x88, 0x03, 0x81, + 0xAB, 0x89, 0x03, 0x82, 0xEB, 0x89, 0x43, 0x82, 0x2B, 0x8A, 0x83, 0x82, + 0xA6, 0xE7, 0x4F, 0xF4, 0xA4, 0x64, 0x04, 0xFB, 0x08, 0x74, 0x94, 0xF8, + 0x62, 0x40, 0x00, 0x2C, 0x27, 0xD1, 0x43, 0xF4, 0x84, 0x71, 0x01, 0x80, + 0x69, 0xE7, 0xAB, 0x89, 0x83, 0x80, 0xEB, 0x89, 0xC3, 0x80, 0x2B, 0x8A, + 0x03, 0x81, 0x6B, 0x8A, 0x03, 0x82, 0xAB, 0x8A, 0x43, 0x82, 0xEB, 0x8A, + 0x83, 0x82, 0x8D, 0xE7, 0x26, 0x36, 0x09, 0xEB, 0x06, 0x03, 0x39, 0xF8, + 0x06, 0x10, 0x91, 0x80, 0x59, 0x88, 0xD1, 0x80, 0x9B, 0x88, 0x13, 0x81, + 0xAB, 0x89, 0x13, 0x82, 0xEB, 0x89, 0x53, 0x82, 0x2B, 0x8A, 0x93, 0x82, + 0x6B, 0x8A, 0x13, 0x83, 0xAB, 0x8A, 0x53, 0x83, 0xEB, 0x8A, 0x93, 0x83, + 0x76, 0xE7, 0x02, 0x2C, 0x04, 0xBF, 0x43, 0xF4, 0x02, 0x71, 0x01, 0x80, + 0x3F, 0xE7, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x0A, 0x99, 0x99, 0xF8, + 0x5D, 0x32, 0x01, 0x2B, 0x88, 0xD9, 0x03, 0x88, 0x43, 0xF4, 0x80, 0x43, + 0x03, 0x80, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x18, 0x88, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x06, 0x46, 0x54, 0x48, 0x75, 0x7F, 0x34, 0x7F, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x05, 0x03, 0x89, 0x46, 0xD3, 0xF8, 0xB4, 0x70, 0xD7, 0xF8, + 0x00, 0x80, 0xB8, 0xF1, 0x00, 0x0F, 0x4C, 0xD0, 0x17, 0x46, 0x4D, 0x4A, + 0x4F, 0xF4, 0xA4, 0x61, 0x01, 0xFB, 0x04, 0x24, 0xD4, 0xF8, 0xA8, 0x24, + 0x00, 0x2A, 0x42, 0xD0, 0xD4, 0xF8, 0xB0, 0x24, 0x92, 0x07, 0x05, 0xD5, + 0x32, 0x8B, 0x99, 0x8E, 0x53, 0xBA, 0x9B, 0xB2, 0x99, 0x42, 0x38, 0xD0, + 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x05, 0xD5, 0xF8, 0xB0, 0x30, + 0x23, 0xB1, 0x93, 0xF8, 0x60, 0x30, 0x01, 0x3B, 0x01, 0x2B, 0x40, 0xD9, + 0x98, 0xF8, 0x60, 0x30, 0x04, 0x2B, 0x67, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, + 0x2A, 0x03, 0x40, 0x2A, 0x49, 0x00, 0x32, 0x8F, 0x42, 0xF4, 0x00, 0x53, + 0x03, 0xF4, 0xFE, 0x43, 0x43, 0xEA, 0x12, 0x23, 0x29, 0xF8, 0x08, 0x3C, + 0x96, 0xF8, 0x38, 0x30, 0x98, 0xF8, 0x61, 0x20, 0xA9, 0xF1, 0x08, 0x09, + 0x43, 0xEA, 0x82, 0x33, 0x43, 0xF4, 0x00, 0x53, 0xA9, 0xF8, 0x02, 0x30, + 0x73, 0x8F, 0xA9, 0xF8, 0x04, 0x30, 0xB3, 0x8F, 0xA9, 0xF8, 0x06, 0x30, + 0xC7, 0xB1, 0xF2, 0x6A, 0xD4, 0x68, 0x2B, 0x4B, 0x98, 0xF8, 0x62, 0x00, + 0x23, 0x40, 0x03, 0x43, 0xD3, 0x60, 0x48, 0x46, 0xBD, 0xE8, 0xF8, 0x83, + 0x33, 0x8F, 0x29, 0xF8, 0x04, 0x3C, 0x98, 0xF8, 0x61, 0x20, 0x73, 0x8F, + 0xA9, 0xF1, 0x04, 0x09, 0x43, 0xEA, 0x82, 0x33, 0xA9, 0xF8, 0x02, 0x30, + 0x00, 0x2F, 0xE6, 0xD1, 0xB2, 0x6C, 0x28, 0x32, 0xE4, 0xE7, 0x95, 0xF8, + 0x5D, 0x32, 0x01, 0x2B, 0xBA, 0xD8, 0xE6, 0xE7, 0x33, 0x8F, 0x29, 0xF8, + 0x08, 0x3C, 0x98, 0xF8, 0x61, 0x30, 0xA9, 0xF1, 0x08, 0x09, 0x9B, 0x03, + 0xCA, 0xE7, 0x98, 0xF8, 0x61, 0x30, 0x29, 0xF8, 0x12, 0x3C, 0xA9, 0xF1, + 0x12, 0x09, 0x33, 0x8F, 0xA9, 0xF8, 0x02, 0x30, 0x73, 0x8F, 0xA9, 0xF8, + 0x04, 0x30, 0xB3, 0x8F, 0xA9, 0xF8, 0x06, 0x30, 0xF3, 0x8F, 0xA9, 0xF8, + 0x08, 0x30, 0x45, 0xF6, 0x36, 0x43, 0xA9, 0xF8, 0x0A, 0x30, 0xA9, 0xF8, + 0x0C, 0x30, 0xA9, 0xF8, 0x0E, 0x30, 0xA9, 0xF8, 0x10, 0x30, 0xB7, 0xE7, + 0x09, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xB1, 0xDA, + 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0xD9, 0x22, 0xF5, 0xF7, 0xA8, 0xF9, + 0xAA, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0x00, 0xFC, 0x0F, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x70, 0xB5, 0x1A, 0x4D, 0x1A, 0x4E, 0xD5, 0xF8, + 0x68, 0x32, 0x04, 0x46, 0x98, 0x47, 0x60, 0x7F, 0xD5, 0xF8, 0x5C, 0x31, + 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x00, 0x60, 0x98, 0x47, 0xE3, 0x8B, + 0xE0, 0x62, 0x99, 0x04, 0x11, 0xD5, 0x63, 0x7F, 0x05, 0xFB, 0x03, 0x66, + 0xD6, 0xF8, 0x4C, 0x31, 0xD3, 0xF8, 0x9C, 0x20, 0xA2, 0x62, 0x93, 0xF8, + 0xA1, 0x30, 0x2B, 0xB1, 0x94, 0xF8, 0x36, 0x30, 0x43, 0xF0, 0x20, 0x03, + 0x84, 0xF8, 0x36, 0x30, 0x70, 0xBD, 0x94, 0xF8, 0x36, 0x30, 0x03, 0xF0, + 0x03, 0x02, 0x00, 0xEB, 0x82, 0x00, 0x42, 0x6A, 0x41, 0x69, 0xA1, 0x62, + 0x52, 0x03, 0x44, 0xBF, 0x43, 0xF0, 0x20, 0x03, 0x84, 0xF8, 0x36, 0x30, + 0x70, 0xBD, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0xF0, 0xB5, 0x83, 0xB0, 0xC3, 0x7E, 0x00, 0x93, 0x04, 0x46, 0xC3, 0x8B, + 0x0F, 0x46, 0x16, 0x46, 0x16, 0x49, 0x02, 0x8C, 0x20, 0x20, 0xF4, 0xF7, + 0x29, 0xFF, 0xE3, 0x8B, 0xD9, 0x07, 0x1E, 0xD5, 0x13, 0x48, 0xF4, 0xF7, + 0xD3, 0xFE, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x03, 0xD4, 0x72, 0xB6, + 0x10, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x10, 0x4D, 0x2B, 0x68, 0x3A, 0x46, + 0x01, 0x33, 0x31, 0x46, 0x20, 0x46, 0x2B, 0x60, 0xDF, 0xF7, 0x4A, 0xFD, + 0x2B, 0x68, 0x33, 0xB1, 0x09, 0x4A, 0x01, 0x3B, 0x12, 0x68, 0x2B, 0x60, + 0x0B, 0xB9, 0x02, 0xB1, 0x62, 0xB6, 0x03, 0xB0, 0xF0, 0xBD, 0xDF, 0xF7, + 0x61, 0xF9, 0xE3, 0x8B, 0xDA, 0x07, 0xDB, 0xD4, 0xDD, 0xE7, 0x00, 0xBF, + 0x3C, 0xC1, 0x15, 0x00, 0x58, 0xC1, 0x15, 0x00, 0x38, 0x61, 0x17, 0x00, + 0x6C, 0x28, 0x17, 0x00, 0x02, 0x8B, 0x53, 0xBA, 0x9B, 0xB2, 0xB3, 0xF5, + 0xC0, 0x6F, 0x10, 0xB5, 0x04, 0x46, 0x08, 0xD3, 0x4A, 0xF6, 0xAA, 0x23, + 0x21, 0xF8, 0x08, 0x3D, 0x03, 0x20, 0x00, 0x23, 0xCA, 0x80, 0x48, 0x80, + 0x8B, 0x80, 0x20, 0x46, 0x01, 0x22, 0xFF, 0xF7, 0xBB, 0xFE, 0x04, 0x4B, + 0x01, 0x46, 0xD3, 0xF8, 0x20, 0x34, 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, + 0x18, 0x47, 0x00, 0xBF, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xC5, 0x8B, 0xDF, 0xF8, 0x7C, 0x82, 0x07, 0x7F, 0x4F, 0xF4, 0xA4, 0x6A, + 0x0E, 0x46, 0x29, 0x07, 0x83, 0xB0, 0x04, 0x46, 0x0A, 0xFB, 0x07, 0x8A, + 0x6B, 0xD4, 0x41, 0x7F, 0xDF, 0xF8, 0x64, 0xB2, 0x03, 0x8B, 0x4F, 0xF4, + 0x1E, 0x72, 0x02, 0xFB, 0x01, 0xB1, 0x5B, 0xBA, 0x88, 0x8E, 0x91, 0xF8, + 0x30, 0x20, 0x9B, 0xB2, 0x98, 0x42, 0x0F, 0xD0, 0x02, 0x2A, 0x16, 0xD0, + 0x8B, 0x49, 0x20, 0x20, 0xF4, 0xF7, 0xB4, 0xFE, 0x20, 0x46, 0x31, 0x46, + 0x4F, 0xF0, 0x00, 0x42, 0xFF, 0xF7, 0x78, 0xFF, 0x00, 0x20, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x01, 0x3A, 0x25, 0xF4, 0x80, 0x75, 0x01, 0x2A, + 0xE5, 0x83, 0x02, 0xD9, 0x91, 0xF8, 0x30, 0x20, 0xE8, 0xE7, 0xDF, 0xF8, + 0x1C, 0x92, 0x20, 0x46, 0xD9, 0xF8, 0x2C, 0x34, 0x98, 0x47, 0x63, 0x7F, + 0x4F, 0xF4, 0x1E, 0x72, 0x02, 0xFB, 0x03, 0xBB, 0x9B, 0xF8, 0x30, 0x30, + 0x02, 0x2B, 0x00, 0xF0, 0xA2, 0x80, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x07, 0x87, 0x77, 0x4A, 0x3B, 0x6C, 0x77, 0x49, 0x1F, 0x79, 0x77, 0x4B, + 0x00, 0x2F, 0x0C, 0xBF, 0x0F, 0x46, 0x17, 0x46, 0xE7, 0x62, 0x7D, 0x69, + 0x93, 0xF8, 0xBD, 0x20, 0xC5, 0xF3, 0xC2, 0x28, 0xED, 0xB2, 0x00, 0x2A, + 0x40, 0xF0, 0xB4, 0x80, 0xD9, 0xF8, 0x38, 0x33, 0x50, 0x46, 0x01, 0xAA, + 0x0D, 0xF1, 0x03, 0x01, 0x98, 0x47, 0x05, 0xF0, 0x7C, 0x03, 0x58, 0xEA, + 0x03, 0x03, 0x0C, 0xBF, 0x9D, 0xF8, 0x03, 0x30, 0x9D, 0xF8, 0x04, 0x30, + 0x43, 0xEA, 0x03, 0x23, 0x7B, 0x62, 0xE3, 0x8B, 0xDB, 0x07, 0x4C, 0xD4, + 0xA1, 0x6C, 0xD9, 0xF8, 0x1C, 0x34, 0xA8, 0x31, 0x20, 0x46, 0x98, 0x47, + 0x45, 0xE0, 0x00, 0x23, 0xEA, 0x06, 0x01, 0x93, 0x5B, 0xD5, 0x5D, 0x4B, + 0xE3, 0x62, 0x15, 0xF0, 0x80, 0x05, 0x7D, 0xD1, 0xA8, 0x46, 0xDF, 0xF8, + 0x80, 0x91, 0x5B, 0x4F, 0xD9, 0xF8, 0x38, 0x33, 0x50, 0x46, 0x0D, 0xF1, + 0x03, 0x02, 0x0D, 0xF1, 0x02, 0x01, 0x98, 0x47, 0xE2, 0x6A, 0x4F, 0xF0, + 0x00, 0x0A, 0xA3, 0x68, 0x02, 0xEB, 0x8A, 0x00, 0x23, 0xF0, 0x60, 0x41, + 0x13, 0xF0, 0x80, 0x4F, 0x41, 0xF0, 0x00, 0x51, 0x14, 0xBF, 0x41, 0x61, + 0x43, 0x69, 0x97, 0xF8, 0xBD, 0x10, 0xC3, 0xF3, 0xC2, 0x20, 0x03, 0xF0, + 0x7F, 0x03, 0x51, 0xBB, 0x08, 0xBB, 0x03, 0x2B, 0x02, 0xEB, 0x8A, 0x01, + 0x1D, 0xD8, 0x9D, 0xF8, 0x02, 0x30, 0x43, 0xEA, 0x03, 0x23, 0x4B, 0x62, + 0x0A, 0xF1, 0x01, 0x0A, 0xBA, 0xF1, 0x04, 0x0F, 0xDD, 0xD1, 0x00, 0x23, + 0xC4, 0xE9, 0x09, 0x33, 0x01, 0x9A, 0x84, 0xF8, 0x32, 0x80, 0x84, 0xF8, + 0x33, 0x50, 0x84, 0xF8, 0x42, 0x50, 0x84, 0xF8, 0x35, 0x20, 0xD9, 0xF8, + 0x94, 0x33, 0x31, 0x46, 0x20, 0x46, 0x98, 0x47, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x9D, 0xF8, 0x03, 0x30, 0x02, 0xEB, 0x8A, 0x01, 0x43, 0xEA, + 0x03, 0x23, 0x4B, 0x62, 0xDE, 0xE7, 0x19, 0x46, 0xD1, 0xF7, 0xF0, 0xFD, + 0xE2, 0x6A, 0x02, 0xEB, 0x8A, 0x03, 0x40, 0xEA, 0x00, 0x20, 0x58, 0x62, + 0xD4, 0xE7, 0x9A, 0xF8, 0xC0, 0x34, 0x00, 0x2B, 0x9F, 0xD1, 0xDA, 0xF8, + 0x40, 0x20, 0x2D, 0x4B, 0x11, 0x79, 0x2B, 0x4A, 0x00, 0x29, 0x18, 0xBF, + 0x13, 0x46, 0xC3, 0x62, 0x97, 0xE7, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, + 0x07, 0x83, 0x93, 0xF8, 0x62, 0x20, 0x52, 0xB3, 0x02, 0x2A, 0x04, 0xD1, + 0x9B, 0xF8, 0x70, 0x32, 0x00, 0x2B, 0x7F, 0xF4, 0x50, 0xAF, 0x24, 0x4B, + 0x1B, 0x78, 0x1B, 0xB9, 0xD9, 0xF8, 0x1C, 0x30, 0x20, 0x46, 0x98, 0x47, + 0x20, 0x46, 0xFF, 0xF7, 0x67, 0xFE, 0x6E, 0xE7, 0x00, 0x22, 0xC0, 0x21, + 0x20, 0x46, 0x01, 0xF0, 0x1D, 0xFB, 0x01, 0x28, 0x1C, 0xD0, 0x02, 0x28, + 0x15, 0xD0, 0xE3, 0x8B, 0x00, 0x25, 0x23, 0xF0, 0x80, 0x03, 0xE3, 0x83, + 0xA8, 0x46, 0x72, 0xE7, 0x05, 0xF0, 0x7F, 0x01, 0x40, 0x46, 0xD1, 0xF7, + 0xAD, 0xFD, 0x40, 0xEA, 0x00, 0x20, 0x78, 0x62, 0x55, 0xE7, 0x93, 0xF8, + 0xAC, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x27, 0xAF, 0xD5, 0xE7, 0x12, 0x23, + 0x00, 0x25, 0x01, 0x93, 0xA8, 0x46, 0x5E, 0xE7, 0x01, 0xA9, 0x20, 0x46, + 0xFF, 0xF7, 0x46, 0xFB, 0xA3, 0x6C, 0x05, 0x46, 0x03, 0xF1, 0xA8, 0x01, + 0x03, 0xF1, 0xA0, 0x00, 0x18, 0x22, 0x07, 0xF0, 0x75, 0xFA, 0xED, 0xB2, + 0x4F, 0xF0, 0x18, 0x08, 0x4D, 0xE7, 0x00, 0xBF, 0x70, 0xC1, 0x15, 0x00, + 0x84, 0x3C, 0x18, 0x00, 0xC4, 0x3C, 0x18, 0x00, 0x2C, 0x19, 0x17, 0x00, + 0xB8, 0x34, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x51, 0x4A, 0x43, 0x7F, + 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, 0x03, 0x23, 0x86, 0xB0, 0xD3, 0xF8, + 0xB4, 0x30, 0x1E, 0x68, 0x8E, 0xB1, 0x90, 0xF8, 0x35, 0x30, 0x04, 0x46, + 0x6B, 0xB1, 0x90, 0xF8, 0x34, 0x30, 0x85, 0x6C, 0x96, 0xF8, 0x60, 0x20, + 0xED, 0x1A, 0x01, 0x2A, 0x05, 0xF1, 0xA8, 0x05, 0x06, 0xD0, 0x03, 0x2A, + 0x51, 0xD0, 0x00, 0x2A, 0x4F, 0xD0, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, + 0x07, 0x8E, 0x42, 0x4A, 0x00, 0x91, 0x3B, 0x44, 0x06, 0xF1, 0x50, 0x01, + 0xD2, 0xF8, 0x7C, 0x73, 0x2A, 0x46, 0xB8, 0x47, 0x3E, 0x4B, 0x1B, 0x68, + 0x1B, 0x78, 0x9A, 0x07, 0xED, 0xD5, 0x96, 0xF8, 0x60, 0x20, 0x01, 0x2A, + 0x06, 0xF1, 0x64, 0x08, 0x3E, 0xD1, 0x23, 0x8E, 0x94, 0xF8, 0x34, 0x70, + 0x0C, 0x33, 0x1F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, 0x4F, 0xF0, 0xFF, 0x33, + 0x03, 0x22, 0x28, 0x46, 0xD6, 0xF7, 0xD8, 0xF8, 0xD6, 0xE9, 0x12, 0x03, + 0x32, 0x49, 0x94, 0xF8, 0x1C, 0xC0, 0x88, 0x80, 0x31, 0x4A, 0x00, 0x0C, + 0x4F, 0xF4, 0xA4, 0x6E, 0x40, 0xEA, 0x03, 0x40, 0x0E, 0xFB, 0x0C, 0x22, + 0x08, 0x60, 0x02, 0xAB, 0x40, 0x46, 0xF2, 0xF7, 0x9F, 0xFA, 0x02, 0xA8, + 0x10, 0x21, 0xF2, 0xF7, 0x5F, 0xFC, 0x96, 0xF8, 0x60, 0x20, 0xCA, 0xB1, + 0x03, 0x2A, 0x17, 0xD0, 0x03, 0x20, 0xD6, 0xF7, 0xF1, 0xF8, 0x39, 0x46, + 0x02, 0x46, 0x28, 0x46, 0xF2, 0xF7, 0x84, 0xFA, 0x39, 0x46, 0x28, 0x46, + 0xF2, 0xF7, 0x7A, 0xFC, 0x06, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x1D, 0x4B, + 0x1B, 0x68, 0x1B, 0x78, 0x9B, 0x07, 0xAA, 0xD5, 0x06, 0xF1, 0x64, 0x08, + 0x00, 0x27, 0xE4, 0xE7, 0x23, 0x8E, 0x94, 0xF8, 0x34, 0x70, 0x04, 0x33, + 0x1F, 0x44, 0xBF, 0xB2, 0x39, 0x1F, 0x4F, 0xF0, 0xFF, 0x33, 0x03, 0x22, + 0x28, 0x46, 0xD6, 0xF7, 0x97, 0xF8, 0x96, 0xF8, 0x60, 0x30, 0xB6, 0xF8, + 0x48, 0x10, 0xB6, 0xF8, 0x4A, 0x20, 0xAD, 0xF8, 0x08, 0x10, 0x8D, 0xF8, + 0x0A, 0x20, 0x41, 0x46, 0x4B, 0xB9, 0x05, 0x22, 0x0D, 0xF1, 0x0B, 0x00, + 0x07, 0xF0, 0xCA, 0xF9, 0x02, 0xA8, 0x08, 0x21, 0xF2, 0xF7, 0x20, 0xFC, + 0xC4, 0xE7, 0x0D, 0x22, 0x0D, 0xF1, 0x0B, 0x00, 0x07, 0xF0, 0xC0, 0xF9, + 0x02, 0xA8, 0x10, 0x21, 0xF2, 0xF7, 0x16, 0xFC, 0xBA, 0xE7, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x34, 0x36, 0x17, 0x00, + 0xA0, 0x34, 0x17, 0x00, 0x74, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0xC5, 0x6C, 0xC3, 0x8B, 0x2F, 0x69, 0x02, 0x8C, 0x2A, 0x81, 0x00, 0x26, + 0x13, 0xF0, 0x08, 0x02, 0x2E, 0x61, 0x04, 0x46, 0x07, 0xF4, 0x00, 0x06, + 0x88, 0x46, 0x07, 0xF0, 0x40, 0x47, 0x1C, 0xD0, 0x99, 0x06, 0x01, 0xD5, + 0x00, 0x2E, 0x6C, 0xD0, 0x9A, 0x05, 0x3E, 0xD4, 0xB7, 0xF1, 0x40, 0x4F, + 0x20, 0xD0, 0xE3, 0x7E, 0xFF, 0x2B, 0x22, 0xD1, 0x2B, 0x69, 0x62, 0x6A, + 0x01, 0x20, 0x02, 0xF4, 0x00, 0x12, 0x16, 0xB1, 0x43, 0xF0, 0x08, 0x03, + 0x2B, 0x61, 0x00, 0x2A, 0x47, 0xD0, 0x43, 0xF0, 0x01, 0x03, 0x28, 0x73, + 0x2B, 0x61, 0xBD, 0xE8, 0xF0, 0x81, 0x9B, 0x05, 0xE6, 0xD5, 0x43, 0x7F, + 0x2A, 0x49, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x13, 0xB7, 0xF1, + 0x40, 0x4F, 0x83, 0xF8, 0x32, 0x20, 0xDE, 0xD1, 0x2B, 0x69, 0x43, 0xF0, + 0x04, 0x03, 0x2B, 0x61, 0xDD, 0xE7, 0x31, 0x1E, 0x42, 0x46, 0x18, 0xBF, + 0x01, 0x21, 0x20, 0x46, 0x01, 0xF0, 0x3A, 0xF8, 0x63, 0x6A, 0x13, 0xF4, + 0x00, 0x12, 0x20, 0xD0, 0x03, 0xF4, 0x60, 0x13, 0xB3, 0xF5, 0x60, 0x1F, + 0x01, 0xD0, 0x00, 0x23, 0x6B, 0x73, 0x2B, 0x69, 0x00, 0x2E, 0xD2, 0xD0, + 0xCC, 0xE7, 0x19, 0x4B, 0x60, 0x7F, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x1A, 0xDB, 0x00, 0x23, 0x1A, 0x46, 0x17, 0x21, 0xE0, 0xF7, + 0x0D, 0xFA, 0x12, 0x4A, 0x63, 0x7F, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, + 0x03, 0x23, 0x00, 0x22, 0x83, 0xF8, 0x32, 0x20, 0xAA, 0xE7, 0x2B, 0x69, + 0x0E, 0xB1, 0x43, 0xF0, 0x08, 0x03, 0x01, 0x22, 0x43, 0xF0, 0x01, 0x03, + 0x6A, 0x73, 0x28, 0x73, 0x2B, 0x61, 0xBD, 0xE8, 0xF0, 0x81, 0xFF, 0x28, + 0xE2, 0xD1, 0x08, 0x48, 0x08, 0x49, 0x4F, 0xF4, 0xA4, 0x62, 0xF4, 0xF7, + 0x89, 0xFE, 0x60, 0x7F, 0xDA, 0xE7, 0xFF, 0xF7, 0xC7, 0xF9, 0xE3, 0x8B, + 0x8E, 0xE7, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x84, 0xC1, 0x15, 0x00, 0x70, 0x79, 0x15, 0x00, 0x70, 0xB5, 0x90, 0xF8, + 0x33, 0x30, 0x82, 0xB0, 0x04, 0x46, 0x0D, 0x46, 0x16, 0x46, 0x7B, 0xB1, + 0x90, 0xF8, 0x35, 0x20, 0x01, 0x92, 0x18, 0x46, 0x2B, 0x88, 0x2E, 0x44, + 0x43, 0xF4, 0x80, 0x43, 0x31, 0x18, 0x2B, 0x80, 0x20, 0x46, 0x00, 0x22, + 0xFF, 0xF7, 0x12, 0xFC, 0x02, 0xB0, 0x70, 0xBD, 0x01, 0xA9, 0xFF, 0xF7, + 0xCD, 0xF9, 0x01, 0x9B, 0x84, 0xF8, 0x33, 0x00, 0x84, 0xF8, 0x35, 0x30, + 0xEA, 0xE7, 0x00, 0xBF, 0x10, 0xB4, 0x0C, 0x88, 0x0B, 0x46, 0x44, 0xF4, + 0x80, 0x44, 0x11, 0x44, 0x1C, 0x80, 0x00, 0x22, 0x5D, 0xF8, 0x04, 0x4B, + 0xFF, 0xF7, 0xFA, 0xBB, 0xF0, 0xB5, 0x00, 0x22, 0x18, 0x4C, 0x85, 0xB0, + 0x05, 0x46, 0x0F, 0x46, 0x02, 0xE0, 0x01, 0x32, 0x20, 0x2A, 0x26, 0xD0, + 0xA5, 0x42, 0x96, 0xB2, 0x04, 0xF1, 0x18, 0x04, 0xF7, 0xD1, 0x12, 0x02, + 0x02, 0xF4, 0x7F, 0x42, 0x42, 0xF0, 0x08, 0x00, 0xF2, 0xF7, 0xF6, 0xFF, + 0x04, 0x28, 0x18, 0xD1, 0x17, 0xF4, 0x00, 0x03, 0x02, 0xD1, 0xEA, 0x7C, + 0x02, 0x2A, 0x06, 0xD9, 0x28, 0x7B, 0x31, 0x46, 0x05, 0xB0, 0xBD, 0xE8, + 0xF0, 0x40, 0x00, 0xF0, 0x65, 0xBC, 0x08, 0x49, 0x01, 0x32, 0xEA, 0x74, + 0x27, 0x22, 0xCD, 0xE9, 0x01, 0x21, 0x00, 0x93, 0x28, 0x7B, 0x02, 0x22, + 0x29, 0x46, 0x00, 0xF0, 0xBB, 0xFC, 0x05, 0xB0, 0xF0, 0xBD, 0x00, 0xBF, + 0xF4, 0xE4, 0x17, 0x00, 0xE5, 0xFE, 0x14, 0x00, 0x2D, 0xE9, 0xF0, 0x43, + 0x10, 0x46, 0x85, 0xB0, 0x14, 0x46, 0x0F, 0x46, 0xF2, 0xF7, 0xCC, 0xFF, + 0x03, 0x28, 0x09, 0xD0, 0x50, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x72, 0xDB, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, + 0x4C, 0x4E, 0x4F, 0xEA, 0x14, 0x28, 0x08, 0xEB, 0x48, 0x03, 0x06, 0xEB, + 0xC3, 0x06, 0x96, 0xF8, 0x0D, 0x90, 0xB9, 0xF1, 0x00, 0x0F, 0x39, 0xD0, + 0xB9, 0xF1, 0x01, 0x0F, 0x29, 0xD1, 0xBB, 0x78, 0x00, 0x2B, 0x7C, 0xD1, + 0x05, 0x46, 0x30, 0x46, 0x96, 0xF8, 0x0F, 0x90, 0x00, 0xF0, 0xA0, 0xFF, + 0x41, 0x4B, 0x1B, 0x69, 0x73, 0x60, 0x05, 0x22, 0x2B, 0x46, 0x0C, 0x21, + 0x41, 0xF2, 0x0B, 0x40, 0x3D, 0x78, 0x7F, 0x78, 0xF2, 0xF7, 0xFA, 0xFC, + 0xA9, 0xF1, 0x04, 0x09, 0x4F, 0xFA, 0x89, 0xF9, 0x80, 0xF8, 0x02, 0x90, + 0x05, 0x70, 0x47, 0x70, 0xF2, 0xF7, 0x20, 0xFD, 0x73, 0x89, 0x00, 0x2B, + 0x39, 0xD1, 0x20, 0x46, 0x01, 0x21, 0xF2, 0xF7, 0xE3, 0xFE, 0x00, 0x20, + 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, 0x2F, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xBC, 0xDA, 0x2F, 0x49, 0x2F, 0x48, 0x40, 0xF2, + 0x29, 0x12, 0xF4, 0xF7, 0xD3, 0xFD, 0xB5, 0xE7, 0xBA, 0x78, 0x33, 0x7C, + 0x72, 0xBB, 0xB0, 0x7B, 0xF1, 0x7B, 0x02, 0x92, 0x9B, 0x00, 0x43, 0xEA, + 0x40, 0x03, 0x43, 0xEA, 0x81, 0x13, 0xCD, 0xE9, 0x00, 0x32, 0x31, 0x46, + 0x73, 0x7C, 0x30, 0x7B, 0x01, 0x22, 0x00, 0xF0, 0x47, 0xFC, 0x3B, 0x78, + 0x7D, 0x78, 0x23, 0x4A, 0x1F, 0x48, 0x71, 0x89, 0x03, 0xEB, 0x83, 0x07, + 0xC3, 0xEB, 0x07, 0x13, 0x2B, 0x44, 0x02, 0xEB, 0xC3, 0x03, 0x83, 0xF8, + 0xA4, 0x81, 0x03, 0x69, 0x73, 0x60, 0x00, 0x29, 0xC5, 0xD0, 0x40, 0x46, + 0x00, 0xF0, 0x9A, 0xFB, 0xC1, 0xE7, 0x17, 0x49, 0x17, 0x48, 0xC8, 0x22, + 0xF4, 0xF7, 0xA4, 0xFD, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x83, + 0xB1, 0x7B, 0xF2, 0x7B, 0xCD, 0xF8, 0x08, 0x90, 0x9B, 0x00, 0x43, 0xEA, + 0x41, 0x03, 0x43, 0xEA, 0x82, 0x13, 0x25, 0x22, 0xCD, 0xE9, 0x00, 0x32, + 0x31, 0x46, 0x30, 0x7B, 0x73, 0x7C, 0x01, 0x22, 0x00, 0xF0, 0x16, 0xFC, + 0x49, 0x46, 0x20, 0x46, 0xF2, 0xF7, 0x8A, 0xFE, 0x6C, 0xE7, 0x40, 0x46, + 0x00, 0xF0, 0xF8, 0xFA, 0x20, 0x46, 0x00, 0x21, 0xF2, 0xF7, 0x82, 0xFE, + 0x64, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x68, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x8B, 0x78, 0x02, 0x2B, 0x01, 0xD0, + 0x00, 0x20, 0xF8, 0xBD, 0x02, 0xF4, 0x7F, 0x40, 0x40, 0xF0, 0x08, 0x00, + 0x0C, 0x46, 0x15, 0x0A, 0xF2, 0xF7, 0x0E, 0xFF, 0x04, 0x28, 0xF3, 0xD1, + 0x11, 0x4E, 0x05, 0xEB, 0x45, 0x03, 0x06, 0xEB, 0xC3, 0x06, 0x73, 0x7B, + 0x01, 0x2B, 0x04, 0xD0, 0x0E, 0x4B, 0x28, 0x46, 0x9B, 0x6A, 0x98, 0x47, + 0xE6, 0xE7, 0x70, 0x69, 0x00, 0xF0, 0x1E, 0xFF, 0xF3, 0x7B, 0x67, 0x78, + 0x26, 0x78, 0xC3, 0xF1, 0x04, 0x03, 0x1C, 0x18, 0x05, 0x22, 0x03, 0x23, + 0x0C, 0x21, 0x41, 0xF2, 0x0B, 0x40, 0xF2, 0xF7, 0x4D, 0xFC, 0x64, 0xB2, + 0x84, 0x70, 0x06, 0x70, 0x47, 0x70, 0xF2, 0xF7, 0x77, 0xFC, 0xE3, 0xE7, + 0xF4, 0xE4, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xB7, 0x4F, 0xCE, 0x79, 0xB7, 0x4A, 0x4F, 0xF4, 0x1E, 0x75, 0x05, 0xFB, + 0x06, 0x75, 0x0C, 0x46, 0x95, 0xF8, 0x22, 0x30, 0x4F, 0xF4, 0xA4, 0x61, + 0x01, 0xFB, 0x03, 0x23, 0x85, 0xB0, 0x93, 0xF8, 0x64, 0x30, 0x1B, 0xB9, + 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x06, 0x20, 0x94, 0xF8, + 0x0D, 0x80, 0xF2, 0xF7, 0xC7, 0xFE, 0x09, 0x28, 0x04, 0xF1, 0x0C, 0x09, + 0xF2, 0xD0, 0xB8, 0xF1, 0x01, 0x0F, 0x5B, 0xD0, 0xB8, 0xF1, 0x02, 0x0F, + 0x1B, 0xD0, 0xB8, 0xF1, 0x00, 0x0F, 0xE9, 0xD1, 0xB9, 0xF8, 0x03, 0x80, + 0x99, 0xF8, 0x02, 0xB0, 0xC8, 0xF3, 0x83, 0x0A, 0xBA, 0xF1, 0x08, 0x0F, + 0x04, 0xD8, 0xA1, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x00, 0xF0, 0x87, 0x80, + 0x25, 0x23, 0x00, 0x21, 0xCD, 0xE9, 0x00, 0x83, 0x30, 0x46, 0x5B, 0x46, + 0x02, 0x91, 0x01, 0x22, 0x00, 0xF0, 0x82, 0xFB, 0xD0, 0xE7, 0xB9, 0xF8, + 0x02, 0x10, 0xB1, 0xF5, 0x10, 0x4F, 0x4F, 0xEA, 0x11, 0x35, 0xC9, 0xD2, + 0xE3, 0x79, 0xFF, 0x2B, 0xC6, 0xD0, 0x09, 0x05, 0x2A, 0x46, 0x40, 0xF1, + 0xBA, 0x80, 0x93, 0x49, 0x4F, 0xF4, 0x00, 0x60, 0xF4, 0xF7, 0xA4, 0xFA, + 0xE3, 0x79, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x2B, 0x44, + 0x07, 0xEB, 0xC3, 0x07, 0x97, 0xF8, 0xA4, 0x51, 0x21, 0x2D, 0xB1, 0xD0, + 0x2E, 0x02, 0x46, 0xF0, 0x08, 0x06, 0x30, 0x46, 0xF2, 0xF7, 0x7C, 0xFE, + 0x04, 0x28, 0xA9, 0xD0, 0x31, 0x46, 0x42, 0xF2, 0x01, 0x00, 0xF2, 0xF7, + 0xE1, 0xFA, 0x30, 0x46, 0xF2, 0xF7, 0x72, 0xFE, 0x01, 0x28, 0x00, 0xF0, + 0xD2, 0x80, 0x30, 0x46, 0xF2, 0xF7, 0x6C, 0xFE, 0x03, 0x28, 0x00, 0xF0, + 0xCC, 0x80, 0x7F, 0x4B, 0x28, 0x46, 0x9B, 0x6A, 0x98, 0x47, 0x93, 0xE7, + 0xB9, 0xF8, 0x05, 0x50, 0xC5, 0xF3, 0x83, 0x06, 0x08, 0x2E, 0x8D, 0xD8, + 0xE3, 0x79, 0x7A, 0x49, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, + 0x33, 0x44, 0x07, 0xEB, 0xC3, 0x07, 0x32, 0x46, 0x97, 0xF8, 0xA5, 0x71, + 0x4F, 0xF4, 0x00, 0x60, 0x3B, 0x46, 0xF4, 0xF7, 0x63, 0xFA, 0x21, 0x2F, + 0x3F, 0xF4, 0x7A, 0xAF, 0x4F, 0xEA, 0x07, 0x28, 0x48, 0xF0, 0x08, 0x08, + 0x40, 0x46, 0xF2, 0xF7, 0x43, 0xFE, 0x02, 0x28, 0x7F, 0xF4, 0x70, 0xAF, + 0x41, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0xF2, 0xF7, 0xA7, 0xFA, 0x6A, 0x4A, + 0x99, 0xF8, 0x02, 0x10, 0x07, 0xEB, 0x47, 0x03, 0x02, 0xEB, 0xC3, 0x03, + 0x58, 0x7C, 0x88, 0x42, 0x03, 0xD1, 0x1B, 0x7C, 0xB3, 0x42, 0x00, 0xF0, + 0x9B, 0x80, 0x38, 0x46, 0x00, 0xF0, 0xF4, 0xF9, 0x40, 0x46, 0x00, 0x21, + 0xF2, 0xF7, 0x7E, 0xFD, 0x54, 0xE7, 0x60, 0x49, 0x4F, 0xF4, 0x00, 0x60, + 0x52, 0x46, 0xF4, 0xF7, 0x35, 0xFA, 0x51, 0x46, 0x30, 0x46, 0xE8, 0xF7, + 0x85, 0xF9, 0x00, 0x28, 0x4F, 0xD1, 0x95, 0xF8, 0x24, 0x30, 0x01, 0x2B, + 0x3F, 0xF4, 0x68, 0xAF, 0x00, 0xF0, 0x04, 0xFA, 0x21, 0x28, 0x04, 0x46, + 0x3F, 0xF4, 0x62, 0xAF, 0x53, 0x4D, 0x55, 0x4A, 0x00, 0xEB, 0x40, 0x01, + 0x05, 0xEB, 0xC1, 0x03, 0xC8, 0xF3, 0x40, 0x00, 0x12, 0x68, 0x83, 0xF8, + 0x10, 0xA0, 0x00, 0x27, 0x1E, 0x73, 0x83, 0xF8, 0x11, 0xB0, 0x98, 0x73, + 0x5F, 0x73, 0x90, 0x6B, 0xB9, 0xF8, 0x05, 0x20, 0x5A, 0x81, 0x4F, 0xEA, + 0x98, 0x18, 0x80, 0x45, 0x28, 0xBF, 0x80, 0x46, 0x83, 0xF8, 0x0F, 0x80, + 0xB9, 0xF8, 0x07, 0x00, 0xC9, 0x00, 0x00, 0x09, 0x92, 0xB2, 0x6F, 0x50, + 0x18, 0x81, 0x1A, 0xB9, 0x44, 0x4A, 0x12, 0x68, 0x52, 0x88, 0x5A, 0x81, + 0x30, 0x46, 0x21, 0x46, 0x00, 0xF0, 0x3C, 0xFA, 0x20, 0x02, 0x00, 0xF4, + 0x7F, 0x40, 0x40, 0xF0, 0x08, 0x00, 0x03, 0x21, 0xF2, 0xF7, 0x32, 0xFD, + 0x08, 0xE7, 0x3D, 0x49, 0x4F, 0xF4, 0x00, 0x60, 0xF4, 0xF7, 0xEA, 0xF9, + 0xE3, 0x79, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x2B, 0x44, + 0x07, 0xEB, 0xC3, 0x07, 0x97, 0xF8, 0xA5, 0x51, 0x44, 0xE7, 0x06, 0xEB, + 0x86, 0x03, 0xC6, 0xEB, 0x03, 0x13, 0x53, 0x44, 0x07, 0xEB, 0xC3, 0x07, + 0x97, 0xF8, 0xA4, 0x71, 0x3D, 0x02, 0x45, 0xF0, 0x08, 0x05, 0x28, 0x46, + 0xF2, 0xF7, 0xBA, 0xFD, 0x01, 0x28, 0x7F, 0xF4, 0x0B, 0xAF, 0x2A, 0x4B, + 0x27, 0x4A, 0x1B, 0x68, 0x07, 0xEB, 0x47, 0x01, 0x02, 0xEB, 0xC1, 0x02, + 0x99, 0x6B, 0xD2, 0x7B, 0x4F, 0xEA, 0x98, 0x13, 0x8B, 0x42, 0x28, 0xBF, + 0x0B, 0x46, 0x9A, 0x42, 0x12, 0xD0, 0x28, 0x46, 0x04, 0x21, 0xF2, 0xF7, + 0xFB, 0xFC, 0xE0, 0x79, 0x39, 0x46, 0x00, 0xF0, 0x1D, 0xFA, 0x25, 0x23, + 0xF1, 0xE6, 0x30, 0x46, 0x04, 0x21, 0xF2, 0xF7, 0xF1, 0xFC, 0xE0, 0x79, + 0x29, 0x46, 0x00, 0xF0, 0x13, 0xFA, 0xC3, 0xE6, 0x00, 0x23, 0xE6, 0xE6, + 0xB9, 0xF8, 0x03, 0x30, 0x00, 0x2B, 0x7F, 0xF4, 0x60, 0xAF, 0x18, 0x23, + 0x03, 0xFB, 0x07, 0x23, 0xA9, 0x09, 0xDB, 0x7B, 0xB3, 0xEB, 0x95, 0x1F, + 0x03, 0xD9, 0x18, 0x23, 0x03, 0xFB, 0x07, 0x23, 0xD9, 0x73, 0x18, 0x23, + 0x03, 0xFB, 0x07, 0x22, 0x05, 0xF0, 0x01, 0x05, 0x95, 0x74, 0xE0, 0x79, + 0x39, 0x46, 0x00, 0xF0, 0xD1, 0xF9, 0x40, 0x46, 0x03, 0x21, 0xF2, 0xF7, + 0xCB, 0xFC, 0xA1, 0xE6, 0x68, 0x65, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, + 0xB9, 0x34, 0x17, 0x00, 0xE4, 0xC1, 0x15, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0xC0, 0xC1, 0x15, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0xA4, 0xC1, 0x15, 0x00, + 0x78, 0x36, 0x17, 0x00, 0xC8, 0x35, 0x17, 0x00, 0x08, 0xC2, 0x15, 0x00, + 0x10, 0xB5, 0x10, 0x46, 0x14, 0x46, 0xF2, 0xF7, 0x57, 0xFD, 0x02, 0x28, + 0x01, 0xD0, 0x00, 0x20, 0x10, 0xBD, 0x20, 0x0A, 0x00, 0xF0, 0x1A, 0xF9, + 0x20, 0x46, 0x00, 0x21, 0xF2, 0xF7, 0xA4, 0xFC, 0x00, 0x20, 0x10, 0xBD, + 0x70, 0xB5, 0x10, 0x46, 0x84, 0xB0, 0x14, 0x46, 0xF2, 0xF7, 0x44, 0xFD, + 0x01, 0x28, 0x02, 0xD0, 0x00, 0x20, 0x04, 0xB0, 0x70, 0xBD, 0x20, 0x0A, + 0x13, 0x4A, 0x00, 0xEB, 0x40, 0x05, 0x52, 0xF8, 0x35, 0x60, 0x02, 0xEB, + 0xC5, 0x05, 0x3E, 0xB9, 0x10, 0x4B, 0x6A, 0x68, 0x19, 0x69, 0x6B, 0x89, + 0x52, 0x1A, 0x12, 0xEB, 0x83, 0x23, 0x04, 0xD4, 0x00, 0xF0, 0x74, 0xF9, + 0x00, 0x20, 0x04, 0xB0, 0x70, 0xBD, 0x20, 0x46, 0x04, 0x21, 0x2C, 0x7B, + 0xF2, 0xF7, 0x7C, 0xFC, 0x08, 0x4B, 0x02, 0x93, 0x27, 0x22, 0x01, 0x92, + 0x00, 0x96, 0x20, 0x46, 0x33, 0x46, 0x29, 0x46, 0x02, 0x22, 0xEE, 0x74, + 0x00, 0xF0, 0xF8, 0xF9, 0xD4, 0xE7, 0x00, 0xBF, 0xF4, 0xE4, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0xE5, 0xFE, 0x14, 0x00, 0x90, 0xF8, 0x46, 0x30, + 0x90, 0xF8, 0x47, 0x20, 0x19, 0x44, 0xB1, 0xFB, 0xF2, 0xF0, 0x02, 0xFB, + 0x10, 0x10, 0x70, 0x47, 0x90, 0xF8, 0x46, 0x30, 0x90, 0xF8, 0x48, 0x00, + 0x19, 0x44, 0x08, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x03, 0x4B, 0x1B, 0x69, + 0xA0, 0xEB, 0x93, 0x20, 0xC0, 0xF3, 0xC0, 0x30, 0x70, 0x47, 0x00, 0xBF, + 0x00, 0x10, 0x50, 0x40, 0x70, 0xB5, 0x90, 0xF8, 0x46, 0x30, 0x03, 0x44, + 0x9A, 0x79, 0x02, 0x2A, 0x17, 0xD1, 0x00, 0x26, 0x04, 0x46, 0x35, 0x46, + 0x9D, 0x71, 0xA3, 0x88, 0x22, 0x68, 0x01, 0x33, 0xC3, 0xF3, 0x0B, 0x03, + 0xA3, 0x80, 0x01, 0x21, 0x20, 0x46, 0x90, 0x47, 0x54, 0xFA, 0x80, 0xF3, + 0x84, 0xF8, 0x46, 0x00, 0x9A, 0x79, 0x01, 0x36, 0x02, 0x2A, 0x76, 0xB2, + 0xEC, 0xD0, 0x30, 0x46, 0x70, 0xBD, 0x00, 0x26, 0x30, 0x46, 0x70, 0xBD, + 0x38, 0xB5, 0x85, 0x88, 0x03, 0x68, 0x49, 0x1B, 0xC1, 0xF3, 0x0B, 0x01, + 0x04, 0x46, 0x15, 0x46, 0x98, 0x47, 0x20, 0x44, 0x85, 0x71, 0x38, 0xBD, + 0xF8, 0xB5, 0x05, 0x46, 0x33, 0x48, 0x6F, 0x6A, 0x01, 0xEB, 0x41, 0x01, + 0x00, 0xEB, 0xC1, 0x00, 0xBF, 0x02, 0x44, 0x69, 0x03, 0xD5, 0x11, 0x46, + 0x4B, 0xB3, 0x00, 0x2A, 0x49, 0xD0, 0xA2, 0x88, 0x29, 0x8C, 0x23, 0x68, + 0x89, 0x1A, 0xC1, 0xF3, 0x0B, 0x01, 0x20, 0x46, 0x98, 0x47, 0x20, 0x44, + 0x02, 0x23, 0x83, 0x71, 0x94, 0xF8, 0x46, 0x30, 0x23, 0x44, 0x00, 0x26, + 0x9A, 0x79, 0x02, 0x2A, 0x13, 0xD1, 0x35, 0x46, 0x9D, 0x71, 0xA3, 0x88, + 0x22, 0x68, 0x01, 0x33, 0xC3, 0xF3, 0x0B, 0x03, 0xA3, 0x80, 0x01, 0x21, + 0x20, 0x46, 0x90, 0x47, 0x54, 0xFA, 0x80, 0xF3, 0x84, 0xF8, 0x46, 0x00, + 0x9A, 0x79, 0x01, 0x36, 0x02, 0x2A, 0x76, 0xB2, 0xEC, 0xD0, 0x30, 0x46, + 0xF8, 0xBD, 0x00, 0x2A, 0xD5, 0xD1, 0x19, 0x4B, 0xB5, 0xF8, 0x40, 0x00, + 0x1B, 0x69, 0xA0, 0xEB, 0x93, 0x23, 0x1B, 0x04, 0xCD, 0xD4, 0xEA, 0x8B, + 0xEB, 0x6C, 0x6F, 0xEA, 0x42, 0x42, 0x1C, 0x69, 0x6F, 0xEA, 0x52, 0x42, + 0xEA, 0x83, 0x44, 0xF0, 0x02, 0x04, 0x6A, 0x8F, 0x0E, 0x46, 0x29, 0x8F, + 0x19, 0x80, 0x1C, 0x61, 0xE9, 0x8F, 0xAC, 0x8F, 0x5A, 0x80, 0x2A, 0x8C, + 0x1A, 0x81, 0x9C, 0x80, 0xD9, 0x80, 0x58, 0x81, 0xDB, 0xE7, 0x09, 0x48, + 0xB5, 0xF8, 0x40, 0x20, 0x03, 0x69, 0xA2, 0xEB, 0x93, 0x23, 0x1E, 0x04, + 0xAD, 0xD4, 0x03, 0x69, 0x05, 0x48, 0xA2, 0xEB, 0x93, 0x22, 0xC2, 0xF3, + 0xC0, 0x32, 0xF4, 0xF7, 0x23, 0xF8, 0xA4, 0xE7, 0xF4, 0xE4, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x34, 0xC2, 0x15, 0x00, 0xF8, 0xB5, 0x0D, 0x4D, + 0x0D, 0x4E, 0xFF, 0x27, 0x2F, 0x73, 0x00, 0x24, 0x08, 0xE0, 0x0F, 0x2C, + 0x85, 0xF8, 0x24, 0x70, 0x03, 0xDD, 0x4C, 0x23, 0x03, 0xFB, 0x04, 0x63, + 0xEB, 0x62, 0x18, 0x35, 0x20, 0x02, 0x00, 0xF4, 0x7F, 0x40, 0x40, 0xF0, + 0x08, 0x00, 0x01, 0x34, 0x00, 0x21, 0xF2, 0xF7, 0x95, 0xFB, 0x20, 0x2C, + 0xEB, 0xD1, 0xF8, 0xBD, 0xF4, 0xE4, 0x17, 0x00, 0x74, 0xDB, 0x17, 0x00, + 0x11, 0x4B, 0x00, 0xEB, 0x40, 0x00, 0x03, 0xEB, 0xC0, 0x00, 0x42, 0x7B, + 0x03, 0x7B, 0x01, 0x7C, 0x72, 0xB1, 0x01, 0x2A, 0x0B, 0xD1, 0x03, 0xEB, + 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x0B, 0x4A, 0x0B, 0x44, 0x02, 0xEB, + 0xC3, 0x03, 0x21, 0x22, 0x83, 0xF8, 0xA5, 0x21, 0x70, 0x47, 0x70, 0x47, + 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, 0x02, 0x13, 0x04, 0x4A, 0x0B, 0x44, + 0x02, 0xEB, 0xC3, 0x03, 0x21, 0x22, 0x83, 0xF8, 0xA4, 0x21, 0x70, 0x47, + 0xF4, 0xE4, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0x00, 0x28, 0x09, 0x4B, + 0x14, 0xBF, 0x10, 0x20, 0x00, 0x20, 0x03, 0xEB, 0x40, 0x03, 0x14, 0xBF, + 0x20, 0x21, 0x10, 0x21, 0x33, 0xF8, 0x02, 0x2F, 0x22, 0xB1, 0x01, 0x30, + 0x88, 0x42, 0xF9, 0xDB, 0x21, 0x20, 0x70, 0x47, 0x80, 0xB2, 0x70, 0x47, + 0xF2, 0xDF, 0x17, 0x00, 0x38, 0xB5, 0x05, 0x02, 0x45, 0xF0, 0x08, 0x05, + 0x04, 0x46, 0x29, 0x46, 0x4F, 0xF4, 0x00, 0x50, 0xF2, 0xF7, 0x5A, 0xF8, + 0x29, 0x46, 0x42, 0xF2, 0x01, 0x00, 0xF2, 0xF7, 0x55, 0xF8, 0x16, 0x48, + 0x04, 0xEB, 0x44, 0x04, 0x00, 0xEB, 0xC4, 0x04, 0x62, 0x7B, 0x23, 0x7B, + 0x21, 0x7C, 0x92, 0xB1, 0x01, 0x2A, 0x0A, 0xD1, 0x03, 0xEB, 0x83, 0x02, + 0xC3, 0xEB, 0x02, 0x13, 0x0F, 0x4A, 0x0B, 0x44, 0x02, 0xEB, 0xC3, 0x03, + 0x21, 0x22, 0x83, 0xF8, 0xA5, 0x21, 0x28, 0x46, 0x00, 0x21, 0xBD, 0xE8, + 0x38, 0x40, 0xF2, 0xF7, 0x25, 0xBB, 0x03, 0xEB, 0x83, 0x02, 0xC3, 0xEB, + 0x02, 0x13, 0x07, 0x4A, 0x0B, 0x44, 0x02, 0xEB, 0xC3, 0x03, 0x21, 0x22, + 0x83, 0xF8, 0xA4, 0x21, 0x28, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0x38, 0x40, + 0xF2, 0xF7, 0x14, 0xBB, 0xF4, 0xE4, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x07, 0x4B, 0x00, 0xEB, 0x40, 0x02, 0x03, 0xEB, 0xC2, 0x03, 0x00, 0x02, + 0x5A, 0x89, 0x00, 0xF4, 0x7F, 0x41, 0x41, 0xF0, 0x08, 0x01, 0x92, 0x02, + 0x42, 0xF2, 0x01, 0x00, 0xF1, 0xF7, 0x64, 0xBF, 0xF4, 0xE4, 0x17, 0x00, + 0x0A, 0x02, 0x02, 0xF4, 0x7F, 0x42, 0x38, 0xB5, 0x42, 0xF0, 0x08, 0x02, + 0x05, 0x46, 0x0C, 0x46, 0x06, 0x23, 0x00, 0x21, 0x28, 0x20, 0xF2, 0xF7, + 0xF7, 0xF8, 0x0A, 0x49, 0x04, 0xEB, 0x44, 0x04, 0x01, 0xEB, 0xC4, 0x04, + 0x62, 0x7B, 0x45, 0x70, 0x01, 0x3A, 0x18, 0xBF, 0x01, 0x22, 0x02, 0x70, + 0x22, 0x7C, 0x82, 0x70, 0xE2, 0x7B, 0xC2, 0x70, 0x22, 0x89, 0x82, 0x80, + 0xBD, 0xE8, 0x38, 0x40, 0xF2, 0xF7, 0x12, 0xB9, 0xF4, 0xE4, 0x17, 0x00, + 0xF8, 0xB5, 0x0D, 0x02, 0x45, 0xF0, 0x08, 0x05, 0xAD, 0xB2, 0x03, 0x23, + 0x0C, 0x46, 0x07, 0x46, 0x2A, 0x46, 0x00, 0x21, 0x2A, 0x20, 0xF2, 0xF7, + 0xD3, 0xF8, 0x12, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0x06, 0x46, 0x11, 0xDB, 0x0F, 0x49, 0x04, 0xEB, 0x44, 0x04, 0x01, 0xEB, + 0xC4, 0x04, 0x30, 0x46, 0x63, 0x7B, 0x77, 0x70, 0x01, 0x3B, 0x18, 0xBF, + 0x01, 0x23, 0x33, 0x70, 0x23, 0x7C, 0xB3, 0x70, 0xBD, 0xE8, 0xF8, 0x40, + 0xF2, 0xF7, 0xEA, 0xB8, 0x28, 0x46, 0xF2, 0xF7, 0x59, 0xFB, 0x04, 0x28, + 0xE8, 0xD0, 0x05, 0x49, 0x05, 0x48, 0x40, 0xF2, 0x05, 0x22, 0xF4, 0xF7, + 0x91, 0xF9, 0xE1, 0xE7, 0x38, 0x36, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x60, 0xC2, 0x15, 0x00, 0x2D, 0xE9, 0xF8, 0x43, + 0x10, 0x4E, 0x11, 0x4D, 0x80, 0x46, 0x87, 0xB2, 0x00, 0x24, 0x36, 0xF8, + 0x02, 0x3F, 0x8B, 0xB1, 0x2B, 0x7B, 0x43, 0x45, 0x0E, 0xD1, 0x1F, 0xFA, + 0x84, 0xF9, 0x4F, 0xEA, 0x09, 0x23, 0x03, 0xF4, 0x7F, 0x43, 0x43, 0xF0, + 0x08, 0x00, 0x04, 0x21, 0xF2, 0xF7, 0x88, 0xFA, 0x49, 0x46, 0x38, 0x46, + 0xFF, 0xF7, 0xAA, 0xFF, 0x01, 0x34, 0x20, 0x2C, 0x05, 0xF1, 0x18, 0x05, + 0xE5, 0xD1, 0xBD, 0xE8, 0xF8, 0x83, 0x00, 0xBF, 0xF2, 0xDF, 0x17, 0x00, + 0xF4, 0xE4, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x8B, 0xB0, 0xDF, 0xF8, + 0x50, 0x92, 0xBD, 0xF8, 0x50, 0x40, 0x09, 0x94, 0xBD, 0xF8, 0x54, 0x40, + 0x07, 0x94, 0x16, 0x9C, 0x04, 0x94, 0x4F, 0xF4, 0x1E, 0x74, 0x04, 0xFB, + 0x00, 0x94, 0x87, 0x4F, 0x94, 0xF8, 0x22, 0x80, 0xDF, 0xF8, 0x30, 0xA2, + 0x03, 0x91, 0x06, 0x46, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x08, 0x70, + 0x93, 0x46, 0x00, 0x6C, 0x08, 0x93, 0x00, 0x28, 0x00, 0xF0, 0xC4, 0x80, + 0xDA, 0xF8, 0x00, 0x30, 0x02, 0x79, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x9B, 0x80, 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x08, 0x73, + 0x4F, 0xF4, 0xC0, 0x71, 0x93, 0xF8, 0xC0, 0x34, 0x13, 0x43, 0x14, 0xBF, + 0x01, 0x20, 0x00, 0x20, 0xDF, 0xF7, 0x14, 0xFB, 0x04, 0x46, 0x00, 0x28, + 0x00, 0xF0, 0x9B, 0x80, 0x4F, 0xF4, 0xA4, 0x65, 0x05, 0xFB, 0x08, 0xF5, + 0x78, 0x19, 0x21, 0x46, 0x05, 0x90, 0xF1, 0xF7, 0x05, 0xFC, 0x4F, 0xF4, + 0x1E, 0x72, 0xA3, 0x6C, 0x02, 0xFB, 0x06, 0xF2, 0x00, 0x21, 0x26, 0x32, + 0x6F, 0xF0, 0x2F, 0x0C, 0x83, 0xF8, 0x68, 0xC0, 0x83, 0xF8, 0x69, 0x10, + 0x83, 0xF8, 0x6A, 0x10, 0x83, 0xF8, 0x6B, 0x10, 0x39, 0xF8, 0x02, 0x10, + 0xA3, 0xF8, 0x6C, 0x10, 0x09, 0xEB, 0x02, 0x01, 0x5C, 0x35, 0xB1, 0xF8, + 0x02, 0xC0, 0xA3, 0xF8, 0x6E, 0xC0, 0xB1, 0xF8, 0x04, 0xC0, 0xA3, 0xF8, + 0x70, 0xC0, 0x37, 0xF8, 0x05, 0xC0, 0xA3, 0xF8, 0x72, 0xC0, 0x07, 0xEB, + 0x05, 0x0C, 0x03, 0xF1, 0x68, 0x00, 0xBC, 0xF8, 0x02, 0xE0, 0xA3, 0xF8, + 0x74, 0xE0, 0xBC, 0xF8, 0x04, 0xE0, 0x06, 0x90, 0x05, 0x98, 0xA3, 0xF8, + 0x76, 0xE0, 0x90, 0xF8, 0x62, 0x00, 0x02, 0x28, 0x5E, 0xD0, 0x39, 0xF8, + 0x02, 0x20, 0xA3, 0xF8, 0x78, 0x20, 0x4A, 0x88, 0xA3, 0xF8, 0x7A, 0x20, + 0x8A, 0x88, 0xA3, 0xF8, 0x7C, 0x20, 0x4E, 0x49, 0xB1, 0xF8, 0xFC, 0x21, + 0x01, 0x32, 0x92, 0xB2, 0xA1, 0xF8, 0xFC, 0x21, 0x10, 0x01, 0x00, 0x21, + 0xA3, 0xF8, 0x7E, 0x00, 0x03, 0x22, 0x84, 0xF8, 0x33, 0x10, 0x84, 0xF8, + 0x35, 0x10, 0x84, 0xF8, 0x1C, 0x80, 0x66, 0x77, 0xD0, 0x21, 0x20, 0x46, + 0x00, 0xF0, 0xE6, 0xFB, 0x01, 0x28, 0x70, 0xD0, 0x18, 0x25, 0xBB, 0xF1, + 0x01, 0x0F, 0x4A, 0xD0, 0xBB, 0xF1, 0x02, 0x0F, 0x54, 0xD0, 0xBB, 0xF1, + 0x00, 0x0F, 0x5C, 0xD0, 0xDA, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x69, 0xDB, 0x03, 0x26, 0xE1, 0x6C, 0x94, 0xF8, 0x35, 0x30, + 0x4A, 0x6A, 0x1D, 0x44, 0x01, 0x3A, 0x04, 0x9B, 0x2A, 0x44, 0x04, 0x35, + 0xC1, 0xE9, 0x0A, 0x25, 0x13, 0xB1, 0x63, 0x65, 0x03, 0x9B, 0xA3, 0x65, + 0x31, 0x46, 0x20, 0x46, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xDF, 0xF7, + 0x97, 0xBA, 0x02, 0x2A, 0x7F, 0xF4, 0x62, 0xAF, 0x2D, 0x49, 0x2E, 0x48, + 0x4F, 0xF4, 0x09, 0x72, 0xF4, 0xF7, 0x92, 0xF8, 0x01, 0x20, 0x4F, 0xF4, + 0xC0, 0x71, 0xDF, 0xF7, 0x79, 0xFA, 0x04, 0x46, 0x00, 0x28, 0x7F, 0xF4, + 0x65, 0xAF, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x7A, 0x5B, 0xA3, 0xF8, + 0x78, 0x20, 0xBC, 0xF8, 0x02, 0x20, 0xA3, 0xF8, 0x7A, 0x20, 0xBC, 0xF8, + 0x04, 0x20, 0xA3, 0xF8, 0x7C, 0x20, 0x9E, 0xE7, 0xDA, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xE1, 0xDA, 0xDA, 0xE7, 0x06, 0x99, + 0x07, 0x9B, 0x00, 0x93, 0x29, 0x44, 0x08, 0x46, 0xDD, 0xE9, 0x08, 0x32, + 0x03, 0x99, 0xF5, 0xF7, 0x4D, 0xFA, 0x03, 0x26, 0x05, 0x44, 0xB4, 0xE7, + 0xDD, 0xE9, 0x06, 0x02, 0x03, 0x99, 0x15, 0x4E, 0x0B, 0x7C, 0x28, 0x44, + 0xF6, 0x5C, 0xF5, 0xF7, 0x5D, 0xFA, 0x05, 0x44, 0xA9, 0xE7, 0x03, 0x99, + 0x06, 0x98, 0x10, 0x4A, 0x0B, 0x7C, 0x28, 0x44, 0xD6, 0x5C, 0xF5, 0xF7, + 0x1B, 0xFA, 0x05, 0x44, 0x9F, 0xE7, 0x06, 0x99, 0x18, 0x22, 0x20, 0x46, + 0xFF, 0xF7, 0xD2, 0xF9, 0x94, 0xF8, 0x33, 0x50, 0x18, 0x35, 0x86, 0xE7, + 0x05, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x6E, 0x22, 0xF4, 0xF7, 0x5A, 0xF8, + 0x03, 0x26, 0x8E, 0xE7, 0x18, 0x88, 0x17, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0xC0, 0xB2, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x35, 0x4B, 0x87, 0xB0, 0x81, 0x46, 0x8A, 0x46, + 0x93, 0x46, 0x10, 0x24, 0x33, 0xF8, 0x02, 0x5F, 0x35, 0xB1, 0x01, 0x34, + 0x20, 0x2C, 0xF9, 0xD1, 0x03, 0x20, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x2E, 0x4A, 0xDF, 0xF8, 0xCC, 0x80, 0x04, 0xEB, 0x44, 0x03, 0x02, 0xEB, + 0xC3, 0x06, 0xDB, 0x00, 0x86, 0xF8, 0x0C, 0x90, 0x86, 0xF8, 0x10, 0xA0, + 0x05, 0x93, 0x06, 0xF0, 0xBB, 0xFB, 0x28, 0x49, 0x70, 0x74, 0x09, 0x68, + 0x27, 0x48, 0xB1, 0xF8, 0x02, 0xC0, 0x10, 0xF8, 0x0A, 0x00, 0x05, 0x9B, + 0x25, 0x49, 0x22, 0x4A, 0x02, 0x95, 0x09, 0xEB, 0x89, 0x07, 0xC9, 0xEB, + 0x07, 0x17, 0x57, 0x44, 0x00, 0x95, 0x34, 0x37, 0x51, 0xF8, 0x20, 0xE0, + 0xD5, 0x50, 0x08, 0xEB, 0xC7, 0x00, 0x27, 0x23, 0x01, 0x93, 0xA6, 0xF8, + 0x0A, 0xC0, 0x4F, 0xF0, 0x01, 0x0C, 0x86, 0xF8, 0x0F, 0xE0, 0x86, 0xF8, + 0x0E, 0xC0, 0x86, 0xF8, 0x0D, 0xC0, 0x31, 0x46, 0x2B, 0x46, 0x44, 0x71, + 0xA6, 0xF8, 0x08, 0xB0, 0x48, 0x46, 0x02, 0x22, 0xFF, 0xF7, 0x82, 0xFE, + 0x24, 0x02, 0x31, 0x46, 0x48, 0x46, 0x2B, 0x46, 0x2A, 0x46, 0xCD, 0xE9, + 0x01, 0x55, 0x00, 0x95, 0xFF, 0xF7, 0x78, 0xFE, 0x44, 0xF0, 0x08, 0x04, + 0x0E, 0x4B, 0xA4, 0xB2, 0x1B, 0x69, 0x48, 0xF8, 0x37, 0x30, 0x21, 0x46, + 0x4F, 0xF4, 0xFA, 0x22, 0x4F, 0xF4, 0x00, 0x50, 0xF1, 0xF7, 0x46, 0xFD, + 0x20, 0x46, 0x02, 0x21, 0xF2, 0xF7, 0xDE, 0xF8, 0x28, 0x46, 0x07, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x12, 0xE0, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0xC8, 0x35, 0x17, 0x00, 0xC0, 0xB2, 0x15, 0x00, 0x7C, 0x28, 0x17, 0x00, + 0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x19, 0x4C, 0x1A, 0x4D, 0xDF, 0xF8, 0x68, 0xA0, 0xC4, 0xEB, 0x44, 0x29, + 0x4F, 0xEA, 0xC9, 0x19, 0x84, 0xB0, 0x07, 0x46, 0x1F, 0xFA, 0x89, 0xF9, + 0x04, 0xF1, 0x40, 0x06, 0x4F, 0xF0, 0x00, 0x08, 0x34, 0xF8, 0x02, 0x3F, + 0xCB, 0xB1, 0x2B, 0x7B, 0xBB, 0x42, 0x16, 0xD1, 0x09, 0xEB, 0xC4, 0x10, + 0xA0, 0xF5, 0x80, 0x70, 0x40, 0xF0, 0x08, 0x00, 0x80, 0xB2, 0x04, 0x21, + 0xF2, 0xF7, 0xAA, 0xF8, 0x27, 0x23, 0xCD, 0xE9, 0x00, 0x83, 0xCD, 0xF8, + 0x08, 0xA0, 0x00, 0x23, 0x02, 0x22, 0x29, 0x46, 0x38, 0x46, 0x85, 0xF8, + 0x13, 0x80, 0xFF, 0xF7, 0x25, 0xFE, 0xB4, 0x42, 0x05, 0xF1, 0x18, 0x05, + 0xDE, 0xD1, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0xF2, 0xDF, 0x17, 0x00, + 0xF4, 0xE4, 0x17, 0x00, 0xE5, 0xFE, 0x14, 0x00, 0xFF, 0x29, 0x2F, 0xD0, + 0xF8, 0xB5, 0xC3, 0xB2, 0x03, 0xEB, 0x83, 0x02, 0x16, 0x4F, 0xC3, 0xEB, + 0x02, 0x13, 0x53, 0xFA, 0x81, 0xF3, 0x07, 0xEB, 0xC3, 0x03, 0x0C, 0x46, + 0x93, 0xF8, 0xA5, 0x61, 0x21, 0x2E, 0x05, 0x46, 0x1C, 0xD0, 0x30, 0x02, + 0x40, 0xF0, 0x08, 0x00, 0xF2, 0xF7, 0x20, 0xF9, 0x01, 0x28, 0x15, 0xD1, + 0x0D, 0x4B, 0x06, 0xEB, 0x46, 0x06, 0x03, 0xEB, 0xC6, 0x06, 0x4F, 0xF4, + 0x9E, 0x71, 0x01, 0xFB, 0x05, 0x44, 0x73, 0x69, 0x07, 0xEB, 0x44, 0x04, + 0x9A, 0x88, 0xB4, 0xF8, 0x34, 0x31, 0x9B, 0x1A, 0x13, 0xF4, 0x7C, 0x6F, + 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0xF8, 0xBD, 0x01, 0x20, 0xF8, 0xBD, + 0x02, 0x20, 0x70, 0x47, 0x68, 0x65, 0x17, 0x00, 0xF4, 0xE4, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x47, 0x04, 0x46, 0x50, 0x48, 0xE1, 0x7E, 0xD0, 0xF8, + 0x10, 0x90, 0xFF, 0x29, 0x23, 0xD0, 0x65, 0x7F, 0x4D, 0x4E, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x05, 0x63, 0x5A, 0x68, 0x97, 0x07, 0x1A, 0xD5, + 0x05, 0xEB, 0x85, 0x07, 0xC5, 0xEB, 0x07, 0x17, 0x7A, 0x18, 0x34, 0x32, + 0x06, 0xEB, 0xC2, 0x0C, 0x9C, 0xF8, 0x07, 0xE0, 0x9C, 0xF8, 0x05, 0x80, + 0x0E, 0xF1, 0x01, 0x0E, 0xB8, 0xF1, 0x21, 0x0F, 0x8C, 0xF8, 0x07, 0xE0, + 0x09, 0xD1, 0x00, 0x69, 0x56, 0xF8, 0x32, 0x20, 0xDF, 0xF8, 0x14, 0xC1, + 0x82, 0x1A, 0x62, 0x45, 0x48, 0xD8, 0xBD, 0xE8, 0xF0, 0x87, 0xDF, 0xF8, + 0x0C, 0xA1, 0x08, 0xEB, 0x48, 0x07, 0x0A, 0xEB, 0xC7, 0x07, 0x4F, 0xEA, + 0x08, 0x20, 0xC7, 0xF8, 0x04, 0x90, 0x40, 0xF0, 0x08, 0x00, 0xF2, 0xF7, + 0xC3, 0xF8, 0x01, 0x28, 0x4F, 0xEA, 0x48, 0x09, 0xEB, 0xD1, 0x7F, 0x69, + 0xE3, 0x8B, 0xB8, 0x88, 0x60, 0x84, 0xD9, 0x07, 0x57, 0xD4, 0x4F, 0xF4, + 0x1E, 0x72, 0x02, 0xFB, 0x05, 0x65, 0xD5, 0xF8, 0x4C, 0x21, 0x92, 0xF8, + 0xA2, 0x20, 0x52, 0x07, 0x03, 0xD5, 0x62, 0x6A, 0x42, 0xF4, 0x00, 0x12, + 0x62, 0x62, 0x21, 0x8C, 0x3A, 0x68, 0x43, 0xF0, 0x02, 0x03, 0x09, 0x1A, + 0xE3, 0x83, 0xC1, 0xF3, 0x0B, 0x01, 0x38, 0x46, 0x90, 0x47, 0x38, 0x44, + 0x01, 0x23, 0x83, 0x71, 0xE3, 0x8B, 0xDB, 0x07, 0x07, 0xD4, 0x1F, 0x4A, + 0x20, 0x4B, 0x12, 0x69, 0x9B, 0x8D, 0x03, 0xEB, 0x92, 0x23, 0xA4, 0xF8, + 0x40, 0x30, 0xC8, 0x44, 0x4F, 0xEA, 0xC8, 0x08, 0x5A, 0xF8, 0x08, 0x30, + 0x01, 0x33, 0x4A, 0xF8, 0x08, 0x30, 0xB6, 0xE7, 0x93, 0xF8, 0x24, 0x30, + 0x01, 0x2B, 0xB2, 0xD0, 0x17, 0x4B, 0x18, 0x48, 0x5A, 0x5C, 0x54, 0x23, + 0x03, 0xFB, 0x02, 0xF3, 0xC3, 0x58, 0x00, 0x2B, 0xA9, 0xD1, 0x15, 0x4B, + 0x53, 0xF8, 0x32, 0x30, 0x00, 0x2B, 0xA4, 0xD1, 0xBB, 0x18, 0x46, 0x33, + 0x56, 0xF8, 0x33, 0x30, 0x00, 0x2B, 0x9E, 0xD1, 0x23, 0x7F, 0x10, 0x48, + 0xA4, 0x26, 0x06, 0xFB, 0x03, 0x23, 0x9E, 0x33, 0x50, 0xF8, 0x33, 0x30, + 0x00, 0x2B, 0x94, 0xD1, 0x0C, 0x4B, 0x22, 0x8C, 0x1B, 0x6A, 0x28, 0x46, + 0xBD, 0xE8, 0xF0, 0x47, 0x18, 0x47, 0x03, 0xF0, 0x03, 0x02, 0x03, 0x2A, + 0x89, 0xD1, 0xA2, 0xE7, 0x00, 0x10, 0x50, 0x40, 0x68, 0x65, 0x17, 0x00, + 0xE4, 0xB8, 0x17, 0x00, 0xC0, 0xB2, 0x15, 0x00, 0x20, 0x62, 0x17, 0x00, + 0x24, 0x64, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x88, 0x1A, 0x17, 0x00, + 0x40, 0x42, 0x0F, 0x00, 0xF4, 0xE4, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x47, + 0x05, 0x46, 0x1C, 0x48, 0x6C, 0x7F, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x04, 0x03, 0x5E, 0x68, 0xB6, 0x07, 0x0E, 0xD5, 0xEB, 0x7E, 0x04, 0xEB, + 0x84, 0x06, 0xC4, 0xEB, 0x06, 0x14, 0x1C, 0x44, 0x34, 0x34, 0x00, 0xEB, + 0xC4, 0x04, 0xE3, 0x79, 0x01, 0x3B, 0xE3, 0x71, 0xEB, 0x8B, 0x9B, 0x07, + 0x02, 0xD4, 0x01, 0x20, 0xBD, 0xE8, 0xF0, 0x87, 0x66, 0x79, 0x21, 0x2E, + 0xF9, 0xD0, 0x30, 0x02, 0x40, 0xF0, 0x08, 0x00, 0x88, 0x46, 0x91, 0x46, + 0xF2, 0xF7, 0x20, 0xF8, 0x01, 0x28, 0xF0, 0xD1, 0x06, 0xEB, 0x46, 0x07, + 0xFF, 0x00, 0xDF, 0xF8, 0x20, 0xC0, 0x5C, 0xF8, 0x07, 0x40, 0x01, 0x3C, + 0x4C, 0xF8, 0x07, 0x40, 0x4B, 0x46, 0x42, 0x46, 0x28, 0x46, 0x31, 0x46, + 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, 0x46, 0xBB, 0x68, 0x65, 0x17, 0x00, + 0xF4, 0xE4, 0x17, 0x00, 0x38, 0xB5, 0x45, 0x69, 0x04, 0x46, 0x40, 0x22, + 0x00, 0x21, 0xA8, 0x1D, 0xCF, 0xF7, 0x58, 0xF9, 0x22, 0x7B, 0x21, 0x7C, + 0x0C, 0x4B, 0x4F, 0xF4, 0x9E, 0x70, 0x00, 0xFB, 0x02, 0x12, 0x03, 0xEB, + 0x42, 0x03, 0x00, 0x22, 0xB3, 0xF8, 0x34, 0x31, 0xAB, 0x80, 0x85, 0xF8, + 0x46, 0x20, 0xE3, 0x7B, 0x85, 0xF8, 0x47, 0x30, 0x5A, 0x1E, 0x1A, 0x42, + 0x12, 0xBF, 0x04, 0x4B, 0x04, 0x4B, 0x85, 0xF8, 0x48, 0x20, 0x2B, 0x60, + 0x38, 0xBD, 0x00, 0xBF, 0x68, 0x65, 0x17, 0x00, 0xDD, 0x04, 0x15, 0x00, + 0xF1, 0x04, 0x15, 0x00, 0x90, 0xF8, 0x47, 0x10, 0x59, 0xB1, 0x43, 0x1D, + 0x19, 0x44, 0x00, 0x20, 0x13, 0xF8, 0x01, 0x2F, 0x02, 0x2A, 0x04, 0xBF, + 0x01, 0x30, 0x40, 0xB2, 0x8B, 0x42, 0xF7, 0xD1, 0x70, 0x47, 0x08, 0x46, + 0x70, 0x47, 0x00, 0xBF, 0x11, 0x4A, 0x12, 0x4B, 0x12, 0x68, 0x10, 0xB5, + 0x00, 0xEB, 0x80, 0x04, 0xC0, 0xEB, 0x04, 0x10, 0x08, 0x44, 0x03, 0xEB, + 0xC0, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x90, 0xF8, 0xA4, 0x41, 0x00, 0x2B, + 0x08, 0xDB, 0x0B, 0x4B, 0x0B, 0x4A, 0x04, 0xEB, 0x44, 0x04, 0x03, 0xEB, + 0xC4, 0x04, 0x13, 0x69, 0x63, 0x60, 0x10, 0xBD, 0x20, 0x2C, 0xF4, 0xD9, + 0x07, 0x49, 0x08, 0x48, 0x40, 0xF2, 0x52, 0x32, 0xF3, 0xF7, 0xEA, 0xFD, + 0xED, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0xF4, 0xE4, 0x17, 0x00, 0x00, 0x10, 0x50, 0x40, 0x70, 0x79, 0x15, 0x00, + 0x9C, 0xC2, 0x15, 0x00, 0x10, 0xF0, 0x0C, 0x0F, 0x11, 0xD1, 0x00, 0xF0, + 0xF0, 0x03, 0xC0, 0x2B, 0x0B, 0xD0, 0xD0, 0x2B, 0x05, 0xD0, 0xA3, 0xF1, + 0xA0, 0x00, 0xB0, 0xFA, 0x80, 0xF0, 0x40, 0x09, 0x70, 0x47, 0x0F, 0x29, + 0x24, 0xD8, 0x03, 0x29, 0x03, 0xD8, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, + 0x70, 0x47, 0x04, 0x39, 0x0B, 0x29, 0xF8, 0xD8, 0x01, 0xA3, 0x53, 0xF8, + 0x21, 0xF0, 0x00, 0xBF, 0xEF, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, + 0xEB, 0x0F, 0x15, 0x00, 0xEF, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, + 0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEF, 0x0F, 0x15, 0x00, + 0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, 0xEB, 0x0F, 0x15, 0x00, + 0xEF, 0x0F, 0x15, 0x00, 0xB1, 0xF1, 0x7F, 0x00, 0x18, 0xBF, 0x01, 0x20, + 0x70, 0x47, 0x00, 0xBF, 0x2D, 0xE9, 0xF0, 0x4F, 0x90, 0xF8, 0x08, 0xB0, + 0xB0, 0xF8, 0x00, 0x90, 0x1B, 0xF8, 0x01, 0xA0, 0x0C, 0x46, 0x85, 0xB0, + 0x80, 0x46, 0x51, 0x46, 0x48, 0x46, 0x1D, 0x46, 0xFF, 0xF7, 0xB4, 0xFF, + 0x0B, 0xEB, 0x04, 0x0C, 0x00, 0x28, 0x00, 0xF0, 0x81, 0x80, 0x98, 0xF8, + 0x09, 0x30, 0xFF, 0x2B, 0x24, 0xD0, 0x98, 0xF8, 0x0A, 0x70, 0xFF, 0x2F, + 0x20, 0xD0, 0x50, 0x49, 0x16, 0x46, 0x4F, 0xF4, 0xA4, 0x62, 0x02, 0xFB, + 0x07, 0x12, 0xD2, 0xF8, 0xA8, 0x24, 0x00, 0x2A, 0x6E, 0xD0, 0x98, 0xF8, + 0x30, 0x20, 0x12, 0x07, 0x6E, 0xD5, 0x09, 0xF0, 0xFC, 0x03, 0xD0, 0x2B, + 0x00, 0xF0, 0x84, 0x80, 0x46, 0x4B, 0x4F, 0xF4, 0xA4, 0x68, 0x08, 0xFB, + 0x07, 0xF8, 0x43, 0x44, 0xD3, 0xF8, 0xAC, 0x34, 0x00, 0x2B, 0x5B, 0xD0, + 0x0B, 0xF1, 0x13, 0x03, 0xB3, 0x42, 0x05, 0xDB, 0x00, 0x23, 0x01, 0x20, + 0x2B, 0x70, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xB1, 0x1E, 0xA1, 0xEB, + 0x0B, 0x01, 0x0C, 0xF1, 0x02, 0x00, 0x89, 0xB2, 0xF2, 0xF7, 0x3A, 0xFC, + 0x1F, 0xFA, 0x8B, 0xF3, 0x00, 0x28, 0xED, 0xD0, 0xB0, 0xF8, 0x02, 0xC0, + 0xAC, 0xF1, 0x04, 0x02, 0x01, 0x2A, 0xE7, 0xD8, 0x33, 0x4A, 0xCC, 0xEB, + 0x0C, 0x11, 0x08, 0xEB, 0xC1, 0x01, 0x11, 0x44, 0x4F, 0xEA, 0x0C, 0x12, + 0x03, 0x92, 0x91, 0xF8, 0x3B, 0x22, 0x00, 0x2A, 0xDA, 0xD0, 0xD1, 0xE9, + 0x76, 0xAB, 0x42, 0x68, 0x4F, 0xF0, 0x00, 0x0E, 0x22, 0xF0, 0x7F, 0x48, + 0xF3, 0x45, 0x08, 0xBF, 0xC2, 0x45, 0xF1, 0x46, 0xCE, 0xD2, 0x82, 0x46, + 0xDD, 0xF8, 0x0C, 0xB0, 0x5A, 0xF8, 0x0A, 0x2F, 0x00, 0x92, 0xDA, 0xF8, + 0x04, 0x20, 0x01, 0x92, 0xC1, 0xE9, 0x76, 0x89, 0x12, 0x30, 0x52, 0x46, + 0x02, 0xF8, 0x01, 0xEB, 0x82, 0x42, 0xFB, 0xD1, 0x4F, 0xF4, 0xA4, 0x60, + 0x00, 0xFB, 0x07, 0xF0, 0xAB, 0xEB, 0x0C, 0x0C, 0x21, 0x46, 0x00, 0xF5, + 0xEC, 0x70, 0x1A, 0x4C, 0x00, 0xEB, 0xCC, 0x00, 0x20, 0x44, 0x32, 0x46, + 0x00, 0xF0, 0xD2, 0xFA, 0xDD, 0xE9, 0x00, 0x34, 0x8C, 0x42, 0x08, 0xBF, + 0x83, 0x42, 0xA7, 0xD1, 0x00, 0x20, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x12, 0x4A, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x03, 0x23, 0x5B, 0x68, + 0x1B, 0x07, 0xF3, 0xD5, 0x19, 0xF4, 0x80, 0x4F, 0xF0, 0xD1, 0x09, 0xF0, + 0xFC, 0x09, 0xB9, 0xF1, 0xC0, 0x0F, 0x02, 0xD0, 0xB9, 0xF1, 0xA0, 0x0F, + 0x90, 0xD1, 0xAA, 0xF1, 0x06, 0x01, 0x01, 0x29, 0x8C, 0xD8, 0x01, 0x20, + 0x28, 0x70, 0xE2, 0xE7, 0xAA, 0xF1, 0x0D, 0x01, 0x01, 0x29, 0x3F, 0xF6, + 0x77, 0xAF, 0x89, 0xF4, 0x80, 0x40, 0xC0, 0xF3, 0x80, 0x30, 0xD8, 0xE7, + 0x18, 0x88, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x45, 0x7F, + 0x06, 0x7F, 0xFF, 0x2D, 0x2B, 0xD0, 0x19, 0x4F, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x06, 0x73, 0xD3, 0xF8, 0xA8, 0x04, 0xE0, 0xB1, 0x0C, 0x46, + 0x20, 0x46, 0x11, 0x46, 0xFF, 0xF7, 0xF0, 0xFE, 0xB0, 0xB1, 0x4F, 0xF4, + 0x1E, 0x73, 0x03, 0xFB, 0x05, 0xF5, 0x11, 0x4B, 0xE8, 0x5C, 0x10, 0xF0, + 0x01, 0x00, 0x0E, 0xD0, 0x04, 0xF0, 0xFC, 0x04, 0xD0, 0x2C, 0x12, 0xD0, + 0x4F, 0xF4, 0xA4, 0x63, 0x03, 0xFB, 0x06, 0x76, 0xD6, 0xF8, 0xAC, 0x34, + 0x00, 0x2B, 0x0C, 0xBF, 0x00, 0x20, 0x02, 0x20, 0xF8, 0xBD, 0x1D, 0x44, + 0x55, 0xF8, 0x22, 0x0C, 0xC0, 0xF3, 0xC0, 0x00, 0xF8, 0xBD, 0x00, 0x20, + 0xF8, 0xBD, 0x0D, 0x3A, 0x01, 0x2A, 0xE9, 0xD8, 0xF2, 0xE7, 0x00, 0xBF, + 0x18, 0x88, 0x17, 0x00, 0x8E, 0x65, 0x17, 0x00, 0xF8, 0xB5, 0x2A, 0x4C, + 0x03, 0x7F, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x03, 0x43, 0x02, 0xEB, + 0x01, 0x0C, 0xD3, 0xF8, 0xAC, 0x04, 0x00, 0x28, 0x47, 0xD0, 0x4C, 0x23, + 0x53, 0x54, 0x10, 0x23, 0x8C, 0xF8, 0x01, 0x30, 0xD0, 0xE9, 0x12, 0x37, + 0x01, 0x33, 0x90, 0xF8, 0x61, 0x40, 0xAC, 0xF8, 0x02, 0x40, 0x47, 0xF1, + 0x00, 0x07, 0xC0, 0xE9, 0x12, 0x37, 0x0C, 0xF1, 0x04, 0x0E, 0x00, 0x24, + 0x01, 0xE0, 0xD0, 0xE9, 0x12, 0x37, 0xC4, 0xF1, 0x20, 0x06, 0xE3, 0x40, + 0xA4, 0xF1, 0x20, 0x05, 0x07, 0xFA, 0x06, 0xF6, 0x33, 0x43, 0x27, 0xFA, + 0x05, 0xF5, 0x08, 0x34, 0x2B, 0x43, 0x30, 0x2C, 0x0E, 0xF8, 0x01, 0x3B, + 0xED, 0xD1, 0x0C, 0xF1, 0x0A, 0x06, 0x0C, 0xF1, 0x12, 0x04, 0x33, 0x46, + 0x00, 0x25, 0x03, 0xF8, 0x01, 0x5B, 0xA3, 0x42, 0xFB, 0xD1, 0x12, 0x32, + 0x18, 0x23, 0x92, 0xB2, 0x00, 0xF0, 0x22, 0xFA, 0x00, 0x23, 0xC3, 0xF1, + 0x20, 0x05, 0x20, 0xFA, 0x03, 0xF2, 0xA3, 0xF1, 0x20, 0x04, 0x01, 0xFA, + 0x05, 0xF5, 0x2A, 0x43, 0x21, 0xFA, 0x04, 0xF4, 0x08, 0x33, 0x22, 0x43, + 0x40, 0x2B, 0x06, 0xF8, 0x01, 0x2B, 0xEE, 0xD1, 0x12, 0x20, 0xF8, 0xBD, + 0x18, 0x88, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x0A, 0x68, 0x05, 0x68, + 0x4B, 0x68, 0xAE, 0x4C, 0xDF, 0xF8, 0xBC, 0x82, 0x8F, 0xB0, 0x0E, 0x46, + 0x6A, 0x40, 0x01, 0x92, 0x32, 0x46, 0x07, 0x46, 0x0D, 0x90, 0xF0, 0x68, + 0x01, 0x9E, 0x04, 0x91, 0x89, 0x68, 0x16, 0x60, 0x7E, 0x68, 0x07, 0x97, + 0x83, 0xEA, 0x06, 0x05, 0x55, 0x60, 0x13, 0x46, 0xBA, 0x68, 0x00, 0x95, + 0x81, 0xEA, 0x02, 0x09, 0xC3, 0xF8, 0x08, 0x90, 0xFB, 0x68, 0xCD, 0xF8, + 0x0C, 0x90, 0x43, 0x40, 0x02, 0x93, 0x07, 0xF1, 0x90, 0x03, 0x0C, 0x93, + 0x00, 0x9E, 0x01, 0x98, 0x02, 0x99, 0x03, 0x9D, 0xF3, 0xB2, 0x5F, 0xFA, + 0x80, 0xFC, 0xC6, 0xF3, 0x07, 0x2A, 0x4F, 0xEA, 0x10, 0x69, 0xE0, 0x5C, + 0x06, 0x90, 0x0A, 0x0E, 0x96, 0x48, 0x08, 0x93, 0x14, 0xF8, 0x0A, 0x30, + 0x87, 0x5C, 0x18, 0xF8, 0x02, 0x10, 0x05, 0x93, 0xC5, 0xF3, 0x07, 0x26, + 0xA3, 0x5C, 0x03, 0x9A, 0x0A, 0x97, 0xC2, 0xF3, 0x07, 0x4E, 0xA7, 0x5D, + 0x10, 0xF8, 0x0E, 0x20, 0x18, 0xF8, 0x09, 0xB0, 0x14, 0xF8, 0x0C, 0x50, + 0x38, 0x46, 0x06, 0x9F, 0x09, 0x90, 0x87, 0xEA, 0x0B, 0x0B, 0x05, 0x9F, + 0x80, 0xEA, 0x0B, 0x0B, 0x69, 0x40, 0x87, 0x48, 0x79, 0x40, 0x51, 0x40, + 0x10, 0xF8, 0x0A, 0x20, 0x5D, 0x40, 0x6A, 0x40, 0x18, 0xF8, 0x0E, 0x50, + 0x14, 0xF8, 0x0E, 0xE0, 0x6A, 0x40, 0x09, 0x04, 0x41, 0xEA, 0x02, 0x21, + 0x7F, 0x4A, 0x02, 0x9D, 0x12, 0xF8, 0x0C, 0x20, 0x5F, 0x46, 0x18, 0xF8, + 0x0A, 0xB0, 0x14, 0xF8, 0x09, 0xA0, 0x10, 0xF8, 0x09, 0x90, 0xCD, 0xF8, + 0x2C, 0x90, 0x53, 0x40, 0xC5, 0xF3, 0x07, 0x49, 0x06, 0x98, 0x18, 0xF8, + 0x0C, 0x50, 0x76, 0x4A, 0x83, 0xEA, 0x0B, 0x0B, 0x0A, 0x9B, 0x18, 0xF8, + 0x06, 0xC0, 0x5D, 0x40, 0x12, 0xF8, 0x09, 0x30, 0x92, 0x5D, 0x71, 0x4E, + 0x8A, 0xEA, 0x00, 0x00, 0x50, 0x40, 0x08, 0x9A, 0xB6, 0x5C, 0x18, 0xF8, + 0x02, 0x20, 0x8A, 0xEA, 0x06, 0x0A, 0x7B, 0x40, 0x0B, 0x9E, 0x05, 0x9F, + 0x8A, 0xEA, 0x0C, 0x0A, 0x18, 0xF8, 0x09, 0xC0, 0x14, 0xF8, 0x09, 0x90, + 0x8E, 0xEA, 0x05, 0x05, 0x56, 0x40, 0x7D, 0x40, 0x1B, 0x04, 0x09, 0x9F, + 0x80, 0xEA, 0x0C, 0x00, 0x8E, 0xEA, 0x0B, 0x0B, 0x43, 0xEA, 0x00, 0x20, + 0x89, 0xEA, 0x06, 0x03, 0x41, 0xEA, 0x0B, 0x02, 0x02, 0x99, 0x00, 0x9E, + 0x83, 0xEA, 0x07, 0x0B, 0x03, 0x9B, 0x89, 0xEA, 0x0A, 0x0A, 0x40, 0xEA, + 0x0A, 0x0C, 0x5F, 0xFA, 0x83, 0xFE, 0x4F, 0xEA, 0x13, 0x69, 0xC1, 0xF3, + 0x07, 0x20, 0xCB, 0xB2, 0x01, 0x99, 0x02, 0x93, 0x42, 0xEA, 0x05, 0x67, + 0x04, 0x9A, 0x03, 0x97, 0xC1, 0xF3, 0x07, 0x4A, 0x4C, 0xEA, 0x0B, 0x65, + 0x17, 0x60, 0x27, 0x5C, 0x55, 0x60, 0x36, 0x0E, 0x05, 0x95, 0x01, 0x97, + 0x4F, 0x4D, 0x14, 0xF8, 0x0A, 0x70, 0x06, 0x97, 0x18, 0xF8, 0x0A, 0x70, + 0x15, 0xF8, 0x00, 0xB0, 0xA2, 0x5D, 0x18, 0xF8, 0x06, 0x30, 0x08, 0x97, + 0xC1, 0xF3, 0x07, 0x2C, 0x14, 0xF8, 0x0E, 0x10, 0x15, 0xF8, 0x0A, 0xA0, + 0x18, 0xF8, 0x00, 0x00, 0x01, 0x9F, 0x09, 0x90, 0xA8, 0x5D, 0x0A, 0x90, + 0x4B, 0x40, 0x02, 0x98, 0x00, 0x9E, 0x25, 0x5C, 0x18, 0xF8, 0x09, 0x00, + 0x7B, 0x40, 0x83, 0xEA, 0x0A, 0x03, 0x14, 0xF8, 0x0C, 0xA0, 0x51, 0x40, + 0x57, 0x46, 0x68, 0x40, 0x8B, 0xEA, 0x01, 0x0B, 0x00, 0x97, 0x3B, 0x49, + 0x14, 0xF8, 0x09, 0xA0, 0x11, 0xF8, 0x09, 0x90, 0xCD, 0xF8, 0x2C, 0x90, + 0x78, 0x40, 0x08, 0x9F, 0x8B, 0xEA, 0x07, 0x01, 0x35, 0x4F, 0x08, 0x91, + 0x17, 0xF8, 0x0E, 0x90, 0x09, 0x99, 0x18, 0xF8, 0x0E, 0xE0, 0xC6, 0xF3, + 0x07, 0x46, 0x82, 0xEA, 0x09, 0x02, 0x17, 0xF8, 0x06, 0xB0, 0x17, 0xF8, + 0x0C, 0x90, 0x02, 0x9F, 0x18, 0xF8, 0x0C, 0xC0, 0x4A, 0x40, 0x2C, 0x49, + 0x80, 0xEA, 0x0B, 0x00, 0x11, 0xF8, 0x07, 0xB0, 0x0A, 0x99, 0x8A, 0xEA, + 0x05, 0x05, 0x89, 0xEA, 0x05, 0x05, 0x8E, 0xEA, 0x01, 0x0E, 0x18, 0xF8, + 0x07, 0x90, 0x0B, 0x99, 0x89, 0xEA, 0x01, 0x09, 0x08, 0x99, 0x1B, 0x04, + 0x43, 0xEA, 0x01, 0x21, 0x06, 0x9B, 0x8A, 0xEA, 0x0B, 0x0A, 0x18, 0xF8, + 0x06, 0xB0, 0xA6, 0x5D, 0x01, 0x9F, 0x83, 0xEA, 0x0E, 0x0E, 0x85, 0xEA, + 0x0B, 0x05, 0x87, 0xEA, 0x0E, 0x0E, 0x00, 0x04, 0x00, 0x9F, 0x8A, 0xEA, + 0x0C, 0x0A, 0x5A, 0x40, 0x40, 0xEA, 0x05, 0x20, 0x86, 0xEA, 0x0A, 0x0A, + 0x86, 0xEA, 0x09, 0x09, 0x11, 0x43, 0x87, 0xEA, 0x09, 0x09, 0x04, 0x9A, + 0x07, 0x9E, 0x03, 0x9F, 0x05, 0x9B, 0x40, 0xEA, 0x0A, 0x00, 0x41, 0xEA, + 0x0E, 0x61, 0x40, 0xEA, 0x09, 0x60, 0xC2, 0xE9, 0x02, 0x10, 0x35, 0x69, + 0x6F, 0x40, 0x17, 0x60, 0x35, 0x46, 0x76, 0x69, 0x01, 0x97, 0x5E, 0x40, + 0x56, 0x60, 0x00, 0x96, 0x2E, 0x46, 0xAD, 0x69, 0x69, 0x40, 0x91, 0x60, + 0xF3, 0x69, 0x03, 0x91, 0x43, 0x40, 0x02, 0x93, 0xD3, 0x60, 0x0C, 0x9B, + 0x06, 0xF1, 0x10, 0x01, 0x8B, 0x42, 0x07, 0x91, 0x7F, 0xF4, 0xC8, 0xAE, + 0x06, 0xE0, 0x00, 0xBF, 0xE4, 0xC2, 0x15, 0x00, 0xE4, 0xC3, 0x15, 0x00, + 0xE4, 0xC4, 0x15, 0x00, 0xDD, 0xF8, 0x00, 0xE0, 0x3E, 0x0E, 0x5F, 0xFA, + 0x8E, 0xF2, 0xDD, 0xE9, 0x02, 0x39, 0x14, 0xF8, 0x06, 0xC0, 0xA2, 0x5C, + 0x70, 0x46, 0x42, 0xEA, 0x0C, 0x62, 0x00, 0x92, 0x1D, 0x0E, 0x02, 0x9A, + 0x65, 0x5D, 0xF9, 0xB2, 0x5F, 0xFA, 0x89, 0xF3, 0x00, 0x0E, 0x61, 0x5C, + 0x20, 0x5C, 0xE3, 0x5C, 0xB8, 0x46, 0x5F, 0xFA, 0x82, 0xFC, 0x4F, 0xEA, + 0x19, 0x67, 0x43, 0xEA, 0x00, 0x63, 0xE7, 0x5D, 0x14, 0xF8, 0x0C, 0x00, + 0x41, 0xEA, 0x05, 0x61, 0xCE, 0xF3, 0x07, 0x25, 0x40, 0xEA, 0x07, 0x67, + 0x65, 0x5D, 0xC9, 0xF3, 0x07, 0x20, 0x41, 0xEA, 0x05, 0x21, 0x14, 0xF8, + 0x00, 0xB0, 0xC8, 0xF3, 0x07, 0x25, 0xC2, 0xF3, 0x07, 0x20, 0xCE, 0xF3, + 0x07, 0x46, 0xC9, 0xF3, 0x07, 0x4A, 0xC2, 0xF3, 0x07, 0x4C, 0xC8, 0xF3, + 0x07, 0x48, 0x65, 0x5D, 0x00, 0x9A, 0x20, 0x5C, 0x14, 0xF8, 0x0A, 0xE0, + 0x14, 0xF8, 0x0C, 0xC0, 0x14, 0xF8, 0x08, 0x80, 0xA6, 0x5D, 0x47, 0xEA, + 0x05, 0x27, 0x42, 0xEA, 0x0B, 0x24, 0x43, 0xEA, 0x00, 0x20, 0x04, 0x9A, + 0x0D, 0x9D, 0x41, 0xEA, 0x0E, 0x41, 0x44, 0xEA, 0x0C, 0x44, 0x40, 0xEA, + 0x08, 0x40, 0x47, 0xEA, 0x06, 0x46, 0xC2, 0xE9, 0x00, 0x14, 0xC2, 0xE9, + 0x02, 0x06, 0xD5, 0xF8, 0xA0, 0x30, 0x59, 0x40, 0x11, 0x60, 0xD5, 0xF8, + 0xA4, 0x30, 0x5C, 0x40, 0x54, 0x60, 0xD5, 0xF8, 0xA8, 0x30, 0x58, 0x40, + 0x90, 0x60, 0xD5, 0xF8, 0xAC, 0x30, 0x5E, 0x40, 0xD6, 0x60, 0x0F, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xD0, 0xE9, 0x01, 0x23, 0xF0, 0xB5, 0x19, 0x49, + 0x05, 0x68, 0xC7, 0x68, 0x54, 0x04, 0x04, 0xF0, 0x80, 0x76, 0x01, 0xEA, + 0xD5, 0x34, 0x34, 0x43, 0x6E, 0x00, 0x06, 0xF0, 0xFE, 0x36, 0x34, 0x43, + 0x4F, 0xEA, 0x43, 0x4E, 0x7E, 0x04, 0x0E, 0xF0, 0x80, 0x7E, 0x04, 0x60, + 0x01, 0xEA, 0xD2, 0x34, 0x52, 0x00, 0x06, 0xF0, 0x80, 0x7C, 0x44, 0xEA, + 0x0E, 0x04, 0x01, 0xEA, 0xD3, 0x36, 0x02, 0xF0, 0xFE, 0x32, 0x5B, 0x00, + 0x22, 0x43, 0x46, 0xEA, 0x0C, 0x06, 0x03, 0xF0, 0xFE, 0x33, 0x7C, 0x00, + 0x33, 0x43, 0x01, 0xEA, 0xD7, 0x31, 0x04, 0xF0, 0xFE, 0x34, 0x21, 0x43, + 0xC0, 0xE9, 0x01, 0x23, 0x2B, 0x06, 0x48, 0xBF, 0x81, 0xF0, 0x07, 0x41, + 0xC1, 0x60, 0xF0, 0xBD, 0x01, 0x01, 0x01, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0x29, 0x2A, 0xBD, 0xB0, 0x0B, 0xD8, 0x8B, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x00, 0x81, 0x00, 0x20, 0x01, 0x46, + 0x3D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x88, 0x46, 0x1D, 0x46, 0x31, 0xF8, + 0x04, 0x3B, 0x06, 0x46, 0x23, 0xF4, 0x60, 0x53, 0x14, 0x46, 0x0D, 0xF1, + 0x2E, 0x00, 0x12, 0x22, 0xAD, 0xF8, 0x2C, 0x30, 0x05, 0xF0, 0xC4, 0xFC, + 0xD6, 0xE9, 0x14, 0x13, 0xD6, 0xE9, 0x16, 0x72, 0xC5, 0xF5, 0x7F, 0x40, + 0xF4, 0x30, 0x80, 0xB2, 0x01, 0x90, 0xCD, 0xE9, 0x11, 0x37, 0xDF, 0xF8, + 0xEC, 0xE1, 0xDF, 0xF8, 0xEC, 0xC1, 0x10, 0x91, 0x13, 0x92, 0x10, 0xAE, + 0x0D, 0xF1, 0xD0, 0x0A, 0x01, 0x20, 0x02, 0xE0, 0x5E, 0xF8, 0x04, 0x0F, + 0x10, 0x36, 0xC2, 0xF3, 0x07, 0x2B, 0x5F, 0xFA, 0x82, 0xF9, 0x1C, 0xF8, + 0x0B, 0xB0, 0x1C, 0xF8, 0x09, 0x90, 0x8B, 0xEA, 0x00, 0x00, 0x4F, 0xEA, + 0x12, 0x6B, 0x40, 0xEA, 0x09, 0x60, 0xC2, 0xF3, 0x07, 0x49, 0x1C, 0xF8, + 0x0B, 0xB0, 0x1C, 0xF8, 0x09, 0x90, 0x40, 0xEA, 0x0B, 0x40, 0x40, 0xEA, + 0x09, 0x20, 0x41, 0x40, 0x4B, 0x40, 0x5F, 0x40, 0x7A, 0x40, 0x56, 0x45, + 0xC6, 0xE9, 0x06, 0x72, 0xC6, 0xE9, 0x04, 0x13, 0xDA, 0xD1, 0x10, 0x22, + 0x00, 0x21, 0x03, 0xA8, 0xCE, 0xF7, 0xF6, 0xFC, 0x0D, 0xF1, 0x0A, 0x06, + 0x00, 0x21, 0x07, 0xA8, 0x10, 0x22, 0xCE, 0xF7, 0xEF, 0xFC, 0x0D, 0xF1, + 0x1A, 0x07, 0x33, 0x46, 0x0D, 0xF1, 0x2A, 0x01, 0x33, 0xF8, 0x02, 0x2F, + 0x31, 0xF8, 0x02, 0x0F, 0x9F, 0x42, 0x82, 0xEA, 0x00, 0x02, 0x1A, 0x80, + 0xF6, 0xD1, 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x7B, 0xFD, 0x03, 0x9B, + 0x0F, 0x9A, 0x6D, 0x08, 0x08, 0xEB, 0x45, 0x08, 0x53, 0x40, 0xA8, 0xF1, + 0x02, 0x01, 0x08, 0xF1, 0x0A, 0x05, 0x03, 0x93, 0x0D, 0xF1, 0x0E, 0x02, + 0x32, 0xF8, 0x02, 0x3F, 0x31, 0xF8, 0x02, 0x0F, 0x43, 0x40, 0x8D, 0x42, + 0x13, 0x80, 0xF7, 0xD1, 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x62, 0xFD, + 0x01, 0x9B, 0x1C, 0x44, 0xA4, 0xB2, 0x10, 0x2C, 0x08, 0xF1, 0x0C, 0x09, + 0x26, 0xD9, 0xA4, 0xF1, 0x11, 0x0A, 0xCA, 0xF3, 0x0B, 0x1A, 0x08, 0xEB, + 0x0A, 0x18, 0x08, 0xF1, 0x1C, 0x08, 0x4D, 0x46, 0xAA, 0x1E, 0x33, 0x46, + 0x05, 0xF1, 0x0E, 0x00, 0x33, 0xF8, 0x02, 0x1F, 0x32, 0xF8, 0x02, 0xCF, + 0x81, 0xEA, 0x0C, 0x01, 0x90, 0x42, 0x19, 0x80, 0xF6, 0xD1, 0x10, 0x35, + 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, 0x40, 0xFD, 0x45, 0x45, 0xEB, 0xD1, + 0xCA, 0xEB, 0x0A, 0x33, 0x10, 0x3C, 0x04, 0xEB, 0x03, 0x14, 0x0A, 0xF1, + 0x01, 0x0A, 0xA4, 0xB2, 0x09, 0xEB, 0x0A, 0x19, 0x07, 0xA9, 0x10, 0xA8, + 0xFF, 0xF7, 0x30, 0xFD, 0x07, 0xA8, 0xFF, 0xF7, 0x01, 0xFF, 0x10, 0x2C, + 0x34, 0xD0, 0x65, 0x08, 0x07, 0xA8, 0xFF, 0xF7, 0xFB, 0xFE, 0x65, 0xB1, + 0xA9, 0xF1, 0x02, 0x02, 0x02, 0xEB, 0x45, 0x0C, 0x39, 0x46, 0x31, 0xF8, + 0x02, 0x3F, 0x32, 0xF8, 0x02, 0x0F, 0x43, 0x40, 0x94, 0x45, 0x0B, 0x80, + 0xF7, 0xD1, 0xE3, 0x07, 0x39, 0xD4, 0x80, 0x23, 0xA4, 0x08, 0x05, 0xF0, + 0x01, 0x05, 0x3C, 0xAA, 0x05, 0xEB, 0x44, 0x04, 0x02, 0xEB, 0x44, 0x04, + 0x34, 0xF8, 0xD4, 0x2C, 0x53, 0x40, 0x24, 0xF8, 0xD4, 0x3C, 0x3A, 0x46, + 0x36, 0xF8, 0x02, 0x3F, 0x32, 0xF8, 0x02, 0x1F, 0xB7, 0x42, 0x83, 0xEA, + 0x01, 0x03, 0x33, 0x80, 0xF6, 0xD1, 0x03, 0xA9, 0x10, 0xA8, 0xFF, 0xF7, + 0xFB, 0xFC, 0xDD, 0xE9, 0x03, 0x01, 0x3D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0xA9, 0xF1, 0x02, 0x02, 0x39, 0x46, 0x09, 0xF1, 0x0E, 0x09, 0x31, 0xF8, + 0x02, 0x3F, 0x32, 0xF8, 0x02, 0x0F, 0x43, 0x40, 0x91, 0x45, 0x0B, 0x80, + 0xF7, 0xD1, 0xDE, 0xE7, 0x08, 0x49, 0x09, 0x48, 0x4F, 0xF4, 0xD6, 0x72, + 0xF3, 0xF7, 0x44, 0xF9, 0x00, 0x20, 0x01, 0x46, 0x3D, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x19, 0xF8, 0x15, 0x30, 0x43, 0xF4, 0x00, 0x43, 0xC1, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0xBC, 0xC2, 0x15, 0x00, 0xE4, 0xC2, 0x15, 0x00, 0x81, 0x04, 0x4F, 0xEA, + 0xD0, 0x23, 0xC0, 0xF3, 0xC2, 0x22, 0x0C, 0xD4, 0x13, 0xF0, 0x06, 0x0F, + 0x03, 0xF0, 0x06, 0x02, 0x11, 0xD1, 0x00, 0xF0, 0x7F, 0x00, 0x62, 0xB9, + 0x03, 0x28, 0x8C, 0xBF, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x07, 0x2A, + 0x0C, 0xD0, 0x03, 0xF0, 0x06, 0x02, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x2A, + 0xF2, 0xD0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x2A, + 0xF9, 0xD1, 0xEB, 0xE7, 0x13, 0xF0, 0x06, 0x0F, 0x0C, 0xBF, 0x01, 0x20, + 0x00, 0x20, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x4F, 0x07, 0x46, 0x40, 0x7F, + 0x87, 0xB0, 0x4F, 0xF0, 0xFF, 0x34, 0x09, 0x28, 0x05, 0x94, 0x02, 0xD9, + 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x89, 0x46, 0xF9, 0x6C, 0xC9, 0x4E, + 0x8C, 0x6C, 0x0D, 0x6D, 0x4F, 0xF4, 0x1E, 0x71, 0x01, 0xFB, 0x00, 0x60, + 0x90, 0x46, 0x90, 0xF8, 0x22, 0x10, 0xFA, 0x8B, 0x14, 0xF4, 0x00, 0x5F, + 0x08, 0xBF, 0x01, 0x23, 0x22, 0xF4, 0x00, 0x54, 0x05, 0xF4, 0x80, 0x05, + 0x02, 0xF4, 0x00, 0x52, 0xFF, 0x29, 0x01, 0x95, 0xFC, 0x83, 0x02, 0x92, + 0xE0, 0xD0, 0xBD, 0x4A, 0xD0, 0xF8, 0x4C, 0xA1, 0x12, 0x68, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0x50, 0xDB, 0xBA, 0xF8, 0xB4, 0x10, 0xBA, 0x6C, + 0x48, 0x1E, 0x05, 0xAC, 0xC0, 0xB2, 0x01, 0xEB, 0x41, 0x0E, 0x00, 0x90, + 0x03, 0x94, 0x0A, 0xEB, 0x8E, 0x0E, 0x02, 0xF1, 0x3C, 0x00, 0x02, 0xF1, + 0x4C, 0x0B, 0xA4, 0x46, 0x50, 0xF8, 0x04, 0x6B, 0xC6, 0xF3, 0x0D, 0x06, + 0x79, 0xB1, 0x74, 0x46, 0x00, 0x22, 0x02, 0xE0, 0x01, 0x32, 0x8A, 0x42, + 0x09, 0xD0, 0x34, 0xF8, 0x02, 0x5C, 0xB5, 0x42, 0xA4, 0xF1, 0x0C, 0x04, + 0xF6, 0xD1, 0x00, 0x9C, 0xA2, 0x1A, 0x8C, 0xF8, 0x00, 0x20, 0x00, 0x2B, + 0x40, 0xF0, 0xAD, 0x80, 0x83, 0x45, 0x0C, 0xF1, 0x01, 0x0C, 0xE3, 0xD1, + 0x97, 0xF8, 0x36, 0x30, 0x9A, 0xF8, 0xA3, 0x20, 0xC3, 0xF3, 0x82, 0x03, + 0x93, 0x42, 0x27, 0xD0, 0x01, 0x9B, 0x00, 0x2B, 0x64, 0xD0, 0xBA, 0xF8, + 0x92, 0x20, 0xBA, 0xF8, 0x90, 0x30, 0x01, 0x32, 0x01, 0x33, 0xAA, 0xF8, + 0x92, 0x20, 0xAA, 0xF8, 0x90, 0x30, 0xBA, 0xF8, 0x7E, 0x10, 0xBA, 0xF8, + 0x7C, 0x20, 0x1F, 0xFA, 0x89, 0xF9, 0xA9, 0xEB, 0x08, 0x03, 0x0B, 0x44, + 0x91, 0x44, 0xAA, 0xF8, 0x7E, 0x30, 0xAA, 0xF8, 0x7C, 0x90, 0x87, 0xE7, + 0xBA, 0xF1, 0x00, 0x0F, 0xAB, 0xD1, 0x90, 0x49, 0x90, 0x48, 0x00, 0x93, + 0x4F, 0xF4, 0x18, 0x62, 0xF3, 0xF7, 0x64, 0xF8, 0x00, 0x9B, 0xA2, 0xE7, + 0xBA, 0xF8, 0x90, 0x30, 0xBA, 0xF8, 0x92, 0x20, 0x01, 0x33, 0xAA, 0xF8, + 0x90, 0x30, 0x01, 0x9B, 0x01, 0x32, 0xAA, 0xF8, 0x92, 0x20, 0x00, 0x2B, + 0xD7, 0xD1, 0x02, 0x9B, 0x00, 0x2B, 0x3A, 0xD0, 0x83, 0x4E, 0x85, 0x4D, + 0x03, 0x9F, 0x00, 0x24, 0xB9, 0xF1, 0x00, 0x0F, 0x24, 0xD0, 0x17, 0xF8, + 0x01, 0x3B, 0xFF, 0x2B, 0x00, 0xF0, 0xEC, 0x80, 0x00, 0x2C, 0x00, 0xF0, + 0x41, 0x81, 0x03, 0xEB, 0x43, 0x02, 0xB8, 0xF1, 0x01, 0x0F, 0x0A, 0xEB, + 0x82, 0x02, 0x40, 0xF2, 0x7A, 0x81, 0x92, 0x88, 0x59, 0x00, 0x19, 0x44, + 0x0A, 0xEB, 0x81, 0x01, 0x02, 0x32, 0x8A, 0x80, 0xA9, 0xF1, 0x02, 0x09, + 0xA8, 0xF1, 0x02, 0x08, 0x71, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, + 0x00, 0x2A, 0xC0, 0xF2, 0x02, 0x81, 0x01, 0x34, 0x04, 0x2C, 0xD7, 0xD1, + 0x00, 0x23, 0x8A, 0xF8, 0x9B, 0x30, 0x3B, 0xE7, 0xBA, 0xF8, 0x92, 0x20, + 0xBA, 0xF8, 0x90, 0x30, 0x01, 0x32, 0x01, 0x33, 0xAA, 0xF8, 0x92, 0x20, + 0xAA, 0xF8, 0x90, 0x30, 0xC1, 0xE7, 0x66, 0x4E, 0x67, 0x4D, 0x03, 0x9F, + 0x1C, 0x46, 0xB9, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x29, 0xAF, 0x17, 0xF8, + 0x01, 0x3B, 0xFF, 0x2B, 0x00, 0xF0, 0xA5, 0x80, 0x00, 0x2C, 0x00, 0xF0, + 0xF0, 0x80, 0x03, 0xEB, 0x43, 0x02, 0xB8, 0xF1, 0x01, 0x0F, 0x0A, 0xEB, + 0x82, 0x02, 0x40, 0xF2, 0x43, 0x81, 0x92, 0x88, 0x59, 0x00, 0x19, 0x44, + 0x0A, 0xEB, 0x81, 0x01, 0x02, 0x32, 0x8A, 0x80, 0xA9, 0xF1, 0x02, 0x09, + 0xA8, 0xF1, 0x02, 0x08, 0x53, 0x4A, 0x12, 0x68, 0xB2, 0xF9, 0x00, 0x20, + 0x00, 0x2A, 0xC0, 0xF2, 0xB6, 0x80, 0x01, 0x34, 0x04, 0x2C, 0xD6, 0xD1, + 0x02, 0xE7, 0x97, 0xF8, 0x36, 0x30, 0x9A, 0xF8, 0xA3, 0x20, 0xC3, 0xF3, + 0x82, 0x03, 0x93, 0x42, 0x38, 0xD0, 0x01, 0x9B, 0x00, 0x2B, 0x69, 0xD1, + 0xBA, 0xF8, 0x92, 0x30, 0xBA, 0xF8, 0x90, 0x20, 0x01, 0x33, 0x1F, 0xFA, + 0x89, 0xF0, 0xAA, 0xF8, 0x92, 0x30, 0x02, 0x9B, 0x02, 0x44, 0xAA, 0xF8, + 0x90, 0x20, 0x00, 0x2B, 0x40, 0xF0, 0x8A, 0x80, 0x9D, 0xF8, 0x14, 0x30, + 0xFF, 0x2B, 0x3F, 0xF4, 0xE3, 0xAE, 0x0C, 0x22, 0x02, 0xFB, 0x03, 0xA3, + 0x04, 0x33, 0x3C, 0x4A, 0x5D, 0x88, 0x19, 0x88, 0x14, 0x68, 0xA0, 0xEB, + 0x08, 0x02, 0x2A, 0x44, 0x01, 0x44, 0x92, 0xB2, 0x89, 0xB2, 0x5A, 0x80, + 0x19, 0x80, 0xB4, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0xCE, 0xAE, + 0x91, 0x42, 0xBF, 0xF4, 0xCB, 0xAE, 0x33, 0x49, 0x34, 0x48, 0x4F, 0xF4, + 0x1F, 0x62, 0x07, 0xB0, 0xBD, 0xE8, 0xF0, 0x4F, 0xF2, 0xF7, 0xA8, 0xBF, + 0xBA, 0xF8, 0x90, 0x30, 0xBA, 0xF8, 0x92, 0x20, 0x1F, 0xFA, 0x89, 0xF0, + 0x03, 0x44, 0xAA, 0xF8, 0x90, 0x30, 0x01, 0x9B, 0x01, 0x32, 0xAA, 0xF8, + 0x92, 0x20, 0x8B, 0xBB, 0x02, 0x9B, 0x00, 0x2B, 0x52, 0xD1, 0x9D, 0xF8, + 0x14, 0x30, 0xFF, 0x2B, 0x00, 0xF0, 0xFD, 0x80, 0x0C, 0x22, 0x02, 0xFB, + 0x03, 0xA3, 0x04, 0x33, 0xB9, 0xEB, 0x48, 0x0F, 0x9A, 0xF8, 0xA4, 0x20, + 0x80, 0xF0, 0xE9, 0x80, 0x01, 0x2A, 0x40, 0xF2, 0xF8, 0x80, 0x02, 0x2A, + 0x03, 0xD0, 0x00, 0x2B, 0x3F, 0xF4, 0x9A, 0xAE, 0xB9, 0xE7, 0xDA, 0xF8, + 0x00, 0x20, 0xA2, 0xF5, 0x92, 0x32, 0xF8, 0x3A, 0xCA, 0xF8, 0x00, 0x20, + 0x00, 0x2B, 0x3F, 0xF4, 0x8F, 0xAE, 0xAE, 0xE7, 0xBA, 0xF8, 0x90, 0x20, + 0xBA, 0xF8, 0x92, 0x30, 0x1F, 0xFA, 0x89, 0xF0, 0x02, 0x44, 0x01, 0x33, + 0xAA, 0xF8, 0x90, 0x20, 0xAA, 0xF8, 0x92, 0x30, 0x0A, 0xF1, 0x7C, 0x03, + 0x9F, 0xE7, 0x00, 0x2C, 0x75, 0xD0, 0xB8, 0xF1, 0x01, 0x0F, 0x7F, 0xF6, + 0x79, 0xAE, 0xA9, 0xF1, 0x02, 0x09, 0xA8, 0xF1, 0x02, 0x08, 0x6C, 0xE7, + 0x00, 0x2C, 0x00, 0xF0, 0x8C, 0x80, 0xB8, 0xF1, 0x01, 0x0F, 0x7F, 0xF6, + 0x2D, 0xAF, 0xA9, 0xF1, 0x02, 0x09, 0xA8, 0xF1, 0x02, 0x08, 0x24, 0xE7, + 0x68, 0x65, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x68, 0x8E, 0x15, 0x00, 0xE4, 0xC5, 0x15, 0x00, 0x9D, 0xF8, 0x14, 0x30, + 0xFF, 0x2B, 0x3F, 0xF4, 0x19, 0xAF, 0x0C, 0x22, 0x02, 0xFB, 0x03, 0xA3, + 0x00, 0x22, 0x04, 0x33, 0x8A, 0xF8, 0x9B, 0x20, 0x71, 0xE7, 0x03, 0xEB, + 0x43, 0x03, 0x0A, 0xEB, 0x83, 0x03, 0x9A, 0x88, 0xDB, 0x88, 0x9A, 0x42, + 0xBF, 0xF4, 0x41, 0xAF, 0x40, 0xF6, 0x61, 0x22, 0x31, 0x46, 0x28, 0x46, + 0xF2, 0xF7, 0x28, 0xFF, 0x39, 0xE7, 0x03, 0xEB, 0x43, 0x03, 0x0A, 0xEB, + 0x83, 0x03, 0x9A, 0x88, 0xDB, 0x88, 0x9A, 0x42, 0xBF, 0xF4, 0xF5, 0xAE, + 0x40, 0xF6, 0x33, 0x22, 0x31, 0x46, 0x28, 0x46, 0xF2, 0xF7, 0x18, 0xFF, + 0xED, 0xE6, 0xB8, 0xF1, 0x00, 0x0F, 0x6C, 0xD0, 0x03, 0xEB, 0x43, 0x01, + 0x0A, 0xEB, 0x81, 0x01, 0x08, 0xF1, 0xFF, 0x38, 0x8A, 0x88, 0x01, 0x32, + 0x92, 0xB2, 0xB8, 0xF1, 0x01, 0x0F, 0x8A, 0x80, 0x09, 0xF1, 0xFF, 0x39, + 0x19, 0xB2, 0x73, 0xD9, 0x59, 0x00, 0x04, 0xE7, 0xB8, 0xF1, 0x00, 0x0F, + 0x1B, 0xD0, 0x03, 0xEB, 0x43, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x08, 0xF1, + 0xFF, 0x38, 0x8A, 0x88, 0x01, 0x32, 0x92, 0xB2, 0xB8, 0xF1, 0x01, 0x0F, + 0x8A, 0x80, 0x09, 0xF1, 0xFF, 0x39, 0x19, 0xB2, 0x5B, 0xD9, 0x59, 0x00, + 0xB3, 0xE6, 0xB8, 0xF1, 0x02, 0x0F, 0x7F, 0xF6, 0x03, 0xAE, 0xA9, 0xF1, + 0x03, 0x09, 0xA8, 0xF1, 0x03, 0x08, 0x01, 0x24, 0xCF, 0xE6, 0x03, 0xEB, + 0x43, 0x02, 0x0A, 0xEB, 0x82, 0x02, 0xA0, 0x46, 0x92, 0x88, 0x19, 0xB2, + 0x01, 0xEB, 0x41, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x1F, 0xFA, 0x89, 0xF9, + 0xC8, 0x88, 0xA9, 0xEB, 0x08, 0x08, 0x4A, 0x44, 0x40, 0x44, 0x4F, 0xF0, + 0x00, 0x09, 0x8A, 0x80, 0xC8, 0x80, 0xC8, 0x46, 0x9A, 0xE6, 0xB8, 0xF1, + 0x02, 0x0F, 0x7F, 0xF6, 0xA1, 0xAE, 0xA9, 0xF1, 0x03, 0x09, 0xA8, 0xF1, + 0x03, 0x08, 0x01, 0x24, 0x72, 0xE6, 0x92, 0x88, 0x1F, 0xFA, 0x88, 0xF8, + 0x19, 0xB2, 0xDF, 0xE7, 0x92, 0x88, 0x1F, 0xFA, 0x88, 0xF8, 0x19, 0xB2, + 0x01, 0xEB, 0x41, 0x01, 0x0A, 0xEB, 0x81, 0x01, 0x1F, 0xFA, 0x89, 0xF9, + 0xC8, 0x88, 0xA9, 0xEB, 0x08, 0x08, 0x4A, 0x44, 0x40, 0x44, 0x4F, 0xF0, + 0x00, 0x09, 0x8A, 0x80, 0xC8, 0x80, 0xC8, 0x46, 0xB2, 0xE6, 0x03, 0xEB, + 0x43, 0x02, 0x0A, 0xEB, 0x82, 0x02, 0xA0, 0x46, 0x92, 0x88, 0x19, 0xB2, + 0xE6, 0xE7, 0x00, 0x2A, 0x3F, 0xF4, 0x19, 0xAF, 0x01, 0x3A, 0x8A, 0xF8, + 0xA4, 0x20, 0x00, 0x2B, 0x3F, 0xF4, 0xB0, 0xAD, 0xCF, 0xE6, 0x02, 0x9B, + 0x04, 0xE7, 0x1F, 0xFA, 0x88, 0xF8, 0xB3, 0xE7, 0x1F, 0xFA, 0x88, 0xF8, + 0xD4, 0xE7, 0x01, 0x32, 0x8A, 0xF8, 0xA4, 0x20, 0x00, 0x2B, 0x3F, 0xF4, + 0xA1, 0xAD, 0xC0, 0xE6, 0x03, 0x88, 0xA3, 0xB1, 0x10, 0xB4, 0x42, 0x88, + 0x44, 0x7A, 0x00, 0x21, 0x12, 0x04, 0x01, 0x72, 0xB2, 0xFB, 0xF3, 0xF1, + 0x8C, 0xB1, 0x83, 0x88, 0x5D, 0xF8, 0x04, 0x4B, 0x03, 0xEB, 0x43, 0x03, + 0x0B, 0x44, 0xC3, 0xF3, 0x98, 0x03, 0x83, 0x80, 0x01, 0x23, 0x43, 0x72, + 0x70, 0x47, 0x03, 0x7A, 0xFF, 0x2B, 0x1C, 0xBF, 0x01, 0x33, 0x03, 0x72, + 0x70, 0x47, 0x9A, 0x42, 0x24, 0xBF, 0x01, 0xF1, 0xFF, 0x33, 0x83, 0x80, + 0x4F, 0xF0, 0x01, 0x03, 0x38, 0xBF, 0x84, 0x80, 0x43, 0x72, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0xF8, 0xB5, 0x06, 0x46, 0x88, 0x04, 0x0C, 0x46, + 0xC1, 0xF3, 0xC2, 0x25, 0x19, 0xD4, 0xCB, 0x0A, 0x13, 0xF0, 0x06, 0x0F, + 0x40, 0xD1, 0xCF, 0xB2, 0x01, 0xF0, 0x7F, 0x05, 0x05, 0xF0, 0xF8, 0xF9, + 0x17, 0xF0, 0x7C, 0x0F, 0x5B, 0xD1, 0x96, 0xF8, 0xAD, 0x20, 0x04, 0xE0, + 0xB6, 0xF8, 0xAA, 0x30, 0xEB, 0x40, 0xD9, 0x07, 0x59, 0xD4, 0x6B, 0x1E, + 0x95, 0x42, 0xDD, 0xB2, 0xF6, 0xD8, 0x20, 0x46, 0xF8, 0xBD, 0x07, 0x2D, + 0x47, 0xD0, 0x04, 0x3D, 0x05, 0xF0, 0xE2, 0xF9, 0x04, 0xF0, 0x0F, 0x02, + 0x01, 0x2D, 0xF4, 0xD8, 0xDF, 0xE8, 0x05, 0xF0, 0x01, 0x0E, 0x72, 0xB3, + 0x53, 0x1E, 0x24, 0xF0, 0x0F, 0x04, 0x96, 0xF8, 0xB1, 0x20, 0x23, 0x43, + 0x98, 0xB2, 0x00, 0x2A, 0xE8, 0xD0, 0x40, 0xF4, 0x00, 0x70, 0xF8, 0xBD, + 0x0A, 0xB3, 0x24, 0xF0, 0x0F, 0x03, 0x51, 0x1E, 0x0B, 0x43, 0x98, 0xB2, + 0x63, 0x04, 0xDD, 0xD5, 0x03, 0x2A, 0x03, 0xD0, 0x96, 0xF8, 0xBD, 0x30, + 0x99, 0x42, 0xD7, 0xDD, 0x20, 0xF4, 0x80, 0x43, 0x98, 0xB2, 0xF8, 0xBD, + 0xC4, 0xF3, 0xC1, 0x05, 0x05, 0xF0, 0xB8, 0xF9, 0x35, 0x44, 0x04, 0xF0, + 0x07, 0x03, 0x05, 0xE0, 0x95, 0xF8, 0xA6, 0x20, 0xCB, 0xB2, 0xDA, 0x40, + 0xD2, 0x07, 0x24, 0xD4, 0x59, 0x1E, 0x00, 0x2B, 0xF6, 0xD1, 0x96, 0xF8, + 0xAE, 0x30, 0x03, 0x2B, 0xBD, 0xD8, 0x43, 0xB3, 0x96, 0xF8, 0xB2, 0x20, + 0x00, 0xF4, 0x80, 0x60, 0x43, 0xEA, 0x82, 0x23, 0x03, 0x43, 0x98, 0xB2, + 0xF8, 0xBD, 0x05, 0xF0, 0x9B, 0xF9, 0x20, 0x46, 0xB0, 0xE7, 0x96, 0xF8, + 0xAD, 0x20, 0x04, 0x2A, 0x38, 0xBF, 0x04, 0x22, 0xA5, 0xE7, 0x24, 0xF0, + 0x7F, 0x04, 0x44, 0xEA, 0x05, 0x00, 0x00, 0x2D, 0xA4, 0xD1, 0x40, 0xF4, + 0x80, 0x63, 0x98, 0xB2, 0xF8, 0xBD, 0x96, 0xF8, 0xB1, 0x20, 0x24, 0xF0, + 0x07, 0x04, 0x44, 0xEA, 0x03, 0x00, 0x00, 0x2A, 0x98, 0xD0, 0x40, 0xF4, + 0x00, 0x73, 0x98, 0xB2, 0xF8, 0xBD, 0x4F, 0xF4, 0x80, 0x60, 0xF8, 0xBD, + 0x8A, 0x04, 0x30, 0xB4, 0xC1, 0xF3, 0xC2, 0x23, 0x20, 0xD4, 0xCA, 0x0A, + 0x12, 0xF0, 0x06, 0x0F, 0x26, 0xD1, 0x11, 0xF0, 0x7C, 0x0F, 0x01, 0xF0, + 0x7F, 0x03, 0x71, 0xD1, 0x90, 0xF8, 0xAE, 0x40, 0x03, 0x2C, 0x28, 0xBF, + 0x03, 0x24, 0x04, 0xE0, 0xB0, 0xF8, 0xAA, 0x20, 0xDA, 0x40, 0xD5, 0x07, + 0x74, 0xD4, 0x5A, 0x1C, 0xA3, 0x42, 0xD3, 0xB2, 0xF6, 0xD3, 0x90, 0xF8, + 0xA5, 0x30, 0x01, 0x2B, 0x01, 0xD9, 0xD9, 0x02, 0x89, 0xB2, 0x08, 0x46, + 0x30, 0xBC, 0x70, 0x47, 0x07, 0x2B, 0xFA, 0xD0, 0x04, 0x3B, 0x01, 0xF0, + 0x0F, 0x02, 0x01, 0x2B, 0xF5, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x15, 0x30, + 0xC1, 0xF3, 0xC1, 0x04, 0x90, 0xF8, 0xAC, 0x50, 0x04, 0x44, 0x01, 0xF0, + 0x07, 0x03, 0x04, 0xE0, 0x94, 0xF8, 0xA6, 0x20, 0xDA, 0x40, 0xD2, 0x07, + 0x45, 0xD4, 0x5A, 0x1C, 0x9D, 0x42, 0xD3, 0xB2, 0xF6, 0xD8, 0x08, 0x46, + 0x30, 0xBC, 0x70, 0x47, 0x90, 0xF8, 0xAC, 0x30, 0x93, 0x42, 0xDA, 0xD9, + 0xB0, 0xF8, 0xA6, 0x30, 0xC1, 0xF3, 0x02, 0x14, 0x64, 0x00, 0x23, 0x41, + 0x03, 0xF0, 0x03, 0x03, 0x07, 0x33, 0x93, 0x42, 0xCF, 0xD9, 0x21, 0xF0, + 0x0F, 0x01, 0x01, 0x32, 0x90, 0xF8, 0xB1, 0x30, 0x11, 0x43, 0x89, 0xB2, + 0x00, 0x2B, 0xC6, 0xD0, 0x41, 0xF4, 0x00, 0x71, 0xC3, 0xE7, 0x90, 0xF8, + 0xAC, 0x30, 0x93, 0x42, 0xBF, 0xD9, 0xB0, 0xF8, 0xA6, 0x30, 0xC1, 0xF3, + 0x02, 0x14, 0x64, 0x00, 0x23, 0x41, 0x03, 0xF0, 0x03, 0x03, 0x5B, 0x00, + 0x07, 0x33, 0x93, 0x42, 0xB3, 0xD9, 0x21, 0xF0, 0x0F, 0x01, 0x53, 0x1C, + 0x0B, 0x43, 0x99, 0xB2, 0x5B, 0x04, 0xAC, 0xD5, 0x01, 0x2A, 0x03, 0xD0, + 0x90, 0xF8, 0xBD, 0x30, 0x93, 0x42, 0xA6, 0xD8, 0x21, 0xF4, 0x80, 0x41, + 0x89, 0xB2, 0xA2, 0xE7, 0x90, 0xF8, 0xAE, 0x40, 0x95, 0xE7, 0x90, 0xF8, + 0xB1, 0x20, 0x21, 0xF0, 0x07, 0x01, 0x19, 0x43, 0x00, 0x2A, 0x98, 0xD0, + 0x41, 0xF4, 0x00, 0x71, 0x89, 0xB2, 0x94, 0xE7, 0x21, 0xF0, 0x7F, 0x01, + 0x19, 0x43, 0x90, 0xE7, 0x2D, 0xE9, 0xF0, 0x4F, 0x01, 0xEB, 0x41, 0x01, + 0x00, 0xEB, 0x81, 0x01, 0x85, 0xB0, 0x4C, 0x89, 0xE6, 0x0A, 0xC4, 0xF3, + 0x80, 0x22, 0x01, 0x92, 0x71, 0x07, 0x4F, 0xEA, 0x54, 0x22, 0x05, 0x46, + 0x06, 0xF0, 0x04, 0x03, 0xC4, 0xF3, 0xC2, 0x27, 0x02, 0x92, 0xC4, 0xF3, + 0x40, 0x2B, 0xC4, 0xF3, 0xC1, 0x1A, 0x23, 0xD5, 0x07, 0x2F, 0x50, 0xD0, + 0xC4, 0xF3, 0x02, 0x19, 0x04, 0xF0, 0x0F, 0x04, 0xDF, 0xF8, 0x70, 0x83, + 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x22, 0xDA, + 0x05, 0x2F, 0x27, 0xD9, 0x40, 0xF2, 0xB5, 0x22, 0xCA, 0x49, 0xCB, 0x48, + 0x03, 0x93, 0xF2, 0xF7, 0x0B, 0xFD, 0x95, 0xF8, 0xA5, 0x20, 0x03, 0x9B, + 0x05, 0x2A, 0x14, 0xD8, 0xDF, 0xE8, 0x12, 0xF0, 0xD6, 0x00, 0xD6, 0x00, + 0x31, 0x01, 0x31, 0x01, 0xF4, 0x00, 0x45, 0x01, 0x16, 0xF0, 0x06, 0x09, + 0x26, 0xD1, 0x04, 0xF0, 0x7F, 0x04, 0xDF, 0xF8, 0x2C, 0x83, 0xD8, 0xF8, + 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x06, 0xDB, 0x05, 0x2F, + 0x17, 0xD8, 0xDF, 0xE8, 0x07, 0xF0, 0x22, 0x22, 0x0F, 0x0F, 0x50, 0x91, + 0x95, 0xF8, 0xA5, 0x10, 0x05, 0x29, 0xF4, 0xD8, 0xDF, 0xE8, 0x11, 0xF0, + 0xBD, 0x00, 0xBD, 0x00, 0x15, 0x01, 0x15, 0x01, 0xD8, 0x00, 0x29, 0x01, + 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, + 0xDF, 0x80, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xC4, 0xF3, 0xC1, 0x09, + 0x04, 0xF0, 0x07, 0x04, 0xD5, 0xE7, 0x4F, 0xF0, 0x00, 0x09, 0x4C, 0x46, + 0xAE, 0xE7, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x03, 0x2C, + 0x04, 0xD8, 0x95, 0xF8, 0xB2, 0x10, 0x01, 0x29, 0x00, 0xF0, 0x7B, 0x81, + 0x00, 0x2A, 0xE6, 0xDA, 0xBB, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x2E, 0x81, + 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, 0x1C, 0x81, 0xB9, 0xF1, 0x00, 0x0F, + 0x40, 0xF0, 0xDC, 0x81, 0x95, 0xF8, 0xAD, 0x30, 0xA3, 0x42, 0x00, 0xF2, + 0xC9, 0x81, 0x95, 0xF8, 0xAE, 0x30, 0xA3, 0x42, 0xC0, 0xF0, 0xEE, 0x81, + 0xB5, 0xF8, 0xAA, 0x30, 0x23, 0xFA, 0x04, 0xF4, 0xE2, 0x07, 0xCA, 0xD4, + 0x93, 0x49, 0x95, 0x48, 0x40, 0xF2, 0x06, 0x32, 0x3B, 0xE0, 0xD8, 0xF8, + 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xBF, 0xDA, 0x01, 0x9B, + 0x00, 0x2B, 0x40, 0xF0, 0xCB, 0x81, 0x95, 0xF8, 0xB1, 0x30, 0x5B, 0x45, + 0xC0, 0xF0, 0x52, 0x82, 0x95, 0xF8, 0xAF, 0x30, 0x53, 0x45, 0xC0, 0xF0, + 0x3F, 0x82, 0x95, 0xF8, 0xB0, 0x30, 0x4B, 0x45, 0xC0, 0xF0, 0x2C, 0x82, + 0x95, 0xF8, 0xAC, 0x30, 0xA3, 0x42, 0xC0, 0xF0, 0x19, 0x82, 0xB5, 0xF8, + 0xA6, 0x30, 0x4F, 0xEA, 0x49, 0x02, 0x13, 0x41, 0x03, 0xF0, 0x03, 0x03, + 0x07, 0x33, 0x9C, 0x42, 0x00, 0xF3, 0x82, 0x81, 0x06, 0x2C, 0x00, 0xF0, + 0x3E, 0x81, 0x09, 0x2C, 0x97, 0xD1, 0xBA, 0xF1, 0x00, 0x0F, 0x40, 0xF0, + 0x4B, 0x82, 0xB9, 0xF1, 0x02, 0x0F, 0x90, 0xD0, 0xB9, 0xF1, 0x05, 0x0F, + 0x8D, 0xD0, 0x75, 0x49, 0x77, 0x48, 0x4F, 0xF4, 0x48, 0x72, 0x05, 0xB0, + 0xBD, 0xE8, 0xF0, 0x4F, 0xF2, 0xF7, 0x5C, 0xBC, 0xD8, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xBF, 0xF6, 0x7E, 0xAF, 0x02, 0x9B, + 0x03, 0xF0, 0x03, 0x03, 0x03, 0x2B, 0x00, 0xF0, 0x21, 0x82, 0x95, 0xF8, + 0xAF, 0x30, 0x53, 0x45, 0xC0, 0xF0, 0x9E, 0x81, 0x95, 0xF8, 0xB0, 0x30, + 0x4B, 0x45, 0xC0, 0xF0, 0xD1, 0x81, 0x95, 0xF8, 0xAC, 0x30, 0xA3, 0x42, + 0xC0, 0xF0, 0xBE, 0x81, 0xB5, 0xF8, 0xA6, 0x30, 0x4F, 0xEA, 0x49, 0x09, + 0x43, 0xFA, 0x09, 0xF3, 0x03, 0xF0, 0x03, 0x03, 0x5B, 0x00, 0x07, 0x33, + 0x9C, 0x42, 0x7F, 0xF7, 0x5C, 0xAF, 0x5C, 0x49, 0x5F, 0x48, 0x40, 0xF2, + 0x2F, 0x32, 0xCC, 0xE7, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, + 0x00, 0x2A, 0xBF, 0xF6, 0x36, 0xAF, 0x16, 0xF0, 0x06, 0x0F, 0x40, 0xF0, + 0x2A, 0x81, 0x05, 0x2F, 0x3F, 0xF6, 0x49, 0xAF, 0x01, 0xA3, 0x53, 0xF8, + 0x27, 0xF0, 0x00, 0xBF, 0xE7, 0x21, 0x15, 0x00, 0xE7, 0x21, 0x15, 0x00, + 0x8D, 0x23, 0x15, 0x00, 0x8D, 0x23, 0x15, 0x00, 0x43, 0x22, 0x15, 0x00, + 0xC5, 0x22, 0x15, 0x00, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, + 0x95, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x60, 0xD8, 0x00, 0x2A, 0xBF, 0xF6, + 0x14, 0xAF, 0x04, 0x2F, 0x3F, 0xF4, 0x6B, 0xAF, 0x00, 0x2F, 0x3F, 0xF4, + 0x38, 0xAF, 0x42, 0x49, 0x46, 0x48, 0x4F, 0xF4, 0x36, 0x72, 0xF2, 0xF7, + 0xF9, 0xFB, 0x06, 0xE7, 0x01, 0x9B, 0x00, 0x2B, 0x40, 0xF0, 0x64, 0x81, + 0x95, 0xF8, 0xB1, 0x30, 0x5B, 0x45, 0xC0, 0xF0, 0x51, 0x81, 0x95, 0xF8, + 0xAF, 0x30, 0x53, 0x45, 0xC0, 0xF0, 0xD5, 0x80, 0x95, 0xF8, 0xB0, 0x30, + 0x4B, 0x45, 0xC0, 0xF0, 0xC2, 0x80, 0x95, 0xF8, 0xAC, 0x30, 0xA3, 0x42, + 0xC0, 0xF0, 0xD9, 0x80, 0x4D, 0x44, 0x95, 0xF8, 0xA6, 0x30, 0x23, 0xFA, + 0x04, 0xF4, 0xE3, 0x07, 0x3F, 0xF5, 0x01, 0xAF, 0x2E, 0x49, 0x34, 0x48, + 0x40, 0xF2, 0x12, 0x32, 0x71, 0xE7, 0xD8, 0xF8, 0x00, 0x20, 0xB2, 0xF9, + 0x00, 0x20, 0x95, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x77, 0xD8, 0x00, 0x2A, + 0xBF, 0xF6, 0xD7, 0xAE, 0x00, 0x2B, 0xA2, 0xD0, 0x25, 0x49, 0x2C, 0x48, + 0x40, 0xF2, 0xCA, 0x22, 0xF2, 0xF7, 0xC0, 0xFB, 0xCD, 0xE6, 0xD8, 0xF8, + 0x00, 0x20, 0xB2, 0xF9, 0x00, 0x20, 0x95, 0xF8, 0xAD, 0x10, 0x03, 0x29, + 0x56, 0xD8, 0x00, 0x2A, 0xBF, 0xF6, 0xC3, 0xAE, 0x05, 0x2F, 0x3F, 0xF4, + 0x5C, 0xAF, 0x00, 0x2F, 0x3F, 0xF4, 0xE7, 0xAE, 0x19, 0x49, 0x21, 0x48, + 0x40, 0xF2, 0xE7, 0x22, 0xF2, 0xF7, 0xA8, 0xFB, 0xB5, 0xE6, 0x00, 0x2A, + 0xBF, 0xF6, 0xB3, 0xAE, 0x04, 0x2F, 0x3F, 0xF4, 0x0A, 0xAF, 0x13, 0x49, + 0x1B, 0x48, 0x4F, 0xF4, 0x37, 0x72, 0xF2, 0xF7, 0x9B, 0xFB, 0xA8, 0xE6, + 0x0F, 0x49, 0x19, 0x48, 0x40, 0xF2, 0x02, 0x32, 0xF2, 0xF7, 0x94, 0xFB, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, + 0xD7, 0xAE, 0xB4, 0xE6, 0x08, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x01, 0x32, + 0xF2, 0xF7, 0x86, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xBF, 0xF6, 0xA8, 0xAE, 0xBA, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, + 0xC5, 0xAE, 0xDF, 0xE7, 0x70, 0x79, 0x15, 0x00, 0x08, 0xC6, 0x15, 0x00, + 0xB0, 0xC7, 0x15, 0x00, 0xF0, 0xC8, 0x15, 0x00, 0xA8, 0xC9, 0x15, 0x00, + 0xA8, 0xC6, 0x15, 0x00, 0x3C, 0xC8, 0x15, 0x00, 0x48, 0xC6, 0x15, 0x00, + 0x04, 0xC7, 0x15, 0x00, 0xE8, 0xC6, 0x15, 0x00, 0x64, 0xC7, 0x15, 0x00, + 0x58, 0xC7, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x00, 0x2A, 0xBF, 0xF6, + 0x6C, 0xAE, 0x05, 0x2F, 0x3F, 0xF4, 0x05, 0xAF, 0xA9, 0x49, 0xAA, 0x48, + 0x40, 0xF2, 0xEB, 0x22, 0xF2, 0xF7, 0x54, 0xFB, 0x61, 0xE6, 0x00, 0x2A, + 0xBF, 0xF6, 0x5F, 0xAE, 0xBA, 0x1E, 0x01, 0x2A, 0x7F, 0xF6, 0x54, 0xAF, + 0xA2, 0x49, 0xA4, 0x48, 0x40, 0xF2, 0xCE, 0x22, 0xF2, 0xF7, 0x46, 0xFB, + 0x53, 0xE6, 0x00, 0x2A, 0xBF, 0xF6, 0x6B, 0xAE, 0x01, 0x9B, 0x00, 0x2B, + 0x7F, 0xF4, 0x80, 0xAE, 0x40, 0xF2, 0xFB, 0x22, 0x9A, 0x49, 0x9D, 0x48, + 0xF2, 0xF7, 0x38, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x20, + 0x72, 0xE6, 0xBA, 0xF1, 0x02, 0x0F, 0x7F, 0xF4, 0x58, 0xAE, 0xB9, 0xF1, + 0x03, 0x0F, 0x03, 0xD0, 0xB9, 0xF1, 0x06, 0x0F, 0x7F, 0xF4, 0x51, 0xAE, + 0x90, 0x49, 0x94, 0x48, 0x40, 0xF2, 0x1F, 0x32, 0xC1, 0xE6, 0x8E, 0x49, + 0x92, 0x48, 0x4F, 0xF4, 0x44, 0x72, 0xF2, 0xF7, 0x1D, 0xFB, 0xD8, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x31, 0xAF, + 0x3D, 0xE6, 0x87, 0x49, 0x8C, 0x48, 0x40, 0xF2, 0x0F, 0x32, 0xF2, 0xF7, + 0x0F, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xFF, 0xF6, 0x1E, 0xAF, 0x2F, 0xE6, 0x80, 0x49, 0x86, 0x48, 0x40, 0xF2, + 0x11, 0x32, 0xF2, 0xF7, 0x01, 0xFB, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x1A, 0xAF, 0x21, 0xE6, 0x79, 0x49, + 0x80, 0x48, 0x40, 0xF2, 0xC2, 0x22, 0xF2, 0xF7, 0xF3, 0xFA, 0x00, 0xE6, + 0x75, 0x49, 0x7E, 0x48, 0x40, 0xF2, 0x1E, 0x32, 0xF2, 0xF7, 0xEC, 0xFA, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, + 0x71, 0xAE, 0x0C, 0xE6, 0x6E, 0x49, 0x78, 0x48, 0x4F, 0xF4, 0x41, 0x72, + 0xF2, 0xF7, 0xDE, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xFF, 0xF6, 0x2A, 0xAE, 0xFE, 0xE5, 0x67, 0x49, 0x72, 0x48, + 0x40, 0xF2, 0x03, 0x32, 0xF2, 0xF7, 0xD0, 0xFA, 0xD8, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x17, 0xAE, 0xF0, 0xE5, + 0x60, 0x49, 0x6C, 0x48, 0x40, 0xF2, 0x19, 0x32, 0xF2, 0xF7, 0xC2, 0xFA, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, + 0x28, 0xAE, 0xE2, 0xE5, 0x59, 0x49, 0x66, 0x48, 0x40, 0xF2, 0x05, 0x32, + 0xF2, 0xF7, 0xB4, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xFF, 0xF6, 0x05, 0xAE, 0xD4, 0xE5, 0x52, 0x49, 0x58, 0x48, + 0x4F, 0xF4, 0x4B, 0x72, 0xF2, 0xF7, 0xA6, 0xFA, 0xD8, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x55, 0xAE, 0xC6, 0xE5, + 0x4B, 0x49, 0x59, 0x48, 0x40, 0xF2, 0x0E, 0x32, 0xF2, 0xF7, 0x98, 0xFA, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, + 0xA2, 0xAE, 0xB8, 0xE5, 0x44, 0x49, 0x50, 0x48, 0x40, 0xF2, 0x0D, 0x32, + 0xF2, 0xF7, 0x8A, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xFF, 0xF6, 0x8F, 0xAE, 0xAA, 0xE5, 0x3D, 0x49, 0x44, 0x48, + 0x40, 0xF2, 0x2E, 0x32, 0xF2, 0xF7, 0x7C, 0xFA, 0xD8, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0x35, 0xAE, 0x9C, 0xE5, + 0x36, 0x49, 0x3B, 0x48, 0x40, 0xF2, 0x2D, 0x32, 0xF2, 0xF7, 0x6E, 0xFA, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, + 0x22, 0xAE, 0x8E, 0xE5, 0x2F, 0x49, 0x36, 0x48, 0x40, 0xF2, 0x1D, 0x32, + 0xF2, 0xF7, 0x60, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xFF, 0xF6, 0xDA, 0xAD, 0x80, 0xE5, 0x28, 0x49, 0x2D, 0x48, + 0x4F, 0xF4, 0x47, 0x72, 0xF2, 0xF7, 0x52, 0xFA, 0xD8, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0xC7, 0xAD, 0x72, 0xE5, + 0x21, 0x49, 0x27, 0x48, 0x40, 0xF2, 0x1B, 0x32, 0xF2, 0xF7, 0x44, 0xFA, + 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, + 0xB4, 0xAD, 0x64, 0xE5, 0x1A, 0x49, 0x28, 0x48, 0x40, 0xF2, 0x1A, 0x32, + 0xF2, 0xF7, 0x36, 0xFA, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xFF, 0xF6, 0xA1, 0xAD, 0x56, 0xE5, 0x13, 0x49, 0x22, 0x48, + 0x40, 0xF2, 0x2B, 0x32, 0xF2, 0xF7, 0x28, 0xFA, 0xD8, 0xF8, 0x00, 0x30, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xFF, 0xF6, 0xD2, 0xAD, 0x48, 0xE5, + 0xBA, 0xF1, 0x02, 0x0F, 0x08, 0xD1, 0xB9, 0xF1, 0x05, 0x0F, 0x7F, 0xF4, + 0x42, 0xAD, 0x09, 0x49, 0x18, 0x48, 0x40, 0xF2, 0x21, 0x32, 0xB2, 0xE5, + 0xBA, 0xF1, 0x03, 0x0F, 0x7F, 0xF4, 0x39, 0xAD, 0xB9, 0xF1, 0x02, 0x0F, + 0x7F, 0xF4, 0x35, 0xAD, 0x02, 0x49, 0x13, 0x48, 0x40, 0xF2, 0x22, 0x32, + 0xA5, 0xE5, 0x00, 0xBF, 0x70, 0x79, 0x15, 0x00, 0xD8, 0x93, 0x15, 0x00, + 0x64, 0xC6, 0x15, 0x00, 0x48, 0xC7, 0x15, 0x00, 0xAC, 0xC8, 0x15, 0x00, + 0x10, 0xC8, 0x15, 0x00, 0xFC, 0xC7, 0x15, 0x00, 0x24, 0xC8, 0x15, 0x00, + 0x28, 0xC6, 0x15, 0x00, 0x64, 0xC8, 0x15, 0x00, 0x80, 0xC7, 0x15, 0x00, + 0x74, 0xC7, 0x15, 0x00, 0xD4, 0xC7, 0x15, 0x00, 0x98, 0xC7, 0x15, 0x00, + 0xE4, 0xC7, 0x15, 0x00, 0xA0, 0xC9, 0x15, 0x00, 0x34, 0xC9, 0x15, 0x00, + 0x68, 0xC9, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0x04, 0x46, 0x04, 0xF0, + 0x89, 0xFD, 0x94, 0xF8, 0xA5, 0x10, 0x94, 0xF8, 0xAF, 0x20, 0xCB, 0x02, + 0x9B, 0xB2, 0x92, 0xB3, 0x55, 0x1E, 0xED, 0xB2, 0x05, 0x29, 0x2B, 0xD8, + 0xDF, 0xE8, 0x01, 0xF0, 0x6D, 0x6D, 0x2F, 0x2F, 0x94, 0x03, 0x94, 0xF8, + 0xAD, 0x10, 0x03, 0x29, 0x00, 0xF2, 0xD1, 0x80, 0x06, 0x05, 0x40, 0xF1, + 0xCE, 0x80, 0x94, 0xF8, 0xAE, 0x60, 0xB4, 0xF8, 0xAA, 0x20, 0x73, 0x1A, + 0x01, 0x33, 0x00, 0xF0, 0x7F, 0x07, 0x97, 0xFB, 0xF3, 0xF5, 0x03, 0xFB, + 0x15, 0x73, 0x19, 0x44, 0xC9, 0xB2, 0x22, 0xFA, 0x01, 0xF3, 0x13, 0xF0, + 0x01, 0x0F, 0x08, 0xBF, 0x31, 0x46, 0x00, 0x29, 0x00, 0xF0, 0x3F, 0x81, + 0x94, 0xF8, 0xB2, 0x20, 0x00, 0xF4, 0x80, 0x63, 0x43, 0xEA, 0x82, 0x23, + 0x0B, 0x43, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x15, 0x46, + 0xCC, 0xE7, 0x94, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x01, 0xD8, 0x06, 0x05, + 0xD5, 0xD4, 0x94, 0xF8, 0xB0, 0x70, 0x94, 0xF8, 0xAC, 0x60, 0x94, 0xF8, + 0xB1, 0xC0, 0x01, 0x37, 0xC0, 0xF3, 0xC1, 0x01, 0xB1, 0xFB, 0xF7, 0xFE, + 0x07, 0xFB, 0x1E, 0x11, 0x0C, 0x44, 0x06, 0xF1, 0x01, 0x0E, 0x00, 0xF0, + 0x07, 0x08, 0x94, 0xF8, 0xA6, 0x70, 0xB8, 0xFB, 0xFE, 0xF4, 0x0E, 0xFB, + 0x14, 0x84, 0xE7, 0x40, 0xFF, 0x07, 0x48, 0xBF, 0xE6, 0xB2, 0x52, 0x1B, + 0x0C, 0xF1, 0x01, 0x04, 0xC0, 0xF3, 0x40, 0x2C, 0x01, 0x32, 0xC0, 0xF3, + 0xC1, 0x10, 0xBC, 0xFB, 0xF4, 0xF7, 0xC9, 0x00, 0x04, 0xFB, 0x17, 0xC4, + 0x41, 0xEA, 0x44, 0x21, 0x90, 0xFB, 0xF2, 0xF4, 0x02, 0xFB, 0x14, 0x00, + 0x05, 0x44, 0x0B, 0x43, 0x43, 0xEA, 0xC5, 0x13, 0x9B, 0xB2, 0x33, 0x43, + 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x94, 0xF8, 0xAE, 0x70, 0x94, 0xF8, + 0xAD, 0x20, 0xB4, 0xF8, 0xAA, 0x50, 0xB9, 0x1A, 0x01, 0x31, 0x00, 0xF0, + 0x7F, 0x0C, 0x9C, 0xFB, 0xF1, 0xF6, 0x01, 0xFB, 0x16, 0xC1, 0x0A, 0x44, + 0xD2, 0xB2, 0x25, 0xFA, 0x02, 0xF1, 0x11, 0xF0, 0x01, 0x0F, 0x08, 0xBF, + 0x3A, 0x46, 0x13, 0x43, 0x00, 0x2A, 0x00, 0xF0, 0xA2, 0x80, 0x01, 0x3A, + 0xD2, 0xB2, 0x02, 0x2A, 0x9E, 0xD8, 0x94, 0xF8, 0xB2, 0x20, 0x00, 0xF4, + 0x80, 0x60, 0x40, 0xEA, 0x82, 0x20, 0x03, 0x43, 0x9B, 0xB2, 0x95, 0xE7, + 0x94, 0xF8, 0xAD, 0x10, 0x03, 0x29, 0x40, 0xF2, 0x8C, 0x80, 0x94, 0xF8, + 0xB0, 0x10, 0xB4, 0xF8, 0xA6, 0x70, 0x94, 0xF8, 0xAC, 0xC0, 0x94, 0xF8, + 0xB1, 0x40, 0x4E, 0x1C, 0xC0, 0xF3, 0x02, 0x11, 0xB1, 0xFB, 0xF6, 0xFE, + 0x06, 0xFB, 0x1E, 0x11, 0x4E, 0x00, 0x37, 0x41, 0x07, 0xF0, 0x03, 0x07, + 0x0C, 0xF1, 0x01, 0x06, 0x00, 0xF0, 0x0F, 0x0C, 0x07, 0x37, 0xBC, 0xFB, + 0xF6, 0xFE, 0x06, 0xFB, 0x1E, 0xCC, 0xBC, 0x45, 0xCE, 0xB2, 0xA2, 0xEB, + 0x05, 0x02, 0x40, 0xF3, 0x81, 0x80, 0x02, 0xF1, 0x01, 0x0C, 0xC0, 0xF3, + 0xC1, 0x1E, 0x9E, 0xFB, 0xFC, 0xF2, 0x0C, 0xFB, 0x12, 0xE2, 0x15, 0x44, + 0xFF, 0xB2, 0xED, 0xB2, 0x09, 0x2F, 0x40, 0xF0, 0xAE, 0x80, 0x00, 0x2D, + 0x40, 0xF0, 0x98, 0x80, 0x02, 0x29, 0x00, 0xF0, 0xC0, 0x80, 0x05, 0x2E, + 0x14, 0xBF, 0x4F, 0xF0, 0x08, 0x0C, 0x4F, 0xF0, 0x09, 0x0C, 0x09, 0x01, + 0x09, 0xB2, 0x00, 0x25, 0x76, 0xE0, 0x94, 0xF8, 0xB0, 0x70, 0xB4, 0xF8, + 0xA6, 0x60, 0x94, 0xF8, 0xAC, 0xC0, 0x79, 0x1C, 0xC0, 0xF3, 0x02, 0x17, + 0xB7, 0xFB, 0xF1, 0xFE, 0x01, 0xFB, 0x1E, 0x77, 0x79, 0x00, 0x0E, 0x41, + 0x06, 0xF0, 0x03, 0x06, 0x0C, 0xF1, 0x01, 0x0C, 0x00, 0xF0, 0x0F, 0x01, + 0x76, 0x00, 0x07, 0x36, 0xB1, 0xFB, 0xFC, 0xFE, 0x0C, 0xFB, 0x1E, 0x11, + 0xB1, 0x42, 0xC0, 0xF3, 0x41, 0x2C, 0xA2, 0xEB, 0x05, 0x02, 0xC8, 0xBF, + 0xF1, 0xB2, 0x02, 0xF1, 0x01, 0x02, 0xC0, 0xF3, 0xC1, 0x1E, 0xD8, 0xBF, + 0xC9, 0xB2, 0xBC, 0xF1, 0x03, 0x0F, 0x18, 0xBF, 0x4F, 0xEA, 0x4C, 0x26, + 0x9E, 0xFB, 0xF2, 0xFC, 0x02, 0xFB, 0x1C, 0xEC, 0x94, 0xF8, 0xBC, 0x20, + 0x65, 0x44, 0x08, 0xBF, 0x4F, 0xF4, 0x80, 0x66, 0xED, 0xB2, 0xEA, 0xB1, + 0x02, 0x29, 0x1A, 0xD0, 0x94, 0xF8, 0xBD, 0x20, 0x8A, 0x42, 0x16, 0xD3, + 0x94, 0xF8, 0xBE, 0xC0, 0xFA, 0xB2, 0x94, 0x45, 0x11, 0xD3, 0x94, 0xF8, + 0xBF, 0x20, 0xAA, 0x42, 0x0D, 0xD3, 0x00, 0xF4, 0x80, 0x42, 0x12, 0xB2, + 0x0A, 0xE0, 0x07, 0x05, 0x7F, 0xF5, 0x71, 0xAF, 0xE1, 0xE6, 0x43, 0xF4, + 0x80, 0x63, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x22, + 0x43, 0xEA, 0x07, 0x13, 0x43, 0xEA, 0xC5, 0x15, 0x29, 0x43, 0x31, 0x43, + 0x42, 0xEA, 0x01, 0x03, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, 0xF0, 0x81, + 0x57, 0x1C, 0xC0, 0xF3, 0xC1, 0x1E, 0x9E, 0xFB, 0xF7, 0xF2, 0x07, 0xFB, + 0x12, 0xE2, 0x15, 0x44, 0xBC, 0xF1, 0x06, 0x0F, 0xED, 0xB2, 0x5F, 0xFA, + 0x8C, 0xF7, 0x7F, 0xF4, 0x7B, 0xAF, 0x02, 0x2D, 0x20, 0xD0, 0x09, 0x01, + 0x09, 0xB2, 0xED, 0x01, 0x01, 0x34, 0xC0, 0xF3, 0x40, 0x20, 0xB0, 0xFB, + 0xF4, 0xF2, 0x04, 0xFB, 0x12, 0x00, 0x43, 0xEA, 0x40, 0x23, 0x2B, 0x43, + 0x0B, 0x43, 0x4C, 0xEA, 0x03, 0x03, 0x9B, 0xB2, 0x18, 0x46, 0xBD, 0xE8, + 0xF0, 0x81, 0x4F, 0xF4, 0x80, 0x63, 0xC5, 0xE6, 0x02, 0x2D, 0x16, 0xD1, + 0x05, 0x29, 0x2D, 0xD0, 0x09, 0x01, 0x09, 0xB2, 0xBC, 0x46, 0x4F, 0xF4, + 0x80, 0x75, 0xE1, 0xE7, 0x03, 0x29, 0x16, 0xD0, 0x06, 0x29, 0x14, 0xD0, + 0x09, 0x01, 0x09, 0xB2, 0x4F, 0xF4, 0x80, 0x75, 0xD8, 0xE7, 0x09, 0x01, + 0x09, 0xB2, 0xED, 0x01, 0x0F, 0xFA, 0x87, 0xFC, 0xD2, 0xE7, 0x03, 0x2D, + 0x1B, 0xD1, 0x02, 0x29, 0x0F, 0xD0, 0x09, 0x01, 0x09, 0xB2, 0xBC, 0x46, + 0x4F, 0xF4, 0xC0, 0x75, 0xC8, 0xE7, 0x71, 0x1E, 0xC9, 0xB2, 0x09, 0x01, + 0x4F, 0xF0, 0x06, 0x0C, 0x4F, 0xF4, 0x80, 0x75, 0xC0, 0xE7, 0xBC, 0x46, + 0x43, 0xE7, 0xBC, 0x46, 0x10, 0x21, 0x4F, 0xF4, 0xC0, 0x75, 0xB9, 0xE7, + 0xBC, 0x46, 0x40, 0x21, 0x4F, 0xF4, 0x80, 0x75, 0xB4, 0xE7, 0x09, 0x01, + 0x09, 0xB2, 0xED, 0x01, 0xBC, 0x46, 0xAF, 0xE7, 0xB0, 0xF8, 0xB4, 0x30, + 0x00, 0x2B, 0x4A, 0xD0, 0x2D, 0xE9, 0xF0, 0x4F, 0x03, 0xF1, 0xFF, 0x3B, + 0x1F, 0xFA, 0x8B, 0xFB, 0xBB, 0xF1, 0x01, 0x0F, 0x85, 0xB0, 0x8A, 0x46, + 0x00, 0xF1, 0x10, 0x09, 0x3A, 0xD9, 0x01, 0x25, 0x2F, 0x46, 0x0A, 0xF1, + 0x04, 0x04, 0x4E, 0x46, 0x00, 0x21, 0x0D, 0xE0, 0x13, 0x43, 0x04, 0xD1, + 0x73, 0x7A, 0x13, 0xB9, 0x73, 0x7D, 0x01, 0x2B, 0x0B, 0xD0, 0x01, 0x35, + 0xAF, 0xB2, 0x06, 0xF1, 0x0C, 0x08, 0x5F, 0x45, 0x46, 0x46, 0x20, 0xD2, + 0x22, 0x68, 0x54, 0xF8, 0x04, 0x3F, 0x9A, 0x42, 0xEC, 0xD9, 0x0C, 0x22, + 0x06, 0xEB, 0x02, 0x08, 0x31, 0x46, 0x01, 0xA8, 0x04, 0xF0, 0x3E, 0xFB, + 0x30, 0x46, 0x41, 0x46, 0x0C, 0x22, 0x04, 0xF0, 0x39, 0xFB, 0x0C, 0x22, + 0x01, 0xA9, 0x40, 0x46, 0x04, 0xF0, 0x34, 0xFB, 0x01, 0x35, 0x54, 0xE9, + 0x01, 0x32, 0x39, 0x46, 0xAF, 0xB2, 0x5F, 0x45, 0x44, 0xF8, 0x04, 0x2C, + 0x23, 0x60, 0x46, 0x46, 0xDE, 0xD3, 0x19, 0xB1, 0x8B, 0x46, 0xBB, 0xF1, + 0x01, 0x0F, 0xC4, 0xD8, 0x05, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x70, 0x47, + 0x2D, 0xE9, 0xF0, 0x4F, 0xB0, 0xF8, 0xB4, 0x50, 0x83, 0xB0, 0x06, 0x46, + 0x89, 0x46, 0x00, 0x2D, 0x00, 0xF0, 0xE2, 0x80, 0x6F, 0x1E, 0x1F, 0xFA, + 0x87, 0xF8, 0x08, 0xEB, 0x48, 0x08, 0x00, 0xF1, 0x0C, 0x03, 0x03, 0xEB, + 0x88, 0x08, 0x04, 0x46, 0x4F, 0xF0, 0x00, 0x0A, 0x41, 0xF6, 0x98, 0x1B, + 0x60, 0x89, 0xFE, 0xF7, 0xAD, 0xFE, 0x30, 0xB9, 0x63, 0x7B, 0x23, 0xB1, + 0x23, 0x89, 0x5B, 0x45, 0x07, 0xD8, 0x4F, 0xF0, 0x01, 0x0A, 0x0C, 0x34, + 0x44, 0x45, 0xF1, 0xD1, 0x4F, 0xEA, 0xCA, 0x00, 0x40, 0xB2, 0x96, 0xF8, + 0xA2, 0x40, 0x24, 0xF0, 0x08, 0x04, 0x04, 0x43, 0xE4, 0xB2, 0x86, 0xF8, + 0xA2, 0x40, 0x14, 0xF0, 0x02, 0x04, 0x09, 0xD1, 0x05, 0xF1, 0x80, 0x43, + 0x01, 0x3B, 0xD9, 0xF8, 0x00, 0x20, 0x59, 0xF8, 0x23, 0x30, 0x9A, 0x42, + 0x00, 0xF2, 0x9C, 0x80, 0x1F, 0xFA, 0x87, 0xFB, 0xCD, 0xF8, 0x00, 0xB0, + 0x4F, 0xF0, 0x02, 0x08, 0x00, 0x9C, 0xA6, 0xF8, 0x88, 0xB0, 0x04, 0xEB, + 0x44, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x58, 0x89, 0xFE, 0xF7, 0x7A, 0xFE, + 0x63, 0x00, 0x01, 0x93, 0xE0, 0xB9, 0x00, 0x2F, 0x13, 0xDD, 0x82, 0x46, + 0x84, 0x46, 0x0C, 0xEB, 0x4C, 0x0C, 0x06, 0xEB, 0x8C, 0x04, 0x60, 0x89, + 0xFE, 0xF7, 0x6C, 0xFE, 0x0A, 0xF1, 0x01, 0x03, 0x1F, 0xFA, 0x83, 0xFA, + 0xD4, 0x46, 0x10, 0xB1, 0x4F, 0xF0, 0x00, 0x03, 0xA3, 0x73, 0xBA, 0x45, + 0xED, 0xDB, 0xDD, 0xE9, 0x00, 0x23, 0x13, 0x44, 0x06, 0xEB, 0x83, 0x04, + 0x01, 0x23, 0xA3, 0x73, 0xA8, 0x45, 0xA6, 0xF8, 0x8A, 0xB0, 0x76, 0xD2, + 0xA5, 0xEB, 0x08, 0x03, 0x03, 0xEB, 0x43, 0x03, 0x06, 0xEB, 0x83, 0x03, + 0x03, 0xE0, 0x1F, 0xFA, 0x80, 0xF8, 0xA8, 0x45, 0x6B, 0xD0, 0x99, 0x7B, + 0x08, 0xF1, 0x01, 0x00, 0x0C, 0x3B, 0x00, 0x29, 0xF5, 0xD0, 0xA5, 0xEB, + 0x08, 0x00, 0x08, 0xF1, 0x01, 0x08, 0x1F, 0xFA, 0x88, 0xF8, 0x80, 0xB2, + 0x45, 0x45, 0xA6, 0xF8, 0x8A, 0x00, 0x58, 0xD9, 0xA5, 0xEB, 0x08, 0x05, + 0xA7, 0xEB, 0x08, 0x08, 0x4F, 0xEA, 0x18, 0x48, 0x05, 0xEB, 0x45, 0x03, + 0x4F, 0xEA, 0x08, 0x48, 0x06, 0xEB, 0x83, 0x03, 0x02, 0xE0, 0x01, 0x3D, + 0x45, 0x45, 0x48, 0xD0, 0x99, 0x7B, 0x0C, 0x3B, 0x00, 0x29, 0xF8, 0xD0, + 0x05, 0xEB, 0x45, 0x03, 0x06, 0xEB, 0x83, 0x03, 0x59, 0xF8, 0x25, 0x20, + 0xB3, 0xF8, 0x08, 0xE0, 0x30, 0xB3, 0x31, 0x46, 0x00, 0x23, 0x4F, 0xF2, + 0x32, 0x38, 0x0C, 0xE0, 0x59, 0xF8, 0x23, 0x70, 0x97, 0x42, 0x02, 0xD3, + 0xA6, 0x46, 0x3A, 0x46, 0x1D, 0x46, 0x01, 0x33, 0x9C, 0xB2, 0xA0, 0x42, + 0x01, 0xF1, 0x0C, 0x01, 0x14, 0xD9, 0x8C, 0x7B, 0x9F, 0xB2, 0x00, 0x2C, + 0xF5, 0xD0, 0x5F, 0x45, 0xF3, 0xD0, 0x0C, 0x89, 0x44, 0x45, 0xE9, 0xD8, + 0x74, 0x45, 0xEE, 0xD3, 0x59, 0xF8, 0x23, 0x20, 0x1D, 0x46, 0x01, 0x33, + 0xA6, 0x46, 0x9C, 0xB2, 0xA0, 0x42, 0x01, 0xF1, 0x0C, 0x01, 0xEA, 0xD8, + 0x00, 0x23, 0xA6, 0xF8, 0x8C, 0x50, 0xA6, 0xF8, 0x8E, 0x30, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x07, 0xEB, 0x47, 0x03, 0x06, 0xEB, 0x83, 0x03, + 0x5B, 0x7B, 0x00, 0x2B, 0x3F, 0xF4, 0x5C, 0xAF, 0x00, 0x94, 0xA3, 0x46, + 0x4F, 0xF0, 0x01, 0x08, 0x5C, 0xE7, 0x05, 0x46, 0xB8, 0xE7, 0x5D, 0x46, + 0x58, 0x46, 0xB5, 0xE7, 0x28, 0x46, 0x4F, 0xF0, 0xFF, 0x37, 0x38, 0xE7, + 0xC1, 0xF3, 0xC2, 0x23, 0x05, 0x2B, 0x5B, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, + 0x03, 0x03, 0x27, 0x27, 0x0B, 0x32, 0xB0, 0xF8, 0xAA, 0x00, 0x01, 0xF0, + 0x7F, 0x01, 0xC8, 0x40, 0x00, 0xF0, 0x01, 0x00, 0x70, 0x47, 0xC1, 0xF3, + 0x02, 0x12, 0xB0, 0xF8, 0xA6, 0x00, 0x53, 0x00, 0x18, 0x41, 0x00, 0xF0, + 0x03, 0x00, 0x07, 0x30, 0x01, 0xF0, 0x0F, 0x03, 0x83, 0x42, 0xCC, 0xBF, + 0x00, 0x20, 0x01, 0x20, 0x06, 0x2B, 0xC1, 0xF3, 0xC1, 0x11, 0x24, 0xD0, + 0x09, 0x2B, 0x24, 0xD1, 0x21, 0xBB, 0x02, 0x2A, 0x21, 0xD0, 0x05, 0x2A, + 0x18, 0xBF, 0x00, 0x20, 0x70, 0x47, 0xC1, 0xF3, 0xC1, 0x03, 0x18, 0x44, + 0x01, 0xF0, 0x07, 0x01, 0x90, 0xF8, 0xA6, 0x00, 0xC8, 0x40, 0x00, 0xF0, + 0x01, 0x00, 0x70, 0x47, 0xB0, 0xF8, 0xA6, 0x00, 0xC1, 0xF3, 0x02, 0x13, + 0x5B, 0x00, 0x18, 0x41, 0x00, 0xF0, 0x03, 0x00, 0x40, 0x00, 0x07, 0x30, + 0x01, 0xF0, 0x0F, 0x01, 0x81, 0x42, 0xCC, 0xBF, 0x00, 0x20, 0x01, 0x20, + 0x70, 0x47, 0x02, 0x29, 0x06, 0xD0, 0x70, 0x47, 0x02, 0x29, 0x09, 0xD1, + 0x05, 0x2A, 0x08, 0xBF, 0x00, 0x20, 0x70, 0x47, 0x03, 0x2A, 0x09, 0xD0, + 0x06, 0x2A, 0x08, 0xBF, 0x00, 0x20, 0x70, 0x47, 0x03, 0x29, 0xF0, 0xD1, + 0x02, 0x2A, 0x08, 0xBF, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0xEA, 0xE7, + 0x01, 0x20, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x4F, 0x82, 0x46, 0xB0, 0xF8, + 0x88, 0x70, 0xB0, 0xF8, 0x8A, 0x00, 0x9A, 0xF8, 0xAD, 0x30, 0x9A, 0xF8, + 0xAE, 0x60, 0x00, 0xEB, 0x40, 0x00, 0x07, 0xEB, 0x47, 0x07, 0x83, 0xB0, + 0x0A, 0xEB, 0x80, 0x0C, 0x0A, 0xEB, 0x87, 0x07, 0x14, 0x46, 0x0D, 0x46, + 0x08, 0x46, 0x52, 0x00, 0x4F, 0xF0, 0xFF, 0x31, 0x7F, 0x89, 0xBC, 0xF8, + 0x0A, 0x80, 0x00, 0x93, 0xCD, 0xF7, 0x86, 0xF9, 0x00, 0x2C, 0x7E, 0xD0, + 0x00, 0x9B, 0xA6, 0xEB, 0x03, 0x09, 0x01, 0x3C, 0x09, 0xF1, 0x01, 0x03, + 0xE4, 0xB2, 0x01, 0x93, 0x4F, 0xF0, 0x00, 0x0B, 0x5F, 0xFA, 0x8B, 0xF3, + 0x05, 0x2B, 0x5E, 0xD8, 0xDF, 0xE8, 0x03, 0xF0, 0x59, 0x41, 0x32, 0x23, + 0x13, 0x03, 0x41, 0x46, 0x50, 0x46, 0xFE, 0xF7, 0xF9, 0xFF, 0x80, 0x45, + 0x81, 0x46, 0x52, 0xD0, 0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x5E, 0xFF, + 0x00, 0x28, 0x4C, 0xD0, 0xA5, 0xF8, 0x0A, 0x90, 0x49, 0xE0, 0x41, 0x46, + 0x50, 0x46, 0xFF, 0xF7, 0x77, 0xF8, 0x80, 0x45, 0x81, 0x46, 0x42, 0xD0, + 0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x4E, 0xFF, 0x00, 0x28, 0x3C, 0xD0, + 0xA5, 0xF8, 0x08, 0x90, 0x39, 0xE0, 0x39, 0x46, 0x50, 0x46, 0xFE, 0xF7, + 0xD9, 0xFF, 0xB8, 0x42, 0x81, 0x46, 0x32, 0xD0, 0x01, 0x46, 0x50, 0x46, + 0xFF, 0xF7, 0x3E, 0xFF, 0x68, 0xB3, 0xA5, 0xF8, 0x06, 0x90, 0x2A, 0xE0, + 0x39, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x58, 0xF8, 0xB8, 0x42, 0x81, 0x46, + 0x23, 0xD0, 0x01, 0x46, 0x50, 0x46, 0xFF, 0xF7, 0x2F, 0xFF, 0xF0, 0xB1, + 0xA5, 0xF8, 0x04, 0x90, 0x1B, 0xE0, 0x00, 0x9B, 0x03, 0x2B, 0x03, 0xD8, + 0x9A, 0xF8, 0xA2, 0x30, 0x19, 0x07, 0x3B, 0xD4, 0xC7, 0xF3, 0xC2, 0x23, + 0x05, 0x2B, 0x4F, 0xEA, 0xD7, 0x22, 0x23, 0xD0, 0x12, 0xF0, 0x06, 0x0F, + 0x0B, 0xD0, 0x9A, 0xF8, 0xB1, 0x30, 0x01, 0x2B, 0x07, 0xD1, 0x87, 0xF4, + 0x00, 0x73, 0x6B, 0x80, 0x03, 0xE0, 0x50, 0x46, 0xFF, 0xF7, 0x1E, 0xFC, + 0x28, 0x80, 0x03, 0x2E, 0x09, 0xD8, 0x35, 0xF8, 0x1B, 0x20, 0x4F, 0xF6, + 0xFF, 0x73, 0x9A, 0x42, 0x04, 0xBF, 0x46, 0xF4, 0x80, 0x63, 0x25, 0xF8, + 0x1B, 0x30, 0x5C, 0x45, 0x0B, 0xF1, 0x01, 0x03, 0x01, 0xD0, 0x9B, 0x46, + 0x8A, 0xE7, 0x03, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x1A, 0x4A, 0xC7, 0xF3, + 0x41, 0x23, 0x01, 0x33, 0xA2, 0xFB, 0x03, 0x21, 0x21, 0xF0, 0x01, 0x02, + 0x02, 0xEB, 0x51, 0x02, 0x27, 0xF4, 0xC0, 0x67, 0x9B, 0x1A, 0x47, 0xEA, + 0x43, 0x23, 0x6B, 0x80, 0xBF, 0xB2, 0xD8, 0xE7, 0x04, 0xF0, 0x82, 0xF9, + 0x01, 0x99, 0x00, 0xF0, 0x7F, 0x02, 0x92, 0xFB, 0xF1, 0xF3, 0x01, 0xFB, + 0x13, 0x23, 0x00, 0x9A, 0x13, 0x44, 0xBA, 0xF8, 0xAA, 0x20, 0xDB, 0xB2, + 0xDA, 0x40, 0xD2, 0x07, 0x0F, 0xD5, 0x00, 0x2B, 0x08, 0xBF, 0x33, 0x46, + 0x5A, 0x1E, 0x02, 0x2A, 0x6B, 0x80, 0xCC, 0xD8, 0x9A, 0xF8, 0xB2, 0x10, + 0x00, 0xF4, 0x80, 0x62, 0x42, 0xEA, 0x81, 0x22, 0x13, 0x43, 0x6B, 0x80, + 0xC3, 0xE7, 0x33, 0x46, 0xF0, 0xE7, 0x00, 0xBF, 0xAB, 0xAA, 0xAA, 0xAA, + 0x2D, 0xE9, 0xF0, 0x47, 0x05, 0x46, 0x84, 0xB0, 0x01, 0xA9, 0x06, 0x22, + 0xFF, 0xF7, 0x1C, 0xFF, 0xB5, 0xF8, 0xB4, 0x10, 0x01, 0x29, 0x30, 0xD9, + 0x00, 0x26, 0x01, 0x24, 0xB0, 0x46, 0xA1, 0x46, 0x4F, 0xF6, 0xFF, 0x77, + 0x18, 0xE0, 0xB5, 0xF8, 0x88, 0x20, 0xA2, 0x42, 0x21, 0xD0, 0xB5, 0xF8, + 0x8A, 0x20, 0xA2, 0x42, 0x1D, 0xD0, 0xB5, 0xF8, 0x8C, 0x20, 0xA2, 0x42, + 0x19, 0xD0, 0x05, 0x2E, 0x17, 0xD8, 0x04, 0xAA, 0x02, 0xEB, 0x46, 0x02, + 0x32, 0xF8, 0x0C, 0xEC, 0xBE, 0x45, 0x17, 0xD1, 0xA1, 0x42, 0x06, 0xF1, + 0x01, 0x06, 0x10, 0xD9, 0x04, 0xEB, 0x44, 0x03, 0x05, 0xEB, 0x83, 0x03, + 0x4F, 0xEA, 0x44, 0x0C, 0xB3, 0xF9, 0x08, 0x20, 0x00, 0x2A, 0xDC, 0xDA, + 0x1A, 0x7B, 0x0A, 0x2A, 0xD9, 0xD8, 0x01, 0x34, 0xA4, 0xB2, 0xA1, 0x42, + 0xEE, 0xD8, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x87, 0x59, 0xB1, 0x2A, 0x46, + 0x00, 0x20, 0xB2, 0xF8, 0x0A, 0xA0, 0xF2, 0x45, 0x00, 0xF1, 0x01, 0x00, + 0x02, 0xF1, 0x0C, 0x02, 0xDC, 0xD0, 0x88, 0x42, 0xF5, 0xD1, 0x0C, 0xEB, + 0x04, 0x02, 0x05, 0xEB, 0x82, 0x02, 0xA3, 0xF8, 0x0A, 0xE0, 0xA3, 0xF8, + 0x08, 0x80, 0x21, 0x46, 0x82, 0xF8, 0x0D, 0x80, 0x28, 0x46, 0xA3, 0xF8, + 0x04, 0x80, 0xA3, 0xF8, 0x06, 0x80, 0x01, 0x34, 0x82, 0xF8, 0x0C, 0x80, + 0x82, 0xF8, 0x0E, 0x90, 0xFF, 0xF7, 0x12, 0xF8, 0xA4, 0xB2, 0xB5, 0xF8, + 0xB4, 0x10, 0xBF, 0xE7, 0x30, 0xB4, 0x90, 0xF8, 0xA5, 0x30, 0x05, 0x2B, + 0x00, 0xF2, 0x8C, 0x80, 0xDF, 0xE8, 0x03, 0xF0, 0x36, 0x36, 0x03, 0x03, + 0x70, 0x57, 0x90, 0xF8, 0xAF, 0x50, 0x90, 0xF8, 0xB1, 0x20, 0x90, 0xF8, + 0xB0, 0x30, 0x90, 0xF8, 0xA6, 0x40, 0x01, 0x35, 0x95, 0x40, 0x03, 0xFB, + 0x05, 0x55, 0xAD, 0xB2, 0x08, 0x21, 0x00, 0x23, 0x04, 0xF0, 0x01, 0x02, + 0x12, 0xFB, 0x05, 0xF2, 0x13, 0x44, 0x01, 0x39, 0x9B, 0xB2, 0x4F, 0xEA, + 0x54, 0x04, 0xF5, 0xD1, 0xB0, 0xF8, 0xAA, 0x20, 0x90, 0xF8, 0xB2, 0x10, + 0xC2, 0xF3, 0x80, 0x04, 0xC2, 0xF3, 0x40, 0x00, 0xC1, 0xF1, 0x01, 0x01, + 0x20, 0x44, 0x88, 0x40, 0x02, 0xF0, 0x01, 0x04, 0xC2, 0xF3, 0xC0, 0x02, + 0x20, 0x44, 0x8A, 0x40, 0x10, 0x44, 0x18, 0x44, 0x80, 0xB2, 0x0A, 0x28, + 0x28, 0xBF, 0x0A, 0x20, 0x30, 0xBC, 0x70, 0x47, 0xB0, 0xF8, 0xAA, 0x10, + 0x90, 0xF8, 0xB2, 0x30, 0xC1, 0xF3, 0x80, 0x02, 0xC1, 0xF3, 0x40, 0x00, + 0xC3, 0xF1, 0x01, 0x03, 0x10, 0x44, 0x98, 0x40, 0x01, 0xF0, 0x01, 0x04, + 0xC1, 0xF3, 0xC0, 0x02, 0x02, 0xFA, 0x03, 0xF3, 0x20, 0x44, 0x13, 0xFA, + 0x80, 0xF0, 0x80, 0xB2, 0x04, 0x23, 0x41, 0xFA, 0x03, 0xF2, 0x02, 0xF0, + 0x01, 0x02, 0x01, 0x33, 0x10, 0x44, 0x0C, 0x2B, 0x80, 0xB2, 0xF6, 0xD1, + 0xD9, 0xE7, 0x90, 0xF8, 0xB1, 0x30, 0xB0, 0xF8, 0xA6, 0x20, 0x90, 0xF8, + 0xAF, 0x40, 0x90, 0xF8, 0xB0, 0x10, 0x58, 0x1C, 0x02, 0xF0, 0x03, 0x03, + 0x04, 0xFB, 0x00, 0x00, 0x01, 0x2B, 0x01, 0xFB, 0x00, 0x00, 0x1F, 0xD0, + 0x02, 0x2B, 0x14, 0xBF, 0x08, 0x23, 0x0A, 0x23, 0x10, 0xFB, 0x03, 0xF0, + 0x80, 0xB2, 0xC0, 0xE7, 0xB0, 0xF8, 0xA6, 0x20, 0x90, 0xF8, 0xAF, 0x30, + 0x90, 0xF8, 0xB1, 0x40, 0x90, 0xF8, 0xB0, 0x10, 0x02, 0xF0, 0x03, 0x02, + 0x01, 0x33, 0x01, 0x3A, 0x03, 0xFA, 0x04, 0xF0, 0x01, 0x2A, 0x8C, 0xBF, + 0x08, 0x23, 0x09, 0x23, 0x01, 0xFB, 0x00, 0x00, 0x10, 0xFB, 0x03, 0xF0, + 0x80, 0xB2, 0xA8, 0xE7, 0x09, 0x23, 0xE1, 0xE7, 0x00, 0x20, 0xA7, 0xE7, + 0x2D, 0xE9, 0xF8, 0x4F, 0xB0, 0xF8, 0xB4, 0x40, 0x05, 0x46, 0x00, 0x2C, + 0x00, 0xF0, 0xF4, 0x80, 0x04, 0xF1, 0xFF, 0x38, 0x1F, 0xFA, 0x88, 0xF1, + 0x01, 0xEB, 0x41, 0x03, 0x00, 0xF1, 0x0C, 0x01, 0x01, 0xEB, 0x83, 0x01, + 0x4F, 0xF6, 0xFF, 0x76, 0x03, 0x46, 0x00, 0x22, 0x01, 0x20, 0x5E, 0x81, + 0x9A, 0x80, 0xDA, 0x80, 0x1A, 0x81, 0x1A, 0x73, 0x5A, 0x73, 0x98, 0x73, + 0x0C, 0x33, 0x99, 0x42, 0xF5, 0xD1, 0xC1, 0x46, 0x95, 0xF8, 0xA5, 0x30, + 0x05, 0x2B, 0x00, 0xF2, 0xD9, 0x80, 0xDF, 0xE8, 0x03, 0xF0, 0x4E, 0x4E, + 0x03, 0x03, 0x8A, 0x5E, 0x95, 0xF8, 0xAD, 0x20, 0xDB, 0x02, 0x00, 0x2A, + 0x00, 0xF0, 0xC7, 0x80, 0x99, 0xB2, 0x95, 0xF8, 0xB0, 0x20, 0x69, 0x81, + 0xA9, 0x18, 0x95, 0xF8, 0xB1, 0x60, 0x91, 0xF8, 0xA6, 0x70, 0x95, 0xF8, + 0xAF, 0x00, 0x43, 0xEA, 0x46, 0x23, 0xB7, 0xFA, 0x87, 0xF7, 0xC7, 0xF1, + 0x1F, 0x07, 0x43, 0xEA, 0xC0, 0x13, 0xFF, 0xB2, 0x43, 0xEA, 0xC2, 0x03, + 0x3B, 0x43, 0x9F, 0xB2, 0x09, 0xEB, 0x49, 0x09, 0x05, 0xEB, 0x89, 0x03, + 0x01, 0x26, 0x46, 0x45, 0x5F, 0x81, 0x80, 0xF2, 0x9B, 0x80, 0x28, 0x46, + 0xFF, 0xF7, 0x7E, 0xFA, 0xB5, 0xF8, 0xB4, 0x40, 0x00, 0x2C, 0x00, 0xF0, + 0x87, 0x80, 0x2B, 0x46, 0x00, 0x22, 0x02, 0xE0, 0xA2, 0x42, 0x00, 0xF0, + 0x81, 0x80, 0x59, 0x89, 0x81, 0x42, 0x02, 0xF1, 0x01, 0x02, 0x03, 0xF1, + 0x0C, 0x03, 0xF5, 0xD1, 0x01, 0x3C, 0xA6, 0x42, 0xE7, 0xDB, 0x00, 0x24, + 0xA1, 0xB2, 0x28, 0x46, 0xFE, 0xF7, 0x0A, 0xFF, 0xB5, 0xF8, 0xB4, 0x30, + 0x01, 0x34, 0x9C, 0x42, 0xF6, 0xD3, 0xBD, 0xE8, 0xF8, 0x8F, 0x95, 0xF8, + 0xAD, 0x20, 0x00, 0x2A, 0x7A, 0xD0, 0x92, 0xB2, 0x95, 0xF8, 0xB2, 0x10, + 0x95, 0xF8, 0xAE, 0x70, 0x6A, 0x81, 0xDB, 0x02, 0x43, 0xEA, 0x81, 0x23, + 0x3B, 0x43, 0x9F, 0xB2, 0xC2, 0xE7, 0x95, 0xF8, 0xAD, 0x30, 0x00, 0x2B, + 0x67, 0xD0, 0x95, 0xF8, 0xBC, 0x30, 0x00, 0x2B, 0x0C, 0xBF, 0x4F, 0xF4, + 0x28, 0x52, 0x4F, 0xF4, 0xD4, 0x42, 0x95, 0xF8, 0xB0, 0x30, 0xB5, 0xF8, + 0xA6, 0x60, 0x6A, 0x81, 0x5A, 0x00, 0x16, 0x41, 0x95, 0xF8, 0xAF, 0xA0, + 0x06, 0xF0, 0x03, 0x06, 0x1B, 0x01, 0x76, 0x00, 0x07, 0x36, 0x43, 0xEA, + 0xCA, 0x1A, 0x4A, 0xEA, 0x06, 0x07, 0x47, 0xF4, 0x20, 0x57, 0x39, 0x46, + 0x28, 0x46, 0xFF, 0xF7, 0x1B, 0xFD, 0x01, 0x3E, 0xF3, 0xB2, 0xB6, 0xB2, + 0x00, 0x28, 0x99, 0xD1, 0x06, 0x2B, 0xF0, 0xD1, 0x96, 0xE7, 0x95, 0xF8, + 0xB0, 0xA0, 0xB5, 0xF8, 0xA6, 0xB0, 0x95, 0xF8, 0xAF, 0x60, 0x95, 0xF8, + 0xB1, 0x30, 0x4F, 0xEA, 0x4A, 0x02, 0x4B, 0xFA, 0x02, 0xFB, 0xF6, 0x01, + 0x46, 0xEA, 0x43, 0x26, 0x0B, 0xF0, 0x03, 0x0B, 0x4F, 0xF4, 0x00, 0x53, + 0x4F, 0xEA, 0x0A, 0x1A, 0x0B, 0xF1, 0x07, 0x0B, 0x36, 0xB2, 0x6B, 0x81, + 0x4A, 0xEA, 0x0B, 0x07, 0x37, 0x43, 0x47, 0xF4, 0x00, 0x57, 0xBF, 0xB2, + 0x39, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0xF0, 0xFC, 0x0B, 0xF1, 0xFF, 0x3B, + 0x5F, 0xFA, 0x8B, 0xF3, 0x1F, 0xFA, 0x8B, 0xFB, 0x00, 0x28, 0x7F, 0xF4, + 0x6B, 0xAF, 0x06, 0x2B, 0xEA, 0xD1, 0x67, 0xE7, 0x06, 0xEB, 0x46, 0x03, + 0x01, 0x36, 0x05, 0xEB, 0x83, 0x03, 0xB6, 0xB2, 0x04, 0xF1, 0xFF, 0x38, + 0x46, 0x45, 0x58, 0x81, 0xFF, 0xF6, 0x65, 0xAF, 0x00, 0x2C, 0x7F, 0xF4, + 0x7A, 0xAF, 0xBD, 0xE8, 0xF8, 0x8F, 0x4F, 0xF4, 0x80, 0x62, 0x9C, 0xE7, + 0x4F, 0xF4, 0x80, 0x62, 0x82, 0xE7, 0x4F, 0xF4, 0x80, 0x61, 0x36, 0xE7, + 0x4F, 0xF0, 0xFF, 0x39, 0xC8, 0x46, 0x21, 0xE7, 0x00, 0x27, 0x6F, 0x81, + 0x46, 0xE7, 0x00, 0xBF, 0x90, 0xF8, 0xAD, 0x30, 0x0B, 0x2B, 0xF0, 0xB4, + 0x0C, 0xD9, 0x90, 0xF8, 0xA2, 0x20, 0x04, 0x23, 0x01, 0x24, 0x22, 0xF0, + 0x04, 0x02, 0x13, 0x43, 0x80, 0xF8, 0xA2, 0x30, 0x01, 0xB1, 0x0C, 0x70, + 0xF0, 0xBC, 0x70, 0x47, 0xB0, 0xF8, 0x88, 0x30, 0x03, 0xEB, 0x43, 0x03, + 0x00, 0xEB, 0x83, 0x03, 0x5B, 0x89, 0xDB, 0x12, 0x13, 0xF0, 0x06, 0x0F, + 0x04, 0xD1, 0x00, 0x23, 0x90, 0xF8, 0xA2, 0x20, 0x1C, 0x46, 0xE6, 0xE7, + 0xB0, 0xF8, 0x8A, 0x30, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, + 0x5B, 0x89, 0xDB, 0x12, 0x13, 0xF0, 0x06, 0x0F, 0xEF, 0xD0, 0xB0, 0xF8, + 0x8C, 0x30, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, 0x5B, 0x89, + 0xDB, 0x12, 0x13, 0xF0, 0x06, 0x0F, 0xE4, 0xD0, 0x90, 0xF8, 0xA2, 0x20, + 0x12, 0xF0, 0x20, 0x04, 0x20, 0xD1, 0x90, 0xF8, 0xA4, 0x30, 0x44, 0x33, + 0x30, 0xF8, 0x13, 0x30, 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x05, + 0x6B, 0x89, 0x13, 0xF4, 0x00, 0x5F, 0x4F, 0xEA, 0xD3, 0x27, 0xC3, 0xF3, + 0xC2, 0x26, 0x12, 0xD1, 0x17, 0xF0, 0x06, 0x0F, 0x1D, 0xD1, 0x03, 0xF0, + 0x7F, 0x03, 0x02, 0x2B, 0x15, 0xD9, 0x2D, 0x89, 0x40, 0xF2, 0x8E, 0x23, + 0x9D, 0x42, 0x86, 0xBF, 0x01, 0x24, 0x04, 0x23, 0x00, 0x23, 0xAA, 0xE7, + 0x04, 0x23, 0x01, 0x24, 0xA7, 0xE7, 0x07, 0x2E, 0x07, 0xD0, 0x03, 0xF0, + 0x0F, 0x06, 0xC3, 0xF3, 0x02, 0x13, 0x02, 0x2E, 0xEB, 0xD8, 0x00, 0x2B, + 0xE9, 0xD1, 0x2D, 0x89, 0x41, 0xF6, 0x98, 0x13, 0xE8, 0xE7, 0x03, 0xF0, + 0x07, 0x06, 0xC3, 0xF3, 0xC1, 0x03, 0xF2, 0xE7, 0xF8, 0xB5, 0x90, 0xF8, + 0xA2, 0x60, 0x16, 0xF0, 0x10, 0x05, 0x04, 0x46, 0x35, 0xD0, 0xB0, 0xF8, + 0xB4, 0x00, 0x00, 0x28, 0x5F, 0xD0, 0xB4, 0xF8, 0xBA, 0x70, 0x00, 0x23, + 0x02, 0xE0, 0x82, 0x42, 0xCB, 0xB2, 0x46, 0xD2, 0x03, 0xEB, 0x43, 0x02, + 0x04, 0xEB, 0x82, 0x02, 0x59, 0x1C, 0x55, 0x89, 0xBD, 0x42, 0xCA, 0xB2, + 0xF3, 0xD1, 0x9A, 0xB2, 0xA4, 0xF8, 0x88, 0x20, 0xA4, 0xF8, 0x8A, 0x20, + 0xA4, 0xF8, 0x8C, 0x20, 0x01, 0x38, 0x80, 0xB2, 0x04, 0xF1, 0x0C, 0x03, + 0x00, 0xEB, 0x40, 0x00, 0x03, 0xEB, 0x80, 0x00, 0x00, 0x22, 0x23, 0x46, + 0x9A, 0x80, 0xDA, 0x80, 0x0C, 0x33, 0x98, 0x42, 0xFA, 0xD1, 0x26, 0xF0, + 0x30, 0x06, 0x46, 0xF0, 0x20, 0x06, 0x00, 0x23, 0x84, 0xF8, 0xA2, 0x60, + 0x84, 0xF8, 0x9B, 0x30, 0x01, 0x25, 0x28, 0x46, 0xF8, 0xBD, 0x90, 0xF8, + 0x88, 0x00, 0x0C, 0x23, 0x03, 0xFB, 0x00, 0x40, 0x04, 0x30, 0xFE, 0xF7, + 0x73, 0xFC, 0xB4, 0xF8, 0xB4, 0x30, 0x00, 0x2B, 0xF1, 0xD0, 0x01, 0x3B, + 0x9A, 0xB2, 0x02, 0xEB, 0x42, 0x03, 0x04, 0xF1, 0x0C, 0x02, 0x02, 0xEB, + 0x83, 0x02, 0x2B, 0x46, 0xA3, 0x80, 0xE3, 0x80, 0x0C, 0x34, 0x94, 0x42, + 0xFA, 0xD1, 0x28, 0x46, 0xF8, 0xBD, 0xC1, 0xD1, 0x01, 0x38, 0xC3, 0xB2, + 0x03, 0xEB, 0x43, 0x03, 0x04, 0xEB, 0x83, 0x03, 0xC2, 0xB2, 0x00, 0x21, + 0x5F, 0x81, 0x19, 0x81, 0xA4, 0xF8, 0x88, 0x20, 0xA4, 0xF8, 0x8A, 0x20, + 0xA4, 0xF8, 0x8C, 0x20, 0xB7, 0xE7, 0xB4, 0xF8, 0xBA, 0x20, 0xA4, 0xF8, + 0xFE, 0x2B, 0x4F, 0xF0, 0xFF, 0x11, 0xFF, 0x22, 0xA4, 0xF8, 0xFC, 0x0B, + 0xC4, 0xF8, 0x88, 0x10, 0xA4, 0xF8, 0x8C, 0x20, 0xB7, 0xE7, 0x00, 0xBF, + 0xC2, 0x6C, 0x12, 0x69, 0xC2, 0xF3, 0x07, 0x21, 0xC2, 0xF3, 0x00, 0x42, + 0x0A, 0x44, 0x00, 0x23, 0x01, 0x31, 0xFE, 0xF7, 0xC9, 0xB9, 0x00, 0xBF, + 0x8A, 0x1A, 0x01, 0x23, 0xFE, 0xF7, 0xC4, 0xB9, 0xC3, 0x88, 0x99, 0x04, + 0x30, 0xB4, 0xC3, 0xF3, 0xC2, 0x22, 0x11, 0xD4, 0xD9, 0x0A, 0x11, 0xF0, + 0x06, 0x0F, 0x4A, 0xD1, 0x13, 0xF0, 0x7C, 0x0F, 0x03, 0xF0, 0x7F, 0x02, + 0x5D, 0xD1, 0xC3, 0xF3, 0x80, 0x23, 0x43, 0xEA, 0x42, 0x02, 0x3D, 0x4B, + 0x30, 0xBC, 0x53, 0xF8, 0x22, 0x00, 0x70, 0x47, 0x07, 0x2A, 0x37, 0xD0, + 0x51, 0x1F, 0x03, 0xF0, 0x0F, 0x04, 0x01, 0x29, 0x37, 0xD8, 0xDF, 0xE8, + 0x01, 0xF0, 0x01, 0x1B, 0xC3, 0xF3, 0x00, 0x21, 0x4A, 0x00, 0x11, 0x44, + 0x06, 0x22, 0x12, 0xFB, 0x04, 0x12, 0xC3, 0xF3, 0x41, 0x21, 0x0A, 0x44, + 0x31, 0x49, 0x51, 0xF8, 0x22, 0x00, 0xC3, 0xF3, 0xC0, 0x11, 0xC3, 0xF3, + 0x02, 0x12, 0xC3, 0xF3, 0x80, 0x33, 0xC8, 0x40, 0x01, 0x32, 0x30, 0xBC, + 0xB0, 0xFB, 0xF2, 0xF0, 0x98, 0x40, 0x70, 0x47, 0x00, 0x7A, 0x00, 0xF0, + 0x07, 0x00, 0x02, 0x28, 0x31, 0xD8, 0x28, 0x49, 0xC3, 0xF3, 0x41, 0x25, + 0x03, 0x22, 0x51, 0xF8, 0x20, 0x10, 0x12, 0xFB, 0x04, 0x52, 0xC3, 0xF3, + 0x02, 0x10, 0x01, 0x30, 0x51, 0xF8, 0x22, 0x30, 0xB3, 0xFB, 0xF0, 0xF0, + 0x30, 0xBC, 0x70, 0x47, 0x00, 0x20, 0x30, 0xBC, 0x70, 0x47, 0x03, 0xF0, + 0x07, 0x04, 0xC3, 0xF3, 0x40, 0x20, 0xC3, 0xF3, 0xC1, 0x11, 0x40, 0xEA, + 0x41, 0x01, 0x41, 0xEA, 0xC4, 0x04, 0x04, 0x2A, 0x19, 0x49, 0x14, 0xBF, + 0xC3, 0xF3, 0xC1, 0x03, 0xC3, 0xF3, 0x02, 0x13, 0x51, 0xF8, 0x24, 0x00, + 0x01, 0x33, 0x30, 0xBC, 0xB0, 0xFB, 0xF3, 0xF0, 0x70, 0x47, 0x14, 0x4B, + 0x04, 0x3A, 0x30, 0xBC, 0x53, 0xF8, 0x22, 0x00, 0x70, 0x47, 0xC2, 0x1E, + 0xC2, 0xF3, 0x46, 0x01, 0x02, 0xF0, 0xFE, 0x00, 0x08, 0x44, 0x06, 0x21, + 0x11, 0xFB, 0x04, 0x04, 0xC3, 0xF3, 0x41, 0x21, 0x0C, 0x44, 0x08, 0x49, + 0x51, 0xF8, 0x24, 0x00, 0xC3, 0xF3, 0x02, 0x13, 0x02, 0xF0, 0x01, 0x02, + 0x59, 0x1C, 0x30, 0xBC, 0x20, 0xFA, 0x02, 0xF3, 0xB3, 0xFB, 0xF1, 0xF0, + 0x70, 0x47, 0x00, 0xBF, 0x54, 0xCC, 0x15, 0x00, 0x74, 0xCC, 0x15, 0x00, + 0xA4, 0xD0, 0x15, 0x00, 0x44, 0xCF, 0x15, 0x00, 0x84, 0xD0, 0x15, 0x00, + 0x2D, 0xE9, 0xF8, 0x4F, 0xB0, 0xF8, 0x96, 0x30, 0x90, 0xF8, 0xA2, 0x80, + 0x90, 0xF8, 0xA5, 0x60, 0x03, 0xEB, 0x83, 0x03, 0x5B, 0x00, 0xA0, 0xF8, + 0x98, 0x30, 0x07, 0x46, 0x03, 0xF0, 0xB8, 0xFD, 0xB7, 0xF8, 0xB4, 0x10, + 0x80, 0xB2, 0xB0, 0xFB, 0xF1, 0xF3, 0x01, 0xFB, 0x13, 0x00, 0x00, 0x29, + 0x77, 0xD0, 0xB7, 0xF8, 0x88, 0xC0, 0x83, 0xB2, 0x08, 0xF0, 0x02, 0x08, + 0x00, 0x20, 0x4F, 0xF2, 0x33, 0x3E, 0x03, 0x44, 0xB3, 0xFB, 0xF1, 0xF5, + 0x01, 0xFB, 0x15, 0x35, 0x05, 0xEB, 0x45, 0x02, 0x92, 0x00, 0xAB, 0xB2, + 0x07, 0xEB, 0x02, 0x0A, 0x9C, 0x45, 0x02, 0xF1, 0x04, 0x02, 0x00, 0xF1, + 0x01, 0x00, 0x07, 0xEB, 0x02, 0x04, 0x4F, 0xEA, 0x45, 0x09, 0x58, 0xD0, + 0xBA, 0xF8, 0x08, 0x20, 0x72, 0x45, 0x54, 0xD8, 0xB8, 0xF1, 0x00, 0x0F, + 0x05, 0xD0, 0xBA, 0xF8, 0x0A, 0x20, 0xD2, 0x12, 0x12, 0xF0, 0x06, 0x0F, + 0x4B, 0xD0, 0x01, 0x2E, 0x42, 0xD9, 0x0C, 0xEB, 0x4C, 0x0C, 0x07, 0xEB, + 0x8C, 0x0C, 0xBC, 0xF8, 0x0A, 0x30, 0x98, 0x04, 0x4F, 0xEA, 0xD3, 0x26, + 0xC3, 0xF3, 0xC2, 0x22, 0x47, 0xD4, 0x16, 0xF0, 0x06, 0x06, 0x01, 0xD0, + 0xC3, 0xF3, 0xC1, 0x06, 0xE3, 0x88, 0x99, 0x04, 0x4F, 0xEA, 0xD3, 0x28, + 0xC3, 0xF3, 0xC2, 0x22, 0x36, 0xD4, 0x18, 0xF0, 0x06, 0x08, 0x01, 0xD0, + 0xC3, 0xF3, 0xC1, 0x08, 0xB7, 0xF8, 0x8A, 0x00, 0x00, 0xEB, 0x40, 0x00, + 0x07, 0xEB, 0x80, 0x00, 0xA9, 0x44, 0x04, 0x30, 0x07, 0xEB, 0x89, 0x09, + 0xFF, 0xF7, 0xFA, 0xFE, 0x99, 0xF8, 0x0D, 0x30, 0x82, 0x46, 0x5B, 0xBB, + 0xB7, 0xF8, 0x96, 0xB0, 0x20, 0x46, 0xFF, 0xF7, 0xF1, 0xFE, 0x50, 0x45, + 0x81, 0x46, 0x0D, 0xD3, 0x01, 0x3E, 0x46, 0x45, 0x23, 0xD2, 0x23, 0x7A, + 0x5B, 0x45, 0x10, 0xD3, 0x97, 0xF8, 0x9A, 0x30, 0x01, 0x33, 0xDB, 0xB2, + 0x02, 0x2B, 0x87, 0xF8, 0x9A, 0x30, 0x29, 0xD8, 0x01, 0x20, 0x87, 0xF8, + 0xA0, 0x50, 0x87, 0xF8, 0x9B, 0x00, 0xBD, 0xE8, 0xF8, 0x8F, 0x88, 0x42, + 0x8F, 0xD1, 0x00, 0x20, 0xBD, 0xE8, 0xF8, 0x8F, 0x07, 0x2A, 0x18, 0xD0, + 0xC3, 0xF3, 0x02, 0x18, 0xC8, 0xE7, 0x07, 0x2A, 0x11, 0xD0, 0xC3, 0xF3, + 0x02, 0x16, 0xB7, 0xE7, 0x4F, 0xF0, 0x20, 0x0B, 0xD2, 0xE7, 0xB7, 0xF8, + 0x8C, 0x00, 0x00, 0xEB, 0x40, 0x00, 0x07, 0xEB, 0x80, 0x00, 0x04, 0x30, + 0xFF, 0xF7, 0xBE, 0xFE, 0x81, 0x45, 0xDB, 0xD3, 0xCF, 0xE7, 0x00, 0x26, + 0xA6, 0xE7, 0x4F, 0xF0, 0x00, 0x08, 0xAF, 0xE7, 0x0F, 0x2B, 0x84, 0xBF, + 0x0F, 0x23, 0x87, 0xF8, 0x9A, 0x30, 0xD8, 0xE7, 0x90, 0xF8, 0xA2, 0x30, + 0x99, 0x06, 0x1F, 0xD4, 0x10, 0xB5, 0x90, 0xF8, 0x9B, 0x20, 0x04, 0x46, + 0xC2, 0xB9, 0xB0, 0xF8, 0x98, 0x20, 0x92, 0xB9, 0x5A, 0x06, 0x0B, 0xD5, + 0xB0, 0xF8, 0xB4, 0x20, 0x09, 0x2A, 0x03, 0xD9, 0xFF, 0xF7, 0x9E, 0xFB, + 0x94, 0xF8, 0xA2, 0x30, 0x23, 0xF0, 0x40, 0x03, 0x84, 0xF8, 0xA2, 0x30, + 0x20, 0x46, 0xBD, 0xE8, 0x10, 0x40, 0xFF, 0xF7, 0x29, 0xBF, 0x01, 0x3A, + 0xA0, 0xF8, 0x98, 0x20, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x20, 0x70, 0x47, + 0x2D, 0xE9, 0xF0, 0x41, 0x29, 0x4F, 0x2A, 0x4E, 0xD7, 0xF8, 0x00, 0x80, + 0x4F, 0xF4, 0x1E, 0x73, 0xB8, 0xF9, 0x00, 0x20, 0x03, 0xFB, 0x00, 0x63, + 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x51, 0x8A, 0xB0, 0x04, 0x46, 0x20, 0xDB, + 0x28, 0x46, 0xFF, 0xF7, 0xDF, 0xFB, 0xA5, 0xF8, 0xB4, 0x00, 0xB8, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x22, 0xDB, 0x28, 0x46, 0xFF, 0xF7, 0x6A, 0xFC, + 0x69, 0x46, 0x28, 0x46, 0xFF, 0xF7, 0x3C, 0xF9, 0x28, 0x46, 0x00, 0x21, + 0xFF, 0xF7, 0x66, 0xFD, 0x4F, 0xF4, 0x1E, 0x70, 0x00, 0xFB, 0x04, 0x64, + 0x94, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x01, 0x03, 0x84, 0xF8, 0x56, 0x31, + 0x0A, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x2D, 0xDC, 0xD1, 0x12, 0x49, + 0x12, 0x48, 0x40, 0xF6, 0xAF, 0x42, 0xF1, 0xF7, 0x03, 0xF9, 0xD7, 0xF8, + 0x00, 0x80, 0xD3, 0xE7, 0x40, 0xB1, 0x0A, 0x28, 0xD9, 0xD9, 0x0C, 0x49, + 0x0D, 0x48, 0x40, 0xF6, 0xB4, 0x42, 0xF1, 0xF7, 0xF7, 0xF8, 0xD2, 0xE7, + 0x08, 0x49, 0x0B, 0x48, 0x40, 0xF6, 0xB3, 0x42, 0xF1, 0xF7, 0xF0, 0xF8, + 0x3B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC7, 0xDA, 0xB5, 0xF8, + 0xB4, 0x00, 0xE8, 0xE7, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x0C, 0xCA, 0x15, 0x00, + 0xF4, 0xC9, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, 0xDF, 0xF8, 0xBC, 0x80, + 0x29, 0x4D, 0xD8, 0xF8, 0x00, 0x40, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, + 0x00, 0x53, 0x07, 0x46, 0xB4, 0xF9, 0x00, 0x00, 0xD3, 0xF8, 0x4C, 0x41, + 0x00, 0x28, 0x0D, 0x46, 0x16, 0x46, 0x20, 0xDB, 0x94, 0xF8, 0xAF, 0x30, + 0xAB, 0x42, 0x39, 0xD0, 0xD8, 0xF8, 0x00, 0x30, 0x84, 0xF8, 0xAF, 0x50, + 0xB3, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x26, 0xDB, 0x84, 0xF8, 0xB0, 0x60, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x17, 0xDB, 0x94, 0xF8, 0xA2, 0x30, + 0x9A, 0x06, 0x05, 0xD5, 0x63, 0xF0, 0x7F, 0x03, 0x84, 0xF8, 0xA2, 0x30, + 0xBD, 0xE8, 0xF0, 0x81, 0x38, 0x46, 0xBD, 0xE8, 0xF0, 0x41, 0xFF, 0xF7, + 0x69, 0xBF, 0x00, 0x2C, 0xDC, 0xD1, 0x11, 0x49, 0x11, 0x48, 0x40, 0xF6, + 0xCC, 0x42, 0xF1, 0xF7, 0x9F, 0xF8, 0xD5, 0xE7, 0x07, 0x2E, 0xE5, 0xD9, + 0x0C, 0x49, 0x0E, 0x48, 0x40, 0xF6, 0xD4, 0x42, 0xF1, 0xF7, 0x96, 0xF8, + 0xDE, 0xE7, 0x03, 0x2D, 0xD6, 0xD9, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF6, + 0xD2, 0x42, 0xF1, 0xF7, 0x8D, 0xF8, 0xD8, 0xF8, 0x00, 0x30, 0xCD, 0xE7, + 0x94, 0xF8, 0xB0, 0x30, 0xB3, 0x42, 0xC1, 0xD1, 0xD6, 0xE7, 0x00, 0xBF, + 0x68, 0x65, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, + 0x50, 0xCA, 0x15, 0x00, 0x34, 0xCA, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x4D, 0x4B, 0x8D, 0xB0, 0x1A, 0x68, 0x01, 0x90, + 0x04, 0x46, 0x4C, 0x48, 0xB2, 0xF9, 0x00, 0x20, 0x4F, 0xF4, 0x1E, 0x73, + 0x03, 0xFB, 0x04, 0x03, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0xB1, 0x0C, 0x46, + 0x79, 0xDB, 0x9B, 0xF8, 0xB2, 0x20, 0xA2, 0x42, 0x72, 0xD0, 0x8B, 0xF8, + 0xB2, 0x40, 0x00, 0x2C, 0x6E, 0xD0, 0x9B, 0xF8, 0xA2, 0x20, 0x12, 0xF0, + 0x20, 0x07, 0x76, 0xD1, 0xBB, 0xF8, 0xB4, 0x90, 0xB8, 0x46, 0xB9, 0xF1, + 0x00, 0x0F, 0x15, 0xD1, 0x4D, 0xE0, 0x25, 0x44, 0x0C, 0xAB, 0x01, 0x37, + 0x0B, 0xEB, 0x85, 0x05, 0x03, 0xEB, 0x84, 0x04, 0xB8, 0xB2, 0x4F, 0xF0, + 0x01, 0x03, 0x81, 0x45, 0xAB, 0x73, 0xA6, 0xF8, 0x0A, 0xA0, 0xA6, 0xF8, + 0x08, 0x80, 0x85, 0xF8, 0x0D, 0x80, 0x44, 0xF8, 0x28, 0x8C, 0x38, 0xD9, + 0xBC, 0xB2, 0x04, 0xEB, 0x44, 0x06, 0x0B, 0xEB, 0x86, 0x06, 0x65, 0x00, + 0xB6, 0xF8, 0x0A, 0xA0, 0x50, 0x46, 0xFD, 0xF7, 0x19, 0xFF, 0x00, 0x28, + 0xDD, 0xD0, 0x4A, 0xF4, 0x80, 0x6A, 0xB9, 0xF1, 0x00, 0x0F, 0x16, 0xD0, + 0x58, 0x46, 0x4F, 0xF0, 0x00, 0x0C, 0x01, 0xE0, 0xCC, 0x45, 0xD2, 0xD0, + 0xB0, 0xF8, 0x0A, 0xE0, 0xD6, 0x45, 0x0C, 0xF1, 0x01, 0x0C, 0x00, 0xF1, + 0x0C, 0x00, 0xF5, 0xD1, 0x58, 0x46, 0xFE, 0xF7, 0x37, 0xFE, 0xBB, 0xF8, + 0xB4, 0x90, 0x82, 0x46, 0xB9, 0xF1, 0x00, 0x0F, 0xE8, 0xD1, 0x28, 0x19, + 0x0C, 0xAB, 0x0B, 0xEB, 0x80, 0x00, 0x03, 0xEB, 0x84, 0x04, 0x01, 0x25, + 0x85, 0x73, 0xA6, 0xF8, 0x0A, 0xA0, 0xA6, 0xF8, 0x08, 0x90, 0x80, 0xF8, + 0x0D, 0x90, 0x44, 0xF8, 0x28, 0x9C, 0x02, 0xA9, 0x58, 0x46, 0xFE, 0xF7, + 0xCF, 0xFF, 0x02, 0xA9, 0x58, 0x46, 0xFF, 0xF7, 0x1B, 0xF8, 0x01, 0x9A, + 0x11, 0x46, 0x10, 0x4A, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x01, 0x29, + 0x99, 0xF8, 0x56, 0x31, 0x43, 0xF0, 0x01, 0x03, 0x89, 0xF8, 0x56, 0x31, + 0x0D, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0xBB, 0xF1, 0x00, 0x0F, 0x82, 0xD1, + 0x08, 0x49, 0x09, 0x48, 0x40, 0xF6, 0xEA, 0x42, 0xF0, 0xF7, 0xE2, 0xFF, + 0x7B, 0xE7, 0x62, 0xF0, 0x7F, 0x02, 0x8B, 0xF8, 0xA2, 0x20, 0x0D, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0xB0, 0xF8, 0x54, 0x21, + 0x03, 0x29, 0x9A, 0xBF, 0x02, 0xF4, 0x80, 0x62, 0x12, 0xB2, 0x00, 0x22, + 0x10, 0xB4, 0x42, 0xEA, 0x01, 0x03, 0xD0, 0xF8, 0x48, 0x41, 0x43, 0xF0, + 0x00, 0x53, 0xC4, 0xE9, 0x05, 0x33, 0xC4, 0xE9, 0x07, 0x33, 0x5D, 0xF8, + 0x04, 0x4B, 0x70, 0x47, 0x90, 0xF8, 0xA5, 0x30, 0xC1, 0xF3, 0xC2, 0x22, + 0x93, 0x42, 0x13, 0xD3, 0x05, 0x2B, 0x70, 0xB5, 0x4F, 0xEA, 0xD1, 0x24, + 0x11, 0xD0, 0x04, 0x2B, 0x29, 0xD0, 0x02, 0x3B, 0x01, 0x2B, 0x12, 0xD8, + 0x14, 0xF0, 0x06, 0x03, 0x04, 0xF0, 0x06, 0x05, 0x26, 0xD1, 0x90, 0xF8, + 0xAD, 0x20, 0x03, 0x2A, 0x1B, 0xD8, 0x0D, 0xE0, 0x00, 0x23, 0x18, 0x46, + 0x70, 0x47, 0x05, 0x2A, 0x03, 0xD0, 0x90, 0xF8, 0xAD, 0x30, 0x03, 0x2B, + 0x15, 0xD8, 0x14, 0xF0, 0x06, 0x0F, 0x04, 0xF0, 0x06, 0x05, 0x13, 0xD1, + 0x4A, 0x05, 0xC1, 0xF3, 0x80, 0x23, 0x03, 0xD4, 0x90, 0xF8, 0xB2, 0x20, + 0x01, 0x2A, 0x04, 0xD0, 0xFF, 0xF7, 0x9A, 0xF8, 0x03, 0x1E, 0x18, 0xBF, + 0x01, 0x23, 0x18, 0x46, 0x70, 0xBD, 0x04, 0x2A, 0x1A, 0xD0, 0x00, 0x23, + 0x18, 0x46, 0x70, 0xBD, 0x04, 0x2A, 0x1A, 0xD9, 0x90, 0xF8, 0xAF, 0x60, + 0xC1, 0xF3, 0xC1, 0x13, 0x9E, 0x42, 0xF4, 0xD3, 0x63, 0x07, 0x08, 0xD5, + 0x07, 0x2A, 0xE7, 0xD0, 0xC1, 0xF3, 0x02, 0x13, 0x90, 0xF8, 0xB0, 0x20, + 0x9A, 0x42, 0xEA, 0xD3, 0xE0, 0xE7, 0x00, 0x2D, 0xDE, 0xD0, 0xC1, 0xF3, + 0xC1, 0x03, 0xF5, 0xE7, 0x14, 0xF0, 0x06, 0x0F, 0x04, 0xF0, 0x06, 0x05, + 0xCE, 0xD0, 0x8E, 0x05, 0xE2, 0xD5, 0x90, 0xF8, 0xB1, 0x30, 0x00, 0x2B, + 0xD5, 0xD0, 0xDD, 0xE7, 0x01, 0xEB, 0x41, 0x01, 0x00, 0xEB, 0x81, 0x03, + 0x2D, 0xE9, 0xF0, 0x47, 0x1F, 0x89, 0x80, 0x46, 0x41, 0xF6, 0x98, 0x10, + 0x87, 0x42, 0x38, 0xD9, 0xB3, 0xF8, 0x0A, 0x90, 0xD8, 0xF8, 0x94, 0xA0, + 0x48, 0x46, 0x15, 0x46, 0x8C, 0x00, 0xFD, 0xF7, 0x2F, 0xFE, 0x08, 0xB3, + 0x00, 0x26, 0x20, 0x1D, 0x40, 0x44, 0xFF, 0xF7, 0x8D, 0xFC, 0x2D, 0x4A, + 0x4F, 0xF4, 0x7A, 0x73, 0x30, 0x44, 0x03, 0xFB, 0x07, 0xF3, 0xB3, 0xFB, + 0xF0, 0xF3, 0x02, 0xFB, 0x03, 0xF3, 0x18, 0x0C, 0x75, 0xB1, 0x43, 0xF2, + 0x32, 0x33, 0x9F, 0x42, 0x1C, 0xD9, 0x44, 0xF6, 0xCB, 0x43, 0x9F, 0x42, + 0x21, 0xD8, 0x24, 0x4B, 0x5A, 0x78, 0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, + 0x40, 0xEA, 0x44, 0x60, 0xBD, 0xE8, 0xF0, 0x87, 0x20, 0x4E, 0x21, 0x4B, + 0xC9, 0xF3, 0xC2, 0x29, 0x4F, 0xEA, 0x1A, 0x4A, 0xB9, 0xF1, 0x06, 0x0F, + 0x08, 0xBF, 0x1E, 0x46, 0xB6, 0xFB, 0xFA, 0xF6, 0xD1, 0xE7, 0x00, 0x20, + 0xBD, 0xE8, 0xF0, 0x87, 0x17, 0x4B, 0x1A, 0x78, 0xA2, 0xFB, 0x00, 0x34, + 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xBD, 0xE8, 0xF0, 0x87, 0x46, 0xF2, + 0x65, 0x63, 0x9F, 0x42, 0x0A, 0xD9, 0xB7, 0xF5, 0x00, 0x4F, 0x0F, 0xD2, + 0x0F, 0x4B, 0xDA, 0x78, 0xA2, 0xFB, 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, + 0x44, 0x60, 0xD5, 0xE7, 0x0B, 0x4B, 0x9A, 0x78, 0xA2, 0xFB, 0x00, 0x34, + 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xCD, 0xE7, 0x49, 0xF6, 0x98, 0x13, + 0x9F, 0x42, 0x06, 0x4B, 0x94, 0xBF, 0x1A, 0x79, 0x5A, 0x79, 0xA2, 0xFB, + 0x00, 0x34, 0xD8, 0x09, 0x40, 0xEA, 0x44, 0x60, 0xC0, 0xE7, 0x00, 0xBF, + 0xB0, 0xE2, 0x0D, 0x00, 0x54, 0x25, 0x17, 0x00, 0x90, 0x53, 0x03, 0x00, + 0x10, 0x09, 0x05, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x8F, 0xB0, 0x00, 0xF1, + 0x88, 0x09, 0x02, 0xAD, 0x01, 0x91, 0x04, 0x46, 0x4A, 0x46, 0x07, 0x46, + 0x00, 0xF1, 0x90, 0x06, 0x29, 0x46, 0x32, 0xF8, 0x02, 0x3B, 0x03, 0xEB, + 0x43, 0x03, 0x04, 0xEB, 0x83, 0x03, 0xB2, 0x42, 0x5B, 0x89, 0x21, 0xF8, + 0x02, 0x3B, 0xF4, 0xD1, 0xB4, 0xF8, 0x92, 0x10, 0x71, 0xB1, 0xD4, 0xF8, + 0x94, 0x20, 0xB4, 0xF8, 0x90, 0x30, 0x02, 0xEB, 0x42, 0x02, 0x1B, 0x04, + 0x93, 0xFB, 0xF1, 0xF3, 0x13, 0x44, 0xC3, 0xF3, 0x98, 0x03, 0x00, 0x22, + 0xC4, 0xE9, 0x24, 0x23, 0x04, 0xF1, 0x7C, 0x00, 0xFE, 0xF7, 0x2A, 0xF8, + 0xB4, 0xF8, 0xB4, 0x00, 0x00, 0x21, 0xA4, 0xF8, 0x7C, 0x10, 0xA4, 0xF8, + 0x7E, 0x10, 0x84, 0xF8, 0x9A, 0x10, 0x00, 0x28, 0x74, 0xD0, 0x01, 0x38, + 0x05, 0xAB, 0x80, 0xB2, 0x0D, 0xF1, 0x10, 0x0A, 0x03, 0xEB, 0x80, 0x00, + 0x52, 0x46, 0x23, 0x46, 0x4F, 0xF0, 0x01, 0x0C, 0x42, 0xF8, 0x04, 0x1B, + 0x82, 0x42, 0x83, 0xF8, 0x0E, 0xC0, 0x03, 0xF1, 0x0C, 0x03, 0xF7, 0xD1, + 0xB4, 0xF8, 0xBA, 0x20, 0x4F, 0xF6, 0xFF, 0x73, 0x9A, 0x42, 0x14, 0xD0, + 0x32, 0x4B, 0x20, 0x46, 0xD3, 0xF8, 0x6C, 0x32, 0x98, 0x47, 0x39, 0xF8, + 0x02, 0x3B, 0x35, 0xF8, 0x02, 0x2B, 0x03, 0xEB, 0x43, 0x03, 0x04, 0xEB, + 0x83, 0x03, 0x5B, 0x89, 0x93, 0x42, 0x47, 0xD1, 0xB1, 0x45, 0xF2, 0xD1, + 0x0F, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x4F, 0xF0, 0x00, 0x08, 0x1F, 0xFA, + 0x88, 0xFB, 0x0B, 0xEB, 0x4B, 0x00, 0x04, 0xEB, 0x80, 0x00, 0x04, 0x30, + 0xFD, 0xF7, 0xE6, 0xFF, 0x01, 0x22, 0x5F, 0xFA, 0x88, 0xF1, 0x20, 0x46, + 0x90, 0x44, 0xFF, 0xF7, 0x09, 0xFF, 0xB4, 0xF8, 0xB4, 0x10, 0x0E, 0xAB, + 0x03, 0xEB, 0x8B, 0x0B, 0x1F, 0xFA, 0x88, 0xF2, 0x91, 0x42, 0x4B, 0xF8, + 0x28, 0x0C, 0xE4, 0xD8, 0x51, 0x46, 0x20, 0x46, 0xFE, 0xF7, 0x26, 0xFE, + 0x51, 0x46, 0x20, 0x46, 0xFE, 0xF7, 0x72, 0xFE, 0x01, 0x9B, 0xCB, 0xB9, + 0x94, 0xF8, 0xA2, 0x20, 0xB4, 0xF8, 0xB4, 0x30, 0x42, 0xF0, 0x40, 0x02, + 0x84, 0xF8, 0xA2, 0x20, 0x83, 0xB1, 0x01, 0x3B, 0x9B, 0xB2, 0x03, 0xEB, + 0x43, 0x02, 0xDD, 0xF8, 0x04, 0x80, 0x04, 0xF1, 0x0C, 0x03, 0x03, 0xEB, + 0x82, 0x03, 0xA7, 0xF8, 0x04, 0x80, 0xA7, 0xF8, 0x06, 0x80, 0x0C, 0x37, + 0x9F, 0x42, 0xF8, 0xD1, 0x00, 0x20, 0xAC, 0xE7, 0x01, 0x20, 0x0F, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xB4, 0xF8, 0xBA, 0x20, 0x4F, 0xF6, 0xFF, 0x73, + 0x9A, 0x42, 0x9D, 0xD1, 0x0D, 0xF1, 0x10, 0x0A, 0xCC, 0xE7, 0x00, 0xBF, + 0x88, 0x1A, 0x17, 0x00, 0x38, 0xB5, 0x23, 0x4B, 0x23, 0x4A, 0x1B, 0x68, + 0x4F, 0xF4, 0x1E, 0x71, 0xB3, 0xF9, 0x00, 0x30, 0x01, 0xFB, 0x00, 0x20, + 0x00, 0x2B, 0xD0, 0xF8, 0x4C, 0x41, 0x2F, 0xDB, 0x20, 0x46, 0xFF, 0xF7, + 0x5D, 0xF9, 0xB4, 0xF8, 0xB4, 0x30, 0x59, 0x1E, 0x9A, 0x1E, 0x21, 0xEA, + 0xE1, 0x71, 0x03, 0x3B, 0x22, 0xEA, 0xE2, 0x72, 0x23, 0xEA, 0xE3, 0x73, + 0x00, 0x25, 0x4F, 0xF4, 0x80, 0x30, 0xA4, 0xF8, 0x88, 0x10, 0x4F, 0xF6, + 0xFF, 0x71, 0xA4, 0xF8, 0x8A, 0x20, 0xA4, 0xF8, 0x8C, 0x30, 0xC4, 0xF8, + 0x94, 0x00, 0xA4, 0xF8, 0xBA, 0x10, 0xA4, 0xF8, 0x8E, 0x50, 0x84, 0xF8, + 0xA2, 0x50, 0x01, 0x21, 0x20, 0x46, 0xFF, 0xF7, 0x13, 0xFF, 0x94, 0xF8, + 0xB4, 0x30, 0x84, 0xF8, 0x9B, 0x50, 0x04, 0x3B, 0x05, 0x22, 0x84, 0xF8, + 0xA0, 0x30, 0xA4, 0xF8, 0x98, 0x20, 0x38, 0xBD, 0x00, 0x2C, 0xCD, 0xD1, + 0x05, 0x49, 0x06, 0x48, 0x40, 0xF6, 0x76, 0x02, 0xF0, 0xF7, 0xDE, 0xFD, + 0xC6, 0xE7, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, + 0xDF, 0xF8, 0xC4, 0xA3, 0x90, 0xF8, 0x23, 0x70, 0xDA, 0xF8, 0x00, 0x30, + 0xD0, 0xF8, 0x48, 0x81, 0xB3, 0xF9, 0x00, 0x30, 0x8B, 0xB0, 0x07, 0xF1, + 0x10, 0x02, 0xD2, 0xB2, 0x00, 0x2B, 0x04, 0x46, 0x06, 0x92, 0xC0, 0xF2, + 0xA9, 0x81, 0xDA, 0x4D, 0x07, 0xEB, 0x47, 0x03, 0x05, 0xEB, 0x83, 0x1B, + 0xC4, 0xF8, 0x4C, 0xB1, 0x9B, 0x01, 0x04, 0x93, 0xCD, 0xF7, 0xB4, 0xF9, + 0x83, 0x03, 0x05, 0x93, 0xCD, 0xF7, 0xB0, 0xF9, 0x4F, 0xF0, 0x01, 0x09, + 0x01, 0x30, 0x09, 0xFA, 0x00, 0xF9, 0x00, 0x21, 0x58, 0x46, 0xC0, 0x22, + 0xCC, 0xF7, 0xBE, 0xF8, 0x61, 0x68, 0x11, 0xF0, 0x02, 0x01, 0x09, 0xF1, + 0xFF, 0x39, 0x00, 0xF0, 0x9D, 0x80, 0x00, 0x21, 0x04, 0xF1, 0xB8, 0x00, + 0xF3, 0xF7, 0xB4, 0xFB, 0x63, 0x68, 0xAB, 0xF8, 0xAA, 0x00, 0x98, 0x06, + 0x4F, 0xEA, 0x47, 0x06, 0x00, 0xF1, 0x30, 0x82, 0x58, 0x07, 0x40, 0xF1, + 0xA3, 0x81, 0xC3, 0x4B, 0x07, 0x93, 0x04, 0x23, 0xB4, 0xF8, 0xEC, 0x00, + 0x8B, 0xF8, 0xA5, 0x30, 0xCD, 0xF8, 0x24, 0xB0, 0xF3, 0xF7, 0xBA, 0xFA, + 0x07, 0x9A, 0x03, 0x46, 0x10, 0x8F, 0x08, 0x93, 0xF3, 0xF7, 0xB4, 0xFA, + 0x08, 0x9B, 0x09, 0x9A, 0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, 0xDA, 0xF8, + 0x00, 0x30, 0x82, 0xF8, 0xB0, 0x00, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0xC0, 0x83, 0x07, 0x9B, 0xB4, 0xF8, 0xEC, 0x00, 0x19, 0x8F, + 0xF3, 0xF7, 0xCA, 0xFB, 0xF2, 0x19, 0x05, 0xEB, 0x82, 0x12, 0x03, 0x46, + 0xB4, 0xF8, 0xEC, 0x00, 0xA2, 0xF8, 0xA6, 0x30, 0x09, 0x92, 0xF3, 0xF7, + 0x7D, 0xFA, 0x07, 0x9A, 0x03, 0x46, 0x10, 0x8F, 0x08, 0x93, 0xF3, 0xF7, + 0x77, 0xFA, 0x08, 0x9B, 0x09, 0x9A, 0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, + 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, 0xAC, 0x00, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xC0, 0xF2, 0x91, 0x83, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, + 0x08, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0x20, 0xF4, 0x7F, 0x60, 0x80, 0xB2, + 0xA3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x96, 0xFA, 0x08, 0x9B, 0xDA, 0xF8, + 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x6D, 0x83, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, + 0xB3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x92, 0xFA, 0x08, 0x9B, 0xDA, 0xF8, + 0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x4E, 0x83, 0xB4, 0xF8, 0x54, 0x21, 0xF3, 0x19, 0x05, 0xEB, + 0x83, 0x13, 0xC2, 0xF3, 0x80, 0x22, 0x83, 0xF8, 0xB2, 0x20, 0xCD, 0xF7, + 0xD1, 0xF8, 0x00, 0x28, 0x40, 0xF0, 0x04, 0x83, 0xD4, 0xF8, 0xE8, 0x30, + 0x03, 0xF0, 0x03, 0x03, 0x01, 0x2B, 0x00, 0xF0, 0xD4, 0x83, 0x02, 0x2B, + 0x00, 0xF0, 0xD9, 0x83, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x40, 0xF6, + 0xED, 0x62, 0xA3, 0xF8, 0xB6, 0x20, 0x88, 0xE1, 0x04, 0xF1, 0xB8, 0x00, + 0xF3, 0xF7, 0x18, 0xFB, 0x07, 0xEB, 0x47, 0x03, 0x05, 0xEB, 0x83, 0x13, + 0x07, 0x93, 0xA3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x4D, 0xFA, 0x07, 0x9B, + 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, 0xB2, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0x4F, 0xEA, 0x47, 0x06, 0xC0, 0xF2, 0xBC, 0x80, 0xF3, 0x19, + 0x05, 0xEB, 0x83, 0x13, 0x07, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, + 0x47, 0xFA, 0x07, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, + 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9E, 0x80, 0xF3, 0x19, + 0x05, 0xEB, 0x83, 0x13, 0xFF, 0x21, 0x83, 0xF8, 0xAC, 0x10, 0x94, 0xF8, + 0x2D, 0x11, 0x83, 0xF8, 0xAF, 0x10, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x83, 0x80, 0xB4, 0xF8, 0x54, 0x11, 0xF3, 0x19, 0x05, 0xEB, + 0x83, 0x13, 0xC1, 0xF3, 0x80, 0x21, 0x83, 0xF8, 0xB2, 0x10, 0x58, 0x46, + 0x07, 0x92, 0xFE, 0xF7, 0x71, 0xFF, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, + 0x07, 0x9A, 0xA3, 0xF8, 0xB4, 0x00, 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, + 0xC0, 0xF2, 0x8D, 0x80, 0x3E, 0x44, 0x05, 0xEB, 0x86, 0x1A, 0x94, 0xF8, + 0x23, 0x30, 0x9A, 0xF8, 0xAF, 0x70, 0x9A, 0xF8, 0xB1, 0x00, 0x9A, 0xF8, + 0xB2, 0x10, 0x9A, 0xF8, 0xA5, 0x20, 0xCD, 0xE9, 0x02, 0x07, 0xCD, 0xE9, + 0x00, 0x21, 0x4F, 0xF4, 0x80, 0x50, 0x4B, 0x4A, 0x4B, 0x49, 0xF0, 0xF7, + 0x6F, 0xFA, 0xBA, 0xF8, 0xB4, 0x00, 0x9A, 0xF8, 0xAE, 0x10, 0x9A, 0xF8, + 0xAD, 0x20, 0x9A, 0xF8, 0xAC, 0x30, 0xCD, 0xE9, 0x02, 0x10, 0xCD, 0xE9, + 0x00, 0x32, 0x45, 0x49, 0x42, 0x4A, 0x9A, 0xF8, 0xB0, 0x30, 0x4F, 0xF4, + 0x80, 0x50, 0xF0, 0xF7, 0x5B, 0xFA, 0x94, 0xF8, 0x23, 0x00, 0xFF, 0xF7, + 0x5D, 0xFE, 0x04, 0x99, 0x88, 0x31, 0xB0, 0x01, 0x29, 0x44, 0x08, 0xF1, + 0x14, 0x02, 0x08, 0xF1, 0x24, 0x07, 0x31, 0xF8, 0x02, 0x3B, 0xDB, 0xB2, + 0x03, 0xEB, 0x43, 0x03, 0x00, 0xEB, 0x83, 0x03, 0x2B, 0x44, 0x5B, 0x89, + 0x43, 0xF0, 0x80, 0x43, 0x42, 0xF8, 0x04, 0x3B, 0x97, 0x42, 0xF0, 0xD1, + 0x58, 0x46, 0x00, 0x21, 0xFF, 0xF7, 0xB4, 0xF8, 0x32, 0x4A, 0x06, 0x99, + 0x12, 0x69, 0xD4, 0xF8, 0x48, 0x31, 0x31, 0x4F, 0x31, 0x48, 0xB6, 0x01, + 0x89, 0x02, 0xAA, 0x51, 0xA2, 0x69, 0x05, 0x9D, 0xC8, 0xF8, 0x0C, 0x10, + 0x4F, 0xF4, 0x08, 0x51, 0xC8, 0xE9, 0x01, 0x59, 0xC8, 0xF8, 0x00, 0x70, + 0xC8, 0xF8, 0x10, 0x00, 0xC3, 0xE9, 0x0D, 0x12, 0x94, 0xF8, 0x56, 0x31, + 0x43, 0xF0, 0x11, 0x03, 0x84, 0xF8, 0x56, 0x31, 0x0B, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0x00, 0x29, 0x3F, 0xF4, 0x7A, 0xAF, 0x40, 0xF6, 0x21, 0x42, + 0x22, 0x49, 0x23, 0x48, 0xF0, 0xF7, 0x3C, 0xFC, 0xDA, 0xF8, 0x00, 0x20, + 0x70, 0xE7, 0x0B, 0x28, 0x7F, 0xF6, 0x5F, 0xAF, 0x40, 0xF6, 0x1E, 0x42, + 0x1C, 0x49, 0x1E, 0x48, 0xF0, 0xF7, 0x30, 0xFC, 0xDA, 0xF8, 0x00, 0x20, + 0x55, 0xE7, 0x0B, 0x28, 0x7F, 0xF6, 0x41, 0xAF, 0x17, 0x49, 0x1A, 0x48, + 0x40, 0xF6, 0x1C, 0x42, 0xF0, 0xF7, 0x24, 0xFC, 0x39, 0xE7, 0x00, 0x28, + 0x00, 0xF0, 0xFE, 0x81, 0x0A, 0x28, 0x7F, 0xF6, 0x6D, 0xAF, 0x11, 0x49, + 0x14, 0x48, 0x40, 0xF6, 0x28, 0x42, 0xF0, 0xF7, 0x17, 0xFC, 0x65, 0xE7, + 0x09, 0x2F, 0x7F, 0xF6, 0x54, 0xAE, 0x0C, 0x49, 0x10, 0x48, 0x40, 0xF6, + 0xEB, 0x22, 0xF0, 0xF7, 0x0D, 0xFC, 0x94, 0xF8, 0x23, 0x70, 0x4A, 0xE6, + 0xF4, 0xE7, 0x17, 0x00, 0xE4, 0xB8, 0x17, 0x00, 0x4C, 0xCC, 0x15, 0x00, + 0xC4, 0xCB, 0x15, 0x00, 0x08, 0xCC, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x1E, 0xAB, 0xDC, 0xBA, 0x04, 0x07, 0xFF, 0xFF, 0x70, 0x79, 0x15, 0x00, + 0xA8, 0xCB, 0x15, 0x00, 0x84, 0xCB, 0x15, 0x00, 0x60, 0xCB, 0x15, 0x00, + 0x0C, 0xCA, 0x15, 0x00, 0x64, 0xCA, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, + 0x04, 0xF1, 0xCB, 0x03, 0x02, 0x21, 0x18, 0x46, 0x8B, 0xF8, 0xA5, 0x10, + 0x09, 0x93, 0xCD, 0xF8, 0x20, 0xB0, 0xF3, 0xF7, 0x2B, 0xF9, 0x01, 0x46, + 0xD9, 0x48, 0x07, 0x91, 0xF3, 0xF7, 0x26, 0xF9, 0x07, 0x99, 0x08, 0x9A, + 0x09, 0x9B, 0x88, 0x42, 0x28, 0xBF, 0x08, 0x46, 0xDA, 0xF8, 0x00, 0x10, + 0x82, 0xF8, 0xB0, 0x00, 0xB1, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0xC0, 0xF2, + 0x41, 0x82, 0x04, 0x9A, 0x02, 0xF1, 0xA6, 0x00, 0x19, 0x46, 0x04, 0x22, + 0x28, 0x44, 0x02, 0xF0, 0x6B, 0xFE, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, + 0xFF, 0x22, 0xB3, 0xF8, 0xAA, 0x00, 0x83, 0xF8, 0xA6, 0x20, 0x20, 0xF4, + 0x7F, 0x60, 0x07, 0x22, 0x80, 0xB2, 0x83, 0xF8, 0xAC, 0x20, 0xA3, 0xF8, + 0xAA, 0x00, 0x07, 0x93, 0xF3, 0xF7, 0x0A, 0xF9, 0x07, 0x9B, 0xDA, 0xF8, + 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0x0F, 0x82, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x07, 0x93, + 0xB3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, 0x06, 0xF9, 0x07, 0x9B, 0xDA, 0xF8, + 0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xC0, 0xF2, 0xF0, 0x81, 0xB4, 0xF8, 0x54, 0x21, 0xF3, 0x19, 0x05, 0xEB, + 0x83, 0x13, 0xC2, 0xF3, 0x80, 0x22, 0x83, 0xF8, 0xB2, 0x20, 0xCC, 0xF7, + 0x45, 0xFF, 0x00, 0x28, 0x40, 0xF0, 0x88, 0x81, 0xB4, 0xF8, 0xC8, 0x30, + 0x13, 0xF4, 0x00, 0x6F, 0x06, 0xEB, 0x07, 0x03, 0x05, 0xEB, 0x83, 0x13, + 0x14, 0xBF, 0x40, 0xF6, 0xB5, 0x72, 0x40, 0xF6, 0xFF, 0x62, 0xA3, 0xF8, + 0xB6, 0x20, 0xF1, 0x19, 0x05, 0xEB, 0x81, 0x11, 0x94, 0xF8, 0x2D, 0x31, + 0xDA, 0xF8, 0x00, 0x20, 0x81, 0xF8, 0xAF, 0x30, 0xB2, 0xF9, 0x00, 0x10, + 0x00, 0x29, 0xC0, 0xF2, 0x31, 0x81, 0x03, 0x2B, 0x3F, 0xF6, 0xA9, 0xAE, + 0xDF, 0xE8, 0x13, 0xF0, 0x26, 0x01, 0x20, 0x01, 0x15, 0x01, 0x04, 0x01, + 0x05, 0x23, 0x94, 0xF8, 0x22, 0x10, 0xB4, 0xF8, 0x06, 0x01, 0x8B, 0xF8, + 0xA5, 0x30, 0x07, 0x91, 0xCD, 0xF8, 0x24, 0xB0, 0xF3, 0xF7, 0x8C, 0xF8, + 0x95, 0x4A, 0x03, 0x46, 0xB2, 0xF8, 0x50, 0x00, 0x08, 0x93, 0xF3, 0xF7, + 0x85, 0xF8, 0x08, 0x9B, 0x09, 0x9A, 0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, + 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, 0xB0, 0x00, 0xB3, 0xF9, 0x00, 0x30, + 0x00, 0x2B, 0xC0, 0xF2, 0xE5, 0x81, 0x8B, 0x4B, 0xB4, 0xF8, 0x06, 0x01, + 0xB3, 0xF8, 0x50, 0x10, 0xF3, 0xF7, 0x9A, 0xF9, 0xF2, 0x19, 0x05, 0xEB, + 0x82, 0x12, 0x03, 0x46, 0xB4, 0xF8, 0x06, 0x01, 0xA2, 0xF8, 0xA6, 0x30, + 0x09, 0x92, 0xF3, 0xF7, 0x59, 0xF8, 0x82, 0x4A, 0x03, 0x46, 0xB2, 0xF8, + 0x50, 0x00, 0x08, 0x93, 0xF3, 0xF7, 0x52, 0xF8, 0x08, 0x9B, 0x09, 0x9A, + 0x98, 0x42, 0x28, 0xBF, 0x18, 0x46, 0xDA, 0xF8, 0x00, 0x30, 0x82, 0xF8, + 0xAC, 0x00, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xB4, 0x81, + 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, 0xB3, 0xF8, 0xAA, 0x00, + 0x20, 0xF4, 0x7F, 0x60, 0x80, 0xB2, 0xA3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, + 0x65, 0xF8, 0x08, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAD, 0x00, + 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x90, 0x81, 0xF3, 0x19, + 0x05, 0xEB, 0x83, 0x13, 0x08, 0x93, 0xB3, 0xF8, 0xAA, 0x00, 0xF3, 0xF7, + 0x61, 0xF8, 0x08, 0x9B, 0xDA, 0xF8, 0x00, 0x20, 0x83, 0xF8, 0xAE, 0x00, + 0xB2, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x71, 0x81, 0xB4, 0xF8, + 0x54, 0x21, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0xC2, 0xF3, 0x80, 0x22, + 0x83, 0xF8, 0xB2, 0x20, 0xCC, 0xF7, 0xA0, 0xFE, 0x28, 0xB1, 0x5D, 0x4B, + 0x93, 0xF8, 0x43, 0x30, 0x99, 0x06, 0x00, 0xF1, 0x99, 0x81, 0x63, 0x68, + 0x5B, 0x07, 0x40, 0xF1, 0xEB, 0x80, 0xD4, 0xF8, 0xE8, 0x30, 0x03, 0xF0, + 0x03, 0x03, 0x01, 0x2B, 0x00, 0xF0, 0xBD, 0x81, 0x02, 0x2B, 0x00, 0xF0, + 0xB2, 0x81, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x40, 0xF6, 0xED, 0x62, + 0xA3, 0xF8, 0xB6, 0x20, 0x50, 0x4B, 0x07, 0x99, 0x4F, 0xF4, 0xA4, 0x62, + 0x02, 0xFB, 0x01, 0x33, 0x93, 0xF8, 0x62, 0x20, 0x00, 0x2A, 0x40, 0xF0, + 0xDF, 0x80, 0xD3, 0xF8, 0xC8, 0x31, 0xD4, 0xF8, 0x48, 0x01, 0x13, 0xF4, + 0x80, 0x3F, 0xC1, 0x6B, 0x40, 0xF0, 0x69, 0x81, 0x41, 0xF0, 0x20, 0x01, + 0x00, 0x2B, 0xC1, 0x63, 0x06, 0xDB, 0xC3, 0xF3, 0x05, 0x63, 0x49, 0xEA, + 0x03, 0x59, 0x02, 0x2A, 0x00, 0xF0, 0x58, 0x81, 0x49, 0xF0, 0x80, 0x59, + 0x49, 0xF4, 0xC0, 0x29, 0x3D, 0x4B, 0x93, 0xF8, 0x45, 0x10, 0x94, 0xF8, + 0xFD, 0x30, 0x01, 0xF0, 0x03, 0x00, 0xC3, 0xF3, 0xC1, 0x03, 0x83, 0x42, + 0x06, 0xEB, 0x07, 0x02, 0x28, 0xBF, 0x03, 0x46, 0x05, 0xEB, 0x82, 0x12, + 0x01, 0x20, 0x83, 0x42, 0x82, 0xF8, 0xBC, 0x00, 0x00, 0xF0, 0x6A, 0x81, + 0x02, 0x2B, 0x00, 0xF0, 0x64, 0x81, 0x00, 0x2B, 0x00, 0xF0, 0x68, 0x81, + 0x04, 0x23, 0x82, 0xF8, 0xBD, 0x30, 0x2E, 0x4B, 0x94, 0xF8, 0xFD, 0xC0, + 0x93, 0xF8, 0x4B, 0x00, 0x93, 0xF8, 0x4A, 0x20, 0x8B, 0x08, 0xF1, 0x19, + 0x03, 0xEA, 0x5C, 0x13, 0x05, 0xEB, 0x81, 0x11, 0x03, 0xF0, 0x01, 0x03, + 0x81, 0xF8, 0xBE, 0x30, 0x94, 0xF8, 0x03, 0xC1, 0x94, 0xF8, 0x02, 0x31, + 0x0C, 0xF0, 0x01, 0x0C, 0x9B, 0x11, 0x00, 0xF0, 0x01, 0x00, 0x92, 0x11, + 0x43, 0xEA, 0x8C, 0x03, 0x42, 0xEA, 0x80, 0x02, 0x93, 0x42, 0x28, 0xBF, + 0x13, 0x46, 0x81, 0xF8, 0xBF, 0x30, 0xE8, 0xE6, 0xD4, 0xF8, 0xE8, 0x30, + 0x59, 0x06, 0x7F, 0xF5, 0x9E, 0xAD, 0x19, 0x4B, 0x9B, 0x89, 0x5B, 0x06, + 0x7F, 0xF5, 0x99, 0xAD, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x01, 0x21, + 0x83, 0xF8, 0xB1, 0x10, 0x91, 0xE5, 0xD4, 0xF8, 0xE8, 0x30, 0x9B, 0x06, + 0x7F, 0xF5, 0x8D, 0xAD, 0x10, 0x4B, 0x9B, 0x89, 0x98, 0x06, 0x7F, 0xF5, + 0x88, 0xAD, 0xED, 0xE7, 0xB4, 0xF8, 0xC8, 0x30, 0x59, 0x06, 0x7F, 0xF5, + 0x82, 0xAD, 0xE2, 0xE7, 0xB4, 0xF8, 0xC8, 0x30, 0x98, 0x06, 0x7F, 0xF5, + 0x7C, 0xAD, 0xED, 0xE7, 0x03, 0x2B, 0x7F, 0xF6, 0xCC, 0xAE, 0x40, 0xF6, + 0xF9, 0x32, 0x07, 0x49, 0x07, 0x48, 0xF0, 0xF7, 0x31, 0xFA, 0x94, 0xF8, + 0x2D, 0x31, 0xDA, 0xF8, 0x00, 0x20, 0xC0, 0xE6, 0xF3, 0xB8, 0x17, 0x00, + 0xE4, 0xB8, 0x17, 0x00, 0x18, 0x88, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x34, 0xCA, 0x15, 0x00, 0x40, 0xF6, 0x27, 0x42, 0x88, 0x49, 0x89, 0x48, + 0x07, 0x93, 0xF0, 0xF7, 0x1B, 0xFA, 0xDA, 0xF8, 0x00, 0x20, 0xB2, 0xF9, + 0x00, 0x20, 0x00, 0x2A, 0xBF, 0xF6, 0x64, 0xAD, 0x07, 0x9B, 0xB3, 0xF8, + 0xB4, 0x00, 0xEF, 0xE5, 0x07, 0x9B, 0x1B, 0x6B, 0x13, 0xF0, 0x10, 0x0F, + 0xD4, 0xF8, 0xE8, 0x30, 0x3F, 0xF4, 0xF6, 0xAC, 0xD9, 0x06, 0x7F, 0xF5, + 0xF3, 0xAC, 0x05, 0x9A, 0x42, 0xF0, 0x40, 0x02, 0x05, 0x92, 0xED, 0xE4, + 0x7A, 0x4B, 0x9B, 0x89, 0x13, 0xF0, 0x01, 0x0F, 0xB4, 0xF8, 0xC8, 0x30, + 0x3F, 0xF4, 0x72, 0xAE, 0xDA, 0x07, 0x7F, 0xF5, 0x6F, 0xAE, 0x05, 0x9A, + 0x42, 0xF0, 0x40, 0x02, 0x05, 0x92, 0x69, 0xE6, 0xB4, 0xF8, 0xC8, 0x30, + 0x13, 0xF4, 0x00, 0x6F, 0x06, 0xEB, 0x07, 0x03, 0x05, 0xEB, 0x83, 0x13, + 0x14, 0xBF, 0x41, 0xF6, 0xFF, 0x62, 0x40, 0xF6, 0xFF, 0x62, 0xA3, 0xF8, + 0xB6, 0x20, 0x15, 0xE7, 0xD4, 0xF8, 0x48, 0x01, 0xD3, 0xF8, 0xC8, 0x31, + 0xC1, 0x6B, 0x00, 0x2B, 0x21, 0xF0, 0x20, 0x01, 0xC1, 0x63, 0xBF, 0xF6, + 0x24, 0xAF, 0x26, 0xE7, 0x03, 0x28, 0x7F, 0xF6, 0xAF, 0xAC, 0x0C, 0x28, + 0x3F, 0xF4, 0xAC, 0xAC, 0x5F, 0x49, 0x62, 0x48, 0x40, 0xF6, 0xA2, 0x32, + 0xF0, 0xF7, 0xC8, 0xF9, 0xA4, 0xE4, 0x03, 0x28, 0x7F, 0xF6, 0x90, 0xAC, + 0x0C, 0x28, 0x3F, 0xF4, 0x8D, 0xAC, 0x59, 0x49, 0x5C, 0x48, 0x4F, 0xF4, + 0x3A, 0x62, 0xF0, 0xF7, 0xBB, 0xF9, 0x85, 0xE4, 0x09, 0x28, 0x7F, 0xF6, + 0x6C, 0xAC, 0x54, 0x49, 0x58, 0x48, 0x40, 0xF6, 0x94, 0x32, 0xF0, 0xF7, + 0xB1, 0xF9, 0x64, 0xE4, 0x07, 0x28, 0x7F, 0xF6, 0x3D, 0xAC, 0x4F, 0x49, + 0x54, 0x48, 0x40, 0xF6, 0x8E, 0x32, 0xF0, 0xF7, 0xA7, 0xF9, 0x35, 0xE4, + 0x03, 0x28, 0x7F, 0xF6, 0x0D, 0xAE, 0x0C, 0x28, 0x3F, 0xF4, 0x0A, 0xAE, + 0x48, 0x49, 0x4B, 0x48, 0x40, 0xF6, 0xD9, 0x32, 0xF0, 0xF7, 0x9A, 0xF9, + 0x02, 0xE6, 0x03, 0x28, 0x7F, 0xF6, 0xEE, 0xAD, 0x0C, 0x28, 0x3F, 0xF4, + 0xEB, 0xAD, 0x42, 0x49, 0x45, 0x48, 0x40, 0xF6, 0xD7, 0x32, 0xF0, 0xF7, + 0x8D, 0xF9, 0xE3, 0xE5, 0x03, 0x28, 0x7F, 0xF6, 0xBC, 0xAD, 0x3D, 0x49, + 0x43, 0x48, 0x07, 0x93, 0x40, 0xF6, 0xCC, 0x32, 0xF0, 0xF7, 0x82, 0xF9, + 0x07, 0x9B, 0xB2, 0xE5, 0x03, 0x28, 0x7F, 0xF6, 0x8C, 0xAE, 0x0C, 0x28, + 0x3F, 0xF4, 0x89, 0xAE, 0x35, 0x49, 0x38, 0x48, 0x40, 0xF6, 0x22, 0x32, + 0xF0, 0xF7, 0x74, 0xF9, 0x81, 0xE6, 0x03, 0x28, 0x7F, 0xF6, 0x6D, 0xAE, + 0x0C, 0x28, 0x3F, 0xF4, 0x6A, 0xAE, 0x2F, 0x49, 0x32, 0x48, 0x4F, 0xF4, + 0x32, 0x62, 0xF0, 0xF7, 0x67, 0xF9, 0x62, 0xE6, 0x0B, 0x28, 0x7F, 0xF6, + 0x49, 0xAE, 0x2A, 0x49, 0x31, 0x48, 0x40, 0xF6, 0x1C, 0x32, 0xF0, 0xF7, + 0x5D, 0xF9, 0x41, 0xE6, 0x07, 0x28, 0x7F, 0xF6, 0x18, 0xAE, 0x25, 0x49, + 0x2A, 0x48, 0x40, 0xF6, 0x16, 0x32, 0xF0, 0xF7, 0x53, 0xF9, 0x10, 0xE6, + 0x49, 0xF0, 0x80, 0x59, 0x49, 0xF4, 0x00, 0x39, 0xA6, 0xE6, 0x21, 0xF0, + 0x20, 0x01, 0x00, 0x2B, 0xC1, 0x63, 0xBF, 0xF6, 0x96, 0xAE, 0x9B, 0xE6, + 0x94, 0xF8, 0x2D, 0x31, 0x23, 0xB9, 0x94, 0xF8, 0xFB, 0x30, 0x9A, 0x06, + 0x7F, 0xF5, 0x5F, 0xAE, 0x05, 0x9B, 0x43, 0xF0, 0x40, 0x03, 0x05, 0x93, + 0x59, 0xE6, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, 0x41, 0xF6, 0xED, 0x62, + 0xA3, 0xF8, 0xB6, 0x20, 0xB7, 0xE5, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, + 0x42, 0xF6, 0x74, 0x42, 0xA3, 0xF8, 0xB6, 0x20, 0xAF, 0xE5, 0x82, 0xF8, + 0xBD, 0x00, 0x9E, 0xE6, 0x00, 0x23, 0x82, 0xF8, 0xBD, 0x30, 0x9A, 0xE6, + 0x82, 0xF8, 0xBC, 0x30, 0xA5, 0xE5, 0xF3, 0x19, 0x05, 0xEB, 0x83, 0x13, + 0x42, 0xF6, 0x74, 0x42, 0xA3, 0xF8, 0xB6, 0x20, 0x4C, 0xE6, 0xF3, 0x19, + 0x05, 0xEB, 0x83, 0x13, 0x41, 0xF6, 0xED, 0x62, 0xA3, 0xF8, 0xB6, 0x20, + 0x44, 0xE6, 0x00, 0xBF, 0x70, 0x79, 0x15, 0x00, 0xF4, 0xC9, 0x15, 0x00, + 0xE4, 0xB8, 0x17, 0x00, 0xE8, 0xCA, 0x15, 0x00, 0x98, 0xCA, 0x15, 0x00, + 0x38, 0xCB, 0x15, 0x00, 0x50, 0xCA, 0x15, 0x00, 0x4C, 0xCB, 0x15, 0x00, + 0x84, 0xCA, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x43, 0x46, 0x7F, 0x09, 0x2E, + 0x83, 0xB0, 0x04, 0x46, 0x00, 0xF2, 0x8D, 0x80, 0x4B, 0x4B, 0x4C, 0x4F, + 0x1A, 0x68, 0x4F, 0xF4, 0x1E, 0x73, 0xB2, 0xF9, 0x00, 0x20, 0x03, 0xFB, + 0x06, 0x73, 0x00, 0x2A, 0xD3, 0xF8, 0x4C, 0x51, 0x40, 0xDB, 0x95, 0xF8, + 0xA2, 0x30, 0x59, 0x07, 0x34, 0xD4, 0x03, 0xF0, 0xFD, 0x03, 0x4F, 0xF0, + 0x00, 0x08, 0xDF, 0xF8, 0x18, 0x91, 0x85, 0xF8, 0xA2, 0x30, 0xD9, 0xF8, + 0x10, 0x30, 0x2A, 0x68, 0x3F, 0x49, 0x9B, 0x1A, 0x8B, 0x42, 0x36, 0xD8, + 0x95, 0xF8, 0xA3, 0x20, 0x95, 0xF8, 0xA4, 0x30, 0x43, 0xEA, 0x82, 0x03, + 0x84, 0xF8, 0x36, 0x30, 0x28, 0x46, 0xFE, 0xF7, 0x65, 0xFF, 0xB0, 0xB1, + 0xE2, 0x8B, 0x94, 0xF8, 0x36, 0x30, 0x42, 0xF4, 0x00, 0x52, 0x23, 0xF0, + 0x03, 0x03, 0xE2, 0x83, 0x84, 0xF8, 0x36, 0x30, 0xB8, 0xF1, 0x00, 0x0F, + 0x59, 0xD1, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0x76, 0x96, 0xF8, + 0x56, 0x31, 0x43, 0xF0, 0x20, 0x03, 0x86, 0xF8, 0x56, 0x31, 0x03, 0xB0, + 0xBD, 0xE8, 0xF0, 0x83, 0x62, 0x6A, 0x92, 0x02, 0xC7, 0xD5, 0x43, 0xF0, + 0x02, 0x03, 0x4F, 0xF0, 0x01, 0x08, 0xC6, 0xE7, 0x00, 0x2D, 0xBC, 0xD1, + 0x26, 0x49, 0x27, 0x48, 0x40, 0xF6, 0x9A, 0x22, 0xF0, 0xF7, 0x9E, 0xF8, + 0xB5, 0xE7, 0x00, 0x21, 0x28, 0x46, 0xFF, 0xF7, 0xBB, 0xF9, 0x95, 0xF8, + 0xA3, 0x30, 0x01, 0x33, 0x00, 0x22, 0x03, 0xF0, 0x07, 0x03, 0x85, 0xF8, + 0xA3, 0x30, 0x85, 0xF8, 0x9B, 0x20, 0x85, 0xF8, 0xA4, 0x20, 0xD9, 0xF8, + 0x10, 0x20, 0x2A, 0x60, 0x9B, 0x00, 0x84, 0xF8, 0x36, 0x30, 0x00, 0x28, + 0xB8, 0xD0, 0x0D, 0xF1, 0x07, 0x01, 0x28, 0x46, 0xFE, 0xF7, 0xCE, 0xFC, + 0x9D, 0xF8, 0x07, 0x30, 0x53, 0xB9, 0x62, 0x6A, 0x22, 0xF4, 0x00, 0x12, + 0x62, 0x62, 0x95, 0xF8, 0xA2, 0x20, 0x22, 0xF0, 0x02, 0x02, 0x98, 0x46, + 0x85, 0xF8, 0xA2, 0x20, 0x4F, 0xF4, 0x1E, 0x73, 0x03, 0xFB, 0x06, 0x73, + 0x93, 0xF8, 0x56, 0x21, 0x42, 0xF0, 0x11, 0x02, 0x83, 0xF8, 0x56, 0x21, + 0x9A, 0xE7, 0x00, 0x23, 0x80, 0xF8, 0x36, 0x30, 0x03, 0xB0, 0xBD, 0xE8, + 0xF0, 0x83, 0x63, 0x6A, 0x43, 0xF4, 0x20, 0x13, 0x63, 0x62, 0xA0, 0xE7, + 0x38, 0x36, 0x17, 0x00, 0x68, 0x65, 0x17, 0x00, 0xA0, 0x86, 0x01, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x68, 0x8E, 0x15, 0x00, 0x00, 0x10, 0x50, 0x40, + 0x30, 0xB4, 0xCA, 0x0A, 0x12, 0xF0, 0x06, 0x0F, 0x9D, 0xF8, 0x08, 0x50, + 0x9D, 0xF8, 0x14, 0x40, 0x20, 0xD0, 0x02, 0xF0, 0x07, 0x02, 0x01, 0xF0, + 0x7F, 0x01, 0x04, 0x2A, 0x0C, 0xBF, 0x09, 0x09, 0xC1, 0xF3, 0xC1, 0x01, + 0x4B, 0xB9, 0xC3, 0x6B, 0x23, 0xF0, 0x04, 0x03, 0xC3, 0x63, 0x64, 0xB1, + 0x43, 0xF0, 0x10, 0x03, 0x30, 0xBC, 0xC3, 0x63, 0x70, 0x47, 0xA9, 0x42, + 0xF3, 0xD1, 0xC3, 0x6B, 0x43, 0xF0, 0x04, 0x03, 0xC3, 0x63, 0x00, 0x2C, + 0xF2, 0xD1, 0x23, 0xF0, 0x10, 0x03, 0x30, 0xBC, 0xC3, 0x63, 0x70, 0x47, + 0xC3, 0x6B, 0x23, 0xF0, 0x10, 0x03, 0xF8, 0xE7, 0x0B, 0x7B, 0x05, 0x2B, + 0x0E, 0xD1, 0x2D, 0xE9, 0xF0, 0x41, 0x4B, 0x7B, 0x84, 0xB0, 0x0C, 0x46, + 0x01, 0xF1, 0x0C, 0x07, 0x13, 0xB9, 0x0D, 0x88, 0x09, 0x2D, 0x05, 0xDC, + 0x00, 0x20, 0x04, 0xB0, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x20, 0x70, 0x47, + 0x0B, 0x20, 0x97, 0xF8, 0x02, 0x80, 0x7E, 0x7A, 0xEE, 0xF7, 0xC8, 0xF9, + 0x08, 0xBB, 0xFB, 0x78, 0x3B, 0xBB, 0x69, 0x1F, 0x04, 0xF1, 0x11, 0x00, + 0x1D, 0x46, 0x01, 0x22, 0x07, 0x78, 0x43, 0x78, 0x26, 0x2F, 0x03, 0xF1, + 0x02, 0x03, 0x14, 0xD1, 0x8B, 0x42, 0xA1, 0xEB, 0x03, 0x01, 0x10, 0xDC, + 0x05, 0xB9, 0x03, 0x90, 0x02, 0x29, 0x18, 0x44, 0x4F, 0xF0, 0x01, 0x05, + 0xEE, 0xDC, 0x00, 0x92, 0xE1, 0x79, 0x20, 0x7A, 0x42, 0x46, 0x03, 0xAB, + 0x00, 0xF0, 0x1A, 0xFD, 0x01, 0xF0, 0x52, 0xF8, 0xD0, 0xE7, 0x00, 0x96, + 0xE1, 0x79, 0x20, 0x7A, 0x42, 0x46, 0x04, 0x23, 0x00, 0xF0, 0xF4, 0xFC, + 0xC8, 0xE7, 0x00, 0x96, 0xE1, 0x79, 0x20, 0x7A, 0x42, 0x46, 0x02, 0x23, + 0x00, 0xF0, 0xEC, 0xFC, 0xC0, 0xE7, 0x00, 0xBF, 0x08, 0xB5, 0x0B, 0x20, + 0xEE, 0xF7, 0x90, 0xF9, 0x01, 0x28, 0x07, 0xD0, 0x09, 0x4B, 0x1B, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0xDB, 0x00, 0x20, 0x08, 0xBD, + 0x01, 0xF0, 0xEA, 0xF8, 0x00, 0x20, 0x08, 0xBD, 0x04, 0x49, 0x05, 0x48, + 0x9D, 0x22, 0xEF, 0xF7, 0xD5, 0xFF, 0x00, 0x20, 0x08, 0xBD, 0x00, 0xBF, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0x08, 0xB5, 0x0B, 0x20, 0xEE, 0xF7, 0x70, 0xF9, 0x04, 0x28, 0x07, 0xD0, + 0x09, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x05, 0xDB, + 0x00, 0x20, 0x08, 0xBD, 0x01, 0xF0, 0x3E, 0xF8, 0x00, 0x20, 0x08, 0xBD, + 0x04, 0x49, 0x05, 0x48, 0x81, 0x22, 0xEF, 0xF7, 0xB5, 0xFF, 0x00, 0x20, + 0x08, 0xBD, 0x00, 0xBF, 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0x3A, 0xB3, 0x93, 0x68, 0x10, 0xB4, 0x93, 0xB9, + 0x54, 0x69, 0x64, 0xB1, 0xFF, 0x28, 0x22, 0xD1, 0x00, 0x2C, 0x1A, 0xDD, + 0x18, 0x32, 0x10, 0x19, 0x01, 0xE0, 0x82, 0x42, 0x15, 0xD0, 0x12, 0xF8, + 0x01, 0x3B, 0x99, 0x42, 0xF9, 0xD1, 0x01, 0x20, 0x5D, 0xF8, 0x04, 0x4B, + 0x70, 0x47, 0xFF, 0x28, 0x13, 0xD0, 0x00, 0x2B, 0x09, 0xDD, 0x0C, 0x32, + 0x13, 0x44, 0x01, 0xE0, 0x9A, 0x42, 0x04, 0xD0, 0x12, 0xF8, 0x01, 0x1B, + 0x81, 0x42, 0xF9, 0xD1, 0xED, 0xE7, 0x00, 0x20, 0x5D, 0xF8, 0x04, 0x4B, + 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x18, 0x46, 0xE6, 0xE7, 0x54, 0x69, + 0xD8, 0xE7, 0x00, 0xBF, 0x38, 0xB5, 0x0A, 0x4D, 0x41, 0xF2, 0x98, 0x74, + 0x2B, 0x59, 0x63, 0xB1, 0x0B, 0x20, 0xEE, 0xF7, 0x1B, 0xF9, 0x03, 0x28, + 0x01, 0xD0, 0x00, 0x20, 0x38, 0xBD, 0x2B, 0x59, 0x18, 0x68, 0xB0, 0xFA, + 0x80, 0xF0, 0x40, 0x09, 0x38, 0xBD, 0x01, 0x20, 0x38, 0xBD, 0x00, 0xBF, + 0x78, 0xEF, 0x17, 0x00, 0x2D, 0xE9, 0xF0, 0x4F, 0x83, 0x46, 0x80, 0x6C, + 0x89, 0xB0, 0x14, 0x46, 0x99, 0x46, 0x00, 0xF1, 0x68, 0x05, 0x00, 0x29, + 0x3B, 0xD1, 0xB0, 0xF8, 0x68, 0x10, 0xBE, 0x4A, 0xB2, 0xF8, 0xFC, 0x31, + 0x01, 0x33, 0x9B, 0xB2, 0x1E, 0x01, 0xA2, 0xF8, 0xFC, 0x31, 0xA0, 0xF8, + 0x7E, 0x60, 0x05, 0x22, 0x58, 0x46, 0xFC, 0xF7, 0x53, 0xFA, 0x01, 0x28, + 0x00, 0xF0, 0xC8, 0x80, 0x1B, 0x23, 0x03, 0x93, 0x18, 0x23, 0xE9, 0x18, + 0x05, 0x22, 0xEA, 0x54, 0x01, 0x22, 0x4A, 0x70, 0x99, 0xF8, 0x00, 0x20, + 0x8A, 0x70, 0x01, 0xF1, 0x03, 0x0A, 0x00, 0x2C, 0x7B, 0xD0, 0x03, 0x22, + 0x27, 0x20, 0xC8, 0x70, 0x0A, 0x71, 0x99, 0xF8, 0x01, 0x20, 0x4A, 0x71, + 0x8C, 0x71, 0x99, 0xF8, 0x02, 0x20, 0xCA, 0x71, 0x08, 0x33, 0xDB, 0xF8, + 0x4C, 0x00, 0x9B, 0xF8, 0x35, 0x20, 0x41, 0x6A, 0x13, 0x44, 0x01, 0x39, + 0x19, 0x44, 0x04, 0x33, 0xC0, 0xE9, 0x0A, 0x13, 0x09, 0xB0, 0xBD, 0xE8, + 0xF0, 0x8F, 0xA2, 0x4B, 0xA2, 0x4E, 0x00, 0x22, 0x41, 0xF2, 0xA8, 0x7C, + 0x6F, 0xF0, 0x2F, 0x01, 0x80, 0xF8, 0x69, 0x20, 0x80, 0xF8, 0x6A, 0x20, + 0x80, 0xF8, 0x6B, 0x20, 0x80, 0xF8, 0x68, 0x10, 0x13, 0xF8, 0x0C, 0x10, + 0x9B, 0x4A, 0x4F, 0xF4, 0x1E, 0x77, 0x07, 0xFB, 0x01, 0xF1, 0x41, 0xF2, + 0xA9, 0x78, 0x89, 0x5B, 0xA0, 0xF8, 0x6C, 0x10, 0x13, 0xF8, 0x0C, 0x10, + 0x07, 0xFB, 0x01, 0x61, 0x4F, 0xF4, 0xA4, 0x6E, 0x49, 0x88, 0xA0, 0xF8, + 0x6E, 0x10, 0x13, 0xF8, 0x0C, 0x10, 0x07, 0xFB, 0x01, 0x61, 0x89, 0x88, + 0xA0, 0xF8, 0x70, 0x10, 0x13, 0xF8, 0x08, 0x10, 0x0E, 0xFB, 0x01, 0xF1, + 0x89, 0x5A, 0xA0, 0xF8, 0x72, 0x10, 0x13, 0xF8, 0x08, 0x10, 0x0E, 0xFB, + 0x01, 0x21, 0x49, 0x88, 0xA0, 0xF8, 0x74, 0x10, 0x13, 0xF8, 0x08, 0x10, + 0x0E, 0xFB, 0x01, 0x21, 0x89, 0x88, 0xA0, 0xF8, 0x76, 0x10, 0x13, 0xF8, + 0x08, 0x10, 0x0E, 0xFB, 0x01, 0xF1, 0x02, 0xEB, 0x01, 0x0A, 0x9A, 0xF8, + 0x06, 0xA0, 0xBA, 0xF1, 0x02, 0x0F, 0x5F, 0xD0, 0x13, 0xF8, 0x0C, 0x20, + 0x07, 0xFB, 0x02, 0xF2, 0xD0, 0x21, 0x92, 0x5B, 0xA0, 0xF8, 0x78, 0x20, + 0x13, 0xF8, 0x0C, 0x20, 0x07, 0xFB, 0x02, 0x62, 0x52, 0x88, 0xA0, 0xF8, + 0x7A, 0x20, 0x13, 0xF8, 0x0C, 0x30, 0x07, 0xFB, 0x03, 0x66, 0xB3, 0x88, + 0xA0, 0xF8, 0x7C, 0x30, 0x63, 0xE7, 0x03, 0x9B, 0x01, 0x94, 0xC3, 0xF5, + 0xC0, 0x73, 0x9B, 0xB2, 0x02, 0x93, 0xCD, 0xF8, 0x14, 0xB0, 0x99, 0xF8, + 0x02, 0x30, 0x02, 0x9A, 0x05, 0x2B, 0xA2, 0xF1, 0x05, 0x04, 0xA4, 0xB2, + 0x00, 0xF0, 0xE2, 0x80, 0x27, 0x23, 0x8A, 0xF8, 0x00, 0x30, 0x99, 0xF8, + 0x01, 0x30, 0x8A, 0xF8, 0x02, 0x30, 0x00, 0x23, 0x8A, 0xF8, 0x03, 0x30, + 0x99, 0xF8, 0x02, 0x30, 0x8A, 0xF8, 0x04, 0x30, 0x05, 0x2B, 0x3A, 0xD0, + 0x03, 0x23, 0x8A, 0xF8, 0x01, 0x30, 0x02, 0x94, 0x0A, 0xF1, 0x05, 0x0A, + 0x05, 0x25, 0xFF, 0xF7, 0x15, 0xFF, 0x01, 0x9B, 0x2B, 0x44, 0x01, 0x93, + 0x08, 0xB9, 0x04, 0x2C, 0xD7, 0xD8, 0x5C, 0x4B, 0xDD, 0xF8, 0x14, 0xB0, + 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0x9D, 0x80, + 0x01, 0x9B, 0x03, 0x9A, 0x13, 0x44, 0x52, 0xE7, 0x18, 0x22, 0x29, 0x46, + 0x58, 0x46, 0xFA, 0xF7, 0xE7, 0xFF, 0x9B, 0xF8, 0x33, 0x20, 0x02, 0xF1, + 0x18, 0x03, 0x1B, 0x32, 0x03, 0x92, 0x2E, 0xE7, 0x89, 0x5A, 0xA0, 0xF8, + 0x78, 0x10, 0x13, 0xF8, 0x08, 0x60, 0x0E, 0xFB, 0x06, 0x26, 0xD0, 0x21, + 0x76, 0x88, 0xA0, 0xF8, 0x7A, 0x60, 0x13, 0xF8, 0x08, 0x30, 0x0E, 0xFB, + 0x03, 0x22, 0x93, 0x88, 0xA0, 0xF8, 0x7C, 0x30, 0x07, 0xE7, 0xD9, 0xF8, + 0x5C, 0x20, 0x46, 0x49, 0x01, 0x32, 0x0D, 0x68, 0xC9, 0xF8, 0x5C, 0x20, + 0x0A, 0xF1, 0x05, 0x02, 0x04, 0x92, 0x00, 0x2D, 0x00, 0xF0, 0x45, 0x81, + 0xEB, 0x7C, 0x8A, 0xF8, 0x05, 0x30, 0x2B, 0x7C, 0x8A, 0xF8, 0x06, 0x30, + 0xD9, 0xE9, 0x0A, 0x12, 0xB9, 0xF8, 0x30, 0x30, 0xAA, 0xF8, 0x0F, 0x30, + 0xCA, 0xF8, 0x07, 0x10, 0xCA, 0xF8, 0x0B, 0x20, 0xAB, 0x7C, 0x8A, 0xF8, + 0x11, 0x30, 0x95, 0xF9, 0x14, 0x00, 0xEE, 0xF7, 0x21, 0xFF, 0xFF, 0x23, + 0x8A, 0xF8, 0x12, 0x00, 0x8A, 0xF8, 0x13, 0x30, 0x05, 0xF1, 0x0C, 0x00, + 0xAB, 0x1D, 0x13, 0xF8, 0x01, 0x1B, 0x03, 0xF1, 0x0D, 0x02, 0x52, 0x1B, + 0x83, 0x42, 0x02, 0xF8, 0x0A, 0x10, 0xF6, 0xD1, 0x6B, 0x7C, 0x8A, 0xF8, + 0x1A, 0x30, 0x02, 0x9A, 0xEB, 0x68, 0xCA, 0xF8, 0x1B, 0x30, 0x40, 0xF2, + 0x01, 0x14, 0x94, 0x42, 0x99, 0xF8, 0x20, 0x30, 0x28, 0xBF, 0x14, 0x46, + 0x0A, 0xF1, 0x1F, 0x02, 0xA4, 0xB2, 0x04, 0x92, 0x00, 0x2B, 0x40, 0xF0, + 0x05, 0x81, 0x1F, 0x3C, 0xA4, 0xB2, 0x99, 0xF8, 0x04, 0x30, 0x00, 0x2B, + 0x6D, 0xD1, 0x6B, 0x8B, 0x2B, 0x83, 0x03, 0x23, 0x1D, 0x48, 0xAB, 0x80, + 0x29, 0x46, 0xEE, 0xF7, 0xEB, 0xF9, 0x99, 0xF8, 0x20, 0x30, 0x00, 0x2B, + 0x40, 0xF0, 0x12, 0x81, 0x04, 0x9B, 0x02, 0x9A, 0xA3, 0xEB, 0x0A, 0x05, + 0xAB, 0x1E, 0x8A, 0xF8, 0x01, 0x30, 0x14, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x54, 0x1B, 0x00, 0x2B, 0xA4, 0xB2, 0x80, 0xF2, 0xF9, 0x80, + 0xAA, 0x42, 0x80, 0xF0, 0xF6, 0x80, 0x10, 0x49, 0x10, 0x48, 0xDD, 0xF8, + 0x10, 0xA0, 0x40, 0xF2, 0x07, 0x52, 0xEF, 0xF7, 0xCF, 0xFD, 0x02, 0x94, + 0x51, 0xE7, 0x01, 0x9B, 0x00, 0x2B, 0x7F, 0xF4, 0x5F, 0xAF, 0x09, 0x49, + 0x0A, 0x48, 0x40, 0xF2, 0x12, 0x52, 0xEF, 0xF7, 0xDB, 0xFD, 0x57, 0xE7, + 0x20, 0x62, 0x17, 0x00, 0x78, 0xEF, 0x17, 0x00, 0x8E, 0x65, 0x17, 0x00, + 0x74, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0x10, 0x07, 0x18, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xF4, 0xD0, 0x15, 0x00, 0x0C, 0xD1, 0x15, 0x00, + 0x94, 0x4B, 0x1A, 0x68, 0x00, 0x2A, 0x3F, 0xF4, 0x19, 0xAF, 0x19, 0x2C, + 0x7F, 0xF6, 0x35, 0xAF, 0x02, 0x98, 0x99, 0xF8, 0x20, 0x10, 0xA0, 0xF1, + 0x1F, 0x03, 0x9B, 0xB2, 0x29, 0xB1, 0x02, 0x2B, 0x7F, 0xF6, 0x2B, 0xAF, + 0xA0, 0xF1, 0x22, 0x03, 0x9B, 0xB2, 0x99, 0xF8, 0x04, 0x10, 0x00, 0x29, + 0x3F, 0xF4, 0x04, 0xAF, 0x03, 0x2B, 0x7F, 0xF6, 0x20, 0xAF, 0x10, 0x8B, + 0x04, 0x3B, 0x9D, 0xB2, 0x00, 0x28, 0x40, 0xF0, 0xCF, 0x80, 0x0D, 0x2D, + 0x3F, 0xF6, 0xF8, 0xAE, 0x15, 0xE7, 0x04, 0x9A, 0x01, 0x23, 0x13, 0x70, + 0x2B, 0x8B, 0xA2, 0x1F, 0x92, 0xB2, 0x0A, 0xF1, 0x21, 0x01, 0x0B, 0x2B, + 0x06, 0x92, 0x8C, 0x46, 0x1B, 0xD8, 0x7C, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xC0, 0xF2, 0xAE, 0x80, 0x05, 0xF1, 0x1C, 0x02, + 0x05, 0xF1, 0x28, 0x00, 0x13, 0x46, 0x05, 0x33, 0x12, 0xF8, 0x01, 0x1B, + 0x5B, 0x1B, 0x82, 0x42, 0x03, 0xF8, 0x0A, 0x10, 0xF6, 0xD1, 0x0C, 0x23, + 0x12, 0x3C, 0xA2, 0xB2, 0x2B, 0x83, 0x0A, 0xF1, 0x2D, 0x03, 0x06, 0x92, + 0x9C, 0x46, 0x99, 0xF8, 0x04, 0x30, 0x01, 0x2B, 0x3A, 0xD0, 0x2B, 0x8B, + 0x6E, 0x8B, 0xF6, 0x1A, 0x05, 0xF1, 0x1C, 0x07, 0xB6, 0xB2, 0x1F, 0x44, + 0x00, 0x2E, 0x3B, 0xD0, 0xCD, 0xF8, 0x1C, 0xA0, 0xE3, 0x46, 0xAA, 0x46, + 0x09, 0xE0, 0xBA, 0xF8, 0x18, 0x10, 0x36, 0x1B, 0xB6, 0xB2, 0x0C, 0x44, + 0x2F, 0x44, 0xAA, 0xF8, 0x18, 0x40, 0x00, 0x2E, 0x5D, 0xD0, 0x97, 0xF8, + 0x00, 0x80, 0xB9, 0x78, 0x7C, 0x78, 0x40, 0x46, 0x4A, 0x46, 0xFF, 0xF7, + 0xA9, 0xFD, 0xA5, 0x1C, 0x02, 0x34, 0xED, 0xB2, 0xE4, 0xB2, 0x00, 0x28, + 0xE7, 0xD0, 0xD9, 0x2D, 0xE5, 0xD8, 0x06, 0x9B, 0x9C, 0x42, 0x4A, 0xD8, + 0x4D, 0xB1, 0x59, 0x46, 0x78, 0x1A, 0xAB, 0x44, 0x01, 0xE0, 0x10, 0xF8, + 0x01, 0x80, 0x01, 0xF8, 0x01, 0x8B, 0x8B, 0x45, 0xF9, 0xD1, 0x06, 0x9B, + 0x1B, 0x1B, 0x9B, 0xB2, 0x06, 0x93, 0xD2, 0xE7, 0xD9, 0xF8, 0x08, 0x30, + 0x00, 0x2B, 0xC0, 0xD1, 0xD9, 0xF8, 0x14, 0x30, 0x00, 0x2B, 0xBC, 0xD1, + 0x6B, 0x8B, 0x2B, 0x83, 0x04, 0x9B, 0xC3, 0xF1, 0xFE, 0x0B, 0xE3, 0x44, + 0x02, 0x23, 0x8A, 0xF8, 0x20, 0xB0, 0x8C, 0xF8, 0x00, 0x30, 0x8C, 0xF8, + 0x01, 0x30, 0xEA, 0x7D, 0x28, 0x8B, 0x69, 0x8B, 0x99, 0xF8, 0x01, 0x30, + 0x54, 0x1C, 0x88, 0x42, 0x66, 0x46, 0xEC, 0x75, 0x43, 0xEA, 0x02, 0x23, + 0x23, 0xD2, 0x6F, 0xEA, 0x43, 0x43, 0x6F, 0xEA, 0x53, 0x43, 0xAC, 0xF8, + 0x02, 0x30, 0x33, 0x1D, 0x04, 0x93, 0x08, 0xE7, 0x22, 0x3C, 0xA4, 0xB2, + 0xF9, 0xE6, 0x03, 0x22, 0x8A, 0xF8, 0x01, 0x20, 0x36, 0x4A, 0x12, 0x68, + 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x09, 0xDB, 0xDD, 0xF8, 0x10, 0xA0, + 0x02, 0x94, 0x1D, 0x46, 0x6B, 0xE6, 0x55, 0x46, 0xDC, 0x46, 0xDD, 0xF8, + 0x1C, 0xA0, 0xC9, 0xE7, 0x1D, 0x46, 0xDD, 0xF8, 0x10, 0xA0, 0x02, 0x94, + 0x61, 0xE6, 0xAC, 0xF8, 0x02, 0x30, 0x33, 0x1D, 0x04, 0x93, 0xE2, 0xE6, + 0x04, 0x9D, 0xA4, 0x23, 0x01, 0x24, 0x2B, 0x70, 0x6C, 0x70, 0xFF, 0xF7, + 0x6D, 0xFD, 0x20, 0xB1, 0xAC, 0x70, 0x04, 0x9B, 0x03, 0x33, 0x04, 0x93, + 0xE0, 0xE6, 0x04, 0x9B, 0x98, 0x70, 0xF8, 0xE7, 0x0B, 0x2A, 0x3F, 0xF6, + 0x4F, 0xAF, 0x21, 0x49, 0x21, 0x48, 0x40, 0xF2, 0x7D, 0x42, 0xEF, 0xF7, + 0xBF, 0xFC, 0x47, 0xE7, 0xB2, 0xF8, 0x1A, 0x80, 0x01, 0x29, 0x02, 0xF1, + 0x1C, 0x02, 0xA8, 0xEB, 0x00, 0x08, 0x02, 0xEB, 0x00, 0x07, 0x08, 0xD0, + 0xB8, 0xF1, 0x00, 0x0F, 0x1B, 0xD0, 0x7B, 0x78, 0x03, 0x33, 0xAB, 0x42, + 0xFF, 0xF6, 0x1A, 0xAE, 0x37, 0xE6, 0x7E, 0x78, 0x10, 0x5C, 0x97, 0xF8, + 0x02, 0xB0, 0x02, 0x36, 0xF6, 0xB2, 0x03, 0xE0, 0x7E, 0x78, 0x38, 0x78, + 0x02, 0x36, 0xF6, 0xB2, 0x4A, 0x46, 0x59, 0x46, 0xFF, 0xF7, 0x08, 0xFD, + 0x08, 0xB1, 0xD9, 0x2E, 0xE4, 0xD9, 0xB8, 0xEB, 0x06, 0x08, 0x37, 0x44, + 0xF0, 0xD1, 0x08, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xBF, 0xF6, 0xFC, 0xAD, 0x05, 0x49, 0x07, 0x48, 0x40, 0xF2, 0x13, 0x42, + 0xEF, 0xF7, 0xA0, 0xFC, 0xF4, 0xE5, 0x00, 0xBF, 0x10, 0x07, 0x18, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0xD0, 0xD0, 0x15, 0x00, + 0x64, 0x7D, 0x15, 0x00, 0xF8, 0xB5, 0x2D, 0x4E, 0x41, 0xF2, 0xA9, 0x73, + 0xF2, 0x5C, 0x03, 0x2A, 0x42, 0xD8, 0x41, 0xF2, 0xA8, 0x73, 0xF3, 0x5C, + 0x09, 0x2B, 0x3D, 0xD8, 0x0D, 0x46, 0x28, 0x49, 0x4F, 0xF4, 0xA4, 0x63, + 0x03, 0xFB, 0x02, 0x13, 0x07, 0x46, 0x1B, 0x6C, 0x00, 0x2B, 0x3E, 0xD0, + 0x24, 0x48, 0x1B, 0x79, 0x00, 0x68, 0xB0, 0xF9, 0x00, 0x00, 0x00, 0x28, + 0x2D, 0xDB, 0x4F, 0xF4, 0xA4, 0x60, 0x00, 0xFB, 0x02, 0x12, 0x92, 0xF8, + 0xC0, 0x24, 0x13, 0x43, 0x14, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x4F, 0xF4, + 0xC0, 0x71, 0xDA, 0xF7, 0x3D, 0xFE, 0x04, 0x46, 0xE0, 0xB1, 0x41, 0xF2, + 0xA9, 0x72, 0x41, 0xF2, 0xA8, 0x73, 0xB2, 0x5C, 0x02, 0x77, 0xF3, 0x5C, + 0x43, 0x77, 0x00, 0x23, 0x80, 0xF8, 0x33, 0x30, 0x80, 0xF8, 0x35, 0x30, + 0x15, 0xB9, 0x13, 0x4B, 0xC0, 0xE9, 0x15, 0x30, 0x20, 0x46, 0x3B, 0x46, + 0x2A, 0x46, 0x01, 0x21, 0xFF, 0xF7, 0xEC, 0xFC, 0x20, 0x46, 0x03, 0x21, + 0xBD, 0xE8, 0xF8, 0x40, 0xDA, 0xF7, 0x2E, 0xBE, 0xF8, 0xBD, 0x02, 0x2B, + 0xCF, 0xD1, 0x0B, 0x49, 0x0B, 0x48, 0x4F, 0xF4, 0x09, 0x72, 0xEF, 0xF7, + 0x29, 0xFC, 0x01, 0x20, 0xD1, 0xE7, 0x05, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0xF7, 0xDA, 0xF0, 0xE7, 0x78, 0xEF, 0x17, 0x00, + 0x18, 0x88, 0x17, 0x00, 0x38, 0x36, 0x17, 0x00, 0xA1, 0x5E, 0x15, 0x00, + 0x70, 0x79, 0x15, 0x00, 0xFC, 0x90, 0x15, 0x00, 0x00, 0x2A, 0x35, 0xD0, + 0x70, 0xB5, 0x04, 0x46, 0x92, 0xF8, 0x32, 0x00, 0x8A, 0xB0, 0x13, 0x46, + 0x58, 0xB9, 0x95, 0x8E, 0x22, 0x88, 0x95, 0x42, 0x28, 0xD1, 0xDD, 0x8E, + 0x62, 0x88, 0x95, 0x42, 0x24, 0xD1, 0xA2, 0x88, 0x1C, 0x8F, 0x94, 0x42, + 0x20, 0xD1, 0x93, 0xF8, 0x3A, 0x20, 0xE2, 0xB1, 0xD9, 0xB1, 0x4D, 0x78, + 0x8D, 0xF8, 0x04, 0x50, 0x6D, 0xB1, 0x01, 0xA8, 0x05, 0x44, 0xC0, 0xF1, + 0x02, 0x06, 0x44, 0x18, 0xA4, 0x5D, 0x00, 0xF8, 0x01, 0x4F, 0xA8, 0x42, + 0xF9, 0xD1, 0x9D, 0xF8, 0x04, 0x10, 0x91, 0x42, 0x01, 0xD0, 0x00, 0x20, + 0x08, 0xE0, 0x03, 0xF1, 0x3B, 0x00, 0x0D, 0xF1, 0x05, 0x01, 0x01, 0xF0, + 0x57, 0xFE, 0x00, 0x28, 0xF5, 0xD1, 0x01, 0x20, 0x0A, 0xB0, 0x70, 0xBD, + 0x01, 0x20, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x47, 0x04, 0x46, 0xB1, 0xB1, + 0x64, 0x48, 0x65, 0x4D, 0xA0, 0xF1, 0x82, 0x07, 0xED, 0xF7, 0x78, 0xFF, + 0x00, 0x26, 0x25, 0xF8, 0x02, 0x6C, 0x28, 0x46, 0x06, 0x22, 0x00, 0x21, + 0x05, 0xF5, 0xF6, 0x75, 0xCA, 0xF7, 0xDE, 0xFE, 0xBD, 0x42, 0xF4, 0xD1, + 0xEC, 0xF7, 0x56, 0xFC, 0xC4, 0xE9, 0x0A, 0x01, 0x26, 0x66, 0x5B, 0x4E, + 0xDF, 0xF8, 0x6C, 0x81, 0x06, 0xF1, 0x88, 0x07, 0x0B, 0x20, 0xED, 0xF7, + 0x77, 0xFD, 0x01, 0x28, 0x39, 0xD1, 0x57, 0x4D, 0x4F, 0xF0, 0x00, 0x09, + 0x4F, 0xF0, 0x02, 0x0A, 0x03, 0xE0, 0x05, 0xF5, 0xF6, 0x75, 0xB5, 0x42, + 0x1A, 0xD0, 0xAB, 0x88, 0x01, 0x2B, 0xF8, 0xD1, 0x6B, 0x7D, 0x05, 0xF1, + 0x1C, 0x01, 0x19, 0x44, 0x22, 0x46, 0xA8, 0x1D, 0xFF, 0xF7, 0x8C, 0xFF, + 0x00, 0x28, 0xEE, 0xD0, 0x29, 0x46, 0xA5, 0xF8, 0x18, 0x90, 0x85, 0xF8, + 0x17, 0x90, 0xA5, 0xF8, 0x04, 0xA0, 0x38, 0x46, 0x05, 0xF5, 0xF6, 0x75, + 0xED, 0xF7, 0x3E, 0xFF, 0xB5, 0x42, 0xE4, 0xD1, 0x23, 0x6E, 0x94, 0xF8, + 0x65, 0x20, 0x01, 0x33, 0x93, 0x42, 0x23, 0x66, 0x5D, 0xDA, 0x03, 0x21, + 0x0B, 0x20, 0xED, 0xF7, 0x9D, 0xFC, 0xFF, 0xF7, 0x1F, 0xFC, 0x00, 0x28, + 0xC6, 0xD1, 0x20, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, + 0xFF, 0xBE, 0x01, 0x21, 0x0B, 0x20, 0xED, 0xF7, 0x8F, 0xFC, 0x23, 0x6E, + 0x06, 0xE0, 0x23, 0x6E, 0x94, 0xF8, 0x65, 0x20, 0x01, 0x33, 0x93, 0x42, + 0x23, 0x66, 0xB3, 0xDA, 0x23, 0x44, 0x94, 0xF8, 0x64, 0x00, 0x93, 0xF8, + 0x66, 0x10, 0xF1, 0xF7, 0xBB, 0xFF, 0x05, 0x46, 0x00, 0x28, 0xEE, 0xD0, + 0xC3, 0x78, 0x9B, 0x07, 0xEB, 0xD4, 0x4F, 0xF4, 0xBA, 0x73, 0x0B, 0x22, + 0x04, 0x21, 0x4F, 0xF4, 0x80, 0x50, 0xED, 0xF7, 0x77, 0xFA, 0x06, 0x46, + 0x28, 0x68, 0x30, 0x60, 0xAB, 0x88, 0xB3, 0x80, 0xE3, 0x78, 0x1B, 0xB9, + 0xF3, 0x78, 0x43, 0xF0, 0x01, 0x03, 0xF3, 0x70, 0x01, 0x25, 0x86, 0xF8, + 0x6F, 0x51, 0x94, 0xF8, 0x3A, 0x20, 0x86, 0xF8, 0xFC, 0x20, 0x04, 0xF1, + 0x3B, 0x01, 0x06, 0xF1, 0xFD, 0x00, 0x01, 0xF0, 0xE7, 0xFD, 0x86, 0xF8, + 0x70, 0x51, 0xA3, 0x8E, 0xA6, 0xF8, 0x60, 0x31, 0xE3, 0x8E, 0xA6, 0xF8, + 0x62, 0x31, 0x23, 0x8F, 0xA6, 0xF8, 0x64, 0x31, 0x41, 0xF2, 0xA9, 0x73, + 0x30, 0x46, 0x18, 0xF8, 0x03, 0x30, 0x86, 0xF8, 0x6E, 0x31, 0xBD, 0xE8, + 0xF0, 0x47, 0xED, 0xF7, 0x79, 0xBA, 0x13, 0x4B, 0x1B, 0x68, 0xB3, 0xF9, + 0x00, 0x30, 0x00, 0x2B, 0x09, 0xDB, 0x02, 0x21, 0x0B, 0x20, 0xED, 0xF7, + 0x39, 0xFC, 0x20, 0x46, 0x00, 0x21, 0xBD, 0xE8, 0xF0, 0x47, 0xFF, 0xF7, + 0x9F, 0xBE, 0xFF, 0xF7, 0xB5, 0xFB, 0x00, 0x28, 0xF1, 0xD0, 0xE3, 0x6D, + 0x00, 0x2B, 0xEE, 0xD0, 0x08, 0x49, 0x09, 0x48, 0x40, 0xF2, 0x22, 0x62, + 0xEF, 0xF7, 0x0E, 0xFB, 0xE7, 0xE7, 0x00, 0xBF, 0x10, 0x07, 0x18, 0x00, + 0x7E, 0xEF, 0x17, 0x00, 0x88, 0x06, 0x18, 0x00, 0x78, 0xEF, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x70, 0x79, 0x15, 0x00, 0x1C, 0xD1, 0x15, 0x00, + 0x10, 0xB5, 0x08, 0x4C, 0x00, 0x21, 0x0B, 0x20, 0xED, 0xF7, 0x10, 0xFC, + 0x20, 0x46, 0x41, 0xF2, 0xB0, 0x72, 0x00, 0x21, 0x04, 0xF5, 0xBD, 0x54, + 0xCA, 0xF7, 0x08, 0xFE, 0x4F, 0xF0, 0xFF, 0x33, 0x23, 0x60, 0x10, 0xBD, + 0x78, 0xEF, 0x17, 0x00, 0xF0, 0xB5, 0xA3, 0xB0, 0x0B, 0x4C, 0x9D, 0xF8, + 0xA0, 0x50, 0x8D, 0xF8, 0x02, 0x50, 0x41, 0xF2, 0xA8, 0x75, 0x84, 0x46, + 0x41, 0xF2, 0xA9, 0x77, 0x08, 0x46, 0x66, 0x5B, 0x60, 0x55, 0x19, 0x46, + 0x68, 0x46, 0x04, 0xF8, 0x07, 0xC0, 0x8D, 0xF8, 0x00, 0x20, 0xFF, 0xF7, + 0x57, 0xFE, 0x66, 0x53, 0x23, 0xB0, 0xF0, 0xBD, 0x78, 0xEF, 0x17, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0xAB, 0xB0, 0x41, 0xF2, 0xA8, 0x76, 0x00, 0x92, + 0xC4, 0x4A, 0x41, 0xF2, 0xA9, 0x75, 0x91, 0x55, 0xCD, 0xE9, 0x01, 0x01, + 0x02, 0xF5, 0xBD, 0x51, 0x50, 0x55, 0x4F, 0xF0, 0xFF, 0x30, 0x08, 0x60, + 0x34, 0x99, 0x16, 0x46, 0x41, 0xF2, 0xA4, 0x74, 0x00, 0x22, 0x91, 0x42, + 0x32, 0x51, 0x34, 0xDD, 0xDF, 0xF8, 0xF0, 0x82, 0x1F, 0x46, 0x91, 0x46, + 0xBA, 0x46, 0x57, 0xF8, 0x04, 0x4B, 0x65, 0x78, 0xAB, 0x1C, 0x04, 0x2B, + 0x37, 0xD9, 0x88, 0x22, 0x00, 0x21, 0x40, 0x46, 0xCA, 0xF7, 0xBC, 0xFD, + 0xA3, 0x78, 0x88, 0xF8, 0x01, 0x30, 0xE3, 0x78, 0x22, 0x79, 0x88, 0xF8, + 0x02, 0x20, 0xD9, 0x07, 0x03, 0xD4, 0x9B, 0x07, 0x1C, 0xD4, 0x05, 0x2A, + 0x73, 0xD0, 0xDA, 0xF8, 0x00, 0x40, 0x02, 0x21, 0x00, 0x9A, 0x23, 0x79, + 0x8D, 0xF8, 0x20, 0x20, 0xA8, 0x4A, 0x02, 0x98, 0x8D, 0xF8, 0x22, 0x30, + 0x41, 0xF2, 0xA8, 0x75, 0x41, 0xF2, 0xA9, 0x73, 0x16, 0x46, 0x54, 0x5B, + 0x01, 0x9F, 0x50, 0x55, 0x08, 0xA8, 0xD7, 0x54, 0xFF, 0xF7, 0x04, 0xFE, + 0x74, 0x53, 0x2B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, 0x98, 0xF8, 0x00, 0x30, + 0x00, 0x9A, 0x93, 0x42, 0x4C, 0xD0, 0x34, 0x9B, 0x09, 0xF1, 0x01, 0x09, + 0x4B, 0x45, 0xC1, 0xD1, 0xF1, 0xE7, 0x04, 0x21, 0xDA, 0xE7, 0xA3, 0x2C, + 0x00, 0xF0, 0x25, 0x81, 0xA4, 0x2C, 0x40, 0xF0, 0x18, 0x81, 0x98, 0x78, + 0x88, 0xF8, 0x20, 0x00, 0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, 0x0B, 0x44, + 0x00, 0xF2, 0x82, 0x80, 0x98, 0xF8, 0x03, 0x30, 0x01, 0x2B, 0x3E, 0x46, + 0x03, 0x9F, 0x2C, 0xD8, 0x04, 0x9C, 0x72, 0x2C, 0x23, 0x46, 0x94, 0xBF, + 0x00, 0x23, 0x01, 0x23, 0x88, 0xF8, 0x64, 0x30, 0x00, 0x2E, 0x00, 0xF0, + 0x2B, 0x81, 0xB6, 0xF8, 0x03, 0x20, 0xB1, 0x78, 0xB0, 0x88, 0x88, 0xF8, + 0x66, 0x40, 0x41, 0xF2, 0x88, 0x33, 0x9A, 0x42, 0x94, 0xBF, 0x00, 0x22, + 0x01, 0x22, 0x01, 0x23, 0x88, 0xF8, 0x64, 0x20, 0x88, 0xF8, 0x65, 0x30, + 0x00, 0x29, 0x40, 0xF0, 0x03, 0x81, 0x05, 0x9A, 0x88, 0xF8, 0x64, 0x10, + 0x94, 0x42, 0x06, 0xD0, 0x80, 0xF0, 0x59, 0x81, 0x04, 0x9B, 0x04, 0x33, + 0x88, 0xF8, 0x67, 0x30, 0x02, 0x23, 0x88, 0xF8, 0x65, 0x30, 0x00, 0x9B, + 0x88, 0xF8, 0x00, 0x30, 0x76, 0x4A, 0x13, 0x68, 0x01, 0x33, 0x08, 0xF1, + 0x88, 0x08, 0x13, 0x60, 0xAB, 0xE7, 0xEB, 0x1E, 0x0C, 0x2B, 0x40, 0xF2, + 0xDD, 0x80, 0xE3, 0x7A, 0x88, 0xF8, 0x03, 0x30, 0x02, 0x2B, 0x82, 0xD8, + 0x62, 0x79, 0x63, 0x7A, 0x04, 0x92, 0xA2, 0x79, 0x05, 0x92, 0xA8, 0xF8, + 0x30, 0x30, 0x08, 0xF1, 0x3A, 0x0E, 0x08, 0xF1, 0x34, 0x03, 0xA4, 0xEB, + 0x08, 0x01, 0x5A, 0x18, 0x12, 0xF8, 0x28, 0x2C, 0x03, 0xF8, 0x01, 0x2B, + 0x73, 0x45, 0xF8, 0xD1, 0xB8, 0xF8, 0x34, 0x20, 0x4F, 0xF6, 0xFF, 0x73, + 0x9A, 0x42, 0xA5, 0xF1, 0x10, 0x02, 0x08, 0xBF, 0x01, 0x23, 0x4F, 0xF0, + 0x02, 0x01, 0x92, 0xB2, 0x08, 0xBF, 0x88, 0xF8, 0x32, 0x30, 0x8A, 0x42, + 0x04, 0xF1, 0x12, 0x03, 0x88, 0xF8, 0x04, 0x10, 0x40, 0xF2, 0x47, 0x81, + 0x00, 0x21, 0x6F, 0xF0, 0x13, 0x00, 0x0C, 0x46, 0x6F, 0xF0, 0x08, 0x06, + 0x6F, 0xF0, 0x37, 0x0C, 0x0D, 0x46, 0xA0, 0xEB, 0x08, 0x01, 0x03, 0x97, + 0x06, 0x91, 0xA6, 0xEB, 0x08, 0x06, 0xAC, 0xEB, 0x08, 0x0C, 0x27, 0x46, + 0x58, 0x78, 0x1C, 0x78, 0x81, 0x1C, 0x91, 0x42, 0x00, 0xF2, 0x96, 0x80, + 0x0B, 0x2C, 0x3F, 0xF6, 0x66, 0xAF, 0x0B, 0x2C, 0x3F, 0xF6, 0x6C, 0xAF, + 0x0F, 0xF2, 0x04, 0x0B, 0x5B, 0xF8, 0x24, 0xF0, 0xA9, 0x58, 0x15, 0x00, + 0xB1, 0x56, 0x15, 0x00, 0x97, 0x58, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, + 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, + 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, 0xB1, 0x56, 0x15, 0x00, + 0x65, 0x58, 0x15, 0x00, 0x11, 0x58, 0x15, 0x00, 0x02, 0x29, 0x71, 0xD0, + 0x9C, 0x78, 0xFF, 0x2C, 0x7F, 0xF4, 0x4A, 0xAF, 0x00, 0xF1, 0xFF, 0x3B, + 0x5F, 0xFA, 0x8B, 0xFB, 0xBB, 0xF1, 0x08, 0x0F, 0x28, 0xBF, 0x4F, 0xF0, + 0x08, 0x0B, 0x01, 0x28, 0xC8, 0xF8, 0x14, 0xB0, 0x3F, 0xF4, 0x3C, 0xAF, + 0x08, 0xF1, 0x17, 0x00, 0xCD, 0xF8, 0x1C, 0xA0, 0xDD, 0xF8, 0x18, 0xA0, + 0x83, 0x44, 0x1C, 0x18, 0x14, 0xF8, 0x0A, 0x40, 0x00, 0xF8, 0x01, 0x4F, + 0x58, 0x45, 0xF8, 0xD1, 0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, 0xDD, 0xF8, + 0x1C, 0xA0, 0x0B, 0x44, 0xAE, 0xD8, 0x2B, 0xE7, 0x8C, 0x1E, 0x08, 0x2C, + 0xA8, 0xBF, 0x08, 0x24, 0x02, 0x29, 0xC8, 0xF8, 0x08, 0x40, 0x3F, 0xF4, + 0x1D, 0xAF, 0x08, 0xF1, 0x0B, 0x00, 0x00, 0xEB, 0x04, 0x0B, 0x1C, 0x18, + 0xA4, 0x5D, 0x00, 0xF8, 0x01, 0x4F, 0x83, 0x45, 0xF9, 0xD1, 0x52, 0x1A, + 0x92, 0xB2, 0x02, 0x2A, 0x0B, 0x44, 0x95, 0xD8, 0x12, 0xE7, 0x52, 0x1A, + 0x92, 0xB2, 0x98, 0x78, 0x88, 0xF8, 0x04, 0x00, 0x02, 0x2A, 0x0B, 0x44, + 0x8C, 0xD8, 0x09, 0xE7, 0x22, 0x29, 0x25, 0xD8, 0x88, 0xF8, 0x3A, 0x00, + 0x00, 0x28, 0x3F, 0xF4, 0xFD, 0xAE, 0x00, 0xEB, 0x0E, 0x04, 0x70, 0x46, + 0x00, 0xEB, 0x03, 0x0B, 0x1B, 0xF8, 0x0C, 0xB0, 0x00, 0xF8, 0x01, 0xBF, + 0xA0, 0x42, 0xF7, 0xD1, 0x52, 0x1A, 0x92, 0xB2, 0x02, 0x2A, 0x0B, 0x44, + 0x3F, 0xF6, 0x74, 0xAF, 0xF0, 0xE6, 0x52, 0x1A, 0x92, 0xB2, 0x33, 0x2C, + 0x08, 0xBF, 0x1D, 0x46, 0x02, 0x2A, 0x0B, 0x44, 0x3F, 0xF6, 0x6A, 0xAF, + 0xE6, 0xE6, 0x1F, 0x46, 0xDE, 0xE6, 0x00, 0x23, 0x88, 0xF8, 0x65, 0x30, + 0xDA, 0xF8, 0x00, 0x40, 0x04, 0x21, 0xA9, 0xE6, 0x78, 0xEF, 0x17, 0x00, + 0x1C, 0x07, 0x18, 0x00, 0x88, 0x06, 0x18, 0x00, 0x01, 0x29, 0x08, 0xF1, + 0x66, 0x03, 0x00, 0xF0, 0x47, 0x81, 0x04, 0x9A, 0x41, 0x2A, 0x35, 0xBF, + 0x40, 0x20, 0x80, 0x20, 0x24, 0x22, 0x64, 0x22, 0x11, 0x1D, 0x03, 0xF8, + 0x01, 0x2B, 0xCA, 0xB2, 0x90, 0x42, 0xF9, 0xD2, 0x08, 0x23, 0xF4, 0xE6, + 0x05, 0x9B, 0xFF, 0x2B, 0x4E, 0xD0, 0x05, 0x9B, 0x00, 0x2B, 0x00, 0xF0, + 0x85, 0x80, 0x05, 0x9A, 0x88, 0xF8, 0x66, 0x20, 0x01, 0x23, 0x88, 0xF8, + 0x65, 0x30, 0x04, 0x9B, 0xA3, 0xF1, 0x53, 0x02, 0x08, 0xF1, 0x66, 0x03, + 0x2E, 0x2A, 0x30, 0xD8, 0xDF, 0xE8, 0x12, 0xF0, 0x39, 0x00, 0x31, 0x00, + 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, + 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, + 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, + 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, + 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, + 0x2F, 0x00, 0x39, 0x00, 0x31, 0x00, 0x2F, 0x00, 0x39, 0x00, 0x31, 0x00, + 0x2F, 0x00, 0x39, 0x00, 0x31, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x39, 0x00, + 0x31, 0x00, 0x71, 0x01, 0x6E, 0x01, 0x01, 0x23, 0xAD, 0xE6, 0x05, 0x9B, + 0x04, 0x93, 0x04, 0x9B, 0x04, 0x3B, 0x88, 0xF8, 0x67, 0x30, 0x02, 0x23, + 0xA5, 0xE6, 0x05, 0x9B, 0x04, 0x93, 0x9D, 0xE6, 0x00, 0x2D, 0x8D, 0xD0, + 0xAB, 0x78, 0x04, 0x9A, 0x93, 0x42, 0x89, 0xD1, 0x68, 0x78, 0x43, 0x1E, + 0xDB, 0xB2, 0x1C, 0x2B, 0x28, 0xBF, 0x1C, 0x23, 0x59, 0x1E, 0x01, 0x28, + 0x05, 0xF1, 0x03, 0x05, 0xC9, 0xB2, 0x3F, 0xF4, 0x7D, 0xAF, 0x32, 0x46, + 0x08, 0xEB, 0x02, 0x04, 0xAE, 0x5C, 0x84, 0xF8, 0x66, 0x60, 0x91, 0x42, + 0x02, 0xF1, 0x01, 0x02, 0xF6, 0xD1, 0x01, 0x28, 0x3F, 0xF4, 0x70, 0xAF, + 0x88, 0xF8, 0x65, 0x30, 0x01, 0x2B, 0x7F, 0xF4, 0x80, 0xAE, 0x98, 0xF8, + 0x66, 0x30, 0x05, 0x93, 0x91, 0xE7, 0x98, 0xF8, 0x03, 0x30, 0x01, 0x2B, + 0x3F, 0xF6, 0x77, 0xAE, 0x04, 0x9B, 0x72, 0x2B, 0x94, 0xBF, 0x00, 0x23, + 0x01, 0x23, 0x88, 0xF8, 0x64, 0x30, 0x05, 0x9B, 0xFF, 0x2B, 0x7F, 0xF4, + 0x78, 0xAF, 0x55, 0xE7, 0x04, 0x9A, 0x08, 0xF1, 0x66, 0x03, 0x51, 0x3A, + 0x1E, 0x46, 0x30, 0x2A, 0x3F, 0xF6, 0x4B, 0xAF, 0x01, 0xA1, 0x51, 0xF8, + 0x22, 0xF0, 0x00, 0xBF, 0x9B, 0x5B, 0x15, 0x00, 0x27, 0x5C, 0x15, 0x00, + 0x9B, 0x5B, 0x15, 0x00, 0x9B, 0x5B, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, + 0xF3, 0x58, 0x15, 0x00, 0xF3, 0x58, 0x15, 0x00, 0x91, 0x5B, 0x15, 0x00, + 0x91, 0x5B, 0x15, 0x00, 0x91, 0x5B, 0x15, 0x00, 0x87, 0x5B, 0x15, 0x00, + 0x87, 0x5B, 0x15, 0x00, 0x87, 0x5B, 0x15, 0x00, 0x7D, 0x5B, 0x15, 0x00, + 0x7D, 0x5B, 0x15, 0x00, 0x7D, 0x5B, 0x15, 0x00, 0x29, 0x5B, 0x15, 0x00, + 0x03, 0x5C, 0x15, 0x00, 0x29, 0x5B, 0x15, 0x00, 0x29, 0x5B, 0x15, 0x00, + 0xE9, 0x5B, 0x15, 0x00, 0x0D, 0x5C, 0x15, 0x00, 0x00, 0x25, 0x04, 0x20, + 0xA2, 0x24, 0x95, 0x22, 0x71, 0x1E, 0x0B, 0x46, 0x02, 0x33, 0x01, 0xF8, + 0x01, 0x2F, 0x02, 0x44, 0x2B, 0x44, 0x94, 0x42, 0xA3, 0xEB, 0x06, 0x03, + 0xF5, 0xDC, 0x40, 0x4A, 0xDB, 0xB2, 0x12, 0x68, 0x88, 0xF8, 0x65, 0x30, + 0xB2, 0xF9, 0x00, 0x20, 0x00, 0x2A, 0x03, 0xDB, 0x00, 0x2B, 0x7F, 0xF4, + 0x5F, 0xAF, 0xCB, 0xE6, 0x1C, 0x2B, 0xF9, 0xD9, 0x39, 0x49, 0x3A, 0x48, + 0x40, 0xF2, 0x01, 0x32, 0xEF, 0xF7, 0x06, 0xF8, 0x98, 0xF8, 0x65, 0x30, + 0x00, 0x2B, 0x7F, 0xF4, 0x51, 0xAF, 0xBD, 0xE6, 0x00, 0x25, 0x04, 0x20, + 0x91, 0x24, 0x64, 0x22, 0xD4, 0xE7, 0x00, 0x25, 0x04, 0x20, 0x41, 0x24, + 0x34, 0x22, 0xCF, 0xE7, 0x00, 0x25, 0x04, 0x20, 0x31, 0x24, 0x24, 0x22, + 0xCA, 0xE7, 0x01, 0x20, 0x02, 0x46, 0x00, 0x25, 0x0E, 0x24, 0xC5, 0xE7, + 0x00, 0x28, 0x7F, 0xF4, 0xB6, 0xAE, 0x04, 0x9A, 0x23, 0x2A, 0x7F, 0xF6, + 0x06, 0xAF, 0x30, 0x2A, 0x15, 0xD9, 0x40, 0x2A, 0x10, 0xD9, 0x70, 0x2A, + 0x3B, 0xD9, 0x80, 0x2A, 0x36, 0xD9, 0x90, 0x2A, 0x3F, 0xF6, 0xFB, 0xAE, + 0x90, 0x21, 0x84, 0x22, 0x10, 0x1D, 0x03, 0xF8, 0x01, 0x2B, 0xC2, 0xB2, + 0x91, 0x42, 0xF9, 0xD2, 0x04, 0x23, 0xA0, 0xE5, 0x40, 0x21, 0x34, 0x22, + 0xF4, 0xE7, 0x30, 0x21, 0x24, 0x22, 0xF1, 0xE7, 0x24, 0x22, 0x03, 0xF8, + 0x01, 0x2B, 0x04, 0x32, 0x44, 0x2A, 0xFA, 0xD1, 0x08, 0xF1, 0x6E, 0x06, + 0x08, 0x25, 0x04, 0x20, 0x91, 0x24, 0x64, 0x22, 0x96, 0xE7, 0x00, 0x25, + 0x04, 0x20, 0xAA, 0x24, 0x95, 0x22, 0x91, 0xE7, 0x24, 0x22, 0x03, 0xF8, + 0x01, 0x2B, 0x04, 0x32, 0x44, 0x2A, 0xFA, 0xD1, 0x08, 0xF1, 0x6E, 0x06, + 0x08, 0x25, 0x04, 0x20, 0x81, 0x24, 0x64, 0x22, 0x84, 0xE7, 0x0F, 0x24, + 0x01, 0x20, 0x00, 0x25, 0x0E, 0x22, 0x7F, 0xE7, 0x80, 0x21, 0x74, 0x22, + 0xCA, 0xE7, 0x70, 0x21, 0x64, 0x22, 0xC7, 0xE7, 0x05, 0x9A, 0x04, 0x92, + 0x69, 0xE6, 0x05, 0x9A, 0x04, 0x92, 0xB0, 0xE7, 0x38, 0x36, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x5C, 0xD1, 0x15, 0x00, 0x70, 0xB5, 0x15, 0x4D, + 0x2C, 0x68, 0xA5, 0xF5, 0xBD, 0x56, 0x01, 0x34, 0xA5, 0xF1, 0x90, 0x01, + 0x2C, 0x60, 0x33, 0x46, 0x01, 0x20, 0x9A, 0x88, 0x01, 0x2A, 0x88, 0xBF, + 0x98, 0x80, 0x03, 0xF5, 0xF6, 0x73, 0x8B, 0x42, 0xF7, 0xD1, 0x41, 0xF2, + 0xA4, 0x73, 0xF3, 0x58, 0x9C, 0x42, 0x0B, 0xDA, 0x04, 0x21, 0x0B, 0x20, + 0xED, 0xF7, 0x90, 0xF8, 0x0B, 0x22, 0xBD, 0xE8, 0x70, 0x40, 0x11, 0x46, + 0x4F, 0xF4, 0x30, 0x50, 0xEC, 0xF7, 0xF6, 0xBE, 0x00, 0x21, 0x0B, 0x20, + 0xED, 0xF7, 0x84, 0xF8, 0x4F, 0xF0, 0xFF, 0x33, 0x2B, 0x60, 0x70, 0xBD, + 0x18, 0x07, 0x18, 0x00, 0x2D, 0xE9, 0xF8, 0x43, 0x3E, 0x4C, 0x3F, 0x4E, + 0x04, 0xF5, 0xBD, 0x53, 0x31, 0x68, 0x1B, 0x68, 0xB1, 0xF9, 0x00, 0x10, + 0x03, 0xEB, 0x03, 0x13, 0x04, 0xEB, 0xC3, 0x05, 0x05, 0xF5, 0xB8, 0x55, + 0x00, 0x29, 0x05, 0xF1, 0x10, 0x05, 0x4F, 0xEA, 0xC3, 0x03, 0x3A, 0xDB, + 0x23, 0x44, 0x41, 0xF2, 0x13, 0x72, 0x9B, 0x5C, 0x01, 0x2B, 0x45, 0xD9, + 0x02, 0x2B, 0x50, 0xD1, 0x02, 0x21, 0x0B, 0x20, 0xED, 0xF7, 0x5C, 0xF8, + 0x30, 0x48, 0x2E, 0x4C, 0xA0, 0xF1, 0x88, 0x06, 0x06, 0xF1, 0x88, 0x09, + 0xED, 0xF7, 0xE4, 0xFA, 0x00, 0x27, 0x4F, 0xF0, 0x02, 0x08, 0x03, 0xE0, + 0x04, 0xF5, 0xF6, 0x74, 0xB4, 0x42, 0x18, 0xD0, 0xA3, 0x88, 0x01, 0x2B, + 0xF8, 0xD1, 0x63, 0x7D, 0x04, 0xF1, 0x1C, 0x01, 0x19, 0x44, 0x2A, 0x46, + 0xA0, 0x1D, 0xFF, 0xF7, 0x15, 0xFB, 0x00, 0x28, 0xEE, 0xD0, 0x21, 0x46, + 0x27, 0x83, 0xE7, 0x75, 0xA4, 0xF8, 0x04, 0x80, 0x48, 0x46, 0x04, 0xF5, + 0xF6, 0x74, 0xED, 0xF7, 0xC9, 0xFA, 0xB4, 0x42, 0xE6, 0xD1, 0x28, 0x46, + 0x00, 0x21, 0xBD, 0xE8, 0xF8, 0x43, 0xFF, 0xF7, 0x99, 0xBA, 0x1C, 0x44, + 0x41, 0xF2, 0x12, 0x73, 0xE3, 0x5C, 0x05, 0x2B, 0x19, 0xD0, 0x17, 0x49, + 0x17, 0x48, 0x40, 0xF2, 0xA3, 0x62, 0xEE, 0xF7, 0x09, 0xFF, 0x41, 0xF2, + 0x13, 0x73, 0xE3, 0x5C, 0x01, 0x2B, 0x05, 0xD8, 0x28, 0x46, 0x01, 0x21, + 0xBD, 0xE8, 0xF8, 0x43, 0xFF, 0xF7, 0x24, 0xBB, 0x02, 0x2B, 0xB3, 0xD0, + 0x33, 0x68, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x08, 0xDB, 0xBD, 0xE8, + 0xF8, 0x83, 0x41, 0xF2, 0x13, 0x73, 0xE3, 0x5C, 0x01, 0x2B, 0xEB, 0xD9, + 0x02, 0x2B, 0xA5, 0xD0, 0xBD, 0xE8, 0xF8, 0x43, 0x05, 0x49, 0x07, 0x48, + 0x40, 0xF2, 0xAF, 0x62, 0xEE, 0xF7, 0xE6, 0xBE, 0x78, 0xEF, 0x17, 0x00, + 0x38, 0x36, 0x17, 0x00, 0x10, 0x07, 0x18, 0x00, 0x70, 0x79, 0x15, 0x00, + 0x94, 0xD1, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, 0x2D, 0xE9, 0xF0, 0x41, + 0xDF, 0xF8, 0xCC, 0x80, 0x2C, 0x4A, 0xD8, 0xF8, 0x00, 0x30, 0x14, 0x68, + 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0x0C, 0xDB, 0x29, 0x4F, 0x04, 0xEB, + 0x04, 0x13, 0x07, 0xEB, 0xC3, 0x03, 0x41, 0xF2, 0x13, 0x72, 0x25, 0x01, + 0x9B, 0x5C, 0x01, 0x2B, 0x19, 0xD9, 0xBD, 0xE8, 0xF0, 0x81, 0x00, 0x2C, + 0x35, 0xDB, 0x22, 0x4F, 0x04, 0xEB, 0x04, 0x16, 0x07, 0xEB, 0xC6, 0x06, + 0x41, 0xF2, 0x12, 0x73, 0x25, 0x01, 0xF3, 0x5C, 0x05, 0x2B, 0x15, 0xD0, + 0x1D, 0x49, 0x1E, 0x48, 0x4F, 0xF4, 0xD7, 0x62, 0xEE, 0xF7, 0xAE, 0xFE, + 0x41, 0xF2, 0x13, 0x73, 0xF3, 0x5C, 0x01, 0x2B, 0x17, 0xD8, 0x2C, 0x44, + 0x07, 0xEB, 0xC4, 0x00, 0x00, 0xF5, 0xB8, 0x50, 0xBD, 0xE8, 0xF0, 0x41, + 0x10, 0x30, 0x00, 0x21, 0xFF, 0xF7, 0xC4, 0xBA, 0x41, 0xF2, 0x13, 0x73, + 0xF3, 0x5C, 0x01, 0x2B, 0xEF, 0xD9, 0xBD, 0xE8, 0xF0, 0x41, 0x0F, 0x49, + 0x10, 0x48, 0x40, 0xF2, 0xC1, 0x62, 0xEE, 0xF7, 0x91, 0xBE, 0xD8, 0xF8, + 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, 0xF1, 0xDB, 0xBD, 0xE8, + 0xF0, 0x81, 0x08, 0x49, 0x0A, 0x48, 0x40, 0xF2, 0xB7, 0x62, 0xEE, 0xF7, + 0x83, 0xFE, 0xD8, 0xF8, 0x00, 0x30, 0xB3, 0xF9, 0x00, 0x30, 0x00, 0x2B, + 0xBD, 0xDB, 0xAD, 0xE7, 0x18, 0x07, 0x18, 0x00, 0x78, 0xEF, 0x17, 0x00, + 0x70, 0x79, 0x15, 0x00, 0x94, 0xD1, 0x15, 0x00, 0x64, 0x7D, 0x15, 0x00, + 0xC0, 0xD1, 0x15, 0x00, 0x38, 0x36, 0x17, 0x00, 0x70, 0xB5, 0x29, 0xB3, + 0x18, 0x4C, 0x04, 0xF5, 0xBD, 0x53, 0x05, 0x46, 0x1E, 0x68, 0xFE, 0xF7, + 0x01, 0xFF, 0x02, 0x46, 0x40, 0xB1, 0x0B, 0x20, 0xED, 0xF7, 0x20, 0xF8, + 0x03, 0x28, 0x1F, 0xD0, 0xBD, 0xE8, 0x70, 0x40, 0xFF, 0xF7, 0xC6, 0xBE, + 0x06, 0xEB, 0x06, 0x16, 0x04, 0xEB, 0xC6, 0x03, 0x01, 0x21, 0x03, 0xF5, + 0xB8, 0x53, 0x85, 0xF8, 0x5E, 0x10, 0x10, 0x33, 0x01, 0x46, 0x28, 0x46, + 0xFE, 0xF7, 0x00, 0xFF, 0x28, 0x46, 0x03, 0x21, 0xBD, 0xE8, 0x70, 0x40, + 0xDA, 0xF7, 0x42, 0xB8, 0x0B, 0x20, 0xEC, 0xF7, 0x5B, 0xFF, 0x05, 0x4B, + 0x4F, 0xF0, 0xFF, 0x32, 0x1A, 0x60, 0x70, 0xBD, 0xBD, 0xE8, 0x70, 0x40, + 0xFF, 0xF7, 0x60, 0xBF, 0x78, 0xEF, 0x17, 0x00, 0x18, 0x07, 0x18, 0x00, + 0x2D, 0xE9, 0xF0, 0x4F, 0x8B, 0xB0, 0xB6, 0x4F, 0x9D, 0xF8, 0x50, 0x40, + 0x03, 0x94, 0x9D, 0xF9, 0x54, 0x40, 0x04, 0x94, 0x07, 0xF5, 0xBD, 0x55, + 0x04, 0x46, 0x28, 0x68, 0x25, 0x7C, 0x8D, 0xF8, 0x20, 0x50, 0x65, 0x7C, + 0x8D, 0xF8, 0x21, 0x50, 0xA5, 0x7C, 0x8D, 0xF8, 0x22, 0x50, 0xE5, 0x7C, + 0x8D, 0xF8, 0x23, 0x50, 0x25, 0x7D, 0x8D, 0xF8, 0x24, 0x50, 0x00, 0x28, + 0x65, 0x7D, 0x9D, 0xF8, 0x58, 0x90, 0x8D, 0xF8, 0x25, 0x50, 0x0E, 0x46, + 0x90, 0x46, 0x05, 0x93, 0xC0, 0xF2, 0x1A, 0x81, 0x00, 0xEB, 0x00, 0x10, + 0x07, 0xEB, 0xC0, 0x00, 0x00, 0xF5, 0xB8, 0x57, 0x10, 0x37, 0x3A, 0x46, + 0x00, 0x21, 0x08, 0xA8, 0xFF, 0xF7, 0xEE, 0xF9, 0x10, 0xB9, 0x0B, 0xB0, + 0xBD, 0xE8, 0xF0, 0x8F, 0xBD, 0xF8, 0x20, 0x00, 0xBD, 0xF8, 0x24, 0x30, + 0x01, 0x93, 0x00, 0x21, 0xBD, 0xF8, 0x22, 0xE0, 0x97, 0x4B, 0x98, 0x4A, + 0x02, 0x94, 0x8C, 0x46, 0x0D, 0x46, 0x83, 0x46, 0x0B, 0xE0, 0x98, 0x88, + 0x01, 0x28, 0x00, 0xF0, 0xC1, 0x80, 0x03, 0x28, 0x00, 0xF0, 0xB4, 0x80, + 0x88, 0xB1, 0x03, 0xF5, 0xF6, 0x73, 0x93, 0x42, 0x14, 0xD0, 0xB3, 0xF8, + 0x06, 0xA0, 0xDA, 0x45, 0xEF, 0xD1, 0x18, 0x89, 0x70, 0x45, 0xEC, 0xD1, + 0x58, 0x89, 0x01, 0x9C, 0xA0, 0x42, 0xE8, 0xD1, 0x02, 0x9C, 0x1D, 0x46, + 0x10, 0xE0, 0x00, 0x2D, 0x08, 0xBF, 0x1D, 0x46, 0x03, 0xF5, 0xF6, 0x73, + 0x93, 0x42, 0xEA, 0xD1, 0x02, 0x9C, 0x00, 0x2D, 0x00, 0xF0, 0x42, 0x81, + 0x4F, 0xF4, 0xF6, 0x72, 0x00, 0x21, 0x28, 0x46, 0xCA, 0xF7, 0xDC, 0xF8, + 0xAB, 0x88, 0x03, 0x2B, 0xBF, 0xD0, 0x03, 0x9B, 0xBD, 0xF8, 0x20, 0x10, + 0xBD, 0xF8, 0x22, 0x20, 0xC5, 0xF8, 0x0C, 0x80, 0x00, 0x2B, 0xBD, 0xF8, + 0x24, 0x30, 0x6B, 0x81, 0x08, 0xBF, 0x05, 0x20, 0x05, 0xF1, 0x1C, 0x03, + 0x18, 0xBF, 0x04, 0x20, 0x02, 0x93, 0x04, 0xF1, 0x24, 0x08, 0x85, 0xF8, + 0x11, 0x90, 0xA8, 0x74, 0xE9, 0x80, 0x2A, 0x81, 0x18, 0x34, 0x05, 0xF1, + 0x1B, 0x03, 0x14, 0xF8, 0x01, 0x2B, 0x03, 0xF8, 0x01, 0x2F, 0x44, 0x45, + 0xF9, 0xD1, 0x02, 0x9B, 0xA6, 0xF1, 0x24, 0x09, 0x03, 0xF1, 0x0C, 0x0B, + 0xB9, 0xF1, 0x02, 0x0F, 0x4F, 0xF0, 0x00, 0x03, 0xCD, 0xE9, 0x06, 0x33, + 0x40, 0xF3, 0x56, 0x81, 0x4F, 0xF4, 0xE2, 0x7A, 0x3A, 0x46, 0x98, 0xF8, + 0x01, 0x40, 0x98, 0xF8, 0x00, 0x60, 0x98, 0xF8, 0x02, 0x70, 0x02, 0x34, + 0x08, 0xF1, 0x02, 0x00, 0x00, 0x2E, 0x71, 0xD0, 0x03, 0x2E, 0x7D, 0xD0, + 0xA9, 0x7C, 0x05, 0x29, 0x00, 0xF2, 0x81, 0x80, 0x2A, 0x2E, 0x00, 0xF0, + 0x8D, 0x80, 0x3D, 0x2E, 0x00, 0xF0, 0x8D, 0x80, 0xC0, 0x2E, 0x00, 0xF0, + 0x9A, 0x80, 0xFF, 0x2E, 0x02, 0xD1, 0x08, 0x2C, 0x00, 0xF2, 0xCD, 0x80, + 0x54, 0x45, 0x07, 0xDC, 0x39, 0x46, 0x30, 0x46, 0x01, 0x92, 0xFE, 0xF7, + 0xD5, 0xFD, 0x01, 0x9A, 0x00, 0x28, 0x46, 0xD1, 0xA0, 0x44, 0xA9, 0xEB, + 0x04, 0x09, 0xB9, 0xF1, 0x02, 0x0F, 0xD0, 0xDC, 0xCA, 0xF5, 0xE8, 0x7A, + 0x1F, 0xFA, 0x8A, 0xFA, 0xAB, 0x7D, 0xA5, 0xF8, 0x1A, 0xA0, 0x00, 0x2B, + 0x00, 0xF0, 0x94, 0x80, 0x04, 0x9B, 0x2B, 0x75, 0x2B, 0x7C, 0x06, 0x9A, + 0x04, 0x2A, 0x00, 0xF0, 0x06, 0x81, 0x03, 0x2A, 0x00, 0xF0, 0x05, 0x81, + 0x02, 0x2A, 0x00, 0xF0, 0x04, 0x81, 0x03, 0x99, 0x00, 0x29, 0x40, 0xF0, + 0xC0, 0x80, 0x0E, 0x2B, 0x00, 0xF0, 0x14, 0x81, 0x00, 0x2A, 0x00, 0xF0, + 0x06, 0x81, 0x07, 0x9B, 0x01, 0x2B, 0x0C, 0xBF, 0x54, 0x23, 0x53, 0x23, + 0x01, 0x22, 0xEB, 0x74, 0xAA, 0x80, 0x0B, 0xB0, 0xBD, 0xE8, 0xF0, 0x8F, + 0x00, 0x29, 0x41, 0xD0, 0x93, 0xF9, 0x14, 0xA0, 0x91, 0xF9, 0x14, 0x00, + 0x82, 0x45, 0xB8, 0xBF, 0x19, 0x46, 0x42, 0xE7, 0xBC, 0xF1, 0x00, 0x0F, + 0x34, 0xD0, 0x93, 0xF9, 0x14, 0xA0, 0x9C, 0xF9, 0x14, 0x00, 0x82, 0x45, + 0xB8, 0xBF, 0x9C, 0x46, 0x37, 0xE7, 0x43, 0x46, 0xAB, 0xEB, 0x03, 0x00, + 0xA0, 0x44, 0x19, 0x78, 0xC1, 0x54, 0x01, 0x33, 0x98, 0x45, 0xFA, 0xD1, + 0xA3, 0x44, 0xAA, 0xEB, 0x04, 0x0A, 0xAC, 0xE7, 0x02, 0x9B, 0x01, 0x92, + 0xAB, 0xEB, 0x03, 0x01, 0x69, 0x75, 0xA8, 0x1D, 0x41, 0x46, 0xFF, 0xF7, + 0xF5, 0xF8, 0x01, 0x9A, 0x00, 0x28, 0x95, 0xD1, 0xA8, 0x80, 0x02, 0xE7, + 0x02, 0x9B, 0xAB, 0xEB, 0x03, 0x01, 0xA9, 0x75, 0x01, 0x78, 0x29, 0x74, + 0x8C, 0xE7, 0x06, 0x29, 0x3F, 0xF4, 0x7F, 0xAF, 0x08, 0x29, 0x7F, 0xF6, + 0x7F, 0xAF, 0x0D, 0x29, 0x84, 0xD8, 0x7E, 0xE7, 0x00, 0x27, 0xEA, 0xE6, + 0x9C, 0x46, 0x08, 0xE7, 0x19, 0x46, 0x06, 0xE7, 0x06, 0x21, 0xA9, 0x74, + 0x7A, 0xE7, 0x18, 0x2C, 0x7F, 0xF4, 0x78, 0xAF, 0x4F, 0xF0, 0x07, 0x03, + 0xAB, 0x74, 0x98, 0xF8, 0x03, 0x10, 0x11, 0xF0, 0x03, 0x03, 0x07, 0x93, + 0x06, 0x9B, 0x18, 0xBF, 0x01, 0x23, 0x06, 0x93, 0x6A, 0xE7, 0x07, 0x2C, + 0x7F, 0xF4, 0x68, 0xAF, 0x4F, 0xF0, 0x09, 0x03, 0xAB, 0x74, 0x01, 0x78, + 0x00, 0x29, 0x3F, 0xF4, 0x61, 0xAF, 0x01, 0x29, 0x76, 0xD0, 0x02, 0x29, + 0x00, 0xF0, 0x97, 0x80, 0x03, 0x29, 0x06, 0x9B, 0x08, 0xBF, 0x04, 0x23, + 0x06, 0x93, 0x55, 0xE7, 0x78, 0xEF, 0x17, 0x00, 0x88, 0x06, 0x18, 0x00, + 0xAA, 0x88, 0x22, 0xB1, 0x95, 0xF9, 0x14, 0x20, 0x04, 0x99, 0x8A, 0x42, + 0x60, 0xDA, 0x04, 0x9A, 0x2A, 0x75, 0x03, 0x9A, 0x00, 0x2A, 0x42, 0xD1, + 0x05, 0x99, 0xA1, 0xF6, 0x6C, 0x13, 0x48, 0x2B, 0x6D, 0xD8, 0x40, 0xF6, + 0xB4, 0x13, 0x99, 0x42, 0x00, 0xF0, 0x82, 0x80, 0x48, 0x4A, 0xA1, 0xF6, + 0x67, 0x13, 0xA2, 0xFB, 0x03, 0x23, 0xC3, 0xF3, 0x87, 0x03, 0x2B, 0x74, + 0x4F, 0xE7, 0x24, 0x2F, 0x7F, 0xF4, 0x30, 0xAF, 0x09, 0x29, 0x11, 0xD0, + 0x0B, 0x2C, 0x0F, 0xD9, 0xD8, 0xF8, 0x03, 0x10, 0x4B, 0x04, 0x0B, 0xD5, + 0x98, 0xF8, 0x09, 0x10, 0x41, 0xB1, 0x01, 0x29, 0x71, 0xD0, 0x02, 0x29, + 0x72, 0xD0, 0x03, 0x29, 0x06, 0x9B, 0x08, 0xBF, 0x04, 0x23, 0x06, 0x93, + 0x4F, 0xF0, 0x0E, 0x03, 0xAB, 0x74, 0x17, 0xE7, 0x89, 0xB3, 0x0D, 0x46, + 0xBA, 0xE6, 0x30, 0x2B, 0x24, 0xD9, 0x40, 0x2B, 0x40, 0xD9, 0x90, 0x2B, + 0x4C, 0xD9, 0xA4, 0x2B, 0x59, 0xD8, 0x06, 0x9B, 0x00, 0x2B, 0x54, 0xD0, + 0x0A, 0x23, 0x07, 0x9A, 0x01, 0x2A, 0x0C, 0xBF, 0x74, 0x33, 0x75, 0x33, + 0x38, 0xE7, 0x03, 0x9A, 0x01, 0x2A, 0xCA, 0xD1, 0x05, 0x9A, 0xA2, 0xF5, + 0x9C, 0x51, 0xA1, 0xF1, 0x0D, 0x02, 0x92, 0xB2, 0xB2, 0xF5, 0x4D, 0x7F, + 0xC1, 0xD8, 0x26, 0x4A, 0xA1, 0xF1, 0x08, 0x03, 0xA2, 0xFB, 0x03, 0x23, + 0xC3, 0xF3, 0x87, 0x03, 0x2B, 0x74, 0x0A, 0xE7, 0x06, 0x9B, 0x23, 0xB3, + 0x00, 0x23, 0xE0, 0xE7, 0x2B, 0x7C, 0x04, 0xE7, 0x02, 0x23, 0x06, 0x93, + 0xE4, 0xE6, 0xBC, 0xF1, 0x00, 0x0F, 0x3F, 0xF4, 0x50, 0xAE, 0x9C, 0xF9, + 0x14, 0x30, 0x04, 0x9A, 0x93, 0x42, 0xBF, 0xF6, 0x4A, 0xAE, 0x65, 0x46, + 0x7E, 0xE6, 0x82, 0x23, 0x0C, 0xE7, 0x81, 0x23, 0x0A, 0xE7, 0x80, 0x23, + 0x08, 0xE7, 0x03, 0x9B, 0x2B, 0x74, 0xEC, 0xE6, 0x06, 0x9B, 0x8B, 0xB1, + 0x03, 0x23, 0xC2, 0xE7, 0x4F, 0xF0, 0x0C, 0x0A, 0xDC, 0xE6, 0x51, 0x23, + 0xFC, 0xE6, 0x73, 0x23, 0xFA, 0xE6, 0x03, 0x23, 0x06, 0x93, 0xC1, 0xE6, + 0x06, 0x9B, 0x43, 0xB1, 0x06, 0x23, 0xB4, 0xE7, 0x52, 0x23, 0xF1, 0xE6, + 0x76, 0x23, 0xEF, 0xE6, 0x0E, 0x23, 0x2B, 0x74, 0xD3, 0xE6, 0x79, 0x23, + 0xEA, 0xE6, 0x7C, 0x23, 0xE8, 0xE6, 0x7D, 0x23, 0xE6, 0xE6, 0x02, 0x23, + 0x06, 0x93, 0x91, 0xE7, 0x03, 0x23, 0x06, 0x93, 0x8E, 0xE7, 0x00, 0xBF, + 0xCD, 0xCC, 0xCC, 0xCC, 0x2D, 0xE9, 0xF0, 0x48, 0xC1, 0xF3, 0x0A, 0x57, + 0xA7, 0xF2, 0xFF, 0x34, 0x13, 0x2C, 0x0B, 0x46, 0x0D, 0x46, 0x02, 0x46, + 0x0F, 0xDC, 0x00, 0x2C, 0x2A, 0xDB, 0x1D, 0x49, 0x21, 0x41, 0x03, 0xEA, + 0x01, 0x00, 0x10, 0x43, 0x2F, 0xD0, 0x4F, 0xF4, 0x00, 0x23, 0x23, 0x41, + 0x1D, 0x44, 0x25, 0xEA, 0x01, 0x05, 0x00, 0x23, 0x25, 0xE0, 0x33, 0x2C, + 0x07, 0xDD, 0xB4, 0xF5, 0x80, 0x6F, 0x22, 0xD1, 0x00, 0xF0, 0x2E, 0xF8, + 0x02, 0x46, 0x0B, 0x46, 0x1D, 0xE0, 0xA7, 0xF2, 0x13, 0x47, 0x4F, 0xF0, + 0xFF, 0x31, 0x21, 0xFA, 0x07, 0xF7, 0x38, 0x42, 0x15, 0xD0, 0x01, 0x22, + 0xC4, 0xF1, 0x33, 0x03, 0x02, 0xFA, 0x03, 0xF3, 0xC3, 0x18, 0x28, 0xBF, + 0xAD, 0x18, 0x23, 0xEA, 0x07, 0x03, 0x08, 0xE0, 0x01, 0xF0, 0x00, 0x45, + 0x01, 0x34, 0x04, 0xBF, 0x45, 0xF0, 0x7F, 0x55, 0x45, 0xF4, 0x40, 0x15, + 0x00, 0x23, 0x1A, 0x46, 0x2B, 0x46, 0x10, 0x46, 0x19, 0x46, 0xBD, 0xE8, + 0xF0, 0x88, 0x00, 0xBF, 0xFF, 0xFF, 0x0F, 0x00, 0x81, 0xF0, 0x00, 0x41, + 0x02, 0xE0, 0x00, 0xBF, 0x83, 0xF0, 0x00, 0x43, 0x30, 0xB5, 0x4F, 0xEA, + 0x41, 0x04, 0x4F, 0xEA, 0x43, 0x05, 0x94, 0xEA, 0x05, 0x0F, 0x08, 0xBF, + 0x90, 0xEA, 0x02, 0x0F, 0x1F, 0xBF, 0x54, 0xEA, 0x00, 0x0C, 0x55, 0xEA, + 0x02, 0x0C, 0x7F, 0xEA, 0x64, 0x5C, 0x7F, 0xEA, 0x65, 0x5C, 0x00, 0xF0, + 0xE2, 0x80, 0x4F, 0xEA, 0x54, 0x54, 0xD4, 0xEB, 0x55, 0x55, 0xB8, 0xBF, + 0x6D, 0x42, 0x0C, 0xDD, 0x2C, 0x44, 0x80, 0xEA, 0x02, 0x02, 0x81, 0xEA, + 0x03, 0x03, 0x82, 0xEA, 0x00, 0x00, 0x83, 0xEA, 0x01, 0x01, 0x80, 0xEA, + 0x02, 0x02, 0x81, 0xEA, 0x03, 0x03, 0x36, 0x2D, 0x88, 0xBF, 0x30, 0xBD, + 0x11, 0xF0, 0x00, 0x4F, 0x4F, 0xEA, 0x01, 0x31, 0x4F, 0xF4, 0x80, 0x1C, + 0x4C, 0xEA, 0x11, 0x31, 0x02, 0xD0, 0x40, 0x42, 0x61, 0xEB, 0x41, 0x01, + 0x13, 0xF0, 0x00, 0x4F, 0x4F, 0xEA, 0x03, 0x33, 0x4C, 0xEA, 0x13, 0x33, + 0x02, 0xD0, 0x52, 0x42, 0x63, 0xEB, 0x43, 0x03, 0x94, 0xEA, 0x05, 0x0F, + 0x00, 0xF0, 0xA7, 0x80, 0xA4, 0xF1, 0x01, 0x04, 0xD5, 0xF1, 0x20, 0x0E, + 0x0D, 0xDB, 0x02, 0xFA, 0x0E, 0xFC, 0x22, 0xFA, 0x05, 0xF2, 0x80, 0x18, + 0x41, 0xF1, 0x00, 0x01, 0x03, 0xFA, 0x0E, 0xF2, 0x80, 0x18, 0x43, 0xFA, + 0x05, 0xF3, 0x59, 0x41, 0x0E, 0xE0, 0xA5, 0xF1, 0x20, 0x05, 0x0E, 0xF1, + 0x20, 0x0E, 0x01, 0x2A, 0x03, 0xFA, 0x0E, 0xFC, 0x28, 0xBF, 0x4C, 0xF0, + 0x02, 0x0C, 0x43, 0xFA, 0x05, 0xF3, 0xC0, 0x18, 0x51, 0xEB, 0xE3, 0x71, + 0x01, 0xF0, 0x00, 0x45, 0x07, 0xD5, 0x4F, 0xF0, 0x00, 0x0E, 0xDC, 0xF1, + 0x00, 0x0C, 0x7E, 0xEB, 0x00, 0x00, 0x6E, 0xEB, 0x01, 0x01, 0xB1, 0xF5, + 0x80, 0x1F, 0x1B, 0xD3, 0xB1, 0xF5, 0x00, 0x1F, 0x0C, 0xD3, 0x49, 0x08, + 0x5F, 0xEA, 0x30, 0x00, 0x4F, 0xEA, 0x3C, 0x0C, 0x04, 0xF1, 0x01, 0x04, + 0x4F, 0xEA, 0x44, 0x52, 0x12, 0xF5, 0x80, 0x0F, 0x80, 0xF0, 0x9A, 0x80, + 0xBC, 0xF1, 0x00, 0x4F, 0x08, 0xBF, 0x5F, 0xEA, 0x50, 0x0C, 0x50, 0xF1, + 0x00, 0x00, 0x41, 0xEB, 0x04, 0x51, 0x41, 0xEA, 0x05, 0x01, 0x30, 0xBD, + 0x5F, 0xEA, 0x4C, 0x0C, 0x40, 0x41, 0x41, 0xEB, 0x01, 0x01, 0x01, 0x3C, + 0x28, 0xBF, 0xB1, 0xF5, 0x80, 0x1F, 0xE9, 0xD2, 0x91, 0xF0, 0x00, 0x0F, + 0x04, 0xBF, 0x01, 0x46, 0x00, 0x20, 0xB1, 0xFA, 0x81, 0xF3, 0x08, 0xBF, + 0x20, 0x33, 0xA3, 0xF1, 0x0B, 0x03, 0xB3, 0xF1, 0x20, 0x02, 0x0C, 0xDA, + 0x0C, 0x32, 0x08, 0xDD, 0x02, 0xF1, 0x14, 0x0C, 0xC2, 0xF1, 0x0C, 0x02, + 0x01, 0xFA, 0x0C, 0xF0, 0x21, 0xFA, 0x02, 0xF1, 0x0C, 0xE0, 0x02, 0xF1, + 0x14, 0x02, 0xD8, 0xBF, 0xC2, 0xF1, 0x20, 0x0C, 0x01, 0xFA, 0x02, 0xF1, + 0x20, 0xFA, 0x0C, 0xFC, 0xDC, 0xBF, 0x41, 0xEA, 0x0C, 0x01, 0x90, 0x40, + 0xE4, 0x1A, 0xA2, 0xBF, 0x01, 0xEB, 0x04, 0x51, 0x29, 0x43, 0x30, 0xBD, + 0x6F, 0xEA, 0x04, 0x04, 0x1F, 0x3C, 0x1C, 0xDA, 0x0C, 0x34, 0x0E, 0xDC, + 0x04, 0xF1, 0x14, 0x04, 0xC4, 0xF1, 0x20, 0x02, 0x20, 0xFA, 0x04, 0xF0, + 0x01, 0xFA, 0x02, 0xF3, 0x40, 0xEA, 0x03, 0x00, 0x21, 0xFA, 0x04, 0xF3, + 0x45, 0xEA, 0x03, 0x01, 0x30, 0xBD, 0xC4, 0xF1, 0x0C, 0x04, 0xC4, 0xF1, + 0x20, 0x02, 0x20, 0xFA, 0x02, 0xF0, 0x01, 0xFA, 0x04, 0xF3, 0x40, 0xEA, + 0x03, 0x00, 0x29, 0x46, 0x30, 0xBD, 0x21, 0xFA, 0x04, 0xF0, 0x29, 0x46, + 0x30, 0xBD, 0x94, 0xF0, 0x00, 0x0F, 0x83, 0xF4, 0x80, 0x13, 0x06, 0xBF, + 0x81, 0xF4, 0x80, 0x11, 0x01, 0x34, 0x01, 0x3D, 0x4E, 0xE7, 0x7F, 0xEA, + 0x64, 0x5C, 0x18, 0xBF, 0x7F, 0xEA, 0x65, 0x5C, 0x29, 0xD0, 0x94, 0xEA, + 0x05, 0x0F, 0x08, 0xBF, 0x90, 0xEA, 0x02, 0x0F, 0x05, 0xD0, 0x54, 0xEA, + 0x00, 0x0C, 0x04, 0xBF, 0x19, 0x46, 0x10, 0x46, 0x30, 0xBD, 0x91, 0xEA, + 0x03, 0x0F, 0x1E, 0xBF, 0x00, 0x21, 0x00, 0x20, 0x30, 0xBD, 0x5F, 0xEA, + 0x54, 0x5C, 0x05, 0xD1, 0x40, 0x00, 0x49, 0x41, 0x28, 0xBF, 0x41, 0xF0, + 0x00, 0x41, 0x30, 0xBD, 0x14, 0xF5, 0x80, 0x04, 0x3C, 0xBF, 0x01, 0xF5, + 0x80, 0x11, 0x30, 0xBD, 0x01, 0xF0, 0x00, 0x45, 0x45, 0xF0, 0xFE, 0x41, + 0x41, 0xF4, 0x70, 0x01, 0x4F, 0xF0, 0x00, 0x00, 0x30, 0xBD, 0x7F, 0xEA, + 0x64, 0x5C, 0x1A, 0xBF, 0x19, 0x46, 0x10, 0x46, 0x7F, 0xEA, 0x65, 0x5C, + 0x1C, 0xBF, 0x0B, 0x46, 0x02, 0x46, 0x50, 0xEA, 0x01, 0x34, 0x06, 0xBF, + 0x52, 0xEA, 0x03, 0x35, 0x91, 0xEA, 0x03, 0x0F, 0x41, 0xF4, 0x00, 0x21, + 0x30, 0xBD, 0x00, 0xBF, 0x90, 0xF0, 0x00, 0x0F, 0x04, 0xBF, 0x00, 0x21, + 0x70, 0x47, 0x30, 0xB5, 0x4F, 0xF4, 0x80, 0x64, 0x04, 0xF1, 0x32, 0x04, + 0x4F, 0xF0, 0x00, 0x05, 0x4F, 0xF0, 0x00, 0x01, 0x50, 0xE7, 0x00, 0xBF, + 0x90, 0xF0, 0x00, 0x0F, 0x04, 0xBF, 0x00, 0x21, 0x70, 0x47, 0x30, 0xB5, + 0x4F, 0xF4, 0x80, 0x64, 0x04, 0xF1, 0x32, 0x04, 0x10, 0xF0, 0x00, 0x45, + 0x48, 0xBF, 0x40, 0x42, 0x4F, 0xF0, 0x00, 0x01, 0x3E, 0xE7, 0x00, 0xBF, + 0x42, 0x00, 0x4F, 0xEA, 0xE2, 0x01, 0x4F, 0xEA, 0x31, 0x01, 0x4F, 0xEA, + 0x02, 0x70, 0x1F, 0xBF, 0x12, 0xF0, 0x7F, 0x43, 0x93, 0xF0, 0x7F, 0x4F, + 0x81, 0xF0, 0x60, 0x51, 0x70, 0x47, 0x32, 0xF0, 0x7F, 0x42, 0x08, 0xBF, + 0x70, 0x47, 0x93, 0xF0, 0x7F, 0x4F, 0x04, 0xBF, 0x41, 0xF4, 0x00, 0x21, + 0x70, 0x47, 0x30, 0xB5, 0x4F, 0xF4, 0x60, 0x74, 0x01, 0xF0, 0x00, 0x45, + 0x21, 0xF0, 0x00, 0x41, 0x1C, 0xE7, 0x00, 0xBF, 0x50, 0xEA, 0x01, 0x02, + 0x08, 0xBF, 0x70, 0x47, 0x30, 0xB5, 0x4F, 0xF0, 0x00, 0x05, 0x0A, 0xE0, + 0x50, 0xEA, 0x01, 0x02, 0x08, 0xBF, 0x70, 0x47, 0x30, 0xB5, 0x11, 0xF0, + 0x00, 0x45, 0x02, 0xD5, 0x40, 0x42, 0x61, 0xEB, 0x41, 0x01, 0x4F, 0xF4, + 0x80, 0x64, 0x04, 0xF1, 0x32, 0x04, 0x5F, 0xEA, 0x91, 0x5C, 0x3F, 0xF4, + 0xD8, 0xAE, 0x4F, 0xF0, 0x03, 0x02, 0x5F, 0xEA, 0xDC, 0x0C, 0x18, 0xBF, + 0x03, 0x32, 0x5F, 0xEA, 0xDC, 0x0C, 0x18, 0xBF, 0x03, 0x32, 0x02, 0xEB, + 0xDC, 0x02, 0xC2, 0xF1, 0x20, 0x03, 0x00, 0xFA, 0x03, 0xFC, 0x20, 0xFA, + 0x02, 0xF0, 0x01, 0xFA, 0x03, 0xFE, 0x40, 0xEA, 0x0E, 0x00, 0x21, 0xFA, + 0x02, 0xF1, 0x14, 0x44, 0xBD, 0xE6, 0x00, 0xBF, 0x70, 0xB5, 0x4F, 0xF0, + 0xFF, 0x0C, 0x4C, 0xF4, 0xE0, 0x6C, 0x1C, 0xEA, 0x11, 0x54, 0x1D, 0xBF, + 0x1C, 0xEA, 0x13, 0x55, 0x94, 0xEA, 0x0C, 0x0F, 0x95, 0xEA, 0x0C, 0x0F, + 0x00, 0xF0, 0xDE, 0xF8, 0x2C, 0x44, 0x81, 0xEA, 0x03, 0x06, 0x21, 0xEA, + 0x4C, 0x51, 0x23, 0xEA, 0x4C, 0x53, 0x50, 0xEA, 0x01, 0x35, 0x18, 0xBF, + 0x52, 0xEA, 0x03, 0x35, 0x41, 0xF4, 0x80, 0x11, 0x43, 0xF4, 0x80, 0x13, + 0x38, 0xD0, 0xA0, 0xFB, 0x02, 0xCE, 0x4F, 0xF0, 0x00, 0x05, 0xE1, 0xFB, + 0x02, 0xE5, 0x06, 0xF0, 0x00, 0x42, 0xE0, 0xFB, 0x03, 0xE5, 0x4F, 0xF0, + 0x00, 0x06, 0xE1, 0xFB, 0x03, 0x56, 0x9C, 0xF0, 0x00, 0x0F, 0x18, 0xBF, + 0x4E, 0xF0, 0x01, 0x0E, 0xA4, 0xF1, 0xFF, 0x04, 0xB6, 0xF5, 0x00, 0x7F, + 0x64, 0xF5, 0x40, 0x74, 0x04, 0xD2, 0x5F, 0xEA, 0x4E, 0x0E, 0x6D, 0x41, + 0x46, 0xEB, 0x06, 0x06, 0x42, 0xEA, 0xC6, 0x21, 0x41, 0xEA, 0x55, 0x51, + 0x4F, 0xEA, 0xC5, 0x20, 0x40, 0xEA, 0x5E, 0x50, 0x4F, 0xEA, 0xCE, 0x2E, + 0xB4, 0xF1, 0xFD, 0x0C, 0x88, 0xBF, 0xBC, 0xF5, 0xE0, 0x6F, 0x1E, 0xD8, + 0xBE, 0xF1, 0x00, 0x4F, 0x08, 0xBF, 0x5F, 0xEA, 0x50, 0x0E, 0x50, 0xF1, + 0x00, 0x00, 0x41, 0xEB, 0x04, 0x51, 0x70, 0xBD, 0x06, 0xF0, 0x00, 0x46, + 0x46, 0xEA, 0x01, 0x01, 0x40, 0xEA, 0x02, 0x00, 0x81, 0xEA, 0x03, 0x01, + 0xB4, 0xEB, 0x5C, 0x04, 0xC2, 0xBF, 0xD4, 0xEB, 0x0C, 0x05, 0x41, 0xEA, + 0x04, 0x51, 0x70, 0xBD, 0x41, 0xF4, 0x80, 0x11, 0x4F, 0xF0, 0x00, 0x0E, + 0x01, 0x3C, 0x00, 0xF3, 0xAB, 0x80, 0x14, 0xF1, 0x36, 0x0F, 0xDE, 0xBF, + 0x00, 0x20, 0x01, 0xF0, 0x00, 0x41, 0x70, 0xBD, 0xC4, 0xF1, 0x00, 0x04, + 0x20, 0x3C, 0x35, 0xDA, 0x0C, 0x34, 0x1B, 0xDC, 0x04, 0xF1, 0x14, 0x04, + 0xC4, 0xF1, 0x20, 0x05, 0x00, 0xFA, 0x05, 0xF3, 0x20, 0xFA, 0x04, 0xF0, + 0x01, 0xFA, 0x05, 0xF2, 0x40, 0xEA, 0x02, 0x00, 0x01, 0xF0, 0x00, 0x42, + 0x21, 0xF0, 0x00, 0x41, 0x10, 0xEB, 0xD3, 0x70, 0x21, 0xFA, 0x04, 0xF6, + 0x42, 0xEB, 0x06, 0x01, 0x5E, 0xEA, 0x43, 0x0E, 0x08, 0xBF, 0x20, 0xEA, + 0xD3, 0x70, 0x70, 0xBD, 0xC4, 0xF1, 0x0C, 0x04, 0xC4, 0xF1, 0x20, 0x05, + 0x00, 0xFA, 0x04, 0xF3, 0x20, 0xFA, 0x05, 0xF0, 0x01, 0xFA, 0x04, 0xF2, + 0x40, 0xEA, 0x02, 0x00, 0x01, 0xF0, 0x00, 0x41, 0x10, 0xEB, 0xD3, 0x70, + 0x41, 0xF1, 0x00, 0x01, 0x5E, 0xEA, 0x43, 0x0E, 0x08, 0xBF, 0x20, 0xEA, + 0xD3, 0x70, 0x70, 0xBD, 0xC4, 0xF1, 0x20, 0x05, 0x00, 0xFA, 0x05, 0xF2, + 0x4E, 0xEA, 0x02, 0x0E, 0x20, 0xFA, 0x04, 0xF3, 0x01, 0xFA, 0x05, 0xF2, + 0x43, 0xEA, 0x02, 0x03, 0x21, 0xFA, 0x04, 0xF0, 0x01, 0xF0, 0x00, 0x41, + 0x21, 0xFA, 0x04, 0xF2, 0x20, 0xEA, 0x02, 0x00, 0x00, 0xEB, 0xD3, 0x70, + 0x5E, 0xEA, 0x43, 0x0E, 0x08, 0xBF, 0x20, 0xEA, 0xD3, 0x70, 0x70, 0xBD, + 0x94, 0xF0, 0x00, 0x0F, 0x0F, 0xD1, 0x01, 0xF0, 0x00, 0x46, 0x40, 0x00, + 0x41, 0xEB, 0x01, 0x01, 0x11, 0xF4, 0x80, 0x1F, 0x08, 0xBF, 0x01, 0x3C, + 0xF7, 0xD0, 0x41, 0xEA, 0x06, 0x01, 0x95, 0xF0, 0x00, 0x0F, 0x18, 0xBF, + 0x70, 0x47, 0x03, 0xF0, 0x00, 0x46, 0x52, 0x00, 0x43, 0xEB, 0x03, 0x03, + 0x13, 0xF4, 0x80, 0x1F, 0x08, 0xBF, 0x01, 0x3D, 0xF7, 0xD0, 0x43, 0xEA, + 0x06, 0x03, 0x70, 0x47, 0x94, 0xEA, 0x0C, 0x0F, 0x0C, 0xEA, 0x13, 0x55, + 0x18, 0xBF, 0x95, 0xEA, 0x0C, 0x0F, 0x0C, 0xD0, 0x50, 0xEA, 0x41, 0x06, + 0x18, 0xBF, 0x52, 0xEA, 0x43, 0x06, 0xD1, 0xD1, 0x81, 0xEA, 0x03, 0x01, + 0x01, 0xF0, 0x00, 0x41, 0x4F, 0xF0, 0x00, 0x00, 0x70, 0xBD, 0x50, 0xEA, + 0x41, 0x06, 0x06, 0xBF, 0x10, 0x46, 0x19, 0x46, 0x52, 0xEA, 0x43, 0x06, + 0x19, 0xD0, 0x94, 0xEA, 0x0C, 0x0F, 0x02, 0xD1, 0x50, 0xEA, 0x01, 0x36, + 0x13, 0xD1, 0x95, 0xEA, 0x0C, 0x0F, 0x05, 0xD1, 0x52, 0xEA, 0x03, 0x36, + 0x1C, 0xBF, 0x10, 0x46, 0x19, 0x46, 0x0A, 0xD1, 0x81, 0xEA, 0x03, 0x01, + 0x01, 0xF0, 0x00, 0x41, 0x41, 0xF0, 0xFE, 0x41, 0x41, 0xF4, 0x70, 0x01, + 0x4F, 0xF0, 0x00, 0x00, 0x70, 0xBD, 0x41, 0xF0, 0xFE, 0x41, 0x41, 0xF4, + 0x78, 0x01, 0x70, 0xBD, 0x70, 0xB5, 0x4F, 0xF0, 0xFF, 0x0C, 0x4C, 0xF4, + 0xE0, 0x6C, 0x1C, 0xEA, 0x11, 0x54, 0x1D, 0xBF, 0x1C, 0xEA, 0x13, 0x55, + 0x94, 0xEA, 0x0C, 0x0F, 0x95, 0xEA, 0x0C, 0x0F, 0x00, 0xF0, 0xA7, 0xF8, + 0xA4, 0xEB, 0x05, 0x04, 0x81, 0xEA, 0x03, 0x0E, 0x52, 0xEA, 0x03, 0x35, + 0x4F, 0xEA, 0x01, 0x31, 0x00, 0xF0, 0x88, 0x80, 0x4F, 0xEA, 0x03, 0x33, + 0x4F, 0xF0, 0x80, 0x55, 0x45, 0xEA, 0x13, 0x13, 0x43, 0xEA, 0x12, 0x63, + 0x4F, 0xEA, 0x02, 0x22, 0x45, 0xEA, 0x11, 0x15, 0x45, 0xEA, 0x10, 0x65, + 0x4F, 0xEA, 0x00, 0x26, 0x0E, 0xF0, 0x00, 0x41, 0x9D, 0x42, 0x08, 0xBF, + 0x96, 0x42, 0x44, 0xF1, 0xFD, 0x04, 0x04, 0xF5, 0x40, 0x74, 0x02, 0xD2, + 0x5B, 0x08, 0x4F, 0xEA, 0x32, 0x02, 0xB6, 0x1A, 0x65, 0xEB, 0x03, 0x05, + 0x5B, 0x08, 0x4F, 0xEA, 0x32, 0x02, 0x4F, 0xF4, 0x80, 0x10, 0x4F, 0xF4, + 0x00, 0x2C, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, + 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0x0C, 0x00, 0x5B, 0x08, 0x4F, 0xEA, + 0x32, 0x02, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, + 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0x5C, 0x00, 0x5B, 0x08, 0x4F, 0xEA, + 0x32, 0x02, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, + 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0x9C, 0x00, 0x5B, 0x08, 0x4F, 0xEA, + 0x32, 0x02, 0xB6, 0xEB, 0x02, 0x0E, 0x75, 0xEB, 0x03, 0x0E, 0x22, 0xBF, + 0xB6, 0x1A, 0x75, 0x46, 0x40, 0xEA, 0xDC, 0x00, 0x55, 0xEA, 0x06, 0x0E, + 0x18, 0xD0, 0x4F, 0xEA, 0x05, 0x15, 0x45, 0xEA, 0x16, 0x75, 0x4F, 0xEA, + 0x06, 0x16, 0x4F, 0xEA, 0xC3, 0x03, 0x43, 0xEA, 0x52, 0x73, 0x4F, 0xEA, + 0xC2, 0x02, 0x5F, 0xEA, 0x1C, 0x1C, 0xC0, 0xD1, 0x11, 0xF4, 0x80, 0x1F, + 0x0B, 0xD1, 0x41, 0xEA, 0x00, 0x01, 0x4F, 0xF0, 0x00, 0x00, 0x4F, 0xF0, + 0x00, 0x4C, 0xB6, 0xE7, 0x11, 0xF4, 0x80, 0x1F, 0x04, 0xBF, 0x01, 0x43, + 0x00, 0x20, 0xB4, 0xF1, 0xFD, 0x0C, 0x88, 0xBF, 0xBC, 0xF5, 0xE0, 0x6F, + 0x3F, 0xF6, 0xAF, 0xAE, 0xB5, 0xEB, 0x03, 0x0C, 0x04, 0xBF, 0xB6, 0xEB, + 0x02, 0x0C, 0x5F, 0xEA, 0x50, 0x0C, 0x50, 0xF1, 0x00, 0x00, 0x41, 0xEB, + 0x04, 0x51, 0x70, 0xBD, 0x0E, 0xF0, 0x00, 0x4E, 0x4E, 0xEA, 0x11, 0x31, + 0x14, 0xEB, 0x5C, 0x04, 0xC2, 0xBF, 0xD4, 0xEB, 0x0C, 0x05, 0x41, 0xEA, + 0x04, 0x51, 0x70, 0xBD, 0x41, 0xF4, 0x80, 0x11, 0x4F, 0xF0, 0x00, 0x0E, + 0x01, 0x3C, 0x90, 0xE6, 0x45, 0xEA, 0x06, 0x0E, 0x8D, 0xE6, 0x0C, 0xEA, + 0x13, 0x55, 0x94, 0xEA, 0x0C, 0x0F, 0x08, 0xBF, 0x95, 0xEA, 0x0C, 0x0F, + 0x3F, 0xF4, 0x3B, 0xAF, 0x94, 0xEA, 0x0C, 0x0F, 0x0A, 0xD1, 0x50, 0xEA, + 0x01, 0x34, 0x7F, 0xF4, 0x34, 0xAF, 0x95, 0xEA, 0x0C, 0x0F, 0x7F, 0xF4, + 0x25, 0xAF, 0x10, 0x46, 0x19, 0x46, 0x2C, 0xE7, 0x95, 0xEA, 0x0C, 0x0F, + 0x06, 0xD1, 0x52, 0xEA, 0x03, 0x35, 0x3F, 0xF4, 0xFD, 0xAE, 0x10, 0x46, + 0x19, 0x46, 0x22, 0xE7, 0x50, 0xEA, 0x41, 0x06, 0x18, 0xBF, 0x52, 0xEA, + 0x43, 0x06, 0x7F, 0xF4, 0xC5, 0xAE, 0x50, 0xEA, 0x41, 0x04, 0x7F, 0xF4, + 0x0D, 0xAF, 0x52, 0xEA, 0x43, 0x05, 0x7F, 0xF4, 0xEB, 0xAE, 0x12, 0xE7, + 0x4F, 0xF0, 0xFF, 0x3C, 0x06, 0xE0, 0x00, 0xBF, 0x4F, 0xF0, 0x01, 0x0C, + 0x02, 0xE0, 0x00, 0xBF, 0x4F, 0xF0, 0x01, 0x0C, 0x4D, 0xF8, 0x04, 0xCD, + 0x4F, 0xEA, 0x41, 0x0C, 0x7F, 0xEA, 0x6C, 0x5C, 0x4F, 0xEA, 0x43, 0x0C, + 0x18, 0xBF, 0x7F, 0xEA, 0x6C, 0x5C, 0x1B, 0xD0, 0x01, 0xB0, 0x50, 0xEA, + 0x41, 0x0C, 0x0C, 0xBF, 0x52, 0xEA, 0x43, 0x0C, 0x91, 0xEA, 0x03, 0x0F, + 0x02, 0xBF, 0x90, 0xEA, 0x02, 0x0F, 0x00, 0x20, 0x70, 0x47, 0x10, 0xF1, + 0x00, 0x0F, 0x91, 0xEA, 0x03, 0x0F, 0x58, 0xBF, 0x99, 0x42, 0x08, 0xBF, + 0x90, 0x42, 0x2C, 0xBF, 0xD8, 0x17, 0x6F, 0xEA, 0xE3, 0x70, 0x40, 0xF0, + 0x01, 0x00, 0x70, 0x47, 0x4F, 0xEA, 0x41, 0x0C, 0x7F, 0xEA, 0x6C, 0x5C, + 0x02, 0xD1, 0x50, 0xEA, 0x01, 0x3C, 0x07, 0xD1, 0x4F, 0xEA, 0x43, 0x0C, + 0x7F, 0xEA, 0x6C, 0x5C, 0xD6, 0xD1, 0x52, 0xEA, 0x03, 0x3C, 0xD3, 0xD0, + 0x5D, 0xF8, 0x04, 0x0B, 0x70, 0x47, 0x00, 0xBF, 0x84, 0x46, 0x10, 0x46, + 0x62, 0x46, 0x8C, 0x46, 0x19, 0x46, 0x63, 0x46, 0x00, 0xE0, 0x00, 0xBF, + 0x01, 0xB5, 0xFF, 0xF7, 0xB7, 0xFF, 0x00, 0x28, 0x48, 0xBF, 0x10, 0xF1, + 0x00, 0x0F, 0x01, 0xBD, 0x4D, 0xF8, 0x08, 0xED, 0xFF, 0xF7, 0xF4, 0xFF, + 0x0C, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, + 0x4D, 0xF8, 0x08, 0xED, 0xFF, 0xF7, 0xEA, 0xFF, 0x34, 0xBF, 0x01, 0x20, + 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4D, 0xF8, 0x08, 0xED, + 0xFF, 0xF7, 0xE0, 0xFF, 0x94, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, + 0x08, 0xFB, 0x00, 0xBF, 0x4D, 0xF8, 0x08, 0xED, 0xFF, 0xF7, 0xCE, 0xFF, + 0x94, 0xBF, 0x01, 0x20, 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, + 0x4D, 0xF8, 0x08, 0xED, 0xFF, 0xF7, 0xC4, 0xFF, 0x34, 0xBF, 0x01, 0x20, + 0x00, 0x20, 0x5D, 0xF8, 0x08, 0xFB, 0x00, 0xBF, 0x4A, 0x00, 0x11, 0xD2, + 0x12, 0xF5, 0x00, 0x12, 0x11, 0xD2, 0x0D, 0xD5, 0x6F, 0xF4, 0x78, 0x73, + 0xB3, 0xEB, 0x62, 0x52, 0x0E, 0xD4, 0x4F, 0xEA, 0xC1, 0x23, 0x43, 0xF0, + 0x00, 0x43, 0x43, 0xEA, 0x50, 0x53, 0x23, 0xFA, 0x02, 0xF0, 0x70, 0x47, + 0x4F, 0xF0, 0x00, 0x00, 0x70, 0x47, 0x50, 0xEA, 0x01, 0x30, 0x02, 0xD1, + 0x4F, 0xF0, 0xFF, 0x30, 0x70, 0x47, 0x4F, 0xF0, 0x00, 0x00, 0x70, 0x47, + 0x4F, 0xEA, 0x41, 0x02, 0xB2, 0xF1, 0xE0, 0x43, 0x24, 0xBF, 0xB3, 0xF5, + 0x00, 0x1C, 0xDC, 0xF1, 0xFE, 0x5C, 0x0D, 0xD9, 0x01, 0xF0, 0x00, 0x4C, + 0x4F, 0xEA, 0xC0, 0x02, 0x4C, 0xEA, 0x50, 0x70, 0xB2, 0xF1, 0x00, 0x4F, + 0x40, 0xEB, 0x83, 0x00, 0x08, 0xBF, 0x20, 0xF0, 0x01, 0x00, 0x70, 0x47, + 0x11, 0xF0, 0x80, 0x4F, 0x21, 0xD1, 0x13, 0xF1, 0x38, 0x72, 0xBC, 0xBF, + 0x01, 0xF0, 0x00, 0x40, 0x70, 0x47, 0x41, 0xF4, 0x80, 0x11, 0x4F, 0xEA, + 0x52, 0x52, 0xC2, 0xF1, 0x18, 0x02, 0xC2, 0xF1, 0x20, 0x0C, 0x10, 0xFA, + 0x0C, 0xF3, 0x20, 0xFA, 0x02, 0xF0, 0x18, 0xBF, 0x40, 0xF0, 0x01, 0x00, + 0x4F, 0xEA, 0xC1, 0x23, 0x4F, 0xEA, 0xD3, 0x23, 0x03, 0xFA, 0x0C, 0xFC, + 0x40, 0xEA, 0x0C, 0x00, 0x23, 0xFA, 0x02, 0xF3, 0x4F, 0xEA, 0x43, 0x03, + 0xCC, 0xE7, 0x7F, 0xEA, 0x62, 0x53, 0x07, 0xD1, 0x50, 0xEA, 0x01, 0x33, + 0x1E, 0xBF, 0x4F, 0xF0, 0xFE, 0x40, 0x40, 0xF4, 0x40, 0x00, 0x70, 0x47, + 0x01, 0xF0, 0x00, 0x40, 0x40, 0xF0, 0xFE, 0x40, 0x40, 0xF4, 0x00, 0x00, + 0x70, 0x47, 0x00, 0xBF, 0x53, 0xB9, 0x4A, 0xB9, 0x00, 0x29, 0x08, 0xBF, + 0x00, 0x28, 0x1C, 0xBF, 0x4F, 0xF0, 0xFF, 0x31, 0x4F, 0xF0, 0xFF, 0x30, + 0x00, 0xF0, 0x6C, 0xB9, 0xAD, 0xF1, 0x08, 0x0C, 0x6D, 0xE9, 0x04, 0xCE, + 0x00, 0xF0, 0x06, 0xF8, 0xDD, 0xF8, 0x04, 0xE0, 0xDD, 0xE9, 0x02, 0x23, + 0x04, 0xB0, 0x70, 0x47, 0x2D, 0xE9, 0xF0, 0x47, 0x08, 0x9E, 0x0D, 0x46, + 0x04, 0x46, 0x8E, 0x46, 0x00, 0x2B, 0x40, 0xF0, 0x82, 0x80, 0x8A, 0x42, + 0x17, 0x46, 0x46, 0xD9, 0xB2, 0xFA, 0x82, 0xF2, 0x4A, 0xB1, 0xC2, 0xF1, + 0x20, 0x01, 0x05, 0xFA, 0x02, 0xF3, 0x20, 0xFA, 0x01, 0xF1, 0x97, 0x40, + 0x41, 0xEA, 0x03, 0x0E, 0x94, 0x40, 0x4F, 0xEA, 0x17, 0x48, 0x23, 0x0C, + 0xBE, 0xFB, 0xF8, 0xFC, 0xB9, 0xB2, 0x08, 0xFB, 0x1C, 0xEE, 0x43, 0xEA, + 0x0E, 0x43, 0x0C, 0xFB, 0x01, 0xF0, 0x98, 0x42, 0x0A, 0xD9, 0xFB, 0x18, + 0x0C, 0xF1, 0xFF, 0x35, 0x80, 0xF0, 0x16, 0x81, 0x98, 0x42, 0x40, 0xF2, + 0x13, 0x81, 0xAC, 0xF1, 0x02, 0x0C, 0x3B, 0x44, 0x1B, 0x1A, 0xA4, 0xB2, + 0xB3, 0xFB, 0xF8, 0xF0, 0x08, 0xFB, 0x10, 0x33, 0x44, 0xEA, 0x03, 0x44, + 0x00, 0xFB, 0x01, 0xF1, 0xA1, 0x42, 0x09, 0xD9, 0x3C, 0x19, 0x00, 0xF1, + 0xFF, 0x33, 0x80, 0xF0, 0x01, 0x81, 0xA1, 0x42, 0x40, 0xF2, 0xFE, 0x80, + 0x02, 0x38, 0x3C, 0x44, 0x64, 0x1A, 0x40, 0xEA, 0x0C, 0x40, 0x00, 0x21, + 0x1E, 0xB1, 0xD4, 0x40, 0x00, 0x23, 0xC6, 0xE9, 0x00, 0x43, 0xBD, 0xE8, + 0xF0, 0x87, 0x02, 0xB9, 0xFF, 0xDE, 0xB2, 0xFA, 0x82, 0xF2, 0x00, 0x2A, + 0x4F, 0xD1, 0xCB, 0x1B, 0x4F, 0xEA, 0x17, 0x4E, 0x1F, 0xFA, 0x87, 0xF8, + 0x01, 0x21, 0xB3, 0xFB, 0xFE, 0xFC, 0x25, 0x0C, 0x0E, 0xFB, 0x1C, 0x33, + 0x45, 0xEA, 0x03, 0x45, 0x08, 0xFB, 0x0C, 0xF3, 0xAB, 0x42, 0x07, 0xD9, + 0x7D, 0x19, 0x0C, 0xF1, 0xFF, 0x30, 0x02, 0xD2, 0xAB, 0x42, 0x00, 0xF2, + 0xE7, 0x80, 0x84, 0x46, 0xED, 0x1A, 0xA3, 0xB2, 0xB5, 0xFB, 0xFE, 0xF0, + 0x0E, 0xFB, 0x10, 0x55, 0x43, 0xEA, 0x05, 0x44, 0x08, 0xFB, 0x00, 0xF8, + 0xA0, 0x45, 0x07, 0xD9, 0x3C, 0x19, 0x00, 0xF1, 0xFF, 0x33, 0x02, 0xD2, + 0xA0, 0x45, 0x00, 0xF2, 0xD7, 0x80, 0x18, 0x46, 0xA4, 0xEB, 0x08, 0x04, + 0x40, 0xEA, 0x0C, 0x40, 0xC0, 0xE7, 0x8B, 0x42, 0x08, 0xD9, 0x00, 0x2E, + 0x00, 0xF0, 0xAF, 0x80, 0x00, 0x21, 0xC6, 0xE9, 0x00, 0x05, 0x08, 0x46, + 0xBD, 0xE8, 0xF0, 0x87, 0xB3, 0xFA, 0x83, 0xF1, 0x00, 0x29, 0x4B, 0xD1, + 0xAB, 0x42, 0x02, 0xD3, 0x82, 0x42, 0x00, 0xF2, 0xB7, 0x80, 0x84, 0x1A, + 0x65, 0xEB, 0x03, 0x03, 0x01, 0x20, 0x9E, 0x46, 0x00, 0x2E, 0xAA, 0xD0, + 0xC6, 0xE9, 0x00, 0x4E, 0xA7, 0xE7, 0xC2, 0xF1, 0x20, 0x0C, 0x01, 0xFA, + 0x02, 0xF3, 0x97, 0x40, 0x20, 0xFA, 0x0C, 0xF0, 0x4F, 0xEA, 0x17, 0x4E, + 0x21, 0xFA, 0x0C, 0xFC, 0x18, 0x43, 0xBC, 0xFB, 0xFE, 0xF1, 0x05, 0x0C, + 0x0E, 0xFB, 0x11, 0xCC, 0x1F, 0xFA, 0x87, 0xF8, 0x45, 0xEA, 0x0C, 0x45, + 0x01, 0xFB, 0x08, 0xF3, 0xAB, 0x42, 0x04, 0xFA, 0x02, 0xF4, 0x09, 0xD9, + 0x7D, 0x19, 0x01, 0xF1, 0xFF, 0x3C, 0x80, 0xF0, 0x8B, 0x80, 0xAB, 0x42, + 0x40, 0xF2, 0x88, 0x80, 0x02, 0x39, 0x3D, 0x44, 0xEB, 0x1A, 0x85, 0xB2, + 0xB3, 0xFB, 0xFE, 0xF0, 0x0E, 0xFB, 0x10, 0x33, 0x45, 0xEA, 0x03, 0x45, + 0x00, 0xFB, 0x08, 0xF3, 0xAB, 0x42, 0x07, 0xD9, 0x7D, 0x19, 0x00, 0xF1, + 0xFF, 0x3C, 0x71, 0xD2, 0xAB, 0x42, 0x6F, 0xD9, 0x02, 0x38, 0x3D, 0x44, + 0xEB, 0x1A, 0x40, 0xEA, 0x01, 0x41, 0x78, 0xE7, 0xC1, 0xF1, 0x20, 0x0C, + 0x8B, 0x40, 0x22, 0xFA, 0x0C, 0xF7, 0x1F, 0x43, 0x20, 0xFA, 0x0C, 0xF4, + 0x05, 0xFA, 0x01, 0xF3, 0x4F, 0xEA, 0x17, 0x4E, 0x25, 0xFA, 0x0C, 0xF5, + 0x1C, 0x43, 0x23, 0x0C, 0xB5, 0xFB, 0xFE, 0xF9, 0x1F, 0xFA, 0x87, 0xF8, + 0x0E, 0xFB, 0x19, 0x55, 0x43, 0xEA, 0x05, 0x45, 0x09, 0xFB, 0x08, 0xFA, + 0xAA, 0x45, 0x02, 0xFA, 0x01, 0xF2, 0x00, 0xFA, 0x01, 0xF3, 0x08, 0xD9, + 0x7D, 0x19, 0x09, 0xF1, 0xFF, 0x30, 0x47, 0xD2, 0xAA, 0x45, 0x45, 0xD9, + 0xA9, 0xF1, 0x02, 0x09, 0x3D, 0x44, 0xA5, 0xEB, 0x0A, 0x05, 0xA4, 0xB2, + 0xB5, 0xFB, 0xFE, 0xF0, 0x0E, 0xFB, 0x10, 0x55, 0x44, 0xEA, 0x05, 0x44, + 0x00, 0xFB, 0x08, 0xF8, 0xA0, 0x45, 0x07, 0xD9, 0x3C, 0x19, 0x00, 0xF1, + 0xFF, 0x35, 0x2D, 0xD2, 0xA0, 0x45, 0x2B, 0xD9, 0x02, 0x38, 0x3C, 0x44, + 0x40, 0xEA, 0x09, 0x40, 0xA4, 0xEB, 0x08, 0x04, 0xA0, 0xFB, 0x02, 0x89, + 0x4C, 0x45, 0xC6, 0x46, 0x4D, 0x46, 0x19, 0xD3, 0x16, 0xD0, 0x5E, 0xB1, + 0xB3, 0xEB, 0x0E, 0x02, 0x64, 0xEB, 0x05, 0x04, 0x04, 0xFA, 0x0C, 0xFC, + 0xCA, 0x40, 0x4C, 0xEA, 0x02, 0x02, 0xCC, 0x40, 0xC6, 0xE9, 0x00, 0x24, + 0x00, 0x21, 0xBD, 0xE8, 0xF0, 0x87, 0x31, 0x46, 0x30, 0x46, 0x0E, 0xE7, + 0xAC, 0x46, 0xED, 0xE6, 0x18, 0x46, 0x01, 0xE7, 0x43, 0x45, 0xE6, 0xD2, + 0xB8, 0xEB, 0x02, 0x0E, 0x69, 0xEB, 0x07, 0x05, 0x01, 0x38, 0xE0, 0xE7, + 0x28, 0x46, 0xD3, 0xE7, 0x60, 0x46, 0x8F, 0xE7, 0x81, 0x46, 0xBA, 0xE7, + 0x61, 0x46, 0x77, 0xE7, 0x08, 0x46, 0x4B, 0xE7, 0xAC, 0xF1, 0x02, 0x0C, + 0x3D, 0x44, 0x15, 0xE7, 0x02, 0x38, 0x3C, 0x44, 0x26, 0xE7, 0x00, 0xBF, + 0x70, 0x47, 0x00, 0xBF, 0x00, 0x28, 0xB8, 0xBF, 0x40, 0x42, 0x70, 0x47, + 0x03, 0x2A, 0x70, 0xB4, 0x12, 0xD9, 0x40, 0xEA, 0x01, 0x05, 0xAD, 0x07, + 0x04, 0x46, 0x0B, 0x46, 0x1E, 0xD1, 0x19, 0x46, 0x20, 0x46, 0x53, 0xF8, + 0x04, 0x5B, 0x54, 0xF8, 0x04, 0x6B, 0xAE, 0x42, 0x16, 0xD1, 0x04, 0x3A, + 0x03, 0x2A, 0x20, 0x46, 0x19, 0x46, 0xF2, 0xD8, 0x56, 0x1E, 0xA2, 0xB1, + 0x01, 0x39, 0x44, 0x1E, 0x01, 0xE0, 0xC3, 0x18, 0x0C, 0xD0, 0x14, 0xF8, + 0x01, 0x5F, 0x11, 0xF8, 0x01, 0x2F, 0x95, 0x42, 0xA6, 0xEB, 0x04, 0x03, + 0xF5, 0xD0, 0xA8, 0x1A, 0x70, 0xBC, 0x70, 0x47, 0x56, 0x1E, 0xED, 0xE7, + 0x18, 0x46, 0x70, 0xBC, 0x70, 0x47, 0x10, 0x46, 0xF6, 0xE7, 0x00, 0xBF, + 0x84, 0x46, 0x41, 0xEA, 0x00, 0x03, 0x13, 0xF0, 0x03, 0x03, 0x6D, 0xD1, + 0x40, 0x3A, 0x41, 0xD3, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x40, 0x3A, 0xBD, 0xD2, 0x30, 0x32, 0x11, 0xD3, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x51, 0xF8, 0x04, 0x3B, + 0x40, 0xF8, 0x04, 0x3B, 0x10, 0x3A, 0xED, 0xD2, 0x0C, 0x32, 0x05, 0xD3, + 0x51, 0xF8, 0x04, 0x3B, 0x40, 0xF8, 0x04, 0x3B, 0x04, 0x3A, 0xF9, 0xD2, + 0x04, 0x32, 0x08, 0xD0, 0xD2, 0x07, 0x1C, 0xBF, 0x11, 0xF8, 0x01, 0x3B, + 0x00, 0xF8, 0x01, 0x3B, 0x01, 0xD3, 0x0B, 0x88, 0x03, 0x80, 0x60, 0x46, + 0x70, 0x47, 0x00, 0xBF, 0x08, 0x2A, 0x13, 0xD3, 0x8B, 0x07, 0x8D, 0xD0, + 0x10, 0xF0, 0x03, 0x03, 0x8A, 0xD0, 0xC3, 0xF1, 0x04, 0x03, 0xD2, 0x1A, + 0xDB, 0x07, 0x1C, 0xBF, 0x11, 0xF8, 0x01, 0x3B, 0x00, 0xF8, 0x01, 0x3B, + 0x80, 0xD3, 0x31, 0xF8, 0x02, 0x3B, 0x20, 0xF8, 0x02, 0x3B, 0x7B, 0xE7, + 0x04, 0x3A, 0xD9, 0xD3, 0x01, 0x3A, 0x11, 0xF8, 0x01, 0x3B, 0x00, 0xF8, + 0x01, 0x3B, 0xF9, 0xD2, 0x0B, 0x78, 0x03, 0x70, 0x4B, 0x78, 0x43, 0x70, + 0x8B, 0x78, 0x83, 0x70, 0x60, 0x46, 0x70, 0x47, 0x88, 0x42, 0xF0, 0xB4, + 0x0D, 0xD9, 0x8B, 0x18, 0x83, 0x42, 0x0A, 0xD9, 0x84, 0x18, 0x32, 0xB1, + 0x22, 0x46, 0x13, 0xF8, 0x01, 0x4D, 0x02, 0xF8, 0x01, 0x4D, 0x99, 0x42, + 0xF9, 0xD1, 0xF0, 0xBC, 0x70, 0x47, 0x0F, 0x2A, 0x0E, 0xD8, 0x03, 0x46, + 0x54, 0x1E, 0x00, 0x2A, 0xF7, 0xD0, 0x01, 0x34, 0x0C, 0x44, 0x01, 0x3B, + 0x11, 0xF8, 0x01, 0x2B, 0x03, 0xF8, 0x01, 0x2F, 0xA1, 0x42, 0xF9, 0xD1, + 0xF0, 0xBC, 0x70, 0x47, 0x40, 0xEA, 0x01, 0x03, 0x9B, 0x07, 0x3F, 0xD1, + 0xA2, 0xF1, 0x10, 0x03, 0x23, 0xF0, 0x0F, 0x04, 0x01, 0xF1, 0x20, 0x07, + 0x27, 0x44, 0x1B, 0x09, 0x01, 0xF1, 0x10, 0x04, 0x00, 0xF1, 0x10, 0x05, + 0x54, 0xF8, 0x10, 0x6C, 0x45, 0xF8, 0x10, 0x6C, 0x54, 0xF8, 0x0C, 0x6C, + 0x45, 0xF8, 0x0C, 0x6C, 0x54, 0xF8, 0x08, 0x6C, 0x45, 0xF8, 0x08, 0x6C, + 0x54, 0xF8, 0x04, 0x6C, 0x45, 0xF8, 0x04, 0x6C, 0x10, 0x34, 0xBC, 0x42, + 0x05, 0xF1, 0x10, 0x05, 0xEA, 0xD1, 0x01, 0x33, 0x12, 0xF0, 0x0C, 0x0F, + 0x01, 0xEB, 0x03, 0x11, 0x02, 0xF0, 0x0F, 0x04, 0x00, 0xEB, 0x03, 0x13, + 0x17, 0xD0, 0x04, 0x3C, 0x24, 0xF0, 0x03, 0x0C, 0xA5, 0x08, 0x9C, 0x44, + 0x1C, 0x1F, 0x0E, 0x46, 0x56, 0xF8, 0x04, 0x7B, 0x44, 0xF8, 0x04, 0x7F, + 0x64, 0x45, 0xF9, 0xD1, 0x6C, 0x1C, 0x03, 0xEB, 0x84, 0x03, 0x01, 0xEB, + 0x84, 0x01, 0x02, 0xF0, 0x03, 0x02, 0xAD, 0xE7, 0x54, 0x1E, 0x03, 0x46, + 0xAD, 0xE7, 0x22, 0x46, 0xA8, 0xE7, 0x00, 0xBF, 0x0B, 0x4B, 0x0C, 0x48, + 0x19, 0x68, 0xD1, 0xE9, 0x2A, 0x23, 0x10, 0xB4, 0x0A, 0x4C, 0x00, 0xFB, + 0x02, 0xF0, 0x04, 0xFB, 0x03, 0x00, 0xA2, 0xFB, 0x04, 0x34, 0x04, 0x44, + 0x5A, 0x1C, 0x44, 0xF1, 0x00, 0x00, 0xC1, 0xE9, 0x2A, 0x20, 0x10, 0xBC, + 0x20, 0xF0, 0x00, 0x40, 0x70, 0x47, 0x00, 0xBF, 0x80, 0x01, 0x17, 0x00, + 0x2D, 0xF4, 0x51, 0x58, 0x2D, 0x7F, 0x95, 0x4C, 0x11, 0xF0, 0xFF, 0x01, + 0x03, 0x46, 0x44, 0xD0, 0x82, 0x07, 0x32, 0xD1, 0x70, 0xB4, 0x04, 0x68, + 0x41, 0xEA, 0x01, 0x26, 0x46, 0xEA, 0x06, 0x46, 0x86, 0xEA, 0x04, 0x05, + 0xA5, 0xF1, 0x01, 0x33, 0xA4, 0xF1, 0x01, 0x32, 0x23, 0xEA, 0x05, 0x03, + 0x22, 0xEA, 0x04, 0x02, 0x13, 0x43, 0x13, 0xF0, 0x80, 0x3F, 0x0F, 0xD1, + 0x50, 0xF8, 0x04, 0x4F, 0x84, 0xEA, 0x06, 0x05, 0xA5, 0xF1, 0x01, 0x32, + 0xA4, 0xF1, 0x01, 0x33, 0x22, 0xEA, 0x05, 0x02, 0x23, 0xEA, 0x04, 0x03, + 0x13, 0x43, 0x13, 0xF0, 0x80, 0x3F, 0xEF, 0xD0, 0x03, 0x78, 0x23, 0xB9, + 0x36, 0xE0, 0x10, 0xF8, 0x01, 0x3F, 0x00, 0x2B, 0x32, 0xD0, 0x99, 0x42, + 0xF9, 0xD1, 0x30, 0xE0, 0x8A, 0x42, 0x11, 0xD0, 0x9A, 0x07, 0x18, 0x46, + 0xCC, 0xD0, 0x18, 0x46, 0x13, 0xF8, 0x01, 0x2B, 0x00, 0x2A, 0xF5, 0xD1, + 0x10, 0x46, 0x70, 0x47, 0x99, 0x07, 0x18, 0x46, 0x07, 0xD0, 0x18, 0x46, + 0x01, 0x33, 0x02, 0x78, 0x00, 0x2A, 0xF7, 0xD1, 0x70, 0x47, 0x82, 0x07, + 0xF7, 0xD1, 0x02, 0x68, 0xA2, 0xF1, 0x01, 0x33, 0x23, 0xEA, 0x02, 0x03, + 0x13, 0xF0, 0x80, 0x3F, 0x08, 0xD1, 0x50, 0xF8, 0x04, 0x2F, 0xA2, 0xF1, + 0x01, 0x33, 0x23, 0xEA, 0x02, 0x03, 0x13, 0xF0, 0x80, 0x3F, 0xF6, 0xD0, + 0x03, 0x78, 0x00, 0x2B, 0xE8, 0xD0, 0x10, 0xF8, 0x01, 0x3F, 0x00, 0x2B, + 0xFB, 0xD1, 0x70, 0x47, 0x18, 0x46, 0x70, 0xBC, 0x70, 0x47, 0x00, 0xBF, + 0x80, 0xEA, 0x01, 0x02, 0x84, 0x46, 0x12, 0xF0, 0x03, 0x0F, 0x4F, 0xD1, + 0x11, 0xF0, 0x03, 0x0F, 0x32, 0xD1, 0x4D, 0xF8, 0x04, 0x4D, 0x11, 0xF0, + 0x04, 0x0F, 0x51, 0xF8, 0x04, 0x3B, 0x0B, 0xD0, 0xA3, 0xF1, 0x01, 0x32, + 0x9A, 0x43, 0x12, 0xF0, 0x80, 0x3F, 0x04, 0xBF, 0x4C, 0xF8, 0x04, 0x3B, + 0x51, 0xF8, 0x04, 0x3B, 0x16, 0xD1, 0x00, 0xBF, 0x51, 0xF8, 0x04, 0x4B, + 0xA3, 0xF1, 0x01, 0x32, 0x9A, 0x43, 0x12, 0xF0, 0x80, 0x3F, 0xA4, 0xF1, + 0x01, 0x32, 0x0B, 0xD1, 0x4C, 0xF8, 0x04, 0x3B, 0xA2, 0x43, 0x12, 0xF0, + 0x80, 0x3F, 0x04, 0xBF, 0x51, 0xF8, 0x04, 0x3B, 0x4C, 0xF8, 0x04, 0x4B, + 0xEA, 0xD0, 0x23, 0x46, 0x0C, 0xF8, 0x01, 0x3B, 0x13, 0xF0, 0xFF, 0x0F, + 0x4F, 0xEA, 0x33, 0x23, 0xF8, 0xD1, 0x5D, 0xF8, 0x04, 0x4B, 0x70, 0x47, + 0x11, 0xF0, 0x01, 0x0F, 0x06, 0xD0, 0x11, 0xF8, 0x01, 0x2B, 0x0C, 0xF8, + 0x01, 0x2B, 0x00, 0x2A, 0x08, 0xBF, 0x70, 0x47, 0x11, 0xF0, 0x02, 0x0F, + 0xBF, 0xD0, 0x31, 0xF8, 0x02, 0x2B, 0x12, 0xF0, 0xFF, 0x0F, 0x16, 0xBF, + 0x2C, 0xF8, 0x02, 0x2B, 0x8C, 0xF8, 0x00, 0x20, 0x12, 0xF4, 0x7F, 0x4F, + 0xB3, 0xD1, 0x70, 0x47, 0x11, 0xF8, 0x01, 0x2B, 0x0C, 0xF8, 0x01, 0x2B, + 0x00, 0x2A, 0xF9, 0xD1, 0x70, 0x47, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xF8, 0x00, 0xF0, + 0x6D, 0xE9, 0x02, 0x45, 0x20, 0xF0, 0x07, 0x01, 0x6F, 0xF0, 0x00, 0x0C, + 0x10, 0xF0, 0x07, 0x04, 0x91, 0xF8, 0x20, 0xF0, 0x40, 0xF0, 0x49, 0x80, + 0x4F, 0xF0, 0x00, 0x04, 0x6F, 0xF0, 0x07, 0x00, 0xD1, 0xE9, 0x00, 0x23, + 0x91, 0xF8, 0x40, 0xF0, 0x00, 0xF1, 0x08, 0x00, 0x82, 0xFA, 0x4C, 0xF2, + 0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, 0xA2, 0xFA, 0x8C, 0xF3, + 0x4B, 0xBB, 0xD1, 0xE9, 0x02, 0x23, 0x82, 0xFA, 0x4C, 0xF2, 0x00, 0xF1, + 0x08, 0x00, 0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, 0xA2, 0xFA, + 0x8C, 0xF3, 0xE3, 0xB9, 0xD1, 0xE9, 0x04, 0x23, 0x82, 0xFA, 0x4C, 0xF2, + 0x00, 0xF1, 0x08, 0x00, 0xA4, 0xFA, 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, + 0xA2, 0xFA, 0x8C, 0xF3, 0x7B, 0xB9, 0xD1, 0xE9, 0x06, 0x23, 0x01, 0xF1, + 0x20, 0x01, 0x82, 0xFA, 0x4C, 0xF2, 0x00, 0xF1, 0x08, 0x00, 0xA4, 0xFA, + 0x8C, 0xF2, 0x83, 0xFA, 0x4C, 0xF3, 0xA2, 0xFA, 0x8C, 0xF3, 0x00, 0x2B, + 0xC6, 0xD0, 0x00, 0x2A, 0x04, 0xBF, 0x04, 0x30, 0x1A, 0x46, 0x12, 0xBA, + 0xB2, 0xFA, 0x82, 0xF2, 0xFD, 0xE8, 0x02, 0x45, 0x00, 0xEB, 0xD2, 0x00, + 0x70, 0x47, 0xD1, 0xE9, 0x00, 0x23, 0x04, 0xF0, 0x03, 0x05, 0xC4, 0xF1, + 0x00, 0x00, 0x4F, 0xEA, 0xC5, 0x05, 0x14, 0xF0, 0x04, 0x0F, 0x91, 0xF8, + 0x40, 0xF0, 0x0C, 0xFA, 0x05, 0xF5, 0x62, 0xEA, 0x05, 0x02, 0x1C, 0xBF, + 0x63, 0xEA, 0x05, 0x03, 0x62, 0x46, 0x4F, 0xF0, 0x00, 0x04, 0xA9, 0xE7, + 0x9A, 0xB3, 0xF0, 0xB4, 0x40, 0xEA, 0x01, 0x05, 0xAD, 0x07, 0x04, 0x46, + 0x03, 0x46, 0x08, 0x46, 0x28, 0xD0, 0x20, 0x78, 0x0E, 0x78, 0x86, 0x42, + 0x29, 0xD1, 0x01, 0x2A, 0x2A, 0xD0, 0x25, 0x46, 0x50, 0xB1, 0x15, 0xF8, + 0x01, 0x0F, 0x11, 0xF8, 0x01, 0x6F, 0xEB, 0x43, 0xB0, 0x42, 0x13, 0x44, + 0x1D, 0xD1, 0xE3, 0x18, 0xF4, 0xD1, 0x18, 0x46, 0xF0, 0xBC, 0x70, 0x47, + 0x07, 0x68, 0x1C, 0x46, 0x53, 0xF8, 0x04, 0x5B, 0xA5, 0xF1, 0x01, 0x36, + 0xBD, 0x42, 0x01, 0x46, 0x26, 0xEA, 0x05, 0x06, 0x00, 0xF1, 0x04, 0x00, + 0xDD, 0xD1, 0x04, 0x3A, 0x1C, 0x46, 0x01, 0x46, 0x0A, 0xD0, 0x16, 0xF0, + 0x80, 0x3F, 0x07, 0xD1, 0x03, 0x2A, 0xE9, 0xD8, 0xD3, 0xE7, 0x10, 0x46, + 0x70, 0x47, 0x80, 0x1B, 0xF0, 0xBC, 0x70, 0x47, 0x00, 0x20, 0xF0, 0xBC, + 0x70, 0x47, 0x00, 0xBF, 0x6D, 0x65, 0x6D, 0x20, 0x6F, 0x76, 0x65, 0x72, + 0x6C, 0x61, 0x70, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x6B, 0x5F, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x62, 0x73, 0x73, 0x5F, + 0x65, 0x6E, 0x64, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x6D, 0x65, 0x6D, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x73, + 0x3A, 0x20, 0x73, 0x74, 0x6B, 0x5F, 0x65, 0x6E, 0x64, 0x3D, 0x25, 0x78, + 0x2C, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x3D, + 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, + 0x74, 0x79, 0x70, 0x65, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x77, 0x69, 0x66, 0x69, 0x6D, 0x61, 0x69, 0x6E, 0x21, 0x0D, 0x0A, 0x00, + 0x10, 0x14, 0x08, 0x12, 0x3C, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x0C, 0x13, + 0x08, 0x12, 0xC7, 0x11, 0x10, 0x14, 0x08, 0x12, 0x3C, 0x00, 0x8A, 0x12, + 0x07, 0x12, 0x0C, 0x13, 0x08, 0x12, 0x45, 0x11, 0x08, 0x12, 0x04, 0x11, + 0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x86, 0x11, 0x04, 0x11, 0x03, 0x11, + 0x08, 0x12, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x86, 0x11, + 0x04, 0x11, 0xC2, 0x10, 0x08, 0x12, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, + 0x07, 0x12, 0xC3, 0x10, 0x04, 0x11, 0xC2, 0x10, 0x04, 0x11, 0x04, 0x11, + 0x78, 0x00, 0x8A, 0x12, 0x86, 0x11, 0xC3, 0x10, 0x04, 0x11, 0xC2, 0x10, + 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x86, 0x11, 0xC3, 0x10, + 0x04, 0x11, 0xC2, 0x10, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, + 0x07, 0x12, 0xC3, 0x10, 0x04, 0x11, 0xC2, 0x10, 0x08, 0x12, 0x04, 0x11, + 0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x0C, 0x13, 0x08, 0x12, 0x03, 0x11, + 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, 0x07, 0x12, 0x86, 0x11, + 0x04, 0x11, 0xC2, 0x10, 0x04, 0x11, 0x04, 0x11, 0x78, 0x00, 0x8A, 0x12, + 0x8A, 0x12, 0x0C, 0x13, 0x04, 0x11, 0x03, 0x11, 0x04, 0x11, 0x04, 0x11, + 0x78, 0x00, 0x8A, 0x12, 0x8A, 0x12, 0x86, 0x11, 0x04, 0x11, 0x03, 0x11, + 0x9D, 0x87, 0x25, 0x73, 0x3A, 0x20, 0x62, 0x61, 0x6E, 0x64, 0x3D, 0x25, + 0x64, 0x20, 0x66, 0x72, 0x65, 0x71, 0x3D, 0x25, 0x64, 0x20, 0x66, 0x72, + 0x65, 0x71, 0x31, 0x3D, 0x25, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x74, + 0x79, 0x70, 0x65, 0x3D, 0x25, 0x64, 0x20, 0x73, 0x78, 0x3D, 0x25, 0x64, + 0x0A, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x63, 0x68, 0x61, 0x6E, 0x3A, + 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x20, 0x62, 0x61, 0x6E, 0x64, 0x20, 0x25, 0x64, 0x20, 0x74, + 0x6F, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x62, 0x61, 0x6E, 0x64, + 0x20, 0x3C, 0x20, 0x50, 0x48, 0x59, 0x5F, 0x42, 0x41, 0x4E, 0x44, 0x5F, + 0x4D, 0x41, 0x58, 0x00, 0x28, 0x6D, 0x64, 0x6D, 0x5F, 0x6D, 0x61, 0x6A, + 0x6F, 0x72, 0x5F, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x5F, 0x67, + 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x2B, 0x20, 0x32, 0x29, 0x20, 0x2A, + 0x20, 0x31, 0x30, 0x20, 0x2B, 0x20, 0x6D, 0x64, 0x6D, 0x5F, 0x6D, 0x69, + 0x6E, 0x6F, 0x72, 0x5F, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x5F, + 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4E, 0x58, + 0x5F, 0x4D, 0x44, 0x4D, 0x5F, 0x56, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x9B, 0x87, 0x25, 0x73, 0x3A, 0x20, 0x72, 0x61, 0x64, 0x69, 0x6F, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, + 0x65, 0x78, 0x69, 0x73, 0x74, 0x0A, 0x00, 0x00, 0x9D, 0x87, 0x25, 0x73, + 0x3A, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x61, + 0x6D, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2C, 0x20, + 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x0A, 0x00, + 0x9B, 0x25, 0x73, 0x20, 0x4D, 0x41, 0x43, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x20, 0x21, 0x3D, 0x20, 0x49, 0x44, 0x4C, 0x45, 0x0A, 0x00, 0x00, + 0x70, 0x68, 0x79, 0x5F, 0x68, 0x77, 0x5F, 0x73, 0x65, 0x74, 0x5F, 0x63, + 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x00, 0x00, 0x70, 0x68, 0x79, 0x5F, + 0x73, 0x65, 0x74, 0x5F, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x00, + 0x70, 0x68, 0x79, 0x5F, 0x67, 0x65, 0x74, 0x5F, 0x63, 0x68, 0x61, 0x6E, + 0x6E, 0x65, 0x6C, 0x00, 0x70, 0x68, 0x79, 0x5F, 0x73, 0x74, 0x6F, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x0D, 0xFE, 0x11, 0xFE, 0x0D, 0x02, + 0x0E, 0xFF, 0x13, 0xFE, 0x0B, 0x02, 0x0C, 0xFD, 0x12, 0xFD, 0x0C, 0x03, + 0x0D, 0xFE, 0x13, 0xFD, 0x0B, 0x03, 0x0C, 0xFD, 0x14, 0xFD, 0x0A, 0x03, + 0x0B, 0xFC, 0x11, 0xFF, 0x0D, 0x01, 0x0E, 0xFF, 0x13, 0xFD, 0x0B, 0x03, + 0x0C, 0xFD, 0x12, 0xFE, 0x0C, 0x02, 0x0D, 0xFE, 0x12, 0xFE, 0x0C, 0x02, + 0x0D, 0xFE, 0x12, 0xFE, 0x0C, 0x02, 0x0D, 0xFE, 0x13, 0xFE, 0x0B, 0x02, + 0x0C, 0xFD, 0x1F, 0x00, 0x0C, 0x02, 0x0D, 0xFE, 0x11, 0x00, 0x0D, 0x00, + 0x0E, 0xFF, 0x13, 0x03, 0x0B, 0x03, 0x0C, 0xFD, 0x14, 0xFC, 0x0A, 0x04, + 0x0B, 0xFC, 0x12, 0xFF, 0x0C, 0x01, 0x0D, 0xFE, 0x11, 0xFE, 0x0D, 0x02, + 0x0E, 0xFF, 0x13, 0xFE, 0x0B, 0x02, 0x0C, 0xFD, 0x13, 0xFD, 0x0B, 0x03, + 0x0C, 0xFD, 0x12, 0xFF, 0x0C, 0x01, 0x0D, 0xFE, 0x12, 0xFD, 0x0C, 0x03, + 0x0D, 0xFE, 0x12, 0xFF, 0x0C, 0x01, 0x0D, 0xFE, 0x13, 0xFD, 0x0B, 0x03, + 0x0C, 0xFD, 0x13, 0xFE, 0x0B, 0x02, 0x0C, 0xFD, 0x1F, 0x00, 0x00, 0x00, + 0x69, 0x6E, 0x74, 0x63, 0x5F, 0x73, 0x70, 0x75, 0x72, 0x69, 0x6F, 0x75, + 0x73, 0x00, 0x00, 0x00, 0x18, 0x10, 0x0C, 0x08, 0x07, 0x06, 0x8B, 0x05, + 0x89, 0x04, 0x87, 0x03, 0x85, 0x02, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x65, 0x74, 0x20, 0x74, 0x78, 0x67, 0x61, 0x69, 0x6E, 0x20, 0x74, + 0x61, 0x62, 0x6C, 0x65, 0x20, 0x32, 0x2E, 0x34, 0x67, 0x28, 0x70, 0x61, + 0x5F, 0x64, 0x72, 0x76, 0x5F, 0x69, 0x62, 0x69, 0x74, 0x29, 0x3A, 0x25, + 0x78, 0x0A, 0x00, 0x00, 0x77, 0x66, 0x20, 0x64, 0x66, 0x65, 0x20, 0x61, + 0x6E, 0x64, 0x20, 0x72, 0x66, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x52, 0x58, + 0x4F, 0x4E, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x66, 0x20, 0x64, + 0x66, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x66, 0x69, 0x6E, 0x74, + 0x66, 0x20, 0x52, 0x58, 0x4F, 0x46, 0x46, 0x21, 0x0D, 0x0A, 0x00, 0x00, + 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, + 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x20, + 0x69, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x5F, 0x6C, 0x73, 0x20, 0x64, 0x65, + 0x74, 0x20, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x6C, 0x6F, 0x70, + 0x65, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x67, 0x61, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, + 0x3A, 0x20, 0x66, 0x69, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x67, 0x61, 0x69, 0x6E, + 0x20, 0x25, 0x78, 0x20, 0x3A, 0x20, 0x66, 0x69, 0x74, 0x5F, 0x66, 0x61, + 0x69, 0x6C, 0x65, 0x64, 0x21, 0x0D, 0x0A, 0x00, 0x63, 0x6F, 0x65, 0x66, + 0x5F, 0x49, 0x51, 0x20, 0x20, 0x69, 0x73, 0x20, 0x25, 0x64, 0x2E, 0x00, + 0x25, 0x30, 0x33, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x20, + 0x73, 0x64, 0x6D, 0x20, 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x20, 0x66, 0x72, 0x65, 0x71, + 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x63, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, + 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x65, 0x6E, + 0x20, 0x72, 0x65, 0x67, 0x20, 0x69, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x66, 0x20, 0x64, 0x63, 0x63, 0x61, 0x6C, + 0x69, 0x62, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x21, 0x0D, 0x0A, 0x00, + 0x66, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x2D, 0x49, 0x20, 0x25, 0x78, 0x3A, + 0x20, 0x5B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, + 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, + 0x64, 0x5D, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x66, 0x69, 0x74, 0x2D, + 0x69, 0x6E, 0x2D, 0x51, 0x20, 0x25, 0x78, 0x3A, 0x20, 0x5B, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x3B, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x5D, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x67, 0x61, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, + 0x3A, 0x20, 0x63, 0x61, 0x6C, 0x49, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x63, + 0x61, 0x6C, 0x51, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x77, 0x66, 0x20, 0x64, 0x63, 0x63, 0x61, 0x6C, 0x69, 0x62, 0x20, 0x65, + 0x6E, 0x64, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6C, 0x5F, + 0x63, 0x66, 0x67, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x61, 0x6C, 0x70, 0x68, + 0x61, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x70, 0x6C, 0x6C, 0x20, + 0x75, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x3A, 0x20, 0x25, 0x78, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x66, 0x72, 0x66, 0x20, 0x6F, 0x6E, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x77, 0x66, 0x72, 0x66, 0x20, 0x6F, 0x66, 0x66, + 0x0D, 0x0A, 0x00, 0x00, 0x20, 0x2A, 0x20, 0x63, 0x61, 0x6C, 0x20, 0x74, + 0x69, 0x61, 0x5F, 0x69, 0x71, 0x3A, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x20, 0x49, 0x69, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x49, 0x71, + 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x69, 0x30, 0x3D, 0x25, 0x64, + 0x2C, 0x20, 0x56, 0x71, 0x30, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, + 0x20, 0x20, 0x49, 0x69, 0x31, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x49, 0x71, + 0x31, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x69, 0x31, 0x3D, 0x25, 0x64, + 0x2C, 0x20, 0x56, 0x71, 0x31, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, + 0x20, 0x61, 0x64, 0x6A, 0x49, 0x69, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x2C, + 0x20, 0x61, 0x64, 0x6A, 0x49, 0x71, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x2D, 0x3E, 0x20, 0x49, 0x69, 0x30, 0x3D, 0x25, + 0x64, 0x2C, 0x20, 0x49, 0x71, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, + 0x69, 0x30, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x56, 0x71, 0x30, 0x3D, 0x25, + 0x64, 0x3B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x6C, 0x6E, 0x61, + 0x5F, 0x76, 0x63, 0x6D, 0x70, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x6C, 0x6E, + 0x61, 0x5F, 0x76, 0x63, 0x6D, 0x6E, 0x3D, 0x25, 0x64, 0x3B, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x67, 0x61, 0x69, 0x6E, + 0x20, 0x3D, 0x20, 0x25, 0x64, 0x3B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x77, 0x66, 0x72, 0x66, 0x20, 0x63, 0x61, 0x6C, 0x69, 0x62, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x20, + 0x3C, 0x3D, 0x20, 0x33, 0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x78, 0x5F, + 0x6D, 0x69, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x69, 0x64, 0x78, 0x5F, 0x6D, + 0x61, 0x78, 0x00, 0x00, 0x73, 0x66, 0x74, 0x20, 0x64, 0x69, 0x73, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x66, 0x74, 0x72, 0x73, 0x74, 0x20, 0x64, + 0x6F, 0x6E, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6F, 0x61, 0x64, + 0x5F, 0x76, 0x61, 0x6C, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x72, 0x78, 0x75, 0x73, 0x65, 0x64, 0x3D, 0x25, + 0x64, 0x2C, 0x20, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x5F, 0x62, 0x75, 0x66, + 0x5F, 0x64, 0x6D, 0x61, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x20, 0x21, 0x3D, + 0x20, 0x30, 0x00, 0x00, 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x64, 0x73, 0x74, + 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x64, 0x20, 0x3C, 0x3D, 0x20, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, + 0x41, 0x58, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x74, 0x61, 0x73, 0x6B, 0x5F, + 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x28, 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x64, + 0x73, 0x74, 0x2D, 0x3E, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x6D, 0x73, 0x67, 0x62, + 0x75, 0x66, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x68, 0x6F, 0x73, 0x74, + 0x5F, 0x6D, 0x73, 0x67, 0x5F, 0x62, 0x75, 0x66, 0x20, 0x21, 0x3D, 0x20, + 0x30, 0x00, 0x00, 0x00, 0x69, 0x70, 0x63, 0x5F, 0x65, 0x6D, 0x62, 0x5F, + 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x66, 0x77, 0x64, 0x3A, 0x20, 0x6E, 0x6F, + 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6D, 0x73, 0x67, 0x69, + 0x64, 0x3D, 0x25, 0x78, 0x2C, 0x73, 0x72, 0x63, 0x69, 0x64, 0x3D, 0x25, + 0x78, 0x2C, 0x64, 0x73, 0x74, 0x69, 0x64, 0x3D, 0x25, 0x78, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x69, + 0x70, 0x63, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x62, + 0x20, 0x69, 0x6E, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x66, 0x72, 0x65, 0x65, + 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x6B, 0x6D, 0x73, 0x67, 0x5F, 0x73, 0x72, 0x63, 0x2D, 0x3E, 0x70, 0x61, + 0x72, 0x61, 0x6D, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x73, + 0x69, 0x7A, 0x65, 0x6F, 0x66, 0x28, 0x6D, 0x73, 0x67, 0x2D, 0x3E, 0x70, + 0x61, 0x72, 0x61, 0x6D, 0x29, 0x00, 0x00, 0x00, 0x73, 0x65, 0x6E, 0x64, + 0x20, 0x6D, 0x73, 0x67, 0x20, 0x63, 0x66, 0x67, 0x20, 0x74, 0x6F, 0x20, + 0x68, 0x6F, 0x73, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, + 0x64, 0x73, 0x63, 0x72, 0x21, 0x0D, 0x0A, 0x00, 0x63, 0x68, 0x61, 0x6E, + 0x20, 0x6E, 0x6F, 0x74, 0x69, 0x66, 0x79, 0x3A, 0x20, 0x25, 0x78, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x42, 0x54, 0x20, 0x77, 0x61, 0x6B, 0x65, 0x75, + 0x70, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, + 0x70, 0x6D, 0x69, 0x63, 0x20, 0x67, 0x70, 0x69, 0x6F, 0x0A, 0x00, 0x00, + 0x77, 0x6B, 0x62, 0x74, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x50, 0x4D, 0x49, 0x43, 0x5F, 0x45, 0x52, 0x52, 0x49, 0x52, 0x51, 0x3D, + 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x5F, + 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x49, 0x50, 0x43, 0x5F, 0x44, 0x4D, + 0x41, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x4E, 0x45, 0x4C, 0x5F, 0x4D, 0x41, + 0x58, 0x00, 0x00, 0x00, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x23, 0x20, + 0x3D, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x75, 0x2E, 0x73, 0x74, 0x61, 0x2E, 0x6C, + 0x61, 0x73, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x63, 0x6F, 0x6E, 0x6E, 0x5F, + 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x31, 0x00, 0x00, + 0x73, 0x74, 0x61, 0x2D, 0x3E, 0x6C, 0x61, 0x73, 0x74, 0x65, 0x73, 0x74, + 0x5F, 0x63, 0x6F, 0x6E, 0x6E, 0x5F, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, + 0x3D, 0x3D, 0x20, 0x31, 0x00, 0x00, 0x00, 0x00, 0x61, 0x70, 0x6D, 0x20, + 0x73, 0x74, 0x61, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x74, 0x3A, 0x25, 0x64, + 0x2C, 0x20, 0x72, 0x3A, 0x25, 0x64, 0x2C, 0x20, 0x72, 0x72, 0x3A, 0x25, + 0x64, 0x0A, 0x00, 0x00, 0x73, 0x74, 0x61, 0x74, 0x20, 0x6C, 0x6F, 0x73, + 0x73, 0x31, 0x0A, 0x00, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x0A, 0x00, 0x00, + 0x73, 0x74, 0x61, 0x74, 0x20, 0x6C, 0x6F, 0x73, 0x73, 0x0A, 0x00, 0x00, + 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x74, 0x6D, 0x70, 0x2D, 0x3E, + 0x68, 0x6F, 0x73, 0x74, 0x2E, 0x73, 0x74, 0x61, 0x69, 0x64, 0x20, 0x3C, + 0x20, 0x4E, 0x58, 0x5F, 0x52, 0x45, 0x4D, 0x4F, 0x54, 0x45, 0x5F, 0x53, + 0x54, 0x41, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x73, 0x74, 0x61, 0x20, + 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x3A, 0x25, 0x64, 0x0A, 0x00, + 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x74, 0x6D, 0x70, 0x2D, 0x3E, + 0x68, 0x6F, 0x73, 0x74, 0x2E, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x26, + 0x20, 0x54, 0x58, 0x55, 0x5F, 0x43, 0x4E, 0x54, 0x52, 0x4C, 0x5F, 0x52, + 0x45, 0x54, 0x52, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD9, 0x67, 0x12, 0x00, 0xF9, 0x67, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x65, 0x74, 0x5F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5F, 0x70, + 0x6F, 0x6F, 0x6C, 0x5F, 0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, + 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, + 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, + 0x73, 0x65, 0x74, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x3A, + 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, + 0x25, 0x78, 0x0A, 0x00, 0x73, 0x65, 0x74, 0x5F, 0x6E, 0x75, 0x6D, 0x5F, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, + 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, + 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x73, 0x65, 0x74, 0x5F, 0x6E, 0x65, 0x78, 0x74, 0x5F, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x20, 0x49, 0x6E, + 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x4D, 0x65, 0x6D, 0x4D, 0x67, 0x72, 0x45, 0x72, + 0x72, 0x3A, 0x20, 0x53, 0x75, 0x62, 0x70, 0x6F, 0x6F, 0x6C, 0x20, 0x4E, + 0x55, 0x4C, 0x4C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x53, 0x77, 0x45, 0x72, + 0x3A, 0x4E, 0x6F, 0x53, 0x69, 0x7A, 0x65, 0x41, 0x6C, 0x6C, 0x6F, 0x63, + 0x20, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x0D, 0x00, 0x67, 0x65, 0x74, 0x5F, + 0x6E, 0x65, 0x78, 0x74, 0x5F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, + 0x61, 0x64, 0x64, 0x72, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, + 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, + 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x67, 0x65, 0x74, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x3A, + 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, + 0x25, 0x78, 0x0A, 0x00, 0x53, 0x77, 0x45, 0x72, 0x3A, 0x41, 0x6C, 0x6C, + 0x63, 0x45, 0x72, 0x72, 0x50, 0x74, 0x72, 0x6E, 0x20, 0x3A, 0x20, 0x25, + 0x64, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3A, 0x20, 0x30, + 0x78, 0x25, 0x78, 0x0A, 0x0D, 0x00, 0x00, 0x00, 0x67, 0x65, 0x74, 0x5F, + 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5F, 0x70, 0x6F, 0x6F, 0x6C, 0x5F, + 0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, + 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x64, 0x65, 0x63, 0x72, + 0x5F, 0x6E, 0x75, 0x6D, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x73, 0x3A, 0x20, + 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, 0x25, + 0x78, 0x0A, 0x00, 0x00, 0x73, 0x65, 0x74, 0x5F, 0x75, 0x73, 0x65, 0x72, + 0x5F, 0x69, 0x64, 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, + 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, + 0x65, 0x64, 0x3A, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x6E, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x5F, 0x69, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x32, 0x00, 0x00, + 0x67, 0x65, 0x74, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x69, 0x64, 0x3A, + 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x3A, 0x20, + 0x25, 0x78, 0x0A, 0x00, 0x72, 0x65, 0x70, 0x3A, 0x20, 0x6E, 0x6F, 0x20, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x25, 0x64, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x3A, 0x20, 0x6E, 0x6F, 0x20, + 0x64, 0x65, 0x73, 0x63, 0x0D, 0x0A, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, + 0x6D, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x63, 0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x00, + 0x69, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x6E, 0x75, 0x6D, 0x3D, 0x25, 0x64, + 0x2C, 0x20, 0x72, 0x78, 0x64, 0x65, 0x73, 0x63, 0x3D, 0x25, 0x78, 0x2C, + 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x3E, 0x3D, 0x4E, 0x58, 0x5F, 0x54, 0x58, 0x51, 0x5F, 0x43, + 0x4E, 0x54, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x61, 0x63, 0x20, 0x3C, + 0x20, 0x4E, 0x58, 0x5F, 0x54, 0x58, 0x51, 0x5F, 0x43, 0x4E, 0x54, 0x20, + 0x2B, 0x20, 0x31, 0x00, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6E, + 0x65, 0x77, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, + 0x6D, 0x73, 0x67, 0x20, 0x63, 0x72, 0x63, 0x20, 0x65, 0x72, 0x72, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x73, 0x6F, 0x66, 0x74, + 0x77, 0x6B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x64, 0x6D, 0x61, 0x20, + 0x69, 0x6E, 0x74, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x64, 0x69, 0x6F, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, + 0x3A, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3D, 0x25, 0x78, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x73, 0x64, 0x69, 0x6F, 0x20, 0x68, 0x6F, 0x73, + 0x74, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x61, 0x68, 0x62, 0x32, 0x73, 0x64, 0x69, 0x6F, 0x20, 0x74, 0x78, 0x20, + 0x61, 0x62, 0x6F, 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x53, 0x44, 0x49, 0x4F, + 0x32, 0x41, 0x48, 0x42, 0x5F, 0x4C, 0x4C, 0x53, 0x54, 0x5F, 0x48, 0x44, + 0x52, 0x5F, 0x45, 0x52, 0x52, 0x0D, 0x0A, 0x00, 0x73, 0x64, 0x69, 0x6F, + 0x20, 0x65, 0x72, 0x72, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3D, + 0x25, 0x78, 0x2C, 0x30, 0x78, 0x34, 0x35, 0x3D, 0x25, 0x78, 0x0A, 0x00, + 0x6D, 0x73, 0x67, 0x72, 0x78, 0x75, 0x73, 0x65, 0x64, 0x3D, 0x25, 0x64, + 0x2C, 0x20, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x63, 0x75, 0x73, 0x65, 0x64, 0x3D, + 0x25, 0x64, 0x2C, 0x20, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, + 0x0D, 0x0A, 0x00, 0x00, 0x74, 0x78, 0x63, 0x6D, 0x73, 0x67, 0x75, 0x73, + 0x65, 0x64, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x6D, 0x73, 0x67, 0x74, 0x6F, + 0x74, 0x61, 0x6C, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x77, 0x61, 0x69, 0x74, 0x20, 0x69, 0x6F, 0x20, 0x65, 0x6E, 0x61, 0x62, + 0x6C, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x69, 0x6F, 0x20, 0x65, + 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x0D, 0x0A, 0x00, 0x65, 0x72, 0x72, 0x3A, + 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x70, 0x6B, 0x74, 0x21, + 0x0D, 0x0A, 0x00, 0x00, 0x65, 0x72, 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x20, + 0x64, 0x73, 0x63, 0x72, 0x21, 0x0D, 0x0A, 0x00, 0x6F, 0x70, 0x65, 0x6E, + 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x55, 0x4C, 0x50, 0x49, + 0x20, 0x63, 0x6C, 0x6B, 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x0D, 0x0A, 0x00, 0x65, 0x72, 0x72, 0x21, 0x21, 0x20, 0x6E, 0x6F, + 0x20, 0x75, 0x73, 0x62, 0x20, 0x75, 0x6C, 0x70, 0x69, 0x20, 0x63, 0x6C, + 0x6B, 0x0D, 0x0A, 0x00, 0x77, 0x61, 0x69, 0x74, 0x20, 0x63, 0x66, 0x67, + 0x0A, 0x00, 0x00, 0x00, 0x46, 0x49, 0x46, 0x4F, 0x20, 0x45, 0x52, 0x52, + 0x4F, 0x52, 0x3A, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, + 0x2C, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x69, 0x73, 0x20, 0x25, 0x64, + 0x2C, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x73, 0x20, 0x25, 0x64, + 0x2C, 0x20, 0x54, 0x6F, 0x74, 0x61, 0x6C, 0x20, 0x52, 0x41, 0x4D, 0x20, + 0x69, 0x73, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, + 0x21, 0x21, 0x20, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x6D, 0x65, 0x6E, 0x74, + 0x20, 0x65, 0x72, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x45, 0x50, 0x30, 0x20, + 0x53, 0x45, 0x54, 0x55, 0x50, 0x20, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x2C, + 0x20, 0x64, 0x69, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x00, + 0x45, 0x50, 0x30, 0x20, 0x53, 0x45, 0x54, 0x55, 0x50, 0x20, 0x45, 0x52, + 0x52, 0x4F, 0x52, 0x2C, 0x20, 0x77, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, + 0x20, 0x69, 0x73, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6F, 0x72, 0x3A, 0x20, 0x25, 0x64, 0x00, 0x00, + 0x45, 0x70, 0x30, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x6C, 0x65, 0x6E, + 0x67, 0x74, 0x68, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x75, 0x2D, 0x25, + 0x75, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x72, 0x65, + 0x62, 0x6F, 0x6F, 0x74, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x65, 0x73, 0x65, 0x74, 0x0D, 0x0A, 0x00, 0x65, 0x78, 0x69, 0x74, + 0x0D, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x62, 0x20, 0x77, 0x61, 0x6B, 0x65, + 0x75, 0x70, 0x0A, 0x00, 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x20, 0x75, + 0x73, 0x62, 0x0A, 0x00, 0x69, 0x72, 0x71, 0x20, 0x25, 0x78, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x6C, 0x61, 0x6E, 0x5F, 0x75, 0x73, 0x62, + 0x5F, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x64, 0x6C, 0x20, + 0x65, 0x72, 0x72, 0x20, 0x25, 0x58, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, + 0x0A, 0x00, 0x00, 0x00, 0x77, 0x6D, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x20, + 0x25, 0x58, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, + 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x6E, 0x6F, 0x20, 0x72, 0x78, + 0x20, 0x6D, 0x73, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x0D, 0x0A, 0x00, + 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x58, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x65, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x20, + 0x25, 0x58, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x62, 0x20, + 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x76, 0x20, 0x65, 0x72, + 0x72, 0x21, 0x21, 0x21, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x23, 0x23, 0x65, 0x72, 0x72, 0x23, 0x23, + 0x23, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x75, 0x73, 0x62, 0x20, + 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x65, 0x72, + 0x72, 0x21, 0x21, 0x21, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x73, + 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, + 0x21, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x65, 0x72, 0x72, 0x20, + 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x74, 0x20, + 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x20, 0x00, + 0x01, 0x01, 0x00, 0xA0, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x02, 0xFF, 0xFF, + 0xFF, 0x00, 0x07, 0x05, 0x01, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x82, + 0x02, 0x00, 0x02, 0x00, 0x05, 0x0F, 0x0C, 0x00, 0x01, 0x07, 0x10, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, + 0x9C, 0xA6, 0x00, 0x88, 0x00, 0x01, 0x01, 0x02, 0x03, 0x01, 0x00, 0x00, + 0x0A, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x03, 0x30, 0x00, 0x31, 0x00, 0x00, 0x00, 0x0A, 0x03, 0x77, 0x00, + 0x6C, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x10, 0x03, 0x61, 0x00, + 0x69, 0x00, 0x63, 0x00, 0x73, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x69, 0x00, + 0x12, 0x03, 0x41, 0x00, 0x49, 0x00, 0x43, 0x00, 0x20, 0x00, 0x57, 0x00, + 0x6C, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x12, 0x03, 0x32, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x39, 0x00, 0x30, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x04, 0x03, 0x09, 0x04, 0x75, 0x73, 0x62, 0x5F, + 0x77, 0x6C, 0x61, 0x6E, 0x5F, 0x72, 0x78, 0x5F, 0x70, 0x6B, 0x74, 0x5F, + 0x66, 0x72, 0x65, 0x65, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x69, 0x6E, + 0x69, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x20, 0x66, 0x61, 0x69, + 0x6C, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x77, 0x66, 0x72, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x75, 0x73, 0x62, + 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x68, 0x6F, 0x73, + 0x74, 0x5F, 0x69, 0x66, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, + 0x64, 0x65, 0x73, 0x63, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x00, 0x00, 0x00, + 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x72, 0x78, 0x3A, 0x20, 0x64, 0x73, + 0x63, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3D, 0x20, 0x25, 0x64, + 0x0D, 0x0A, 0x00, 0x00, 0x23, 0x77, 0x66, 0x3A, 0x25, 0x58, 0x0A, 0x00, + 0x23, 0x77, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x77, 0x64, 0x20, 0x72, + 0x78, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x65, 0x72, 0x72, 0x21, + 0x20, 0x77, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x72, 0x78, 0x20, 0x62, 0x75, + 0x66, 0x0A, 0x00, 0x00, 0x77, 0x64, 0x20, 0x72, 0x78, 0x20, 0x6D, 0x61, + 0x78, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, + 0x68, 0x6F, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x61, 0x64, 0x79, 0x0A, 0x00, + 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, + 0x63, 0x76, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, + 0x65, 0x72, 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x20, 0x77, 0x6C, 0x61, 0x6E, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x62, 0x75, 0x66, 0x0A, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x68, 0x6F, 0x73, 0x74, 0x20, 0x69, 0x70, 0x63, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x69, 0x70, 0x63, + 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x72, 0x78, 0x3A, 0x20, 0x6E, 0x6F, + 0x62, 0x75, 0x66, 0x66, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3D, + 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x4D, 0x4D, 0x5F, 0x53, + 0x54, 0x41, 0x5F, 0x54, 0x4F, 0x5F, 0x4B, 0x45, 0x59, 0x28, 0x4E, 0x58, + 0x5F, 0x52, 0x45, 0x4D, 0x4F, 0x54, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x5F, + 0x4D, 0x41, 0x58, 0x20, 0x2D, 0x20, 0x31, 0x29, 0x20, 0x3C, 0x3D, 0x20, + 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x73, 0x74, 0x61, 0x5F, 0x6B, 0x65, + 0x79, 0x5F, 0x6D, 0x61, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, + 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x00, 0x00, 0x6C, 0x70, 0x20, 0x25, + 0x64, 0x2C, 0x20, 0x61, 0x63, 0x74, 0x73, 0x6C, 0x70, 0x3A, 0x25, 0x64, + 0x2C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, + 0x63, 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x69, 0x64, 0x78, 0x20, 0x21, 0x3D, + 0x20, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x43, 0x54, 0x58, 0x54, 0x5F, 0x55, + 0x4E, 0x55, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, 0x73, 0x6F, 0x66, 0x74, + 0x77, 0x61, 0x6B, 0x65, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x70, 0x65, + 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, + 0x6C, 0x6C, 0x6F, 0x77, 0x0D, 0x0A, 0x00, 0x00, 0x74, 0x69, 0x6D, 0x65, + 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, + 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x61, 0x73, 0x74, + 0x20, 0x3C, 0x20, 0x31, 0x30, 0x6D, 0x73, 0x2C, 0x20, 0x6E, 0x6F, 0x74, + 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x0D, 0x0A, 0x00, + 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, + 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F, 0x4C, 0x3D, 0x25, 0x30, 0x38, + 0x78, 0x2C, 0x20, 0x78, 0x50, 0x53, 0x52, 0x20, 0x20, 0x20, 0x3D, 0x25, + 0x30, 0x38, 0x78, 0x0A, 0x50, 0x53, 0x50, 0x20, 0x20, 0x20, 0x20, 0x3D, + 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x4D, 0x53, 0x50, 0x20, 0x20, 0x20, + 0x20, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x50, 0x52, 0x49, 0x4D, 0x41, + 0x53, 0x4B, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x4C, 0x52, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3D, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, + 0x0A, 0x57, 0x72, 0x6F, 0x6E, 0x67, 0x20, 0x50, 0x53, 0x50, 0x21, 0x00, + 0x0A, 0x44, 0x75, 0x6D, 0x70, 0x4D, 0x53, 0x50, 0x3A, 0x00, 0x00, 0x00, + 0x0A, 0x5B, 0x25, 0x30, 0x38, 0x78, 0x5D, 0x3A, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x0A, 0x52, 0x25, 0x2D, + 0x34, 0x64, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x53, 0x50, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x4C, 0x52, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x50, 0x43, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x78, 0x50, 0x53, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x50, 0x53, 0x50, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x4D, 0x53, 0x50, 0x20, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x43, 0x50, 0x55, 0x49, 0x44, 0x3A, 0x20, + 0x25, 0x30, 0x38, 0x58, 0x0A, 0x49, 0x43, 0x53, 0x52, 0x20, 0x3A, 0x20, + 0x25, 0x30, 0x38, 0x58, 0x0A, 0x56, 0x54, 0x4F, 0x52, 0x20, 0x3A, 0x20, + 0x25, 0x30, 0x38, 0x58, 0x0A, 0x41, 0x49, 0x52, 0x43, 0x52, 0x3A, 0x20, + 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x53, 0x48, 0x43, + 0x53, 0x52, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x43, 0x46, 0x53, + 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x48, 0x46, 0x53, + 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x44, 0x46, 0x53, + 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x0A, 0x41, 0x46, 0x53, + 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x4D, 0x4D, 0x46, 0x53, 0x52, 0x3A, 0x20, 0x25, 0x30, 0x32, 0x58, + 0x0A, 0x20, 0x20, 0x49, 0x41, 0x43, 0x43, 0x56, 0x49, 0x4F, 0x4C, 0x20, + 0x3A, 0x25, 0x64, 0x09, 0x44, 0x41, 0x43, 0x43, 0x56, 0x49, 0x4F, 0x4C, + 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x4D, 0x55, 0x4E, 0x53, 0x54, + 0x4B, 0x45, 0x52, 0x52, 0x3A, 0x25, 0x64, 0x09, 0x4D, 0x53, 0x54, 0x4B, + 0x45, 0x52, 0x52, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x4D, + 0x4C, 0x53, 0x50, 0x45, 0x52, 0x52, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x09, + 0x4D, 0x4D, 0x41, 0x52, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x3A, 0x25, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x4D, 0x4D, 0x46, 0x41, 0x52, 0x3A, 0x20, + 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x42, 0x46, 0x53, + 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x32, 0x58, 0x0A, 0x20, 0x20, 0x49, + 0x42, 0x55, 0x53, 0x45, 0x52, 0x52, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x25, + 0x64, 0x09, 0x50, 0x52, 0x45, 0x43, 0x49, 0x53, 0x45, 0x52, 0x52, 0x3A, + 0x25, 0x64, 0x0A, 0x20, 0x20, 0x49, 0x4D, 0x50, 0x52, 0x45, 0x43, 0x49, + 0x53, 0x45, 0x52, 0x52, 0x3A, 0x25, 0x64, 0x09, 0x55, 0x4E, 0x53, 0x54, + 0x4B, 0x45, 0x52, 0x52, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x53, + 0x54, 0x4B, 0x45, 0x52, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x25, + 0x64, 0x09, 0x4C, 0x53, 0x50, 0x45, 0x52, 0x52, 0x20, 0x20, 0x20, 0x3A, + 0x25, 0x64, 0x0A, 0x20, 0x20, 0x42, 0x46, 0x41, 0x52, 0x56, 0x41, 0x4C, + 0x49, 0x44, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x00, 0x0A, 0x42, 0x46, 0x41, + 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x55, 0x46, 0x53, 0x52, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x34, 0x58, + 0x0A, 0x20, 0x20, 0x55, 0x4E, 0x44, 0x45, 0x46, 0x49, 0x4E, 0x53, 0x54, + 0x52, 0x3A, 0x25, 0x64, 0x09, 0x49, 0x4E, 0x56, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, 0x20, 0x49, 0x4E, 0x56, 0x50, + 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x09, 0x4E, 0x4F, + 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x25, 0x64, 0x0A, 0x20, + 0x20, 0x55, 0x4E, 0x41, 0x4C, 0x49, 0x47, 0x4E, 0x45, 0x44, 0x20, 0x3A, + 0x25, 0x64, 0x09, 0x44, 0x49, 0x56, 0x42, 0x59, 0x5A, 0x45, 0x52, 0x4F, + 0x3A, 0x25, 0x64, 0x00, 0x0A, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x3A, 0x20, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0x0A, 0x50, 0x72, 0x69, + 0x76, 0x20, 0x3A, 0x20, 0x55, 0x73, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x50, 0x72, 0x69, 0x76, 0x20, 0x3A, 0x20, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6C, 0x65, 0x67, 0x65, 0x64, 0x00, 0x00, 0x0A, 0x4D, 0x6F, 0x64, + 0x65, 0x20, 0x3A, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, + 0x0A, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x3A, 0x20, 0x50, 0x53, 0x50, 0x00, + 0x0A, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x3A, 0x20, 0x4D, 0x53, 0x50, 0x00, + 0x0A, 0x43, 0x4E, 0x54, 0x52, 0x4C, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x50, 0x4D, 0x41, 0x53, 0x4B, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x46, 0x4D, 0x41, 0x53, 0x4B, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x0A, 0x42, 0x41, 0x53, 0x45, 0x50, 0x3A, 0x20, 0x25, 0x30, 0x38, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x44, 0x75, 0x6D, 0x70, 0x50, 0x53, 0x50, + 0x3A, 0x00, 0x00, 0x00, 0x50, 0x61, 0x6E, 0x69, 0x63, 0x2E, 0x2E, 0x2E, + 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x2B, 0x2B, 0x20, 0x43, 0x4D, 0x34, 0x20, + 0x46, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, + 0x72, 0x20, 0x2B, 0x2B, 0x0A, 0x0A, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x4D, 0x65, 0x6D, 0x4D, + 0x61, 0x6E, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, + 0x42, 0x75, 0x73, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, + 0x48, 0x61, 0x72, 0x64, 0x46, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x00, 0x00, + 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x3A, 0x00, 0x00, + 0x0A, 0x0A, 0x2D, 0x2D, 0x20, 0x43, 0x4D, 0x34, 0x20, 0x46, 0x61, 0x75, + 0x6C, 0x74, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x2D, + 0x2D, 0x0A, 0x0A, 0x00, 0x9A, 0x25, 0x73, 0x20, 0x2D, 0x20, 0x62, 0x75, + 0x69, 0x6C, 0x64, 0x3A, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, + 0x64, 0x0D, 0x0A, 0x00, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x64, 0x6F, + 0x6E, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x64, 0x2C, 0x00, 0x00, + 0x74, 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x6E, 0x6F, 0x74, 0x20, + 0x70, 0x61, 0x73, 0x74, 0x3A, 0x20, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x70, 0x61, 0x73, 0x73, 0x3A, 0x20, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x68, 0x61, 0x6C, + 0x5F, 0x6D, 0x61, 0x63, 0x68, 0x77, 0x5F, 0x74, 0x69, 0x6D, 0x65, 0x5F, + 0x70, 0x61, 0x73, 0x74, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x2D, 0x3E, + 0x74, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x67, 0x5F, 0x77, 0x69, 0x66, + 0x69, 0x5F, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x70, + 0x77, 0x72, 0x5F, 0x6F, 0x70, 0x65, 0x6E, 0x5F, 0x73, 0x79, 0x73, 0x64, + 0x65, 0x6C, 0x61, 0x79, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6C, 0x70, 0x3A, + 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x62, 0x74, 0x0A, 0x00, + 0x6C, 0x70, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x69, 0x67, 0x6E, 0x6F, 0x72, + 0x65, 0x3D, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x77, 0x2C, 0x20, 0x00, + 0x72, 0x77, 0x6E, 0x78, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x70, 0x72, 0x65, + 0x76, 0x5F, 0x68, 0x77, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3D, + 0x3D, 0x20, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6E, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, + 0x74, 0x66, 0x28, 0x29, 0x00, 0x00, 0x00, 0x00, 0x77, 0x65, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x72, 0x77, 0x6E, 0x78, 0x6C, 0x5F, 0x72, 0x65, + 0x73, 0x65, 0x74, 0x5F, 0x65, 0x76, 0x74, 0x00, 0x74, 0x78, 0x64, 0x65, + 0x73, 0x63, 0x5F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5B, 0x30, 0x5D, 0x20, + 0x26, 0x26, 0x20, 0x74, 0x78, 0x5F, 0x68, 0x77, 0x5F, 0x64, 0x65, 0x73, + 0x63, 0x5F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5B, 0x30, 0x5D, 0x00, 0x00, + 0x72, 0x63, 0x5F, 0x73, 0x73, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, + 0x4C, 0x00, 0x00, 0x00, 0x74, 0x78, 0x6C, 0x20, 0x3A, 0x25, 0x78, 0x2C, + 0x20, 0x6C, 0x65, 0x6E, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x74, 0x78, 0x6C, 0x5F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5F, 0x67, + 0x65, 0x74, 0x28, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x29, 0x20, 0x21, + 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x74, 0x68, 0x64, 0x2D, + 0x3E, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5F, 0x70, 0x62, 0x64, 0x5F, 0x70, + 0x74, 0x72, 0x00, 0x00, 0x6E, 0x65, 0x78, 0x74, 0x64, 0x65, 0x73, 0x63, + 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, + 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x2D, 0x3E, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x41, 0x47, 0x47, 0x5F, 0x42, + 0x41, 0x5F, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x00, 0x00, + 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x62, 0x63, 0x6E, + 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, + 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x00, 0x6E, 0x78, 0x6D, 0x61, + 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x61, 0x63, 0x5F, 0x33, 0x5F, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, + 0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, + 0x5F, 0x61, 0x63, 0x5F, 0x32, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, + 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, + 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x61, 0x63, 0x5F, + 0x31, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, + 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, + 0x63, 0x5F, 0x74, 0x78, 0x5F, 0x61, 0x63, 0x5F, 0x30, 0x5F, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, + 0x3D, 0x20, 0x32, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x78, + 0x5F, 0x68, 0x69, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, + 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x32, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5F, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6F, 0x72, 0x79, 0x20, 0x3C, 0x20, 0x28, 0x4E, 0x58, 0x5F, 0x54, 0x58, + 0x51, 0x5F, 0x43, 0x4E, 0x54, 0x2B, 0x32, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x65, 0x72, 0x72, 0x21, 0x21, 0x21, 0x20, 0x74, 0x78, 0x6C, 0x20, 0x63, + 0x66, 0x6D, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x20, 0x66, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x62, 0x0D, 0x0A, 0x00, 0x00, + 0x63, 0x66, 0x6D, 0x20, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x3A, 0x20, 0x25, + 0x78, 0x2C, 0x20, 0x73, 0x6E, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x73, 0x74, + 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x66, 0x6D, 0x73, + 0x3A, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x73, 0x6E, 0x3D, 0x25, 0x64, 0x2C, + 0x20, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x20, 0x21, 0x3D, 0x20, + 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x79, 0x5F, + 0x69, 0x64, 0x78, 0x5F, 0x68, 0x77, 0x20, 0x3E, 0x3D, 0x20, 0x4D, 0x4D, + 0x5F, 0x53, 0x45, 0x43, 0x5F, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4C, 0x54, + 0x5F, 0x4B, 0x45, 0x59, 0x5F, 0x43, 0x4F, 0x55, 0x4E, 0x54, 0x00, 0x00, + 0x6B, 0x65, 0x5F, 0x65, 0x76, 0x74, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x29, + 0x20, 0x26, 0x20, 0x65, 0x76, 0x74, 0x5F, 0x62, 0x69, 0x74, 0x00, 0x00, + 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x66, 0x69, 0x72, 0x73, 0x74, + 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, + 0x62, 0x75, 0x67, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x73, 0x64, 0x69, 0x6F, + 0x20, 0x74, 0x61, 0x69, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x28, 0x74, 0x68, 0x64, 0x2D, 0x3E, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x61, 0x72, 0x74, 0x70, 0x74, 0x72, 0x20, 0x26, + 0x20, 0x30, 0x78, 0x30, 0x31, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, + 0x62, 0x61, 0x6E, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x50, 0x48, 0x59, 0x5F, + 0x42, 0x41, 0x4E, 0x44, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, + 0x6F, 0x72, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x6E, 0x6F, 0x20, 0x70, + 0x72, 0x6F, 0x62, 0x65, 0x20, 0x62, 0x75, 0x66, 0x3A, 0x25, 0x64, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x20, 0x21, + 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x61, 0x67, 0x67, 0x5F, + 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6E, 0x65, 0x77, 0x20, 0x21, 0x3D, 0x20, + 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x5F, 0x6C, + 0x69, 0x73, 0x74, 0x5F, 0x70, 0x69, 0x63, 0x6B, 0x28, 0x26, 0x74, 0x78, + 0x6C, 0x69, 0x73, 0x74, 0x2D, 0x3E, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x65, 0x73, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x26, 0x61, 0x67, + 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6F, 0x6C, 0x64, 0x2D, 0x3E, + 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x68, 0x64, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x6E, 0x20, 0x21, 0x3D, 0x20, + 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, + 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3E, 0x20, 0x46, 0x4F, 0x52, + 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x4E, 0x4F, 0x4E, 0x5F, 0x48, + 0x54, 0x5F, 0x44, 0x55, 0x50, 0x5F, 0x4F, 0x46, 0x44, 0x4D, 0x00, 0x00, + 0x28, 0x2A, 0x6E, 0x73, 0x73, 0x20, 0x3E, 0x20, 0x30, 0x29, 0x20, 0x26, + 0x26, 0x20, 0x28, 0x2A, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x34, + 0x29, 0x00, 0x00, 0x00, 0x6D, 0x63, 0x73, 0x5F, 0x69, 0x64, 0x78, 0x20, + 0x3C, 0x3D, 0x20, 0x39, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x63, 0x73, 0x5F, + 0x69, 0x64, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x33, 0x31, 0x00, 0x00, 0x00, + 0x69, 0x73, 0x5F, 0x6D, 0x70, 0x64, 0x75, 0x5F, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x28, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x29, 0x00, 0x00, 0x00, + 0x21, 0x69, 0x73, 0x5F, 0x6D, 0x70, 0x64, 0x75, 0x5F, 0x6C, 0x61, 0x73, + 0x74, 0x28, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x29, 0x00, 0x00, 0x00, + 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, 0x70, 0x72, 0x65, 0x76, 0x20, + 0x3D, 0x3D, 0x20, 0x61, 0x67, 0x67, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x5F, + 0x6F, 0x6C, 0x64, 0x2D, 0x3E, 0x74, 0x78, 0x64, 0x65, 0x73, 0x63, 0x5F, + 0x6C, 0x61, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00, 0x61, 0x5F, 0x74, 0x68, + 0x64, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x52, + 0x45, 0x54, 0x52, 0x59, 0x5F, 0x4C, 0x49, 0x4D, 0x49, 0x54, 0x5F, 0x52, + 0x45, 0x41, 0x43, 0x48, 0x45, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x00, 0x00, + 0x1A, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x3C, 0x00, 0x75, 0x00, 0x82, 0x00, + 0xEA, 0x00, 0x04, 0x01, 0x34, 0x00, 0x39, 0x00, 0x6C, 0x00, 0x78, 0x00, + 0xEA, 0x00, 0x04, 0x01, 0xD4, 0x01, 0x08, 0x02, 0x4E, 0x00, 0x56, 0x00, + 0xA2, 0x00, 0xB4, 0x00, 0x5F, 0x01, 0x86, 0x01, 0xBE, 0x02, 0x0C, 0x03, + 0x68, 0x00, 0x73, 0x00, 0xD8, 0x00, 0xF0, 0x00, 0xD4, 0x01, 0x08, 0x02, + 0xA8, 0x03, 0x10, 0x04, 0x9C, 0x00, 0xAD, 0x00, 0x44, 0x01, 0x68, 0x01, + 0xBE, 0x02, 0x0C, 0x03, 0x7C, 0x05, 0x18, 0x06, 0xD0, 0x00, 0xE7, 0x00, + 0xB0, 0x01, 0xE0, 0x01, 0xA8, 0x03, 0x10, 0x04, 0x50, 0x07, 0x20, 0x08, + 0xEA, 0x00, 0x04, 0x01, 0xE6, 0x01, 0x1C, 0x02, 0x1D, 0x04, 0x92, 0x04, + 0x3A, 0x08, 0x24, 0x09, 0x04, 0x01, 0x20, 0x01, 0x1C, 0x02, 0x58, 0x02, + 0x92, 0x04, 0x14, 0x05, 0x24, 0x09, 0x28, 0x0A, 0x38, 0x01, 0x5A, 0x01, + 0x88, 0x02, 0xD0, 0x02, 0x7C, 0x05, 0x18, 0x06, 0xF8, 0x0A, 0x30, 0x0C, + 0x5A, 0x01, 0x81, 0x01, 0xD0, 0x02, 0x20, 0x03, 0x18, 0x06, 0xC5, 0x06, + 0x30, 0x0C, 0x8A, 0x0D, 0x01, 0x01, 0x02, 0x02, 0x04, 0x05, 0x08, 0x09, + 0x02, 0x02, 0x04, 0x04, 0x08, 0x09, 0x0F, 0x11, 0x03, 0x03, 0x06, 0x06, + 0x0B, 0x0D, 0x16, 0x19, 0x04, 0x04, 0x07, 0x08, 0x0F, 0x11, 0x1E, 0x21, + 0x05, 0x06, 0x0B, 0x0C, 0x16, 0x19, 0x2C, 0x31, 0x07, 0x08, 0x0E, 0x0F, + 0x1E, 0x21, 0x3B, 0x41, 0x08, 0x09, 0x10, 0x11, 0x21, 0x25, 0x42, 0x4A, + 0x09, 0x0A, 0x11, 0x13, 0x25, 0x29, 0x4A, 0x52, 0x0A, 0x0B, 0x15, 0x17, + 0x2C, 0x31, 0x58, 0x62, 0x0B, 0x0D, 0x17, 0x19, 0x31, 0x37, 0x62, 0x6D, + 0x74, 0x78, 0x6C, 0x5F, 0x68, 0x65, 0x5F, 0x65, 0x64, 0x63, 0x61, 0x5F, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x5F, 0x68, 0x61, 0x6C, 0x74, 0x65, 0x64, + 0x28, 0x61, 0x63, 0x29, 0x00, 0x00, 0x00, 0x00, 0x68, 0x64, 0x72, 0x64, + 0x65, 0x73, 0x63, 0x2D, 0x3E, 0x66, 0x72, 0x6D, 0x6C, 0x65, 0x6E, 0x20, + 0x3E, 0x3D, 0x20, 0x48, 0x45, 0x5F, 0x54, 0x52, 0x49, 0x47, 0x5F, 0x46, + 0x52, 0x4D, 0x5F, 0x4D, 0x49, 0x4E, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, + 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, + 0x48, 0x45, 0x5F, 0x53, 0x55, 0x00, 0x00, 0x00, 0x6D, 0x63, 0x73, 0x5F, + 0x69, 0x64, 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x31, 0x31, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x22, 0x00, 0x20, 0x00, 0x1D, 0x00, 0x90, 0x00, 0x88, 0x00, 0x7A, 0x00, + 0x44, 0x00, 0x41, 0x00, 0x3A, 0x00, 0x20, 0x01, 0x10, 0x01, 0xF5, 0x00, + 0x67, 0x00, 0x61, 0x00, 0x57, 0x00, 0xB0, 0x01, 0x98, 0x01, 0x6F, 0x01, + 0x89, 0x00, 0x82, 0x00, 0x75, 0x00, 0x40, 0x02, 0x20, 0x02, 0xEA, 0x01, + 0xCE, 0x00, 0xC3, 0x00, 0xAF, 0x00, 0x60, 0x03, 0x30, 0x03, 0xDF, 0x02, + 0x13, 0x01, 0x04, 0x01, 0xEA, 0x00, 0x80, 0x04, 0x40, 0x04, 0xD4, 0x03, + 0x35, 0x01, 0x24, 0x01, 0x07, 0x01, 0x11, 0x05, 0xC9, 0x04, 0x4E, 0x04, + 0x58, 0x01, 0x45, 0x01, 0x24, 0x01, 0xA1, 0x05, 0x51, 0x05, 0xC9, 0x04, + 0x9C, 0x01, 0x86, 0x01, 0x5F, 0x01, 0xC1, 0x06, 0x61, 0x06, 0xBE, 0x05, + 0xCA, 0x01, 0xB1, 0x01, 0x86, 0x01, 0x81, 0x07, 0x16, 0x07, 0x61, 0x06, + 0x04, 0x02, 0xE7, 0x01, 0xB6, 0x01, 0x71, 0x08, 0xF9, 0x07, 0x2D, 0x07, + 0x3D, 0x02, 0x1D, 0x02, 0xE7, 0x01, 0x61, 0x09, 0xDC, 0x08, 0xF9, 0x07, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x0D, 0x00, 0x0C, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x13, 0x00, 0x12, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x1A, 0x00, 0x17, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x25, 0x00, 0x23, 0x00, 0x1F, 0x00, + 0x0A, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x29, 0x00, 0x27, 0x00, 0x23, 0x00, + 0x0B, 0x00, 0x0B, 0x00, 0x0A, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x27, 0x00, + 0x0D, 0x00, 0x0D, 0x00, 0x0B, 0x00, 0x37, 0x00, 0x34, 0x00, 0x2E, 0x00, + 0x0F, 0x00, 0x0E, 0x00, 0x0D, 0x00, 0x3D, 0x00, 0x39, 0x00, 0x34, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x44, 0x00, 0x40, 0x00, 0x3A, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x10, 0x00, 0x4C, 0x00, 0x47, 0x00, 0x40, 0x00, + 0x08, 0x10, 0x20, 0x04, 0x50, 0x94, 0x15, 0x00, 0x98, 0x94, 0x15, 0x00, + 0x08, 0x94, 0x15, 0x00, 0x72, 0x68, 0x64, 0x2D, 0x3E, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5F, 0x70, 0x62, 0x64, 0x5F, 0x70, 0x74, 0x72, 0x20, 0x21, + 0x3D, 0x20, 0x30, 0x00, 0x6E, 0x6F, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, + 0x72, 0x78, 0x62, 0x75, 0x66, 0x31, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, + 0x25, 0x30, 0x38, 0x78, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, + 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x25, 0x30, + 0x38, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x25, 0x30, 0x38, + 0x78, 0x2C, 0x20, 0x77, 0x72, 0x70, 0x74, 0x72, 0x20, 0x25, 0x30, 0x38, + 0x78, 0x2C, 0x20, 0x72, 0x64, 0x70, 0x74, 0x72, 0x20, 0x25, 0x30, 0x38, + 0x78, 0x0D, 0x0A, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, + 0x0D, 0x0A, 0x00, 0x00, 0x70, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, + 0x4C, 0x4C, 0x00, 0x00, 0x70, 0x64, 0x2D, 0x3E, 0x70, 0x62, 0x64, 0x2E, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x61, 0x72, 0x74, 0x70, 0x74, 0x72, + 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x64, 0x6D, 0x61, 0x5F, + 0x68, 0x64, 0x72, 0x64, 0x65, 0x73, 0x63, 0x2D, 0x3E, 0x68, 0x64, 0x2E, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x5F, 0x70, 0x62, 0x64, 0x5F, 0x70, 0x74, + 0x72, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x70, 0x62, 0x64, 0x20, + 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x72, 0x78, 0x6C, 0x20, + 0x65, 0x72, 0x72, 0x2C, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x20, + 0x25, 0x64, 0x0A, 0x00, 0x6E, 0x6F, 0x20, 0x74, 0x78, 0x5F, 0x64, 0x73, + 0x63, 0x72, 0x5F, 0x68, 0x64, 0x72, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x6E, 0x6F, 0x20, 0x74, 0x78, 0x5F, 0x64, 0x73, 0x63, 0x72, 0x5F, 0x68, + 0x64, 0x72, 0x21, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x6D, 0x70, 0x64, 0x75, + 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, + 0x6D, 0x70, 0x64, 0x75, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x3D, 0x20, + 0x52, 0x57, 0x4E, 0x58, 0x5F, 0x4D, 0x41, 0x58, 0x5F, 0x41, 0x4D, 0x53, + 0x44, 0x55, 0x5F, 0x52, 0x58, 0x00, 0x00, 0x00, 0x72, 0x68, 0x64, 0x2D, + 0x3E, 0x75, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x72, 0x78, 0x20, + 0x3D, 0x3D, 0x20, 0x52, 0x58, 0x5F, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, + 0x5F, 0x44, 0x45, 0x53, 0x43, 0x5F, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, + 0x4E, 0x00, 0x00, 0x00, 0x72, 0x78, 0x62, 0x75, 0x66, 0x32, 0x20, 0x25, + 0x30, 0x38, 0x78, 0x2C, 0x25, 0x30, 0x38, 0x78, 0x3A, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x65, 0x6E, + 0x64, 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x77, 0x72, 0x70, 0x74, 0x72, + 0x20, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x72, 0x64, 0x70, 0x74, 0x72, + 0x20, 0x25, 0x30, 0x38, 0x78, 0x0D, 0x0A, 0x00, 0x25, 0x73, 0x3A, 0x20, + 0x73, 0x74, 0x61, 0x5F, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0A, 0x00, + 0x73, 0x74, 0x61, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x5F, + 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x00, 0x6D, 0x61, 0x63, 0x20, 0x69, 0x73, 0x3A, 0x25, + 0x78, 0x2C, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x70, 0x32, 0x70, 0x3D, 0x25, + 0x64, 0x0D, 0x0A, 0x00, 0x73, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x63, 0x3A, + 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x3A, + 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x70, 0x32, 0x70, 0x3D, 0x25, 0x64, + 0x0D, 0x0A, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, + 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x21, 0x3D, 0x20, 0x50, 0x32, + 0x50, 0x5F, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x49, 0x44, + 0x58, 0x00, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, + 0x76, 0x69, 0x66, 0x20, 0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x3A, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x20, 0x75, 0x6E, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x20, 0x6D, 0x67, 0x6D, 0x74, 0x3A, 0x25, 0x64, 0x0A, 0x00, + 0x25, 0x73, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x5F, 0x6D, 0x67, 0x6D, 0x74, + 0x5F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x5F, 0x6D, 0x67, 0x6D, 0x74, 0x5F, 0x75, 0x6E, 0x72, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x73, 0x6C, 0x65, 0x65, + 0x70, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x6C, 0x6F, 0x73, 0x73, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x74, 0x69, + 0x6D, 0x65, 0x5F, 0x6F, 0x6E, 0x5F, 0x61, 0x69, 0x72, 0x5F, 0x76, 0x61, + 0x6C, 0x69, 0x64, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, + 0x3D, 0x20, 0x30, 0x00, 0x64, 0x74, 0x69, 0x6D, 0x3A, 0x25, 0x64, 0x2C, + 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, + 0x2A, 0x28, 0x76, 0x6F, 0x6C, 0x61, 0x74, 0x69, 0x6C, 0x65, 0x20, 0x75, + 0x69, 0x6E, 0x74, 0x38, 0x5F, 0x74, 0x20, 0x2A, 0x29, 0x26, 0x67, 0x5F, + 0x61, 0x6F, 0x6E, 0x5F, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2E, 0x64, + 0x74, 0x69, 0x6D, 0x5F, 0x63, 0x6E, 0x74, 0x5F, 0x61, 0x6F, 0x6E, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x3C, 0x20, 0x2A, 0x28, 0x76, 0x6F, + 0x6C, 0x61, 0x74, 0x69, 0x6C, 0x65, 0x20, 0x75, 0x69, 0x6E, 0x74, 0x38, + 0x5F, 0x74, 0x20, 0x2A, 0x29, 0x26, 0x67, 0x5F, 0x61, 0x6F, 0x6E, 0x5F, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2E, 0x64, 0x74, 0x69, 0x6D, 0x5F, + 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x5F, 0x61, 0x6F, 0x6E, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x62, 0x63, 0x6E, 0x3A, + 0x6C, 0x69, 0x6E, 0x6B, 0x6C, 0x6F, 0x73, 0x73, 0x0D, 0x0A, 0x00, 0x00, + 0x4C, 0x2C, 0x00, 0x00, 0x9B, 0x84, 0x4B, 0x65, 0x79, 0x69, 0x64, 0x78, + 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x2C, 0x25, 0x30, 0x32, + 0x58, 0x0A, 0x00, 0x00, 0x9B, 0x84, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, + 0x64, 0x20, 0x6B, 0x65, 0x79, 0x69, 0x64, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x9B, 0x84, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x53, 0x54, + 0x41, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x5F, + 0x73, 0x74, 0x61, 0x20, 0x3D, 0x3D, 0x20, 0x76, 0x69, 0x66, 0x00, 0x00, + 0x54, 0x3D, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x42, 0x43, 0x4E, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x62, 0x63, 0x6E, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x20, 0x74, 0x69, 0x6D, + 0x65, 0x6F, 0x75, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x66, 0x63, 0x73, 0x20, + 0x6F, 0x6B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x66, 0x63, 0x73, 0x20, + 0x6E, 0x6F, 0x74, 0x20, 0x6F, 0x6B, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x64, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x0D, 0x0A, 0x00, 0x00, + 0x69, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, + 0x0D, 0x0A, 0x00, 0x00, 0x65, 0x76, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4D, + 0x4D, 0x5F, 0x54, 0x42, 0x54, 0x54, 0x5F, 0x45, 0x56, 0x54, 0x5F, 0x4D, + 0x41, 0x53, 0x4B, 0x00, 0x61, 0x64, 0x64, 0x20, 0x67, 0x74, 0x6B, 0x3A, + 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x73, 0x74, 0x61, 0x5F, + 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x53, 0x54, 0x41, 0x5F, 0x4D, 0x41, + 0x58, 0x00, 0x00, 0x00, 0x61, 0x64, 0x64, 0x20, 0x70, 0x74, 0x6B, 0x3A, + 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, + 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, + 0x48, 0x4F, 0x53, 0x54, 0x5F, 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, 0x45, + 0x44, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x4D, 0x4D, + 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x4E, 0x4F, 0x5F, 0x49, + 0x44, 0x4C, 0x45, 0x00, 0x66, 0x6F, 0x72, 0x63, 0x65, 0x20, 0x69, 0x64, + 0x6C, 0x65, 0x20, 0x72, 0x65, 0x71, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x6F, 0x72, 0x63, 0x65, 0x20, 0x69, 0x64, 0x6C, 0x65, 0x20, 0x65, + 0x78, 0x69, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, + 0x53, 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4D, 0x4D, + 0x5F, 0x48, 0x4F, 0x53, 0x54, 0x5F, 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, + 0x45, 0x44, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, + 0x4B, 0x5F, 0x4D, 0x4D, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, + 0x49, 0x44, 0x4C, 0x45, 0x29, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, + 0x6D, 0x2D, 0x3E, 0x6B, 0x65, 0x79, 0x5F, 0x69, 0x64, 0x78, 0x20, 0x3C, + 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4C, 0x54, + 0x5F, 0x4D, 0x46, 0x50, 0x5F, 0x4B, 0x45, 0x59, 0x5F, 0x43, 0x4F, 0x55, + 0x4E, 0x54, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x6B, + 0x65, 0x79, 0x2E, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x3C, 0x3D, + 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x53, 0x45, 0x43, 0x5F, 0x4B, 0x45, 0x59, + 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, + 0x6D, 0x2D, 0x3E, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5F, 0x73, 0x75, + 0x69, 0x74, 0x65, 0x20, 0x3C, 0x3D, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x43, + 0x49, 0x50, 0x48, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x50, 0x5F, 0x43, 0x4D, + 0x41, 0x43, 0x5F, 0x31, 0x32, 0x38, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, + 0x6D, 0x2D, 0x3E, 0x68, 0x77, 0x5F, 0x6B, 0x65, 0x79, 0x5F, 0x69, 0x64, + 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x53, 0x45, 0x43, 0x5F, + 0x4D, 0x41, 0x58, 0x5F, 0x4D, 0x46, 0x50, 0x5F, 0x4B, 0x45, 0x59, 0x5F, + 0x4E, 0x42, 0x52, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x3D, 0x3D, 0x20, 0x56, 0x49, 0x46, 0x5F, 0x53, 0x54, 0x41, + 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5F, 0x67, 0x65, 0x74, 0x28, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, + 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x6D, 0x75, 0x20, 0x65, + 0x64, 0x63, 0x61, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x44, 0x48, 0x43, 0x50, + 0x65, 0x64, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x78, 0x2E, 0x0D, 0x0A, 0x00, + 0x73, 0x65, 0x74, 0x20, 0x61, 0x67, 0x67, 0x20, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6C, 0x65, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6C, 0x65, 0x5F, 0x72, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x67, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x63, 0x61, 0x64, 0x64, 0x72, 0x3A, + 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x73, 0x65, 0x74, 0x20, 0x74, 0x78, 0x6F, 0x70, 0x20, 0x72, 0x65, 0x71, + 0x3A, 0x20, 0x62, 0x6B, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x62, 0x65, 0x3A, + 0x25, 0x78, 0x2C, 0x20, 0x76, 0x69, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x76, + 0x6F, 0x3A, 0x25, 0x78, 0x2C, 0x20, 0x6C, 0x6F, 0x6E, 0x67, 0x6E, 0x61, + 0x76, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x63, 0x66, 0x65, 0x3D, 0x25, 0x64, + 0x0A, 0x00, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x76, 0x65, 0x6E, 0x64, + 0x6F, 0x72, 0x20, 0x74, 0x72, 0x78, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x78, + 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, + 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x78, + 0x0A, 0x00, 0x00, 0x00, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x64, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x69, 0x73, 0x20, 0x35, 0x67, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x73, 0x77, + 0x5F, 0x65, 0x6E, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x76, 0x65, 0x6E, 0x64, + 0x6F, 0x72, 0x5F, 0x69, 0x6E, 0x66, 0x6F, 0x3D, 0x30, 0x78, 0x25, 0x78, + 0x0D, 0x0A, 0x00, 0x00, 0x72, 0x65, 0x61, 0x64, 0x20, 0x78, 0x74, 0x61, + 0x6C, 0x5F, 0x63, 0x61, 0x70, 0x20, 0x65, 0x66, 0x75, 0x73, 0x65, 0x3D, + 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x75, 0x73, 0x65, 0x72, + 0x20, 0x63, 0x61, 0x70, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, + 0x75, 0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x70, 0x5F, 0x66, 0x69, 0x6E, + 0x65, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x73, 0x65, 0x74, 0x20, + 0x78, 0x74, 0x61, 0x6C, 0x5F, 0x63, 0x61, 0x70, 0x20, 0x30, 0x78, 0x25, + 0x78, 0x0A, 0x00, 0x00, 0x73, 0x65, 0x74, 0x20, 0x78, 0x74, 0x61, 0x6C, + 0x5F, 0x63, 0x61, 0x70, 0x5F, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x30, 0x78, + 0x25, 0x78, 0x0A, 0x00, 0x32, 0x2E, 0x34, 0x67, 0x3A, 0x62, 0x65, 0x66, + 0x6F, 0x72, 0x65, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, + 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, 0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x32, 0x2E, 0x34, 0x67, 0x3A, 0x61, 0x66, 0x74, + 0x65, 0x72, 0x20, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, + 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, 0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x35, 0x67, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, + 0x65, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, 0x34, 0x78, + 0x2C, 0x20, 0x76, 0x63, 0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, 0x0A, 0x00, + 0x35, 0x67, 0x3A, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x20, 0x25, 0x64, + 0x3A, 0x20, 0x64, 0x63, 0x3D, 0x25, 0x34, 0x78, 0x2C, 0x20, 0x76, 0x63, + 0x6D, 0x3D, 0x25, 0x34, 0x78, 0x0D, 0x0A, 0x00, 0x6E, 0x78, 0x6D, 0x61, + 0x63, 0x5F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x5F, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x3D, + 0x3D, 0x20, 0x48, 0x57, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x00, 0x00, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, 0x29, 0x20, 0x21, 0x3D, + 0x20, 0x4D, 0x4D, 0x5F, 0x4E, 0x4F, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x00, + 0x76, 0x69, 0x66, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, + 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x68, 0x65, 0x20, 0x65, + 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6E, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, + 0x0D, 0x0A, 0x00, 0x00, 0xA8, 0x1F, 0x17, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x70, 0x61, + 0x73, 0x74, 0x3A, 0x20, 0x63, 0x62, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x74, + 0x69, 0x6D, 0x65, 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x68, 0x61, 0x6C, + 0x5F, 0x6D, 0x61, 0x63, 0x68, 0x77, 0x5F, 0x74, 0x69, 0x6D, 0x65, 0x5F, + 0x70, 0x61, 0x73, 0x74, 0x28, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x00, + 0x74, 0x69, 0x6D, 0x65, 0x72, 0x2D, 0x3E, 0x63, 0x62, 0x00, 0x00, 0x00, + 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x62, + 0x65, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, + 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x62, + 0x65, 0x20, 0x73, 0x75, 0x63, 0x63, 0x0A, 0x00, 0x6D, 0x6D, 0x5F, 0x62, + 0x63, 0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x74, 0x78, 0x5F, 0x63, 0x66, + 0x6D, 0x00, 0x00, 0x00, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, + 0x6C, 0x65, 0x20, 0x6E, 0x65, 0x76, 0x65, 0x72, 0x20, 0x68, 0x61, 0x70, + 0x70, 0x65, 0x6E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x61, 0x70, 0x6D, 0x20, + 0x73, 0x65, 0x6E, 0x64, 0x20, 0x6E, 0x75, 0x6C, 0x6C, 0x20, 0x74, 0x6F, + 0x20, 0x70, 0x72, 0x6F, 0x62, 0x65, 0x20, 0x73, 0x74, 0x61, 0x3A, 0x20, + 0x73, 0x74, 0x61, 0x5F, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0A, 0x00, + 0x21, 0x6D, 0x6D, 0x5F, 0x62, 0x63, 0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, + 0x74, 0x78, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, 0x61, 0x70, 0x6D, 0x5F, + 0x70, 0x72, 0x6F, 0x62, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x5F, 0x63, 0x66, + 0x6D, 0x00, 0x00, 0x00, 0x28, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, + 0x69, 0x66, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x74, 0x78, + 0x74, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, + 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3D, 0x3D, 0x20, 0x49, 0x4E, + 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x56, 0x49, 0x46, 0x5F, 0x49, 0x44, + 0x58, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x70, 0x32, 0x70, 0x67, 0x6F, + 0x5F, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, + 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, + 0x69, 0x66, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3D, 0x3D, 0x20, + 0x70, 0x32, 0x70, 0x67, 0x6F, 0x5F, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x29, 0x00, 0x00, 0x00, 0x6F, 0x74, 0x68, 0x5F, + 0x63, 0x74, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x62, 0x5F, 0x76, + 0x69, 0x66, 0x5F, 0x6F, 0x74, 0x68, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, + 0x3E, 0x20, 0x31, 0x00, 0x6E, 0x6F, 0x61, 0x5F, 0x69, 0x64, 0x78, 0x20, + 0x3C, 0x20, 0x50, 0x32, 0x50, 0x5F, 0x4E, 0x4F, 0x41, 0x5F, 0x4E, 0x42, + 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, + 0x3E, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3C, 0x20, 0x33, 0x32, 0x00, + 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x74, 0x62, 0x74, 0x74, 0x5F, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x2E, 0x70, 0x32, 0x70, 0x5F, 0x6E, 0x6F, 0x61, + 0x5F, 0x76, 0x69, 0x66, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3D, + 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x56, 0x49, + 0x46, 0x5F, 0x49, 0x44, 0x58, 0x00, 0x00, 0x00, 0x63, 0x68, 0x5F, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, + 0x4C, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x65, 0x6E, 0x76, + 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x43, 0x48, + 0x41, 0x4E, 0x5F, 0x52, 0x4F, 0x43, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x5F, + 0x50, 0x45, 0x4E, 0x44, 0x49, 0x4E, 0x47, 0x5F, 0x4D, 0x41, 0x53, 0x4B, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x65, 0x6E, + 0x76, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x26, 0x20, 0x43, + 0x4F, 0x5F, 0x42, 0x49, 0x54, 0x28, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x45, + 0x4E, 0x56, 0x5F, 0x52, 0x4F, 0x43, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x29, + 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x28, 0x63, 0x68, 0x61, + 0x6E, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x20, 0x26, 0x20, 0x43, 0x4F, 0x5F, 0x42, 0x49, 0x54, 0x28, 0x43, 0x48, + 0x41, 0x4E, 0x5F, 0x45, 0x4E, 0x56, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x5F, + 0x42, 0x49, 0x54, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, + 0x28, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x2A, 0x29, 0x63, 0x68, 0x5F, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x3D, 0x3D, 0x20, 0x65, 0x6E, 0x76, + 0x00, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x65, 0x6E, 0x76, + 0x2E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x5F, 0x63, 0x74, 0x78, + 0x74, 0x00, 0x00, 0x00, 0x4E, 0x6F, 0x20, 0x63, 0x74, 0x78, 0x74, 0x20, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x64, 0x20, 0x70, 0x72, + 0x65, 0x5F, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x0A, 0x00, 0x00, 0x00, + 0x63, 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x69, 0x64, 0x78, 0x20, 0x3D, 0x3D, + 0x20, 0x43, 0x48, 0x41, 0x4E, 0x5F, 0x43, 0x54, 0x58, 0x54, 0x5F, 0x55, + 0x4E, 0x55, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x63, 0x3A, + 0x20, 0x25, 0x64, 0x2C, 0x20, 0x64, 0x75, 0x72, 0x3D, 0x25, 0x64, 0x2C, + 0x20, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x63, 0x74, 0x78, 0x74, 0x2D, 0x3E, 0x6E, 0x62, 0x5F, 0x6C, 0x69, 0x6E, + 0x6B, 0x65, 0x64, 0x5F, 0x76, 0x69, 0x66, 0x20, 0x3D, 0x3D, 0x20, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x63, 0x68, 0x61, + 0x6E, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x3D, 0x3D, 0x20, 0x4E, 0x55, + 0x4C, 0x4C, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x65, 0x6E, 0x76, + 0x2E, 0x6E, 0x62, 0x5F, 0x73, 0x63, 0x68, 0x65, 0x64, 0x5F, 0x63, 0x74, + 0x78, 0x74, 0x20, 0x3C, 0x3D, 0x20, 0x32, 0x00, 0x63, 0x68, 0x5F, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, + 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, + 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x63, 0x74, 0x78, 0x74, + 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, + 0x63, 0x68, 0x61, 0x6E, 0x20, 0x75, 0x6E, 0x6C, 0x69, 0x6E, 0x6B, 0x3A, + 0x20, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x68, 0x61, 0x6E, + 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x6E, 0x62, 0x5F, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x3C, 0x3D, 0x20, 0x31, 0x00, + 0x25, 0x73, 0x3A, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x70, 0x73, 0x3A, 0x6C, + 0x69, 0x6E, 0x6B, 0x6C, 0x6F, 0x73, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x25, 0x73, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, + 0x70, 0x73, 0x5F, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x5F, 0x63, 0x66, + 0x6D, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5F, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6C, 0x65, 0x5F, 0x63, 0x66, 0x6D, 0x00, 0x00, 0x70, 0x73, 0x5F, 0x75, + 0x70, 0x6D, 0x5F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x73, 0x5F, 0x75, 0x70, 0x6D, 0x5F, 0x65, 0x78, 0x69, 0x74, 0x00, + 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, 0x20, 0x26, 0x26, 0x20, + 0x28, 0x6E, 0x6F, 0x61, 0x5F, 0x69, 0x6E, 0x73, 0x74, 0x20, 0x3C, 0x20, + 0x50, 0x32, 0x50, 0x5F, 0x4E, 0x4F, 0x41, 0x5F, 0x4E, 0x42, 0x5F, 0x4D, + 0x41, 0x58, 0x29, 0x00, 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x70, 0x32, 0x70, + 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x3C, 0x20, 0x4E, 0x58, 0x5F, + 0x50, 0x32, 0x50, 0x5F, 0x56, 0x49, 0x46, 0x5F, 0x4D, 0x41, 0x58, 0x00, + 0x74, 0x64, 0x73, 0x5F, 0x65, 0x6E, 0x76, 0x00, 0x25, 0x73, 0x3A, 0x25, + 0x64, 0x0D, 0x0A, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x63, + 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x6E, 0x74, 0x20, 0x3E, 0x20, 0x30, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x29, 0x20, + 0x3D, 0x3D, 0x20, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x57, 0x41, 0x49, 0x54, + 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x4E, 0x45, 0x4C, 0x00, 0x00, 0x00, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x43, 0x41, 0x4E, 0x29, 0x20, + 0x3D, 0x3D, 0x20, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x57, 0x41, 0x49, 0x54, + 0x5F, 0x42, 0x45, 0x41, 0x43, 0x4F, 0x4E, 0x5F, 0x50, 0x52, 0x4F, 0x42, + 0x45, 0x5F, 0x52, 0x53, 0x50, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, + 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5F, 0x72, 0x65, 0x71, 0x5F, 0x68, + 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, + 0x5F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x5F, 0x72, 0x65, 0x71, 0x5F, + 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x50, 0x21, 0x17, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x5F, 0x73, 0x65, 0x6E, + 0x64, 0x5F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x5F, 0x63, 0x66, 0x6D, + 0x00, 0x00, 0x00, 0x00, 0x6E, 0x78, 0x6D, 0x61, 0x63, 0x5F, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6E, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, + 0x67, 0x65, 0x74, 0x66, 0x28, 0x29, 0x20, 0x21, 0x3D, 0x20, 0x48, 0x57, + 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x21, 0x68, 0x61, 0x6C, + 0x5F, 0x61, 0x6F, 0x6E, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, 0x74, 0x69, + 0x6D, 0x65, 0x5F, 0x70, 0x61, 0x73, 0x74, 0x28, 0x74, 0x69, 0x6D, 0x65, + 0x72, 0x2D, 0x3E, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x2B, 0x20, 0x35, 0x30, + 0x30, 0x30, 0x29, 0x00, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x6B, + 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x67, + 0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x79, + 0x6D, 0x6F, 0x72, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x65, 0x72, 0x72, 0x6F, + 0x72, 0x3A, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, + 0x6E, 0x6F, 0x20, 0x6D, 0x6D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x20, + 0x69, 0x6E, 0x20, 0x67, 0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x72, + 0x20, 0x61, 0x6E, 0x79, 0x6D, 0x6F, 0x72, 0x65, 0x0D, 0x0A, 0x00, 0x00, + 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, 0x70, 0x65, 0x6E, 0x64, + 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, + 0x30, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, + 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, + 0x4C, 0x5F, 0x41, 0x43, 0x31, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, + 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, + 0x6D, 0x65, 0x72, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, + 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, 0x32, 0x5F, 0x54, 0x49, + 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, 0x70, 0x65, 0x6E, 0x64, + 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x41, 0x43, + 0x33, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, + 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, + 0x4C, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, + 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x74, 0x69, + 0x6D, 0x65, 0x72, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, + 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x48, 0x45, 0x5F, 0x54, 0x42, 0x5F, + 0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, + 0x21, 0x28, 0x74, 0x69, 0x6D, 0x65, 0x72, 0x5F, 0x70, 0x65, 0x6E, 0x64, + 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x48, 0x41, 0x4C, 0x5F, 0x48, 0x49, + 0x51, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x58, 0x5F, 0x46, 0x49, 0x46, 0x4F, 0x5F, + 0x4F, 0x56, 0x45, 0x52, 0x5F, 0x46, 0x4C, 0x4F, 0x57, 0x20, 0x68, 0x61, + 0x70, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x68, 0x77, 0x20, 0x72, 0x65, 0x63, + 0x6F, 0x76, 0x65, 0x72, 0x79, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6C, 0x66, + 0x0D, 0x0A, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, + 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, + 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x50, 0x48, 0x59, 0x5F, 0x45, 0x52, 0x52, + 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x4D, 0x41, 0x43, + 0x5F, 0x50, 0x48, 0x59, 0x49, 0x46, 0x5F, 0x55, 0x4E, 0x44, 0x45, 0x52, + 0x5F, 0x52, 0x55, 0x4E, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, + 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, + 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, + 0x5F, 0x4D, 0x41, 0x43, 0x5F, 0x50, 0x48, 0x59, 0x49, 0x46, 0x5F, 0x4F, + 0x56, 0x45, 0x52, 0x46, 0x4C, 0x4F, 0x57, 0x5F, 0x42, 0x49, 0x54, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, + 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, + 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x50, 0x54, 0x5F, 0x45, 0x52, 0x52, 0x4F, + 0x52, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, + 0x30, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, + 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, + 0x31, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, + 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, + 0x32, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, + 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x41, 0x43, 0x5F, + 0x33, 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, + 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x42, 0x43, 0x4E, + 0x5F, 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, + 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x58, 0x5F, + 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, + 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, + 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, + 0x5F, 0x52, 0x58, 0x5F, 0x50, 0x41, 0x59, 0x4C, 0x4F, 0x41, 0x44, 0x5F, + 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, 0x42, 0x49, 0x54, + 0x29, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, 0x6E, 0x69, 0x72, 0x71, + 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x4E, + 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x48, 0x57, 0x5F, 0x45, 0x52, 0x52, 0x5F, + 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x21, 0x28, 0x67, 0x65, + 0x6E, 0x69, 0x72, 0x71, 0x5F, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, + 0x20, 0x26, 0x20, 0x4E, 0x58, 0x4D, 0x41, 0x43, 0x5F, 0x48, 0x49, 0x5F, + 0x54, 0x58, 0x5F, 0x44, 0x4D, 0x41, 0x5F, 0x44, 0x45, 0x41, 0x44, 0x5F, + 0x42, 0x49, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x08, 0x06, 0x04, 0x0B, 0x09, 0x07, 0x05, + 0xA5, 0xC6, 0x84, 0xF8, 0x99, 0xEE, 0x8D, 0xF6, 0x0D, 0xFF, 0xBD, 0xD6, + 0xB1, 0xDE, 0x54, 0x91, 0x50, 0x60, 0x03, 0x02, 0xA9, 0xCE, 0x7D, 0x56, + 0x19, 0xE7, 0x62, 0xB5, 0xE6, 0x4D, 0x9A, 0xEC, 0x45, 0x8F, 0x9D, 0x1F, + 0x40, 0x89, 0x87, 0xFA, 0x15, 0xEF, 0xEB, 0xB2, 0xC9, 0x8E, 0x0B, 0xFB, + 0xEC, 0x41, 0x67, 0xB3, 0xFD, 0x5F, 0xEA, 0x45, 0xBF, 0x23, 0xF7, 0x53, + 0x96, 0xE4, 0x5B, 0x9B, 0xC2, 0x75, 0x1C, 0xE1, 0xAE, 0x3D, 0x6A, 0x4C, + 0x5A, 0x6C, 0x41, 0x7E, 0x02, 0xF5, 0x4F, 0x83, 0x5C, 0x68, 0xF4, 0x51, + 0x34, 0xD1, 0x08, 0xF9, 0x93, 0xE2, 0x73, 0xAB, 0x53, 0x62, 0x3F, 0x2A, + 0x0C, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5E, 0x9D, 0x28, 0x30, 0xA1, 0x37, + 0x0F, 0x0A, 0xB5, 0x2F, 0x09, 0x0E, 0x36, 0x24, 0x9B, 0x1B, 0x3D, 0xDF, + 0x26, 0xCD, 0x69, 0x4E, 0xCD, 0x7F, 0x9F, 0xEA, 0x1B, 0x12, 0x9E, 0x1D, + 0x74, 0x58, 0x2E, 0x34, 0x2D, 0x36, 0xB2, 0xDC, 0xEE, 0xB4, 0xFB, 0x5B, + 0xF6, 0xA4, 0x4D, 0x76, 0x61, 0xB7, 0xCE, 0x7D, 0x7B, 0x52, 0x3E, 0xDD, + 0x71, 0x5E, 0x97, 0x13, 0xF5, 0xA6, 0x68, 0xB9, 0x00, 0x00, 0x2C, 0xC1, + 0x60, 0x40, 0x1F, 0xE3, 0xC8, 0x79, 0xED, 0xB6, 0xBE, 0xD4, 0x46, 0x8D, + 0xD9, 0x67, 0x4B, 0x72, 0xDE, 0x94, 0xD4, 0x98, 0xE8, 0xB0, 0x4A, 0x85, + 0x6B, 0xBB, 0x2A, 0xC5, 0xE5, 0x4F, 0x16, 0xED, 0xC5, 0x86, 0xD7, 0x9A, + 0x55, 0x66, 0x94, 0x11, 0xCF, 0x8A, 0x10, 0xE9, 0x06, 0x04, 0x81, 0xFE, + 0xF0, 0xA0, 0x44, 0x78, 0xBA, 0x25, 0xE3, 0x4B, 0xF3, 0xA2, 0xFE, 0x5D, + 0xC0, 0x80, 0x8A, 0x05, 0xAD, 0x3F, 0xBC, 0x21, 0x48, 0x70, 0x04, 0xF1, + 0xDF, 0x63, 0xC1, 0x77, 0x75, 0xAF, 0x63, 0x42, 0x30, 0x20, 0x1A, 0xE5, + 0x0E, 0xFD, 0x6D, 0xBF, 0x4C, 0x81, 0x14, 0x18, 0x35, 0x26, 0x2F, 0xC3, + 0xE1, 0xBE, 0xA2, 0x35, 0xCC, 0x88, 0x39, 0x2E, 0x57, 0x93, 0xF2, 0x55, + 0x82, 0xFC, 0x47, 0x7A, 0xAC, 0xC8, 0xE7, 0xBA, 0x2B, 0x32, 0x95, 0xE6, + 0xA0, 0xC0, 0x98, 0x19, 0xD1, 0x9E, 0x7F, 0xA3, 0x66, 0x44, 0x7E, 0x54, + 0xAB, 0x3B, 0x83, 0x0B, 0xCA, 0x8C, 0x29, 0xC7, 0xD3, 0x6B, 0x3C, 0x28, + 0x79, 0xA7, 0xE2, 0xBC, 0x1D, 0x16, 0x76, 0xAD, 0x3B, 0xDB, 0x56, 0x64, + 0x4E, 0x74, 0x1E, 0x14, 0xDB, 0x92, 0x0A, 0x0C, 0x6C, 0x48, 0xE4, 0xB8, + 0x5D, 0x9F, 0x6E, 0xBD, 0xEF, 0x43, 0xA6, 0xC4, 0xA8, 0x39, 0xA4, 0x31, + 0x37, 0xD3, 0x8B, 0xF2, 0x32, 0xD5, 0x43, 0x8B, 0x59, 0x6E, 0xB7, 0xDA, + 0x8C, 0x01, 0x64, 0xB1, 0xD2, 0x9C, 0xE0, 0x49, 0xB4, 0xD8, 0xFA, 0xAC, + 0x07, 0xF3, 0x25, 0xCF, 0xAF, 0xCA, 0x8E, 0xF4, 0xE9, 0x47, 0x18, 0x10, + 0xD5, 0x6F, 0x88, 0xF0, 0x6F, 0x4A, 0x72, 0x5C, 0x24, 0x38, 0xF1, 0x57, + 0xC7, 0x73, 0x51, 0x97, 0x23, 0xCB, 0x7C, 0xA1, 0x9C, 0xE8, 0x21, 0x3E, + 0xDD, 0x96, 0xDC, 0x61, 0x86, 0x0D, 0x85, 0x0F, 0x90, 0xE0, 0x42, 0x7C, + 0xC4, 0x71, 0xAA, 0xCC, 0xD8, 0x90, 0x05, 0x06, 0x01, 0xF7, 0x12, 0x1C, + 0xA3, 0xC2, 0x5F, 0x6A, 0xF9, 0xAE, 0xD0, 0x69, 0x91, 0x17, 0x58, 0x99, + 0x27, 0x3A, 0xB9, 0x27, 0x38, 0xD9, 0x13, 0xEB, 0xB3, 0x2B, 0x33, 0x22, + 0xBB, 0xD2, 0x70, 0xA9, 0x89, 0x07, 0xA7, 0x33, 0xB6, 0x2D, 0x22, 0x3C, + 0x92, 0x15, 0x20, 0xC9, 0x49, 0x87, 0xFF, 0xAA, 0x78, 0x50, 0x7A, 0xA5, + 0x8F, 0x03, 0xF8, 0x59, 0x80, 0x09, 0x17, 0x1A, 0xDA, 0x65, 0x31, 0xD7, + 0xC6, 0x84, 0xB8, 0xD0, 0xC3, 0x82, 0xB0, 0x29, 0x77, 0x5A, 0x11, 0x1E, + 0xCB, 0x7B, 0xFC, 0xA8, 0xD6, 0x6D, 0x3A, 0x2C, 0x64, 0x65, 0x6C, 0x61, + 0x79, 0x20, 0x3E, 0x20, 0x30, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6C, 0x61, + 0x79, 0x20, 0x3C, 0x20, 0x4B, 0x45, 0x5F, 0x54, 0x49, 0x4D, 0x45, 0x52, + 0x5F, 0x44, 0x45, 0x4C, 0x41, 0x59, 0x5F, 0x4D, 0x41, 0x58, 0x00, 0x00, + 0x74, 0x69, 0x6D, 0x65, 0x72, 0x00, 0x00, 0x00, 0x21, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x20, 0x7C, 0x7C, 0x20, 0x21, 0x6B, 0x65, 0x5F, 0x74, 0x69, + 0x6D, 0x65, 0x5F, 0x70, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x2D, 0x3E, 0x74, 0x69, 0x6D, 0x65, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x6D, 0x73, 0x67, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, + 0x9D, 0x80, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, + 0x67, 0x20, 0x6D, 0x73, 0x67, 0x3A, 0x25, 0x78, 0x20, 0x66, 0x72, 0x6F, + 0x6D, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x20, 0x74, 0x6F, 0x20, + 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x74, 0x6F, 0x74, 0x61, + 0x6C, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x3E, 0x3D, 0x20, 0x73, 0x69, 0x7A, + 0x65, 0x6F, 0x66, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6D, + 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x5F, 0x66, 0x72, 0x65, 0x65, 0x29, 0x00, + 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, + 0x4C, 0x00, 0x00, 0x00, 0x28, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x5F, + 0x74, 0x29, 0x6D, 0x65, 0x6D, 0x5F, 0x70, 0x74, 0x72, 0x20, 0x3E, 0x20, + 0x28, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x5F, 0x74, 0x29, 0x6E, 0x6F, + 0x64, 0x65, 0x00, 0x00, 0x70, 0x72, 0x65, 0x76, 0x5F, 0x6E, 0x6F, 0x64, + 0x65, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, + 0x72, 0x2D, 0x3E, 0x6D, 0x73, 0x67, 0x5F, 0x74, 0x61, 0x62, 0x6C, 0x65, + 0x5B, 0x69, 0x5D, 0x2E, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x79, 0x70, 0x65, 0x20, 0x3C, 0x20, 0x54, 0x41, 0x53, 0x4B, 0x5F, + 0x4D, 0x41, 0x58, 0x00, 0x6B, 0x65, 0x5F, 0x74, 0x61, 0x73, 0x6B, 0x5F, + 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x28, 0x74, 0x79, 0x70, 0x65, 0x29, 0x00, + 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x44, + 0x45, 0x53, 0x43, 0x5B, 0x74, 0x79, 0x70, 0x65, 0x5D, 0x2E, 0x69, 0x64, + 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x69, 0x64, 0x5F, 0x70, 0x74, 0x72, 0x00, 0x00, + 0x80, 0x9D, 0x73, 0x65, 0x74, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, + 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x80, 0x4E, 0x6F, + 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x75, + 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x73, 0x67, 0x3A, 0x25, + 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, + 0x78, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x73, 0x6B, 0x3A, 0x25, 0x78, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x9F, 0x15, 0x00, 0x1C, 0x9F, 0x15, 0x00, + 0xCC, 0x9C, 0x17, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0xB5, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB4, 0xA4, 0x15, 0x00, 0xF0, 0x9F, 0x17, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xBF, 0x15, 0x00, + 0x18, 0xBF, 0x15, 0x00, 0xA4, 0xBA, 0x17, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8C, 0xB8, 0x15, 0x00, 0xE0, 0xB8, 0x17, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBB, 0x15, 0x00, + 0x60, 0xBA, 0x17, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0xBE, 0x15, 0x00, 0x90, 0xBA, 0x17, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC2, 0x15, 0x00, 0xF4, 0xDF, 0x17, 0x00, + 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB0, 0xD0, 0x15, 0x00, 0x74, 0xEF, 0x17, 0x00, + 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x65, 0x76, 0x65, + 0x6E, 0x74, 0x20, 0x3C, 0x20, 0x4B, 0x45, 0x5F, 0x45, 0x56, 0x54, 0x5F, + 0x4D, 0x41, 0x58, 0x29, 0x20, 0x26, 0x26, 0x20, 0x6B, 0x65, 0x5F, 0x65, + 0x76, 0x74, 0x5F, 0x68, 0x64, 0x6C, 0x72, 0x5B, 0x65, 0x76, 0x65, 0x6E, + 0x74, 0x5D, 0x2E, 0x66, 0x75, 0x6E, 0x63, 0x00, 0x6C, 0x69, 0x73, 0x74, + 0x5F, 0x68, 0x64, 0x72, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, + 0x00, 0x00, 0x00, 0x00, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x21, 0x3D, 0x20, + 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x28, 0x70, 0x72, 0x65, + 0x76, 0x5F, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x3D, 0x3D, + 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x70, + 0x72, 0x65, 0x76, 0x5F, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2D, + 0x3E, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x3D, 0x3D, 0x20, 0x65, 0x6C, 0x65, + 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x00, 0x00, 0x00, 0x65, 0x6C, 0x65, 0x6D, + 0x65, 0x6E, 0x74, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x96, 0x30, 0x07, 0x77, 0x2C, 0x61, 0x0E, 0xEE, + 0xBA, 0x51, 0x09, 0x99, 0x19, 0xC4, 0x6D, 0x07, 0x8F, 0xF4, 0x6A, 0x70, + 0x35, 0xA5, 0x63, 0xE9, 0xA3, 0x95, 0x64, 0x9E, 0x32, 0x88, 0xDB, 0x0E, + 0xA4, 0xB8, 0xDC, 0x79, 0x1E, 0xE9, 0xD5, 0xE0, 0x88, 0xD9, 0xD2, 0x97, + 0x2B, 0x4C, 0xB6, 0x09, 0xBD, 0x7C, 0xB1, 0x7E, 0x07, 0x2D, 0xB8, 0xE7, + 0x91, 0x1D, 0xBF, 0x90, 0x64, 0x10, 0xB7, 0x1D, 0xF2, 0x20, 0xB0, 0x6A, + 0x48, 0x71, 0xB9, 0xF3, 0xDE, 0x41, 0xBE, 0x84, 0x7D, 0xD4, 0xDA, 0x1A, + 0xEB, 0xE4, 0xDD, 0x6D, 0x51, 0xB5, 0xD4, 0xF4, 0xC7, 0x85, 0xD3, 0x83, + 0x56, 0x98, 0x6C, 0x13, 0xC0, 0xA8, 0x6B, 0x64, 0x7A, 0xF9, 0x62, 0xFD, + 0xEC, 0xC9, 0x65, 0x8A, 0x4F, 0x5C, 0x01, 0x14, 0xD9, 0x6C, 0x06, 0x63, + 0x63, 0x3D, 0x0F, 0xFA, 0xF5, 0x0D, 0x08, 0x8D, 0xC8, 0x20, 0x6E, 0x3B, + 0x5E, 0x10, 0x69, 0x4C, 0xE4, 0x41, 0x60, 0xD5, 0x72, 0x71, 0x67, 0xA2, + 0xD1, 0xE4, 0x03, 0x3C, 0x47, 0xD4, 0x04, 0x4B, 0xFD, 0x85, 0x0D, 0xD2, + 0x6B, 0xB5, 0x0A, 0xA5, 0xFA, 0xA8, 0xB5, 0x35, 0x6C, 0x98, 0xB2, 0x42, + 0xD6, 0xC9, 0xBB, 0xDB, 0x40, 0xF9, 0xBC, 0xAC, 0xE3, 0x6C, 0xD8, 0x32, + 0x75, 0x5C, 0xDF, 0x45, 0xCF, 0x0D, 0xD6, 0xDC, 0x59, 0x3D, 0xD1, 0xAB, + 0xAC, 0x30, 0xD9, 0x26, 0x3A, 0x00, 0xDE, 0x51, 0x80, 0x51, 0xD7, 0xC8, + 0x16, 0x61, 0xD0, 0xBF, 0xB5, 0xF4, 0xB4, 0x21, 0x23, 0xC4, 0xB3, 0x56, + 0x99, 0x95, 0xBA, 0xCF, 0x0F, 0xA5, 0xBD, 0xB8, 0x9E, 0xB8, 0x02, 0x28, + 0x08, 0x88, 0x05, 0x5F, 0xB2, 0xD9, 0x0C, 0xC6, 0x24, 0xE9, 0x0B, 0xB1, + 0x87, 0x7C, 0x6F, 0x2F, 0x11, 0x4C, 0x68, 0x58, 0xAB, 0x1D, 0x61, 0xC1, + 0x3D, 0x2D, 0x66, 0xB6, 0x90, 0x41, 0xDC, 0x76, 0x06, 0x71, 0xDB, 0x01, + 0xBC, 0x20, 0xD2, 0x98, 0x2A, 0x10, 0xD5, 0xEF, 0x89, 0x85, 0xB1, 0x71, + 0x1F, 0xB5, 0xB6, 0x06, 0xA5, 0xE4, 0xBF, 0x9F, 0x33, 0xD4, 0xB8, 0xE8, + 0xA2, 0xC9, 0x07, 0x78, 0x34, 0xF9, 0x00, 0x0F, 0x8E, 0xA8, 0x09, 0x96, + 0x18, 0x98, 0x0E, 0xE1, 0xBB, 0x0D, 0x6A, 0x7F, 0x2D, 0x3D, 0x6D, 0x08, + 0x97, 0x6C, 0x64, 0x91, 0x01, 0x5C, 0x63, 0xE6, 0xF4, 0x51, 0x6B, 0x6B, + 0x62, 0x61, 0x6C, 0x1C, 0xD8, 0x30, 0x65, 0x85, 0x4E, 0x00, 0x62, 0xF2, + 0xED, 0x95, 0x06, 0x6C, 0x7B, 0xA5, 0x01, 0x1B, 0xC1, 0xF4, 0x08, 0x82, + 0x57, 0xC4, 0x0F, 0xF5, 0xC6, 0xD9, 0xB0, 0x65, 0x50, 0xE9, 0xB7, 0x12, + 0xEA, 0xB8, 0xBE, 0x8B, 0x7C, 0x88, 0xB9, 0xFC, 0xDF, 0x1D, 0xDD, 0x62, + 0x49, 0x2D, 0xDA, 0x15, 0xF3, 0x7C, 0xD3, 0x8C, 0x65, 0x4C, 0xD4, 0xFB, + 0x58, 0x61, 0xB2, 0x4D, 0xCE, 0x51, 0xB5, 0x3A, 0x74, 0x00, 0xBC, 0xA3, + 0xE2, 0x30, 0xBB, 0xD4, 0x41, 0xA5, 0xDF, 0x4A, 0xD7, 0x95, 0xD8, 0x3D, + 0x6D, 0xC4, 0xD1, 0xA4, 0xFB, 0xF4, 0xD6, 0xD3, 0x6A, 0xE9, 0x69, 0x43, + 0xFC, 0xD9, 0x6E, 0x34, 0x46, 0x88, 0x67, 0xAD, 0xD0, 0xB8, 0x60, 0xDA, + 0x73, 0x2D, 0x04, 0x44, 0xE5, 0x1D, 0x03, 0x33, 0x5F, 0x4C, 0x0A, 0xAA, + 0xC9, 0x7C, 0x0D, 0xDD, 0x3C, 0x71, 0x05, 0x50, 0xAA, 0x41, 0x02, 0x27, + 0x10, 0x10, 0x0B, 0xBE, 0x86, 0x20, 0x0C, 0xC9, 0x25, 0xB5, 0x68, 0x57, + 0xB3, 0x85, 0x6F, 0x20, 0x09, 0xD4, 0x66, 0xB9, 0x9F, 0xE4, 0x61, 0xCE, + 0x0E, 0xF9, 0xDE, 0x5E, 0x98, 0xC9, 0xD9, 0x29, 0x22, 0x98, 0xD0, 0xB0, + 0xB4, 0xA8, 0xD7, 0xC7, 0x17, 0x3D, 0xB3, 0x59, 0x81, 0x0D, 0xB4, 0x2E, + 0x3B, 0x5C, 0xBD, 0xB7, 0xAD, 0x6C, 0xBA, 0xC0, 0x20, 0x83, 0xB8, 0xED, + 0xB6, 0xB3, 0xBF, 0x9A, 0x0C, 0xE2, 0xB6, 0x03, 0x9A, 0xD2, 0xB1, 0x74, + 0x39, 0x47, 0xD5, 0xEA, 0xAF, 0x77, 0xD2, 0x9D, 0x15, 0x26, 0xDB, 0x04, + 0x83, 0x16, 0xDC, 0x73, 0x12, 0x0B, 0x63, 0xE3, 0x84, 0x3B, 0x64, 0x94, + 0x3E, 0x6A, 0x6D, 0x0D, 0xA8, 0x5A, 0x6A, 0x7A, 0x0B, 0xCF, 0x0E, 0xE4, + 0x9D, 0xFF, 0x09, 0x93, 0x27, 0xAE, 0x00, 0x0A, 0xB1, 0x9E, 0x07, 0x7D, + 0x44, 0x93, 0x0F, 0xF0, 0xD2, 0xA3, 0x08, 0x87, 0x68, 0xF2, 0x01, 0x1E, + 0xFE, 0xC2, 0x06, 0x69, 0x5D, 0x57, 0x62, 0xF7, 0xCB, 0x67, 0x65, 0x80, + 0x71, 0x36, 0x6C, 0x19, 0xE7, 0x06, 0x6B, 0x6E, 0x76, 0x1B, 0xD4, 0xFE, + 0xE0, 0x2B, 0xD3, 0x89, 0x5A, 0x7A, 0xDA, 0x10, 0xCC, 0x4A, 0xDD, 0x67, + 0x6F, 0xDF, 0xB9, 0xF9, 0xF9, 0xEF, 0xBE, 0x8E, 0x43, 0xBE, 0xB7, 0x17, + 0xD5, 0x8E, 0xB0, 0x60, 0xE8, 0xA3, 0xD6, 0xD6, 0x7E, 0x93, 0xD1, 0xA1, + 0xC4, 0xC2, 0xD8, 0x38, 0x52, 0xF2, 0xDF, 0x4F, 0xF1, 0x67, 0xBB, 0xD1, + 0x67, 0x57, 0xBC, 0xA6, 0xDD, 0x06, 0xB5, 0x3F, 0x4B, 0x36, 0xB2, 0x48, + 0xDA, 0x2B, 0x0D, 0xD8, 0x4C, 0x1B, 0x0A, 0xAF, 0xF6, 0x4A, 0x03, 0x36, + 0x60, 0x7A, 0x04, 0x41, 0xC3, 0xEF, 0x60, 0xDF, 0x55, 0xDF, 0x67, 0xA8, + 0xEF, 0x8E, 0x6E, 0x31, 0x79, 0xBE, 0x69, 0x46, 0x8C, 0xB3, 0x61, 0xCB, + 0x1A, 0x83, 0x66, 0xBC, 0xA0, 0xD2, 0x6F, 0x25, 0x36, 0xE2, 0x68, 0x52, + 0x95, 0x77, 0x0C, 0xCC, 0x03, 0x47, 0x0B, 0xBB, 0xB9, 0x16, 0x02, 0x22, + 0x2F, 0x26, 0x05, 0x55, 0xBE, 0x3B, 0xBA, 0xC5, 0x28, 0x0B, 0xBD, 0xB2, + 0x92, 0x5A, 0xB4, 0x2B, 0x04, 0x6A, 0xB3, 0x5C, 0xA7, 0xFF, 0xD7, 0xC2, + 0x31, 0xCF, 0xD0, 0xB5, 0x8B, 0x9E, 0xD9, 0x2C, 0x1D, 0xAE, 0xDE, 0x5B, + 0xB0, 0xC2, 0x64, 0x9B, 0x26, 0xF2, 0x63, 0xEC, 0x9C, 0xA3, 0x6A, 0x75, + 0x0A, 0x93, 0x6D, 0x02, 0xA9, 0x06, 0x09, 0x9C, 0x3F, 0x36, 0x0E, 0xEB, + 0x85, 0x67, 0x07, 0x72, 0x13, 0x57, 0x00, 0x05, 0x82, 0x4A, 0xBF, 0x95, + 0x14, 0x7A, 0xB8, 0xE2, 0xAE, 0x2B, 0xB1, 0x7B, 0x38, 0x1B, 0xB6, 0x0C, + 0x9B, 0x8E, 0xD2, 0x92, 0x0D, 0xBE, 0xD5, 0xE5, 0xB7, 0xEF, 0xDC, 0x7C, + 0x21, 0xDF, 0xDB, 0x0B, 0xD4, 0xD2, 0xD3, 0x86, 0x42, 0xE2, 0xD4, 0xF1, + 0xF8, 0xB3, 0xDD, 0x68, 0x6E, 0x83, 0xDA, 0x1F, 0xCD, 0x16, 0xBE, 0x81, + 0x5B, 0x26, 0xB9, 0xF6, 0xE1, 0x77, 0xB0, 0x6F, 0x77, 0x47, 0xB7, 0x18, + 0xE6, 0x5A, 0x08, 0x88, 0x70, 0x6A, 0x0F, 0xFF, 0xCA, 0x3B, 0x06, 0x66, + 0x5C, 0x0B, 0x01, 0x11, 0xFF, 0x9E, 0x65, 0x8F, 0x69, 0xAE, 0x62, 0xF8, + 0xD3, 0xFF, 0x6B, 0x61, 0x45, 0xCF, 0x6C, 0x16, 0x78, 0xE2, 0x0A, 0xA0, + 0xEE, 0xD2, 0x0D, 0xD7, 0x54, 0x83, 0x04, 0x4E, 0xC2, 0xB3, 0x03, 0x39, + 0x61, 0x26, 0x67, 0xA7, 0xF7, 0x16, 0x60, 0xD0, 0x4D, 0x47, 0x69, 0x49, + 0xDB, 0x77, 0x6E, 0x3E, 0x4A, 0x6A, 0xD1, 0xAE, 0xDC, 0x5A, 0xD6, 0xD9, + 0x66, 0x0B, 0xDF, 0x40, 0xF0, 0x3B, 0xD8, 0x37, 0x53, 0xAE, 0xBC, 0xA9, + 0xC5, 0x9E, 0xBB, 0xDE, 0x7F, 0xCF, 0xB2, 0x47, 0xE9, 0xFF, 0xB5, 0x30, + 0x1C, 0xF2, 0xBD, 0xBD, 0x8A, 0xC2, 0xBA, 0xCA, 0x30, 0x93, 0xB3, 0x53, + 0xA6, 0xA3, 0xB4, 0x24, 0x05, 0x36, 0xD0, 0xBA, 0x93, 0x06, 0xD7, 0xCD, + 0x29, 0x57, 0xDE, 0x54, 0xBF, 0x67, 0xD9, 0x23, 0x2E, 0x7A, 0x66, 0xB3, + 0xB8, 0x4A, 0x61, 0xC4, 0x02, 0x1B, 0x68, 0x5D, 0x94, 0x2B, 0x6F, 0x2A, + 0x37, 0xBE, 0x0B, 0xB4, 0xA1, 0x8E, 0x0C, 0xC3, 0x1B, 0xDF, 0x05, 0x5A, + 0x8D, 0xEF, 0x02, 0x2D, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3D, 0x3D, 0x20, + 0x65, 0x6E, 0x64, 0x00, 0x00, 0x50, 0xF2, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x50, 0xF2, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, + 0x04, 0x08, 0x02, 0x01, 0x01, 0x00, 0x02, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x04, 0x0B, 0x16, 0x0C, 0x12, 0x18, 0x24, + 0x30, 0x48, 0x60, 0x6C, 0x01, 0x00, 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, + 0x03, 0x00, 0x00, 0x00, 0x44, 0x42, 0x47, 0x5F, 0x53, 0x45, 0x56, 0x5F, + 0x4D, 0x49, 0x4E, 0x20, 0x3C, 0x3D, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x20, 0x26, 0x26, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, + 0x3C, 0x20, 0x44, 0x42, 0x47, 0x5F, 0x53, 0x45, 0x56, 0x5F, 0x4D, 0x41, + 0x58, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x03, 0x02, 0x06, 0x07, + 0x00, 0x00, 0x04, 0x02, 0x03, 0x02, 0x06, 0x07, 0x00, 0x00, 0x04, 0x03, + 0x03, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x06, 0x07, + 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x65, 0x72, 0x72, 0x2C, 0x20, 0x77, 0x6C, 0x61, 0x6E, 0x20, 0x66, 0x63, + 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x0A, 0x00, 0x00, 0x00, + 0x72, 0x65, 0x62, 0x6F, 0x6F, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x67, 0x70, 0x69, 0x6F, 0x77, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, + 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x0A, 0x00, 0x00, + 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6E, 0x67, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x20, + 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x30, + 0x38, 0x78, 0x0A, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, + 0x65, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x78, + 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, + 0x47, 0x3A, 0x20, 0x42, 0x6F, 0x6F, 0x74, 0x20, 0x4E, 0x50, 0x43, 0x20, + 0x25, 0x64, 0x0A, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x57, + 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, + 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x3A, + 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x3A, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, + 0x3A, 0x20, 0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x5D, 0x20, 0x3D, + 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, + 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x57, + 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, + 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, + 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, 0x3A, 0x20, 0x5B, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, + 0x78, 0x20, 0x2F, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x9D, 0x81, 0x44, 0x42, + 0x47, 0x3A, 0x20, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, + 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x3A, 0x20, 0x5B, 0x30, 0x78, 0x25, 0x30, + 0x38, 0x78, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, + 0x20, 0x2F, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x9D, 0x81, 0x42, 0x6F, + 0x6F, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x25, 0x78, 0x2C, 0x20, + 0x61, 0x64, 0x64, 0x72, 0x3D, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x20, 0x25, 0x64, + 0x0D, 0x0A, 0x00, 0x00, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, + 0x62, 0x6F, 0x6F, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x0D, 0x0A, 0x00, + 0x9D, 0x81, 0x44, 0x42, 0x47, 0x3A, 0x20, 0x46, 0x57, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x0A, 0x00, 0x00, 0x9D, 0x81, 0x44, 0x42, + 0x47, 0x3A, 0x20, 0x57, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, + 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, + 0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x7E, 0x20, 0x30, 0x78, + 0x25, 0x30, 0x38, 0x78, 0x5D, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x7B, + 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x2C, 0x20, 0x2E, 0x2E, 0x2E, 0x7D, + 0x2C, 0x20, 0x77, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3A, 0x20, 0x25, + 0x30, 0x32, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x70, 0x22, 0x17, 0x00, + 0x0C, 0x00, 0x00, 0x00, 0x9B, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x20, + 0x28, 0x25, 0x73, 0x29, 0x20, 0x61, 0x74, 0x20, 0x25, 0x73, 0x3A, 0x25, + 0x64, 0x0A, 0x00, 0x00, 0x9B, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, 0x47, + 0x20, 0x28, 0x25, 0x73, 0x29, 0x20, 0x61, 0x74, 0x20, 0x25, 0x73, 0x3A, + 0x25, 0x64, 0x0A, 0x00, 0x45, 0x72, 0x72, 0x3A, 0x20, 0x55, 0x46, 0x20, + 0x68, 0x6F, 0x73, 0x74, 0x20, 0x72, 0x78, 0x20, 0x62, 0x75, 0x66, 0x66, + 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x0D, 0x0A, 0x00, 0x09, 0x2D, 0x20, 0x00, + 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x20, 0x00, 0x00, 0x25, 0x30, 0x32, 0x78, 0x20, 0x00, 0x00, 0x00, + 0x25, 0x30, 0x38, 0x78, 0x3A, 0x00, 0x00, 0x00, 0x20, 0x25, 0x30, 0x34, + 0x58, 0x20, 0x25, 0x30, 0x34, 0x58, 0x00, 0x00, 0x20, 0x25, 0x30, 0x32, + 0x58, 0x20, 0x25, 0x30, 0x32, 0x58, 0x20, 0x25, 0x30, 0x32, 0x58, 0x20, + 0x25, 0x30, 0x32, 0x58, 0x00, 0x00, 0x00, 0x00, 0x20, 0x25, 0x30, 0x34, + 0x58, 0x00, 0x00, 0x00, 0x20, 0x25, 0x30, 0x32, 0x58, 0x00, 0x00, 0x00, + 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x68, 0x65, 0x6C, + 0x70, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x00, 0x00, 0x68, 0x65, 0x6C, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x72, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, + 0x3C, 0x63, 0x6E, 0x74, 0x3E, 0x20, 0x3C, 0x73, 0x7A, 0x3E, 0x00, 0x00, + 0x20, 0x77, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x20, 0x64, 0x62, 0x67, 0x20, 0x6D, 0x73, 0x6B, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x6D, 0x00, 0x00, 0x20, 0x77, 0x66, 0x63, + 0x74, 0x20, 0x76, 0x61, 0x6C, 0x28, 0x69, 0x6E, 0x20, 0x73, 0x29, 0x00, + 0x77, 0x66, 0x63, 0x74, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x3A, + 0x20, 0x63, 0x6D, 0x64, 0x5F, 0x66, 0x72, 0x65, 0x65, 0x5F, 0x6C, 0x69, + 0x73, 0x74, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x0D, 0x0A, 0x00, 0x00, + 0x61, 0x69, 0x63, 0x3E, 0x20, 0x00, 0x00, 0x00, 0x4E, 0x6F, 0x20, 0x6D, + 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6D, 0x64, 0x73, 0x20, 0x73, 0x75, 0x70, + 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0x2A, 0x20, 0x54, 0x6F, 0x6F, 0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, + 0x61, 0x72, 0x67, 0x73, 0x20, 0x28, 0x6D, 0x61, 0x78, 0x2E, 0x20, 0x25, + 0x64, 0x29, 0x20, 0x2A, 0x2A, 0x0A, 0x00, 0x00, 0x55, 0x6E, 0x6B, 0x6E, + 0x6F, 0x77, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, + 0x27, 0x25, 0x73, 0x27, 0x0A, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, + 0x65, 0x3A, 0x0A, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x63, 0x6F, 0x6D, 0x6D, + 0x61, 0x6E, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x0D, 0x0A, 0x00, 0x00, + 0x63, 0x75, 0x72, 0x20, 0x64, 0x62, 0x67, 0x5F, 0x6D, 0x73, 0x6B, 0x3A, + 0x20, 0x30, 0x78, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x63, 0x66, 0x67, 0x20, + 0x64, 0x62, 0x67, 0x5F, 0x6D, 0x73, 0x6B, 0x3A, 0x20, 0x30, 0x78, 0x25, + 0x78, 0x0A, 0x00, 0x00, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, + 0x61, 0x72, 0x67, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x69, 0x6E, 0x76, 0x61, + 0x6C, 0x69, 0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x3A, 0x20, 0x25, 0x64, + 0x0A, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x20, + 0x20, 0x72, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x3C, 0x63, 0x6E, 0x74, + 0x3E, 0x0A, 0x00, 0x00, 0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x5D, + 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x0D, 0x0A, 0x00, + 0x5B, 0x30, 0x78, 0x25, 0x30, 0x38, 0x58, 0x5D, 0x20, 0x3D, 0x20, 0x30, + 0x78, 0x25, 0x30, 0x32, 0x58, 0x0D, 0x0A, 0x00, 0x5B, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x58, 0x5D, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x34, + 0x58, 0x0D, 0x0A, 0x00, 0x55, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x20, + 0x20, 0x77, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x20, + 0x77, 0x66, 0x63, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x28, 0x69, 0x6E, 0x20, + 0x73, 0x29, 0x0A, 0x00, 0x63, 0x75, 0x72, 0x20, 0x77, 0x66, 0x63, 0x74, + 0x3A, 0x20, 0x25, 0x75, 0x73, 0x0A, 0x00, 0x00, 0x63, 0x66, 0x67, 0x20, + 0x77, 0x66, 0x63, 0x74, 0x20, 0x25, 0x75, 0x73, 0x0A, 0x00, 0x00, 0x00, + 0x77, 0x66, 0x63, 0x74, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, + 0x72, 0x61, 0x6E, 0x67, 0x65, 0x0A, 0x00, 0x00, 0x08, 0x20, 0x08, 0x00, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, + 0xDD, 0x07, 0x00, 0x50, 0xF2, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5F, 0x67, 0x65, 0x74, 0x28, 0x64, 0x65, 0x73, 0x74, 0x5F, 0x69, 0x64, + 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x45, 0x5F, 0x42, 0x55, 0x53, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x66, 0x5F, 0x6D, 0x67, 0x6D, 0x74, + 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x6D, 0x6F, 0x6E, 0x69, 0x74, 0x6F, 0x72, + 0x5F, 0x76, 0x69, 0x66, 0x20, 0x21, 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, + 0x4C, 0x49, 0x44, 0x5F, 0x56, 0x49, 0x46, 0x5F, 0x49, 0x44, 0x58, 0x00, + 0xD8, 0x22, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x62, 0x69, 0x74, 0x5F, + 0x70, 0x6F, 0x73, 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, + 0x54, 0x45, 0x53, 0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x00, + 0x72, 0x61, 0x74, 0x65, 0x73, 0x2D, 0x3E, 0x6C, 0x65, 0x6E, 0x67, 0x74, + 0x68, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x4C, 0x4F, 0x43, 0x41, + 0x4C, 0x5F, 0x43, 0x41, 0x50, 0x41, 0x28, 0x48, 0x45, 0x29, 0x00, 0x00, + 0x4C, 0x4F, 0x43, 0x41, 0x4C, 0x5F, 0x43, 0x41, 0x50, 0x41, 0x28, 0x56, + 0x48, 0x54, 0x29, 0x00, 0x4C, 0x4F, 0x43, 0x41, 0x4C, 0x5F, 0x43, 0x41, + 0x50, 0x41, 0x28, 0x48, 0x54, 0x29, 0x00, 0x00, 0x76, 0x69, 0x66, 0x2D, + 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x74, 0x78, 0x74, 0x20, 0x21, + 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x63, 0x75, 0x72, 0x72, + 0x3D, 0x25, 0x78, 0x2C, 0x20, 0x62, 0x73, 0x73, 0x3D, 0x25, 0x78, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x6D, 0x69, 0x63, 0x5F, 0x63, 0x61, 0x6C, 0x63, + 0x5F, 0x70, 0x74, 0x72, 0x2D, 0x3E, 0x6C, 0x61, 0x73, 0x74, 0x5F, 0x6D, + 0x5F, 0x69, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x20, 0x34, 0x00, 0x00, + 0x72, 0x65, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x76, 0x69, 0x66, 0x2D, 0x3E, 0x75, 0x2E, 0x73, 0x74, 0x61, 0x2E, 0x61, + 0x70, 0x5F, 0x69, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, + 0x4C, 0x49, 0x44, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x49, 0x44, 0x58, 0x00, + 0x63, 0x6F, 0x6E, 0x6E, 0x20, 0x6C, 0x6F, 0x73, 0x73, 0x20, 0x69, 0x6E, + 0x64, 0x0D, 0x0A, 0x00, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, + 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x53, 0x43, 0x41, 0x4E, + 0x4E, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, + 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, + 0x4A, 0x4F, 0x49, 0x4E, 0x49, 0x4E, 0x47, 0x00, 0x6D, 0x61, 0x74, 0x63, + 0x68, 0x3A, 0x20, 0x25, 0x34, 0x78, 0x3A, 0x25, 0x34, 0x78, 0x3A, 0x25, + 0x34, 0x78, 0x2C, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x28, 0x6B, 0x65, 0x5F, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, + 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, + 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, 0x5F, 0x53, + 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, + 0x20, 0x53, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x29, 0x20, 0x7C, 0x7C, + 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, + 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, + 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, 0x44, 0x49, 0x53, 0x43, 0x4F, 0x4E, + 0x4E, 0x45, 0x43, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, + 0x20, 0x53, 0x4D, 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, + 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, + 0x20, 0x53, 0x4D, 0x5F, 0x44, 0x49, 0x53, 0x43, 0x4F, 0x4E, 0x4E, 0x45, + 0x43, 0x54, 0x49, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, + 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, + 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, 0x5F, 0x53, + 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, + 0x20, 0x53, 0x4D, 0x5F, 0x44, 0x49, 0x53, 0x43, 0x4F, 0x4E, 0x4E, 0x45, + 0x43, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x00, 0x00, 0x73, 0x6D, 0x20, 0x63, + 0x6F, 0x65, 0x78, 0x20, 0x74, 0x73, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, + 0x75, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, + 0x4B, 0x5F, 0x53, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x53, 0x4D, 0x5F, + 0x53, 0x54, 0x41, 0x5F, 0x41, 0x44, 0x44, 0x49, 0x4E, 0x47, 0x00, 0x00, + 0x98, 0x23, 0x17, 0x00, 0x15, 0x00, 0x00, 0x00, 0x74, 0x78, 0x20, 0x63, + 0x66, 0x6D, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, + 0x63, 0x6F, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, 0x69, 0x73, 0x5F, 0x65, + 0x6D, 0x70, 0x74, 0x79, 0x28, 0x26, 0x73, 0x6D, 0x5F, 0x65, 0x6E, 0x76, + 0x2E, 0x62, 0x73, 0x73, 0x5F, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x72, + 0x65, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x64, 0x65, 0x61, 0x75, 0x74, 0x68, 0x2F, 0x64, 0x69, 0x73, 0x61, 0x73, + 0x73, 0x6F, 0x63, 0x3A, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x6E, 0x63, 0x74, 0x3A, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x6E, 0x6E, + 0x65, 0x63, 0x74, 0x3A, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x61, 0x69, + 0x64, 0x3D, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x61, 0x75, 0x74, 0x68, + 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x5F, 0x72, 0x73, + 0x70, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x3A, 0x25, 0x64, + 0x0D, 0x0A, 0x00, 0x00, 0x64, 0x65, 0x61, 0x75, 0x74, 0x68, 0x5F, 0x68, + 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, + 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x61, 0x75, 0x74, 0x68, 0x5F, 0x68, + 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x3A, 0x20, 0x72, 0x65, 0x61, 0x73, + 0x6F, 0x6E, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x3D, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x42, 0x53, 0x53, 0x5F, 0x43, 0x41, 0x50, 0x41, + 0x28, 0x62, 0x73, 0x73, 0x2C, 0x20, 0x56, 0x41, 0x4C, 0x49, 0x44, 0x29, + 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00, 0x08, 0x06, + 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x02, 0x73, 0x6D, 0x5F, 0x61, + 0x75, 0x74, 0x68, 0x5F, 0x73, 0x65, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x6D, 0x5F, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x5F, 0x72, 0x65, 0x71, + 0x5F, 0x73, 0x65, 0x6E, 0x64, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, + 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, + 0x4D, 0x5F, 0x42, 0x43, 0x4E, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, + 0x47, 0x00, 0x00, 0x00, 0x61, 0x70, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, + 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, + 0x50, 0x4D, 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, + 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, + 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, + 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, + 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, + 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, + 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, + 0x53, 0x54, 0x4F, 0x50, 0x50, 0x49, 0x4E, 0x47, 0x29, 0x00, 0x00, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, + 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x42, 0x53, 0x53, 0x5F, 0x50, 0x41, + 0x52, 0x41, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4E, 0x47, 0x00, + 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, + 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, 0x3D, + 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x53, 0x54, 0x4F, 0x50, 0x50, 0x49, + 0x4E, 0x47, 0x00, 0x00, 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, + 0x50, 0x4D, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x53, + 0x54, 0x4F, 0x50, 0x50, 0x49, 0x4E, 0x47, 0x29, 0x20, 0x7C, 0x7C, 0x20, + 0x28, 0x6B, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, + 0x74, 0x28, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x41, 0x50, 0x4D, 0x29, 0x20, + 0x3D, 0x3D, 0x20, 0x41, 0x50, 0x4D, 0x5F, 0x49, 0x44, 0x4C, 0x45, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x70, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x63, 0x6F, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x5F, + 0x69, 0x73, 0x5F, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x28, 0x26, 0x61, 0x70, + 0x6D, 0x5F, 0x65, 0x6E, 0x76, 0x2E, 0x62, 0x73, 0x73, 0x5F, 0x63, 0x6F, + 0x6E, 0x66, 0x69, 0x67, 0x29, 0x00, 0x00, 0x00, 0x40, 0x24, 0x17, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x63, 0x61, + 0x6E, 0x63, 0x65, 0x6C, 0x3A, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x69, 0x64, 0x6C, 0x65, 0x20, 0x63, + 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x63, 0x66, 0x6D, 0x0D, 0x0A, 0x00, + 0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x73, 0x63, 0x61, 0x6E, 0x6E, 0x69, + 0x6E, 0x67, 0x20, 0x76, 0x6E, 0x64, 0x72, 0x20, 0x69, 0x65, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x6E, 0x69, 0x6E, 0x67, + 0x20, 0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x72, 0x65, 0x71, 0x3A, 0x25, + 0x64, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x4D, 0x41, 0x43, + 0x5F, 0x41, 0x44, 0x44, 0x52, 0x5F, 0x47, 0x52, 0x4F, 0x55, 0x50, 0x28, + 0x26, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x3E, 0x62, 0x73, 0x73, 0x69, + 0x64, 0x29, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, 0x75, 0x20, 0x76, 0x6E, + 0x64, 0x72, 0x20, 0x69, 0x65, 0x0D, 0x0A, 0x00, 0x73, 0x63, 0x61, 0x6E, + 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x63, 0x66, 0x6D, 0x20, + 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x24, 0x17, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xC8, 0x24, 0x17, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xF0, 0x24, 0x17, 0x00, 0x07, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, + 0x75, 0x5F, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x72, 0x6D, 0x3A, 0x25, 0x64, + 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x5B, 0x48, 0x49, 0x44, + 0x44, 0x45, 0x4E, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x52, 0x45, + 0x43, 0x54, 0x2D, 0x00, 0x6A, 0x6F, 0x69, 0x6E, 0x3A, 0x25, 0x73, 0x2C, + 0x25, 0x64, 0x0A, 0x00, 0x66, 0x69, 0x78, 0x3D, 0x25, 0x78, 0x2C, 0x20, + 0x6E, 0x6F, 0x5F, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x3D, + 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x20, 0x25, 0x64, 0x20, + 0x25, 0x64, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x25, 0x64, 0x20, 0x25, + 0x78, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x28, 0x69, 0x65, 0x5F, + 0x62, 0x75, 0x66, 0x20, 0x2D, 0x20, 0x43, 0x50, 0x55, 0x32, 0x48, 0x57, + 0x28, 0x69, 0x65, 0x2D, 0x3E, 0x62, 0x75, 0x66, 0x29, 0x29, 0x20, 0x3C, + 0x3D, 0x20, 0x53, 0x43, 0x41, 0x4E, 0x5F, 0x4D, 0x41, 0x58, 0x5F, 0x49, + 0x45, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, + 0x75, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3A, 0x25, 0x64, 0x2C, 0x25, + 0x64, 0x2C, 0x25, 0x64, 0x2C, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x78, 0x20, 0x61, 0x72, 0x70, 0x72, 0x65, 0x71, 0x3A, 0x20, 0x69, + 0x70, 0x3D, 0x25, 0x78, 0x2E, 0x20, 0x76, 0x69, 0x66, 0x20, 0x69, 0x70, + 0x3D, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x78, 0x20, 0x61, + 0x72, 0x70, 0x72, 0x65, 0x73, 0x70, 0x0A, 0x00, 0x72, 0x78, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x5F, 0x64, 0x65, 0x73, 0x63, 0x2D, 0x3E, 0x76, 0x61, + 0x6C, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x3D, 0x3D, 0x20, + 0x30, 0x00, 0x00, 0x00, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x3A, 0x25, 0x64, 0x00, 0x00, 0x54, 0x4B, 0x49, 0x50, + 0x20, 0x49, 0x43, 0x56, 0x20, 0x45, 0x52, 0x52, 0x0A, 0x00, 0x00, 0x00, + 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, + 0x4C, 0x4C, 0x00, 0x00, 0x72, 0x78, 0x5F, 0x72, 0x65, 0x6F, 0x72, 0x64, + 0x2D, 0x3E, 0x6F, 0x6F, 0x6F, 0x5F, 0x70, 0x6B, 0x74, 0x5F, 0x63, 0x6E, + 0x74, 0x00, 0x00, 0x00, 0x6F, 0x6C, 0x64, 0x5F, 0x77, 0x69, 0x6E, 0x5F, + 0x62, 0x61, 0x72, 0x20, 0x64, 0x65, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x72, 0x65, 0x6F, 0x72, 0x64, 0x2D, 0x3E, 0x6F, 0x6F, 0x6F, 0x5F, 0x70, + 0x6B, 0x74, 0x5F, 0x63, 0x6E, 0x74, 0x3C, 0x3D, 0x36, 0x34, 0x00, 0x00, + 0x25, 0x73, 0x3A, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x5F, 0x64, 0x65, 0x61, + 0x75, 0x74, 0x68, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x74, 0x61, 0x73, 0x6B, + 0x5F, 0x69, 0x64, 0x78, 0x20, 0x21, 0x3D, 0x20, 0x30, 0x78, 0x46, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x6D, 0x61, 0x63, 0x68, 0x64, 0x72, 0x5F, + 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x26, 0x20, 0x30, 0x78, 0x33, + 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x72, 0x78, 0x20, 0x65, + 0x61, 0x70, 0x6F, 0x6C, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x64, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x57, 0x45, 0x50, 0x20, 0x49, 0x43, 0x56, 0x20, + 0x45, 0x52, 0x52, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x72, 0x65, 0x6F, 0x72, + 0x64, 0x20, 0x21, 0x3D, 0x20, 0x4E, 0x55, 0x4C, 0x4C, 0x00, 0x00, 0x00, + 0x72, 0x78, 0x75, 0x5F, 0x63, 0x6E, 0x74, 0x72, 0x6C, 0x5F, 0x73, 0x70, + 0x75, 0x72, 0x69, 0x6F, 0x75, 0x73, 0x5F, 0x63, 0x68, 0x65, 0x63, 0x6B, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x78, 0x75, 0x20, 0x64, 0x69, 0x73, 0x63, + 0x61, 0x72, 0x64, 0x3A, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x25, 0x78, 0x2C, + 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x65, 0x74, 0x72, + 0x61, 0x6E, 0x73, 0x6D, 0x69, 0x74, 0x20, 0x74, 0x78, 0x75, 0x20, 0x64, + 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x0A, 0x00, 0x70, 0x6F, 0x72, 0x74, + 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x6F, 0x73, 0x74, 0x2D, 0x3E, 0x73, 0x74, + 0x61, 0x69, 0x64, 0x20, 0x21, 0x3D, 0x20, 0x49, 0x4E, 0x56, 0x41, 0x4C, + 0x49, 0x44, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x49, 0x44, 0x58, 0x00, 0x00, + 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x61, 0x64, 0x64, 0x62, 0x61, + 0x5F, 0x72, 0x65, 0x71, 0x3A, 0x74, 0x69, 0x64, 0x3D, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x61, + 0x64, 0x64, 0x62, 0x61, 0x5F, 0x72, 0x73, 0x70, 0x3A, 0x74, 0x69, 0x64, + 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x69, 0x64, 0x78, 0x3D, 0x25, 0x64, 0x0D, + 0x0A, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x72, + 0x78, 0x5F, 0x64, 0x65, 0x6C, 0x62, 0x61, 0x3A, 0x74, 0x69, 0x64, 0x3D, + 0x25, 0x64, 0x2C, 0x20, 0x73, 0x74, 0x61, 0x69, 0x64, 0x78, 0x3D, 0x25, + 0x64, 0x0D, 0x0A, 0x00, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, + 0x78, 0x5F, 0x64, 0x65, 0x6C, 0x62, 0x61, 0x3A, 0x74, 0x69, 0x64, 0x3D, + 0x25, 0x64, 0x2C, 0x20, 0x73, 0x74, 0x61, 0x69, 0x64, 0x78, 0x3D, 0x25, + 0x64, 0x0D, 0x0A, 0x00, 0x2C, 0x25, 0x17, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x77, 0x69, 0x6E, 0x20, 0x73, 0x69, 0x6E, + 0x63, 0x65, 0x20, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x3A, 0x20, 0x73, 0x75, + 0x63, 0x63, 0x3D, 0x25, 0x64, 0x2C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x70, + 0x61, 0x73, 0x74, 0x3D, 0x25, 0x64, 0x0A, 0x00, 0x6B, 0x65, 0x5F, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5F, 0x67, 0x65, 0x74, 0x28, 0x4B, 0x45, 0x5F, + 0x42, 0x55, 0x49, 0x4C, 0x44, 0x5F, 0x49, 0x44, 0x28, 0x54, 0x41, 0x53, + 0x4B, 0x5F, 0x42, 0x41, 0x4D, 0x2C, 0x20, 0x62, 0x61, 0x6D, 0x5F, 0x69, + 0x64, 0x78, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x41, 0x4D, 0x5F, + 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x00, 0x00, 0x62, 0x61, 0x6D, 0x5F, + 0x69, 0x64, 0x78, 0x20, 0x3C, 0x20, 0x42, 0x41, 0x4D, 0x5F, 0x49, 0x4E, + 0x56, 0x41, 0x4C, 0x49, 0x44, 0x5F, 0x54, 0x41, 0x53, 0x4B, 0x5F, 0x49, + 0x44, 0x58, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x1B, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x63, 0x7C, 0x77, 0x7B, + 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, + 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, + 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7, 0x23, 0xC3, + 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, + 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, + 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB, + 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, + 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, + 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, 0x60, 0x81, 0x4F, 0xDC, + 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, + 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, + 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, 0xBA, 0x78, 0x25, 0x2E, + 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, + 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, + 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, 0x8C, 0xA1, 0x89, 0x0D, + 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16, + 0xC6, 0xF8, 0xEE, 0xF6, 0xFF, 0xD6, 0xDE, 0x91, 0x60, 0x02, 0xCE, 0x56, + 0xE7, 0xB5, 0x4D, 0xEC, 0x8F, 0x1F, 0x89, 0xFA, 0xEF, 0xB2, 0x8E, 0xFB, + 0x41, 0xB3, 0x5F, 0x45, 0x23, 0x53, 0xE4, 0x9B, 0x75, 0xE1, 0x3D, 0x4C, + 0x6C, 0x7E, 0xF5, 0x83, 0x68, 0x51, 0xD1, 0xF9, 0xE2, 0xAB, 0x62, 0x2A, + 0x08, 0x95, 0x46, 0x9D, 0x30, 0x37, 0x0A, 0x2F, 0x0E, 0x24, 0x1B, 0xDF, + 0xCD, 0x4E, 0x7F, 0xEA, 0x12, 0x1D, 0x58, 0x34, 0x36, 0xDC, 0xB4, 0x5B, + 0xA4, 0x76, 0xB7, 0x7D, 0x52, 0xDD, 0x5E, 0x13, 0xA6, 0xB9, 0x00, 0xC1, + 0x40, 0xE3, 0x79, 0xB6, 0xD4, 0x8D, 0x67, 0x72, 0x94, 0x98, 0xB0, 0x85, + 0xBB, 0xC5, 0x4F, 0xED, 0x86, 0x9A, 0x66, 0x11, 0x8A, 0xE9, 0x04, 0xFE, + 0xA0, 0x78, 0x25, 0x4B, 0xA2, 0x5D, 0x80, 0x05, 0x3F, 0x21, 0x70, 0xF1, + 0x63, 0x77, 0xAF, 0x42, 0x20, 0xE5, 0xFD, 0xBF, 0x81, 0x18, 0x26, 0xC3, + 0xBE, 0x35, 0x88, 0x2E, 0x93, 0x55, 0xFC, 0x7A, 0xC8, 0xBA, 0x32, 0xE6, + 0xC0, 0x19, 0x9E, 0xA3, 0x44, 0x54, 0x3B, 0x0B, 0x8C, 0xC7, 0x6B, 0x28, + 0xA7, 0xBC, 0x16, 0xAD, 0xDB, 0x64, 0x74, 0x14, 0x92, 0x0C, 0x48, 0xB8, + 0x9F, 0xBD, 0x43, 0xC4, 0x39, 0x31, 0xD3, 0xF2, 0xD5, 0x8B, 0x6E, 0xDA, + 0x01, 0xB1, 0x9C, 0x49, 0xD8, 0xAC, 0xF3, 0xCF, 0xCA, 0xF4, 0x47, 0x10, + 0x6F, 0xF0, 0x4A, 0x5C, 0x38, 0x57, 0x73, 0x97, 0xCB, 0xA1, 0xE8, 0x3E, + 0x96, 0x61, 0x0D, 0x0F, 0xE0, 0x7C, 0x71, 0xCC, 0x90, 0x06, 0xF7, 0x1C, + 0xC2, 0x6A, 0xAE, 0x69, 0x17, 0x99, 0x3A, 0x27, 0xD9, 0xEB, 0x2B, 0x22, + 0xD2, 0xA9, 0x07, 0x33, 0x2D, 0x3C, 0x15, 0xC9, 0x87, 0xAA, 0x50, 0xA5, + 0x03, 0x59, 0x09, 0x1A, 0x65, 0xD7, 0x84, 0xD0, 0x82, 0x29, 0x5A, 0x1E, + 0x7B, 0xA8, 0x6D, 0x2C, 0xA5, 0x84, 0x99, 0x8D, 0x0D, 0xBD, 0xB1, 0x54, + 0x50, 0x03, 0xA9, 0x7D, 0x19, 0x62, 0xE6, 0x9A, 0x45, 0x9D, 0x40, 0x87, + 0x15, 0xEB, 0xC9, 0x0B, 0xEC, 0x67, 0xFD, 0xEA, 0xBF, 0xF7, 0x96, 0x5B, + 0xC2, 0x1C, 0xAE, 0x6A, 0x5A, 0x41, 0x02, 0x4F, 0x5C, 0xF4, 0x34, 0x08, + 0x93, 0x73, 0x53, 0x3F, 0x0C, 0x52, 0x65, 0x5E, 0x28, 0xA1, 0x0F, 0xB5, + 0x09, 0x36, 0x9B, 0x3D, 0x26, 0x69, 0xCD, 0x9F, 0x1B, 0x9E, 0x74, 0x2E, + 0x2D, 0xB2, 0xEE, 0xFB, 0xF6, 0x4D, 0x61, 0xCE, 0x7B, 0x3E, 0x71, 0x97, + 0xF5, 0x68, 0x00, 0x2C, 0x60, 0x1F, 0xC8, 0xED, 0xBE, 0x46, 0xD9, 0x4B, + 0xDE, 0xD4, 0xE8, 0x4A, 0x6B, 0x2A, 0xE5, 0x16, 0xC5, 0xD7, 0x55, 0x94, + 0xCF, 0x10, 0x06, 0x81, 0xF0, 0x44, 0xBA, 0xE3, 0xF3, 0xFE, 0xC0, 0x8A, + 0xAD, 0xBC, 0x48, 0x04, 0xDF, 0xC1, 0x75, 0x63, 0x30, 0x1A, 0x0E, 0x6D, + 0x4C, 0x14, 0x35, 0x2F, 0xE1, 0xA2, 0xCC, 0x39, 0x57, 0xF2, 0x82, 0x47, + 0xAC, 0xE7, 0x2B, 0x95, 0xA0, 0x98, 0xD1, 0x7F, 0x66, 0x7E, 0xAB, 0x83, + 0xCA, 0x29, 0xD3, 0x3C, 0x79, 0xE2, 0x1D, 0x76, 0x3B, 0x56, 0x4E, 0x1E, + 0xDB, 0x0A, 0x6C, 0xE4, 0x5D, 0x6E, 0xEF, 0xA6, 0xA8, 0xA4, 0x37, 0x8B, + 0x32, 0x43, 0x59, 0xB7, 0x8C, 0x64, 0xD2, 0xE0, 0xB4, 0xFA, 0x07, 0x25, + 0xAF, 0x8E, 0xE9, 0x18, 0xD5, 0x88, 0x6F, 0x72, 0x24, 0xF1, 0xC7, 0x51, + 0x23, 0x7C, 0x9C, 0x21, 0xDD, 0xDC, 0x86, 0x85, 0x90, 0x42, 0xC4, 0xAA, + 0xD8, 0x05, 0x01, 0x12, 0xA3, 0x5F, 0xF9, 0xD0, 0x91, 0x58, 0x27, 0xB9, + 0x38, 0x13, 0xB3, 0x33, 0xBB, 0x70, 0x89, 0xA7, 0xB6, 0x22, 0x92, 0x20, + 0x49, 0xFF, 0x78, 0x7A, 0x8F, 0xF8, 0x80, 0x17, 0xDA, 0x31, 0xC6, 0xB8, + 0xC3, 0xB0, 0x77, 0x11, 0xCB, 0xFC, 0xD6, 0x3A, 0x72, 0x63, 0x5F, 0x72, + 0x73, 0x2D, 0x3E, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x73, 0x20, + 0x3E, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x72, 0x73, 0x2D, 0x3E, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, + 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3C, 0x3D, 0x20, 0x46, 0x4F, + 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x48, 0x45, 0x5F, 0x53, + 0x55, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, + 0x6F, 0x64, 0x20, 0x3C, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, + 0x4F, 0x44, 0x5F, 0x48, 0x54, 0x5F, 0x4D, 0x46, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3C, + 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x56, + 0x48, 0x54, 0x00, 0x00, 0x28, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, + 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, + 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x48, 0x54, 0x5F, 0x4D, 0x46, 0x29, 0x20, + 0x7C, 0x7C, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, + 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, + 0x4D, 0x4F, 0x44, 0x5F, 0x48, 0x54, 0x5F, 0x47, 0x46, 0x29, 0x00, 0x00, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, + 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, + 0x56, 0x48, 0x54, 0x20, 0x7C, 0x7C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, + 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x4E, 0x4F, 0x4E, 0x5F, 0x48, + 0x54, 0x00, 0x00, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x6D, + 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, 0x52, 0x4D, 0x41, 0x54, + 0x4D, 0x4F, 0x44, 0x5F, 0x56, 0x48, 0x54, 0x00, 0x28, 0x66, 0x6F, 0x72, + 0x6D, 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, + 0x4F, 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x48, 0x45, 0x5F, + 0x53, 0x55, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x6D, + 0x61, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x20, 0x3D, 0x3D, 0x20, 0x46, 0x4F, + 0x52, 0x4D, 0x41, 0x54, 0x4D, 0x4F, 0x44, 0x5F, 0x4E, 0x4F, 0x4E, 0x5F, + 0x48, 0x54, 0x29, 0x00, 0x70, 0x72, 0x65, 0x5F, 0x74, 0x79, 0x70, 0x65, + 0x20, 0x3D, 0x3D, 0x20, 0x31, 0x00, 0x00, 0x00, 0x73, 0x67, 0x69, 0x20, + 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x20, 0x3D, + 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x32, 0x30, 0x4D, 0x48, 0x5A, 0x00, 0x00, + 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x6D, 0x63, 0x73, 0x20, 0x3E, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, + 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x00, + 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, + 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x00, + 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, + 0x5F, 0x6D, 0x61, 0x70, 0x5F, 0x6C, 0x20, 0x26, 0x20, 0x43, 0x4F, 0x5F, + 0x42, 0x49, 0x54, 0x28, 0x6D, 0x63, 0x73, 0x29, 0x29, 0x00, 0x00, 0x00, + 0x70, 0x72, 0x65, 0x5F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3D, 0x3D, 0x20, + 0x30, 0x00, 0x00, 0x00, 0x73, 0x67, 0x69, 0x20, 0x3C, 0x3D, 0x20, 0x72, + 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x5F, + 0x67, 0x69, 0x00, 0x00, 0x62, 0x77, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, + 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x62, 0x77, 0x5F, 0x6D, 0x61, 0x78, 0x00, + 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, + 0x2D, 0x3E, 0x6E, 0x6F, 0x5F, 0x73, 0x73, 0x00, 0x6D, 0x63, 0x73, 0x20, + 0x3C, 0x3D, 0x20, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6D, 0x63, + 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x00, 0x00, 0x28, 0x72, 0x63, 0x5F, + 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, 0x5F, 0x6D, 0x61, 0x70, + 0x2E, 0x68, 0x74, 0x5B, 0x6E, 0x73, 0x73, 0x5D, 0x20, 0x26, 0x20, 0x43, + 0x4F, 0x5F, 0x42, 0x49, 0x54, 0x28, 0x6D, 0x63, 0x73, 0x29, 0x29, 0x00, + 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x28, 0x37, 0x20, 0x2B, 0x20, + 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x61, 0x74, 0x65, + 0x5F, 0x6D, 0x61, 0x70, 0x2E, 0x76, 0x68, 0x74, 0x20, 0x3E, 0x3E, 0x20, + 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3C, 0x20, 0x31, 0x29, 0x20, 0x26, + 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x56, 0x48, 0x54, 0x5F, 0x4D, 0x43, 0x53, + 0x5F, 0x4D, 0x41, 0x50, 0x5F, 0x4D, 0x53, 0x4B, 0x29, 0x29, 0x00, 0x00, + 0x28, 0x28, 0x6D, 0x63, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x36, 0x29, 0x20, + 0x26, 0x26, 0x20, 0x28, 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, + 0x5F, 0x38, 0x30, 0x4D, 0x48, 0x5A, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, + 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x33, 0x29, 0x20, 0x7C, + 0x7C, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x36, 0x29, + 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x28, 0x28, 0x6D, 0x63, + 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x39, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, + 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x32, 0x30, 0x4D, + 0x48, 0x5A, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, + 0x21, 0x3D, 0x20, 0x32, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, + 0x73, 0x20, 0x21, 0x3D, 0x20, 0x35, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, + 0x30, 0x00, 0x00, 0x00, 0x28, 0x28, 0x6D, 0x63, 0x73, 0x20, 0x3D, 0x3D, + 0x20, 0x39, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x62, 0x77, 0x20, 0x3D, + 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x38, 0x30, 0x4D, 0x48, 0x5A, 0x29, 0x20, + 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x35, + 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, 0x00, 0x28, 0x28, 0x6D, 0x63, + 0x73, 0x20, 0x3D, 0x3D, 0x20, 0x39, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, + 0x62, 0x77, 0x20, 0x3D, 0x3D, 0x20, 0x42, 0x57, 0x5F, 0x31, 0x36, 0x30, + 0x4D, 0x48, 0x5A, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6E, 0x73, 0x73, + 0x20, 0x3D, 0x3D, 0x20, 0x32, 0x29, 0x29, 0x20, 0x3D, 0x3D, 0x20, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x67, 0x69, 0x20, 0x3C, 0x3D, 0x20, 0x32, 0x00, + 0x6D, 0x63, 0x73, 0x20, 0x3C, 0x3D, 0x20, 0x28, 0x37, 0x20, 0x2B, 0x20, + 0x32, 0x20, 0x2A, 0x20, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, + 0x72, 0x61, 0x74, 0x65, 0x5F, 0x6D, 0x61, 0x70, 0x2E, 0x68, 0x65, 0x20, + 0x3E, 0x3E, 0x20, 0x28, 0x6E, 0x73, 0x73, 0x20, 0x3C, 0x3C, 0x20, 0x31, + 0x29, 0x20, 0x26, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x48, 0x45, 0x5F, 0x4D, + 0x43, 0x53, 0x5F, 0x4D, 0x41, 0x50, 0x5F, 0x4D, 0x53, 0x4B, 0x29, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, + 0x6F, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x3E, 0x3D, + 0x20, 0x31, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, + 0x6F, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x3C, 0x3D, + 0x20, 0x52, 0x43, 0x5F, 0x4D, 0x41, 0x58, 0x5F, 0x4E, 0x5F, 0x53, 0x41, + 0x4D, 0x50, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, + 0x73, 0x2D, 0x3E, 0x62, 0x77, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x3D, + 0x20, 0x42, 0x57, 0x5F, 0x31, 0x36, 0x30, 0x4D, 0x48, 0x5A, 0x00, 0x00, + 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, 0x6F, 0x5F, 0x73, 0x73, + 0x20, 0x3C, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, 0x73, 0x74, 0x61, 0x2D, + 0x3E, 0x73, 0x74, 0x61, 0x69, 0x64, 0x20, 0x3C, 0x20, 0x4E, 0x58, 0x5F, + 0x52, 0x45, 0x4D, 0x4F, 0x54, 0x45, 0x5F, 0x53, 0x54, 0x41, 0x5F, 0x4D, + 0x41, 0x58, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6D, + 0x63, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x20, 0x31, 0x32, 0x00, + 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, + 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x48, 0x57, 0x5F, + 0x52, 0x41, 0x54, 0x45, 0x5F, 0x31, 0x31, 0x4D, 0x42, 0x50, 0x53, 0x29, + 0x20, 0x7C, 0x7C, 0x20, 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, + 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x20, 0x3D, 0x3D, + 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, 0x45, 0x54, + 0x5F, 0x4C, 0x45, 0x4E, 0x29, 0x00, 0x00, 0x00, 0x28, 0x72, 0x63, 0x5F, + 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, + 0x78, 0x20, 0x3C, 0x3D, 0x20, 0x48, 0x57, 0x5F, 0x52, 0x41, 0x54, 0x45, + 0x5F, 0x31, 0x31, 0x4D, 0x42, 0x50, 0x53, 0x29, 0x20, 0x7C, 0x7C, 0x20, + 0x28, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, + 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x41, 0x43, + 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, 0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, + 0x29, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6D, + 0x63, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3C, 0x20, 0x31, 0x30, 0x00, + 0x72, 0x63, 0x5F, 0x73, 0x73, 0x2D, 0x3E, 0x6E, 0x6F, 0x5F, 0x73, 0x73, + 0x20, 0x3C, 0x3D, 0x20, 0x33, 0x00, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, + 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, + 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, + 0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, + 0x73, 0x2D, 0x3E, 0x72, 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, + 0x20, 0x3C, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x52, 0x41, 0x54, 0x45, 0x53, + 0x45, 0x54, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x73, + 0x73, 0x2D, 0x3E, 0x62, 0x77, 0x5F, 0x6D, 0x61, 0x78, 0x20, 0x3D, 0x3D, + 0x20, 0x42, 0x57, 0x5F, 0x32, 0x30, 0x4D, 0x48, 0x5A, 0x00, 0x00, 0x00, + 0x25, 0x73, 0x3A, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F, + 0x69, 0x64, 0x3D, 0x25, 0x69, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, + 0x5F, 0x6D, 0x6F, 0x64, 0x3D, 0x25, 0x69, 0x20, 0x70, 0x72, 0x65, 0x5F, + 0x74, 0x79, 0x70, 0x65, 0x3D, 0x25, 0x69, 0x20, 0x73, 0x68, 0x6F, 0x72, + 0x74, 0x5F, 0x67, 0x69, 0x3D, 0x25, 0x69, 0x20, 0x6D, 0x61, 0x78, 0x5F, + 0x62, 0x77, 0x3D, 0x25, 0x69, 0x0A, 0x00, 0x00, 0x25, 0x73, 0x3A, 0x20, + 0x6E, 0x73, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x3D, 0x25, 0x69, 0x20, 0x6D, + 0x63, 0x73, 0x5F, 0x6D, 0x61, 0x78, 0x3D, 0x25, 0x69, 0x20, 0x72, 0x5F, + 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x69, 0x6E, 0x3D, 0x25, 0x69, 0x20, 0x72, + 0x5F, 0x69, 0x64, 0x78, 0x5F, 0x6D, 0x61, 0x78, 0x3D, 0x25, 0x69, 0x20, + 0x6E, 0x6F, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x73, 0x3D, 0x25, + 0x69, 0x0A, 0x00, 0x00, 0x72, 0x63, 0x5F, 0x69, 0x6E, 0x69, 0x74, 0x00, + 0x20, 0x7C, 0x9F, 0x00, 0x20, 0xF3, 0xA0, 0x00, 0xA0, 0x17, 0x52, 0x00, + 0xA0, 0x8E, 0x53, 0x00, 0xF8, 0x52, 0x23, 0x00, 0xF8, 0xC9, 0x24, 0x00, + 0x18, 0xF5, 0x15, 0x00, 0x18, 0x6C, 0x17, 0x00, 0xF9, 0x06, 0x11, 0x00, + 0x62, 0x07, 0x12, 0x00, 0x35, 0x08, 0x14, 0x00, 0xD1, 0x10, 0x04, 0x00, + 0x0A, 0x4E, 0x04, 0x00, 0x7D, 0xC8, 0x04, 0x00, 0x7D, 0x83, 0x08, 0x00, + 0xB1, 0x03, 0x09, 0x00, 0x1A, 0x04, 0x0A, 0x00, 0x68, 0x08, 0x02, 0x00, + 0x05, 0x27, 0x02, 0x00, 0x3F, 0x64, 0x02, 0x00, 0xFE, 0xAC, 0x05, 0x00, + 0x76, 0x02, 0x06, 0x00, 0x67, 0xAD, 0x06, 0x00, 0xF0, 0x5A, 0x01, 0x00, + 0x59, 0x6F, 0x01, 0x00, 0x2A, 0x98, 0x01, 0x00, 0xBE, 0x41, 0x04, 0x00, + 0xD9, 0x81, 0x04, 0x00, 0x0D, 0x02, 0x05, 0x00, 0x34, 0x04, 0x01, 0x00, + 0x83, 0x13, 0x01, 0x00, 0x1F, 0x32, 0x01, 0x00, 0x7F, 0xD6, 0x02, 0x00, + 0x3B, 0x01, 0x03, 0x00, 0xB3, 0x56, 0x03, 0x00, 0x78, 0xAD, 0x00, 0x00, + 0xAC, 0xB7, 0x00, 0x00, 0x15, 0xCC, 0x00, 0x00, 0xDF, 0x20, 0x02, 0x00, + 0xEC, 0x40, 0x02, 0x00, 0x07, 0x81, 0x02, 0x00, 0x1A, 0x82, 0x00, 0x00, + 0xC1, 0x89, 0x00, 0x00, 0x10, 0x99, 0x00, 0x00, 0x55, 0xE4, 0x01, 0x00, + 0xD2, 0x00, 0x02, 0x00, 0xCD, 0x39, 0x02, 0x00, 0xA5, 0x73, 0x00, 0x00, + 0x73, 0x7A, 0x00, 0x00, 0x0E, 0x88, 0x00, 0x00, 0xE6, 0xB3, 0x01, 0x00, + 0x8A, 0xCD, 0x01, 0x00, 0xD2, 0x00, 0x02, 0x00, 0x15, 0x68, 0x00, 0x00, + 0x34, 0x6E, 0x00, 0x00, 0x73, 0x7A, 0x00, 0x00, 0x3F, 0x6B, 0x01, 0x00, + 0x9E, 0x80, 0x01, 0x00, 0x5A, 0xAB, 0x01, 0x00, 0xBC, 0x56, 0x00, 0x00, + 0xD6, 0x5B, 0x00, 0x00, 0x0A, 0x66, 0x00, 0x00, 0xEC, 0x46, 0x01, 0x00, + 0x27, 0x5A, 0x01, 0x00, 0x9E, 0x80, 0x01, 0x00, 0x11, 0x4E, 0x00, 0x00, + 0xA8, 0x52, 0x00, 0x00, 0xD7, 0x5B, 0x00, 0x00, 0x99, 0x22, 0x01, 0x00, + 0xB1, 0x33, 0x01, 0x00, 0xE1, 0x55, 0x01, 0x00, 0x63, 0x45, 0x00, 0x00, + 0x78, 0x49, 0x00, 0x00, 0xA2, 0x51, 0x00, 0x00, 0x8A, 0x05, 0x01, 0x00, + 0xEC, 0x14, 0x01, 0x00, 0xB1, 0x33, 0x01, 0x00, 0x74, 0x3E, 0x00, 0x00, + 0x21, 0x42, 0x00, 0x00, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, + 0x3C, 0x5C, 0x29, 0x00, 0xB4, 0xF4, 0x2D, 0x00, 0x00, 0x88, 0x13, 0x00, + 0x1E, 0xAE, 0x14, 0x00, 0x5A, 0xFA, 0x16, 0x00, 0x55, 0x05, 0x0D, 0x00, + 0x69, 0xC9, 0x0D, 0x00, 0x91, 0x51, 0x0F, 0x00, 0x00, 0xC4, 0x09, 0x00, + 0x0F, 0x57, 0x0A, 0x00, 0x2D, 0x7D, 0x0B, 0x00, 0xAA, 0x82, 0x06, 0x00, + 0xB4, 0xE4, 0x06, 0x00, 0xC8, 0xA8, 0x07, 0x00, 0x00, 0xE2, 0x04, 0x00, + 0x87, 0x2B, 0x05, 0x00, 0x96, 0xBE, 0x05, 0x00, 0x1C, 0x57, 0x04, 0x00, + 0x78, 0x98, 0x04, 0x00, 0x30, 0x1B, 0x05, 0x00, 0x00, 0xE8, 0x03, 0x00, + 0xD2, 0x22, 0x04, 0x00, 0x78, 0x98, 0x04, 0x00, 0x55, 0x41, 0x03, 0x00, + 0x5A, 0x72, 0x03, 0x00, 0x64, 0xD4, 0x03, 0x00, 0x00, 0xEE, 0x02, 0x00, + 0x1E, 0x1A, 0x03, 0x00, 0x5A, 0x72, 0x03, 0x00, 0xAA, 0x9A, 0x02, 0x00, + 0xE1, 0xC1, 0x02, 0x00, 0x50, 0x10, 0x03, 0x00, 0x00, 0x58, 0x02, 0x00, + 0x4B, 0x7B, 0x02, 0x00, 0xE1, 0xC1, 0x02, 0x00, 0x00, 0x04, 0xA6, 0x00, + 0x00, 0xC8, 0xAF, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x02, 0x53, 0x00, + 0x00, 0xE4, 0x57, 0x00, 0x00, 0xA8, 0x61, 0x00, 0xAA, 0x56, 0x37, 0x00, + 0x00, 0x98, 0x3A, 0x00, 0xAA, 0x1A, 0x41, 0x00, 0x00, 0x81, 0x29, 0x00, + 0x00, 0xF2, 0x2B, 0x00, 0x00, 0xD4, 0x30, 0x00, 0x55, 0xAB, 0x1B, 0x00, + 0x00, 0x4C, 0x1D, 0x00, 0x55, 0x8D, 0x20, 0x00, 0x80, 0xC0, 0x14, 0x00, + 0x00, 0xF9, 0x15, 0x00, 0x00, 0x6A, 0x18, 0x00, 0x38, 0x72, 0x12, 0x00, + 0x00, 0x88, 0x13, 0x00, 0x8E, 0xB3, 0x15, 0x00, 0x00, 0x9A, 0x10, 0x00, + 0x00, 0x94, 0x11, 0x00, 0x00, 0x88, 0x13, 0x00, 0xAA, 0xD5, 0x0D, 0x00, + 0x00, 0xA6, 0x0E, 0x00, 0xAA, 0x46, 0x10, 0x00, 0x80, 0x73, 0x0C, 0x00, + 0x00, 0x2F, 0x0D, 0x00, 0x00, 0xA6, 0x0E, 0x00, 0x55, 0x11, 0x0B, 0x00, + 0x00, 0xB8, 0x0B, 0x00, 0x55, 0x05, 0x0D, 0x00, 0x00, 0xF6, 0x09, 0x00, + 0x00, 0x8C, 0x0A, 0x00, 0x00, 0xB8, 0x0B, 0x00, 0x00, 0x02, 0x53, 0x00, + 0x00, 0xE4, 0x57, 0x00, 0x00, 0xA8, 0x61, 0x00, 0x00, 0x81, 0x29, 0x00, + 0x00, 0xF2, 0x2B, 0x00, 0x00, 0xD4, 0x30, 0x00, 0x55, 0xAB, 0x1B, 0x00, + 0x00, 0x4C, 0x1D, 0x00, 0x55, 0x8D, 0x20, 0x00, 0x80, 0xC0, 0x14, 0x00, + 0x00, 0xF9, 0x15, 0x00, 0x00, 0x6A, 0x18, 0x00, 0xAA, 0xD5, 0x0D, 0x00, + 0x00, 0xA6, 0x0E, 0x00, 0xAA, 0x46, 0x10, 0x00, 0x40, 0x60, 0x0A, 0x00, + 0x80, 0xFC, 0x0A, 0x00, 0x00, 0x35, 0x0C, 0x00, 0x1C, 0x39, 0x09, 0x00, + 0x00, 0xC4, 0x09, 0x00, 0xC7, 0xD9, 0x0A, 0x00, 0x00, 0x4D, 0x08, 0x00, + 0x00, 0xCA, 0x08, 0x00, 0x00, 0xC4, 0x09, 0x00, 0xD5, 0xEA, 0x06, 0x00, + 0x00, 0x53, 0x07, 0x00, 0x55, 0x23, 0x08, 0x00, 0xC0, 0x39, 0x06, 0x00, + 0x80, 0x97, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0xAA, 0x88, 0x05, 0x00, + 0x00, 0xDC, 0x05, 0x00, 0xAA, 0x82, 0x06, 0x00, 0x00, 0xFB, 0x04, 0x00, + 0x00, 0x46, 0x05, 0x00, 0x00, 0xDC, 0x05, 0x00, 0x3B, 0x89, 0x16, 0x00, + 0x4F, 0x48, 0x14, 0x00, 0xC7, 0xD9, 0x0A, 0x00, 0x00, 0xC4, 0x09, 0x00, + 0x0D, 0x02, 0x05, 0x00, 0xD9, 0x81, 0x04, 0x00, 0x07, 0x81, 0x02, 0x00, + 0xEC, 0x40, 0x02, 0x00, 0x9E, 0x44, 0x0B, 0x00, 0x27, 0x24, 0x0A, 0x00, + 0xE4, 0x6C, 0x05, 0x00, 0x00, 0xE2, 0x04, 0x00, 0x07, 0x81, 0x02, 0x00, + 0xEC, 0x40, 0x02, 0x00, 0x83, 0x40, 0x01, 0x00, 0x76, 0x20, 0x01, 0x00, + 0x14, 0x83, 0x07, 0x00, 0xC5, 0xC2, 0x06, 0x00, 0xED, 0x9D, 0x03, 0x00, + 0x55, 0x41, 0x03, 0x00, 0x5A, 0xAB, 0x01, 0x00, 0x9E, 0x80, 0x01, 0x00, + 0xAD, 0xD5, 0x00, 0x00, 0x4F, 0xC0, 0x00, 0x00, 0x4F, 0xA2, 0x05, 0x00, + 0x14, 0x12, 0x05, 0x00, 0x72, 0xB6, 0x02, 0x00, 0x00, 0x71, 0x02, 0x00, + 0x83, 0x40, 0x01, 0x00, 0x76, 0x20, 0x01, 0x00, 0x42, 0xA0, 0x00, 0x00, + 0x3B, 0x90, 0x00, 0x00, 0x8A, 0xC1, 0x03, 0x00, 0x62, 0x61, 0x03, 0x00, + 0xF7, 0xCE, 0x01, 0x00, 0xAB, 0xA0, 0x01, 0x00, 0xAD, 0xD5, 0x00, 0x00, + 0x4F, 0xC0, 0x00, 0x00, 0xD6, 0x6A, 0x00, 0x00, 0x27, 0x60, 0x00, 0x00, + 0x27, 0xD1, 0x02, 0x00, 0x0A, 0x89, 0x02, 0x00, 0x39, 0x5B, 0x01, 0x00, + 0x80, 0x38, 0x01, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3B, 0x90, 0x00, 0x00, + 0x21, 0x50, 0x00, 0x00, 0x1E, 0x48, 0x00, 0x00, 0x07, 0x81, 0x02, 0x00, + 0xEC, 0x40, 0x02, 0x00, 0xA4, 0x34, 0x01, 0x00, 0xC7, 0x15, 0x01, 0x00, + 0x73, 0x8E, 0x00, 0x00, 0x35, 0x80, 0x00, 0x00, 0x3A, 0x47, 0x00, 0x00, + 0x1A, 0x40, 0x00, 0x00, 0xEC, 0x40, 0x02, 0x00, 0x3B, 0x07, 0x02, 0x00, + 0xC7, 0x15, 0x01, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x35, 0x80, 0x00, 0x00, + 0x62, 0x73, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, 0xB1, 0x39, 0x00, 0x00, + 0xC5, 0xE0, 0x01, 0x00, 0xB1, 0xB0, 0x01, 0x00, 0x7B, 0xE7, 0x00, 0x00, + 0x55, 0xD0, 0x00, 0x00, 0xD6, 0x6A, 0x00, 0x00, 0x27, 0x60, 0x00, 0x00, + 0x6B, 0x35, 0x00, 0x00, 0x14, 0x30, 0x00, 0x00, 0xB1, 0xB0, 0x01, 0x00, + 0x6C, 0x85, 0x01, 0x00, 0x55, 0xD0, 0x00, 0x00, 0x80, 0xBB, 0x00, 0x00, + 0x27, 0x60, 0x00, 0x00, 0x8A, 0x56, 0x00, 0x00, 0x14, 0x30, 0x00, 0x00, + 0x45, 0x2B, 0x00, 0x00, 0x00, 0x6A, 0x18, 0x00, 0xE0, 0x4B, 0x10, 0x00, + 0x00, 0x35, 0x0C, 0x00, 0xC0, 0x2D, 0x08, 0x00, 0x80, 0x1A, 0x06, 0x00, + 0xE0, 0x16, 0x04, 0x00, 0x40, 0x0D, 0x03, 0x00, 0x20, 0xBF, 0x02, 0x00, + 0x24, 0xCE, 0x15, 0x00, 0xB4, 0xCE, 0x15, 0x00, 0x94, 0xCD, 0x15, 0x00, + 0xB8, 0xD0, 0x15, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, + 0x39, 0x4B, 0x15, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x15, 0x4C, 0x15, 0x00, + 0x01, 0x10, 0x00, 0x00, 0xD5, 0x4B, 0x15, 0x00, 0x61, 0x76, 0x61, 0x69, + 0x6C, 0x20, 0x3E, 0x3D, 0x20, 0x42, 0x43, 0x4E, 0x5F, 0x46, 0x49, 0x58, + 0x45, 0x44, 0x5F, 0x53, 0x49, 0x5A, 0x45, 0x5F, 0x46, 0x49, 0x45, 0x4C, + 0x44, 0x53, 0x5F, 0x4C, 0x45, 0x4E, 0x00, 0x00, 0x72, 0x65, 0x70, 0x6F, + 0x72, 0x74, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3C, 0x3D, 0x20, 0x62, 0x75, + 0x66, 0x5F, 0x6C, 0x65, 0x6E, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x6F, + 0x72, 0x74, 0x73, 0x5F, 0x6C, 0x65, 0x6E, 0x20, 0x3E, 0x20, 0x30, 0x00, + 0x21, 0x72, 0x6D, 0x5F, 0x6E, 0x6F, 0x5F, 0x6D, 0x6F, 0x72, 0x65, 0x5F, + 0x6D, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x5F, 0x74, 0x6F, 0x5F, 0x72, + 0x65, 0x70, 0x6F, 0x72, 0x74, 0x28, 0x29, 0x20, 0x7C, 0x7C, 0x20, 0x28, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, 0x3E, 0x72, 0x65, 0x70, + 0x6F, 0x72, 0x74, 0x5F, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x3D, 0x3D, 0x20, + 0x30, 0x29, 0x00, 0x00, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, + 0x3E, 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x63, 0x6E, 0x74, 0x20, 0x3C, 0x3D, + 0x20, 0x43, 0x4F, 0x5F, 0x41, 0x52, 0x52, 0x41, 0x59, 0x5F, 0x53, 0x49, + 0x5A, 0x45, 0x28, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, 0x3E, + 0x63, 0x68, 0x61, 0x6E, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x29, 0x00, 0x00, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2D, 0x3E, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x3D, 0x3D, 0x20, 0x4D, 0x41, 0x43, 0x5F, 0x4D, 0x45, 0x41, + 0x53, 0x5F, 0x52, 0x45, 0x51, 0x5F, 0x54, 0x59, 0x50, 0x45, 0x5F, 0x42, + 0x45, 0x41, 0x43, 0x4F, 0x4E, 0x00, 0x00, 0x00, 0x72, 0x6D, 0x5F, 0x65, + 0x6E, 0x76, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5F, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x3E, 0x3D, 0x20, 0x30, 0x00, 0x00, + 0x64, 0x69, 0x20, 0x53, 0x65, 0x70, 0x20, 0x31, 0x33, 0x20, 0x32, 0x30, + 0x32, 0x32, 0x20, 0x31, 0x30, 0x3A, 0x34, 0x37, 0x3A, 0x31, 0x34, 0x20, + 0x2D, 0x20, 0x67, 0x37, 0x34, 0x32, 0x30, 0x33, 0x31, 0x37, 0x31, 0x00, + 0x76, 0x36, 0x2E, 0x34, 0x2E, 0x33, 0x2E, 0x31, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xB5, 0x00, 0xBF, 0xF8, 0xBC, 0x08, 0xBC, 0x9E, 0x46, 0x70, 0x47, + 0xF8, 0xB5, 0x00, 0xBF, 0xF8, 0xBC, 0x08, 0xBC, 0x9E, 0x46, 0x70, 0x47, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x04, 0x17, 0x00, + 0xDC, 0x04, 0x17, 0x00, 0x44, 0x05, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0E, 0x33, 0xCD, 0xAB, 0x34, 0x12, 0x6D, 0xE6, 0xEC, 0xDE, 0x05, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x04, 0x0E, 0x20, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x5B, 0x4B, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x32, 0x7B, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, + 0x26, 0x00, 0x00, 0xF8, 0x11, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x19, 0x48, + 0x20, 0x00, 0x00, 0x9C, 0x91, 0x01, 0x00, 0x08, 0x00, 0x80, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x0A, 0x11, 0x44, 0x10, 0x08, 0x00, 0x80, 0x01, 0x38, + 0x41, 0x46, 0x00, 0x0C, 0x14, 0x00, 0xD0, 0x08, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x01, 0x17, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x3C, 0x1A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x38, + 0x01, 0x00, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x08, 0x38, + 0x50, 0x00, 0x00, 0x14, 0x20, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x40, + 0x7B, 0x00, 0x00, 0xA4, 0x01, 0x01, 0x00, 0x00, 0x9F, 0x33, 0x00, 0x30, + 0x00, 0x07, 0x00, 0x41, 0x20, 0x44, 0x10, 0x04, 0x00, 0x00, 0x00, 0x90, + 0x00, 0x00, 0x00, 0x49, 0x2F, 0x84, 0x0E, 0xF0, 0x2C, 0x84, 0x0E, 0xEC, + 0x2C, 0x84, 0x0E, 0xEC, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x01, 0x01, 0x00, 0x48, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x02, 0x02, 0x00, 0x48, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x46, 0x11, 0x00, 0x00, 0x04, 0x06, 0x00, 0x01, 0x58, + 0x72, 0x04, 0x04, 0x3D, 0x39, 0x44, 0x20, 0xDC, 0xD2, 0xD4, 0x1D, 0x08, + 0x06, 0x00, 0x0A, 0x48, 0xDC, 0x44, 0x20, 0xDC, 0x3C, 0xD4, 0x1D, 0x08, + 0x04, 0x00, 0x05, 0x38, 0xC3, 0xF1, 0xF1, 0x0E, 0xDC, 0x44, 0x20, 0x34, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x42, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x45, 0x44, 0x10, 0x04, + 0x00, 0x80, 0x00, 0x38, 0x9C, 0x10, 0x00, 0x22, 0x48, 0x44, 0x10, 0x08, + 0x00, 0x80, 0x00, 0x38, 0x9C, 0x50, 0xD4, 0x23, 0x17, 0x44, 0x10, 0x08, + 0x00, 0xA0, 0x00, 0x90, 0x00, 0x00, 0x00, 0x32, 0x63, 0x00, 0x00, 0x18, + 0x60, 0x00, 0x00, 0x14, 0x51, 0x00, 0x00, 0x1C, 0x57, 0x00, 0x00, 0x10, + 0x00, 0x80, 0x02, 0x38, 0x01, 0x00, 0x00, 0x0C, 0x66, 0x44, 0xD0, 0x08, + 0x0F, 0x20, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x38, 0x01, 0x26, 0x00, 0x0C, 0x5A, 0x44, 0xD0, 0x08, + 0x00, 0x00, 0x00, 0x30, 0x30, 0x02, 0x02, 0x3D, 0x5D, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x3E, 0x66, 0x00, 0x00, 0x04, + 0x00, 0x80, 0x02, 0x38, 0x01, 0x16, 0x00, 0x0C, 0x66, 0x44, 0x20, 0x34, + 0x00, 0x80, 0x02, 0x38, 0x01, 0x0A, 0x00, 0x0C, 0x66, 0x44, 0x20, 0x34, + 0x04, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0xFF, 0x7B, 0x00, 0x00, 0x08, + 0x2F, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x26, 0x6C, 0x00, 0x00, 0x08, + 0xAF, 0x04, 0x04, 0x38, 0x10, 0x10, 0x19, 0x1F, 0x6F, 0x00, 0x00, 0x08, + 0xAF, 0x0C, 0x00, 0x20, 0x71, 0x00, 0x00, 0x04, 0xAF, 0x0C, 0x00, 0x60, + 0x79, 0x00, 0x70, 0x18, 0x77, 0x00, 0x00, 0x14, 0x75, 0x00, 0x00, 0x10, + 0xAF, 0x0C, 0x14, 0x28, 0x84, 0x00, 0xB0, 0x09, 0xAF, 0x0C, 0x0A, 0x28, + 0x84, 0x00, 0xB0, 0x09, 0xAF, 0x0C, 0x06, 0x28, 0x84, 0x00, 0xB0, 0x09, + 0x86, 0x80, 0x04, 0x28, 0x7D, 0x00, 0x00, 0x08, 0x86, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x80, 0x22, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x01, 0xF1, 0xF1, 0x0E, 0x83, 0x48, 0x00, 0x36, 0x00, 0x00, 0x02, 0x28, + 0x85, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x02, 0x38, 0x31, 0x04, 0x04, 0x3D, + 0x88, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x05, 0x38, 0x21, 0x18, 0x24, 0x1F, + 0x8B, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x30, 0x21, 0x30, 0x16, 0xA0, + 0x8E, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, 0x12, 0x00, 0xF1, 0x0E, + 0x91, 0x00, 0x00, 0x34, 0xCC, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x50, + 0x94, 0x00, 0x00, 0x04, 0xFE, 0x95, 0x00, 0x38, 0x00, 0x00, 0x01, 0x32, + 0x97, 0x00, 0x00, 0x04, 0xFE, 0x1F, 0x00, 0x50, 0x00, 0x00, 0x01, 0x5A, + 0x9B, 0x98, 0xC9, 0x6D, 0xB9, 0xD4, 0x19, 0xFC, 0x86, 0x01, 0x00, 0x30, + 0x73, 0x03, 0x84, 0x3D, 0x9E, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x0A, 0xA1, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, + 0x00, 0x00, 0xC0, 0x22, 0xA4, 0x00, 0x00, 0x04, 0x8E, 0x02, 0x00, 0x90, + 0x01, 0x00, 0x01, 0x32, 0xAA, 0x00, 0x40, 0x8E, 0xB0, 0x00, 0x00, 0xC8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x30, + 0x01, 0x00, 0x01, 0x32, 0xCB, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0xB6, 0x19, 0x00, 0x30, + 0x00, 0x00, 0x01, 0x32, 0xB3, 0x00, 0x00, 0x04, 0xB6, 0x19, 0x00, 0x30, + 0x31, 0x04, 0x04, 0x3D, 0xB6, 0x00, 0x00, 0x04, 0xB6, 0x19, 0x00, 0x30, + 0x00, 0x00, 0x80, 0x22, 0x97, 0x00, 0x00, 0x04, 0x86, 0x01, 0x00, 0x30, + 0x73, 0x04, 0x84, 0x3D, 0xBC, 0x00, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x03, 0x29, 0xBF, 0x00, 0x00, 0x04, 0x8E, 0x02, 0xEE, 0x9A, + 0x00, 0x01, 0x01, 0x32, 0xC5, 0x00, 0x00, 0x7C, 0xB0, 0x00, 0x00, 0xCC, + 0xB0, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x30, + 0x00, 0x01, 0x01, 0x32, 0xC8, 0x00, 0x00, 0x04, 0x8E, 0x02, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0x8E, 0x03, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x29, 0x11, 0x50, 0x04, 0x94, 0x35, 0x00, 0x00, 0xC0, + 0x06, 0x00, 0x01, 0x38, 0x72, 0x04, 0x04, 0x3D, 0xD2, 0x00, 0x00, 0x08, + 0x04, 0x00, 0x00, 0x30, 0x41, 0xF1, 0xF1, 0x0E, 0xD5, 0x00, 0x00, 0x34, + 0x04, 0x00, 0x04, 0x28, 0xD7, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x28, + 0xD9, 0x00, 0x00, 0x08, 0x8E, 0x01, 0x00, 0x30, 0x52, 0x00, 0xF1, 0x0E, + 0xDC, 0x00, 0x00, 0x34, 0x8E, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, + 0x11, 0x50, 0x04, 0x94, 0x00, 0x00, 0x02, 0x38, 0x00, 0x00, 0x00, 0x32, + 0xE2, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x60, 0xE6, 0x00, 0x00, 0xD8, + 0xE9, 0x00, 0x00, 0xD4, 0xEC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x21, 0xF1, 0xF1, 0x0E, 0xEF, 0x48, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, + 0x21, 0x24, 0x00, 0x0C, 0xEF, 0x48, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, + 0x21, 0x00, 0x00, 0x0C, 0xEF, 0x48, 0x00, 0x36, 0x00, 0x00, 0x02, 0x28, + 0x7B, 0x00, 0x00, 0x08, 0xFE, 0x1E, 0x00, 0x50, 0x00, 0x00, 0x01, 0x5A, + 0xF5, 0x98, 0xC9, 0x6D, 0xF8, 0xD4, 0x19, 0xFC, 0x8E, 0x02, 0x00, 0x30, + 0x40, 0x00, 0x00, 0x32, 0xFB, 0x00, 0x00, 0x04, 0x8E, 0x02, 0xEE, 0x3A, + 0x80, 0x00, 0x00, 0x32, 0xFB, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, + 0x01, 0xF1, 0xF1, 0x0E, 0xFE, 0x48, 0x00, 0x36, 0x00, 0x00, 0x02, 0x28, + 0x00, 0x01, 0x00, 0x08, 0x8E, 0x00, 0x02, 0x38, 0x31, 0x04, 0x04, 0x3D, + 0x03, 0x01, 0x00, 0x08, 0x8E, 0x00, 0x05, 0x38, 0x21, 0x18, 0x24, 0x1F, + 0x06, 0x01, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x30, 0x21, 0x30, 0x16, 0xA0, + 0x09, 0x01, 0x00, 0x04, 0x8E, 0x00, 0x00, 0x30, 0x12, 0x00, 0xF1, 0x0E, + 0x0C, 0x01, 0x00, 0x34, 0xF6, 0x14, 0x00, 0x30, 0x00, 0x00, 0x01, 0x32, + 0x14, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x11, 0x01, 0x00, 0x04, + 0xEC, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x50, 0xF1, 0x00, 0x00, 0x04, + 0xF6, 0x14, 0x00, 0x30, 0x00, 0x00, 0x03, 0x32, 0x17, 0x01, 0x00, 0x04, + 0x86, 0x10, 0x00, 0x30, 0x73, 0x04, 0x84, 0x3D, 0x1A, 0x01, 0x00, 0x04, + 0x8E, 0x10, 0x00, 0x50, 0x00, 0x00, 0xC0, 0x22, 0xCB, 0xC0, 0x47, 0x8E, + 0x1E, 0x01, 0x30, 0xCB, 0xB6, 0x19, 0x00, 0x30, 0x00, 0x00, 0x04, 0x32, + 0x21, 0x01, 0x00, 0x04, 0xB6, 0x19, 0x00, 0x30, 0x31, 0x04, 0x04, 0x3D, + 0x24, 0x01, 0x00, 0x04, 0xB6, 0x19, 0x00, 0x30, 0x00, 0x00, 0x80, 0x22, + 0x11, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x30, 0x73, 0x04, 0x84, 0x3D, + 0x2D, 0x01, 0x00, 0x04, 0x8E, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x29, + 0x11, 0x50, 0x04, 0x94, 0x31, 0x01, 0x00, 0xC0, 0x0E, 0x80, 0x0C, 0x38, + 0x00, 0x00, 0x00, 0xFF, 0x34, 0x01, 0x00, 0x08, 0x04, 0x00, 0x00, 0x30, + 0x03, 0xF1, 0xF1, 0x0F, 0x37, 0x01, 0x00, 0x34, 0x00, 0x00, 0x02, 0x28, + 0x39, 0x01, 0x00, 0x08, 0x8E, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, + 0x11, 0x50, 0x04, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x58, 0x72, 0x04, 0x04, 0x3D, + 0x43, 0x45, 0x20, 0xDC, 0xD2, 0xD4, 0x1D, 0x08, 0x06, 0x00, 0x0A, 0x48, + 0xDC, 0x44, 0x20, 0xDC, 0x46, 0xD5, 0x1D, 0x08, 0x04, 0x00, 0x05, 0x38, + 0x41, 0xF1, 0xF1, 0x0E, 0xDC, 0x44, 0x20, 0x34, 0x0E, 0x80, 0x02, 0x28, + 0xDC, 0x00, 0x00, 0x08, 0x35, 0x00, 0x00, 0x48, 0x4A, 0x01, 0x00, 0x04, + 0x8F, 0x63, 0x96, 0x78, 0x0F, 0x00, 0x00, 0x41, 0x4F, 0x01, 0x00, 0x8C, + 0xC4, 0x50, 0x04, 0x08, 0x74, 0x45, 0x10, 0x90, 0x0F, 0x62, 0xC8, 0x88, + 0x5A, 0x01, 0x00, 0xC0, 0x74, 0x45, 0x10, 0x90, 0x54, 0x45, 0x10, 0x08, + 0x57, 0x45, 0x10, 0x94, 0x8F, 0x62, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, + 0x7A, 0x51, 0x04, 0x94, 0x8F, 0x63, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, + 0x7A, 0x45, 0x10, 0x04, 0x05, 0xE0, 0x00, 0x38, 0x31, 0x01, 0x01, 0x3D, + 0x5D, 0x45, 0x10, 0x08, 0x0F, 0x60, 0x32, 0xA8, 0x74, 0x45, 0x10, 0x90, + 0x54, 0x01, 0x00, 0x08, 0x57, 0x45, 0x10, 0x94, 0x67, 0x45, 0x10, 0xC6, + 0x63, 0x55, 0x18, 0xC4, 0x0F, 0xE0, 0x02, 0x58, 0x07, 0xEA, 0xEE, 0x0F, + 0x74, 0x01, 0x00, 0x80, 0x6B, 0x45, 0x20, 0x34, 0x0F, 0xE0, 0x02, 0x58, + 0x07, 0xEA, 0xEE, 0x0E, 0x74, 0x01, 0x00, 0x80, 0x6B, 0x45, 0x20, 0x34, + 0x00, 0x40, 0x00, 0x30, 0x01, 0x00, 0x00, 0x33, 0x6E, 0x01, 0x00, 0x04, + 0x05, 0x40, 0x03, 0x38, 0x73, 0x03, 0x03, 0x3D, 0x71, 0x01, 0x00, 0x08, + 0x07, 0x60, 0x00, 0x30, 0x00, 0x00, 0x00, 0x33, 0x74, 0x01, 0x00, 0x04, + 0x8F, 0x60, 0x00, 0x30, 0x00, 0x00, 0x00, 0x29, 0x77, 0x51, 0x04, 0x94, + 0x8F, 0x60, 0x00, 0x40, 0x7D, 0x45, 0x10, 0xA0, 0x7A, 0x45, 0x10, 0x04, + 0x8F, 0x60, 0x00, 0x30, 0x01, 0x01, 0x00, 0x64, 0x11, 0x44, 0x10, 0x04, + 0x8F, 0x60, 0x00, 0x30, 0x01, 0x01, 0x00, 0x64, 0x80, 0x45, 0x10, 0x04, + 0x8F, 0x61, 0x00, 0x30, 0x01, 0x00, 0x00, 0x42, 0x83, 0x01, 0x00, 0x04, + 0x00, 0x80, 0x02, 0x38, 0x00, 0x00, 0x00, 0x32, 0x86, 0x45, 0x10, 0x08, + 0x8F, 0x61, 0x0A, 0x28, 0x88, 0x01, 0x00, 0x08, 0x8F, 0x61, 0x0A, 0x48, + 0x8B, 0x01, 0x00, 0xBC, 0x8E, 0x01, 0x00, 0x08, 0x8F, 0x61, 0x00, 0x30, + 0x01, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x04, 0x8F, 0x61, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x04, 0x8F, 0x00, 0x00, 0x30, + 0x0F, 0xED, 0xEA, 0x0E, 0x94, 0x01, 0x00, 0x36, 0x00, 0x80, 0x03, 0x38, + 0x00, 0x00, 0x00, 0x34, 0x97, 0x01, 0x00, 0x08, 0x05, 0x80, 0x02, 0x38, + 0x02, 0x00, 0x01, 0x29, 0x9A, 0x01, 0x00, 0x08, 0x8F, 0x02, 0x00, 0x30, + 0x9C, 0x20, 0x00, 0x22, 0x9D, 0x01, 0x00, 0x04, 0x8F, 0x02, 0x00, 0x30, + 0x9C, 0x50, 0xD4, 0x23, 0xA0, 0x01, 0x00, 0x04, 0x8F, 0x02, 0x14, 0x28, + 0xA2, 0x01, 0x00, 0x08, 0x8F, 0x02, 0x00, 0x30, 0x01, 0x02, 0x01, 0x43, + 0xA5, 0x01, 0x00, 0x04, 0x8F, 0x12, 0x00, 0x30, 0x00, 0x01, 0x00, 0x32, + 0xA8, 0x01, 0x00, 0x04, 0x8F, 0x13, 0xEE, 0x5A, 0x0F, 0x00, 0x00, 0x41, + 0xAC, 0x01, 0x00, 0x7C, 0xF9, 0x00, 0x00, 0x08, 0x8F, 0x13, 0x2C, 0x59, + 0x00, 0x00, 0x00, 0x29, 0xB0, 0x01, 0x00, 0x8C, 0xF9, 0x00, 0x00, 0x08, + 0x8F, 0x13, 0x00, 0x20, 0x11, 0x50, 0x04, 0x94, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x76, 0x76, 0x00, + 0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, + 0x70, 0xF8, 0xF8, 0x1D, 0x72, 0x6E, 0x6E, 0x00, 0x69, 0xF8, 0xF8, 0x1D, + 0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, + 0x7B, 0x76, 0x76, 0x00, 0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, + 0x70, 0xF8, 0xF8, 0x1D, 0x70, 0xF8, 0xF8, 0x1D, 0x85, 0x7E, 0x7E, 0x00, + 0x76, 0xF8, 0xF4, 0x1D, 0x76, 0xF8, 0xF4, 0x1D, 0x76, 0xF8, 0xF4, 0x1D, + 0x76, 0xF8, 0xF8, 0x1D, 0x8A, 0x81, 0x81, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, + 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, + 0x8D, 0x81, 0x81, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, + 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x8A, 0x81, 0x81, 0x00, + 0x7B, 0xF8, 0xF8, 0x1D, 0x7C, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, + 0x7B, 0xF8, 0xF8, 0x1D, 0x40, 0x7E, 0x7E, 0x00, 0x7B, 0xF8, 0xF8, 0x1D, + 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, 0x7B, 0xF8, 0xF8, 0x1D, + 0x92, 0x8B, 0x8B, 0x00, 0x87, 0xF8, 0xF8, 0x1D, 0x89, 0xF8, 0xF8, 0x1D, + 0x87, 0xF8, 0xF8, 0x1D, 0x87, 0xF8, 0xF8, 0x1D, 0x55, 0x51, 0x51, 0x00, + 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x89, 0xF8, 0xF8, 0x1D, + 0x89, 0xF8, 0xF8, 0x1D, 0x54, 0x51, 0x51, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x88, 0xF8, 0xF8, 0x1D, 0x88, 0xF8, 0xF8, 0x1D, + 0x53, 0x4F, 0x4F, 0x00, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, + 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x53, 0x4F, 0x4F, 0x00, + 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, + 0x4A, 0xF8, 0xF8, 0x1D, 0x53, 0x4F, 0x4F, 0x00, 0x4A, 0xF8, 0xF8, 0x1D, + 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, + 0x53, 0x4E, 0x4E, 0x00, 0x49, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, + 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x52, 0x4D, 0x4D, 0x00, + 0x47, 0xF8, 0xF8, 0x1D, 0x47, 0xF8, 0xF8, 0x1D, 0x47, 0xF8, 0xF8, 0x1D, + 0x47, 0xF8, 0xF8, 0x1D, 0x55, 0x4F, 0x4F, 0x00, 0x4B, 0xF8, 0xF8, 0x1D, + 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, + 0x53, 0x4E, 0x4E, 0x00, 0x49, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, + 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x4D, 0x49, 0x49, 0x00, + 0x44, 0xF8, 0xF8, 0x1D, 0x44, 0xF8, 0xF8, 0x1D, 0x44, 0xF8, 0xF8, 0x1D, + 0x44, 0xF8, 0xF8, 0x1D, 0x8F, 0x51, 0x51, 0x00, 0x49, 0xF8, 0xF8, 0x1D, + 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, 0x48, 0xF8, 0xF8, 0x1D, + 0x77, 0x42, 0x42, 0x00, 0x3F, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, + 0x3C, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, 0x75, 0x42, 0x42, 0x00, + 0x9E, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, 0x3C, 0xF8, 0xF8, 0x1D, + 0x3C, 0xF8, 0xF8, 0x1D, 0x5C, 0x55, 0x55, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, + 0x5C, 0x53, 0x53, 0x00, 0x4C, 0xF8, 0xF8, 0x1D, 0x4B, 0xF8, 0xF8, 0x1D, + 0x4B, 0xF8, 0xF8, 0x1D, 0x4B, 0xF8, 0xF8, 0x1D, 0x9E, 0xF8, 0xF8, 0x00, + 0x8C, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, + 0x4A, 0xF8, 0xF8, 0x1D, 0x40, 0x89, 0x89, 0x00, 0x46, 0xF8, 0xF8, 0x18, + 0x45, 0xF8, 0xCF, 0x18, 0x44, 0xF8, 0xCF, 0x18, 0x44, 0xF8, 0xCF, 0x18, + 0x5F, 0x56, 0x56, 0x00, 0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, + 0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, 0x5E, 0x55, 0x55, 0x00, + 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, + 0x4E, 0xF8, 0xF8, 0x1D, 0x5F, 0x56, 0x56, 0x00, 0x4F, 0xF8, 0xF8, 0x1D, + 0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, 0x4F, 0xF8, 0xF8, 0x1D, + 0x61, 0x55, 0x55, 0x00, 0x50, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, + 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x5F, 0x53, 0x53, 0x00, + 0x4D, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x5F, 0x55, 0x55, 0x00, 0x4F, 0xF8, 0xF8, 0x1D, + 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, + 0xAA, 0x55, 0x55, 0x00, 0x54, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, + 0x4E, 0xF8, 0xF8, 0x1D, 0x4E, 0xF8, 0xF8, 0x1D, 0xA6, 0x59, 0x59, 0x00, + 0x4D, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x9B, 0x4F, 0x4F, 0x00, 0x4E, 0xF8, 0xF8, 0x1D, + 0x46, 0xF8, 0xF8, 0x1D, 0x46, 0xF8, 0xF8, 0x1D, 0x46, 0xF8, 0xF8, 0x1D, + 0xA5, 0xF8, 0xF8, 0x00, 0x94, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0xA4, 0x98, 0x98, 0x00, + 0x4D, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x86, 0x46, 0x46, 0x00, 0xB3, 0xF8, 0xF8, 0x1D, + 0x3D, 0xF8, 0xF8, 0x1D, 0x3D, 0xF8, 0xF8, 0x1D, 0x3D, 0xF8, 0xF8, 0x1D, + 0x40, 0x8E, 0x8E, 0x00, 0x48, 0xF8, 0xF8, 0x1A, 0x48, 0xF8, 0xDF, 0x1A, + 0x46, 0xF8, 0xDF, 0x1A, 0x46, 0xF8, 0xDF, 0x1A, 0x40, 0x7F, 0x7F, 0x00, + 0x75, 0xD2, 0xD2, 0x18, 0x3A, 0xD2, 0xD2, 0x18, 0x3A, 0xD2, 0xD2, 0x18, + 0x39, 0xD2, 0xD2, 0x18, 0x40, 0x45, 0x45, 0x00, 0x64, 0x86, 0x86, 0x0F, + 0x3E, 0x86, 0x86, 0x0F, 0x3D, 0x86, 0x86, 0x0F, 0x3D, 0x86, 0x86, 0x0F, + 0x64, 0x5C, 0x5C, 0x00, 0x56, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, + 0x55, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, 0x68, 0x5B, 0x5B, 0x00, + 0x58, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, + 0x55, 0xF8, 0xF8, 0x1D, 0x64, 0x5A, 0x5A, 0x00, 0x55, 0xF8, 0xF8, 0x1D, + 0x54, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, + 0xB5, 0x5A, 0x5A, 0x00, 0x5B, 0xF8, 0xF8, 0x1D, 0x55, 0xF8, 0xF8, 0x1D, + 0x54, 0xF8, 0xF8, 0x1D, 0x54, 0xF8, 0xF8, 0x1D, 0xB0, 0xF8, 0xF8, 0x00, + 0xA3, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, + 0x52, 0xF8, 0xF8, 0x1D, 0xAE, 0xA4, 0xA4, 0x00, 0x54, 0xF8, 0xF8, 0x1D, + 0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, 0x52, 0xF8, 0xF8, 0x1D, + 0x40, 0x9A, 0x9A, 0x00, 0x4E, 0xF8, 0xF8, 0x1D, 0x4D, 0xF8, 0xF8, 0x1D, + 0x4C, 0xF8, 0xF8, 0x1D, 0x4C, 0xF8, 0xF8, 0x1D, 0x40, 0x9C, 0x9C, 0x00, + 0x95, 0xF8, 0xF8, 0x1D, 0x49, 0xF8, 0xF8, 0x1D, 0x4A, 0xF8, 0xF8, 0x1D, + 0x4A, 0xF8, 0xF8, 0x1D, 0x40, 0x49, 0x49, 0x00, 0x6F, 0x97, 0x97, 0x11, + 0x42, 0x97, 0x97, 0x11, 0x41, 0x97, 0x97, 0x11, 0x41, 0x97, 0x97, 0x11, + 0x74, 0x6E, 0x6E, 0x00, 0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, + 0x69, 0xF8, 0xF8, 0x1D, 0x69, 0xF8, 0xF8, 0x1D, 0x40, 0x6E, 0x6E, 0x00, + 0x69, 0xF8, 0xDE, 0x1A, 0x69, 0xF8, 0xDE, 0x1A, 0x69, 0xF8, 0xDE, 0x1A, + 0x69, 0xF8, 0xDE, 0x1A, 0x40, 0x75, 0x75, 0x00, 0x6E, 0xF8, 0x78, 0x0D, + 0x6E, 0xF8, 0x78, 0x0D, 0x6E, 0xF8, 0x78, 0x0D, 0x6E, 0xF8, 0x79, 0x0D, + 0x85, 0x78, 0x78, 0x00, 0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, + 0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, 0x40, 0x78, 0x78, 0x00, + 0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, 0x73, 0xF8, 0xF8, 0x1D, + 0x73, 0xF8, 0xF8, 0x1D, 0x40, 0x78, 0x78, 0x00, 0x73, 0xF8, 0x81, 0x0E, + 0x73, 0xF8, 0x81, 0x0E, 0x73, 0xF8, 0x81, 0x0E, 0x73, 0xF8, 0x82, 0x0E, + 0x40, 0x40, 0x40, 0x00, 0x73, 0xF8, 0x82, 0x0E, 0x73, 0xF8, 0x82, 0x0E, + 0x73, 0xF8, 0x82, 0x0E, 0x73, 0xF8, 0x82, 0x0E, 0x40, 0x81, 0x81, 0x00, + 0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, + 0x7E, 0xF8, 0x92, 0x10, 0x40, 0x40, 0x40, 0x00, 0x7E, 0xF8, 0x92, 0x10, + 0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, 0x7E, 0xF8, 0x92, 0x10, + 0x40, 0x73, 0x73, 0x00, 0x6B, 0xB2, 0xB2, 0x14, 0x35, 0xB2, 0xB2, 0x14, + 0x35, 0xB2, 0xB2, 0x14, 0x35, 0xB2, 0xB2, 0x14, 0x40, 0x40, 0x40, 0x00, + 0x60, 0x82, 0x82, 0x0E, 0x3D, 0x82, 0x82, 0x0E, 0x3C, 0x82, 0x82, 0x0E, + 0x3C, 0x82, 0x82, 0x0E, 0x40, 0x40, 0x40, 0x00, 0x66, 0x8B, 0x8B, 0x0F, + 0x3F, 0x8B, 0x8B, 0x0F, 0x3D, 0x8B, 0x8B, 0x0F, 0x3D, 0x8B, 0x8B, 0x0F, + 0x40, 0x40, 0x40, 0x00, 0x3D, 0x68, 0x68, 0x0B, 0x1E, 0x68, 0x68, 0x0B, + 0x1E, 0x68, 0x68, 0x0B, 0x1E, 0x68, 0x68, 0x0B, 0x40, 0x22, 0x22, 0x00, + 0x18, 0x43, 0x43, 0x06, 0x29, 0x43, 0x43, 0x06, 0x18, 0x43, 0x43, 0x06, + 0x18, 0x43, 0x43, 0x06, 0x40, 0x40, 0x40, 0x00, 0x72, 0x9D, 0x9D, 0x12, + 0x43, 0x9D, 0x9D, 0x12, 0x41, 0x9D, 0x9D, 0x12, 0x41, 0x9D, 0x9D, 0x12, + 0x40, 0x40, 0x40, 0x00, 0x42, 0x75, 0x75, 0x0D, 0x20, 0x75, 0x75, 0x0D, + 0x20, 0x75, 0x75, 0x0D, 0x20, 0x75, 0x75, 0x0D, 0x40, 0x23, 0x23, 0x00, + 0x19, 0x4C, 0x4C, 0x08, 0x2C, 0x4C, 0x4C, 0x08, 0x19, 0x4C, 0x4C, 0x08, + 0x19, 0x4C, 0x4C, 0x08, 0x38, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xA8, + 0xB8, 0xC8, 0xD8, 0xF8, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xA8, 0xB8, + 0xC8, 0xD8, 0xE8, 0x08, 0x58, 0x68, 0x78, 0x88, 0x98, 0xA8, 0xB8, 0xC8, + 0xD8, 0xE8, 0xF8, 0x09, 0x01, 0x03, 0x1E, 0x00, 0x00, 0x75, 0x19, 0x03, + 0x00, 0x75, 0x19, 0x03, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0xAC, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0x22, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0x8C, 0x0F, + 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, + 0x62, 0x03, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x44, 0x61, 0x03, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x60, 0x23, 0x8D, 0x0F, + 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0xC4, + 0x60, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x3E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xE3, 0x8C, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x60, 0xC3, 0x0C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, + 0x60, 0xCB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xB3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x3E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x44, 0x60, 0xD3, 0x0C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x44, + 0x60, 0x1B, 0x0F, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x3E, 0x2A, 0x00, + 0xB5, 0x5A, 0x3F, 0x04, 0x60, 0x9B, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0xD8, 0x3E, 0x2A, 0x00, 0xB5, 0x5A, 0x3F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x58, 0x3F, 0x2A, 0x00, 0xB5, 0x5A, 0x3F, 0xC4, + 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xD8, 0x3F, 0x2A, 0x00, + 0xB5, 0x5A, 0x3F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x22, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, 0x63, 0xA3, 0xAC, 0x0F, + 0x80, 0x80, 0x80, 0x80, 0x22, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x04, + 0x63, 0xA3, 0x8C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x22, 0x2E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x04, 0x62, 0x03, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x61, 0x03, 0x8D, 0x0F, + 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, + 0x60, 0x23, 0x8D, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x58, 0x2E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0xC4, 0x60, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0xB4, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xE3, 0x8C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, + 0x60, 0xC3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x22, 0x2E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x04, 0x60, 0xCB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x60, 0xB3, 0x0C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x44, + 0x60, 0xD3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x2A, 0x00, + 0xB5, 0x5A, 0x2F, 0x44, 0x60, 0x1B, 0x0F, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0xA2, 0x2E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0x04, 0x60, 0x9B, 0x11, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0xD8, 0x2E, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0xC4, + 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x58, 0x2F, 0x2A, 0x00, + 0xB5, 0x5A, 0x2F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0xD8, 0x2F, 0x2A, 0x00, 0xB5, 0x5A, 0x2F, 0xC4, 0x60, 0xFB, 0x11, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x00, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0x0F, 0x03, + 0x60, 0xE7, 0x0C, 0xE8, 0x80, 0x80, 0x80, 0x80, 0x00, 0xBE, 0x7F, 0x00, + 0x6C, 0x00, 0x2F, 0x03, 0x60, 0xD7, 0x0C, 0xE8, 0x80, 0x80, 0x80, 0x80, + 0x00, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0xEF, 0x03, 0x60, 0x9F, 0x0D, 0xE8, + 0x80, 0x80, 0x80, 0x80, 0x6D, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0xEF, 0x83, + 0x60, 0x9F, 0x0D, 0xE8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x17, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, + 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0xEF, 0x9B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x2F, 0x1B, 0x60, 0x87, 0xEC, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, + 0x60, 0x87, 0xEC, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0x0D, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, + 0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x17, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, 0x60, 0x1F, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x9B, + 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, + 0xB4, 0x00, 0x19, 0x44, 0x70, 0xE3, 0xAC, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x84, 0x70, 0x63, 0x8C, 0x0F, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x44, + 0x70, 0x03, 0x11, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0x39, 0x00, + 0xB4, 0x00, 0x19, 0x84, 0x70, 0x43, 0x8D, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x3E, 0x39, 0x00, 0xB4, 0x00, 0x19, 0x44, 0x70, 0xE3, 0x10, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0xC4, + 0x70, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x3E, 0xB9, 0x00, + 0xB4, 0x00, 0x19, 0x44, 0x70, 0xC3, 0x8C, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0x84, 0x70, 0x03, 0x11, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0xB9, 0x00, 0xB4, 0x00, 0x19, 0x44, + 0x70, 0xEB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0xB9, 0x00, + 0xB4, 0x00, 0x19, 0x84, 0x70, 0xD3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x84, 0x70, 0xF3, 0x0C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x46, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x84, + 0x70, 0x3B, 0x0D, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x3E, 0xAA, 0x00, + 0xB5, 0x5A, 0x39, 0x44, 0x70, 0xBB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0xEB, 0x3E, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x04, 0x70, 0xFB, 0x11, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3F, 0xAA, 0x00, 0xB5, 0x5A, 0x39, 0x04, + 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x3F, 0xAA, 0x00, + 0xB5, 0x5A, 0x39, 0x04, 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x70, 0xE3, 0xAC, 0x0F, + 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, + 0x70, 0x63, 0x8C, 0x0F, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x39, 0x00, + 0xB4, 0x00, 0x0F, 0x44, 0x70, 0x03, 0x11, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x70, 0x43, 0x8D, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0x39, 0x00, 0xB4, 0x00, 0x0F, 0x44, + 0x70, 0xE3, 0x10, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x58, 0x2E, 0xB9, 0x00, + 0xB4, 0x00, 0x0F, 0xC4, 0x70, 0xE3, 0x0C, 0x0F, 0x80, 0x80, 0x80, 0x80, + 0xB4, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0x44, 0x70, 0xC3, 0x8C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0x84, + 0x70, 0x03, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x34, 0x2E, 0xB9, 0x00, + 0xB4, 0x00, 0x0F, 0x44, 0x70, 0xEB, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0x46, 0x2E, 0xB9, 0x00, 0xB4, 0x00, 0x0F, 0x84, 0x70, 0xD3, 0x0C, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x84, + 0x70, 0xF3, 0x0C, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x46, 0x2E, 0xAA, 0x00, + 0xB5, 0x5A, 0x2F, 0x84, 0x70, 0x3B, 0x0D, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0xB4, 0x2E, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x44, 0x70, 0xBB, 0x11, 0x0E, + 0x80, 0x80, 0x80, 0x80, 0xEB, 0x2E, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x04, + 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x2F, 0xAA, 0x00, + 0xB5, 0x5A, 0x2F, 0x04, 0x70, 0xFB, 0x11, 0x0E, 0x80, 0x80, 0x80, 0x80, + 0xEB, 0x2F, 0xAA, 0x00, 0xB5, 0x5A, 0x2F, 0x04, 0x70, 0xFB, 0x11, 0x0E, + 0x7F, 0xC1, 0x9F, 0x00, 0x0A, 0x01, 0x82, 0x00, 0x0C, 0x81, 0x82, 0x00, + 0x10, 0x81, 0x82, 0x00, 0x10, 0x01, 0x83, 0x00, 0x16, 0x01, 0x83, 0x00, + 0x16, 0x01, 0x84, 0x00, 0x60, 0x01, 0x84, 0x00, 0x67, 0x01, 0x93, 0x00, + 0x67, 0x41, 0x99, 0x00, 0x7F, 0x41, 0x99, 0x00, 0x7F, 0xC1, 0x99, 0x00, + 0x7F, 0x81, 0x9A, 0x00, 0x7F, 0x81, 0x9B, 0x00, 0x3F, 0xC1, 0x9C, 0x00, + 0x3F, 0xC1, 0x8F, 0x00, 0x08, 0x01, 0x82, 0x00, 0x0A, 0x01, 0x82, 0x00, + 0x0C, 0x81, 0x82, 0x00, 0x10, 0x81, 0x82, 0x00, 0x10, 0x01, 0x83, 0x00, + 0x16, 0x01, 0x83, 0x00, 0x16, 0x01, 0x84, 0x00, 0x20, 0x01, 0x84, 0x00, + 0x20, 0x01, 0x85, 0x00, 0x20, 0x01, 0x8C, 0x00, 0x27, 0x81, 0x8C, 0x00, + 0x27, 0x01, 0x8E, 0x00, 0x27, 0x01, 0x9B, 0x00, 0x3F, 0x01, 0x9B, 0x00, + 0x3F, 0xC1, 0x9C, 0x00, 0x3F, 0xC1, 0x8F, 0x00, 0x00, 0xC6, 0xFF, 0x00, + 0x00, 0xC6, 0x40, 0x00, 0x00, 0x06, 0x41, 0x00, 0x00, 0x46, 0x41, 0x00, + 0x00, 0x86, 0x90, 0x00, 0x00, 0xC6, 0x90, 0x00, 0x00, 0x06, 0xB1, 0x00, + 0x00, 0x46, 0xB1, 0x00, 0x00, 0x86, 0xB1, 0x00, 0x00, 0x06, 0xB2, 0x00, + 0x00, 0xC6, 0xB2, 0x00, 0x00, 0x46, 0xB9, 0x00, 0x00, 0xC6, 0xB9, 0x00, + 0x00, 0x46, 0xBA, 0x00, 0x00, 0x46, 0xBB, 0x00, 0x00, 0xC6, 0xBC, 0x00, + 0x82, 0x01, 0x83, 0x01, 0x40, 0x02, 0x41, 0x02, 0x80, 0x02, 0x81, 0x02, + 0x82, 0x02, 0x83, 0x02, 0x40, 0x03, 0x41, 0x03, 0x80, 0x03, 0x81, 0x03, + 0x00, 0x04, 0x01, 0x04, 0x40, 0x04, 0x41, 0x04, 0x60, 0x60, 0x00, 0x00, + 0x3B, 0x18, 0xB3, 0x03, 0x68, 0x51, 0x2E, 0x1A, 0x48, 0x51, 0x2E, 0x1A, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x18, 0x20, 0x56, 0x84, 0x18, 0x20, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x50, 0x2A, 0x7A, 0xC8, 0x50, 0x1B, 0x79, + 0xC8, 0xD0, 0x2A, 0x7A, 0x40, 0x40, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, + 0x64, 0x32, 0x00, 0x00, 0x00, 0x87, 0x93, 0x03, 0x00, 0x20, 0x03, 0x00, + 0x00, 0x20, 0x03, 0x00, 0x30, 0x75, 0x00, 0x00, 0xB0, 0xAD, 0x01, 0x00, + 0x20, 0xA1, 0x07, 0x00, 0x20, 0xA1, 0x07, 0x00, 0x20, 0xA1, 0x07, 0x00, + 0x20, 0xA1, 0x07, 0x00, 0x10, 0x27, 0x00, 0x00, 0x40, 0x0D, 0x03, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x10, 0x27, 0x50, 0xC3, 0xA0, 0x0F, 0x40, 0x1F, + 0x84, 0x03, 0x05, 0x08, 0x01, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1A, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x1A, 0x00, + 0xE0, 0x57, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0xFC, 0x19, 0x00, 0xF4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xE0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xFF, 0x71, 0x04, 0x00, 0x10, 0x0E, 0x00, 0x03, 0x01, 0x08, 0x8F, + 0x03, 0xE6, 0xE0, 0xD0, 0xD6, 0x06, 0xD6, 0x06, 0x00, 0x00, 0x01, 0xF3, + 0x01, 0x0A, 0x00, 0x0F, 0x08, 0x01, 0x09, 0x08, 0x08, 0x08, 0x08, 0x0A, + 0x09, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x01, 0x00, 0x00, 0xBC, 0x06, 0x04, 0x04, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x08, 0x0A, 0x02, 0x04, 0x01, 0x00, 0xF0, 0x00, + 0x08, 0x04, 0x00, 0x04, 0x04, 0x04, 0x09, 0x06, 0x04, 0x01, 0x04, 0x01, + 0x05, 0x14, 0x38, 0x01, 0x38, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, + 0x7D, 0xA6, 0x12, 0x00, 0x91, 0xA1, 0x12, 0x00, 0xA5, 0xA6, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xA1, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xA1, 0x12, 0x00, + 0xD1, 0xA1, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA3, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x6D, 0x12, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x05, 0xC7, 0x12, 0x00, + 0xE1, 0xB8, 0x14, 0x00, 0x75, 0xBB, 0x14, 0x00, 0x2D, 0xBE, 0x14, 0x00, + 0xE9, 0xBC, 0x14, 0x00, 0x81, 0xBC, 0x14, 0x00, 0x29, 0xAC, 0x14, 0x00, + 0xFD, 0x0C, 0x15, 0x00, 0x1D, 0x0B, 0x15, 0x00, 0x6D, 0x08, 0x15, 0x00, + 0x0D, 0x07, 0x15, 0x00, 0x59, 0xC8, 0x13, 0x00, 0xF5, 0xE7, 0x13, 0x00, + 0xA1, 0xCE, 0x13, 0x00, 0x3D, 0xD1, 0x13, 0x00, 0x4D, 0xD0, 0x13, 0x00, + 0xF9, 0xD0, 0x13, 0x00, 0x05, 0xDD, 0x13, 0x00, 0xF1, 0xDD, 0x13, 0x00, + 0x95, 0xDE, 0x13, 0x00, 0x85, 0xE4, 0x13, 0x00, 0xF5, 0xE0, 0x13, 0x00, + 0xC1, 0xE3, 0x13, 0x00, 0xED, 0xCE, 0x13, 0x00, 0x59, 0xD6, 0x13, 0x00, + 0xF5, 0xD9, 0x13, 0x00, 0x3D, 0xD5, 0x13, 0x00, 0xA9, 0xD4, 0x13, 0x00, + 0x91, 0xD8, 0x13, 0x00, 0x31, 0xD9, 0x13, 0x00, 0xC1, 0xD8, 0x13, 0x00, + 0x21, 0xD4, 0x13, 0x00, 0x4D, 0xDB, 0x13, 0x00, 0x71, 0xCA, 0x13, 0x00, + 0xE5, 0xC9, 0x13, 0x00, 0xAD, 0xC0, 0x13, 0x00, 0xCD, 0xC6, 0x13, 0x00, + 0x39, 0xC0, 0x13, 0x00, 0x79, 0xD6, 0x13, 0x00, 0xE5, 0xD7, 0x13, 0x00, + 0xF1, 0xC7, 0x13, 0x00, 0xDD, 0xE4, 0x13, 0x00, 0xA1, 0xE6, 0x13, 0x00, + 0x21, 0xD2, 0x13, 0x00, 0x6D, 0xD4, 0x13, 0x00, 0x99, 0xEA, 0x13, 0x00, + 0x71, 0x50, 0x14, 0x00, 0x71, 0x58, 0x14, 0x00, 0x25, 0x06, 0x12, 0x00, + 0x7D, 0x4B, 0x14, 0x00, 0x19, 0x4B, 0x14, 0x00, 0xF9, 0x5E, 0x12, 0x00, + 0xD1, 0x5E, 0x12, 0x00, 0xF1, 0x1C, 0x14, 0x00, 0x19, 0x1E, 0x14, 0x00, + 0xE9, 0x14, 0x14, 0x00, 0xD9, 0x16, 0x14, 0x00, 0x91, 0x17, 0x14, 0x00, + 0xC9, 0x1A, 0x14, 0x00, 0xF1, 0x19, 0x14, 0x00, 0x3D, 0x15, 0x14, 0x00, + 0xA5, 0x1B, 0x14, 0x00, 0x25, 0x1B, 0x14, 0x00, 0x1D, 0x90, 0x12, 0x00, + 0x7D, 0x93, 0x12, 0x00, 0xD1, 0x9E, 0x12, 0x00, 0x71, 0x8E, 0x12, 0x00, + 0xF5, 0xAA, 0x12, 0x00, 0xC5, 0x78, 0x12, 0x00, 0x05, 0x69, 0x12, 0x00, + 0x39, 0x69, 0x12, 0x00, 0x8D, 0x52, 0x12, 0x00, 0x7D, 0x50, 0x12, 0x00, + 0xD9, 0x55, 0x12, 0x00, 0xC1, 0x51, 0x12, 0x00, 0x79, 0x51, 0x12, 0x00, + 0x5D, 0xB2, 0x12, 0x00, 0x8D, 0x0C, 0x15, 0x00, 0x61, 0x4C, 0x14, 0x00, + 0xF9, 0x0E, 0x12, 0x00, 0x49, 0x07, 0x12, 0x00, 0x55, 0x59, 0x14, 0x00, + 0xD5, 0x58, 0x14, 0x00, 0x49, 0x5A, 0x14, 0x00, 0x05, 0x5A, 0x14, 0x00, + 0xD9, 0x80, 0x14, 0x00, 0xD9, 0x5A, 0x14, 0x00, 0x45, 0x79, 0x14, 0x00, + 0x7D, 0x7D, 0x13, 0x00, 0xA1, 0x78, 0x13, 0x00, 0xB5, 0x7E, 0x13, 0x00, + 0xF1, 0x85, 0x13, 0x00, 0xD5, 0xB6, 0x13, 0x00, 0x91, 0xBC, 0x13, 0x00, + 0xF1, 0xB5, 0x13, 0x00, 0x19, 0xBB, 0x13, 0x00, 0x5D, 0xBB, 0x13, 0x00, + 0xD5, 0xBC, 0x13, 0x00, 0xDD, 0xB8, 0x13, 0x00, 0x8D, 0xB8, 0x13, 0x00, + 0xFD, 0xBD, 0x13, 0x00, 0x21, 0xB8, 0x13, 0x00, 0xC5, 0x8C, 0x13, 0x00, + 0x09, 0x8C, 0x13, 0x00, 0xE9, 0x72, 0x13, 0x00, 0x59, 0x87, 0x13, 0x00, + 0xCD, 0x73, 0x13, 0x00, 0x31, 0x84, 0x13, 0x00, 0x25, 0x80, 0x13, 0x00, + 0x35, 0x83, 0x13, 0x00, 0xFD, 0x80, 0x13, 0x00, 0xE9, 0x8B, 0x13, 0x00, + 0x01, 0x8E, 0x13, 0x00, 0x55, 0x89, 0x13, 0x00, 0xD9, 0x89, 0x13, 0x00, + 0x91, 0x7D, 0x13, 0x00, 0x4D, 0x75, 0x13, 0x00, 0xA5, 0xB3, 0x13, 0x00, + 0x19, 0xB0, 0x13, 0x00, 0x01, 0xAF, 0x13, 0x00, 0x21, 0xAF, 0x13, 0x00, + 0x25, 0x05, 0x14, 0x00, 0xA9, 0xFF, 0x13, 0x00, 0xB1, 0xFE, 0x13, 0x00, + 0xC5, 0xFF, 0x13, 0x00, 0x81, 0xFF, 0x13, 0x00, 0x69, 0x06, 0x14, 0x00, + 0x49, 0x03, 0x14, 0x00, 0x2D, 0x0A, 0x14, 0x00, 0x25, 0x08, 0x14, 0x00, + 0x3D, 0x09, 0x14, 0x00, 0xF9, 0x07, 0x14, 0x00, 0x59, 0xFB, 0x13, 0x00, + 0x35, 0x04, 0x14, 0x00, 0xF5, 0xF6, 0x13, 0x00, 0x89, 0xF4, 0x13, 0x00, + 0xA5, 0x13, 0x12, 0x00, 0x5D, 0x10, 0x12, 0x00, 0xC1, 0x0B, 0x12, 0x00, + 0x49, 0x11, 0x12, 0x00, 0x4D, 0x02, 0x12, 0x00, 0xDD, 0xEA, 0x13, 0x00, + 0x01, 0xEE, 0x13, 0x00, 0xA9, 0xF0, 0x13, 0x00, 0x79, 0xEF, 0x13, 0x00, + 0x49, 0xF1, 0x13, 0x00, 0xE5, 0xF1, 0x13, 0x00, 0x85, 0xEC, 0x13, 0x00, + 0x45, 0xED, 0x13, 0x00, 0xA5, 0xED, 0x13, 0x00, 0x3D, 0xEB, 0x13, 0x00, + 0x45, 0xEF, 0x13, 0x00, 0xA1, 0xF2, 0x13, 0x00, 0xC5, 0xF3, 0x13, 0x00, + 0x85, 0x49, 0x15, 0x00, 0x01, 0x35, 0x15, 0x00, 0xCD, 0x42, 0x12, 0x00, + 0x71, 0xCB, 0x12, 0x00, 0x35, 0xCF, 0x12, 0x00, 0xAD, 0xD3, 0x12, 0x00, + 0x9D, 0xCB, 0x12, 0x00, 0xFD, 0xD4, 0x12, 0x00, 0xFD, 0x48, 0x13, 0x00, + 0x69, 0x4B, 0x13, 0x00, 0x21, 0x4C, 0x13, 0x00, 0x15, 0x46, 0x13, 0x00, + 0x99, 0x50, 0x13, 0x00, 0x9D, 0x5C, 0x13, 0x00, 0x79, 0x5C, 0x13, 0x00, + 0xED, 0x53, 0x13, 0x00, 0xE5, 0x56, 0x13, 0x00, 0x81, 0x4F, 0x13, 0x00, + 0x61, 0x4E, 0x13, 0x00, 0x29, 0x4D, 0x13, 0x00, 0x01, 0x40, 0x13, 0x00, + 0xED, 0x4C, 0x13, 0x00, 0x1D, 0x52, 0x13, 0x00, 0xDD, 0xDB, 0x14, 0x00, + 0xB5, 0xEB, 0x14, 0x00, 0x19, 0xD9, 0x14, 0x00, 0xA5, 0xDF, 0x14, 0x00, + 0xB5, 0xE0, 0x14, 0x00, 0xE9, 0xDE, 0x14, 0x00, 0x15, 0xE3, 0x14, 0x00, + 0xD9, 0xE5, 0x14, 0x00, 0x5D, 0xD7, 0x14, 0x00, 0xED, 0xD6, 0x14, 0x00, + 0x21, 0x13, 0x14, 0x00, 0x85, 0x14, 0x14, 0x00, 0x05, 0xD1, 0x14, 0x00, + 0x8D, 0x85, 0x12, 0x00, 0xD1, 0x80, 0x12, 0x00, 0xCD, 0x7D, 0x12, 0x00, + 0xED, 0x7F, 0x12, 0x00, 0x45, 0x7A, 0x12, 0x00, 0x01, 0x7F, 0x12, 0x00, + 0xD5, 0x99, 0x14, 0x00, 0xED, 0x9A, 0x14, 0x00, 0x31, 0x62, 0x13, 0x00, + 0x29, 0x5F, 0x13, 0x00, 0x65, 0x63, 0x13, 0x00, 0x41, 0x61, 0x13, 0x00, + 0x71, 0x5F, 0x12, 0x00, 0xB9, 0x24, 0x12, 0x00, 0xD9, 0x0D, 0x14, 0x00, + 0x61, 0x0C, 0x14, 0x00, 0x79, 0x20, 0x14, 0x00, 0x05, 0x20, 0x14, 0x00, + 0xC1, 0x20, 0x14, 0x00, 0x55, 0xD6, 0x12, 0x00, 0x4D, 0x1B, 0x13, 0x00, + 0x99, 0x0E, 0x13, 0x00, 0x11, 0x0C, 0x13, 0x00, 0x65, 0x0D, 0x13, 0x00, + 0xD1, 0x19, 0x13, 0x00, 0x5D, 0x13, 0x13, 0x00, 0x79, 0x0A, 0x13, 0x00, + 0x8D, 0x21, 0x13, 0x00, 0x2D, 0x15, 0x13, 0x00, 0x19, 0x21, 0x13, 0x00, + 0x79, 0x07, 0x13, 0x00, 0xCD, 0xF3, 0x12, 0x00, 0x31, 0xD7, 0x12, 0x00, + 0x41, 0xD8, 0x12, 0x00, 0xA1, 0xD8, 0x12, 0x00, 0x69, 0xFC, 0x12, 0x00, + 0x15, 0xFD, 0x12, 0x00, 0xF5, 0xE7, 0x12, 0x00, 0xB5, 0xE2, 0x12, 0x00, + 0xE5, 0xEA, 0x12, 0x00, 0xF5, 0xEB, 0x12, 0x00, 0xED, 0xE6, 0x12, 0x00, + 0xF9, 0xDD, 0x12, 0x00, 0x89, 0xE2, 0x12, 0x00, 0xD1, 0xFD, 0x12, 0x00, + 0xD5, 0xE7, 0x12, 0x00, 0xD5, 0x30, 0x13, 0x00, 0x91, 0x36, 0x13, 0x00, + 0xD5, 0x3A, 0x13, 0x00, 0x7D, 0x3C, 0x13, 0x00, 0xDD, 0x26, 0x13, 0x00, + 0x49, 0x27, 0x13, 0x00, 0xA9, 0x25, 0x13, 0x00, 0xCD, 0x35, 0x13, 0x00, + 0x71, 0x25, 0x13, 0x00, 0x89, 0x2C, 0x13, 0x00, 0x75, 0x30, 0x13, 0x00, + 0x81, 0x3A, 0x13, 0x00, 0x05, 0x3A, 0x13, 0x00, 0x49, 0x3D, 0x13, 0x00, + 0xB1, 0x2B, 0x13, 0x00, 0x21, 0x2F, 0x13, 0x00, 0xBD, 0x39, 0x13, 0x00, + 0x59, 0x28, 0x13, 0x00, 0xCD, 0x2A, 0x13, 0x00, 0x61, 0x37, 0x13, 0x00, + 0x01, 0xDB, 0x12, 0x00, 0xF1, 0xE2, 0x12, 0x00, 0x81, 0xD9, 0x12, 0x00, + 0x35, 0xEE, 0x12, 0x00, 0xC5, 0xEF, 0x12, 0x00, 0x49, 0xED, 0x12, 0x00, + 0x69, 0xFD, 0x14, 0x00, 0x39, 0xF9, 0x14, 0x00, 0x71, 0xF4, 0x14, 0x00, + 0x79, 0xF9, 0x14, 0x00, 0x09, 0xFC, 0x14, 0x00, 0xC5, 0xF3, 0x14, 0x00, + 0xDD, 0x60, 0x12, 0x00, 0xB1, 0xAD, 0x12, 0x00, 0xBD, 0xAE, 0x12, 0x00, + 0x29, 0xAF, 0x12, 0x00, 0xA5, 0xA4, 0x12, 0x00, 0xD1, 0xA5, 0x12, 0x00, + 0xD9, 0x6C, 0x13, 0x00, 0xF5, 0x6E, 0x13, 0x00, 0x1D, 0x64, 0x13, 0x00, + 0x2D, 0x6E, 0x13, 0x00, 0x51, 0x65, 0x13, 0x00, 0xB5, 0x6E, 0x13, 0x00, + 0x2D, 0x6F, 0x13, 0x00, 0xC1, 0x68, 0x13, 0x00, 0x91, 0xBE, 0x12, 0x00, + 0x29, 0xC4, 0x12, 0x00, 0x95, 0xBB, 0x12, 0x00, 0xDD, 0x03, 0x12, 0x00, + 0x19, 0xC5, 0x12, 0x00, 0xCD, 0xC6, 0x12, 0x00, 0x2D, 0x1E, 0x12, 0x00, + 0x61, 0x1B, 0x12, 0x00, 0x69, 0x1D, 0x12, 0x00, 0x7D, 0x9D, 0x12, 0x00, + 0xA9, 0x9D, 0x12, 0x00, 0x39, 0x12, 0x14, 0x00, 0x99, 0x71, 0x13, 0x00, + 0xC1, 0x21, 0x12, 0x00, 0x51, 0x09, 0x12, 0x00, 0x9D, 0x0A, 0x12, 0x00, + 0xA1, 0x0A, 0x12, 0x00, 0xBD, 0x0B, 0x12, 0x00, 0x41, 0x1C, 0x12, 0x00, + 0xD5, 0xCF, 0x12, 0x00, 0x21, 0xD1, 0x12, 0x00, 0xD1, 0x3C, 0x12, 0x00, + 0xC5, 0x4B, 0x12, 0x00, 0xA1, 0x4D, 0x12, 0x00, 0x6D, 0x4C, 0x12, 0x00, + 0xAD, 0x4A, 0x12, 0x00, 0x71, 0xC0, 0x12, 0x00, 0x19, 0xC2, 0x12, 0x00, + 0x79, 0xB8, 0x12, 0x00, 0x29, 0x9A, 0x12, 0x00, 0x39, 0x93, 0x12, 0x00, + 0xA1, 0x65, 0x12, 0x00, 0xCD, 0xB1, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC2, 0x03, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x75, 0x95, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xFD, 0x8F, 0x13, 0x00, 0x06, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x93, 0x13, 0x00, 0x10, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, + 0x16, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xF1, 0xA9, 0x13, 0x00, 0x12, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, + 0x0E, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xF1, 0xA9, 0x13, 0x00, 0x1A, 0x00, 0x00, 0x00, 0xCD, 0x90, 0x13, 0x00, + 0x6B, 0x00, 0x00, 0x00, 0xF5, 0x96, 0x13, 0x00, 0x6D, 0x00, 0x00, 0x00, + 0xD1, 0x97, 0x13, 0x00, 0x71, 0x00, 0x00, 0x00, 0x19, 0x93, 0x13, 0x00, + 0x6F, 0x00, 0x00, 0x00, 0x79, 0x91, 0x13, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xF1, 0xA9, 0x13, 0x00, 0x1C, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x30, 0x00, 0x00, 0x00, + 0xF1, 0xA9, 0x13, 0x00, 0x22, 0x00, 0x00, 0x00, 0x09, 0xA0, 0x13, 0x00, + 0x84, 0x00, 0x00, 0x00, 0xAD, 0xA0, 0x13, 0x00, 0x2E, 0x00, 0x00, 0x00, + 0x4D, 0x8E, 0x13, 0x00, 0x24, 0x00, 0x00, 0x00, 0xA9, 0x93, 0x13, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x4D, 0x94, 0x13, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x9D, 0x8E, 0x13, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x9D, 0x91, 0x13, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x2A, 0x00, 0x00, 0x00, + 0xF1, 0x97, 0x13, 0x00, 0x39, 0x00, 0x00, 0x00, 0xC5, 0x91, 0x13, 0x00, + 0x3B, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xCD, 0x8E, 0x13, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x21, 0x8E, 0x13, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x91, 0x98, 0x13, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x35, 0x8E, 0x13, 0x00, 0x4B, 0x00, 0x00, 0x00, 0xA9, 0x94, 0x13, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x59, 0x8F, 0x13, 0x00, 0x52, 0x00, 0x00, 0x00, + 0xB5, 0x9F, 0x13, 0x00, 0x56, 0x00, 0x00, 0x00, 0x15, 0x95, 0x13, 0x00, + 0x87, 0x00, 0x00, 0x00, 0xF1, 0xA9, 0x13, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x21, 0x97, 0x13, 0x00, 0x63, 0x00, 0x00, 0x00, 0x9D, 0x98, 0x13, 0x00, + 0x65, 0x00, 0x00, 0x00, 0xE9, 0x91, 0x13, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x0D, 0x96, 0x13, 0x00, 0x69, 0x00, 0x00, 0x00, 0xF1, 0x9C, 0x13, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xE9, 0x98, 0x13, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x0D, 0x8F, 0x13, 0x00, 0x77, 0x00, 0x00, 0x00, 0xA5, 0x92, 0x13, 0x00, + 0x79, 0x00, 0x00, 0x00, 0xCD, 0x92, 0x13, 0x00, 0x7B, 0x00, 0x00, 0x00, + 0xE1, 0x9B, 0x13, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x59, 0x99, 0x13, 0x00, + 0x80, 0x00, 0x00, 0x00, 0xBD, 0x96, 0x13, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x11, 0x9B, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, 0xB9, 0x0E, 0x14, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x4D, 0x0F, 0x14, 0x00, 0x86, 0x00, 0x00, 0x00, + 0xC9, 0x0F, 0x14, 0x00, 0x03, 0x08, 0x00, 0x00, 0x71, 0x10, 0x14, 0x00, + 0x0D, 0xCD, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xB0, 0x13, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA1, 0x28, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2D, 0x4C, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x2F, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x85, 0x84, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB5, 0x7F, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x7F, 0x13, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3D, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x85, 0x4A, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xF2, 0x14, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFD, 0x48, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD1, 0x78, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x13, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xD1, 0xF4, 0x12, 0x00, 0x03, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xD1, 0xF4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x4C, 0x14, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xD1, 0xF4, 0x12, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xF9, 0x4C, 0x14, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF9, 0x4C, 0x14, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xF9, 0x4C, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xF9, 0x4C, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x69, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x6D, 0x12, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xBD, 0x6D, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x15, 0x4A, 0x14, 0x00, + 0x02, 0x04, 0x00, 0x00, 0xB5, 0x49, 0x14, 0x00, 0x04, 0x04, 0x00, 0x00, + 0x2D, 0x48, 0x14, 0x00, 0x06, 0x04, 0x00, 0x00, 0xF9, 0x47, 0x14, 0x00, + 0x09, 0x04, 0x00, 0x00, 0x95, 0x49, 0x14, 0x00, 0x11, 0x04, 0x00, 0x00, + 0x11, 0x49, 0x14, 0x00, 0x0B, 0x04, 0x00, 0x00, 0xC1, 0x4A, 0x14, 0x00, + 0x0D, 0x04, 0x00, 0x00, 0x45, 0x4A, 0x14, 0x00, 0x0F, 0x04, 0x00, 0x00, + 0x61, 0x48, 0x14, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x91, 0x47, 0x14, 0x00, + 0x1E, 0x04, 0x00, 0x00, 0x75, 0x47, 0x14, 0x00, 0x1F, 0x04, 0x00, 0x00, + 0x59, 0x47, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x34, 0x17, 0x00, + 0x00, 0x14, 0x00, 0x00, 0xBD, 0x68, 0x14, 0x00, 0x02, 0x14, 0x00, 0x00, + 0xED, 0x65, 0x14, 0x00, 0x04, 0x14, 0x00, 0x00, 0x01, 0x67, 0x14, 0x00, + 0x07, 0x14, 0x00, 0x00, 0x01, 0x6A, 0x14, 0x00, 0x09, 0x14, 0x00, 0x00, + 0x75, 0x67, 0x14, 0x00, 0x17, 0x14, 0x00, 0x00, 0xB1, 0x72, 0x14, 0x00, + 0x19, 0x14, 0x00, 0x00, 0xB5, 0x6E, 0x14, 0x00, 0x0C, 0x14, 0x00, 0x00, + 0x01, 0x68, 0x14, 0x00, 0x18, 0x14, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x45, 0x6F, 0x14, 0x00, 0x13, 0x14, 0x00, 0x00, + 0x45, 0x73, 0x14, 0x00, 0x32, 0x00, 0x00, 0x00, 0x9D, 0x6F, 0x14, 0x00, + 0x15, 0x14, 0x00, 0x00, 0x11, 0x66, 0x14, 0x00, 0x0D, 0x00, 0x00, 0x00, + 0x89, 0x31, 0x14, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x1B, 0x00, 0x00, 0x00, + 0x89, 0x31, 0x14, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, + 0x6E, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x89, 0x31, 0x14, 0x00, 0x72, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, + 0x0E, 0x14, 0x00, 0x00, 0xF5, 0x6F, 0x14, 0x00, 0x10, 0x14, 0x00, 0x00, + 0xF1, 0x70, 0x14, 0x00, 0x11, 0x14, 0x00, 0x00, 0x91, 0x71, 0x14, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x1D, 0x8A, 0x14, 0x00, 0x03, 0x18, 0x00, 0x00, + 0x6D, 0x92, 0x14, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA1, 0x8C, 0x14, 0x00, + 0x03, 0x10, 0x00, 0x00, 0x09, 0x8D, 0x14, 0x00, 0x08, 0x18, 0x00, 0x00, + 0x71, 0x8C, 0x14, 0x00, 0x43, 0x00, 0x00, 0x00, 0x21, 0x8C, 0x14, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x8D, 0x92, 0x14, 0x00, 0x18, 0x14, 0x00, 0x00, + 0xA5, 0x90, 0x14, 0x00, 0x19, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xE5, 0x8F, 0x14, 0x00, 0x72, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, + 0x1B, 0x00, 0x00, 0x00, 0xE5, 0x8F, 0x14, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xD9, 0x94, 0x14, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x7D, 0x8F, 0x14, 0x00, + 0x4C, 0x00, 0x00, 0x00, 0x89, 0x31, 0x14, 0x00, 0x0D, 0x00, 0x00, 0x00, + 0x25, 0x90, 0x14, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x65, 0x90, 0x14, 0x00, + 0x00, 0x28, 0x00, 0x00, 0x99, 0x91, 0x14, 0x00, 0x07, 0x18, 0x00, 0x00, + 0xFD, 0x91, 0x14, 0x00, 0x09, 0x18, 0x00, 0x00, 0x19, 0x92, 0x14, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0xF5, 0xB3, 0x14, 0x00, 0x02, 0x1C, 0x00, 0x00, + 0xD5, 0xB6, 0x14, 0x00, 0x18, 0x14, 0x00, 0x00, 0xD9, 0xB7, 0x14, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xBD, 0xB2, 0x14, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x01, 0xB6, 0x14, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0xB6, 0x14, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0xB6, 0x14, 0x00, 0x1A, 0x14, 0x00, 0x00, + 0x9D, 0xB5, 0x14, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x81, 0xB6, 0x14, 0x00, + 0x3A, 0x00, 0x00, 0x00, 0x41, 0xB6, 0x14, 0x00, 0x04, 0x1C, 0x00, 0x00, + 0x01, 0xB3, 0x14, 0x00, 0x06, 0x1C, 0x00, 0x00, 0x39, 0xB7, 0x14, 0x00, + 0x08, 0x1C, 0x00, 0x00, 0x59, 0xB5, 0x14, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x8D, 0x31, 0x14, 0x00, 0x02, 0x10, 0x00, 0x00, 0x8D, 0x31, 0x14, 0x00, + 0x05, 0x10, 0x00, 0x00, 0x8D, 0x31, 0x14, 0x00, 0x00, 0x28, 0x00, 0x00, + 0x89, 0x31, 0x14, 0x00, 0x00, 0x10, 0x00, 0x00, 0x95, 0xBF, 0x14, 0x00, + 0x02, 0x10, 0x00, 0x00, 0xF5, 0xC0, 0x14, 0x00, 0x05, 0x10, 0x00, 0x00, + 0xF5, 0xBF, 0x14, 0x00, 0x07, 0x10, 0x00, 0x00, 0xF1, 0xC1, 0x14, 0x00, + 0x0A, 0x10, 0x00, 0x00, 0x7D, 0xC0, 0x14, 0x00, 0x01, 0x08, 0x00, 0x00, + 0x39, 0xC2, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x85, 0xC2, 0x14, 0x00, + 0x00, 0x28, 0x00, 0x00, 0xA1, 0xC2, 0x14, 0x00, 0x0A, 0x10, 0x00, 0x00, + 0x51, 0xC0, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x4D, 0xC2, 0x14, 0x00, + 0x00, 0x10, 0x00, 0x00, 0xD5, 0xC0, 0x14, 0x00, 0x07, 0x10, 0x00, 0x00, + 0xA1, 0xC0, 0x14, 0x00, 0xDC, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x45, 0x04, 0x15, 0x00, 0x01, 0x20, 0x00, 0x00, 0x69, 0x04, 0x15, 0x00, + 0x2B, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x15, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x55, 0xFF, 0x14, 0x00, 0x00, 0x28, 0x00, 0x00, 0x35, 0x01, 0x15, 0x00, + 0x0D, 0x26, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, }; char fw_adid_u03[1208] = { -0x61, 0xBD, 0x08, 0x00, 0xFD, 0x7D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x03, 0x08, 0x00, -0x71, 0x02, 0x08, 0x00, 0x21, 0x04, 0x08, 0x00, 0xD9, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x0F, 0x08, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x15, 0x08, 0x00, -0x6D, 0x18, 0x08, 0x00, 0xD1, 0x18, 0x08, 0x00, 0x15, 0x19, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x1D, 0x08, 0x00, -0xA1, 0x24, 0x08, 0x00, 0x05, 0x26, 0x08, 0x00, 0x3D, 0x2A, 0x08, 0x00, 0x9D, 0x55, 0x08, 0x00, 0x39, 0x76, 0x08, 0x00, -0x91, 0x76, 0x08, 0x00, 0x9D, 0x7C, 0x08, 0x00, 0xE5, 0x7C, 0x08, 0x00, 0x5D, 0x80, 0x08, 0x00, 0x75, 0xA9, 0x08, 0x00, -0x9D, 0xBE, 0x08, 0x00, 0xD5, 0xBE, 0x08, 0x00, 0x39, 0xC0, 0x08, 0x00, 0x6D, 0xC2, 0x08, 0x00, 0x3D, 0x05, 0x09, 0x00, -0xF1, 0x3B, 0x09, 0x00, 0x31, 0x3E, 0x09, 0x00, 0xFD, 0x40, 0x09, 0x00, 0x65, 0x9D, 0x09, 0x00, 0x25, 0xC0, 0x09, 0x00, -0xF9, 0xBB, 0x09, 0x00, 0x05, 0xA2, 0x09, 0x00, 0x91, 0xD7, 0x09, 0x00, 0x4D, 0xB2, 0x0A, 0x00, 0x25, 0xB6, 0x0A, 0x00, -0x75, 0xB8, 0x0A, 0x00, 0x2D, 0xB9, 0x0A, 0x00, 0x8D, 0xBB, 0x0A, 0x00, 0x99, 0xBC, 0x0A, 0x00, 0xA1, 0xC5, 0x0A, 0x00, -0x31, 0xCD, 0x0A, 0x00, 0x09, 0xDE, 0x0A, 0x00, 0xB9, 0xEE, 0x0A, 0x00, 0x35, 0x58, 0x09, 0x00, 0xB1, 0x58, 0x09, 0x00, -0x15, 0x54, 0x09, 0x00, 0xBD, 0x56, 0x09, 0x00, 0x11, 0x5B, 0x09, 0x00, 0xED, 0x5C, 0x09, 0x00, 0x15, 0x6C, 0x09, 0x00, -0xB9, 0x60, 0x09, 0x00, 0xDD, 0x29, 0x0B, 0x00, 0x05, 0x76, 0x09, 0x00, 0x75, 0x76, 0x09, 0x00, 0x3D, 0x7A, 0x09, 0x00, -0x5D, 0x7E, 0x09, 0x00, 0x69, 0x78, 0x09, 0x00, 0x61, 0x79, 0x09, 0x00, 0xD9, 0x7E, 0x09, 0x00, 0x35, 0x41, 0x0B, 0x00, -0xB5, 0x08, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x0C, 0x0B, 0x00, 0x85, 0x6F, 0x09, 0x00, 0xD5, 0x7B, 0x0B, 0x00, -0x75, 0x7C, 0x0B, 0x00, 0xDD, 0x6C, 0x09, 0x00, 0xA9, 0x6D, 0x09, 0x00, 0x75, 0x6E, 0x09, 0x00, 0xE9, 0x1F, 0x0B, 0x00, -0x35, 0x23, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x1B, 0x0B, 0x00, 0x45, 0x27, 0x0B, 0x00, 0x85, 0x1A, 0x0B, 0x00, -0x69, 0x17, 0x0B, 0x00, 0xDD, 0x27, 0x0B, 0x00, 0x31, 0x2B, 0x0B, 0x00, 0x25, 0x78, 0x0B, 0x00, 0x15, 0x65, 0x0B, 0x00, -0x3D, 0x6B, 0x0B, 0x00, 0x9D, 0x67, 0x0B, 0x00, 0x99, 0x6B, 0x0B, 0x00, 0xC5, 0x6C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, -0x2D, 0xAF, 0x0B, 0x00, 0x3D, 0x99, 0x0C, 0x00, 0xC5, 0xD9, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x95, 0x0C, 0x00, 0x3D, 0xD5, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xF5, 0xA4, 0x08, 0x00, 0xB5, 0xA5, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xFD, 0x50, 0x08, 0x00, 0x9D, 0x7D, 0x08, 0x00, 0xBD, 0x7D, 0x08, 0x00, 0xDD, 0x7D, 0x08, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x91, 0x08, 0x00, -0xAB, 0x91, 0x08, 0x00, 0xAD, 0x91, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x71, 0xD5, 0x09, 0x00, 0x6D, 0x0E, 0x08, 0x00, + 0x61, 0xBD, 0x08, 0x00, 0xFD, 0x7D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7D, 0x03, 0x08, 0x00, 0x71, 0x02, 0x08, 0x00, + 0x21, 0x04, 0x08, 0x00, 0xD9, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x15, 0x08, 0x00, + 0x6D, 0x18, 0x08, 0x00, 0xD1, 0x18, 0x08, 0x00, 0x15, 0x19, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF5, 0x1D, 0x08, 0x00, 0xA1, 0x24, 0x08, 0x00, + 0x05, 0x26, 0x08, 0x00, 0x3D, 0x2A, 0x08, 0x00, 0x9D, 0x55, 0x08, 0x00, + 0x39, 0x76, 0x08, 0x00, 0x91, 0x76, 0x08, 0x00, 0x9D, 0x7C, 0x08, 0x00, + 0xE5, 0x7C, 0x08, 0x00, 0x5D, 0x80, 0x08, 0x00, 0x75, 0xA9, 0x08, 0x00, + 0x9D, 0xBE, 0x08, 0x00, 0xD5, 0xBE, 0x08, 0x00, 0x39, 0xC0, 0x08, 0x00, + 0x6D, 0xC2, 0x08, 0x00, 0x3D, 0x05, 0x09, 0x00, 0xF1, 0x3B, 0x09, 0x00, + 0x31, 0x3E, 0x09, 0x00, 0xFD, 0x40, 0x09, 0x00, 0x65, 0x9D, 0x09, 0x00, + 0x25, 0xC0, 0x09, 0x00, 0xF9, 0xBB, 0x09, 0x00, 0x05, 0xA2, 0x09, 0x00, + 0x91, 0xD7, 0x09, 0x00, 0x4D, 0xB2, 0x0A, 0x00, 0x25, 0xB6, 0x0A, 0x00, + 0x75, 0xB8, 0x0A, 0x00, 0x2D, 0xB9, 0x0A, 0x00, 0x8D, 0xBB, 0x0A, 0x00, + 0x99, 0xBC, 0x0A, 0x00, 0xA1, 0xC5, 0x0A, 0x00, 0x31, 0xCD, 0x0A, 0x00, + 0x09, 0xDE, 0x0A, 0x00, 0xB9, 0xEE, 0x0A, 0x00, 0x35, 0x58, 0x09, 0x00, + 0xB1, 0x58, 0x09, 0x00, 0x15, 0x54, 0x09, 0x00, 0xBD, 0x56, 0x09, 0x00, + 0x11, 0x5B, 0x09, 0x00, 0xED, 0x5C, 0x09, 0x00, 0x15, 0x6C, 0x09, 0x00, + 0xB9, 0x60, 0x09, 0x00, 0xDD, 0x29, 0x0B, 0x00, 0x05, 0x76, 0x09, 0x00, + 0x75, 0x76, 0x09, 0x00, 0x3D, 0x7A, 0x09, 0x00, 0x5D, 0x7E, 0x09, 0x00, + 0x69, 0x78, 0x09, 0x00, 0x61, 0x79, 0x09, 0x00, 0xD9, 0x7E, 0x09, 0x00, + 0x35, 0x41, 0x0B, 0x00, 0xB5, 0x08, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCD, 0x0C, 0x0B, 0x00, 0x85, 0x6F, 0x09, 0x00, 0xD5, 0x7B, 0x0B, 0x00, + 0x75, 0x7C, 0x0B, 0x00, 0xDD, 0x6C, 0x09, 0x00, 0xA9, 0x6D, 0x09, 0x00, + 0x75, 0x6E, 0x09, 0x00, 0xE9, 0x1F, 0x0B, 0x00, 0x35, 0x23, 0x0B, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA1, 0x1B, 0x0B, 0x00, 0x45, 0x27, 0x0B, 0x00, + 0x85, 0x1A, 0x0B, 0x00, 0x69, 0x17, 0x0B, 0x00, 0xDD, 0x27, 0x0B, 0x00, + 0x31, 0x2B, 0x0B, 0x00, 0x25, 0x78, 0x0B, 0x00, 0x15, 0x65, 0x0B, 0x00, + 0x3D, 0x6B, 0x0B, 0x00, 0x9D, 0x67, 0x0B, 0x00, 0x99, 0x6B, 0x0B, 0x00, + 0xC5, 0x6C, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xAF, 0x0B, 0x00, + 0x3D, 0x99, 0x0C, 0x00, 0xC5, 0xD9, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x95, 0x0C, 0x00, + 0x3D, 0xD5, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xA4, 0x08, 0x00, + 0xB5, 0xA5, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFD, 0x50, 0x08, 0x00, 0x9D, 0x7D, 0x08, 0x00, 0xBD, 0x7D, 0x08, 0x00, + 0xDD, 0x7D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA9, 0x91, 0x08, 0x00, 0xAB, 0x91, 0x08, 0x00, 0xAD, 0x91, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xD5, 0x09, 0x00, 0x6D, 0x0E, 0x08, 0x00, }; char fw_patch_table_u03[1256] = { -0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x50, 0x54, 0x5F, 0x54, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, -0x54, 0x5F, 0x54, 0x52, 0x41, 0x50, 0x5F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, -0x00, 0xF0, 0x16, 0x00, 0x04, 0x23, 0xA3, 0x55, 0x00, 0x10, 0x08, 0x40, 0x88, 0x48, 0x0C, 0x00, 0x04, 0xF0, 0x16, 0x00, -0x00, 0x2B, 0x05, 0xE0, 0x04, 0x10, 0x08, 0x40, 0x58, 0x58, 0x0B, 0x00, 0x08, 0xF0, 0x16, 0x00, 0x00, 0x2B, 0xB1, 0xE7, -0x08, 0x10, 0x08, 0x40, 0x30, 0x5A, 0x0B, 0x00, 0x14, 0xEA, 0x16, 0x00, 0x02, 0x49, 0x8E, 0x46, 0x18, 0xEA, 0x16, 0x00, -0x00, 0xB5, 0x02, 0x4B, 0x1C, 0xEA, 0x16, 0x00, 0xDB, 0x6E, 0x00, 0xBD, 0x20, 0xEA, 0x16, 0x00, 0xD7, 0xCB, 0x0A, 0x00, -0x24, 0xEA, 0x16, 0x00, 0xAC, 0x2B, 0x16, 0x00, 0x0C, 0xF0, 0x16, 0x00, 0xC1, 0xF0, 0x1F, 0xFF, 0x0C, 0x10, 0x08, 0x40, -0xD2, 0xCB, 0x0A, 0x00, 0x00, 0xEA, 0x16, 0x00, 0x02, 0x49, 0x8E, 0x46, 0x04, 0xEA, 0x16, 0x00, 0x00, 0xB5, 0x02, 0x4B, -0x08, 0xEA, 0x16, 0x00, 0xDA, 0x6E, 0x00, 0xBD, 0x0C, 0xEA, 0x16, 0x00, 0xC1, 0xE6, 0x0A, 0x00, 0x10, 0xEA, 0x16, 0x00, -0xAC, 0x2B, 0x16, 0x00, 0x10, 0xF0, 0x16, 0x00, 0xC0, 0xF0, 0xA0, 0xF9, 0x10, 0x10, 0x08, 0x40, 0xBC, 0xE6, 0x0A, 0x00, -0x14, 0xF0, 0x16, 0x00, 0x43, 0x1C, 0x05, 0xE0, 0x14, 0x10, 0x08, 0x40, 0x1C, 0xFD, 0x0C, 0x00, 0x30, 0xEA, 0x16, 0x00, -0x01, 0x4B, 0x98, 0x47, 0x34, 0xEA, 0x16, 0x00, 0x01, 0x4B, 0x9F, 0x46, 0x38, 0xEA, 0x16, 0x00, 0xD9, 0x97, 0x10, 0x00, -0x3C, 0xEA, 0x16, 0x00, 0x59, 0x1E, 0x0D, 0x00, 0x18, 0xF0, 0x16, 0x00, 0x9C, 0xF0, 0x92, 0xFF, 0x18, 0x10, 0x08, 0x40, -0x08, 0x1B, 0x0D, 0x00, 0x1C, 0xF0, 0x16, 0x00, 0xEC, 0xE1, 0x10, 0x00, 0x1C, 0x10, 0x08, 0x40, 0x30, 0xB8, 0x0B, 0x00, -0x84, 0x10, 0x08, 0x40, 0x00, 0xF0, 0x16, 0x00, 0x80, 0x10, 0x08, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x58, 0x00, 0x10, 0x40, -0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5F, 0x54, 0x42, 0x34, 0x00, -0x02, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x16, 0x00, 0x99, 0x12, 0x10, 0x00, 0x98, 0x19, 0x16, 0x00, -0xA9, 0x23, 0x10, 0x00, 0x18, 0x1B, 0x16, 0x00, 0x81, 0x07, 0x10, 0x00, 0x20, 0x1B, 0x16, 0x00, 0xCD, 0x09, 0x10, 0x00, -0x28, 0x1B, 0x16, 0x00, 0xF1, 0x0B, 0x10, 0x00, 0xB0, 0x19, 0x16, 0x00, 0x21, 0x25, 0x10, 0x00, 0x70, 0x1A, 0x16, 0x00, -0xB9, 0x30, 0x10, 0x00, 0x6C, 0x1A, 0x16, 0x00, 0x19, 0x64, 0x10, 0x00, 0xE0, 0x1A, 0x16, 0x00, 0xB9, 0x69, 0x10, 0x00, -0xE0, 0x19, 0x16, 0x00, 0xCB, 0x09, 0x10, 0x00, 0xDC, 0x19, 0x16, 0x00, 0xC9, 0x09, 0x10, 0x00, 0x38, 0x19, 0x16, 0x00, -0x89, 0x54, 0x10, 0x00, 0x1C, 0x1B, 0x16, 0x00, 0x69, 0x56, 0x10, 0x00, 0x24, 0x1B, 0x16, 0x00, 0x75, 0x58, 0x10, 0x00, -0x7C, 0x1D, 0x16, 0x00, 0xDD, 0x5B, 0x10, 0x00, 0xB0, 0x1A, 0x16, 0x00, 0xB9, 0x5A, 0x10, 0x00, 0xB0, 0x1D, 0x16, 0x00, -0x31, 0x6D, 0x10, 0x00, 0x8C, 0x1D, 0x16, 0x00, 0x19, 0x6E, 0x10, 0x00, 0x88, 0x1D, 0x16, 0x00, 0x49, 0x6E, 0x10, 0x00, -0x40, 0x19, 0x16, 0x00, 0xF5, 0x6E, 0x10, 0x00, 0x2C, 0x1B, 0x16, 0x00, 0x51, 0x6F, 0x10, 0x00, 0x80, 0x1D, 0x16, 0x00, -0xC1, 0x5F, 0x10, 0x00, 0xF4, 0x19, 0x16, 0x00, 0x89, 0x6F, 0x10, 0x00, 0xEC, 0x19, 0x16, 0x00, 0x0D, 0x70, 0x10, 0x00, -0x54, 0x19, 0x16, 0x00, 0x31, 0x93, 0x10, 0x00, 0x14, 0x1B, 0x16, 0x00, 0x35, 0x94, 0x10, 0x00, 0x8C, 0x19, 0x16, 0x00, -0xE9, 0x71, 0x10, 0x00, 0x88, 0x19, 0x16, 0x00, 0xB9, 0x7A, 0x10, 0x00, 0x04, 0x1B, 0x16, 0x00, 0x35, 0x97, 0x10, 0x00, -0x90, 0x19, 0x16, 0x00, 0xFD, 0x9E, 0x10, 0x00, 0x94, 0x19, 0x16, 0x00, 0x5D, 0x9F, 0x10, 0x00, 0xE8, 0x19, 0x16, 0x00, -0x3D, 0xA2, 0x10, 0x00, 0xE4, 0x1A, 0x16, 0x00, 0x35, 0x02, 0x10, 0x00, 0xD4, 0x1A, 0x16, 0x00, 0x69, 0xA2, 0x10, 0x00, -0x64, 0x1A, 0x16, 0x00, 0x29, 0x33, 0x10, 0x00, 0x08, 0x1B, 0x16, 0x00, 0x55, 0x91, 0x10, 0x00, 0xBC, 0x19, 0x16, 0x00, -0x31, 0x38, 0x10, 0x00, 0x68, 0x1A, 0x16, 0x00, 0x79, 0x61, 0x10, 0x00, 0x40, 0x1A, 0x16, 0x00, 0x8D, 0x40, 0x10, 0x00, -0x3C, 0x1A, 0x16, 0x00, 0x41, 0x07, 0x10, 0x00, 0x4C, 0x1A, 0x16, 0x00, 0x85, 0x54, 0x10, 0x00, 0xB8, 0x19, 0x16, 0x00, -0x9D, 0x3B, 0x10, 0x00, 0x7C, 0x1A, 0x16, 0x00, 0x41, 0x2A, 0x10, 0x00, 0x68, 0xAD, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, -0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x4D, 0x4F, 0x44, 0x45, 0x5F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, -0x09, 0x00, 0x00, 0x00, 0xA4, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, -0x54, 0xE0, 0x10, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x50, 0xE0, 0x10, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xA8, 0xE5, 0x10, 0x00, -0x02, 0x00, 0x00, 0x00, 0xB8, 0xE5, 0x10, 0x00, 0x60, 0xE3, 0x16, 0x00, 0xBC, 0xE5, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, -0xAC, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xE5, 0x10, 0x00, 0x20, 0x60, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, -0x54, 0x5F, 0x50, 0x4F, 0x57, 0x45, 0x52, 0x5F, 0x4F, 0x4E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x3C, 0x00, 0x50, 0x40, 0x00, 0x00, 0x08, 0x00, 0x24, 0x01, 0x50, 0x40, 0x40, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, -0x54, 0x5F, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5F, 0x54, 0x41, 0x46, 0x00, 0x05, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, -0x24, 0x0A, 0x16, 0x00, 0x65, 0x7E, 0x10, 0x00, 0xA4, 0x12, 0x16, 0x00, 0x1D, 0x84, 0x10, 0x00, 0xBC, 0x12, 0x16, 0x00, -0xFD, 0xA3, 0x10, 0x00, 0xC4, 0x12, 0x16, 0x00, 0xE9, 0xB2, 0x10, 0x00, 0x0C, 0x08, 0x16, 0x00, 0x1D, 0xA3, 0x10, 0x00, -0x5C, 0x07, 0x16, 0x00, 0x45, 0xA3, 0x10, 0x00, 0x84, 0x15, 0x16, 0x00, 0xB9, 0x89, 0x10, 0x00, 0x4C, 0x18, 0x16, 0x00, -0x65, 0x8B, 0x10, 0x00, 0x6C, 0x18, 0x16, 0x00, 0xE9, 0x8B, 0x10, 0x00, 0xDC, 0x18, 0x16, 0x00, 0x35, 0x8C, 0x10, 0x00, -0xF4, 0x1A, 0x16, 0x00, 0x99, 0x05, 0x10, 0x00, 0xAC, 0x12, 0x16, 0x00, 0x35, 0x76, 0x10, 0x00, 0x04, 0x10, 0x16, 0x00, -0xD1, 0x8E, 0x10, 0x00, 0x0C, 0x10, 0x16, 0x00, 0x25, 0x90, 0x10, 0x00, 0x84, 0x10, 0x16, 0x00, 0x41, 0xAA, 0x10, 0x00, -0x9C, 0x10, 0x16, 0x00, 0xB1, 0xAA, 0x10, 0x00, 0xA4, 0x10, 0x16, 0x00, 0x71, 0xAB, 0x10, 0x00, 0x4C, 0x10, 0x16, 0x00, -0x5D, 0xAC, 0x10, 0x00, 0xE4, 0x0F, 0x16, 0x00, 0x65, 0x90, 0x10, 0x00, 0xEC, 0x13, 0x16, 0x00, 0xC5, 0xA7, 0x10, 0x00, -0x0C, 0x13, 0x16, 0x00, 0x55, 0xB3, 0x10, 0x00, 0xFC, 0x12, 0x16, 0x00, 0x1D, 0x26, 0x10, 0x00, 0x74, 0x0A, 0x16, 0x00, -0xED, 0x27, 0x10, 0x00, 0x74, 0x13, 0x16, 0x00, 0x35, 0xA8, 0x10, 0x00, 0x04, 0x14, 0x16, 0x00, 0xD9, 0xA8, 0x10, 0x00, -0x4C, 0x14, 0x16, 0x00, 0xB1, 0xAE, 0x10, 0x00, 0x3C, 0x0A, 0x16, 0x00, 0x05, 0xAF, 0x10, 0x00, 0x44, 0x0A, 0x16, 0x00, -0xF1, 0xAF, 0x10, 0x00, 0x04, 0x15, 0x16, 0x00, 0x51, 0x91, 0x10, 0x00, 0x2C, 0x13, 0x16, 0x00, 0xA1, 0x42, 0x10, 0x00, -0xD4, 0x0A, 0x16, 0x00, 0xED, 0xAD, 0x10, 0x00, 0x44, 0x11, 0x16, 0x00, 0x51, 0xAD, 0x10, 0x00, 0xE4, 0x12, 0x16, 0x00, -0x09, 0xA7, 0x10, 0x00, 0x7C, 0x09, 0x16, 0x00, 0x15, 0xCD, 0x10, 0x00, 0x8C, 0x09, 0x16, 0x00, 0x4D, 0xCD, 0x10, 0x00, -0x94, 0x09, 0x16, 0x00, 0xC1, 0xCD, 0x10, 0x00, 0x6C, 0x14, 0x16, 0x00, 0x71, 0xCD, 0x10, 0x00, 0x70, 0x30, 0x50, 0x40, -0x00, 0x00, 0x00, 0x00, 0x74, 0x30, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, -0x7C, 0x30, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x56, 0x45, 0x52, 0x5F, 0x49, 0x4E, -0x46, 0x4F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2D, 0x20, 0x53, 0x65, 0x70, 0x20, 0x31, 0x33, -0x20, 0x32, 0x30, 0x32, 0x32, 0x20, 0x31, 0x30, 0x3A, 0x33, 0x38, 0x3A, 0x33, 0x39, 0x20, 0x2D, 0x20, 0x67, 0x69, 0x74, -0x20, 0x30, 0x61, 0x61, 0x62, 0x66, 0x62, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x50, 0x54, 0x5F, 0x54, 0x41, 0x47, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x54, 0x52, + 0x41, 0x50, 0x5F, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x16, 0x00, 0x04, 0x23, 0xA3, 0x55, + 0x00, 0x10, 0x08, 0x40, 0x88, 0x48, 0x0C, 0x00, 0x04, 0xF0, 0x16, 0x00, + 0x00, 0x2B, 0x05, 0xE0, 0x04, 0x10, 0x08, 0x40, 0x58, 0x58, 0x0B, 0x00, + 0x08, 0xF0, 0x16, 0x00, 0x00, 0x2B, 0xB1, 0xE7, 0x08, 0x10, 0x08, 0x40, + 0x30, 0x5A, 0x0B, 0x00, 0x14, 0xEA, 0x16, 0x00, 0x02, 0x49, 0x8E, 0x46, + 0x18, 0xEA, 0x16, 0x00, 0x00, 0xB5, 0x02, 0x4B, 0x1C, 0xEA, 0x16, 0x00, + 0xDB, 0x6E, 0x00, 0xBD, 0x20, 0xEA, 0x16, 0x00, 0xD7, 0xCB, 0x0A, 0x00, + 0x24, 0xEA, 0x16, 0x00, 0xAC, 0x2B, 0x16, 0x00, 0x0C, 0xF0, 0x16, 0x00, + 0xC1, 0xF0, 0x1F, 0xFF, 0x0C, 0x10, 0x08, 0x40, 0xD2, 0xCB, 0x0A, 0x00, + 0x00, 0xEA, 0x16, 0x00, 0x02, 0x49, 0x8E, 0x46, 0x04, 0xEA, 0x16, 0x00, + 0x00, 0xB5, 0x02, 0x4B, 0x08, 0xEA, 0x16, 0x00, 0xDA, 0x6E, 0x00, 0xBD, + 0x0C, 0xEA, 0x16, 0x00, 0xC1, 0xE6, 0x0A, 0x00, 0x10, 0xEA, 0x16, 0x00, + 0xAC, 0x2B, 0x16, 0x00, 0x10, 0xF0, 0x16, 0x00, 0xC0, 0xF0, 0xA0, 0xF9, + 0x10, 0x10, 0x08, 0x40, 0xBC, 0xE6, 0x0A, 0x00, 0x14, 0xF0, 0x16, 0x00, + 0x43, 0x1C, 0x05, 0xE0, 0x14, 0x10, 0x08, 0x40, 0x1C, 0xFD, 0x0C, 0x00, + 0x30, 0xEA, 0x16, 0x00, 0x01, 0x4B, 0x98, 0x47, 0x34, 0xEA, 0x16, 0x00, + 0x01, 0x4B, 0x9F, 0x46, 0x38, 0xEA, 0x16, 0x00, 0xD9, 0x97, 0x10, 0x00, + 0x3C, 0xEA, 0x16, 0x00, 0x59, 0x1E, 0x0D, 0x00, 0x18, 0xF0, 0x16, 0x00, + 0x9C, 0xF0, 0x92, 0xFF, 0x18, 0x10, 0x08, 0x40, 0x08, 0x1B, 0x0D, 0x00, + 0x1C, 0xF0, 0x16, 0x00, 0xEC, 0xE1, 0x10, 0x00, 0x1C, 0x10, 0x08, 0x40, + 0x30, 0xB8, 0x0B, 0x00, 0x84, 0x10, 0x08, 0x40, 0x00, 0xF0, 0x16, 0x00, + 0x80, 0x10, 0x08, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x58, 0x00, 0x10, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x50, 0x41, + 0x54, 0x43, 0x48, 0x5F, 0x54, 0x42, 0x34, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2C, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x16, 0x00, 0x99, 0x12, 0x10, 0x00, + 0x98, 0x19, 0x16, 0x00, 0xA9, 0x23, 0x10, 0x00, 0x18, 0x1B, 0x16, 0x00, + 0x81, 0x07, 0x10, 0x00, 0x20, 0x1B, 0x16, 0x00, 0xCD, 0x09, 0x10, 0x00, + 0x28, 0x1B, 0x16, 0x00, 0xF1, 0x0B, 0x10, 0x00, 0xB0, 0x19, 0x16, 0x00, + 0x21, 0x25, 0x10, 0x00, 0x70, 0x1A, 0x16, 0x00, 0xB9, 0x30, 0x10, 0x00, + 0x6C, 0x1A, 0x16, 0x00, 0x19, 0x64, 0x10, 0x00, 0xE0, 0x1A, 0x16, 0x00, + 0xB9, 0x69, 0x10, 0x00, 0xE0, 0x19, 0x16, 0x00, 0xCB, 0x09, 0x10, 0x00, + 0xDC, 0x19, 0x16, 0x00, 0xC9, 0x09, 0x10, 0x00, 0x38, 0x19, 0x16, 0x00, + 0x89, 0x54, 0x10, 0x00, 0x1C, 0x1B, 0x16, 0x00, 0x69, 0x56, 0x10, 0x00, + 0x24, 0x1B, 0x16, 0x00, 0x75, 0x58, 0x10, 0x00, 0x7C, 0x1D, 0x16, 0x00, + 0xDD, 0x5B, 0x10, 0x00, 0xB0, 0x1A, 0x16, 0x00, 0xB9, 0x5A, 0x10, 0x00, + 0xB0, 0x1D, 0x16, 0x00, 0x31, 0x6D, 0x10, 0x00, 0x8C, 0x1D, 0x16, 0x00, + 0x19, 0x6E, 0x10, 0x00, 0x88, 0x1D, 0x16, 0x00, 0x49, 0x6E, 0x10, 0x00, + 0x40, 0x19, 0x16, 0x00, 0xF5, 0x6E, 0x10, 0x00, 0x2C, 0x1B, 0x16, 0x00, + 0x51, 0x6F, 0x10, 0x00, 0x80, 0x1D, 0x16, 0x00, 0xC1, 0x5F, 0x10, 0x00, + 0xF4, 0x19, 0x16, 0x00, 0x89, 0x6F, 0x10, 0x00, 0xEC, 0x19, 0x16, 0x00, + 0x0D, 0x70, 0x10, 0x00, 0x54, 0x19, 0x16, 0x00, 0x31, 0x93, 0x10, 0x00, + 0x14, 0x1B, 0x16, 0x00, 0x35, 0x94, 0x10, 0x00, 0x8C, 0x19, 0x16, 0x00, + 0xE9, 0x71, 0x10, 0x00, 0x88, 0x19, 0x16, 0x00, 0xB9, 0x7A, 0x10, 0x00, + 0x04, 0x1B, 0x16, 0x00, 0x35, 0x97, 0x10, 0x00, 0x90, 0x19, 0x16, 0x00, + 0xFD, 0x9E, 0x10, 0x00, 0x94, 0x19, 0x16, 0x00, 0x5D, 0x9F, 0x10, 0x00, + 0xE8, 0x19, 0x16, 0x00, 0x3D, 0xA2, 0x10, 0x00, 0xE4, 0x1A, 0x16, 0x00, + 0x35, 0x02, 0x10, 0x00, 0xD4, 0x1A, 0x16, 0x00, 0x69, 0xA2, 0x10, 0x00, + 0x64, 0x1A, 0x16, 0x00, 0x29, 0x33, 0x10, 0x00, 0x08, 0x1B, 0x16, 0x00, + 0x55, 0x91, 0x10, 0x00, 0xBC, 0x19, 0x16, 0x00, 0x31, 0x38, 0x10, 0x00, + 0x68, 0x1A, 0x16, 0x00, 0x79, 0x61, 0x10, 0x00, 0x40, 0x1A, 0x16, 0x00, + 0x8D, 0x40, 0x10, 0x00, 0x3C, 0x1A, 0x16, 0x00, 0x41, 0x07, 0x10, 0x00, + 0x4C, 0x1A, 0x16, 0x00, 0x85, 0x54, 0x10, 0x00, 0xB8, 0x19, 0x16, 0x00, + 0x9D, 0x3B, 0x10, 0x00, 0x7C, 0x1A, 0x16, 0x00, 0x41, 0x2A, 0x10, 0x00, + 0x68, 0xAD, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, + 0x54, 0x5F, 0x4D, 0x4F, 0x44, 0x45, 0x5F, 0x54, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xA4, 0xE5, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xE0, 0x10, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x50, 0xE0, 0x10, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0xA8, 0xE5, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xB8, 0xE5, 0x10, 0x00, 0x60, 0xE3, 0x16, 0x00, 0xBC, 0xE5, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xAC, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB0, 0xE5, 0x10, 0x00, 0x20, 0x60, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, + 0x54, 0x5F, 0x50, 0x4F, 0x57, 0x45, 0x52, 0x5F, 0x4F, 0x4E, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x50, 0x40, + 0x00, 0x00, 0x08, 0x00, 0x24, 0x01, 0x50, 0x40, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5F, + 0x54, 0x41, 0x46, 0x00, 0x05, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x24, 0x0A, 0x16, 0x00, 0x65, 0x7E, 0x10, 0x00, 0xA4, 0x12, 0x16, 0x00, + 0x1D, 0x84, 0x10, 0x00, 0xBC, 0x12, 0x16, 0x00, 0xFD, 0xA3, 0x10, 0x00, + 0xC4, 0x12, 0x16, 0x00, 0xE9, 0xB2, 0x10, 0x00, 0x0C, 0x08, 0x16, 0x00, + 0x1D, 0xA3, 0x10, 0x00, 0x5C, 0x07, 0x16, 0x00, 0x45, 0xA3, 0x10, 0x00, + 0x84, 0x15, 0x16, 0x00, 0xB9, 0x89, 0x10, 0x00, 0x4C, 0x18, 0x16, 0x00, + 0x65, 0x8B, 0x10, 0x00, 0x6C, 0x18, 0x16, 0x00, 0xE9, 0x8B, 0x10, 0x00, + 0xDC, 0x18, 0x16, 0x00, 0x35, 0x8C, 0x10, 0x00, 0xF4, 0x1A, 0x16, 0x00, + 0x99, 0x05, 0x10, 0x00, 0xAC, 0x12, 0x16, 0x00, 0x35, 0x76, 0x10, 0x00, + 0x04, 0x10, 0x16, 0x00, 0xD1, 0x8E, 0x10, 0x00, 0x0C, 0x10, 0x16, 0x00, + 0x25, 0x90, 0x10, 0x00, 0x84, 0x10, 0x16, 0x00, 0x41, 0xAA, 0x10, 0x00, + 0x9C, 0x10, 0x16, 0x00, 0xB1, 0xAA, 0x10, 0x00, 0xA4, 0x10, 0x16, 0x00, + 0x71, 0xAB, 0x10, 0x00, 0x4C, 0x10, 0x16, 0x00, 0x5D, 0xAC, 0x10, 0x00, + 0xE4, 0x0F, 0x16, 0x00, 0x65, 0x90, 0x10, 0x00, 0xEC, 0x13, 0x16, 0x00, + 0xC5, 0xA7, 0x10, 0x00, 0x0C, 0x13, 0x16, 0x00, 0x55, 0xB3, 0x10, 0x00, + 0xFC, 0x12, 0x16, 0x00, 0x1D, 0x26, 0x10, 0x00, 0x74, 0x0A, 0x16, 0x00, + 0xED, 0x27, 0x10, 0x00, 0x74, 0x13, 0x16, 0x00, 0x35, 0xA8, 0x10, 0x00, + 0x04, 0x14, 0x16, 0x00, 0xD9, 0xA8, 0x10, 0x00, 0x4C, 0x14, 0x16, 0x00, + 0xB1, 0xAE, 0x10, 0x00, 0x3C, 0x0A, 0x16, 0x00, 0x05, 0xAF, 0x10, 0x00, + 0x44, 0x0A, 0x16, 0x00, 0xF1, 0xAF, 0x10, 0x00, 0x04, 0x15, 0x16, 0x00, + 0x51, 0x91, 0x10, 0x00, 0x2C, 0x13, 0x16, 0x00, 0xA1, 0x42, 0x10, 0x00, + 0xD4, 0x0A, 0x16, 0x00, 0xED, 0xAD, 0x10, 0x00, 0x44, 0x11, 0x16, 0x00, + 0x51, 0xAD, 0x10, 0x00, 0xE4, 0x12, 0x16, 0x00, 0x09, 0xA7, 0x10, 0x00, + 0x7C, 0x09, 0x16, 0x00, 0x15, 0xCD, 0x10, 0x00, 0x8C, 0x09, 0x16, 0x00, + 0x4D, 0xCD, 0x10, 0x00, 0x94, 0x09, 0x16, 0x00, 0xC1, 0xCD, 0x10, 0x00, + 0x6C, 0x14, 0x16, 0x00, 0x71, 0xCD, 0x10, 0x00, 0x70, 0x30, 0x50, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x30, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x30, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x30, 0x50, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x43, 0x42, 0x54, 0x5F, 0x56, 0x45, + 0x52, 0x5F, 0x49, 0x4E, 0x46, 0x4F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x2D, 0x20, 0x53, 0x65, 0x70, 0x20, 0x31, 0x33, + 0x20, 0x32, 0x30, 0x32, 0x32, 0x20, 0x31, 0x30, 0x3A, 0x33, 0x38, 0x3A, + 0x33, 0x39, 0x20, 0x2D, 0x20, 0x67, 0x69, 0x74, 0x20, 0x30, 0x61, 0x61, + 0x62, 0x66, 0x62, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; char fw_patch_u03[59704] = { -0x10, 0xB5, 0x15, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x02, 0xD0, 0x14, 0x4B, 0x98, 0x47, 0x10, 0xBD, 0x13, 0x4B, 0x1B, 0x68, -0x3F, 0x22, 0x9A, 0x5C, 0x00, 0x2A, 0xF6, 0xD1, 0x3D, 0x32, 0x9C, 0x5C, 0x10, 0x4B, 0x1A, 0x78, 0x01, 0x32, 0xD2, 0xB2, -0x10, 0x2A, 0x10, 0xD8, 0x1A, 0x70, 0x0D, 0x49, 0x0A, 0x78, 0x12, 0x03, 0x92, 0xB2, 0x62, 0x23, 0x63, 0x43, 0x0B, 0x4C, -0x1C, 0x19, 0x22, 0x80, 0x0A, 0x78, 0x12, 0x09, 0x09, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x1A, 0x80, 0xDD, 0xE7, 0x05, 0x4B, -0x00, 0x22, 0x1A, 0x70, 0xEB, 0xE7, 0xC0, 0x46, 0x50, 0xE0, 0x10, 0x00, 0xC1, 0xE9, 0x0A, 0x00, 0x28, 0x27, 0x16, 0x00, -0xB0, 0xE6, 0x10, 0x00, 0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0x10, 0xB5, 0x04, 0x00, 0x0B, 0x4B, 0x1B, 0x68, -0x00, 0x2B, 0x03, 0xD0, 0x3A, 0x22, 0x9B, 0x5C, 0x01, 0x2B, 0x06, 0xD0, 0x20, 0x00, 0x08, 0x4B, 0x98, 0x47, 0x62, 0x68, -0x07, 0x4B, 0x1A, 0x60, 0x10, 0xBD, 0x07, 0x49, 0x0B, 0x68, 0x07, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x03, 0x13, 0x43, -0x0B, 0x60, 0xEF, 0xE7, 0x18, 0x27, 0x16, 0x00, 0x25, 0xC3, 0x0C, 0x00, 0x30, 0xE6, 0x10, 0x00, 0x00, 0x04, 0x60, 0x40, -0xFF, 0xFF, 0xDF, 0xFF, 0x10, 0xB5, 0x18, 0x4A, 0x00, 0x23, 0x00, 0x24, 0x14, 0x57, 0x84, 0x42, 0x04, 0xDA, 0x01, 0x33, -0xDB, 0xB2, 0x01, 0x32, 0x08, 0x2B, 0xF6, 0xD1, 0x12, 0x4A, 0xD2, 0x56, 0x82, 0x42, 0x05, 0xD0, 0x00, 0x29, 0x03, 0xD1, -0x00, 0x2B, 0x01, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, 0x1A, 0x1C, 0x07, 0x2B, 0x00, 0xD9, 0x07, 0x22, 0xD2, 0xB2, 0x0C, 0x4B, -0x99, 0x5C, 0x0C, 0x4A, 0x95, 0x23, 0x9B, 0x00, 0xD3, 0x5C, 0x1A, 0x1C, 0xDB, 0xB2, 0x8B, 0x42, 0x00, 0xD9, 0x0A, 0x1C, -0x07, 0x49, 0x08, 0x4B, 0xCB, 0x5C, 0x18, 0x1C, 0xDB, 0xB2, 0xD1, 0xB2, 0x8B, 0x42, 0x00, 0xD2, 0x10, 0x1C, 0xC0, 0xB2, -0x10, 0xBD, 0xC0, 0x46, 0x28, 0xE0, 0x10, 0x00, 0xBC, 0xDF, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0x55, 0x02, 0x00, 0x00, -0x10, 0xB5, 0x62, 0x22, 0x42, 0x43, 0x0F, 0x4B, 0x9C, 0x46, 0x62, 0x44, 0x13, 0x88, 0xDB, 0xB2, 0x1E, 0x2B, 0x13, 0xD0, -0x0C, 0x49, 0x0D, 0x48, 0x0C, 0x5C, 0x0D, 0x48, 0x09, 0x5C, 0x09, 0x19, 0x01, 0x20, 0x8B, 0x42, 0x09, 0xDB, 0x1B, 0x1B, -0xDB, 0xB2, 0x10, 0x2B, 0x08, 0xD0, 0x11, 0x88, 0xFF, 0x20, 0x81, 0x43, 0x0B, 0x43, 0x13, 0x80, 0x00, 0x20, 0x10, 0xBD, -0x0E, 0x3B, 0xE9, 0xE7, 0x0E, 0x33, 0xF4, 0xE7, 0x0C, 0x65, 0x61, 0x40, 0x7C, 0x1E, 0x16, 0x00, 0x57, 0x02, 0x00, 0x00, -0x55, 0x02, 0x00, 0x00, 0x30, 0xB5, 0x62, 0x22, 0x42, 0x43, 0x0F, 0x4B, 0x9C, 0x46, 0x62, 0x44, 0x13, 0x88, 0xDB, 0xB2, -0x1E, 0x2B, 0x12, 0xD0, 0x0C, 0x49, 0x0D, 0x48, 0x0C, 0x5C, 0x1D, 0x19, 0x03, 0x38, 0x09, 0x5C, 0x01, 0x20, 0x8D, 0x42, -0x08, 0xDC, 0xEB, 0xB2, 0x10, 0x2B, 0x08, 0xD0, 0x11, 0x88, 0xFF, 0x20, 0x81, 0x43, 0x0B, 0x43, 0x13, 0x80, 0x00, 0x20, -0x30, 0xBD, 0x0E, 0x3B, 0xEA, 0xE7, 0x0E, 0x33, 0xF4, 0xE7, 0xC0, 0x46, 0x0C, 0x65, 0x61, 0x40, 0x7C, 0x1E, 0x16, 0x00, -0x57, 0x02, 0x00, 0x00, 0x70, 0x47, 0x70, 0x47, 0x70, 0xB5, 0x00, 0x28, 0x1C, 0xD0, 0x12, 0x4B, 0x1D, 0x68, 0x00, 0x2D, -0x18, 0xD0, 0xE9, 0x78, 0x09, 0x02, 0x01, 0x23, 0x19, 0x43, 0x03, 0x33, 0xFF, 0x22, 0x0E, 0x48, 0x81, 0xF7, 0xFA, 0xFE, -0x04, 0x1E, 0x0E, 0xD0, 0x20, 0x00, 0x81, 0xF7, 0x1F, 0xFF, 0xAB, 0xF7, 0x23, 0xFB, 0x03, 0x00, 0x09, 0x48, 0x6A, 0x68, -0x9B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x43, 0x60, 0xD6, 0xF7, 0x9E, 0xFE, 0x70, 0xBD, 0x06, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xE9, 0xE7, 0xD8, 0xE5, 0x10, 0x00, 0x3F, 0x06, 0x00, 0x00, 0xFC, 0xE6, 0x10, 0x00, -0x28, 0x19, 0x16, 0x00, 0xF8, 0xB5, 0x05, 0x00, 0x22, 0x4B, 0x23, 0x4A, 0x13, 0x60, 0x02, 0x22, 0xFF, 0x32, 0x9C, 0x5C, -0x21, 0x4B, 0xE2, 0x18, 0x12, 0x01, 0x13, 0x88, 0x9B, 0x06, 0x5B, 0x0F, 0x01, 0x2B, 0x04, 0xD0, 0x13, 0x88, 0x9B, 0x06, -0x5B, 0x0F, 0x02, 0x2B, 0x0F, 0xD1, 0x23, 0x01, 0x18, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x1B, 0x7B, 0x00, 0x2B, 0x05, 0xD1, -0x13, 0x88, 0x38, 0x21, 0x8B, 0x43, 0x20, 0x39, 0x0B, 0x43, 0x13, 0x80, 0x15, 0x48, 0x83, 0xF7, 0xB9, 0xFF, 0x15, 0x4B, -0x2A, 0x68, 0x9A, 0x42, 0x0F, 0xD0, 0x14, 0x4F, 0xDE, 0x26, 0x76, 0x00, 0x00, 0x23, 0xBB, 0x51, 0x28, 0x00, 0xD7, 0xF7, -0x4B, 0xF9, 0x11, 0x4B, 0xBB, 0x51, 0xAB, 0xF7, 0xD5, 0xFA, 0xA4, 0x00, 0x0F, 0x4B, 0x18, 0x51, 0xF8, 0xBD, 0x0F, 0x4B, -0x1B, 0x68, 0x02, 0x2B, 0xEB, 0xD1, 0x2B, 0x7C, 0x9B, 0x00, 0x0D, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x68, 0x0C, 0x4A, -0x12, 0x68, 0x1A, 0x66, 0x1A, 0x61, 0xE0, 0xE7, 0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, 0x00, 0x10, 0x06, 0x04, -0xF8, 0xCD, 0x10, 0x00, 0xD1, 0x1F, 0x0D, 0x00, 0x28, 0x19, 0x16, 0x00, 0x35, 0x02, 0x10, 0x00, 0xE0, 0xE5, 0x10, 0x00, -0x50, 0xE0, 0x10, 0x00, 0xF4, 0x29, 0x16, 0x00, 0xE8, 0xE1, 0x10, 0x00, 0x30, 0xB5, 0x89, 0xB0, 0x04, 0x1E, 0x32, 0xD0, -0x9E, 0x23, 0xC5, 0x5C, 0x1B, 0x4B, 0x00, 0x93, 0x43, 0x68, 0x01, 0x93, 0x83, 0x68, 0x02, 0x93, 0x6B, 0x46, 0x1D, 0x76, -0x04, 0x95, 0x18, 0x4B, 0x03, 0x93, 0x83, 0x7D, 0x6A, 0x46, 0x13, 0x75, 0x01, 0x33, 0x53, 0x75, 0x00, 0x23, 0x93, 0x75, -0xB0, 0x22, 0x82, 0x5C, 0x69, 0x46, 0xCA, 0x75, 0x8B, 0x76, 0xCB, 0x76, 0x01, 0x33, 0x4B, 0x76, 0x68, 0x46, 0xD7, 0xF7, -0xFB, 0xF8, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0x47, 0x3A, 0x6A, 0x43, 0x0C, 0x4B, 0x9C, 0x46, 0x62, 0x44, -0x13, 0x88, 0xFF, 0x21, 0x8B, 0x43, 0x01, 0x21, 0x0B, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0xA0, 0x23, 0xE1, 0x54, 0x09, 0xB0, -0x30, 0xBD, 0x06, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xF6, 0xE7, 0xD1, 0xBD, 0x10, 0x00, -0xDE, 0x05, 0x00, 0x00, 0x1E, 0x65, 0x61, 0x40, 0x28, 0x19, 0x16, 0x00, 0x30, 0xB5, 0x89, 0xB0, 0x03, 0x00, 0x0D, 0x00, -0x89, 0x00, 0x2B, 0x4A, 0x8C, 0x58, 0x00, 0x2C, 0x36, 0xD0, 0xA6, 0x22, 0xA2, 0x5C, 0x12, 0x1A, 0x03, 0x20, 0x10, 0x40, -0xC0, 0x18, 0x00, 0x01, 0x00, 0x09, 0x63, 0x68, 0xC3, 0x1A, 0x1A, 0x01, 0x12, 0x09, 0x80, 0x21, 0x09, 0x05, 0x8A, 0x42, -0x26, 0xD8, 0x1B, 0x01, 0x20, 0x2B, 0x23, 0xD9, 0x20, 0x4B, 0x00, 0x93, 0x01, 0x90, 0xA3, 0x68, 0x02, 0x93, 0x6B, 0x46, -0x1D, 0x76, 0x04, 0x95, 0x1D, 0x4B, 0x03, 0x93, 0xA3, 0x7D, 0x6A, 0x46, 0x13, 0x75, 0x01, 0x33, 0x53, 0x75, 0x00, 0x23, -0x93, 0x75, 0xB0, 0x22, 0xA2, 0x5C, 0x69, 0x46, 0xCA, 0x75, 0x8B, 0x76, 0xCB, 0x76, 0x01, 0x33, 0x4B, 0x76, 0x68, 0x46, -0xD7, 0xF7, 0xA0, 0xF8, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0x9F, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x01, 0xD0, -0x09, 0xB0, 0x30, 0xBD, 0xA3, 0x6F, 0x9B, 0xB2, 0x62, 0x21, 0x4D, 0x43, 0x0D, 0x4A, 0xAA, 0x18, 0x13, 0x80, 0xA3, 0x6F, -0x1B, 0x0C, 0x0C, 0x4A, 0xAA, 0x18, 0x13, 0x80, 0x0B, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x0B, 0x4B, 0x1B, 0x68, 0xDB, 0x03, -0xFF, 0x22, 0xD2, 0x03, 0x1A, 0x40, 0x23, 0x6D, 0x13, 0x43, 0x9B, 0xB2, 0x2B, 0x80, 0xE3, 0xE7, 0x38, 0xE6, 0x10, 0x00, -0x39, 0xCB, 0x10, 0x00, 0xDE, 0x05, 0x00, 0x00, 0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0x10, 0x65, 0x61, 0x40, -0xC8, 0xE6, 0x10, 0x00, 0x10, 0xB5, 0x00, 0x28, 0x08, 0xD0, 0x08, 0x4B, 0x98, 0x47, 0x08, 0x4B, 0x1B, 0x68, 0xD9, 0x6A, -0x05, 0x20, 0xD7, 0xF7, 0x5B, 0xFF, 0x10, 0xBD, 0x05, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0xF7, 0xE7, 0xC0, 0x46, 0x85, 0xC0, 0x0A, 0x00, 0x18, 0x27, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x04, 0x4B, -0x98, 0x47, 0x04, 0x4B, 0x1B, 0x68, 0x59, 0x6B, 0x06, 0x20, 0xD7, 0xF7, 0x43, 0xFF, 0x10, 0xBD, 0xA5, 0xD7, 0x0A, 0x00, -0x24, 0x27, 0x16, 0x00, 0x30, 0xB5, 0x89, 0xB0, 0x04, 0x1E, 0x5A, 0xD0, 0x9F, 0x23, 0xC3, 0x5C, 0x01, 0x2B, 0x04, 0xD0, -0xA0, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x09, 0xB0, 0x30, 0xBD, 0x9D, 0x33, 0xC5, 0x5C, 0x2B, 0x4B, 0x00, 0x93, 0x43, 0x68, -0x01, 0x93, 0x83, 0x68, 0x02, 0x93, 0x6B, 0x46, 0x1D, 0x76, 0x04, 0x95, 0x27, 0x4B, 0x03, 0x93, 0x83, 0x7D, 0x6A, 0x46, -0x13, 0x75, 0x01, 0x33, 0x53, 0x75, 0x00, 0x23, 0x93, 0x75, 0xB0, 0x22, 0x82, 0x5C, 0x69, 0x46, 0xCA, 0x75, 0x8B, 0x76, -0xCB, 0x76, 0x01, 0x33, 0x4B, 0x76, 0x68, 0x46, 0xD7, 0xF7, 0x1A, 0xF8, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, -0x9F, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0xD3, 0xD1, 0x23, 0x6D, 0x01, 0x33, 0x5B, 0x08, 0xA2, 0x6F, 0x91, 0xB2, 0x62, 0x22, -0x55, 0x43, 0x17, 0x4A, 0xAA, 0x18, 0x11, 0x80, 0xA2, 0x6F, 0x12, 0x0C, 0x15, 0x49, 0x69, 0x18, 0x0A, 0x80, 0x15, 0x4A, -0x94, 0x46, 0x65, 0x44, 0x01, 0x33, 0x5B, 0x08, 0x13, 0x4A, 0x13, 0x43, 0x9B, 0xB2, 0x2B, 0x80, 0x9F, 0x23, 0xE3, 0x5C, -0x01, 0x2B, 0xB7, 0xD1, 0xA5, 0x33, 0xE2, 0x5C, 0x01, 0x32, 0xA3, 0x3B, 0x13, 0x40, 0x9E, 0x22, 0xA1, 0x5C, 0x9C, 0x3A, -0x0C, 0x48, 0xD7, 0xF7, 0x3D, 0xF9, 0xAA, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xA8, 0xE7, 0x0A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xA4, 0xE7, 0x39, 0xCB, 0x10, 0x00, 0xDE, 0x05, 0x00, 0x00, 0xFA, 0x64, 0x61, 0x40, -0xFC, 0x64, 0x61, 0x40, 0x10, 0x65, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, 0x7D, 0x03, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, -0x00, 0x09, 0x01, 0x4B, 0x18, 0x56, 0x70, 0x47, 0x28, 0xE0, 0x10, 0x00, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, -0xC0, 0xB5, 0x8A, 0x46, 0x5B, 0x49, 0x09, 0x78, 0x06, 0x29, 0x23, 0xD0, 0x5A, 0x49, 0x0C, 0x78, 0x01, 0x2C, 0x07, 0xD0, -0x20, 0x21, 0x55, 0x46, 0x69, 0x5C, 0x1E, 0x29, 0x08, 0xD8, 0x56, 0x49, 0x01, 0x25, 0x0D, 0x70, 0x20, 0x21, 0x55, 0x46, -0x69, 0x5C, 0x1F, 0x29, 0x00, 0xD9, 0x9B, 0xE0, 0x52, 0x4F, 0xE6, 0x25, 0x6D, 0x00, 0x00, 0x21, 0x79, 0x51, 0x51, 0x46, -0x50, 0x4E, 0xB0, 0x47, 0x50, 0x4B, 0x7B, 0x51, 0x4C, 0x4B, 0x1C, 0x70, 0x00, 0x20, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xA2, 0x46, 0xF0, 0xBD, 0x00, 0x21, 0xE5, 0x20, 0x81, 0xF7, 0xC8, 0xFD, 0x80, 0x46, 0x00, 0x28, 0x14, 0xD0, 0x20, 0x23, -0x52, 0x46, 0xD7, 0x5C, 0x04, 0x33, 0xD1, 0x5C, 0x53, 0x8C, 0xC9, 0x18, 0x89, 0xB2, 0x45, 0x4B, 0x9C, 0x46, 0x61, 0x44, -0x3A, 0x00, 0x40, 0x46, 0xD8, 0xF7, 0xDC, 0xFB, 0x00, 0x2F, 0x64, 0xD0, 0x45, 0x46, 0x41, 0x4B, 0x99, 0x46, 0x14, 0xE0, -0x3B, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xE3, 0xE7, 0x05, 0x2C, 0x27, 0xD0, 0x4B, 0x46, -0x1A, 0x88, 0x3B, 0x4B, 0x9A, 0x42, 0x36, 0xD0, 0xE2, 0x43, 0xBF, 0x18, 0xFF, 0xB2, 0x01, 0x34, 0x2D, 0x19, 0x00, 0x2F, -0x4B, 0xD0, 0x2C, 0x78, 0x6E, 0x78, 0x16, 0x2E, 0xED, 0xD0, 0xFF, 0x2E, 0xED, 0xD1, 0x0D, 0x2C, 0xEB, 0xD1, 0xAB, 0x78, -0x5D, 0x2B, 0xE8, 0xD1, 0xEB, 0x78, 0x00, 0x2B, 0xE5, 0xD1, 0x2B, 0x79, 0x03, 0x2B, 0xE2, 0xD1, 0x6B, 0x79, 0x00, 0x2B, -0xDF, 0xD1, 0x2D, 0x48, 0x83, 0xF7, 0xB6, 0xFD, 0x2C, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0xD7, 0xE7, 0xAB, 0x78, -0x01, 0x2B, 0xD4, 0xD1, 0xEB, 0x78, 0xFD, 0x2B, 0xD1, 0xD1, 0x2B, 0x79, 0x00, 0x2B, 0xCE, 0xD1, 0x6B, 0x79, 0x01, 0x2B, -0xCB, 0xD1, 0x25, 0x48, 0x83, 0xF7, 0xA2, 0xFD, 0x22, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0xC3, 0xE7, 0x1D, 0x4B, -0x5B, 0x88, 0xB3, 0x42, 0xC4, 0xD1, 0x1B, 0x4B, 0x9B, 0x68, 0x00, 0x2B, 0x0C, 0xD0, 0x19, 0x4B, 0x9A, 0x79, 0xA9, 0x1C, -0x98, 0x68, 0xD8, 0xF7, 0x5F, 0xFB, 0x00, 0x28, 0xB8, 0xD1, 0x18, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0xB3, 0xE7, -0x0E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEB, 0xE7, 0x20, 0x23, 0x52, 0x46, 0xD3, 0x5C, -0x00, 0x2B, 0x03, 0xD1, 0x40, 0x46, 0x81, 0xF7, 0xEB, 0xFD, 0x73, 0xE7, 0x50, 0x8C, 0xBA, 0xF7, 0xAD, 0xFD, 0xF7, 0xE7, -0x53, 0x46, 0x58, 0x8C, 0xBA, 0xF7, 0xA8, 0xFD, 0x6A, 0xE7, 0xC0, 0x46, 0xD0, 0xE5, 0x10, 0x00, 0x59, 0xA9, 0x16, 0x00, -0x28, 0x19, 0x16, 0x00, 0x45, 0xF8, 0x0B, 0x00, 0x99, 0x05, 0x10, 0x00, 0x00, 0x00, 0x61, 0x40, 0xC4, 0xE5, 0x10, 0x00, -0x88, 0xAC, 0x00, 0x00, 0x10, 0xCE, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0x00, 0xCE, 0x10, 0x00, 0x70, 0xB5, 0x0C, 0x00, -0x07, 0x4E, 0x8A, 0x25, 0x6D, 0x00, 0x00, 0x21, 0x71, 0x51, 0x21, 0x00, 0xB3, 0xF7, 0xF0, 0xFC, 0xA4, 0x00, 0x04, 0x4B, -0xE3, 0x58, 0x04, 0x4A, 0xDA, 0x61, 0x04, 0x4B, 0x73, 0x51, 0x70, 0xBD, 0x28, 0x19, 0x16, 0x00, 0x54, 0x27, 0x16, 0x00, -0x21, 0x61, 0x10, 0x00, 0x41, 0x07, 0x10, 0x00, 0x10, 0xB5, 0xD2, 0x23, 0x5B, 0x00, 0x1B, 0x68, 0x98, 0x47, 0x10, 0xBD, -0xF0, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0xE3, 0xB0, 0x01, 0xAC, 0xC2, 0x25, 0x6D, 0x00, 0x2A, 0x00, 0x00, 0x21, -0x20, 0x00, 0x7F, 0xF7, 0xAB, 0xFC, 0x7A, 0x4E, 0x2A, 0x00, 0x00, 0x21, 0x30, 0x68, 0x7F, 0xF7, 0xA5, 0xFC, 0x31, 0x68, -0x2A, 0x00, 0x01, 0xA8, 0xD8, 0xF7, 0x14, 0xFB, 0x75, 0x48, 0x83, 0xF7, 0x1D, 0xFD, 0x50, 0x22, 0x00, 0x21, 0x4E, 0xA8, -0x7F, 0xF7, 0x98, 0xFC, 0x00, 0x26, 0x9A, 0x23, 0x5B, 0x00, 0xE6, 0x54, 0x4E, 0xA9, 0x00, 0x20, 0x8B, 0xF7, 0x3A, 0xF8, -0x86, 0x3D, 0xC0, 0x23, 0x5B, 0x00, 0xE5, 0x54, 0x80, 0x3B, 0xFF, 0x3B, 0x98, 0x46, 0x82, 0x33, 0xFF, 0x33, 0x42, 0x46, -0xE2, 0x54, 0x03, 0x27, 0x82, 0x23, 0xFF, 0x33, 0xE7, 0x54, 0x0D, 0x3B, 0xE7, 0x54, 0x36, 0x23, 0xFF, 0x33, 0x99, 0x46, -0xE6, 0x54, 0x4E, 0xA9, 0x00, 0x20, 0x87, 0xF7, 0x6B, 0xFE, 0x4B, 0x46, 0xE0, 0x5C, 0x4E, 0xA9, 0x8B, 0xF7, 0x6A, 0xF8, -0x50, 0x22, 0x00, 0x21, 0x3A, 0xA8, 0x7F, 0xF7, 0x6D, 0xFC, 0xE4, 0x23, 0xE6, 0x54, 0x3A, 0xA9, 0x00, 0x20, 0x8B, 0xF7, -0x11, 0xF8, 0x32, 0x23, 0xFF, 0x33, 0xE5, 0x54, 0x30, 0x3B, 0xFF, 0x3B, 0x99, 0x22, 0x52, 0x00, 0xA3, 0x54, 0x02, 0x3A, -0xA3, 0x54, 0x0C, 0x3A, 0xA3, 0x54, 0x19, 0x3D, 0x43, 0x46, 0x63, 0x55, 0x3A, 0xA9, 0x01, 0x20, 0x87, 0xF7, 0x48, 0xFE, -0x60, 0x5D, 0x3A, 0xA9, 0x8B, 0xF7, 0x48, 0xF8, 0x4E, 0x4B, 0x1E, 0x60, 0x4E, 0x4D, 0x2E, 0x60, 0x4E, 0x4B, 0x42, 0x46, -0x1A, 0x60, 0x4E, 0x49, 0x0B, 0x68, 0x4E, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x4C, 0x4C, -0x27, 0x60, 0x4C, 0x4B, 0x19, 0x68, 0x4C, 0x48, 0xD7, 0xF7, 0x60, 0xFE, 0x0F, 0x23, 0x03, 0x40, 0x22, 0x68, 0x80, 0x21, -0x8A, 0x43, 0x0A, 0x43, 0x22, 0x60, 0x06, 0x09, 0xFF, 0x22, 0x16, 0x40, 0x46, 0x4F, 0x3E, 0x60, 0x00, 0x0B, 0x10, 0x40, -0x28, 0x60, 0x5A, 0x08, 0x9B, 0x1A, 0x1B, 0x01, 0x9B, 0x18, 0x43, 0x4A, 0x13, 0x60, 0x23, 0x68, 0x8B, 0x43, 0x23, 0x60, -0x41, 0x4B, 0x1B, 0x6F, 0x1B, 0x07, 0x06, 0xD1, 0x3F, 0x4A, 0x13, 0x6F, 0x71, 0x39, 0x8B, 0x43, 0x0D, 0x39, 0x0B, 0x43, -0x13, 0x67, 0x3C, 0x4B, 0x5B, 0x6F, 0x1B, 0x07, 0x06, 0xD1, 0x3A, 0x4A, 0x53, 0x6F, 0x0F, 0x21, 0x8B, 0x43, 0x0D, 0x39, -0x0B, 0x43, 0x53, 0x67, 0x36, 0x4B, 0x9B, 0x6F, 0x1B, 0x07, 0x06, 0xD1, 0x34, 0x4A, 0x93, 0x6F, 0x0F, 0x21, 0x8B, 0x43, -0x0D, 0x39, 0x0B, 0x43, 0x93, 0x67, 0x31, 0x4B, 0xDB, 0x6F, 0x1B, 0x07, 0x06, 0xD1, 0x2F, 0x4A, 0xD3, 0x6F, 0x0F, 0x21, -0x8B, 0x43, 0x0D, 0x39, 0x0B, 0x43, 0xD3, 0x67, 0x2B, 0x4B, 0x19, 0x69, 0x0F, 0x24, 0xA1, 0x43, 0x03, 0x20, 0x01, 0x43, -0x19, 0x61, 0x59, 0x69, 0xA1, 0x43, 0x01, 0x43, 0x59, 0x61, 0x99, 0x69, 0xA1, 0x43, 0x01, 0x43, 0x99, 0x61, 0xDA, 0x69, -0xA2, 0x43, 0x02, 0x43, 0xDA, 0x61, 0x18, 0x4B, 0x07, 0x22, 0x1A, 0x60, 0x01, 0xAA, 0x00, 0x23, 0x20, 0x21, 0x53, 0x54, -0x06, 0x93, 0x05, 0x93, 0x02, 0x93, 0x01, 0x93, 0x15, 0x4A, 0x13, 0x68, 0x1E, 0x39, 0x0B, 0x43, 0x13, 0x60, 0x1B, 0x4B, -0x1B, 0x68, 0x00, 0x2B, 0x03, 0xD0, 0x13, 0x68, 0x1E, 0x31, 0x0B, 0x43, 0x13, 0x60, 0x18, 0x4B, 0x9A, 0x68, 0x84, 0x23, -0x17, 0x49, 0xD1, 0x50, 0x17, 0x4B, 0x80, 0x22, 0x92, 0x01, 0x1A, 0x60, 0xC2, 0x22, 0x05, 0x4B, 0x18, 0x68, 0x52, 0x00, -0x01, 0xA9, 0xD8, 0xF7, 0x2F, 0xFA, 0x63, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF0, 0xBD, 0xFC, 0xE1, 0x10, 0x00, -0x20, 0xCE, 0x10, 0x00, 0x08, 0x20, 0x04, 0x40, 0x04, 0x20, 0x04, 0x40, 0x24, 0x20, 0x04, 0x40, 0x10, 0x20, 0x04, 0x40, -0xFF, 0xFE, 0xFF, 0xFF, 0x0C, 0x20, 0x04, 0x40, 0xB8, 0xE5, 0x10, 0x00, 0x00, 0x75, 0x19, 0x03, 0x00, 0x20, 0x04, 0x40, -0x28, 0x20, 0x04, 0x40, 0x00, 0x30, 0x50, 0x40, 0xBC, 0xE5, 0x10, 0x00, 0x00, 0xED, 0x00, 0xE0, 0xC5, 0x88, 0x08, 0x00, -0x00, 0xE1, 0x00, 0xE0, 0x70, 0x47, 0x70, 0x47, 0x3D, 0x4B, 0x3E, 0x4A, 0x1A, 0x60, 0x3E, 0x4B, 0x8D, 0x22, 0x12, 0x03, -0x1A, 0x60, 0x3D, 0x4B, 0x3D, 0x4A, 0x1A, 0x60, 0x3D, 0x4B, 0x3E, 0x4A, 0x1A, 0x60, 0x3E, 0x4B, 0x3E, 0x4A, 0x1A, 0x60, -0x3E, 0x4B, 0x3F, 0x4A, 0x1A, 0x60, 0x3F, 0x4B, 0x3F, 0x4A, 0x1A, 0x60, 0x3F, 0x4B, 0x40, 0x4A, 0x1A, 0x60, 0x40, 0x4B, -0x40, 0x4A, 0x1A, 0x60, 0x40, 0x4B, 0x41, 0x4A, 0x1A, 0x60, 0x41, 0x4B, 0x41, 0x4A, 0x1A, 0x60, 0x41, 0x4B, 0x42, 0x4A, -0x1A, 0x60, 0x42, 0x4B, 0x42, 0x4A, 0x1A, 0x60, 0x42, 0x4B, 0x43, 0x4A, 0x1A, 0x60, 0x43, 0x4B, 0x43, 0x4A, 0x1A, 0x60, -0x43, 0x4B, 0x44, 0x4A, 0x1A, 0x60, 0x44, 0x4B, 0x44, 0x4A, 0x1A, 0x60, 0x44, 0x4B, 0x45, 0x4A, 0x1A, 0x60, 0x45, 0x4B, -0x45, 0x4A, 0x1A, 0x60, 0x45, 0x4B, 0x46, 0x4A, 0x1A, 0x60, 0x46, 0x4B, 0x46, 0x4A, 0x1A, 0x60, 0x46, 0x4B, 0x88, 0x22, -0x52, 0x01, 0x1A, 0x60, 0x45, 0x4B, 0x46, 0x4A, 0x1A, 0x60, 0x46, 0x4B, 0x46, 0x4A, 0x13, 0x60, 0x46, 0x4A, 0x47, 0x49, -0x11, 0x60, 0x47, 0x4A, 0x13, 0x60, 0x47, 0x4A, 0x13, 0x60, 0x47, 0x4A, 0x13, 0x60, 0x47, 0x4B, 0x47, 0x4A, 0x1A, 0x60, -0x47, 0x4B, 0x48, 0x4A, 0x1A, 0x60, 0x48, 0x4B, 0x48, 0x4A, 0x1A, 0x60, 0x48, 0x4B, 0x49, 0x4A, 0x1A, 0x60, 0x49, 0x4B, -0x49, 0x4A, 0x1A, 0x60, 0x49, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0xFF, 0x22, -0x12, 0x02, 0x1A, 0x60, 0x49, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0x74, 0x22, -0x1A, 0x60, 0x4A, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0x4B, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0x04, 0x01, 0x58, 0x40, -0xFB, 0x33, 0x09, 0x00, 0x1C, 0x20, 0x62, 0x40, 0x28, 0x20, 0x62, 0x40, 0x20, 0x20, 0x91, 0x48, 0x14, 0x20, 0x62, 0x40, -0x83, 0x89, 0x01, 0x00, 0x54, 0x20, 0x62, 0x40, 0x34, 0x8F, 0x00, 0x00, 0x48, 0x07, 0x62, 0x40, 0xA0, 0x01, 0x1A, 0x02, -0x28, 0x07, 0x62, 0x40, 0x20, 0x00, 0x01, 0x00, 0x38, 0x07, 0x62, 0x40, 0xD4, 0x0F, 0x80, 0x04, 0x3C, 0x07, 0x62, 0x40, -0x64, 0x00, 0xC8, 0x00, 0x2C, 0x20, 0x62, 0x40, 0x20, 0xB2, 0x0C, 0x00, 0x0C, 0x20, 0x62, 0x40, 0x45, 0x2B, 0xAD, 0xE9, -0x30, 0x20, 0x62, 0x40, 0xD2, 0x30, 0x0C, 0x14, 0x34, 0x20, 0x62, 0x40, 0x02, 0x16, 0x00, 0x00, 0x54, 0x07, 0x62, 0x40, -0xFD, 0x20, 0x42, 0x21, 0x58, 0x07, 0x62, 0x40, 0x1E, 0xF0, 0x07, 0x00, 0x1C, 0x07, 0x62, 0x40, 0x33, 0x0A, 0x00, 0x00, -0x18, 0x20, 0x62, 0x40, 0x24, 0x41, 0x12, 0x00, 0x0C, 0x00, 0x62, 0x40, 0x00, 0x00, 0x04, 0x04, 0x90, 0x00, 0x62, 0x40, -0x82, 0x90, 0x06, 0x00, 0x34, 0x10, 0x62, 0x40, 0x80, 0x30, 0x00, 0x02, 0x14, 0x10, 0x62, 0x40, 0x7A, 0x11, 0x45, 0x04, -0x24, 0x20, 0x62, 0x40, 0x04, 0x20, 0x62, 0x40, 0xC0, 0xA9, 0x01, 0x00, 0x34, 0x08, 0x50, 0x00, 0x8C, 0x04, 0x60, 0x40, -0x10, 0x01, 0x60, 0x40, 0x58, 0x00, 0x7E, 0x02, 0x80, 0x08, 0x60, 0x40, 0x84, 0x08, 0x60, 0x40, 0x88, 0x08, 0x60, 0x40, -0x8C, 0x08, 0x60, 0x40, 0x34, 0x08, 0x00, 0x00, 0x18, 0x05, 0x62, 0x40, 0x0A, 0x88, 0x92, 0x36, 0x14, 0x05, 0x62, 0x40, -0x10, 0x1A, 0x0C, 0xA8, 0x2C, 0x05, 0x62, 0x40, 0x03, 0x14, 0x0C, 0x9C, 0x0C, 0x05, 0x62, 0x40, 0x13, 0x20, 0x20, 0x20, -0xA0, 0x05, 0x62, 0x40, 0x00, 0x0C, 0x15, 0x14, 0xA4, 0x05, 0x62, 0x40, 0x24, 0x36, 0x2D, 0x36, 0xF0, 0x05, 0x62, 0x40, -0x08, 0x05, 0x62, 0x40, 0x32, 0x31, 0x55, 0x54, 0x30, 0x05, 0x62, 0x40, 0x00, 0x12, 0x17, 0x13, 0x34, 0x05, 0x62, 0x40, -0xB0, 0x05, 0x62, 0x40, 0x55, 0x53, 0x00, 0x00, 0x1C, 0x05, 0x62, 0x40, 0x66, 0x57, 0x4B, 0x96, 0x2A, 0x49, 0x0B, 0x68, -0x2A, 0x4A, 0x1A, 0x40, 0xFC, 0x23, 0x9B, 0x05, 0x13, 0x43, 0x0B, 0x60, 0x28, 0x4B, 0x29, 0x4A, 0x1A, 0x60, 0x29, 0x4B, -0x29, 0x4A, 0x1A, 0x60, 0x29, 0x4B, 0x2A, 0x4A, 0x1A, 0x60, 0x2A, 0x4B, 0x2A, 0x4A, 0x1A, 0x60, 0x2A, 0x4B, 0x2B, 0x4A, -0x1A, 0x60, 0x2B, 0x4B, 0x2B, 0x4A, 0x1A, 0x60, 0x2B, 0x4B, 0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4A, 0x2C, 0x49, 0x11, 0x60, -0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4B, 0x2D, 0x4A, 0x1A, 0x60, 0x2D, 0x4B, -0x2D, 0x4A, 0x1A, 0x60, 0x2D, 0x4B, 0x2E, 0x4A, 0x1A, 0x60, 0x2E, 0x4B, 0x2E, 0x4A, 0x1A, 0x60, 0x2E, 0x4B, 0x2F, 0x4A, -0x1A, 0x60, 0x2F, 0x4B, 0x2F, 0x4A, 0x1A, 0x60, 0x2F, 0x4B, 0x30, 0x4A, 0x1A, 0x60, 0x30, 0x4B, 0x30, 0x4A, 0x1A, 0x60, -0x30, 0x4B, 0xFF, 0x22, 0x12, 0x02, 0x1A, 0x60, 0x2F, 0x4B, 0x30, 0x4A, 0x1A, 0x60, 0x30, 0x4B, 0x76, 0x22, 0x1A, 0x60, -0x2F, 0x4B, 0x30, 0x4A, 0x1A, 0x60, 0x30, 0x4B, 0x30, 0x4A, 0x1A, 0x60, 0x30, 0x4B, 0x31, 0x4A, 0x1A, 0x60, 0x31, 0x4B, -0x31, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x0C, 0x00, 0x58, 0x40, 0xFF, 0xFF, 0xFF, 0xC0, 0x04, 0x01, 0x58, 0x40, -0xFB, 0x33, 0x09, 0x00, 0x20, 0x40, 0x34, 0x40, 0x77, 0x0B, 0x00, 0x00, 0x24, 0x40, 0x34, 0x40, 0x94, 0xC5, 0x6E, 0x00, -0x28, 0x40, 0x34, 0x40, 0x02, 0x94, 0x00, 0x00, 0x2C, 0x40, 0x34, 0x40, 0x84, 0x18, 0x20, 0x56, 0x30, 0x40, 0x34, 0x40, -0x68, 0x51, 0x2E, 0x1A, 0x34, 0x08, 0x50, 0x00, 0x8C, 0x04, 0x60, 0x40, 0x10, 0x01, 0x60, 0x40, 0x58, 0x00, 0x7E, 0x02, -0x80, 0x08, 0x60, 0x40, 0x84, 0x08, 0x60, 0x40, 0x88, 0x08, 0x60, 0x40, 0x8C, 0x08, 0x60, 0x40, 0x34, 0x08, 0x00, 0x00, -0x18, 0x05, 0x62, 0x40, 0x0A, 0x88, 0x92, 0x36, 0x14, 0x05, 0x62, 0x40, 0x10, 0x1A, 0x0C, 0xA8, 0x2C, 0x05, 0x62, 0x40, -0x03, 0x14, 0x0C, 0x9C, 0x0C, 0x05, 0x62, 0x40, 0x13, 0x20, 0x20, 0x20, 0x08, 0x05, 0x62, 0x40, 0x32, 0x31, 0x55, 0x54, -0xA0, 0x05, 0x62, 0x40, 0x00, 0x16, 0x17, 0x0F, 0xA4, 0x05, 0x62, 0x40, 0x36, 0x36, 0x28, 0x36, 0xF0, 0x05, 0x62, 0x40, -0x30, 0x05, 0x62, 0x40, 0x00, 0x1A, 0x17, 0x13, 0x34, 0x05, 0x62, 0x40, 0xB0, 0x05, 0x62, 0x40, 0x55, 0x53, 0x00, 0x00, -0x1C, 0x05, 0x62, 0x40, 0x66, 0x57, 0x4B, 0x96, 0x90, 0x00, 0x62, 0x40, 0x32, 0x00, 0x05, 0x00, 0x10, 0x10, 0x62, 0x40, -0x43, 0x01, 0x00, 0x12, 0x10, 0xB5, 0x01, 0x28, 0x03, 0xD0, 0x02, 0x38, 0x01, 0x28, 0x05, 0xD9, 0x10, 0xBD, 0x87, 0xF7, -0x99, 0xFF, 0xFF, 0xF7, 0x2B, 0xFE, 0xF9, 0xE7, 0x88, 0xF7, 0x96, 0xF8, 0x0A, 0x4A, 0x11, 0x68, 0x80, 0x23, 0xDB, 0x05, -0x0B, 0x43, 0x13, 0x60, 0xFF, 0xF7, 0x32, 0xFF, 0x07, 0x4B, 0x1B, 0x68, 0x9B, 0x02, 0xEB, 0xD4, 0x05, 0x49, 0x0B, 0x68, -0x05, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x04, 0x13, 0x43, 0x0B, 0x60, 0xE2, 0xE7, 0xC0, 0x46, 0x1C, 0x20, 0x34, 0x40, -0x58, 0x40, 0x34, 0x40, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, -0x83, 0xB0, 0x01, 0x90, 0x0D, 0x00, 0x00, 0x24, 0x25, 0x4A, 0x26, 0x4B, 0x9B, 0x46, 0xE0, 0x23, 0xDB, 0x04, 0x9A, 0x46, -0xC0, 0x23, 0x9B, 0x05, 0x99, 0x46, 0x23, 0x4B, 0x98, 0x46, 0x23, 0x4B, 0x00, 0x93, 0x23, 0x4F, 0x23, 0x4E, 0x13, 0x68, -0x58, 0x46, 0x03, 0x40, 0x50, 0x46, 0x20, 0x40, 0x03, 0x43, 0x13, 0x60, 0x13, 0x68, 0x48, 0x46, 0x03, 0x43, 0x13, 0x60, -0x43, 0x46, 0x1B, 0x68, 0x00, 0x98, 0x00, 0x68, 0x1B, 0x04, 0x3B, 0x40, 0x40, 0x04, 0x40, 0x0C, 0x03, 0x43, 0x08, 0xC5, -0x13, 0x68, 0x33, 0x40, 0x13, 0x60, 0x80, 0x23, 0x5B, 0x04, 0x9C, 0x46, 0x64, 0x44, 0x80, 0x23, 0xDB, 0x04, 0x9C, 0x42, -0xDF, 0xD1, 0x04, 0x20, 0x01, 0x9B, 0x01, 0x2B, 0x06, 0xD0, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, -0xAB, 0x46, 0xF0, 0xBD, 0x0E, 0x4B, 0x1B, 0x68, 0x0B, 0x61, 0x0E, 0x4B, 0x1B, 0x68, 0x4B, 0x61, 0x0D, 0x4B, 0x1B, 0x68, -0x8B, 0x61, 0x0D, 0x4B, 0x1B, 0x68, 0xCB, 0x61, 0x0C, 0x4B, 0x1B, 0x68, 0x0B, 0x62, 0x05, 0x30, 0xE7, 0xE7, 0xC0, 0x46, -0x28, 0x05, 0x62, 0x40, 0xFF, 0xFF, 0xFF, 0xF8, 0x8C, 0x08, 0x62, 0x40, 0x90, 0x08, 0x62, 0x40, 0x00, 0x00, 0xFF, 0x7F, -0xFF, 0xFF, 0xFF, 0xCF, 0x30, 0x07, 0x62, 0x40, 0x34, 0x07, 0x62, 0x40, 0x5C, 0x07, 0x62, 0x40, 0x60, 0x07, 0x62, 0x40, -0x20, 0x20, 0x62, 0x40, 0x12, 0x04, 0x12, 0x4B, 0x1A, 0x40, 0x49, 0x04, 0x49, 0x0C, 0x0A, 0x43, 0x10, 0x4B, 0x1A, 0x60, -0x10, 0x4B, 0x1A, 0x68, 0x00, 0x06, 0xE0, 0x21, 0xC9, 0x04, 0x08, 0x40, 0x0E, 0x49, 0x0A, 0x40, 0x10, 0x43, 0x18, 0x60, -0x19, 0x68, 0x80, 0x22, 0x12, 0x06, 0x0A, 0x43, 0x1A, 0x60, 0x19, 0x68, 0x80, 0x22, 0xD2, 0x05, 0x0A, 0x43, 0x1A, 0x60, -0x1A, 0x68, 0x08, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x52, 0x00, 0x52, 0x08, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, -0x00, 0x00, 0xFF, 0x7F, 0x44, 0x05, 0x62, 0x40, 0x28, 0x05, 0x62, 0x40, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xBF, -0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, 0x1C, 0x49, 0x0B, 0x68, 0x99, 0x46, 0x1C, 0x4A, -0x1A, 0x40, 0x1C, 0x4B, 0x13, 0x43, 0x0B, 0x60, 0x1B, 0x4B, 0x1B, 0x68, 0x98, 0x46, 0x1B, 0x4B, 0x1B, 0x68, 0x9A, 0x46, -0x00, 0x24, 0xF0, 0x23, 0x47, 0x46, 0x9F, 0x43, 0x16, 0x4E, 0xE5, 0xB2, 0x00, 0x22, 0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, -0xB1, 0xFF, 0x23, 0x01, 0x3B, 0x43, 0x33, 0x60, 0x88, 0xF7, 0x3D, 0xF9, 0x69, 0x46, 0x01, 0xA8, 0x88, 0xF7, 0x4A, 0xF9, -0x00, 0x9A, 0x01, 0x99, 0x28, 0x00, 0xFF, 0xF7, 0xA3, 0xFF, 0x01, 0x34, 0x04, 0x2C, 0xE8, 0xD1, 0x07, 0x4B, 0x4A, 0x46, -0x1A, 0x60, 0x09, 0x4B, 0x42, 0x46, 0x1A, 0x60, 0x08, 0x4B, 0x52, 0x46, 0x1A, 0x60, 0x02, 0xB0, 0x1C, 0xBC, 0x90, 0x46, -0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x1C, 0x05, 0x62, 0x40, 0xFF, 0xFF, 0x8F, 0x7F, 0x0A, 0x00, 0x20, 0x00, -0x08, 0x05, 0x62, 0x40, 0x04, 0x00, 0x62, 0x40, 0x70, 0xB5, 0x0C, 0x4D, 0x2C, 0x68, 0x2A, 0x68, 0x0B, 0x4E, 0x32, 0x40, -0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, 0x2B, 0x60, 0x26, 0x20, 0x88, 0xF7, 0x3F, 0xFF, 0xFF, 0xF7, 0xA7, 0xFF, 0x88, 0xF7, -0x81, 0xFF, 0x2B, 0x68, 0xE4, 0x05, 0xE4, 0x0F, 0x24, 0x02, 0x33, 0x40, 0x1C, 0x43, 0x2C, 0x60, 0x70, 0xBD, 0xC0, 0x46, -0x00, 0x04, 0x60, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, 0x10, 0xB5, 0x26, 0x20, 0x88, 0xF7, 0x62, 0xF9, 0xFF, 0xF7, 0x92, 0xFF, -0x88, 0xF7, 0xBA, 0xF9, 0x10, 0xBD, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, -0x8B, 0xB0, 0x82, 0x46, 0x0C, 0x00, 0x03, 0x68, 0x7F, 0x22, 0x1A, 0x40, 0x93, 0x46, 0x1E, 0x09, 0x0F, 0x25, 0x2E, 0x40, -0x1D, 0x40, 0x01, 0x95, 0x0C, 0x22, 0x13, 0x42, 0x05, 0xD0, 0x35, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, -0x98, 0x47, 0x01, 0x9B, 0x9E, 0x42, 0x05, 0xD9, 0x30, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x2E, 0x4B, 0x98, 0x46, 0x1F, 0x68, 0x1A, 0x68, 0x2D, 0x4B, 0x99, 0x46, 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, -0x42, 0x46, 0x13, 0x60, 0x58, 0x46, 0x88, 0xF7, 0xF1, 0xFE, 0x53, 0x46, 0x19, 0x68, 0x03, 0xA8, 0x89, 0xF7, 0x0E, 0xF9, -0x88, 0xF7, 0x30, 0xFF, 0x43, 0x46, 0x1B, 0x68, 0xFF, 0x05, 0xFF, 0x0F, 0x3F, 0x02, 0x4A, 0x46, 0x13, 0x40, 0x1F, 0x43, -0x43, 0x46, 0x1F, 0x60, 0x01, 0x9B, 0x9E, 0x42, 0x30, 0xD8, 0x37, 0x00, 0x20, 0x36, 0x36, 0x01, 0x1D, 0x4B, 0xF6, 0x18, -0x03, 0xA9, 0x1D, 0x4B, 0x98, 0x46, 0xF0, 0x23, 0x1B, 0x05, 0x9C, 0x46, 0x23, 0x1D, 0x99, 0x46, 0x05, 0xE0, 0x01, 0x37, -0x10, 0x36, 0xFB, 0xB2, 0x01, 0x9A, 0x9A, 0x42, 0x1C, 0xD3, 0x7B, 0x18, 0x1A, 0x7D, 0x12, 0x02, 0xDB, 0x7B, 0x1A, 0x43, -0x43, 0x46, 0x1A, 0x43, 0x32, 0x60, 0x7B, 0x5C, 0x18, 0x05, 0x65, 0x46, 0x28, 0x40, 0x1B, 0x07, 0x5B, 0x0F, 0x5B, 0x07, -0x03, 0x43, 0x70, 0x68, 0x00, 0x02, 0x00, 0x0A, 0x03, 0x43, 0x73, 0x60, 0x00, 0x2C, 0xE2, 0xD0, 0xFB, 0x00, 0xE2, 0x50, -0x4A, 0x46, 0x70, 0x68, 0xD0, 0x50, 0xDC, 0xE7, 0x0B, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, -0xF0, 0xBD, 0xC0, 0x46, 0x28, 0x19, 0x16, 0x00, 0x00, 0x04, 0x60, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, 0xD8, 0x99, 0x16, 0x00, -0x00, 0x00, 0x80, 0x80, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x05, 0x00, -0x01, 0x91, 0x03, 0x68, 0x5A, 0x02, 0x52, 0x0E, 0x90, 0x46, 0x1C, 0x09, 0x0F, 0x26, 0x34, 0x40, 0x1E, 0x40, 0x0C, 0x22, -0x13, 0x42, 0x05, 0xD0, 0x38, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xB4, 0x42, 0x2F, 0xD9, -0x34, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x40, 0x46, 0x88, 0xF7, 0xAD, 0xF8, 0x29, 0x68, -0x02, 0xA8, 0x88, 0xF7, 0x09, 0xFB, 0x88, 0xF7, 0x03, 0xF9, 0x80, 0x22, 0x52, 0x00, 0x2D, 0x49, 0x2D, 0x48, 0xD7, 0xF7, -0x49, 0xFE, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x01, 0x35, 0xEB, 0xB2, -0x9E, 0x42, 0xEE, 0xD3, 0x2B, 0x01, 0xA8, 0x00, 0x63, 0x44, 0x1A, 0x68, 0x22, 0x40, 0x02, 0xA9, 0x41, 0x58, 0x00, 0x91, -0xC9, 0x01, 0x0A, 0x43, 0x1A, 0x60, 0x01, 0x9B, 0x00, 0x2B, 0xED, 0xD0, 0x1A, 0x50, 0xEB, 0xE7, 0x40, 0x46, 0x88, 0xF7, -0x83, 0xF8, 0x29, 0x68, 0x02, 0xA8, 0x88, 0xF7, 0xDF, 0xFA, 0x25, 0x00, 0xA2, 0x00, 0x02, 0xAB, 0x9C, 0x46, 0x62, 0x44, -0xFC, 0x23, 0x1B, 0x01, 0x98, 0x46, 0xF8, 0x23, 0x5B, 0x02, 0x9C, 0x46, 0x3F, 0x20, 0xF8, 0x23, 0x9B, 0x03, 0x9B, 0x46, -0x13, 0x68, 0x1F, 0x0A, 0x41, 0x46, 0x0F, 0x40, 0xB9, 0x46, 0xD9, 0x00, 0x0F, 0x00, 0x61, 0x46, 0x0F, 0x40, 0xBA, 0x46, -0x4F, 0x46, 0x51, 0x46, 0x0F, 0x43, 0xB9, 0x46, 0x19, 0x0D, 0x0F, 0x00, 0x07, 0x40, 0xBA, 0x46, 0x4F, 0x46, 0x51, 0x46, -0x0F, 0x43, 0x5B, 0x03, 0x59, 0x46, 0x0B, 0x40, 0x3B, 0x43, 0x08, 0xC2, 0x01, 0x34, 0xE4, 0xB2, 0xA6, 0x42, 0xE1, 0xD2, -0x88, 0xF7, 0xAC, 0xF8, 0x02, 0x4B, 0x9C, 0x46, 0x03, 0x4C, 0xB5, 0xE7, 0x28, 0x19, 0x16, 0x00, 0xD8, 0x97, 0x16, 0x00, -0x00, 0x50, 0x1E, 0x00, 0x7F, 0x00, 0x00, 0xE0, 0x70, 0xB5, 0x8E, 0xB0, 0x87, 0xF7, 0x76, 0xFF, 0x04, 0x00, 0x01, 0x28, -0x05, 0xD0, 0x83, 0x1E, 0xDB, 0xB2, 0x01, 0x2B, 0x24, 0xD9, 0x0E, 0xB0, 0x70, 0xBD, 0x1C, 0x4B, 0x00, 0x93, 0x1C, 0x4C, -0x25, 0x68, 0xF0, 0x23, 0x2A, 0x00, 0x9A, 0x43, 0x13, 0x00, 0x70, 0x22, 0x13, 0x43, 0x23, 0x60, 0x01, 0xA9, 0x68, 0x46, -0xFF, 0xF7, 0x56, 0xFF, 0x25, 0x60, 0x16, 0x4B, 0x00, 0x93, 0x00, 0x21, 0x68, 0x46, 0x88, 0xF7, 0xE9, 0xFC, 0x00, 0x20, -0x88, 0xF7, 0xD0, 0xFB, 0x05, 0xA9, 0x01, 0x20, 0xFF, 0xF7, 0xB0, 0xFD, 0x01, 0x20, 0x89, 0xF7, 0x43, 0xFA, 0xFF, 0xF7, -0xAF, 0xFE, 0xDA, 0xE7, 0x0A, 0x4B, 0x00, 0x93, 0x0A, 0x4D, 0x2E, 0x68, 0xF0, 0x23, 0x32, 0x00, 0x9A, 0x43, 0x13, 0x00, -0x70, 0x22, 0x13, 0x43, 0x2B, 0x60, 0x01, 0xA9, 0x68, 0x46, 0xFF, 0xF7, 0xA9, 0xFE, 0x2E, 0x60, 0x20, 0x00, 0x89, 0xF7, -0x2D, 0xFA, 0xFF, 0xF7, 0x7B, 0xFE, 0xC4, 0xE7, 0x03, 0x42, 0x26, 0x00, 0x08, 0x05, 0x62, 0x40, 0x0F, 0x30, 0x02, 0x00, -0x30, 0xB5, 0x83, 0xB0, 0x41, 0x4B, 0x18, 0x78, 0x87, 0xF7, 0x12, 0xFF, 0x40, 0x4A, 0x80, 0x23, 0x5B, 0x00, 0x06, 0x21, -0xD1, 0x50, 0x3F, 0x4B, 0x5A, 0x68, 0x3F, 0x49, 0x0A, 0x40, 0x5A, 0x60, 0x59, 0x68, 0x80, 0x22, 0x92, 0x02, 0x0A, 0x43, -0x5A, 0x60, 0x19, 0x00, 0x44, 0x22, 0x0B, 0x6B, 0x13, 0x40, 0x04, 0x2B, 0xFB, 0xD1, 0x39, 0x4B, 0x18, 0x68, 0x39, 0x49, -0xD7, 0xF7, 0x32, 0xF9, 0xA0, 0x23, 0x5B, 0x03, 0x03, 0x43, 0x37, 0x4A, 0x13, 0x60, 0x37, 0x49, 0x08, 0x43, 0x10, 0x60, -0x13, 0x60, 0x30, 0x4B, 0x59, 0x68, 0x35, 0x4A, 0x0A, 0x43, 0x5A, 0x60, 0x2C, 0x49, 0x9A, 0x22, 0x52, 0x00, 0x80, 0x20, -0x40, 0x01, 0x88, 0x50, 0x1A, 0x68, 0x40, 0x20, 0x02, 0x43, 0x1A, 0x60, 0x18, 0x68, 0x02, 0x24, 0x20, 0x43, 0x18, 0x60, -0x48, 0x6F, 0x01, 0x22, 0x10, 0x43, 0x48, 0x67, 0x59, 0x6D, 0x2B, 0x4A, 0x11, 0x40, 0x59, 0x65, 0x5A, 0x6D, 0x22, 0x43, -0x5A, 0x65, 0x5A, 0x6D, 0x28, 0x49, 0x0A, 0x40, 0x5A, 0x65, 0x87, 0xF7, 0xE1, 0xFE, 0x04, 0x00, 0x80, 0x22, 0x52, 0x00, -0x25, 0x49, 0x26, 0x48, 0xD7, 0xF7, 0x4C, 0xFD, 0x80, 0x22, 0x25, 0x49, 0x25, 0x48, 0xD7, 0xF7, 0x47, 0xFD, 0x01, 0x2C, -0x05, 0xD1, 0x17, 0x4B, 0xDB, 0x6D, 0x9B, 0x07, 0x0D, 0xD5, 0x03, 0xB0, 0x30, 0xBD, 0xC0, 0x22, 0x92, 0x00, 0x20, 0x49, -0x20, 0x48, 0xD7, 0xF7, 0x39, 0xFD, 0x80, 0x22, 0x1F, 0x49, 0x20, 0x48, 0xD7, 0xF7, 0x34, 0xFD, 0xED, 0xE7, 0x20, 0x00, -0x87, 0xF7, 0xD2, 0xFE, 0x20, 0x00, 0xFF, 0xF7, 0xF1, 0xFC, 0x00, 0x23, 0x01, 0x93, 0x00, 0x93, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0xFF, 0xF7, 0x39, 0xFF, 0x05, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0xDF, 0xD1, 0x16, 0x4A, 0x13, 0x68, 0x01, 0x21, -0x8B, 0x43, 0x13, 0x60, 0xD9, 0xE7, 0xC0, 0x46, 0xB4, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x50, 0x40, 0x00, 0x60, 0x50, 0x40, -0xFF, 0xFF, 0xFB, 0xFF, 0xB0, 0x06, 0x16, 0x00, 0x40, 0x42, 0x0F, 0x00, 0x08, 0x00, 0x58, 0x40, 0x00, 0x00, 0x14, 0x80, -0x02, 0x88, 0x01, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x58, 0xE0, 0x10, 0x00, 0xD8, 0x97, 0x16, 0x00, -0x58, 0xE1, 0x10, 0x00, 0xD8, 0x98, 0x16, 0x00, 0x18, 0xE2, 0x10, 0x00, 0xD8, 0x99, 0x16, 0x00, 0x18, 0xE5, 0x10, 0x00, -0x58, 0x99, 0x16, 0x00, 0x04, 0x30, 0x34, 0x40, 0x80, 0x00, 0x01, 0x4B, 0xC0, 0x58, 0x70, 0x47, 0x38, 0x27, 0x16, 0x00, -0x80, 0x00, 0x01, 0x4B, 0xC0, 0x58, 0x70, 0x47, 0x54, 0x27, 0x16, 0x00, 0x80, 0x00, 0x01, 0x4B, 0x19, 0x50, 0x70, 0x47, -0x54, 0x27, 0x16, 0x00, 0x03, 0x23, 0x03, 0x40, 0x8B, 0x42, 0x05, 0xD8, 0x03, 0x23, 0x98, 0x43, 0x40, 0x18, 0x00, 0x01, -0x00, 0x09, 0x70, 0x47, 0x03, 0x30, 0x03, 0x23, 0x98, 0x43, 0x40, 0x18, 0xF7, 0xE7, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, -0x00, 0xB5, 0x05, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x06, 0xAB, 0x04, 0xCB, 0x90, 0x46, 0x1A, 0x78, 0x1B, 0x4B, 0x1B, 0x78, -0x00, 0x2B, 0x01, 0xD0, 0x00, 0x2A, 0x06, 0xD0, 0x18, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x00, 0x21, 0x99, 0x70, 0xD9, 0x70, -0x5A, 0x70, 0xAB, 0x68, 0x2A, 0x69, 0x94, 0x46, 0x63, 0x44, 0x18, 0x00, 0x13, 0x49, 0xD7, 0xF7, 0x63, 0xF8, 0x06, 0x00, -0x10, 0x4B, 0x5D, 0x60, 0x9F, 0x60, 0xDC, 0x60, 0x18, 0x61, 0x00, 0x2C, 0x05, 0xD1, 0x0F, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0A, 0x4D, 0x21, 0x00, 0x38, 0x00, 0xD7, 0xF7, 0xD6, 0xF8, 0x29, 0x77, 0x43, 0x46, -0x6B, 0x61, 0xA4, 0x1B, 0x62, 0x01, 0x12, 0x1B, 0x92, 0x00, 0x12, 0x19, 0x90, 0x00, 0x12, 0x18, 0x78, 0x3A, 0xAA, 0x61, -0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x74, 0xE6, 0x10, 0x00, 0x71, 0x02, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, -0xF0, 0xB5, 0xDE, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, 0x80, 0x46, 0x00, 0x91, 0x01, 0x92, 0x99, 0x46, -0x40, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0xB0, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA3, 0x46, 0xF0, 0xBD, -0x3C, 0x4B, 0x1E, 0x68, 0xB4, 0x68, 0x00, 0x2C, 0xF4, 0xD0, 0x00, 0x25, 0x1F, 0x23, 0x9B, 0x46, 0x01, 0x27, 0x03, 0xE0, -0x3B, 0x00, 0x83, 0x40, 0x9C, 0x43, 0x0D, 0xD0, 0x20, 0x00, 0xD7, 0xF7, 0x8B, 0xF9, 0x5B, 0x46, 0x18, 0x1A, 0x43, 0x1C, -0xDB, 0x00, 0xF3, 0x18, 0x5B, 0x68, 0x00, 0x2B, 0xF0, 0xD0, 0x01, 0x35, 0xED, 0xB2, 0xED, 0xE7, 0x01, 0x2D, 0xDB, 0xD1, -0x2C, 0x4B, 0x5C, 0x68, 0xA3, 0x68, 0x22, 0x69, 0x94, 0x46, 0x63, 0x44, 0x1E, 0x00, 0x2B, 0x49, 0x18, 0x00, 0xD6, 0xF7, -0xFD, 0xFF, 0x05, 0x00, 0x64, 0x68, 0x04, 0x19, 0x27, 0x49, 0x30, 0x00, 0xD7, 0xF7, 0x7C, 0xF8, 0x4B, 0x46, 0x9B, 0x68, -0x9C, 0x46, 0x8C, 0x45, 0x89, 0x41, 0x49, 0x42, 0x64, 0x18, 0x4B, 0x46, 0x99, 0x8A, 0x89, 0x04, 0x49, 0x0F, 0x04, 0x29, -0x03, 0xD0, 0x20, 0x00, 0xFF, 0xF7, 0x54, 0xFF, 0x04, 0x00, 0x43, 0x46, 0x1B, 0x68, 0xE1, 0x1A, 0x0A, 0x01, 0x12, 0x09, -0x80, 0x20, 0x00, 0x05, 0x82, 0x42, 0x11, 0xD8, 0x09, 0x01, 0x0F, 0xD0, 0x15, 0x4A, 0xD1, 0x68, 0xCB, 0x18, 0xE2, 0x1A, -0x12, 0x01, 0x12, 0x09, 0x82, 0x42, 0x07, 0xD8, 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x1A, 0x1B, 0x01, 0x02, 0xD0, 0x64, 0x1A, -0x24, 0x01, 0x24, 0x09, 0x43, 0x46, 0x1C, 0x60, 0x0C, 0x4B, 0xDA, 0x68, 0x55, 0x1B, 0x68, 0x01, 0x40, 0x1B, 0x80, 0x00, -0x40, 0x19, 0x82, 0x00, 0x80, 0x18, 0x0B, 0x4A, 0x94, 0x46, 0x60, 0x44, 0x00, 0x9A, 0x10, 0x60, 0xD8, 0x68, 0x60, 0x28, -0x02, 0xD8, 0x01, 0x9B, 0x18, 0x60, 0x87, 0xE7, 0x24, 0x21, 0xD6, 0xF7, 0xB1, 0xFF, 0x01, 0x9B, 0x18, 0x60, 0x81, 0xE7, -0x74, 0xE6, 0x10, 0x00, 0xF4, 0xE1, 0x10, 0x00, 0x71, 0x02, 0x00, 0x00, 0x1E, 0xFB, 0xFF, 0xFF, 0x03, 0x4B, 0x1B, 0x78, -0x00, 0x2B, 0x02, 0xD0, 0x01, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x70, 0x47, 0x74, 0xE6, 0x10, 0x00, 0xF0, 0xB5, 0xDE, 0x46, -0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x06, 0x00, 0x01, 0x92, 0x38, 0x4B, 0x38, 0x4A, 0x13, 0x60, -0x9C, 0x68, 0x00, 0x2C, 0x08, 0xD0, 0x43, 0x68, 0x9B, 0x46, 0x36, 0x4B, 0x99, 0x46, 0x36, 0x4B, 0x98, 0x46, 0x33, 0x4B, -0x9A, 0x46, 0x0F, 0xE0, 0xD5, 0xF7, 0x8C, 0xF9, 0x04, 0x1E, 0x5B, 0xD0, 0x73, 0x68, 0x9B, 0x46, 0xF1, 0xE7, 0x75, 0x60, -0x53, 0x46, 0x1B, 0x68, 0x9B, 0x68, 0xA3, 0x42, 0x46, 0xD0, 0x24, 0x68, 0x00, 0x2C, 0x47, 0xD0, 0x21, 0x00, 0x30, 0x00, -0xC8, 0x47, 0x00, 0x28, 0x43, 0xD0, 0x05, 0x28, 0xF0, 0xD0, 0xA3, 0x68, 0x22, 0x69, 0x94, 0x46, 0x63, 0x44, 0x1F, 0x00, -0x41, 0x46, 0x18, 0x00, 0xD6, 0xF7, 0x64, 0xFF, 0x63, 0x68, 0xC5, 0x18, 0x41, 0x46, 0x38, 0x00, 0xD6, 0xF7, 0xE4, 0xFF, -0xB3, 0x68, 0x9C, 0x46, 0x8C, 0x45, 0x89, 0x41, 0x49, 0x42, 0x6D, 0x18, 0xB1, 0x8A, 0x89, 0x04, 0x49, 0x0F, 0x04, 0x29, -0x03, 0xD0, 0x28, 0x00, 0xFF, 0xF7, 0xBE, 0xFE, 0x05, 0x00, 0x5B, 0x46, 0xEB, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x22, -0x12, 0x05, 0x93, 0x42, 0x04, 0xD9, 0x5B, 0x46, 0x5B, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, 0x01, 0x9A, 0x93, 0x42, -0xC1, 0xD9, 0x63, 0x7E, 0x0B, 0x2B, 0x03, 0xD8, 0x10, 0x4A, 0xDA, 0x40, 0xD3, 0x07, 0xBA, 0xD4, 0xA3, 0x7D, 0xB2, 0x7D, -0x01, 0x20, 0x9A, 0x42, 0x07, 0xD8, 0x01, 0x33, 0xB3, 0x75, 0x04, 0xE0, 0xD5, 0xF7, 0x38, 0xF9, 0x04, 0x00, 0xB5, 0xE7, -0x00, 0x20, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x00, 0x20, 0xF6, 0xE7, -0x64, 0x2A, 0x16, 0x00, 0x10, 0xE7, 0x10, 0x00, 0x51, 0x62, 0x0D, 0x00, 0x71, 0x02, 0x00, 0x00, 0x6A, 0x0C, 0x00, 0x00, -0x01, 0x4B, 0x18, 0x68, 0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x1B, 0x68, 0x01, 0x20, 0x18, 0x40, -0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x18, 0x68, 0x80, 0x07, 0xC0, 0x0F, 0x70, 0x47, 0xC0, 0x46, -0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0x0F, 0xC0, 0x07, 0x70, 0x47, 0xC0, 0x46, 0x48, 0x30, 0x34, 0x40, -0x01, 0x4B, 0x18, 0x68, 0xC0, 0x0F, 0x70, 0x47, 0x48, 0x30, 0x34, 0x40, 0x02, 0x4B, 0x18, 0x68, 0x40, 0x07, 0xC0, 0x0F, -0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, 0x03, 0x4B, 0x1B, 0x68, 0x14, 0x20, 0x18, 0x40, 0x43, 0x1E, 0x98, 0x41, -0xC0, 0xB2, 0x70, 0x47, 0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0x06, 0xC0, 0x0F, 0x70, 0x47, 0xC0, 0x46, -0x94, 0x40, 0x04, 0x40, 0x01, 0x4B, 0x18, 0x68, 0xC0, 0x0F, 0x70, 0x47, 0x98, 0x40, 0x04, 0x40, 0x10, 0xB5, 0x10, 0x4B, -0x1A, 0x68, 0x00, 0x23, 0x01, 0x2A, 0x02, 0xD9, 0x01, 0x20, 0x18, 0x40, 0x10, 0xBD, 0xFF, 0xF7, 0xCF, 0xFF, 0x00, 0x23, -0x00, 0x28, 0xF7, 0xD0, 0xFF, 0xF7, 0xE2, 0xFF, 0x00, 0x28, 0x03, 0xD1, 0x08, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x05, 0xDA, -0xFF, 0xF7, 0xB2, 0xFF, 0x01, 0x23, 0x43, 0x40, 0xDB, 0xB2, 0xE9, 0xE7, 0xFF, 0xF7, 0xC2, 0xFF, 0x00, 0x23, 0x00, 0x28, -0xE4, 0xD0, 0xF3, 0xE7, 0x50, 0xE0, 0x10, 0x00, 0x98, 0x40, 0x04, 0x40, 0x10, 0xB5, 0xFF, 0xF7, 0xB7, 0xFF, 0x00, 0x23, -0x00, 0x28, 0x02, 0xD1, 0x01, 0x20, 0x18, 0x40, 0x10, 0xBD, 0xFF, 0xF7, 0x99, 0xFF, 0x01, 0x23, 0x43, 0x40, 0xDB, 0xB2, -0xF6, 0xE7, 0x00, 0x00, 0x05, 0x4B, 0x1B, 0x68, 0x00, 0x28, 0x04, 0xD0, 0x08, 0x22, 0x13, 0x43, 0x02, 0x4A, 0x13, 0x60, -0x70, 0x47, 0x08, 0x22, 0x93, 0x43, 0xF9, 0xE7, 0x94, 0x40, 0x04, 0x40, 0x04, 0x4A, 0x13, 0x68, 0x40, 0x01, 0x04, 0x49, -0x0B, 0x40, 0x04, 0x49, 0x08, 0x40, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0x94, 0x40, 0x04, 0x40, 0x1F, 0x00, 0xFE, 0xFF, -0xE0, 0xFF, 0x01, 0x00, 0x03, 0x4B, 0x1B, 0x68, 0x00, 0x20, 0x01, 0x22, 0x9A, 0x42, 0x40, 0x41, 0xC0, 0xB2, 0x70, 0x47, -0x50, 0xE0, 0x10, 0x00, 0x02, 0x4B, 0x18, 0x68, 0x43, 0x42, 0x58, 0x41, 0xC0, 0xB2, 0x70, 0x47, 0x50, 0xE0, 0x10, 0x00, -0x70, 0xB5, 0x01, 0x28, 0x02, 0xD0, 0x02, 0x28, 0x0F, 0xD0, 0x70, 0xBD, 0x0E, 0x4C, 0xEA, 0x25, 0x6D, 0x00, 0x02, 0x22, -0x02, 0x21, 0x20, 0x00, 0x2B, 0x68, 0x98, 0x47, 0x80, 0x22, 0x2B, 0x68, 0x92, 0x01, 0x00, 0x21, 0x20, 0x00, 0x98, 0x47, -0xEF, 0xE7, 0x80, 0x21, 0x89, 0x01, 0x06, 0x4C, 0xEA, 0x25, 0x6D, 0x00, 0x0A, 0x00, 0x20, 0x00, 0x2B, 0x68, 0x98, 0x47, -0x2B, 0x68, 0x02, 0x22, 0x00, 0x21, 0x20, 0x00, 0x98, 0x47, 0xE0, 0xE7, 0x00, 0x10, 0x01, 0x50, 0x70, 0xB5, 0x05, 0x00, -0x0C, 0x00, 0x39, 0x4B, 0x1B, 0x68, 0x01, 0x20, 0x00, 0x2B, 0x45, 0xD1, 0x00, 0x29, 0x43, 0xD0, 0x00, 0x2D, 0x1A, 0xD0, -0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x16, 0x00, 0x1E, 0x40, 0x1A, 0x42, 0x4E, 0xD1, 0x72, 0xB6, 0x31, 0x4B, 0x1B, 0x68, -0x00, 0x2B, 0x41, 0xD1, 0x00, 0x20, 0x00, 0x2E, 0x4A, 0xD1, 0x62, 0xB6, 0x27, 0xE0, 0x20, 0x00, 0xFF, 0xF7, 0xBA, 0xFF, -0x2B, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x28, 0x00, 0x00, 0x2E, 0x20, 0xD1, 0xF3, 0xE7, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, -0x16, 0x00, 0x1E, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x24, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x1B, 0xD1, 0x01, 0x20, -0x87, 0xF7, 0x51, 0xFC, 0x20, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x14, 0xD1, 0x01, 0x20, 0x87, 0xF7, 0x4A, 0xFC, 0x28, 0x00, -0x00, 0x2E, 0x00, 0xD1, 0x62, 0xB6, 0x1C, 0x4A, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x00, 0x28, 0x1E, 0xD0, 0x00, 0x23, -0x19, 0x4A, 0x13, 0x60, 0x19, 0x4A, 0x13, 0x60, 0x16, 0x4A, 0x13, 0x60, 0x70, 0xBD, 0x20, 0x00, 0xFF, 0xF7, 0x88, 0xFF, -0x12, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x01, 0x20, 0x87, 0xF7, 0x2F, 0xFC, 0x01, 0x20, 0xE3, 0xE7, 0x08, 0x00, 0xFF, 0xF7, -0x7D, 0xFF, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x28, 0x00, 0xB8, 0xE7, 0x0A, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0xB6, 0xD1, -0x09, 0x4B, 0x1B, 0x68, 0x00, 0x20, 0x05, 0x2B, 0xDB, 0xD8, 0x08, 0x4B, 0x1C, 0x60, 0x08, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0x07, 0x48, 0x82, 0xF7, 0x2F, 0xFC, 0x00, 0x20, 0xD8, 0xE7, 0xC0, 0x46, 0x50, 0xE0, 0x10, 0x00, 0x5C, 0x40, 0x04, 0x40, -0x54, 0xE6, 0x10, 0x00, 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0x2C, 0xCE, 0x10, 0x00, 0xF0, 0xB5, 0xCE, 0x46, -0x00, 0xB5, 0x86, 0xB0, 0x2A, 0x4B, 0x1C, 0x68, 0x21, 0x00, 0x2A, 0x48, 0x82, 0xF7, 0x16, 0xFC, 0x03, 0xAA, 0x29, 0x4B, -0x03, 0xCB, 0x03, 0xC2, 0x1B, 0x88, 0x13, 0x80, 0x00, 0x2C, 0x0D, 0xDB, 0x0A, 0x22, 0x03, 0xA9, 0x25, 0x48, 0xD7, 0xF7, -0xFD, 0xF9, 0x0A, 0x22, 0x03, 0xA9, 0x24, 0x48, 0xD7, 0xF7, 0xF8, 0xF9, 0x06, 0xB0, 0x04, 0xBC, 0x91, 0x46, 0xF0, 0xBD, -0xFF, 0x23, 0x1B, 0x04, 0x23, 0x40, 0x80, 0x22, 0x52, 0x02, 0x93, 0x42, 0x11, 0xD0, 0x24, 0x04, 0x24, 0x0C, 0x1D, 0x4B, -0xE7, 0x18, 0x1D, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0xFB, 0x43, 0xDB, 0x17, 0x1F, 0x40, 0x4E, 0x2C, 0x00, 0xDD, 0x4E, 0x24, -0x03, 0xAD, 0x00, 0x26, 0x00, 0x23, 0x01, 0x93, 0x1B, 0xE0, 0x24, 0x04, 0x24, 0x0C, 0x16, 0x4B, 0xE7, 0x18, 0x16, 0x4B, -0x9C, 0x46, 0x64, 0x44, 0xEC, 0xE7, 0x8B, 0x40, 0x1A, 0x43, 0xD2, 0xB2, 0x01, 0x31, 0x08, 0x29, 0x07, 0xD0, 0x88, 0x19, -0x01, 0x23, 0xB8, 0x42, 0xF5, 0xDB, 0xA0, 0x42, 0xF3, 0xDC, 0x01, 0x9B, 0xF1, 0xE7, 0x4B, 0x46, 0x1A, 0x70, 0x01, 0x35, -0x08, 0x36, 0x50, 0x2E, 0xBC, 0xD0, 0xA9, 0x46, 0x00, 0x22, 0x00, 0x21, 0xED, 0xE7, 0xC0, 0x46, 0x98, 0x40, 0x04, 0x40, -0x34, 0xCE, 0x10, 0x00, 0x48, 0xCE, 0x10, 0x00, 0xD8, 0xE1, 0x10, 0x00, 0xC0, 0x9F, 0x16, 0x00, 0x94, 0xF6, 0xFF, 0xFF, -0xA7, 0xF6, 0xFF, 0xFF, 0x8A, 0xF6, 0xFF, 0xFF, 0xB1, 0xF6, 0xFF, 0xFF, 0x10, 0xB5, 0x84, 0xB0, 0x98, 0x4B, 0x1C, 0x68, -0x21, 0x00, 0x98, 0x48, 0x82, 0xF7, 0xAC, 0xFB, 0x01, 0xAA, 0x97, 0x4B, 0x03, 0xCB, 0x03, 0xC2, 0x1B, 0x88, 0x13, 0x80, -0x00, 0x2C, 0x0B, 0xDB, 0x0A, 0x22, 0x01, 0xA9, 0x93, 0x48, 0xD7, 0xF7, 0x93, 0xF9, 0x0A, 0x22, 0x01, 0xA9, 0x92, 0x48, -0xD7, 0xF7, 0x8E, 0xF9, 0x04, 0xB0, 0x10, 0xBD, 0xFF, 0x23, 0x1B, 0x04, 0x23, 0x40, 0x80, 0x22, 0x52, 0x02, 0x93, 0x42, -0x00, 0xD1, 0x02, 0xE1, 0x24, 0x04, 0x24, 0x0C, 0x8B, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x3C, 0x2C, 0xE4, 0xD8, 0xA4, 0x00, -0x89, 0x4B, 0x1B, 0x59, 0x9F, 0x46, 0x01, 0xAB, 0x00, 0x22, 0x1A, 0x70, 0x5A, 0x70, 0x9A, 0x70, 0xFC, 0x32, 0xDA, 0x70, -0xD8, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, 0x1A, 0x70, 0x00, 0x22, 0x5A, 0x70, 0x9A, 0x70, 0xFC, 0x32, 0xDA, 0x70, -0x14, 0x29, 0xCD, 0xD1, 0x00, 0x22, 0x1A, 0x70, 0xDA, 0x70, 0x1A, 0x71, 0xC8, 0xE7, 0x14, 0x21, 0xEE, 0xE7, 0x0A, 0x21, -0x01, 0xAB, 0x03, 0x22, 0x5A, 0x70, 0x00, 0x22, 0x9A, 0x70, 0xC0, 0x32, 0xDA, 0x70, 0x14, 0x29, 0xBC, 0xD1, 0x00, 0x22, -0x1A, 0x70, 0x5A, 0x70, 0xDA, 0x70, 0x1A, 0x71, 0xF0, 0x32, 0x5A, 0x71, 0xB4, 0xE7, 0x14, 0x21, 0xEC, 0xE7, 0x0A, 0x21, -0x01, 0xAB, 0x00, 0x22, 0x9A, 0x70, 0xDA, 0x70, 0xF0, 0x32, 0x1A, 0x71, 0x14, 0x29, 0xA9, 0xD1, 0xED, 0x3A, 0x1A, 0x70, -0x00, 0x22, 0x5A, 0x70, 0x1A, 0x71, 0x5A, 0x71, 0xA2, 0xE7, 0x14, 0x21, 0xEE, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, -0x9A, 0x70, 0x00, 0x22, 0xDA, 0x70, 0x1A, 0x71, 0xFC, 0x32, 0x5A, 0x71, 0x14, 0x29, 0x95, 0xD1, 0x00, 0x22, 0x5A, 0x70, -0x9A, 0x70, 0x5A, 0x71, 0xF0, 0x32, 0x9A, 0x71, 0x8E, 0xE7, 0x14, 0x21, 0xEC, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x03, 0x22, -0xDA, 0x70, 0x00, 0x22, 0x1A, 0x71, 0xC0, 0x32, 0x5A, 0x71, 0x14, 0x29, 0x00, 0xD0, 0x81, 0xE7, 0x81, 0x3A, 0x5A, 0x70, -0x00, 0x22, 0x9A, 0x70, 0xDA, 0x70, 0x5A, 0x71, 0xFC, 0x32, 0x9A, 0x71, 0x78, 0xE7, 0x14, 0x21, 0xEA, 0xE7, 0x0A, 0x21, -0x01, 0xAB, 0x3F, 0x22, 0xDA, 0x70, 0x00, 0x22, 0x1A, 0x71, 0x5A, 0x71, 0xFC, 0x32, 0x9A, 0x71, 0x14, 0x29, 0x00, 0xD0, -0x6A, 0xE7, 0xF9, 0x3A, 0x9A, 0x70, 0x00, 0x22, 0xDA, 0x70, 0x9A, 0x71, 0xC0, 0x32, 0xDA, 0x71, 0x62, 0xE7, 0x14, 0x21, -0xEA, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x0F, 0x22, 0x1A, 0x71, 0x00, 0x22, 0x5A, 0x71, 0x9A, 0x71, 0x14, 0x29, 0x00, 0xD0, -0x56, 0xE7, 0x3F, 0x32, 0x9A, 0x70, 0x00, 0x22, 0xDA, 0x70, 0x1A, 0x71, 0xDA, 0x71, 0x4F, 0xE7, 0x14, 0x21, 0xED, 0xE7, -0x0A, 0x21, 0x01, 0xAB, 0x00, 0x22, 0x5A, 0x71, 0x9A, 0x71, 0xF0, 0x32, 0xDA, 0x71, 0x14, 0x29, 0x00, 0xD0, 0x43, 0xE7, -0xE1, 0x3A, 0xDA, 0x70, 0x00, 0x22, 0x1A, 0x71, 0xDA, 0x71, 0x1A, 0x72, 0x3C, 0xE7, 0x14, 0x21, 0xED, 0xE7, 0x0A, 0x21, -0x01, 0xAB, 0x3F, 0x22, 0x5A, 0x71, 0x00, 0x22, 0x9A, 0x71, 0xDA, 0x71, 0xFC, 0x32, 0x1A, 0x72, 0x14, 0x29, 0x00, 0xD0, -0x2E, 0xE7, 0xED, 0x3A, 0x1A, 0x71, 0x00, 0x22, 0x5A, 0x71, 0x1A, 0x72, 0x5A, 0x72, 0x27, 0xE7, 0x14, 0x21, 0xEB, 0xE7, -0x0A, 0x21, 0x01, 0xAB, 0x03, 0x22, 0x9A, 0x71, 0x00, 0x22, 0xDA, 0x71, 0xC0, 0x32, 0x1A, 0x72, 0x14, 0x29, 0x00, 0xD0, -0x1A, 0xE7, 0x00, 0x22, 0x5A, 0x71, 0x9A, 0x71, 0x1A, 0x72, 0x5A, 0x72, 0x14, 0xE7, 0x14, 0x21, 0xED, 0xE7, 0x0A, 0x21, -0x01, 0xAB, 0x00, 0x22, 0xDA, 0x71, 0x1A, 0x72, 0xF0, 0x32, 0x5A, 0x72, 0x14, 0x29, 0x00, 0xD0, 0x08, 0xE7, 0x00, 0x22, -0x9A, 0x71, 0x5A, 0x72, 0x04, 0xE7, 0x14, 0x21, 0xF0, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, 0xDA, 0x71, 0x00, 0x22, -0x1A, 0x72, 0x5A, 0x72, 0x14, 0x29, 0x00, 0xD0, 0xF8, 0xE6, 0x0F, 0x32, 0x9A, 0x71, 0x00, 0x22, 0xDA, 0x71, 0xF3, 0xE6, -0x14, 0x21, 0xEF, 0xE7, 0x01, 0xAB, 0x00, 0x22, 0x1A, 0x70, 0x5A, 0x70, 0x9A, 0x70, 0xDA, 0x70, 0xFC, 0x32, 0x1A, 0x71, -0xE8, 0xE6, 0x24, 0x04, 0x24, 0x0C, 0x0A, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x3C, 0x2C, 0x00, 0xD9, 0xE0, 0xE6, 0xA4, 0x00, -0x08, 0x4B, 0x1B, 0x59, 0x9F, 0x46, 0xC0, 0x46, 0x98, 0x40, 0x04, 0x40, 0x34, 0xCE, 0x10, 0x00, 0x48, 0xCE, 0x10, 0x00, -0xD8, 0xE1, 0x10, 0x00, 0xC0, 0x9F, 0x16, 0x00, 0x94, 0xF6, 0xFF, 0xFF, 0x54, 0xCE, 0x10, 0x00, 0x48, 0xCF, 0x10, 0x00, -0x10, 0xB5, 0x08, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x00, 0xD0, 0x10, 0xBD, 0x06, 0x4B, 0x1A, 0x6B, 0x06, 0x4B, 0x19, 0x68, -0x01, 0x20, 0x81, 0x43, 0x19, 0x60, 0x19, 0x68, 0x04, 0x48, 0x82, 0xF7, 0x5F, 0xFA, 0xF2, 0xE7, 0xB4, 0xE5, 0x10, 0x00, -0x00, 0x60, 0x50, 0x40, 0x04, 0x30, 0x34, 0x40, 0x3C, 0xD0, 0x10, 0x00, 0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x4C, 0x4B, -0x1B, 0x68, 0x01, 0x2B, 0x02, 0xD0, 0x4B, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x4A, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x8B, 0x43, -0x13, 0x60, 0xA9, 0xF7, 0x71, 0xFD, 0x48, 0x4B, 0x18, 0x60, 0x5C, 0x60, 0x0C, 0x2D, 0x38, 0xD8, 0xAD, 0x00, 0x46, 0x4B, -0x5B, 0x59, 0x9F, 0x46, 0x80, 0x23, 0xDB, 0x01, 0x00, 0x21, 0x9C, 0x42, 0x1B, 0xD3, 0x43, 0x4A, 0x13, 0x68, 0x43, 0x49, -0x19, 0x40, 0x80, 0x23, 0x9B, 0x02, 0x0B, 0x43, 0x13, 0x60, 0x11, 0x68, 0xE3, 0x08, 0xC0, 0x20, 0x40, 0x01, 0x03, 0x40, -0x76, 0x20, 0x03, 0x43, 0x09, 0x0C, 0x09, 0x04, 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0x3B, 0x49, 0x19, 0x40, 0x80, 0x23, -0x1B, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x80, 0x21, 0xC9, 0x01, 0x35, 0x4B, 0x1A, 0x68, 0x35, 0x48, 0x02, 0x40, 0x1A, 0x60, -0x1A, 0x68, 0xA4, 0x04, 0xA4, 0x0C, 0x0C, 0x43, 0x12, 0x0C, 0x12, 0x04, 0x14, 0x43, 0x1C, 0x60, 0x1A, 0x68, 0x30, 0x49, -0x11, 0x40, 0x80, 0x22, 0x12, 0x03, 0x0A, 0x43, 0x1A, 0x60, 0x70, 0xBD, 0x2D, 0x4B, 0x1B, 0x68, 0x9A, 0x6A, 0x5B, 0x6B, -0xD2, 0x1A, 0xD5, 0x00, 0x55, 0x19, 0x6D, 0x00, 0x55, 0x19, 0xAD, 0xB2, 0x2A, 0x00, 0x21, 0x00, 0x28, 0x48, 0x82, 0xF7, -0xF7, 0xF9, 0x23, 0x4B, 0x19, 0x68, 0x23, 0x4E, 0x31, 0x40, 0x80, 0x22, 0x92, 0x02, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, -0x12, 0x0C, 0x12, 0x04, 0x6D, 0x05, 0x6D, 0x0D, 0x2A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x1D, 0x48, 0x02, 0x40, 0x80, 0x21, -0x09, 0x03, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x16, 0x40, 0x1E, 0x60, 0x1A, 0x68, 0xA4, 0x04, 0xA4, 0x0C, 0x80, 0x25, -0x2D, 0x02, 0x2C, 0x43, 0x12, 0x0C, 0x12, 0x04, 0x14, 0x43, 0x1C, 0x60, 0x1A, 0x68, 0x10, 0x40, 0x01, 0x43, 0x19, 0x60, -0xC7, 0xE7, 0x0F, 0x4A, 0x13, 0x68, 0x0F, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x13, 0x68, 0x1B, 0x0C, 0x1B, 0x04, 0x10, 0x49, -0x0C, 0x43, 0xA4, 0xB2, 0x1C, 0x43, 0x14, 0x60, 0x13, 0x68, 0x0A, 0x49, 0x19, 0x40, 0x80, 0x23, 0x1B, 0x03, 0x0B, 0x43, -0x13, 0x60, 0xB2, 0xE7, 0x50, 0xE0, 0x10, 0x00, 0xB2, 0xE6, 0x10, 0x00, 0xFC, 0x00, 0x60, 0x40, 0x6C, 0xE6, 0x10, 0x00, -0x5C, 0xD0, 0x10, 0x00, 0xF8, 0x00, 0x60, 0x40, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xF8, 0xE6, 0x10, 0x00, -0x50, 0xD0, 0x10, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, -0x07, 0x00, 0xD4, 0xF7, 0x4B, 0xFD, 0x04, 0x00, 0x00, 0x23, 0x01, 0x93, 0x00, 0x93, 0x3B, 0x4A, 0x13, 0x70, 0x01, 0x21, -0x01, 0x20, 0xFF, 0xF7, 0xEF, 0xFC, 0x80, 0x46, 0x38, 0x4B, 0x1E, 0x78, 0x02, 0x3E, 0x73, 0x1E, 0x9E, 0x41, 0x76, 0x42, -0x19, 0x23, 0x1E, 0x40, 0x02, 0x36, 0x00, 0x2C, 0x21, 0xD0, 0x65, 0x68, 0xFB, 0x7D, 0x9A, 0x46, 0xA3, 0x68, 0x99, 0x46, -0x69, 0x46, 0x01, 0xA8, 0xA9, 0xF7, 0xB0, 0xFC, 0x01, 0x9B, 0x53, 0x44, 0xEB, 0x1A, 0x1B, 0x01, 0x1A, 0x09, 0x5B, 0x00, -0x9C, 0x1A, 0xA4, 0x00, 0xA4, 0x18, 0xA3, 0x00, 0xE4, 0x18, 0x4B, 0x46, 0x00, 0x9A, 0x9B, 0x1A, 0xE4, 0x18, 0xA4, 0x09, -0xA6, 0x42, 0x00, 0xD8, 0xA4, 0x1B, 0x80, 0x23, 0x5B, 0x02, 0x9C, 0x42, 0x02, 0xD9, 0x24, 0x4C, 0x00, 0xE0, 0x23, 0x4C, -0xFF, 0xF7, 0xFC, 0xFB, 0x05, 0x00, 0x43, 0x46, 0x00, 0x2B, 0x12, 0xD0, 0x20, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x03, 0xD0, -0x1F, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x0F, 0xD0, 0x0A, 0x2C, 0x16, 0xD8, 0x4F, 0x23, 0x00, 0x22, 0xFA, 0x54, 0x02, 0xB0, -0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0x01, 0x21, 0x00, 0x20, 0xFF, 0xF7, 0xA3, 0xFC, 0xE7, 0xE7, -0x16, 0x4B, 0x80, 0x22, 0x12, 0x05, 0x1A, 0x60, 0x13, 0x4B, 0x02, 0x22, 0x1A, 0x70, 0x00, 0x25, 0xE6, 0xE7, 0xFF, 0xF7, -0x0B, 0xFC, 0x00, 0x28, 0xE4, 0xD0, 0xB2, 0xF7, 0xC9, 0xFD, 0x06, 0x23, 0x00, 0x28, 0x05, 0xD1, 0x4A, 0x33, 0xFB, 0x5C, -0x01, 0x3B, 0x58, 0x42, 0x43, 0x41, 0x05, 0x33, 0x00, 0x2D, 0xD7, 0xD1, 0xCF, 0x2C, 0x01, 0xD8, 0x06, 0x2B, 0xD3, 0xD1, -0x21, 0x00, 0x18, 0x00, 0xFF, 0xF7, 0xCC, 0xFE, 0xCE, 0xE7, 0xC0, 0x46, 0xB2, 0xE6, 0x10, 0x00, 0xB4, 0xE5, 0x10, 0x00, -0xFF, 0xFF, 0x00, 0x00, 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0x70, 0xB5, 0x4E, 0x23, -0x01, 0x22, 0xC2, 0x54, 0x2A, 0x4B, 0x1D, 0x68, 0x2A, 0x4B, 0x1C, 0x68, 0x2A, 0x4B, 0x19, 0x68, 0x2A, 0x4B, 0x1A, 0x68, -0x2A, 0x4B, 0x00, 0x26, 0x1E, 0x70, 0x00, 0x23, 0x00, 0x2D, 0x05, 0xD0, 0x42, 0x33, 0xEB, 0x5C, 0x01, 0x3B, 0x5D, 0x42, -0x6B, 0x41, 0xDB, 0xB2, 0x00, 0x2C, 0x03, 0xD0, 0x3A, 0x25, 0x64, 0x5D, 0x01, 0x2C, 0x23, 0xD0, 0x00, 0x24, 0x00, 0x29, -0x04, 0xD0, 0x3E, 0x34, 0x0D, 0x5D, 0x00, 0x24, 0x01, 0x2D, 0x1D, 0xD0, 0x00, 0x2A, 0x03, 0xD0, 0x2F, 0x21, 0x51, 0x5C, -0x01, 0x29, 0x1A, 0xD0, 0x00, 0x2B, 0x1D, 0xD0, 0x1A, 0x49, 0x0B, 0x68, 0x1A, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x03, -0x13, 0x43, 0x0B, 0x60, 0x18, 0x4B, 0x19, 0x4A, 0x13, 0x60, 0x81, 0x22, 0x52, 0x00, 0x9B, 0x5C, 0x00, 0x2B, 0x18, 0xD0, -0x4F, 0x23, 0x01, 0x22, 0xC2, 0x54, 0x70, 0xBD, 0x01, 0x23, 0xD9, 0xE7, 0x8C, 0x62, 0x01, 0x34, 0xDE, 0xE7, 0x00, 0x21, -0x91, 0x62, 0x00, 0x2B, 0xE2, 0xD1, 0x01, 0xE0, 0x00, 0x2C, 0xE7, 0xD0, 0x0A, 0x49, 0x0B, 0x68, 0x0D, 0x4A, 0x1A, 0x40, -0x80, 0x23, 0x1B, 0x04, 0x13, 0x43, 0x0B, 0x60, 0xDE, 0xE7, 0xFF, 0xF7, 0x17, 0xFF, 0xE6, 0xE7, 0x24, 0x27, 0x16, 0x00, -0x18, 0x27, 0x16, 0x00, 0x28, 0x27, 0x16, 0x00, 0x20, 0x27, 0x16, 0x00, 0xB1, 0xE6, 0x10, 0x00, 0x00, 0x04, 0x60, 0x40, -0xFF, 0xFF, 0xDF, 0xFF, 0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0x02, 0x4B, 0x1B, 0x68, -0x04, 0x20, 0x18, 0x40, 0x70, 0x47, 0xC0, 0x46, 0x80, 0x40, 0x34, 0x40, 0x10, 0xB5, 0x04, 0x00, 0x01, 0x00, 0x12, 0x48, -0x82, 0xF7, 0x98, 0xF8, 0x00, 0x2C, 0x1E, 0xD0, 0x10, 0x4B, 0x1A, 0x68, 0x10, 0x48, 0x02, 0x40, 0xD0, 0x21, 0x89, 0x03, -0x0A, 0x43, 0x1A, 0x60, 0x1C, 0x68, 0x04, 0x40, 0xA0, 0x22, 0x52, 0x03, 0x22, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x02, 0x40, -0x11, 0x43, 0x19, 0x60, 0x09, 0x49, 0x04, 0x22, 0x0B, 0x68, 0x1A, 0x42, 0xFC, 0xD0, 0x05, 0x49, 0x0B, 0x68, 0x05, 0x4A, -0x1A, 0x40, 0x80, 0x23, 0x9B, 0x03, 0x13, 0x43, 0x0B, 0x60, 0x10, 0xBD, 0x90, 0xD0, 0x10, 0x00, 0x58, 0x40, 0x34, 0x40, -0xFF, 0xFF, 0xC1, 0xFF, 0x80, 0x40, 0x34, 0x40, 0xF8, 0xB5, 0x04, 0x00, 0x83, 0x7D, 0x02, 0x33, 0x83, 0x75, 0x03, 0x6C, -0x03, 0x61, 0xB2, 0xF7, 0xF9, 0xFC, 0x00, 0x28, 0x24, 0xD1, 0x20, 0x4E, 0x4C, 0x25, 0x20, 0x4F, 0x20, 0x00, 0xD4, 0xF7, -0x19, 0xFA, 0x00, 0x28, 0x33, 0xD0, 0x31, 0x00, 0x20, 0x69, 0xD6, 0xF7, 0xFD, 0xF9, 0x63, 0x68, 0x9C, 0x46, 0x60, 0x44, -0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x63, 0x5B, 0x5B, 0x00, 0xE2, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, -0xE3, 0x60, 0xA3, 0x7D, 0x14, 0x4A, 0x52, 0x78, 0x9B, 0x18, 0xA3, 0x75, 0x10, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0xBE, 0x42, -0xDE, 0xD1, 0xF8, 0xBD, 0x63, 0x68, 0x18, 0x33, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x18, 0x26, 0x65, 0x68, 0x00, 0x22, -0x21, 0x69, 0x20, 0x00, 0xFF, 0xF7, 0x3C, 0xFA, 0x63, 0x68, 0xAB, 0x42, 0xCB, 0xD0, 0x75, 0x19, 0x2D, 0x01, 0x2D, 0x09, -0x65, 0x60, 0x18, 0x36, 0x90, 0x2E, 0xEF, 0xD1, 0xC3, 0xE7, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xE3, 0xE7, 0xC0, 0x46, -0xE2, 0x04, 0x00, 0x00, 0x6A, 0x18, 0x00, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x10, 0xB5, 0xFF, 0xF7, 0xAB, 0xFF, 0x10, 0xBD, -0xF8, 0xB5, 0x04, 0x00, 0x4E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0xF8, 0xBD, 0x00, 0x21, 0xD4, 0xF7, 0x6E, 0xFB, -0xA9, 0xF7, 0x38, 0xFB, 0x23, 0x6C, 0x23, 0x61, 0x60, 0x60, 0x04, 0x26, 0x4C, 0x27, 0x10, 0x4D, 0x20, 0x00, 0xD4, 0xF7, -0xBF, 0xF9, 0x00, 0x28, 0x15, 0xD0, 0x63, 0x68, 0x04, 0x33, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0xE3, 0x5B, 0x5B, 0x00, -0xE2, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x60, 0xA3, 0x7D, 0x6A, 0x78, 0x9B, 0x18, 0xA3, 0x75, -0x01, 0x3E, 0xF6, 0xB2, 0x00, 0x2E, 0xE5, 0xD1, 0xD8, 0xE7, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xD4, 0xE7, 0xC0, 0x46, -0x7C, 0x91, 0x0D, 0x00, 0x70, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x14, 0x00, 0x1C, 0x40, 0x1A, 0x42, 0x1C, 0xD1, -0x72, 0xB6, 0x10, 0x4B, 0x18, 0x68, 0x00, 0x28, 0x07, 0xD0, 0x4E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, 0x05, 0xD0, 0x01, 0x2B, -0x0D, 0xD0, 0x00, 0x2C, 0x00, 0xD1, 0x62, 0xB6, 0x70, 0xBD, 0x00, 0x21, 0xD4, 0xF7, 0x2A, 0xFB, 0x07, 0x4D, 0x28, 0x68, -0x80, 0xF7, 0x38, 0xF8, 0x00, 0x23, 0x2B, 0x60, 0xF1, 0xE7, 0x4E, 0x23, 0x02, 0x22, 0xC2, 0x54, 0xED, 0xE7, 0x02, 0x4B, -0x18, 0x68, 0x00, 0x28, 0xE3, 0xD1, 0xEB, 0xE7, 0xF8, 0xE6, 0x10, 0x00, 0xF8, 0xB5, 0x05, 0x00, 0x36, 0x4B, 0x1B, 0x68, -0x0C, 0x20, 0x00, 0x2B, 0x00, 0xD0, 0xF8, 0xBD, 0x00, 0x21, 0x48, 0x30, 0x7F, 0xF7, 0x7A, 0xFF, 0x31, 0x4B, 0x18, 0x60, -0x00, 0x28, 0x56, 0xD0, 0xA9, 0xF7, 0xD2, 0xFA, 0x06, 0x00, 0x00, 0x27, 0x2E, 0x4B, 0x1F, 0x60, 0x2E, 0x4B, 0x1F, 0x60, -0x2B, 0x4B, 0x1C, 0x68, 0x54, 0x22, 0x00, 0x21, 0x20, 0x00, 0x7D, 0xF7, 0x19, 0xFF, 0x2B, 0x68, 0xA3, 0x62, 0x6A, 0x68, -0x22, 0x63, 0xEA, 0x68, 0xE2, 0x63, 0x2A, 0x68, 0xE2, 0x62, 0xAA, 0x68, 0xA2, 0x63, 0x62, 0x63, 0x1B, 0x01, 0x4C, 0x22, -0xA3, 0x52, 0x24, 0x4A, 0x22, 0x64, 0x24, 0x4B, 0x63, 0x62, 0x24, 0x4B, 0xE3, 0x61, 0x24, 0x4B, 0x23, 0x62, 0x03, 0x23, -0x23, 0x76, 0x23, 0x4B, 0x9B, 0x78, 0x02, 0x33, 0xA3, 0x75, 0x22, 0x61, 0xE7, 0x75, 0x05, 0x23, 0x63, 0x76, 0xEF, 0xF3, -0x10, 0x83, 0x01, 0x22, 0x15, 0x00, 0x1D, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x66, 0x60, 0x00, 0x23, 0xA3, 0x60, -0x1A, 0x4B, 0xA3, 0x82, 0x4C, 0x23, 0xE0, 0x5A, 0x40, 0x00, 0x80, 0x19, 0x00, 0x01, 0x00, 0x09, 0xE0, 0x60, 0x20, 0x00, -0xD4, 0xF7, 0x1E, 0xF9, 0x00, 0x28, 0x06, 0xD1, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x00, 0x2D, 0xA9, 0xD1, 0x62, 0xB6, -0xA7, 0xE7, 0x11, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0C, 0x20, 0xF3, 0xE7, 0x0D, 0x4B, -0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0C, 0x20, 0x97, 0xE7, 0xC0, 0x46, 0xF8, 0xE6, 0x10, 0x00, -0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0xE8, 0xFD, 0x00, 0x00, 0xB9, 0x21, 0x10, 0x00, 0xC9, 0x1F, 0x10, 0x00, -0x05, 0x4B, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x06, 0x4B, -0x18, 0x68, 0x00, 0x28, 0x03, 0xD0, 0x4F, 0x23, 0xC3, 0x5C, 0x01, 0x2B, 0x00, 0xD0, 0x10, 0xBD, 0xFF, 0xF7, 0x84, 0xFD, -0xFB, 0xE7, 0xC0, 0x46, 0xF8, 0xE6, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x85, 0xF7, 0x55, 0xFE, 0x4C, 0x4B, -0x1B, 0x68, 0x01, 0x2B, 0x02, 0xD0, 0x4A, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0x49, 0x4A, 0x48, 0x4B, 0x19, 0x68, 0x49, 0x4B, -0xD1, 0x54, 0x00, 0x21, 0x42, 0x3B, 0xD1, 0x54, 0x0B, 0x23, 0x47, 0x48, 0x13, 0x54, 0x01, 0x30, 0x13, 0x54, 0x46, 0x4B, -0x1B, 0x68, 0x1C, 0x0A, 0x50, 0x38, 0x14, 0x54, 0x44, 0x48, 0x13, 0x54, 0x44, 0x4B, 0x20, 0x20, 0xD0, 0x54, 0x44, 0x4B, -0x10, 0x38, 0xD0, 0x54, 0x43, 0x4B, 0x19, 0x60, 0x00, 0x24, 0x00, 0x23, 0x98, 0x46, 0x00, 0x27, 0x01, 0x34, 0xE4, 0xB2, -0x01, 0x2C, 0x0B, 0xD0, 0x02, 0x2C, 0x3E, 0xD0, 0x03, 0x2C, 0x4C, 0xD0, 0x3D, 0x4A, 0x13, 0x78, 0x20, 0x21, 0x8B, 0x43, -0x13, 0x70, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x0C, 0x20, 0xFE, 0xF7, 0xA7, 0xF9, 0x06, 0x00, 0x0D, 0x20, 0xFE, 0xF7, -0xA3, 0xF9, 0x05, 0x04, 0x2D, 0x0C, 0x2A, 0x00, 0x31, 0x00, 0x35, 0x48, 0x81, 0xF7, 0xDA, 0xFE, 0x2B, 0x00, 0x33, 0x43, -0xDE, 0xD0, 0x43, 0x46, 0x00, 0x2B, 0x41, 0xD0, 0x27, 0x4B, 0x2A, 0x0A, 0x1A, 0x70, 0x5D, 0x70, 0x32, 0x0E, 0x9A, 0x70, -0x32, 0x0C, 0xDA, 0x70, 0x32, 0x0A, 0x1A, 0x71, 0x5E, 0x71, 0x00, 0x2F, 0x0A, 0xD0, 0x21, 0x4A, 0x11, 0x1D, 0x13, 0x78, -0x01, 0x33, 0xDB, 0xB2, 0x13, 0x70, 0x00, 0x2B, 0x02, 0xD1, 0x01, 0x32, 0x8A, 0x42, 0xF6, 0xD1, 0x1B, 0x4C, 0x20, 0x68, -0x61, 0x68, 0xA9, 0xF7, 0xD1, 0xFC, 0x20, 0x00, 0xB9, 0xF7, 0x0E, 0xFB, 0xC2, 0xE7, 0x07, 0x20, 0xFE, 0xF7, 0x72, 0xF9, -0x06, 0x00, 0x08, 0x20, 0xFE, 0xF7, 0x6E, 0xF9, 0x05, 0x04, 0x2D, 0x0C, 0x2A, 0x00, 0x31, 0x00, 0x1B, 0x48, 0x81, 0xF7, -0xA5, 0xFE, 0x01, 0x27, 0xC8, 0xE7, 0x1A, 0x4B, 0x1E, 0x88, 0x58, 0x88, 0x00, 0x04, 0x06, 0x43, 0x18, 0x4B, 0x1D, 0x88, -0x5B, 0x88, 0x2A, 0x00, 0x31, 0x00, 0x17, 0x48, 0x81, 0xF7, 0x96, 0xFE, 0x01, 0x23, 0x98, 0x46, 0x00, 0x27, 0xB7, 0xE7, -0x06, 0x4B, 0x2A, 0x0A, 0x5A, 0x71, 0x1D, 0x71, 0x32, 0x0E, 0xDA, 0x70, 0x32, 0x0C, 0x9A, 0x70, 0x32, 0x0A, 0x5A, 0x70, -0x1E, 0x70, 0xBC, 0xE7, 0xA8, 0xE5, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0x9A, 0x02, 0x00, 0x00, 0xA3, 0x02, 0x00, 0x00, -0xB0, 0xE5, 0x10, 0x00, 0x55, 0x02, 0x00, 0x00, 0x56, 0x02, 0x00, 0x00, 0x57, 0x02, 0x00, 0x00, 0xF8, 0xE6, 0x10, 0x00, -0xEC, 0xE1, 0x10, 0x00, 0xA0, 0xD0, 0x10, 0x00, 0xB0, 0xD0, 0x10, 0x00, 0x12, 0xC0, 0x1F, 0x08, 0x16, 0xC0, 0x1F, 0x08, -0xC4, 0xD0, 0x10, 0x00, 0x30, 0xB5, 0x89, 0xB0, 0x05, 0x00, 0x14, 0x00, 0x00, 0x28, 0x14, 0xD1, 0x1F, 0x4B, 0x20, 0x48, -0x1A, 0x5C, 0x04, 0x35, 0xAA, 0x43, 0x1A, 0x54, 0x02, 0x30, 0x1A, 0x5C, 0x3E, 0x35, 0xAA, 0x43, 0x1A, 0x54, 0x22, 0x00, -0x00, 0x20, 0x8D, 0xF7, 0xF9, 0xFF, 0x1A, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x0E, 0xD0, 0x09, 0xB0, 0x30, 0xBD, 0x8D, 0xF7, -0xF1, 0xFF, 0x02, 0x2D, 0xF5, 0xD1, 0x23, 0x78, 0x0C, 0x22, 0x93, 0x43, 0x23, 0x70, 0x63, 0x78, 0x0B, 0x3A, 0x93, 0x43, -0x63, 0x70, 0xEC, 0xE7, 0x11, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0xEC, 0xD8, 0x00, 0x23, 0x07, 0x93, 0x0F, 0x4B, 0x1B, 0x68, -0x03, 0x93, 0x0F, 0x4B, 0x1B, 0x68, 0x01, 0x93, 0x04, 0x93, 0x0E, 0x4B, 0x18, 0x68, 0x0E, 0x49, 0xD5, 0xF7, 0xD4, 0xFF, -0x05, 0x90, 0x0D, 0x4B, 0x18, 0x68, 0x0B, 0x49, 0xD5, 0xF7, 0xCE, 0xFF, 0x06, 0x90, 0x03, 0xA8, 0xFF, 0xF7, 0x6C, 0xFE, -0xD3, 0xE7, 0xC0, 0x46, 0x7C, 0x1E, 0x16, 0x00, 0x9E, 0x02, 0x00, 0x00, 0xF8, 0xE6, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, -0x0C, 0xE2, 0x10, 0x00, 0x10, 0xE2, 0x10, 0x00, 0x04, 0xE2, 0x10, 0x00, 0x71, 0x02, 0x00, 0x00, 0x08, 0xE2, 0x10, 0x00, -0x80, 0x00, 0x08, 0x4B, 0xC3, 0x58, 0x88, 0x22, 0xFF, 0x32, 0x9A, 0x5C, 0x00, 0x20, 0x01, 0x2A, 0x00, 0xD0, 0x70, 0x47, -0x8A, 0x22, 0xFF, 0x32, 0x98, 0x5C, 0x01, 0x38, 0x43, 0x42, 0x58, 0x41, 0xF7, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, -0x00, 0x23, 0x00, 0x20, 0x06, 0x49, 0x02, 0xE0, 0x01, 0x33, 0x07, 0x2B, 0x06, 0xD0, 0x9A, 0x00, 0x52, 0x58, 0x00, 0x2A, -0xF8, 0xD0, 0x01, 0x30, 0xC0, 0xB2, 0xF5, 0xE7, 0x70, 0x47, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, 0x70, 0xB5, 0x82, 0xB0, -0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x30, 0x4B, 0xD6, 0x58, 0x20, 0x00, 0x80, 0xF7, 0xB2, 0xF8, 0x03, 0x00, 0x02, 0x00, -0x01, 0x28, 0x12, 0xD0, 0x00, 0x20, 0x01, 0x2B, 0x05, 0xD9, 0x19, 0x2B, 0x05, 0xD8, 0x15, 0x23, 0x93, 0x42, 0x40, 0x41, -0x40, 0x00, 0x02, 0xB0, 0x70, 0xBD, 0x58, 0x3B, 0xDB, 0xB2, 0x01, 0x20, 0x98, 0x42, 0x80, 0x41, 0x40, 0x42, 0x40, 0x00, -0xF5, 0xE7, 0x4C, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x3A, 0xD1, 0x4B, 0x33, 0xF3, 0x5C, 0x00, 0x2B, 0x02, 0xD0, 0x4B, 0x23, -0x00, 0x22, 0xF2, 0x54, 0x4F, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x16, 0xD1, 0x36, 0x33, 0xF2, 0x5C, 0x35, 0x3B, 0x13, 0x40, -0x3E, 0x22, 0x13, 0x43, 0x6A, 0x46, 0x13, 0x71, 0x00, 0x23, 0x53, 0x71, 0xE8, 0xB2, 0x01, 0xA9, 0xA7, 0xF7, 0x98, 0xF9, -0x14, 0x48, 0x81, 0xF7, 0xA9, 0xFD, 0x59, 0x21, 0x20, 0x00, 0x80, 0xF7, 0x17, 0xF8, 0x00, 0x20, 0xCF, 0xE7, 0x01, 0xA9, -0x36, 0x23, 0xF2, 0x5C, 0x38, 0x3B, 0x13, 0x43, 0x0B, 0x70, 0x1F, 0x23, 0x4B, 0x70, 0x1E, 0x3B, 0x8B, 0x70, 0xE8, 0xB2, -0xA7, 0xF7, 0x82, 0xF9, 0x0A, 0x48, 0x81, 0xF7, 0x93, 0xFD, 0x20, 0x00, 0x97, 0xF7, 0x72, 0xFD, 0x58, 0x21, 0x20, 0x00, -0x7F, 0xF7, 0xFE, 0xFF, 0x00, 0x20, 0xB6, 0xE7, 0x05, 0x48, 0x81, 0xF7, 0x87, 0xFD, 0x00, 0x20, 0xB1, 0xE7, 0xC0, 0x46, -0x64, 0xA2, 0x16, 0x00, 0xDC, 0xD0, 0x10, 0x00, 0xEC, 0xD0, 0x10, 0x00, 0xFC, 0xD0, 0x10, 0x00, 0xF0, 0xB5, 0x05, 0xAC, -0x24, 0x78, 0x4E, 0x28, 0x3C, 0xD8, 0xFF, 0x2C, 0x08, 0xD0, 0x10, 0x2C, 0x0B, 0xD9, 0x18, 0x2C, 0x37, 0xD9, 0x20, 0x2C, -0x38, 0xD9, 0x03, 0x26, 0x00, 0x25, 0x06, 0xE0, 0x32, 0x4C, 0x24, 0x18, 0xED, 0x34, 0x24, 0x78, 0xF1, 0xE7, 0x00, 0x26, -0x03, 0x25, 0x00, 0x29, 0x36, 0xD0, 0x2E, 0x4F, 0x39, 0x18, 0x0E, 0x00, 0x4F, 0x36, 0x33, 0x70, 0x3E, 0x56, 0xF3, 0x18, -0x5B, 0x10, 0x3B, 0x54, 0x0B, 0x00, 0xED, 0x33, 0x1C, 0x70, 0x0E, 0x00, 0x9E, 0x36, 0x33, 0x78, 0x1C, 0x19, 0x64, 0x10, -0x34, 0x70, 0x8C, 0x31, 0xFF, 0x31, 0x00, 0x23, 0x0B, 0x70, 0x24, 0x4B, 0x1B, 0x18, 0x49, 0x33, 0xFF, 0x33, 0x1B, 0x78, -0xED, 0x18, 0x6D, 0xB2, 0x06, 0x2D, 0x10, 0xDC, 0x1F, 0x4B, 0x1B, 0x18, 0x49, 0x33, 0xFF, 0x33, 0x1D, 0x70, 0x02, 0x30, -0x80, 0x00, 0x1C, 0x4B, 0x18, 0x18, 0x42, 0x60, 0xF0, 0xBD, 0x01, 0x26, 0x02, 0x25, 0xD0, 0xE7, 0x02, 0x26, 0x01, 0x25, -0xCD, 0xE7, 0x17, 0x4B, 0x1B, 0x18, 0x49, 0x33, 0xFF, 0x33, 0x06, 0x21, 0x19, 0x70, 0xEC, 0xE7, 0x12, 0x4B, 0x1B, 0x18, -0x8C, 0x33, 0xFF, 0x33, 0x1B, 0x78, 0x01, 0x2B, 0x14, 0xD0, 0x0F, 0x49, 0x09, 0x18, 0x8C, 0x31, 0xFF, 0x31, 0x01, 0x23, -0x0B, 0x70, 0x0D, 0x49, 0x09, 0x18, 0x49, 0x31, 0xFF, 0x31, 0x0B, 0x78, 0x9B, 0x1B, 0x5B, 0xB2, 0x99, 0x1D, 0x08, 0xDB, -0x08, 0x49, 0x09, 0x18, 0x49, 0x31, 0xFF, 0x31, 0x0B, 0x70, 0xD0, 0xE7, 0x02, 0x36, 0xF6, 0xB2, 0xE7, 0xE7, 0x04, 0x4B, -0x1B, 0x18, 0x49, 0x33, 0xFF, 0x33, 0xFA, 0x21, 0x19, 0x70, 0xC6, 0xE7, 0x1C, 0xE7, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, -0xF8, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8B, 0x4C, 0x00, 0x25, 0x00, 0x22, 0x01, 0x26, -0xC1, 0x27, 0xFF, 0x00, 0x03, 0xE0, 0x01, 0x35, 0x09, 0x34, 0x07, 0x2D, 0x0E, 0xD0, 0x23, 0x78, 0x03, 0x2B, 0xF8, 0xD1, -0x63, 0x78, 0x00, 0x2B, 0xF5, 0xD1, 0x29, 0x02, 0x31, 0x43, 0x89, 0xB2, 0x00, 0x22, 0x38, 0x00, 0x7F, 0xF7, 0x20, 0xFC, -0x01, 0x22, 0xEC, 0xE7, 0x00, 0x2A, 0x0B, 0xD1, 0x7E, 0x4A, 0xD9, 0x23, 0x5B, 0x00, 0x00, 0x21, 0xD1, 0x54, 0x00, 0x20, -0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF8, 0xBD, 0xA8, 0xF7, 0xFE, 0xFF, 0x82, 0x46, 0x8E, 0xF7, -0x09, 0xF8, 0x80, 0x46, 0xA9, 0xF7, 0x18, 0xFB, 0x81, 0x46, 0x00, 0x24, 0x73, 0x4B, 0x9B, 0x46, 0x63, 0xE0, 0x8D, 0xF7, -0xF3, 0xFF, 0x00, 0x28, 0x19, 0xD0, 0xA3, 0x00, 0x4A, 0x46, 0xD3, 0x58, 0x52, 0x46, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, -0xC8, 0x22, 0x92, 0x01, 0x93, 0x42, 0x3D, 0xD2, 0x4B, 0x46, 0x3D, 0x33, 0xFF, 0x33, 0x1B, 0x57, 0x01, 0x33, 0x2D, 0xDB, -0xD4, 0x20, 0x40, 0x00, 0x66, 0x4B, 0x5B, 0x19, 0x01, 0x21, 0xB1, 0x40, 0x1A, 0x5C, 0x0A, 0x43, 0x1A, 0x54, 0x2A, 0x00, -0x63, 0x32, 0xFF, 0x32, 0x5A, 0x44, 0x00, 0x21, 0x06, 0x20, 0x38, 0x40, 0x03, 0x27, 0x13, 0x78, 0x03, 0x41, 0x3B, 0x40, -0x03, 0x2B, 0x27, 0xD0, 0x01, 0x31, 0x0A, 0x32, 0x07, 0x29, 0xF6, 0xD1, 0xB3, 0x1E, 0x01, 0x2B, 0x00, 0xD8, 0x98, 0xE0, -0x73, 0x1F, 0x01, 0x2B, 0x00, 0xD8, 0x94, 0xE0, 0xA3, 0x00, 0x4A, 0x46, 0xD3, 0x58, 0x52, 0x46, 0xD3, 0x1A, 0x1B, 0x01, -0x1B, 0x09, 0xFA, 0x22, 0x12, 0x02, 0x93, 0x42, 0x1E, 0xD9, 0x93, 0xE0, 0xD4, 0x21, 0x49, 0x00, 0x4F, 0x4B, 0x5D, 0x19, -0x01, 0x22, 0xB2, 0x40, 0x6B, 0x5C, 0x93, 0x43, 0x6B, 0x54, 0x13, 0xE0, 0x4B, 0x46, 0x3D, 0x33, 0xFF, 0x33, 0x00, 0x22, -0x1A, 0x55, 0xCA, 0xE7, 0xD4, 0x20, 0x40, 0x00, 0x47, 0x4B, 0x9C, 0x46, 0xAC, 0x44, 0x01, 0x22, 0xB2, 0x40, 0x63, 0x46, -0x1B, 0x5C, 0x93, 0x43, 0x62, 0x46, 0x13, 0x54, 0x07, 0x29, 0xCD, 0xD0, 0x01, 0x34, 0x4F, 0x2C, 0x13, 0xD0, 0xE7, 0xB2, -0x07, 0x26, 0x26, 0x40, 0x65, 0x05, 0x2D, 0x0E, 0x43, 0x46, 0x5B, 0x5D, 0x33, 0x41, 0xDB, 0x07, 0x91, 0xD4, 0xD4, 0x21, -0x49, 0x00, 0x3A, 0x4B, 0x5D, 0x19, 0x01, 0x22, 0xB2, 0x40, 0x6B, 0x5C, 0x93, 0x43, 0x6B, 0x54, 0xE8, 0xE7, 0x37, 0x48, -0x81, 0xF7, 0xB0, 0xFC, 0x13, 0x28, 0x41, 0xD8, 0x14, 0x23, 0x1B, 0x1A, 0xDB, 0xB2, 0x9B, 0x46, 0x14, 0x25, 0x2D, 0x1A, -0x00, 0x23, 0x99, 0x46, 0x00, 0x24, 0x2F, 0x4E, 0x0E, 0xE0, 0x48, 0x46, 0x13, 0x28, 0x09, 0xD9, 0x2C, 0x48, 0x84, 0x46, -0x62, 0x44, 0x01, 0x20, 0x98, 0x40, 0x01, 0x43, 0xD4, 0x23, 0x5B, 0x00, 0xD1, 0x54, 0x01, 0x34, 0xAC, 0x42, 0x27, 0xDA, -0xD6, 0xF7, 0xDA, 0xFA, 0x7F, 0x23, 0x18, 0x40, 0x4E, 0x28, 0x00, 0xD9, 0x4F, 0x38, 0xC2, 0x08, 0xB1, 0x18, 0xD4, 0x23, -0x5B, 0x00, 0xC9, 0x5C, 0xA2, 0x3B, 0xFF, 0x3B, 0x03, 0x40, 0x0F, 0x00, 0x1F, 0x41, 0xFF, 0x07, 0xEA, 0xD4, 0x47, 0x46, -0xBF, 0x5C, 0x1F, 0x41, 0xFF, 0x07, 0xE5, 0xD5, 0x4F, 0x46, 0x01, 0x37, 0xFF, 0xB2, 0xB9, 0x46, 0x1A, 0x4F, 0xBC, 0x46, -0x60, 0x44, 0x9E, 0x30, 0x00, 0x78, 0x18, 0x28, 0xD0, 0xD9, 0xCB, 0x45, 0xCB, 0xD8, 0x20, 0x28, 0xCC, 0xD9, 0xC8, 0xE7, -0x13, 0x48, 0x81, 0xF7, 0x69, 0xFC, 0x01, 0x00, 0x13, 0x48, 0x81, 0xF7, 0x01, 0xFC, 0xC8, 0x22, 0x00, 0x21, 0x12, 0x48, -0x7F, 0xF7, 0x38, 0xFA, 0x1F, 0xE7, 0xA3, 0x00, 0x4A, 0x46, 0xD3, 0x58, 0x52, 0x46, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, -0xFA, 0x22, 0xD2, 0x01, 0x93, 0x42, 0x89, 0xD9, 0xD4, 0x21, 0x49, 0x00, 0x05, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x01, 0x22, -0xB2, 0x40, 0x6B, 0x5C, 0x13, 0x43, 0x6B, 0x54, 0x7E, 0xE7, 0xC0, 0x46, 0xA4, 0x9E, 0x16, 0x00, 0x68, 0x9E, 0x16, 0x00, -0x10, 0xA0, 0x16, 0x00, 0x1C, 0xE7, 0x10, 0x00, 0x0C, 0xD1, 0x10, 0x00, 0x0A, 0x05, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, -0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x07, 0x00, 0x08, 0x00, 0x00, 0x91, 0xBA, 0x00, 0xA4, 0x4B, -0xD5, 0x58, 0xA6, 0x23, 0xEB, 0x5C, 0x9B, 0x46, 0x2B, 0x6D, 0x98, 0x46, 0x62, 0x23, 0x7B, 0x43, 0xA0, 0x4A, 0x9A, 0x18, -0x16, 0x88, 0xA0, 0x4A, 0x9A, 0x18, 0x14, 0x88, 0x36, 0x04, 0x26, 0x43, 0x9E, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0x92, 0x05, -0x92, 0x0D, 0x91, 0x46, 0x9C, 0x4A, 0x9A, 0x18, 0x14, 0x88, 0x9C, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x24, 0x04, -0x1C, 0x19, 0x9A, 0x4B, 0x98, 0x45, 0x1A, 0xD8, 0x73, 0x1A, 0x19, 0x01, 0x09, 0x09, 0x80, 0x22, 0x12, 0x05, 0x91, 0x42, -0x4A, 0xD9, 0x83, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, 0xA1, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0x49, 0xD0, 0x00, 0x2B, -0x09, 0xDB, 0x89, 0x08, 0x00, 0x29, 0x06, 0xDD, 0x89, 0x00, 0x00, 0x9B, 0x9C, 0x46, 0x61, 0x44, 0x09, 0x01, 0x0B, 0x09, -0x00, 0x93, 0xA4, 0x1B, 0x00, 0x9B, 0x9C, 0x46, 0x64, 0x44, 0x24, 0x01, 0x24, 0x09, 0xF4, 0x26, 0x76, 0x00, 0x4B, 0x46, -0xF6, 0x1A, 0x3B, 0xD4, 0xAC, 0x67, 0x82, 0x23, 0xEE, 0x52, 0x62, 0x42, 0x7F, 0x3B, 0x13, 0x40, 0xA6, 0x22, 0xAB, 0x54, -0x72, 0x3A, 0x2A, 0x65, 0x01, 0x96, 0xAE, 0x60, 0x42, 0x46, 0x34, 0x2A, 0x09, 0xD9, 0xEA, 0x7D, 0x00, 0x2A, 0x06, 0xD0, -0xC8, 0x22, 0x52, 0x00, 0xB2, 0x42, 0x92, 0x41, 0x52, 0x42, 0x05, 0x32, 0xEA, 0x75, 0x5B, 0x45, 0x00, 0xD1, 0x9F, 0xE0, -0xA1, 0x23, 0xEB, 0x5C, 0x03, 0x2B, 0x21, 0xD0, 0x3B, 0x02, 0x01, 0x22, 0x13, 0x43, 0x02, 0x93, 0x01, 0x23, 0x98, 0x46, -0xFE, 0x33, 0x9A, 0x46, 0xA9, 0x46, 0x45, 0x46, 0xA0, 0x46, 0x4D, 0xE0, 0x1B, 0x01, 0x1B, 0x09, 0xA1, 0x22, 0xAA, 0x5C, -0x00, 0x2A, 0xB8, 0xD0, 0xB5, 0xE7, 0x00, 0x2B, 0xB5, 0xDA, 0x6C, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, -0x98, 0x47, 0xB8, 0xE7, 0x69, 0x4E, 0xF6, 0x1A, 0x01, 0x34, 0x24, 0x01, 0x24, 0x09, 0xBD, 0xE7, 0xC1, 0x33, 0x99, 0x46, -0xEB, 0x58, 0x6A, 0x6F, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x4A, 0x46, 0xAB, 0x50, 0x3B, 0x02, -0x01, 0x21, 0x19, 0x43, 0x02, 0x23, 0x3B, 0x32, 0x5F, 0x48, 0x7F, 0xF7, 0x2B, 0xFA, 0x80, 0x46, 0x4B, 0x46, 0xEB, 0x58, -0x5B, 0x08, 0x99, 0x46, 0xCC, 0x23, 0xEB, 0x5A, 0x9A, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x57, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x51, 0x46, 0x48, 0x46, 0xD5, 0xF7, 0x47, 0xFD, 0x43, 0x46, 0x19, 0x80, 0x40, 0x46, -0x7F, 0xF7, 0x3C, 0xFA, 0xB0, 0xE7, 0x21, 0x00, 0x03, 0x98, 0xD5, 0xF7, 0x3D, 0xFD, 0x04, 0x9B, 0x59, 0x80, 0x18, 0x00, -0x7F, 0xF7, 0x32, 0xFA, 0x01, 0x3D, 0x3F, 0xD3, 0x53, 0x46, 0x2B, 0x40, 0x9B, 0x00, 0x4B, 0x4A, 0x9C, 0x58, 0x00, 0x2C, -0xF6, 0xD0, 0x46, 0x23, 0xE3, 0x5C, 0xBB, 0x42, 0xF2, 0xD1, 0x63, 0x6B, 0x42, 0x46, 0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, -0x63, 0x63, 0x4A, 0x46, 0x52, 0x6F, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x63, 0x63, 0x68, 0x42, 0x46, -0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x4A, 0x46, 0x52, 0x6F, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, -0x63, 0x60, 0x01, 0x9B, 0xA3, 0x60, 0x04, 0x23, 0x52, 0x46, 0x02, 0x99, 0x38, 0x48, 0x7F, 0xF7, 0xD9, 0xF9, 0x04, 0x90, -0x47, 0x23, 0xE3, 0x5C, 0x03, 0x70, 0x63, 0x6B, 0x5B, 0x08, 0x03, 0x93, 0x42, 0x23, 0xE4, 0x5C, 0x00, 0x2C, 0xBC, 0xD1, -0x2D, 0x4B, 0x9B, 0x6E, 0x05, 0x93, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xB4, 0xE7, 0x44, 0x46, 0x4D, 0x46, -0x6C, 0x67, 0x84, 0x23, 0xEE, 0x52, 0x1D, 0x33, 0xEB, 0x5C, 0x04, 0x2B, 0x0D, 0xD0, 0xA6, 0x23, 0xE8, 0x5C, 0x5B, 0x46, -0xC0, 0x1A, 0x43, 0x1E, 0x98, 0x41, 0xC0, 0xB2, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, -0xF0, 0xBD, 0x7C, 0x33, 0xEB, 0x5A, 0x9E, 0x1B, 0xF3, 0x17, 0xF6, 0x18, 0x5E, 0x40, 0x33, 0xB2, 0x9D, 0x22, 0x52, 0x00, -0x93, 0x42, 0x02, 0xDB, 0x1D, 0x4B, 0x9B, 0x1B, 0x1B, 0xB2, 0x03, 0x2B, 0xE1, 0xDD, 0xE8, 0x23, 0xEB, 0x58, 0x1A, 0x68, -0x00, 0x9B, 0xA8, 0x6F, 0x84, 0x46, 0x63, 0x44, 0x19, 0x00, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x20, 0x00, 0x05, -0x83, 0x42, 0xD2, 0xD8, 0x09, 0x01, 0x09, 0x09, 0x51, 0x1A, 0x09, 0x01, 0x09, 0x09, 0x64, 0x29, 0xCB, 0xDD, 0x3F, 0x02, -0x01, 0x21, 0x39, 0x43, 0xFF, 0x22, 0x0F, 0x48, 0x7F, 0xF7, 0xC2, 0xF9, 0xC3, 0xE7, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, -0x4C, 0x65, 0x61, 0x40, 0x4A, 0x65, 0x61, 0x40, 0x4E, 0x65, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0xFA, 0x64, 0x61, 0x40, -0xE1, 0x04, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0x59, 0x04, 0x00, 0x00, 0x33, 0x06, 0x00, 0x00, 0x54, 0x27, 0x16, 0x00, -0x34, 0x06, 0x00, 0x00, 0x71, 0x02, 0x00, 0x00, 0x2E, 0x06, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, -0x45, 0x46, 0xE0, 0xB5, 0x89, 0xB0, 0x03, 0x90, 0x89, 0x46, 0x81, 0x00, 0xC9, 0x4B, 0xCF, 0x58, 0x53, 0x1E, 0xDB, 0xB2, -0x9B, 0x46, 0x00, 0x2A, 0x00, 0xD1, 0x26, 0xE1, 0x03, 0x02, 0x01, 0x22, 0x13, 0x43, 0x07, 0x93, 0xC4, 0x4B, 0x98, 0x46, -0x9A, 0x46, 0x5C, 0x46, 0x83, 0xE0, 0x6B, 0x46, 0x10, 0x21, 0x5B, 0x5E, 0x00, 0x2B, 0x06, 0xDB, 0xA7, 0x21, 0x79, 0x5C, -0x77, 0x29, 0x02, 0xD8, 0x01, 0x31, 0xA7, 0x20, 0x39, 0x54, 0xE9, 0x06, 0x00, 0xD5, 0xD7, 0xE0, 0xA4, 0x21, 0x29, 0x42, -0x5B, 0xD1, 0x29, 0x07, 0x54, 0xD4, 0x00, 0x2B, 0x00, 0xDA, 0xCF, 0xE0, 0xA7, 0x23, 0xFB, 0x5C, 0x77, 0x2B, 0x02, 0xD8, -0xA7, 0x23, 0x02, 0x21, 0xF9, 0x54, 0x0F, 0x23, 0x1A, 0x40, 0x03, 0x25, 0x05, 0x9B, 0x1D, 0x40, 0x03, 0x2A, 0x01, 0xD0, -0x08, 0x2A, 0x02, 0xD1, 0x03, 0x2D, 0x00, 0xD1, 0xCE, 0xE0, 0xEC, 0x23, 0xFB, 0x58, 0x00, 0x2B, 0x00, 0xD0, 0xB7, 0xE0, -0x6B, 0x1E, 0x01, 0x2B, 0x00, 0xD9, 0xB3, 0xE0, 0x05, 0x9B, 0xDE, 0x04, 0xB6, 0x0D, 0x00, 0xD1, 0xAE, 0xE0, 0x04, 0x23, -0xFF, 0x22, 0x07, 0x99, 0xA5, 0x48, 0x7F, 0xF7, 0x0B, 0xF9, 0xA5, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, -0x9B, 0x1A, 0x5B, 0x00, 0xA2, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x03, 0x80, 0x43, 0x88, 0x9B, 0x0A, 0x9B, 0x02, -0x33, 0x43, 0x9F, 0x4E, 0x33, 0x40, 0x2D, 0x03, 0x1D, 0x43, 0xAA, 0x04, 0x92, 0x0C, 0x06, 0x9B, 0x59, 0x42, 0x4B, 0x41, -0x9B, 0x03, 0x13, 0x43, 0x43, 0x80, 0x7F, 0xF7, 0x17, 0xF9, 0x96, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, -0x9B, 0x1A, 0x5B, 0x00, 0x93, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x00, 0x22, 0x1A, 0x80, 0x7D, 0xE0, 0xFF, 0x22, 0x07, 0x99, -0x91, 0x48, 0x7F, 0xF7, 0x1B, 0xF9, 0xA8, 0xF7, 0x3F, 0xFA, 0x90, 0x4B, 0x1D, 0x68, 0x58, 0x46, 0x43, 0x46, 0xDB, 0x69, -0x98, 0x47, 0x03, 0x00, 0x2D, 0x0A, 0xED, 0xB2, 0x00, 0x95, 0x4A, 0x46, 0x00, 0x21, 0x02, 0x98, 0xFF, 0xF7, 0x52, 0xFC, -0x01, 0x3C, 0xE4, 0xB2, 0xFF, 0x2C, 0x00, 0xD1, 0x99, 0xE0, 0x03, 0x98, 0xA8, 0xF7, 0x54, 0xFA, 0x00, 0x28, 0x00, 0xD1, -0x93, 0xE0, 0xD5, 0x23, 0x5B, 0x00, 0x7E, 0x4A, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x80, 0x4A, 0x9A, 0x18, -0x15, 0x88, 0xAD, 0xB2, 0x7F, 0x4A, 0x9A, 0x18, 0x16, 0x88, 0xB6, 0xB2, 0x7E, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0x92, 0xB2, -0x05, 0x92, 0x7D, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x9A, 0xB2, 0x04, 0x92, 0xDA, 0xB2, 0x93, 0x46, 0x5B, 0x04, -0x5B, 0x0E, 0x02, 0x93, 0x4B, 0x46, 0xFA, 0x6E, 0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0xC8, 0x2B, 0x0A, 0xD9, 0xA7, 0x23, -0xFB, 0x5C, 0x77, 0x2B, 0x06, 0xD8, 0xA1, 0x22, 0xBA, 0x5C, 0x00, 0x2A, 0x02, 0xD1, 0x01, 0x33, 0xA7, 0x32, 0xBB, 0x54, -0xEB, 0x07, 0xB0, 0xD4, 0x07, 0x23, 0x1A, 0x00, 0x32, 0x40, 0x06, 0x92, 0x4A, 0x46, 0xFA, 0x66, 0x33, 0x42, 0x0B, 0xD0, -0x5F, 0x4B, 0xDB, 0x69, 0x58, 0x46, 0x98, 0x47, 0x98, 0x22, 0xBB, 0x5A, 0x1B, 0x18, 0xBB, 0x52, 0x02, 0x32, 0xBB, 0x5C, -0x01, 0x33, 0xBB, 0x54, 0xAB, 0x07, 0x9A, 0xD4, 0x4B, 0x46, 0x3B, 0x67, 0x6B, 0x06, 0x02, 0xD5, 0x06, 0x9B, 0x00, 0x2B, -0x0C, 0xD1, 0xF6, 0x10, 0xF2, 0xB2, 0x0E, 0x23, 0x1E, 0x42, 0x00, 0xD0, 0x1F, 0xE7, 0x99, 0x33, 0xFB, 0x5C, 0x00, 0x2B, -0x02, 0xD0, 0x01, 0x3B, 0xA7, 0x22, 0xBB, 0x54, 0xA8, 0xF7, 0xC6, 0xF9, 0x53, 0x4B, 0x1D, 0x68, 0x58, 0x46, 0x53, 0x46, -0xDB, 0x69, 0x98, 0x47, 0x03, 0x00, 0x2D, 0x0A, 0xED, 0xB2, 0x00, 0x95, 0x4A, 0x46, 0x01, 0x21, 0x02, 0x98, 0xFF, 0xF7, -0xD9, 0xFB, 0x85, 0xE7, 0x47, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x4D, 0x4A, -0x94, 0x46, 0x63, 0x44, 0x19, 0x88, 0x8B, 0xB2, 0x04, 0x93, 0x05, 0x9A, 0xD5, 0x04, 0xAD, 0x0D, 0x6B, 0x1C, 0xFF, 0x22, -0x07, 0x99, 0x48, 0x48, 0x7F, 0xF7, 0x3A, 0xF8, 0x06, 0x00, 0x05, 0x70, 0x04, 0x9B, 0x46, 0x4A, 0x94, 0x46, 0x63, 0x44, -0x19, 0x00, 0x01, 0x30, 0x2A, 0x00, 0xD5, 0xF7, 0x27, 0xFF, 0x30, 0x00, 0x7F, 0xF7, 0x56, 0xF8, 0xC8, 0xE7, 0x62, 0x24, -0x03, 0x9B, 0x5C, 0x43, 0x3F, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x23, 0x88, 0x80, 0x22, 0x93, 0x43, 0x23, 0x80, 0x89, 0xF7, -0x59, 0xF9, 0x00, 0x28, 0x18, 0xD0, 0x2F, 0x4B, 0x1B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x13, 0xD1, 0x38, 0x4B, 0x1B, 0x88, -0x9B, 0xB2, 0x00, 0x2B, 0x0E, 0xD1, 0x37, 0x4B, 0x1B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x09, 0xD1, 0x35, 0x4B, 0x1B, 0x88, -0x9B, 0xB2, 0x00, 0x2B, 0x04, 0xD1, 0x23, 0x88, 0x80, 0x22, 0x93, 0x43, 0x13, 0x43, 0x23, 0x80, 0x9A, 0x23, 0xFB, 0x5C, -0x96, 0x2B, 0x03, 0xD9, 0xEC, 0x23, 0xFB, 0x58, 0x00, 0x2B, 0x06, 0xD0, 0x09, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xAC, 0x33, 0xFB, 0x5C, 0x00, 0x2B, 0xF4, 0xD0, 0x9B, 0x23, 0x00, 0x22, 0xFA, 0x54, -0x26, 0x4A, 0x27, 0x4B, 0xD3, 0x5C, 0x5B, 0x07, 0x03, 0xD5, 0x26, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x05, 0xD1, 0x00, 0x23, -0x9A, 0x22, 0xBB, 0x54, 0x02, 0x3A, 0xBB, 0x52, 0xE2, 0xE7, 0x03, 0x9B, 0x19, 0x02, 0x01, 0x23, 0x19, 0x43, 0xFF, 0x22, -0x1F, 0x48, 0x7F, 0xF7, 0x17, 0xF8, 0x98, 0x23, 0xF8, 0x5E, 0x9A, 0x23, 0xF9, 0x5C, 0xD5, 0xF7, 0x05, 0xFB, 0x06, 0x4A, -0x2F, 0x23, 0xD3, 0x5C, 0xC0, 0x1A, 0x9B, 0x23, 0xF8, 0x54, 0x17, 0x4A, 0x13, 0x78, 0x01, 0x3B, 0x13, 0x70, 0xE0, 0xE7, -0x38, 0x27, 0x16, 0x00, 0x60, 0x92, 0x16, 0x00, 0x29, 0x06, 0x00, 0x00, 0x20, 0xA3, 0x16, 0x00, 0x9A, 0x69, 0x61, 0x40, -0xFF, 0xCF, 0xFF, 0xFF, 0x2A, 0x06, 0x00, 0x00, 0x0C, 0x01, 0x60, 0x40, 0x92, 0x69, 0x61, 0x40, 0x94, 0x69, 0x61, 0x40, -0x96, 0x69, 0x61, 0x40, 0x98, 0x69, 0x61, 0x40, 0x9C, 0x69, 0x61, 0x40, 0x27, 0x06, 0x00, 0x00, 0x00, 0x00, 0x61, 0x40, -0x0E, 0x65, 0x61, 0x40, 0xA8, 0x69, 0x61, 0x40, 0xB6, 0x69, 0x61, 0x40, 0xC4, 0x69, 0x61, 0x40, 0x7C, 0x1E, 0x16, 0x00, -0x9D, 0x02, 0x00, 0x00, 0x24, 0xE6, 0x10, 0x00, 0x2F, 0x06, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x04, 0x00, -0x88, 0x46, 0x16, 0x00, 0xFF, 0xF7, 0x84, 0xFA, 0x00, 0x28, 0x3F, 0xD1, 0x22, 0x4D, 0x23, 0x4F, 0xEB, 0x5D, 0x04, 0x22, -0x93, 0x43, 0xEB, 0x55, 0x32, 0x00, 0x41, 0x46, 0x20, 0x00, 0xFF, 0xF7, 0x1F, 0xFE, 0xEB, 0x5D, 0x04, 0x22, 0x13, 0x43, -0xEB, 0x55, 0xA4, 0x00, 0x1C, 0x4B, 0xE4, 0x58, 0xA7, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0x02, 0xD9, 0xA7, 0x23, 0x04, 0x22, -0xE2, 0x54, 0xFE, 0xF7, 0x49, 0xFB, 0x00, 0x28, 0x02, 0xD1, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xB1, 0xF7, 0x04, 0xFD, -0x00, 0x28, 0xF8, 0xD1, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x0A, 0xD1, 0xA7, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x06, 0xD1, -0xAA, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x02, 0xD0, 0xA7, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xA8, 0x23, 0xE3, 0x5C, 0x00, 0x2B, -0x03, 0xD1, 0x62, 0x68, 0x09, 0x4B, 0x1A, 0x60, 0xE1, 0xE7, 0xA8, 0xF7, 0x81, 0xFB, 0x08, 0x4B, 0x18, 0x60, 0xF6, 0xE7, -0x32, 0x00, 0x41, 0x46, 0x20, 0x00, 0xFF, 0xF7, 0xE5, 0xFD, 0xC8, 0xE7, 0x7C, 0x1E, 0x16, 0x00, 0x9D, 0x02, 0x00, 0x00, -0x38, 0x27, 0x16, 0x00, 0x28, 0xE6, 0x10, 0x00, 0x2C, 0xE6, 0x10, 0x00, 0x03, 0x4B, 0x04, 0x4A, 0x1A, 0x60, 0x04, 0x4B, -0x04, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x04, 0x30, 0x34, 0x40, 0xC1, 0x00, 0xA0, 0x00, 0x0C, 0x00, 0x58, 0x40, -0x14, 0x00, 0x7F, 0x30, 0x01, 0x4B, 0x02, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0x04, 0x30, 0x34, 0x40, 0xC0, 0x00, 0xA0, 0x00, -0x10, 0xB5, 0x30, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x09, 0xD0, 0x01, 0x28, 0x08, 0xD0, 0x02, 0x28, 0x47, 0xD0, 0x2D, 0x4B, -0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x10, 0xBD, 0xA8, 0xF7, 0x44, 0xFB, 0x27, 0x4B, 0x5B, 0x78, -0x00, 0x2B, 0x11, 0xD1, 0x25, 0x4B, 0x01, 0x22, 0x5A, 0x70, 0x58, 0x60, 0x9B, 0x78, 0x01, 0x2B, 0xF1, 0xD0, 0xFE, 0xF7, -0xA7, 0xFA, 0x00, 0x28, 0xED, 0xD1, 0xFE, 0xF7, 0xC1, 0xFA, 0x00, 0x28, 0xE9, 0xD1, 0xFF, 0xF7, 0xC1, 0xFF, 0xE6, 0xE7, -0x1C, 0x4A, 0x53, 0x68, 0xC3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x92, 0x78, 0x00, 0x2A, 0x0B, 0xD1, 0x23, 0x2B, 0xDC, 0xD9, -0x17, 0x4B, 0x01, 0x32, 0x9A, 0x70, 0x00, 0x22, 0x5A, 0x70, 0x58, 0x60, 0x16, 0x4B, 0x17, 0x4A, 0x1A, 0x60, 0xD2, 0xE7, -0x01, 0x2A, 0xD0, 0xD1, 0x3B, 0x2B, 0xCE, 0xD9, 0x10, 0x4B, 0x00, 0x22, 0x9A, 0x70, 0x01, 0x32, 0x5A, 0x70, 0x58, 0x60, -0xFE, 0xF7, 0x7E, 0xFA, 0x00, 0x28, 0xC4, 0xD1, 0xFE, 0xF7, 0x98, 0xFA, 0x00, 0x28, 0xC0, 0xD1, 0xFF, 0xF7, 0x98, 0xFF, -0xBD, 0xE7, 0x08, 0x4B, 0x5B, 0x78, 0x01, 0x2B, 0x01, 0xD0, 0x00, 0x29, 0xB7, 0xD0, 0x05, 0x4B, 0x00, 0x22, 0x5A, 0x70, -0x9A, 0x70, 0x01, 0x3A, 0x5A, 0x60, 0x04, 0x4B, 0x04, 0x4A, 0x1A, 0x60, 0xAD, 0xE7, 0xC0, 0x46, 0xDC, 0xE6, 0x10, 0x00, -0x28, 0x19, 0x16, 0x00, 0x04, 0x30, 0x34, 0x40, 0xC0, 0x00, 0xA0, 0x00, 0xF0, 0xB5, 0x80, 0x00, 0x26, 0x4B, 0xC3, 0x58, -0xAB, 0x20, 0x18, 0x5C, 0x00, 0x28, 0x27, 0xD0, 0x0D, 0x1C, 0xAA, 0x20, 0x80, 0x00, 0x81, 0x42, 0x01, 0xD3, 0x22, 0x49, -0x0D, 0x1C, 0xAD, 0xB2, 0x9D, 0x21, 0x5F, 0x5C, 0x00, 0x23, 0x00, 0x24, 0x01, 0x26, 0x02, 0xE0, 0x01, 0x33, 0x07, 0x2B, -0x0C, 0xD0, 0xD8, 0xB2, 0x39, 0x00, 0x19, 0x41, 0x0E, 0x42, 0xF7, 0xD0, 0x59, 0x00, 0x1A, 0x4C, 0x61, 0x5A, 0xA9, 0x42, -0x01, 0xD2, 0x04, 0x00, 0xF0, 0xE7, 0x04, 0x00, 0x17, 0x4B, 0x18, 0x5D, 0x64, 0x00, 0x15, 0x4B, 0xE3, 0x5A, 0xAB, 0x42, -0x00, 0xD9, 0x2B, 0x00, 0x13, 0x80, 0xF0, 0xBD, 0x9C, 0x20, 0x1F, 0x5C, 0x00, 0x23, 0x00, 0x25, 0x01, 0x26, 0x02, 0xE0, -0x01, 0x33, 0x06, 0x2B, 0x0C, 0xD0, 0xDC, 0xB2, 0x38, 0x00, 0x18, 0x41, 0x06, 0x42, 0xF7, 0xD0, 0x58, 0x00, 0x0C, 0x4D, -0x28, 0x5A, 0x88, 0x42, 0x01, 0xD2, 0x25, 0x00, 0xF0, 0xE7, 0x25, 0x00, 0x09, 0x4B, 0x58, 0x5D, 0x6D, 0x00, 0x07, 0x4B, -0xEB, 0x5A, 0x8B, 0x42, 0x00, 0xD9, 0x0B, 0x00, 0x13, 0x80, 0xDE, 0xE7, 0x38, 0x27, 0x16, 0x00, 0xA7, 0x02, 0x00, 0x00, -0x40, 0xC9, 0x0D, 0x00, 0x50, 0xC9, 0x0D, 0x00, 0x2C, 0xC9, 0x0D, 0x00, 0x38, 0xC9, 0x0D, 0x00, 0xF0, 0xB5, 0xDE, 0x46, -0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x85, 0xB0, 0x00, 0x90, 0x88, 0x46, 0x82, 0x00, 0x95, 0x4B, 0xD4, 0x58, -0xAF, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD9, 0x0D, 0xE1, 0x03, 0x02, 0x01, 0x27, 0x1F, 0x43, 0x88, 0x23, 0x99, 0x46, -0xBB, 0x46, 0x2A, 0xE0, 0xAB, 0x00, 0x5D, 0x19, 0x6D, 0x00, 0x8E, 0x4B, 0xEA, 0x18, 0x13, 0x88, 0x78, 0x21, 0x8B, 0x43, -0x60, 0x39, 0x0B, 0x43, 0x13, 0x80, 0x8B, 0x4B, 0xEA, 0x18, 0x83, 0x79, 0xDB, 0x00, 0x11, 0x39, 0x0B, 0x43, 0x13, 0x80, -0x82, 0x88, 0x88, 0x4B, 0xEB, 0x18, 0x1A, 0x80, 0x87, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x2B, 0x88, 0x5B, 0x04, 0x5B, 0x0C, -0x2B, 0x80, 0xAE, 0x22, 0xA3, 0x5C, 0x59, 0x42, 0x4B, 0x41, 0xA3, 0x54, 0x01, 0x32, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, -0xAF, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD9, 0xDB, 0xE0, 0x9E, 0x23, 0xE5, 0x5C, 0x6D, 0x00, 0x10, 0x33, 0xE3, 0x5C, -0xED, 0x18, 0xED, 0xB2, 0x20, 0x00, 0x40, 0x30, 0x81, 0xF7, 0x84, 0xFA, 0x00, 0x28, 0xC7, 0xD1, 0xEC, 0x23, 0xE3, 0x58, -0x00, 0x2B, 0x39, 0xD0, 0x9A, 0x7A, 0x00, 0x2A, 0x36, 0xD1, 0xAC, 0x32, 0xA2, 0x5C, 0x00, 0x2A, 0x00, 0xD1, 0xC2, 0xE0, -0x9A, 0x78, 0x05, 0x3A, 0x03, 0x2A, 0x00, 0xD8, 0xBD, 0xE0, 0x1A, 0x88, 0xA9, 0x00, 0x4D, 0x19, 0x6D, 0x00, 0x69, 0x49, -0x68, 0x18, 0x01, 0x88, 0xDE, 0x79, 0x0F, 0x23, 0x33, 0x40, 0xDB, 0x00, 0x78, 0x26, 0xB1, 0x43, 0x0B, 0x43, 0x03, 0x80, -0x64, 0x4B, 0xE9, 0x18, 0xD3, 0x00, 0x05, 0x22, 0x13, 0x43, 0x9B, 0xB2, 0x0B, 0x80, 0xEC, 0x23, 0xE3, 0x58, 0x1A, 0x89, -0x62, 0x4B, 0xEB, 0x18, 0x1A, 0x80, 0x60, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x2B, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x2B, 0x80, -0xAE, 0x22, 0xA3, 0x5C, 0x59, 0x42, 0x4B, 0x41, 0xA3, 0x54, 0x01, 0x32, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0xAF, 0xE7, -0xAC, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x8B, 0xE0, 0x96, 0x23, 0xE1, 0x5A, 0x01, 0x27, 0x00, 0x29, 0x39, 0xD0, -0x02, 0xAB, 0x9A, 0x1D, 0x00, 0x98, 0xFF, 0xF7, 0x07, 0xFF, 0xAB, 0x00, 0x5D, 0x19, 0x6D, 0x00, 0x4B, 0x4B, 0xEA, 0x18, -0x13, 0x88, 0x78, 0x21, 0x8B, 0x43, 0xC0, 0x00, 0x03, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0x48, 0x4B, 0xEA, 0x18, 0x02, 0xAB, -0xDB, 0x88, 0xDB, 0x00, 0x1F, 0x43, 0x04, 0x23, 0x1F, 0x43, 0xBF, 0xB2, 0x17, 0x80, 0x94, 0x22, 0xA1, 0x5A, 0x45, 0x4B, -0xEB, 0x18, 0x19, 0x80, 0x42, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x2B, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x2B, 0x80, 0x02, 0xAB, -0xDB, 0x88, 0x96, 0x20, 0x21, 0x5A, 0xC9, 0x1A, 0x21, 0x52, 0xA1, 0x5A, 0x5B, 0x18, 0xA3, 0x52, 0x1A, 0x32, 0xA3, 0x5C, -0x59, 0x42, 0x4B, 0x41, 0xA3, 0x54, 0x01, 0x32, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0x6B, 0xE7, 0x27, 0x00, 0x48, 0x37, -0x80, 0x23, 0x1B, 0x05, 0x9A, 0x46, 0x0F, 0xE0, 0x52, 0x00, 0x8A, 0x42, 0x1E, 0xDA, 0x01, 0x23, 0xFF, 0x22, 0x59, 0x46, -0x31, 0x48, 0x7E, 0xF7, 0x7F, 0xFD, 0x01, 0x23, 0x03, 0x70, 0x7E, 0xF7, 0xA5, 0xFD, 0x30, 0x89, 0x88, 0xF7, 0x98, 0xFE, -0x38, 0x00, 0x81, 0xF7, 0xE7, 0xF9, 0x06, 0x1E, 0x46, 0xD0, 0x4B, 0x46, 0xE2, 0x5A, 0x00, 0x2A, 0x08, 0xD0, 0x43, 0x68, -0x59, 0x1C, 0x05, 0xD0, 0x41, 0x46, 0xCB, 0x1A, 0x19, 0x01, 0x09, 0x09, 0x51, 0x45, 0xDD, 0xD9, 0x73, 0x89, 0x9F, 0x04, -0xBF, 0x0F, 0x9B, 0x05, 0x9B, 0x0D, 0x9A, 0x46, 0x90, 0x23, 0xE3, 0x58, 0x00, 0x2B, 0x2C, 0xD0, 0x8C, 0x23, 0xE3, 0x58, -0x00, 0x2B, 0x06, 0xD0, 0x1D, 0x4B, 0x9B, 0x6E, 0x01, 0x93, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x8C, 0x23, -0xE6, 0x50, 0x96, 0x23, 0x52, 0x46, 0xE2, 0x52, 0x32, 0x89, 0x02, 0x3B, 0xE2, 0x52, 0x01, 0x2F, 0x00, 0xD0, 0x02, 0x27, -0x96, 0x23, 0xE1, 0x5A, 0x00, 0x29, 0x00, 0xD0, 0x78, 0xE7, 0xAF, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x06, 0xD0, 0xA8, 0x23, -0xE3, 0x5C, 0x00, 0x2B, 0x02, 0xD1, 0xA8, 0x33, 0x01, 0x22, 0xE2, 0x54, 0x05, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x90, 0x33, 0xE6, 0x50, 0xDC, 0xE7, 0x01, 0x27, 0xE3, 0xE7, 0x38, 0x27, 0x16, 0x00, -0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, 0xD0, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0xCE, 0x69, 0x61, 0x40, -0x2B, 0x06, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, -0x83, 0xB0, 0x82, 0x00, 0x4B, 0x4B, 0xD4, 0x58, 0x90, 0x23, 0xE2, 0x58, 0x00, 0x2A, 0x00, 0xD1, 0x84, 0xE0, 0x49, 0x4B, -0x59, 0x88, 0x49, 0x4B, 0x1B, 0x78, 0x99, 0x42, 0x73, 0xD9, 0x9E, 0x23, 0xE3, 0x5C, 0x5B, 0x00, 0xAD, 0x21, 0x61, 0x5C, -0x5B, 0x18, 0xDB, 0xB2, 0x56, 0x89, 0xB6, 0x05, 0xB2, 0x0D, 0x90, 0x46, 0x02, 0x22, 0x90, 0x26, 0x41, 0x49, 0x01, 0x91, -0xAF, 0x21, 0x8A, 0x46, 0x01, 0x39, 0x89, 0x46, 0x10, 0x39, 0x8C, 0x46, 0x00, 0x90, 0x0C, 0xE0, 0x63, 0x46, 0xE5, 0x5C, -0x6D, 0x00, 0xAD, 0x23, 0xE1, 0x5C, 0x4B, 0x42, 0x4B, 0x41, 0x5B, 0x19, 0xDB, 0xB2, 0x01, 0x3A, 0xD2, 0xB2, 0x00, 0x2A, -0x31, 0xD0, 0x99, 0x00, 0xCB, 0x18, 0x5B, 0x00, 0x35, 0x49, 0x5F, 0x18, 0x39, 0x88, 0x89, 0xB2, 0xA5, 0x59, 0x2D, 0x89, -0x8D, 0x42, 0xE7, 0xD8, 0x45, 0x44, 0xA9, 0x42, 0xE4, 0xDA, 0x31, 0x49, 0x5D, 0x18, 0x29, 0x88, 0x01, 0x98, 0x01, 0x40, -0x29, 0x80, 0x2F, 0x49, 0x5D, 0x18, 0x29, 0x88, 0x49, 0x04, 0x49, 0x0C, 0x2D, 0x48, 0x01, 0x43, 0x89, 0xB2, 0x29, 0x80, -0x2C, 0x49, 0x8B, 0x46, 0x5B, 0x44, 0x19, 0x88, 0x78, 0x20, 0x81, 0x43, 0x19, 0x80, 0x00, 0x23, 0x3B, 0x80, 0x53, 0x46, -0xE3, 0x5C, 0x01, 0x3B, 0x51, 0x46, 0x63, 0x54, 0x4B, 0x46, 0xE3, 0x5C, 0x59, 0x42, 0x4B, 0x41, 0x49, 0x46, 0x63, 0x54, -0xC0, 0xE7, 0x00, 0x98, 0x00, 0x02, 0x01, 0x25, 0x28, 0x43, 0x81, 0xB2, 0x01, 0x23, 0xFF, 0x32, 0x1F, 0x48, 0x7E, 0xF7, -0xA5, 0xFC, 0x05, 0x70, 0x7E, 0xF7, 0xCC, 0xFC, 0x1D, 0x48, 0x80, 0xF7, 0xA3, 0xFD, 0x90, 0x23, 0xE3, 0x58, 0x18, 0x89, -0x88, 0xF7, 0xBA, 0xFD, 0x8C, 0x23, 0xE3, 0x58, 0x00, 0x2B, 0x0B, 0xD0, 0x90, 0x22, 0xA3, 0x50, 0x8C, 0x23, 0x00, 0x22, -0xE2, 0x50, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x96, 0x22, 0x00, 0x21, -0xA1, 0x52, 0xEF, 0xE7, 0x8C, 0x23, 0xE3, 0x58, 0x00, 0x2B, 0xF0, 0xD0, 0x0E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0x98, 0x47, 0xE9, 0xE7, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, 0x9C, 0xE5, 0x10, 0x00, 0xF8, 0xE1, 0x10, 0x00, -0x07, 0xE0, 0xFF, 0xFF, 0xCE, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, -0xCA, 0x69, 0x61, 0x40, 0x2B, 0x06, 0x00, 0x00, 0x18, 0xD1, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x03, 0x00, 0x00, 0x20, -0x9A, 0x6C, 0x00, 0x2A, 0x00, 0xD0, 0x70, 0x47, 0xA7, 0x32, 0x9A, 0x5C, 0x00, 0x2A, 0xFA, 0xD1, 0xA8, 0x32, 0x98, 0x5C, -0x43, 0x42, 0x58, 0x41, 0xC0, 0xB2, 0xF4, 0xE7, 0x04, 0x4B, 0x18, 0x68, 0x04, 0x4B, 0x1B, 0x68, 0x18, 0x43, 0x43, 0x1E, -0x98, 0x41, 0xC0, 0xB2, 0x70, 0x47, 0xC0, 0x46, 0x24, 0x27, 0x16, 0x00, 0x18, 0x27, 0x16, 0x00, 0x70, 0xB5, 0x84, 0xB0, -0x82, 0x00, 0x12, 0x4B, 0xD5, 0x58, 0x01, 0xA9, 0x11, 0x4C, 0x02, 0x01, 0x13, 0x1A, 0x9B, 0x00, 0xE3, 0x18, 0xDE, 0x88, -0x4E, 0x80, 0x1E, 0x7B, 0x4E, 0x70, 0x1E, 0x89, 0xCE, 0x80, 0x5E, 0x89, 0x0E, 0x81, 0x9B, 0x88, 0x8B, 0x80, 0x12, 0x1A, -0x92, 0x00, 0xA2, 0x18, 0x53, 0x7B, 0x01, 0x22, 0x53, 0x40, 0x36, 0x22, 0xAA, 0x5C, 0x5A, 0x40, 0x01, 0x23, 0x13, 0x40, -0x2E, 0x22, 0x13, 0x43, 0x0B, 0x70, 0xA6, 0xF7, 0x0F, 0xF9, 0x04, 0xB0, 0x70, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, -0xC0, 0xA0, 0x16, 0x00, 0xF8, 0xB5, 0x06, 0x00, 0x0C, 0x00, 0x05, 0x0A, 0xAA, 0x00, 0x18, 0x4B, 0xD7, 0x58, 0x36, 0x23, -0xFB, 0x5C, 0x00, 0x2B, 0x0C, 0xD0, 0x2B, 0x01, 0x5B, 0x1B, 0x9B, 0x00, 0x14, 0x4A, 0xD3, 0x18, 0x5B, 0x7B, 0x00, 0x2B, -0x08, 0xD1, 0x01, 0x21, 0x30, 0x00, 0x7E, 0xF7, 0x77, 0xFF, 0xF8, 0xBD, 0xE8, 0xB2, 0xB2, 0xF7, 0x73, 0xF9, 0xEE, 0xE7, -0x08, 0x23, 0x14, 0x22, 0x00, 0x21, 0x0D, 0x48, 0x7E, 0xF7, 0xF6, 0xFB, 0x04, 0x70, 0x2B, 0x00, 0x80, 0x33, 0x43, 0x80, -0x00, 0x23, 0xC3, 0x80, 0x3C, 0x33, 0xFB, 0x5C, 0x03, 0x71, 0xD0, 0xF7, 0x4B, 0xFA, 0x2B, 0x01, 0x5D, 0x1B, 0xAD, 0x00, -0x03, 0x4B, 0x5D, 0x19, 0x00, 0x23, 0x6B, 0x73, 0xDD, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0xC0, 0xA0, 0x16, 0x00, -0x03, 0x11, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x93, 0xB0, 0x05, 0x00, -0x03, 0x91, 0x93, 0x46, 0x1E, 0x00, 0x1C, 0xAB, 0x1B, 0x88, 0x99, 0x46, 0x1D, 0xAB, 0x1B, 0x88, 0x9A, 0x46, 0x04, 0x0A, -0xA2, 0x00, 0xCB, 0x4B, 0xD7, 0x58, 0x01, 0x00, 0xCA, 0x48, 0x7E, 0xF7, 0x7B, 0xFB, 0xB3, 0x1F, 0xC9, 0x4A, 0x9B, 0xB2, -0x93, 0x42, 0x03, 0xD8, 0x5B, 0x46, 0x33, 0x43, 0xDB, 0x07, 0x0D, 0xD5, 0x39, 0x23, 0xFB, 0x5C, 0xE0, 0xB2, 0x12, 0x22, -0x17, 0x21, 0xA6, 0xF7, 0xF6, 0xF8, 0x13, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, -0x5E, 0x45, 0xEF, 0xD9, 0x4B, 0x46, 0x00, 0x2B, 0xEC, 0xD0, 0x73, 0x08, 0x4B, 0x45, 0xE9, 0xD3, 0x53, 0x46, 0x28, 0x2B, -0xE6, 0xD8, 0x4B, 0x44, 0x5B, 0x00, 0xB3, 0x42, 0xE2, 0xD2, 0x28, 0x00, 0x7E, 0xF7, 0x70, 0xFF, 0x01, 0x28, 0x00, 0xD1, -0x85, 0xE0, 0xB5, 0x4B, 0x22, 0x01, 0x11, 0x1B, 0x89, 0x00, 0xCE, 0x52, 0x5B, 0x18, 0x5E, 0x80, 0x4A, 0x46, 0x1A, 0x81, -0x9E, 0x80, 0x5A, 0x46, 0xDA, 0x80, 0x52, 0x46, 0x5A, 0x81, 0x03, 0x9A, 0x1A, 0x73, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x22, -0x04, 0x92, 0x01, 0x2B, 0x77, 0xD0, 0x0A, 0x96, 0x0B, 0x96, 0x36, 0x23, 0xF8, 0x5C, 0x4A, 0x46, 0x02, 0x2A, 0x00, 0xD9, -0x02, 0x22, 0x90, 0x46, 0x80, 0x44, 0x0A, 0xAB, 0x42, 0x46, 0x0C, 0x92, 0x49, 0x46, 0x49, 0x00, 0x0D, 0x91, 0x00, 0x21, -0x99, 0x74, 0x80, 0x31, 0x8C, 0x46, 0xA4, 0x44, 0x61, 0x46, 0x19, 0x82, 0x01, 0x21, 0x04, 0x9A, 0x11, 0x40, 0xD9, 0x74, -0x06, 0xAB, 0x06, 0x96, 0x42, 0x46, 0x07, 0x92, 0x62, 0x46, 0x9A, 0x81, 0x00, 0x28, 0x5A, 0xD1, 0x58, 0x46, 0x08, 0x90, -0x36, 0x23, 0xFB, 0x5C, 0x01, 0x2B, 0x5A, 0xD0, 0x08, 0x9B, 0x10, 0x93, 0x11, 0x93, 0x06, 0x9B, 0x0F, 0x93, 0x06, 0xA8, -0xD4, 0xF7, 0x5A, 0xFA, 0x80, 0x46, 0x00, 0x28, 0x72, 0xD1, 0x0A, 0xAA, 0x10, 0x98, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, -0x8D, 0x49, 0xCB, 0x18, 0x98, 0x62, 0x0F, 0x99, 0x8C, 0x46, 0x59, 0x62, 0x0C, 0x99, 0xD9, 0x62, 0x0D, 0x99, 0x19, 0x63, -0x12, 0x8A, 0x9A, 0x86, 0x00, 0x22, 0x9A, 0x63, 0x36, 0x33, 0x1A, 0x70, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x6B, 0xD1, -0x80, 0xB2, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x81, 0x4A, 0xD3, 0x18, 0xD8, 0x80, 0x36, 0x23, 0xFB, 0x5C, 0x01, 0x2B, -0x67, 0xD0, 0xD9, 0x23, 0x9B, 0x00, 0xFB, 0x18, 0x1A, 0x88, 0x7D, 0x4B, 0x9A, 0x42, 0x79, 0xD1, 0x43, 0x46, 0x01, 0x2B, -0x00, 0xD1, 0xDF, 0xE0, 0x02, 0x2B, 0x00, 0xD1, 0xBC, 0xE0, 0x00, 0x2B, 0x00, 0xD1, 0xAE, 0xE0, 0x77, 0x4B, 0x9B, 0x6E, -0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x5D, 0xE7, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x70, 0x4A, 0xD3, 0x18, -0x00, 0x22, 0x5A, 0x73, 0x71, 0xE7, 0xE0, 0xB2, 0xAF, 0xF7, 0xAE, 0xFE, 0x43, 0x08, 0x04, 0x93, 0x81, 0xE7, 0x04, 0x9A, -0x31, 0x00, 0x58, 0x46, 0xA5, 0xF7, 0x2E, 0xFD, 0x9F, 0xE7, 0x06, 0x9B, 0x9B, 0x46, 0x01, 0x3B, 0x98, 0x46, 0x80, 0x44, -0x5B, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x66, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x59, 0x46, -0x40, 0x46, 0xD4, 0xF7, 0x1B, 0xFE, 0x08, 0x91, 0x0A, 0xAB, 0xDA, 0x7C, 0x01, 0x21, 0x4A, 0x40, 0xDA, 0x74, 0x0C, 0x9A, -0x03, 0x32, 0x0C, 0x92, 0x0D, 0x9A, 0x03, 0x32, 0x0D, 0x92, 0x07, 0x9B, 0x05, 0x93, 0x03, 0x33, 0x07, 0x93, 0x81, 0xE7, -0x28, 0x00, 0x7E, 0xF7, 0xAD, 0xFE, 0x80, 0x46, 0x01, 0x28, 0x02, 0xD0, 0x01, 0x23, 0x98, 0x46, 0x83, 0xE7, 0x0A, 0xA8, -0xD4, 0xF7, 0x6A, 0xF9, 0x00, 0x28, 0x00, 0xD0, 0x7D, 0xE7, 0x02, 0x23, 0x98, 0x46, 0x7A, 0xE7, 0x63, 0x46, 0x99, 0xB2, -0x80, 0xB2, 0x04, 0x9A, 0xA5, 0xF7, 0x0A, 0xFD, 0x8D, 0xE7, 0x43, 0x1C, 0x04, 0x93, 0x0F, 0x9B, 0x9B, 0x46, 0x00, 0x2B, -0x05, 0xD1, 0x49, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, -0x42, 0x4A, 0xD3, 0x18, 0x05, 0x93, 0x59, 0x46, 0x04, 0x98, 0xD4, 0xF7, 0xDB, 0xFD, 0x05, 0x9B, 0xD9, 0x80, 0x7E, 0xE7, -0xE3, 0xB2, 0x9B, 0x46, 0x18, 0x00, 0x95, 0xF7, 0x71, 0xFF, 0x05, 0x90, 0x0F, 0x9B, 0x04, 0x93, 0x00, 0x28, 0x05, 0xD1, -0x3A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x05, 0x99, 0x04, 0x98, 0xD4, 0xF7, 0xC4, 0xFD, -0x00, 0x29, 0x00, 0xD0, 0x6E, 0xE7, 0x3C, 0x22, 0x62, 0x43, 0x31, 0x4B, 0x9B, 0x18, 0xD9, 0x88, 0x11, 0x9B, 0x04, 0x93, -0x10, 0x9B, 0x05, 0x93, 0x04, 0x9B, 0x05, 0x9A, 0x9A, 0x1A, 0x8A, 0x18, 0x92, 0xB2, 0x58, 0x46, 0x95, 0xF7, 0x9C, 0xFF, -0x04, 0x90, 0x0F, 0x9B, 0x9B, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x29, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, -0x98, 0x47, 0x3C, 0x23, 0x63, 0x43, 0x23, 0x4A, 0xD3, 0x18, 0x05, 0x93, 0x59, 0x46, 0x04, 0x98, 0xD4, 0xF7, 0x9C, 0xFD, -0x05, 0x9B, 0xD9, 0x80, 0x46, 0xE7, 0x39, 0x33, 0xFA, 0x5C, 0xE0, 0xB2, 0x17, 0x21, 0xA5, 0xF7, 0x87, 0xFF, 0x2F, 0x21, -0x28, 0x00, 0x7E, 0xF7, 0xD5, 0xFD, 0xAA, 0xE6, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x0A, 0xD0, 0xE0, 0xB2, 0xFF, 0xF7, -0x13, 0xFE, 0x28, 0x00, 0x96, 0xF7, 0x3A, 0xFB, 0x2E, 0x21, 0x28, 0x00, 0x7E, 0xF7, 0xC6, 0xFD, 0x9B, 0xE6, 0x3C, 0x22, -0x62, 0x43, 0x10, 0x4B, 0x9B, 0x18, 0xD9, 0x88, 0xE0, 0xB2, 0x03, 0x9B, 0x9F, 0x07, 0xFF, 0x0F, 0x01, 0x97, 0x53, 0x46, -0x00, 0x93, 0x4B, 0x46, 0x32, 0x00, 0xAF, 0xF7, 0x5F, 0xFC, 0xE3, 0xE7, 0x39, 0x23, 0xFB, 0x5C, 0xE0, 0xB2, 0x20, 0x22, -0x17, 0x21, 0xA5, 0xF7, 0x7A, 0xFF, 0x20, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0x1B, 0xFE, 0x7E, 0xE6, 0x64, 0xA2, 0x16, 0x00, -0x05, 0x06, 0x00, 0x00, 0x3A, 0x05, 0x00, 0x00, 0xC0, 0xA0, 0x16, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, -0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x8A, 0xB0, 0x06, 0x00, 0x88, 0x46, 0x91, 0x46, 0x1D, 0x00, -0x12, 0xAB, 0x1B, 0x88, 0x9C, 0x46, 0x04, 0x0A, 0xA2, 0x00, 0x9C, 0x4B, 0xD7, 0x58, 0x9C, 0x4B, 0x22, 0x01, 0x11, 0x1B, -0x89, 0x00, 0x40, 0x46, 0xC8, 0x52, 0x5B, 0x18, 0x4A, 0x46, 0x5A, 0x80, 0x1D, 0x81, 0x62, 0x46, 0x5A, 0x81, 0x36, 0x23, -0xFB, 0x5C, 0x00, 0x22, 0x92, 0x46, 0x01, 0x2B, 0x00, 0xD1, 0x87, 0xE0, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x91, 0x4A, -0xD3, 0x18, 0x00, 0x22, 0x1A, 0x73, 0xA7, 0xF7, 0x29, 0xFE, 0x50, 0x44, 0x03, 0x01, 0x06, 0xD5, 0x23, 0x01, 0x1B, 0x1B, -0x9B, 0x00, 0x8B, 0x4A, 0xD3, 0x18, 0x02, 0x22, 0x1A, 0x73, 0x02, 0xAB, 0x4A, 0x46, 0x02, 0x92, 0x42, 0x46, 0x5A, 0x60, -0x2A, 0x00, 0x02, 0x2D, 0x00, 0xD9, 0x02, 0x22, 0x9A, 0x60, 0x6D, 0x00, 0x05, 0x95, 0x00, 0x23, 0x02, 0xAA, 0x93, 0x74, -0x25, 0x00, 0x80, 0x35, 0x15, 0x82, 0x53, 0x46, 0x5B, 0x08, 0x9A, 0x46, 0x01, 0x23, 0x52, 0x46, 0x13, 0x40, 0x02, 0xAA, -0xD3, 0x74, 0xD9, 0x23, 0x9B, 0x00, 0xFB, 0x18, 0x1A, 0x88, 0x7B, 0x4B, 0x9A, 0x42, 0x58, 0xD1, 0x36, 0x23, 0xFB, 0x5C, -0x01, 0x2B, 0x6A, 0xD0, 0x02, 0xA8, 0xD4, 0xF7, 0x63, 0xF8, 0x00, 0x28, 0x00, 0xD0, 0x72, 0xE0, 0x08, 0x98, 0x22, 0x01, -0x12, 0x1B, 0x92, 0x00, 0x71, 0x4B, 0x9B, 0x18, 0x98, 0x62, 0x07, 0x99, 0x59, 0x62, 0x04, 0x9A, 0xDA, 0x62, 0x05, 0x9A, -0x00, 0x92, 0x1A, 0x63, 0x02, 0xAA, 0x12, 0x8A, 0x9A, 0x86, 0x00, 0x22, 0x9A, 0x63, 0x36, 0x33, 0x1A, 0x70, 0x36, 0x23, -0xFB, 0x5C, 0x00, 0x2B, 0x6A, 0xD1, 0x80, 0xB2, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x65, 0x4A, 0xD3, 0x18, 0xD8, 0x80, -0x07, 0x9D, 0x9D, 0x80, 0x36, 0x23, 0xFB, 0x5C, 0x01, 0x2B, 0x63, 0xD0, 0xD9, 0x23, 0x9B, 0x00, 0xFB, 0x18, 0x1A, 0x88, -0x5F, 0x4B, 0x9A, 0x42, 0x00, 0xD0, 0x72, 0xE0, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x5B, 0x4A, 0xD3, 0x18, 0x01, 0x22, -0x5A, 0x73, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0xA4, 0xE0, 0xE0, 0xB2, 0xFF, 0xF7, 0x43, 0xFD, 0x30, 0x00, -0x96, 0xF7, 0x6A, 0xFA, 0x2E, 0x21, 0x30, 0x00, 0x7E, 0xF7, 0xF6, 0xFC, 0x0A, 0xB0, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xA2, 0x46, 0xF0, 0xBD, 0xE0, 0xB2, 0xAF, 0xF7, 0x1F, 0xFD, 0x82, 0x46, 0x72, 0xE7, 0xE0, 0xB2, 0x95, 0xF7, 0x40, 0xFE, -0x02, 0x00, 0x03, 0x00, 0x02, 0x98, 0x82, 0x42, 0x07, 0xD2, 0x00, 0x92, 0x11, 0x00, 0xD4, 0xF7, 0x13, 0xFC, 0x43, 0x1C, -0x00, 0x9A, 0x5A, 0x43, 0x93, 0xB2, 0x03, 0x9A, 0x93, 0x42, 0x93, 0xD8, 0x02, 0x93, 0x03, 0x93, 0x90, 0xE7, 0x02, 0xAB, -0xDB, 0x7C, 0x01, 0x22, 0x53, 0x40, 0x02, 0xAA, 0xD3, 0x74, 0x04, 0x9B, 0x03, 0x33, 0x04, 0x93, 0x05, 0x9B, 0x00, 0x93, -0x03, 0x33, 0x05, 0x93, 0x86, 0xE7, 0x08, 0x23, 0x14, 0x22, 0x00, 0x21, 0x3A, 0x48, 0x7E, 0xF7, 0x4B, 0xF9, 0x20, 0x23, -0x03, 0x70, 0x45, 0x80, 0x00, 0x23, 0xC3, 0x80, 0x3C, 0x33, 0xFB, 0x5C, 0x03, 0x71, 0xCF, 0xF7, 0xA1, 0xFF, 0xBF, 0xE7, -0x89, 0xB2, 0x80, 0xB2, 0x52, 0x46, 0xA5, 0xF7, 0x83, 0xFB, 0x8F, 0xE7, 0x43, 0x1C, 0x98, 0x46, 0x00, 0x2D, 0x05, 0xD1, -0x2F, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x28, 0x4A, -0x91, 0x46, 0x99, 0x44, 0x29, 0x00, 0x40, 0x46, 0xD4, 0xF7, 0x56, 0xFC, 0x4B, 0x46, 0xD9, 0x80, 0x84, 0xE7, 0xE3, 0xB2, -0x98, 0x46, 0x18, 0x00, 0x95, 0xF7, 0xEC, 0xFD, 0x05, 0x1E, 0x07, 0x9B, 0x99, 0x46, 0x05, 0xD1, 0x21, 0x4B, 0x9B, 0x6E, -0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x29, 0x00, 0x48, 0x46, 0xD4, 0xF7, 0x40, 0xFC, 0x00, 0x29, 0x00, 0xD0, -0x76, 0xE7, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x16, 0x4A, 0xD3, 0x18, 0xD9, 0x88, 0x09, 0x9B, 0x00, 0x93, 0x08, 0x9B, -0x01, 0x93, 0x00, 0x9B, 0x01, 0x9A, 0x9A, 0x1A, 0x8A, 0x18, 0x92, 0xB2, 0x40, 0x46, 0x95, 0xF7, 0x17, 0xFE, 0x81, 0x46, -0x07, 0x9B, 0x98, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x0F, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x08, 0x4D, 0xED, 0x18, 0x41, 0x46, 0x48, 0x46, 0xD4, 0xF7, 0x17, 0xFC, 0xE9, 0x80, -0x4E, 0xE7, 0xE0, 0xB2, 0x01, 0x33, 0x00, 0x22, 0x17, 0x21, 0x95, 0xF7, 0x89, 0xFC, 0x53, 0xE7, 0x64, 0xA2, 0x16, 0x00, -0xC0, 0xA0, 0x16, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, -0x00, 0xB5, 0x00, 0x24, 0x00, 0x20, 0x0E, 0x4E, 0xA1, 0x27, 0xAF, 0x23, 0x98, 0x46, 0x0C, 0xE0, 0x42, 0x46, 0x9D, 0x5C, -0x45, 0x19, 0xED, 0xB2, 0x48, 0x33, 0x18, 0x00, 0x80, 0xF7, 0x18, 0xFE, 0x28, 0x18, 0xC0, 0xB2, 0x01, 0x34, 0x07, 0x2C, -0x07, 0xD0, 0xA3, 0x00, 0x9B, 0x59, 0x00, 0x2B, 0xF8, 0xD0, 0xDA, 0x5D, 0x00, 0x2A, 0xF5, 0xD1, 0xEA, 0xE7, 0x04, 0xBC, -0x90, 0x46, 0xF0, 0xBD, 0x38, 0x27, 0x16, 0x00, 0xF0, 0xB5, 0x85, 0xB0, 0x40, 0x4B, 0x1A, 0x78, 0x01, 0x2A, 0x01, 0xD0, -0x05, 0xB0, 0xF0, 0xBD, 0x3E, 0x4B, 0x1D, 0x78, 0x3E, 0x4B, 0x1B, 0x68, 0x00, 0x24, 0x5B, 0x05, 0x08, 0xD5, 0x3C, 0x48, -0x03, 0x68, 0x3C, 0x49, 0x19, 0x40, 0x80, 0x23, 0x1B, 0x01, 0x0B, 0x43, 0x03, 0x60, 0x80, 0x34, 0x39, 0x4B, 0x1B, 0x68, -0x9B, 0x05, 0x09, 0xD4, 0x37, 0x48, 0x03, 0x68, 0x37, 0x49, 0x19, 0x40, 0x80, 0x23, 0x9B, 0x00, 0x0B, 0x43, 0x03, 0x60, -0x40, 0x23, 0x1C, 0x43, 0x34, 0x4B, 0x18, 0x68, 0x34, 0x4B, 0x19, 0x68, 0x34, 0x4B, 0x1E, 0x68, 0x8B, 0x07, 0x31, 0xD4, -0xF0, 0x23, 0x03, 0x40, 0x30, 0x2B, 0x0E, 0xD0, 0x20, 0x2B, 0x1F, 0xD0, 0x10, 0x2B, 0x29, 0xD1, 0x2F, 0x4B, 0xDB, 0x69, -0xB3, 0x42, 0x25, 0xD0, 0xF0, 0x23, 0x07, 0x00, 0x9F, 0x43, 0x3B, 0x00, 0x20, 0x27, 0x3B, 0x43, 0x0A, 0xE0, 0x2A, 0x4B, -0xDB, 0x6B, 0xB3, 0x42, 0x1A, 0xD0, 0xF0, 0x23, 0x02, 0x00, 0x9A, 0x43, 0x13, 0x00, 0x20, 0x22, 0x13, 0x43, 0x1D, 0x3A, -0x22, 0x4F, 0x3F, 0x68, 0xBF, 0x07, 0x1F, 0xD4, 0x1F, 0x4F, 0x3B, 0x60, 0x14, 0x43, 0x1D, 0xE0, 0x20, 0x4B, 0xDB, 0x6A, -0xB3, 0x42, 0x07, 0xD0, 0xF0, 0x23, 0x02, 0x00, 0x9A, 0x43, 0x13, 0x00, 0x10, 0x22, 0x13, 0x43, 0x0E, 0x3A, 0xEB, 0xE7, -0x01, 0x2D, 0xA3, 0xD1, 0x17, 0x4B, 0x1B, 0x68, 0x02, 0x93, 0x00, 0x23, 0x01, 0x93, 0x00, 0x90, 0x33, 0x00, 0x00, 0x22, -0x16, 0x48, 0x80, 0xF7, 0x47, 0xF9, 0x00, 0x2C, 0x96, 0xD0, 0x0D, 0xE0, 0x04, 0x27, 0x3C, 0x43, 0x01, 0x2D, 0x00, 0xD0, -0x90, 0xE7, 0x0E, 0x4D, 0x2D, 0x68, 0x02, 0x95, 0x01, 0x93, 0x00, 0x90, 0x33, 0x00, 0x0E, 0x48, 0x80, 0xF7, 0x36, 0xF9, -0x32, 0x00, 0x21, 0x00, 0x0C, 0x48, 0x80, 0xF7, 0x31, 0xF9, 0x81, 0xE7, 0xB4, 0xE5, 0x10, 0x00, 0xBC, 0xE6, 0x10, 0x00, -0x4C, 0x20, 0x62, 0x40, 0xFF, 0xF3, 0xFF, 0xFF, 0x58, 0x20, 0x62, 0x40, 0xFF, 0xFD, 0xFF, 0xFF, 0x08, 0x05, 0x62, 0x40, -0x74, 0x20, 0x62, 0x40, 0x78, 0x20, 0x62, 0x40, 0xD8, 0x97, 0x16, 0x00, 0x24, 0xD1, 0x10, 0x00, 0x3C, 0xD1, 0x10, 0x00, -0x70, 0x47, 0x00, 0x00, 0x03, 0x4B, 0x04, 0x4A, 0x13, 0x60, 0x81, 0x22, 0x52, 0x00, 0x98, 0x5C, 0x70, 0x47, 0xC0, 0x46, -0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x17, 0x4B, 0x17, 0x4A, 0x1A, 0x60, -0x17, 0x48, 0x80, 0xF7, 0x53, 0xFD, 0x45, 0x1E, 0x6D, 0xB2, 0x40, 0xB2, 0x00, 0x28, 0x1F, 0xDD, 0x11, 0x4F, 0x14, 0x4B, -0x98, 0x46, 0x14, 0x4E, 0x0A, 0xE0, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x43, 0x46, 0x9B, 0x6E, 0x98, 0x47, 0x09, 0xE0, -0x01, 0x3D, 0x6D, 0xB2, 0x6B, 0x1C, 0x0F, 0xD0, 0x38, 0x68, 0x0C, 0x30, 0x80, 0xF7, 0x56, 0xFC, 0x04, 0x1E, 0xEE, 0xD0, -0x61, 0x6A, 0x30, 0x00, 0x80, 0xF7, 0xE2, 0xF8, 0x63, 0x6A, 0x00, 0x2B, 0xEE, 0xD0, 0x20, 0x00, 0x98, 0x47, 0xEB, 0xE7, -0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x10, 0xE7, 0x10, 0x00, 0x64, 0x2A, 0x16, 0x00, 0x70, 0x2A, 0x16, 0x00, -0x28, 0x19, 0x16, 0x00, 0xC0, 0xD3, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x78, 0x21, 0x88, 0xF7, 0xAB, 0xF9, 0x05, 0x00, -0x08, 0x4B, 0xC0, 0x18, 0x78, 0x22, 0x55, 0x21, 0x7C, 0xF7, 0x42, 0xF8, 0x29, 0x00, 0x20, 0x00, 0x88, 0xF7, 0xBA, 0xF9, -0x01, 0x00, 0x20, 0x00, 0xB0, 0xF7, 0x1E, 0xFD, 0x02, 0x48, 0x80, 0xF7, 0xB7, 0xF8, 0x70, 0xBD, 0x00, 0x00, 0x61, 0x40, -0x4C, 0xD1, 0x10, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x04, 0x00, -0x83, 0x00, 0x76, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1D, 0x68, 0x00, 0x2D, 0x00, 0xD1, 0xDE, 0xE0, 0x4B, 0x23, 0xEB, 0x5C, -0x00, 0x2B, 0x05, 0xD0, 0x71, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x28, 0x00, 0x50, 0x30, -0x80, 0xF7, 0x02, 0xFC, 0x07, 0x00, 0x00, 0x21, 0x20, 0x00, 0x88, 0xF7, 0xDF, 0xF9, 0x63, 0x01, 0x6A, 0x4A, 0x9A, 0x18, -0x12, 0x68, 0xD2, 0x0F, 0x49, 0x21, 0x69, 0x5C, 0x01, 0x26, 0x71, 0x40, 0x91, 0x42, 0x4F, 0xD0, 0x66, 0x49, 0x8A, 0x46, -0x9A, 0x44, 0x51, 0x46, 0x09, 0x68, 0x89, 0xB2, 0x8B, 0x46, 0x64, 0x4E, 0xB1, 0x46, 0x99, 0x44, 0x4E, 0x46, 0x36, 0x68, -0xB6, 0xB2, 0xB0, 0x46, 0x61, 0x4E, 0x9E, 0x19, 0x36, 0x68, 0xB6, 0x03, 0xB1, 0x0F, 0x01, 0x91, 0x56, 0x46, 0x36, 0x68, -0x36, 0x0C, 0x36, 0x04, 0xB4, 0x46, 0x56, 0x46, 0x61, 0x46, 0x31, 0x60, 0x49, 0x46, 0x09, 0x68, 0x09, 0x0C, 0x09, 0x04, -0x8C, 0x46, 0x49, 0x46, 0x66, 0x46, 0x0E, 0x60, 0x00, 0x2F, 0x67, 0xD0, 0x00, 0x2A, 0x4C, 0xD1, 0x52, 0x4A, 0x94, 0x46, -0x9C, 0x44, 0x62, 0x46, 0x12, 0x68, 0x91, 0x46, 0xBA, 0x88, 0x12, 0x04, 0x49, 0x46, 0x0F, 0x04, 0x3F, 0x0C, 0x3A, 0x43, -0x61, 0x46, 0x0A, 0x60, 0x00, 0x28, 0x0A, 0xD0, 0x4B, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1F, 0x68, 0x82, 0x88, 0x04, 0x32, -0x12, 0x04, 0x38, 0x04, 0x00, 0x0C, 0x02, 0x43, 0x1A, 0x60, 0x5B, 0x46, 0x00, 0x2B, 0x4C, 0xD1, 0x43, 0x46, 0x00, 0x2B, -0x4E, 0xD1, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x3E, 0x49, 0x8A, 0x46, -0x9A, 0x44, 0x51, 0x46, 0x09, 0x68, 0x09, 0x0C, 0x8B, 0x46, 0x3C, 0x49, 0x89, 0x46, 0x99, 0x44, 0x49, 0x46, 0x0E, 0x68, -0x31, 0x0C, 0x88, 0x46, 0x39, 0x49, 0x5E, 0x18, 0x36, 0x68, 0x36, 0x03, 0xB1, 0x0F, 0x01, 0x91, 0x51, 0x46, 0x09, 0x68, -0x09, 0x04, 0x09, 0x0C, 0x8C, 0x46, 0x51, 0x46, 0x66, 0x46, 0x0E, 0x60, 0x49, 0x46, 0x09, 0x68, 0x09, 0x04, 0x09, 0x0C, -0x8C, 0x46, 0x49, 0x46, 0x66, 0x46, 0x0E, 0x60, 0xAE, 0xE7, 0x2C, 0x4A, 0x94, 0x46, 0x9C, 0x44, 0x62, 0x46, 0x12, 0x68, -0x12, 0x0C, 0x12, 0x04, 0xBF, 0x88, 0x3A, 0x43, 0x61, 0x46, 0x0A, 0x60, 0x00, 0x28, 0xC0, 0xD0, 0x26, 0x4A, 0x94, 0x46, -0x63, 0x44, 0x1F, 0x68, 0x82, 0x88, 0x04, 0x32, 0x92, 0xB2, 0x38, 0x0C, 0x00, 0x04, 0x02, 0x43, 0x1A, 0x60, 0xB4, 0xE7, -0x00, 0x28, 0xB2, 0xD0, 0x00, 0x2A, 0xEF, 0xD1, 0xA4, 0xE7, 0x59, 0x46, 0x20, 0x00, 0x88, 0xF7, 0x17, 0xF9, 0xAD, 0xE7, -0x46, 0x23, 0xE9, 0x5C, 0x09, 0x02, 0x45, 0x3B, 0x19, 0x43, 0x05, 0x33, 0xFF, 0x22, 0x1A, 0x48, 0x7D, 0xF7, 0xDE, 0xFE, -0x07, 0x00, 0x43, 0x46, 0x03, 0x80, 0x58, 0x23, 0xEA, 0x5C, 0x01, 0x32, 0x2B, 0x8F, 0x53, 0x43, 0x83, 0x70, 0x01, 0x99, -0xC1, 0x70, 0x14, 0x4B, 0x1A, 0x68, 0x01, 0x32, 0x1A, 0x60, 0x00, 0x29, 0x04, 0xD1, 0x3C, 0x71, 0x38, 0x00, 0x7D, 0xF7, -0xF3, 0xFE, 0x90, 0xE7, 0x0F, 0x49, 0x0B, 0x68, 0x01, 0x33, 0x0B, 0x60, 0x01, 0x99, 0x0E, 0x48, 0x7F, 0xF7, 0xC4, 0xFF, -0xF1, 0xE7, 0x04, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x80, 0xE7, 0x54, 0x27, 0x16, 0x00, -0x28, 0x19, 0x16, 0x00, 0xD0, 0x05, 0x60, 0x40, 0xD8, 0x05, 0x60, 0x40, 0xDC, 0x05, 0x60, 0x40, 0xD4, 0x05, 0x60, 0x40, -0x35, 0x06, 0x00, 0x00, 0xC4, 0xE6, 0x10, 0x00, 0xC0, 0xE6, 0x10, 0x00, 0x54, 0xD1, 0x10, 0x00, 0x70, 0xB5, 0x0C, 0x00, -0x15, 0x00, 0x10, 0x00, 0x7E, 0xF7, 0x74, 0xFA, 0x00, 0x28, 0x03, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x07, 0xD8, -0x21, 0x88, 0x04, 0x39, 0x89, 0xB2, 0x20, 0x79, 0x88, 0xF7, 0xFA, 0xF8, 0x00, 0x20, 0x70, 0xBD, 0x2E, 0x0A, 0x06, 0x23, -0x2A, 0x00, 0x31, 0x00, 0x1B, 0x48, 0x7D, 0xF7, 0x89, 0xFE, 0x05, 0x00, 0x23, 0x88, 0x83, 0x80, 0xA3, 0x78, 0x83, 0x70, -0x21, 0x79, 0x01, 0x31, 0x09, 0x02, 0x80, 0x36, 0x89, 0x19, 0x01, 0x80, 0xE1, 0x78, 0x0A, 0x03, 0x14, 0x4B, 0x1A, 0x42, -0x06, 0xD0, 0xC0, 0x20, 0x13, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x80, 0x01, 0xB0, 0x47, 0x2B, 0x88, 0x0F, 0x4A, -0x13, 0x40, 0xE2, 0x78, 0x12, 0x03, 0x13, 0x43, 0x2B, 0x80, 0xE3, 0x78, 0x00, 0x2B, 0x03, 0xD1, 0x28, 0x00, 0xCF, 0xF7, -0xC5, 0xFC, 0xD1, 0xE7, 0xA2, 0x78, 0x20, 0x88, 0x09, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x21, 0x7B, 0xF7, 0xE0, 0xFE, -0xE1, 0x78, 0x00, 0x29, 0xF0, 0xD0, 0x06, 0x48, 0x7F, 0xF7, 0x5A, 0xFF, 0xEC, 0xE7, 0xC0, 0x46, 0x07, 0x11, 0x00, 0x00, -0xFF, 0xCF, 0xFF, 0xFF, 0x28, 0x19, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, 0x6C, 0xD1, 0x10, 0x00, 0xF0, 0xB5, 0x89, 0xB0, -0x04, 0x1E, 0x00, 0xD1, 0xAB, 0xE0, 0x46, 0x23, 0xC6, 0x5C, 0xB2, 0x00, 0x5A, 0x4B, 0xD5, 0x58, 0x00, 0x2D, 0x00, 0xD1, -0xA9, 0xE0, 0x43, 0x68, 0x02, 0x3B, 0x1B, 0x01, 0x1B, 0x09, 0xC3, 0x62, 0x28, 0x30, 0xD2, 0xF7, 0xE9, 0xFD, 0x62, 0x68, -0x61, 0x6B, 0x8A, 0x42, 0x13, 0xD0, 0x45, 0x23, 0xE3, 0x5C, 0x5B, 0x00, 0x5B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x9A, 0x42, -0x0B, 0xD0, 0x4F, 0x4B, 0x9B, 0x7A, 0xA3, 0x75, 0x4A, 0x23, 0xE3, 0x5C, 0x03, 0x2B, 0x00, 0xD0, 0x8D, 0xE0, 0x47, 0x33, -0x00, 0x22, 0xE2, 0x54, 0x89, 0xE0, 0x4A, 0x4B, 0x00, 0x93, 0x01, 0x92, 0xA3, 0x68, 0x02, 0x93, 0x6B, 0x46, 0x1E, 0x76, -0x47, 0x23, 0xE0, 0x5C, 0x03, 0x01, 0x33, 0x43, 0x04, 0x93, 0x00, 0x23, 0x9C, 0x46, 0x03, 0x93, 0xA7, 0x7D, 0x6B, 0x46, -0x1F, 0x75, 0x67, 0x46, 0x5F, 0x75, 0x9F, 0x75, 0x8A, 0x42, 0x00, 0xD1, 0x73, 0xE0, 0x10, 0x23, 0x6A, 0x46, 0xD3, 0x75, -0x0C, 0x3B, 0x6A, 0x46, 0x93, 0x76, 0xD0, 0x76, 0x01, 0x23, 0x53, 0x76, 0x68, 0x46, 0xD3, 0xF7, 0x9B, 0xF8, 0x48, 0x22, -0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0x01, 0x21, 0x63, 0x68, 0x62, 0x6B, 0x93, 0x42, 0x35, 0xD0, 0x47, 0x23, 0xE3, 0x5C, -0x33, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x5B, 0x01, 0x1A, 0x68, 0x32, 0x48, 0x02, 0x40, 0x09, 0x04, 0x0A, 0x43, 0x1A, 0x60, -0x9F, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0xB6, 0xD1, 0x2B, 0x6D, 0x5F, 0x1C, 0x7F, 0x08, 0xAB, 0x6F, 0x9B, 0xB2, 0x62, 0x22, -0x56, 0x43, 0x2B, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0xAB, 0x6F, 0x1B, 0x0C, 0x29, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0x80, 0x23, -0x9B, 0x01, 0x9F, 0x42, 0x2B, 0xD3, 0x27, 0x49, 0x38, 0x00, 0xD4, 0xF7, 0xF9, 0xF8, 0x00, 0x29, 0x19, 0xD0, 0x25, 0x4B, -0x9C, 0x46, 0x66, 0x44, 0x22, 0x49, 0x38, 0x00, 0xD4, 0xF7, 0x6A, 0xF8, 0x01, 0x30, 0x22, 0x4B, 0x03, 0x43, 0x9B, 0xB2, -0x33, 0x80, 0x90, 0xE7, 0x20, 0x4B, 0x2A, 0x6D, 0x9A, 0x42, 0xC5, 0xD8, 0x4A, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0xC1, 0xD1, -0x44, 0x33, 0xE1, 0x5C, 0x01, 0x31, 0xC9, 0xB2, 0xBC, 0xE7, 0x18, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0x15, 0x49, 0x38, 0x00, -0xD4, 0xF7, 0x50, 0xF8, 0x15, 0x4B, 0x03, 0x43, 0x9B, 0xB2, 0x33, 0x80, 0x77, 0xE7, 0x01, 0x37, 0x7F, 0x08, 0xBF, 0xB2, -0x10, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0x37, 0x80, 0x6F, 0xE7, 0x11, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, -0x98, 0x47, 0x09, 0xB0, 0xF0, 0xBD, 0x0F, 0x23, 0x6A, 0x46, 0xD3, 0x75, 0x0D, 0x3B, 0x8A, 0xE7, 0x38, 0x27, 0x16, 0x00, -0x7C, 0x91, 0x0D, 0x00, 0x5D, 0x74, 0x0B, 0x00, 0x2F, 0x00, 0x03, 0x02, 0xFF, 0xFF, 0x00, 0xFF, 0xFA, 0x64, 0x61, 0x40, -0xFC, 0x64, 0x61, 0x40, 0x71, 0x02, 0x00, 0x00, 0x10, 0x65, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, 0xE1, 0x04, 0x00, 0x00, -0x28, 0x19, 0x16, 0x00, 0xF8, 0xB5, 0x06, 0x00, 0x14, 0x4B, 0x1D, 0x68, 0x00, 0x2D, 0x05, 0xD1, 0x5D, 0x68, 0x00, 0x2D, -0x02, 0xD1, 0x00, 0x24, 0x20, 0x00, 0xF8, 0xBD, 0xAB, 0x68, 0x2A, 0x69, 0x94, 0x46, 0x63, 0x44, 0x1F, 0x00, 0x0E, 0x49, -0x18, 0x00, 0xD4, 0xF7, 0x09, 0xF8, 0x6C, 0x6B, 0x04, 0x19, 0x0B, 0x49, 0x38, 0x00, 0xD4, 0xF7, 0x89, 0xF8, 0xB3, 0x68, -0x9C, 0x46, 0x8C, 0x45, 0x89, 0x41, 0x49, 0x42, 0x64, 0x18, 0xB1, 0x8A, 0x89, 0x04, 0x49, 0x0F, 0x04, 0x29, 0xE3, 0xD0, -0x20, 0x00, 0xFC, 0xF7, 0x63, 0xFF, 0x04, 0x00, 0xDE, 0xE7, 0xC0, 0x46, 0x54, 0x27, 0x16, 0x00, 0x71, 0x02, 0x00, 0x00, -0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8B, 0xB0, 0xBD, 0x4B, 0x1C, 0x68, 0xA1, 0x46, -0xBC, 0x4B, 0xA3, 0x82, 0x4C, 0x23, 0xE3, 0x5A, 0x5B, 0x00, 0x62, 0x6C, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, -0xE3, 0x60, 0xA7, 0xF7, 0x5D, 0xF9, 0x04, 0x90, 0xB6, 0x4B, 0x1B, 0x68, 0x01, 0x93, 0xB6, 0x4B, 0x1B, 0x68, 0x02, 0x93, -0xB5, 0x4B, 0x1B, 0x68, 0x07, 0x93, 0xB5, 0x4B, 0x1B, 0x68, 0x06, 0x93, 0x00, 0x25, 0x00, 0x20, 0x00, 0x27, 0x00, 0x23, -0x03, 0x93, 0x00, 0x26, 0xB1, 0x4B, 0x98, 0x46, 0xA1, 0x23, 0x9A, 0x46, 0x02, 0x3B, 0x9B, 0x46, 0x0F, 0xE0, 0x01, 0x37, -0xFF, 0xB2, 0xAF, 0x22, 0x9E, 0x5C, 0x86, 0x19, 0xF6, 0xB2, 0x48, 0x33, 0x18, 0x00, 0x80, 0xF7, 0x5F, 0xFA, 0x30, 0x18, -0xC0, 0xB2, 0x01, 0x26, 0x01, 0x35, 0x07, 0x2D, 0x0E, 0xD0, 0xAB, 0x00, 0x42, 0x46, 0x9B, 0x58, 0x00, 0x2B, 0xF7, 0xD0, -0x52, 0x46, 0x9A, 0x5C, 0x00, 0x2A, 0xF3, 0xD1, 0x5A, 0x46, 0x9A, 0x5C, 0x01, 0x2A, 0xE2, 0xD1, 0x03, 0x92, 0xE0, 0xE7, -0x9F, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x00, 0x23, 0x01, 0x32, 0xBA, 0x42, 0x5B, 0x41, 0x02, 0x33, 0x9C, 0x4A, 0x13, 0x70, -0x83, 0x42, 0x08, 0xD8, 0x00, 0x22, 0x03, 0x28, 0x01, 0xD9, 0xC2, 0x1E, 0xD2, 0xB2, 0xC0, 0x1A, 0x10, 0x18, 0x96, 0x4B, -0x18, 0x70, 0x50, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x95, 0x4B, 0x19, 0x00, 0x41, 0x31, 0xFF, 0x31, 0x00, 0x25, 0x04, 0xE0, -0x01, 0x35, 0xED, 0xB2, 0x40, 0x33, 0x8B, 0x42, 0x07, 0xD0, 0x1A, 0x78, 0x09, 0x2A, 0xF9, 0xD1, 0x00, 0x2F, 0xF5, 0xD0, -0x01, 0x37, 0xFF, 0xB2, 0xF2, 0xE7, 0xB0, 0xF7, 0x5F, 0xFA, 0x05, 0x90, 0x80, 0x46, 0x02, 0x9B, 0x01, 0x9A, 0x13, 0x43, -0x5A, 0x1E, 0x93, 0x41, 0xDB, 0xB2, 0x9B, 0x46, 0x87, 0x4B, 0x1B, 0x78, 0x9A, 0x46, 0x00, 0x2B, 0x00, 0xD1, 0x79, 0xE0, -0x85, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x28, 0xD9, 0x02, 0x2B, 0x64, 0xD0, 0x8C, 0xF7, 0xDC, 0xF8, 0x82, 0x46, 0x00, 0x28, -0x00, 0xD1, 0x1B, 0xE2, 0x00, 0x23, 0x9A, 0x46, 0x7F, 0x4B, 0x23, 0x64, 0x02, 0x22, 0x62, 0x63, 0xFA, 0x22, 0x92, 0x01, -0xA2, 0x62, 0x19, 0x00, 0x23, 0x61, 0x43, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x77, 0xE0, 0xA3, 0x6A, 0x62, 0x6B, 0x98, 0x1A, -0x40, 0x00, 0x04, 0x9B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x01, 0x2D, 0x00, 0xD1, 0x84, 0xE1, -0x00, 0x22, 0x20, 0x00, 0xFC, 0xF7, 0x9A, 0xFF, 0x11, 0xE0, 0x71, 0x4B, 0x23, 0x64, 0x80, 0x22, 0x62, 0x63, 0xA2, 0x62, -0x6C, 0x4A, 0x01, 0x21, 0x11, 0x70, 0x16, 0x22, 0xA2, 0x75, 0x23, 0x61, 0x04, 0x98, 0x2C, 0x30, 0x00, 0x01, 0x00, 0x09, -0x60, 0x60, 0x00, 0x23, 0x9A, 0x46, 0x69, 0x4E, 0x4C, 0x25, 0x69, 0x4F, 0x48, 0x46, 0xD1, 0xF7, 0x33, 0xFF, 0x00, 0x28, -0x00, 0xD1, 0xB0, 0xE1, 0x31, 0x00, 0x20, 0x69, 0xD3, 0xF7, 0x16, 0xFF, 0x63, 0x68, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x01, -0x00, 0x09, 0x60, 0x60, 0x63, 0x5B, 0x5B, 0x00, 0xE2, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x60, -0xA3, 0x7D, 0x5D, 0x4A, 0xD2, 0x78, 0x9B, 0x18, 0xA3, 0x75, 0x59, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0xBE, 0x42, 0xDD, 0xD1, -0x0B, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x56, 0x4B, 0x1B, 0x68, 0x5B, 0x00, -0x23, 0x64, 0x02, 0x23, 0x63, 0x63, 0x4E, 0x33, 0xA3, 0x62, 0x4C, 0x4B, 0x03, 0x22, 0x1A, 0x70, 0x49, 0x4B, 0x00, 0x22, -0x1A, 0x70, 0x8B, 0xE7, 0xFD, 0xF7, 0x12, 0xF8, 0x00, 0x28, 0x04, 0xD1, 0x4D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x00, 0xD1, -0x11, 0xE1, 0x43, 0x46, 0x00, 0x2B, 0x2C, 0xD0, 0x4A, 0x4B, 0x23, 0x64, 0x04, 0x23, 0x63, 0x63, 0x08, 0x33, 0xA3, 0x62, -0x8C, 0xF7, 0x56, 0xF8, 0x00, 0x28, 0x00, 0xD0, 0x7C, 0xE7, 0x23, 0x6C, 0x23, 0x61, 0x20, 0x00, 0xFF, 0xF7, 0xAE, 0xFE, -0x53, 0x46, 0x00, 0x2B, 0x00, 0xD1, 0x95, 0xE1, 0xC0, 0x30, 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x18, 0x26, 0x4F, 0x46, -0x65, 0x68, 0x00, 0x22, 0x21, 0x69, 0x38, 0x00, 0xFC, 0xF7, 0x20, 0xFF, 0x63, 0x68, 0xAB, 0x42, 0x00, 0xD1, 0x4A, 0xE1, -0x75, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x65, 0x60, 0x18, 0x36, 0x90, 0x2E, 0xEE, 0xD1, 0xB9, 0x46, 0x8B, 0xE7, 0x5B, 0x46, -0x00, 0x2B, 0x21, 0xD0, 0x33, 0x4B, 0x1B, 0x68, 0x5B, 0x00, 0x23, 0x64, 0xE3, 0x6B, 0x63, 0x63, 0x23, 0x6B, 0xA3, 0x62, -0x03, 0x9B, 0x00, 0x2B, 0x05, 0xD0, 0x2F, 0x4B, 0x23, 0x64, 0x1A, 0x23, 0x63, 0x63, 0x46, 0x33, 0xA3, 0x62, 0xB2, 0x46, -0x00, 0x2E, 0x00, 0xD1, 0xD4, 0xE0, 0x05, 0x9A, 0x92, 0x46, 0x01, 0x9B, 0x00, 0x2B, 0x00, 0xD1, 0xCE, 0xE0, 0x28, 0x4B, -0x1B, 0x68, 0xA1, 0x6A, 0x8C, 0x46, 0x63, 0x44, 0xA3, 0x62, 0xC7, 0xE0, 0x15, 0x4B, 0x1B, 0x78, 0x5A, 0x00, 0x9B, 0x18, -0x5B, 0x00, 0xDB, 0xB2, 0x01, 0x2F, 0x49, 0xD9, 0x21, 0x4A, 0x22, 0x64, 0x1A, 0x22, 0x62, 0x63, 0x2C, 0x32, 0xA2, 0x62, -0x00, 0x2B, 0x03, 0xD0, 0x1E, 0x4B, 0x23, 0x64, 0x14, 0x23, 0x63, 0x63, 0x00, 0x2D, 0x03, 0xD0, 0x1C, 0x4B, 0x23, 0x64, -0x10, 0x23, 0x63, 0x63, 0x63, 0x6B, 0xA3, 0x62, 0xDA, 0x46, 0xA9, 0xE0, 0xF8, 0xE6, 0x10, 0x00, 0x00, 0xA0, 0xFF, 0xFF, -0x24, 0x27, 0x16, 0x00, 0x18, 0x27, 0x16, 0x00, 0x28, 0x27, 0x16, 0x00, 0x20, 0x27, 0x16, 0x00, 0x38, 0x27, 0x16, 0x00, -0xB1, 0xE6, 0x10, 0x00, 0xD1, 0xE6, 0x10, 0x00, 0x70, 0xA6, 0x16, 0x00, 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, -0xC4, 0x09, 0x00, 0x00, 0x00, 0x71, 0x02, 0x00, 0xE2, 0x04, 0x00, 0x00, 0x6A, 0x18, 0x00, 0x00, 0x7C, 0x91, 0x0D, 0x00, -0x04, 0xE2, 0x10, 0x00, 0xB2, 0xE6, 0x10, 0x00, 0xF9, 0x15, 0x00, 0x00, 0x08, 0xE2, 0x10, 0x00, 0xDC, 0x82, 0x00, 0x00, -0x14, 0xE2, 0x10, 0x00, 0xE8, 0x80, 0x00, 0x00, 0xF6, 0x54, 0x00, 0x00, 0xF2, 0x2B, 0x00, 0x00, 0x85, 0x4A, 0x5A, 0x43, -0x03, 0x99, 0x00, 0x29, 0x33, 0xD0, 0x84, 0x49, 0x09, 0x68, 0x49, 0x00, 0x8A, 0x42, 0x29, 0xD8, 0x8A, 0x1A, 0x22, 0x64, -0x28, 0x22, 0xD3, 0x1A, 0x63, 0x63, 0xE3, 0x6A, 0xA3, 0x62, 0x7F, 0x4B, 0x22, 0x6C, 0x9A, 0x42, 0x4B, 0xD9, 0xDA, 0x46, -0x00, 0x2F, 0x5D, 0xD0, 0x07, 0x9B, 0x00, 0x2B, 0x00, 0xD1, 0xC4, 0xE0, 0x59, 0x68, 0x06, 0x9A, 0x00, 0x2A, 0x00, 0xD1, -0xC4, 0xE0, 0x78, 0x4B, 0x99, 0x42, 0x00, 0xD1, 0xBE, 0xE0, 0x52, 0x68, 0x53, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x20, -0x00, 0x05, 0x83, 0x42, 0x00, 0xD8, 0xBA, 0xE0, 0x8B, 0x1A, 0x1B, 0x01, 0x00, 0xD1, 0xB6, 0xE0, 0x11, 0x00, 0xB1, 0xE0, -0x6F, 0x4B, 0x23, 0x64, 0x1A, 0x23, 0x63, 0x63, 0xD5, 0xE7, 0x00, 0x2D, 0x0D, 0xD0, 0x6D, 0x4B, 0x23, 0x64, 0x10, 0x23, -0x63, 0x63, 0xA3, 0x62, 0x01, 0x2D, 0x02, 0xD0, 0x01, 0x23, 0x9A, 0x46, 0xD0, 0xE7, 0x40, 0x33, 0x01, 0x22, 0xE2, 0x54, -0xF8, 0xE7, 0x67, 0x49, 0x09, 0x68, 0x49, 0x00, 0x8A, 0x42, 0x0D, 0xD8, 0x8A, 0x1A, 0x22, 0x64, 0xA2, 0x6B, 0xD3, 0x1A, -0x63, 0x63, 0xE3, 0x6A, 0xA3, 0x62, 0x5D, 0x4B, 0x22, 0x6C, 0x9A, 0x42, 0x09, 0xD9, 0x03, 0x9B, 0x9A, 0x46, 0xB9, 0xE7, -0x5B, 0x4B, 0x23, 0x64, 0x1A, 0x23, 0x63, 0x63, 0xF1, 0xE7, 0x00, 0x2D, 0x05, 0xD1, 0x58, 0x4B, 0x23, 0x64, 0x1A, 0x23, -0x63, 0x63, 0xDA, 0x46, 0xAC, 0xE7, 0xDA, 0x46, 0xAA, 0xE7, 0x50, 0x4B, 0x23, 0x64, 0x02, 0x23, 0x63, 0x63, 0x43, 0x46, -0x00, 0x2B, 0x0B, 0xD1, 0x30, 0x33, 0xA3, 0x62, 0x2F, 0x3B, 0x9A, 0x46, 0x8B, 0xF7, 0x42, 0xFF, 0x00, 0x28, 0x00, 0xD0, -0x68, 0xE6, 0x21, 0x6C, 0x21, 0x61, 0x72, 0xE6, 0xC0, 0x23, 0xA3, 0x62, 0x05, 0x9B, 0x9A, 0x46, 0xDE, 0xE6, 0x00, 0x23, -0x08, 0x93, 0x09, 0x93, 0x20, 0x1D, 0x23, 0x00, 0x08, 0xAA, 0x09, 0xA9, 0xFC, 0xF7, 0x72, 0xFD, 0x09, 0x9B, 0x00, 0x2B, -0x04, 0xD0, 0x22, 0x69, 0x9A, 0x42, 0x00, 0xD9, 0x1A, 0x00, 0x22, 0x61, 0x00, 0x2F, 0x07, 0xD0, 0x08, 0x9B, 0x5B, 0x00, -0x62, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x63, 0x6B, 0x02, 0x2B, 0x1E, 0xD0, 0x53, 0x46, -0x00, 0x2B, 0x04, 0xD1, 0x3A, 0x4B, 0x08, 0x9A, 0x53, 0x43, 0x23, 0x61, 0x23, 0x64, 0x03, 0x26, 0x4F, 0x46, 0x65, 0x68, -0x00, 0x22, 0x21, 0x69, 0x38, 0x00, 0xFC, 0xF7, 0xEB, 0xFD, 0x63, 0x68, 0xAB, 0x42, 0x18, 0xD0, 0x08, 0x9B, 0x9C, 0x46, -0x65, 0x44, 0x2D, 0x01, 0x2D, 0x09, 0x65, 0x60, 0x01, 0x3E, 0xF6, 0xB2, 0x00, 0x2E, 0xEC, 0xD1, 0xB9, 0x46, 0x54, 0xE6, -0x08, 0x9A, 0x53, 0x00, 0x9B, 0x18, 0x5B, 0x00, 0x62, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, -0xD5, 0xE7, 0xB9, 0x46, 0x47, 0xE6, 0xB9, 0x46, 0x45, 0xE6, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xA3, 0x7D, 0x10, 0x2B, -0x00, 0xD9, 0x63, 0xE6, 0x43, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x5F, 0xE6, 0x53, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x5B, 0xE6, -0x11, 0x33, 0xA3, 0x75, 0x58, 0xE6, 0x06, 0x9B, 0x00, 0x2B, 0x91, 0xD0, 0x06, 0x9B, 0x59, 0x68, 0x15, 0x4B, 0x99, 0x42, -0x8C, 0xD0, 0x63, 0x6B, 0x1A, 0x00, 0x28, 0x32, 0x52, 0x00, 0xA0, 0x6A, 0xC3, 0x1A, 0x5B, 0x00, 0x04, 0x98, 0x84, 0x46, -0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x9A, 0x42, 0x00, 0xD2, 0x7A, 0xE7, 0x0C, 0x4B, -0x23, 0x64, 0x77, 0xE7, 0x21, 0x6C, 0x21, 0x61, 0x43, 0x46, 0x00, 0x2B, 0x04, 0xD0, 0x20, 0x00, 0xFF, 0xF7, 0x14, 0xFD, -0x60, 0x60, 0x6B, 0xE6, 0x05, 0x9B, 0x9A, 0x46, 0xE5, 0xE5, 0xC0, 0x46, 0xE2, 0x04, 0x00, 0x00, 0x00, 0xE2, 0x10, 0x00, -0xE7, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xE8, 0x80, 0x00, 0x00, 0xF2, 0x2B, 0x00, 0x00, 0x04, 0xE2, 0x10, 0x00, -0xA9, 0x03, 0x00, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x1A, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x19, 0x4B, -0x9B, 0x78, 0x83, 0x75, 0xFC, 0xF7, 0x06, 0xFE, 0x05, 0x00, 0x02, 0x21, 0x01, 0x20, 0xFC, 0xF7, 0xC3, 0xFE, 0x06, 0x00, -0x00, 0x2D, 0x04, 0xD0, 0x11, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x4E, 0x23, 0xE3, 0x5C, 0x02, 0x2B, -0x0E, 0xD0, 0xA6, 0xF7, 0x83, 0xFE, 0x60, 0x64, 0xFF, 0xF7, 0x0C, 0xFD, 0x00, 0x2E, 0x0E, 0xD0, 0x00, 0x2D, 0x04, 0xD0, -0x08, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x70, 0xBD, 0x07, 0x4C, 0x20, 0x68, 0x7D, 0xF7, 0xB8, 0xFB, -0x00, 0x23, 0x23, 0x60, 0xEE, 0xE7, 0x02, 0x21, 0x00, 0x20, 0xFC, 0xF7, 0x9D, 0xFE, 0xEB, 0xE7, 0xFC, 0x00, 0x60, 0x40, -0x7C, 0x91, 0x0D, 0x00, 0xF8, 0xE6, 0x10, 0x00, 0x10, 0xB5, 0x4E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x10, 0xBD, -0x00, 0x21, 0xD1, 0xF7, 0x8F, 0xFE, 0xFF, 0xF7, 0xE5, 0xFC, 0xF8, 0xE7, 0x10, 0xB5, 0xA6, 0xF7, 0x55, 0xFE, 0x22, 0x4B, -0x5A, 0x68, 0x92, 0x01, 0x1B, 0x68, 0xC0, 0x1A, 0x00, 0x01, 0x01, 0x09, 0x40, 0x00, 0x43, 0x1A, 0x9B, 0x00, 0x5B, 0x18, -0x99, 0x00, 0x5B, 0x18, 0x9A, 0x42, 0x20, 0xD3, 0xD3, 0x1A, 0x1B, 0x4C, 0x9C, 0x42, 0xA4, 0x41, 0x64, 0x42, 0x1A, 0x4B, -0x1A, 0x4A, 0x1A, 0x60, 0xD1, 0xF7, 0xC0, 0xFE, 0x00, 0x28, 0x0A, 0xD0, 0x00, 0x2C, 0x19, 0xD0, 0x17, 0x4B, 0x80, 0x22, -0x12, 0x05, 0x1A, 0x60, 0x16, 0x48, 0x7F, 0xF7, 0x05, 0xFB, 0x10, 0xBD, 0x00, 0x24, 0x11, 0x4B, 0x1B, 0x68, 0x9B, 0x68, -0x00, 0x2B, 0xF1, 0xD0, 0x12, 0x4A, 0xDB, 0x69, 0x93, 0x42, 0xEB, 0xD1, 0xEC, 0xE7, 0x0C, 0x4B, 0x0C, 0x4A, 0x1A, 0x60, -0xD1, 0xF7, 0xA4, 0xFE, 0x00, 0x28, 0xED, 0xD0, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x0D, 0x4B, 0x00, 0x22, 0x1A, 0x70, -0x0C, 0x4B, 0x18, 0x68, 0x00, 0x28, 0xE2, 0xD0, 0xFF, 0xF7, 0xAE, 0xFF, 0xDF, 0xE7, 0xC0, 0x46, 0x6C, 0xE6, 0x10, 0x00, -0xFF, 0x70, 0x02, 0x00, 0x10, 0xE7, 0x10, 0x00, 0x64, 0x2A, 0x16, 0x00, 0x00, 0x41, 0x04, 0x40, 0x74, 0xD1, 0x10, 0x00, -0xC9, 0x1F, 0x10, 0x00, 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, 0xF8, 0xE6, 0x10, 0x00, 0xF8, 0xB5, 0xDE, 0x46, -0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x06, 0x00, 0x0D, 0x00, 0x17, 0x00, 0x49, 0x4B, 0x1C, 0x68, 0xA4, 0x04, -0xA4, 0x0E, 0x20, 0x00, 0x50, 0x43, 0x43, 0x01, 0x1B, 0x1A, 0x9B, 0x00, 0x1B, 0x18, 0x98, 0x00, 0x18, 0x18, 0x00, 0x02, -0xD3, 0xF7, 0x5E, 0xFC, 0x81, 0x46, 0x03, 0x0A, 0x9B, 0x46, 0x29, 0x00, 0x80, 0x20, 0xC0, 0x00, 0xD3, 0xF7, 0x56, 0xFC, -0x03, 0x00, 0x6B, 0x43, 0x9A, 0x46, 0xFF, 0x21, 0x4B, 0x46, 0x19, 0x40, 0x69, 0x43, 0x09, 0x0A, 0x48, 0x43, 0x53, 0x46, -0x1B, 0x1A, 0x98, 0x46, 0x23, 0x01, 0x1B, 0x19, 0x9B, 0x00, 0x99, 0x46, 0xA1, 0x44, 0x53, 0x46, 0x00, 0x2B, 0x05, 0xD1, -0x34, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x78, 0x01, 0xC0, 0x1B, 0x80, 0x00, 0xC7, 0x19, -0xB8, 0x00, 0x38, 0x18, 0x29, 0x00, 0xD3, 0xF7, 0x33, 0xFC, 0x44, 0x43, 0x27, 0x00, 0x65, 0x09, 0x73, 0x01, 0x2C, 0x4A, -0x9A, 0x18, 0x11, 0x68, 0x2B, 0x4A, 0x11, 0x60, 0x2B, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x68, 0x2A, 0x4B, 0x1A, 0x60, -0x2A, 0x4B, 0x5A, 0x46, 0x1A, 0x60, 0x51, 0x46, 0x48, 0x46, 0xD3, 0xF7, 0xA3, 0xFC, 0x09, 0x05, 0x43, 0x46, 0x19, 0x43, -0x26, 0x4B, 0x19, 0x60, 0x26, 0x4B, 0x52, 0x46, 0x1A, 0x60, 0x26, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x25, 0x4B, 0x9E, 0x22, -0xFF, 0x32, 0x99, 0x5C, 0x09, 0x02, 0x01, 0x3A, 0x9A, 0x5C, 0x0A, 0x43, 0x12, 0x04, 0x9C, 0x21, 0xFF, 0x31, 0x58, 0x5C, -0x00, 0x02, 0x01, 0x39, 0x59, 0x5C, 0x01, 0x43, 0x0A, 0x43, 0x1E, 0x49, 0x0A, 0x60, 0xA0, 0x22, 0xFF, 0x32, 0x98, 0x5C, -0x00, 0x02, 0x01, 0x3A, 0x9C, 0x5C, 0x04, 0x43, 0x24, 0x04, 0x20, 0x00, 0x28, 0x43, 0x01, 0x35, 0x6D, 0x01, 0xEC, 0x1B, -0x24, 0x04, 0x04, 0x43, 0x16, 0x4A, 0x14, 0x60, 0x9A, 0x22, 0xFF, 0x32, 0x98, 0x5C, 0x00, 0x02, 0x01, 0x3A, 0x9B, 0x5C, -0x03, 0x43, 0x36, 0x02, 0x1E, 0x43, 0x01, 0x20, 0x06, 0x43, 0x11, 0x4B, 0x1E, 0x60, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xA2, 0x46, 0xAB, 0x46, 0xF8, 0xBD, 0xC0, 0x46, 0x08, 0x04, 0x60, 0x40, 0x28, 0x19, 0x16, 0x00, 0xDC, 0x05, 0x60, 0x40, -0x5C, 0x06, 0x60, 0x40, 0xD8, 0x05, 0x60, 0x40, 0x60, 0x06, 0x60, 0x40, 0x50, 0x06, 0x60, 0x40, 0x54, 0x06, 0x60, 0x40, -0x58, 0x06, 0x60, 0x40, 0x4C, 0x06, 0x60, 0x40, 0x20, 0xA3, 0x16, 0x00, 0x44, 0x06, 0x60, 0x40, 0x48, 0x06, 0x60, 0x40, -0x40, 0x06, 0x60, 0x40, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8F, 0xB0, 0x80, 0x46, -0x0E, 0x00, 0x15, 0x00, 0x03, 0x93, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x17, 0x00, 0x1F, 0x40, 0x1A, 0x42, 0x00, 0xD0, -0xF6, 0xE2, 0x72, 0xB6, 0x00, 0x21, 0x5C, 0x20, 0x7D, 0xF7, 0xCE, 0xF9, 0x04, 0x1E, 0x00, 0xD1, 0x25, 0xE3, 0x00, 0x20, -0x00, 0x2F, 0x00, 0xD0, 0xF1, 0xE2, 0x62, 0xB6, 0x00, 0x28, 0x00, 0xD1, 0xED, 0xE2, 0x0F, 0xB0, 0x3C, 0xBC, 0x90, 0x46, -0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xDE, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x0C, 0x20, 0x00, 0x2F, 0xEF, 0xD1, 0xEA, 0xE7, 0x00, 0x23, 0x06, 0x93, 0xEC, 0xE2, 0x01, 0x23, 0x06, 0x93, 0xE9, 0xE2, -0x00, 0x23, 0x5B, 0x00, 0xD6, 0x4A, 0xD3, 0x18, 0x5F, 0x78, 0xBA, 0x46, 0xBF, 0xE0, 0x2F, 0x7B, 0xD4, 0x4B, 0x19, 0x00, -0x00, 0x22, 0x08, 0x78, 0xB8, 0x42, 0x00, 0xD1, 0xAD, 0xE0, 0x01, 0x32, 0x02, 0x31, 0x08, 0x2A, 0xF7, 0xD1, 0x02, 0x27, -0x68, 0x7B, 0x00, 0x22, 0x19, 0x78, 0x81, 0x42, 0x00, 0xD1, 0xA7, 0xE0, 0x01, 0x32, 0x02, 0x33, 0x08, 0x2A, 0xF7, 0xD1, -0x02, 0x23, 0x9A, 0x46, 0x09, 0x2F, 0x05, 0xD9, 0xC5, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x07, 0x97, 0xD3, 0x46, 0xC4, 0x4A, 0x7B, 0x00, 0xDF, 0x19, 0xD7, 0x19, 0x53, 0x46, 0x5B, 0x00, 0x53, 0x44, 0xD2, 0x18, -0xBF, 0x78, 0x93, 0x78, 0xFF, 0x18, 0xFB, 0xB2, 0x1F, 0x00, 0x05, 0x93, 0x28, 0x7C, 0x19, 0x00, 0xD3, 0xF7, 0x48, 0xFB, -0xC0, 0xB2, 0xBC, 0x4B, 0x63, 0x62, 0xBC, 0x4B, 0xE3, 0x61, 0xBC, 0x4B, 0x23, 0x62, 0x03, 0x23, 0x23, 0x76, 0xBB, 0x4B, -0x9B, 0x7A, 0xA3, 0x75, 0xBA, 0x4A, 0x9F, 0x23, 0x9B, 0x00, 0xD2, 0x5C, 0x00, 0x23, 0x00, 0x2A, 0x02, 0xD1, 0x7B, 0x00, -0x03, 0x33, 0xDB, 0xB2, 0xE3, 0x75, 0x00, 0x23, 0xA3, 0x82, 0x06, 0x33, 0x63, 0x76, 0x40, 0x33, 0x42, 0x46, 0xE2, 0x54, -0x01, 0x33, 0xE6, 0x54, 0xEB, 0x88, 0x23, 0x87, 0x2B, 0x89, 0x63, 0x87, 0xAA, 0x7A, 0x3D, 0x23, 0xE2, 0x54, 0xEA, 0x7A, -0x01, 0x33, 0xE2, 0x54, 0x2A, 0x7B, 0x01, 0x33, 0xE2, 0x54, 0x6A, 0x7B, 0x01, 0x33, 0xE2, 0x54, 0xAA, 0x7B, 0x01, 0x33, -0xE2, 0x54, 0xEA, 0x7B, 0x01, 0x33, 0xE2, 0x54, 0x6A, 0x7C, 0x01, 0x33, 0xE2, 0x54, 0x01, 0x33, 0xE0, 0x54, 0x9B, 0x4A, -0xB0, 0x33, 0xD3, 0x58, 0x23, 0x63, 0xAA, 0x78, 0x4B, 0x23, 0xE2, 0x54, 0x2B, 0x7C, 0x05, 0x99, 0x8C, 0x46, 0x63, 0x44, -0xEA, 0x7B, 0x9B, 0x1A, 0x5A, 0x42, 0x53, 0x41, 0x49, 0x22, 0xA3, 0x54, 0x45, 0x23, 0xE1, 0x54, 0x13, 0x33, 0x08, 0x9A, -0xE2, 0x54, 0x01, 0x22, 0x31, 0x00, 0x01, 0x20, 0xA6, 0xF7, 0xF8, 0xF9, 0x03, 0x9B, 0x00, 0x2B, 0x00, 0xD0, 0x98, 0xE1, -0x06, 0x99, 0x01, 0x31, 0x2A, 0x89, 0x4A, 0x43, 0xD3, 0xB2, 0x0C, 0x93, 0xEB, 0x88, 0x4B, 0x43, 0xDB, 0xB2, 0x0D, 0x93, -0x2B, 0x79, 0x00, 0x22, 0x92, 0x46, 0x00, 0x2B, 0x02, 0xD0, 0xEA, 0x78, 0x04, 0x2A, 0x26, 0xD0, 0x68, 0x78, 0x03, 0x28, -0x33, 0xD8, 0x2B, 0x78, 0x04, 0x2B, 0x30, 0xD8, 0x9B, 0x00, 0x88, 0x4A, 0xD3, 0x18, 0x1A, 0x5C, 0x0F, 0x23, 0x13, 0x40, -0x0A, 0x93, 0x53, 0x11, 0x01, 0x21, 0x0B, 0x40, 0x03, 0x93, 0x12, 0x11, 0x11, 0x40, 0x0B, 0x91, 0x2C, 0xE0, 0x52, 0x00, -0x79, 0x49, 0x8A, 0x18, 0x57, 0x78, 0x51, 0xE7, 0x52, 0x00, 0x77, 0x4B, 0x9A, 0x18, 0x53, 0x78, 0x9A, 0x46, 0x09, 0x2F, -0x00, 0xD9, 0x57, 0xE7, 0x53, 0x46, 0x09, 0x2B, 0x00, 0xD9, 0x53, 0xE7, 0x58, 0xE7, 0x01, 0x2B, 0x0A, 0xD0, 0x02, 0x3B, -0x5A, 0x42, 0x53, 0x41, 0x5B, 0x42, 0x76, 0x4A, 0x13, 0x40, 0x9A, 0x46, 0x75, 0x4B, 0x9C, 0x46, 0xE2, 0x44, 0xCB, 0xE7, -0x74, 0x4B, 0x9A, 0x46, 0xC8, 0xE7, 0x29, 0x78, 0x66, 0x4B, 0xDB, 0x6E, 0x98, 0x46, 0x00, 0x23, 0x00, 0x22, 0xC0, 0x47, -0x03, 0x9B, 0x0B, 0x93, 0x00, 0x23, 0x0A, 0x93, 0x2B, 0x79, 0x0E, 0x2B, 0x00, 0xD1, 0xBC, 0xE0, 0x00, 0xD9, 0xAC, 0xE0, -0x00, 0x22, 0x06, 0x92, 0x08, 0x2B, 0x04, 0xD0, 0x01, 0x32, 0x06, 0x92, 0x0D, 0x2B, 0x00, 0xD0, 0xA8, 0xE0, 0xEB, 0x78, -0x5A, 0x1E, 0x03, 0x2A, 0x00, 0xD9, 0xE3, 0xE0, 0xD3, 0xB2, 0x08, 0x93, 0x63, 0x4A, 0x13, 0x68, 0x63, 0x49, 0x19, 0x40, -0x80, 0x23, 0x9B, 0x02, 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0x61, 0x49, 0x0B, 0x40, 0x80, 0x21, 0x49, 0x02, 0x8C, 0x46, -0x0B, 0x43, 0x13, 0x60, 0x73, 0x01, 0x98, 0x46, 0x5D, 0x4A, 0x42, 0x44, 0x85, 0x23, 0x1B, 0x04, 0x51, 0x46, 0x0B, 0x43, -0x13, 0x60, 0x5B, 0x4B, 0x43, 0x44, 0x9A, 0x46, 0x4B, 0x4A, 0x5B, 0x46, 0x59, 0x00, 0x59, 0x44, 0x53, 0x18, 0x5B, 0x78, -0x1B, 0x01, 0xA8, 0x7A, 0x03, 0x43, 0xE8, 0x7A, 0x02, 0x38, 0x07, 0x00, 0x78, 0x42, 0x78, 0x41, 0xC0, 0x00, 0x03, 0x43, -0x07, 0x9F, 0x78, 0x00, 0xBB, 0x46, 0x58, 0x44, 0x17, 0x18, 0x7F, 0x78, 0x7F, 0x01, 0x3B, 0x43, 0x67, 0x46, 0x3B, 0x43, -0x57, 0x46, 0x3B, 0x60, 0x4C, 0x4B, 0x43, 0x44, 0x9A, 0x46, 0x2B, 0x89, 0x1B, 0x05, 0x9C, 0x46, 0xEB, 0x88, 0x1B, 0x01, -0x67, 0x46, 0x3B, 0x43, 0x80, 0x5C, 0x03, 0x43, 0x88, 0x5C, 0x00, 0x04, 0x03, 0x43, 0x52, 0x46, 0x13, 0x60, 0x03, 0x9B, -0xDB, 0x03, 0x0A, 0x9A, 0x12, 0x02, 0x13, 0x43, 0x0B, 0x9A, 0xD2, 0x01, 0x13, 0x43, 0x06, 0x9A, 0x12, 0x05, 0x13, 0x43, -0x08, 0x9A, 0x12, 0x04, 0x13, 0x43, 0x3E, 0x4A, 0xB2, 0x18, 0x92, 0x00, 0x13, 0x60, 0xB3, 0x00, 0x3C, 0x4A, 0x9C, 0x50, -0x4B, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x87, 0xE0, 0x32, 0x01, 0xB2, 0x18, 0xD3, 0x01, 0x9B, 0x1A, 0xF3, 0x18, -0x37, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x9B, 0xB2, 0x36, 0x49, 0x41, 0x44, 0x0C, 0x98, 0xC2, 0x18, 0x12, 0x04, 0x13, 0x43, -0x0B, 0x60, 0x87, 0x23, 0xDB, 0x00, 0x73, 0x43, 0x84, 0x46, 0x63, 0x44, 0x31, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x5B, 0x00, -0x9B, 0xB2, 0x30, 0x49, 0x41, 0x44, 0x0D, 0x9A, 0x9A, 0x18, 0x92, 0xB2, 0x1B, 0x04, 0x13, 0x43, 0x0B, 0x60, 0x2D, 0x4B, -0x43, 0x44, 0xE9, 0x7B, 0x80, 0x22, 0xD2, 0x01, 0x0A, 0x43, 0x1A, 0x60, 0x29, 0x89, 0x00, 0x29, 0x04, 0xD1, 0xEB, 0x88, -0x01, 0x31, 0x00, 0x2B, 0x00, 0xD0, 0x19, 0x00, 0x00, 0x2E, 0x00, 0xD0, 0xDA, 0xE0, 0xEA, 0x7B, 0x89, 0xB2, 0x00, 0x20, -0xFF, 0xF7, 0x72, 0xFD, 0xD4, 0xE0, 0x03, 0x22, 0x06, 0x92, 0x10, 0x2B, 0x00, 0xD1, 0x56, 0xE7, 0x05, 0x4B, 0x9B, 0x6E, -0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, 0x06, 0x93, 0x4D, 0xE7, 0x02, 0x23, 0x06, 0x93, 0x4A, 0xE7, -0x28, 0x19, 0x16, 0x00, 0xE4, 0xDF, 0x10, 0x00, 0xD4, 0xDF, 0x10, 0x00, 0xE8, 0xDF, 0x10, 0x00, 0x69, 0xF5, 0x0A, 0x00, -0x21, 0x61, 0x10, 0x00, 0x4D, 0xF3, 0x0A, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0x08, 0xE0, 0x10, 0x00, -0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0x04, 0x60, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, -0xFF, 0xFF, 0xFE, 0xFF, 0xD4, 0x05, 0x60, 0x40, 0xE0, 0x05, 0x60, 0x40, 0xE4, 0x05, 0x60, 0x40, 0x8C, 0x01, 0x18, 0x10, -0x54, 0x27, 0x16, 0x00, 0x5C, 0xAB, 0xFF, 0xFF, 0xD8, 0x05, 0x60, 0x40, 0xAE, 0x55, 0x00, 0x00, 0xDC, 0x05, 0x60, 0x40, -0xD0, 0x05, 0x60, 0x40, 0x96, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, 0x08, 0x93, -0x14, 0xE7, 0x42, 0x33, 0xE3, 0x5C, 0x5F, 0x1E, 0x20, 0x00, 0x50, 0x30, 0x7F, 0xF7, 0xF0, 0xFA, 0x49, 0x23, 0xE1, 0x5C, -0xCB, 0x1C, 0xDB, 0xB2, 0x04, 0x31, 0xC9, 0xB2, 0x8B, 0x4A, 0x92, 0x46, 0x0D, 0x9A, 0x04, 0x32, 0xD2, 0xB2, 0x00, 0x92, -0x84, 0x22, 0x50, 0x46, 0x82, 0x58, 0x93, 0x46, 0x0C, 0x9A, 0x30, 0x00, 0xD8, 0x47, 0x86, 0x4A, 0x42, 0x44, 0x00, 0x23, -0x13, 0x60, 0x85, 0x4A, 0x42, 0x44, 0x13, 0x60, 0x19, 0x33, 0xFF, 0x33, 0x52, 0x46, 0xD0, 0x58, 0x31, 0x00, 0xD2, 0xF7, -0x47, 0xFB, 0x81, 0x4A, 0x11, 0x68, 0x80, 0x23, 0x9B, 0x01, 0xB3, 0x40, 0x0B, 0x43, 0x13, 0x60, 0x7E, 0x4A, 0x42, 0x44, -0xFF, 0x23, 0x3B, 0x40, 0x1F, 0x2B, 0x00, 0xD9, 0x1F, 0x23, 0x1B, 0x02, 0xE9, 0x7B, 0x0B, 0x43, 0x09, 0x99, 0x03, 0x39, -0x48, 0x42, 0x41, 0x41, 0xC9, 0x03, 0x0B, 0x43, 0xC0, 0x21, 0xC9, 0x01, 0x0B, 0x43, 0x13, 0x60, 0x42, 0xE0, 0x75, 0x4B, -0xF2, 0x18, 0x52, 0x01, 0x74, 0x49, 0x5B, 0x46, 0x58, 0x00, 0x58, 0x44, 0x0B, 0x18, 0x5B, 0x78, 0x1B, 0x01, 0xAF, 0x7A, -0x1F, 0x43, 0xBC, 0x46, 0xEB, 0x7A, 0x02, 0x3B, 0x1F, 0x00, 0x7B, 0x42, 0x7B, 0x41, 0xDB, 0x00, 0x67, 0x46, 0x3B, 0x43, -0x9A, 0x46, 0x07, 0x9F, 0x7B, 0x00, 0x98, 0x46, 0xBC, 0x46, 0xE0, 0x44, 0x8C, 0x46, 0xC4, 0x44, 0x63, 0x46, 0x5B, 0x78, -0x5B, 0x01, 0x1F, 0x00, 0x53, 0x46, 0x1F, 0x43, 0x80, 0x23, 0x5B, 0x02, 0x3B, 0x43, 0x13, 0x60, 0x2B, 0x89, 0x1B, 0x05, -0xED, 0x88, 0x2D, 0x01, 0x2B, 0x43, 0x45, 0x46, 0x6D, 0x5C, 0x2B, 0x43, 0x41, 0x5C, 0x09, 0x04, 0x0B, 0x43, 0x53, 0x60, -0x31, 0x01, 0x71, 0x18, 0xCB, 0x01, 0x5B, 0x1A, 0xF3, 0x18, 0x5B, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x98, 0xB2, 0x11, 0x00, -0x08, 0x39, 0x1B, 0x04, 0x03, 0x43, 0x0B, 0x60, 0x04, 0x3A, 0x13, 0x60, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x11, 0x00, -0x19, 0x40, 0x88, 0x46, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x52, 0x4B, 0x05, 0x9A, 0x53, 0x43, 0x9B, 0xB2, 0x42, 0x22, -0xA2, 0x5C, 0x52, 0x00, 0x44, 0x21, 0x61, 0x5C, 0x48, 0x1E, 0x81, 0x41, 0x00, 0x91, 0x31, 0x00, 0x0B, 0x20, 0xD3, 0xF7, -0x41, 0xF8, 0x4B, 0x46, 0xDB, 0x07, 0x33, 0xD4, 0x4B, 0x46, 0x1F, 0x01, 0x3F, 0x09, 0x41, 0x23, 0xE5, 0x5C, 0x02, 0x33, -0xE3, 0x5C, 0x9B, 0x06, 0x7F, 0x08, 0x5F, 0x40, 0x42, 0x23, 0xE3, 0x5C, 0x99, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x39, 0x4B, -0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x49, 0x46, 0x38, 0x00, 0xD3, 0xF7, 0x63, 0xF9, 0x69, 0x1A, -0x00, 0x29, 0x21, 0xDD, 0x42, 0x23, 0xE3, 0x5C, 0xC9, 0x1A, 0x49, 0x00, 0x58, 0x00, 0x04, 0x9A, 0x94, 0x46, 0x60, 0x44, -0x09, 0x18, 0x09, 0x01, 0x09, 0x09, 0x61, 0x63, 0x02, 0x2B, 0x02, 0xD9, 0x30, 0x00, 0x34, 0x4B, 0x98, 0x47, 0x00, 0x20, -0x43, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x28, 0xE5, 0x62, 0xB6, 0x26, 0xE5, 0x30, 0x4F, 0x4B, 0x46, 0x3B, 0x40, 0x1F, 0x00, -0x04, 0x98, 0x01, 0x38, 0x00, 0x01, 0x03, 0x09, 0x04, 0x93, 0xC4, 0xE7, 0x42, 0x23, 0xE3, 0x5C, 0xC9, 0x18, 0xD9, 0xE7, -0x00, 0x21, 0x5C, 0x20, 0x7C, 0xF7, 0xD8, 0xFE, 0x04, 0x1E, 0x00, 0xD1, 0x18, 0xE5, 0x43, 0x46, 0x9B, 0x00, 0x26, 0x4A, -0x9F, 0x58, 0x6B, 0x78, 0x09, 0x93, 0x03, 0x2B, 0x00, 0xD1, 0x19, 0xE5, 0xAB, 0x78, 0x01, 0x2B, 0x00, 0xD1, 0x18, 0xE5, -0x2A, 0x79, 0x08, 0x23, 0x93, 0x42, 0x9B, 0x41, 0x5B, 0x42, 0x06, 0x93, 0x06, 0x9B, 0x08, 0x93, 0xA6, 0xF7, 0x1C, 0xFA, -0x04, 0x90, 0xBB, 0x6F, 0x81, 0x46, 0x99, 0x44, 0x5C, 0x22, 0x00, 0x21, 0x20, 0x00, 0x7A, 0xF7, 0x67, 0xFE, 0xEB, 0x7A, -0x00, 0x2B, 0x00, 0xD0, 0x0B, 0xE5, 0x2B, 0x7B, 0x00, 0x2B, 0x00, 0xD1, 0x00, 0xE5, 0x02, 0x22, 0x92, 0x46, 0x02, 0x27, -0x02, 0x2B, 0x00, 0xD0, 0x22, 0xE5, 0x01, 0x3B, 0xF9, 0xE4, 0x04, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, -0x98, 0x47, 0x0C, 0x20, 0xD5, 0xE4, 0xC0, 0x46, 0x28, 0x19, 0x16, 0x00, 0xD8, 0x05, 0x60, 0x40, 0xDC, 0x05, 0x60, 0x40, -0x0C, 0x04, 0x60, 0x40, 0xD0, 0x05, 0x60, 0x40, 0x2F, 0x00, 0x03, 0x02, 0xE8, 0xDF, 0x10, 0x00, 0x5C, 0xAB, 0xFF, 0xFF, -0xE2, 0x04, 0x00, 0x00, 0x3D, 0xF4, 0x0A, 0x00, 0xFE, 0xFF, 0xFF, 0x0F, 0x38, 0x27, 0x16, 0x00, 0x00, 0x20, 0x70, 0x47, -0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x14, 0x00, 0x1C, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x5A, 0x4B, -0x1B, 0x68, 0xDB, 0x05, 0x0B, 0xD5, 0x58, 0x49, 0x0B, 0x68, 0x5B, 0x00, 0x5B, 0x08, 0x80, 0x22, 0x12, 0x06, 0x13, 0x43, -0x0B, 0x60, 0x0A, 0x00, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x53, 0x4B, 0x1B, 0x68, 0xDB, 0x05, 0x0B, 0xD5, 0x51, 0x49, -0x0B, 0x68, 0x5B, 0x00, 0x5B, 0x08, 0x80, 0x22, 0x12, 0x06, 0x13, 0x43, 0x0B, 0x60, 0x0A, 0x00, 0x13, 0x68, 0x00, 0x2B, -0xFC, 0xDB, 0x7A, 0xF7, 0x4F, 0xFF, 0x4B, 0x4B, 0x18, 0x68, 0x00, 0x28, 0x09, 0xD0, 0x7C, 0xF7, 0xF5, 0xFE, 0x48, 0x4B, -0x00, 0x22, 0x1A, 0x60, 0x47, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x46, 0x4B, 0x11, 0x22, 0x44, 0x21, -0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x10, 0x3A, -0x40, 0x49, 0x5A, 0x54, 0x40, 0x49, 0x5A, 0x54, 0x40, 0x4A, 0x00, 0x21, 0x99, 0x54, 0x40, 0x4B, 0x1B, 0x68, 0x01, 0x2B, -0x47, 0xD9, 0x39, 0x4B, 0x1A, 0x68, 0x08, 0x21, 0x8A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x01, 0x20, 0x82, 0x43, 0x1A, 0x60, -0x1A, 0x68, 0x06, 0x39, 0x8A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x38, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x04, -0x12, 0x0C, 0xB0, 0x21, 0x49, 0x03, 0x0A, 0x43, 0x1A, 0x60, 0x34, 0x4A, 0xA0, 0x23, 0x9B, 0x00, 0xD0, 0x54, 0x29, 0x4A, -0x13, 0x68, 0x0F, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x30, 0x4A, 0x13, 0x68, 0x30, 0x49, 0x19, 0x40, 0xA0, 0x23, 0xDB, 0x03, -0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0xFF, 0x21, 0x8B, 0x43, 0xAF, 0x39, 0x0B, 0x43, 0x13, 0x60, 0x2B, 0x4B, 0x2C, 0x4A, -0x9A, 0x60, 0x2C, 0x4A, 0xDA, 0x60, 0x2C, 0x4A, 0x5A, 0x61, 0x2C, 0x4A, 0x9A, 0x61, 0x00, 0x2C, 0x00, 0xD1, 0x62, 0xB6, -0x00, 0x23, 0x2A, 0x4A, 0x13, 0x60, 0x2A, 0x4A, 0x13, 0x60, 0x2A, 0x4A, 0x13, 0x60, 0x0A, 0x22, 0x29, 0x49, 0x2A, 0x48, -0xD3, 0xF7, 0x10, 0xFC, 0x10, 0xBD, 0x15, 0x4B, 0x1A, 0x68, 0x08, 0x31, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x07, 0x39, -0x8A, 0x43, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x02, 0x20, 0x02, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x13, 0x48, 0x10, 0x40, -0x80, 0x22, 0x92, 0x01, 0x02, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x04, 0x12, 0x0C, 0xB0, 0x20, 0x40, 0x03, 0x02, 0x43, -0x1A, 0x60, 0x0E, 0x4A, 0xA0, 0x23, 0x9B, 0x00, 0xD1, 0x54, 0x19, 0x4B, 0x19, 0x4A, 0x1A, 0x60, 0xAF, 0xE7, 0xC0, 0x46, -0x00, 0x04, 0x60, 0x40, 0x00, 0x08, 0x60, 0x40, 0xF8, 0xE6, 0x10, 0x00, 0xFC, 0x00, 0x60, 0x40, 0xEC, 0xA4, 0x16, 0x00, -0x1E, 0x03, 0x00, 0x00, 0x6F, 0x04, 0x00, 0x00, 0x6D, 0x04, 0x00, 0x00, 0x50, 0xE0, 0x10, 0x00, 0xFF, 0xDF, 0xFF, 0xFF, -0x7C, 0x1E, 0x16, 0x00, 0x8C, 0x04, 0x60, 0x40, 0xFF, 0xFF, 0x00, 0xFF, 0x60, 0x92, 0x16, 0x00, 0x2D, 0x01, 0x10, 0x00, -0x81, 0x01, 0x10, 0x00, 0x8D, 0x05, 0x10, 0x00, 0xB9, 0x00, 0x10, 0x00, 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, -0x54, 0xE6, 0x10, 0x00, 0xD8, 0xE1, 0x10, 0x00, 0xC0, 0x9F, 0x16, 0x00, 0x30, 0x10, 0x62, 0x40, 0x15, 0x1C, 0x20, 0x00, -0xF8, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x70, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x0B, 0xD5, -0x6F, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x6C, 0x4A, 0x13, 0x68, 0x08, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x6B, 0x4B, -0x01, 0x22, 0x1A, 0x60, 0x6A, 0x4C, 0x23, 0x68, 0x6A, 0x4E, 0x33, 0x40, 0x23, 0x60, 0x6A, 0x4D, 0x2B, 0x68, 0x6A, 0x4F, -0x3B, 0x40, 0x2B, 0x60, 0x83, 0xF7, 0xEE, 0xFA, 0x23, 0x68, 0x68, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x2B, 0x68, 0x33, 0x40, -0x2B, 0x60, 0x23, 0x68, 0x1F, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x3B, 0x43, 0x23, 0x60, 0x23, 0x68, 0x1E, 0x40, 0x80, 0x23, -0x9B, 0x00, 0x33, 0x43, 0x23, 0x60, 0x60, 0x4B, 0x99, 0x46, 0xFF, 0x23, 0x9B, 0x46, 0x22, 0x00, 0xC0, 0x3B, 0x98, 0x46, -0x5D, 0x4B, 0x9C, 0x46, 0x40, 0x25, 0x80, 0x21, 0x09, 0x01, 0x5F, 0x46, 0x5E, 0x46, 0x04, 0x36, 0xF3, 0xB2, 0x9B, 0x46, -0x4C, 0x46, 0x18, 0x00, 0x13, 0x68, 0x46, 0x46, 0xB3, 0x43, 0x03, 0x43, 0x13, 0x60, 0x63, 0x46, 0x26, 0x68, 0x1E, 0x60, -0x13, 0x68, 0xAB, 0x43, 0x2B, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, -0xFC, 0xD0, 0x01, 0x38, 0xC0, 0xB2, 0x04, 0x34, 0xB8, 0x42, 0xE7, 0xD1, 0x10, 0x23, 0x9A, 0x46, 0xD1, 0x44, 0x5B, 0x46, -0x0F, 0x2B, 0xDA, 0xD1, 0x42, 0x4C, 0x23, 0x68, 0x44, 0x4D, 0x2B, 0x40, 0x23, 0x60, 0x83, 0xF7, 0xAA, 0xFA, 0x23, 0x68, -0x3F, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x3F, 0x4B, 0x1A, 0x68, 0x80, 0x21, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x15, 0x40, -0x80, 0x22, 0x52, 0x00, 0x2A, 0x43, 0x1A, 0x60, 0x3E, 0x4B, 0x9A, 0x46, 0xFF, 0x24, 0x38, 0x4A, 0x1F, 0x23, 0x99, 0x46, -0x3C, 0x4B, 0x98, 0x46, 0x20, 0x26, 0x80, 0x21, 0xC9, 0x00, 0x04, 0xE0, 0x08, 0x23, 0x9C, 0x46, 0xE2, 0x44, 0x1F, 0x2C, -0x1D, 0xD0, 0xA4, 0x46, 0x02, 0x34, 0xE4, 0xB2, 0x55, 0x46, 0x20, 0x00, 0x13, 0x68, 0x4F, 0x46, 0xBB, 0x43, 0x03, 0x43, -0x13, 0x60, 0x43, 0x46, 0x2F, 0x68, 0x1F, 0x60, 0x13, 0x68, 0xB3, 0x43, 0x33, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, -0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, 0x01, 0x38, 0xC0, 0xB2, 0x04, 0x35, 0x60, 0x45, 0xE7, 0xD1, -0xDC, 0xE7, 0x22, 0x4C, 0x23, 0x68, 0x80, 0x22, 0x93, 0x43, 0x23, 0x60, 0x83, 0xF7, 0x65, 0xFA, 0x23, 0x68, 0x1F, 0x4D, -0x2B, 0x40, 0x23, 0x60, 0x23, 0x49, 0x0B, 0x68, 0x23, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x02, 0x13, 0x43, 0x0B, 0x60, -0x83, 0xF7, 0x50, 0xFA, 0x15, 0x49, 0x0B, 0x68, 0x18, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0xDB, 0x00, 0x13, 0x43, 0x0B, 0x60, -0x0B, 0x68, 0x12, 0x48, 0x03, 0x40, 0x80, 0x22, 0x92, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x23, 0x68, 0x03, 0x40, 0x1A, 0x43, -0x22, 0x60, 0x23, 0x68, 0x1D, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x2B, 0x43, 0x23, 0x60, 0x14, 0x49, 0x0B, 0x68, 0x14, 0x4A, -0x1A, 0x40, 0x80, 0x23, 0x5B, 0x03, 0x13, 0x43, 0x0B, 0x60, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, -0xF8, 0xBD, 0xC0, 0x46, 0x18, 0x00, 0x58, 0x40, 0x40, 0x42, 0x04, 0x40, 0x58, 0x20, 0x62, 0x40, 0xFF, 0xFD, 0xFF, 0xFF, -0x64, 0x20, 0x62, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xD8, 0x97, 0x16, 0x00, 0x5C, 0x20, 0x62, 0x40, -0xD8, 0x98, 0x16, 0x00, 0x68, 0x20, 0x62, 0x40, 0x4C, 0x20, 0x62, 0x40, 0xFF, 0xFF, 0xFE, 0xFF, 0x30, 0x20, 0x62, 0x40, -0xFF, 0xFF, 0xEF, 0xFF, 0xF8, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x6E, 0x4C, 0x23, 0x68, -0x6E, 0x4E, 0x33, 0x40, 0x23, 0x60, 0x6E, 0x4D, 0x2B, 0x68, 0x6E, 0x4A, 0x13, 0x40, 0x2B, 0x60, 0x83, 0xF7, 0xF8, 0xF9, -0x23, 0x68, 0x6C, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x2B, 0x68, 0x6B, 0x4A, 0x13, 0x40, 0x2B, 0x60, 0x23, 0x68, 0x6A, 0x4A, -0x1A, 0x40, 0x80, 0x23, 0xDB, 0x00, 0x13, 0x43, 0x23, 0x60, 0x23, 0x68, 0x1E, 0x40, 0x80, 0x23, 0x1B, 0x01, 0x33, 0x43, -0x23, 0x60, 0x65, 0x4B, 0x9A, 0x46, 0x7F, 0x25, 0x22, 0x00, 0xFF, 0x23, 0x99, 0x46, 0x63, 0x4B, 0x98, 0x46, 0x5D, 0x4B, -0x9C, 0x46, 0x80, 0x21, 0x89, 0x01, 0x2E, 0x00, 0x04, 0x35, 0xED, 0xB2, 0x54, 0x46, 0x28, 0x00, 0x13, 0x68, 0x4F, 0x46, -0xBB, 0x43, 0x03, 0x43, 0x13, 0x60, 0x43, 0x46, 0x27, 0x68, 0x1F, 0x60, 0x13, 0x68, 0x67, 0x46, 0x3B, 0x40, 0x80, 0x27, -0x7F, 0x00, 0x3B, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, -0x01, 0x38, 0xC0, 0xB2, 0x04, 0x34, 0x86, 0x42, 0xE4, 0xD1, 0x10, 0x23, 0x9B, 0x46, 0xDA, 0x44, 0x8F, 0x2D, 0xDA, 0xD1, -0x45, 0x4C, 0x23, 0x68, 0x4A, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x83, 0xF7, 0xB2, 0xF9, 0x23, 0x68, 0x42, 0x4A, 0x13, 0x40, -0x23, 0x60, 0x42, 0x4B, 0x1A, 0x68, 0x80, 0x21, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x40, 0x49, 0x11, 0x40, 0x80, 0x22, -0x52, 0x00, 0x0A, 0x43, 0x1A, 0x60, 0x10, 0x20, 0x1A, 0x00, 0x1F, 0x27, 0x41, 0x4E, 0x42, 0x4D, 0x20, 0x24, 0x80, 0x21, -0xC9, 0x00, 0x13, 0x68, 0xBB, 0x43, 0x03, 0x43, 0x13, 0x60, 0x83, 0x00, 0xF3, 0x58, 0x2B, 0x60, 0x13, 0x68, 0xA3, 0x43, -0x23, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, 0x01, 0x30, -0x20, 0x28, 0xEA, 0xD1, 0x2D, 0x4C, 0x23, 0x68, 0x80, 0x22, 0x93, 0x43, 0x23, 0x60, 0x83, 0xF7, 0x7E, 0xF9, 0x23, 0x68, -0x2A, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x31, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x30, 0x4A, 0x13, 0x68, 0x02, 0x21, -0x8B, 0x43, 0x13, 0x60, 0x2C, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x2D, 0x4A, 0x13, 0x68, 0x2D, 0x49, 0x0B, 0x40, 0x13, 0x60, -0x2C, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x83, 0xF7, 0x5D, 0xF9, 0x1B, 0x49, 0x0B, 0x68, 0x1E, 0x4A, 0x13, 0x40, 0x80, 0x22, -0x52, 0x01, 0x13, 0x43, 0x0B, 0x60, 0x0B, 0x68, 0x17, 0x48, 0x18, 0x40, 0x80, 0x23, 0x1B, 0x01, 0x03, 0x43, 0x0B, 0x60, -0x15, 0x4B, 0x19, 0x68, 0x17, 0x48, 0x08, 0x40, 0x80, 0x21, 0x89, 0x00, 0x01, 0x43, 0x19, 0x60, 0x19, 0x68, 0x12, 0x48, -0x08, 0x40, 0x80, 0x21, 0x49, 0x00, 0x01, 0x43, 0x19, 0x60, 0x1C, 0x4B, 0x19, 0x68, 0x0A, 0x43, 0x1A, 0x60, 0x1B, 0x4A, -0x13, 0x68, 0x1B, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x1A, 0x4B, 0x1A, 0x68, 0x1A, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x19, 0x68, -0x80, 0x22, 0xD2, 0x05, 0x0A, 0x43, 0x1A, 0x60, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF8, 0xBD, -0x60, 0x40, 0x34, 0x40, 0xFF, 0xF7, 0xFF, 0xFF, 0x6C, 0x40, 0x34, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, -0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xD8, 0x9B, 0x16, 0x00, 0x64, 0x40, 0x34, 0x40, 0x58, 0x99, 0x16, 0x00, -0x70, 0x40, 0x34, 0x40, 0x40, 0x42, 0x04, 0x40, 0x18, 0x00, 0x58, 0x40, 0x58, 0x40, 0x34, 0x40, 0xFF, 0xFF, 0xFF, 0xFB, -0x08, 0x40, 0x34, 0x40, 0x14, 0x20, 0x34, 0x40, 0x18, 0x20, 0x34, 0x40, 0xFF, 0xFF, 0xFB, 0xFF, 0x1C, 0x20, 0x34, 0x40, -0xFF, 0xFF, 0xFF, 0xDF, 0x10, 0xB5, 0x07, 0x49, 0x0A, 0x69, 0x0F, 0x24, 0xA2, 0x43, 0x03, 0x20, 0x02, 0x43, 0x0A, 0x61, -0xCB, 0x69, 0xA3, 0x43, 0x03, 0x43, 0xCB, 0x61, 0x02, 0x48, 0x7E, 0xF7, 0xA1, 0xFB, 0x10, 0xBD, 0x00, 0x30, 0x50, 0x40, -0x94, 0xD1, 0x10, 0x00, 0x70, 0xB5, 0x1B, 0x4B, 0x9B, 0x69, 0xDB, 0x05, 0x1F, 0xD4, 0x0C, 0x38, 0xEF, 0xF3, 0x10, 0x83, -0x01, 0x22, 0x14, 0x00, 0x1C, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x15, 0x4B, 0x1B, 0x7F, 0x01, 0x2B, 0x1C, 0xD0, -0xCF, 0xF7, 0x62, 0xF8, 0x12, 0x4B, 0x1B, 0x7F, 0xFF, 0x2B, 0x1A, 0xD0, 0x02, 0x20, 0x7B, 0xF7, 0xCB, 0xF9, 0xFF, 0xF7, -0xCF, 0xFF, 0x0F, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0x00, 0x2C, 0x00, 0xD1, 0x62, 0xB6, 0x70, 0xBD, 0x0C, 0x4D, -0xC4, 0x24, 0x64, 0x00, 0x00, 0x23, 0x2B, 0x51, 0xCE, 0xF7, 0xCC, 0xF8, 0x09, 0x4B, 0x2B, 0x51, 0xF4, 0xE7, 0x05, 0x4B, -0xFF, 0x22, 0x1A, 0x77, 0xDE, 0xE7, 0x03, 0x4B, 0x01, 0x22, 0x1A, 0x77, 0xE0, 0xE7, 0xC0, 0x46, 0x3C, 0x95, 0x16, 0x00, -0x24, 0x2A, 0x16, 0x00, 0x00, 0x41, 0x04, 0x40, 0x28, 0x19, 0x16, 0x00, 0xB9, 0x5A, 0x10, 0x00, 0x01, 0x28, 0x02, 0xD0, -0x02, 0x28, 0x05, 0xD0, 0x70, 0x47, 0x05, 0x4B, 0x80, 0x22, 0x92, 0x04, 0x1A, 0x60, 0xF9, 0xE7, 0x02, 0x4B, 0x80, 0x22, -0x52, 0x04, 0x1A, 0x60, 0xF4, 0xE7, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, 0x15, 0x4B, 0x16, 0x4A, 0x13, 0x60, 0x16, 0x4A, -0x13, 0x60, 0x16, 0x4B, 0x1A, 0x68, 0x30, 0x21, 0x8A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x90, 0x31, 0x8A, 0x43, 0x1A, 0x60, -0x1A, 0x68, 0x12, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x11, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x10, 0x49, -0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x0F, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x0E, 0x4A, 0xC4, 0x20, 0x80, 0x00, 0x13, 0x58, -0x1B, 0x02, 0x1B, 0x0A, 0xC0, 0x21, 0x09, 0x06, 0x0B, 0x43, 0x13, 0x50, 0x80, 0x23, 0x1B, 0x03, 0x13, 0x60, 0x70, 0x47, -0x00, 0x00, 0x7C, 0x07, 0x08, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x18, 0x41, 0x04, 0x40, 0xFF, 0xFC, 0xFF, 0xFF, -0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0x00, 0xE1, 0x00, 0xE0, 0x70, 0xB5, 0x82, 0xB0, -0x04, 0x00, 0x64, 0x4B, 0x18, 0x68, 0x04, 0x28, 0x04, 0xD8, 0x49, 0xD8, 0x80, 0x00, 0x62, 0x4B, 0x1B, 0x58, 0x9F, 0x46, -0xFF, 0x28, 0x43, 0xD1, 0x60, 0x4B, 0x80, 0x22, 0xD2, 0x00, 0x1A, 0x60, 0x5F, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x5F, 0x4B, -0x1B, 0x68, 0x00, 0x2B, 0x40, 0xD1, 0x5E, 0x4B, 0x19, 0x68, 0x41, 0x29, 0x57, 0xD0, 0x43, 0xD8, 0x01, 0x29, 0x49, 0xD0, -0x21, 0x29, 0x00, 0xD0, 0x81, 0xE0, 0x5A, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x52, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x58, 0x4B, -0x1B, 0x68, 0x01, 0x2B, 0x54, 0xD1, 0x50, 0xE0, 0x54, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x4F, 0x4B, 0x80, 0x22, 0xD2, 0x00, -0x1A, 0x60, 0x4E, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x50, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x00, 0xD1, 0x7D, 0xE0, 0x47, 0x4B, -0x1B, 0x68, 0x02, 0x2B, 0x40, 0xD1, 0x00, 0x25, 0x4C, 0x4B, 0x1D, 0x70, 0x01, 0x20, 0xFB, 0xF7, 0xCB, 0xFD, 0x4B, 0x4B, -0x1D, 0x70, 0x3D, 0xE0, 0x46, 0x4B, 0x02, 0x22, 0x1A, 0x70, 0xE2, 0xE7, 0x44, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0xDE, 0xE7, -0x42, 0x4B, 0x19, 0x78, 0x45, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, 0xA8, 0x47, 0xD6, 0xE7, 0x0F, 0x20, 0xFA, 0xF7, -0x6F, 0xFD, 0xFF, 0x23, 0x03, 0x40, 0x3B, 0x4A, 0x13, 0x60, 0xB6, 0xE7, 0x61, 0x29, 0x10, 0xD0, 0xFF, 0x29, 0x3E, 0xD1, -0x3D, 0x48, 0x7E, 0xF7, 0xA1, 0xFA, 0xCD, 0xE7, 0x36, 0x4B, 0x02, 0x22, 0x1A, 0x70, 0x2F, 0x4B, 0x01, 0x3A, 0x1A, 0x60, -0x34, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x0D, 0xD1, 0x4C, 0xE0, 0x31, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x29, 0x4B, 0x01, 0x32, -0x1A, 0x60, 0x2F, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0xC1, 0xD1, 0x26, 0x4B, 0x03, 0x22, 0x1A, 0x60, 0x2D, 0x4B, 0x01, 0x22, -0x1A, 0x70, 0x00, 0x20, 0xFB, 0xF7, 0x8A, 0xFD, 0x2D, 0x4B, 0x03, 0x22, 0x1A, 0x70, 0xFF, 0xF7, 0x35, 0xFF, 0x2C, 0x4B, -0x1B, 0x68, 0x24, 0x4A, 0x12, 0x78, 0x1D, 0x49, 0x09, 0x68, 0x2A, 0x48, 0x00, 0x68, 0x01, 0x90, 0x1E, 0x48, 0x00, 0x68, -0x00, 0x90, 0x28, 0x48, 0x7E, 0xF7, 0x6E, 0xFA, 0x00, 0x2C, 0x27, 0xD0, 0x26, 0x4A, 0x13, 0x68, 0x20, 0x21, 0x0B, 0x43, -0x13, 0x60, 0x02, 0xB0, 0x70, 0xBD, 0x24, 0x48, 0x7E, 0xF7, 0x62, 0xFA, 0x17, 0x4E, 0x31, 0x78, 0x10, 0x4D, 0x00, 0x23, -0x00, 0x22, 0x28, 0x68, 0x81, 0xF7, 0xFE, 0xFF, 0x02, 0x23, 0x33, 0x70, 0x01, 0x3B, 0x2B, 0x60, 0x12, 0x4B, 0x1B, 0x68, -0x01, 0x2B, 0xC9, 0xD1, 0x0F, 0x4B, 0x1B, 0x78, 0x03, 0xE0, 0x0E, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0xBF, 0xD0, 0x02, 0x2B, -0x00, 0xD0, 0x7A, 0xE7, 0x04, 0x4B, 0x04, 0x22, 0x1A, 0x60, 0xBB, 0xE7, 0x12, 0x4A, 0x13, 0x68, 0x20, 0x21, 0x8B, 0x43, -0x13, 0x60, 0xD6, 0xE7, 0x50, 0xE0, 0x10, 0x00, 0xE0, 0xD1, 0x10, 0x00, 0xE4, 0xE1, 0x10, 0x00, 0xB2, 0xE6, 0x10, 0x00, -0xA4, 0xE5, 0x10, 0x00, 0xC0, 0xE5, 0x10, 0x00, 0xB4, 0xE5, 0x10, 0x00, 0x54, 0xE0, 0x10, 0x00, 0x60, 0xE6, 0x10, 0x00, -0xDC, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x9C, 0xD1, 0x10, 0x00, 0xD1, 0xE6, 0x10, 0x00, 0xA8, 0xE5, 0x10, 0x00, -0xBC, 0xE5, 0x10, 0x00, 0xC8, 0xD1, 0x10, 0x00, 0x84, 0x40, 0x04, 0x40, 0xB0, 0xD1, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, -0x00, 0xB5, 0x38, 0x4B, 0x38, 0x4A, 0x1A, 0x60, 0x38, 0x4B, 0x39, 0x4A, 0x1A, 0x60, 0x40, 0x23, 0x38, 0x4A, 0x13, 0x60, -0x28, 0x22, 0x38, 0x49, 0x0A, 0x80, 0xC8, 0x21, 0x49, 0x00, 0x37, 0x48, 0x01, 0x80, 0x37, 0x48, 0x01, 0x80, 0x03, 0x20, -0x36, 0x49, 0x08, 0x80, 0x02, 0x21, 0x36, 0x4C, 0x21, 0x80, 0x36, 0x4C, 0x20, 0x80, 0x36, 0x48, 0x01, 0x80, 0x36, 0x49, -0x0A, 0x80, 0x80, 0x25, 0xAD, 0x00, 0x35, 0x49, 0x0D, 0x80, 0x14, 0x21, 0x34, 0x48, 0x01, 0x80, 0x34, 0x48, 0x15, 0x24, -0x04, 0x80, 0x34, 0x48, 0x01, 0x80, 0x20, 0x26, 0x33, 0x49, 0x0E, 0x60, 0x0D, 0x3C, 0x33, 0x49, 0x0C, 0x60, 0x33, 0x49, -0x01, 0x20, 0x40, 0x42, 0x08, 0x60, 0x00, 0x20, 0x31, 0x49, 0x08, 0x60, 0x31, 0x49, 0x88, 0x46, 0x31, 0x4F, 0x39, 0x60, -0x31, 0x4F, 0x14, 0x21, 0xFF, 0x31, 0x39, 0x60, 0x30, 0x4F, 0x31, 0x49, 0x39, 0x60, 0x31, 0x4F, 0x07, 0x21, 0x39, 0x80, -0x30, 0x4F, 0x3B, 0x80, 0x30, 0x4F, 0x41, 0x31, 0x39, 0x80, 0x30, 0x4F, 0x01, 0x39, 0x39, 0x80, 0x2F, 0x4F, 0x3E, 0x80, -0x2F, 0x4E, 0x35, 0x80, 0x2F, 0x4D, 0xD2, 0x26, 0x76, 0x00, 0x2E, 0x80, 0x64, 0x25, 0x2E, 0x4E, 0x35, 0x80, 0x2E, 0x4E, -0x35, 0x80, 0x2E, 0x4D, 0x2C, 0x80, 0x2E, 0x4C, 0x18, 0x25, 0x25, 0x80, 0x2D, 0x4C, 0x22, 0x80, 0x2D, 0x4A, 0x8C, 0x24, -0x14, 0x80, 0x2D, 0x4A, 0x10, 0x80, 0x2D, 0x4A, 0x13, 0x60, 0x2D, 0x4B, 0x42, 0x46, 0x1A, 0x60, 0x2C, 0x4B, 0x32, 0x22, -0x1A, 0x80, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xA0, 0x06, 0x16, 0x00, 0x00, 0xD7, 0x18, 0x00, 0x9C, 0x06, 0x16, 0x00, -0x00, 0xF7, 0x18, 0x00, 0x78, 0x06, 0x16, 0x00, 0x5C, 0x06, 0x16, 0x00, 0x8E, 0x06, 0x16, 0x00, 0x8C, 0x06, 0x16, 0x00, -0x5A, 0x06, 0x16, 0x00, 0x4A, 0x06, 0x16, 0x00, 0x56, 0x06, 0x16, 0x00, 0x54, 0x06, 0x16, 0x00, 0x5E, 0x06, 0x16, 0x00, -0x58, 0x06, 0x16, 0x00, 0x64, 0x06, 0x16, 0x00, 0x66, 0x06, 0x16, 0x00, 0x62, 0x06, 0x16, 0x00, 0x68, 0x06, 0x16, 0x00, -0x6C, 0x06, 0x16, 0x00, 0x44, 0x1E, 0x16, 0x00, 0x40, 0x1E, 0x16, 0x00, 0x20, 0x4E, 0x00, 0x00, 0x7C, 0x06, 0x16, 0x00, -0x38, 0x1E, 0x16, 0x00, 0x3C, 0x1E, 0x16, 0x00, 0x02, 0x73, 0x06, 0x20, 0x4C, 0x06, 0x16, 0x00, 0x4E, 0x06, 0x16, 0x00, -0x50, 0x06, 0x16, 0x00, 0x52, 0x06, 0x16, 0x00, 0x90, 0x06, 0x16, 0x00, 0x94, 0x06, 0x16, 0x00, 0x92, 0x06, 0x16, 0x00, -0x8A, 0x06, 0x16, 0x00, 0x88, 0x06, 0x16, 0x00, 0x82, 0x06, 0x16, 0x00, 0x80, 0x06, 0x16, 0x00, 0x86, 0x06, 0x16, 0x00, -0x84, 0x06, 0x16, 0x00, 0x48, 0x1E, 0x16, 0x00, 0x70, 0x06, 0x16, 0x00, 0x74, 0x06, 0x16, 0x00, 0x60, 0x06, 0x16, 0x00, -0x0F, 0x4B, 0x02, 0x22, 0x9A, 0x77, 0x0F, 0x4A, 0x11, 0x6D, 0x80, 0x23, 0xDB, 0x01, 0x0B, 0x43, 0x13, 0x65, 0x0D, 0x4B, -0x1B, 0x78, 0x02, 0x2B, 0x0B, 0xD0, 0x0A, 0x4B, 0x19, 0x6D, 0x80, 0x22, 0x12, 0x02, 0x0A, 0x43, 0x1A, 0x65, 0x19, 0x6D, -0x80, 0x22, 0x92, 0x02, 0x0A, 0x43, 0x1A, 0x65, 0x70, 0x47, 0x11, 0x6D, 0x80, 0x23, 0xDB, 0x02, 0x0B, 0x43, 0x13, 0x65, -0xED, 0xE7, 0xC0, 0x46, 0x3C, 0x95, 0x16, 0x00, 0x00, 0x60, 0x50, 0x40, 0xB4, 0xE5, 0x10, 0x00, 0x01, 0x4B, 0x01, 0x22, -0xDA, 0x77, 0x70, 0x47, 0x3C, 0x95, 0x16, 0x00, 0x10, 0xB5, 0x01, 0x20, 0x7F, 0xF7, 0x48, 0xF9, 0x10, 0xBD, 0x10, 0xB5, -0x80, 0x20, 0x40, 0x00, 0x7B, 0xF7, 0x3A, 0xFC, 0x10, 0xBD, 0x00, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x20, 0x4B, 0x1B, 0x68, -0x01, 0x2B, 0x03, 0xD0, 0x1F, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x22, 0xD1, 0x00, 0x2C, 0x2C, 0xD0, 0x1D, 0x4A, 0x13, 0x68, -0x08, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x00, 0x23, 0x1B, 0x4A, 0x13, 0x60, 0x1B, 0x4A, 0x13, 0x60, 0x1B, 0x4A, 0x13, 0x60, -0x1B, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x22, 0xD9, 0x1A, 0x4A, 0x0F, 0x21, 0x11, 0x70, 0x03, 0x3B, 0x01, 0x2B, 0x05, 0xD8, -0x18, 0x4A, 0x80, 0x23, 0x1B, 0x02, 0x91, 0x69, 0x0B, 0x43, 0x93, 0x61, 0x16, 0x49, 0x17, 0x48, 0x7E, 0xF7, 0xEC, 0xF8, -0x10, 0xBD, 0xFF, 0xF7, 0xCF, 0xFE, 0xFF, 0xF7, 0x97, 0xFF, 0x11, 0x4B, 0x01, 0x22, 0xDA, 0x77, 0xFF, 0xF7, 0xBE, 0xFF, -0xFF, 0xF7, 0xC1, 0xFF, 0xD0, 0xE7, 0x07, 0x4A, 0x13, 0x68, 0x08, 0x21, 0x8B, 0x43, 0x13, 0x60, 0xD1, 0xE7, 0x09, 0x4B, -0x0B, 0x22, 0x1A, 0x70, 0xE4, 0xE7, 0xC0, 0x46, 0xA8, 0xE5, 0x10, 0x00, 0xAC, 0xE5, 0x10, 0x00, 0x84, 0x40, 0x04, 0x40, -0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0x54, 0xE6, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, 0xE2, 0xE1, 0x10, 0x00, -0x3C, 0x95, 0x16, 0x00, 0xF8, 0xE8, 0x10, 0x00, 0xF4, 0xD1, 0x10, 0x00, 0x02, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, -0x70, 0x47, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x80, 0x22, 0x12, 0x05, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, -0x00, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x80, 0x22, 0xD2, 0x05, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, -0x04, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x03, 0xD0, 0x03, 0x4B, 0x80, 0x22, 0x52, 0x05, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, -0xD0, 0xE6, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0x10, 0xB5, 0x04, 0x00, 0x13, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x07, 0xD0, -0x11, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x16, 0xD9, 0x20, 0x00, 0x10, 0x4B, 0x98, 0x47, 0x10, 0xBD, 0xAD, 0x33, 0xC3, 0x5C, -0x00, 0x2B, 0xF7, 0xD0, 0x0D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x01, 0x20, 0xFD, 0xF7, 0x54, 0xF8, -0xEA, 0xE7, 0xFF, 0xF7, 0xD5, 0xFF, 0x08, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0xAE, 0xF7, 0x09, 0xFD, 0x00, 0x28, -0xE4, 0xD1, 0xA7, 0x23, 0x04, 0x22, 0xE2, 0x54, 0xE0, 0xE7, 0xC0, 0x46, 0x50, 0xE0, 0x10, 0x00, 0xD5, 0x0D, 0x0B, 0x00, -0xD8, 0xE6, 0x10, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x0B, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x03, 0xD0, 0x20, 0x00, 0xFE, 0xF7, -0x11, 0xF9, 0x10, 0xBD, 0x08, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x01, 0x20, 0xFD, 0xF7, 0x2C, 0xF8, -0xF2, 0xE7, 0xFF, 0xF7, 0xAD, 0xFF, 0x03, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0xC0, 0x46, 0x50, 0xE0, 0x10, 0x00, -0xD8, 0xE6, 0x10, 0x00, 0x04, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x03, 0xD0, 0x03, 0x4B, 0x80, 0x22, 0x92, 0x05, 0x1A, 0x60, -0x70, 0x47, 0xC0, 0x46, 0xD2, 0xE6, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, -0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x80, 0x46, 0x00, 0x91, 0x82, 0x00, 0x93, 0x4B, 0xD5, 0x58, 0x9E, 0x23, 0xEC, 0x5C, -0x64, 0x00, 0x0F, 0x33, 0xEB, 0x5C, 0xE4, 0x18, 0xE4, 0xB2, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0xAF, 0xE0, -0xA8, 0x23, 0xEB, 0x5C, 0x77, 0x2B, 0x02, 0xD8, 0x01, 0x33, 0xA8, 0x22, 0xAB, 0x54, 0x43, 0x46, 0x1B, 0x02, 0x01, 0x27, -0x3B, 0x43, 0x9B, 0x46, 0x87, 0x4B, 0x99, 0x46, 0x47, 0xE0, 0xC5, 0x20, 0x02, 0x23, 0xFF, 0x22, 0x59, 0x46, 0xC0, 0x00, -0x7B, 0xF7, 0x0A, 0xFF, 0x06, 0x00, 0x3B, 0x88, 0x03, 0x80, 0x7B, 0xF7, 0x2F, 0xFF, 0x30, 0x88, 0x43, 0x1C, 0x9B, 0xB2, -0x7F, 0x49, 0x5A, 0x5C, 0x41, 0x5C, 0x49, 0x10, 0x7E, 0x48, 0x7D, 0xF7, 0xFF, 0xFF, 0x00, 0x23, 0x3B, 0x80, 0x7D, 0x4B, -0xE2, 0x18, 0x13, 0x88, 0x78, 0x21, 0x8B, 0x43, 0x13, 0x80, 0x7B, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x23, 0x88, 0x7A, 0x4A, -0x13, 0x40, 0x23, 0x80, 0xAF, 0x22, 0xAB, 0x5C, 0x01, 0x3B, 0xDB, 0xB2, 0xAB, 0x54, 0x35, 0x31, 0x6A, 0x5C, 0x50, 0x42, -0x42, 0x41, 0x6A, 0x54, 0x5A, 0x1E, 0x93, 0x41, 0xA8, 0x22, 0xAB, 0x54, 0x8C, 0x23, 0xEB, 0x58, 0x00, 0x2B, 0x05, 0xD0, -0x6A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x9E, 0x23, 0xEC, 0x5C, 0x64, 0x00, 0x0F, 0x33, -0xEB, 0x5C, 0xE4, 0x18, 0xE4, 0xB2, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x58, 0xD0, 0xA3, 0x00, 0x1C, 0x19, 0x64, 0x00, -0x66, 0x4B, 0xE3, 0x18, 0x1B, 0x88, 0xDB, 0x0B, 0x50, 0xD0, 0x65, 0x4B, 0xE7, 0x18, 0x3B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, -0xA9, 0xD1, 0x63, 0x4B, 0xE7, 0x18, 0x3B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x38, 0xD0, 0xEC, 0x23, 0xEB, 0x58, 0x00, 0x2B, -0xB7, 0xD1, 0x5A, 0x4B, 0xE3, 0x18, 0x1B, 0x88, 0xDB, 0x04, 0x9B, 0x0D, 0x0A, 0xD0, 0x3A, 0x88, 0x90, 0x21, 0x69, 0x58, -0xD3, 0x18, 0x4A, 0x89, 0x92, 0x05, 0x92, 0x0D, 0x09, 0x89, 0x52, 0x18, 0x93, 0x42, 0x0D, 0xDA, 0x8C, 0x23, 0xEB, 0x58, -0x00, 0x2B, 0x06, 0xD0, 0x4B, 0x4B, 0x9B, 0x6E, 0x01, 0x93, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, -0x3B, 0x80, 0x98, 0xE7, 0x01, 0x23, 0xFF, 0x22, 0x59, 0x46, 0x4E, 0x48, 0x7B, 0xF7, 0x8C, 0xFE, 0x00, 0x23, 0x9A, 0x46, -0x03, 0x70, 0x7B, 0xF7, 0xB1, 0xFE, 0x90, 0x26, 0xAB, 0x59, 0x18, 0x89, 0x85, 0xF7, 0xA2, 0xFF, 0x8C, 0x23, 0xEA, 0x58, -0xAA, 0x51, 0x52, 0x46, 0xEA, 0x50, 0xE6, 0xE7, 0xEC, 0x23, 0xEB, 0x58, 0x00, 0x2B, 0x00, 0xD0, 0x7D, 0xE7, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x4B, 0x46, 0x9B, 0x6E, 0x98, 0x47, 0x76, 0xE7, 0x00, 0x99, 0x40, 0x46, 0xFD, 0xF7, 0x0C, 0xF8, -0x3D, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x0A, 0xD0, 0xFC, 0xF7, 0x6E, 0xF9, 0x01, 0x28, 0x28, 0xD0, 0x03, 0xB0, 0x3C, 0xBC, -0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xAD, 0x33, 0xEB, 0x5C, 0x00, 0x2B, 0x0E, 0xD1, 0x35, 0x4B, -0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x02, 0x20, 0xFC, 0xF7, 0x2B, 0xFF, 0xE7, 0xE7, 0xFF, 0xF7, 0x08, 0xFF, -0x2F, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0x2D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x01, 0x20, -0xFC, 0xF7, 0x1C, 0xFF, 0xD8, 0xE7, 0xFF, 0xF7, 0x9D, 0xFE, 0x28, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0xFB, 0xF7, -0x0F, 0xFA, 0x00, 0x28, 0xD2, 0xD0, 0xAE, 0xF7, 0xCD, 0xFB, 0x00, 0x28, 0xCE, 0xD1, 0x8A, 0xF7, 0x5D, 0xFA, 0x00, 0x28, -0xCA, 0xD1, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0xC6, 0xD1, 0xA7, 0x33, 0xEB, 0x5C, 0x01, 0x2B, 0xC2, 0xD8, 0xD0, 0xF7, -0xD9, 0xFA, 0x04, 0x1E, 0xBE, 0xD0, 0x1B, 0x4B, 0xC2, 0x69, 0x9A, 0x42, 0xBA, 0xD1, 0xA5, 0xF7, 0x4D, 0xFA, 0x63, 0x68, -0x05, 0x3B, 0x1B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0xAA, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0xAF, 0xD0, 0x0B, 0x2B, 0xAD, 0xD9, -0x13, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x9E, 0x23, 0xE8, 0x5C, 0xD1, 0xF7, 0x35, 0xFA, 0xAA, 0x23, 0x00, 0x22, 0xEA, 0x54, -0xA2, 0xE7, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, 0xFC, 0xD1, 0x10, 0x00, -0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, 0x07, 0xE0, 0xFF, 0xFF, 0xC8, 0x69, 0x61, 0x40, 0xD0, 0x69, 0x61, 0x40, -0xCE, 0x69, 0x61, 0x40, 0x2B, 0x06, 0x00, 0x00, 0x50, 0xE0, 0x10, 0x00, 0xD8, 0xE6, 0x10, 0x00, 0xC9, 0x1F, 0x10, 0x00, -0x98, 0xE5, 0x10, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x81, 0x46, -0x82, 0x00, 0xBA, 0x4B, 0xD4, 0x58, 0x01, 0x94, 0xB0, 0x23, 0x15, 0x22, 0xE2, 0x54, 0x2A, 0x3B, 0xFA, 0x22, 0x52, 0x01, -0xE2, 0x52, 0xB6, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x15, 0xD0, 0xB4, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x26, 0xD9, 0xB3, 0x4B, -0x00, 0x22, 0x1A, 0x70, 0xA1, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0x2C, 0xD0, 0x86, 0x23, 0xE3, 0x5A, 0x00, 0x2B, 0x6B, 0xD0, -0x5B, 0x00, 0x22, 0x6F, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1F, 0x09, 0x29, 0xE0, 0xAB, 0x4B, 0xE3, 0x61, 0xAF, 0x23, -0xE3, 0x5C, 0x00, 0x2B, 0x03, 0xD1, 0xA9, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD0, 0x01, 0x21, 0x02, 0x20, 0xFC, 0xF7, -0x87, 0xFE, 0xDA, 0xE7, 0xFF, 0xF7, 0x64, 0xFE, 0xA3, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0xA0, 0x4B, 0xE3, 0x61, -0x9E, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xD2, 0xD0, 0x9F, 0x4B, 0x18, 0x68, 0x00, 0x28, 0xCE, 0xD0, 0xFB, 0xF7, 0x86, 0xFE, -0xCB, 0xE7, 0xE4, 0x33, 0xE3, 0x58, 0x19, 0x68, 0xA3, 0x6F, 0xC9, 0x1A, 0x14, 0x39, 0x09, 0x01, 0x0F, 0x09, 0xA6, 0x23, -0xE3, 0x5C, 0xDB, 0x02, 0xE0, 0x22, 0x92, 0x01, 0x1A, 0x40, 0x96, 0x4B, 0x59, 0x78, 0x0F, 0x23, 0x0B, 0x40, 0x13, 0x43, -0x94, 0x4A, 0x13, 0x43, 0xA3, 0x82, 0xE7, 0x60, 0xFB, 0xF7, 0x56, 0xF9, 0x02, 0x90, 0xFD, 0xF7, 0x2B, 0xF9, 0x03, 0x90, -0xAE, 0xF7, 0x12, 0xFB, 0x06, 0x00, 0xA1, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0x00, 0xD1, 0x38, 0xE2, 0x00, 0x25, 0x00, 0x28, -0x2B, 0xD0, 0x8B, 0x4B, 0xA2, 0x6F, 0x1A, 0x60, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x5C, 0xE1, 0x88, 0x4A, -0xD2, 0x88, 0x22, 0x61, 0x01, 0x2B, 0x00, 0xD0, 0xDA, 0xE1, 0xA7, 0x33, 0xE3, 0x5C, 0xA7, 0x21, 0x61, 0x5C, 0x5B, 0x18, -0x1B, 0x11, 0x83, 0x49, 0x4B, 0x43, 0x93, 0x42, 0x00, 0xD2, 0x13, 0x00, 0x23, 0x61, 0xCD, 0xE1, 0xA6, 0x23, 0xE3, 0x5C, -0xDB, 0x02, 0xE0, 0x22, 0x92, 0x01, 0x1A, 0x40, 0x78, 0x4B, 0x59, 0x78, 0x0F, 0x23, 0x0B, 0x40, 0x13, 0x43, 0x7B, 0x4A, -0x13, 0x43, 0xA3, 0x82, 0x01, 0x27, 0x7F, 0x42, 0xC2, 0xE7, 0xA5, 0xF7, 0x73, 0xF9, 0x60, 0x60, 0x03, 0x9B, 0x00, 0x2B, -0x52, 0xD0, 0x76, 0x4B, 0x23, 0x61, 0x11, 0x23, 0xA3, 0x75, 0x8E, 0x33, 0xE3, 0x5C, 0x01, 0x2B, 0x47, 0xD0, 0x00, 0x25, -0x48, 0x23, 0x9B, 0x46, 0xAF, 0x23, 0xE3, 0x5C, 0x98, 0x46, 0x20, 0x00, 0x48, 0x30, 0x7E, 0xF7, 0x83, 0xFA, 0x6E, 0x4A, -0x12, 0x68, 0x92, 0x68, 0x00, 0x2A, 0x00, 0xD0, 0xE0, 0xE0, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x01, 0xD1, 0x6A, 0x4B, -0x23, 0x61, 0x40, 0x44, 0xC3, 0xB2, 0xA7, 0x22, 0xA2, 0x5C, 0x11, 0x00, 0x19, 0x43, 0x06, 0xD0, 0xD3, 0x18, 0x65, 0x4A, -0x53, 0x43, 0x22, 0x69, 0x94, 0x46, 0x63, 0x44, 0x23, 0x61, 0x23, 0x69, 0x62, 0x4A, 0x93, 0x42, 0x00, 0xD9, 0x13, 0x00, -0x23, 0x61, 0x5A, 0x46, 0x21, 0x69, 0x20, 0x00, 0xFB, 0xF7, 0x16, 0xF8, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x04, 0xD1, -0x63, 0x68, 0x03, 0x33, 0x03, 0x22, 0x93, 0x43, 0x63, 0x60, 0xA7, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x50, 0x4B, 0xA2, 0x6F, -0x1A, 0x60, 0x20, 0x00, 0xCF, 0xF7, 0xB6, 0xFF, 0x00, 0x28, 0x00, 0xD0, 0xAE, 0xE1, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, -0x49, 0xE1, 0x37, 0x33, 0x9B, 0x46, 0xB7, 0xE7, 0x02, 0x9B, 0x00, 0x2B, 0x6B, 0xD0, 0x00, 0x23, 0x00, 0x25, 0x3E, 0x4A, -0x90, 0x46, 0xA1, 0x22, 0x94, 0x46, 0x02, 0xE0, 0x01, 0x33, 0x07, 0x2B, 0x0B, 0xD0, 0x9A, 0x00, 0x41, 0x46, 0x52, 0x58, -0x00, 0x2A, 0xF7, 0xD0, 0x61, 0x46, 0x52, 0x5C, 0x00, 0x2A, 0xF3, 0xD1, 0x01, 0x35, 0xED, 0xB2, 0xF0, 0xE7, 0x01, 0x2D, -0x08, 0xD9, 0xA0, 0x33, 0x00, 0x22, 0xE2, 0x54, 0x41, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x28, 0x23, 0x9B, 0x46, 0x93, 0xE7, -0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x23, 0xD1, 0xA7, 0x33, 0x00, 0x22, 0xE2, 0x54, 0x01, 0x33, 0xE2, 0x5C, 0x53, 0x42, -0x5A, 0x41, 0x53, 0x42, 0x08, 0x22, 0x1A, 0x40, 0x68, 0x32, 0x38, 0x4B, 0x1B, 0x68, 0x98, 0x46, 0xC3, 0x1A, 0x1B, 0x01, -0x1B, 0x09, 0x80, 0x21, 0x09, 0x05, 0x8B, 0x42, 0x04, 0xD9, 0x43, 0x46, 0x1B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, -0x00, 0x21, 0x8B, 0x46, 0x9A, 0x42, 0x01, 0xD3, 0xD3, 0x1A, 0x9B, 0x46, 0x2C, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x6B, 0xE7, -0x01, 0x2B, 0x00, 0xD0, 0x65, 0xE1, 0xA7, 0x33, 0xE2, 0x5C, 0x53, 0x42, 0x5A, 0x41, 0x53, 0x42, 0x0C, 0x22, 0x1A, 0x40, -0x44, 0x32, 0xE3, 0x6E, 0x98, 0x46, 0xC3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x21, 0x09, 0x05, 0x8B, 0x42, 0x04, 0xD9, -0x43, 0x46, 0x1B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, 0x00, 0x21, 0x8B, 0x46, 0x9A, 0x42, 0x01, 0xD3, 0xD3, 0x1A, -0x9B, 0x46, 0x1B, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x48, 0xE7, 0x0A, 0x4B, 0x1B, 0x68, 0x00, 0x25, 0x01, 0x2B, 0x00, 0xD9, -0x05, 0xE7, 0x13, 0x4B, 0x1B, 0x68, 0x9B, 0x68, 0x00, 0x2B, 0x00, 0xD1, 0x37, 0xE1, 0x13, 0x4B, 0x1B, 0x68, 0x23, 0x61, -0x00, 0x23, 0x9B, 0x46, 0x36, 0xE7, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, 0x50, 0xE0, 0x10, 0x00, 0x98, 0xE5, 0x10, 0x00, -0xC1, 0x60, 0x10, 0x00, 0xD8, 0xE6, 0x10, 0x00, 0xF8, 0xE6, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x40, 0x80, 0xFF, 0xFF, -0xCC, 0xE6, 0x10, 0x00, 0x5C, 0xAB, 0x16, 0x00, 0xE2, 0x04, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0xE4, 0x57, 0x00, 0x00, -0xF4, 0xE1, 0x10, 0x00, 0x5C, 0x1C, 0x00, 0x00, 0x70, 0x71, 0x00, 0x00, 0x40, 0xE0, 0x10, 0x00, 0x2C, 0xE6, 0x10, 0x00, -0x00, 0x23, 0x04, 0x93, 0x05, 0x93, 0x20, 0x1D, 0x23, 0x00, 0x05, 0xAA, 0x04, 0xA9, 0xFA, 0xF7, 0xAD, 0xFE, 0x04, 0x9B, -0x00, 0x2B, 0x28, 0xD0, 0x22, 0x69, 0x9A, 0x42, 0x00, 0xD9, 0x1A, 0x00, 0x22, 0x61, 0x03, 0x26, 0x63, 0x68, 0x9A, 0x46, -0x5A, 0x46, 0x21, 0x69, 0x01, 0x98, 0xFA, 0xF7, 0x3B, 0xFF, 0x63, 0x68, 0x53, 0x45, 0x08, 0xD0, 0x05, 0x9B, 0x53, 0x44, -0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x01, 0x3E, 0xF6, 0xB2, 0x00, 0x2E, 0xEC, 0xD1, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, -0x00, 0xD0, 0x0E, 0xE7, 0x63, 0x68, 0x03, 0x33, 0x03, 0x22, 0x93, 0x43, 0x63, 0x60, 0x23, 0x69, 0x70, 0x4A, 0x94, 0x46, -0x63, 0x44, 0x23, 0x61, 0x03, 0xE7, 0x02, 0x9B, 0x00, 0x2B, 0x00, 0xD1, 0x9B, 0xE6, 0xEA, 0xE7, 0xA7, 0x23, 0xE3, 0x5C, -0x00, 0x2B, 0x00, 0xD0, 0x7B, 0xE0, 0xA8, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x76, 0xE0, 0xB3, 0x33, 0xE3, 0x5C, -0x00, 0x2B, 0x00, 0xD0, 0x71, 0xE0, 0x65, 0x4B, 0x23, 0x61, 0x73, 0x42, 0x73, 0x41, 0x5B, 0x42, 0x4B, 0x22, 0x93, 0x43, -0x60, 0x33, 0x5B, 0x00, 0x62, 0x68, 0x94, 0x46, 0x63, 0x44, 0x60, 0x4A, 0x13, 0x40, 0x63, 0x60, 0xB0, 0x23, 0x09, 0x22, -0xE2, 0x54, 0x20, 0x00, 0xCF, 0xF7, 0xA8, 0xFE, 0x00, 0x28, 0x00, 0xD0, 0xA0, 0xE0, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, -0x00, 0x2E, 0x3A, 0xD0, 0xA5, 0xF7, 0x0E, 0xF8, 0x57, 0x4B, 0x18, 0x60, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x66, 0x60, 0x80, 0xE0, 0x00, 0x2E, 0x00, 0xD1, 0x86, 0xE0, 0x51, 0x4B, 0x23, 0x61, -0x20, 0x00, 0xFD, 0xF7, 0x57, 0xFE, 0x60, 0x60, 0x18, 0x26, 0x65, 0x68, 0x00, 0x22, 0x21, 0x69, 0x01, 0x98, 0xFA, 0xF7, -0xD1, 0xFE, 0x63, 0x68, 0xAB, 0x42, 0x06, 0xD0, 0x75, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x65, 0x60, 0x18, 0x36, 0x60, 0x2E, -0xEF, 0xD1, 0x20, 0x00, 0xCF, 0xF7, 0x76, 0xFE, 0x00, 0x28, 0x6F, 0xD1, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xCF, 0xE7, -0x39, 0x00, 0x14, 0x31, 0x09, 0x01, 0x09, 0x09, 0x48, 0x46, 0x40, 0x4B, 0x98, 0x47, 0xCB, 0xE7, 0xA0, 0x23, 0x00, 0x22, -0xE2, 0x54, 0xA3, 0x7D, 0x10, 0x2B, 0x01, 0xD8, 0x11, 0x23, 0xA3, 0x75, 0x02, 0x9B, 0x00, 0x2B, 0xBC, 0xD0, 0x01, 0x2D, -0xBA, 0xD1, 0x39, 0x4B, 0x1B, 0x68, 0x9B, 0x68, 0x00, 0x2B, 0xB5, 0xD1, 0x37, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x9F, 0x23, -0xE3, 0x5C, 0x01, 0x2B, 0xAE, 0xD1, 0x35, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0xAA, 0xE7, 0x34, 0x4B, 0xDB, 0x88, 0x23, 0x61, -0xA1, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0xB0, 0xD0, 0x00, 0x2E, 0xB1, 0xD1, 0x30, 0x4B, 0x23, 0x61, 0xA7, 0x23, 0xE3, 0x5C, -0x00, 0x2B, 0x03, 0xD1, 0xA8, 0x22, 0xA2, 0x5C, 0x00, 0x2A, 0x2E, 0xD0, 0xA8, 0x22, 0xA1, 0x5C, 0xCB, 0x18, 0x2A, 0x49, -0x59, 0x43, 0x29, 0x4B, 0x9C, 0x46, 0x61, 0x44, 0x21, 0x61, 0x23, 0x4B, 0x1A, 0x68, 0x53, 0x6F, 0x58, 0x42, 0x43, 0x41, -0x5B, 0x42, 0x1B, 0x48, 0x03, 0x40, 0x24, 0x48, 0x84, 0x46, 0x63, 0x44, 0x92, 0x68, 0x00, 0x2A, 0x02, 0xD0, 0x22, 0x4A, -0x12, 0x68, 0x9B, 0x1A, 0x99, 0x42, 0x00, 0xD9, 0x19, 0x00, 0x21, 0x61, 0x66, 0x68, 0x28, 0x22, 0x20, 0x00, 0xFA, 0xF7, -0x63, 0xFE, 0x01, 0x28, 0x00, 0xD1, 0x7C, 0xE7, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x04, 0xD1, 0x63, 0x68, 0x03, 0x33, -0x03, 0x22, 0x93, 0x43, 0x63, 0x60, 0x20, 0x00, 0xCF, 0xF7, 0x06, 0xFE, 0x00, 0x28, 0x9B, 0xD0, 0xA1, 0x23, 0xE3, 0x5C, -0x04, 0x2B, 0x8F, 0xD0, 0x08, 0x21, 0x48, 0x46, 0x11, 0x4B, 0x98, 0x47, 0x5E, 0xE7, 0x00, 0x25, 0xC7, 0xE5, 0x00, 0x25, -0xC5, 0xE5, 0x00, 0x23, 0x9B, 0x46, 0xFF, 0xE5, 0xAA, 0xF8, 0xFF, 0xFF, 0x98, 0x12, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x0F, -0x34, 0xE6, 0x10, 0x00, 0x88, 0x13, 0x00, 0x00, 0xB9, 0x4C, 0x0B, 0x00, 0xF4, 0xE1, 0x10, 0x00, 0x40, 0xE0, 0x10, 0x00, -0x44, 0xE0, 0x10, 0x00, 0x5C, 0xAB, 0x16, 0x00, 0x5C, 0x1C, 0x00, 0x00, 0x7C, 0x42, 0x00, 0x00, 0xE8, 0xE1, 0x10, 0x00, -0x95, 0x0F, 0x0B, 0x00, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, 0xB7, 0x4B, 0xB8, 0x4A, -0x13, 0x60, 0x80, 0x22, 0x52, 0x00, 0x9C, 0x5C, 0xFD, 0xF7, 0x5A, 0xFA, 0xB5, 0x4B, 0x1B, 0x68, 0x9B, 0x68, 0x00, 0x2B, -0x09, 0xD0, 0xB2, 0x4B, 0x1D, 0x68, 0x02, 0x23, 0xFF, 0x33, 0xEB, 0x5C, 0xA3, 0x42, 0x00, 0xD1, 0x42, 0xE1, 0xB0, 0x4F, -0x84, 0xE0, 0xFA, 0xF7, 0xFD, 0xFD, 0xF2, 0xE7, 0xAE, 0x4A, 0x93, 0x42, 0x46, 0xD1, 0xAE, 0x4B, 0x4B, 0x60, 0x43, 0xE0, -0xAD, 0x49, 0x8B, 0x42, 0x00, 0xD1, 0xE5, 0xE0, 0xAC, 0x49, 0x8B, 0x42, 0x16, 0xD1, 0xAC, 0x4B, 0x1A, 0x68, 0x00, 0x2A, -0x38, 0xD0, 0x23, 0x01, 0xED, 0x18, 0xA9, 0x68, 0x8B, 0x00, 0x9B, 0x58, 0x00, 0x9A, 0x48, 0x46, 0x02, 0x43, 0xD2, 0xB2, -0x00, 0x2A, 0x04, 0xD0, 0x00, 0x29, 0x00, 0xD0, 0xCC, 0xE0, 0xD8, 0x22, 0x1A, 0x86, 0x00, 0x22, 0x9A, 0x62, 0x25, 0xE0, -0xA1, 0x49, 0x8B, 0x42, 0x22, 0xD1, 0x02, 0x2A, 0x20, 0xD1, 0x00, 0x21, 0x02, 0x20, 0xFC, 0xF7, 0xA5, 0xFB, 0x1B, 0xE0, -0x9D, 0x4B, 0x1D, 0x68, 0x00, 0x9B, 0x4A, 0x46, 0x13, 0x43, 0xDB, 0xB2, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x23, 0xAB, 0x62, -0x34, 0x33, 0x01, 0x22, 0xEA, 0x54, 0xAE, 0xF7, 0x53, 0xF8, 0x43, 0x1E, 0x98, 0x41, 0x43, 0x42, 0xC0, 0x22, 0x92, 0x01, -0x13, 0x40, 0x80, 0x22, 0x52, 0x01, 0x94, 0x46, 0x63, 0x44, 0x2B, 0x86, 0x12, 0x23, 0x6B, 0x86, 0x86, 0x4B, 0x1B, 0x68, -0x52, 0x46, 0x98, 0x18, 0x45, 0x68, 0x00, 0x2D, 0x00, 0xD1, 0xD1, 0xE0, 0x42, 0x46, 0x04, 0x3A, 0x51, 0x42, 0x4A, 0x41, -0xD2, 0xB2, 0x31, 0x01, 0x5B, 0x18, 0x99, 0x68, 0x00, 0x68, 0xA8, 0x47, 0x7D, 0x4B, 0x1D, 0x68, 0x33, 0x01, 0xEB, 0x18, -0x85, 0x4A, 0x5B, 0x68, 0x93, 0x42, 0x00, 0xD1, 0xC5, 0xE0, 0x33, 0x01, 0xEB, 0x18, 0x00, 0x22, 0x1A, 0x73, 0x03, 0x32, -0xFF, 0x32, 0xAB, 0x5C, 0x01, 0x3B, 0xAB, 0x54, 0x02, 0x23, 0xFF, 0x33, 0xEA, 0x5C, 0x0F, 0x21, 0xA2, 0x42, 0x00, 0xD1, -0xC5, 0xE0, 0x01, 0x34, 0x0C, 0x40, 0x23, 0x01, 0xEB, 0x18, 0x1B, 0x7B, 0x00, 0x2B, 0xF5, 0xD0, 0x80, 0x23, 0x5B, 0x00, -0xEC, 0x54, 0xA2, 0x42, 0x00, 0xD1, 0xBB, 0xE0, 0x26, 0x00, 0x75, 0x4B, 0xE3, 0x18, 0x1B, 0x01, 0x1B, 0x88, 0x9B, 0x06, -0x5B, 0x0F, 0x98, 0x46, 0x03, 0x3B, 0x02, 0x2B, 0x00, 0xD9, 0xAF, 0xE0, 0xFB, 0xF7, 0x70, 0xFD, 0x00, 0x90, 0x01, 0x90, -0x3A, 0x68, 0x00, 0x23, 0x01, 0x21, 0x91, 0x42, 0x5B, 0x41, 0xDB, 0xB2, 0x99, 0x46, 0x23, 0x01, 0x9A, 0x46, 0xE9, 0x18, -0x4B, 0x68, 0x69, 0x48, 0x83, 0x42, 0x62, 0xD0, 0x00, 0xD9, 0x63, 0xE7, 0x67, 0x4A, 0x93, 0x42, 0x88, 0xD0, 0x63, 0x4A, -0x93, 0x42, 0x00, 0xD0, 0x56, 0xE7, 0x65, 0x4B, 0x1D, 0x68, 0x00, 0x23, 0xAB, 0x62, 0x51, 0x33, 0x01, 0x22, 0xEA, 0x54, -0xAD, 0xF7, 0xDE, 0xFF, 0x00, 0x28, 0x05, 0xD0, 0x80, 0x23, 0x9B, 0x01, 0xAB, 0x85, 0x06, 0x23, 0xEB, 0x85, 0x8F, 0xE7, -0x50, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x0B, 0xD0, 0x00, 0x9B, 0x4A, 0x46, 0x13, 0x43, 0xDB, 0xB2, 0x00, 0x2B, 0x1C, 0xD1, -0x80, 0x23, 0x1B, 0x01, 0xAB, 0x85, 0x12, 0x23, 0xEB, 0x85, 0x7F, 0xE7, 0x55, 0x4B, 0xEB, 0x61, 0x01, 0x9B, 0x00, 0x2B, -0x03, 0xD1, 0xFD, 0xF7, 0x13, 0xFA, 0x01, 0x28, 0x07, 0xD9, 0x00, 0x9A, 0xD3, 0x02, 0xAB, 0x85, 0x09, 0x23, 0x9B, 0x1A, -0x5B, 0x00, 0xEB, 0x85, 0x6E, 0xE7, 0x80, 0x23, 0x5B, 0x00, 0xAB, 0x85, 0xEE, 0x3B, 0xEB, 0x85, 0x68, 0xE7, 0xFD, 0xF7, -0x41, 0xF9, 0x01, 0x28, 0x00, 0xD8, 0x63, 0xE7, 0x80, 0x23, 0xDB, 0x01, 0xAB, 0x85, 0x08, 0x23, 0xEB, 0x85, 0x5D, 0xE7, -0xC8, 0x22, 0x92, 0x00, 0x1A, 0x86, 0x30, 0xE7, 0x01, 0x2A, 0x00, 0xD9, 0x56, 0xE7, 0x01, 0x9B, 0x00, 0x2B, 0x00, 0xD1, -0x52, 0xE7, 0x23, 0x01, 0xED, 0x18, 0xAB, 0x68, 0x9B, 0x00, 0x3E, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x68, 0xC0, 0x22, -0x12, 0x01, 0xDA, 0x66, 0x46, 0xE7, 0x02, 0x2A, 0x00, 0xD0, 0x43, 0xE7, 0x23, 0x01, 0xED, 0x18, 0x2B, 0x7A, 0x9B, 0x00, -0x37, 0x4A, 0x9D, 0x58, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x03, 0xD1, 0x35, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x09, 0xD0, -0xA0, 0x23, 0xEB, 0x5C, 0x02, 0x2B, 0x00, 0xD0, 0x30, 0xE7, 0x01, 0x21, 0x02, 0x20, 0xFC, 0xF7, 0xB5, 0xFA, 0x2B, 0xE7, -0xFF, 0xF7, 0x92, 0xFA, 0x00, 0x23, 0x2D, 0x4A, 0x13, 0x70, 0xEF, 0xE7, 0x2C, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0x98, 0x47, 0x30, 0xE7, 0x24, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x00, 0xD1, 0x34, 0xE7, 0x11, 0x22, 0x9A, 0x75, -0x31, 0xE7, 0xFB, 0xF7, 0x93, 0xFB, 0x11, 0xE0, 0x80, 0x20, 0x80, 0x00, 0x7A, 0xF7, 0xE2, 0xFD, 0x13, 0xE0, 0x80, 0x23, -0x5B, 0x00, 0xEC, 0x54, 0x81, 0x23, 0x5B, 0x00, 0xEB, 0x5C, 0x00, 0x2B, 0x04, 0xD1, 0x05, 0x33, 0xFF, 0x33, 0xEB, 0x58, -0x00, 0x2B, 0xEA, 0xD0, 0x07, 0x4B, 0x1A, 0x68, 0x81, 0x23, 0x5B, 0x00, 0xD3, 0x5C, 0x00, 0x2B, 0xE6, 0xD0, 0x02, 0xB0, -0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, -0xF4, 0xE1, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, 0x31, 0xC3, 0x0A, 0x00, 0xE1, 0xA1, 0x10, 0x00, 0xE9, 0x8F, 0x0C, 0x00, -0xCD, 0x05, 0x0D, 0x00, 0xF0, 0x29, 0x16, 0x00, 0x5D, 0x74, 0x0B, 0x00, 0x20, 0x27, 0x16, 0x00, 0xD9, 0xEA, 0x0A, 0x00, -0x00, 0x10, 0x06, 0x04, 0x11, 0x6F, 0x0B, 0x00, 0x99, 0xCA, 0x0A, 0x00, 0x28, 0x27, 0x16, 0x00, 0x01, 0x00, 0x10, 0x00, -0x84, 0x29, 0x16, 0x00, 0x38, 0x27, 0x16, 0x00, 0xD8, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x04, 0x4B, -0x1B, 0x7F, 0x01, 0x2B, 0x00, 0xD0, 0x10, 0xBD, 0x02, 0x4B, 0x98, 0x47, 0xFB, 0xE7, 0xC0, 0x46, 0x24, 0x2A, 0x16, 0x00, -0x69, 0x44, 0x0D, 0x00, 0x10, 0xB5, 0x05, 0x4B, 0x80, 0x22, 0xD2, 0x03, 0x1A, 0x60, 0x80, 0x20, 0x40, 0x00, 0x7A, 0xF7, -0xAF, 0xF8, 0xFF, 0xF7, 0xE7, 0xFF, 0x10, 0xBD, 0x08, 0x41, 0x04, 0x40, 0x70, 0xB5, 0x2D, 0x4B, 0x1B, 0x68, 0xC0, 0x22, -0x92, 0x02, 0x13, 0x42, 0x16, 0xD1, 0x5A, 0x03, 0x1E, 0xD4, 0x1A, 0x03, 0x2D, 0xD4, 0xDA, 0x02, 0x34, 0xD4, 0x9A, 0x02, -0x36, 0xD4, 0x5A, 0x02, 0x38, 0xD4, 0xDA, 0x01, 0x39, 0xD4, 0x9A, 0x01, 0x3E, 0xD4, 0x5B, 0x01, 0x0F, 0xD5, 0xFD, 0xF7, -0x1B, 0xFF, 0x22, 0x4B, 0x80, 0x22, 0xD2, 0x04, 0x1A, 0x60, 0x08, 0xE0, 0x20, 0x4D, 0x91, 0x24, 0xE4, 0x00, 0x00, 0x23, -0x2B, 0x51, 0x84, 0xF7, 0x7F, 0xFB, 0x1E, 0x4B, 0x2B, 0x51, 0x70, 0xBD, 0x1D, 0x4B, 0x1C, 0x78, 0xFE, 0xF7, 0x84, 0xFE, -0x02, 0x2C, 0x04, 0xD0, 0x17, 0x4B, 0x80, 0x22, 0xD2, 0x02, 0x1A, 0x60, 0xF3, 0xE7, 0x19, 0x4B, 0x01, 0x22, 0x1A, 0x70, -0x84, 0xF7, 0x32, 0xFB, 0xED, 0xE7, 0x12, 0x4B, 0x80, 0x22, 0x12, 0x03, 0x1A, 0x60, 0x80, 0x20, 0x40, 0x00, 0x7A, 0xF7, -0x3F, 0xFD, 0xE4, 0xE7, 0x01, 0x20, 0x84, 0xF7, 0x3D, 0xFB, 0xE0, 0xE7, 0x02, 0x20, 0x84, 0xF7, 0x39, 0xFB, 0xDC, 0xE7, -0xFF, 0xF7, 0xA6, 0xFF, 0xD9, 0xE7, 0xFA, 0xF7, 0xF1, 0xFD, 0x07, 0x4B, 0x80, 0x22, 0x52, 0x04, 0x1A, 0x60, 0xD2, 0xE7, -0xFA, 0xF7, 0x9A, 0xFF, 0x03, 0x4B, 0x80, 0x22, 0x92, 0x04, 0x1A, 0x60, 0xCB, 0xE7, 0xC0, 0x46, 0x1C, 0x41, 0x04, 0x40, -0x08, 0x41, 0x04, 0x40, 0x28, 0x19, 0x16, 0x00, 0x31, 0x6D, 0x10, 0x00, 0xE0, 0x1D, 0x16, 0x00, 0xE1, 0x1D, 0x16, 0x00, -0x10, 0xB5, 0x04, 0x4B, 0x80, 0x22, 0x12, 0x03, 0x1A, 0x60, 0x80, 0x20, 0x40, 0x00, 0x7A, 0xF7, 0x0F, 0xFD, 0x10, 0xBD, -0x08, 0x41, 0x04, 0x40, 0x10, 0xB5, 0x09, 0x4B, 0xDB, 0x7F, 0x00, 0x2B, 0x08, 0xD0, 0x00, 0x28, 0x01, 0xD1, 0x00, 0x29, -0x04, 0xD0, 0x01, 0x20, 0x80, 0xF7, 0xD6, 0xFF, 0x84, 0xF7, 0x00, 0xFD, 0x03, 0x49, 0x40, 0x22, 0x0B, 0x6B, 0x1A, 0x42, -0xFC, 0xD0, 0x10, 0xBD, 0x3C, 0x95, 0x16, 0x00, 0x00, 0x60, 0x50, 0x40, 0x70, 0xB5, 0x82, 0xB0, 0x27, 0x4A, 0xD3, 0x69, -0x0F, 0x24, 0xA3, 0x43, 0xD3, 0x61, 0x26, 0x4B, 0x99, 0x68, 0x80, 0x20, 0x01, 0x43, 0x99, 0x60, 0x59, 0x68, 0x01, 0x43, -0x59, 0x60, 0x19, 0x68, 0x01, 0x43, 0x19, 0x60, 0x13, 0x69, 0xA3, 0x43, 0x13, 0x61, 0x69, 0x46, 0x01, 0xA8, 0xA4, 0xF7, -0xEF, 0xFC, 0x01, 0x9C, 0x00, 0x9B, 0x1E, 0x00, 0x7A, 0x36, 0x9C, 0x22, 0x92, 0x00, 0x96, 0x42, 0x19, 0xD9, 0xF8, 0x3B, -0xFF, 0x3B, 0x1E, 0x00, 0x01, 0x34, 0x24, 0x01, 0x24, 0x09, 0x80, 0x25, 0x2D, 0x05, 0x69, 0x46, 0x01, 0xA8, 0xA4, 0xF7, -0xDB, 0xFC, 0x01, 0x9A, 0xA3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0xAB, 0x42, 0xF5, 0xD9, 0x12, 0x1B, 0x12, 0x01, 0xF2, 0xD0, -0x00, 0x9B, 0xB3, 0x42, 0xEF, 0xD3, 0x02, 0xB0, 0x70, 0xBD, 0xB3, 0x42, 0xE9, 0xD2, 0x80, 0x25, 0x2D, 0x05, 0x02, 0xE0, -0x00, 0x9B, 0xB3, 0x42, 0xF5, 0xD2, 0x69, 0x46, 0x01, 0xA8, 0xA4, 0xF7, 0xC1, 0xFC, 0x01, 0x9A, 0xA3, 0x1A, 0x1B, 0x01, -0x1B, 0x09, 0xAB, 0x42, 0xF2, 0xD9, 0x12, 0x1B, 0x12, 0x01, 0xEF, 0xD0, 0xE7, 0xE7, 0xC0, 0x46, 0x00, 0x30, 0x50, 0x40, -0x00, 0x40, 0x50, 0x40, 0x70, 0xB5, 0x10, 0x4B, 0x9A, 0x69, 0x10, 0x4B, 0x1A, 0x42, 0x0A, 0xD1, 0x0F, 0x4D, 0x10, 0x4C, -0x29, 0x68, 0x00, 0x20, 0xFA, 0xF7, 0xD0, 0xFC, 0x7B, 0xF7, 0x96, 0xFD, 0x23, 0x68, 0x01, 0x2B, 0xF6, 0xD0, 0x0C, 0x4A, -0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x0B, 0x4B, 0x1B, 0x68, 0x03, 0x3B, 0x01, 0x2B, 0x00, 0xD9, 0x70, 0xBD, 0x03, 0x4A, -0x80, 0x23, 0x1B, 0x02, 0x91, 0x69, 0x0B, 0x43, 0x93, 0x61, 0xF7, 0xE7, 0x3C, 0x95, 0x16, 0x00, 0x01, 0x20, 0x00, 0x00, -0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0x20, 0xE6, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, 0x02, 0x38, 0x01, 0x28, -0x11, 0xD8, 0x09, 0x4A, 0x80, 0x23, 0x5B, 0x00, 0x08, 0x21, 0xD1, 0x50, 0x07, 0x49, 0x8B, 0x68, 0x07, 0x4A, 0x1A, 0x40, -0x80, 0x23, 0x9B, 0x02, 0x13, 0x43, 0x8B, 0x60, 0x22, 0x22, 0x0B, 0x6B, 0x13, 0x40, 0x02, 0x2B, 0xFB, 0xD1, 0x70, 0x47, -0x00, 0x00, 0x50, 0x40, 0x00, 0x60, 0x50, 0x40, 0xFF, 0xFF, 0xFB, 0xFF, 0x70, 0xB5, 0xA6, 0xF7, 0x3D, 0xFF, 0x04, 0x1E, -0x0D, 0xD1, 0x1A, 0x4B, 0x18, 0x68, 0x00, 0x28, 0x09, 0xD0, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, 0x17, 0xD4, 0x72, 0xB6, -0x3E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, 0x02, 0xD0, 0x62, 0xB6, 0x20, 0x00, 0x70, 0xBD, 0x13, 0x4B, 0x1D, 0x68, 0x00, 0x21, -0xCF, 0xF7, 0x7A, 0xFC, 0x2B, 0x6B, 0x5B, 0x00, 0x6A, 0x68, 0x9B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x0E, 0x4A, 0x13, 0x60, -0x0E, 0x4B, 0x98, 0x47, 0xEC, 0xE7, 0x3E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, 0xE9, 0xD1, 0x09, 0x4B, 0x1D, 0x68, 0x00, 0x21, -0xCF, 0xF7, 0x66, 0xFC, 0x2B, 0x6B, 0x5B, 0x00, 0x6A, 0x68, 0x9B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x04, 0x4A, 0x13, 0x60, -0x04, 0x4B, 0x98, 0x47, 0xD9, 0xE7, 0xC0, 0x46, 0x28, 0x27, 0x16, 0x00, 0x24, 0x27, 0x16, 0x00, 0x18, 0x2C, 0x16, 0x00, -0x15, 0xE6, 0x0A, 0x00, 0x10, 0xB5, 0xA5, 0xF7, 0xC7, 0xFA, 0x00, 0x28, 0x0F, 0xD1, 0x0B, 0x4B, 0x19, 0x68, 0x00, 0x29, -0x0B, 0xD0, 0x0A, 0x4B, 0xCB, 0x61, 0x0A, 0x4B, 0x1C, 0x00, 0x41, 0x34, 0xFF, 0x34, 0x1A, 0x78, 0x09, 0x2A, 0x03, 0xD0, -0x40, 0x33, 0xA3, 0x42, 0xF9, 0xD1, 0x10, 0xBD, 0x0B, 0x69, 0x05, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x0B, 0x61, 0xF8, 0xE7, -0x18, 0x27, 0x16, 0x00, 0x51, 0x04, 0x10, 0x00, 0x70, 0xA6, 0x16, 0x00, 0x78, 0xEC, 0xFF, 0xFF, 0x10, 0xB5, 0x02, 0x00, -0x0C, 0x00, 0x01, 0x23, 0x00, 0x21, 0x03, 0x48, 0x7A, 0xF7, 0xC2, 0xFF, 0x04, 0x70, 0xCC, 0xF7, 0x1F, 0xFE, 0x10, 0xBD, -0x01, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x02, 0x00, 0x0C, 0x00, 0x01, 0x23, 0x00, 0x21, 0x03, 0x48, 0x7A, 0xF7, 0xB4, 0xFF, -0x04, 0x70, 0xCC, 0xF7, 0x11, 0xFE, 0x10, 0xBD, 0x02, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x06, 0x23, 0x13, 0x4A, 0x00, 0x21, -0x13, 0x48, 0x7A, 0xF7, 0xA7, 0xFF, 0x13, 0x4A, 0x2D, 0x23, 0xD3, 0x5C, 0x1B, 0x09, 0x12, 0x4A, 0x12, 0x78, 0x02, 0x2A, -0x0B, 0xD0, 0x01, 0x2A, 0x10, 0xD0, 0x0E, 0x4A, 0x2D, 0x23, 0xD3, 0x5C, 0x03, 0x71, 0x00, 0x23, 0x03, 0x70, 0xCC, 0xF7, -0xF5, 0xFD, 0x00, 0x20, 0x10, 0xBD, 0x0B, 0x4A, 0xD2, 0x5C, 0x80, 0x23, 0x9B, 0x00, 0x13, 0x43, 0x43, 0x80, 0xEE, 0xE7, -0x08, 0x4A, 0xD2, 0x5C, 0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, 0x43, 0x80, 0xE7, 0xE7, 0xC0, 0x46, 0x2D, 0x0C, 0x00, 0x00, -0x01, 0x11, 0x00, 0x00, 0x60, 0x92, 0x16, 0x00, 0xB4, 0xE5, 0x10, 0x00, 0x30, 0xE0, 0x10, 0x00, 0x28, 0xE0, 0x10, 0x00, -0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x19, 0x78, 0x03, 0x4A, 0x2D, 0x23, 0xD1, 0x54, 0x00, 0x21, 0xFF, 0xF7, 0xB2, 0xFF, -0x00, 0x20, 0x10, 0xBD, 0x60, 0x92, 0x16, 0x00, 0x70, 0xB5, 0x82, 0xB0, 0x04, 0x00, 0x0D, 0x00, 0xD1, 0xF7, 0x96, 0xFF, -0x06, 0x00, 0x2C, 0x4B, 0x99, 0x6F, 0x00, 0x29, 0x15, 0xD0, 0xF8, 0x22, 0x20, 0x00, 0xD1, 0xF7, 0xBB, 0xFF, 0x00, 0x21, -0x00, 0x28, 0x0A, 0xD1, 0x26, 0x4A, 0x30, 0x23, 0xD3, 0x5C, 0x01, 0x2B, 0x21, 0xD0, 0x28, 0x00, 0xFF, 0xF7, 0x86, 0xFF, -0x00, 0x20, 0x02, 0xB0, 0x70, 0xBD, 0x21, 0x4B, 0x98, 0x6F, 0x7B, 0xF7, 0xBF, 0xF8, 0xFF, 0x20, 0x06, 0x40, 0xF8, 0x2E, -0x00, 0xD9, 0xF8, 0x26, 0x70, 0x1C, 0x00, 0x21, 0x7B, 0xF7, 0x12, 0xF8, 0x1A, 0x4B, 0x98, 0x67, 0x07, 0x21, 0x00, 0x28, -0xE2, 0xD0, 0x32, 0x00, 0x21, 0x00, 0xD1, 0xF7, 0x2F, 0xFE, 0x16, 0x4B, 0x9B, 0x6F, 0x00, 0x22, 0x9A, 0x55, 0x00, 0x21, -0xD8, 0xE7, 0x7F, 0x33, 0x5B, 0x00, 0x2F, 0x22, 0x00, 0x21, 0x12, 0x48, 0x7A, 0xF7, 0x2A, 0xFF, 0x06, 0x00, 0x01, 0xA9, -0x0D, 0x70, 0x2D, 0x0A, 0x4D, 0x70, 0xF8, 0x23, 0x8B, 0x70, 0x03, 0x22, 0xD1, 0xF7, 0x18, 0xFE, 0xF0, 0x1C, 0xF8, 0x22, -0x21, 0x00, 0xD1, 0xF7, 0x13, 0xFE, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x30, 0x00, 0x0C, 0x38, 0x08, 0x4B, 0x98, 0x47, -0x08, 0x4B, 0x5B, 0x7F, 0x5B, 0xB2, 0x04, 0x2B, 0xBE, 0xDC, 0x01, 0x33, 0x05, 0x4A, 0x53, 0x77, 0xBA, 0xE7, 0xC0, 0x46, -0x68, 0x9E, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, 0x68, 0xE6, 0x10, 0x00, 0xA5, 0x4B, 0x0D, 0x00, 0x24, 0x2A, 0x16, 0x00, -0xF8, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x16, 0x00, 0x1F, 0x00, 0x02, 0x20, 0x79, 0xF7, 0x46, 0xFE, 0x6B, 0x1E, 0x1C, 0x70, -0x63, 0x1E, 0x03, 0x2B, 0x22, 0xD8, 0x04, 0x2C, 0x10, 0xD0, 0x68, 0x1E, 0x16, 0x4B, 0x18, 0x61, 0x1E, 0x83, 0x5F, 0x61, -0x1B, 0x7F, 0xFF, 0x2B, 0x25, 0xD1, 0x13, 0x4B, 0x00, 0x22, 0x1A, 0x77, 0x71, 0x1C, 0x1A, 0x68, 0x54, 0x68, 0x11, 0x4A, -0xA0, 0x47, 0x1C, 0xE0, 0x2B, 0x78, 0x2F, 0x2B, 0xEB, 0xD1, 0x0F, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xE7, 0xD0, 0x19, 0x23, -0x2B, 0x70, 0xE2, 0x33, 0x6B, 0x70, 0x0B, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0xFD, 0x26, 0xDE, 0xE7, 0x09, 0x4D, 0x00, 0x23, -0x00, 0x22, 0x01, 0x21, 0x20, 0x00, 0xEE, 0x6E, 0xB0, 0x47, 0xED, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x01, 0x21, 0x20, 0x00, -0xA8, 0x47, 0xF8, 0xBD, 0x58, 0x1E, 0x16, 0x00, 0x19, 0x74, 0x08, 0x00, 0x68, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, -0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0xC0, 0xB5, 0x86, 0xB0, 0x04, 0x00, 0x0E, 0x00, 0x03, 0x92, 0xCE, 0xF7, -0x93, 0xFE, 0x07, 0x00, 0xB8, 0x4B, 0x1D, 0x25, 0x5D, 0x57, 0x2B, 0x00, 0x80, 0x33, 0x00, 0xD1, 0x61, 0xE1, 0x01, 0x3D, -0x6D, 0xB2, 0xB4, 0x4B, 0x5D, 0x77, 0x00, 0x28, 0x00, 0xD1, 0x18, 0xE1, 0x00, 0x2D, 0x00, 0xDA, 0x59, 0xE1, 0x80, 0x78, -0x0F, 0x23, 0x18, 0x40, 0x08, 0x28, 0x5F, 0xD8, 0x83, 0x00, 0xAE, 0x4A, 0xD3, 0x58, 0x9F, 0x46, 0x05, 0x23, 0x99, 0x46, -0x67, 0xE0, 0x06, 0x28, 0x1E, 0xD0, 0x01, 0x2E, 0x00, 0xD8, 0x3B, 0xE1, 0x03, 0x9A, 0x53, 0x78, 0x1B, 0x02, 0x12, 0x78, -0x13, 0x43, 0x0B, 0x2B, 0x00, 0xD9, 0x22, 0xE1, 0xA5, 0x4A, 0xD2, 0x18, 0x12, 0x7E, 0x00, 0x2A, 0x00, 0xD1, 0x2D, 0xE1, -0xA2, 0x04, 0x37, 0xD4, 0xA2, 0x4A, 0x94, 0x42, 0x34, 0xD0, 0x27, 0xD8, 0xA1, 0x4A, 0x94, 0x42, 0x30, 0xD0, 0xA1, 0x4A, -0x94, 0x42, 0x00, 0xD0, 0x20, 0xE1, 0x2B, 0xE0, 0x05, 0x2E, 0x00, 0xD8, 0x1C, 0xE1, 0x9E, 0x4D, 0x00, 0x23, 0x99, 0x46, -0x07, 0xE0, 0x01, 0x23, 0x9C, 0x46, 0xE1, 0x44, 0x07, 0x35, 0x4B, 0x46, 0x07, 0x2B, 0x00, 0xD1, 0x10, 0xE1, 0x2B, 0x78, -0x00, 0x2B, 0xF4, 0xD0, 0x69, 0x1C, 0x06, 0x22, 0x03, 0x98, 0xD1, 0xF7, 0x2D, 0xFD, 0x00, 0x28, 0xED, 0xD1, 0x4B, 0x46, -0x1B, 0x02, 0x01, 0x22, 0x13, 0x43, 0x9B, 0xB2, 0x99, 0x46, 0x26, 0xE0, 0x90, 0x4A, 0x94, 0x42, 0x04, 0xD8, 0x90, 0x4A, -0x94, 0x42, 0x00, 0xD8, 0xF8, 0xE0, 0x03, 0xE0, 0x8E, 0x4A, 0x94, 0x42, 0x00, 0xD0, 0xF3, 0xE0, 0x1B, 0x02, 0x04, 0x22, -0x13, 0x43, 0x9B, 0xB2, 0x99, 0x46, 0x14, 0xE0, 0x1B, 0x02, 0x01, 0x22, 0x13, 0x43, 0x9B, 0xB2, 0x99, 0x46, 0x0E, 0xE0, -0x87, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0xA8, 0x47, 0xAF, 0xE0, 0x03, 0x23, 0x99, 0x46, 0x04, 0xE0, -0x02, 0x23, 0x99, 0x46, 0x01, 0xE0, 0x00, 0x23, 0x99, 0x46, 0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x00, 0x22, -0x1A, 0x80, 0x7E, 0x4B, 0x92, 0x46, 0x9C, 0x42, 0x59, 0xD0, 0x00, 0x2E, 0x00, 0xD1, 0xAD, 0xE0, 0x7D, 0x68, 0x00, 0x2D, -0x00, 0xD1, 0x9C, 0xE0, 0xBB, 0x78, 0x5B, 0x06, 0x65, 0xD5, 0xB3, 0xB2, 0x0E, 0x22, 0x02, 0xA9, 0x8C, 0x46, 0x62, 0x44, -0x03, 0x99, 0x00, 0x20, 0xA8, 0x47, 0xC5, 0xB2, 0x01, 0x2D, 0x66, 0xD0, 0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, -0x1B, 0x88, 0x22, 0x00, 0x49, 0x46, 0x6F, 0x48, 0x7A, 0xF7, 0x00, 0xFE, 0x81, 0x46, 0x00, 0x2D, 0x07, 0xD0, 0x6A, 0x4B, -0xDB, 0x6E, 0x9B, 0x46, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0x28, 0x00, 0xD8, 0x47, 0x4B, 0x46, 0x00, 0x2B, 0x59, 0xD0, -0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x00, 0x2B, 0x0F, 0xD0, 0x7B, 0x68, 0x9B, 0x46, 0x00, 0x2B, -0x0B, 0xD0, 0xBB, 0x78, 0x5B, 0x06, 0x51, 0xD5, 0xB3, 0xB2, 0x0E, 0x22, 0x02, 0xA9, 0x8C, 0x46, 0x62, 0x44, 0x03, 0x99, -0x48, 0x46, 0xD8, 0x47, 0xC5, 0xB2, 0x00, 0x2D, 0x06, 0xD0, 0x58, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, -0x28, 0x00, 0xB0, 0x47, 0x48, 0x46, 0x7A, 0xF7, 0xF9, 0xFD, 0x54, 0x4B, 0x9C, 0x42, 0x4A, 0xD1, 0x53, 0x46, 0x00, 0x2B, -0x47, 0xD0, 0x50, 0x46, 0x7A, 0xF7, 0x3C, 0xFF, 0x43, 0xE0, 0x75, 0x1C, 0x01, 0x21, 0x28, 0x00, 0x7A, 0xF7, 0x92, 0xFE, -0x82, 0x46, 0x03, 0x99, 0x0B, 0x78, 0x03, 0x70, 0x72, 0x1E, 0x42, 0x70, 0x01, 0x31, 0x02, 0x30, 0xD1, 0xF7, 0xAE, 0xFC, -0xEE, 0xB2, 0x49, 0x48, 0x7C, 0xF7, 0xB6, 0xFE, 0x53, 0x46, 0x03, 0x93, 0x8F, 0xE7, 0xB3, 0xB2, 0x00, 0x95, 0x0E, 0x22, -0x02, 0xA9, 0x8C, 0x46, 0x62, 0x44, 0x03, 0x99, 0x00, 0x20, 0x7D, 0xF7, 0x57, 0xF8, 0x05, 0x00, 0x96, 0xE7, 0x21, 0x00, -0x40, 0x48, 0x7C, 0xF7, 0xA3, 0xFE, 0x00, 0x23, 0x12, 0x22, 0x21, 0x00, 0x38, 0x00, 0x3E, 0x4D, 0xA8, 0x47, 0xC8, 0xE7, -0x07, 0x22, 0x21, 0x00, 0x38, 0x00, 0x3B, 0x4D, 0xA8, 0x47, 0xC2, 0xE7, 0xB3, 0xB2, 0x5A, 0x46, 0x00, 0x92, 0x0E, 0x22, -0x62, 0x44, 0x03, 0x99, 0x48, 0x46, 0x7D, 0xF7, 0x3B, 0xF8, 0x05, 0x00, 0xAB, 0xE7, 0x00, 0x23, 0x01, 0x22, 0x21, 0x00, -0x00, 0x20, 0x32, 0x4C, 0xA0, 0x47, 0x06, 0xB0, 0x1C, 0xBC, 0x91, 0x46, 0x9A, 0x46, 0xA3, 0x46, 0xF0, 0xBD, 0x0E, 0x23, -0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x22, 0x00, 0x49, 0x46, 0x27, 0x48, 0x7A, 0xF7, 0x71, 0xFD, 0x81, 0x46, -0x04, 0x25, 0x70, 0xE7, 0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x22, 0x00, 0x49, 0x46, 0x21, 0x48, -0x7A, 0xF7, 0x64, 0xFD, 0x81, 0x46, 0x35, 0x00, 0x6B, 0xE7, 0x22, 0x4A, 0x13, 0x40, 0x1A, 0x00, 0x80, 0x3A, 0x92, 0xB2, -0x06, 0x2A, 0x09, 0xD8, 0x80, 0x3B, 0xD9, 0x00, 0xC9, 0x1A, 0x0F, 0x4A, 0x52, 0x18, 0x24, 0x32, 0x12, 0x78, 0x02, 0x2A, -0x00, 0xD1, 0x11, 0xE7, 0x21, 0x00, 0x1A, 0x48, 0x7C, 0xF7, 0x50, 0xFE, 0x03, 0x9B, 0x02, 0x22, 0x21, 0x00, 0x38, 0x00, -0x14, 0x4C, 0xA0, 0x47, 0xC3, 0xE7, 0x00, 0x28, 0xBB, 0xD0, 0x00, 0x23, 0x07, 0x22, 0x21, 0x00, 0x38, 0x00, 0x10, 0x4C, -0xA0, 0x47, 0xBA, 0xE7, 0x24, 0x2A, 0x16, 0x00, 0x2C, 0xD2, 0x10, 0x00, 0xCC, 0xAA, 0x16, 0x00, 0x2D, 0x0C, 0x00, 0x00, -0x06, 0x04, 0x00, 0x00, 0x1D, 0x04, 0x00, 0x00, 0xF0, 0xAA, 0x16, 0x00, 0x7C, 0x0C, 0x00, 0x00, 0x7A, 0x0C, 0x00, 0x00, -0x05, 0x14, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0x57, 0xFD, 0x00, 0x00, 0x05, 0x11, 0x00, 0x00, 0x14, 0xD2, 0x10, 0x00, -0x20, 0xD2, 0x10, 0x00, 0x7D, 0x4A, 0x0D, 0x00, 0xFF, 0xFC, 0xFF, 0xFF, 0x08, 0xD2, 0x10, 0x00, 0x10, 0xB5, 0x07, 0x20, -0x7B, 0xF7, 0x10, 0xFA, 0x08, 0x4C, 0xA1, 0x7A, 0x20, 0x89, 0x62, 0x68, 0xFF, 0xF7, 0x54, 0xFE, 0x60, 0x68, 0x00, 0x28, -0x03, 0xD0, 0x7A, 0xF7, 0x7F, 0xFE, 0x00, 0x22, 0x62, 0x60, 0x02, 0x48, 0x02, 0x4B, 0x98, 0x47, 0x10, 0xBD, 0xC0, 0x46, -0x58, 0x1E, 0x16, 0x00, 0xA5, 0x73, 0x08, 0x00, 0x30, 0xB5, 0x0C, 0x4C, 0x25, 0x68, 0x29, 0x60, 0x24, 0x68, 0x60, 0x60, -0xA2, 0x60, 0xE3, 0x60, 0x09, 0x4B, 0x0A, 0x4A, 0x98, 0x50, 0x0A, 0x48, 0x1A, 0x58, 0x0A, 0x43, 0x1A, 0x50, 0x04, 0x30, -0x1A, 0x58, 0x11, 0x43, 0x19, 0x50, 0x07, 0x49, 0x5A, 0x58, 0x01, 0x20, 0x02, 0x43, 0x5A, 0x50, 0x30, 0xBD, 0xC0, 0x46, -0xFC, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x07, 0x40, 0x10, 0x10, 0x00, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, -0x70, 0xB5, 0x0D, 0x00, 0x1A, 0x4C, 0x30, 0x21, 0x61, 0x5C, 0x01, 0x29, 0x04, 0xD0, 0x29, 0x00, 0x18, 0x4C, 0xA0, 0x47, -0x00, 0x20, 0x70, 0xBD, 0x14, 0x0A, 0x84, 0xF7, 0x99, 0xFD, 0x06, 0x1E, 0x1F, 0xD0, 0x6A, 0x88, 0xA9, 0x88, 0x14, 0x4B, -0x9C, 0x46, 0x61, 0x44, 0x00, 0x89, 0x60, 0x44, 0xD1, 0xF7, 0xB8, 0xFB, 0x08, 0x23, 0x00, 0x22, 0x21, 0x00, 0x10, 0x48, -0x7A, 0xF7, 0xBA, 0xFC, 0x33, 0x89, 0x43, 0x60, 0x2B, 0x88, 0x03, 0x80, 0x6B, 0x88, 0x43, 0x80, 0xCC, 0xF7, 0x12, 0xFB, -0x20, 0x00, 0x80, 0x30, 0x01, 0x21, 0x0A, 0x4B, 0x98, 0x47, 0xA8, 0x88, 0x84, 0xF7, 0xCA, 0xFD, 0xD8, 0xE7, 0x08, 0x4B, -0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEF, 0xE7, 0x68, 0x9E, 0x16, 0x00, 0x49, 0x86, 0x0A, 0x00, -0x00, 0x00, 0x61, 0x40, 0x06, 0x11, 0x00, 0x00, 0xC1, 0xDC, 0x09, 0x00, 0x28, 0x19, 0x16, 0x00, 0x42, 0x7A, 0x12, 0x02, -0x03, 0x7A, 0x13, 0x43, 0x0B, 0x80, 0x83, 0x7A, 0x8B, 0x70, 0x70, 0x47, 0xC2, 0x7A, 0x12, 0x02, 0x83, 0x7A, 0x13, 0x43, -0x4B, 0x80, 0x42, 0x7A, 0x12, 0x02, 0x03, 0x7A, 0x13, 0x43, 0x0B, 0x80, 0x70, 0x47, 0x83, 0x7A, 0x8B, 0x70, 0x42, 0x7A, -0x12, 0x02, 0x03, 0x7A, 0x13, 0x43, 0x0B, 0x80, 0x70, 0x47, 0x00, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x00, 0x22, 0x02, 0x73, -0x0B, 0x30, 0x1A, 0x68, 0x14, 0x68, 0x03, 0x4A, 0x01, 0x21, 0xA0, 0x47, 0x04, 0x20, 0x7A, 0xF7, 0x91, 0xF8, 0x10, 0xBD, -0x59, 0x78, 0x10, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x01, 0x22, 0x02, 0x73, 0x08, 0x30, 0x1A, 0x68, 0x14, 0x68, 0x03, 0x4A, -0xA0, 0x47, 0x04, 0x20, 0x79, 0xF7, 0xAC, 0xFB, 0x10, 0xBD, 0xC0, 0x46, 0x59, 0x78, 0x10, 0x00, 0x10, 0xB5, 0x03, 0x00, -0x02, 0x22, 0x02, 0x73, 0x40, 0x68, 0x1A, 0x68, 0x14, 0x68, 0x01, 0x4A, 0xA0, 0x47, 0x10, 0xBD, 0x59, 0x78, 0x10, 0x00, -0x10, 0xB5, 0x03, 0x00, 0x03, 0x22, 0x02, 0x73, 0x0B, 0x30, 0x1A, 0x68, 0x14, 0x68, 0x02, 0x4A, 0x01, 0x21, 0xA0, 0x47, -0x10, 0xBD, 0xC0, 0x46, 0x59, 0x78, 0x10, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x01, 0x23, 0x10, 0x22, 0x00, 0x21, 0x0B, 0x48, -0x7A, 0xF7, 0x38, 0xFC, 0x00, 0x23, 0x03, 0x70, 0xCC, 0xF7, 0x94, 0xFA, 0x20, 0x00, 0x08, 0x30, 0x02, 0x22, 0x00, 0x21, -0x78, 0xF7, 0xB2, 0xFC, 0xE3, 0x7A, 0xA3, 0x72, 0x20, 0x00, 0xFF, 0xF7, 0xDB, 0xFF, 0x04, 0x20, 0x7A, 0xF7, 0x4A, 0xF8, -0x10, 0xBD, 0xC0, 0x46, 0x03, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x06, 0x20, 0x7B, 0xF7, 0x1A, 0xF9, 0x16, 0x4C, 0x17, 0x49, -0x20, 0x00, 0xFF, 0xF7, 0x83, 0xFF, 0xA4, 0x7A, 0x00, 0x2C, 0x09, 0xD1, 0x12, 0x4C, 0x20, 0x89, 0x00, 0x22, 0x00, 0x21, -0xFF, 0xF7, 0x56, 0xFD, 0x20, 0x00, 0xFF, 0xF7, 0x93, 0xFF, 0x10, 0xBD, 0x0D, 0x4B, 0x18, 0x89, 0xCD, 0xF7, 0x9C, 0xFA, -0x84, 0x42, 0x03, 0xD9, 0x0A, 0x48, 0xFF, 0xF7, 0xC3, 0xFF, 0xF4, 0xE7, 0x08, 0x4C, 0xA0, 0x7A, 0x01, 0x21, 0x7A, 0xF7, -0xCF, 0xFC, 0x60, 0x60, 0x00, 0x28, 0x04, 0xD0, 0x20, 0x00, 0xA1, 0x7A, 0xFF, 0xF7, 0x9C, 0xFF, 0xE7, 0xE7, 0x02, 0x48, -0xFF, 0xF7, 0xB2, 0xFF, 0xE3, 0xE7, 0xC0, 0x46, 0x58, 0x1E, 0x16, 0x00, 0x60, 0x1E, 0x16, 0x00, 0x10, 0xB5, 0x82, 0xB0, -0x04, 0x00, 0x0E, 0x4B, 0x01, 0x93, 0x01, 0x00, 0x08, 0x31, 0x04, 0x22, 0x01, 0xA8, 0xD1, 0xF7, 0xB5, 0xFA, 0x00, 0x28, -0x0B, 0xD0, 0x04, 0x20, 0x79, 0xF7, 0x2A, 0xFB, 0x63, 0x7A, 0x23, 0x72, 0xA3, 0x7A, 0x63, 0x72, 0xE3, 0x7A, 0xA3, 0x72, -0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0x22, 0x00, 0x21, 0x03, 0x48, 0xCD, 0xF7, 0x6C, 0xFA, 0x01, 0x20, 0xF6, 0xE7, -0x01, 0x03, 0x0C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x00, 0x29, 0x0B, 0xD0, 0x01, 0x29, 0x02, 0xD0, -0x03, 0x7B, 0x00, 0x2B, 0x03, 0xD0, 0x20, 0x00, 0xFF, 0xF7, 0x7C, 0xFF, 0x10, 0xBD, 0xFF, 0xF7, 0x3F, 0xFF, 0xFB, 0xE7, -0x03, 0x7B, 0x02, 0x2B, 0x44, 0xD0, 0x0F, 0xD8, 0x00, 0x2B, 0x17, 0xD0, 0x40, 0x7B, 0x02, 0x28, 0x25, 0xD0, 0x03, 0x28, -0x27, 0xD0, 0x01, 0x28, 0x1D, 0xD0, 0xA1, 0x7B, 0x34, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0xA0, 0x47, 0xE7, 0xE7, -0x03, 0x2B, 0x59, 0xD1, 0xFF, 0xF7, 0xB4, 0xFF, 0x00, 0x28, 0x51, 0xD0, 0x20, 0x00, 0xFF, 0xF7, 0x21, 0xFF, 0xDD, 0xE7, -0xC3, 0x7A, 0x43, 0x73, 0x5A, 0x1E, 0x02, 0x2A, 0x04, 0xD8, 0x2B, 0x4A, 0xD1, 0x5C, 0xFF, 0xF7, 0x27, 0xFF, 0xD3, 0xE7, -0xFF, 0xF7, 0x4E, 0xFF, 0xD0, 0xE7, 0x05, 0x30, 0x7B, 0xF7, 0x5E, 0xF8, 0xCC, 0xE7, 0x08, 0x20, 0x7B, 0xF7, 0x5A, 0xF8, -0xC8, 0xE7, 0x21, 0x00, 0x08, 0x31, 0x20, 0x00, 0xFF, 0xF7, 0xFD, 0xFE, 0xA1, 0x7A, 0x20, 0x89, 0xCD, 0xF7, 0x2E, 0xFC, -0x60, 0x60, 0x00, 0x28, 0x04, 0xD0, 0xA1, 0x7A, 0x20, 0x00, 0xFF, 0xF7, 0x1B, 0xFF, 0xB7, 0xE7, 0x20, 0x00, 0xFF, 0xF7, -0x31, 0xFF, 0xB3, 0xE7, 0x40, 0x7B, 0x02, 0x28, 0x0E, 0xD0, 0x03, 0x28, 0x15, 0xD0, 0x01, 0x28, 0x06, 0xD0, 0xA1, 0x7B, -0x13, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0xA0, 0x47, 0xA5, 0xE7, 0x06, 0x30, 0x7B, 0xF7, 0x33, 0xF8, 0xA1, 0xE7, -0x61, 0x89, 0x20, 0x89, 0x62, 0x68, 0xCD, 0xF7, 0xB9, 0xFB, 0x20, 0x00, 0xFF, 0xF7, 0xDC, 0xFE, 0x98, 0xE7, 0xA1, 0x7A, -0x20, 0x89, 0x62, 0x68, 0xCD, 0xF7, 0x2E, 0xFC, 0x20, 0x00, 0xFF, 0xF7, 0xD3, 0xFE, 0x8F, 0xE7, 0x20, 0x00, 0xFF, 0xF7, -0xFB, 0xFE, 0x8B, 0xE7, 0x03, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x84, 0xE7, 0xC0, 0x46, -0x28, 0x19, 0x16, 0x00, 0xC8, 0xDF, 0x10, 0x00, 0x70, 0xB5, 0x0C, 0x00, 0x03, 0x05, 0x1B, 0x0D, 0x82, 0x0B, 0x0B, 0x2B, -0x1C, 0xD8, 0x00, 0x2A, 0x4C, 0xD1, 0x19, 0x02, 0x04, 0x22, 0x0A, 0x43, 0x92, 0xB2, 0xF8, 0x21, 0x09, 0x01, 0x08, 0x42, -0x1F, 0xD1, 0xFB, 0x21, 0xFF, 0x2A, 0x46, 0xD0, 0x8C, 0x42, 0x44, 0xD8, 0xFF, 0x23, 0x13, 0x40, 0x02, 0x2B, 0x26, 0xD9, -0x04, 0x2B, 0x26, 0xD1, 0xB3, 0xF7, 0x8A, 0xFC, 0x00, 0x28, 0x3A, 0xD0, 0x25, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x46, 0xE0, -0x01, 0x2A, 0x31, 0xD0, 0x00, 0x2A, 0x32, 0xD1, 0xF8, 0x22, 0x12, 0x01, 0x10, 0x42, 0x2E, 0xD0, 0x00, 0x21, 0xFF, 0x22, -0x86, 0x2B, 0xE1, 0xD8, 0x00, 0xE0, 0xFB, 0x21, 0x80, 0x3B, 0xDD, 0x00, 0xED, 0x1A, 0x1C, 0x48, 0x40, 0x19, 0x24, 0x30, -0x00, 0x78, 0x02, 0x28, 0xD6, 0xD1, 0x1B, 0x02, 0x01, 0x22, 0x1A, 0x43, 0x92, 0xB2, 0x18, 0x49, 0xD2, 0xE7, 0x00, 0x2B, -0x06, 0xD1, 0x17, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x10, 0xE0, 0x84, 0xF7, 0xE0, 0xFB, -0x00, 0x28, 0x03, 0xD0, 0x0E, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x18, 0xE0, 0x10, 0x48, 0x7C, 0xF7, 0xEB, 0xFB, 0x04, 0xE0, -0x01, 0x2A, 0x02, 0xD1, 0x0B, 0x4B, 0x9C, 0x42, 0xEE, 0xD9, 0x01, 0x23, 0x1A, 0x22, 0x00, 0x21, 0x0B, 0x48, 0x7A, 0xF7, -0xDB, 0xFA, 0x01, 0x25, 0x05, 0x70, 0xCC, 0xF7, 0x37, 0xF9, 0x01, 0x21, 0x20, 0x00, 0x7A, 0xF7, 0xA5, 0xFB, 0x07, 0x4B, -0x9D, 0x77, 0x70, 0xBD, 0x00, 0x00, 0x61, 0x40, 0xCC, 0xAA, 0x16, 0x00, 0xFD, 0x03, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, -0x50, 0xD2, 0x10, 0x00, 0x03, 0x11, 0x00, 0x00, 0x24, 0x2A, 0x16, 0x00, 0x10, 0xB5, 0x08, 0x20, 0x7A, 0xF7, 0xBA, 0xFF, -0x10, 0x4C, 0x11, 0x49, 0x20, 0x00, 0xFF, 0xF7, 0x2B, 0xFE, 0x61, 0x89, 0x00, 0x29, 0x0E, 0xD0, 0x20, 0x89, 0xFF, 0xF7, -0x77, 0xFF, 0x60, 0x60, 0x00, 0x28, 0x04, 0xD0, 0x09, 0x48, 0x41, 0x89, 0xFF, 0xF7, 0x52, 0xFE, 0x0C, 0xE0, 0x20, 0x00, -0xFF, 0xF7, 0x68, 0xFE, 0x08, 0xE0, 0x05, 0x4C, 0x20, 0x89, 0x00, 0x22, 0x00, 0x21, 0xCD, 0xF7, 0x01, 0xFB, 0x20, 0x00, -0xFF, 0xF7, 0x24, 0xFE, 0x10, 0xBD, 0xC0, 0x46, 0x58, 0x1E, 0x16, 0x00, 0x60, 0x1E, 0x16, 0x00, 0x10, 0xB5, 0x7F, 0xF7, -0xBD, 0xFD, 0x06, 0x49, 0x06, 0x20, 0x7A, 0xF7, 0x47, 0xFF, 0x05, 0x49, 0x07, 0x20, 0x7A, 0xF7, 0x43, 0xFF, 0x04, 0x49, -0x08, 0x20, 0x7A, 0xF7, 0x3F, 0xFF, 0x10, 0xBD, 0xA5, 0x77, 0x10, 0x00, 0xB9, 0x75, 0x10, 0x00, 0x65, 0x7A, 0x10, 0x00, -0x10, 0xB5, 0x0A, 0x00, 0x41, 0x23, 0x00, 0x21, 0x0C, 0x48, 0x7A, 0xF7, 0x7B, 0xFA, 0x04, 0x00, 0x01, 0x30, 0x28, 0x22, -0x0A, 0x49, 0xD1, 0xF7, 0x6D, 0xF9, 0xE2, 0x79, 0x2F, 0x23, 0x13, 0x40, 0xE3, 0x71, 0x20, 0x00, 0x29, 0x30, 0x18, 0x22, -0x00, 0x21, 0x78, 0xF7, 0xEF, 0xFA, 0x00, 0x23, 0x23, 0x70, 0x20, 0x00, 0xCC, 0xF7, 0xC6, 0xF8, 0x00, 0x20, 0x10, 0xBD, -0x01, 0x11, 0x00, 0x00, 0xA4, 0xB5, 0x0D, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x0D, 0x00, 0x90, 0x46, 0x06, 0x0A, -0xB2, 0x00, 0x11, 0x4B, 0xD7, 0x58, 0x0C, 0x23, 0x03, 0x22, 0x00, 0x21, 0x0F, 0x48, 0x7A, 0xF7, 0x51, 0xFA, 0x04, 0x00, -0x43, 0x46, 0x03, 0x70, 0x2D, 0x02, 0x81, 0x35, 0xFF, 0x35, 0x75, 0x19, 0x45, 0x80, 0x00, 0x23, 0x83, 0x72, 0x88, 0x23, -0xFF, 0x33, 0xFB, 0x5C, 0xC3, 0x72, 0x39, 0x00, 0x72, 0x31, 0x04, 0x30, 0x06, 0x22, 0xD1, 0xF7, 0x35, 0xF9, 0x20, 0x00, -0xCC, 0xF7, 0x9A, 0xF8, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, -0x70, 0xB5, 0x05, 0x00, 0x0E, 0x00, 0x04, 0x78, 0x02, 0x2C, 0x21, 0xD8, 0x00, 0x2C, 0x04, 0xD1, 0x14, 0x4A, 0x30, 0x23, -0x00, 0x21, 0xD1, 0x54, 0x1B, 0xE0, 0x03, 0x20, 0x88, 0xF7, 0x2E, 0xFC, 0x04, 0x1E, 0x1C, 0xD1, 0x2B, 0x78, 0x0F, 0x49, -0x30, 0x22, 0x8B, 0x54, 0x01, 0x2B, 0x10, 0xD1, 0xDF, 0x20, 0x00, 0x21, 0x80, 0x00, 0x7A, 0xF7, 0xE7, 0xFA, 0x0B, 0x4B, -0x18, 0x60, 0x0B, 0x4A, 0x24, 0x23, 0x01, 0x21, 0xD1, 0x54, 0x00, 0x21, 0x00, 0x20, 0x92, 0xF7, 0xA1, 0xF8, 0x00, 0xE0, -0x12, 0x24, 0x21, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0x3B, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x0C, 0x24, 0xF7, 0xE7, 0xC0, 0x46, -0x68, 0x9E, 0x16, 0x00, 0x64, 0xA2, 0x16, 0x00, 0xCC, 0xAA, 0x16, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x0F, 0x4B, -0x5B, 0x68, 0x02, 0x00, 0x06, 0x21, 0x01, 0x20, 0x98, 0x47, 0x20, 0x78, 0x63, 0x78, 0x1B, 0x02, 0x03, 0x43, 0xA0, 0x78, -0x00, 0x04, 0x03, 0x43, 0xE0, 0x78, 0x00, 0x06, 0x18, 0x43, 0x23, 0x79, 0x61, 0x79, 0x09, 0x02, 0x19, 0x43, 0xA4, 0xF7, -0xFF, 0xF8, 0x20, 0x00, 0xB3, 0xF7, 0x3C, 0xFF, 0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0x10, 0xFA, 0x00, 0x20, 0x70, 0xBD, -0x94, 0x92, 0x16, 0x00, 0x10, 0x4A, 0xFF, 0x21, 0x13, 0x68, 0x8B, 0x43, 0x0F, 0x48, 0x00, 0x78, 0x03, 0x43, 0x80, 0x20, -0x03, 0x43, 0x0E, 0x48, 0x03, 0x60, 0x0E, 0x4B, 0x1B, 0x78, 0x1B, 0x01, 0x0B, 0x40, 0xD0, 0x68, 0x88, 0x43, 0x03, 0x43, -0x0B, 0x49, 0x0B, 0x60, 0x0B, 0x4B, 0x00, 0x21, 0x19, 0x60, 0x13, 0x69, 0x0A, 0x4A, 0x13, 0x40, 0x0A, 0x4A, 0x13, 0x60, -0x0A, 0x4B, 0x0B, 0x4A, 0x1A, 0x60, 0x0B, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0xE4, 0xE6, 0x10, 0x00, 0x14, 0xE7, 0x10, 0x00, -0x08, 0x01, 0x60, 0x40, 0xF7, 0xE8, 0x10, 0x00, 0x28, 0x10, 0x62, 0x40, 0x1C, 0x10, 0x62, 0x40, 0xFF, 0x0F, 0xF0, 0xFF, -0x34, 0x08, 0x62, 0x40, 0x00, 0x00, 0x62, 0x40, 0x00, 0x01, 0x0A, 0x01, 0x00, 0x01, 0x0F, 0x01, 0x0B, 0x4B, 0x1B, 0x78, -0x00, 0x2B, 0x11, 0xD1, 0x0A, 0x4B, 0x1B, 0x68, 0x03, 0x60, 0x0A, 0x4B, 0x1B, 0x68, 0x43, 0x60, 0x09, 0x4B, 0x1B, 0x68, -0x83, 0x60, 0x09, 0x4B, 0x1B, 0x68, 0xC3, 0x60, 0x08, 0x4B, 0x1B, 0x68, 0x03, 0x61, 0x02, 0x4B, 0x01, 0x22, 0x1A, 0x70, -0x70, 0x47, 0xC0, 0x46, 0xD3, 0xE6, 0x10, 0x00, 0x08, 0x01, 0x60, 0x40, 0x00, 0x00, 0x62, 0x40, 0x1C, 0x10, 0x62, 0x40, -0x28, 0x10, 0x62, 0x40, 0x34, 0x08, 0x62, 0x40, 0x09, 0x4B, 0x02, 0x68, 0x1A, 0x60, 0x09, 0x4B, 0x42, 0x68, 0x1A, 0x60, -0x08, 0x4B, 0x82, 0x68, 0x1A, 0x60, 0x08, 0x4B, 0xC2, 0x68, 0x1A, 0x60, 0x02, 0x69, 0x07, 0x4B, 0x1A, 0x60, 0x07, 0x4B, -0x00, 0x22, 0x1A, 0x70, 0x70, 0x47, 0xC0, 0x46, 0x08, 0x01, 0x60, 0x40, 0x00, 0x00, 0x62, 0x40, 0x1C, 0x10, 0x62, 0x40, -0x28, 0x10, 0x62, 0x40, 0x34, 0x08, 0x62, 0x40, 0xD3, 0xE6, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x03, 0x78, -0x00, 0x2B, 0x17, 0xD0, 0x02, 0x20, 0xF9, 0xF7, 0x8D, 0xFD, 0x0E, 0x48, 0xFF, 0xF7, 0xB0, 0xFF, 0x62, 0x78, 0x0D, 0x4B, -0x1A, 0x70, 0xA2, 0x78, 0x0C, 0x4B, 0x1A, 0x70, 0xFF, 0xF7, 0x70, 0xFF, 0x21, 0x78, 0x0B, 0x48, 0x7C, 0xF7, 0x46, 0xFA, -0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0x82, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0x03, 0x48, 0xFF, 0xF7, 0xBF, 0xFF, 0x01, 0x20, -0xF9, 0xF7, 0x72, 0xFD, 0xEE, 0xE7, 0xC0, 0x46, 0xE4, 0xE6, 0x10, 0x00, 0x14, 0xE7, 0x10, 0x00, 0xF7, 0xE8, 0x10, 0x00, -0x5C, 0xD2, 0x10, 0x00, 0x00, 0x23, 0x03, 0x73, 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x1B, 0x88, -0x12, 0x21, 0x15, 0x2B, 0x04, 0xD9, 0x04, 0x4B, 0x80, 0x22, 0xD2, 0x01, 0x9A, 0x82, 0x00, 0x21, 0xFF, 0xF7, 0x50, 0xF9, -0x00, 0x20, 0x10, 0xBD, 0x68, 0x9E, 0x16, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x0F, 0x4B, 0x1B, 0x68, 0x02, 0x2B, -0x0B, 0xD0, 0x29, 0x00, 0x20, 0x00, 0x0D, 0x4B, 0x98, 0x47, 0x0D, 0x4B, 0x80, 0x22, 0x12, 0x01, 0x1A, 0x83, 0x12, 0x22, -0x5A, 0x83, 0x00, 0x20, 0x70, 0xBD, 0xFA, 0xF7, 0x09, 0xFC, 0x00, 0x28, 0xEF, 0xD1, 0x23, 0x78, 0x9B, 0x07, 0xEC, 0xD5, -0x05, 0x4B, 0x80, 0x22, 0x92, 0x00, 0x1A, 0x83, 0xEF, 0x3A, 0xFF, 0x3A, 0x5A, 0x83, 0xE4, 0xE7, 0x50, 0xE0, 0x10, 0x00, -0x15, 0x28, 0x09, 0x00, 0x68, 0x9E, 0x16, 0x00, 0x70, 0xB5, 0x0C, 0x00, 0x0B, 0x4A, 0x8C, 0x23, 0xD3, 0x5C, 0x0C, 0x25, -0x01, 0x2B, 0x05, 0xD0, 0x29, 0x00, 0x20, 0x00, 0xFF, 0xF7, 0x18, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0xA4, 0xF7, 0xB8, 0xFC, -0x05, 0x1E, 0xF5, 0xD0, 0x04, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEE, 0xE7, 0xC0, 0x46, -0x68, 0x9E, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x1B, 0x78, 0x01, 0x21, 0x99, 0x42, -0x9B, 0x41, 0x11, 0x31, 0x19, 0x40, 0xFF, 0xF7, 0xFB, 0xF8, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x00, 0x70, 0xB5, 0x05, 0x00, -0x08, 0x00, 0x1C, 0x00, 0x47, 0x4B, 0x9C, 0x42, 0x43, 0xD0, 0x23, 0xD8, 0x46, 0x4B, 0x9C, 0x42, 0x51, 0xD0, 0x13, 0xD8, -0x45, 0x4B, 0x9C, 0x42, 0x45, 0xD0, 0x45, 0x4B, 0x9C, 0x42, 0x04, 0xD1, 0x43, 0x49, 0xFF, 0xF7, 0x43, 0xF9, 0x00, 0x25, -0x6A, 0xE0, 0x42, 0x4B, 0x9C, 0x42, 0x00, 0xD0, 0x70, 0xE0, 0x40, 0x49, 0xFF, 0xF7, 0xB6, 0xFF, 0x00, 0x25, 0x61, 0xE0, -0x3E, 0x4B, 0x9C, 0x42, 0x3E, 0xD0, 0x3E, 0x4B, 0x9C, 0x42, 0x65, 0xD1, 0x3C, 0x49, 0x00, 0x20, 0xFF, 0xF7, 0x16, 0xFE, -0x00, 0x25, 0x55, 0xE0, 0x3A, 0x4B, 0x9C, 0x42, 0x20, 0xD0, 0x0A, 0xD9, 0x39, 0x4B, 0x9C, 0x42, 0x12, 0xD0, 0x39, 0x4B, -0x9C, 0x42, 0x55, 0xD1, 0x19, 0x00, 0xFF, 0xF7, 0xDB, 0xF8, 0x00, 0x25, 0x46, 0xE0, 0x36, 0x4B, 0x9C, 0x42, 0x28, 0xD0, -0x35, 0x4B, 0x9C, 0x42, 0x2A, 0xD1, 0x34, 0x49, 0xFF, 0xF7, 0x84, 0xFE, 0x00, 0x25, 0x3B, 0xE0, 0x2E, 0x49, 0xFF, 0xF7, -0x01, 0xF9, 0x00, 0x25, 0x36, 0xE0, 0x24, 0x49, 0xFF, 0xF7, 0x42, 0xFE, 0x00, 0x25, 0x31, 0xE0, 0x28, 0x49, 0xFF, 0xF7, -0x15, 0xFF, 0x00, 0x25, 0x2C, 0xE0, 0x00, 0x23, 0x0B, 0x73, 0x20, 0x4B, 0x28, 0x00, 0x29, 0x4D, 0xA8, 0x47, 0x05, 0x00, -0x24, 0xE0, 0x1C, 0x49, 0xFF, 0xF7, 0x3A, 0xFF, 0x00, 0x25, 0x1F, 0xE0, 0x1D, 0x49, 0xFF, 0xF7, 0x47, 0xFF, 0x00, 0x25, -0x1A, 0xE0, 0x20, 0x49, 0xFF, 0xF7, 0x88, 0xFF, 0x00, 0x25, 0x15, 0xE0, 0x23, 0x00, 0x28, 0x00, 0x1E, 0x4D, 0xA8, 0x47, -0x05, 0x00, 0x1E, 0x4B, 0x9C, 0x42, 0x05, 0xD0, 0x1D, 0x4B, 0x08, 0x22, 0x21, 0x00, 0x91, 0x43, 0x99, 0x42, 0x04, 0xD1, -0x02, 0x20, 0xF9, 0xF7, 0x81, 0xFC, 0xFA, 0xF7, 0x63, 0xF9, 0x19, 0x4B, 0x9C, 0x42, 0x05, 0xD0, 0x21, 0x00, 0x18, 0x48, -0x7C, 0xF7, 0x40, 0xF9, 0x28, 0x00, 0x70, 0xBD, 0x01, 0x20, 0xF9, 0xF7, 0x73, 0xFC, 0xF5, 0xE7, 0x23, 0x00, 0x01, 0x00, -0x28, 0x00, 0x0E, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0xE0, 0xE7, 0xC0, 0x46, 0x02, 0x18, 0x00, 0x00, 0x18, 0x0C, 0x00, 0x00, -0x05, 0x04, 0x00, 0x00, 0x13, 0x0C, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x1A, 0x0C, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, -0xC6, 0xFC, 0x00, 0x00, 0xC7, 0xFC, 0x00, 0x00, 0xC9, 0xFC, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x70, 0xFC, 0x00, 0x00, -0x1D, 0x0C, 0x09, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x6C, 0xD2, 0x10, 0x00, -0x70, 0xB5, 0x0D, 0x00, 0x14, 0x00, 0x04, 0x23, 0x02, 0x00, 0x00, 0x21, 0x03, 0x48, 0x7A, 0xF7, 0x03, 0xF8, 0x05, 0x70, -0x44, 0x80, 0xCB, 0xF7, 0x5F, 0xFE, 0x70, 0xBD, 0x01, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x10, 0x00, 0x1A, 0x88, -0x0C, 0x21, 0xFF, 0xF7, 0xE9, 0xFF, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, -0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x80, 0x46, 0x0C, 0x00, 0x91, 0x46, 0x0F, 0x0A, 0xBA, 0x00, 0x2E, 0x4B, 0xD5, 0x58, -0x08, 0x00, 0x7A, 0xF7, 0xB7, 0xFB, 0x02, 0x26, 0x00, 0x28, 0x19, 0xD0, 0x36, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x4F, 0xD0, -0x3C, 0x23, 0xEE, 0x5C, 0x02, 0x2E, 0x03, 0xD1, 0x43, 0x46, 0x5B, 0x88, 0x00, 0x2B, 0x1B, 0xD1, 0xFA, 0x21, 0x49, 0x01, -0xA9, 0x83, 0xFF, 0xB2, 0x36, 0x23, 0xEA, 0x5C, 0x38, 0x00, 0xA1, 0xF7, 0x6D, 0xFE, 0xA9, 0x8B, 0x38, 0x00, 0xAB, 0xF7, -0x31, 0xFC, 0x00, 0x26, 0x43, 0x46, 0x1A, 0x88, 0x31, 0x00, 0x48, 0x46, 0xFF, 0xF7, 0xB2, 0xFF, 0x00, 0x20, 0x03, 0xB0, -0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xFB, 0xB2, 0x9B, 0x46, 0x06, 0x23, 0x6B, 0x44, -0x9A, 0x46, 0x6B, 0x46, 0x5A, 0x1D, 0x51, 0x46, 0x58, 0x46, 0x8B, 0xF7, 0x65, 0xFE, 0x43, 0x46, 0x5A, 0x88, 0x53, 0x46, -0x19, 0x88, 0x8A, 0x42, 0x13, 0xD9, 0x6B, 0x46, 0x05, 0x33, 0x1B, 0x78, 0x00, 0x2B, 0xCD, 0xD0, 0x4B, 0x43, 0x9A, 0x42, -0xCA, 0xD8, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x58, 0x46, 0xAB, 0xF7, 0x73, 0xFA, 0x22, 0x00, 0x21, 0x00, 0x07, 0x48, -0x79, 0xF7, 0xD2, 0xFF, 0xBE, 0xE7, 0x43, 0x46, 0x1A, 0x88, 0x12, 0x21, 0x48, 0x46, 0xFF, 0xF7, 0x7F, 0xFF, 0xC5, 0xE7, -0x0C, 0x26, 0xC3, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0x22, 0x06, 0x00, 0x00, 0xF0, 0xB5, 0x93, 0xB0, 0x01, 0x90, 0x0C, 0x00, -0x16, 0x00, 0x0F, 0x0A, 0xBA, 0x00, 0x37, 0x4B, 0xD5, 0x58, 0x08, 0x00, 0x7A, 0xF7, 0x4E, 0xFB, 0x04, 0x28, 0x06, 0xD0, -0x09, 0x28, 0x18, 0xD0, 0x0C, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x42, 0xFB, 0x10, 0xE0, 0x3C, 0x22, 0x30, 0x49, 0x03, 0xA8, -0xD0, 0xF7, 0x62, 0xFE, 0x00, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x38, 0xFB, 0x2D, 0x4A, 0xE8, 0x23, 0xD5, 0x58, 0x03, 0xAB, -0x01, 0x22, 0x01, 0x21, 0x20, 0x00, 0xA8, 0x47, 0x00, 0x20, 0x13, 0xB0, 0xF0, 0xBD, 0x21, 0x00, 0x28, 0x48, 0x79, 0xF7, -0x0F, 0xFF, 0x01, 0x21, 0x20, 0x00, 0x7A, 0xF7, 0xC9, 0xFA, 0x00, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x21, 0xFB, 0xBC, 0x23, -0x5B, 0x00, 0xEB, 0x5C, 0xDB, 0x43, 0x9B, 0x07, 0x21, 0xD1, 0x00, 0x23, 0x01, 0x9A, 0x93, 0x71, 0xFF, 0xB2, 0x29, 0x00, -0x38, 0x31, 0x38, 0x00, 0x88, 0xF7, 0x70, 0xF9, 0x00, 0x28, 0x1C, 0xD0, 0x1B, 0x48, 0x7C, 0xF7, 0x3F, 0xF8, 0x01, 0x23, -0xAF, 0x22, 0x92, 0x00, 0xAB, 0x54, 0x43, 0x22, 0xAB, 0x54, 0x20, 0x00, 0x93, 0xF7, 0xA0, 0xF9, 0x88, 0xF7, 0x64, 0xFA, -0x00, 0x28, 0x19, 0xD1, 0xC4, 0x20, 0x22, 0x00, 0x21, 0x00, 0xC0, 0x00, 0x79, 0xF7, 0x68, 0xFF, 0xC8, 0xE7, 0x22, 0x00, -0x21, 0x00, 0x10, 0x48, 0x79, 0xF7, 0x62, 0xFF, 0xD7, 0xE7, 0x0F, 0x48, 0x7C, 0xF7, 0x22, 0xF8, 0x44, 0x23, 0x01, 0x22, -0xEA, 0x54, 0x0B, 0x3B, 0xEA, 0x5C, 0x33, 0x21, 0x38, 0x00, 0xA1, 0xF7, 0x39, 0xFC, 0xE1, 0xE7, 0x22, 0x00, 0x21, 0x00, -0x08, 0x48, 0x79, 0xF7, 0x4F, 0xFF, 0xDF, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0x80, 0xD6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, -0x06, 0x06, 0x00, 0x00, 0x74, 0xD2, 0x10, 0x00, 0x14, 0x06, 0x00, 0x00, 0x7C, 0xD2, 0x10, 0x00, 0x1D, 0x06, 0x00, 0x00, -0x70, 0xB5, 0x04, 0x00, 0x0E, 0x00, 0x15, 0x00, 0x41, 0x88, 0x80, 0x23, 0x1B, 0x01, 0x99, 0x42, 0x06, 0xD3, 0x22, 0x88, -0x0C, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0xE4, 0xFE, 0x00, 0x20, 0x70, 0xBD, 0x03, 0x48, 0x7B, 0xF7, 0xEF, 0xFF, 0x30, 0x0A, -0x00, 0x21, 0xAB, 0xF7, 0xA7, 0xF8, 0xF0, 0xE7, 0x84, 0xD2, 0x10, 0x00, 0x70, 0xB5, 0x0E, 0x00, 0x15, 0x00, 0x07, 0x23, -0x02, 0x00, 0x00, 0x21, 0x06, 0x48, 0x79, 0xF7, 0xDB, 0xFE, 0x04, 0x00, 0x06, 0x70, 0x01, 0x30, 0x06, 0x22, 0x29, 0x00, -0xD0, 0xF7, 0xCC, 0xFD, 0x20, 0x00, 0xCB, 0xF7, 0x31, 0xFD, 0x70, 0xBD, 0x01, 0x11, 0x00, 0x00, 0xF0, 0xB5, 0x83, 0xB0, -0x01, 0x90, 0x0D, 0x00, 0x16, 0x00, 0x0F, 0x0A, 0xBA, 0x00, 0x22, 0x4B, 0xD4, 0x58, 0x08, 0x00, 0x7A, 0xF7, 0x98, 0xFA, -0x00, 0x28, 0x1A, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x16, 0xD9, 0x88, 0x23, 0xFF, 0x33, 0xE3, 0x5C, 0x00, 0x2B, -0x03, 0xD1, 0x36, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x14, 0xD0, 0x00, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x81, 0xFA, 0x36, 0x23, -0xE3, 0x5C, 0x00, 0x2B, 0x11, 0xD1, 0x2A, 0x00, 0x29, 0x00, 0x14, 0x48, 0x79, 0xF7, 0xE6, 0xFE, 0x03, 0xE0, 0x02, 0x21, -0x30, 0x00, 0x91, 0xF7, 0x73, 0xFA, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0x0C, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x6C, 0xFA, -0xF7, 0xE7, 0x06, 0x23, 0x1C, 0x22, 0x00, 0x21, 0x0B, 0x48, 0x79, 0xF7, 0x93, 0xFE, 0x05, 0x00, 0x00, 0x23, 0x03, 0x70, -0x01, 0x9B, 0x1B, 0x88, 0x43, 0x80, 0xF8, 0xB2, 0xAB, 0xF7, 0x32, 0xFA, 0xC0, 0x03, 0x40, 0x0C, 0xA8, 0x80, 0x28, 0x00, -0xCB, 0xF7, 0xE4, 0xFC, 0xE1, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x16, 0x06, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, -0xF0, 0xB5, 0x83, 0xB0, 0x01, 0x90, 0x0D, 0x00, 0x16, 0x00, 0x0B, 0x0A, 0x9B, 0x00, 0x31, 0x4A, 0x9F, 0x58, 0x08, 0x00, -0x7A, 0xF7, 0x46, 0xFA, 0x00, 0x28, 0x53, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x02, 0x24, 0x03, 0x28, 0x4F, 0xD9, 0x01, 0x99, -0x4B, 0x88, 0xA8, 0x22, 0xD2, 0x00, 0x10, 0x34, 0x93, 0x42, 0x48, 0xD8, 0xDA, 0x07, 0x46, 0xD4, 0x8A, 0x88, 0x05, 0x2A, -0x43, 0xD9, 0xD0, 0x07, 0x41, 0xD4, 0x08, 0x00, 0xC9, 0x88, 0x00, 0x29, 0x3D, 0xD0, 0x00, 0x89, 0x84, 0x46, 0x28, 0x28, -0x39, 0xD8, 0x58, 0x08, 0x81, 0x42, 0x36, 0xD8, 0x93, 0x42, 0x34, 0xD3, 0x61, 0x44, 0x49, 0x00, 0x99, 0x42, 0x30, 0xD2, -0x7B, 0x8C, 0x06, 0x3C, 0x5B, 0x07, 0x2C, 0xD5, 0x3C, 0x23, 0xFC, 0x5C, 0x00, 0x2C, 0x01, 0xD0, 0x0C, 0x24, 0x26, 0xE0, -0x38, 0x00, 0x54, 0x30, 0x07, 0x21, 0xA1, 0xF7, 0x47, 0xFA, 0x00, 0x28, 0x01, 0xD1, 0x1A, 0x24, 0x1D, 0xE0, 0x08, 0x23, -0x2A, 0x00, 0x29, 0x00, 0x11, 0x48, 0x79, 0xF7, 0x31, 0xFE, 0x01, 0x9B, 0x5A, 0x88, 0x02, 0x80, 0x9B, 0x88, 0x43, 0x80, -0xC0, 0x21, 0x49, 0x00, 0x8A, 0x42, 0x00, 0xD9, 0x01, 0x80, 0xC0, 0x22, 0x52, 0x00, 0x93, 0x42, 0x00, 0xD9, 0x42, 0x80, -0x01, 0x9A, 0xD3, 0x88, 0x83, 0x80, 0x13, 0x89, 0xC3, 0x80, 0x79, 0xF7, 0x45, 0xFE, 0x00, 0xE0, 0x02, 0x24, 0x21, 0x00, -0x30, 0x00, 0x91, 0xF7, 0xE7, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0x64, 0xA2, 0x16, 0x00, 0x0D, 0x06, 0x00, 0x00, -0x70, 0xB5, 0x04, 0x00, 0x08, 0x00, 0x15, 0x00, 0x0B, 0x0A, 0x9B, 0x00, 0x0F, 0x4A, 0x9E, 0x58, 0x7A, 0xF7, 0xDA, 0xF9, -0x02, 0x21, 0x00, 0x28, 0x10, 0xD0, 0x63, 0x88, 0xF0, 0x22, 0x10, 0x31, 0x1A, 0x42, 0x0B, 0xD1, 0xE6, 0x3A, 0x01, 0x39, -0x1A, 0x42, 0x07, 0xD1, 0x73, 0x84, 0x2C, 0x32, 0xB1, 0x5C, 0x00, 0x29, 0x08, 0xD1, 0x35, 0x3A, 0x93, 0x43, 0x73, 0x84, -0x22, 0x88, 0x28, 0x00, 0xFF, 0xF7, 0xE0, 0xFD, 0x00, 0x20, 0x70, 0xBD, 0x00, 0x21, 0xF7, 0xE7, 0x64, 0xA2, 0x16, 0x00, -0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x80, 0xB5, 0x83, 0xB0, 0x01, 0x90, 0x0E, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x4B, 0x4B, -0x9C, 0x42, 0x5D, 0xD0, 0x0E, 0xD9, 0x4A, 0x4B, 0x9C, 0x42, 0x67, 0xD0, 0x42, 0xD9, 0x49, 0x4B, 0x9C, 0x42, 0x00, 0xD0, -0x81, 0xE0, 0x47, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0xDA, 0xFD, 0x00, 0x25, 0x43, 0xE0, 0x44, 0x4B, 0x9C, 0x42, -0x69, 0xD0, 0x01, 0x33, 0x9C, 0x42, 0x13, 0xD3, 0x42, 0x4B, 0xE3, 0x18, 0x9B, 0xB2, 0x03, 0x2B, 0x00, 0xD9, 0x6E, 0xE0, -0x10, 0x00, 0x7A, 0xF7, 0x91, 0xF9, 0x43, 0x28, 0x51, 0xD8, 0x41, 0x28, 0x51, 0xD8, 0x32, 0x00, 0x0C, 0x21, 0x20, 0x00, -0xFF, 0xF7, 0xCE, 0xFE, 0x00, 0x25, 0x29, 0xE0, 0x39, 0x4B, 0x9C, 0x42, 0x37, 0xD0, 0x39, 0x4B, 0x9C, 0x42, 0x5A, 0xD1, -0x38, 0x48, 0x7B, 0xF7, 0xAB, 0xFE, 0xB5, 0x1D, 0x16, 0x23, 0x9A, 0x46, 0xB2, 0x44, 0x36, 0x4B, 0x99, 0x46, 0x29, 0x78, -0x48, 0x46, 0x7B, 0xF7, 0xA1, 0xFE, 0x01, 0x35, 0x55, 0x45, 0xF8, 0xD1, 0x2F, 0x4B, 0x3A, 0x00, 0x31, 0x00, 0x01, 0x98, -0x30, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0x0B, 0xE0, 0x2F, 0x4B, 0x9C, 0x42, 0x38, 0xD0, 0x2F, 0x4B, 0x9C, 0x42, 0x3C, 0xD1, -0x2D, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0x8B, 0xFD, 0x00, 0x25, 0x21, 0x00, 0x2B, 0x48, 0x7B, 0xF7, 0x86, 0xFE, -0x28, 0x00, 0x03, 0xB0, 0x0C, 0xBC, 0x91, 0x46, 0x9A, 0x46, 0xF0, 0xBD, 0x1A, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, -0xFB, 0xFE, 0x00, 0x25, 0xEE, 0xE7, 0x1C, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0xEC, 0xFD, 0x05, 0x00, 0xE7, 0xE7, -0x14, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0x6B, 0xFE, 0x05, 0x00, 0xE0, 0xE7, 0x4A, 0x28, 0xAD, 0xD1, 0x23, 0x00, -0x3A, 0x00, 0x31, 0x00, 0x01, 0x98, 0x16, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0xD6, 0xE7, 0x0E, 0x4A, 0x39, 0x00, 0x30, 0x00, -0xFF, 0xF7, 0x8A, 0xFE, 0x05, 0x00, 0xCF, 0xE7, 0x11, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0x43, 0xFF, 0x05, 0x00, -0xC8, 0xE7, 0x23, 0x00, 0x3A, 0x00, 0x31, 0x00, 0x01, 0x98, 0x0B, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0xC0, 0xE7, 0xC0, 0x46, -0x03, 0x08, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0C, 0x00, 0x00, 0x1F, 0x04, 0x00, 0x00, 0xD4, 0xFB, 0xFF, 0xFF, -0x09, 0x04, 0x00, 0x00, 0x0B, 0x04, 0x00, 0x00, 0x90, 0xD2, 0x10, 0x00, 0x98, 0xD2, 0x10, 0x00, 0xC1, 0xDB, 0x09, 0x00, -0x0D, 0x08, 0x00, 0x00, 0x11, 0x08, 0x00, 0x00, 0x9C, 0xD2, 0x10, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x1B, 0x78, -0x00, 0x21, 0x01, 0x2B, 0x00, 0xD9, 0x12, 0x31, 0xB2, 0xF7, 0x7C, 0xFF, 0x00, 0x20, 0x10, 0xBD, 0x10, 0xB5, 0x08, 0x00, -0x00, 0x21, 0xB2, 0xF7, 0x75, 0xFF, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, -0x45, 0x46, 0xE0, 0xB5, 0xAD, 0xB0, 0x04, 0x00, 0x0D, 0x00, 0x02, 0xAB, 0x00, 0x22, 0xDA, 0x71, 0x60, 0x32, 0x00, 0x21, -0x14, 0xA8, 0x77, 0xF7, 0x8B, 0xFD, 0x9B, 0x4A, 0x9B, 0x4B, 0xD3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, 0xC8, 0xE1, 0x99, 0x4B, -0x02, 0x21, 0xD1, 0x54, 0x02, 0xAB, 0x00, 0x21, 0xD9, 0x71, 0x44, 0x32, 0x00, 0x20, 0x00, 0x23, 0x01, 0x26, 0x11, 0x78, -0x05, 0x29, 0x26, 0xD0, 0x01, 0x33, 0xDB, 0xB2, 0x40, 0x32, 0x30, 0x00, 0x0C, 0x2B, 0xF6, 0xD1, 0x02, 0xAB, 0x0C, 0x22, -0xDA, 0x71, 0x27, 0x78, 0x00, 0x2F, 0x24, 0xD0, 0x60, 0x7A, 0x07, 0x23, 0x07, 0x00, 0x9F, 0x43, 0x00, 0x97, 0x00, 0xD0, -0xB5, 0xE1, 0x8A, 0x49, 0x0F, 0x22, 0x02, 0x40, 0x03, 0x09, 0x8E, 0x5C, 0xCB, 0x5C, 0xF6, 0x18, 0xF6, 0xB2, 0x00, 0x2E, -0x61, 0xDD, 0x23, 0x00, 0x0A, 0x33, 0x3A, 0x00, 0x02, 0x37, 0x07, 0x40, 0x01, 0x21, 0x01, 0x40, 0xA4, 0x46, 0x0C, 0x00, -0x1E, 0xE0, 0x00, 0x28, 0x01, 0xD0, 0x02, 0xAA, 0xD3, 0x71, 0x0C, 0x21, 0x00, 0x27, 0x0B, 0x2B, 0x00, 0xD8, 0x8D, 0xE1, -0xD7, 0xE7, 0xA1, 0x78, 0xE0, 0x1C, 0xB2, 0xF7, 0x35, 0xFF, 0x0B, 0x21, 0x00, 0x28, 0x00, 0xD0, 0x84, 0xE1, 0xD1, 0xE7, -0x59, 0x88, 0x18, 0x88, 0x81, 0x42, 0x46, 0xD8, 0x03, 0x29, 0x44, 0xD9, 0x03, 0x28, 0x42, 0xD9, 0x01, 0x32, 0x10, 0x33, -0xB2, 0x42, 0x04, 0xDA, 0x00, 0x2F, 0xF1, 0xD0, 0x94, 0x42, 0xEF, 0xD1, 0xF6, 0xE7, 0x64, 0x46, 0x23, 0x00, 0x0E, 0x33, -0x00, 0x98, 0xC8, 0x22, 0x12, 0x01, 0x91, 0x46, 0x6B, 0x4A, 0x92, 0x46, 0xFA, 0x22, 0x52, 0x00, 0x93, 0x46, 0xA4, 0x46, -0xA8, 0x46, 0x1F, 0x88, 0x5A, 0x88, 0x97, 0x42, 0x2D, 0xD8, 0x1D, 0x89, 0x59, 0x89, 0x8D, 0x42, 0x29, 0xD8, 0xD9, 0x88, -0x05, 0x2F, 0x26, 0xD9, 0x4A, 0x45, 0x24, 0xD8, 0x0F, 0x00, 0x0A, 0x3F, 0xBF, 0xB2, 0x57, 0x45, 0x1F, 0xD8, 0x9F, 0x88, -0x5F, 0x45, 0x1C, 0xD2, 0x8C, 0x00, 0x61, 0x18, 0x49, 0x00, 0x01, 0x37, 0x57, 0x43, 0xBA, 0x00, 0xD2, 0x19, 0x01, 0x32, -0x52, 0x10, 0x91, 0x42, 0x11, 0xDB, 0x01, 0x30, 0x10, 0x33, 0xB0, 0x42, 0xDB, 0xDB, 0x64, 0x46, 0x45, 0x46, 0xA3, 0x78, -0x01, 0x2B, 0x0F, 0xD9, 0x12, 0x21, 0x00, 0x27, 0x38, 0xE1, 0x64, 0x46, 0x96, 0x42, 0xC3, 0xDD, 0x12, 0x21, 0x00, 0x27, -0x32, 0xE1, 0x64, 0x46, 0x45, 0x46, 0x86, 0x42, 0xEF, 0xDD, 0x12, 0x21, 0x00, 0x27, 0x2B, 0xE1, 0x63, 0x78, 0x03, 0x2B, -0x00, 0xD9, 0x35, 0xE1, 0xDB, 0x07, 0x06, 0xD5, 0x49, 0x49, 0x4A, 0x48, 0x7B, 0xF7, 0x98, 0xFD, 0x00, 0x28, 0x00, 0xD0, -0x2F, 0xE1, 0x02, 0xAB, 0xD8, 0x1D, 0xB3, 0xF7, 0x71, 0xF9, 0x01, 0x00, 0x01, 0x90, 0x00, 0x27, 0x00, 0x28, 0x00, 0xD0, -0x14, 0xE1, 0x00, 0x2E, 0x00, 0xDC, 0x25, 0xE1, 0x0E, 0x23, 0x99, 0x46, 0xA1, 0x44, 0x14, 0xAF, 0x00, 0x9B, 0x9A, 0x46, -0x00, 0x23, 0x9B, 0x46, 0xA0, 0x46, 0x4C, 0x46, 0xA9, 0x46, 0x55, 0x46, 0x13, 0xE0, 0x78, 0x60, 0x39, 0x60, 0xBA, 0x60, -0xFB, 0x60, 0x5B, 0x46, 0xBB, 0x74, 0xFB, 0x74, 0x02, 0xAB, 0xDB, 0x79, 0x3B, 0x82, 0x38, 0x00, 0xCF, 0xF7, 0xCA, 0xFA, -0x00, 0x28, 0x18, 0xD1, 0x01, 0x35, 0x10, 0x34, 0x20, 0x37, 0xB5, 0x42, 0x24, 0xDA, 0x23, 0x00, 0x21, 0x88, 0x49, 0x00, -0x22, 0x89, 0x8A, 0x42, 0x00, 0xD9, 0x0A, 0x00, 0x02, 0x2A, 0x00, 0xD2, 0x02, 0x22, 0x58, 0x88, 0x40, 0x00, 0x5B, 0x89, -0x83, 0x42, 0x00, 0xD9, 0x03, 0x00, 0x93, 0x42, 0xD9, 0xD2, 0x13, 0x00, 0xD7, 0xE7, 0xAA, 0x46, 0x44, 0x46, 0x4D, 0x46, -0x51, 0x46, 0x25, 0x48, 0x7B, 0xF7, 0x10, 0xFD, 0x51, 0x46, 0x24, 0x48, 0x7B, 0xF7, 0x0C, 0xFD, 0x01, 0x9F, 0x3B, 0x21, -0x56, 0x45, 0x00, 0xDD, 0xCC, 0xE0, 0x06, 0xE0, 0xAA, 0x46, 0x44, 0x46, 0x4D, 0x46, 0x51, 0x46, 0x1D, 0x48, 0x7B, 0xF7, -0xFF, 0xFC, 0x02, 0xAB, 0xDA, 0x79, 0x92, 0x01, 0x13, 0x4B, 0x9B, 0x18, 0x9B, 0x68, 0x00, 0x2B, 0x05, 0xD0, 0x19, 0x4B, -0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x60, 0x78, 0x02, 0x28, 0x2D, 0xD0, 0x0E, 0xD8, 0x00, 0x28, -0x2A, 0xD0, 0x0B, 0x49, 0x02, 0xAB, 0xD8, 0x79, 0x80, 0x01, 0x08, 0x18, 0x0C, 0x30, 0x11, 0x4B, 0x9C, 0x46, 0x61, 0x44, -0x06, 0x22, 0xD0, 0xF7, 0xD3, 0xFA, 0x2B, 0xE0, 0x03, 0x28, 0xF0, 0xD0, 0x0B, 0x4B, 0xDF, 0x6E, 0x00, 0x23, 0x1A, 0x00, -0x19, 0x00, 0xB8, 0x47, 0x22, 0xE0, 0xC0, 0x46, 0xEC, 0xA4, 0x16, 0x00, 0x6D, 0x04, 0x00, 0x00, 0xE4, 0x98, 0x0D, 0x00, -0x76, 0x0C, 0x00, 0x00, 0xB4, 0x98, 0x0D, 0x00, 0xFA, 0xA7, 0x16, 0x00, 0xA4, 0xD2, 0x10, 0x00, 0xB0, 0xD2, 0x10, 0x00, -0x28, 0x19, 0x16, 0x00, 0x0E, 0x03, 0x00, 0x00, 0x4E, 0x4A, 0x02, 0xAB, 0x07, 0x33, 0x1B, 0x78, 0x9B, 0x01, 0xD3, 0x18, -0xC2, 0x21, 0x89, 0x00, 0x8C, 0x46, 0x62, 0x44, 0x11, 0x68, 0xD9, 0x60, 0x92, 0x88, 0x1A, 0x82, 0x02, 0xAB, 0x07, 0x33, -0x1B, 0x78, 0x46, 0x4F, 0x9A, 0x01, 0xBA, 0x18, 0x94, 0x60, 0x01, 0x33, 0x9B, 0x01, 0xFB, 0x18, 0x05, 0x22, 0x1A, 0x71, -0xE1, 0x1C, 0x01, 0x32, 0x0E, 0x20, 0x02, 0xAB, 0x9C, 0x46, 0x60, 0x44, 0xD0, 0xF7, 0x92, 0xFA, 0x3E, 0x4B, 0xF9, 0x18, -0x05, 0x22, 0x07, 0xA8, 0xD0, 0xF7, 0x8C, 0xFA, 0x67, 0x7A, 0x04, 0xAB, 0x9F, 0x74, 0x00, 0x2E, 0x17, 0xDD, 0x22, 0x00, -0x0A, 0x32, 0x14, 0xA9, 0x10, 0x88, 0x18, 0x83, 0x50, 0x88, 0x58, 0x83, 0x48, 0x69, 0x40, 0x08, 0x98, 0x83, 0x88, 0x69, -0xD8, 0x83, 0x10, 0x89, 0x18, 0x84, 0x50, 0x89, 0x58, 0x84, 0x00, 0x98, 0x01, 0x30, 0x00, 0x90, 0x10, 0x32, 0x0C, 0x33, -0x20, 0x31, 0xB0, 0x42, 0xEA, 0xDB, 0x05, 0x23, 0x3B, 0x40, 0x05, 0x2B, 0x20, 0xD0, 0x02, 0xAB, 0x07, 0x33, 0x1B, 0x78, -0x04, 0xA8, 0xC3, 0x74, 0x62, 0x78, 0x02, 0x75, 0xA2, 0x78, 0x42, 0x75, 0x22, 0x78, 0x82, 0x75, 0x24, 0x4A, 0x9B, 0x01, -0xD3, 0x18, 0xD9, 0x68, 0x04, 0x91, 0x1B, 0x8A, 0x83, 0x80, 0x01, 0x23, 0x43, 0x74, 0x22, 0x4B, 0xD2, 0x5C, 0x3C, 0x23, -0xC2, 0x54, 0xC7, 0xF7, 0x29, 0xFF, 0x01, 0x00, 0x01, 0x27, 0x00, 0x28, 0x1E, 0xD0, 0x03, 0x21, 0x01, 0x27, 0x1B, 0xE0, -0x01, 0x3E, 0x04, 0xA8, 0x43, 0x8B, 0x0C, 0x22, 0x72, 0x43, 0x82, 0x18, 0x51, 0x8B, 0x5F, 0x18, 0x02, 0x8B, 0xBA, 0x42, -0x00, 0xD2, 0x07, 0x83, 0x0C, 0x22, 0x72, 0x43, 0x04, 0xA8, 0x84, 0x46, 0x62, 0x44, 0x12, 0x8B, 0xBA, 0x42, 0xCA, 0xD2, -0x0C, 0x22, 0x72, 0x43, 0x62, 0x44, 0x5B, 0x18, 0x13, 0x83, 0xC4, 0xE7, 0x0C, 0x21, 0x00, 0x27, 0x28, 0x00, 0xB2, 0xF7, -0x9B, 0xFD, 0x38, 0x00, 0x2D, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x12, 0x21, -0x00, 0x27, 0xF1, 0xE7, 0x12, 0x21, 0x00, 0x27, 0xEE, 0xE7, 0x12, 0x21, 0x00, 0x27, 0xEB, 0xE7, 0x00, 0x9B, 0x9A, 0x46, -0x1F, 0xE7, 0xC0, 0x46, 0xEC, 0xA4, 0x16, 0x00, 0x19, 0x03, 0x00, 0x00, 0xD6, 0x03, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, -0x00, 0xB5, 0x80, 0x46, 0x0D, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x58, 0x4B, 0xE3, 0x18, 0x9A, 0xB2, 0x39, 0x2A, 0x00, 0xD9, -0x90, 0xE0, 0x93, 0x00, 0x55, 0x4A, 0xD3, 0x58, 0x9F, 0x46, 0x02, 0x20, 0xF8, 0xF7, 0x40, 0xFF, 0x53, 0x4B, 0x00, 0x22, -0x44, 0x21, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, -0x00, 0x26, 0x7C, 0xE0, 0x01, 0x20, 0xF8, 0xF7, 0x2F, 0xFF, 0x4B, 0x4B, 0x11, 0x22, 0x44, 0x21, 0x5A, 0x54, 0x40, 0x31, -0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x00, 0x26, 0x6B, 0xE0, 0x45, 0x4B, -0x1B, 0x78, 0x00, 0x26, 0x00, 0x2B, 0x66, 0xD0, 0x43, 0x49, 0x28, 0x00, 0xFF, 0xF7, 0xB0, 0xFD, 0x05, 0x00, 0x21, 0x00, -0x41, 0x48, 0x7B, 0xF7, 0xDB, 0xFB, 0x41, 0x4B, 0x9C, 0x42, 0x6E, 0xD1, 0x00, 0x26, 0x3B, 0x4A, 0x3F, 0x4B, 0x00, 0x21, -0xD1, 0x54, 0x62, 0xE0, 0x39, 0x4B, 0x1B, 0x78, 0x00, 0x26, 0x00, 0x2B, 0x4F, 0xD0, 0x00, 0x21, 0x3B, 0x48, 0xB2, 0xF7, -0x1F, 0xFD, 0x00, 0x25, 0xE7, 0xE7, 0x4B, 0x78, 0x02, 0x2B, 0x27, 0xD0, 0x38, 0x4E, 0x05, 0x22, 0xFF, 0x21, 0x30, 0x00, -0x77, 0xF7, 0x3E, 0xFB, 0x36, 0x4B, 0xF3, 0x18, 0x36, 0x49, 0x58, 0x5C, 0x1F, 0x22, 0x02, 0x40, 0x5A, 0x54, 0x35, 0x4B, -0x1B, 0x78, 0xEB, 0x81, 0x2B, 0x82, 0x12, 0x23, 0xAB, 0x81, 0x6B, 0x7A, 0x9A, 0x07, 0x07, 0xD5, 0x02, 0x22, 0x93, 0x43, -0x6B, 0x72, 0x12, 0x23, 0xAB, 0x83, 0x6B, 0x8B, 0x9B, 0x00, 0x6B, 0x83, 0x6B, 0x7A, 0x00, 0x26, 0x5B, 0x07, 0x24, 0xD5, -0x12, 0x23, 0xAB, 0x85, 0x6B, 0x8D, 0x5B, 0x00, 0x6B, 0x85, 0x1E, 0xE0, 0x00, 0x23, 0x4B, 0x70, 0xD4, 0xE7, 0x23, 0x4E, -0x05, 0x22, 0xFF, 0x21, 0x30, 0x00, 0x77, 0xF7, 0x13, 0xFB, 0x21, 0x4B, 0xF0, 0x18, 0x21, 0x4A, 0x81, 0x5C, 0x1F, 0x23, -0x0B, 0x40, 0x83, 0x54, 0x20, 0x4B, 0xC6, 0x5C, 0x00, 0x2E, 0x0A, 0xD0, 0x13, 0x4A, 0x00, 0x21, 0xD1, 0x54, 0x06, 0xE0, -0x11, 0x4A, 0x16, 0x4B, 0x00, 0x21, 0xD1, 0x54, 0x00, 0x26, 0x00, 0xE0, 0x00, 0x26, 0x23, 0x00, 0x3A, 0x00, 0x29, 0x00, -0x40, 0x46, 0x18, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0x21, 0x00, 0x0D, 0x48, 0x7B, 0xF7, 0x72, 0xFB, 0x0C, 0x4B, 0x9C, 0x42, -0x97, 0xD0, 0x00, 0x2E, 0x03, 0xD0, 0x06, 0x4A, 0x10, 0x4B, 0x01, 0x21, 0xD1, 0x54, 0x28, 0x00, 0x04, 0xBC, 0x90, 0x46, -0xF0, 0xBD, 0xC0, 0x46, 0xF6, 0xDF, 0xFF, 0xFF, 0xC4, 0xD2, 0x10, 0x00, 0xEC, 0xA4, 0x16, 0x00, 0x60, 0xE6, 0x10, 0x00, -0x0A, 0x20, 0x00, 0x00, 0xB8, 0xD2, 0x10, 0x00, 0x3B, 0x20, 0x00, 0x00, 0x6D, 0x04, 0x00, 0x00, 0x39, 0x20, 0x00, 0x00, -0x05, 0xA8, 0x16, 0x00, 0xE7, 0xFC, 0xFF, 0xFF, 0x1D, 0x03, 0x00, 0x00, 0xE2, 0xE1, 0x10, 0x00, 0xD6, 0x03, 0x00, 0x00, -0x15, 0xC9, 0x0B, 0x00, 0xF0, 0xB5, 0x83, 0xB0, 0x06, 0x00, 0x0D, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x17, 0x4B, 0x9C, 0x42, -0x24, 0xD0, 0x17, 0x4B, 0x9C, 0x42, 0x13, 0xD1, 0xCB, 0x88, 0x10, 0x2B, 0x01, 0xD9, 0x10, 0x23, 0xCB, 0x80, 0x14, 0x4B, -0x1B, 0x78, 0x6A, 0x88, 0x9A, 0x42, 0x01, 0xD8, 0x6B, 0x80, 0xAB, 0x80, 0xEB, 0x88, 0xAA, 0x88, 0x69, 0x88, 0x28, 0x89, -0x00, 0x90, 0x0F, 0x48, 0x7B, 0xF7, 0x26, 0xFB, 0x23, 0x00, 0x3A, 0x00, 0x29, 0x00, 0x30, 0x00, 0x0C, 0x4D, 0xA8, 0x47, -0x05, 0x00, 0x21, 0x00, 0x0B, 0x48, 0x7B, 0xF7, 0x1B, 0xFB, 0x28, 0x00, 0x03, 0xB0, 0xF0, 0xBD, 0x0A, 0x88, 0x00, 0x21, -0x02, 0x48, 0xFF, 0xF7, 0x03, 0xFA, 0x00, 0x25, 0xF1, 0xE7, 0xC0, 0x46, 0x0D, 0x08, 0x00, 0x00, 0x13, 0x20, 0x00, 0x00, -0xE2, 0xE1, 0x10, 0x00, 0xAC, 0xD3, 0x10, 0x00, 0x09, 0x1C, 0x0C, 0x00, 0xBC, 0xD3, 0x10, 0x00, 0xF8, 0xB5, 0xCE, 0x46, -0x47, 0x46, 0x80, 0xB5, 0x14, 0x0A, 0xA4, 0x00, 0x0E, 0x4D, 0x65, 0x59, 0x44, 0x24, 0x2C, 0x5D, 0x03, 0x27, 0x3E, 0x00, -0x26, 0x40, 0x27, 0x42, 0x11, 0xD0, 0xB9, 0x46, 0xBC, 0x43, 0xA4, 0x46, 0x44, 0x24, 0x67, 0x46, 0x2F, 0x55, 0xB9, 0xF7, -0x7F, 0xF8, 0x2B, 0x5D, 0x4A, 0x46, 0x93, 0x43, 0x1E, 0x43, 0x2E, 0x55, 0x00, 0x20, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, -0xF8, 0xBD, 0xB9, 0xF7, 0x73, 0xF8, 0xF7, 0xE7, 0x5C, 0xA9, 0x16, 0x00, 0x70, 0xB5, 0x0D, 0x00, 0x14, 0x0A, 0xA2, 0x00, -0x29, 0x4B, 0xD6, 0x58, 0x0B, 0x2C, 0x06, 0xD8, 0x00, 0x2E, 0x04, 0xD0, 0x44, 0x23, 0xF3, 0x5C, 0xDB, 0x43, 0x9B, 0x07, -0x11, 0xD1, 0x2D, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x06, 0xD0, 0x2A, 0x00, 0x16, 0x21, 0x20, 0x00, 0x21, 0x4B, 0x98, 0x47, -0x00, 0x20, 0x70, 0xBD, 0x45, 0x22, 0xB1, 0x5C, 0x7F, 0x23, 0x0B, 0x40, 0xB3, 0x54, 0x00, 0x20, 0xF7, 0xE7, 0x00, 0x21, -0x20, 0x00, 0xB8, 0xF7, 0x83, 0xFC, 0x00, 0x28, 0x2C, 0xD1, 0x42, 0x23, 0xF3, 0x5A, 0xDB, 0x06, 0x04, 0xD5, 0x28, 0x00, -0xB8, 0xF7, 0x92, 0xFC, 0x00, 0x28, 0x25, 0xD0, 0x28, 0x00, 0xB8, 0xF7, 0x8D, 0xFC, 0x00, 0x28, 0x0E, 0xD1, 0x2A, 0x00, -0x00, 0x21, 0x20, 0x00, 0xB8, 0xF7, 0x20, 0xFC, 0x28, 0x00, 0xB8, 0xF7, 0x83, 0xFC, 0x01, 0x00, 0x00, 0x22, 0x20, 0x00, -0x0D, 0x4B, 0x98, 0x47, 0x01, 0x20, 0xD4, 0xE7, 0x28, 0x00, 0xB8, 0xF7, 0x79, 0xFC, 0x01, 0x28, 0xEB, 0xD0, 0x0A, 0x4B, -0xDE, 0x6E, 0x28, 0x00, 0xB8, 0xF7, 0x72, 0xFC, 0x01, 0x00, 0x00, 0x23, 0x00, 0x22, 0x20, 0x00, 0xB0, 0x47, 0xE0, 0xE7, -0x02, 0x20, 0xC2, 0xE7, 0x02, 0x20, 0xC0, 0xE7, 0x5C, 0xA9, 0x16, 0x00, 0x81, 0x45, 0x0C, 0x00, 0xF5, 0x46, 0x0C, 0x00, -0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x82, 0xB0, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0x1F, 0x00, -0x13, 0x0A, 0x9B, 0x00, 0x0E, 0x4A, 0x9B, 0x58, 0x00, 0x2B, 0x0E, 0xD0, 0x89, 0x88, 0x0D, 0x4B, 0x9C, 0x46, 0x61, 0x44, -0x01, 0xAB, 0x98, 0x46, 0x01, 0x22, 0x18, 0x00, 0xD0, 0xF7, 0x5A, 0xF8, 0x43, 0x46, 0x19, 0x78, 0x08, 0x48, 0x7B, 0xF7, -0x61, 0xFA, 0x3B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, 0xB9, 0xF7, 0x91, 0xF9, 0x02, 0xB0, 0x04, 0xBC, 0x90, 0x46, -0xF0, 0xBD, 0xC0, 0x46, 0x5C, 0xA9, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, 0xC8, 0xD3, 0x10, 0x00, 0xF8, 0xB5, 0x05, 0x00, -0x0E, 0x00, 0x14, 0x00, 0x1F, 0x00, 0x13, 0x0A, 0x9B, 0x00, 0x08, 0x4A, 0x9B, 0x58, 0x9B, 0x6A, 0x00, 0x2B, 0x03, 0xD0, -0x59, 0x7A, 0x06, 0x48, 0x7B, 0xF7, 0x40, 0xFA, 0x3B, 0x00, 0x22, 0x00, 0x31, 0x00, 0x28, 0x00, 0xB9, 0xF7, 0x50, 0xFA, -0xF8, 0xBD, 0xC0, 0x46, 0x5C, 0xA9, 0x16, 0x00, 0xD4, 0xD3, 0x10, 0x00, 0xF8, 0xB5, 0x04, 0x00, 0x06, 0x0A, 0xB2, 0x00, -0x28, 0x4B, 0xD5, 0x58, 0x28, 0x00, 0x54, 0x30, 0x2A, 0x21, 0xA0, 0xF7, 0x31, 0xFD, 0x00, 0x28, 0x3C, 0xD0, 0xF6, 0xB2, -0x30, 0x00, 0xAA, 0xF7, 0xB5, 0xF8, 0x20, 0x00, 0x91, 0xF7, 0x02, 0xFA, 0x43, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x23, 0xD0, -0x1F, 0x4B, 0xEB, 0x5C, 0x00, 0x2B, 0x14, 0xD0, 0x95, 0x23, 0x9B, 0x00, 0xEF, 0x18, 0x38, 0x00, 0x86, 0xF7, 0x80, 0xFA, -0x36, 0x23, 0xE9, 0x5C, 0x3A, 0x00, 0x30, 0x00, 0xA1, 0xF7, 0x42, 0xF8, 0x36, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x0A, 0xD0, -0x2D, 0x21, 0x20, 0x00, 0x79, 0xF7, 0x76, 0xFC, 0x22, 0xE0, 0x36, 0x23, 0xE9, 0x5C, 0x30, 0x00, 0xA1, 0xF7, 0x4B, 0xF8, -0xF0, 0xE7, 0x2B, 0x21, 0x20, 0x00, 0x79, 0xF7, 0x6B, 0xFC, 0x17, 0xE0, 0x36, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x04, 0xD0, -0x60, 0x21, 0x20, 0x00, 0x79, 0xF7, 0x62, 0xFC, 0x0E, 0xE0, 0x61, 0x21, 0x20, 0x00, 0x79, 0xF7, 0x5D, 0xFC, 0x09, 0xE0, -0x00, 0x23, 0xAC, 0x22, 0x92, 0x00, 0xAB, 0x54, 0x05, 0x4A, 0xAB, 0x54, 0x00, 0x21, 0x20, 0x00, 0x93, 0xF7, 0xA6, 0xFB, -0xF8, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0xAF, 0x02, 0x00, 0x00, 0xB3, 0x02, 0x00, 0x00, 0xF8, 0xB5, 0x05, 0x00, -0x0E, 0x00, 0x07, 0x0A, 0xBA, 0x00, 0x1D, 0x4B, 0xD4, 0x58, 0x1D, 0x4B, 0xE3, 0x5C, 0x00, 0x2B, 0x0A, 0xD1, 0x1B, 0x4B, -0x00, 0x22, 0xE2, 0x54, 0x09, 0x3B, 0xE3, 0x5C, 0x00, 0x2B, 0x27, 0xD0, 0x28, 0x00, 0xFF, 0xF7, 0x8F, 0xFF, 0xF8, 0xBD, -0x93, 0xF7, 0xCC, 0xF8, 0x00, 0x28, 0x03, 0xD0, 0x14, 0x4B, 0xE3, 0x5C, 0x00, 0x2B, 0x0C, 0xD0, 0x11, 0x4B, 0xE3, 0x5C, -0x00, 0x2B, 0xE8, 0xD0, 0x88, 0x23, 0xFF, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0xE3, 0xD0, 0x43, 0x23, 0x01, 0x22, 0xE2, 0x54, -0xDF, 0xE7, 0x04, 0x33, 0x06, 0x22, 0x00, 0x21, 0x0B, 0x48, 0x79, 0xF7, 0xA3, 0xF8, 0x06, 0x70, 0x80, 0x37, 0x47, 0x80, -0xCA, 0xF7, 0xFE, 0xFE, 0x43, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xE3, 0xE7, 0x31, 0x00, 0x28, 0x00, 0x93, 0xF7, 0x60, 0xFB, -0xD5, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0xB9, 0x02, 0x00, 0x00, 0xC5, 0x02, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, -0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x8C, 0xB0, 0x05, 0x00, 0x0C, 0x00, 0x0F, 0x0A, 0xBA, 0x00, 0x4A, 0x4B, 0xD6, 0x58, -0x08, 0x00, 0x79, 0xF7, 0x55, 0xFC, 0x20, 0x28, 0x07, 0xD0, 0x21, 0x00, 0x28, 0x00, 0x47, 0x4B, 0x98, 0x47, 0x0C, 0xB0, -0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x2A, 0x78, 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x69, 0x1C, 0x29, 0x3A, -0x30, 0x00, 0xCB, 0x30, 0xFF, 0x30, 0xCF, 0xF7, 0x61, 0xFF, 0xFD, 0x23, 0x5B, 0x00, 0x98, 0x46, 0xB0, 0x44, 0x09, 0xAB, -0x07, 0x93, 0x43, 0x46, 0x06, 0x93, 0x02, 0xA8, 0x10, 0x22, 0x31, 0x00, 0xCB, 0x31, 0xFF, 0x31, 0xCF, 0xF7, 0x52, 0xFF, -0x6A, 0x46, 0x33, 0x00, 0x6C, 0x33, 0xF1, 0x6E, 0x00, 0x91, 0x9B, 0x88, 0x93, 0x80, 0xCD, 0x23, 0x5B, 0x00, 0xF3, 0x5A, -0x35, 0x00, 0x9B, 0x35, 0xFF, 0x35, 0x68, 0x88, 0x00, 0x04, 0x18, 0x43, 0xAB, 0x88, 0xE9, 0x88, 0x09, 0x04, 0x19, 0x43, -0x2B, 0x89, 0x6A, 0x89, 0x12, 0x04, 0x1A, 0x43, 0xAB, 0x89, 0x9C, 0x46, 0xEB, 0x89, 0x1B, 0x04, 0x65, 0x46, 0x2B, 0x43, -0x83, 0xF7, 0xDA, 0xFD, 0x27, 0x4B, 0xF3, 0x5C, 0x00, 0x2B, 0x1F, 0xD0, 0x39, 0x23, 0xF2, 0x5C, 0xF8, 0xB2, 0x41, 0x46, -0xA0, 0xF7, 0x93, 0xFE, 0xBE, 0x23, 0x5B, 0x00, 0xF3, 0x5C, 0x00, 0x2B, 0x1B, 0xD0, 0x88, 0x23, 0xFF, 0x33, 0xF3, 0x5C, -0x00, 0x2B, 0x05, 0xD0, 0x01, 0x23, 0xAC, 0x22, 0x92, 0x00, 0xB3, 0x54, 0x1C, 0x4A, 0xB3, 0x54, 0x37, 0x23, 0xF3, 0x5C, -0x05, 0x2B, 0x27, 0xD0, 0x00, 0x21, 0x20, 0x00, 0xFF, 0xF7, 0x44, 0xFF, 0x00, 0x20, 0x9C, 0xE7, 0x0C, 0x22, 0x09, 0xA9, -0x16, 0x4B, 0xF0, 0x18, 0xCF, 0xF7, 0x08, 0xFF, 0xD8, 0xE7, 0x17, 0x33, 0x18, 0x22, 0x00, 0x21, 0x13, 0x48, 0x79, 0xF7, -0x09, 0xF8, 0x05, 0x00, 0xC0, 0x23, 0x5B, 0x00, 0xF3, 0x5C, 0x83, 0x75, 0x06, 0x22, 0x31, 0x00, 0x72, 0x31, 0xCF, 0xF7, -0xF7, 0xFE, 0xA8, 0x1D, 0x10, 0x22, 0x31, 0x00, 0x9B, 0x31, 0xFF, 0x31, 0xCF, 0xF7, 0xF0, 0xFE, 0x28, 0x00, 0xCA, 0xF7, -0x55, 0xFE, 0xC8, 0xE7, 0x05, 0x21, 0x20, 0x00, 0x93, 0xF7, 0x2E, 0xFB, 0x00, 0x20, 0x74, 0xE7, 0x64, 0xA2, 0x16, 0x00, -0x01, 0x4A, 0x0A, 0x00, 0xC5, 0x02, 0x00, 0x00, 0xB3, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, -0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x0B, 0x0A, 0x9B, 0x00, 0x0B, 0x4A, 0x9E, 0x58, 0x08, 0x00, 0x79, 0xF7, 0xAE, 0xFB, -0x24, 0x28, 0x04, 0xD0, 0x21, 0x00, 0x28, 0x00, 0x07, 0x4B, 0x98, 0x47, 0x70, 0xBD, 0xBE, 0x23, 0x5B, 0x00, 0xF3, 0x5C, -0x00, 0x2B, 0xF5, 0xD1, 0x7D, 0x33, 0xFF, 0x33, 0x01, 0x22, 0xF2, 0x54, 0xF0, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, -0x55, 0x45, 0x0A, 0x00, 0xF8, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x0F, 0x0A, 0xBA, 0x00, -0x2F, 0x4B, 0xD6, 0x58, 0x02, 0x78, 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x42, 0x78, 0x37, 0x23, 0xF2, 0x54, -0x08, 0x00, 0x79, 0xF7, 0x83, 0xFB, 0x18, 0x28, 0x04, 0xD8, 0x01, 0x23, 0x83, 0x40, 0x28, 0x4A, 0x13, 0x42, 0x2B, 0xD1, -0xFB, 0xB2, 0x99, 0x46, 0x18, 0x00, 0xAA, 0xF7, 0x81, 0xF9, 0x80, 0x46, 0x24, 0x4B, 0x01, 0x22, 0xF2, 0x54, 0x21, 0x00, -0x23, 0x48, 0x78, 0xF7, 0x51, 0xFF, 0x23, 0x4B, 0xF3, 0x5C, 0x00, 0x2B, 0x1F, 0xD1, 0x3C, 0x23, 0xF3, 0x5C, 0x02, 0x2B, -0x2D, 0xD0, 0x48, 0x46, 0xA9, 0xF7, 0x24, 0xFF, 0x36, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x2A, 0xD1, 0x43, 0x46, 0x58, 0x00, -0x40, 0x44, 0x40, 0x00, 0x80, 0xB2, 0x7B, 0xF7, 0xE7, 0xF8, 0x02, 0x00, 0x21, 0x00, 0x16, 0x48, 0x78, 0xF7, 0xBE, 0xFE, -0x19, 0x21, 0x20, 0x00, 0x79, 0xF7, 0xF0, 0xFA, 0x00, 0x20, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF8, 0xBD, 0x04, 0x23, -0x06, 0x22, 0x00, 0x21, 0x10, 0x48, 0x78, 0xF7, 0x6F, 0xFF, 0x6B, 0x78, 0x03, 0x70, 0x80, 0x37, 0x47, 0x80, 0xCA, 0xF7, -0xC9, 0xFD, 0x00, 0x23, 0x0A, 0x4A, 0xB3, 0x54, 0x43, 0x22, 0xB3, 0x54, 0xCD, 0xE7, 0x20, 0x00, 0x09, 0x4B, 0x98, 0x47, -0xCD, 0xE7, 0x43, 0x46, 0x58, 0x00, 0x40, 0x44, 0x80, 0xB2, 0xD4, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0x01, 0x00, 0x40, 0x01, -0xC2, 0x02, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00, 0xB9, 0x02, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0xF5, 0x3A, 0x09, 0x00, -0x00, 0x20, 0x70, 0x47, 0xF0, 0xB5, 0x83, 0xB0, 0x0C, 0x00, 0x04, 0x23, 0x5B, 0x4A, 0x00, 0x21, 0x5B, 0x48, 0x78, 0xF7, -0x41, 0xFF, 0x05, 0x00, 0x21, 0x78, 0x5A, 0x48, 0x7B, 0xF7, 0x40, 0xF8, 0x23, 0x78, 0x01, 0x2B, 0x65, 0xD0, 0x06, 0x2B, -0x00, 0xD1, 0x80, 0xE0, 0x00, 0x2B, 0x05, 0xD0, 0x28, 0x00, 0xCA, 0xF7, 0x91, 0xFD, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, -0xA2, 0x78, 0x52, 0x4B, 0x1A, 0x70, 0x00, 0x23, 0x2B, 0x70, 0x6B, 0x70, 0xA3, 0x78, 0xAB, 0x70, 0x4F, 0x4B, 0x1B, 0x78, -0xEB, 0x70, 0x63, 0x78, 0x01, 0x2B, 0xEB, 0xD1, 0x4D, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0xE7, 0xD1, 0x49, 0x4B, 0x1B, 0x78, -0x06, 0x2B, 0xE3, 0xD1, 0xFC, 0xF7, 0x66, 0xF9, 0x49, 0x4C, 0x4A, 0x4B, 0x02, 0x22, 0xE2, 0x54, 0x6B, 0x46, 0xDF, 0x1D, -0x38, 0x00, 0xB2, 0xF7, 0x2D, 0xFC, 0x3E, 0x78, 0x10, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x78, 0xF7, 0x06, 0xFF, -0xB6, 0x01, 0xA6, 0x19, 0xB0, 0x60, 0x3B, 0x78, 0x9B, 0x01, 0xE3, 0x18, 0x9B, 0x68, 0x01, 0x22, 0x9A, 0x70, 0x00, 0x26, -0x1E, 0x71, 0x80, 0x22, 0x92, 0x01, 0xDA, 0x80, 0x1A, 0x81, 0x1E, 0x70, 0x5E, 0x70, 0x38, 0x78, 0x43, 0x1C, 0x9B, 0x01, -0xE3, 0x18, 0x06, 0x22, 0x1A, 0x71, 0x38, 0x4A, 0xA3, 0x5C, 0x03, 0x21, 0x8B, 0x43, 0xA3, 0x54, 0x83, 0x01, 0xE3, 0x18, -0x1E, 0x86, 0x5E, 0x86, 0x34, 0x4B, 0x98, 0x47, 0x3B, 0x78, 0x5A, 0x1C, 0x92, 0x01, 0xA2, 0x18, 0x07, 0x21, 0x11, 0x71, -0x9B, 0x01, 0xE3, 0x18, 0x98, 0x68, 0x0C, 0x38, 0x78, 0xF7, 0x27, 0xFF, 0x3B, 0x78, 0x9B, 0x01, 0xE4, 0x18, 0xA6, 0x60, -0x9E, 0xE7, 0xA3, 0x78, 0x00, 0x2B, 0x0C, 0xD1, 0x24, 0x4B, 0x1B, 0x78, 0x01, 0x33, 0xDB, 0xB2, 0x10, 0x2B, 0x02, 0xD8, -0x21, 0x4A, 0x13, 0x70, 0x07, 0xE0, 0x20, 0x4B, 0x10, 0x22, 0x1A, 0x70, 0x03, 0xE0, 0x1E, 0x4A, 0x13, 0x78, 0x01, 0x3B, -0x13, 0x70, 0x00, 0x23, 0x2B, 0x70, 0x01, 0x33, 0x6B, 0x70, 0xA3, 0x78, 0xAB, 0x70, 0x19, 0x4B, 0x1B, 0x78, 0xEB, 0x70, -0x80, 0xE7, 0xE2, 0x78, 0x12, 0x02, 0xA3, 0x78, 0x13, 0x43, 0x1B, 0x4A, 0x1B, 0xB2, 0x93, 0x42, 0x00, 0xD0, 0x77, 0xE7, -0x19, 0x4B, 0x1A, 0x80, 0x61, 0x79, 0x09, 0x02, 0x22, 0x79, 0x0A, 0x43, 0x5A, 0x80, 0xE1, 0x79, 0x09, 0x02, 0xA2, 0x79, -0x0A, 0x43, 0x9A, 0x80, 0x98, 0x68, 0x00, 0x28, 0x01, 0xD0, 0x79, 0xF7, 0x11, 0xF8, 0x20, 0x7A, 0x10, 0x4E, 0xB0, 0x71, -0x01, 0x21, 0x78, 0xF7, 0x67, 0xFF, 0xB0, 0x60, 0xB2, 0x79, 0x21, 0x00, 0x09, 0x31, 0xCF, 0xF7, 0x87, 0xFD, 0x59, 0xE7, -0x57, 0xFD, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0xE0, 0xD3, 0x10, 0x00, 0xD0, 0xE5, 0x10, 0x00, 0x48, 0x06, 0x16, 0x00, -0xA8, 0xE5, 0x10, 0x00, 0xEC, 0xA4, 0x16, 0x00, 0x6D, 0x04, 0x00, 0x00, 0x6A, 0x04, 0x00, 0x00, 0xE1, 0xEA, 0x0B, 0x00, -0x88, 0xAC, 0xFF, 0xFF, 0xC4, 0xE5, 0x10, 0x00, 0x09, 0x4B, 0x1B, 0x68, 0xDA, 0x6E, 0x53, 0x1C, 0x0C, 0xD0, 0x08, 0x4B, -0x19, 0x68, 0x4B, 0x68, 0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x06, 0x48, 0x83, 0x42, 0x03, 0xD9, 0x04, 0x32, 0x12, 0x01, -0x12, 0x09, 0x4A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0xF4, 0xE1, 0x10, 0x00, 0x28, 0x27, 0x16, 0x00, 0xFE, 0xFF, 0xFF, 0x07, -0x30, 0xB5, 0x83, 0xB0, 0x68, 0x46, 0x77, 0xF7, 0xE5, 0xFC, 0x00, 0x9D, 0x34, 0x4C, 0x23, 0x68, 0x01, 0x22, 0x93, 0x43, -0x23, 0x60, 0x82, 0xF7, 0x51, 0xFE, 0xB1, 0xF7, 0x69, 0xFE, 0x22, 0x68, 0x8C, 0x23, 0x5B, 0x01, 0x13, 0x43, 0x23, 0x60, -0x2E, 0x4B, 0x1B, 0x68, 0x5A, 0x1C, 0x09, 0xD0, 0xAB, 0x42, 0x41, 0xD0, 0x2A, 0x49, 0x0B, 0x68, 0x2B, 0x4A, 0x1A, 0x40, -0x80, 0x23, 0xDB, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x27, 0x4B, 0x5B, 0x68, 0x5A, 0x1C, 0x09, 0xD0, 0xAB, 0x42, 0x36, 0xD0, -0x23, 0x49, 0x0B, 0x68, 0x25, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x01, 0x13, 0x43, 0x0B, 0x60, 0x20, 0x4B, 0x9B, 0x68, -0x5A, 0x1C, 0x09, 0xD0, 0xAB, 0x42, 0x2B, 0xD0, 0x1C, 0x49, 0x0B, 0x68, 0x1F, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x00, -0x13, 0x43, 0x0B, 0x60, 0x1D, 0x48, 0x78, 0xF7, 0x3F, 0xFA, 0x18, 0x4B, 0x5B, 0x7F, 0x00, 0x2B, 0x1F, 0xD1, 0x7F, 0xF7, -0x9B, 0xFE, 0x02, 0x28, 0x21, 0xD1, 0x19, 0x49, 0x0B, 0x68, 0x19, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x03, 0x13, 0x43, -0x0B, 0x60, 0x17, 0x4B, 0x1A, 0x68, 0x01, 0x21, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x01, 0x31, 0x8A, 0x43, 0x1A, 0x60, -0x03, 0xB0, 0x30, 0xBD, 0x77, 0xF7, 0x4E, 0xFB, 0xC2, 0xE7, 0x77, 0xF7, 0x5F, 0xFB, 0xCD, 0xE7, 0x77, 0xF7, 0x70, 0xFB, -0xD8, 0xE7, 0xFC, 0xF7, 0x49, 0xFB, 0x05, 0x4B, 0x00, 0x22, 0x5A, 0x77, 0xD9, 0xE7, 0x7F, 0xF7, 0x75, 0xFE, 0x03, 0x28, -0xEA, 0xD1, 0xD8, 0xE7, 0x0C, 0x00, 0x60, 0x40, 0x3C, 0x95, 0x16, 0x00, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, -0xFF, 0xFD, 0xFF, 0xFF, 0x01, 0x20, 0x00, 0x00, 0x58, 0x40, 0x34, 0x40, 0xFF, 0xFF, 0xDF, 0xFF, 0x18, 0x00, 0x58, 0x40, -0xF0, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0x83, 0xB0, 0x91, 0x46, 0x9C, 0x4B, 0x1E, 0x68, 0x80, 0x00, 0x84, 0x59, -0x3C, 0x23, 0xE3, 0x5C, 0x98, 0x46, 0x9A, 0x4B, 0xE3, 0x61, 0xBD, 0xF7, 0x4D, 0xFA, 0x01, 0x90, 0x00, 0x23, 0xA3, 0x62, -0x00, 0x20, 0xCE, 0xF7, 0x51, 0xFF, 0x96, 0x4B, 0x1D, 0x68, 0xEB, 0x6E, 0x5A, 0x1C, 0x16, 0xD0, 0x63, 0x60, 0x00, 0x23, -0xA3, 0x60, 0xE7, 0x8E, 0xA7, 0x62, 0x92, 0x49, 0x9A, 0x00, 0x52, 0x58, 0x00, 0x2A, 0x25, 0xD1, 0x01, 0x33, 0x07, 0x2B, -0xF8, 0xD1, 0x00, 0x23, 0x9C, 0x46, 0x8E, 0x4B, 0x18, 0x00, 0x41, 0x30, 0xFF, 0x30, 0x00, 0x22, 0x00, 0x21, 0x00, 0x91, -0x1E, 0xE0, 0x8B, 0x4B, 0x1B, 0x68, 0x01, 0x33, 0x09, 0xD0, 0x8A, 0x4B, 0x1B, 0x68, 0x5B, 0x00, 0x01, 0x9A, 0x94, 0x46, -0x63, 0x44, 0x88, 0x4A, 0x13, 0x40, 0x63, 0x60, 0xDB, 0xE7, 0xA3, 0x8E, 0xE2, 0x8E, 0x9B, 0x1A, 0x5B, 0x00, 0x01, 0x9A, -0x94, 0x46, 0x63, 0x44, 0x82, 0x4A, 0x13, 0x40, 0x63, 0x60, 0xD0, 0xE7, 0x01, 0x23, 0x9C, 0x46, 0xDB, 0xE7, 0x40, 0x33, -0x83, 0x42, 0x07, 0xD0, 0x19, 0x78, 0x09, 0x29, 0xF9, 0xD1, 0x01, 0x32, 0xD2, 0xB2, 0x08, 0x39, 0x00, 0x91, 0xF4, 0xE7, -0xEB, 0x6E, 0x59, 0x1C, 0x21, 0xD0, 0x63, 0x60, 0x75, 0x4B, 0x9A, 0x88, 0x77, 0x4B, 0x9A, 0x42, 0x02, 0xD9, 0x77, 0x4B, -0x9C, 0x46, 0x62, 0x44, 0x76, 0x4B, 0x7B, 0x43, 0x93, 0x42, 0x00, 0xD9, 0x13, 0x00, 0x75, 0x4A, 0x93, 0x42, 0x00, 0xD2, -0x13, 0x00, 0x23, 0x61, 0xB3, 0x68, 0x80, 0x22, 0x52, 0x05, 0x93, 0x42, 0x3B, 0xD2, 0x62, 0x68, 0xD3, 0x1A, 0x1B, 0x01, -0x1B, 0x09, 0x6F, 0x4A, 0x93, 0x42, 0x34, 0xD8, 0x6E, 0x4B, 0x98, 0x47, 0xAF, 0xE0, 0x65, 0x4B, 0x1B, 0x68, 0x01, 0x33, -0x07, 0xD0, 0x64, 0x4B, 0x18, 0x68, 0x01, 0x9B, 0x1D, 0x18, 0x63, 0x48, 0x05, 0x40, 0x65, 0x60, 0xD2, 0xE7, 0x63, 0x46, -0x00, 0x2B, 0x03, 0xD1, 0x66, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x08, 0xD0, 0x5C, 0x4B, 0x18, 0x68, 0x80, 0x00, 0x01, 0x9B, -0xC5, 0x18, 0x5B, 0x4B, 0x1D, 0x40, 0x65, 0x60, 0xC2, 0xE7, 0x00, 0x9B, 0x00, 0x2B, 0xBF, 0xD0, 0x5F, 0x4B, 0x1B, 0x68, -0x01, 0x2B, 0x06, 0xD9, 0xD3, 0x01, 0x01, 0x9A, 0x9D, 0x18, 0x54, 0x4B, 0x1D, 0x40, 0x65, 0x60, 0xB4, 0xE7, 0x51, 0x4B, -0x1B, 0x68, 0x01, 0x9A, 0xD5, 0x18, 0x50, 0x4B, 0x1D, 0x40, 0x65, 0x60, 0xAC, 0xE7, 0x4B, 0x46, 0x00, 0x2B, 0x05, 0xD1, -0x55, 0x4A, 0x26, 0x33, 0xD3, 0x5C, 0xA3, 0x75, 0x63, 0x68, 0xE3, 0x62, 0x52, 0x4A, 0x27, 0x23, 0xD2, 0x5C, 0x18, 0x3B, -0x1A, 0x40, 0xC0, 0x23, 0xDB, 0x01, 0x13, 0x43, 0xA3, 0x82, 0x3F, 0x23, 0xE1, 0x5C, 0x1B, 0x33, 0x42, 0x46, 0x53, 0x43, -0x4C, 0x4A, 0x98, 0x18, 0x8A, 0x00, 0x11, 0x43, 0x80, 0x22, 0x52, 0x01, 0x0A, 0x43, 0x02, 0x80, 0x21, 0x8D, 0x49, 0x4A, -0x9A, 0x18, 0x11, 0x80, 0x3E, 0x22, 0xA2, 0x5C, 0x0A, 0x3A, 0x01, 0x2A, 0x5A, 0xD9, 0x46, 0x4A, 0x98, 0x18, 0xA1, 0x6A, -0x80, 0x22, 0xD2, 0x01, 0x91, 0x42, 0x00, 0xD3, 0x43, 0x49, 0x44, 0x4A, 0x0A, 0x43, 0x92, 0xB2, 0x02, 0x80, 0x00, 0x21, -0x42, 0x4A, 0x9A, 0x18, 0x11, 0x80, 0x32, 0x7D, 0x92, 0x07, 0x14, 0xD5, 0xF1, 0x7B, 0x09, 0x02, 0xB2, 0x7B, 0x0A, 0x43, -0x3E, 0x49, 0x59, 0x18, 0x0A, 0x80, 0x71, 0x7C, 0x09, 0x02, 0x32, 0x7C, 0x0A, 0x43, 0x3C, 0x49, 0x59, 0x18, 0x0A, 0x80, -0xF1, 0x7C, 0x09, 0x02, 0xB2, 0x7C, 0x0A, 0x43, 0x39, 0x49, 0x59, 0x18, 0x0A, 0x80, 0x71, 0x7D, 0xB5, 0x7D, 0x38, 0x4A, -0x97, 0x78, 0x7A, 0x1E, 0x97, 0x41, 0x30, 0x7D, 0x80, 0x07, 0xC0, 0x0F, 0x01, 0x22, 0x94, 0x46, 0x00, 0x2D, 0x00, 0xD1, -0x84, 0x46, 0x33, 0x4A, 0x9E, 0x18, 0x09, 0x02, 0xAA, 0x01, 0x0A, 0x43, 0xFF, 0x00, 0x3A, 0x43, 0x80, 0x00, 0x02, 0x43, -0x61, 0x46, 0x0A, 0x43, 0x32, 0x80, 0x2E, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, 0x1F, 0x21, 0x8A, 0x43, 0x11, 0x00, -0x3E, 0x22, 0xA2, 0x5C, 0x0A, 0x43, 0x1A, 0x80, 0x20, 0x00, 0xCC, 0xF7, 0x71, 0xFF, 0x00, 0x28, 0x0D, 0xD1, 0x00, 0x23, -0x47, 0x22, 0xA3, 0x54, 0x63, 0x87, 0x03, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF0, 0xBD, 0x22, 0x49, 0x23, 0x4A, -0x9A, 0x18, 0x11, 0x80, 0x9F, 0xE7, 0x22, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEE, 0xE7, -0xE4, 0x29, 0x16, 0x00, 0x71, 0x00, 0x10, 0x00, 0xF4, 0xE1, 0x10, 0x00, 0x38, 0x27, 0x16, 0x00, 0x70, 0xA6, 0x16, 0x00, -0x5C, 0xAB, 0x16, 0x00, 0xE4, 0xE1, 0x10, 0x00, 0xFE, 0xFF, 0xFF, 0x0F, 0xC4, 0x09, 0x00, 0x00, 0x3C, 0xF6, 0xFF, 0xFF, -0xE2, 0x04, 0x00, 0x00, 0xA6, 0x0E, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07, 0x39, 0xC2, 0x0C, 0x00, 0xF0, 0x29, 0x16, 0x00, -0x50, 0xE0, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x7A, 0x01, 0x61, 0x40, 0x96, 0x01, 0x61, 0x40, 0x90, 0x01, 0x61, 0x40, -0xFF, 0x3F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xBC, 0x01, 0x61, 0x40, 0x7C, 0x01, 0x61, 0x40, 0x7E, 0x01, 0x61, 0x40, -0x80, 0x01, 0x61, 0x40, 0xE8, 0x29, 0x16, 0x00, 0x8A, 0x01, 0x61, 0x40, 0x76, 0x01, 0x61, 0x40, 0x72, 0x3E, 0x00, 0x00, -0x9E, 0x01, 0x61, 0x40, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x10, 0x23, 0x0F, 0x4A, 0x00, 0x21, 0x0F, 0x48, 0x78, 0xF7, -0x53, 0xFC, 0x00, 0x22, 0x02, 0x70, 0x05, 0x23, 0x43, 0x70, 0x04, 0x3B, 0x83, 0x70, 0x80, 0x21, 0x89, 0x00, 0x81, 0x80, -0xFE, 0x39, 0xFF, 0x39, 0x81, 0x71, 0xC3, 0x71, 0x0B, 0x31, 0x01, 0x72, 0x43, 0x72, 0x53, 0x31, 0x41, 0x81, 0x57, 0x39, -0x81, 0x81, 0x83, 0x73, 0xC2, 0x73, 0xCA, 0xF7, 0x9B, 0xFA, 0x00, 0x20, 0x10, 0xBD, 0xC0, 0x46, 0x53, 0xFD, 0x00, 0x00, -0x01, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x10, 0x4A, 0x11, 0x68, 0xA0, 0x23, 0x5B, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x0E, 0x4C, -0x01, 0x23, 0x23, 0x60, 0x05, 0x20, 0x7F, 0xF7, 0x10, 0xFD, 0x00, 0x23, 0x23, 0x60, 0x0B, 0x49, 0x04, 0x22, 0x0B, 0x68, -0x1A, 0x42, 0xFC, 0xD0, 0x06, 0x4A, 0x13, 0x68, 0x08, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x08, 0x4C, 0x01, 0x23, 0x23, 0x60, -0x05, 0x20, 0x7F, 0xF7, 0xFE, 0xFC, 0x00, 0x23, 0x23, 0x60, 0x10, 0xBD, 0x58, 0x40, 0x34, 0x40, 0x54, 0x40, 0x34, 0x40, -0x80, 0x40, 0x34, 0x40, 0xFF, 0xFF, 0xEB, 0xFF, 0x48, 0x20, 0x62, 0x40, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, -0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x04, 0x90, 0x0F, 0x00, 0x16, 0x00, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x11, 0x00, -0x19, 0x40, 0x05, 0x91, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x04, 0x9A, 0x93, 0x00, 0xA3, 0x49, 0x8C, 0x46, 0x63, 0x44, -0x1C, 0x68, 0xA2, 0x46, 0xA1, 0x4B, 0x63, 0x62, 0xE5, 0x6C, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0x00, 0xD5, 0x4F, 0xE2, -0x93, 0x00, 0x9E, 0x4A, 0x9B, 0x58, 0x1A, 0x8A, 0x00, 0x2A, 0x0E, 0xD0, 0x84, 0x23, 0xE3, 0x5A, 0x5B, 0x07, 0x00, 0xD5, -0x36, 0xE2, 0x9A, 0x4B, 0x23, 0x61, 0xA2, 0x6E, 0x99, 0x4B, 0x1B, 0x68, 0x9A, 0x42, 0x00, 0xD1, 0x3C, 0xE2, 0x96, 0x4B, -0x2F, 0xE2, 0x06, 0x32, 0x1A, 0x82, 0x96, 0x48, 0x7A, 0xF7, 0xD0, 0xFC, 0xEA, 0xE7, 0x96, 0x23, 0x00, 0x22, 0xE2, 0x54, -0x00, 0x2E, 0x00, 0xD1, 0x34, 0xE2, 0x20, 0x3B, 0xE3, 0x5A, 0x00, 0x2B, 0x00, 0xD1, 0x2F, 0xE2, 0x80, 0x21, 0xC9, 0x00, -0x8E, 0x4A, 0x02, 0x40, 0x8A, 0x42, 0x00, 0xD0, 0x28, 0xE2, 0x02, 0x07, 0x00, 0xD5, 0x25, 0xE2, 0x4A, 0x22, 0xA2, 0x5C, -0x00, 0x2A, 0x00, 0xD0, 0x20, 0xE2, 0xA2, 0x6E, 0x5A, 0x43, 0x55, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x7E, 0x22, 0xA1, 0x5A, -0x5B, 0x18, 0xA3, 0x52, 0x96, 0x23, 0x7D, 0x3A, 0xE2, 0x54, 0x7B, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x81, 0x4A, 0x93, 0x42, -0x00, 0xD8, 0x13, 0xE2, 0xE7, 0x6D, 0x2B, 0xE2, 0x46, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x26, 0xE2, 0x7C, 0x33, -0xE3, 0x5A, 0x7E, 0x22, 0xA2, 0x5A, 0x9B, 0x18, 0x48, 0x22, 0xA2, 0x5A, 0x9B, 0x1A, 0x79, 0x4A, 0x9B, 0xB2, 0x93, 0x42, -0x00, 0xD9, 0x19, 0xE2, 0x46, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x21, 0xD1, 0x40, 0x33, 0xE3, 0x5A, 0x5D, 0x19, 0x2D, 0x01, -0x2D, 0x09, 0xC3, 0x07, 0x00, 0xD4, 0xCA, 0xE1, 0x44, 0x23, 0xE3, 0x5A, 0x5B, 0x08, 0x5D, 0x19, 0x2D, 0x01, 0x2D, 0x09, -0xA3, 0x6B, 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, 0xE3, 0x6B, 0xE3, 0x66, 0x46, 0x23, 0x01, 0x22, -0xE2, 0x54, 0x48, 0x33, 0xE0, 0x5C, 0x68, 0x4B, 0x98, 0x47, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0x00, 0xD4, 0xBB, 0xE1, -0x7C, 0x23, 0xE2, 0x5A, 0x02, 0x33, 0xE3, 0x5A, 0xD2, 0x18, 0x48, 0x23, 0xE3, 0x5A, 0xD2, 0x1A, 0x92, 0xB2, 0x53, 0x1E, -0x9B, 0xB2, 0x00, 0x2A, 0x0A, 0xD0, 0xA1, 0x6E, 0x2F, 0x00, 0x5E, 0x4A, 0x7F, 0x1A, 0x3F, 0x01, 0x3F, 0x09, 0x01, 0x3B, -0x9B, 0xB2, 0x93, 0x42, 0xF8, 0xD1, 0xDB, 0xE1, 0x2F, 0x00, 0xD9, 0xE1, 0x00, 0x2B, 0x00, 0xD1, 0x5F, 0xE1, 0x68, 0xE1, -0x01, 0x3B, 0x1B, 0x01, 0x1B, 0x09, 0x56, 0x4A, 0x94, 0x46, 0xE0, 0x44, 0x78, 0xE1, 0x2B, 0x00, 0x63, 0x60, 0x50, 0x46, -0xCC, 0xF7, 0xFA, 0xFD, 0x00, 0x28, 0x00, 0xD1, 0x2E, 0xE1, 0xA3, 0x7D, 0x50, 0x49, 0x2F, 0x22, 0x8A, 0x5C, 0x9B, 0x18, -0xA3, 0x75, 0x84, 0x23, 0xE3, 0x5A, 0x9B, 0x07, 0x02, 0xD5, 0x03, 0x9B, 0x00, 0x2B, 0x4C, 0xD0, 0xA3, 0x6E, 0x9C, 0x46, -0x65, 0x44, 0x2D, 0x01, 0x2D, 0x09, 0x7E, 0x22, 0xA3, 0x5A, 0x01, 0x33, 0xA3, 0x52, 0xA3, 0x7D, 0x01, 0x33, 0xA3, 0x75, -0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, 0x8C, 0xE0, 0xEB, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x99, 0x45, 0x00, 0xD8, -0xF5, 0xE0, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0xCF, 0xD5, 0x72, 0x23, 0xE3, 0x5E, 0x98, 0x46, 0x63, 0x6D, 0xEE, 0x1A, -0x36, 0x01, 0x36, 0x09, 0x77, 0xF7, 0x3C, 0xFF, 0x14, 0x23, 0x00, 0x28, 0x02, 0xD1, 0xC4, 0x33, 0x37, 0x4A, 0xD3, 0x5A, -0x7A, 0x22, 0xA0, 0x5A, 0xC0, 0x18, 0x70, 0x43, 0xC8, 0x21, 0xC9, 0x00, 0xCE, 0xF7, 0xA2, 0xFD, 0x20, 0x30, 0x46, 0x00, -0x84, 0x23, 0xE3, 0x5A, 0x9B, 0x07, 0x00, 0xD5, 0x04, 0xE1, 0x74, 0x23, 0xE2, 0x5A, 0x53, 0x01, 0x9B, 0x1A, 0x9B, 0x00, -0x9B, 0x18, 0x9A, 0x00, 0x9B, 0x18, 0xF6, 0x18, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD0, 0x05, 0xE1, 0x46, 0x23, -0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x8E, 0xE1, 0xFF, 0xE0, 0xF7, 0xF7, 0xB1, 0xFE, 0x00, 0x28, 0xAE, 0xD0, 0x24, 0x4B, -0x1A, 0x78, 0x01, 0x23, 0x00, 0x2A, 0x08, 0xD0, 0x22, 0x4B, 0x1B, 0x78, 0x01, 0x3B, 0x5A, 0x1E, 0x93, 0x41, 0x5B, 0x42, -0x06, 0x22, 0x93, 0x43, 0x08, 0x33, 0xA0, 0x6E, 0x02, 0x00, 0x5A, 0x43, 0x80, 0x21, 0x49, 0x00, 0x8A, 0x42, 0x0C, 0xD9, -0x5A, 0x1E, 0xD2, 0xB2, 0x42, 0x43, 0x8C, 0x46, 0x00, 0xE0, 0x0A, 0x00, 0x01, 0x3B, 0xDB, 0xB2, 0x62, 0x45, 0x02, 0xD9, -0x11, 0x1A, 0x00, 0x2B, 0xF7, 0xD1, 0x55, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x7E, 0x21, 0x62, 0x5A, 0xD3, 0x18, 0x63, 0x52, -0x01, 0x23, 0x03, 0x93, 0x8B, 0xE7, 0xC0, 0x46, 0xF4, 0x29, 0x16, 0x00, 0x95, 0x9D, 0x10, 0x00, 0x5C, 0xA9, 0x16, 0x00, -0xDE, 0x0D, 0x00, 0x00, 0x64, 0xE6, 0x10, 0x00, 0xEC, 0xD3, 0x10, 0x00, 0x04, 0x04, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07, -0xFE, 0x7F, 0x00, 0x00, 0xF1, 0x12, 0x0D, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x02, 0x00, 0x00, 0x7C, 0x91, 0x0D, 0x00, -0x8C, 0xA9, 0x16, 0x00, 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, 0x46, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, -0x6D, 0xE7, 0x7C, 0x33, 0xE3, 0x5A, 0x7E, 0x22, 0xA2, 0x5A, 0x9B, 0x18, 0x48, 0x22, 0xA2, 0x5A, 0x9B, 0x1A, 0x9F, 0x4A, -0x9B, 0xB2, 0x93, 0x42, 0x00, 0xD9, 0x60, 0xE7, 0x46, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x26, 0xD1, 0x40, 0x33, 0xE3, 0x5A, -0x5D, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0x00, 0xD4, 0x76, 0xE0, 0x44, 0x23, 0xE3, 0x5A, -0x5B, 0x08, 0x5D, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0xA3, 0x6B, 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, -0xE3, 0x6B, 0xE3, 0x66, 0x8E, 0x23, 0xE0, 0x5C, 0x8E, 0x4B, 0x98, 0x47, 0x46, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xE3, 0x6E, -0x99, 0x46, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0x01, 0xD4, 0x47, 0x23, 0xE2, 0x54, 0x7C, 0x23, 0xE2, 0x5A, 0x02, 0x33, -0xE3, 0x5A, 0xD2, 0x18, 0x48, 0x23, 0xE3, 0x5A, 0xD2, 0x1A, 0x92, 0xB2, 0x53, 0x1E, 0x9B, 0xB2, 0x00, 0x2A, 0x0A, 0xD0, -0xA1, 0x6E, 0x2F, 0x00, 0x81, 0x4A, 0x7F, 0x1A, 0x3F, 0x01, 0x3F, 0x09, 0x01, 0x3B, 0x9B, 0xB2, 0x93, 0x42, 0xF8, 0xD1, -0x1D, 0xE7, 0x2F, 0x00, 0x1B, 0xE7, 0x7D, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x7C, 0x4B, 0x1B, 0x68, 0x00, 0x21, 0x1B, 0x02, -0x0A, 0xD5, 0x7B, 0x48, 0x7A, 0xF7, 0x2E, 0xFB, 0x84, 0x23, 0xE2, 0x5A, 0x92, 0x07, 0xD2, 0x17, 0x4F, 0x3B, 0x9A, 0x43, -0x3E, 0x32, 0x0A, 0xE0, 0x01, 0x20, 0xF8, 0xF7, 0x85, 0xFA, 0x01, 0x21, 0xEF, 0xE7, 0x84, 0x23, 0xE3, 0x5A, 0x08, 0x22, -0x9B, 0x07, 0x00, 0xD4, 0xB6, 0xE0, 0x01, 0x21, 0x04, 0x98, 0x70, 0x4B, 0x98, 0x47, 0x05, 0x9B, 0x00, 0x2B, 0x00, 0xD1, -0x62, 0xB6, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x8F, 0x23, 0x00, 0x22, -0xE2, 0x54, 0xE5, 0x64, 0x0B, 0x3B, 0xE3, 0x5A, 0x9A, 0x07, 0x02, 0xD5, 0x62, 0x4A, 0x00, 0x21, 0x11, 0x70, 0xDB, 0x07, -0xE7, 0xD5, 0x70, 0x23, 0x42, 0x46, 0xE2, 0x52, 0x1C, 0x36, 0x26, 0x65, 0xE1, 0xE7, 0xA3, 0x6B, 0xA3, 0x66, 0x42, 0x23, -0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, 0xE3, 0x6B, 0xE3, 0x66, 0x91, 0xE7, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, -0x91, 0xE0, 0xA2, 0x6E, 0x53, 0x01, 0x9B, 0x1A, 0x9B, 0x00, 0x9B, 0x18, 0x9A, 0x00, 0x9B, 0x18, 0x5B, 0x08, 0xB3, 0x42, -0xBF, 0xD9, 0x73, 0x08, 0x9B, 0x46, 0x54, 0x49, 0x18, 0x00, 0xCE, 0xF7, 0x81, 0xFC, 0x01, 0x00, 0x2B, 0x1A, 0x1B, 0x01, -0x1B, 0x09, 0x40, 0x01, 0x40, 0x1A, 0x80, 0x00, 0x40, 0x18, 0x82, 0x00, 0x80, 0x18, 0x42, 0x46, 0x59, 0x46, 0x52, 0x1A, -0x82, 0x18, 0x90, 0x46, 0x00, 0xD5, 0x7F, 0xE6, 0x42, 0x46, 0xA2, 0x60, 0x22, 0x6E, 0x92, 0x19, 0x22, 0x61, 0x81, 0xE6, -0xE3, 0x6E, 0x99, 0x46, 0xEB, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x08, 0x22, 0x99, 0x45, 0xA0, 0xD9, 0x00, 0x23, 0x03, 0x93, -0x1C, 0x26, 0x98, 0x46, 0x9F, 0xE6, 0xA3, 0x6B, 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, 0xE3, 0x6B, -0xE3, 0x66, 0x46, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x47, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x3F, 0xE6, 0x39, 0x4B, 0x23, 0x61, -0xA2, 0x6E, 0xA1, 0x6D, 0x00, 0x20, 0x01, 0x90, 0x00, 0x93, 0x00, 0x23, 0x20, 0x00, 0xF7, 0xF7, 0xC1, 0xFB, 0x35, 0x4B, -0xA2, 0x6E, 0x1A, 0x60, 0x84, 0x23, 0xE0, 0x5A, 0xC3, 0x43, 0x9B, 0x07, 0x00, 0xD1, 0xC4, 0xE5, 0x7B, 0x1B, 0x1B, 0x01, -0x1B, 0x09, 0x30, 0x4A, 0x93, 0x42, 0x13, 0xD8, 0xA1, 0x6E, 0x7E, 0x23, 0xE2, 0x5A, 0x01, 0x32, 0x92, 0xB2, 0x2C, 0x4E, -0x4D, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x03, 0x92, 0x01, 0x32, 0x92, 0xB2, 0x7B, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0xB3, 0x42, -0xF4, 0xD9, 0x7E, 0x23, 0x03, 0x9A, 0xE2, 0x52, 0xE7, 0x6D, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, 0xD3, 0xE5, -0x84, 0x23, 0xE3, 0x5A, 0x9B, 0x07, 0xAB, 0xD4, 0x14, 0x23, 0xA3, 0x75, 0xA2, 0x6E, 0x53, 0x00, 0x9B, 0x18, 0x5B, 0x00, -0x99, 0x46, 0xEB, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x4B, 0x45, 0xA7, 0xD3, 0x12, 0x4B, 0x1B, 0x78, 0x01, 0x33, 0xDB, 0xB2, -0x03, 0x2B, 0x00, 0xD9, 0x23, 0xE7, 0x0F, 0x4A, 0x13, 0x70, 0x3E, 0x22, 0x3D, 0xE7, 0x46, 0x23, 0xE3, 0x5C, 0x00, 0x2B, -0x00, 0xD1, 0x68, 0xE7, 0x00, 0x23, 0x47, 0x22, 0xA2, 0x5C, 0x00, 0x2A, 0x00, 0xD0, 0xFF, 0xE5, 0x44, 0x23, 0xE2, 0x5A, -0x53, 0x01, 0x9B, 0x1A, 0x9B, 0x00, 0x9B, 0x18, 0x9A, 0x00, 0x9B, 0x18, 0xF6, 0x18, 0x62, 0xE7, 0xFE, 0x7F, 0x00, 0x00, -0xF1, 0x12, 0x0D, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x61, 0xE6, 0x10, 0x00, 0x58, 0x40, 0x34, 0x40, 0xF8, 0xD3, 0x10, 0x00, -0x65, 0x17, 0x0D, 0x00, 0x71, 0x02, 0x00, 0x00, 0x42, 0x0E, 0x00, 0x00, 0x64, 0xE6, 0x10, 0x00, 0xFE, 0xFF, 0xFF, 0x07, -0xF8, 0xB5, 0x04, 0x1E, 0x32, 0xD0, 0xA1, 0xF7, 0x55, 0xFD, 0x05, 0x00, 0x8F, 0x23, 0xE6, 0x5C, 0x00, 0x2E, 0x17, 0xD1, -0xE3, 0x6C, 0xA2, 0x6E, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x64, 0x7E, 0x22, 0xA3, 0x5A, 0x01, 0x33, -0xA3, 0x52, 0xA3, 0x7D, 0x13, 0x49, 0x4F, 0x3A, 0x8A, 0x5C, 0x9B, 0x18, 0xA3, 0x75, 0x8E, 0x23, 0xE0, 0x5C, 0x00, 0x22, -0x29, 0x00, 0xFF, 0xF7, 0x01, 0xFD, 0xF8, 0xBD, 0x67, 0x68, 0xA1, 0xF7, 0x35, 0xFD, 0x03, 0x00, 0x3A, 0x00, 0x31, 0x00, -0x0B, 0x48, 0x7A, 0xF7, 0x03, 0xFA, 0x8F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0xDA, 0xD0, 0x09, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xD3, 0xE7, 0x05, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0xE3, 0xE7, 0xC0, 0x46, 0x7C, 0x91, 0x0D, 0x00, 0x08, 0xD4, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, -0x00, 0xB5, 0x80, 0x46, 0x0F, 0x00, 0x16, 0x00, 0x1D, 0x00, 0x02, 0x21, 0x10, 0x20, 0x78, 0xF7, 0xAD, 0xF9, 0x04, 0x00, -0x04, 0x23, 0x03, 0x70, 0xFB, 0x33, 0x43, 0x70, 0xF2, 0x3B, 0x83, 0x70, 0x43, 0x46, 0xC3, 0x70, 0x47, 0x60, 0x86, 0x60, -0xC5, 0x60, 0x1F, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x1A, 0xD0, 0x01, 0x2B, 0x30, 0xD1, 0x1D, 0x4B, 0x1B, 0x68, 0x00, 0x2B, -0x0D, 0xD0, 0x0A, 0x25, 0x1B, 0x4F, 0x80, 0x26, 0xB6, 0x02, 0xE8, 0x20, 0x7F, 0xF7, 0xA7, 0xF9, 0x3B, 0x68, 0x33, 0x42, -0x25, 0xD1, 0x01, 0x3D, 0xED, 0xB2, 0x00, 0x2D, 0xF5, 0xD1, 0x00, 0x23, 0x15, 0x4A, 0x10, 0x21, 0x20, 0x00, 0x81, 0xF7, -0x6D, 0xFC, 0x17, 0xE0, 0x13, 0x48, 0x14, 0x49, 0x01, 0x22, 0x43, 0x58, 0x1A, 0x42, 0xFC, 0xD1, 0x10, 0x4B, 0x12, 0x4A, -0x9C, 0x50, 0x12, 0x4A, 0x99, 0x58, 0x10, 0x20, 0x01, 0x43, 0x99, 0x50, 0x81, 0x21, 0x49, 0x01, 0x5A, 0x58, 0x02, 0x43, -0x5A, 0x50, 0x0B, 0x49, 0x5A, 0x58, 0x0F, 0x38, 0x02, 0x43, 0x5A, 0x50, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x0A, 0x4B, -0x80, 0x22, 0x92, 0x02, 0x1A, 0x60, 0xD8, 0xE7, 0xA8, 0xE5, 0x10, 0x00, 0x28, 0x25, 0x16, 0x00, 0x1C, 0x41, 0x04, 0x40, -0x19, 0x74, 0x08, 0x00, 0x00, 0x00, 0x07, 0x40, 0x08, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x1C, 0x10, 0x00, 0x00, -0x08, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x80, 0x22, 0xD2, 0x04, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, -0x10, 0xB5, 0x01, 0x00, 0x13, 0x00, 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x00, 0xD4, 0x72, 0xB6, 0x74, 0x46, 0x0E, 0x4A, -0x94, 0x42, 0x0F, 0xD0, 0x22, 0x00, 0x0D, 0x48, 0x7A, 0xF7, 0x6A, 0xF9, 0x23, 0x00, 0x00, 0x22, 0x00, 0x21, 0x57, 0x20, -0xFF, 0xF7, 0x7A, 0xFF, 0x09, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x05, 0xD0, 0x72, 0xB6, 0xFE, 0xE7, 0x07, 0x48, 0x7A, 0xF7, -0x5B, 0xF9, 0x10, 0xBD, 0x06, 0x4B, 0x80, 0x22, 0xD2, 0x04, 0x1A, 0x60, 0xF4, 0xE7, 0xC0, 0x46, 0xB9, 0x25, 0x0D, 0x00, -0x40, 0xD4, 0x10, 0x00, 0xA8, 0xE5, 0x10, 0x00, 0x18, 0xD4, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0x70, 0xB5, 0x82, 0xB0, -0x04, 0x00, 0x0D, 0x00, 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x00, 0xD4, 0x72, 0xB6, 0x76, 0x46, 0x00, 0x93, 0x33, 0x00, -0x2A, 0x00, 0x21, 0x00, 0x09, 0x48, 0x7A, 0xF7, 0x39, 0xF9, 0x33, 0x00, 0x2A, 0x00, 0x21, 0x00, 0x57, 0x20, 0xFF, 0xF7, -0x49, 0xFF, 0x06, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x01, 0xD0, 0x72, 0xB6, 0xFE, 0xE7, 0x04, 0x4B, 0x80, 0x22, 0xD2, 0x04, -0x1A, 0x60, 0xF8, 0xE7, 0x64, 0xD4, 0x10, 0x00, 0xA8, 0xE5, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0xF0, 0xB5, 0xDE, 0x46, -0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x65, 0x4B, 0x1E, 0x68, 0x07, 0x20, 0xA1, 0xF7, 0xA4, 0xF9, -0x00, 0x28, 0x06, 0xD1, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x5F, 0x4A, -0xD5, 0x23, 0x5B, 0x00, 0xD3, 0x5C, 0xDC, 0x00, 0xE4, 0x1A, 0x64, 0x00, 0x5C, 0x4B, 0xE3, 0x18, 0x1D, 0x88, 0xAD, 0xB2, -0xA1, 0xF7, 0x62, 0xF9, 0x6B, 0x07, 0xE9, 0xD1, 0x3A, 0x23, 0xF3, 0x5C, 0x02, 0x2B, 0x52, 0xD0, 0x57, 0x4B, 0xE3, 0x18, -0x1B, 0x88, 0x9B, 0xB2, 0x98, 0x46, 0x56, 0x4B, 0xE2, 0x18, 0x13, 0x88, 0x5B, 0x06, 0x1B, 0x0F, 0x02, 0x2B, 0x08, 0xD0, -0x10, 0x88, 0x40, 0x06, 0x00, 0x0F, 0x52, 0x4B, 0xDF, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0xB8, 0x47, 0x39, 0x23, -0xF3, 0x5C, 0x00, 0x2B, 0x01, 0xD0, 0xEB, 0x05, 0x53, 0xD4, 0x10, 0x23, 0xFF, 0x22, 0x00, 0x21, 0x4B, 0x48, 0x77, 0xF7, -0xD5, 0xFF, 0x07, 0x00, 0x00, 0x23, 0x83, 0x73, 0xFB, 0x1D, 0xBA, 0x1D, 0x02, 0x92, 0x05, 0xAA, 0x01, 0x92, 0x00, 0x22, -0x00, 0x92, 0x3A, 0x00, 0x00, 0x21, 0x40, 0x46, 0xB0, 0xF7, 0x7C, 0xFC, 0x43, 0x4B, 0x19, 0x88, 0x43, 0x4B, 0x1B, 0x88, -0x05, 0x9A, 0x92, 0x00, 0x09, 0x04, 0x0B, 0x43, 0xD3, 0x1A, 0x6A, 0xD4, 0xDB, 0x03, 0x5B, 0x0C, 0x7B, 0x81, 0x3F, 0x4B, -0x9C, 0x46, 0x64, 0x44, 0x23, 0x88, 0x3B, 0x73, 0xED, 0x05, 0xED, 0x0F, 0x7D, 0x73, 0x38, 0x00, 0x77, 0xF7, 0xD8, 0xFF, -0x3C, 0x23, 0xF3, 0x5C, 0x3B, 0x22, 0xB2, 0x5C, 0x9A, 0x42, 0x00, 0xD8, 0x96, 0xE7, 0x01, 0x33, 0x3C, 0x22, 0xB3, 0x54, -0x92, 0xE7, 0x37, 0x33, 0xF3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x8D, 0xE7, 0xEB, 0x05, 0x00, 0xD4, 0x8A, 0xE7, 0x07, 0x20, -0xA1, 0xF7, 0x2A, 0xF9, 0x00, 0x28, 0x00, 0xD1, 0x84, 0xE7, 0x25, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, -0x9B, 0x1A, 0x5B, 0x00, 0x22, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0xA1, 0xF7, 0xEE, 0xF8, 0x76, 0xE7, 0x07, 0x20, -0xA1, 0xF7, 0x16, 0xF9, 0x00, 0x28, 0xA6, 0xD0, 0x1B, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, -0x5B, 0x00, 0x19, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0x52, 0x07, 0x02, 0xD0, 0xA1, 0xF7, 0xDA, 0xF8, 0x97, 0xE7, 0x1D, 0x4A, -0x9A, 0x18, 0x11, 0x88, 0x8A, 0xB2, 0x91, 0x46, 0x1B, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0xDB, 0x08, 0x9B, 0x46, -0xFF, 0x23, 0x5A, 0x46, 0x1A, 0x40, 0x92, 0x46, 0x13, 0x00, 0x10, 0x33, 0xFF, 0x22, 0x00, 0x21, 0x0F, 0x48, 0x77, 0xF7, -0x5D, 0xFF, 0x07, 0x00, 0x5B, 0x46, 0x83, 0x73, 0x12, 0x49, 0x49, 0x44, 0x0F, 0x30, 0x52, 0x46, 0xCE, 0xF7, 0x4C, 0xFE, -0xA1, 0xF7, 0xB8, 0xF8, 0x7E, 0xE7, 0x80, 0x22, 0x52, 0x05, 0x94, 0x46, 0x63, 0x44, 0x8F, 0xE7, 0x18, 0x27, 0x16, 0x00, -0x20, 0xA3, 0x16, 0x00, 0x92, 0x69, 0x61, 0x40, 0x9C, 0x69, 0x61, 0x40, 0x94, 0x69, 0x61, 0x40, 0x28, 0x19, 0x16, 0x00, -0x01, 0x05, 0x00, 0x00, 0xFA, 0x67, 0x61, 0x40, 0xF8, 0x67, 0x61, 0x40, 0x98, 0x69, 0x61, 0x40, 0x9A, 0x69, 0x61, 0x40, -0x96, 0x69, 0x61, 0x40, 0x00, 0x00, 0x61, 0x40, 0x70, 0xB5, 0xA1, 0xF7, 0x5F, 0xFB, 0x05, 0x00, 0x0F, 0x4B, 0x1C, 0x68, -0x00, 0x2C, 0x06, 0xD1, 0x0E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x70, 0xBD, 0xFF, 0xF7, -0x03, 0xFF, 0x01, 0x21, 0x20, 0x00, 0xCC, 0xF7, 0x81, 0xFB, 0x3A, 0x23, 0xE3, 0x5C, 0x02, 0x2B, 0x06, 0xD0, 0x07, 0x4B, -0x1B, 0x7D, 0xA3, 0x75, 0x65, 0x60, 0x06, 0x4B, 0x98, 0x47, 0xED, 0xE7, 0x05, 0x4B, 0x98, 0x47, 0xEA, 0xE7, 0xC0, 0x46, -0x18, 0x27, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0xE5, 0xC1, 0x0A, 0x00, 0x99, 0xC1, 0x0A, 0x00, -0x70, 0xB5, 0x0D, 0x00, 0x14, 0x00, 0x07, 0x29, 0x06, 0xD0, 0x11, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, -0x28, 0x00, 0xB0, 0x47, 0x01, 0x2C, 0x0E, 0xD9, 0x04, 0x2C, 0x0F, 0xD1, 0x0C, 0x4B, 0x1C, 0x68, 0x01, 0x21, 0x20, 0x00, -0xCC, 0xF7, 0x52, 0xFB, 0x3A, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x20, 0x00, 0x08, 0x4B, 0x98, 0x47, 0x01, 0xE0, 0xFF, 0xF7, -0xB3, 0xFF, 0x70, 0xBD, 0x03, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0x28, 0x00, 0xB0, 0x47, 0xF6, 0xE7, -0x28, 0x19, 0x16, 0x00, 0x18, 0x27, 0x16, 0x00, 0xD1, 0xC2, 0x0A, 0x00, 0x10, 0xB5, 0x01, 0x28, 0x00, 0xD0, 0x10, 0xBD, -0x00, 0x29, 0xFC, 0xD0, 0x04, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0xF8, 0xD0, 0x03, 0x4A, 0xDA, 0x61, 0x03, 0x48, 0x79, 0xF7, -0xCB, 0xFF, 0xF2, 0xE7, 0x24, 0x27, 0x16, 0x00, 0x85, 0x04, 0x10, 0x00, 0x94, 0xD4, 0x10, 0x00, 0x70, 0xB5, 0x1E, 0x4B, -0x1E, 0x4A, 0x13, 0x60, 0x80, 0x22, 0x52, 0x00, 0x9C, 0x5C, 0x1D, 0x4B, 0xE3, 0x18, 0x1B, 0x01, 0x1A, 0x88, 0xD2, 0x08, -0x06, 0x21, 0x11, 0x42, 0x08, 0xD1, 0x19, 0x88, 0x89, 0x06, 0x49, 0x0F, 0x18, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, -0x20, 0x00, 0xA8, 0x47, 0x13, 0x4B, 0x1A, 0x68, 0x81, 0x23, 0x5B, 0x00, 0xD3, 0x5C, 0x00, 0x2B, 0x05, 0xD1, 0x12, 0x4B, -0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0D, 0x4B, 0x1B, 0x68, 0x22, 0x01, 0x9B, 0x18, 0x1B, 0x7B, -0x00, 0x2B, 0x05, 0xD1, 0x0B, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x06, 0x4B, 0x1A, 0x68, -0x23, 0x01, 0xD3, 0x18, 0x5D, 0x68, 0x00, 0x2D, 0x03, 0xD0, 0x99, 0x68, 0x18, 0x68, 0x02, 0x22, 0xA8, 0x47, 0x70, 0xBD, -0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, 0x00, 0x10, 0x06, 0x04, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0xFF, 0x23, -0x9B, 0x00, 0x98, 0x42, 0x08, 0xD9, 0x05, 0x4B, 0x59, 0x80, 0x00, 0x24, 0x21, 0x00, 0x04, 0x48, 0x79, 0xF7, 0x72, 0xFF, -0x20, 0x00, 0x10, 0xBD, 0x11, 0x24, 0xF7, 0xE7, 0x54, 0x2A, 0x16, 0x00, 0xA0, 0xD4, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, -0x0D, 0x00, 0x81, 0x88, 0x00, 0x88, 0xFF, 0xF7, 0xE5, 0xFF, 0x01, 0x1E, 0x04, 0xD0, 0x28, 0x00, 0xFC, 0xF7, 0x90, 0xFE, -0x00, 0x20, 0x70, 0xBD, 0xE1, 0x88, 0xA0, 0x78, 0xCB, 0xF7, 0xB6, 0xFE, 0x01, 0x00, 0xF4, 0xE7, 0xF0, 0xB5, 0xCE, 0x46, -0x47, 0x46, 0x80, 0xB5, 0x89, 0xB0, 0x06, 0x00, 0x0A, 0x00, 0x04, 0x23, 0x00, 0x21, 0x26, 0x48, 0x77, 0xF7, 0x46, 0xFE, -0x80, 0x46, 0x00, 0x23, 0x43, 0x80, 0xB1, 0x79, 0x23, 0x48, 0x79, 0xF7, 0x43, 0xFF, 0xB3, 0x79, 0x00, 0x2B, 0x2A, 0xD1, -0x60, 0x24, 0x6B, 0x46, 0xDD, 0x1D, 0x16, 0x23, 0x99, 0x46, 0x1F, 0x4F, 0x07, 0xE0, 0x03, 0x23, 0x42, 0x46, 0x13, 0x70, -0x24, 0xE0, 0x01, 0x34, 0xE4, 0xB2, 0x68, 0x2C, 0x20, 0xD0, 0x4B, 0x46, 0x2B, 0x70, 0x02, 0xAA, 0x29, 0x00, 0x20, 0x00, -0x3B, 0x68, 0x98, 0x47, 0x00, 0x28, 0xF2, 0xD1, 0x06, 0x22, 0x02, 0xA9, 0x30, 0x00, 0xCE, 0xF7, 0xF3, 0xFC, 0x00, 0x28, -0xEB, 0xD1, 0x12, 0x4B, 0x9B, 0x68, 0x20, 0x00, 0x98, 0x47, 0x00, 0x28, 0xE1, 0xD1, 0x43, 0x46, 0x5B, 0x88, 0x01, 0x33, -0x42, 0x46, 0x53, 0x80, 0x04, 0xE0, 0x01, 0x2B, 0x0B, 0xD0, 0x12, 0x23, 0x42, 0x46, 0x13, 0x70, 0x40, 0x46, 0xC9, 0xF7, -0x69, 0xFC, 0x00, 0x20, 0x09, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF0, 0xBD, 0x43, 0x46, 0x5B, 0x88, 0x08, 0x33, -0x42, 0x46, 0x53, 0x80, 0xF0, 0xE7, 0xC0, 0x46, 0x01, 0x11, 0x00, 0x00, 0xAC, 0xD4, 0x10, 0x00, 0x94, 0x92, 0x16, 0x00, -0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x85, 0xB0, 0x0C, 0x00, 0x16, 0x00, 0x17, 0x0A, -0xBA, 0x00, 0x91, 0x4B, 0xD5, 0x58, 0x50, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0xD6, 0xE0, 0x4B, 0x78, 0x5B, 0x08, -0x98, 0x46, 0x7F, 0x2B, 0x11, 0xD0, 0x01, 0x93, 0x00, 0x22, 0x19, 0x00, 0x8A, 0x48, 0x79, 0xF7, 0xDD, 0xFE, 0x43, 0x46, -0x7E, 0x2B, 0x56, 0xD1, 0x36, 0x3B, 0xEB, 0x5C, 0x00, 0x2B, 0x43, 0xD0, 0x00, 0x23, 0x9B, 0x46, 0x7E, 0x33, 0x01, 0x93, -0x0C, 0xE0, 0x8B, 0x78, 0x9B, 0x46, 0x1A, 0x00, 0x7F, 0x21, 0x81, 0x48, 0x79, 0xF7, 0xCA, 0xFE, 0x7F, 0x23, 0x01, 0x93, -0x48, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x43, 0xD0, 0xFB, 0xB2, 0x99, 0x46, 0x61, 0x78, 0x4F, 0x08, 0x59, 0x29, 0x00, 0xD8, -0xE0, 0xE0, 0x7F, 0x2F, 0x05, 0xD1, 0xA3, 0x78, 0x9A, 0x46, 0x0D, 0x2B, 0x55, 0xD8, 0x0B, 0x2B, 0x55, 0xD8, 0x07, 0x23, -0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x9A, 0x46, 0x23, 0x78, 0x52, 0x46, 0x13, 0x70, 0x14, 0x23, 0x32, 0x00, 0x31, 0x00, -0x70, 0x48, 0x77, 0xF7, 0xA3, 0xFD, 0x07, 0x00, 0x61, 0x1C, 0x52, 0x46, 0x82, 0xF7, 0x30, 0xF9, 0x02, 0x28, 0x75, 0xD0, -0x00, 0x28, 0x00, 0xD1, 0xA9, 0xE0, 0x04, 0x28, 0x00, 0xD0, 0x99, 0xE0, 0xFB, 0x22, 0x43, 0x46, 0x15, 0x3B, 0x13, 0x42, -0x00, 0xD1, 0xB1, 0xE0, 0x19, 0x24, 0x6F, 0xE0, 0x36, 0x33, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0xF8, 0xB2, -0x0C, 0x22, 0x7E, 0x21, 0x9F, 0xF7, 0xC7, 0xFA, 0x00, 0x23, 0x9B, 0x46, 0x7E, 0x33, 0x01, 0x93, 0xBE, 0xE7, 0x00, 0x23, -0x9B, 0x46, 0xB7, 0xE7, 0x59, 0x46, 0x40, 0x46, 0x82, 0xF7, 0x96, 0xF8, 0x00, 0x28, 0xB5, 0xD1, 0x43, 0x46, 0x7F, 0x2B, -0x0A, 0xD0, 0x36, 0x23, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0xF8, 0xB2, 0x0C, 0x22, 0x41, 0x46, 0x9F, 0xF7, -0xAC, 0xFA, 0x5A, 0xE0, 0x49, 0x3B, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0xF8, 0xB2, 0x0C, 0x22, 0x59, 0x46, -0x9F, 0xF7, 0xB0, 0xFA, 0x4F, 0xE0, 0x15, 0x2B, 0xA9, 0xD1, 0x4B, 0x46, 0x9B, 0x00, 0x48, 0x4A, 0x9B, 0x58, 0xB2, 0x22, -0x92, 0x00, 0x9A, 0x5C, 0x00, 0x2A, 0xA0, 0xD0, 0xCA, 0x07, 0x9E, 0xD5, 0x46, 0x4A, 0x9A, 0x5C, 0xBA, 0x42, 0x14, 0xD1, -0x7F, 0x2F, 0x98, 0xD1, 0x44, 0x4A, 0x9B, 0x5C, 0x53, 0x45, 0x94, 0xD0, 0x4B, 0x46, 0x1B, 0x02, 0x01, 0x20, 0x18, 0x43, -0x78, 0xF7, 0x16, 0xF9, 0x00, 0x28, 0x30, 0xD0, 0x01, 0x23, 0x2A, 0x22, 0x51, 0x46, 0x48, 0x46, 0x9F, 0xF7, 0x8A, 0xFA, -0x29, 0xE0, 0x4B, 0x46, 0x1B, 0x02, 0x01, 0x20, 0x18, 0x43, 0x78, 0xF7, 0x07, 0xF9, 0x00, 0x28, 0x21, 0xD0, 0x7F, 0x2F, -0xEE, 0xD0, 0x01, 0x23, 0x2A, 0x22, 0x39, 0x00, 0x48, 0x46, 0x9F, 0xF7, 0x6A, 0xFA, 0x18, 0xE0, 0x33, 0x4B, 0xDC, 0x6E, -0x00, 0x23, 0x00, 0x22, 0x01, 0x99, 0x08, 0x00, 0xA0, 0x47, 0x1E, 0x24, 0x38, 0x00, 0x0C, 0x38, 0x77, 0xF7, 0x69, 0xFD, -0x43, 0x46, 0x7F, 0x2B, 0x1C, 0xD0, 0x36, 0x23, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0x22, 0x00, 0x41, 0x46, -0x48, 0x46, 0x9F, 0xF7, 0x50, 0xFA, 0x8A, 0x23, 0xFF, 0x33, 0xEB, 0x5C, 0x00, 0x2B, 0x03, 0xD0, 0x25, 0x4B, 0xEB, 0x5C, -0x00, 0x2B, 0x18, 0xD1, 0x00, 0x20, 0x05, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, -0x1E, 0x24, 0xDB, 0xE7, 0x49, 0x3B, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0x22, 0x00, 0x59, 0x46, 0x48, 0x46, -0x9F, 0xF7, 0x42, 0xFA, 0xE1, 0xE7, 0x38, 0x00, 0x77, 0xF7, 0x16, 0xFD, 0xDD, 0xE7, 0xAA, 0x8D, 0xEB, 0x8D, 0xD2, 0x1A, -0x31, 0x00, 0x16, 0x48, 0x77, 0xF7, 0x24, 0xFC, 0xAA, 0x8D, 0x31, 0x00, 0x14, 0x48, 0x77, 0xF7, 0x1F, 0xFC, 0xD9, 0xE7, -0x38, 0x00, 0x0C, 0x38, 0x77, 0xF7, 0x29, 0xFD, 0x1A, 0x24, 0xC0, 0xE7, 0x12, 0x2F, 0x00, 0xD8, 0x23, 0xE7, 0x3A, 0x00, -0x13, 0x3A, 0xD2, 0xB2, 0x01, 0x23, 0x93, 0x40, 0x0C, 0x4A, 0x13, 0x42, 0x00, 0xD1, 0x1A, 0xE7, 0x00, 0x23, 0x9A, 0x46, -0x6D, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0xBC, 0xD4, 0x10, 0x00, 0x01, 0x06, 0x00, 0x00, 0xC6, 0x02, 0x00, 0x00, -0xC7, 0x02, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0xAF, 0x02, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x00, -0x31, 0x00, 0x00, 0x03, 0x30, 0xB5, 0x87, 0xB0, 0x1E, 0x4C, 0x23, 0x7B, 0x03, 0x22, 0x13, 0x43, 0x23, 0x73, 0x03, 0xAD, -0x21, 0x00, 0x27, 0x31, 0x03, 0x22, 0x28, 0x00, 0xCE, 0xF7, 0x9E, 0xFB, 0xE3, 0x89, 0xAB, 0x80, 0x23, 0x8A, 0xEB, 0x80, -0xA3, 0x7C, 0x2B, 0x72, 0x23, 0x7F, 0x6B, 0x72, 0x28, 0x00, 0xA2, 0xF7, 0x3F, 0xFB, 0x23, 0x00, 0x3C, 0x33, 0x00, 0x24, -0x1A, 0x78, 0x00, 0x2A, 0x06, 0xD0, 0x01, 0x34, 0xE4, 0xB2, 0x09, 0x33, 0x07, 0x2C, 0xF7, 0xD1, 0x07, 0xB0, 0x30, 0xBD, -0x06, 0x2C, 0xFB, 0xD8, 0x01, 0xA8, 0x0B, 0x4B, 0x1A, 0x8B, 0x02, 0x80, 0x5A, 0x8B, 0x42, 0x80, 0x5B, 0x7F, 0x03, 0x71, -0x44, 0x71, 0x08, 0x4A, 0xD0, 0x23, 0xD3, 0x58, 0x98, 0x47, 0x00, 0x28, 0xEC, 0xD1, 0xE3, 0x00, 0x1B, 0x19, 0x03, 0x4C, -0xE4, 0x18, 0x3C, 0x34, 0x02, 0x23, 0x23, 0x70, 0xE4, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, -0x10, 0xB5, 0x07, 0x4C, 0xA0, 0x47, 0x86, 0xF7, 0x97, 0xF8, 0x00, 0x28, 0x01, 0xD1, 0x00, 0x20, 0x10, 0xBD, 0xFF, 0xF7, -0xB1, 0xFF, 0x03, 0x48, 0x79, 0xF7, 0x66, 0xFD, 0xF7, 0xE7, 0xC0, 0x46, 0xDD, 0x90, 0x0A, 0x00, 0xCC, 0xD4, 0x10, 0x00, -0x00, 0xB5, 0x83, 0xB0, 0x01, 0xAA, 0x01, 0x23, 0x0B, 0x40, 0x30, 0x21, 0x0B, 0x43, 0x13, 0x70, 0x11, 0x00, 0x9F, 0xF7, -0x41, 0xF9, 0x03, 0xB0, 0x00, 0xBD, 0x00, 0x00, 0x30, 0xB5, 0x83, 0xB0, 0x04, 0x00, 0x00, 0x0A, 0x82, 0x00, 0x0E, 0x4B, -0xD2, 0x58, 0x3C, 0x23, 0xD3, 0x5C, 0x02, 0x2B, 0x07, 0xD0, 0x96, 0x22, 0x52, 0x00, 0x21, 0x00, 0x0A, 0x48, 0x77, 0xF7, -0x7D, 0xFB, 0x03, 0xB0, 0x30, 0xBD, 0x6B, 0x46, 0x9D, 0x1D, 0xC0, 0xB2, 0x00, 0x22, 0x29, 0x00, 0x89, 0xF7, 0xEE, 0xFA, -0x28, 0x88, 0x79, 0xF7, 0x95, 0xFD, 0x40, 0x00, 0x02, 0x00, 0x2D, 0x32, 0xFF, 0x32, 0xEA, 0xE7, 0x64, 0xA2, 0x16, 0x00, -0x05, 0x06, 0x00, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x00, 0x0A, 0x82, 0x00, 0x07, 0x4B, 0xD2, 0x58, 0x36, 0x23, 0xD1, 0x5C, -0xC0, 0xB2, 0xFF, 0xF7, 0xC1, 0xFF, 0x20, 0x00, 0xFF, 0xF7, 0xCC, 0xFF, 0x32, 0x21, 0x20, 0x00, 0x77, 0xF7, 0x8C, 0xFF, -0x10, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x70, 0xB5, 0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x17, 0x4B, 0xD6, 0x58, -0x20, 0x00, 0x77, 0xF7, 0xDF, 0xFF, 0x03, 0x00, 0x19, 0x28, 0x1D, 0xD8, 0x01, 0x38, 0xC0, 0xB2, 0x14, 0x28, 0x06, 0xD8, -0x02, 0x20, 0x01, 0x2B, 0x15, 0xD1, 0x3C, 0x23, 0xF3, 0x5C, 0x02, 0x2B, 0x16, 0xD0, 0x08, 0x23, 0x14, 0x22, 0x00, 0x21, -0x0D, 0x48, 0x77, 0xF7, 0xF5, 0xFB, 0x0C, 0x23, 0x03, 0x70, 0x80, 0x35, 0x45, 0x80, 0x00, 0x23, 0xC3, 0x80, 0x3C, 0x33, -0xF3, 0x5C, 0x03, 0x71, 0xC9, 0xF7, 0x4A, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x02, 0x20, 0x66, 0x2B, 0xFB, 0xD1, 0xE4, 0xE7, -0x20, 0x00, 0xFF, 0xF7, 0xB9, 0xFF, 0x00, 0x20, 0xF5, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, -0x70, 0xB5, 0x82, 0xB0, 0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x24, 0x4B, 0xD6, 0x58, 0x20, 0x00, 0x77, 0xF7, 0xA6, 0xFF, -0x01, 0x28, 0x16, 0xD0, 0x04, 0xD9, 0x16, 0x38, 0xC3, 0xB2, 0x02, 0x20, 0x03, 0x2B, 0x0E, 0xD8, 0x06, 0x23, 0x1C, 0x22, -0x00, 0x21, 0x1D, 0x48, 0x77, 0xF7, 0xC2, 0xFB, 0x02, 0x23, 0x03, 0x70, 0x80, 0x35, 0x45, 0x80, 0x00, 0x23, 0x83, 0x80, -0xC9, 0xF7, 0x1A, 0xFA, 0x00, 0x20, 0x02, 0xB0, 0x70, 0xBD, 0x36, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x0E, 0xD1, 0x01, 0xA9, -0x0A, 0x33, 0x0B, 0x70, 0xE8, 0xB2, 0x9F, 0xF7, 0x9D, 0xF8, 0x20, 0x00, 0xFF, 0xF7, 0x5C, 0xFF, 0x06, 0x21, 0x20, 0x00, -0x77, 0xF7, 0x1C, 0xFF, 0x00, 0x20, 0xEA, 0xE7, 0x06, 0x23, 0x1C, 0x22, 0x00, 0x21, 0x0B, 0x48, 0x77, 0xF7, 0x9E, 0xFB, -0x04, 0x00, 0x00, 0x23, 0x03, 0x70, 0x2B, 0x00, 0x80, 0x33, 0x43, 0x80, 0xE8, 0xB2, 0xA8, 0xF7, 0x3D, 0xFF, 0x00, 0x04, -0x40, 0x0C, 0xA0, 0x80, 0x20, 0x00, 0xC9, 0xF7, 0xEF, 0xF9, 0x00, 0x20, 0xD3, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, -0x03, 0x11, 0x00, 0x00, 0x70, 0xB5, 0x14, 0x00, 0x13, 0x0A, 0x9B, 0x00, 0x14, 0x4A, 0x9D, 0x58, 0x20, 0x00, 0x77, 0xF7, -0x55, 0xFF, 0x00, 0x28, 0x1E, 0xD0, 0x16, 0x38, 0xC3, 0xB2, 0x00, 0x20, 0x03, 0x2B, 0x13, 0xD9, 0x43, 0x23, 0x01, 0x22, -0xEA, 0x54, 0x07, 0x3B, 0xEB, 0x5C, 0x02, 0x2B, 0x0D, 0xD0, 0x37, 0x23, 0xE9, 0x5C, 0x20, 0x00, 0x8B, 0xF7, 0x32, 0xF8, -0x00, 0x28, 0x0D, 0xD0, 0x37, 0x23, 0xE9, 0x5C, 0x20, 0x00, 0x90, 0xF7, 0x57, 0xFF, 0x00, 0x20, 0x70, 0xBD, 0x20, 0x00, -0x89, 0xF7, 0xFE, 0xFD, 0x02, 0x20, 0xF9, 0xE7, 0x00, 0x20, 0xF7, 0xE7, 0x02, 0x20, 0xF5, 0xE7, 0x64, 0xA2, 0x16, 0x00, -0x10, 0xB5, 0x80, 0x00, 0x0F, 0x4B, 0xC4, 0x58, 0x8E, 0xF7, 0xD4, 0xFC, 0x03, 0x00, 0x01, 0x20, 0x0B, 0x2B, 0x13, 0xD9, -0x11, 0x2B, 0x06, 0xD8, 0x20, 0x00, 0x54, 0x30, 0x00, 0x21, 0x9E, 0xF7, 0x53, 0xFF, 0x00, 0x28, 0x0B, 0xD1, 0x20, 0x00, -0x54, 0x30, 0x01, 0x21, 0x9E, 0xF7, 0x4C, 0xFF, 0x43, 0x42, 0x58, 0x41, 0x40, 0x42, 0x03, 0x23, 0x98, 0x43, 0x05, 0x30, -0x10, 0xBD, 0x03, 0x20, 0xFC, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x02, 0x00, 0x00, 0x29, 0x16, 0xD1, 0x01, 0x23, -0x03, 0x40, 0x58, 0x42, 0x43, 0x41, 0x58, 0x42, 0x20, 0x4B, 0x18, 0x40, 0x20, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x06, 0x23, -0x1A, 0x40, 0x04, 0x2A, 0x02, 0xD0, 0x02, 0x2A, 0x03, 0xD0, 0x70, 0x47, 0x80, 0x04, 0x80, 0x0C, 0xFB, 0xE7, 0x1B, 0x4B, -0x18, 0x40, 0xF8, 0xE7, 0x18, 0x23, 0x19, 0x00, 0x01, 0x40, 0x03, 0x42, 0x21, 0xD0, 0x08, 0x29, 0x0E, 0xD0, 0x60, 0x23, -0x03, 0x40, 0x40, 0x2B, 0x21, 0xD0, 0x20, 0x3B, 0x18, 0x00, 0x43, 0x1E, 0x98, 0x41, 0x40, 0x42, 0x12, 0x4B, 0x18, 0x40, -0x12, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xE2, 0xE7, 0x48, 0x33, 0x03, 0x40, 0x60, 0x2B, 0x0E, 0xD0, 0x40, 0x2B, 0x0E, 0xD0, -0x20, 0x3B, 0x18, 0x00, 0x43, 0x1E, 0x98, 0x41, 0x40, 0x42, 0x0C, 0x4B, 0x18, 0x40, 0x0C, 0x4B, 0x9C, 0x46, 0x60, 0x44, -0xD1, 0xE7, 0x0B, 0x48, 0xCF, 0xE7, 0x0B, 0x48, 0xCD, 0xE7, 0x0B, 0x48, 0xCB, 0xE7, 0x0B, 0x48, 0xC9, 0xE7, 0xC0, 0x46, -0xF0, 0x77, 0xFF, 0xFF, 0x1E, 0xFF, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0x08, 0x33, 0x00, 0x00, -0x00, 0xEF, 0xFF, 0xFF, 0x0C, 0x33, 0x00, 0x00, 0x0E, 0x33, 0x00, 0x00, 0x0C, 0x22, 0x00, 0x00, 0x0C, 0x32, 0x00, 0x00, -0x08, 0x30, 0x00, 0x00, 0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x77, 0xF7, 0xA4, 0xFE, 0x03, 0x00, 0x01, 0x28, -0x0A, 0xD0, 0x00, 0x20, 0x01, 0x2B, 0x06, 0xD9, 0x16, 0x3B, 0xDB, 0xB2, 0x03, 0x30, 0x98, 0x42, 0x80, 0x41, 0x40, 0x42, -0x40, 0x00, 0x70, 0xBD, 0x24, 0x0A, 0xA2, 0x00, 0x0F, 0x4B, 0xD6, 0x58, 0x3F, 0x23, 0xF1, 0x5C, 0x68, 0x78, 0xFF, 0xF7, -0x83, 0xFF, 0x70, 0x85, 0xE4, 0xB2, 0x20, 0x00, 0xFF, 0xF7, 0x5A, 0xFF, 0x9E, 0xF7, 0x5C, 0xFF, 0x71, 0x8D, 0x01, 0x22, -0x9E, 0xF7, 0x08, 0xFD, 0x31, 0x8C, 0x01, 0x22, 0x9E, 0xF7, 0x04, 0xFD, 0x01, 0x00, 0x33, 0x8C, 0x00, 0x20, 0x8B, 0x42, -0xE1, 0xD0, 0x20, 0x00, 0xA8, 0xF7, 0xA2, 0xFF, 0x00, 0x20, 0xDC, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, -0x00, 0xB5, 0x05, 0x00, 0x08, 0x00, 0x0E, 0x0A, 0xB2, 0x00, 0x29, 0x4B, 0xD4, 0x58, 0x77, 0xF7, 0x67, 0xFE, 0x00, 0x28, -0x03, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x03, 0xD8, 0x00, 0x20, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x2B, 0x78, -0x01, 0x27, 0x3B, 0x40, 0x39, 0x22, 0xA3, 0x54, 0x54, 0x23, 0x98, 0x46, 0xA0, 0x44, 0x69, 0x1C, 0x31, 0x3A, 0x40, 0x46, -0xCE, 0xF7, 0x72, 0xF9, 0x57, 0x22, 0xA3, 0x5C, 0x04, 0x21, 0x8B, 0x43, 0xA3, 0x54, 0x02, 0x32, 0xA3, 0x5C, 0x3E, 0x31, -0x8B, 0x43, 0xA3, 0x54, 0x29, 0x78, 0x39, 0x40, 0xF0, 0xB2, 0x9F, 0xF7, 0x2D, 0xF9, 0x09, 0x21, 0x40, 0x46, 0x9E, 0xF7, -0x73, 0xFE, 0x00, 0x28, 0x0D, 0xD1, 0x85, 0xF7, 0x8F, 0xFE, 0x00, 0x28, 0x02, 0xD0, 0x4F, 0x23, 0x01, 0x22, 0xE2, 0x54, -0xBC, 0x22, 0x52, 0x00, 0xA3, 0x5C, 0x01, 0x21, 0x0B, 0x43, 0xA3, 0x54, 0xCB, 0xE7, 0x3A, 0x21, 0x40, 0x46, 0x9E, 0xF7, -0x5F, 0xFE, 0x02, 0x00, 0x53, 0x1E, 0x9A, 0x41, 0x4F, 0x23, 0xE2, 0x54, 0x00, 0x23, 0x00, 0x28, 0x04, 0xD0, 0x05, 0x4A, -0x05, 0x4B, 0xD3, 0x5C, 0x5B, 0x07, 0xDB, 0x0F, 0x4F, 0x22, 0xA3, 0x54, 0xDD, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, -0x7C, 0x1E, 0x16, 0x00, 0xA2, 0x02, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x06, 0x00, 0x0D, 0x00, 0x0B, 0x0A, -0x98, 0x46, 0x9A, 0x00, 0x32, 0x4B, 0xD4, 0x58, 0x27, 0x00, 0x54, 0x37, 0x41, 0x1C, 0x08, 0x22, 0x38, 0x00, 0xCE, 0xF7, -0x23, 0xF9, 0x57, 0x22, 0xA3, 0x5C, 0x04, 0x21, 0x8B, 0x43, 0xA3, 0x54, 0x02, 0x32, 0xA3, 0x5C, 0x3E, 0x31, 0x8B, 0x43, -0xA3, 0x54, 0x28, 0x00, 0x77, 0xF7, 0xF4, 0xFD, 0x14, 0x28, 0x13, 0xD0, 0x07, 0xD9, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, -0x05, 0xD8, 0x00, 0x20, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x00, 0x28, 0xF9, 0xD0, 0x28, 0x00, 0x77, 0xF7, 0xE4, 0xFD, -0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x7D, 0xF7, 0xB1, 0xF8, 0xF0, 0xE7, 0x29, 0x00, 0x1D, 0x48, 0x77, 0xF7, 0xBC, 0xF9, -0x32, 0x78, 0x01, 0x23, 0x13, 0x40, 0x3A, 0x22, 0xA3, 0x54, 0x09, 0x21, 0x38, 0x00, 0x9E, 0xF7, 0x07, 0xFE, 0x00, 0x28, -0x11, 0xD1, 0xBC, 0x22, 0x52, 0x00, 0xA3, 0x5C, 0x01, 0x21, 0x0B, 0x43, 0xA3, 0x54, 0x3F, 0x21, 0x38, 0x00, 0x9E, 0xF7, -0xFB, 0xFD, 0x00, 0x28, 0x19, 0xD0, 0x01, 0x22, 0x41, 0x46, 0x28, 0x00, 0x91, 0xF7, 0xE6, 0xF8, 0xCF, 0xE7, 0x3A, 0x21, -0x38, 0x00, 0x9E, 0xF7, 0xEF, 0xFD, 0x02, 0x00, 0x53, 0x1E, 0x9A, 0x41, 0x4F, 0x23, 0xE2, 0x54, 0x00, 0x23, 0x00, 0x28, -0x04, 0xD0, 0x08, 0x4A, 0x08, 0x4B, 0xD3, 0x5C, 0x5B, 0x07, 0xDB, 0x0F, 0x4F, 0x22, 0xA3, 0x54, 0xD9, 0xE7, 0x01, 0x21, -0x28, 0x00, 0x77, 0xF7, 0x45, 0xFD, 0xB6, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0x05, 0x06, 0x00, 0x00, 0x7C, 0x1E, 0x16, 0x00, -0xA2, 0x02, 0x00, 0x00, 0xF0, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0x83, 0xB0, 0x04, 0x00, 0x0D, 0x00, 0x0E, 0x0A, -0xB2, 0x00, 0x35, 0x4B, 0xD7, 0x58, 0x02, 0x78, 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xBB, 0x54, 0x36, 0x23, 0xFB, 0x5C, -0x98, 0x46, 0x33, 0x01, 0x9B, 0x1B, 0x9B, 0x00, 0x2F, 0x4A, 0xD3, 0x18, 0x5B, 0x7B, 0x99, 0x46, 0x08, 0x00, 0x77, 0xF7, -0x7F, 0xFD, 0x02, 0x00, 0x19, 0x28, 0x1B, 0xD8, 0x01, 0x38, 0xC0, 0xB2, 0x14, 0x28, 0x47, 0xD8, 0x02, 0x20, 0x01, 0x2A, -0x47, 0xD1, 0x3C, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x36, 0xD1, 0x7B, 0x8C, 0x5B, 0x07, 0x33, 0xD5, 0xA3, 0x88, 0x62, 0x88, -0x61, 0x78, 0x20, 0x89, 0x01, 0x90, 0xE0, 0x88, 0x00, 0x90, 0x21, 0x4C, 0x94, 0x20, 0x24, 0x58, 0x28, 0x00, 0xA0, 0x47, -0x00, 0x20, 0x32, 0xE0, 0x2E, 0x28, 0x2F, 0xD1, 0x01, 0x23, 0x4A, 0x46, 0x5A, 0x40, 0x13, 0x00, 0x42, 0x46, 0x5A, 0x40, -0x13, 0x00, 0x39, 0x22, 0xBA, 0x5C, 0xDB, 0xB2, 0x9A, 0x42, 0x0D, 0xD1, 0xA3, 0x88, 0x62, 0x88, 0x61, 0x78, 0x20, 0x89, -0x01, 0x90, 0xE0, 0x88, 0x00, 0x90, 0x13, 0x4C, 0x94, 0x20, 0x24, 0x58, 0x28, 0x00, 0xA0, 0x47, 0x00, 0x20, 0x16, 0xE0, -0x22, 0x78, 0x01, 0x23, 0x13, 0x40, 0xF0, 0xB2, 0x23, 0x22, 0x17, 0x21, 0x9E, 0xF7, 0xA9, 0xFE, 0x00, 0x20, 0x0C, 0xE0, -0x22, 0x78, 0x01, 0x23, 0x13, 0x40, 0xF0, 0xB2, 0x24, 0x22, 0x17, 0x21, 0x9E, 0xF7, 0x9F, 0xFE, 0x00, 0x20, 0x02, 0xE0, -0x00, 0x20, 0x00, 0xE0, 0x02, 0x20, 0x03, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF0, 0xBD, 0x64, 0xA2, 0x16, 0x00, -0xC0, 0xA0, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF8, 0xB5, 0x04, 0x00, 0x08, 0x00, 0x0D, 0x0A, 0xAA, 0x00, 0x22, 0x4B, -0xD6, 0x58, 0x77, 0xF7, 0x19, 0xFD, 0x00, 0x28, 0x3B, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x37, 0xD9, 0x22, 0x78, -0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x36, 0x23, 0xF3, 0x5C, 0x01, 0x2B, 0x27, 0xD1, 0x23, 0x7A, 0x1B, 0x3A, -0x01, 0x2B, 0x24, 0xD8, 0x27, 0x00, 0x09, 0x37, 0x38, 0x00, 0x79, 0xF7, 0x93, 0xFA, 0x01, 0x00, 0x13, 0x28, 0x16, 0xD9, -0x8B, 0x23, 0x9B, 0x00, 0xF0, 0x18, 0x0A, 0x22, 0x39, 0x00, 0xCE, 0xF7, 0x19, 0xF8, 0x22, 0x7A, 0x53, 0x1E, 0x9A, 0x41, -0xD2, 0xB2, 0xE8, 0xB2, 0x3B, 0x00, 0x61, 0x68, 0xA9, 0xF7, 0x2E, 0xF8, 0x23, 0x7A, 0x5A, 0x1E, 0x93, 0x41, 0x91, 0x22, -0x92, 0x00, 0xB3, 0x54, 0x0B, 0xE0, 0x08, 0x48, 0x79, 0xF7, 0x12, 0xFA, 0x1E, 0x22, 0x00, 0xE0, 0x24, 0x22, 0x39, 0x23, -0xF3, 0x5C, 0xE8, 0xB2, 0x3C, 0x21, 0x9E, 0xF7, 0x48, 0xFE, 0x00, 0x20, 0xF8, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, -0xD8, 0xD4, 0x10, 0x00, 0x70, 0xB5, 0x82, 0xB0, 0x04, 0x00, 0x08, 0x00, 0x0D, 0x0A, 0xAA, 0x00, 0x2B, 0x4B, 0xD6, 0x58, -0x77, 0xF7, 0xCA, 0xFC, 0x00, 0x28, 0x20, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x1C, 0xD9, 0x22, 0x78, 0x01, 0x23, -0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x4F, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x16, 0xD0, 0xA3, 0x78, 0x01, 0x2B, 0x31, 0xD0, -0x02, 0x2B, 0x39, 0xD0, 0x00, 0x20, 0x00, 0x2B, 0x22, 0xD0, 0x01, 0xA9, 0x39, 0x23, 0xF2, 0x5C, 0x3B, 0x3B, 0x13, 0x43, -0x0B, 0x70, 0x20, 0x23, 0x4B, 0x70, 0x88, 0x70, 0xE8, 0xB2, 0x9E, 0xF7, 0xC1, 0xFD, 0x00, 0x20, 0x02, 0xB0, 0x70, 0xBD, -0x85, 0xF7, 0xF8, 0xFC, 0x00, 0x28, 0x03, 0xD0, 0x4F, 0x23, 0x01, 0x22, 0xF2, 0x54, 0xE0, 0xE7, 0x4F, 0x23, 0xF3, 0x5C, -0x00, 0x2B, 0xDC, 0xD1, 0x39, 0x23, 0xF3, 0x5C, 0xE8, 0xB2, 0x1A, 0x22, 0x1F, 0x21, 0x9E, 0xF7, 0x0D, 0xFE, 0xE8, 0xE7, -0xE8, 0xB2, 0xF5, 0xF7, 0x59, 0xF9, 0x43, 0x1E, 0x98, 0x41, 0x43, 0x42, 0x2A, 0x20, 0x18, 0x40, 0x15, 0x30, 0xD2, 0xE7, -0xE8, 0xB2, 0xF5, 0xF7, 0x79, 0xF9, 0x43, 0x1E, 0x98, 0x41, 0x43, 0x42, 0x15, 0x20, 0x18, 0x40, 0x15, 0x30, 0xC8, 0xE7, -0xE8, 0xB2, 0x03, 0x4B, 0x1B, 0x69, 0x98, 0x47, 0x2A, 0x20, 0xC2, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0x60, 0x92, 0x16, 0x00, -0x70, 0xB5, 0x14, 0x00, 0x13, 0x0A, 0x9B, 0x00, 0x11, 0x4A, 0x9D, 0x58, 0x20, 0x00, 0x77, 0xF7, 0x69, 0xFC, 0x03, 0x00, -0x01, 0x28, 0x0A, 0xD0, 0x00, 0x20, 0x01, 0x2B, 0x06, 0xD9, 0x16, 0x3B, 0xDB, 0xB2, 0x03, 0x30, 0x98, 0x42, 0x80, 0x41, -0x40, 0x42, 0x40, 0x00, 0x70, 0xBD, 0x36, 0x23, 0xEB, 0x5C, 0x00, 0x20, 0x00, 0x2B, 0xF9, 0xD1, 0x91, 0x23, 0x9B, 0x00, -0xEB, 0x5C, 0x00, 0x2B, 0xF4, 0xD0, 0x00, 0x21, 0x20, 0x00, 0x8E, 0xF7, 0xDB, 0xFC, 0x00, 0x20, 0xEE, 0xE7, 0xC0, 0x46, -0x64, 0xA2, 0x16, 0x00, 0xF0, 0xB5, 0x83, 0xB0, 0x00, 0x90, 0x0F, 0x00, 0x16, 0x00, 0x01, 0x93, 0x0B, 0x78, 0xDC, 0x00, -0xE3, 0x18, 0x32, 0x4C, 0xE4, 0x18, 0x3C, 0x34, 0x23, 0x78, 0x01, 0x2B, 0x02, 0xD0, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, -0x4B, 0x78, 0x00, 0x2B, 0x4B, 0xD1, 0x2C, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x4D, 0xD0, 0x2B, 0x4D, 0x2C, 0x00, 0x3F, 0x34, -0x02, 0xE0, 0x09, 0x35, 0xA5, 0x42, 0x43, 0xD0, 0xAB, 0x79, 0x02, 0x2B, 0xF9, 0xD9, 0x3B, 0x78, 0xD9, 0x00, 0xC9, 0x18, -0x36, 0x31, 0x23, 0x4B, 0x9C, 0x46, 0x61, 0x44, 0x06, 0x22, 0x28, 0x00, 0xCD, 0xF7, 0x18, 0xFF, 0x00, 0x28, 0xEC, 0xD1, -0x0C, 0x23, 0x03, 0x22, 0x00, 0x21, 0x1F, 0x48, 0x77, 0xF7, 0x3C, 0xF8, 0x04, 0x00, 0x0B, 0x23, 0x03, 0x70, 0x3B, 0x78, -0xD9, 0x00, 0xC9, 0x18, 0x36, 0x31, 0x18, 0x4D, 0x49, 0x19, 0x04, 0x30, 0x06, 0x22, 0xCD, 0xF7, 0x27, 0xFF, 0x01, 0x23, -0x5B, 0x42, 0x63, 0x80, 0x02, 0x33, 0xA3, 0x72, 0x00, 0x26, 0xE6, 0x72, 0x20, 0x00, 0xC8, 0xF7, 0x85, 0xFE, 0x3A, 0x78, -0xD3, 0x00, 0x9B, 0x18, 0xEB, 0x18, 0x3E, 0x33, 0x18, 0x78, 0x85, 0xF7, 0x0F, 0xFA, 0x3A, 0x78, 0xD3, 0x00, 0x9B, 0x18, -0xEB, 0x18, 0x3C, 0x33, 0x1E, 0x70, 0x28, 0x68, 0x0C, 0x38, 0x77, 0xF7, 0x62, 0xF8, 0x2E, 0x60, 0xAD, 0xE7, 0x16, 0x2B, -0xAB, 0xD0, 0x02, 0xE0, 0x7B, 0x78, 0x16, 0x2B, 0xA7, 0xD0, 0x01, 0x9B, 0x32, 0x00, 0x39, 0x00, 0x00, 0x98, 0x04, 0x4C, -0xA0, 0x47, 0xA0, 0xE7, 0x68, 0x9E, 0x16, 0x00, 0x9E, 0x9E, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, 0xED, 0x33, 0x09, 0x00, -0xF0, 0xB5, 0x87, 0xB0, 0x01, 0x90, 0x0D, 0x00, 0x02, 0x92, 0x03, 0x93, 0x0A, 0x78, 0xD3, 0x00, 0x9A, 0x18, 0x29, 0x4B, -0x9B, 0x18, 0x3C, 0x33, 0x1B, 0x78, 0x02, 0x2B, 0x02, 0xD0, 0x00, 0x20, 0x07, 0xB0, 0xF0, 0xBD, 0x25, 0x4C, 0x27, 0x00, -0x3F, 0x37, 0x4E, 0x1C, 0x02, 0xE0, 0x09, 0x34, 0xBC, 0x42, 0x39, 0xD0, 0xA3, 0x79, 0x02, 0x2B, 0xF9, 0xD9, 0x06, 0x22, -0x31, 0x00, 0x20, 0x00, 0xCD, 0xF7, 0xAE, 0xFE, 0x00, 0x28, 0xF2, 0xD1, 0x1B, 0x4A, 0x29, 0x78, 0xCB, 0x00, 0x5B, 0x18, -0xD3, 0x18, 0x3C, 0x33, 0x00, 0x21, 0x19, 0x70, 0x13, 0x7B, 0x9B, 0x07, 0xDF, 0xD5, 0x18, 0x4B, 0x00, 0x24, 0x1A, 0x78, -0x00, 0x2A, 0x05, 0xD0, 0x01, 0x34, 0xE4, 0xB2, 0x09, 0x33, 0x07, 0x2C, 0xF7, 0xD1, 0xD4, 0xE7, 0x06, 0x2C, 0xD2, 0xD8, -0x0F, 0x4B, 0x1A, 0x8B, 0x04, 0xA9, 0x0A, 0x80, 0x5A, 0x8B, 0x4A, 0x80, 0x5B, 0x7F, 0x0B, 0x71, 0x4C, 0x71, 0x0E, 0x4A, -0xD0, 0x23, 0xD3, 0x58, 0x08, 0x00, 0x98, 0x47, 0x00, 0x28, 0xC2, 0xD1, 0xE3, 0x00, 0x1C, 0x19, 0x06, 0x4B, 0x1C, 0x19, -0x3C, 0x34, 0x02, 0x22, 0x22, 0x70, 0xBA, 0xE7, 0x03, 0x9B, 0x02, 0x9A, 0x29, 0x00, 0x01, 0x98, 0x05, 0x4C, 0xA0, 0x47, -0xB3, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, 0x9E, 0x9E, 0x16, 0x00, 0xA4, 0x9E, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, -0xDD, 0x32, 0x09, 0x00, 0x00, 0x09, 0x70, 0x47, 0x00, 0x28, 0x14, 0xD0, 0x0E, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x03, 0xD0, -0x0D, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x06, 0xD1, 0x0C, 0x4B, 0x0A, 0x4A, 0x99, 0x68, 0x11, 0x60, 0xDA, 0x68, 0x09, 0x4B, -0x1A, 0x60, 0x09, 0x4B, 0x09, 0x4A, 0x9A, 0x60, 0x09, 0x4A, 0xDA, 0x60, 0x70, 0x47, 0x06, 0x4B, 0x03, 0x4A, 0x12, 0x68, -0x9A, 0x60, 0x03, 0x4A, 0x12, 0x68, 0xDA, 0x60, 0xF6, 0xE7, 0xC0, 0x46, 0xB8, 0xE6, 0x10, 0x00, 0xD4, 0xE6, 0x10, 0x00, -0x60, 0x92, 0x16, 0x00, 0x2D, 0x01, 0x10, 0x00, 0x81, 0x01, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x01, 0x00, 0x2F, 0x48, -0x79, 0xF7, 0x68, 0xF8, 0x7D, 0xF7, 0xE8, 0xFF, 0x01, 0x28, 0x00, 0xD0, 0x70, 0xBD, 0xFF, 0xF7, 0xC9, 0xFF, 0x2B, 0x4A, -0x95, 0x23, 0x9B, 0x00, 0xD2, 0x5C, 0x2A, 0x4B, 0x1A, 0x70, 0x2A, 0x4B, 0x1A, 0x68, 0x2A, 0x4B, 0x1A, 0x60, 0xE6, 0x23, -0x5B, 0x00, 0x1B, 0x68, 0x28, 0x48, 0x98, 0x47, 0x28, 0x4B, 0x18, 0x60, 0x01, 0x2C, 0x27, 0xD0, 0x02, 0x23, 0x22, 0x00, -0x9A, 0x43, 0x05, 0xD0, 0x25, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x1C, 0x4E, 0x95, 0x25, -0xAD, 0x00, 0x40, 0x23, 0x73, 0x55, 0x1C, 0x4B, 0x20, 0x4A, 0x1A, 0x60, 0x8C, 0x21, 0xE8, 0x23, 0x5B, 0x00, 0x1B, 0x68, -0x49, 0x00, 0x1A, 0x48, 0x98, 0x47, 0x73, 0x5D, 0x1C, 0x49, 0x2D, 0x22, 0x8B, 0x54, 0x01, 0x2C, 0x1B, 0xD9, 0x02, 0x2C, -0xC8, 0xD1, 0x1A, 0x49, 0x0A, 0x88, 0xFF, 0x20, 0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, 0xC1, 0xE7, 0x0D, 0x4D, 0x95, 0x24, -0xA4, 0x00, 0x30, 0x23, 0x2B, 0x55, 0x0D, 0x4B, 0x11, 0x4A, 0x1A, 0x60, 0x8C, 0x21, 0xE8, 0x23, 0x5B, 0x00, 0x1B, 0x68, -0x49, 0x00, 0x0B, 0x48, 0x98, 0x47, 0x2B, 0x5D, 0x0D, 0x49, 0x2D, 0x22, 0x8B, 0x54, 0x0E, 0x49, 0x0A, 0x88, 0xFF, 0x20, -0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, 0xA7, 0xE7, 0xE4, 0xD4, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0xF6, 0xE8, 0x10, 0x00, -0x54, 0x07, 0x62, 0x40, 0x08, 0xE7, 0x10, 0x00, 0x58, 0x00, 0x01, 0x50, 0x18, 0xE7, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, -0xFD, 0x20, 0x22, 0x21, 0x60, 0x92, 0x16, 0x00, 0x8E, 0x01, 0x61, 0x40, 0x0C, 0x65, 0x61, 0x40, 0x70, 0xB5, 0x04, 0x00, -0x01, 0x00, 0x1A, 0x48, 0x78, 0xF7, 0xEE, 0xFF, 0x7D, 0xF7, 0x6E, 0xFF, 0x01, 0x28, 0x00, 0xD0, 0x70, 0xBD, 0x00, 0x20, -0xFF, 0xF7, 0x4E, 0xFF, 0x15, 0x4E, 0x95, 0x25, 0xAD, 0x00, 0x15, 0x4B, 0x1B, 0x78, 0x73, 0x55, 0x14, 0x4B, 0x1A, 0x68, -0x14, 0x4B, 0x1A, 0x60, 0x14, 0x4B, 0x1B, 0x68, 0x80, 0x21, 0x49, 0x00, 0x19, 0x43, 0xE8, 0x23, 0x5B, 0x00, 0x1B, 0x68, -0x11, 0x48, 0x98, 0x47, 0x73, 0x5D, 0x11, 0x49, 0x2D, 0x22, 0x8B, 0x54, 0x01, 0x2C, 0x08, 0xD9, 0x02, 0x2C, 0xDF, 0xD1, -0x0E, 0x49, 0x0A, 0x88, 0xFF, 0x20, 0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, 0xD8, 0xE7, 0x0C, 0x49, 0x0A, 0x88, 0xFF, 0x20, -0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, 0xD1, 0xE7, 0xF8, 0xD4, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0xF6, 0xE8, 0x10, 0x00, -0x08, 0xE7, 0x10, 0x00, 0x54, 0x07, 0x62, 0x40, 0x18, 0xE7, 0x10, 0x00, 0x58, 0x00, 0x01, 0x50, 0x60, 0x92, 0x16, 0x00, -0x8E, 0x01, 0x61, 0x40, 0x0C, 0x65, 0x61, 0x40, 0x10, 0xB5, 0x09, 0x28, 0x0B, 0xD9, 0xFF, 0x28, 0x0B, 0xD1, 0x0B, 0x09, -0x1F, 0x29, 0x0D, 0xD9, 0x02, 0x3B, 0x01, 0x2B, 0x05, 0xD8, 0x01, 0x20, 0xFF, 0xF7, 0xA6, 0xFF, 0x01, 0xE0, 0x00, 0x28, -0x08, 0xD1, 0x10, 0xBD, 0x00, 0x20, 0xFF, 0xF7, 0x25, 0xFF, 0xFA, 0xE7, 0x00, 0x20, 0xFF, 0xF7, 0x9B, 0xFF, 0xF6, 0xE7, -0x0B, 0x09, 0x1F, 0x29, 0xF4, 0xD9, 0x02, 0x3B, 0x01, 0x2B, 0xF0, 0xD8, 0x01, 0x20, 0xFF, 0xF7, 0x17, 0xFF, 0xEC, 0xE7, -0xF8, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0x1F, 0x00, 0x13, 0x0A, 0x9B, 0x00, -0x11, 0x4A, 0x9B, 0x58, 0x99, 0x46, 0x0A, 0x88, 0x10, 0x4B, 0xD3, 0x5C, 0x98, 0x46, 0x20, 0x00, 0x77, 0xF7, 0x42, 0xFA, -0x0A, 0x28, 0x0A, 0xD0, 0x3B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, 0x0B, 0x4C, 0xA0, 0x47, 0x00, 0x20, 0x0C, 0xBC, -0x90, 0x46, 0x99, 0x46, 0xF8, 0xBD, 0x43, 0x46, 0x5B, 0x08, 0x03, 0x2B, 0xF0, 0xD1, 0x07, 0x4B, 0x4A, 0x46, 0xD1, 0x5C, -0x06, 0x3B, 0xD0, 0x5C, 0xFF, 0xF7, 0xB0, 0xFF, 0xE8, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, -0x05, 0x87, 0x0A, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x70, 0xB5, 0x82, 0xB0, 0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x20, 0x4B, -0xD6, 0x58, 0x20, 0x00, 0x77, 0xF7, 0x16, 0xFA, 0x03, 0x00, 0x01, 0x28, 0x10, 0xD0, 0x00, 0x20, 0x01, 0x2B, 0x05, 0xD9, -0x19, 0x2B, 0x05, 0xD8, 0x15, 0x22, 0x9A, 0x42, 0x40, 0x41, 0x40, 0x00, 0x02, 0xB0, 0x70, 0xBD, 0x58, 0x3B, 0x18, 0x00, -0x43, 0x1E, 0x98, 0x41, 0x40, 0x00, 0xF7, 0xE7, 0x4C, 0x23, 0xF3, 0x5C, 0x00, 0x20, 0x00, 0x2B, 0xF2, 0xD1, 0x4B, 0x33, -0xF3, 0x5C, 0x00, 0x2B, 0x02, 0xD0, 0x4B, 0x23, 0x00, 0x22, 0xF2, 0x54, 0x4F, 0x23, 0xF3, 0x5C, 0x00, 0x20, 0x00, 0x2B, -0xE6, 0xD0, 0x01, 0xA9, 0x36, 0x23, 0xF2, 0x5C, 0x38, 0x3B, 0x13, 0x43, 0x0B, 0x70, 0x1F, 0x23, 0x4B, 0x70, 0x1D, 0x3B, -0x8B, 0x70, 0xE8, 0xB2, 0x9E, 0xF7, 0xFE, 0xFA, 0x20, 0x00, 0x8E, 0xF7, 0xF1, 0xFE, 0x58, 0x21, 0x20, 0x00, 0x77, 0xF7, -0x7D, 0xF9, 0x00, 0x20, 0xD0, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x05, 0x4B, 0x00, 0x20, 0x1A, 0x78, 0x00, 0x2A, -0x04, 0xD0, 0x01, 0x30, 0xC0, 0xB2, 0x09, 0x33, 0x07, 0x28, 0xF7, 0xD1, 0x70, 0x47, 0xC0, 0x46, 0xA4, 0x9E, 0x16, 0x00, -0x70, 0xB5, 0x80, 0x00, 0x28, 0x4B, 0xC2, 0x58, 0x28, 0x49, 0xD5, 0x23, 0x5B, 0x00, 0xC9, 0x5C, 0xCB, 0x00, 0x5B, 0x1A, -0x5B, 0x00, 0x26, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x19, 0x88, 0xC9, 0x0B, 0x0B, 0xD0, 0x19, 0x88, 0x49, 0x04, 0x49, 0x0C, -0x19, 0x80, 0x20, 0x4C, 0xD5, 0x20, 0x40, 0x00, 0x21, 0x5C, 0x01, 0x31, 0x03, 0x23, 0x0B, 0x40, 0x23, 0x54, 0x9E, 0x23, -0xD3, 0x5C, 0x5B, 0x00, 0xAE, 0x21, 0x51, 0x5C, 0x5B, 0x18, 0xDB, 0xB2, 0x99, 0x00, 0xCB, 0x18, 0x5B, 0x00, 0x19, 0x49, -0x5C, 0x18, 0x21, 0x88, 0x89, 0xB2, 0x00, 0x29, 0x19, 0xD1, 0x9C, 0x31, 0x50, 0x5C, 0x00, 0x28, 0x01, 0xD1, 0x01, 0x31, -0x50, 0x5C, 0x14, 0x49, 0x5D, 0x18, 0x29, 0x88, 0x78, 0x26, 0xB1, 0x43, 0xC0, 0x00, 0x01, 0x43, 0x29, 0x80, 0x96, 0x21, -0x51, 0x5A, 0xC9, 0x00, 0x06, 0x20, 0x01, 0x43, 0x89, 0xB2, 0x0E, 0x48, 0x18, 0x18, 0x01, 0x80, 0x94, 0x21, 0x51, 0x5A, -0x21, 0x80, 0x0C, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x19, 0x88, 0x49, 0x04, 0x49, 0x0C, 0x19, 0x80, 0xAE, 0x21, 0x53, 0x5C, -0x58, 0x42, 0x43, 0x41, 0x53, 0x54, 0x70, 0xBD, 0x38, 0xE6, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, 0x90, 0x69, 0x61, 0x40, -0xCE, 0x69, 0x61, 0x40, 0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0x70, 0xB5, 0x35, 0x4B, -0x1C, 0x68, 0x00, 0x2C, 0x14, 0xD0, 0xE3, 0x78, 0x9B, 0x00, 0x33, 0x4A, 0x9D, 0x58, 0xA0, 0x23, 0xEB, 0x5C, 0x02, 0x2B, -0x0E, 0xD0, 0x31, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x05, 0xD0, 0x30, 0x4A, 0x11, 0x68, 0x80, 0x23, 0xDB, 0x03, 0x0B, 0x43, -0x13, 0x60, 0xA0, 0x23, 0x02, 0x22, 0xEA, 0x54, 0x00, 0x20, 0x70, 0xBD, 0x94, 0x23, 0xE8, 0x5A, 0x00, 0x28, 0x07, 0xD0, -0x63, 0x78, 0x00, 0x2B, 0x42, 0xD0, 0x01, 0x2B, 0x43, 0xD0, 0x94, 0x23, 0x00, 0x22, 0xEA, 0x52, 0xE2, 0x78, 0x62, 0x23, -0x53, 0x43, 0x24, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x18, 0x88, 0x40, 0x05, 0x40, 0x0F, 0x84, 0xF7, 0x51, 0xFF, 0x1D, 0x4D, -0xE3, 0x78, 0x9B, 0x00, 0x58, 0x59, 0x76, 0xF7, 0xCF, 0xFE, 0xE3, 0x78, 0x9B, 0x00, 0x00, 0x24, 0x5C, 0x51, 0x1C, 0x48, -0xCB, 0xF7, 0x56, 0xFD, 0x1B, 0x48, 0x78, 0xF7, 0x53, 0xFE, 0x14, 0x4D, 0x2B, 0x68, 0xD8, 0x68, 0x76, 0xF7, 0xC0, 0xFE, -0x2B, 0x68, 0xDC, 0x60, 0x98, 0x68, 0x00, 0x28, 0x05, 0xD0, 0x76, 0xF7, 0xB9, 0xFE, 0x0E, 0x4B, 0x1B, 0x68, 0x00, 0x22, -0x9A, 0x60, 0x0C, 0x4C, 0x20, 0x68, 0x76, 0xF7, 0xB1, 0xFE, 0x00, 0x23, 0x23, 0x60, 0x0B, 0x4B, 0x1B, 0x78, 0x00, 0x2B, -0xBC, 0xD0, 0x0E, 0x4A, 0x13, 0x68, 0x0E, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x06, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0xB3, 0xE7, -0x80, 0xF7, 0x4A, 0xFE, 0xBB, 0xE7, 0x80, 0xF7, 0xFD, 0xFD, 0xB8, 0xE7, 0xD8, 0xE5, 0x10, 0x00, 0x38, 0xE6, 0x10, 0x00, -0xDC, 0xE5, 0x10, 0x00, 0x00, 0x04, 0x60, 0x40, 0xFE, 0x64, 0x61, 0x40, 0xFC, 0xE6, 0x10, 0x00, 0x0C, 0xD5, 0x10, 0x00, -0xD0, 0x04, 0x60, 0x40, 0xFF, 0x7F, 0xFF, 0xFF, 0x70, 0xB5, 0x13, 0x4B, 0x1C, 0x68, 0xA5, 0x78, 0x00, 0x2D, 0x1D, 0xD1, -0x23, 0x78, 0x03, 0x2B, 0x1C, 0xD0, 0x63, 0x78, 0x00, 0x2B, 0x08, 0xD0, 0x01, 0x2B, 0x0F, 0xD0, 0x0D, 0x4B, 0x9B, 0x6E, -0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x04, 0xE0, 0x0E, 0x22, 0x01, 0x00, 0xE0, 0x68, 0xCD, 0xF7, 0xF2, 0xFB, -0x01, 0x23, 0xA3, 0x70, 0x28, 0x00, 0x70, 0xBD, 0x0E, 0x22, 0x01, 0x00, 0xE0, 0x68, 0xCD, 0xF7, 0xE9, 0xFB, 0xF5, 0xE7, -0x0C, 0x25, 0xF5, 0xE7, 0x0C, 0x25, 0xF3, 0xE7, 0xD8, 0xE5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, -0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8B, 0xB0, 0x05, 0x00, 0x0E, 0x00, 0x14, 0x00, 0x01, 0x93, 0x00, 0x23, -0x08, 0x93, 0x09, 0x93, 0x06, 0x93, 0x06, 0xAA, 0x93, 0x80, 0x82, 0x00, 0xBB, 0x4B, 0xD3, 0x58, 0x00, 0x2B, 0x00, 0xD1, -0x10, 0xE1, 0xAB, 0x00, 0xB8, 0x4A, 0x9F, 0x58, 0x21, 0x00, 0xB8, 0x48, 0x78, 0xF7, 0xCE, 0xFD, 0x00, 0x2C, 0x00, 0xD1, -0x0D, 0xE1, 0x01, 0x2C, 0x00, 0xD1, 0x6D, 0xE2, 0xB4, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x00, 0x23, 0x00, 0x93, 0x98, 0x46, 0x99, 0x46, 0x02, 0x93, 0x00, 0x21, 0x00, 0x26, 0x01, 0x9B, 0x00, 0x2B, 0x63, 0xD0, -0x62, 0x23, 0x6B, 0x43, 0xAC, 0x4A, 0x98, 0x18, 0x02, 0x88, 0x1F, 0x24, 0xA2, 0x43, 0x32, 0x43, 0x02, 0x80, 0xAA, 0x4A, -0x9A, 0x18, 0x10, 0x88, 0xA9, 0x4E, 0x06, 0x40, 0x80, 0x20, 0x40, 0x00, 0x30, 0x43, 0x10, 0x80, 0x10, 0x88, 0x40, 0x04, -0x40, 0x0C, 0x10, 0x80, 0x10, 0x88, 0xA5, 0x4E, 0x30, 0x40, 0x10, 0x80, 0xA4, 0x4A, 0x94, 0x46, 0x9C, 0x44, 0x62, 0x46, -0x16, 0x88, 0xFF, 0x20, 0x86, 0x43, 0xA2, 0x4A, 0x93, 0x46, 0x2D, 0x22, 0x5C, 0x46, 0xA2, 0x5C, 0x32, 0x43, 0x64, 0x46, -0x22, 0x80, 0x9F, 0x4A, 0x9E, 0x18, 0x00, 0x22, 0x94, 0x46, 0x32, 0x80, 0x9D, 0x4A, 0x93, 0x46, 0x9B, 0x44, 0x5A, 0x46, -0x12, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x5C, 0x46, 0x22, 0x80, 0x9A, 0x4A, 0x9A, 0x18, 0x11, 0x80, 0x99, 0x4A, 0x9A, 0x18, -0x61, 0x46, 0x11, 0x80, 0x98, 0x4A, 0x9A, 0x18, 0x11, 0x80, 0x98, 0x4A, 0x99, 0x18, 0x02, 0x22, 0xFF, 0x32, 0x0A, 0x80, -0x32, 0x88, 0x40, 0x24, 0xA2, 0x43, 0x22, 0x43, 0x32, 0x80, 0x0A, 0x88, 0x82, 0x43, 0xFE, 0x38, 0x02, 0x43, 0x0A, 0x80, -0x9E, 0x22, 0xBA, 0x5C, 0x14, 0x21, 0x4A, 0x43, 0x8F, 0x49, 0x8C, 0x46, 0x62, 0x44, 0x92, 0xB2, 0x8E, 0x49, 0x59, 0x18, -0x0A, 0x80, 0x8E, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, 0x3F, 0x21, 0x0A, 0x40, 0x8C, 0x49, 0x0A, 0x43, 0x1A, 0x80, -0x08, 0xAE, 0x31, 0x00, 0x06, 0xA8, 0xAF, 0xF7, 0x9D, 0xF9, 0x06, 0xAB, 0x5A, 0x78, 0x12, 0x02, 0x1B, 0x78, 0x13, 0x43, -0x62, 0x27, 0x6F, 0x43, 0x85, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0x06, 0xAB, 0xDA, 0x78, 0x12, 0x02, 0x9B, 0x78, 0x13, 0x43, -0x82, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0x06, 0xAB, 0x5A, 0x79, 0x12, 0x02, 0x1B, 0x79, 0x13, 0x43, 0x7F, 0x4A, 0xBA, 0x18, -0x13, 0x80, 0x72, 0x78, 0x12, 0x02, 0x33, 0x78, 0x13, 0x43, 0x7D, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0xF2, 0x78, 0x12, 0x02, -0xB3, 0x78, 0x13, 0x43, 0x7A, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0x00, 0x22, 0x06, 0x2D, 0x01, 0xD8, 0x6A, 0x1C, 0xD2, 0xB2, -0x08, 0xAB, 0x19, 0x79, 0x03, 0x23, 0x0B, 0x40, 0x92, 0x00, 0x13, 0x43, 0x6E, 0x4A, 0x13, 0x43, 0x6C, 0x4A, 0xBA, 0x18, -0x13, 0x80, 0x72, 0x48, 0x03, 0x68, 0x72, 0x49, 0x0B, 0x40, 0x80, 0x22, 0x52, 0x01, 0x1A, 0x43, 0x02, 0x60, 0x5A, 0x4B, -0xFE, 0x18, 0x33, 0x88, 0x02, 0x9A, 0x14, 0x03, 0x24, 0xB2, 0x0B, 0x40, 0x23, 0x43, 0x9B, 0xB2, 0x33, 0x80, 0x4B, 0x46, -0x00, 0x2B, 0x00, 0xD1, 0xDE, 0xE1, 0x56, 0x4B, 0xFA, 0x18, 0x13, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x80, 0x21, 0x09, 0x02, -0x0B, 0x43, 0x13, 0x80, 0x33, 0x88, 0x64, 0x4A, 0x13, 0x40, 0x00, 0x9A, 0xD2, 0x02, 0x13, 0x43, 0x9B, 0xB2, 0x33, 0x80, -0x61, 0x49, 0x0B, 0x68, 0x61, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x02, 0x13, 0x43, 0x0B, 0x60, 0x4C, 0x4B, 0xFB, 0x18, -0x00, 0x22, 0x1A, 0x80, 0x49, 0x4B, 0xFB, 0x18, 0x1A, 0x88, 0x08, 0x21, 0x8A, 0x43, 0x1A, 0x80, 0x30, 0x88, 0x31, 0x88, -0x33, 0x88, 0x80, 0x0B, 0x01, 0x22, 0x10, 0x40, 0x80, 0x03, 0xC9, 0x0A, 0x0A, 0x40, 0xD2, 0x02, 0x10, 0x43, 0x05, 0x43, -0x58, 0x05, 0x40, 0x0F, 0x00, 0x02, 0x05, 0x43, 0x25, 0x43, 0xAD, 0xB2, 0x35, 0x80, 0x0B, 0xB0, 0x3C, 0xBC, 0x90, 0x46, -0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x32, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0xE7, 0xE6, 0xB3, 0x78, 0x99, 0x46, 0xF3, 0x78, 0x98, 0x46, 0x33, 0x79, 0x00, 0x93, 0x72, 0x79, 0x02, 0x92, 0x00, 0x2B, -0x10, 0xD1, 0x9D, 0x23, 0x00, 0x22, 0xFA, 0x54, 0x32, 0x78, 0x01, 0x3B, 0xFA, 0x54, 0xF2, 0x88, 0x96, 0x23, 0xFA, 0x52, -0x73, 0x78, 0x07, 0x2B, 0x00, 0xD9, 0x3D, 0xE1, 0x9B, 0x00, 0x3E, 0x49, 0xCB, 0x58, 0x9F, 0x46, 0x31, 0x78, 0x9D, 0x23, -0xF9, 0x54, 0x3C, 0x48, 0x78, 0xF7, 0x9C, 0xFC, 0x9C, 0x23, 0x00, 0x22, 0xFA, 0x54, 0xEA, 0xE7, 0x39, 0x4B, 0x1A, 0x68, -0x39, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x30, 0x49, 0x11, 0x40, 0x80, 0x22, 0x52, 0x01, 0x0A, 0x43, 0x1A, 0x60, -0x35, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x76, 0xD0, 0x31, 0x49, 0x0B, 0x68, 0x2D, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x02, -0x13, 0x43, 0x0B, 0x60, 0x6D, 0xE0, 0x2D, 0x4B, 0x1A, 0x68, 0x2D, 0x49, 0x11, 0x40, 0x80, 0x22, 0x92, 0x01, 0x0A, 0x43, -0x1A, 0x60, 0x1A, 0x68, 0x22, 0x49, 0x11, 0x40, 0x80, 0x22, 0x52, 0x01, 0x0A, 0x43, 0x1A, 0x60, 0x27, 0x4B, 0x1B, 0x78, -0x00, 0x2B, 0x5A, 0xD0, 0x23, 0x49, 0x0B, 0x68, 0x1F, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x02, 0x13, 0x43, 0x0B, 0x60, -0x51, 0xE0, 0xC0, 0x46, 0x38, 0xE6, 0x10, 0x00, 0x18, 0xD5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF8, 0x64, 0x61, 0x40, -0xFE, 0x64, 0x61, 0x40, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0C, 0x65, 0x61, 0x40, 0x60, 0x92, 0x16, 0x00, -0x0E, 0x65, 0x61, 0x40, 0x56, 0x65, 0x61, 0x40, 0x10, 0x65, 0x61, 0x40, 0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, -0x1E, 0x65, 0x61, 0x40, 0xC8, 0x69, 0x00, 0x00, 0x12, 0x65, 0x61, 0x40, 0x0A, 0x65, 0x61, 0x40, 0x40, 0xFF, 0x00, 0x00, -0x00, 0x65, 0x61, 0x40, 0x02, 0x65, 0x61, 0x40, 0x04, 0x65, 0x61, 0x40, 0x06, 0x65, 0x61, 0x40, 0x08, 0x65, 0x61, 0x40, -0x00, 0x04, 0x60, 0x40, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x28, 0x04, 0x60, 0x40, 0xFF, 0x7F, 0xFF, 0xFF, -0x48, 0xD5, 0x10, 0x00, 0x30, 0xD5, 0x10, 0x00, 0xD0, 0x04, 0x60, 0x40, 0xFF, 0xDF, 0xFF, 0xFF, 0xDC, 0xE5, 0x10, 0x00, -0x94, 0x23, 0xF8, 0x5A, 0x8E, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xF0, 0x21, 0x74, 0xF7, 0x96, 0xFB, 0x8C, 0x4A, 0x13, 0x68, -0x8C, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x9E, 0x23, 0xFA, 0x5C, 0x52, 0x00, 0x10, 0x33, 0xFB, 0x5C, 0xD2, 0x18, 0xD2, 0xB2, -0x62, 0x23, 0x6B, 0x43, 0x87, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x03, 0x93, 0x02, 0x20, 0x07, 0x23, 0x9A, 0x46, 0x04, 0x95, -0x05, 0x96, 0x91, 0x00, 0x89, 0x18, 0x49, 0x00, 0x82, 0x4B, 0xCC, 0x18, 0x23, 0x88, 0x78, 0x25, 0xAB, 0x43, 0x70, 0x3D, -0x2B, 0x43, 0x9B, 0xB2, 0x23, 0x80, 0x03, 0x9B, 0x1B, 0x88, 0x25, 0x88, 0xAB, 0x46, 0x1B, 0x0A, 0x55, 0x46, 0x2B, 0x40, -0x5D, 0x46, 0x56, 0x46, 0xB5, 0x43, 0x2B, 0x43, 0x23, 0x80, 0x79, 0x4B, 0x9C, 0x46, 0x8C, 0x44, 0x63, 0x46, 0x1B, 0x88, -0x77, 0x4C, 0x23, 0x40, 0x64, 0x46, 0x23, 0x80, 0x76, 0x4B, 0xCB, 0x18, 0x00, 0x24, 0x1C, 0x80, 0x75, 0x4B, 0x9C, 0x46, -0x61, 0x44, 0x9E, 0x23, 0xFB, 0x5C, 0x5B, 0x00, 0x01, 0x34, 0x54, 0x40, 0xE4, 0xB2, 0xA4, 0x46, 0x63, 0x44, 0x9C, 0x00, -0xA4, 0x46, 0x63, 0x44, 0x5B, 0x00, 0x6F, 0x4C, 0xA4, 0x46, 0x63, 0x44, 0x6E, 0x4C, 0x23, 0x43, 0x9B, 0xB2, 0x0B, 0x80, -0x0B, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x0B, 0x80, 0x53, 0x42, 0x5A, 0x41, 0xD2, 0xB2, 0x01, 0x38, 0xC0, 0xB2, 0x00, 0x28, -0xB9, 0xD1, 0x04, 0x9D, 0x05, 0x9E, 0x31, 0x00, 0x08, 0x31, 0x06, 0x22, 0x06, 0xA8, 0xCD, 0xF7, 0xA5, 0xF9, 0x00, 0x21, -0x02, 0x26, 0xF2, 0xE5, 0x94, 0x23, 0xF8, 0x5A, 0x56, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xAA, 0x21, 0x74, 0xF7, 0x26, 0xFB, -0x54, 0x4A, 0x13, 0x68, 0x54, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x8E, 0xE7, 0x94, 0x23, 0xF8, 0x5A, 0x4F, 0x4B, 0x9C, 0x46, -0x60, 0x44, 0xFF, 0x21, 0x74, 0xF7, 0x18, 0xFB, 0x4D, 0x4A, 0x13, 0x68, 0x4D, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x80, 0xE7, -0x94, 0x23, 0xF8, 0x5A, 0x48, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x21, 0x74, 0xF7, 0x0A, 0xFB, 0x46, 0x4A, 0x13, 0x68, -0x46, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x72, 0xE7, 0x94, 0x23, 0xF8, 0x5A, 0x41, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x0F, 0x21, -0x74, 0xF7, 0xFC, 0xFA, 0x3F, 0x4A, 0x13, 0x68, 0x3F, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x64, 0xE7, 0x94, 0x23, 0xF8, 0x5A, -0x3A, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x55, 0x21, 0x74, 0xF7, 0xEE, 0xFA, 0x38, 0x4A, 0x13, 0x68, 0x38, 0x49, 0x0B, 0x40, -0x13, 0x60, 0x56, 0xE7, 0x94, 0x23, 0xF8, 0x5A, 0x33, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x21, 0x74, 0xF7, 0xE0, 0xFA, -0x31, 0x4A, 0x13, 0x68, 0x31, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x48, 0xE7, 0xB3, 0x78, 0x98, 0x46, 0xF3, 0x78, 0x00, 0x93, -0xB4, 0x79, 0xF1, 0x1D, 0x06, 0x22, 0x06, 0xA8, 0xCD, 0xF7, 0x44, 0xF9, 0x00, 0x22, 0x33, 0x4B, 0x99, 0x46, 0xD5, 0x23, -0x5B, 0x00, 0x9C, 0x46, 0x03, 0x26, 0x17, 0x3B, 0xFF, 0x3B, 0x9B, 0x46, 0x0A, 0xE0, 0x2F, 0x49, 0x8A, 0x46, 0x53, 0x44, -0x19, 0x88, 0x49, 0x04, 0x49, 0x0C, 0x19, 0x80, 0x01, 0x32, 0xD2, 0xB2, 0x04, 0x2A, 0x11, 0xD0, 0x4B, 0x46, 0x61, 0x46, -0x5B, 0x5C, 0xD3, 0x18, 0x33, 0x40, 0xD9, 0x00, 0xCB, 0x1A, 0x5B, 0x00, 0x26, 0x49, 0x58, 0x18, 0x01, 0x88, 0x89, 0xB2, -0x00, 0x29, 0xE6, 0xD1, 0x59, 0x46, 0x79, 0x5A, 0x01, 0x80, 0xE2, 0xE7, 0x02, 0x94, 0x00, 0x23, 0x99, 0x46, 0x21, 0x49, -0x03, 0x26, 0x66, 0xE5, 0x20, 0x4B, 0xFA, 0x18, 0x13, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x13, 0x80, 0x43, 0x46, 0xDB, 0x07, -0x0F, 0xD4, 0x11, 0x88, 0x43, 0x46, 0x5B, 0x08, 0x1B, 0x02, 0x1B, 0x48, 0x01, 0x40, 0x0B, 0x43, 0x13, 0x80, 0x43, 0x46, -0x5B, 0x08, 0x28, 0x33, 0x19, 0x00, 0x18, 0x48, 0x78, 0xF7, 0x0A, 0xFB, 0x10, 0xE6, 0x10, 0x88, 0x43, 0x46, 0x5B, 0x08, -0x28, 0x33, 0x1B, 0x02, 0x12, 0x49, 0x01, 0x40, 0x0B, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0xEC, 0xE7, 0x00, 0x00, 0x61, 0x40, -0xD0, 0x04, 0x60, 0x40, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x64, 0x61, 0x40, 0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, -0x07, 0xE0, 0xFF, 0xFF, 0xCE, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, -0x20, 0xA3, 0x16, 0x00, 0x90, 0x69, 0x61, 0x40, 0x9A, 0x69, 0x61, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0x0C, 0x65, 0x61, 0x40, -0xFF, 0x80, 0xFF, 0xFF, 0x3C, 0xD5, 0x10, 0x00, 0x10, 0xB5, 0x07, 0x4B, 0x1C, 0x68, 0xA3, 0x78, 0x00, 0x2B, 0x00, 0xD1, -0x10, 0xBD, 0x00, 0x23, 0x0A, 0x00, 0xE1, 0x68, 0xFF, 0xF7, 0xE2, 0xFC, 0x00, 0x23, 0xA3, 0x70, 0xF6, 0xE7, 0xC0, 0x46, -0xD8, 0xE5, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x05, 0x00, 0x82, 0x00, 0x52, 0x4B, 0xD4, 0x58, 0x00, 0x2C, -0x00, 0xD1, 0x98, 0xE0, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x05, 0xD1, 0x4E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0x98, 0x47, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x3B, 0xDB, 0xB2, 0xA3, 0x54, 0x09, 0x3A, 0xA2, 0x5C, 0x02, 0x3A, -0x01, 0x2A, 0x01, 0xD8, 0x00, 0x2B, 0x14, 0xD0, 0x9F, 0xF7, 0xD2, 0xFD, 0x06, 0x00, 0x01, 0x00, 0x28, 0x00, 0xFF, 0xF7, -0xA9, 0xFB, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x68, 0xE0, 0x3F, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0x98, 0x47, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x01, 0x21, 0x20, 0x00, 0xCA, 0xF7, 0xEF, 0xFD, 0xA0, 0x23, -0x02, 0x22, 0xE2, 0x54, 0xFF, 0xF7, 0xF4, 0xFB, 0x37, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, -0x5B, 0x00, 0x35, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0xD2, 0x0B, 0xE7, 0xD0, 0x33, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, -0xD2, 0x0A, 0xAA, 0x42, 0x07, 0xD0, 0x19, 0x88, 0xC9, 0x0A, 0x2C, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x28, 0x00, -0xA0, 0x47, 0x2A, 0x4C, 0xD5, 0x20, 0x40, 0x00, 0x22, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x27, 0x4A, 0x94, 0x46, -0x63, 0x44, 0x1A, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x1A, 0x80, 0x21, 0x5C, 0x01, 0x31, 0x03, 0x23, 0x19, 0x40, 0x21, 0x54, -0x23, 0x4B, 0x1A, 0x68, 0xCB, 0x00, 0x5B, 0x1A, 0x5B, 0x00, 0x22, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x52, 0x04, 0x52, 0x0C, -0x93, 0x42, 0x05, 0xD0, 0x19, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x18, 0x4E, 0x00, 0x24, -0xD5, 0x23, 0x5B, 0x00, 0x98, 0x46, 0x14, 0x4F, 0x03, 0xE0, 0x01, 0x34, 0x0E, 0x36, 0x04, 0x2C, 0xA8, 0xD0, 0x33, 0x88, -0xDB, 0x0B, 0xF8, 0xD0, 0x10, 0x4B, 0x42, 0x46, 0x98, 0x5C, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0xFD, 0x6E, 0xA8, 0x47, -0xEF, 0xE7, 0x01, 0x21, 0x20, 0x00, 0xCA, 0xF7, 0x8F, 0xFD, 0x02, 0x36, 0x66, 0x60, 0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, -0x4F, 0xFF, 0x20, 0x00, 0xF4, 0xF7, 0xA6, 0xFA, 0x8E, 0xE7, 0x04, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, -0xA0, 0x47, 0x87, 0xE7, 0x38, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x20, 0xA3, 0x16, 0x00, 0x90, 0x69, 0x61, 0x40, -0x92, 0x69, 0x61, 0x40, 0x2C, 0x04, 0x60, 0x40, 0x90, 0x69, 0x00, 0x00, 0xF0, 0xB5, 0x83, 0xB0, 0x01, 0x90, 0x0D, 0x00, -0x14, 0x00, 0xCF, 0xB2, 0x06, 0x2F, 0x07, 0xD9, 0xFF, 0x20, 0x08, 0x40, 0x0B, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, -0x21, 0x00, 0xB0, 0x47, 0x00, 0x2C, 0x09, 0xD0, 0xFF, 0x20, 0x28, 0x40, 0x06, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, -0x21, 0x00, 0xA8, 0x47, 0x03, 0xB0, 0xF0, 0xBD, 0x01, 0x99, 0x38, 0x00, 0xFF, 0xF7, 0x28, 0xFF, 0xF8, 0xE7, 0xC0, 0x46, -0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x96, 0xB0, 0x2F, 0x4B, 0x1B, 0x68, 0xD9, 0x68, 0xEF, 0xF3, -0x10, 0x83, 0xDB, 0x07, 0x51, 0xD4, 0x72, 0xB6, 0x10, 0x31, 0x24, 0x22, 0x0D, 0xA8, 0xCC, 0xF7, 0xCF, 0xFF, 0x62, 0xB6, -0x0D, 0x9C, 0x00, 0x26, 0x00, 0x2C, 0x07, 0xD0, 0x0E, 0x9B, 0xE3, 0x1A, 0x64, 0x20, 0x58, 0x43, 0x21, 0x00, 0xCC, 0xF7, -0x75, 0xFB, 0x06, 0x00, 0x13, 0x9D, 0x00, 0x20, 0x00, 0x2D, 0x05, 0xD0, 0x21, 0x48, 0x14, 0x9B, 0x58, 0x43, 0x29, 0x00, -0xCC, 0xF7, 0x6A, 0xFB, 0x11, 0x9A, 0x12, 0x9F, 0x15, 0x99, 0x13, 0x00, 0x3B, 0x43, 0x0B, 0x43, 0x1B, 0xD0, 0x0F, 0x9B, -0x98, 0x46, 0x0E, 0x9B, 0x9C, 0x46, 0x00, 0x23, 0x09, 0x93, 0x08, 0x90, 0x07, 0x93, 0x06, 0x96, 0x14, 0x9B, 0x0B, 0x93, -0x05, 0x93, 0x04, 0x95, 0x03, 0x91, 0x02, 0x97, 0x01, 0x92, 0x10, 0x9B, 0x00, 0x93, 0x43, 0x46, 0x22, 0x00, 0x61, 0x46, -0x11, 0x48, 0x78, 0xF7, 0xA5, 0xF9, 0x16, 0xB0, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x0F, 0x9B, 0x0E, 0x99, 0x00, 0x22, -0x06, 0x92, 0x05, 0x90, 0x04, 0x92, 0x03, 0x96, 0x14, 0x9A, 0x0B, 0x92, 0x02, 0x92, 0x01, 0x95, 0x10, 0x9A, 0x00, 0x92, -0x22, 0x00, 0x08, 0x48, 0x78, 0xF7, 0x90, 0xF9, 0xE9, 0xE7, 0x10, 0x31, 0x24, 0x22, 0x0D, 0xA8, 0xCC, 0xF7, 0x7E, 0xFF, -0xAE, 0xE7, 0xC0, 0x46, 0xD8, 0xE5, 0x10, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0xD5, 0x10, 0x00, 0xC8, 0xD5, 0x10, 0x00, -0x70, 0x47, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x05, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x1C, 0x00, 0x4B, 0x4B, -0x1B, 0x68, 0x00, 0x2B, 0x05, 0xD0, 0x4A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x21, -0x10, 0x20, 0x76, 0xF7, 0x37, 0xF9, 0x44, 0x4B, 0x18, 0x60, 0x00, 0x28, 0x10, 0xD0, 0x42, 0x4B, 0x18, 0x68, 0x10, 0x22, -0x00, 0x21, 0x74, 0xF7, 0xDF, 0xF8, 0x00, 0x2D, 0x0E, 0xD0, 0x01, 0x2D, 0x2C, 0xD0, 0x3E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x1B, 0xE0, 0x3A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x98, 0x47, 0xE8, 0xE7, -0x36, 0x4C, 0x25, 0x68, 0x00, 0x21, 0x0E, 0x20, 0x76, 0xF7, 0x16, 0xF9, 0xE8, 0x60, 0x23, 0x68, 0xDB, 0x68, 0x00, 0x2B, -0x0D, 0xD0, 0x31, 0x4C, 0x23, 0x68, 0xD8, 0x68, 0x0E, 0x22, 0x00, 0x21, 0x74, 0xF7, 0xBC, 0xF8, 0x23, 0x68, 0x00, 0x22, -0x5A, 0x70, 0xDE, 0x70, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x2B, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, -0x98, 0x47, 0xEA, 0xE7, 0x26, 0x4D, 0x2B, 0x68, 0x98, 0x46, 0x00, 0x21, 0x38, 0x20, 0x76, 0xF7, 0xF5, 0xF8, 0x43, 0x46, -0xD8, 0x60, 0x2B, 0x68, 0xDB, 0x68, 0x00, 0x2B, 0x31, 0xD0, 0x20, 0x4D, 0x2B, 0x68, 0xD8, 0x68, 0x38, 0x22, 0x00, 0x21, -0x74, 0xF7, 0x9A, 0xF8, 0x2B, 0x68, 0x98, 0x46, 0x00, 0x21, 0x28, 0x20, 0x76, 0xF7, 0xE2, 0xF8, 0x43, 0x46, 0x98, 0x60, -0x2B, 0x68, 0x9B, 0x68, 0x00, 0x2B, 0x25, 0xD0, 0x16, 0x4D, 0x2B, 0x68, 0x98, 0x68, 0x28, 0x22, 0x00, 0x21, 0x74, 0xF7, -0x87, 0xF8, 0x2B, 0x68, 0xD8, 0x68, 0x0E, 0x22, 0x39, 0x00, 0xCC, 0xF7, 0xF5, 0xFE, 0x2B, 0x68, 0x01, 0x22, 0x5A, 0x70, -0xC8, 0x22, 0x52, 0x01, 0x5A, 0x60, 0xDE, 0x70, 0x0E, 0x48, 0x0F, 0x4A, 0x82, 0x60, 0x5B, 0x68, 0xE4, 0x18, 0x24, 0x01, -0x24, 0x09, 0x44, 0x60, 0xCA, 0xF7, 0xA0, 0xFF, 0xB6, 0xE7, 0x08, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, -0x98, 0x47, 0xC6, 0xE7, 0x04, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xD2, 0xE7, 0xC0, 0x46, -0xD8, 0xE5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xFC, 0xE6, 0x10, 0x00, 0xD5, 0x01, 0x10, 0x00, 0xF8, 0xB5, 0x04, 0x00, -0x4E, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x04, 0xD0, 0xFF, 0xF7, 0xB8, 0xFA, 0x05, 0x00, 0x28, 0x00, 0xF8, 0xBD, 0x4B, 0x48, -0x78, 0xF7, 0xCA, 0xF8, 0x4A, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x07, 0xD0, 0x49, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0x98, 0x47, 0x12, 0x25, 0xEE, 0xE7, 0x00, 0x21, 0xF8, 0x20, 0x76, 0xF7, 0x88, 0xF8, 0x42, 0x4B, 0x18, 0x60, -0x00, 0x28, 0x75, 0xD0, 0x9F, 0xF7, 0xE0, 0xFB, 0x07, 0x00, 0x84, 0xF7, 0x81, 0xF9, 0x40, 0x4A, 0x13, 0x88, 0x40, 0x49, -0x0B, 0x40, 0x00, 0x02, 0x03, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0x3A, 0x4B, 0x1E, 0x68, 0xF8, 0x22, 0x00, 0x21, 0x30, 0x00, -0x74, 0xF7, 0x22, 0xF8, 0x00, 0x23, 0x73, 0x62, 0x39, 0x4A, 0xF2, 0x61, 0x39, 0x4A, 0x32, 0x62, 0x03, 0x22, 0x32, 0x76, -0x38, 0x4A, 0x12, 0x78, 0xB2, 0x75, 0x38, 0x4A, 0x32, 0x61, 0x05, 0x22, 0xF2, 0x75, 0x99, 0x32, 0xB3, 0x54, 0x01, 0x32, -0xB3, 0x54, 0x02, 0x32, 0xB3, 0x54, 0x03, 0x32, 0x28, 0x21, 0xB1, 0x52, 0x1C, 0x3A, 0xB3, 0x52, 0x80, 0xF7, 0x72, 0xF8, -0x05, 0x1E, 0x05, 0xD1, 0x28, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x94, 0x23, 0xF5, 0x52, -0x93, 0x3B, 0x00, 0x22, 0x21, 0x00, 0x00, 0x20, 0xFF, 0xF7, 0x8A, 0xFA, 0x28, 0x4A, 0x13, 0x88, 0x1F, 0x21, 0x0B, 0x40, -0x13, 0x80, 0x77, 0x60, 0x00, 0x23, 0x82, 0x22, 0xB3, 0x52, 0xB3, 0x60, 0x00, 0x22, 0xA6, 0x33, 0xF2, 0x54, 0x20, 0x3B, -0xFA, 0x22, 0xD2, 0x01, 0xF2, 0x52, 0x37, 0x67, 0x20, 0x4B, 0xB3, 0x82, 0xFA, 0x23, 0x1B, 0x02, 0xFB, 0x18, 0x1B, 0x01, -0x1B, 0x09, 0xF3, 0x60, 0x30, 0x00, 0xCA, 0xF7, 0x15, 0xFA, 0x05, 0x1E, 0x07, 0xD0, 0x12, 0x4B, 0x9B, 0x6E, 0x00, 0x22, -0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x12, 0x25, 0x7F, 0xE7, 0xA0, 0x23, 0x00, 0x22, 0xF2, 0x54, 0x01, 0x32, 0x00, 0x21, -0x00, 0x20, 0x9F, 0xF7, 0xF3, 0xF8, 0x3B, 0x00, 0x00, 0x22, 0x21, 0x00, 0x00, 0x20, 0xFF, 0xF7, 0xC3, 0xFE, 0x70, 0xE7, -0x06, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x12, 0x25, 0x68, 0xE7, 0xD8, 0xE5, 0x10, 0x00, -0x10, 0xD6, 0x10, 0x00, 0x38, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xFE, 0x64, 0x61, 0x40, 0xFF, 0xF8, 0xFF, 0xFF, -0xF1, 0x02, 0x10, 0x00, 0xD1, 0x01, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x6A, 0x04, 0x00, 0x00, 0xF8, 0x64, 0x61, 0x40, -0x00, 0x80, 0xFF, 0xFF, 0x10, 0xB5, 0x00, 0x29, 0x12, 0xD1, 0x03, 0x78, 0xFF, 0x2B, 0x0A, 0xD1, 0x43, 0x78, 0xC1, 0x2B, -0x2F, 0xD1, 0x83, 0x78, 0xFB, 0x2B, 0x2E, 0xD1, 0xC1, 0x78, 0xE8, 0x39, 0x4B, 0x42, 0x59, 0x41, 0x03, 0x31, 0x04, 0x39, -0x48, 0x42, 0x48, 0x41, 0xC0, 0xB2, 0x10, 0xBD, 0x03, 0x29, 0x0C, 0xD0, 0x12, 0x4B, 0x5C, 0x5C, 0x00, 0x23, 0xD9, 0xB2, -0xC2, 0x5C, 0xA2, 0x42, 0xF1, 0xD1, 0x01, 0x31, 0xC9, 0xB2, 0x01, 0x33, 0x04, 0x2B, 0xF6, 0xD1, 0xEB, 0xE7, 0x03, 0x78, -0xFF, 0x2B, 0x0A, 0xD1, 0x43, 0x78, 0xC1, 0x2B, 0x09, 0xD1, 0x83, 0x78, 0xFB, 0x2B, 0x08, 0xD1, 0xC3, 0x78, 0xE8, 0x2B, -0xDF, 0xD1, 0x04, 0x21, 0xDD, 0xE7, 0x00, 0x21, 0xDB, 0xE7, 0x01, 0x21, 0xD9, 0xE7, 0x02, 0x21, 0xD7, 0xE7, 0x01, 0x21, -0xD5, 0xE7, 0x02, 0x21, 0xD3, 0xE7, 0xC0, 0x46, 0x1C, 0xE0, 0x10, 0x00, 0xF8, 0xB5, 0x23, 0x4B, 0x1B, 0x68, 0x00, 0x2B, -0x3A, 0xD0, 0xDA, 0x68, 0x53, 0x78, 0x00, 0x2B, 0x10, 0xD1, 0x95, 0x88, 0x00, 0x2D, 0x0C, 0xD0, 0x1E, 0x4F, 0x1F, 0x4E, -0xF1, 0x5C, 0xC4, 0x5C, 0x61, 0x40, 0x79, 0x5C, 0xD4, 0x6A, 0xA4, 0x46, 0x61, 0x44, 0xD1, 0x62, 0x01, 0x33, 0xAB, 0x42, -0xF4, 0xD3, 0xF8, 0xBD, 0x03, 0x2B, 0x11, 0xD0, 0x18, 0x49, 0xCD, 0x5C, 0x94, 0x88, 0x00, 0x2C, 0xF7, 0xD0, 0x00, 0x23, -0x13, 0x4E, 0xC1, 0x5C, 0x69, 0x40, 0x71, 0x5C, 0xD7, 0x6A, 0xBC, 0x46, 0x61, 0x44, 0xD1, 0x62, 0x01, 0x33, 0xA3, 0x42, -0xF5, 0xD3, 0xEA, 0xE7, 0x95, 0x88, 0x00, 0x2D, 0xE7, 0xD0, 0x00, 0x23, 0x0B, 0x4F, 0x0E, 0x4E, 0xF1, 0x5C, 0xC4, 0x5C, -0x61, 0x40, 0x79, 0x5C, 0xD4, 0x6A, 0xA4, 0x46, 0x61, 0x44, 0xD1, 0x62, 0x01, 0x33, 0xAB, 0x42, 0xF4, 0xD3, 0xD8, 0xE7, -0x08, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xD1, 0xE7, 0xC0, 0x46, 0xD8, 0xE5, 0x10, 0x00, -0xBC, 0xDE, 0x10, 0x00, 0xBC, 0xDA, 0x10, 0x00, 0x1C, 0xE0, 0x10, 0x00, 0xBC, 0xD6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, -0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, 0x06, 0x00, 0x74, 0x4B, 0x1B, 0x68, 0xDD, 0x68, -0x54, 0x1E, 0xE4, 0xB2, 0x00, 0x2A, 0x00, 0xD1, 0xDA, 0xE0, 0x71, 0x4F, 0xAB, 0xE0, 0x04, 0x21, 0x08, 0x00, 0x10, 0x40, -0x11, 0x42, 0x2F, 0xD0, 0xE9, 0x69, 0x01, 0x31, 0xE9, 0x61, 0xDB, 0x04, 0x9B, 0x0D, 0x99, 0x46, 0xB8, 0x23, 0x13, 0x42, -0x5B, 0xD1, 0xAB, 0x88, 0xDB, 0x00, 0xAA, 0x6A, 0x94, 0x46, 0x63, 0x44, 0xAB, 0x62, 0xD5, 0x23, 0x5B, 0x00, 0x65, 0x4A, -0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x63, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x18, 0x88, 0x83, 0xB2, 0x9A, 0x46, -0x00, 0x2B, 0x06, 0xD1, 0x60, 0x4B, 0x9B, 0x6E, 0x01, 0x93, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x4B, 0x46, -0x00, 0x2B, 0x53, 0xD0, 0x43, 0x46, 0x59, 0x06, 0x09, 0x0F, 0x5B, 0x48, 0x50, 0x44, 0xFF, 0xF7, 0x67, 0xFF, 0x4B, 0xE0, -0x69, 0x69, 0x01, 0x31, 0x69, 0x61, 0xDB, 0x04, 0x9B, 0x0D, 0x99, 0x46, 0xB8, 0x23, 0x13, 0x42, 0x00, 0xD0, 0x95, 0xE0, -0x00, 0x28, 0xCC, 0xD1, 0xAB, 0x88, 0x4B, 0x45, 0x2B, 0xD0, 0x6B, 0x6A, 0x01, 0x33, 0x6B, 0x62, 0x4C, 0x4A, 0xD5, 0x23, -0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x4A, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x18, 0x88, 0x83, 0xB2, -0x98, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x47, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x4B, 0x46, -0x00, 0x2B, 0x21, 0xD0, 0x69, 0x78, 0x43, 0x48, 0x40, 0x44, 0xFF, 0xF7, 0xF7, 0xFE, 0x00, 0x28, 0x1A, 0xD1, 0x2B, 0x6B, -0x01, 0x33, 0x2B, 0x63, 0x16, 0xE0, 0x2B, 0x6A, 0x01, 0x33, 0x2B, 0x62, 0x00, 0x28, 0x11, 0xD1, 0xD0, 0xE7, 0xDB, 0x00, -0xAA, 0x6A, 0x94, 0x46, 0x63, 0x44, 0xAB, 0x62, 0xD0, 0xE7, 0x35, 0x23, 0xEB, 0x5C, 0x01, 0x33, 0xDB, 0xB2, 0x64, 0x2B, -0x54, 0xD8, 0x35, 0x22, 0xAB, 0x54, 0x34, 0x23, 0x00, 0x22, 0xEA, 0x54, 0x2F, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, -0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x2D, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x05, 0xD1, -0x2A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x25, 0x48, 0xD5, 0x21, 0x49, 0x00, 0x42, 0x5C, -0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x26, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x1A, 0x80, -0x42, 0x5C, 0x01, 0x32, 0x03, 0x23, 0x13, 0x40, 0x43, 0x54, 0x01, 0x3C, 0xE4, 0xB2, 0xFF, 0x2C, 0x2C, 0xD0, 0x30, 0x00, -0x9E, 0xF7, 0x5A, 0xFF, 0x00, 0x28, 0x27, 0xD0, 0xD5, 0x23, 0x5B, 0x00, 0xFA, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, -0x19, 0x4A, 0x9A, 0x18, 0x10, 0x88, 0x82, 0xB2, 0x18, 0x49, 0x59, 0x18, 0x09, 0x88, 0x89, 0xB2, 0x88, 0x46, 0x17, 0x49, -0x8C, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x9B, 0xB2, 0xC1, 0x07, 0xAE, 0xD4, 0x29, 0x69, 0x01, 0x31, 0x29, 0x61, 0x91, 0x07, -0x00, 0xD4, 0x32, 0xE7, 0xAB, 0x69, 0x01, 0x33, 0xAB, 0x61, 0xAF, 0xE7, 0x35, 0x23, 0x64, 0x22, 0xEA, 0x54, 0xA8, 0xE7, -0x2B, 0x6A, 0x01, 0x33, 0x2B, 0x62, 0x67, 0xE7, 0x02, 0xB0, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, -0xD8, 0xE5, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, 0x9A, 0x69, 0x61, 0x40, 0x28, 0x19, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, -0x90, 0x69, 0x61, 0x40, 0x92, 0x69, 0x61, 0x40, 0x94, 0x69, 0x61, 0x40, 0x96, 0x69, 0x61, 0x40, 0xF0, 0xB5, 0xD6, 0x46, -0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x89, 0x46, 0x82, 0x00, 0x41, 0x4B, 0xD5, 0x58, 0xA6, 0x23, 0xEF, 0x5C, 0x2E, 0x6D, -0x44, 0x3B, 0x58, 0x43, 0x3E, 0x4B, 0xC3, 0x18, 0x1B, 0x88, 0x3E, 0x4A, 0x82, 0x18, 0x14, 0x88, 0x1B, 0x04, 0x1C, 0x43, -0xA2, 0x46, 0x3C, 0x4B, 0xC3, 0x18, 0x1B, 0x88, 0x9B, 0x05, 0x9B, 0x0D, 0x98, 0x46, 0x3A, 0x4B, 0xC3, 0x18, 0x1C, 0x88, -0x39, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x01, 0x88, 0x24, 0x04, 0x0C, 0x19, 0x37, 0x4B, 0x9E, 0x42, 0x1C, 0xD8, 0x53, 0x46, -0x4A, 0x46, 0x9B, 0x1A, 0x19, 0x01, 0x09, 0x09, 0x80, 0x22, 0x12, 0x05, 0x91, 0x42, 0x40, 0xD9, 0x4B, 0x46, 0x52, 0x46, -0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, 0xA1, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0x3D, 0xD0, 0x00, 0x2B, 0x07, 0xDB, -0x89, 0x08, 0x00, 0x29, 0x04, 0xDD, 0x89, 0x00, 0x49, 0x44, 0x09, 0x01, 0x0B, 0x09, 0x99, 0x46, 0x53, 0x46, 0xE1, 0x1A, -0x49, 0x44, 0x09, 0x01, 0x09, 0x09, 0xF4, 0x23, 0x5B, 0x00, 0x42, 0x46, 0x9B, 0x1A, 0x32, 0xD4, 0xA9, 0x67, 0x82, 0x22, -0xAB, 0x52, 0x4A, 0x42, 0x03, 0x20, 0x10, 0x40, 0xA6, 0x22, 0xA8, 0x54, 0x72, 0x3A, 0x2A, 0x65, 0xAB, 0x60, 0x34, 0x2E, -0x09, 0xD9, 0xEA, 0x7D, 0x00, 0x2A, 0x06, 0xD0, 0xC8, 0x22, 0x52, 0x00, 0x9A, 0x42, 0x92, 0x41, 0x52, 0x42, 0x05, 0x32, -0xEA, 0x75, 0x69, 0x67, 0x84, 0x22, 0xAB, 0x52, 0xC0, 0x1B, 0x43, 0x1E, 0x98, 0x41, 0xC0, 0xB2, 0x1C, 0xBC, 0x90, 0x46, -0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0x1B, 0x01, 0x1B, 0x09, 0xA1, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0xC4, 0xD0, 0xC1, 0xE7, -0x00, 0x2B, 0xC1, 0xDA, 0x0D, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xC2, 0xE7, 0x0B, 0x4B, -0x9B, 0x1A, 0x01, 0x31, 0x09, 0x01, 0x09, 0x09, 0xC6, 0xE7, 0xC0, 0x46, 0x38, 0xE6, 0x10, 0x00, 0x4C, 0x65, 0x61, 0x40, -0x4A, 0x65, 0x61, 0x40, 0x4E, 0x65, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0xFA, 0x64, 0x61, 0x40, 0xE1, 0x04, 0x00, 0x00, -0x28, 0x19, 0x16, 0x00, 0x59, 0x04, 0x00, 0x00, 0xF8, 0xB5, 0x80, 0x00, 0x25, 0x4B, 0xC5, 0x58, 0xA6, 0x23, 0xEE, 0x5C, -0x6C, 0x6F, 0xEB, 0x6E, 0xC8, 0x1A, 0x00, 0x01, 0x00, 0x09, 0x22, 0x49, 0x48, 0x43, 0x22, 0x49, 0xCB, 0xF7, 0x84, 0xFF, -0x1A, 0x30, 0x40, 0x00, 0x02, 0x00, 0x34, 0x3A, 0x52, 0x08, 0x84, 0x23, 0xEB, 0x5A, 0x9B, 0x1A, 0x19, 0xB2, 0x1B, 0x04, -0x27, 0xD5, 0x00, 0x23, 0x1B, 0x4A, 0x8A, 0x18, 0x11, 0xB2, 0x01, 0x34, 0x24, 0x01, 0x24, 0x09, 0x1F, 0x00, 0x01, 0x33, -0xDB, 0xB2, 0x12, 0x04, 0xF4, 0xD4, 0xAC, 0x67, 0x82, 0x22, 0xA9, 0x52, 0x64, 0x42, 0x7F, 0x3A, 0x14, 0x40, 0xA3, 0x32, -0xAC, 0x54, 0x28, 0x65, 0xA9, 0x60, 0x00, 0x2B, 0x0A, 0xD0, 0xEB, 0x7D, 0x00, 0x2B, 0x07, 0xD0, 0xC8, 0x23, 0x5B, 0x00, -0x8B, 0x42, 0x9B, 0x41, 0x5B, 0x42, 0x06, 0x37, 0xDF, 0x19, 0xEF, 0x75, 0x34, 0x1B, 0x66, 0x1E, 0xB4, 0x41, 0xE0, 0xB2, -0xF8, 0xBD, 0xAC, 0x67, 0x82, 0x23, 0xE9, 0x52, 0x64, 0x42, 0x7F, 0x3B, 0x1C, 0x40, 0xA3, 0x33, 0xEC, 0x54, 0x28, 0x65, -0xA9, 0x60, 0xEF, 0xE7, 0x38, 0xE6, 0x10, 0x00, 0xA8, 0x61, 0x00, 0x00, 0x40, 0x42, 0x0F, 0x00, 0x71, 0x02, 0x00, 0x00, -0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x8A, 0xB0, 0x0E, 0x00, 0x8A, 0x00, 0x52, 0x4B, 0xD5, 0x58, 0x00, 0x2D, 0x00, 0xD1, -0x9B, 0xE0, 0xA6, 0x23, 0x98, 0x46, 0xEB, 0x5C, 0x01, 0x33, 0x03, 0x24, 0x23, 0x40, 0x1F, 0x00, 0x9F, 0xF7, 0xB0, 0xF8, -0x00, 0x90, 0x03, 0x00, 0xA3, 0x43, 0x3B, 0x43, 0x42, 0x46, 0xAA, 0x5C, 0xD2, 0x1A, 0x14, 0x40, 0x04, 0x3B, 0xE4, 0x18, -0x24, 0x01, 0x24, 0x09, 0x23, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x22, 0x12, 0x05, 0x93, 0x42, 0x02, 0xD9, 0x03, 0x1B, -0x1B, 0x01, 0x59, 0xD1, 0x00, 0x23, 0x01, 0x93, 0x01, 0xA9, 0x68, 0x46, 0x9F, 0xF7, 0x9C, 0xF8, 0x01, 0x9B, 0x1A, 0x00, -0x0F, 0x32, 0xFF, 0x32, 0x9C, 0x21, 0x89, 0x00, 0x8A, 0x42, 0x57, 0xD8, 0x01, 0x92, 0x00, 0x9A, 0x13, 0x1B, 0x1B, 0x01, -0x1B, 0x09, 0x38, 0x49, 0x8B, 0x42, 0x05, 0xD8, 0xA2, 0x42, 0x61, 0xD1, 0xAB, 0x68, 0x01, 0x9A, 0x93, 0x42, 0x5D, 0xD9, -0x02, 0xA8, 0x34, 0x4B, 0x02, 0x93, 0x44, 0x60, 0xAB, 0x68, 0x83, 0x60, 0x06, 0x76, 0x06, 0x61, 0x31, 0x4B, 0xC3, 0x60, -0xAB, 0x7D, 0x03, 0x75, 0x01, 0x33, 0x43, 0x75, 0x00, 0x23, 0x83, 0x75, 0xB0, 0x22, 0xAA, 0x5C, 0xC2, 0x75, 0x83, 0x76, -0xC3, 0x76, 0x01, 0x33, 0x43, 0x76, 0xCA, 0xF7, 0xD7, 0xFE, 0xA9, 0x22, 0xAB, 0x5C, 0x01, 0x33, 0xAB, 0x54, 0xAA, 0x23, -0xEB, 0x5C, 0x00, 0x2B, 0x31, 0xD1, 0x9F, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x3B, 0xD1, 0xAB, 0x6F, 0x9B, 0xB2, 0x62, 0x21, -0x4E, 0x43, 0x22, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0xAB, 0x6F, 0x1B, 0x0C, 0x20, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0x20, 0x4B, -0x9C, 0x46, 0x66, 0x44, 0x2B, 0x6D, 0x01, 0x33, 0x5B, 0x08, 0x01, 0x33, 0x5B, 0x08, 0x1D, 0x4A, 0x13, 0x43, 0x9B, 0xB2, -0x33, 0x80, 0x22, 0xE0, 0x04, 0x34, 0x24, 0x01, 0x24, 0x09, 0x23, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x93, 0x42, 0x9D, 0xD9, -0x03, 0x1B, 0x1B, 0x01, 0x9A, 0xD0, 0xF3, 0xE7, 0x64, 0x3B, 0xFF, 0x3B, 0x01, 0x93, 0x00, 0x9B, 0x01, 0x33, 0x1B, 0x01, -0x1B, 0x09, 0x00, 0x93, 0x9F, 0xE7, 0x9E, 0x23, 0xE8, 0x5C, 0xCB, 0xF7, 0x21, 0xF8, 0x0F, 0x4B, 0x01, 0x22, 0x1A, 0x60, -0xAA, 0x23, 0x00, 0x22, 0xEA, 0x54, 0xC2, 0xE7, 0x0C, 0x48, 0x77, 0xF7, 0xF1, 0xFC, 0x0A, 0xB0, 0x04, 0xBC, 0x90, 0x46, -0xF0, 0xBD, 0xC0, 0x46, 0x38, 0xE6, 0x10, 0x00, 0xFE, 0xFF, 0xFF, 0x07, 0x39, 0xCB, 0x10, 0x00, 0xDE, 0x05, 0x00, 0x00, -0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0x10, 0x65, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, 0x18, 0x00, 0x60, 0x40, -0x28, 0xD6, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x82, 0xB0, 0x05, 0x00, 0x0E, 0x00, 0x82, 0x00, 0x9D, 0x4B, -0xD4, 0x58, 0x00, 0x2C, 0x00, 0xD1, 0x2B, 0xE1, 0x9B, 0x4B, 0x1B, 0x68, 0xDF, 0x68, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, -0x05, 0xD1, 0x99, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x3B, -0xDB, 0xB2, 0xA3, 0x54, 0x09, 0x3A, 0xA2, 0x5C, 0x02, 0x2A, 0x01, 0xD1, 0x00, 0x2B, 0x51, 0xD0, 0x9E, 0xF7, 0xDE, 0xFF, -0x01, 0x90, 0x01, 0x22, 0x31, 0x00, 0x28, 0x00, 0xFF, 0xF7, 0x20, 0xFD, 0x62, 0x23, 0x6B, 0x43, 0x8C, 0x4A, 0x94, 0x46, -0x63, 0x44, 0x1B, 0x88, 0xDB, 0x0B, 0x00, 0xD1, 0xAC, 0xE0, 0x31, 0x00, 0x28, 0x00, 0xFF, 0xF7, 0x15, 0xFE, 0xB4, 0x23, -0xE0, 0x54, 0xA0, 0x23, 0xE3, 0x5C, 0x02, 0x2B, 0x00, 0xD1, 0xEA, 0xE0, 0x01, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0xBA, 0xF9, -0x82, 0x23, 0xE3, 0x5E, 0xA3, 0x60, 0x81, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x0C, 0xD0, 0x34, 0x23, 0xFB, 0x5C, 0x00, 0x2B, -0x00, 0xD1, 0x9D, 0xE0, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x93, 0xE0, 0x7A, 0x4B, 0x00, 0x22, 0x1A, 0x60, -0x34, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x90, 0xE0, 0xB4, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0xBE, 0xE0, -0xAA, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0xD6, 0xE0, 0xA6, 0x33, 0xE2, 0x5C, 0x01, 0x32, 0xA3, 0x3B, 0x13, 0x40, -0x9E, 0x22, 0xA1, 0x5C, 0x9C, 0x3A, 0x6E, 0x48, 0xCA, 0xF7, 0x56, 0xFF, 0xAA, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xC7, 0xE0, -0x01, 0x21, 0x20, 0x00, 0xC9, 0xF7, 0xBE, 0xFF, 0xA0, 0x23, 0x02, 0x22, 0xE2, 0x54, 0x0A, 0x33, 0xE3, 0x5C, 0x00, 0x2B, -0x49, 0xD1, 0xFE, 0xF7, 0xBF, 0xFD, 0x65, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, -0x62, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0xD2, 0x0B, 0x00, 0xD1, 0xAD, 0xE0, 0x60, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, -0xD2, 0x0A, 0xAA, 0x42, 0x07, 0xD0, 0x19, 0x88, 0xC9, 0x0A, 0x56, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x28, 0x00, -0xA0, 0x47, 0x57, 0x4C, 0xD5, 0x20, 0x40, 0x00, 0x22, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x54, 0x4A, 0x94, 0x46, -0x63, 0x44, 0x1A, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x1A, 0x80, 0x21, 0x5C, 0x01, 0x31, 0x03, 0x23, 0x19, 0x40, 0x21, 0x54, -0x50, 0x4B, 0x1A, 0x68, 0xCB, 0x00, 0x5B, 0x1A, 0x5B, 0x00, 0x4F, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x52, 0x04, 0x52, 0x0C, -0x93, 0x42, 0x05, 0xD0, 0x43, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x45, 0x4E, 0x00, 0x24, -0xD5, 0x23, 0x5B, 0x00, 0x98, 0x46, 0x3E, 0x4F, 0x0A, 0xE0, 0x28, 0x00, 0xCA, 0xF7, 0x30, 0xFF, 0xAA, 0x23, 0x00, 0x22, -0xE2, 0x54, 0xAE, 0xE7, 0x01, 0x34, 0x0E, 0x36, 0x04, 0x2C, 0x67, 0xD0, 0x33, 0x88, 0xDB, 0x0B, 0xF8, 0xD0, 0x3A, 0x4B, -0x42, 0x46, 0x98, 0x5C, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0xFD, 0x6E, 0xA8, 0x47, 0xEF, 0xE7, 0x31, 0x00, 0x28, 0x00, -0xFF, 0xF7, 0x04, 0xFE, 0xB4, 0x23, 0xE0, 0x54, 0x51, 0xE7, 0x29, 0x00, 0x01, 0x98, 0xFF, 0xF7, 0x53, 0xFE, 0x66, 0xE7, -0xB4, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x2E, 0xD1, 0xAA, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x47, 0xD1, 0xA9, 0x33, 0xE3, 0x5C, -0x00, 0x2B, 0x43, 0xD1, 0x01, 0x21, 0x20, 0x00, 0xC9, 0xF7, 0x3A, 0xFF, 0x01, 0x99, 0x61, 0x60, 0x86, 0x23, 0xFA, 0x22, -0xD2, 0x01, 0xE2, 0x52, 0x21, 0x67, 0x20, 0x33, 0xE3, 0x5C, 0xDB, 0x02, 0xE0, 0x22, 0x92, 0x01, 0x13, 0x40, 0x26, 0x4A, -0x13, 0x43, 0xA3, 0x82, 0xFA, 0x23, 0x1B, 0x02, 0x9C, 0x46, 0x61, 0x44, 0x0F, 0x01, 0x3F, 0x09, 0xE7, 0x60, 0x20, 0x00, -0xC9, 0xF7, 0x7C, 0xFD, 0x00, 0x28, 0x23, 0xD0, 0x15, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x1C, 0xE0, 0x9E, 0x23, 0xE0, 0x5C, 0xCA, 0xF7, 0xD9, 0xFE, 0x00, 0x23, 0xAA, 0x22, 0xA3, 0x54, 0x75, 0x3A, 0xBB, 0x54, -0xC6, 0xE7, 0x9E, 0x23, 0xE0, 0x5C, 0xCA, 0xF7, 0xCF, 0xFE, 0xAA, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x01, 0x3B, 0xE1, 0x5C, -0x12, 0x48, 0x77, 0xF7, 0xA1, 0xFB, 0x05, 0xE0, 0x06, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0xA0, 0x47, -0x02, 0xB0, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x38, 0xE6, 0x10, 0x00, 0xD8, 0xE5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, -0x4E, 0x65, 0x61, 0x40, 0xC8, 0xE6, 0x10, 0x00, 0x7D, 0x03, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, 0x90, 0x69, 0x61, 0x40, -0x92, 0x69, 0x61, 0x40, 0x2C, 0x04, 0x60, 0x40, 0x90, 0x69, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x34, 0xD6, 0x10, 0x00, -0x10, 0xB5, 0x82, 0x00, 0x0C, 0x4B, 0xD4, 0x58, 0x00, 0x2C, 0x0E, 0xD0, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x05, 0xD1, -0x09, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x3B, 0xA3, 0x54, -0x10, 0xBD, 0x04, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0xA0, 0x47, 0xF7, 0xE7, 0x38, 0xE6, 0x10, 0x00, -0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0xCF, 0xB2, 0x06, 0x2F, -0x08, 0xD9, 0xFF, 0x20, 0x08, 0x40, 0x10, 0x4B, 0xDB, 0x6E, 0x98, 0x46, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0xC0, 0x47, -0x00, 0x2C, 0x0A, 0xD0, 0x04, 0x2C, 0x0F, 0xD0, 0xFF, 0x20, 0x28, 0x40, 0x09, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, -0x21, 0x00, 0xA8, 0x47, 0x03, 0xE0, 0x31, 0x00, 0x38, 0x00, 0xFF, 0xF7, 0x61, 0xFE, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, -0x31, 0x00, 0x38, 0x00, 0xFF, 0xF7, 0xB6, 0xFF, 0xF7, 0xE7, 0xC0, 0x46, 0x28, 0x19, 0x16, 0x00, 0xF8, 0xB5, 0x05, 0x00, -0x51, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x02, 0xD0, 0xFE, 0xF7, 0x0E, 0xFD, 0xF8, 0xBD, 0x4F, 0x48, 0x77, 0xF7, 0x22, 0xFB, -0x4E, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x07, 0xD0, 0x4D, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, -0x12, 0x20, 0xEF, 0xE7, 0x00, 0x21, 0xF8, 0x20, 0x75, 0xF7, 0xE0, 0xFA, 0x46, 0x4B, 0x18, 0x60, 0x00, 0x28, 0x00, 0xD1, -0x7C, 0xE0, 0x9E, 0xF7, 0x37, 0xFE, 0x06, 0x00, 0x83, 0xF7, 0xD8, 0xFB, 0x43, 0x4A, 0x13, 0x88, 0x43, 0x49, 0x0B, 0x40, -0x00, 0x02, 0x03, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0x3D, 0x4B, 0x1C, 0x68, 0xF8, 0x22, 0x00, 0x21, 0x20, 0x00, 0x73, 0xF7, -0x79, 0xFA, 0x00, 0x23, 0x63, 0x62, 0x3D, 0x4A, 0xE2, 0x61, 0x3D, 0x4A, 0x22, 0x62, 0x03, 0x22, 0x22, 0x76, 0x3C, 0x4A, -0x12, 0x78, 0xA2, 0x75, 0x3B, 0x4A, 0x22, 0x61, 0x05, 0x22, 0xE2, 0x75, 0x99, 0x32, 0xA3, 0x54, 0x01, 0x32, 0x01, 0x21, -0xA1, 0x54, 0x6B, 0x3A, 0x22, 0x65, 0x6D, 0x32, 0xA3, 0x54, 0x7F, 0xF7, 0xA9, 0xFA, 0x07, 0x1E, 0x3D, 0xD0, 0x3A, 0x89, -0x94, 0x23, 0xE2, 0x52, 0x93, 0x3B, 0x01, 0x22, 0x29, 0x00, 0x00, 0x20, 0xFE, 0xF7, 0xE8, 0xFC, 0x33, 0x00, 0x00, 0x22, -0x29, 0x00, 0x01, 0x20, 0xFF, 0xF7, 0x50, 0xF9, 0x9E, 0xF7, 0xF8, 0xFD, 0x60, 0x60, 0x00, 0x23, 0x82, 0x22, 0xA3, 0x52, -0xA3, 0x60, 0x04, 0x32, 0xFA, 0x21, 0xC9, 0x01, 0xA1, 0x52, 0xE6, 0x66, 0x26, 0x67, 0x63, 0x67, 0xA3, 0x67, 0x00, 0x22, -0xA6, 0x33, 0xE2, 0x54, 0x23, 0x4B, 0xA3, 0x82, 0xFA, 0x23, 0x1B, 0x02, 0x9C, 0x46, 0x66, 0x44, 0x36, 0x01, 0x36, 0x09, -0xE6, 0x60, 0x20, 0x00, 0xC9, 0xF7, 0x6C, 0xFC, 0x00, 0x28, 0x15, 0xD1, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x1C, 0x49, -0xA1, 0x32, 0xFF, 0x32, 0x8B, 0x5A, 0x01, 0x24, 0x23, 0x43, 0x8B, 0x52, 0xA0, 0x3A, 0xFF, 0x3A, 0x18, 0x4B, 0x1A, 0x60, -0x78, 0xE7, 0x0E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xBA, 0xE7, 0x0A, 0x4B, 0x9B, 0x6E, -0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x12, 0x20, 0x69, 0xE7, 0x06, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, -0x00, 0x20, 0x98, 0x47, 0x12, 0x20, 0x61, 0xE7, 0xD8, 0xE5, 0x10, 0x00, 0x4C, 0xD6, 0x10, 0x00, 0x38, 0xE6, 0x10, 0x00, -0x28, 0x19, 0x16, 0x00, 0xFE, 0x64, 0x61, 0x40, 0xFF, 0xF8, 0xFF, 0xFF, 0xA1, 0x04, 0x10, 0x00, 0xD3, 0x01, 0x10, 0x00, -0x7C, 0x91, 0x0D, 0x00, 0x6A, 0x04, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x20, 0xA3, 0x16, 0x00, 0xC8, 0xE6, 0x10, 0x00, -0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x0A, 0x48, 0x77, 0xF7, 0x68, 0xFA, 0xA1, 0x78, 0x4A, 0x10, 0x01, 0x23, 0x1A, 0x40, -0x07, 0x48, 0x02, 0x70, 0x0B, 0x40, 0xA3, 0x70, 0x20, 0x00, 0xFF, 0xF7, 0x85, 0xF9, 0x01, 0x00, 0x28, 0x00, 0xFA, 0xF7, -0x8B, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0xC0, 0x46, 0x60, 0xD6, 0x10, 0x00, 0xDC, 0xE5, 0x10, 0x00, 0x70, 0xB5, 0x05, 0x00, -0x0C, 0x00, 0x06, 0x48, 0x77, 0xF7, 0x4C, 0xFA, 0x28, 0x00, 0xFF, 0xF7, 0x1B, 0xFF, 0x01, 0x00, 0x20, 0x00, 0xFA, 0xF7, -0x77, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0xC0, 0x46, 0x68, 0xD6, 0x10, 0x00, 0x10, 0xB5, 0xFF, 0xF7, 0x51, 0xF8, 0x00, 0x20, -0x10, 0xBD, 0x00, 0x00, 0x10, 0xB5, 0x0E, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x17, 0xD0, 0xDC, 0x68, 0x18, 0x23, 0x0D, 0x22, -0x00, 0x21, 0x0B, 0x48, 0x75, 0xF7, 0x2A, 0xF9, 0xFF, 0x23, 0x03, 0x70, 0xA3, 0x88, 0x43, 0x80, 0x00, 0x23, 0x03, 0x71, -0x43, 0x71, 0x23, 0x69, 0x83, 0x60, 0x63, 0x69, 0xC3, 0x60, 0xE3, 0x69, 0x03, 0x61, 0xE3, 0x6A, 0x43, 0x61, 0xC6, 0xF7, -0x79, 0xFF, 0x10, 0xBD, 0xD8, 0xE5, 0x10, 0x00, 0x03, 0x11, 0x00, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x01, 0x78, -0x0A, 0x48, 0x77, 0xF7, 0x11, 0xFA, 0x23, 0x78, 0x00, 0x2B, 0x07, 0xD0, 0x01, 0x2B, 0x08, 0xD0, 0x00, 0x21, 0x28, 0x00, -0xFA, 0xF7, 0x3A, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0xFE, 0xF7, 0x6E, 0xFB, 0xF6, 0xE7, 0xFF, 0xF7, 0xC7, 0xFF, 0xFE, 0xF7, -0x69, 0xFB, 0xF1, 0xE7, 0x70, 0xD6, 0x10, 0x00, 0x45, 0x54, 0x45, 0x52, 0x52, 0x3A, 0x0A, 0x00, 0x77, 0x61, 0x6B, 0x65, -0x75, 0x70, 0x5F, 0x68, 0x6F, 0x73, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x6F, 0x77, 0x65, 0x72, 0x5F, 0x75, 0x70, -0x5F, 0x68, 0x6F, 0x73, 0x74, 0x0A, 0x00, 0x00, 0x75, 0x61, 0x72, 0x74, 0x5F, 0x69, 0x6E, 0x69, 0x74, 0x0A, 0x00, 0x00, -0x70, 0x5F, 0x73, 0x5F, 0x70, 0x00, 0x00, 0x00, 0x77, 0x69, 0x66, 0x69, 0x5F, 0x63, 0x68, 0x5F, 0x75, 0x70, 0x64, 0x61, -0x74, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -0xE6, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xF6, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x1A, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x42, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x66, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x8E, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xBA, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xE6, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x0C, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x32, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x5C, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0x82, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA2, 0x1C, 0x10, 0x00, 0xC4, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x16, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x3E, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x62, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x8A, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0xB6, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0xE2, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x08, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x2E, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x58, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x7E, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0x9E, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, -0xA8, 0x1A, 0x10, 0x00, 0xC0, 0x1C, 0x10, 0x00, 0x30, 0x78, 0x34, 0x30, 0x33, 0x34, 0x33, 0x30, 0x30, 0x34, 0x3A, 0x25, -0x78, 0x2C, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, 0x43, 0x54, 0x53, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x20, 0x0A, 0x00, -0xE2, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, -0x78, 0x1D, 0x10, 0x00, 0x52, 0x1E, 0x10, 0x00, 0xE4, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, -0xE2, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x6D, 0x64, 0x6C, 0x6C, 0x5F, 0x72, 0x65, 0x63, -0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x62, 0x64, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x25, 0x78, 0x2C, 0x25, -0x78, 0x0A, 0x00, 0x00, 0x77, 0x69, 0x66, 0x69, 0x6D, 0x61, 0x63, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x25, 0x78, 0x2C, -0x25, 0x78, 0x0A, 0x00, 0x66, 0x6C, 0x61, 0x73, 0x68, 0x6D, 0x61, 0x63, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x25, 0x78, -0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x43, 0x52, 0x5F, 0x50, 0x57, 0x52, 0x5F, 0x52, 0x45, 0x51, -0x0A, 0x00, 0x00, 0x00, 0x50, 0x57, 0x52, 0x5F, 0x43, 0x54, 0x52, 0x4C, 0x5F, 0x52, 0x45, 0x51, 0x0A, 0x00, 0x00, 0x00, -0x72, 0x65, 0x6D, 0x6F, 0x74, 0x65, 0x5F, 0x6D, 0x61, 0x78, 0x5F, 0x70, 0x77, 0x72, 0x0A, 0x00, 0x61, 0x66, 0x68, 0x74, -0x6F, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x74, 0x78, 0x5F, 0x61, 0x62, 0x6F, 0x72, 0x74, 0x0A, 0x00, 0x00, 0x00, -0x72, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x72, 0x73, 0x73, 0x69, 0x3A, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, -0x73, 0x6D, 0x75, 0x74, 0x65, 0x0A, 0x00, 0x00, 0x72, 0x78, 0x5F, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x3A, 0x25, -0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x3A, 0x25, 0x78, 0x0A, 0x00, -0x64, 0x75, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x66, 0x69, 0x20, 0x63, -0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x69, 0x6F, 0x6E, 0x0A, 0x00, 0x00, 0x00, 0x75, 0x6D, 0x72, 0x65, 0x0A, 0x00, 0x00, 0x00, -0x55, 0x4E, 0x44, 0x45, 0x46, 0x20, 0x56, 0x45, 0x4E, 0x44, 0x4F, 0x52, 0x5F, 0x49, 0x4E, 0x46, 0x4F, 0x0A, 0x00, 0x00, -0x55, 0x4E, 0x4B, 0x4E, 0x4F, 0x57, 0x20, 0x56, 0x45, 0x4E, 0x44, 0x4F, 0x52, 0x5F, 0x49, 0x4E, 0x46, 0x4F, 0x3A, 0x25, -0x78, 0x0A, 0x00, 0x00, 0x69, 0x6E, 0x69, 0x74, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, -0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x38, 0x5C, 0x10, 0x00, 0x70, 0x5C, 0x10, 0x00, 0x78, 0x5C, 0x10, 0x00, -0x38, 0x5C, 0x10, 0x00, 0x70, 0x5C, 0x10, 0x00, 0x76, 0x65, 0x72, 0x3A, 0x25, 0x73, 0x0A, 0x00, 0x6C, 0x6D, 0x74, 0x3A, -0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x72, 0x65, 0x6A, 0x65, 0x63, 0x74, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x00, -0x76, 0x73, 0x5F, 0x61, 0x70, 0x63, 0x66, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x6A, 0x65, 0x63, 0x74, 0x32, 0x3A, -0x25, 0x78, 0x00, 0x00, 0x92, 0x73, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, 0x86, 0x73, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, -0x92, 0x73, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, 0x8C, 0x73, 0x10, 0x00, 0xC0, 0x72, 0x10, 0x00, -0x6E, 0x6F, 0x61, 0x6C, 0x63, 0x62, 0x75, 0x66, 0x0A, 0x00, 0x00, 0x00, 0x62, 0x62, 0x5F, 0x74, 0x78, 0x5F, 0x74, 0x6F, -0x6E, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x6F, 0x70, 0x6D, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x6D, 0x73, 0x73, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x73, 0x65, 0x72, 0x72, 0x0A, 0x00, 0x46, 0x4C, 0x55, 0x53, 0x48, 0x3A, 0x25, 0x78, -0x0A, 0x00, 0x00, 0x00, 0x4C, 0x54, 0x4B, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x25, 0x78, 0x20, 0x00, 0x6F, 0x70, 0x63, 0x3A, -0x25, 0x78, 0x0A, 0x00, 0x69, 0x20, 0x3D, 0x20, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x69, 0x3A, 0x25, 0x78, -0x0A, 0x00, 0x00, 0x00, 0x6F, 0x70, 0x6C, 0x6C, 0x6D, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x1E, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xBE, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xDA, 0x89, 0x10, 0x00, 0xDA, 0x89, 0x10, 0x00, -0xFC, 0x89, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xDA, 0x89, 0x10, 0x00, 0xDA, 0x89, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0x4C, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xE8, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, -0xF4, 0x8A, 0x10, 0x00, 0x62, 0x8A, 0x10, 0x00, 0x55, 0x50, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, -0x25, 0x78, 0x0A, 0x00, 0x6F, 0x70, 0x6C, 0x6C, 0x63, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0x63, 0x72, -0x78, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0x63, 0x74, 0x6D, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, -0x61, 0x70, 0x63, 0x66, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x61, 0x74, 0x65, 0x6E, 0x63, 0x79, 0x0A, -0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x5F, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x45, 0x52, 0x52, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x41, 0x53, 0x53, 0x45, -0x52, 0x54, 0x5F, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, 0x47, 0x28, 0x25, 0x73, 0x29, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x25, -0x78, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x41, 0x53, 0x53, 0x45, -0x52, 0x54, 0x5F, 0x45, 0x52, 0x52, 0x7A, 0x28, 0x25, 0x73, 0x29, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x61, -0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x5F, 0x50, -0x41, 0x52, 0x41, 0x4D, 0x7A, 0x28, 0x30, 0x78, 0x25, 0x58, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x58, 0x29, 0x2C, 0x20, 0x69, -0x6E, 0x20, 0x25, 0x78, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, -0x70, 0x61, 0x67, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x00, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, -0x78, 0x0D, 0x0A, 0x00, 0x64, 0x65, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x6F, 0x70, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, -0x5F, 0x65, 0x6E, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x63, 0x68, 0x65, 0x72, 0x72, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, -0x74, 0x65, 0x73, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x65, 0x5F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3A, 0x25, 0x78, 0x0A, 0x00, -0x74, 0x65, 0x73, 0x74, 0x5F, 0x6D, 0x6F, 0x64, 0x65, 0x5F, 0x65, 0x78, 0x69, 0x74, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, -0x74, 0x73, 0x74, 0x5F, 0x65, 0x6E, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x5F, 0x62, 0x62, 0x5F, 0x74, 0x73, -0x74, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x65, 0x64, 0x72, 0x5F, -0x70, 0x6B, 0x74, 0x3D, 0x25, 0x78, 0x00, 0x00, 0x66, 0x72, 0x65, 0x71, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, -0xC0, 0xB8, 0x10, 0x00, 0xB4, 0xB9, 0x10, 0x00, 0x94, 0xBA, 0x10, 0x00, 0xF2, 0xB8, 0x10, 0x00, 0xB0, 0xBA, 0x10, 0x00, -0xCC, 0xBA, 0x10, 0x00, 0xE8, 0xBA, 0x10, 0x00, 0x04, 0xBB, 0x10, 0x00, 0x70, 0x6F, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, -0x73, 0x6F, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x68, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x63, 0x65, 0x3A, 0x25, -0x34, 0x64, 0x2C, 0x20, 0x6F, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6C, 0x65, 0x3A, 0x25, 0x34, 0x64, -0x2C, 0x20, 0x70, 0x6E, 0x3A, 0x25, 0x34, 0x64, 0x20, 0x62, 0x63, 0x3A, 0x25, 0x37, 0x64, 0x2C, 0x20, 0x62, 0x65, 0x3A, -0x25, 0x37, 0x64, 0x2C, 0x20, 0x70, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2C, 0x20, 0x62, 0x65, 0x72, 0x3A, -0x25, 0x64, 0x2E, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x70, 0x6F, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x3A, 0x25, -0x34, 0x64, 0x2C, 0x20, 0x68, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x63, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, -0x62, 0x63, 0x3A, 0x25, 0x37, 0x64, 0x2C, 0x20, 0x62, 0x65, 0x3A, 0x25, 0x37, 0x64, 0x2C, 0x20, 0x70, 0x65, 0x72, 0x3A, -0x25, 0x64, 0x2E, 0x25, 0x64, 0x2C, 0x20, 0x62, 0x65, 0x72, 0x3A, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, -0x6C, 0x64, 0x5F, 0x62, 0x62, 0x5F, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5F, 0x74, 0x78, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, -0x0A, 0x00, 0x00, 0x00, 0x72, 0x78, 0x61, 0x62, 0x6F, 0x72, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x68, 0x5F, -0x70, 0x72, 0x6F, 0x67, 0x5F, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x6C, 0x64, 0x5F, 0x62, 0x62, 0x5F, 0x72, 0x78, 0x5F, 0x74, 0x73, 0x74, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x00, -0x74, 0x78, 0x5F, 0x74, 0x73, 0x74, 0x0A, 0x00, 0x72, 0x78, 0x5F, 0x74, 0x73, 0x74, 0x0A, 0x00, 0x62, 0x62, 0x5F, 0x74, -0x73, 0x74, 0x5F, 0x73, 0x74, 0x6F, 0x70, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0x03, 0x00, 0x00, 0xFF, 0xC1, 0xFB, 0xE8, 0x4C, 0x90, 0x72, 0x8B, -0xE7, 0xB3, 0x51, 0x89, 0x63, 0xAB, 0x23, 0x23, 0x02, 0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, 0x51, 0xA8, 0xE5, 0x37, -0x49, 0xFB, 0xC9, 0xCA, 0x0C, 0x18, 0x53, 0x2C, 0xFD, 0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, 0xB6, 0x1B, 0xB4, 0xBE, -0x2A, 0x50, 0xEA, 0xE9, 0x0E, 0x9C, 0x4B, 0x5E, 0x57, 0x24, 0xCC, 0xA1, 0xB7, 0x59, 0xB8, 0x87, 0xFF, 0xE0, 0x7D, 0x74, -0x26, 0x48, 0xB9, 0xC5, 0xF3, 0xD9, 0xA8, 0xC4, 0xB1, 0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, 0xD5, 0xB0, 0x97, 0x9D, -0x28, 0xD4, 0xF2, 0x9B, 0xA4, 0xFD, 0x64, 0x65, 0x06, 0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, 0xF3, 0xF8, 0x2E, 0x58, -0xDB, 0x0D, 0x5A, 0x5F, 0x15, 0x28, 0xF5, 0x74, 0x07, 0xCE, 0x25, 0xAF, 0x2B, 0x12, 0xE6, 0xD0, 0xDB, 0x2C, 0xDC, 0xC3, -0x7F, 0xF0, 0x3E, 0x3A, 0x13, 0xA4, 0xDC, 0xE2, 0xF9, 0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, 0x00, 0x21, 0x86, 0x9C, -0x6A, 0xD8, 0xCB, 0x4E, 0x14, 0x6A, 0xF9, 0x4D, 0xD2, 0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, 0x7F, 0xD1, 0xB8, 0xA6, -0x79, 0x7C, 0x17, 0xAC, 0xED, 0x06, 0xAD, 0xAF, 0x0A, 0x94, 0x7A, 0xBA, 0x03, 0xE7, 0x92, 0xD7, 0x15, 0x09, 0x73, 0xE8, -0x6D, 0x16, 0xEE, 0xE1, 0x3F, 0x78, 0x1F, 0x9D, 0x09, 0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, 0x6C, 0x75, 0x64, 0x44, -0x80, 0x10, 0x43, 0x4E, 0x35, 0xEC, 0x65, 0x27, 0x0A, 0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, 0x01, 0x63, 0x8A, 0xA5, -0xBF, 0x68, 0x5C, 0xD3, 0x3C, 0xBE, 0x0B, 0xD6, 0x76, 0x83, 0xD6, 0x57, 0x05, 0x4A, 0x3D, 0xDD, 0x81, 0x73, 0xC9, 0xEB, -0x8A, 0x84, 0x39, 0xF4, 0x36, 0x0B, 0xF7, 0xF0, 0x1F, 0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, 0x3E, 0x1B, 0x95, 0x38, -0xB6, 0x3A, 0x32, 0x22, 0x40, 0x88, 0x21, 0xA7, 0x1A, 0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, 0xB4, 0x9F, 0xAC, 0xCC, -0x80, 0x31, 0xC5, 0xD2, 0x5F, 0x34, 0xAE, 0x69, 0x1E, 0xDF, 0x05, 0x6B, 0xBB, 0x41, 0xEB, 0xAB, 0x02, 0xA5, 0x9E, 0xEE, -0xC0, 0xB9, 0xE4, 0x75, 0x45, 0xC2, 0x1C, 0x7A, 0x9B, 0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, 0x82, 0x94, 0x5B, 0x3C, -0x9F, 0x8D, 0x4A, 0x1C, 0x5B, 0x1D, 0x19, 0x11, 0x20, 0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, 0x42, 0x2D, 0xBF, 0x49, -0xDA, 0x4F, 0x56, 0x66, 0xC0, 0x98, 0x62, 0xE9, 0x2F, 0x1A, 0xD7, 0x34, 0x8F, 0xEF, 0x82, 0xB5, 0xDD, 0xA0, 0xF5, 0x55, -0x81, 0x52, 0x4F, 0x77, 0xE0, 0x5C, 0xF2, 0xBA, 0x22, 0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, 0x07, 0xEF, 0xA3, 0x33, -0x41, 0xCA, 0x2D, 0x9E, 0xCF, 0x46, 0x25, 0x8E, 0xAD, 0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, 0x86, 0xBD, 0xEC, 0x44, -0xA1, 0x96, 0xDF, 0x24, 0xED, 0x27, 0x2B, 0x33, 0x60, 0x4C, 0xB1, 0xF4, 0x17, 0x8D, 0x6B, 0x9A, 0xC7, 0x77, 0xC1, 0xDA, -0x6E, 0xD0, 0xFA, 0xAA, 0x40, 0xA9, 0xA7, 0x3B, 0x70, 0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, 0x66, 0xE1, 0x1E, 0xFE, -0x83, 0xF7, 0xD1, 0x99, 0x20, 0xE5, 0x16, 0xCF, 0x67, 0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, 0x08, 0x31, 0xE4, 0x54, -0xC3, 0x5E, 0x76, 0xA2, 0x50, 0xCB, 0x6F, 0x92, 0xF6, 0x93, 0x95, 0x19, 0x30, 0xA6, 0x58, 0xFA, 0x8B, 0xC6, 0x35, 0xCD, -0xE3, 0xBB, 0x60, 0x6D, 0x37, 0x68, 0x7D, 0x55, 0xA0, 0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, 0x48, 0x98, 0x43, 0x6F, -0xB3, 0x70, 0x0F, 0xFF, 0xC1, 0xFB, 0xE8, 0x4C, 0x90, 0x72, 0x8B, 0xE7, 0xB3, 0x51, 0x89, 0x63, 0xAB, 0x23, 0x23, 0x02, -0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, 0x51, 0xA8, 0xE5, 0x37, 0x49, 0xFB, 0xC9, 0xCA, 0x0C, 0x18, 0x53, 0x2C, 0xFD, -0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, 0xB6, 0x1B, 0xB4, 0xBE, 0x2A, 0x50, 0xEA, 0xE9, 0x0E, 0x9C, 0x4B, 0x5E, 0x57, -0x24, 0xCC, 0xA1, 0xB7, 0x59, 0xB8, 0x87, 0xFF, 0xE0, 0x7D, 0x74, 0x26, 0x48, 0xB9, 0xC5, 0xF3, 0xD9, 0xA8, 0xC4, 0xB1, -0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, 0xD5, 0xB0, 0x97, 0x9D, 0x28, 0xD4, 0xF2, 0x9B, 0xA4, 0xFD, 0x64, 0x65, 0x06, -0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, 0xF3, 0xF8, 0x2E, 0x58, 0xDB, 0x0D, 0x5A, 0x5F, 0x15, 0x28, 0xF5, 0x74, 0x07, -0xCE, 0x25, 0xAF, 0x2B, 0x12, 0xE6, 0xD0, 0xDB, 0x2C, 0xDC, 0xC3, 0x7F, 0xF0, 0x3E, 0x3A, 0x13, 0xA4, 0xDC, 0xE2, 0xF9, -0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, 0x00, 0x21, 0x86, 0x9C, 0x6A, 0xD8, 0xCB, 0x4E, 0x14, 0x6A, 0xF9, 0x4D, 0xD2, -0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, 0x7F, 0xD1, 0xB8, 0xA6, 0x79, 0x7C, 0x17, 0xAC, 0xED, 0x06, 0xAD, 0xAF, 0x0A, -0x94, 0x7A, 0xBA, 0x03, 0xE7, 0x92, 0xD7, 0x15, 0x09, 0x73, 0xE8, 0x6D, 0x16, 0xEE, 0xE1, 0x3F, 0x78, 0x1F, 0x9D, 0x09, -0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, 0x6C, 0x75, 0x64, 0x44, 0x80, 0x10, 0x43, 0x4E, 0x35, 0xEC, 0x65, 0x27, 0x0A, -0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, 0x01, 0x63, 0x8A, 0xA5, 0xBF, 0x68, 0x5C, 0xD3, 0x3C, 0xBE, 0x0B, 0xD6, 0x76, -0x83, 0xD6, 0x57, 0x05, 0x4A, 0x3D, 0xDD, 0x81, 0x73, 0xC9, 0xEB, 0x8A, 0x84, 0x39, 0xF4, 0x36, 0x0B, 0xF7, 0xF0, 0x1F, -0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, 0x3E, 0x1B, 0x95, 0x38, 0xB6, 0x3A, 0x32, 0x22, 0x40, 0x88, 0x21, 0xA7, 0x1A, -0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, 0xB4, 0x9F, 0xAC, 0xCC, 0x80, 0x31, 0xC5, 0xD2, 0x5F, 0x34, 0xAE, 0x69, 0x1E, -0xDF, 0x05, 0x6B, 0xBB, 0x41, 0xEB, 0xAB, 0x02, 0xA5, 0x9E, 0xEE, 0xC0, 0xB9, 0xE4, 0x75, 0x45, 0xC2, 0x1C, 0x7A, 0x9B, -0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, 0x82, 0x94, 0x5B, 0x3C, 0x9F, 0x8D, 0x4A, 0x1C, 0x5B, 0x1D, 0x19, 0x11, 0x20, -0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, 0x42, 0x2D, 0xBF, 0x49, 0xDA, 0x4F, 0x56, 0x66, 0xC0, 0x98, 0x62, 0xE9, 0x2F, -0x1A, 0xD7, 0x34, 0x8F, 0xEF, 0x82, 0xB5, 0xDD, 0xA0, 0xF5, 0x55, 0x81, 0x52, 0x4F, 0x77, 0xE0, 0x5C, 0xF2, 0xBA, 0x22, -0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, 0x07, 0xEF, 0xA3, 0x33, 0x41, 0xCA, 0x2D, 0x9E, 0xCF, 0x46, 0x25, 0x8E, 0xAD, -0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, 0x86, 0xBD, 0xEC, 0x44, 0xA1, 0x96, 0xDF, 0x24, 0xED, 0x27, 0x2B, 0x33, 0x60, -0x4C, 0xB1, 0xF4, 0x17, 0x8D, 0x6B, 0x9A, 0xC7, 0x77, 0xC1, 0xDA, 0x6E, 0xD0, 0xFA, 0xAA, 0x40, 0xA9, 0xA7, 0x3B, 0x70, -0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, 0x66, 0xE1, 0x1E, 0xFE, 0x83, 0xF7, 0xD1, 0x99, 0x20, 0xE5, 0x16, 0xCF, 0x67, -0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, 0x08, 0x31, 0xE4, 0x54, 0xC3, 0x5E, 0x76, 0xA2, 0x50, 0xCB, 0x6F, 0x92, 0xF6, -0x93, 0x95, 0x19, 0x30, 0xA6, 0x58, 0xFA, 0x8B, 0xC6, 0x35, 0xCD, 0xE3, 0xBB, 0x60, 0x6D, 0x37, 0x68, 0x7D, 0x55, 0xA0, -0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, 0x48, 0x98, 0x43, 0x6F, 0xB3, 0x70, 0x0F, 0xFF, 0xC1, 0xFF, 0xC1, 0xFB, 0xE8, -0x4C, 0x90, 0x72, 0x8B, 0xE7, 0xB3, 0x51, 0x89, 0x63, 0xAB, 0x23, 0x23, 0x02, 0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, -0x51, 0xA8, 0xE5, 0x37, 0x49, 0xFB, 0xC9, 0xCA, 0x0C, 0x18, 0x53, 0x2C, 0xFD, 0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, -0xB6, 0x1B, 0xB4, 0xBE, 0x2A, 0x50, 0xEA, 0xE9, 0x0E, 0x9C, 0x4B, 0x5E, 0x57, 0x24, 0xCC, 0xA1, 0xB7, 0x59, 0xB8, 0x87, -0xFF, 0xE0, 0x7D, 0x74, 0x26, 0x48, 0xB9, 0xC5, 0xF3, 0xD9, 0xA8, 0xC4, 0xB1, 0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, -0xD5, 0xB0, 0x97, 0x9D, 0x28, 0xD4, 0xF2, 0x9B, 0xA4, 0xFD, 0x64, 0x65, 0x06, 0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, -0xF3, 0xF8, 0x2E, 0x58, 0xDB, 0x0D, 0x5A, 0x5F, 0x15, 0x28, 0xF5, 0x74, 0x07, 0xCE, 0x25, 0xAF, 0x2B, 0x12, 0xE6, 0xD0, -0xDB, 0x2C, 0xDC, 0xC3, 0x7F, 0xF0, 0x3E, 0x3A, 0x13, 0xA4, 0xDC, 0xE2, 0xF9, 0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, -0x00, 0x21, 0x86, 0x9C, 0x6A, 0xD8, 0xCB, 0x4E, 0x14, 0x6A, 0xF9, 0x4D, 0xD2, 0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, -0x7F, 0xD1, 0xB8, 0xA6, 0x79, 0x7C, 0x17, 0xAC, 0xED, 0x06, 0xAD, 0xAF, 0x0A, 0x94, 0x7A, 0xBA, 0x03, 0xE7, 0x92, 0xD7, -0x15, 0x09, 0x73, 0xE8, 0x6D, 0x16, 0xEE, 0xE1, 0x3F, 0x78, 0x1F, 0x9D, 0x09, 0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, -0x6C, 0x75, 0x64, 0x44, 0x80, 0x10, 0x43, 0x4E, 0x35, 0xEC, 0x65, 0x27, 0x0A, 0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, -0x01, 0x63, 0x8A, 0xA5, 0xBF, 0x68, 0x5C, 0xD3, 0x3C, 0xBE, 0x0B, 0xD6, 0x76, 0x83, 0xD6, 0x57, 0x05, 0x4A, 0x3D, 0xDD, -0x81, 0x73, 0xC9, 0xEB, 0x8A, 0x84, 0x39, 0xF4, 0x36, 0x0B, 0xF7, 0xF0, 0x1F, 0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, -0x3E, 0x1B, 0x95, 0x38, 0xB6, 0x3A, 0x32, 0x22, 0x40, 0x88, 0x21, 0xA7, 0x1A, 0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, -0xB4, 0x9F, 0xAC, 0xCC, 0x80, 0x31, 0xC5, 0xD2, 0x5F, 0x34, 0xAE, 0x69, 0x1E, 0xDF, 0x05, 0x6B, 0xBB, 0x41, 0xEB, 0xAB, -0x02, 0xA5, 0x9E, 0xEE, 0xC0, 0xB9, 0xE4, 0x75, 0x45, 0xC2, 0x1C, 0x7A, 0x9B, 0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, -0x82, 0x94, 0x5B, 0x3C, 0x9F, 0x8D, 0x4A, 0x1C, 0x5B, 0x1D, 0x19, 0x11, 0x20, 0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, -0x42, 0x2D, 0xBF, 0x49, 0xDA, 0x4F, 0x56, 0x66, 0xC0, 0x98, 0x62, 0xE9, 0x2F, 0x1A, 0xD7, 0x34, 0x8F, 0xEF, 0x82, 0xB5, -0xDD, 0xA0, 0xF5, 0x55, 0x81, 0x52, 0x4F, 0x77, 0xE0, 0x5C, 0xF2, 0xBA, 0x22, 0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, -0x07, 0xEF, 0xA3, 0x33, 0x41, 0xCA, 0x2D, 0x9E, 0xCF, 0x46, 0x25, 0x8E, 0xAD, 0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, -0x86, 0xBD, 0xEC, 0x44, 0xA1, 0x96, 0xDF, 0x24, 0xED, 0x27, 0x2B, 0x33, 0x60, 0x4C, 0xB1, 0xF4, 0x17, 0x8D, 0x6B, 0x9A, -0xC7, 0x77, 0xC1, 0xDA, 0x6E, 0xD0, 0xFA, 0xAA, 0x40, 0xA9, 0xA7, 0x3B, 0x70, 0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, -0x66, 0xE1, 0x1E, 0xFE, 0x83, 0xF7, 0xD1, 0x99, 0x20, 0xE5, 0x16, 0xCF, 0x67, 0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, -0x08, 0x31, 0xE4, 0x54, 0xC3, 0x5E, 0x76, 0xA2, 0x50, 0xCB, 0x6F, 0x92, 0xF6, 0x93, 0x95, 0x19, 0x30, 0xA6, 0x58, 0xFA, -0x8B, 0xC6, 0x35, 0xCD, 0xE3, 0xBB, 0x60, 0x6D, 0x37, 0x68, 0x7D, 0x55, 0xA0, 0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, -0x48, 0x98, 0x43, 0x6F, 0xB3, 0x70, 0x0F, 0xFF, 0xC1, 0xFB, 0xE8, 0x4C, 0x90, 0x72, 0x8B, 0xE7, 0xB3, 0x51, 0x89, 0x63, -0xAB, 0x23, 0x23, 0x02, 0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, 0x51, 0xA8, 0xE5, 0x37, 0x49, 0xFB, 0xC9, 0xCA, 0x0C, -0x18, 0x53, 0x2C, 0xFD, 0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, 0xB6, 0x1B, 0xB4, 0xBE, 0x2A, 0x50, 0xEA, 0xE9, 0x0E, -0x9C, 0x4B, 0x5E, 0x57, 0x24, 0xCC, 0xA1, 0xB7, 0x59, 0xB8, 0x87, 0xFF, 0xE0, 0x7D, 0x74, 0x26, 0x48, 0xB9, 0xC5, 0xF3, -0xD9, 0xA8, 0xC4, 0xB1, 0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, 0xD5, 0xB0, 0x97, 0x9D, 0x28, 0xD4, 0xF2, 0x9B, 0xA4, -0xFD, 0x64, 0x65, 0x06, 0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, 0xF3, 0xF8, 0x2E, 0x58, 0xDB, 0x0D, 0x5A, 0x5F, 0x15, -0x28, 0xF5, 0x74, 0x07, 0xCE, 0x25, 0xAF, 0x2B, 0x12, 0xE6, 0xD0, 0xDB, 0x2C, 0xDC, 0xC3, 0x7F, 0xF0, 0x3E, 0x3A, 0x13, -0xA4, 0xDC, 0xE2, 0xF9, 0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, 0x00, 0x21, 0x86, 0x9C, 0x6A, 0xD8, 0xCB, 0x4E, 0x14, -0x6A, 0xF9, 0x4D, 0xD2, 0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, 0x7F, 0xD1, 0xB8, 0xA6, 0x79, 0x7C, 0x17, 0xAC, 0xED, -0x06, 0xAD, 0xAF, 0x0A, 0x94, 0x7A, 0xBA, 0x03, 0xE7, 0x92, 0xD7, 0x15, 0x09, 0x73, 0xE8, 0x6D, 0x16, 0xEE, 0xE1, 0x3F, -0x78, 0x1F, 0x9D, 0x09, 0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, 0x6C, 0x75, 0x64, 0x44, 0x80, 0x10, 0x43, 0x4E, 0x35, -0xEC, 0x65, 0x27, 0x0A, 0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, 0x01, 0x63, 0x8A, 0xA5, 0xBF, 0x68, 0x5C, 0xD3, 0x3C, -0xBE, 0x0B, 0xD6, 0x76, 0x83, 0xD6, 0x57, 0x05, 0x4A, 0x3D, 0xDD, 0x81, 0x73, 0xC9, 0xEB, 0x8A, 0x84, 0x39, 0xF4, 0x36, -0x0B, 0xF7, 0xF0, 0x1F, 0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, 0x3E, 0x1B, 0x95, 0x38, 0xB6, 0x3A, 0x32, 0x22, 0x40, -0x88, 0x21, 0xA7, 0x1A, 0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, 0xB4, 0x9F, 0xAC, 0xCC, 0x80, 0x31, 0xC5, 0xD2, 0x5F, -0x34, 0xAE, 0x69, 0x1E, 0xDF, 0x05, 0x6B, 0xBB, 0x41, 0xEB, 0xAB, 0x02, 0xA5, 0x9E, 0xEE, 0xC0, 0xB9, 0xE4, 0x75, 0x45, -0xC2, 0x1C, 0x7A, 0x9B, 0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, 0x82, 0x94, 0x5B, 0x3C, 0x9F, 0x8D, 0x4A, 0x1C, 0x5B, -0x1D, 0x19, 0x11, 0x20, 0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, 0x42, 0x2D, 0xBF, 0x49, 0xDA, 0x4F, 0x56, 0x66, 0xC0, -0x98, 0x62, 0xE9, 0x2F, 0x1A, 0xD7, 0x34, 0x8F, 0xEF, 0x82, 0xB5, 0xDD, 0xA0, 0xF5, 0x55, 0x81, 0x52, 0x4F, 0x77, 0xE0, -0x5C, 0xF2, 0xBA, 0x22, 0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, 0x07, 0xEF, 0xA3, 0x33, 0x41, 0xCA, 0x2D, 0x9E, 0xCF, -0x46, 0x25, 0x8E, 0xAD, 0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, 0x86, 0xBD, 0xEC, 0x44, 0xA1, 0x96, 0xDF, 0x24, 0xED, -0x27, 0x2B, 0x33, 0x60, 0x4C, 0xB1, 0xF4, 0x17, 0x8D, 0x6B, 0x9A, 0xC7, 0x77, 0xC1, 0xDA, 0x6E, 0xD0, 0xFA, 0xAA, 0x40, -0xA9, 0xA7, 0x3B, 0x70, 0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, 0x66, 0xE1, 0x1E, 0xFE, 0x83, 0xF7, 0xD1, 0x99, 0x20, -0xE5, 0x16, 0xCF, 0x67, 0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, 0x08, 0x31, 0xE4, 0x54, 0xC3, 0x5E, 0x76, 0xA2, 0x50, -0xCB, 0x6F, 0x92, 0xF6, 0x93, 0x95, 0x19, 0x30, 0xA6, 0x58, 0xFA, 0x8B, 0xC6, 0x35, 0xCD, 0xE3, 0xBB, 0x60, 0x6D, 0x37, -0x68, 0x7D, 0x55, 0xA0, 0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, 0x48, 0x98, 0x43, 0x6F, 0xB3, 0x70, 0x0F, 0xFF, 0xC1, -0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x01, 0x02, 0x02, 0x03, -0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, -0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, -0x04, 0x05, 0x05, 0x06, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, -0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x02, 0x03, 0x03, 0x04, -0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, -0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, -0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, -0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, -0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, -0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, -0x05, 0x06, 0x06, 0x07, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, -0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x07, 0x08, 0x00, 0x10, 0x20, 0x30, -0x40, 0x50, 0x60, 0x70, 0x00, 0x00, 0x01, 0x50, 0x00, 0x03, 0x04, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x50, -0x00, 0x02, 0x07, 0x03, 0x0C, 0x04, 0x0D, 0x05, 0x26, 0x06, 0x37, 0x07, 0x2C, 0x08, 0x3D, 0x09, 0x00, 0x00, 0x02, 0x01, -0x05, 0x00, 0x01, 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x07, 0x00, 0x01, 0x0C, 0x00, 0x03, 0x0D, 0x00, 0x03, 0x06, 0x01, -0x01, 0x07, 0x01, 0x01, 0x0C, 0x01, 0x03, 0x0D, 0x01, 0x03, 0x00, 0x00, 0x00, 0x27, 0x35, 0x00, 0x2B, 0x00, 0x31, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x22, 0x10, 0x00, 0xFF, 0xF0, 0xAA, 0xFF, 0xFF, 0x00, 0x0F, 0x55, -0x80, 0x01, 0x00, 0x00, 0xF6, 0xFC, 0xFE, 0x00, 0x03, 0x06, 0x09, 0x0A, 0xF9, 0xFC, 0xFF, 0x02, 0x05, 0x07, 0x09, 0x0C, -0x0F, 0x11, 0x15, 0x17, 0x50, 0x00, 0x00, 0x00, 0xE4, 0x57, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, -0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x24, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x04, 0x25, -0x00, 0x80, 0xDE, 0xA9, 0x91, 0x06, 0x7B, 0x00, 0x04, 0x10, 0x04, 0x00, 0x04, 0x00, 0x00, 0x26, 0x00, 0x80, 0xDE, 0xA9, -0x65, 0x06, 0x7C, 0x00, 0x04, 0xF0, 0x03, 0x00, 0x3C, 0xE7, 0x1C, 0x24, 0x09, 0x80, 0xDE, 0xA9, 0x69, 0x06, 0x7C, 0x48, -0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0x7F, 0x24, 0x17, 0x42, 0x40, 0x40, 0x8D, 0x08, 0x7B, 0xB0, 0x14, 0x10, 0x04, 0x00, -0x0C, 0x21, 0x84, 0x27, 0x00, 0x80, 0xDE, 0xA9, 0x91, 0x46, 0x7B, 0x03, 0x04, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x04, 0x26, -0x00, 0x80, 0xDE, 0xA9, 0x81, 0x06, 0x7B, 0x03, 0x04, 0xF0, 0x03, 0x00, 0x3C, 0xE7, 0x1C, 0x24, 0x09, 0x80, 0xDE, 0xA9, -0x69, 0x06, 0x7C, 0x4B, 0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x27, 0x17, 0x42, 0x40, 0x40, 0xFD, 0x08, 0x7A, 0xB0, -0x14, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x84, 0x27, 0x00, 0x80, 0xDE, 0xA9, 0x91, 0x46, 0x7B, 0x03, 0x04, 0x10, 0x04, 0x00, -0x0C, 0x21, 0x04, 0x26, 0x00, 0x80, 0xDE, 0xA9, 0x81, 0x06, 0x7B, 0x03, 0x04, 0xF0, 0x03, 0x00, 0x3C, 0xE7, 0x1C, 0x24, -0x09, 0x80, 0xDE, 0xA9, 0x69, 0x06, 0x7C, 0x4B, 0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x27, 0x17, 0x42, 0x40, 0x40, -0xFD, 0x08, 0x7A, 0xB0, 0x14, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x84, 0x27, 0x00, 0x80, 0xDE, 0xA9, 0x91, 0x46, 0x7B, 0x03, -0x04, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x04, 0x26, 0x00, 0x80, 0xDE, 0xA9, 0x81, 0x06, 0x7B, 0x03, 0x04, 0xF0, 0x03, 0x00, -0x3C, 0xE7, 0x1C, 0x24, 0x09, 0x80, 0xDE, 0xA9, 0x69, 0x06, 0x7C, 0x4B, 0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x27, -0x17, 0x42, 0x40, 0x40, 0xFD, 0x08, 0x7A, 0xB0, 0xD0, 0x9E, 0x21, 0x00, 0x1C, 0x1C, 0xFB, 0x41, 0xD4, 0x9E, 0x21, 0x00, -0x1C, 0x1C, 0xFB, 0x41, 0xD4, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0x41, 0xD4, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0x61, -0xD6, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0x65, 0xD7, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0x75, 0xD7, 0x9E, 0x21, 0x00, -0x70, 0x70, 0xFB, 0xFD, 0xD7, 0x9E, 0x21, 0x00, 0xF0, 0xF0, 0xFB, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, -0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, -0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, -0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x04, 0x00, 0x00, 0xB8, 0x0B, 0x00, 0x00, 0xFF, 0xF9, 0x01, 0x08, -0x00, 0x00, 0x00, 0x00, 0xAC, 0x2B, 0x16, 0x00, 0x04, 0x00, 0x00, 0x00, 0x28, 0x21, 0x16, 0x00, 0xA8, 0x61, 0x00, 0x00, -0xB8, 0x88, 0x00, 0x00, 0x74, 0x40, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, -0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0xED, 0x79, 0x80, 0x80, 0x80, 0x80, -0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0xCD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, -0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, -0x60, 0x07, 0x8D, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x0D, 0x79, -0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, -0x6B, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x55, 0x00, -0x6C, 0x00, 0x0F, 0xDB, 0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, -0x60, 0xD7, 0x0C, 0x78, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, -0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, -0x58, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0xDB, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0xD8, 0x3E, 0x55, 0x00, -0x6D, 0x0C, 0x2F, 0xDB, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, -0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3F, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, -0x80, 0x80, 0x80, 0x80, 0xEB, 0x3F, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, -0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0xED, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, -0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0xCD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, -0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x8D, 0x79, -0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x0D, 0x79, 0x80, 0x80, 0x80, 0x80, -0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3E, 0x55, 0x00, -0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0xDB, -0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0xD7, 0x0C, 0x78, -0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, -0x22, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x55, 0x00, -0x6D, 0x0C, 0x2F, 0xDB, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0xD8, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0xDB, -0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, -0x80, 0x80, 0x80, 0x80, 0x6B, 0x3F, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, -0xEB, 0x3F, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, -0x6C, 0x00, 0x00, 0x03, 0x60, 0x07, 0xAC, 0xE9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, 0x6C, 0x00, 0x00, 0x03, -0x60, 0x07, 0x0C, 0xE8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, 0x6C, 0x00, 0x20, 0x03, 0x60, 0xD7, 0x0C, 0xE8, -0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, 0x6C, 0x00, 0xE0, 0x03, 0x60, 0x9F, 0x0D, 0xE8, 0x80, 0x80, 0x80, 0x80, -0x00, 0xBE, 0x7F, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0xE7, 0x8C, 0x69, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, -0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, -0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x9B, 0x60, 0x9F, 0x0D, 0x68, -0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x2F, 0x1B, 0x60, 0x87, 0xEC, 0x79, 0x80, 0x80, 0x80, 0x80, -0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x87, 0xEC, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, -0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, -0x60, 0x07, 0x0D, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0x0D, 0x78, -0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x17, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, -0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, -0xFC, 0x00, 0xEF, 0x9B, 0x60, 0x9F, 0x0D, 0x68, 0x03, 0xC7, 0x8E, 0x00, 0x07, 0xC7, 0x8E, 0x00, 0x0B, 0xC7, 0x8E, 0x00, -0x0F, 0xC7, 0x8E, 0x00, 0x13, 0xC7, 0x8E, 0x00, 0x17, 0xC7, 0x8E, 0x00, 0x1B, 0xC7, 0x8E, 0x00, 0x1F, 0xC7, 0x8E, 0x00, -0x23, 0xC7, 0x8E, 0x00, 0x27, 0xC7, 0x8E, 0x00, 0x2B, 0xC7, 0x8E, 0x00, 0x2F, 0xC7, 0x8E, 0x00, 0x33, 0xC7, 0x8E, 0x00, -0x37, 0xC7, 0x8E, 0x00, 0x3B, 0xC7, 0x8E, 0x00, 0x3F, 0xC7, 0x8E, 0x00, 0x06, 0x81, 0x88, 0x00, 0x0A, 0x81, 0x88, 0x00, -0x0C, 0xC1, 0x88, 0x00, 0x14, 0xC1, 0x90, 0x00, 0x14, 0x41, 0x91, 0x00, 0x15, 0xC1, 0x91, 0x00, 0x23, 0xC1, 0x91, 0x00, -0x3F, 0xC1, 0x91, 0x00, 0x3F, 0xC1, 0x92, 0x00, 0x3F, 0x01, 0x94, 0x00, 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, -0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x2D, 0x20, 0x53, 0x65, 0x70, 0x20, 0x31, 0x33, 0x20, 0x32, 0x30, 0x32, 0x32, 0x20, 0x31, 0x30, 0x3A, 0x33, 0x38, 0x3A, -0x33, 0x39, 0x20, 0x2D, 0x20, 0x67, 0x69, 0x74, 0x20, 0x30, 0x61, 0x61, 0x62, 0x66, 0x62, 0x66, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, + 0x10, 0xB5, 0x15, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x02, 0xD0, 0x14, 0x4B, + 0x98, 0x47, 0x10, 0xBD, 0x13, 0x4B, 0x1B, 0x68, 0x3F, 0x22, 0x9A, 0x5C, + 0x00, 0x2A, 0xF6, 0xD1, 0x3D, 0x32, 0x9C, 0x5C, 0x10, 0x4B, 0x1A, 0x78, + 0x01, 0x32, 0xD2, 0xB2, 0x10, 0x2A, 0x10, 0xD8, 0x1A, 0x70, 0x0D, 0x49, + 0x0A, 0x78, 0x12, 0x03, 0x92, 0xB2, 0x62, 0x23, 0x63, 0x43, 0x0B, 0x4C, + 0x1C, 0x19, 0x22, 0x80, 0x0A, 0x78, 0x12, 0x09, 0x09, 0x49, 0x8C, 0x46, + 0x63, 0x44, 0x1A, 0x80, 0xDD, 0xE7, 0x05, 0x4B, 0x00, 0x22, 0x1A, 0x70, + 0xEB, 0xE7, 0xC0, 0x46, 0x50, 0xE0, 0x10, 0x00, 0xC1, 0xE9, 0x0A, 0x00, + 0x28, 0x27, 0x16, 0x00, 0xB0, 0xE6, 0x10, 0x00, 0xFA, 0x64, 0x61, 0x40, + 0xFC, 0x64, 0x61, 0x40, 0x10, 0xB5, 0x04, 0x00, 0x0B, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0x03, 0xD0, 0x3A, 0x22, 0x9B, 0x5C, 0x01, 0x2B, 0x06, 0xD0, + 0x20, 0x00, 0x08, 0x4B, 0x98, 0x47, 0x62, 0x68, 0x07, 0x4B, 0x1A, 0x60, + 0x10, 0xBD, 0x07, 0x49, 0x0B, 0x68, 0x07, 0x4A, 0x1A, 0x40, 0x80, 0x23, + 0x9B, 0x03, 0x13, 0x43, 0x0B, 0x60, 0xEF, 0xE7, 0x18, 0x27, 0x16, 0x00, + 0x25, 0xC3, 0x0C, 0x00, 0x30, 0xE6, 0x10, 0x00, 0x00, 0x04, 0x60, 0x40, + 0xFF, 0xFF, 0xDF, 0xFF, 0x10, 0xB5, 0x18, 0x4A, 0x00, 0x23, 0x00, 0x24, + 0x14, 0x57, 0x84, 0x42, 0x04, 0xDA, 0x01, 0x33, 0xDB, 0xB2, 0x01, 0x32, + 0x08, 0x2B, 0xF6, 0xD1, 0x12, 0x4A, 0xD2, 0x56, 0x82, 0x42, 0x05, 0xD0, + 0x00, 0x29, 0x03, 0xD1, 0x00, 0x2B, 0x01, 0xD0, 0x01, 0x3B, 0xDB, 0xB2, + 0x1A, 0x1C, 0x07, 0x2B, 0x00, 0xD9, 0x07, 0x22, 0xD2, 0xB2, 0x0C, 0x4B, + 0x99, 0x5C, 0x0C, 0x4A, 0x95, 0x23, 0x9B, 0x00, 0xD3, 0x5C, 0x1A, 0x1C, + 0xDB, 0xB2, 0x8B, 0x42, 0x00, 0xD9, 0x0A, 0x1C, 0x07, 0x49, 0x08, 0x4B, + 0xCB, 0x5C, 0x18, 0x1C, 0xDB, 0xB2, 0xD1, 0xB2, 0x8B, 0x42, 0x00, 0xD2, + 0x10, 0x1C, 0xC0, 0xB2, 0x10, 0xBD, 0xC0, 0x46, 0x28, 0xE0, 0x10, 0x00, + 0xBC, 0xDF, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0x55, 0x02, 0x00, 0x00, + 0x10, 0xB5, 0x62, 0x22, 0x42, 0x43, 0x0F, 0x4B, 0x9C, 0x46, 0x62, 0x44, + 0x13, 0x88, 0xDB, 0xB2, 0x1E, 0x2B, 0x13, 0xD0, 0x0C, 0x49, 0x0D, 0x48, + 0x0C, 0x5C, 0x0D, 0x48, 0x09, 0x5C, 0x09, 0x19, 0x01, 0x20, 0x8B, 0x42, + 0x09, 0xDB, 0x1B, 0x1B, 0xDB, 0xB2, 0x10, 0x2B, 0x08, 0xD0, 0x11, 0x88, + 0xFF, 0x20, 0x81, 0x43, 0x0B, 0x43, 0x13, 0x80, 0x00, 0x20, 0x10, 0xBD, + 0x0E, 0x3B, 0xE9, 0xE7, 0x0E, 0x33, 0xF4, 0xE7, 0x0C, 0x65, 0x61, 0x40, + 0x7C, 0x1E, 0x16, 0x00, 0x57, 0x02, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, + 0x30, 0xB5, 0x62, 0x22, 0x42, 0x43, 0x0F, 0x4B, 0x9C, 0x46, 0x62, 0x44, + 0x13, 0x88, 0xDB, 0xB2, 0x1E, 0x2B, 0x12, 0xD0, 0x0C, 0x49, 0x0D, 0x48, + 0x0C, 0x5C, 0x1D, 0x19, 0x03, 0x38, 0x09, 0x5C, 0x01, 0x20, 0x8D, 0x42, + 0x08, 0xDC, 0xEB, 0xB2, 0x10, 0x2B, 0x08, 0xD0, 0x11, 0x88, 0xFF, 0x20, + 0x81, 0x43, 0x0B, 0x43, 0x13, 0x80, 0x00, 0x20, 0x30, 0xBD, 0x0E, 0x3B, + 0xEA, 0xE7, 0x0E, 0x33, 0xF4, 0xE7, 0xC0, 0x46, 0x0C, 0x65, 0x61, 0x40, + 0x7C, 0x1E, 0x16, 0x00, 0x57, 0x02, 0x00, 0x00, 0x70, 0x47, 0x70, 0x47, + 0x70, 0xB5, 0x00, 0x28, 0x1C, 0xD0, 0x12, 0x4B, 0x1D, 0x68, 0x00, 0x2D, + 0x18, 0xD0, 0xE9, 0x78, 0x09, 0x02, 0x01, 0x23, 0x19, 0x43, 0x03, 0x33, + 0xFF, 0x22, 0x0E, 0x48, 0x81, 0xF7, 0xFA, 0xFE, 0x04, 0x1E, 0x0E, 0xD0, + 0x20, 0x00, 0x81, 0xF7, 0x1F, 0xFF, 0xAB, 0xF7, 0x23, 0xFB, 0x03, 0x00, + 0x09, 0x48, 0x6A, 0x68, 0x9B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x43, 0x60, + 0xD6, 0xF7, 0x9E, 0xFE, 0x70, 0xBD, 0x06, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xE9, 0xE7, 0xD8, 0xE5, 0x10, 0x00, + 0x3F, 0x06, 0x00, 0x00, 0xFC, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xF8, 0xB5, 0x05, 0x00, 0x22, 0x4B, 0x23, 0x4A, 0x13, 0x60, 0x02, 0x22, + 0xFF, 0x32, 0x9C, 0x5C, 0x21, 0x4B, 0xE2, 0x18, 0x12, 0x01, 0x13, 0x88, + 0x9B, 0x06, 0x5B, 0x0F, 0x01, 0x2B, 0x04, 0xD0, 0x13, 0x88, 0x9B, 0x06, + 0x5B, 0x0F, 0x02, 0x2B, 0x0F, 0xD1, 0x23, 0x01, 0x18, 0x49, 0x8C, 0x46, + 0x63, 0x44, 0x1B, 0x7B, 0x00, 0x2B, 0x05, 0xD1, 0x13, 0x88, 0x38, 0x21, + 0x8B, 0x43, 0x20, 0x39, 0x0B, 0x43, 0x13, 0x80, 0x15, 0x48, 0x83, 0xF7, + 0xB9, 0xFF, 0x15, 0x4B, 0x2A, 0x68, 0x9A, 0x42, 0x0F, 0xD0, 0x14, 0x4F, + 0xDE, 0x26, 0x76, 0x00, 0x00, 0x23, 0xBB, 0x51, 0x28, 0x00, 0xD7, 0xF7, + 0x4B, 0xF9, 0x11, 0x4B, 0xBB, 0x51, 0xAB, 0xF7, 0xD5, 0xFA, 0xA4, 0x00, + 0x0F, 0x4B, 0x18, 0x51, 0xF8, 0xBD, 0x0F, 0x4B, 0x1B, 0x68, 0x02, 0x2B, + 0xEB, 0xD1, 0x2B, 0x7C, 0x9B, 0x00, 0x0D, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1B, 0x68, 0x0C, 0x4A, 0x12, 0x68, 0x1A, 0x66, 0x1A, 0x61, 0xE0, 0xE7, + 0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, 0x00, 0x10, 0x06, 0x04, + 0xF8, 0xCD, 0x10, 0x00, 0xD1, 0x1F, 0x0D, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x35, 0x02, 0x10, 0x00, 0xE0, 0xE5, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, + 0xF4, 0x29, 0x16, 0x00, 0xE8, 0xE1, 0x10, 0x00, 0x30, 0xB5, 0x89, 0xB0, + 0x04, 0x1E, 0x32, 0xD0, 0x9E, 0x23, 0xC5, 0x5C, 0x1B, 0x4B, 0x00, 0x93, + 0x43, 0x68, 0x01, 0x93, 0x83, 0x68, 0x02, 0x93, 0x6B, 0x46, 0x1D, 0x76, + 0x04, 0x95, 0x18, 0x4B, 0x03, 0x93, 0x83, 0x7D, 0x6A, 0x46, 0x13, 0x75, + 0x01, 0x33, 0x53, 0x75, 0x00, 0x23, 0x93, 0x75, 0xB0, 0x22, 0x82, 0x5C, + 0x69, 0x46, 0xCA, 0x75, 0x8B, 0x76, 0xCB, 0x76, 0x01, 0x33, 0x4B, 0x76, + 0x68, 0x46, 0xD7, 0xF7, 0xFB, 0xF8, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x33, + 0xA3, 0x54, 0x47, 0x3A, 0x6A, 0x43, 0x0C, 0x4B, 0x9C, 0x46, 0x62, 0x44, + 0x13, 0x88, 0xFF, 0x21, 0x8B, 0x43, 0x01, 0x21, 0x0B, 0x43, 0x9B, 0xB2, + 0x13, 0x80, 0xA0, 0x23, 0xE1, 0x54, 0x09, 0xB0, 0x30, 0xBD, 0x06, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xF6, 0xE7, + 0xD1, 0xBD, 0x10, 0x00, 0xDE, 0x05, 0x00, 0x00, 0x1E, 0x65, 0x61, 0x40, + 0x28, 0x19, 0x16, 0x00, 0x30, 0xB5, 0x89, 0xB0, 0x03, 0x00, 0x0D, 0x00, + 0x89, 0x00, 0x2B, 0x4A, 0x8C, 0x58, 0x00, 0x2C, 0x36, 0xD0, 0xA6, 0x22, + 0xA2, 0x5C, 0x12, 0x1A, 0x03, 0x20, 0x10, 0x40, 0xC0, 0x18, 0x00, 0x01, + 0x00, 0x09, 0x63, 0x68, 0xC3, 0x1A, 0x1A, 0x01, 0x12, 0x09, 0x80, 0x21, + 0x09, 0x05, 0x8A, 0x42, 0x26, 0xD8, 0x1B, 0x01, 0x20, 0x2B, 0x23, 0xD9, + 0x20, 0x4B, 0x00, 0x93, 0x01, 0x90, 0xA3, 0x68, 0x02, 0x93, 0x6B, 0x46, + 0x1D, 0x76, 0x04, 0x95, 0x1D, 0x4B, 0x03, 0x93, 0xA3, 0x7D, 0x6A, 0x46, + 0x13, 0x75, 0x01, 0x33, 0x53, 0x75, 0x00, 0x23, 0x93, 0x75, 0xB0, 0x22, + 0xA2, 0x5C, 0x69, 0x46, 0xCA, 0x75, 0x8B, 0x76, 0xCB, 0x76, 0x01, 0x33, + 0x4B, 0x76, 0x68, 0x46, 0xD7, 0xF7, 0xA0, 0xF8, 0xA9, 0x22, 0xA3, 0x5C, + 0x01, 0x33, 0xA3, 0x54, 0x9F, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x01, 0xD0, + 0x09, 0xB0, 0x30, 0xBD, 0xA3, 0x6F, 0x9B, 0xB2, 0x62, 0x21, 0x4D, 0x43, + 0x0D, 0x4A, 0xAA, 0x18, 0x13, 0x80, 0xA3, 0x6F, 0x1B, 0x0C, 0x0C, 0x4A, + 0xAA, 0x18, 0x13, 0x80, 0x0B, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x0B, 0x4B, + 0x1B, 0x68, 0xDB, 0x03, 0xFF, 0x22, 0xD2, 0x03, 0x1A, 0x40, 0x23, 0x6D, + 0x13, 0x43, 0x9B, 0xB2, 0x2B, 0x80, 0xE3, 0xE7, 0x38, 0xE6, 0x10, 0x00, + 0x39, 0xCB, 0x10, 0x00, 0xDE, 0x05, 0x00, 0x00, 0xFA, 0x64, 0x61, 0x40, + 0xFC, 0x64, 0x61, 0x40, 0x10, 0x65, 0x61, 0x40, 0xC8, 0xE6, 0x10, 0x00, + 0x10, 0xB5, 0x00, 0x28, 0x08, 0xD0, 0x08, 0x4B, 0x98, 0x47, 0x08, 0x4B, + 0x1B, 0x68, 0xD9, 0x6A, 0x05, 0x20, 0xD7, 0xF7, 0x5B, 0xFF, 0x10, 0xBD, + 0x05, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0xF7, 0xE7, 0xC0, 0x46, 0x85, 0xC0, 0x0A, 0x00, 0x18, 0x27, 0x16, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x04, 0x4B, 0x98, 0x47, 0x04, 0x4B, + 0x1B, 0x68, 0x59, 0x6B, 0x06, 0x20, 0xD7, 0xF7, 0x43, 0xFF, 0x10, 0xBD, + 0xA5, 0xD7, 0x0A, 0x00, 0x24, 0x27, 0x16, 0x00, 0x30, 0xB5, 0x89, 0xB0, + 0x04, 0x1E, 0x5A, 0xD0, 0x9F, 0x23, 0xC3, 0x5C, 0x01, 0x2B, 0x04, 0xD0, + 0xA0, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x09, 0xB0, 0x30, 0xBD, 0x9D, 0x33, + 0xC5, 0x5C, 0x2B, 0x4B, 0x00, 0x93, 0x43, 0x68, 0x01, 0x93, 0x83, 0x68, + 0x02, 0x93, 0x6B, 0x46, 0x1D, 0x76, 0x04, 0x95, 0x27, 0x4B, 0x03, 0x93, + 0x83, 0x7D, 0x6A, 0x46, 0x13, 0x75, 0x01, 0x33, 0x53, 0x75, 0x00, 0x23, + 0x93, 0x75, 0xB0, 0x22, 0x82, 0x5C, 0x69, 0x46, 0xCA, 0x75, 0x8B, 0x76, + 0xCB, 0x76, 0x01, 0x33, 0x4B, 0x76, 0x68, 0x46, 0xD7, 0xF7, 0x1A, 0xF8, + 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0x9F, 0x23, 0xE3, 0x5C, + 0x01, 0x2B, 0xD3, 0xD1, 0x23, 0x6D, 0x01, 0x33, 0x5B, 0x08, 0xA2, 0x6F, + 0x91, 0xB2, 0x62, 0x22, 0x55, 0x43, 0x17, 0x4A, 0xAA, 0x18, 0x11, 0x80, + 0xA2, 0x6F, 0x12, 0x0C, 0x15, 0x49, 0x69, 0x18, 0x0A, 0x80, 0x15, 0x4A, + 0x94, 0x46, 0x65, 0x44, 0x01, 0x33, 0x5B, 0x08, 0x13, 0x4A, 0x13, 0x43, + 0x9B, 0xB2, 0x2B, 0x80, 0x9F, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0xB7, 0xD1, + 0xA5, 0x33, 0xE2, 0x5C, 0x01, 0x32, 0xA3, 0x3B, 0x13, 0x40, 0x9E, 0x22, + 0xA1, 0x5C, 0x9C, 0x3A, 0x0C, 0x48, 0xD7, 0xF7, 0x3D, 0xF9, 0xAA, 0x23, + 0x01, 0x22, 0xE2, 0x54, 0xA8, 0xE7, 0x0A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xA4, 0xE7, 0x39, 0xCB, 0x10, 0x00, + 0xDE, 0x05, 0x00, 0x00, 0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, + 0x10, 0x65, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, 0x7D, 0x03, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x00, 0x09, 0x01, 0x4B, 0x18, 0x56, 0x70, 0x47, + 0x28, 0xE0, 0x10, 0x00, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, + 0xC0, 0xB5, 0x8A, 0x46, 0x5B, 0x49, 0x09, 0x78, 0x06, 0x29, 0x23, 0xD0, + 0x5A, 0x49, 0x0C, 0x78, 0x01, 0x2C, 0x07, 0xD0, 0x20, 0x21, 0x55, 0x46, + 0x69, 0x5C, 0x1E, 0x29, 0x08, 0xD8, 0x56, 0x49, 0x01, 0x25, 0x0D, 0x70, + 0x20, 0x21, 0x55, 0x46, 0x69, 0x5C, 0x1F, 0x29, 0x00, 0xD9, 0x9B, 0xE0, + 0x52, 0x4F, 0xE6, 0x25, 0x6D, 0x00, 0x00, 0x21, 0x79, 0x51, 0x51, 0x46, + 0x50, 0x4E, 0xB0, 0x47, 0x50, 0x4B, 0x7B, 0x51, 0x4C, 0x4B, 0x1C, 0x70, + 0x00, 0x20, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, + 0x00, 0x21, 0xE5, 0x20, 0x81, 0xF7, 0xC8, 0xFD, 0x80, 0x46, 0x00, 0x28, + 0x14, 0xD0, 0x20, 0x23, 0x52, 0x46, 0xD7, 0x5C, 0x04, 0x33, 0xD1, 0x5C, + 0x53, 0x8C, 0xC9, 0x18, 0x89, 0xB2, 0x45, 0x4B, 0x9C, 0x46, 0x61, 0x44, + 0x3A, 0x00, 0x40, 0x46, 0xD8, 0xF7, 0xDC, 0xFB, 0x00, 0x2F, 0x64, 0xD0, + 0x45, 0x46, 0x41, 0x4B, 0x99, 0x46, 0x14, 0xE0, 0x3B, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xE3, 0xE7, 0x05, 0x2C, + 0x27, 0xD0, 0x4B, 0x46, 0x1A, 0x88, 0x3B, 0x4B, 0x9A, 0x42, 0x36, 0xD0, + 0xE2, 0x43, 0xBF, 0x18, 0xFF, 0xB2, 0x01, 0x34, 0x2D, 0x19, 0x00, 0x2F, + 0x4B, 0xD0, 0x2C, 0x78, 0x6E, 0x78, 0x16, 0x2E, 0xED, 0xD0, 0xFF, 0x2E, + 0xED, 0xD1, 0x0D, 0x2C, 0xEB, 0xD1, 0xAB, 0x78, 0x5D, 0x2B, 0xE8, 0xD1, + 0xEB, 0x78, 0x00, 0x2B, 0xE5, 0xD1, 0x2B, 0x79, 0x03, 0x2B, 0xE2, 0xD1, + 0x6B, 0x79, 0x00, 0x2B, 0xDF, 0xD1, 0x2D, 0x48, 0x83, 0xF7, 0xB6, 0xFD, + 0x2C, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0xD7, 0xE7, 0xAB, 0x78, + 0x01, 0x2B, 0xD4, 0xD1, 0xEB, 0x78, 0xFD, 0x2B, 0xD1, 0xD1, 0x2B, 0x79, + 0x00, 0x2B, 0xCE, 0xD1, 0x6B, 0x79, 0x01, 0x2B, 0xCB, 0xD1, 0x25, 0x48, + 0x83, 0xF7, 0xA2, 0xFD, 0x22, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, + 0xC3, 0xE7, 0x1D, 0x4B, 0x5B, 0x88, 0xB3, 0x42, 0xC4, 0xD1, 0x1B, 0x4B, + 0x9B, 0x68, 0x00, 0x2B, 0x0C, 0xD0, 0x19, 0x4B, 0x9A, 0x79, 0xA9, 0x1C, + 0x98, 0x68, 0xD8, 0xF7, 0x5F, 0xFB, 0x00, 0x28, 0xB8, 0xD1, 0x18, 0x4B, + 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0xB3, 0xE7, 0x0E, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEB, 0xE7, 0x20, 0x23, + 0x52, 0x46, 0xD3, 0x5C, 0x00, 0x2B, 0x03, 0xD1, 0x40, 0x46, 0x81, 0xF7, + 0xEB, 0xFD, 0x73, 0xE7, 0x50, 0x8C, 0xBA, 0xF7, 0xAD, 0xFD, 0xF7, 0xE7, + 0x53, 0x46, 0x58, 0x8C, 0xBA, 0xF7, 0xA8, 0xFD, 0x6A, 0xE7, 0xC0, 0x46, + 0xD0, 0xE5, 0x10, 0x00, 0x59, 0xA9, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x45, 0xF8, 0x0B, 0x00, 0x99, 0x05, 0x10, 0x00, 0x00, 0x00, 0x61, 0x40, + 0xC4, 0xE5, 0x10, 0x00, 0x88, 0xAC, 0x00, 0x00, 0x10, 0xCE, 0x10, 0x00, + 0x00, 0x41, 0x04, 0x40, 0x00, 0xCE, 0x10, 0x00, 0x70, 0xB5, 0x0C, 0x00, + 0x07, 0x4E, 0x8A, 0x25, 0x6D, 0x00, 0x00, 0x21, 0x71, 0x51, 0x21, 0x00, + 0xB3, 0xF7, 0xF0, 0xFC, 0xA4, 0x00, 0x04, 0x4B, 0xE3, 0x58, 0x04, 0x4A, + 0xDA, 0x61, 0x04, 0x4B, 0x73, 0x51, 0x70, 0xBD, 0x28, 0x19, 0x16, 0x00, + 0x54, 0x27, 0x16, 0x00, 0x21, 0x61, 0x10, 0x00, 0x41, 0x07, 0x10, 0x00, + 0x10, 0xB5, 0xD2, 0x23, 0x5B, 0x00, 0x1B, 0x68, 0x98, 0x47, 0x10, 0xBD, + 0xF0, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0xE3, 0xB0, 0x01, 0xAC, + 0xC2, 0x25, 0x6D, 0x00, 0x2A, 0x00, 0x00, 0x21, 0x20, 0x00, 0x7F, 0xF7, + 0xAB, 0xFC, 0x7A, 0x4E, 0x2A, 0x00, 0x00, 0x21, 0x30, 0x68, 0x7F, 0xF7, + 0xA5, 0xFC, 0x31, 0x68, 0x2A, 0x00, 0x01, 0xA8, 0xD8, 0xF7, 0x14, 0xFB, + 0x75, 0x48, 0x83, 0xF7, 0x1D, 0xFD, 0x50, 0x22, 0x00, 0x21, 0x4E, 0xA8, + 0x7F, 0xF7, 0x98, 0xFC, 0x00, 0x26, 0x9A, 0x23, 0x5B, 0x00, 0xE6, 0x54, + 0x4E, 0xA9, 0x00, 0x20, 0x8B, 0xF7, 0x3A, 0xF8, 0x86, 0x3D, 0xC0, 0x23, + 0x5B, 0x00, 0xE5, 0x54, 0x80, 0x3B, 0xFF, 0x3B, 0x98, 0x46, 0x82, 0x33, + 0xFF, 0x33, 0x42, 0x46, 0xE2, 0x54, 0x03, 0x27, 0x82, 0x23, 0xFF, 0x33, + 0xE7, 0x54, 0x0D, 0x3B, 0xE7, 0x54, 0x36, 0x23, 0xFF, 0x33, 0x99, 0x46, + 0xE6, 0x54, 0x4E, 0xA9, 0x00, 0x20, 0x87, 0xF7, 0x6B, 0xFE, 0x4B, 0x46, + 0xE0, 0x5C, 0x4E, 0xA9, 0x8B, 0xF7, 0x6A, 0xF8, 0x50, 0x22, 0x00, 0x21, + 0x3A, 0xA8, 0x7F, 0xF7, 0x6D, 0xFC, 0xE4, 0x23, 0xE6, 0x54, 0x3A, 0xA9, + 0x00, 0x20, 0x8B, 0xF7, 0x11, 0xF8, 0x32, 0x23, 0xFF, 0x33, 0xE5, 0x54, + 0x30, 0x3B, 0xFF, 0x3B, 0x99, 0x22, 0x52, 0x00, 0xA3, 0x54, 0x02, 0x3A, + 0xA3, 0x54, 0x0C, 0x3A, 0xA3, 0x54, 0x19, 0x3D, 0x43, 0x46, 0x63, 0x55, + 0x3A, 0xA9, 0x01, 0x20, 0x87, 0xF7, 0x48, 0xFE, 0x60, 0x5D, 0x3A, 0xA9, + 0x8B, 0xF7, 0x48, 0xF8, 0x4E, 0x4B, 0x1E, 0x60, 0x4E, 0x4D, 0x2E, 0x60, + 0x4E, 0x4B, 0x42, 0x46, 0x1A, 0x60, 0x4E, 0x49, 0x0B, 0x68, 0x4E, 0x4A, + 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x4C, 0x4C, + 0x27, 0x60, 0x4C, 0x4B, 0x19, 0x68, 0x4C, 0x48, 0xD7, 0xF7, 0x60, 0xFE, + 0x0F, 0x23, 0x03, 0x40, 0x22, 0x68, 0x80, 0x21, 0x8A, 0x43, 0x0A, 0x43, + 0x22, 0x60, 0x06, 0x09, 0xFF, 0x22, 0x16, 0x40, 0x46, 0x4F, 0x3E, 0x60, + 0x00, 0x0B, 0x10, 0x40, 0x28, 0x60, 0x5A, 0x08, 0x9B, 0x1A, 0x1B, 0x01, + 0x9B, 0x18, 0x43, 0x4A, 0x13, 0x60, 0x23, 0x68, 0x8B, 0x43, 0x23, 0x60, + 0x41, 0x4B, 0x1B, 0x6F, 0x1B, 0x07, 0x06, 0xD1, 0x3F, 0x4A, 0x13, 0x6F, + 0x71, 0x39, 0x8B, 0x43, 0x0D, 0x39, 0x0B, 0x43, 0x13, 0x67, 0x3C, 0x4B, + 0x5B, 0x6F, 0x1B, 0x07, 0x06, 0xD1, 0x3A, 0x4A, 0x53, 0x6F, 0x0F, 0x21, + 0x8B, 0x43, 0x0D, 0x39, 0x0B, 0x43, 0x53, 0x67, 0x36, 0x4B, 0x9B, 0x6F, + 0x1B, 0x07, 0x06, 0xD1, 0x34, 0x4A, 0x93, 0x6F, 0x0F, 0x21, 0x8B, 0x43, + 0x0D, 0x39, 0x0B, 0x43, 0x93, 0x67, 0x31, 0x4B, 0xDB, 0x6F, 0x1B, 0x07, + 0x06, 0xD1, 0x2F, 0x4A, 0xD3, 0x6F, 0x0F, 0x21, 0x8B, 0x43, 0x0D, 0x39, + 0x0B, 0x43, 0xD3, 0x67, 0x2B, 0x4B, 0x19, 0x69, 0x0F, 0x24, 0xA1, 0x43, + 0x03, 0x20, 0x01, 0x43, 0x19, 0x61, 0x59, 0x69, 0xA1, 0x43, 0x01, 0x43, + 0x59, 0x61, 0x99, 0x69, 0xA1, 0x43, 0x01, 0x43, 0x99, 0x61, 0xDA, 0x69, + 0xA2, 0x43, 0x02, 0x43, 0xDA, 0x61, 0x18, 0x4B, 0x07, 0x22, 0x1A, 0x60, + 0x01, 0xAA, 0x00, 0x23, 0x20, 0x21, 0x53, 0x54, 0x06, 0x93, 0x05, 0x93, + 0x02, 0x93, 0x01, 0x93, 0x15, 0x4A, 0x13, 0x68, 0x1E, 0x39, 0x0B, 0x43, + 0x13, 0x60, 0x1B, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x03, 0xD0, 0x13, 0x68, + 0x1E, 0x31, 0x0B, 0x43, 0x13, 0x60, 0x18, 0x4B, 0x9A, 0x68, 0x84, 0x23, + 0x17, 0x49, 0xD1, 0x50, 0x17, 0x4B, 0x80, 0x22, 0x92, 0x01, 0x1A, 0x60, + 0xC2, 0x22, 0x05, 0x4B, 0x18, 0x68, 0x52, 0x00, 0x01, 0xA9, 0xD8, 0xF7, + 0x2F, 0xFA, 0x63, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF0, 0xBD, + 0xFC, 0xE1, 0x10, 0x00, 0x20, 0xCE, 0x10, 0x00, 0x08, 0x20, 0x04, 0x40, + 0x04, 0x20, 0x04, 0x40, 0x24, 0x20, 0x04, 0x40, 0x10, 0x20, 0x04, 0x40, + 0xFF, 0xFE, 0xFF, 0xFF, 0x0C, 0x20, 0x04, 0x40, 0xB8, 0xE5, 0x10, 0x00, + 0x00, 0x75, 0x19, 0x03, 0x00, 0x20, 0x04, 0x40, 0x28, 0x20, 0x04, 0x40, + 0x00, 0x30, 0x50, 0x40, 0xBC, 0xE5, 0x10, 0x00, 0x00, 0xED, 0x00, 0xE0, + 0xC5, 0x88, 0x08, 0x00, 0x00, 0xE1, 0x00, 0xE0, 0x70, 0x47, 0x70, 0x47, + 0x3D, 0x4B, 0x3E, 0x4A, 0x1A, 0x60, 0x3E, 0x4B, 0x8D, 0x22, 0x12, 0x03, + 0x1A, 0x60, 0x3D, 0x4B, 0x3D, 0x4A, 0x1A, 0x60, 0x3D, 0x4B, 0x3E, 0x4A, + 0x1A, 0x60, 0x3E, 0x4B, 0x3E, 0x4A, 0x1A, 0x60, 0x3E, 0x4B, 0x3F, 0x4A, + 0x1A, 0x60, 0x3F, 0x4B, 0x3F, 0x4A, 0x1A, 0x60, 0x3F, 0x4B, 0x40, 0x4A, + 0x1A, 0x60, 0x40, 0x4B, 0x40, 0x4A, 0x1A, 0x60, 0x40, 0x4B, 0x41, 0x4A, + 0x1A, 0x60, 0x41, 0x4B, 0x41, 0x4A, 0x1A, 0x60, 0x41, 0x4B, 0x42, 0x4A, + 0x1A, 0x60, 0x42, 0x4B, 0x42, 0x4A, 0x1A, 0x60, 0x42, 0x4B, 0x43, 0x4A, + 0x1A, 0x60, 0x43, 0x4B, 0x43, 0x4A, 0x1A, 0x60, 0x43, 0x4B, 0x44, 0x4A, + 0x1A, 0x60, 0x44, 0x4B, 0x44, 0x4A, 0x1A, 0x60, 0x44, 0x4B, 0x45, 0x4A, + 0x1A, 0x60, 0x45, 0x4B, 0x45, 0x4A, 0x1A, 0x60, 0x45, 0x4B, 0x46, 0x4A, + 0x1A, 0x60, 0x46, 0x4B, 0x46, 0x4A, 0x1A, 0x60, 0x46, 0x4B, 0x88, 0x22, + 0x52, 0x01, 0x1A, 0x60, 0x45, 0x4B, 0x46, 0x4A, 0x1A, 0x60, 0x46, 0x4B, + 0x46, 0x4A, 0x13, 0x60, 0x46, 0x4A, 0x47, 0x49, 0x11, 0x60, 0x47, 0x4A, + 0x13, 0x60, 0x47, 0x4A, 0x13, 0x60, 0x47, 0x4A, 0x13, 0x60, 0x47, 0x4B, + 0x47, 0x4A, 0x1A, 0x60, 0x47, 0x4B, 0x48, 0x4A, 0x1A, 0x60, 0x48, 0x4B, + 0x48, 0x4A, 0x1A, 0x60, 0x48, 0x4B, 0x49, 0x4A, 0x1A, 0x60, 0x49, 0x4B, + 0x49, 0x4A, 0x1A, 0x60, 0x49, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, + 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0xFF, 0x22, 0x12, 0x02, 0x1A, 0x60, + 0x49, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, 0x4A, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, + 0x4A, 0x4B, 0x74, 0x22, 0x1A, 0x60, 0x4A, 0x4B, 0x4A, 0x4A, 0x1A, 0x60, + 0x4A, 0x4B, 0x4B, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0x04, 0x01, 0x58, 0x40, + 0xFB, 0x33, 0x09, 0x00, 0x1C, 0x20, 0x62, 0x40, 0x28, 0x20, 0x62, 0x40, + 0x20, 0x20, 0x91, 0x48, 0x14, 0x20, 0x62, 0x40, 0x83, 0x89, 0x01, 0x00, + 0x54, 0x20, 0x62, 0x40, 0x34, 0x8F, 0x00, 0x00, 0x48, 0x07, 0x62, 0x40, + 0xA0, 0x01, 0x1A, 0x02, 0x28, 0x07, 0x62, 0x40, 0x20, 0x00, 0x01, 0x00, + 0x38, 0x07, 0x62, 0x40, 0xD4, 0x0F, 0x80, 0x04, 0x3C, 0x07, 0x62, 0x40, + 0x64, 0x00, 0xC8, 0x00, 0x2C, 0x20, 0x62, 0x40, 0x20, 0xB2, 0x0C, 0x00, + 0x0C, 0x20, 0x62, 0x40, 0x45, 0x2B, 0xAD, 0xE9, 0x30, 0x20, 0x62, 0x40, + 0xD2, 0x30, 0x0C, 0x14, 0x34, 0x20, 0x62, 0x40, 0x02, 0x16, 0x00, 0x00, + 0x54, 0x07, 0x62, 0x40, 0xFD, 0x20, 0x42, 0x21, 0x58, 0x07, 0x62, 0x40, + 0x1E, 0xF0, 0x07, 0x00, 0x1C, 0x07, 0x62, 0x40, 0x33, 0x0A, 0x00, 0x00, + 0x18, 0x20, 0x62, 0x40, 0x24, 0x41, 0x12, 0x00, 0x0C, 0x00, 0x62, 0x40, + 0x00, 0x00, 0x04, 0x04, 0x90, 0x00, 0x62, 0x40, 0x82, 0x90, 0x06, 0x00, + 0x34, 0x10, 0x62, 0x40, 0x80, 0x30, 0x00, 0x02, 0x14, 0x10, 0x62, 0x40, + 0x7A, 0x11, 0x45, 0x04, 0x24, 0x20, 0x62, 0x40, 0x04, 0x20, 0x62, 0x40, + 0xC0, 0xA9, 0x01, 0x00, 0x34, 0x08, 0x50, 0x00, 0x8C, 0x04, 0x60, 0x40, + 0x10, 0x01, 0x60, 0x40, 0x58, 0x00, 0x7E, 0x02, 0x80, 0x08, 0x60, 0x40, + 0x84, 0x08, 0x60, 0x40, 0x88, 0x08, 0x60, 0x40, 0x8C, 0x08, 0x60, 0x40, + 0x34, 0x08, 0x00, 0x00, 0x18, 0x05, 0x62, 0x40, 0x0A, 0x88, 0x92, 0x36, + 0x14, 0x05, 0x62, 0x40, 0x10, 0x1A, 0x0C, 0xA8, 0x2C, 0x05, 0x62, 0x40, + 0x03, 0x14, 0x0C, 0x9C, 0x0C, 0x05, 0x62, 0x40, 0x13, 0x20, 0x20, 0x20, + 0xA0, 0x05, 0x62, 0x40, 0x00, 0x0C, 0x15, 0x14, 0xA4, 0x05, 0x62, 0x40, + 0x24, 0x36, 0x2D, 0x36, 0xF0, 0x05, 0x62, 0x40, 0x08, 0x05, 0x62, 0x40, + 0x32, 0x31, 0x55, 0x54, 0x30, 0x05, 0x62, 0x40, 0x00, 0x12, 0x17, 0x13, + 0x34, 0x05, 0x62, 0x40, 0xB0, 0x05, 0x62, 0x40, 0x55, 0x53, 0x00, 0x00, + 0x1C, 0x05, 0x62, 0x40, 0x66, 0x57, 0x4B, 0x96, 0x2A, 0x49, 0x0B, 0x68, + 0x2A, 0x4A, 0x1A, 0x40, 0xFC, 0x23, 0x9B, 0x05, 0x13, 0x43, 0x0B, 0x60, + 0x28, 0x4B, 0x29, 0x4A, 0x1A, 0x60, 0x29, 0x4B, 0x29, 0x4A, 0x1A, 0x60, + 0x29, 0x4B, 0x2A, 0x4A, 0x1A, 0x60, 0x2A, 0x4B, 0x2A, 0x4A, 0x1A, 0x60, + 0x2A, 0x4B, 0x2B, 0x4A, 0x1A, 0x60, 0x2B, 0x4B, 0x2B, 0x4A, 0x1A, 0x60, + 0x2B, 0x4B, 0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4A, 0x2C, 0x49, 0x11, 0x60, + 0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4A, 0x13, 0x60, 0x2C, 0x4A, 0x13, 0x60, + 0x2C, 0x4B, 0x2D, 0x4A, 0x1A, 0x60, 0x2D, 0x4B, 0x2D, 0x4A, 0x1A, 0x60, + 0x2D, 0x4B, 0x2E, 0x4A, 0x1A, 0x60, 0x2E, 0x4B, 0x2E, 0x4A, 0x1A, 0x60, + 0x2E, 0x4B, 0x2F, 0x4A, 0x1A, 0x60, 0x2F, 0x4B, 0x2F, 0x4A, 0x1A, 0x60, + 0x2F, 0x4B, 0x30, 0x4A, 0x1A, 0x60, 0x30, 0x4B, 0x30, 0x4A, 0x1A, 0x60, + 0x30, 0x4B, 0xFF, 0x22, 0x12, 0x02, 0x1A, 0x60, 0x2F, 0x4B, 0x30, 0x4A, + 0x1A, 0x60, 0x30, 0x4B, 0x76, 0x22, 0x1A, 0x60, 0x2F, 0x4B, 0x30, 0x4A, + 0x1A, 0x60, 0x30, 0x4B, 0x30, 0x4A, 0x1A, 0x60, 0x30, 0x4B, 0x31, 0x4A, + 0x1A, 0x60, 0x31, 0x4B, 0x31, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, + 0x0C, 0x00, 0x58, 0x40, 0xFF, 0xFF, 0xFF, 0xC0, 0x04, 0x01, 0x58, 0x40, + 0xFB, 0x33, 0x09, 0x00, 0x20, 0x40, 0x34, 0x40, 0x77, 0x0B, 0x00, 0x00, + 0x24, 0x40, 0x34, 0x40, 0x94, 0xC5, 0x6E, 0x00, 0x28, 0x40, 0x34, 0x40, + 0x02, 0x94, 0x00, 0x00, 0x2C, 0x40, 0x34, 0x40, 0x84, 0x18, 0x20, 0x56, + 0x30, 0x40, 0x34, 0x40, 0x68, 0x51, 0x2E, 0x1A, 0x34, 0x08, 0x50, 0x00, + 0x8C, 0x04, 0x60, 0x40, 0x10, 0x01, 0x60, 0x40, 0x58, 0x00, 0x7E, 0x02, + 0x80, 0x08, 0x60, 0x40, 0x84, 0x08, 0x60, 0x40, 0x88, 0x08, 0x60, 0x40, + 0x8C, 0x08, 0x60, 0x40, 0x34, 0x08, 0x00, 0x00, 0x18, 0x05, 0x62, 0x40, + 0x0A, 0x88, 0x92, 0x36, 0x14, 0x05, 0x62, 0x40, 0x10, 0x1A, 0x0C, 0xA8, + 0x2C, 0x05, 0x62, 0x40, 0x03, 0x14, 0x0C, 0x9C, 0x0C, 0x05, 0x62, 0x40, + 0x13, 0x20, 0x20, 0x20, 0x08, 0x05, 0x62, 0x40, 0x32, 0x31, 0x55, 0x54, + 0xA0, 0x05, 0x62, 0x40, 0x00, 0x16, 0x17, 0x0F, 0xA4, 0x05, 0x62, 0x40, + 0x36, 0x36, 0x28, 0x36, 0xF0, 0x05, 0x62, 0x40, 0x30, 0x05, 0x62, 0x40, + 0x00, 0x1A, 0x17, 0x13, 0x34, 0x05, 0x62, 0x40, 0xB0, 0x05, 0x62, 0x40, + 0x55, 0x53, 0x00, 0x00, 0x1C, 0x05, 0x62, 0x40, 0x66, 0x57, 0x4B, 0x96, + 0x90, 0x00, 0x62, 0x40, 0x32, 0x00, 0x05, 0x00, 0x10, 0x10, 0x62, 0x40, + 0x43, 0x01, 0x00, 0x12, 0x10, 0xB5, 0x01, 0x28, 0x03, 0xD0, 0x02, 0x38, + 0x01, 0x28, 0x05, 0xD9, 0x10, 0xBD, 0x87, 0xF7, 0x99, 0xFF, 0xFF, 0xF7, + 0x2B, 0xFE, 0xF9, 0xE7, 0x88, 0xF7, 0x96, 0xF8, 0x0A, 0x4A, 0x11, 0x68, + 0x80, 0x23, 0xDB, 0x05, 0x0B, 0x43, 0x13, 0x60, 0xFF, 0xF7, 0x32, 0xFF, + 0x07, 0x4B, 0x1B, 0x68, 0x9B, 0x02, 0xEB, 0xD4, 0x05, 0x49, 0x0B, 0x68, + 0x05, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x04, 0x13, 0x43, 0x0B, 0x60, + 0xE2, 0xE7, 0xC0, 0x46, 0x1C, 0x20, 0x34, 0x40, 0x58, 0x40, 0x34, 0x40, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x01, 0x90, 0x0D, 0x00, 0x00, 0x24, + 0x25, 0x4A, 0x26, 0x4B, 0x9B, 0x46, 0xE0, 0x23, 0xDB, 0x04, 0x9A, 0x46, + 0xC0, 0x23, 0x9B, 0x05, 0x99, 0x46, 0x23, 0x4B, 0x98, 0x46, 0x23, 0x4B, + 0x00, 0x93, 0x23, 0x4F, 0x23, 0x4E, 0x13, 0x68, 0x58, 0x46, 0x03, 0x40, + 0x50, 0x46, 0x20, 0x40, 0x03, 0x43, 0x13, 0x60, 0x13, 0x68, 0x48, 0x46, + 0x03, 0x43, 0x13, 0x60, 0x43, 0x46, 0x1B, 0x68, 0x00, 0x98, 0x00, 0x68, + 0x1B, 0x04, 0x3B, 0x40, 0x40, 0x04, 0x40, 0x0C, 0x03, 0x43, 0x08, 0xC5, + 0x13, 0x68, 0x33, 0x40, 0x13, 0x60, 0x80, 0x23, 0x5B, 0x04, 0x9C, 0x46, + 0x64, 0x44, 0x80, 0x23, 0xDB, 0x04, 0x9C, 0x42, 0xDF, 0xD1, 0x04, 0x20, + 0x01, 0x9B, 0x01, 0x2B, 0x06, 0xD0, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x0E, 0x4B, 0x1B, 0x68, + 0x0B, 0x61, 0x0E, 0x4B, 0x1B, 0x68, 0x4B, 0x61, 0x0D, 0x4B, 0x1B, 0x68, + 0x8B, 0x61, 0x0D, 0x4B, 0x1B, 0x68, 0xCB, 0x61, 0x0C, 0x4B, 0x1B, 0x68, + 0x0B, 0x62, 0x05, 0x30, 0xE7, 0xE7, 0xC0, 0x46, 0x28, 0x05, 0x62, 0x40, + 0xFF, 0xFF, 0xFF, 0xF8, 0x8C, 0x08, 0x62, 0x40, 0x90, 0x08, 0x62, 0x40, + 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xCF, 0x30, 0x07, 0x62, 0x40, + 0x34, 0x07, 0x62, 0x40, 0x5C, 0x07, 0x62, 0x40, 0x60, 0x07, 0x62, 0x40, + 0x20, 0x20, 0x62, 0x40, 0x12, 0x04, 0x12, 0x4B, 0x1A, 0x40, 0x49, 0x04, + 0x49, 0x0C, 0x0A, 0x43, 0x10, 0x4B, 0x1A, 0x60, 0x10, 0x4B, 0x1A, 0x68, + 0x00, 0x06, 0xE0, 0x21, 0xC9, 0x04, 0x08, 0x40, 0x0E, 0x49, 0x0A, 0x40, + 0x10, 0x43, 0x18, 0x60, 0x19, 0x68, 0x80, 0x22, 0x12, 0x06, 0x0A, 0x43, + 0x1A, 0x60, 0x19, 0x68, 0x80, 0x22, 0xD2, 0x05, 0x0A, 0x43, 0x1A, 0x60, + 0x1A, 0x68, 0x08, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x52, 0x00, + 0x52, 0x08, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x00, 0x00, 0xFF, 0x7F, + 0x44, 0x05, 0x62, 0x40, 0x28, 0x05, 0x62, 0x40, 0xFF, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xBF, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, + 0xC0, 0xB5, 0x82, 0xB0, 0x1C, 0x49, 0x0B, 0x68, 0x99, 0x46, 0x1C, 0x4A, + 0x1A, 0x40, 0x1C, 0x4B, 0x13, 0x43, 0x0B, 0x60, 0x1B, 0x4B, 0x1B, 0x68, + 0x98, 0x46, 0x1B, 0x4B, 0x1B, 0x68, 0x9A, 0x46, 0x00, 0x24, 0xF0, 0x23, + 0x47, 0x46, 0x9F, 0x43, 0x16, 0x4E, 0xE5, 0xB2, 0x00, 0x22, 0x00, 0x21, + 0x28, 0x00, 0xFF, 0xF7, 0xB1, 0xFF, 0x23, 0x01, 0x3B, 0x43, 0x33, 0x60, + 0x88, 0xF7, 0x3D, 0xF9, 0x69, 0x46, 0x01, 0xA8, 0x88, 0xF7, 0x4A, 0xF9, + 0x00, 0x9A, 0x01, 0x99, 0x28, 0x00, 0xFF, 0xF7, 0xA3, 0xFF, 0x01, 0x34, + 0x04, 0x2C, 0xE8, 0xD1, 0x07, 0x4B, 0x4A, 0x46, 0x1A, 0x60, 0x09, 0x4B, + 0x42, 0x46, 0x1A, 0x60, 0x08, 0x4B, 0x52, 0x46, 0x1A, 0x60, 0x02, 0xB0, + 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0xC0, 0x46, + 0x1C, 0x05, 0x62, 0x40, 0xFF, 0xFF, 0x8F, 0x7F, 0x0A, 0x00, 0x20, 0x00, + 0x08, 0x05, 0x62, 0x40, 0x04, 0x00, 0x62, 0x40, 0x70, 0xB5, 0x0C, 0x4D, + 0x2C, 0x68, 0x2A, 0x68, 0x0B, 0x4E, 0x32, 0x40, 0x80, 0x23, 0x5B, 0x00, + 0x13, 0x43, 0x2B, 0x60, 0x26, 0x20, 0x88, 0xF7, 0x3F, 0xFF, 0xFF, 0xF7, + 0xA7, 0xFF, 0x88, 0xF7, 0x81, 0xFF, 0x2B, 0x68, 0xE4, 0x05, 0xE4, 0x0F, + 0x24, 0x02, 0x33, 0x40, 0x1C, 0x43, 0x2C, 0x60, 0x70, 0xBD, 0xC0, 0x46, + 0x00, 0x04, 0x60, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, 0x10, 0xB5, 0x26, 0x20, + 0x88, 0xF7, 0x62, 0xF9, 0xFF, 0xF7, 0x92, 0xFF, 0x88, 0xF7, 0xBA, 0xF9, + 0x10, 0xBD, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x8B, 0xB0, 0x82, 0x46, 0x0C, 0x00, 0x03, 0x68, + 0x7F, 0x22, 0x1A, 0x40, 0x93, 0x46, 0x1E, 0x09, 0x0F, 0x25, 0x2E, 0x40, + 0x1D, 0x40, 0x01, 0x95, 0x0C, 0x22, 0x13, 0x42, 0x05, 0xD0, 0x35, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x01, 0x9B, + 0x9E, 0x42, 0x05, 0xD9, 0x30, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x2E, 0x4B, 0x98, 0x46, 0x1F, 0x68, 0x1A, 0x68, + 0x2D, 0x4B, 0x99, 0x46, 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, + 0x42, 0x46, 0x13, 0x60, 0x58, 0x46, 0x88, 0xF7, 0xF1, 0xFE, 0x53, 0x46, + 0x19, 0x68, 0x03, 0xA8, 0x89, 0xF7, 0x0E, 0xF9, 0x88, 0xF7, 0x30, 0xFF, + 0x43, 0x46, 0x1B, 0x68, 0xFF, 0x05, 0xFF, 0x0F, 0x3F, 0x02, 0x4A, 0x46, + 0x13, 0x40, 0x1F, 0x43, 0x43, 0x46, 0x1F, 0x60, 0x01, 0x9B, 0x9E, 0x42, + 0x30, 0xD8, 0x37, 0x00, 0x20, 0x36, 0x36, 0x01, 0x1D, 0x4B, 0xF6, 0x18, + 0x03, 0xA9, 0x1D, 0x4B, 0x98, 0x46, 0xF0, 0x23, 0x1B, 0x05, 0x9C, 0x46, + 0x23, 0x1D, 0x99, 0x46, 0x05, 0xE0, 0x01, 0x37, 0x10, 0x36, 0xFB, 0xB2, + 0x01, 0x9A, 0x9A, 0x42, 0x1C, 0xD3, 0x7B, 0x18, 0x1A, 0x7D, 0x12, 0x02, + 0xDB, 0x7B, 0x1A, 0x43, 0x43, 0x46, 0x1A, 0x43, 0x32, 0x60, 0x7B, 0x5C, + 0x18, 0x05, 0x65, 0x46, 0x28, 0x40, 0x1B, 0x07, 0x5B, 0x0F, 0x5B, 0x07, + 0x03, 0x43, 0x70, 0x68, 0x00, 0x02, 0x00, 0x0A, 0x03, 0x43, 0x73, 0x60, + 0x00, 0x2C, 0xE2, 0xD0, 0xFB, 0x00, 0xE2, 0x50, 0x4A, 0x46, 0x70, 0x68, + 0xD0, 0x50, 0xDC, 0xE7, 0x0B, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, + 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x28, 0x19, 0x16, 0x00, + 0x00, 0x04, 0x60, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, 0xD8, 0x99, 0x16, 0x00, + 0x00, 0x00, 0x80, 0x80, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x05, 0x00, 0x01, 0x91, 0x03, 0x68, + 0x5A, 0x02, 0x52, 0x0E, 0x90, 0x46, 0x1C, 0x09, 0x0F, 0x26, 0x34, 0x40, + 0x1E, 0x40, 0x0C, 0x22, 0x13, 0x42, 0x05, 0xD0, 0x38, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xB4, 0x42, 0x2F, 0xD9, + 0x34, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x40, 0x46, 0x88, 0xF7, 0xAD, 0xF8, 0x29, 0x68, 0x02, 0xA8, 0x88, 0xF7, + 0x09, 0xFB, 0x88, 0xF7, 0x03, 0xF9, 0x80, 0x22, 0x52, 0x00, 0x2D, 0x49, + 0x2D, 0x48, 0xD7, 0xF7, 0x49, 0xFE, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x01, 0x35, 0xEB, 0xB2, + 0x9E, 0x42, 0xEE, 0xD3, 0x2B, 0x01, 0xA8, 0x00, 0x63, 0x44, 0x1A, 0x68, + 0x22, 0x40, 0x02, 0xA9, 0x41, 0x58, 0x00, 0x91, 0xC9, 0x01, 0x0A, 0x43, + 0x1A, 0x60, 0x01, 0x9B, 0x00, 0x2B, 0xED, 0xD0, 0x1A, 0x50, 0xEB, 0xE7, + 0x40, 0x46, 0x88, 0xF7, 0x83, 0xF8, 0x29, 0x68, 0x02, 0xA8, 0x88, 0xF7, + 0xDF, 0xFA, 0x25, 0x00, 0xA2, 0x00, 0x02, 0xAB, 0x9C, 0x46, 0x62, 0x44, + 0xFC, 0x23, 0x1B, 0x01, 0x98, 0x46, 0xF8, 0x23, 0x5B, 0x02, 0x9C, 0x46, + 0x3F, 0x20, 0xF8, 0x23, 0x9B, 0x03, 0x9B, 0x46, 0x13, 0x68, 0x1F, 0x0A, + 0x41, 0x46, 0x0F, 0x40, 0xB9, 0x46, 0xD9, 0x00, 0x0F, 0x00, 0x61, 0x46, + 0x0F, 0x40, 0xBA, 0x46, 0x4F, 0x46, 0x51, 0x46, 0x0F, 0x43, 0xB9, 0x46, + 0x19, 0x0D, 0x0F, 0x00, 0x07, 0x40, 0xBA, 0x46, 0x4F, 0x46, 0x51, 0x46, + 0x0F, 0x43, 0x5B, 0x03, 0x59, 0x46, 0x0B, 0x40, 0x3B, 0x43, 0x08, 0xC2, + 0x01, 0x34, 0xE4, 0xB2, 0xA6, 0x42, 0xE1, 0xD2, 0x88, 0xF7, 0xAC, 0xF8, + 0x02, 0x4B, 0x9C, 0x46, 0x03, 0x4C, 0xB5, 0xE7, 0x28, 0x19, 0x16, 0x00, + 0xD8, 0x97, 0x16, 0x00, 0x00, 0x50, 0x1E, 0x00, 0x7F, 0x00, 0x00, 0xE0, + 0x70, 0xB5, 0x8E, 0xB0, 0x87, 0xF7, 0x76, 0xFF, 0x04, 0x00, 0x01, 0x28, + 0x05, 0xD0, 0x83, 0x1E, 0xDB, 0xB2, 0x01, 0x2B, 0x24, 0xD9, 0x0E, 0xB0, + 0x70, 0xBD, 0x1C, 0x4B, 0x00, 0x93, 0x1C, 0x4C, 0x25, 0x68, 0xF0, 0x23, + 0x2A, 0x00, 0x9A, 0x43, 0x13, 0x00, 0x70, 0x22, 0x13, 0x43, 0x23, 0x60, + 0x01, 0xA9, 0x68, 0x46, 0xFF, 0xF7, 0x56, 0xFF, 0x25, 0x60, 0x16, 0x4B, + 0x00, 0x93, 0x00, 0x21, 0x68, 0x46, 0x88, 0xF7, 0xE9, 0xFC, 0x00, 0x20, + 0x88, 0xF7, 0xD0, 0xFB, 0x05, 0xA9, 0x01, 0x20, 0xFF, 0xF7, 0xB0, 0xFD, + 0x01, 0x20, 0x89, 0xF7, 0x43, 0xFA, 0xFF, 0xF7, 0xAF, 0xFE, 0xDA, 0xE7, + 0x0A, 0x4B, 0x00, 0x93, 0x0A, 0x4D, 0x2E, 0x68, 0xF0, 0x23, 0x32, 0x00, + 0x9A, 0x43, 0x13, 0x00, 0x70, 0x22, 0x13, 0x43, 0x2B, 0x60, 0x01, 0xA9, + 0x68, 0x46, 0xFF, 0xF7, 0xA9, 0xFE, 0x2E, 0x60, 0x20, 0x00, 0x89, 0xF7, + 0x2D, 0xFA, 0xFF, 0xF7, 0x7B, 0xFE, 0xC4, 0xE7, 0x03, 0x42, 0x26, 0x00, + 0x08, 0x05, 0x62, 0x40, 0x0F, 0x30, 0x02, 0x00, 0x30, 0xB5, 0x83, 0xB0, + 0x41, 0x4B, 0x18, 0x78, 0x87, 0xF7, 0x12, 0xFF, 0x40, 0x4A, 0x80, 0x23, + 0x5B, 0x00, 0x06, 0x21, 0xD1, 0x50, 0x3F, 0x4B, 0x5A, 0x68, 0x3F, 0x49, + 0x0A, 0x40, 0x5A, 0x60, 0x59, 0x68, 0x80, 0x22, 0x92, 0x02, 0x0A, 0x43, + 0x5A, 0x60, 0x19, 0x00, 0x44, 0x22, 0x0B, 0x6B, 0x13, 0x40, 0x04, 0x2B, + 0xFB, 0xD1, 0x39, 0x4B, 0x18, 0x68, 0x39, 0x49, 0xD7, 0xF7, 0x32, 0xF9, + 0xA0, 0x23, 0x5B, 0x03, 0x03, 0x43, 0x37, 0x4A, 0x13, 0x60, 0x37, 0x49, + 0x08, 0x43, 0x10, 0x60, 0x13, 0x60, 0x30, 0x4B, 0x59, 0x68, 0x35, 0x4A, + 0x0A, 0x43, 0x5A, 0x60, 0x2C, 0x49, 0x9A, 0x22, 0x52, 0x00, 0x80, 0x20, + 0x40, 0x01, 0x88, 0x50, 0x1A, 0x68, 0x40, 0x20, 0x02, 0x43, 0x1A, 0x60, + 0x18, 0x68, 0x02, 0x24, 0x20, 0x43, 0x18, 0x60, 0x48, 0x6F, 0x01, 0x22, + 0x10, 0x43, 0x48, 0x67, 0x59, 0x6D, 0x2B, 0x4A, 0x11, 0x40, 0x59, 0x65, + 0x5A, 0x6D, 0x22, 0x43, 0x5A, 0x65, 0x5A, 0x6D, 0x28, 0x49, 0x0A, 0x40, + 0x5A, 0x65, 0x87, 0xF7, 0xE1, 0xFE, 0x04, 0x00, 0x80, 0x22, 0x52, 0x00, + 0x25, 0x49, 0x26, 0x48, 0xD7, 0xF7, 0x4C, 0xFD, 0x80, 0x22, 0x25, 0x49, + 0x25, 0x48, 0xD7, 0xF7, 0x47, 0xFD, 0x01, 0x2C, 0x05, 0xD1, 0x17, 0x4B, + 0xDB, 0x6D, 0x9B, 0x07, 0x0D, 0xD5, 0x03, 0xB0, 0x30, 0xBD, 0xC0, 0x22, + 0x92, 0x00, 0x20, 0x49, 0x20, 0x48, 0xD7, 0xF7, 0x39, 0xFD, 0x80, 0x22, + 0x1F, 0x49, 0x20, 0x48, 0xD7, 0xF7, 0x34, 0xFD, 0xED, 0xE7, 0x20, 0x00, + 0x87, 0xF7, 0xD2, 0xFE, 0x20, 0x00, 0xFF, 0xF7, 0xF1, 0xFC, 0x00, 0x23, + 0x01, 0x93, 0x00, 0x93, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0xFF, 0xF7, + 0x39, 0xFF, 0x05, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0xDF, 0xD1, 0x16, 0x4A, + 0x13, 0x68, 0x01, 0x21, 0x8B, 0x43, 0x13, 0x60, 0xD9, 0xE7, 0xC0, 0x46, + 0xB4, 0xE5, 0x10, 0x00, 0x00, 0x00, 0x50, 0x40, 0x00, 0x60, 0x50, 0x40, + 0xFF, 0xFF, 0xFB, 0xFF, 0xB0, 0x06, 0x16, 0x00, 0x40, 0x42, 0x0F, 0x00, + 0x08, 0x00, 0x58, 0x40, 0x00, 0x00, 0x14, 0x80, 0x02, 0x88, 0x01, 0x00, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x58, 0xE0, 0x10, 0x00, + 0xD8, 0x97, 0x16, 0x00, 0x58, 0xE1, 0x10, 0x00, 0xD8, 0x98, 0x16, 0x00, + 0x18, 0xE2, 0x10, 0x00, 0xD8, 0x99, 0x16, 0x00, 0x18, 0xE5, 0x10, 0x00, + 0x58, 0x99, 0x16, 0x00, 0x04, 0x30, 0x34, 0x40, 0x80, 0x00, 0x01, 0x4B, + 0xC0, 0x58, 0x70, 0x47, 0x38, 0x27, 0x16, 0x00, 0x80, 0x00, 0x01, 0x4B, + 0xC0, 0x58, 0x70, 0x47, 0x54, 0x27, 0x16, 0x00, 0x80, 0x00, 0x01, 0x4B, + 0x19, 0x50, 0x70, 0x47, 0x54, 0x27, 0x16, 0x00, 0x03, 0x23, 0x03, 0x40, + 0x8B, 0x42, 0x05, 0xD8, 0x03, 0x23, 0x98, 0x43, 0x40, 0x18, 0x00, 0x01, + 0x00, 0x09, 0x70, 0x47, 0x03, 0x30, 0x03, 0x23, 0x98, 0x43, 0x40, 0x18, + 0xF7, 0xE7, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x05, 0x00, + 0x0F, 0x00, 0x14, 0x00, 0x06, 0xAB, 0x04, 0xCB, 0x90, 0x46, 0x1A, 0x78, + 0x1B, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x01, 0xD0, 0x00, 0x2A, 0x06, 0xD0, + 0x18, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x00, 0x21, 0x99, 0x70, 0xD9, 0x70, + 0x5A, 0x70, 0xAB, 0x68, 0x2A, 0x69, 0x94, 0x46, 0x63, 0x44, 0x18, 0x00, + 0x13, 0x49, 0xD7, 0xF7, 0x63, 0xF8, 0x06, 0x00, 0x10, 0x4B, 0x5D, 0x60, + 0x9F, 0x60, 0xDC, 0x60, 0x18, 0x61, 0x00, 0x2C, 0x05, 0xD1, 0x0F, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0A, 0x4D, + 0x21, 0x00, 0x38, 0x00, 0xD7, 0xF7, 0xD6, 0xF8, 0x29, 0x77, 0x43, 0x46, + 0x6B, 0x61, 0xA4, 0x1B, 0x62, 0x01, 0x12, 0x1B, 0x92, 0x00, 0x12, 0x19, + 0x90, 0x00, 0x12, 0x18, 0x78, 0x3A, 0xAA, 0x61, 0x04, 0xBC, 0x90, 0x46, + 0xF0, 0xBD, 0xC0, 0x46, 0x74, 0xE6, 0x10, 0x00, 0x71, 0x02, 0x00, 0x00, + 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x4F, 0x46, 0x46, 0x46, + 0xC0, 0xB5, 0x82, 0xB0, 0x80, 0x46, 0x00, 0x91, 0x01, 0x92, 0x99, 0x46, + 0x40, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x05, 0xD0, 0x02, 0xB0, 0x1C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA3, 0x46, 0xF0, 0xBD, 0x3C, 0x4B, 0x1E, 0x68, + 0xB4, 0x68, 0x00, 0x2C, 0xF4, 0xD0, 0x00, 0x25, 0x1F, 0x23, 0x9B, 0x46, + 0x01, 0x27, 0x03, 0xE0, 0x3B, 0x00, 0x83, 0x40, 0x9C, 0x43, 0x0D, 0xD0, + 0x20, 0x00, 0xD7, 0xF7, 0x8B, 0xF9, 0x5B, 0x46, 0x18, 0x1A, 0x43, 0x1C, + 0xDB, 0x00, 0xF3, 0x18, 0x5B, 0x68, 0x00, 0x2B, 0xF0, 0xD0, 0x01, 0x35, + 0xED, 0xB2, 0xED, 0xE7, 0x01, 0x2D, 0xDB, 0xD1, 0x2C, 0x4B, 0x5C, 0x68, + 0xA3, 0x68, 0x22, 0x69, 0x94, 0x46, 0x63, 0x44, 0x1E, 0x00, 0x2B, 0x49, + 0x18, 0x00, 0xD6, 0xF7, 0xFD, 0xFF, 0x05, 0x00, 0x64, 0x68, 0x04, 0x19, + 0x27, 0x49, 0x30, 0x00, 0xD7, 0xF7, 0x7C, 0xF8, 0x4B, 0x46, 0x9B, 0x68, + 0x9C, 0x46, 0x8C, 0x45, 0x89, 0x41, 0x49, 0x42, 0x64, 0x18, 0x4B, 0x46, + 0x99, 0x8A, 0x89, 0x04, 0x49, 0x0F, 0x04, 0x29, 0x03, 0xD0, 0x20, 0x00, + 0xFF, 0xF7, 0x54, 0xFF, 0x04, 0x00, 0x43, 0x46, 0x1B, 0x68, 0xE1, 0x1A, + 0x0A, 0x01, 0x12, 0x09, 0x80, 0x20, 0x00, 0x05, 0x82, 0x42, 0x11, 0xD8, + 0x09, 0x01, 0x0F, 0xD0, 0x15, 0x4A, 0xD1, 0x68, 0xCB, 0x18, 0xE2, 0x1A, + 0x12, 0x01, 0x12, 0x09, 0x82, 0x42, 0x07, 0xD8, 0x1B, 0x01, 0x1B, 0x09, + 0xE3, 0x1A, 0x1B, 0x01, 0x02, 0xD0, 0x64, 0x1A, 0x24, 0x01, 0x24, 0x09, + 0x43, 0x46, 0x1C, 0x60, 0x0C, 0x4B, 0xDA, 0x68, 0x55, 0x1B, 0x68, 0x01, + 0x40, 0x1B, 0x80, 0x00, 0x40, 0x19, 0x82, 0x00, 0x80, 0x18, 0x0B, 0x4A, + 0x94, 0x46, 0x60, 0x44, 0x00, 0x9A, 0x10, 0x60, 0xD8, 0x68, 0x60, 0x28, + 0x02, 0xD8, 0x01, 0x9B, 0x18, 0x60, 0x87, 0xE7, 0x24, 0x21, 0xD6, 0xF7, + 0xB1, 0xFF, 0x01, 0x9B, 0x18, 0x60, 0x81, 0xE7, 0x74, 0xE6, 0x10, 0x00, + 0xF4, 0xE1, 0x10, 0x00, 0x71, 0x02, 0x00, 0x00, 0x1E, 0xFB, 0xFF, 0xFF, + 0x03, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x02, 0xD0, 0x01, 0x4B, 0x00, 0x22, + 0x1A, 0x70, 0x70, 0x47, 0x74, 0xE6, 0x10, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x06, 0x00, + 0x01, 0x92, 0x38, 0x4B, 0x38, 0x4A, 0x13, 0x60, 0x9C, 0x68, 0x00, 0x2C, + 0x08, 0xD0, 0x43, 0x68, 0x9B, 0x46, 0x36, 0x4B, 0x99, 0x46, 0x36, 0x4B, + 0x98, 0x46, 0x33, 0x4B, 0x9A, 0x46, 0x0F, 0xE0, 0xD5, 0xF7, 0x8C, 0xF9, + 0x04, 0x1E, 0x5B, 0xD0, 0x73, 0x68, 0x9B, 0x46, 0xF1, 0xE7, 0x75, 0x60, + 0x53, 0x46, 0x1B, 0x68, 0x9B, 0x68, 0xA3, 0x42, 0x46, 0xD0, 0x24, 0x68, + 0x00, 0x2C, 0x47, 0xD0, 0x21, 0x00, 0x30, 0x00, 0xC8, 0x47, 0x00, 0x28, + 0x43, 0xD0, 0x05, 0x28, 0xF0, 0xD0, 0xA3, 0x68, 0x22, 0x69, 0x94, 0x46, + 0x63, 0x44, 0x1F, 0x00, 0x41, 0x46, 0x18, 0x00, 0xD6, 0xF7, 0x64, 0xFF, + 0x63, 0x68, 0xC5, 0x18, 0x41, 0x46, 0x38, 0x00, 0xD6, 0xF7, 0xE4, 0xFF, + 0xB3, 0x68, 0x9C, 0x46, 0x8C, 0x45, 0x89, 0x41, 0x49, 0x42, 0x6D, 0x18, + 0xB1, 0x8A, 0x89, 0x04, 0x49, 0x0F, 0x04, 0x29, 0x03, 0xD0, 0x28, 0x00, + 0xFF, 0xF7, 0xBE, 0xFE, 0x05, 0x00, 0x5B, 0x46, 0xEB, 0x1A, 0x1B, 0x01, + 0x1B, 0x09, 0x80, 0x22, 0x12, 0x05, 0x93, 0x42, 0x04, 0xD9, 0x5B, 0x46, + 0x5B, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, 0x01, 0x9A, 0x93, 0x42, + 0xC1, 0xD9, 0x63, 0x7E, 0x0B, 0x2B, 0x03, 0xD8, 0x10, 0x4A, 0xDA, 0x40, + 0xD3, 0x07, 0xBA, 0xD4, 0xA3, 0x7D, 0xB2, 0x7D, 0x01, 0x20, 0x9A, 0x42, + 0x07, 0xD8, 0x01, 0x33, 0xB3, 0x75, 0x04, 0xE0, 0xD5, 0xF7, 0x38, 0xF9, + 0x04, 0x00, 0xB5, 0xE7, 0x00, 0x20, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x00, 0x20, 0xF6, 0xE7, + 0x64, 0x2A, 0x16, 0x00, 0x10, 0xE7, 0x10, 0x00, 0x51, 0x62, 0x0D, 0x00, + 0x71, 0x02, 0x00, 0x00, 0x6A, 0x0C, 0x00, 0x00, 0x01, 0x4B, 0x18, 0x68, + 0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x1B, 0x68, + 0x01, 0x20, 0x18, 0x40, 0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, + 0x02, 0x4B, 0x18, 0x68, 0x80, 0x07, 0xC0, 0x0F, 0x70, 0x47, 0xC0, 0x46, + 0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x18, 0x68, 0xC0, 0x0F, 0xC0, 0x07, + 0x70, 0x47, 0xC0, 0x46, 0x48, 0x30, 0x34, 0x40, 0x01, 0x4B, 0x18, 0x68, + 0xC0, 0x0F, 0x70, 0x47, 0x48, 0x30, 0x34, 0x40, 0x02, 0x4B, 0x18, 0x68, + 0x40, 0x07, 0xC0, 0x0F, 0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, + 0x03, 0x4B, 0x1B, 0x68, 0x14, 0x20, 0x18, 0x40, 0x43, 0x1E, 0x98, 0x41, + 0xC0, 0xB2, 0x70, 0x47, 0x94, 0x40, 0x04, 0x40, 0x02, 0x4B, 0x18, 0x68, + 0xC0, 0x06, 0xC0, 0x0F, 0x70, 0x47, 0xC0, 0x46, 0x94, 0x40, 0x04, 0x40, + 0x01, 0x4B, 0x18, 0x68, 0xC0, 0x0F, 0x70, 0x47, 0x98, 0x40, 0x04, 0x40, + 0x10, 0xB5, 0x10, 0x4B, 0x1A, 0x68, 0x00, 0x23, 0x01, 0x2A, 0x02, 0xD9, + 0x01, 0x20, 0x18, 0x40, 0x10, 0xBD, 0xFF, 0xF7, 0xCF, 0xFF, 0x00, 0x23, + 0x00, 0x28, 0xF7, 0xD0, 0xFF, 0xF7, 0xE2, 0xFF, 0x00, 0x28, 0x03, 0xD1, + 0x08, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x05, 0xDA, 0xFF, 0xF7, 0xB2, 0xFF, + 0x01, 0x23, 0x43, 0x40, 0xDB, 0xB2, 0xE9, 0xE7, 0xFF, 0xF7, 0xC2, 0xFF, + 0x00, 0x23, 0x00, 0x28, 0xE4, 0xD0, 0xF3, 0xE7, 0x50, 0xE0, 0x10, 0x00, + 0x98, 0x40, 0x04, 0x40, 0x10, 0xB5, 0xFF, 0xF7, 0xB7, 0xFF, 0x00, 0x23, + 0x00, 0x28, 0x02, 0xD1, 0x01, 0x20, 0x18, 0x40, 0x10, 0xBD, 0xFF, 0xF7, + 0x99, 0xFF, 0x01, 0x23, 0x43, 0x40, 0xDB, 0xB2, 0xF6, 0xE7, 0x00, 0x00, + 0x05, 0x4B, 0x1B, 0x68, 0x00, 0x28, 0x04, 0xD0, 0x08, 0x22, 0x13, 0x43, + 0x02, 0x4A, 0x13, 0x60, 0x70, 0x47, 0x08, 0x22, 0x93, 0x43, 0xF9, 0xE7, + 0x94, 0x40, 0x04, 0x40, 0x04, 0x4A, 0x13, 0x68, 0x40, 0x01, 0x04, 0x49, + 0x0B, 0x40, 0x04, 0x49, 0x08, 0x40, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, + 0x94, 0x40, 0x04, 0x40, 0x1F, 0x00, 0xFE, 0xFF, 0xE0, 0xFF, 0x01, 0x00, + 0x03, 0x4B, 0x1B, 0x68, 0x00, 0x20, 0x01, 0x22, 0x9A, 0x42, 0x40, 0x41, + 0xC0, 0xB2, 0x70, 0x47, 0x50, 0xE0, 0x10, 0x00, 0x02, 0x4B, 0x18, 0x68, + 0x43, 0x42, 0x58, 0x41, 0xC0, 0xB2, 0x70, 0x47, 0x50, 0xE0, 0x10, 0x00, + 0x70, 0xB5, 0x01, 0x28, 0x02, 0xD0, 0x02, 0x28, 0x0F, 0xD0, 0x70, 0xBD, + 0x0E, 0x4C, 0xEA, 0x25, 0x6D, 0x00, 0x02, 0x22, 0x02, 0x21, 0x20, 0x00, + 0x2B, 0x68, 0x98, 0x47, 0x80, 0x22, 0x2B, 0x68, 0x92, 0x01, 0x00, 0x21, + 0x20, 0x00, 0x98, 0x47, 0xEF, 0xE7, 0x80, 0x21, 0x89, 0x01, 0x06, 0x4C, + 0xEA, 0x25, 0x6D, 0x00, 0x0A, 0x00, 0x20, 0x00, 0x2B, 0x68, 0x98, 0x47, + 0x2B, 0x68, 0x02, 0x22, 0x00, 0x21, 0x20, 0x00, 0x98, 0x47, 0xE0, 0xE7, + 0x00, 0x10, 0x01, 0x50, 0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x39, 0x4B, + 0x1B, 0x68, 0x01, 0x20, 0x00, 0x2B, 0x45, 0xD1, 0x00, 0x29, 0x43, 0xD0, + 0x00, 0x2D, 0x1A, 0xD0, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x16, 0x00, + 0x1E, 0x40, 0x1A, 0x42, 0x4E, 0xD1, 0x72, 0xB6, 0x31, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0x41, 0xD1, 0x00, 0x20, 0x00, 0x2E, 0x4A, 0xD1, 0x62, 0xB6, + 0x27, 0xE0, 0x20, 0x00, 0xFF, 0xF7, 0xBA, 0xFF, 0x2B, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x28, 0x00, 0x00, 0x2E, 0x20, 0xD1, 0xF3, 0xE7, 0xEF, 0xF3, + 0x10, 0x83, 0x01, 0x22, 0x16, 0x00, 0x1E, 0x40, 0x1A, 0x42, 0x00, 0xD1, + 0x72, 0xB6, 0x24, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x1B, 0xD1, 0x01, 0x20, + 0x87, 0xF7, 0x51, 0xFC, 0x20, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x14, 0xD1, + 0x01, 0x20, 0x87, 0xF7, 0x4A, 0xFC, 0x28, 0x00, 0x00, 0x2E, 0x00, 0xD1, + 0x62, 0xB6, 0x1C, 0x4A, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x00, 0x28, + 0x1E, 0xD0, 0x00, 0x23, 0x19, 0x4A, 0x13, 0x60, 0x19, 0x4A, 0x13, 0x60, + 0x16, 0x4A, 0x13, 0x60, 0x70, 0xBD, 0x20, 0x00, 0xFF, 0xF7, 0x88, 0xFF, + 0x12, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0x01, 0x20, 0x87, 0xF7, 0x2F, 0xFC, + 0x01, 0x20, 0xE3, 0xE7, 0x08, 0x00, 0xFF, 0xF7, 0x7D, 0xFF, 0x0D, 0x4B, + 0x01, 0x22, 0x1A, 0x60, 0x28, 0x00, 0xB8, 0xE7, 0x0A, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0xB6, 0xD1, 0x09, 0x4B, 0x1B, 0x68, 0x00, 0x20, 0x05, 0x2B, + 0xDB, 0xD8, 0x08, 0x4B, 0x1C, 0x60, 0x08, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x07, 0x48, 0x82, 0xF7, 0x2F, 0xFC, 0x00, 0x20, 0xD8, 0xE7, 0xC0, 0x46, + 0x50, 0xE0, 0x10, 0x00, 0x5C, 0x40, 0x04, 0x40, 0x54, 0xE6, 0x10, 0x00, + 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0x2C, 0xCE, 0x10, 0x00, + 0xF0, 0xB5, 0xCE, 0x46, 0x00, 0xB5, 0x86, 0xB0, 0x2A, 0x4B, 0x1C, 0x68, + 0x21, 0x00, 0x2A, 0x48, 0x82, 0xF7, 0x16, 0xFC, 0x03, 0xAA, 0x29, 0x4B, + 0x03, 0xCB, 0x03, 0xC2, 0x1B, 0x88, 0x13, 0x80, 0x00, 0x2C, 0x0D, 0xDB, + 0x0A, 0x22, 0x03, 0xA9, 0x25, 0x48, 0xD7, 0xF7, 0xFD, 0xF9, 0x0A, 0x22, + 0x03, 0xA9, 0x24, 0x48, 0xD7, 0xF7, 0xF8, 0xF9, 0x06, 0xB0, 0x04, 0xBC, + 0x91, 0x46, 0xF0, 0xBD, 0xFF, 0x23, 0x1B, 0x04, 0x23, 0x40, 0x80, 0x22, + 0x52, 0x02, 0x93, 0x42, 0x11, 0xD0, 0x24, 0x04, 0x24, 0x0C, 0x1D, 0x4B, + 0xE7, 0x18, 0x1D, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0xFB, 0x43, 0xDB, 0x17, + 0x1F, 0x40, 0x4E, 0x2C, 0x00, 0xDD, 0x4E, 0x24, 0x03, 0xAD, 0x00, 0x26, + 0x00, 0x23, 0x01, 0x93, 0x1B, 0xE0, 0x24, 0x04, 0x24, 0x0C, 0x16, 0x4B, + 0xE7, 0x18, 0x16, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0xEC, 0xE7, 0x8B, 0x40, + 0x1A, 0x43, 0xD2, 0xB2, 0x01, 0x31, 0x08, 0x29, 0x07, 0xD0, 0x88, 0x19, + 0x01, 0x23, 0xB8, 0x42, 0xF5, 0xDB, 0xA0, 0x42, 0xF3, 0xDC, 0x01, 0x9B, + 0xF1, 0xE7, 0x4B, 0x46, 0x1A, 0x70, 0x01, 0x35, 0x08, 0x36, 0x50, 0x2E, + 0xBC, 0xD0, 0xA9, 0x46, 0x00, 0x22, 0x00, 0x21, 0xED, 0xE7, 0xC0, 0x46, + 0x98, 0x40, 0x04, 0x40, 0x34, 0xCE, 0x10, 0x00, 0x48, 0xCE, 0x10, 0x00, + 0xD8, 0xE1, 0x10, 0x00, 0xC0, 0x9F, 0x16, 0x00, 0x94, 0xF6, 0xFF, 0xFF, + 0xA7, 0xF6, 0xFF, 0xFF, 0x8A, 0xF6, 0xFF, 0xFF, 0xB1, 0xF6, 0xFF, 0xFF, + 0x10, 0xB5, 0x84, 0xB0, 0x98, 0x4B, 0x1C, 0x68, 0x21, 0x00, 0x98, 0x48, + 0x82, 0xF7, 0xAC, 0xFB, 0x01, 0xAA, 0x97, 0x4B, 0x03, 0xCB, 0x03, 0xC2, + 0x1B, 0x88, 0x13, 0x80, 0x00, 0x2C, 0x0B, 0xDB, 0x0A, 0x22, 0x01, 0xA9, + 0x93, 0x48, 0xD7, 0xF7, 0x93, 0xF9, 0x0A, 0x22, 0x01, 0xA9, 0x92, 0x48, + 0xD7, 0xF7, 0x8E, 0xF9, 0x04, 0xB0, 0x10, 0xBD, 0xFF, 0x23, 0x1B, 0x04, + 0x23, 0x40, 0x80, 0x22, 0x52, 0x02, 0x93, 0x42, 0x00, 0xD1, 0x02, 0xE1, + 0x24, 0x04, 0x24, 0x0C, 0x8B, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x3C, 0x2C, + 0xE4, 0xD8, 0xA4, 0x00, 0x89, 0x4B, 0x1B, 0x59, 0x9F, 0x46, 0x01, 0xAB, + 0x00, 0x22, 0x1A, 0x70, 0x5A, 0x70, 0x9A, 0x70, 0xFC, 0x32, 0xDA, 0x70, + 0xD8, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, 0x1A, 0x70, 0x00, 0x22, + 0x5A, 0x70, 0x9A, 0x70, 0xFC, 0x32, 0xDA, 0x70, 0x14, 0x29, 0xCD, 0xD1, + 0x00, 0x22, 0x1A, 0x70, 0xDA, 0x70, 0x1A, 0x71, 0xC8, 0xE7, 0x14, 0x21, + 0xEE, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x03, 0x22, 0x5A, 0x70, 0x00, 0x22, + 0x9A, 0x70, 0xC0, 0x32, 0xDA, 0x70, 0x14, 0x29, 0xBC, 0xD1, 0x00, 0x22, + 0x1A, 0x70, 0x5A, 0x70, 0xDA, 0x70, 0x1A, 0x71, 0xF0, 0x32, 0x5A, 0x71, + 0xB4, 0xE7, 0x14, 0x21, 0xEC, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x00, 0x22, + 0x9A, 0x70, 0xDA, 0x70, 0xF0, 0x32, 0x1A, 0x71, 0x14, 0x29, 0xA9, 0xD1, + 0xED, 0x3A, 0x1A, 0x70, 0x00, 0x22, 0x5A, 0x70, 0x1A, 0x71, 0x5A, 0x71, + 0xA2, 0xE7, 0x14, 0x21, 0xEE, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, + 0x9A, 0x70, 0x00, 0x22, 0xDA, 0x70, 0x1A, 0x71, 0xFC, 0x32, 0x5A, 0x71, + 0x14, 0x29, 0x95, 0xD1, 0x00, 0x22, 0x5A, 0x70, 0x9A, 0x70, 0x5A, 0x71, + 0xF0, 0x32, 0x9A, 0x71, 0x8E, 0xE7, 0x14, 0x21, 0xEC, 0xE7, 0x0A, 0x21, + 0x01, 0xAB, 0x03, 0x22, 0xDA, 0x70, 0x00, 0x22, 0x1A, 0x71, 0xC0, 0x32, + 0x5A, 0x71, 0x14, 0x29, 0x00, 0xD0, 0x81, 0xE7, 0x81, 0x3A, 0x5A, 0x70, + 0x00, 0x22, 0x9A, 0x70, 0xDA, 0x70, 0x5A, 0x71, 0xFC, 0x32, 0x9A, 0x71, + 0x78, 0xE7, 0x14, 0x21, 0xEA, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, + 0xDA, 0x70, 0x00, 0x22, 0x1A, 0x71, 0x5A, 0x71, 0xFC, 0x32, 0x9A, 0x71, + 0x14, 0x29, 0x00, 0xD0, 0x6A, 0xE7, 0xF9, 0x3A, 0x9A, 0x70, 0x00, 0x22, + 0xDA, 0x70, 0x9A, 0x71, 0xC0, 0x32, 0xDA, 0x71, 0x62, 0xE7, 0x14, 0x21, + 0xEA, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x0F, 0x22, 0x1A, 0x71, 0x00, 0x22, + 0x5A, 0x71, 0x9A, 0x71, 0x14, 0x29, 0x00, 0xD0, 0x56, 0xE7, 0x3F, 0x32, + 0x9A, 0x70, 0x00, 0x22, 0xDA, 0x70, 0x1A, 0x71, 0xDA, 0x71, 0x4F, 0xE7, + 0x14, 0x21, 0xED, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x00, 0x22, 0x5A, 0x71, + 0x9A, 0x71, 0xF0, 0x32, 0xDA, 0x71, 0x14, 0x29, 0x00, 0xD0, 0x43, 0xE7, + 0xE1, 0x3A, 0xDA, 0x70, 0x00, 0x22, 0x1A, 0x71, 0xDA, 0x71, 0x1A, 0x72, + 0x3C, 0xE7, 0x14, 0x21, 0xED, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x3F, 0x22, + 0x5A, 0x71, 0x00, 0x22, 0x9A, 0x71, 0xDA, 0x71, 0xFC, 0x32, 0x1A, 0x72, + 0x14, 0x29, 0x00, 0xD0, 0x2E, 0xE7, 0xED, 0x3A, 0x1A, 0x71, 0x00, 0x22, + 0x5A, 0x71, 0x1A, 0x72, 0x5A, 0x72, 0x27, 0xE7, 0x14, 0x21, 0xEB, 0xE7, + 0x0A, 0x21, 0x01, 0xAB, 0x03, 0x22, 0x9A, 0x71, 0x00, 0x22, 0xDA, 0x71, + 0xC0, 0x32, 0x1A, 0x72, 0x14, 0x29, 0x00, 0xD0, 0x1A, 0xE7, 0x00, 0x22, + 0x5A, 0x71, 0x9A, 0x71, 0x1A, 0x72, 0x5A, 0x72, 0x14, 0xE7, 0x14, 0x21, + 0xED, 0xE7, 0x0A, 0x21, 0x01, 0xAB, 0x00, 0x22, 0xDA, 0x71, 0x1A, 0x72, + 0xF0, 0x32, 0x5A, 0x72, 0x14, 0x29, 0x00, 0xD0, 0x08, 0xE7, 0x00, 0x22, + 0x9A, 0x71, 0x5A, 0x72, 0x04, 0xE7, 0x14, 0x21, 0xF0, 0xE7, 0x0A, 0x21, + 0x01, 0xAB, 0x3F, 0x22, 0xDA, 0x71, 0x00, 0x22, 0x1A, 0x72, 0x5A, 0x72, + 0x14, 0x29, 0x00, 0xD0, 0xF8, 0xE6, 0x0F, 0x32, 0x9A, 0x71, 0x00, 0x22, + 0xDA, 0x71, 0xF3, 0xE6, 0x14, 0x21, 0xEF, 0xE7, 0x01, 0xAB, 0x00, 0x22, + 0x1A, 0x70, 0x5A, 0x70, 0x9A, 0x70, 0xDA, 0x70, 0xFC, 0x32, 0x1A, 0x71, + 0xE8, 0xE6, 0x24, 0x04, 0x24, 0x0C, 0x0A, 0x4B, 0x9C, 0x46, 0x64, 0x44, + 0x3C, 0x2C, 0x00, 0xD9, 0xE0, 0xE6, 0xA4, 0x00, 0x08, 0x4B, 0x1B, 0x59, + 0x9F, 0x46, 0xC0, 0x46, 0x98, 0x40, 0x04, 0x40, 0x34, 0xCE, 0x10, 0x00, + 0x48, 0xCE, 0x10, 0x00, 0xD8, 0xE1, 0x10, 0x00, 0xC0, 0x9F, 0x16, 0x00, + 0x94, 0xF6, 0xFF, 0xFF, 0x54, 0xCE, 0x10, 0x00, 0x48, 0xCF, 0x10, 0x00, + 0x10, 0xB5, 0x08, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x00, 0xD0, 0x10, 0xBD, + 0x06, 0x4B, 0x1A, 0x6B, 0x06, 0x4B, 0x19, 0x68, 0x01, 0x20, 0x81, 0x43, + 0x19, 0x60, 0x19, 0x68, 0x04, 0x48, 0x82, 0xF7, 0x5F, 0xFA, 0xF2, 0xE7, + 0xB4, 0xE5, 0x10, 0x00, 0x00, 0x60, 0x50, 0x40, 0x04, 0x30, 0x34, 0x40, + 0x3C, 0xD0, 0x10, 0x00, 0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x4C, 0x4B, + 0x1B, 0x68, 0x01, 0x2B, 0x02, 0xD0, 0x4B, 0x4B, 0x01, 0x22, 0x1A, 0x70, + 0x4A, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x8B, 0x43, 0x13, 0x60, 0xA9, 0xF7, + 0x71, 0xFD, 0x48, 0x4B, 0x18, 0x60, 0x5C, 0x60, 0x0C, 0x2D, 0x38, 0xD8, + 0xAD, 0x00, 0x46, 0x4B, 0x5B, 0x59, 0x9F, 0x46, 0x80, 0x23, 0xDB, 0x01, + 0x00, 0x21, 0x9C, 0x42, 0x1B, 0xD3, 0x43, 0x4A, 0x13, 0x68, 0x43, 0x49, + 0x19, 0x40, 0x80, 0x23, 0x9B, 0x02, 0x0B, 0x43, 0x13, 0x60, 0x11, 0x68, + 0xE3, 0x08, 0xC0, 0x20, 0x40, 0x01, 0x03, 0x40, 0x76, 0x20, 0x03, 0x43, + 0x09, 0x0C, 0x09, 0x04, 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0x3B, 0x49, + 0x19, 0x40, 0x80, 0x23, 0x1B, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x80, 0x21, + 0xC9, 0x01, 0x35, 0x4B, 0x1A, 0x68, 0x35, 0x48, 0x02, 0x40, 0x1A, 0x60, + 0x1A, 0x68, 0xA4, 0x04, 0xA4, 0x0C, 0x0C, 0x43, 0x12, 0x0C, 0x12, 0x04, + 0x14, 0x43, 0x1C, 0x60, 0x1A, 0x68, 0x30, 0x49, 0x11, 0x40, 0x80, 0x22, + 0x12, 0x03, 0x0A, 0x43, 0x1A, 0x60, 0x70, 0xBD, 0x2D, 0x4B, 0x1B, 0x68, + 0x9A, 0x6A, 0x5B, 0x6B, 0xD2, 0x1A, 0xD5, 0x00, 0x55, 0x19, 0x6D, 0x00, + 0x55, 0x19, 0xAD, 0xB2, 0x2A, 0x00, 0x21, 0x00, 0x28, 0x48, 0x82, 0xF7, + 0xF7, 0xF9, 0x23, 0x4B, 0x19, 0x68, 0x23, 0x4E, 0x31, 0x40, 0x80, 0x22, + 0x92, 0x02, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x0C, 0x12, 0x04, + 0x6D, 0x05, 0x6D, 0x0D, 0x2A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x1D, 0x48, + 0x02, 0x40, 0x80, 0x21, 0x09, 0x03, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, + 0x16, 0x40, 0x1E, 0x60, 0x1A, 0x68, 0xA4, 0x04, 0xA4, 0x0C, 0x80, 0x25, + 0x2D, 0x02, 0x2C, 0x43, 0x12, 0x0C, 0x12, 0x04, 0x14, 0x43, 0x1C, 0x60, + 0x1A, 0x68, 0x10, 0x40, 0x01, 0x43, 0x19, 0x60, 0xC7, 0xE7, 0x0F, 0x4A, + 0x13, 0x68, 0x0F, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x13, 0x68, 0x1B, 0x0C, + 0x1B, 0x04, 0x10, 0x49, 0x0C, 0x43, 0xA4, 0xB2, 0x1C, 0x43, 0x14, 0x60, + 0x13, 0x68, 0x0A, 0x49, 0x19, 0x40, 0x80, 0x23, 0x1B, 0x03, 0x0B, 0x43, + 0x13, 0x60, 0xB2, 0xE7, 0x50, 0xE0, 0x10, 0x00, 0xB2, 0xE6, 0x10, 0x00, + 0xFC, 0x00, 0x60, 0x40, 0x6C, 0xE6, 0x10, 0x00, 0x5C, 0xD0, 0x10, 0x00, + 0xF8, 0x00, 0x60, 0x40, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xF8, 0xE6, 0x10, 0x00, 0x50, 0xD0, 0x10, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, + 0x07, 0x00, 0xD4, 0xF7, 0x4B, 0xFD, 0x04, 0x00, 0x00, 0x23, 0x01, 0x93, + 0x00, 0x93, 0x3B, 0x4A, 0x13, 0x70, 0x01, 0x21, 0x01, 0x20, 0xFF, 0xF7, + 0xEF, 0xFC, 0x80, 0x46, 0x38, 0x4B, 0x1E, 0x78, 0x02, 0x3E, 0x73, 0x1E, + 0x9E, 0x41, 0x76, 0x42, 0x19, 0x23, 0x1E, 0x40, 0x02, 0x36, 0x00, 0x2C, + 0x21, 0xD0, 0x65, 0x68, 0xFB, 0x7D, 0x9A, 0x46, 0xA3, 0x68, 0x99, 0x46, + 0x69, 0x46, 0x01, 0xA8, 0xA9, 0xF7, 0xB0, 0xFC, 0x01, 0x9B, 0x53, 0x44, + 0xEB, 0x1A, 0x1B, 0x01, 0x1A, 0x09, 0x5B, 0x00, 0x9C, 0x1A, 0xA4, 0x00, + 0xA4, 0x18, 0xA3, 0x00, 0xE4, 0x18, 0x4B, 0x46, 0x00, 0x9A, 0x9B, 0x1A, + 0xE4, 0x18, 0xA4, 0x09, 0xA6, 0x42, 0x00, 0xD8, 0xA4, 0x1B, 0x80, 0x23, + 0x5B, 0x02, 0x9C, 0x42, 0x02, 0xD9, 0x24, 0x4C, 0x00, 0xE0, 0x23, 0x4C, + 0xFF, 0xF7, 0xFC, 0xFB, 0x05, 0x00, 0x43, 0x46, 0x00, 0x2B, 0x12, 0xD0, + 0x20, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x03, 0xD0, 0x1F, 0x4B, 0x1B, 0x78, + 0x01, 0x2B, 0x0F, 0xD0, 0x0A, 0x2C, 0x16, 0xD8, 0x4F, 0x23, 0x00, 0x22, + 0xFA, 0x54, 0x02, 0xB0, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, + 0xF0, 0xBD, 0x01, 0x21, 0x00, 0x20, 0xFF, 0xF7, 0xA3, 0xFC, 0xE7, 0xE7, + 0x16, 0x4B, 0x80, 0x22, 0x12, 0x05, 0x1A, 0x60, 0x13, 0x4B, 0x02, 0x22, + 0x1A, 0x70, 0x00, 0x25, 0xE6, 0xE7, 0xFF, 0xF7, 0x0B, 0xFC, 0x00, 0x28, + 0xE4, 0xD0, 0xB2, 0xF7, 0xC9, 0xFD, 0x06, 0x23, 0x00, 0x28, 0x05, 0xD1, + 0x4A, 0x33, 0xFB, 0x5C, 0x01, 0x3B, 0x58, 0x42, 0x43, 0x41, 0x05, 0x33, + 0x00, 0x2D, 0xD7, 0xD1, 0xCF, 0x2C, 0x01, 0xD8, 0x06, 0x2B, 0xD3, 0xD1, + 0x21, 0x00, 0x18, 0x00, 0xFF, 0xF7, 0xCC, 0xFE, 0xCE, 0xE7, 0xC0, 0x46, + 0xB2, 0xE6, 0x10, 0x00, 0xB4, 0xE5, 0x10, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, + 0x70, 0xB5, 0x4E, 0x23, 0x01, 0x22, 0xC2, 0x54, 0x2A, 0x4B, 0x1D, 0x68, + 0x2A, 0x4B, 0x1C, 0x68, 0x2A, 0x4B, 0x19, 0x68, 0x2A, 0x4B, 0x1A, 0x68, + 0x2A, 0x4B, 0x00, 0x26, 0x1E, 0x70, 0x00, 0x23, 0x00, 0x2D, 0x05, 0xD0, + 0x42, 0x33, 0xEB, 0x5C, 0x01, 0x3B, 0x5D, 0x42, 0x6B, 0x41, 0xDB, 0xB2, + 0x00, 0x2C, 0x03, 0xD0, 0x3A, 0x25, 0x64, 0x5D, 0x01, 0x2C, 0x23, 0xD0, + 0x00, 0x24, 0x00, 0x29, 0x04, 0xD0, 0x3E, 0x34, 0x0D, 0x5D, 0x00, 0x24, + 0x01, 0x2D, 0x1D, 0xD0, 0x00, 0x2A, 0x03, 0xD0, 0x2F, 0x21, 0x51, 0x5C, + 0x01, 0x29, 0x1A, 0xD0, 0x00, 0x2B, 0x1D, 0xD0, 0x1A, 0x49, 0x0B, 0x68, + 0x1A, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x03, 0x13, 0x43, 0x0B, 0x60, + 0x18, 0x4B, 0x19, 0x4A, 0x13, 0x60, 0x81, 0x22, 0x52, 0x00, 0x9B, 0x5C, + 0x00, 0x2B, 0x18, 0xD0, 0x4F, 0x23, 0x01, 0x22, 0xC2, 0x54, 0x70, 0xBD, + 0x01, 0x23, 0xD9, 0xE7, 0x8C, 0x62, 0x01, 0x34, 0xDE, 0xE7, 0x00, 0x21, + 0x91, 0x62, 0x00, 0x2B, 0xE2, 0xD1, 0x01, 0xE0, 0x00, 0x2C, 0xE7, 0xD0, + 0x0A, 0x49, 0x0B, 0x68, 0x0D, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x04, + 0x13, 0x43, 0x0B, 0x60, 0xDE, 0xE7, 0xFF, 0xF7, 0x17, 0xFF, 0xE6, 0xE7, + 0x24, 0x27, 0x16, 0x00, 0x18, 0x27, 0x16, 0x00, 0x28, 0x27, 0x16, 0x00, + 0x20, 0x27, 0x16, 0x00, 0xB1, 0xE6, 0x10, 0x00, 0x00, 0x04, 0x60, 0x40, + 0xFF, 0xFF, 0xDF, 0xFF, 0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, + 0xFF, 0xFF, 0x7F, 0xFF, 0x02, 0x4B, 0x1B, 0x68, 0x04, 0x20, 0x18, 0x40, + 0x70, 0x47, 0xC0, 0x46, 0x80, 0x40, 0x34, 0x40, 0x10, 0xB5, 0x04, 0x00, + 0x01, 0x00, 0x12, 0x48, 0x82, 0xF7, 0x98, 0xF8, 0x00, 0x2C, 0x1E, 0xD0, + 0x10, 0x4B, 0x1A, 0x68, 0x10, 0x48, 0x02, 0x40, 0xD0, 0x21, 0x89, 0x03, + 0x0A, 0x43, 0x1A, 0x60, 0x1C, 0x68, 0x04, 0x40, 0xA0, 0x22, 0x52, 0x03, + 0x22, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x02, 0x40, 0x11, 0x43, 0x19, 0x60, + 0x09, 0x49, 0x04, 0x22, 0x0B, 0x68, 0x1A, 0x42, 0xFC, 0xD0, 0x05, 0x49, + 0x0B, 0x68, 0x05, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x03, 0x13, 0x43, + 0x0B, 0x60, 0x10, 0xBD, 0x90, 0xD0, 0x10, 0x00, 0x58, 0x40, 0x34, 0x40, + 0xFF, 0xFF, 0xC1, 0xFF, 0x80, 0x40, 0x34, 0x40, 0xF8, 0xB5, 0x04, 0x00, + 0x83, 0x7D, 0x02, 0x33, 0x83, 0x75, 0x03, 0x6C, 0x03, 0x61, 0xB2, 0xF7, + 0xF9, 0xFC, 0x00, 0x28, 0x24, 0xD1, 0x20, 0x4E, 0x4C, 0x25, 0x20, 0x4F, + 0x20, 0x00, 0xD4, 0xF7, 0x19, 0xFA, 0x00, 0x28, 0x33, 0xD0, 0x31, 0x00, + 0x20, 0x69, 0xD6, 0xF7, 0xFD, 0xF9, 0x63, 0x68, 0x9C, 0x46, 0x60, 0x44, + 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x63, 0x5B, 0x5B, 0x00, 0xE2, 0x68, + 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x60, 0xA3, 0x7D, + 0x14, 0x4A, 0x52, 0x78, 0x9B, 0x18, 0xA3, 0x75, 0x10, 0x4B, 0x9C, 0x46, + 0x66, 0x44, 0xBE, 0x42, 0xDE, 0xD1, 0xF8, 0xBD, 0x63, 0x68, 0x18, 0x33, + 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x18, 0x26, 0x65, 0x68, 0x00, 0x22, + 0x21, 0x69, 0x20, 0x00, 0xFF, 0xF7, 0x3C, 0xFA, 0x63, 0x68, 0xAB, 0x42, + 0xCB, 0xD0, 0x75, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x65, 0x60, 0x18, 0x36, + 0x90, 0x2E, 0xEF, 0xD1, 0xC3, 0xE7, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, + 0xE3, 0xE7, 0xC0, 0x46, 0xE2, 0x04, 0x00, 0x00, 0x6A, 0x18, 0x00, 0x00, + 0x7C, 0x91, 0x0D, 0x00, 0x10, 0xB5, 0xFF, 0xF7, 0xAB, 0xFF, 0x10, 0xBD, + 0xF8, 0xB5, 0x04, 0x00, 0x4E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, + 0xF8, 0xBD, 0x00, 0x21, 0xD4, 0xF7, 0x6E, 0xFB, 0xA9, 0xF7, 0x38, 0xFB, + 0x23, 0x6C, 0x23, 0x61, 0x60, 0x60, 0x04, 0x26, 0x4C, 0x27, 0x10, 0x4D, + 0x20, 0x00, 0xD4, 0xF7, 0xBF, 0xF9, 0x00, 0x28, 0x15, 0xD0, 0x63, 0x68, + 0x04, 0x33, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0xE3, 0x5B, 0x5B, 0x00, + 0xE2, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x60, + 0xA3, 0x7D, 0x6A, 0x78, 0x9B, 0x18, 0xA3, 0x75, 0x01, 0x3E, 0xF6, 0xB2, + 0x00, 0x2E, 0xE5, 0xD1, 0xD8, 0xE7, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, + 0xD4, 0xE7, 0xC0, 0x46, 0x7C, 0x91, 0x0D, 0x00, 0x70, 0xB5, 0xEF, 0xF3, + 0x10, 0x83, 0x01, 0x22, 0x14, 0x00, 0x1C, 0x40, 0x1A, 0x42, 0x1C, 0xD1, + 0x72, 0xB6, 0x10, 0x4B, 0x18, 0x68, 0x00, 0x28, 0x07, 0xD0, 0x4E, 0x23, + 0xC3, 0x5C, 0x00, 0x2B, 0x05, 0xD0, 0x01, 0x2B, 0x0D, 0xD0, 0x00, 0x2C, + 0x00, 0xD1, 0x62, 0xB6, 0x70, 0xBD, 0x00, 0x21, 0xD4, 0xF7, 0x2A, 0xFB, + 0x07, 0x4D, 0x28, 0x68, 0x80, 0xF7, 0x38, 0xF8, 0x00, 0x23, 0x2B, 0x60, + 0xF1, 0xE7, 0x4E, 0x23, 0x02, 0x22, 0xC2, 0x54, 0xED, 0xE7, 0x02, 0x4B, + 0x18, 0x68, 0x00, 0x28, 0xE3, 0xD1, 0xEB, 0xE7, 0xF8, 0xE6, 0x10, 0x00, + 0xF8, 0xB5, 0x05, 0x00, 0x36, 0x4B, 0x1B, 0x68, 0x0C, 0x20, 0x00, 0x2B, + 0x00, 0xD0, 0xF8, 0xBD, 0x00, 0x21, 0x48, 0x30, 0x7F, 0xF7, 0x7A, 0xFF, + 0x31, 0x4B, 0x18, 0x60, 0x00, 0x28, 0x56, 0xD0, 0xA9, 0xF7, 0xD2, 0xFA, + 0x06, 0x00, 0x00, 0x27, 0x2E, 0x4B, 0x1F, 0x60, 0x2E, 0x4B, 0x1F, 0x60, + 0x2B, 0x4B, 0x1C, 0x68, 0x54, 0x22, 0x00, 0x21, 0x20, 0x00, 0x7D, 0xF7, + 0x19, 0xFF, 0x2B, 0x68, 0xA3, 0x62, 0x6A, 0x68, 0x22, 0x63, 0xEA, 0x68, + 0xE2, 0x63, 0x2A, 0x68, 0xE2, 0x62, 0xAA, 0x68, 0xA2, 0x63, 0x62, 0x63, + 0x1B, 0x01, 0x4C, 0x22, 0xA3, 0x52, 0x24, 0x4A, 0x22, 0x64, 0x24, 0x4B, + 0x63, 0x62, 0x24, 0x4B, 0xE3, 0x61, 0x24, 0x4B, 0x23, 0x62, 0x03, 0x23, + 0x23, 0x76, 0x23, 0x4B, 0x9B, 0x78, 0x02, 0x33, 0xA3, 0x75, 0x22, 0x61, + 0xE7, 0x75, 0x05, 0x23, 0x63, 0x76, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, + 0x15, 0x00, 0x1D, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x66, 0x60, + 0x00, 0x23, 0xA3, 0x60, 0x1A, 0x4B, 0xA3, 0x82, 0x4C, 0x23, 0xE0, 0x5A, + 0x40, 0x00, 0x80, 0x19, 0x00, 0x01, 0x00, 0x09, 0xE0, 0x60, 0x20, 0x00, + 0xD4, 0xF7, 0x1E, 0xF9, 0x00, 0x28, 0x06, 0xD1, 0x4E, 0x23, 0x00, 0x22, + 0xE2, 0x54, 0x00, 0x2D, 0xA9, 0xD1, 0x62, 0xB6, 0xA7, 0xE7, 0x11, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0C, 0x20, + 0xF3, 0xE7, 0x0D, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x98, 0x47, 0x0C, 0x20, 0x97, 0xE7, 0xC0, 0x46, 0xF8, 0xE6, 0x10, 0x00, + 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0xE8, 0xFD, 0x00, 0x00, + 0xB9, 0x21, 0x10, 0x00, 0xC9, 0x1F, 0x10, 0x00, 0x05, 0x4B, 0x10, 0x00, + 0x7C, 0x91, 0x0D, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0x28, 0x19, 0x16, 0x00, + 0x10, 0xB5, 0x06, 0x4B, 0x18, 0x68, 0x00, 0x28, 0x03, 0xD0, 0x4F, 0x23, + 0xC3, 0x5C, 0x01, 0x2B, 0x00, 0xD0, 0x10, 0xBD, 0xFF, 0xF7, 0x84, 0xFD, + 0xFB, 0xE7, 0xC0, 0x46, 0xF8, 0xE6, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, + 0x00, 0xB5, 0x85, 0xF7, 0x55, 0xFE, 0x4C, 0x4B, 0x1B, 0x68, 0x01, 0x2B, + 0x02, 0xD0, 0x4A, 0x4B, 0x02, 0x22, 0x1A, 0x60, 0x49, 0x4A, 0x48, 0x4B, + 0x19, 0x68, 0x49, 0x4B, 0xD1, 0x54, 0x00, 0x21, 0x42, 0x3B, 0xD1, 0x54, + 0x0B, 0x23, 0x47, 0x48, 0x13, 0x54, 0x01, 0x30, 0x13, 0x54, 0x46, 0x4B, + 0x1B, 0x68, 0x1C, 0x0A, 0x50, 0x38, 0x14, 0x54, 0x44, 0x48, 0x13, 0x54, + 0x44, 0x4B, 0x20, 0x20, 0xD0, 0x54, 0x44, 0x4B, 0x10, 0x38, 0xD0, 0x54, + 0x43, 0x4B, 0x19, 0x60, 0x00, 0x24, 0x00, 0x23, 0x98, 0x46, 0x00, 0x27, + 0x01, 0x34, 0xE4, 0xB2, 0x01, 0x2C, 0x0B, 0xD0, 0x02, 0x2C, 0x3E, 0xD0, + 0x03, 0x2C, 0x4C, 0xD0, 0x3D, 0x4A, 0x13, 0x78, 0x20, 0x21, 0x8B, 0x43, + 0x13, 0x70, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x0C, 0x20, 0xFE, 0xF7, + 0xA7, 0xF9, 0x06, 0x00, 0x0D, 0x20, 0xFE, 0xF7, 0xA3, 0xF9, 0x05, 0x04, + 0x2D, 0x0C, 0x2A, 0x00, 0x31, 0x00, 0x35, 0x48, 0x81, 0xF7, 0xDA, 0xFE, + 0x2B, 0x00, 0x33, 0x43, 0xDE, 0xD0, 0x43, 0x46, 0x00, 0x2B, 0x41, 0xD0, + 0x27, 0x4B, 0x2A, 0x0A, 0x1A, 0x70, 0x5D, 0x70, 0x32, 0x0E, 0x9A, 0x70, + 0x32, 0x0C, 0xDA, 0x70, 0x32, 0x0A, 0x1A, 0x71, 0x5E, 0x71, 0x00, 0x2F, + 0x0A, 0xD0, 0x21, 0x4A, 0x11, 0x1D, 0x13, 0x78, 0x01, 0x33, 0xDB, 0xB2, + 0x13, 0x70, 0x00, 0x2B, 0x02, 0xD1, 0x01, 0x32, 0x8A, 0x42, 0xF6, 0xD1, + 0x1B, 0x4C, 0x20, 0x68, 0x61, 0x68, 0xA9, 0xF7, 0xD1, 0xFC, 0x20, 0x00, + 0xB9, 0xF7, 0x0E, 0xFB, 0xC2, 0xE7, 0x07, 0x20, 0xFE, 0xF7, 0x72, 0xF9, + 0x06, 0x00, 0x08, 0x20, 0xFE, 0xF7, 0x6E, 0xF9, 0x05, 0x04, 0x2D, 0x0C, + 0x2A, 0x00, 0x31, 0x00, 0x1B, 0x48, 0x81, 0xF7, 0xA5, 0xFE, 0x01, 0x27, + 0xC8, 0xE7, 0x1A, 0x4B, 0x1E, 0x88, 0x58, 0x88, 0x00, 0x04, 0x06, 0x43, + 0x18, 0x4B, 0x1D, 0x88, 0x5B, 0x88, 0x2A, 0x00, 0x31, 0x00, 0x17, 0x48, + 0x81, 0xF7, 0x96, 0xFE, 0x01, 0x23, 0x98, 0x46, 0x00, 0x27, 0xB7, 0xE7, + 0x06, 0x4B, 0x2A, 0x0A, 0x5A, 0x71, 0x1D, 0x71, 0x32, 0x0E, 0xDA, 0x70, + 0x32, 0x0C, 0x9A, 0x70, 0x32, 0x0A, 0x5A, 0x70, 0x1E, 0x70, 0xBC, 0xE7, + 0xA8, 0xE5, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0x9A, 0x02, 0x00, 0x00, + 0xA3, 0x02, 0x00, 0x00, 0xB0, 0xE5, 0x10, 0x00, 0x55, 0x02, 0x00, 0x00, + 0x56, 0x02, 0x00, 0x00, 0x57, 0x02, 0x00, 0x00, 0xF8, 0xE6, 0x10, 0x00, + 0xEC, 0xE1, 0x10, 0x00, 0xA0, 0xD0, 0x10, 0x00, 0xB0, 0xD0, 0x10, 0x00, + 0x12, 0xC0, 0x1F, 0x08, 0x16, 0xC0, 0x1F, 0x08, 0xC4, 0xD0, 0x10, 0x00, + 0x30, 0xB5, 0x89, 0xB0, 0x05, 0x00, 0x14, 0x00, 0x00, 0x28, 0x14, 0xD1, + 0x1F, 0x4B, 0x20, 0x48, 0x1A, 0x5C, 0x04, 0x35, 0xAA, 0x43, 0x1A, 0x54, + 0x02, 0x30, 0x1A, 0x5C, 0x3E, 0x35, 0xAA, 0x43, 0x1A, 0x54, 0x22, 0x00, + 0x00, 0x20, 0x8D, 0xF7, 0xF9, 0xFF, 0x1A, 0x4B, 0x1B, 0x68, 0x00, 0x2B, + 0x0E, 0xD0, 0x09, 0xB0, 0x30, 0xBD, 0x8D, 0xF7, 0xF1, 0xFF, 0x02, 0x2D, + 0xF5, 0xD1, 0x23, 0x78, 0x0C, 0x22, 0x93, 0x43, 0x23, 0x70, 0x63, 0x78, + 0x0B, 0x3A, 0x93, 0x43, 0x63, 0x70, 0xEC, 0xE7, 0x11, 0x4B, 0x1B, 0x68, + 0x01, 0x2B, 0xEC, 0xD8, 0x00, 0x23, 0x07, 0x93, 0x0F, 0x4B, 0x1B, 0x68, + 0x03, 0x93, 0x0F, 0x4B, 0x1B, 0x68, 0x01, 0x93, 0x04, 0x93, 0x0E, 0x4B, + 0x18, 0x68, 0x0E, 0x49, 0xD5, 0xF7, 0xD4, 0xFF, 0x05, 0x90, 0x0D, 0x4B, + 0x18, 0x68, 0x0B, 0x49, 0xD5, 0xF7, 0xCE, 0xFF, 0x06, 0x90, 0x03, 0xA8, + 0xFF, 0xF7, 0x6C, 0xFE, 0xD3, 0xE7, 0xC0, 0x46, 0x7C, 0x1E, 0x16, 0x00, + 0x9E, 0x02, 0x00, 0x00, 0xF8, 0xE6, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, + 0x0C, 0xE2, 0x10, 0x00, 0x10, 0xE2, 0x10, 0x00, 0x04, 0xE2, 0x10, 0x00, + 0x71, 0x02, 0x00, 0x00, 0x08, 0xE2, 0x10, 0x00, 0x80, 0x00, 0x08, 0x4B, + 0xC3, 0x58, 0x88, 0x22, 0xFF, 0x32, 0x9A, 0x5C, 0x00, 0x20, 0x01, 0x2A, + 0x00, 0xD0, 0x70, 0x47, 0x8A, 0x22, 0xFF, 0x32, 0x98, 0x5C, 0x01, 0x38, + 0x43, 0x42, 0x58, 0x41, 0xF7, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0x00, 0x23, 0x00, 0x20, 0x06, 0x49, 0x02, 0xE0, 0x01, 0x33, 0x07, 0x2B, + 0x06, 0xD0, 0x9A, 0x00, 0x52, 0x58, 0x00, 0x2A, 0xF8, 0xD0, 0x01, 0x30, + 0xC0, 0xB2, 0xF5, 0xE7, 0x70, 0x47, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, + 0x70, 0xB5, 0x82, 0xB0, 0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x30, 0x4B, + 0xD6, 0x58, 0x20, 0x00, 0x80, 0xF7, 0xB2, 0xF8, 0x03, 0x00, 0x02, 0x00, + 0x01, 0x28, 0x12, 0xD0, 0x00, 0x20, 0x01, 0x2B, 0x05, 0xD9, 0x19, 0x2B, + 0x05, 0xD8, 0x15, 0x23, 0x93, 0x42, 0x40, 0x41, 0x40, 0x00, 0x02, 0xB0, + 0x70, 0xBD, 0x58, 0x3B, 0xDB, 0xB2, 0x01, 0x20, 0x98, 0x42, 0x80, 0x41, + 0x40, 0x42, 0x40, 0x00, 0xF5, 0xE7, 0x4C, 0x23, 0xF3, 0x5C, 0x00, 0x2B, + 0x3A, 0xD1, 0x4B, 0x33, 0xF3, 0x5C, 0x00, 0x2B, 0x02, 0xD0, 0x4B, 0x23, + 0x00, 0x22, 0xF2, 0x54, 0x4F, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x16, 0xD1, + 0x36, 0x33, 0xF2, 0x5C, 0x35, 0x3B, 0x13, 0x40, 0x3E, 0x22, 0x13, 0x43, + 0x6A, 0x46, 0x13, 0x71, 0x00, 0x23, 0x53, 0x71, 0xE8, 0xB2, 0x01, 0xA9, + 0xA7, 0xF7, 0x98, 0xF9, 0x14, 0x48, 0x81, 0xF7, 0xA9, 0xFD, 0x59, 0x21, + 0x20, 0x00, 0x80, 0xF7, 0x17, 0xF8, 0x00, 0x20, 0xCF, 0xE7, 0x01, 0xA9, + 0x36, 0x23, 0xF2, 0x5C, 0x38, 0x3B, 0x13, 0x43, 0x0B, 0x70, 0x1F, 0x23, + 0x4B, 0x70, 0x1E, 0x3B, 0x8B, 0x70, 0xE8, 0xB2, 0xA7, 0xF7, 0x82, 0xF9, + 0x0A, 0x48, 0x81, 0xF7, 0x93, 0xFD, 0x20, 0x00, 0x97, 0xF7, 0x72, 0xFD, + 0x58, 0x21, 0x20, 0x00, 0x7F, 0xF7, 0xFE, 0xFF, 0x00, 0x20, 0xB6, 0xE7, + 0x05, 0x48, 0x81, 0xF7, 0x87, 0xFD, 0x00, 0x20, 0xB1, 0xE7, 0xC0, 0x46, + 0x64, 0xA2, 0x16, 0x00, 0xDC, 0xD0, 0x10, 0x00, 0xEC, 0xD0, 0x10, 0x00, + 0xFC, 0xD0, 0x10, 0x00, 0xF0, 0xB5, 0x05, 0xAC, 0x24, 0x78, 0x4E, 0x28, + 0x3C, 0xD8, 0xFF, 0x2C, 0x08, 0xD0, 0x10, 0x2C, 0x0B, 0xD9, 0x18, 0x2C, + 0x37, 0xD9, 0x20, 0x2C, 0x38, 0xD9, 0x03, 0x26, 0x00, 0x25, 0x06, 0xE0, + 0x32, 0x4C, 0x24, 0x18, 0xED, 0x34, 0x24, 0x78, 0xF1, 0xE7, 0x00, 0x26, + 0x03, 0x25, 0x00, 0x29, 0x36, 0xD0, 0x2E, 0x4F, 0x39, 0x18, 0x0E, 0x00, + 0x4F, 0x36, 0x33, 0x70, 0x3E, 0x56, 0xF3, 0x18, 0x5B, 0x10, 0x3B, 0x54, + 0x0B, 0x00, 0xED, 0x33, 0x1C, 0x70, 0x0E, 0x00, 0x9E, 0x36, 0x33, 0x78, + 0x1C, 0x19, 0x64, 0x10, 0x34, 0x70, 0x8C, 0x31, 0xFF, 0x31, 0x00, 0x23, + 0x0B, 0x70, 0x24, 0x4B, 0x1B, 0x18, 0x49, 0x33, 0xFF, 0x33, 0x1B, 0x78, + 0xED, 0x18, 0x6D, 0xB2, 0x06, 0x2D, 0x10, 0xDC, 0x1F, 0x4B, 0x1B, 0x18, + 0x49, 0x33, 0xFF, 0x33, 0x1D, 0x70, 0x02, 0x30, 0x80, 0x00, 0x1C, 0x4B, + 0x18, 0x18, 0x42, 0x60, 0xF0, 0xBD, 0x01, 0x26, 0x02, 0x25, 0xD0, 0xE7, + 0x02, 0x26, 0x01, 0x25, 0xCD, 0xE7, 0x17, 0x4B, 0x1B, 0x18, 0x49, 0x33, + 0xFF, 0x33, 0x06, 0x21, 0x19, 0x70, 0xEC, 0xE7, 0x12, 0x4B, 0x1B, 0x18, + 0x8C, 0x33, 0xFF, 0x33, 0x1B, 0x78, 0x01, 0x2B, 0x14, 0xD0, 0x0F, 0x49, + 0x09, 0x18, 0x8C, 0x31, 0xFF, 0x31, 0x01, 0x23, 0x0B, 0x70, 0x0D, 0x49, + 0x09, 0x18, 0x49, 0x31, 0xFF, 0x31, 0x0B, 0x78, 0x9B, 0x1B, 0x5B, 0xB2, + 0x99, 0x1D, 0x08, 0xDB, 0x08, 0x49, 0x09, 0x18, 0x49, 0x31, 0xFF, 0x31, + 0x0B, 0x70, 0xD0, 0xE7, 0x02, 0x36, 0xF6, 0xB2, 0xE7, 0xE7, 0x04, 0x4B, + 0x1B, 0x18, 0x49, 0x33, 0xFF, 0x33, 0xFA, 0x21, 0x19, 0x70, 0xC6, 0xE7, + 0x1C, 0xE7, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, 0xF8, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8B, 0x4C, 0x00, 0x25, + 0x00, 0x22, 0x01, 0x26, 0xC1, 0x27, 0xFF, 0x00, 0x03, 0xE0, 0x01, 0x35, + 0x09, 0x34, 0x07, 0x2D, 0x0E, 0xD0, 0x23, 0x78, 0x03, 0x2B, 0xF8, 0xD1, + 0x63, 0x78, 0x00, 0x2B, 0xF5, 0xD1, 0x29, 0x02, 0x31, 0x43, 0x89, 0xB2, + 0x00, 0x22, 0x38, 0x00, 0x7F, 0xF7, 0x20, 0xFC, 0x01, 0x22, 0xEC, 0xE7, + 0x00, 0x2A, 0x0B, 0xD1, 0x7E, 0x4A, 0xD9, 0x23, 0x5B, 0x00, 0x00, 0x21, + 0xD1, 0x54, 0x00, 0x20, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, + 0xAB, 0x46, 0xF8, 0xBD, 0xA8, 0xF7, 0xFE, 0xFF, 0x82, 0x46, 0x8E, 0xF7, + 0x09, 0xF8, 0x80, 0x46, 0xA9, 0xF7, 0x18, 0xFB, 0x81, 0x46, 0x00, 0x24, + 0x73, 0x4B, 0x9B, 0x46, 0x63, 0xE0, 0x8D, 0xF7, 0xF3, 0xFF, 0x00, 0x28, + 0x19, 0xD0, 0xA3, 0x00, 0x4A, 0x46, 0xD3, 0x58, 0x52, 0x46, 0xD3, 0x1A, + 0x1B, 0x01, 0x1B, 0x09, 0xC8, 0x22, 0x92, 0x01, 0x93, 0x42, 0x3D, 0xD2, + 0x4B, 0x46, 0x3D, 0x33, 0xFF, 0x33, 0x1B, 0x57, 0x01, 0x33, 0x2D, 0xDB, + 0xD4, 0x20, 0x40, 0x00, 0x66, 0x4B, 0x5B, 0x19, 0x01, 0x21, 0xB1, 0x40, + 0x1A, 0x5C, 0x0A, 0x43, 0x1A, 0x54, 0x2A, 0x00, 0x63, 0x32, 0xFF, 0x32, + 0x5A, 0x44, 0x00, 0x21, 0x06, 0x20, 0x38, 0x40, 0x03, 0x27, 0x13, 0x78, + 0x03, 0x41, 0x3B, 0x40, 0x03, 0x2B, 0x27, 0xD0, 0x01, 0x31, 0x0A, 0x32, + 0x07, 0x29, 0xF6, 0xD1, 0xB3, 0x1E, 0x01, 0x2B, 0x00, 0xD8, 0x98, 0xE0, + 0x73, 0x1F, 0x01, 0x2B, 0x00, 0xD8, 0x94, 0xE0, 0xA3, 0x00, 0x4A, 0x46, + 0xD3, 0x58, 0x52, 0x46, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0xFA, 0x22, + 0x12, 0x02, 0x93, 0x42, 0x1E, 0xD9, 0x93, 0xE0, 0xD4, 0x21, 0x49, 0x00, + 0x4F, 0x4B, 0x5D, 0x19, 0x01, 0x22, 0xB2, 0x40, 0x6B, 0x5C, 0x93, 0x43, + 0x6B, 0x54, 0x13, 0xE0, 0x4B, 0x46, 0x3D, 0x33, 0xFF, 0x33, 0x00, 0x22, + 0x1A, 0x55, 0xCA, 0xE7, 0xD4, 0x20, 0x40, 0x00, 0x47, 0x4B, 0x9C, 0x46, + 0xAC, 0x44, 0x01, 0x22, 0xB2, 0x40, 0x63, 0x46, 0x1B, 0x5C, 0x93, 0x43, + 0x62, 0x46, 0x13, 0x54, 0x07, 0x29, 0xCD, 0xD0, 0x01, 0x34, 0x4F, 0x2C, + 0x13, 0xD0, 0xE7, 0xB2, 0x07, 0x26, 0x26, 0x40, 0x65, 0x05, 0x2D, 0x0E, + 0x43, 0x46, 0x5B, 0x5D, 0x33, 0x41, 0xDB, 0x07, 0x91, 0xD4, 0xD4, 0x21, + 0x49, 0x00, 0x3A, 0x4B, 0x5D, 0x19, 0x01, 0x22, 0xB2, 0x40, 0x6B, 0x5C, + 0x93, 0x43, 0x6B, 0x54, 0xE8, 0xE7, 0x37, 0x48, 0x81, 0xF7, 0xB0, 0xFC, + 0x13, 0x28, 0x41, 0xD8, 0x14, 0x23, 0x1B, 0x1A, 0xDB, 0xB2, 0x9B, 0x46, + 0x14, 0x25, 0x2D, 0x1A, 0x00, 0x23, 0x99, 0x46, 0x00, 0x24, 0x2F, 0x4E, + 0x0E, 0xE0, 0x48, 0x46, 0x13, 0x28, 0x09, 0xD9, 0x2C, 0x48, 0x84, 0x46, + 0x62, 0x44, 0x01, 0x20, 0x98, 0x40, 0x01, 0x43, 0xD4, 0x23, 0x5B, 0x00, + 0xD1, 0x54, 0x01, 0x34, 0xAC, 0x42, 0x27, 0xDA, 0xD6, 0xF7, 0xDA, 0xFA, + 0x7F, 0x23, 0x18, 0x40, 0x4E, 0x28, 0x00, 0xD9, 0x4F, 0x38, 0xC2, 0x08, + 0xB1, 0x18, 0xD4, 0x23, 0x5B, 0x00, 0xC9, 0x5C, 0xA2, 0x3B, 0xFF, 0x3B, + 0x03, 0x40, 0x0F, 0x00, 0x1F, 0x41, 0xFF, 0x07, 0xEA, 0xD4, 0x47, 0x46, + 0xBF, 0x5C, 0x1F, 0x41, 0xFF, 0x07, 0xE5, 0xD5, 0x4F, 0x46, 0x01, 0x37, + 0xFF, 0xB2, 0xB9, 0x46, 0x1A, 0x4F, 0xBC, 0x46, 0x60, 0x44, 0x9E, 0x30, + 0x00, 0x78, 0x18, 0x28, 0xD0, 0xD9, 0xCB, 0x45, 0xCB, 0xD8, 0x20, 0x28, + 0xCC, 0xD9, 0xC8, 0xE7, 0x13, 0x48, 0x81, 0xF7, 0x69, 0xFC, 0x01, 0x00, + 0x13, 0x48, 0x81, 0xF7, 0x01, 0xFC, 0xC8, 0x22, 0x00, 0x21, 0x12, 0x48, + 0x7F, 0xF7, 0x38, 0xFA, 0x1F, 0xE7, 0xA3, 0x00, 0x4A, 0x46, 0xD3, 0x58, + 0x52, 0x46, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0xFA, 0x22, 0xD2, 0x01, + 0x93, 0x42, 0x89, 0xD9, 0xD4, 0x21, 0x49, 0x00, 0x05, 0x4B, 0x9C, 0x46, + 0x65, 0x44, 0x01, 0x22, 0xB2, 0x40, 0x6B, 0x5C, 0x13, 0x43, 0x6B, 0x54, + 0x7E, 0xE7, 0xC0, 0x46, 0xA4, 0x9E, 0x16, 0x00, 0x68, 0x9E, 0x16, 0x00, + 0x10, 0xA0, 0x16, 0x00, 0x1C, 0xE7, 0x10, 0x00, 0x0C, 0xD1, 0x10, 0x00, + 0x0A, 0x05, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x07, 0x00, 0x08, 0x00, 0x00, 0x91, + 0xBA, 0x00, 0xA4, 0x4B, 0xD5, 0x58, 0xA6, 0x23, 0xEB, 0x5C, 0x9B, 0x46, + 0x2B, 0x6D, 0x98, 0x46, 0x62, 0x23, 0x7B, 0x43, 0xA0, 0x4A, 0x9A, 0x18, + 0x16, 0x88, 0xA0, 0x4A, 0x9A, 0x18, 0x14, 0x88, 0x36, 0x04, 0x26, 0x43, + 0x9E, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0x92, 0x05, 0x92, 0x0D, 0x91, 0x46, + 0x9C, 0x4A, 0x9A, 0x18, 0x14, 0x88, 0x9C, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1B, 0x88, 0x24, 0x04, 0x1C, 0x19, 0x9A, 0x4B, 0x98, 0x45, 0x1A, 0xD8, + 0x73, 0x1A, 0x19, 0x01, 0x09, 0x09, 0x80, 0x22, 0x12, 0x05, 0x91, 0x42, + 0x4A, 0xD9, 0x83, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, 0xA1, 0x22, + 0xAA, 0x5C, 0x00, 0x2A, 0x49, 0xD0, 0x00, 0x2B, 0x09, 0xDB, 0x89, 0x08, + 0x00, 0x29, 0x06, 0xDD, 0x89, 0x00, 0x00, 0x9B, 0x9C, 0x46, 0x61, 0x44, + 0x09, 0x01, 0x0B, 0x09, 0x00, 0x93, 0xA4, 0x1B, 0x00, 0x9B, 0x9C, 0x46, + 0x64, 0x44, 0x24, 0x01, 0x24, 0x09, 0xF4, 0x26, 0x76, 0x00, 0x4B, 0x46, + 0xF6, 0x1A, 0x3B, 0xD4, 0xAC, 0x67, 0x82, 0x23, 0xEE, 0x52, 0x62, 0x42, + 0x7F, 0x3B, 0x13, 0x40, 0xA6, 0x22, 0xAB, 0x54, 0x72, 0x3A, 0x2A, 0x65, + 0x01, 0x96, 0xAE, 0x60, 0x42, 0x46, 0x34, 0x2A, 0x09, 0xD9, 0xEA, 0x7D, + 0x00, 0x2A, 0x06, 0xD0, 0xC8, 0x22, 0x52, 0x00, 0xB2, 0x42, 0x92, 0x41, + 0x52, 0x42, 0x05, 0x32, 0xEA, 0x75, 0x5B, 0x45, 0x00, 0xD1, 0x9F, 0xE0, + 0xA1, 0x23, 0xEB, 0x5C, 0x03, 0x2B, 0x21, 0xD0, 0x3B, 0x02, 0x01, 0x22, + 0x13, 0x43, 0x02, 0x93, 0x01, 0x23, 0x98, 0x46, 0xFE, 0x33, 0x9A, 0x46, + 0xA9, 0x46, 0x45, 0x46, 0xA0, 0x46, 0x4D, 0xE0, 0x1B, 0x01, 0x1B, 0x09, + 0xA1, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0xB8, 0xD0, 0xB5, 0xE7, 0x00, 0x2B, + 0xB5, 0xDA, 0x6C, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x98, 0x47, 0xB8, 0xE7, 0x69, 0x4E, 0xF6, 0x1A, 0x01, 0x34, 0x24, 0x01, + 0x24, 0x09, 0xBD, 0xE7, 0xC1, 0x33, 0x99, 0x46, 0xEB, 0x58, 0x6A, 0x6F, + 0x94, 0x46, 0x63, 0x44, 0x1B, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x4A, 0x46, + 0xAB, 0x50, 0x3B, 0x02, 0x01, 0x21, 0x19, 0x43, 0x02, 0x23, 0x3B, 0x32, + 0x5F, 0x48, 0x7F, 0xF7, 0x2B, 0xFA, 0x80, 0x46, 0x4B, 0x46, 0xEB, 0x58, + 0x5B, 0x08, 0x99, 0x46, 0xCC, 0x23, 0xEB, 0x5A, 0x9A, 0x46, 0x00, 0x2B, + 0x05, 0xD1, 0x57, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x98, 0x47, 0x51, 0x46, 0x48, 0x46, 0xD5, 0xF7, 0x47, 0xFD, 0x43, 0x46, + 0x19, 0x80, 0x40, 0x46, 0x7F, 0xF7, 0x3C, 0xFA, 0xB0, 0xE7, 0x21, 0x00, + 0x03, 0x98, 0xD5, 0xF7, 0x3D, 0xFD, 0x04, 0x9B, 0x59, 0x80, 0x18, 0x00, + 0x7F, 0xF7, 0x32, 0xFA, 0x01, 0x3D, 0x3F, 0xD3, 0x53, 0x46, 0x2B, 0x40, + 0x9B, 0x00, 0x4B, 0x4A, 0x9C, 0x58, 0x00, 0x2C, 0xF6, 0xD0, 0x46, 0x23, + 0xE3, 0x5C, 0xBB, 0x42, 0xF2, 0xD1, 0x63, 0x6B, 0x42, 0x46, 0x9B, 0x1A, + 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x63, 0x4A, 0x46, 0x52, 0x6F, 0x94, 0x46, + 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x63, 0x63, 0x68, 0x42, 0x46, + 0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x4A, 0x46, 0x52, 0x6F, + 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x01, 0x9B, + 0xA3, 0x60, 0x04, 0x23, 0x52, 0x46, 0x02, 0x99, 0x38, 0x48, 0x7F, 0xF7, + 0xD9, 0xF9, 0x04, 0x90, 0x47, 0x23, 0xE3, 0x5C, 0x03, 0x70, 0x63, 0x6B, + 0x5B, 0x08, 0x03, 0x93, 0x42, 0x23, 0xE4, 0x5C, 0x00, 0x2C, 0xBC, 0xD1, + 0x2D, 0x4B, 0x9B, 0x6E, 0x05, 0x93, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x98, 0x47, 0xB4, 0xE7, 0x44, 0x46, 0x4D, 0x46, 0x6C, 0x67, 0x84, 0x23, + 0xEE, 0x52, 0x1D, 0x33, 0xEB, 0x5C, 0x04, 0x2B, 0x0D, 0xD0, 0xA6, 0x23, + 0xE8, 0x5C, 0x5B, 0x46, 0xC0, 0x1A, 0x43, 0x1E, 0x98, 0x41, 0xC0, 0xB2, + 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, + 0xF0, 0xBD, 0x7C, 0x33, 0xEB, 0x5A, 0x9E, 0x1B, 0xF3, 0x17, 0xF6, 0x18, + 0x5E, 0x40, 0x33, 0xB2, 0x9D, 0x22, 0x52, 0x00, 0x93, 0x42, 0x02, 0xDB, + 0x1D, 0x4B, 0x9B, 0x1B, 0x1B, 0xB2, 0x03, 0x2B, 0xE1, 0xDD, 0xE8, 0x23, + 0xEB, 0x58, 0x1A, 0x68, 0x00, 0x9B, 0xA8, 0x6F, 0x84, 0x46, 0x63, 0x44, + 0x19, 0x00, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x20, 0x00, 0x05, + 0x83, 0x42, 0xD2, 0xD8, 0x09, 0x01, 0x09, 0x09, 0x51, 0x1A, 0x09, 0x01, + 0x09, 0x09, 0x64, 0x29, 0xCB, 0xDD, 0x3F, 0x02, 0x01, 0x21, 0x39, 0x43, + 0xFF, 0x22, 0x0F, 0x48, 0x7F, 0xF7, 0xC2, 0xF9, 0xC3, 0xE7, 0xC0, 0x46, + 0x38, 0x27, 0x16, 0x00, 0x4C, 0x65, 0x61, 0x40, 0x4A, 0x65, 0x61, 0x40, + 0x4E, 0x65, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0xFA, 0x64, 0x61, 0x40, + 0xE1, 0x04, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0x59, 0x04, 0x00, 0x00, + 0x33, 0x06, 0x00, 0x00, 0x54, 0x27, 0x16, 0x00, 0x34, 0x06, 0x00, 0x00, + 0x71, 0x02, 0x00, 0x00, 0x2E, 0x06, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x89, 0xB0, 0x03, 0x90, + 0x89, 0x46, 0x81, 0x00, 0xC9, 0x4B, 0xCF, 0x58, 0x53, 0x1E, 0xDB, 0xB2, + 0x9B, 0x46, 0x00, 0x2A, 0x00, 0xD1, 0x26, 0xE1, 0x03, 0x02, 0x01, 0x22, + 0x13, 0x43, 0x07, 0x93, 0xC4, 0x4B, 0x98, 0x46, 0x9A, 0x46, 0x5C, 0x46, + 0x83, 0xE0, 0x6B, 0x46, 0x10, 0x21, 0x5B, 0x5E, 0x00, 0x2B, 0x06, 0xDB, + 0xA7, 0x21, 0x79, 0x5C, 0x77, 0x29, 0x02, 0xD8, 0x01, 0x31, 0xA7, 0x20, + 0x39, 0x54, 0xE9, 0x06, 0x00, 0xD5, 0xD7, 0xE0, 0xA4, 0x21, 0x29, 0x42, + 0x5B, 0xD1, 0x29, 0x07, 0x54, 0xD4, 0x00, 0x2B, 0x00, 0xDA, 0xCF, 0xE0, + 0xA7, 0x23, 0xFB, 0x5C, 0x77, 0x2B, 0x02, 0xD8, 0xA7, 0x23, 0x02, 0x21, + 0xF9, 0x54, 0x0F, 0x23, 0x1A, 0x40, 0x03, 0x25, 0x05, 0x9B, 0x1D, 0x40, + 0x03, 0x2A, 0x01, 0xD0, 0x08, 0x2A, 0x02, 0xD1, 0x03, 0x2D, 0x00, 0xD1, + 0xCE, 0xE0, 0xEC, 0x23, 0xFB, 0x58, 0x00, 0x2B, 0x00, 0xD0, 0xB7, 0xE0, + 0x6B, 0x1E, 0x01, 0x2B, 0x00, 0xD9, 0xB3, 0xE0, 0x05, 0x9B, 0xDE, 0x04, + 0xB6, 0x0D, 0x00, 0xD1, 0xAE, 0xE0, 0x04, 0x23, 0xFF, 0x22, 0x07, 0x99, + 0xA5, 0x48, 0x7F, 0xF7, 0x0B, 0xF9, 0xA5, 0x4A, 0xD5, 0x23, 0x5B, 0x00, + 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0xA2, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x1B, 0x88, 0x03, 0x80, 0x43, 0x88, 0x9B, 0x0A, 0x9B, 0x02, + 0x33, 0x43, 0x9F, 0x4E, 0x33, 0x40, 0x2D, 0x03, 0x1D, 0x43, 0xAA, 0x04, + 0x92, 0x0C, 0x06, 0x9B, 0x59, 0x42, 0x4B, 0x41, 0x9B, 0x03, 0x13, 0x43, + 0x43, 0x80, 0x7F, 0xF7, 0x17, 0xF9, 0x96, 0x4A, 0xD5, 0x23, 0x5B, 0x00, + 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x93, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x00, 0x22, 0x1A, 0x80, 0x7D, 0xE0, 0xFF, 0x22, 0x07, 0x99, + 0x91, 0x48, 0x7F, 0xF7, 0x1B, 0xF9, 0xA8, 0xF7, 0x3F, 0xFA, 0x90, 0x4B, + 0x1D, 0x68, 0x58, 0x46, 0x43, 0x46, 0xDB, 0x69, 0x98, 0x47, 0x03, 0x00, + 0x2D, 0x0A, 0xED, 0xB2, 0x00, 0x95, 0x4A, 0x46, 0x00, 0x21, 0x02, 0x98, + 0xFF, 0xF7, 0x52, 0xFC, 0x01, 0x3C, 0xE4, 0xB2, 0xFF, 0x2C, 0x00, 0xD1, + 0x99, 0xE0, 0x03, 0x98, 0xA8, 0xF7, 0x54, 0xFA, 0x00, 0x28, 0x00, 0xD1, + 0x93, 0xE0, 0xD5, 0x23, 0x5B, 0x00, 0x7E, 0x4A, 0xD2, 0x5C, 0xD3, 0x00, + 0x9B, 0x1A, 0x5B, 0x00, 0x80, 0x4A, 0x9A, 0x18, 0x15, 0x88, 0xAD, 0xB2, + 0x7F, 0x4A, 0x9A, 0x18, 0x16, 0x88, 0xB6, 0xB2, 0x7E, 0x4A, 0x9A, 0x18, + 0x12, 0x88, 0x92, 0xB2, 0x05, 0x92, 0x7D, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1B, 0x88, 0x9A, 0xB2, 0x04, 0x92, 0xDA, 0xB2, 0x93, 0x46, 0x5B, 0x04, + 0x5B, 0x0E, 0x02, 0x93, 0x4B, 0x46, 0xFA, 0x6E, 0x9B, 0x1A, 0x1B, 0x01, + 0x1B, 0x09, 0xC8, 0x2B, 0x0A, 0xD9, 0xA7, 0x23, 0xFB, 0x5C, 0x77, 0x2B, + 0x06, 0xD8, 0xA1, 0x22, 0xBA, 0x5C, 0x00, 0x2A, 0x02, 0xD1, 0x01, 0x33, + 0xA7, 0x32, 0xBB, 0x54, 0xEB, 0x07, 0xB0, 0xD4, 0x07, 0x23, 0x1A, 0x00, + 0x32, 0x40, 0x06, 0x92, 0x4A, 0x46, 0xFA, 0x66, 0x33, 0x42, 0x0B, 0xD0, + 0x5F, 0x4B, 0xDB, 0x69, 0x58, 0x46, 0x98, 0x47, 0x98, 0x22, 0xBB, 0x5A, + 0x1B, 0x18, 0xBB, 0x52, 0x02, 0x32, 0xBB, 0x5C, 0x01, 0x33, 0xBB, 0x54, + 0xAB, 0x07, 0x9A, 0xD4, 0x4B, 0x46, 0x3B, 0x67, 0x6B, 0x06, 0x02, 0xD5, + 0x06, 0x9B, 0x00, 0x2B, 0x0C, 0xD1, 0xF6, 0x10, 0xF2, 0xB2, 0x0E, 0x23, + 0x1E, 0x42, 0x00, 0xD0, 0x1F, 0xE7, 0x99, 0x33, 0xFB, 0x5C, 0x00, 0x2B, + 0x02, 0xD0, 0x01, 0x3B, 0xA7, 0x22, 0xBB, 0x54, 0xA8, 0xF7, 0xC6, 0xF9, + 0x53, 0x4B, 0x1D, 0x68, 0x58, 0x46, 0x53, 0x46, 0xDB, 0x69, 0x98, 0x47, + 0x03, 0x00, 0x2D, 0x0A, 0xED, 0xB2, 0x00, 0x95, 0x4A, 0x46, 0x01, 0x21, + 0x02, 0x98, 0xFF, 0xF7, 0xD9, 0xFB, 0x85, 0xE7, 0x47, 0x4A, 0xD5, 0x23, + 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x4D, 0x4A, + 0x94, 0x46, 0x63, 0x44, 0x19, 0x88, 0x8B, 0xB2, 0x04, 0x93, 0x05, 0x9A, + 0xD5, 0x04, 0xAD, 0x0D, 0x6B, 0x1C, 0xFF, 0x22, 0x07, 0x99, 0x48, 0x48, + 0x7F, 0xF7, 0x3A, 0xF8, 0x06, 0x00, 0x05, 0x70, 0x04, 0x9B, 0x46, 0x4A, + 0x94, 0x46, 0x63, 0x44, 0x19, 0x00, 0x01, 0x30, 0x2A, 0x00, 0xD5, 0xF7, + 0x27, 0xFF, 0x30, 0x00, 0x7F, 0xF7, 0x56, 0xF8, 0xC8, 0xE7, 0x62, 0x24, + 0x03, 0x9B, 0x5C, 0x43, 0x3F, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x23, 0x88, + 0x80, 0x22, 0x93, 0x43, 0x23, 0x80, 0x89, 0xF7, 0x59, 0xF9, 0x00, 0x28, + 0x18, 0xD0, 0x2F, 0x4B, 0x1B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x13, 0xD1, + 0x38, 0x4B, 0x1B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x0E, 0xD1, 0x37, 0x4B, + 0x1B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, 0x09, 0xD1, 0x35, 0x4B, 0x1B, 0x88, + 0x9B, 0xB2, 0x00, 0x2B, 0x04, 0xD1, 0x23, 0x88, 0x80, 0x22, 0x93, 0x43, + 0x13, 0x43, 0x23, 0x80, 0x9A, 0x23, 0xFB, 0x5C, 0x96, 0x2B, 0x03, 0xD9, + 0xEC, 0x23, 0xFB, 0x58, 0x00, 0x2B, 0x06, 0xD0, 0x09, 0xB0, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xAC, 0x33, + 0xFB, 0x5C, 0x00, 0x2B, 0xF4, 0xD0, 0x9B, 0x23, 0x00, 0x22, 0xFA, 0x54, + 0x26, 0x4A, 0x27, 0x4B, 0xD3, 0x5C, 0x5B, 0x07, 0x03, 0xD5, 0x26, 0x4B, + 0x1B, 0x78, 0x00, 0x2B, 0x05, 0xD1, 0x00, 0x23, 0x9A, 0x22, 0xBB, 0x54, + 0x02, 0x3A, 0xBB, 0x52, 0xE2, 0xE7, 0x03, 0x9B, 0x19, 0x02, 0x01, 0x23, + 0x19, 0x43, 0xFF, 0x22, 0x1F, 0x48, 0x7F, 0xF7, 0x17, 0xF8, 0x98, 0x23, + 0xF8, 0x5E, 0x9A, 0x23, 0xF9, 0x5C, 0xD5, 0xF7, 0x05, 0xFB, 0x06, 0x4A, + 0x2F, 0x23, 0xD3, 0x5C, 0xC0, 0x1A, 0x9B, 0x23, 0xF8, 0x54, 0x17, 0x4A, + 0x13, 0x78, 0x01, 0x3B, 0x13, 0x70, 0xE0, 0xE7, 0x38, 0x27, 0x16, 0x00, + 0x60, 0x92, 0x16, 0x00, 0x29, 0x06, 0x00, 0x00, 0x20, 0xA3, 0x16, 0x00, + 0x9A, 0x69, 0x61, 0x40, 0xFF, 0xCF, 0xFF, 0xFF, 0x2A, 0x06, 0x00, 0x00, + 0x0C, 0x01, 0x60, 0x40, 0x92, 0x69, 0x61, 0x40, 0x94, 0x69, 0x61, 0x40, + 0x96, 0x69, 0x61, 0x40, 0x98, 0x69, 0x61, 0x40, 0x9C, 0x69, 0x61, 0x40, + 0x27, 0x06, 0x00, 0x00, 0x00, 0x00, 0x61, 0x40, 0x0E, 0x65, 0x61, 0x40, + 0xA8, 0x69, 0x61, 0x40, 0xB6, 0x69, 0x61, 0x40, 0xC4, 0x69, 0x61, 0x40, + 0x7C, 0x1E, 0x16, 0x00, 0x9D, 0x02, 0x00, 0x00, 0x24, 0xE6, 0x10, 0x00, + 0x2F, 0x06, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x04, 0x00, + 0x88, 0x46, 0x16, 0x00, 0xFF, 0xF7, 0x84, 0xFA, 0x00, 0x28, 0x3F, 0xD1, + 0x22, 0x4D, 0x23, 0x4F, 0xEB, 0x5D, 0x04, 0x22, 0x93, 0x43, 0xEB, 0x55, + 0x32, 0x00, 0x41, 0x46, 0x20, 0x00, 0xFF, 0xF7, 0x1F, 0xFE, 0xEB, 0x5D, + 0x04, 0x22, 0x13, 0x43, 0xEB, 0x55, 0xA4, 0x00, 0x1C, 0x4B, 0xE4, 0x58, + 0xA7, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0x02, 0xD9, 0xA7, 0x23, 0x04, 0x22, + 0xE2, 0x54, 0xFE, 0xF7, 0x49, 0xFB, 0x00, 0x28, 0x02, 0xD1, 0x04, 0xBC, + 0x90, 0x46, 0xF0, 0xBD, 0xB1, 0xF7, 0x04, 0xFD, 0x00, 0x28, 0xF8, 0xD1, + 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x0A, 0xD1, 0xA7, 0x33, 0xE3, 0x5C, + 0x00, 0x2B, 0x06, 0xD1, 0xAA, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x02, 0xD0, + 0xA7, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xA8, 0x23, 0xE3, 0x5C, 0x00, 0x2B, + 0x03, 0xD1, 0x62, 0x68, 0x09, 0x4B, 0x1A, 0x60, 0xE1, 0xE7, 0xA8, 0xF7, + 0x81, 0xFB, 0x08, 0x4B, 0x18, 0x60, 0xF6, 0xE7, 0x32, 0x00, 0x41, 0x46, + 0x20, 0x00, 0xFF, 0xF7, 0xE5, 0xFD, 0xC8, 0xE7, 0x7C, 0x1E, 0x16, 0x00, + 0x9D, 0x02, 0x00, 0x00, 0x38, 0x27, 0x16, 0x00, 0x28, 0xE6, 0x10, 0x00, + 0x2C, 0xE6, 0x10, 0x00, 0x03, 0x4B, 0x04, 0x4A, 0x1A, 0x60, 0x04, 0x4B, + 0x04, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x04, 0x30, 0x34, 0x40, + 0xC1, 0x00, 0xA0, 0x00, 0x0C, 0x00, 0x58, 0x40, 0x14, 0x00, 0x7F, 0x30, + 0x01, 0x4B, 0x02, 0x4A, 0x1A, 0x60, 0x70, 0x47, 0x04, 0x30, 0x34, 0x40, + 0xC0, 0x00, 0xA0, 0x00, 0x10, 0xB5, 0x30, 0x4B, 0x1B, 0x78, 0x01, 0x2B, + 0x09, 0xD0, 0x01, 0x28, 0x08, 0xD0, 0x02, 0x28, 0x47, 0xD0, 0x2D, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x10, 0xBD, + 0xA8, 0xF7, 0x44, 0xFB, 0x27, 0x4B, 0x5B, 0x78, 0x00, 0x2B, 0x11, 0xD1, + 0x25, 0x4B, 0x01, 0x22, 0x5A, 0x70, 0x58, 0x60, 0x9B, 0x78, 0x01, 0x2B, + 0xF1, 0xD0, 0xFE, 0xF7, 0xA7, 0xFA, 0x00, 0x28, 0xED, 0xD1, 0xFE, 0xF7, + 0xC1, 0xFA, 0x00, 0x28, 0xE9, 0xD1, 0xFF, 0xF7, 0xC1, 0xFF, 0xE6, 0xE7, + 0x1C, 0x4A, 0x53, 0x68, 0xC3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x92, 0x78, + 0x00, 0x2A, 0x0B, 0xD1, 0x23, 0x2B, 0xDC, 0xD9, 0x17, 0x4B, 0x01, 0x32, + 0x9A, 0x70, 0x00, 0x22, 0x5A, 0x70, 0x58, 0x60, 0x16, 0x4B, 0x17, 0x4A, + 0x1A, 0x60, 0xD2, 0xE7, 0x01, 0x2A, 0xD0, 0xD1, 0x3B, 0x2B, 0xCE, 0xD9, + 0x10, 0x4B, 0x00, 0x22, 0x9A, 0x70, 0x01, 0x32, 0x5A, 0x70, 0x58, 0x60, + 0xFE, 0xF7, 0x7E, 0xFA, 0x00, 0x28, 0xC4, 0xD1, 0xFE, 0xF7, 0x98, 0xFA, + 0x00, 0x28, 0xC0, 0xD1, 0xFF, 0xF7, 0x98, 0xFF, 0xBD, 0xE7, 0x08, 0x4B, + 0x5B, 0x78, 0x01, 0x2B, 0x01, 0xD0, 0x00, 0x29, 0xB7, 0xD0, 0x05, 0x4B, + 0x00, 0x22, 0x5A, 0x70, 0x9A, 0x70, 0x01, 0x3A, 0x5A, 0x60, 0x04, 0x4B, + 0x04, 0x4A, 0x1A, 0x60, 0xAD, 0xE7, 0xC0, 0x46, 0xDC, 0xE6, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x04, 0x30, 0x34, 0x40, 0xC0, 0x00, 0xA0, 0x00, + 0xF0, 0xB5, 0x80, 0x00, 0x26, 0x4B, 0xC3, 0x58, 0xAB, 0x20, 0x18, 0x5C, + 0x00, 0x28, 0x27, 0xD0, 0x0D, 0x1C, 0xAA, 0x20, 0x80, 0x00, 0x81, 0x42, + 0x01, 0xD3, 0x22, 0x49, 0x0D, 0x1C, 0xAD, 0xB2, 0x9D, 0x21, 0x5F, 0x5C, + 0x00, 0x23, 0x00, 0x24, 0x01, 0x26, 0x02, 0xE0, 0x01, 0x33, 0x07, 0x2B, + 0x0C, 0xD0, 0xD8, 0xB2, 0x39, 0x00, 0x19, 0x41, 0x0E, 0x42, 0xF7, 0xD0, + 0x59, 0x00, 0x1A, 0x4C, 0x61, 0x5A, 0xA9, 0x42, 0x01, 0xD2, 0x04, 0x00, + 0xF0, 0xE7, 0x04, 0x00, 0x17, 0x4B, 0x18, 0x5D, 0x64, 0x00, 0x15, 0x4B, + 0xE3, 0x5A, 0xAB, 0x42, 0x00, 0xD9, 0x2B, 0x00, 0x13, 0x80, 0xF0, 0xBD, + 0x9C, 0x20, 0x1F, 0x5C, 0x00, 0x23, 0x00, 0x25, 0x01, 0x26, 0x02, 0xE0, + 0x01, 0x33, 0x06, 0x2B, 0x0C, 0xD0, 0xDC, 0xB2, 0x38, 0x00, 0x18, 0x41, + 0x06, 0x42, 0xF7, 0xD0, 0x58, 0x00, 0x0C, 0x4D, 0x28, 0x5A, 0x88, 0x42, + 0x01, 0xD2, 0x25, 0x00, 0xF0, 0xE7, 0x25, 0x00, 0x09, 0x4B, 0x58, 0x5D, + 0x6D, 0x00, 0x07, 0x4B, 0xEB, 0x5A, 0x8B, 0x42, 0x00, 0xD9, 0x0B, 0x00, + 0x13, 0x80, 0xDE, 0xE7, 0x38, 0x27, 0x16, 0x00, 0xA7, 0x02, 0x00, 0x00, + 0x40, 0xC9, 0x0D, 0x00, 0x50, 0xC9, 0x0D, 0x00, 0x2C, 0xC9, 0x0D, 0x00, + 0x38, 0xC9, 0x0D, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x85, 0xB0, 0x00, 0x90, 0x88, 0x46, 0x82, 0x00, + 0x95, 0x4B, 0xD4, 0x58, 0xAF, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD9, + 0x0D, 0xE1, 0x03, 0x02, 0x01, 0x27, 0x1F, 0x43, 0x88, 0x23, 0x99, 0x46, + 0xBB, 0x46, 0x2A, 0xE0, 0xAB, 0x00, 0x5D, 0x19, 0x6D, 0x00, 0x8E, 0x4B, + 0xEA, 0x18, 0x13, 0x88, 0x78, 0x21, 0x8B, 0x43, 0x60, 0x39, 0x0B, 0x43, + 0x13, 0x80, 0x8B, 0x4B, 0xEA, 0x18, 0x83, 0x79, 0xDB, 0x00, 0x11, 0x39, + 0x0B, 0x43, 0x13, 0x80, 0x82, 0x88, 0x88, 0x4B, 0xEB, 0x18, 0x1A, 0x80, + 0x87, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x2B, 0x88, 0x5B, 0x04, 0x5B, 0x0C, + 0x2B, 0x80, 0xAE, 0x22, 0xA3, 0x5C, 0x59, 0x42, 0x4B, 0x41, 0xA3, 0x54, + 0x01, 0x32, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0xAF, 0x23, 0xE3, 0x5C, + 0x01, 0x2B, 0x00, 0xD9, 0xDB, 0xE0, 0x9E, 0x23, 0xE5, 0x5C, 0x6D, 0x00, + 0x10, 0x33, 0xE3, 0x5C, 0xED, 0x18, 0xED, 0xB2, 0x20, 0x00, 0x40, 0x30, + 0x81, 0xF7, 0x84, 0xFA, 0x00, 0x28, 0xC7, 0xD1, 0xEC, 0x23, 0xE3, 0x58, + 0x00, 0x2B, 0x39, 0xD0, 0x9A, 0x7A, 0x00, 0x2A, 0x36, 0xD1, 0xAC, 0x32, + 0xA2, 0x5C, 0x00, 0x2A, 0x00, 0xD1, 0xC2, 0xE0, 0x9A, 0x78, 0x05, 0x3A, + 0x03, 0x2A, 0x00, 0xD8, 0xBD, 0xE0, 0x1A, 0x88, 0xA9, 0x00, 0x4D, 0x19, + 0x6D, 0x00, 0x69, 0x49, 0x68, 0x18, 0x01, 0x88, 0xDE, 0x79, 0x0F, 0x23, + 0x33, 0x40, 0xDB, 0x00, 0x78, 0x26, 0xB1, 0x43, 0x0B, 0x43, 0x03, 0x80, + 0x64, 0x4B, 0xE9, 0x18, 0xD3, 0x00, 0x05, 0x22, 0x13, 0x43, 0x9B, 0xB2, + 0x0B, 0x80, 0xEC, 0x23, 0xE3, 0x58, 0x1A, 0x89, 0x62, 0x4B, 0xEB, 0x18, + 0x1A, 0x80, 0x60, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x2B, 0x88, 0x5B, 0x04, + 0x5B, 0x0C, 0x2B, 0x80, 0xAE, 0x22, 0xA3, 0x5C, 0x59, 0x42, 0x4B, 0x41, + 0xA3, 0x54, 0x01, 0x32, 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0xAF, 0xE7, + 0xAC, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x8B, 0xE0, 0x96, 0x23, + 0xE1, 0x5A, 0x01, 0x27, 0x00, 0x29, 0x39, 0xD0, 0x02, 0xAB, 0x9A, 0x1D, + 0x00, 0x98, 0xFF, 0xF7, 0x07, 0xFF, 0xAB, 0x00, 0x5D, 0x19, 0x6D, 0x00, + 0x4B, 0x4B, 0xEA, 0x18, 0x13, 0x88, 0x78, 0x21, 0x8B, 0x43, 0xC0, 0x00, + 0x03, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0x48, 0x4B, 0xEA, 0x18, 0x02, 0xAB, + 0xDB, 0x88, 0xDB, 0x00, 0x1F, 0x43, 0x04, 0x23, 0x1F, 0x43, 0xBF, 0xB2, + 0x17, 0x80, 0x94, 0x22, 0xA1, 0x5A, 0x45, 0x4B, 0xEB, 0x18, 0x19, 0x80, + 0x42, 0x4B, 0x9C, 0x46, 0x65, 0x44, 0x2B, 0x88, 0x5B, 0x04, 0x5B, 0x0C, + 0x2B, 0x80, 0x02, 0xAB, 0xDB, 0x88, 0x96, 0x20, 0x21, 0x5A, 0xC9, 0x1A, + 0x21, 0x52, 0xA1, 0x5A, 0x5B, 0x18, 0xA3, 0x52, 0x1A, 0x32, 0xA3, 0x5C, + 0x59, 0x42, 0x4B, 0x41, 0xA3, 0x54, 0x01, 0x32, 0xA3, 0x5C, 0x01, 0x33, + 0xA3, 0x54, 0x6B, 0xE7, 0x27, 0x00, 0x48, 0x37, 0x80, 0x23, 0x1B, 0x05, + 0x9A, 0x46, 0x0F, 0xE0, 0x52, 0x00, 0x8A, 0x42, 0x1E, 0xDA, 0x01, 0x23, + 0xFF, 0x22, 0x59, 0x46, 0x31, 0x48, 0x7E, 0xF7, 0x7F, 0xFD, 0x01, 0x23, + 0x03, 0x70, 0x7E, 0xF7, 0xA5, 0xFD, 0x30, 0x89, 0x88, 0xF7, 0x98, 0xFE, + 0x38, 0x00, 0x81, 0xF7, 0xE7, 0xF9, 0x06, 0x1E, 0x46, 0xD0, 0x4B, 0x46, + 0xE2, 0x5A, 0x00, 0x2A, 0x08, 0xD0, 0x43, 0x68, 0x59, 0x1C, 0x05, 0xD0, + 0x41, 0x46, 0xCB, 0x1A, 0x19, 0x01, 0x09, 0x09, 0x51, 0x45, 0xDD, 0xD9, + 0x73, 0x89, 0x9F, 0x04, 0xBF, 0x0F, 0x9B, 0x05, 0x9B, 0x0D, 0x9A, 0x46, + 0x90, 0x23, 0xE3, 0x58, 0x00, 0x2B, 0x2C, 0xD0, 0x8C, 0x23, 0xE3, 0x58, + 0x00, 0x2B, 0x06, 0xD0, 0x1D, 0x4B, 0x9B, 0x6E, 0x01, 0x93, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x8C, 0x23, 0xE6, 0x50, 0x96, 0x23, + 0x52, 0x46, 0xE2, 0x52, 0x32, 0x89, 0x02, 0x3B, 0xE2, 0x52, 0x01, 0x2F, + 0x00, 0xD0, 0x02, 0x27, 0x96, 0x23, 0xE1, 0x5A, 0x00, 0x29, 0x00, 0xD0, + 0x78, 0xE7, 0xAF, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x06, 0xD0, 0xA8, 0x23, + 0xE3, 0x5C, 0x00, 0x2B, 0x02, 0xD1, 0xA8, 0x33, 0x01, 0x22, 0xE2, 0x54, + 0x05, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, + 0xF0, 0xBD, 0x90, 0x33, 0xE6, 0x50, 0xDC, 0xE7, 0x01, 0x27, 0xE3, 0xE7, + 0x38, 0x27, 0x16, 0x00, 0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, + 0xD0, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0xCE, 0x69, 0x61, 0x40, + 0x2B, 0x06, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x82, 0x00, + 0x4B, 0x4B, 0xD4, 0x58, 0x90, 0x23, 0xE2, 0x58, 0x00, 0x2A, 0x00, 0xD1, + 0x84, 0xE0, 0x49, 0x4B, 0x59, 0x88, 0x49, 0x4B, 0x1B, 0x78, 0x99, 0x42, + 0x73, 0xD9, 0x9E, 0x23, 0xE3, 0x5C, 0x5B, 0x00, 0xAD, 0x21, 0x61, 0x5C, + 0x5B, 0x18, 0xDB, 0xB2, 0x56, 0x89, 0xB6, 0x05, 0xB2, 0x0D, 0x90, 0x46, + 0x02, 0x22, 0x90, 0x26, 0x41, 0x49, 0x01, 0x91, 0xAF, 0x21, 0x8A, 0x46, + 0x01, 0x39, 0x89, 0x46, 0x10, 0x39, 0x8C, 0x46, 0x00, 0x90, 0x0C, 0xE0, + 0x63, 0x46, 0xE5, 0x5C, 0x6D, 0x00, 0xAD, 0x23, 0xE1, 0x5C, 0x4B, 0x42, + 0x4B, 0x41, 0x5B, 0x19, 0xDB, 0xB2, 0x01, 0x3A, 0xD2, 0xB2, 0x00, 0x2A, + 0x31, 0xD0, 0x99, 0x00, 0xCB, 0x18, 0x5B, 0x00, 0x35, 0x49, 0x5F, 0x18, + 0x39, 0x88, 0x89, 0xB2, 0xA5, 0x59, 0x2D, 0x89, 0x8D, 0x42, 0xE7, 0xD8, + 0x45, 0x44, 0xA9, 0x42, 0xE4, 0xDA, 0x31, 0x49, 0x5D, 0x18, 0x29, 0x88, + 0x01, 0x98, 0x01, 0x40, 0x29, 0x80, 0x2F, 0x49, 0x5D, 0x18, 0x29, 0x88, + 0x49, 0x04, 0x49, 0x0C, 0x2D, 0x48, 0x01, 0x43, 0x89, 0xB2, 0x29, 0x80, + 0x2C, 0x49, 0x8B, 0x46, 0x5B, 0x44, 0x19, 0x88, 0x78, 0x20, 0x81, 0x43, + 0x19, 0x80, 0x00, 0x23, 0x3B, 0x80, 0x53, 0x46, 0xE3, 0x5C, 0x01, 0x3B, + 0x51, 0x46, 0x63, 0x54, 0x4B, 0x46, 0xE3, 0x5C, 0x59, 0x42, 0x4B, 0x41, + 0x49, 0x46, 0x63, 0x54, 0xC0, 0xE7, 0x00, 0x98, 0x00, 0x02, 0x01, 0x25, + 0x28, 0x43, 0x81, 0xB2, 0x01, 0x23, 0xFF, 0x32, 0x1F, 0x48, 0x7E, 0xF7, + 0xA5, 0xFC, 0x05, 0x70, 0x7E, 0xF7, 0xCC, 0xFC, 0x1D, 0x48, 0x80, 0xF7, + 0xA3, 0xFD, 0x90, 0x23, 0xE3, 0x58, 0x18, 0x89, 0x88, 0xF7, 0xBA, 0xFD, + 0x8C, 0x23, 0xE3, 0x58, 0x00, 0x2B, 0x0B, 0xD0, 0x90, 0x22, 0xA3, 0x50, + 0x8C, 0x23, 0x00, 0x22, 0xE2, 0x50, 0x03, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x96, 0x22, 0x00, 0x21, + 0xA1, 0x52, 0xEF, 0xE7, 0x8C, 0x23, 0xE3, 0x58, 0x00, 0x2B, 0xF0, 0xD0, + 0x0E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0xE9, 0xE7, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, 0x9C, 0xE5, 0x10, 0x00, + 0xF8, 0xE1, 0x10, 0x00, 0x07, 0xE0, 0xFF, 0xFF, 0xCE, 0x69, 0x61, 0x40, + 0xCC, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, + 0xCA, 0x69, 0x61, 0x40, 0x2B, 0x06, 0x00, 0x00, 0x18, 0xD1, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x03, 0x00, 0x00, 0x20, 0x9A, 0x6C, 0x00, 0x2A, + 0x00, 0xD0, 0x70, 0x47, 0xA7, 0x32, 0x9A, 0x5C, 0x00, 0x2A, 0xFA, 0xD1, + 0xA8, 0x32, 0x98, 0x5C, 0x43, 0x42, 0x58, 0x41, 0xC0, 0xB2, 0xF4, 0xE7, + 0x04, 0x4B, 0x18, 0x68, 0x04, 0x4B, 0x1B, 0x68, 0x18, 0x43, 0x43, 0x1E, + 0x98, 0x41, 0xC0, 0xB2, 0x70, 0x47, 0xC0, 0x46, 0x24, 0x27, 0x16, 0x00, + 0x18, 0x27, 0x16, 0x00, 0x70, 0xB5, 0x84, 0xB0, 0x82, 0x00, 0x12, 0x4B, + 0xD5, 0x58, 0x01, 0xA9, 0x11, 0x4C, 0x02, 0x01, 0x13, 0x1A, 0x9B, 0x00, + 0xE3, 0x18, 0xDE, 0x88, 0x4E, 0x80, 0x1E, 0x7B, 0x4E, 0x70, 0x1E, 0x89, + 0xCE, 0x80, 0x5E, 0x89, 0x0E, 0x81, 0x9B, 0x88, 0x8B, 0x80, 0x12, 0x1A, + 0x92, 0x00, 0xA2, 0x18, 0x53, 0x7B, 0x01, 0x22, 0x53, 0x40, 0x36, 0x22, + 0xAA, 0x5C, 0x5A, 0x40, 0x01, 0x23, 0x13, 0x40, 0x2E, 0x22, 0x13, 0x43, + 0x0B, 0x70, 0xA6, 0xF7, 0x0F, 0xF9, 0x04, 0xB0, 0x70, 0xBD, 0xC0, 0x46, + 0x64, 0xA2, 0x16, 0x00, 0xC0, 0xA0, 0x16, 0x00, 0xF8, 0xB5, 0x06, 0x00, + 0x0C, 0x00, 0x05, 0x0A, 0xAA, 0x00, 0x18, 0x4B, 0xD7, 0x58, 0x36, 0x23, + 0xFB, 0x5C, 0x00, 0x2B, 0x0C, 0xD0, 0x2B, 0x01, 0x5B, 0x1B, 0x9B, 0x00, + 0x14, 0x4A, 0xD3, 0x18, 0x5B, 0x7B, 0x00, 0x2B, 0x08, 0xD1, 0x01, 0x21, + 0x30, 0x00, 0x7E, 0xF7, 0x77, 0xFF, 0xF8, 0xBD, 0xE8, 0xB2, 0xB2, 0xF7, + 0x73, 0xF9, 0xEE, 0xE7, 0x08, 0x23, 0x14, 0x22, 0x00, 0x21, 0x0D, 0x48, + 0x7E, 0xF7, 0xF6, 0xFB, 0x04, 0x70, 0x2B, 0x00, 0x80, 0x33, 0x43, 0x80, + 0x00, 0x23, 0xC3, 0x80, 0x3C, 0x33, 0xFB, 0x5C, 0x03, 0x71, 0xD0, 0xF7, + 0x4B, 0xFA, 0x2B, 0x01, 0x5D, 0x1B, 0xAD, 0x00, 0x03, 0x4B, 0x5D, 0x19, + 0x00, 0x23, 0x6B, 0x73, 0xDD, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0xC0, 0xA0, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x93, 0xB0, 0x05, 0x00, + 0x03, 0x91, 0x93, 0x46, 0x1E, 0x00, 0x1C, 0xAB, 0x1B, 0x88, 0x99, 0x46, + 0x1D, 0xAB, 0x1B, 0x88, 0x9A, 0x46, 0x04, 0x0A, 0xA2, 0x00, 0xCB, 0x4B, + 0xD7, 0x58, 0x01, 0x00, 0xCA, 0x48, 0x7E, 0xF7, 0x7B, 0xFB, 0xB3, 0x1F, + 0xC9, 0x4A, 0x9B, 0xB2, 0x93, 0x42, 0x03, 0xD8, 0x5B, 0x46, 0x33, 0x43, + 0xDB, 0x07, 0x0D, 0xD5, 0x39, 0x23, 0xFB, 0x5C, 0xE0, 0xB2, 0x12, 0x22, + 0x17, 0x21, 0xA6, 0xF7, 0xF6, 0xF8, 0x13, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x5E, 0x45, 0xEF, 0xD9, + 0x4B, 0x46, 0x00, 0x2B, 0xEC, 0xD0, 0x73, 0x08, 0x4B, 0x45, 0xE9, 0xD3, + 0x53, 0x46, 0x28, 0x2B, 0xE6, 0xD8, 0x4B, 0x44, 0x5B, 0x00, 0xB3, 0x42, + 0xE2, 0xD2, 0x28, 0x00, 0x7E, 0xF7, 0x70, 0xFF, 0x01, 0x28, 0x00, 0xD1, + 0x85, 0xE0, 0xB5, 0x4B, 0x22, 0x01, 0x11, 0x1B, 0x89, 0x00, 0xCE, 0x52, + 0x5B, 0x18, 0x5E, 0x80, 0x4A, 0x46, 0x1A, 0x81, 0x9E, 0x80, 0x5A, 0x46, + 0xDA, 0x80, 0x52, 0x46, 0x5A, 0x81, 0x03, 0x9A, 0x1A, 0x73, 0x36, 0x23, + 0xFB, 0x5C, 0x00, 0x22, 0x04, 0x92, 0x01, 0x2B, 0x77, 0xD0, 0x0A, 0x96, + 0x0B, 0x96, 0x36, 0x23, 0xF8, 0x5C, 0x4A, 0x46, 0x02, 0x2A, 0x00, 0xD9, + 0x02, 0x22, 0x90, 0x46, 0x80, 0x44, 0x0A, 0xAB, 0x42, 0x46, 0x0C, 0x92, + 0x49, 0x46, 0x49, 0x00, 0x0D, 0x91, 0x00, 0x21, 0x99, 0x74, 0x80, 0x31, + 0x8C, 0x46, 0xA4, 0x44, 0x61, 0x46, 0x19, 0x82, 0x01, 0x21, 0x04, 0x9A, + 0x11, 0x40, 0xD9, 0x74, 0x06, 0xAB, 0x06, 0x96, 0x42, 0x46, 0x07, 0x92, + 0x62, 0x46, 0x9A, 0x81, 0x00, 0x28, 0x5A, 0xD1, 0x58, 0x46, 0x08, 0x90, + 0x36, 0x23, 0xFB, 0x5C, 0x01, 0x2B, 0x5A, 0xD0, 0x08, 0x9B, 0x10, 0x93, + 0x11, 0x93, 0x06, 0x9B, 0x0F, 0x93, 0x06, 0xA8, 0xD4, 0xF7, 0x5A, 0xFA, + 0x80, 0x46, 0x00, 0x28, 0x72, 0xD1, 0x0A, 0xAA, 0x10, 0x98, 0x23, 0x01, + 0x1B, 0x1B, 0x9B, 0x00, 0x8D, 0x49, 0xCB, 0x18, 0x98, 0x62, 0x0F, 0x99, + 0x8C, 0x46, 0x59, 0x62, 0x0C, 0x99, 0xD9, 0x62, 0x0D, 0x99, 0x19, 0x63, + 0x12, 0x8A, 0x9A, 0x86, 0x00, 0x22, 0x9A, 0x63, 0x36, 0x33, 0x1A, 0x70, + 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x6B, 0xD1, 0x80, 0xB2, 0x23, 0x01, + 0x1B, 0x1B, 0x9B, 0x00, 0x81, 0x4A, 0xD3, 0x18, 0xD8, 0x80, 0x36, 0x23, + 0xFB, 0x5C, 0x01, 0x2B, 0x67, 0xD0, 0xD9, 0x23, 0x9B, 0x00, 0xFB, 0x18, + 0x1A, 0x88, 0x7D, 0x4B, 0x9A, 0x42, 0x79, 0xD1, 0x43, 0x46, 0x01, 0x2B, + 0x00, 0xD1, 0xDF, 0xE0, 0x02, 0x2B, 0x00, 0xD1, 0xBC, 0xE0, 0x00, 0x2B, + 0x00, 0xD1, 0xAE, 0xE0, 0x77, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, + 0x10, 0x00, 0x98, 0x47, 0x5D, 0xE7, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, + 0x70, 0x4A, 0xD3, 0x18, 0x00, 0x22, 0x5A, 0x73, 0x71, 0xE7, 0xE0, 0xB2, + 0xAF, 0xF7, 0xAE, 0xFE, 0x43, 0x08, 0x04, 0x93, 0x81, 0xE7, 0x04, 0x9A, + 0x31, 0x00, 0x58, 0x46, 0xA5, 0xF7, 0x2E, 0xFD, 0x9F, 0xE7, 0x06, 0x9B, + 0x9B, 0x46, 0x01, 0x3B, 0x98, 0x46, 0x80, 0x44, 0x5B, 0x46, 0x00, 0x2B, + 0x05, 0xD1, 0x66, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, + 0x98, 0x47, 0x59, 0x46, 0x40, 0x46, 0xD4, 0xF7, 0x1B, 0xFE, 0x08, 0x91, + 0x0A, 0xAB, 0xDA, 0x7C, 0x01, 0x21, 0x4A, 0x40, 0xDA, 0x74, 0x0C, 0x9A, + 0x03, 0x32, 0x0C, 0x92, 0x0D, 0x9A, 0x03, 0x32, 0x0D, 0x92, 0x07, 0x9B, + 0x05, 0x93, 0x03, 0x33, 0x07, 0x93, 0x81, 0xE7, 0x28, 0x00, 0x7E, 0xF7, + 0xAD, 0xFE, 0x80, 0x46, 0x01, 0x28, 0x02, 0xD0, 0x01, 0x23, 0x98, 0x46, + 0x83, 0xE7, 0x0A, 0xA8, 0xD4, 0xF7, 0x6A, 0xF9, 0x00, 0x28, 0x00, 0xD0, + 0x7D, 0xE7, 0x02, 0x23, 0x98, 0x46, 0x7A, 0xE7, 0x63, 0x46, 0x99, 0xB2, + 0x80, 0xB2, 0x04, 0x9A, 0xA5, 0xF7, 0x0A, 0xFD, 0x8D, 0xE7, 0x43, 0x1C, + 0x04, 0x93, 0x0F, 0x9B, 0x9B, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x49, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x23, 0x01, + 0x1B, 0x1B, 0x9B, 0x00, 0x42, 0x4A, 0xD3, 0x18, 0x05, 0x93, 0x59, 0x46, + 0x04, 0x98, 0xD4, 0xF7, 0xDB, 0xFD, 0x05, 0x9B, 0xD9, 0x80, 0x7E, 0xE7, + 0xE3, 0xB2, 0x9B, 0x46, 0x18, 0x00, 0x95, 0xF7, 0x71, 0xFF, 0x05, 0x90, + 0x0F, 0x9B, 0x04, 0x93, 0x00, 0x28, 0x05, 0xD1, 0x3A, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x05, 0x99, 0x04, 0x98, + 0xD4, 0xF7, 0xC4, 0xFD, 0x00, 0x29, 0x00, 0xD0, 0x6E, 0xE7, 0x3C, 0x22, + 0x62, 0x43, 0x31, 0x4B, 0x9B, 0x18, 0xD9, 0x88, 0x11, 0x9B, 0x04, 0x93, + 0x10, 0x9B, 0x05, 0x93, 0x04, 0x9B, 0x05, 0x9A, 0x9A, 0x1A, 0x8A, 0x18, + 0x92, 0xB2, 0x58, 0x46, 0x95, 0xF7, 0x9C, 0xFF, 0x04, 0x90, 0x0F, 0x9B, + 0x9B, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x29, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x3C, 0x23, 0x63, 0x43, 0x23, 0x4A, + 0xD3, 0x18, 0x05, 0x93, 0x59, 0x46, 0x04, 0x98, 0xD4, 0xF7, 0x9C, 0xFD, + 0x05, 0x9B, 0xD9, 0x80, 0x46, 0xE7, 0x39, 0x33, 0xFA, 0x5C, 0xE0, 0xB2, + 0x17, 0x21, 0xA5, 0xF7, 0x87, 0xFF, 0x2F, 0x21, 0x28, 0x00, 0x7E, 0xF7, + 0xD5, 0xFD, 0xAA, 0xE6, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x2B, 0x0A, 0xD0, + 0xE0, 0xB2, 0xFF, 0xF7, 0x13, 0xFE, 0x28, 0x00, 0x96, 0xF7, 0x3A, 0xFB, + 0x2E, 0x21, 0x28, 0x00, 0x7E, 0xF7, 0xC6, 0xFD, 0x9B, 0xE6, 0x3C, 0x22, + 0x62, 0x43, 0x10, 0x4B, 0x9B, 0x18, 0xD9, 0x88, 0xE0, 0xB2, 0x03, 0x9B, + 0x9F, 0x07, 0xFF, 0x0F, 0x01, 0x97, 0x53, 0x46, 0x00, 0x93, 0x4B, 0x46, + 0x32, 0x00, 0xAF, 0xF7, 0x5F, 0xFC, 0xE3, 0xE7, 0x39, 0x23, 0xFB, 0x5C, + 0xE0, 0xB2, 0x20, 0x22, 0x17, 0x21, 0xA5, 0xF7, 0x7A, 0xFF, 0x20, 0x21, + 0x28, 0x00, 0xFF, 0xF7, 0x1B, 0xFE, 0x7E, 0xE6, 0x64, 0xA2, 0x16, 0x00, + 0x05, 0x06, 0x00, 0x00, 0x3A, 0x05, 0x00, 0x00, 0xC0, 0xA0, 0x16, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xD6, 0x46, + 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x8A, 0xB0, 0x06, 0x00, 0x88, 0x46, + 0x91, 0x46, 0x1D, 0x00, 0x12, 0xAB, 0x1B, 0x88, 0x9C, 0x46, 0x04, 0x0A, + 0xA2, 0x00, 0x9C, 0x4B, 0xD7, 0x58, 0x9C, 0x4B, 0x22, 0x01, 0x11, 0x1B, + 0x89, 0x00, 0x40, 0x46, 0xC8, 0x52, 0x5B, 0x18, 0x4A, 0x46, 0x5A, 0x80, + 0x1D, 0x81, 0x62, 0x46, 0x5A, 0x81, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x22, + 0x92, 0x46, 0x01, 0x2B, 0x00, 0xD1, 0x87, 0xE0, 0x23, 0x01, 0x1B, 0x1B, + 0x9B, 0x00, 0x91, 0x4A, 0xD3, 0x18, 0x00, 0x22, 0x1A, 0x73, 0xA7, 0xF7, + 0x29, 0xFE, 0x50, 0x44, 0x03, 0x01, 0x06, 0xD5, 0x23, 0x01, 0x1B, 0x1B, + 0x9B, 0x00, 0x8B, 0x4A, 0xD3, 0x18, 0x02, 0x22, 0x1A, 0x73, 0x02, 0xAB, + 0x4A, 0x46, 0x02, 0x92, 0x42, 0x46, 0x5A, 0x60, 0x2A, 0x00, 0x02, 0x2D, + 0x00, 0xD9, 0x02, 0x22, 0x9A, 0x60, 0x6D, 0x00, 0x05, 0x95, 0x00, 0x23, + 0x02, 0xAA, 0x93, 0x74, 0x25, 0x00, 0x80, 0x35, 0x15, 0x82, 0x53, 0x46, + 0x5B, 0x08, 0x9A, 0x46, 0x01, 0x23, 0x52, 0x46, 0x13, 0x40, 0x02, 0xAA, + 0xD3, 0x74, 0xD9, 0x23, 0x9B, 0x00, 0xFB, 0x18, 0x1A, 0x88, 0x7B, 0x4B, + 0x9A, 0x42, 0x58, 0xD1, 0x36, 0x23, 0xFB, 0x5C, 0x01, 0x2B, 0x6A, 0xD0, + 0x02, 0xA8, 0xD4, 0xF7, 0x63, 0xF8, 0x00, 0x28, 0x00, 0xD0, 0x72, 0xE0, + 0x08, 0x98, 0x22, 0x01, 0x12, 0x1B, 0x92, 0x00, 0x71, 0x4B, 0x9B, 0x18, + 0x98, 0x62, 0x07, 0x99, 0x59, 0x62, 0x04, 0x9A, 0xDA, 0x62, 0x05, 0x9A, + 0x00, 0x92, 0x1A, 0x63, 0x02, 0xAA, 0x12, 0x8A, 0x9A, 0x86, 0x00, 0x22, + 0x9A, 0x63, 0x36, 0x33, 0x1A, 0x70, 0x36, 0x23, 0xFB, 0x5C, 0x00, 0x2B, + 0x6A, 0xD1, 0x80, 0xB2, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x65, 0x4A, + 0xD3, 0x18, 0xD8, 0x80, 0x07, 0x9D, 0x9D, 0x80, 0x36, 0x23, 0xFB, 0x5C, + 0x01, 0x2B, 0x63, 0xD0, 0xD9, 0x23, 0x9B, 0x00, 0xFB, 0x18, 0x1A, 0x88, + 0x5F, 0x4B, 0x9A, 0x42, 0x00, 0xD0, 0x72, 0xE0, 0x23, 0x01, 0x1B, 0x1B, + 0x9B, 0x00, 0x5B, 0x4A, 0xD3, 0x18, 0x01, 0x22, 0x5A, 0x73, 0x36, 0x23, + 0xFB, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0xA4, 0xE0, 0xE0, 0xB2, 0xFF, 0xF7, + 0x43, 0xFD, 0x30, 0x00, 0x96, 0xF7, 0x6A, 0xFA, 0x2E, 0x21, 0x30, 0x00, + 0x7E, 0xF7, 0xF6, 0xFC, 0x0A, 0xB0, 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, + 0xA2, 0x46, 0xF0, 0xBD, 0xE0, 0xB2, 0xAF, 0xF7, 0x1F, 0xFD, 0x82, 0x46, + 0x72, 0xE7, 0xE0, 0xB2, 0x95, 0xF7, 0x40, 0xFE, 0x02, 0x00, 0x03, 0x00, + 0x02, 0x98, 0x82, 0x42, 0x07, 0xD2, 0x00, 0x92, 0x11, 0x00, 0xD4, 0xF7, + 0x13, 0xFC, 0x43, 0x1C, 0x00, 0x9A, 0x5A, 0x43, 0x93, 0xB2, 0x03, 0x9A, + 0x93, 0x42, 0x93, 0xD8, 0x02, 0x93, 0x03, 0x93, 0x90, 0xE7, 0x02, 0xAB, + 0xDB, 0x7C, 0x01, 0x22, 0x53, 0x40, 0x02, 0xAA, 0xD3, 0x74, 0x04, 0x9B, + 0x03, 0x33, 0x04, 0x93, 0x05, 0x9B, 0x00, 0x93, 0x03, 0x33, 0x05, 0x93, + 0x86, 0xE7, 0x08, 0x23, 0x14, 0x22, 0x00, 0x21, 0x3A, 0x48, 0x7E, 0xF7, + 0x4B, 0xF9, 0x20, 0x23, 0x03, 0x70, 0x45, 0x80, 0x00, 0x23, 0xC3, 0x80, + 0x3C, 0x33, 0xFB, 0x5C, 0x03, 0x71, 0xCF, 0xF7, 0xA1, 0xFF, 0xBF, 0xE7, + 0x89, 0xB2, 0x80, 0xB2, 0x52, 0x46, 0xA5, 0xF7, 0x83, 0xFB, 0x8F, 0xE7, + 0x43, 0x1C, 0x98, 0x46, 0x00, 0x2D, 0x05, 0xD1, 0x2F, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x23, 0x01, 0x1B, 0x1B, + 0x9B, 0x00, 0x28, 0x4A, 0x91, 0x46, 0x99, 0x44, 0x29, 0x00, 0x40, 0x46, + 0xD4, 0xF7, 0x56, 0xFC, 0x4B, 0x46, 0xD9, 0x80, 0x84, 0xE7, 0xE3, 0xB2, + 0x98, 0x46, 0x18, 0x00, 0x95, 0xF7, 0xEC, 0xFD, 0x05, 0x1E, 0x07, 0x9B, + 0x99, 0x46, 0x05, 0xD1, 0x21, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x29, 0x00, 0x48, 0x46, 0xD4, 0xF7, 0x40, 0xFC, + 0x00, 0x29, 0x00, 0xD0, 0x76, 0xE7, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, + 0x16, 0x4A, 0xD3, 0x18, 0xD9, 0x88, 0x09, 0x9B, 0x00, 0x93, 0x08, 0x9B, + 0x01, 0x93, 0x00, 0x9B, 0x01, 0x9A, 0x9A, 0x1A, 0x8A, 0x18, 0x92, 0xB2, + 0x40, 0x46, 0x95, 0xF7, 0x17, 0xFE, 0x81, 0x46, 0x07, 0x9B, 0x98, 0x46, + 0x00, 0x2B, 0x05, 0xD1, 0x0F, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x23, 0x01, 0x1B, 0x1B, 0x9B, 0x00, 0x08, 0x4D, + 0xED, 0x18, 0x41, 0x46, 0x48, 0x46, 0xD4, 0xF7, 0x17, 0xFC, 0xE9, 0x80, + 0x4E, 0xE7, 0xE0, 0xB2, 0x01, 0x33, 0x00, 0x22, 0x17, 0x21, 0x95, 0xF7, + 0x89, 0xFC, 0x53, 0xE7, 0x64, 0xA2, 0x16, 0x00, 0xC0, 0xA0, 0x16, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x00, 0x24, 0x00, 0x20, 0x0E, 0x4E, + 0xA1, 0x27, 0xAF, 0x23, 0x98, 0x46, 0x0C, 0xE0, 0x42, 0x46, 0x9D, 0x5C, + 0x45, 0x19, 0xED, 0xB2, 0x48, 0x33, 0x18, 0x00, 0x80, 0xF7, 0x18, 0xFE, + 0x28, 0x18, 0xC0, 0xB2, 0x01, 0x34, 0x07, 0x2C, 0x07, 0xD0, 0xA3, 0x00, + 0x9B, 0x59, 0x00, 0x2B, 0xF8, 0xD0, 0xDA, 0x5D, 0x00, 0x2A, 0xF5, 0xD1, + 0xEA, 0xE7, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x38, 0x27, 0x16, 0x00, + 0xF0, 0xB5, 0x85, 0xB0, 0x40, 0x4B, 0x1A, 0x78, 0x01, 0x2A, 0x01, 0xD0, + 0x05, 0xB0, 0xF0, 0xBD, 0x3E, 0x4B, 0x1D, 0x78, 0x3E, 0x4B, 0x1B, 0x68, + 0x00, 0x24, 0x5B, 0x05, 0x08, 0xD5, 0x3C, 0x48, 0x03, 0x68, 0x3C, 0x49, + 0x19, 0x40, 0x80, 0x23, 0x1B, 0x01, 0x0B, 0x43, 0x03, 0x60, 0x80, 0x34, + 0x39, 0x4B, 0x1B, 0x68, 0x9B, 0x05, 0x09, 0xD4, 0x37, 0x48, 0x03, 0x68, + 0x37, 0x49, 0x19, 0x40, 0x80, 0x23, 0x9B, 0x00, 0x0B, 0x43, 0x03, 0x60, + 0x40, 0x23, 0x1C, 0x43, 0x34, 0x4B, 0x18, 0x68, 0x34, 0x4B, 0x19, 0x68, + 0x34, 0x4B, 0x1E, 0x68, 0x8B, 0x07, 0x31, 0xD4, 0xF0, 0x23, 0x03, 0x40, + 0x30, 0x2B, 0x0E, 0xD0, 0x20, 0x2B, 0x1F, 0xD0, 0x10, 0x2B, 0x29, 0xD1, + 0x2F, 0x4B, 0xDB, 0x69, 0xB3, 0x42, 0x25, 0xD0, 0xF0, 0x23, 0x07, 0x00, + 0x9F, 0x43, 0x3B, 0x00, 0x20, 0x27, 0x3B, 0x43, 0x0A, 0xE0, 0x2A, 0x4B, + 0xDB, 0x6B, 0xB3, 0x42, 0x1A, 0xD0, 0xF0, 0x23, 0x02, 0x00, 0x9A, 0x43, + 0x13, 0x00, 0x20, 0x22, 0x13, 0x43, 0x1D, 0x3A, 0x22, 0x4F, 0x3F, 0x68, + 0xBF, 0x07, 0x1F, 0xD4, 0x1F, 0x4F, 0x3B, 0x60, 0x14, 0x43, 0x1D, 0xE0, + 0x20, 0x4B, 0xDB, 0x6A, 0xB3, 0x42, 0x07, 0xD0, 0xF0, 0x23, 0x02, 0x00, + 0x9A, 0x43, 0x13, 0x00, 0x10, 0x22, 0x13, 0x43, 0x0E, 0x3A, 0xEB, 0xE7, + 0x01, 0x2D, 0xA3, 0xD1, 0x17, 0x4B, 0x1B, 0x68, 0x02, 0x93, 0x00, 0x23, + 0x01, 0x93, 0x00, 0x90, 0x33, 0x00, 0x00, 0x22, 0x16, 0x48, 0x80, 0xF7, + 0x47, 0xF9, 0x00, 0x2C, 0x96, 0xD0, 0x0D, 0xE0, 0x04, 0x27, 0x3C, 0x43, + 0x01, 0x2D, 0x00, 0xD0, 0x90, 0xE7, 0x0E, 0x4D, 0x2D, 0x68, 0x02, 0x95, + 0x01, 0x93, 0x00, 0x90, 0x33, 0x00, 0x0E, 0x48, 0x80, 0xF7, 0x36, 0xF9, + 0x32, 0x00, 0x21, 0x00, 0x0C, 0x48, 0x80, 0xF7, 0x31, 0xF9, 0x81, 0xE7, + 0xB4, 0xE5, 0x10, 0x00, 0xBC, 0xE6, 0x10, 0x00, 0x4C, 0x20, 0x62, 0x40, + 0xFF, 0xF3, 0xFF, 0xFF, 0x58, 0x20, 0x62, 0x40, 0xFF, 0xFD, 0xFF, 0xFF, + 0x08, 0x05, 0x62, 0x40, 0x74, 0x20, 0x62, 0x40, 0x78, 0x20, 0x62, 0x40, + 0xD8, 0x97, 0x16, 0x00, 0x24, 0xD1, 0x10, 0x00, 0x3C, 0xD1, 0x10, 0x00, + 0x70, 0x47, 0x00, 0x00, 0x03, 0x4B, 0x04, 0x4A, 0x13, 0x60, 0x81, 0x22, + 0x52, 0x00, 0x98, 0x5C, 0x70, 0x47, 0xC0, 0x46, 0x80, 0x2A, 0x16, 0x00, + 0x0C, 0xE7, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x17, 0x4B, + 0x17, 0x4A, 0x1A, 0x60, 0x17, 0x48, 0x80, 0xF7, 0x53, 0xFD, 0x45, 0x1E, + 0x6D, 0xB2, 0x40, 0xB2, 0x00, 0x28, 0x1F, 0xDD, 0x11, 0x4F, 0x14, 0x4B, + 0x98, 0x46, 0x14, 0x4E, 0x0A, 0xE0, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x43, 0x46, 0x9B, 0x6E, 0x98, 0x47, 0x09, 0xE0, 0x01, 0x3D, 0x6D, 0xB2, + 0x6B, 0x1C, 0x0F, 0xD0, 0x38, 0x68, 0x0C, 0x30, 0x80, 0xF7, 0x56, 0xFC, + 0x04, 0x1E, 0xEE, 0xD0, 0x61, 0x6A, 0x30, 0x00, 0x80, 0xF7, 0xE2, 0xF8, + 0x63, 0x6A, 0x00, 0x2B, 0xEE, 0xD0, 0x20, 0x00, 0x98, 0x47, 0xEB, 0xE7, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x10, 0xE7, 0x10, 0x00, + 0x64, 0x2A, 0x16, 0x00, 0x70, 0x2A, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xC0, 0xD3, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x78, 0x21, 0x88, 0xF7, + 0xAB, 0xF9, 0x05, 0x00, 0x08, 0x4B, 0xC0, 0x18, 0x78, 0x22, 0x55, 0x21, + 0x7C, 0xF7, 0x42, 0xF8, 0x29, 0x00, 0x20, 0x00, 0x88, 0xF7, 0xBA, 0xF9, + 0x01, 0x00, 0x20, 0x00, 0xB0, 0xF7, 0x1E, 0xFD, 0x02, 0x48, 0x80, 0xF7, + 0xB7, 0xF8, 0x70, 0xBD, 0x00, 0x00, 0x61, 0x40, 0x4C, 0xD1, 0x10, 0x00, + 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, + 0x83, 0xB0, 0x04, 0x00, 0x83, 0x00, 0x76, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1D, 0x68, 0x00, 0x2D, 0x00, 0xD1, 0xDE, 0xE0, 0x4B, 0x23, 0xEB, 0x5C, + 0x00, 0x2B, 0x05, 0xD0, 0x71, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x28, 0x00, 0x50, 0x30, 0x80, 0xF7, 0x02, 0xFC, + 0x07, 0x00, 0x00, 0x21, 0x20, 0x00, 0x88, 0xF7, 0xDF, 0xF9, 0x63, 0x01, + 0x6A, 0x4A, 0x9A, 0x18, 0x12, 0x68, 0xD2, 0x0F, 0x49, 0x21, 0x69, 0x5C, + 0x01, 0x26, 0x71, 0x40, 0x91, 0x42, 0x4F, 0xD0, 0x66, 0x49, 0x8A, 0x46, + 0x9A, 0x44, 0x51, 0x46, 0x09, 0x68, 0x89, 0xB2, 0x8B, 0x46, 0x64, 0x4E, + 0xB1, 0x46, 0x99, 0x44, 0x4E, 0x46, 0x36, 0x68, 0xB6, 0xB2, 0xB0, 0x46, + 0x61, 0x4E, 0x9E, 0x19, 0x36, 0x68, 0xB6, 0x03, 0xB1, 0x0F, 0x01, 0x91, + 0x56, 0x46, 0x36, 0x68, 0x36, 0x0C, 0x36, 0x04, 0xB4, 0x46, 0x56, 0x46, + 0x61, 0x46, 0x31, 0x60, 0x49, 0x46, 0x09, 0x68, 0x09, 0x0C, 0x09, 0x04, + 0x8C, 0x46, 0x49, 0x46, 0x66, 0x46, 0x0E, 0x60, 0x00, 0x2F, 0x67, 0xD0, + 0x00, 0x2A, 0x4C, 0xD1, 0x52, 0x4A, 0x94, 0x46, 0x9C, 0x44, 0x62, 0x46, + 0x12, 0x68, 0x91, 0x46, 0xBA, 0x88, 0x12, 0x04, 0x49, 0x46, 0x0F, 0x04, + 0x3F, 0x0C, 0x3A, 0x43, 0x61, 0x46, 0x0A, 0x60, 0x00, 0x28, 0x0A, 0xD0, + 0x4B, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1F, 0x68, 0x82, 0x88, 0x04, 0x32, + 0x12, 0x04, 0x38, 0x04, 0x00, 0x0C, 0x02, 0x43, 0x1A, 0x60, 0x5B, 0x46, + 0x00, 0x2B, 0x4C, 0xD1, 0x43, 0x46, 0x00, 0x2B, 0x4E, 0xD1, 0x03, 0xB0, + 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, + 0x3E, 0x49, 0x8A, 0x46, 0x9A, 0x44, 0x51, 0x46, 0x09, 0x68, 0x09, 0x0C, + 0x8B, 0x46, 0x3C, 0x49, 0x89, 0x46, 0x99, 0x44, 0x49, 0x46, 0x0E, 0x68, + 0x31, 0x0C, 0x88, 0x46, 0x39, 0x49, 0x5E, 0x18, 0x36, 0x68, 0x36, 0x03, + 0xB1, 0x0F, 0x01, 0x91, 0x51, 0x46, 0x09, 0x68, 0x09, 0x04, 0x09, 0x0C, + 0x8C, 0x46, 0x51, 0x46, 0x66, 0x46, 0x0E, 0x60, 0x49, 0x46, 0x09, 0x68, + 0x09, 0x04, 0x09, 0x0C, 0x8C, 0x46, 0x49, 0x46, 0x66, 0x46, 0x0E, 0x60, + 0xAE, 0xE7, 0x2C, 0x4A, 0x94, 0x46, 0x9C, 0x44, 0x62, 0x46, 0x12, 0x68, + 0x12, 0x0C, 0x12, 0x04, 0xBF, 0x88, 0x3A, 0x43, 0x61, 0x46, 0x0A, 0x60, + 0x00, 0x28, 0xC0, 0xD0, 0x26, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1F, 0x68, + 0x82, 0x88, 0x04, 0x32, 0x92, 0xB2, 0x38, 0x0C, 0x00, 0x04, 0x02, 0x43, + 0x1A, 0x60, 0xB4, 0xE7, 0x00, 0x28, 0xB2, 0xD0, 0x00, 0x2A, 0xEF, 0xD1, + 0xA4, 0xE7, 0x59, 0x46, 0x20, 0x00, 0x88, 0xF7, 0x17, 0xF9, 0xAD, 0xE7, + 0x46, 0x23, 0xE9, 0x5C, 0x09, 0x02, 0x45, 0x3B, 0x19, 0x43, 0x05, 0x33, + 0xFF, 0x22, 0x1A, 0x48, 0x7D, 0xF7, 0xDE, 0xFE, 0x07, 0x00, 0x43, 0x46, + 0x03, 0x80, 0x58, 0x23, 0xEA, 0x5C, 0x01, 0x32, 0x2B, 0x8F, 0x53, 0x43, + 0x83, 0x70, 0x01, 0x99, 0xC1, 0x70, 0x14, 0x4B, 0x1A, 0x68, 0x01, 0x32, + 0x1A, 0x60, 0x00, 0x29, 0x04, 0xD1, 0x3C, 0x71, 0x38, 0x00, 0x7D, 0xF7, + 0xF3, 0xFE, 0x90, 0xE7, 0x0F, 0x49, 0x0B, 0x68, 0x01, 0x33, 0x0B, 0x60, + 0x01, 0x99, 0x0E, 0x48, 0x7F, 0xF7, 0xC4, 0xFF, 0xF1, 0xE7, 0x04, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x80, 0xE7, + 0x54, 0x27, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, 0xD0, 0x05, 0x60, 0x40, + 0xD8, 0x05, 0x60, 0x40, 0xDC, 0x05, 0x60, 0x40, 0xD4, 0x05, 0x60, 0x40, + 0x35, 0x06, 0x00, 0x00, 0xC4, 0xE6, 0x10, 0x00, 0xC0, 0xE6, 0x10, 0x00, + 0x54, 0xD1, 0x10, 0x00, 0x70, 0xB5, 0x0C, 0x00, 0x15, 0x00, 0x10, 0x00, + 0x7E, 0xF7, 0x74, 0xFA, 0x00, 0x28, 0x03, 0xD0, 0x16, 0x38, 0xC0, 0xB2, + 0x03, 0x28, 0x07, 0xD8, 0x21, 0x88, 0x04, 0x39, 0x89, 0xB2, 0x20, 0x79, + 0x88, 0xF7, 0xFA, 0xF8, 0x00, 0x20, 0x70, 0xBD, 0x2E, 0x0A, 0x06, 0x23, + 0x2A, 0x00, 0x31, 0x00, 0x1B, 0x48, 0x7D, 0xF7, 0x89, 0xFE, 0x05, 0x00, + 0x23, 0x88, 0x83, 0x80, 0xA3, 0x78, 0x83, 0x70, 0x21, 0x79, 0x01, 0x31, + 0x09, 0x02, 0x80, 0x36, 0x89, 0x19, 0x01, 0x80, 0xE1, 0x78, 0x0A, 0x03, + 0x14, 0x4B, 0x1A, 0x42, 0x06, 0xD0, 0xC0, 0x20, 0x13, 0x4B, 0xDE, 0x6E, + 0x00, 0x23, 0x00, 0x22, 0x80, 0x01, 0xB0, 0x47, 0x2B, 0x88, 0x0F, 0x4A, + 0x13, 0x40, 0xE2, 0x78, 0x12, 0x03, 0x13, 0x43, 0x2B, 0x80, 0xE3, 0x78, + 0x00, 0x2B, 0x03, 0xD1, 0x28, 0x00, 0xCF, 0xF7, 0xC5, 0xFC, 0xD1, 0xE7, + 0xA2, 0x78, 0x20, 0x88, 0x09, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x21, + 0x7B, 0xF7, 0xE0, 0xFE, 0xE1, 0x78, 0x00, 0x29, 0xF0, 0xD0, 0x06, 0x48, + 0x7F, 0xF7, 0x5A, 0xFF, 0xEC, 0xE7, 0xC0, 0x46, 0x07, 0x11, 0x00, 0x00, + 0xFF, 0xCF, 0xFF, 0xFF, 0x28, 0x19, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, + 0x6C, 0xD1, 0x10, 0x00, 0xF0, 0xB5, 0x89, 0xB0, 0x04, 0x1E, 0x00, 0xD1, + 0xAB, 0xE0, 0x46, 0x23, 0xC6, 0x5C, 0xB2, 0x00, 0x5A, 0x4B, 0xD5, 0x58, + 0x00, 0x2D, 0x00, 0xD1, 0xA9, 0xE0, 0x43, 0x68, 0x02, 0x3B, 0x1B, 0x01, + 0x1B, 0x09, 0xC3, 0x62, 0x28, 0x30, 0xD2, 0xF7, 0xE9, 0xFD, 0x62, 0x68, + 0x61, 0x6B, 0x8A, 0x42, 0x13, 0xD0, 0x45, 0x23, 0xE3, 0x5C, 0x5B, 0x00, + 0x5B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x9A, 0x42, 0x0B, 0xD0, 0x4F, 0x4B, + 0x9B, 0x7A, 0xA3, 0x75, 0x4A, 0x23, 0xE3, 0x5C, 0x03, 0x2B, 0x00, 0xD0, + 0x8D, 0xE0, 0x47, 0x33, 0x00, 0x22, 0xE2, 0x54, 0x89, 0xE0, 0x4A, 0x4B, + 0x00, 0x93, 0x01, 0x92, 0xA3, 0x68, 0x02, 0x93, 0x6B, 0x46, 0x1E, 0x76, + 0x47, 0x23, 0xE0, 0x5C, 0x03, 0x01, 0x33, 0x43, 0x04, 0x93, 0x00, 0x23, + 0x9C, 0x46, 0x03, 0x93, 0xA7, 0x7D, 0x6B, 0x46, 0x1F, 0x75, 0x67, 0x46, + 0x5F, 0x75, 0x9F, 0x75, 0x8A, 0x42, 0x00, 0xD1, 0x73, 0xE0, 0x10, 0x23, + 0x6A, 0x46, 0xD3, 0x75, 0x0C, 0x3B, 0x6A, 0x46, 0x93, 0x76, 0xD0, 0x76, + 0x01, 0x23, 0x53, 0x76, 0x68, 0x46, 0xD3, 0xF7, 0x9B, 0xF8, 0x48, 0x22, + 0xA3, 0x5C, 0x01, 0x33, 0xA3, 0x54, 0x01, 0x21, 0x63, 0x68, 0x62, 0x6B, + 0x93, 0x42, 0x35, 0xD0, 0x47, 0x23, 0xE3, 0x5C, 0x33, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x5B, 0x01, 0x1A, 0x68, 0x32, 0x48, 0x02, 0x40, 0x09, 0x04, + 0x0A, 0x43, 0x1A, 0x60, 0x9F, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0xB6, 0xD1, + 0x2B, 0x6D, 0x5F, 0x1C, 0x7F, 0x08, 0xAB, 0x6F, 0x9B, 0xB2, 0x62, 0x22, + 0x56, 0x43, 0x2B, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0xAB, 0x6F, 0x1B, 0x0C, + 0x29, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0x80, 0x23, 0x9B, 0x01, 0x9F, 0x42, + 0x2B, 0xD3, 0x27, 0x49, 0x38, 0x00, 0xD4, 0xF7, 0xF9, 0xF8, 0x00, 0x29, + 0x19, 0xD0, 0x25, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0x22, 0x49, 0x38, 0x00, + 0xD4, 0xF7, 0x6A, 0xF8, 0x01, 0x30, 0x22, 0x4B, 0x03, 0x43, 0x9B, 0xB2, + 0x33, 0x80, 0x90, 0xE7, 0x20, 0x4B, 0x2A, 0x6D, 0x9A, 0x42, 0xC5, 0xD8, + 0x4A, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0xC1, 0xD1, 0x44, 0x33, 0xE1, 0x5C, + 0x01, 0x31, 0xC9, 0xB2, 0xBC, 0xE7, 0x18, 0x4B, 0x9C, 0x46, 0x66, 0x44, + 0x15, 0x49, 0x38, 0x00, 0xD4, 0xF7, 0x50, 0xF8, 0x15, 0x4B, 0x03, 0x43, + 0x9B, 0xB2, 0x33, 0x80, 0x77, 0xE7, 0x01, 0x37, 0x7F, 0x08, 0xBF, 0xB2, + 0x10, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0x37, 0x80, 0x6F, 0xE7, 0x11, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x09, 0xB0, + 0xF0, 0xBD, 0x0F, 0x23, 0x6A, 0x46, 0xD3, 0x75, 0x0D, 0x3B, 0x8A, 0xE7, + 0x38, 0x27, 0x16, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x5D, 0x74, 0x0B, 0x00, + 0x2F, 0x00, 0x03, 0x02, 0xFF, 0xFF, 0x00, 0xFF, 0xFA, 0x64, 0x61, 0x40, + 0xFC, 0x64, 0x61, 0x40, 0x71, 0x02, 0x00, 0x00, 0x10, 0x65, 0x61, 0x40, + 0x00, 0x80, 0xFF, 0xFF, 0xE1, 0x04, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xF8, 0xB5, 0x06, 0x00, 0x14, 0x4B, 0x1D, 0x68, 0x00, 0x2D, 0x05, 0xD1, + 0x5D, 0x68, 0x00, 0x2D, 0x02, 0xD1, 0x00, 0x24, 0x20, 0x00, 0xF8, 0xBD, + 0xAB, 0x68, 0x2A, 0x69, 0x94, 0x46, 0x63, 0x44, 0x1F, 0x00, 0x0E, 0x49, + 0x18, 0x00, 0xD4, 0xF7, 0x09, 0xF8, 0x6C, 0x6B, 0x04, 0x19, 0x0B, 0x49, + 0x38, 0x00, 0xD4, 0xF7, 0x89, 0xF8, 0xB3, 0x68, 0x9C, 0x46, 0x8C, 0x45, + 0x89, 0x41, 0x49, 0x42, 0x64, 0x18, 0xB1, 0x8A, 0x89, 0x04, 0x49, 0x0F, + 0x04, 0x29, 0xE3, 0xD0, 0x20, 0x00, 0xFC, 0xF7, 0x63, 0xFF, 0x04, 0x00, + 0xDE, 0xE7, 0xC0, 0x46, 0x54, 0x27, 0x16, 0x00, 0x71, 0x02, 0x00, 0x00, + 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, + 0x8B, 0xB0, 0xBD, 0x4B, 0x1C, 0x68, 0xA1, 0x46, 0xBC, 0x4B, 0xA3, 0x82, + 0x4C, 0x23, 0xE3, 0x5A, 0x5B, 0x00, 0x62, 0x6C, 0x94, 0x46, 0x63, 0x44, + 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x60, 0xA7, 0xF7, 0x5D, 0xF9, 0x04, 0x90, + 0xB6, 0x4B, 0x1B, 0x68, 0x01, 0x93, 0xB6, 0x4B, 0x1B, 0x68, 0x02, 0x93, + 0xB5, 0x4B, 0x1B, 0x68, 0x07, 0x93, 0xB5, 0x4B, 0x1B, 0x68, 0x06, 0x93, + 0x00, 0x25, 0x00, 0x20, 0x00, 0x27, 0x00, 0x23, 0x03, 0x93, 0x00, 0x26, + 0xB1, 0x4B, 0x98, 0x46, 0xA1, 0x23, 0x9A, 0x46, 0x02, 0x3B, 0x9B, 0x46, + 0x0F, 0xE0, 0x01, 0x37, 0xFF, 0xB2, 0xAF, 0x22, 0x9E, 0x5C, 0x86, 0x19, + 0xF6, 0xB2, 0x48, 0x33, 0x18, 0x00, 0x80, 0xF7, 0x5F, 0xFA, 0x30, 0x18, + 0xC0, 0xB2, 0x01, 0x26, 0x01, 0x35, 0x07, 0x2D, 0x0E, 0xD0, 0xAB, 0x00, + 0x42, 0x46, 0x9B, 0x58, 0x00, 0x2B, 0xF7, 0xD0, 0x52, 0x46, 0x9A, 0x5C, + 0x00, 0x2A, 0xF3, 0xD1, 0x5A, 0x46, 0x9A, 0x5C, 0x01, 0x2A, 0xE2, 0xD1, + 0x03, 0x92, 0xE0, 0xE7, 0x9F, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x00, 0x23, + 0x01, 0x32, 0xBA, 0x42, 0x5B, 0x41, 0x02, 0x33, 0x9C, 0x4A, 0x13, 0x70, + 0x83, 0x42, 0x08, 0xD8, 0x00, 0x22, 0x03, 0x28, 0x01, 0xD9, 0xC2, 0x1E, + 0xD2, 0xB2, 0xC0, 0x1A, 0x10, 0x18, 0x96, 0x4B, 0x18, 0x70, 0x50, 0x23, + 0x00, 0x22, 0xE2, 0x54, 0x95, 0x4B, 0x19, 0x00, 0x41, 0x31, 0xFF, 0x31, + 0x00, 0x25, 0x04, 0xE0, 0x01, 0x35, 0xED, 0xB2, 0x40, 0x33, 0x8B, 0x42, + 0x07, 0xD0, 0x1A, 0x78, 0x09, 0x2A, 0xF9, 0xD1, 0x00, 0x2F, 0xF5, 0xD0, + 0x01, 0x37, 0xFF, 0xB2, 0xF2, 0xE7, 0xB0, 0xF7, 0x5F, 0xFA, 0x05, 0x90, + 0x80, 0x46, 0x02, 0x9B, 0x01, 0x9A, 0x13, 0x43, 0x5A, 0x1E, 0x93, 0x41, + 0xDB, 0xB2, 0x9B, 0x46, 0x87, 0x4B, 0x1B, 0x78, 0x9A, 0x46, 0x00, 0x2B, + 0x00, 0xD1, 0x79, 0xE0, 0x85, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x28, 0xD9, + 0x02, 0x2B, 0x64, 0xD0, 0x8C, 0xF7, 0xDC, 0xF8, 0x82, 0x46, 0x00, 0x28, + 0x00, 0xD1, 0x1B, 0xE2, 0x00, 0x23, 0x9A, 0x46, 0x7F, 0x4B, 0x23, 0x64, + 0x02, 0x22, 0x62, 0x63, 0xFA, 0x22, 0x92, 0x01, 0xA2, 0x62, 0x19, 0x00, + 0x23, 0x61, 0x43, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x77, 0xE0, 0xA3, 0x6A, + 0x62, 0x6B, 0x98, 0x1A, 0x40, 0x00, 0x04, 0x9B, 0x9C, 0x46, 0x60, 0x44, + 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x01, 0x2D, 0x00, 0xD1, 0x84, 0xE1, + 0x00, 0x22, 0x20, 0x00, 0xFC, 0xF7, 0x9A, 0xFF, 0x11, 0xE0, 0x71, 0x4B, + 0x23, 0x64, 0x80, 0x22, 0x62, 0x63, 0xA2, 0x62, 0x6C, 0x4A, 0x01, 0x21, + 0x11, 0x70, 0x16, 0x22, 0xA2, 0x75, 0x23, 0x61, 0x04, 0x98, 0x2C, 0x30, + 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x00, 0x23, 0x9A, 0x46, 0x69, 0x4E, + 0x4C, 0x25, 0x69, 0x4F, 0x48, 0x46, 0xD1, 0xF7, 0x33, 0xFF, 0x00, 0x28, + 0x00, 0xD1, 0xB0, 0xE1, 0x31, 0x00, 0x20, 0x69, 0xD3, 0xF7, 0x16, 0xFF, + 0x63, 0x68, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, + 0x63, 0x5B, 0x5B, 0x00, 0xE2, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, + 0x1B, 0x09, 0xE3, 0x60, 0xA3, 0x7D, 0x5D, 0x4A, 0xD2, 0x78, 0x9B, 0x18, + 0xA3, 0x75, 0x59, 0x4B, 0x9C, 0x46, 0x66, 0x44, 0xBE, 0x42, 0xDD, 0xD1, + 0x0B, 0xB0, 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, + 0xF0, 0xBD, 0x56, 0x4B, 0x1B, 0x68, 0x5B, 0x00, 0x23, 0x64, 0x02, 0x23, + 0x63, 0x63, 0x4E, 0x33, 0xA3, 0x62, 0x4C, 0x4B, 0x03, 0x22, 0x1A, 0x70, + 0x49, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x8B, 0xE7, 0xFD, 0xF7, 0x12, 0xF8, + 0x00, 0x28, 0x04, 0xD1, 0x4D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x00, 0xD1, + 0x11, 0xE1, 0x43, 0x46, 0x00, 0x2B, 0x2C, 0xD0, 0x4A, 0x4B, 0x23, 0x64, + 0x04, 0x23, 0x63, 0x63, 0x08, 0x33, 0xA3, 0x62, 0x8C, 0xF7, 0x56, 0xF8, + 0x00, 0x28, 0x00, 0xD0, 0x7C, 0xE7, 0x23, 0x6C, 0x23, 0x61, 0x20, 0x00, + 0xFF, 0xF7, 0xAE, 0xFE, 0x53, 0x46, 0x00, 0x2B, 0x00, 0xD1, 0x95, 0xE1, + 0xC0, 0x30, 0x00, 0x01, 0x00, 0x09, 0x60, 0x60, 0x18, 0x26, 0x4F, 0x46, + 0x65, 0x68, 0x00, 0x22, 0x21, 0x69, 0x38, 0x00, 0xFC, 0xF7, 0x20, 0xFF, + 0x63, 0x68, 0xAB, 0x42, 0x00, 0xD1, 0x4A, 0xE1, 0x75, 0x19, 0x2D, 0x01, + 0x2D, 0x09, 0x65, 0x60, 0x18, 0x36, 0x90, 0x2E, 0xEE, 0xD1, 0xB9, 0x46, + 0x8B, 0xE7, 0x5B, 0x46, 0x00, 0x2B, 0x21, 0xD0, 0x33, 0x4B, 0x1B, 0x68, + 0x5B, 0x00, 0x23, 0x64, 0xE3, 0x6B, 0x63, 0x63, 0x23, 0x6B, 0xA3, 0x62, + 0x03, 0x9B, 0x00, 0x2B, 0x05, 0xD0, 0x2F, 0x4B, 0x23, 0x64, 0x1A, 0x23, + 0x63, 0x63, 0x46, 0x33, 0xA3, 0x62, 0xB2, 0x46, 0x00, 0x2E, 0x00, 0xD1, + 0xD4, 0xE0, 0x05, 0x9A, 0x92, 0x46, 0x01, 0x9B, 0x00, 0x2B, 0x00, 0xD1, + 0xCE, 0xE0, 0x28, 0x4B, 0x1B, 0x68, 0xA1, 0x6A, 0x8C, 0x46, 0x63, 0x44, + 0xA3, 0x62, 0xC7, 0xE0, 0x15, 0x4B, 0x1B, 0x78, 0x5A, 0x00, 0x9B, 0x18, + 0x5B, 0x00, 0xDB, 0xB2, 0x01, 0x2F, 0x49, 0xD9, 0x21, 0x4A, 0x22, 0x64, + 0x1A, 0x22, 0x62, 0x63, 0x2C, 0x32, 0xA2, 0x62, 0x00, 0x2B, 0x03, 0xD0, + 0x1E, 0x4B, 0x23, 0x64, 0x14, 0x23, 0x63, 0x63, 0x00, 0x2D, 0x03, 0xD0, + 0x1C, 0x4B, 0x23, 0x64, 0x10, 0x23, 0x63, 0x63, 0x63, 0x6B, 0xA3, 0x62, + 0xDA, 0x46, 0xA9, 0xE0, 0xF8, 0xE6, 0x10, 0x00, 0x00, 0xA0, 0xFF, 0xFF, + 0x24, 0x27, 0x16, 0x00, 0x18, 0x27, 0x16, 0x00, 0x28, 0x27, 0x16, 0x00, + 0x20, 0x27, 0x16, 0x00, 0x38, 0x27, 0x16, 0x00, 0xB1, 0xE6, 0x10, 0x00, + 0xD1, 0xE6, 0x10, 0x00, 0x70, 0xA6, 0x16, 0x00, 0xB4, 0xE6, 0x10, 0x00, + 0xB3, 0xE6, 0x10, 0x00, 0xC4, 0x09, 0x00, 0x00, 0x00, 0x71, 0x02, 0x00, + 0xE2, 0x04, 0x00, 0x00, 0x6A, 0x18, 0x00, 0x00, 0x7C, 0x91, 0x0D, 0x00, + 0x04, 0xE2, 0x10, 0x00, 0xB2, 0xE6, 0x10, 0x00, 0xF9, 0x15, 0x00, 0x00, + 0x08, 0xE2, 0x10, 0x00, 0xDC, 0x82, 0x00, 0x00, 0x14, 0xE2, 0x10, 0x00, + 0xE8, 0x80, 0x00, 0x00, 0xF6, 0x54, 0x00, 0x00, 0xF2, 0x2B, 0x00, 0x00, + 0x85, 0x4A, 0x5A, 0x43, 0x03, 0x99, 0x00, 0x29, 0x33, 0xD0, 0x84, 0x49, + 0x09, 0x68, 0x49, 0x00, 0x8A, 0x42, 0x29, 0xD8, 0x8A, 0x1A, 0x22, 0x64, + 0x28, 0x22, 0xD3, 0x1A, 0x63, 0x63, 0xE3, 0x6A, 0xA3, 0x62, 0x7F, 0x4B, + 0x22, 0x6C, 0x9A, 0x42, 0x4B, 0xD9, 0xDA, 0x46, 0x00, 0x2F, 0x5D, 0xD0, + 0x07, 0x9B, 0x00, 0x2B, 0x00, 0xD1, 0xC4, 0xE0, 0x59, 0x68, 0x06, 0x9A, + 0x00, 0x2A, 0x00, 0xD1, 0xC4, 0xE0, 0x78, 0x4B, 0x99, 0x42, 0x00, 0xD1, + 0xBE, 0xE0, 0x52, 0x68, 0x53, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x20, + 0x00, 0x05, 0x83, 0x42, 0x00, 0xD8, 0xBA, 0xE0, 0x8B, 0x1A, 0x1B, 0x01, + 0x00, 0xD1, 0xB6, 0xE0, 0x11, 0x00, 0xB1, 0xE0, 0x6F, 0x4B, 0x23, 0x64, + 0x1A, 0x23, 0x63, 0x63, 0xD5, 0xE7, 0x00, 0x2D, 0x0D, 0xD0, 0x6D, 0x4B, + 0x23, 0x64, 0x10, 0x23, 0x63, 0x63, 0xA3, 0x62, 0x01, 0x2D, 0x02, 0xD0, + 0x01, 0x23, 0x9A, 0x46, 0xD0, 0xE7, 0x40, 0x33, 0x01, 0x22, 0xE2, 0x54, + 0xF8, 0xE7, 0x67, 0x49, 0x09, 0x68, 0x49, 0x00, 0x8A, 0x42, 0x0D, 0xD8, + 0x8A, 0x1A, 0x22, 0x64, 0xA2, 0x6B, 0xD3, 0x1A, 0x63, 0x63, 0xE3, 0x6A, + 0xA3, 0x62, 0x5D, 0x4B, 0x22, 0x6C, 0x9A, 0x42, 0x09, 0xD9, 0x03, 0x9B, + 0x9A, 0x46, 0xB9, 0xE7, 0x5B, 0x4B, 0x23, 0x64, 0x1A, 0x23, 0x63, 0x63, + 0xF1, 0xE7, 0x00, 0x2D, 0x05, 0xD1, 0x58, 0x4B, 0x23, 0x64, 0x1A, 0x23, + 0x63, 0x63, 0xDA, 0x46, 0xAC, 0xE7, 0xDA, 0x46, 0xAA, 0xE7, 0x50, 0x4B, + 0x23, 0x64, 0x02, 0x23, 0x63, 0x63, 0x43, 0x46, 0x00, 0x2B, 0x0B, 0xD1, + 0x30, 0x33, 0xA3, 0x62, 0x2F, 0x3B, 0x9A, 0x46, 0x8B, 0xF7, 0x42, 0xFF, + 0x00, 0x28, 0x00, 0xD0, 0x68, 0xE6, 0x21, 0x6C, 0x21, 0x61, 0x72, 0xE6, + 0xC0, 0x23, 0xA3, 0x62, 0x05, 0x9B, 0x9A, 0x46, 0xDE, 0xE6, 0x00, 0x23, + 0x08, 0x93, 0x09, 0x93, 0x20, 0x1D, 0x23, 0x00, 0x08, 0xAA, 0x09, 0xA9, + 0xFC, 0xF7, 0x72, 0xFD, 0x09, 0x9B, 0x00, 0x2B, 0x04, 0xD0, 0x22, 0x69, + 0x9A, 0x42, 0x00, 0xD9, 0x1A, 0x00, 0x22, 0x61, 0x00, 0x2F, 0x07, 0xD0, + 0x08, 0x9B, 0x5B, 0x00, 0x62, 0x68, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, + 0x1B, 0x09, 0x63, 0x60, 0x63, 0x6B, 0x02, 0x2B, 0x1E, 0xD0, 0x53, 0x46, + 0x00, 0x2B, 0x04, 0xD1, 0x3A, 0x4B, 0x08, 0x9A, 0x53, 0x43, 0x23, 0x61, + 0x23, 0x64, 0x03, 0x26, 0x4F, 0x46, 0x65, 0x68, 0x00, 0x22, 0x21, 0x69, + 0x38, 0x00, 0xFC, 0xF7, 0xEB, 0xFD, 0x63, 0x68, 0xAB, 0x42, 0x18, 0xD0, + 0x08, 0x9B, 0x9C, 0x46, 0x65, 0x44, 0x2D, 0x01, 0x2D, 0x09, 0x65, 0x60, + 0x01, 0x3E, 0xF6, 0xB2, 0x00, 0x2E, 0xEC, 0xD1, 0xB9, 0x46, 0x54, 0xE6, + 0x08, 0x9A, 0x53, 0x00, 0x9B, 0x18, 0x5B, 0x00, 0x62, 0x68, 0x94, 0x46, + 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0xD5, 0xE7, 0xB9, 0x46, + 0x47, 0xE6, 0xB9, 0x46, 0x45, 0xE6, 0x4E, 0x23, 0x00, 0x22, 0xE2, 0x54, + 0xA3, 0x7D, 0x10, 0x2B, 0x00, 0xD9, 0x63, 0xE6, 0x43, 0x46, 0x00, 0x2B, + 0x00, 0xD0, 0x5F, 0xE6, 0x53, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x5B, 0xE6, + 0x11, 0x33, 0xA3, 0x75, 0x58, 0xE6, 0x06, 0x9B, 0x00, 0x2B, 0x91, 0xD0, + 0x06, 0x9B, 0x59, 0x68, 0x15, 0x4B, 0x99, 0x42, 0x8C, 0xD0, 0x63, 0x6B, + 0x1A, 0x00, 0x28, 0x32, 0x52, 0x00, 0xA0, 0x6A, 0xC3, 0x1A, 0x5B, 0x00, + 0x04, 0x98, 0x84, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x1A, + 0x1B, 0x01, 0x1B, 0x09, 0x9A, 0x42, 0x00, 0xD2, 0x7A, 0xE7, 0x0C, 0x4B, + 0x23, 0x64, 0x77, 0xE7, 0x21, 0x6C, 0x21, 0x61, 0x43, 0x46, 0x00, 0x2B, + 0x04, 0xD0, 0x20, 0x00, 0xFF, 0xF7, 0x14, 0xFD, 0x60, 0x60, 0x6B, 0xE6, + 0x05, 0x9B, 0x9A, 0x46, 0xE5, 0xE5, 0xC0, 0x46, 0xE2, 0x04, 0x00, 0x00, + 0x00, 0xE2, 0x10, 0x00, 0xE7, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, + 0xE8, 0x80, 0x00, 0x00, 0xF2, 0x2B, 0x00, 0x00, 0x04, 0xE2, 0x10, 0x00, + 0xA9, 0x03, 0x00, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x1A, 0x4A, 0x13, 0x68, + 0x04, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x19, 0x4B, 0x9B, 0x78, 0x83, 0x75, + 0xFC, 0xF7, 0x06, 0xFE, 0x05, 0x00, 0x02, 0x21, 0x01, 0x20, 0xFC, 0xF7, + 0xC3, 0xFE, 0x06, 0x00, 0x00, 0x2D, 0x04, 0xD0, 0x11, 0x4A, 0x13, 0x68, + 0x04, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x4E, 0x23, 0xE3, 0x5C, 0x02, 0x2B, + 0x0E, 0xD0, 0xA6, 0xF7, 0x83, 0xFE, 0x60, 0x64, 0xFF, 0xF7, 0x0C, 0xFD, + 0x00, 0x2E, 0x0E, 0xD0, 0x00, 0x2D, 0x04, 0xD0, 0x08, 0x4A, 0x13, 0x68, + 0x04, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x70, 0xBD, 0x07, 0x4C, 0x20, 0x68, + 0x7D, 0xF7, 0xB8, 0xFB, 0x00, 0x23, 0x23, 0x60, 0xEE, 0xE7, 0x02, 0x21, + 0x00, 0x20, 0xFC, 0xF7, 0x9D, 0xFE, 0xEB, 0xE7, 0xFC, 0x00, 0x60, 0x40, + 0x7C, 0x91, 0x0D, 0x00, 0xF8, 0xE6, 0x10, 0x00, 0x10, 0xB5, 0x4E, 0x23, + 0xC3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x10, 0xBD, 0x00, 0x21, 0xD1, 0xF7, + 0x8F, 0xFE, 0xFF, 0xF7, 0xE5, 0xFC, 0xF8, 0xE7, 0x10, 0xB5, 0xA6, 0xF7, + 0x55, 0xFE, 0x22, 0x4B, 0x5A, 0x68, 0x92, 0x01, 0x1B, 0x68, 0xC0, 0x1A, + 0x00, 0x01, 0x01, 0x09, 0x40, 0x00, 0x43, 0x1A, 0x9B, 0x00, 0x5B, 0x18, + 0x99, 0x00, 0x5B, 0x18, 0x9A, 0x42, 0x20, 0xD3, 0xD3, 0x1A, 0x1B, 0x4C, + 0x9C, 0x42, 0xA4, 0x41, 0x64, 0x42, 0x1A, 0x4B, 0x1A, 0x4A, 0x1A, 0x60, + 0xD1, 0xF7, 0xC0, 0xFE, 0x00, 0x28, 0x0A, 0xD0, 0x00, 0x2C, 0x19, 0xD0, + 0x17, 0x4B, 0x80, 0x22, 0x12, 0x05, 0x1A, 0x60, 0x16, 0x48, 0x7F, 0xF7, + 0x05, 0xFB, 0x10, 0xBD, 0x00, 0x24, 0x11, 0x4B, 0x1B, 0x68, 0x9B, 0x68, + 0x00, 0x2B, 0xF1, 0xD0, 0x12, 0x4A, 0xDB, 0x69, 0x93, 0x42, 0xEB, 0xD1, + 0xEC, 0xE7, 0x0C, 0x4B, 0x0C, 0x4A, 0x1A, 0x60, 0xD1, 0xF7, 0xA4, 0xFE, + 0x00, 0x28, 0xED, 0xD0, 0x0D, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x0D, 0x4B, + 0x00, 0x22, 0x1A, 0x70, 0x0C, 0x4B, 0x18, 0x68, 0x00, 0x28, 0xE2, 0xD0, + 0xFF, 0xF7, 0xAE, 0xFF, 0xDF, 0xE7, 0xC0, 0x46, 0x6C, 0xE6, 0x10, 0x00, + 0xFF, 0x70, 0x02, 0x00, 0x10, 0xE7, 0x10, 0x00, 0x64, 0x2A, 0x16, 0x00, + 0x00, 0x41, 0x04, 0x40, 0x74, 0xD1, 0x10, 0x00, 0xC9, 0x1F, 0x10, 0x00, + 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, 0xF8, 0xE6, 0x10, 0x00, + 0xF8, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, + 0x06, 0x00, 0x0D, 0x00, 0x17, 0x00, 0x49, 0x4B, 0x1C, 0x68, 0xA4, 0x04, + 0xA4, 0x0E, 0x20, 0x00, 0x50, 0x43, 0x43, 0x01, 0x1B, 0x1A, 0x9B, 0x00, + 0x1B, 0x18, 0x98, 0x00, 0x18, 0x18, 0x00, 0x02, 0xD3, 0xF7, 0x5E, 0xFC, + 0x81, 0x46, 0x03, 0x0A, 0x9B, 0x46, 0x29, 0x00, 0x80, 0x20, 0xC0, 0x00, + 0xD3, 0xF7, 0x56, 0xFC, 0x03, 0x00, 0x6B, 0x43, 0x9A, 0x46, 0xFF, 0x21, + 0x4B, 0x46, 0x19, 0x40, 0x69, 0x43, 0x09, 0x0A, 0x48, 0x43, 0x53, 0x46, + 0x1B, 0x1A, 0x98, 0x46, 0x23, 0x01, 0x1B, 0x19, 0x9B, 0x00, 0x99, 0x46, + 0xA1, 0x44, 0x53, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x34, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x78, 0x01, 0xC0, 0x1B, + 0x80, 0x00, 0xC7, 0x19, 0xB8, 0x00, 0x38, 0x18, 0x29, 0x00, 0xD3, 0xF7, + 0x33, 0xFC, 0x44, 0x43, 0x27, 0x00, 0x65, 0x09, 0x73, 0x01, 0x2C, 0x4A, + 0x9A, 0x18, 0x11, 0x68, 0x2B, 0x4A, 0x11, 0x60, 0x2B, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x1A, 0x68, 0x2A, 0x4B, 0x1A, 0x60, 0x2A, 0x4B, 0x5A, 0x46, + 0x1A, 0x60, 0x51, 0x46, 0x48, 0x46, 0xD3, 0xF7, 0xA3, 0xFC, 0x09, 0x05, + 0x43, 0x46, 0x19, 0x43, 0x26, 0x4B, 0x19, 0x60, 0x26, 0x4B, 0x52, 0x46, + 0x1A, 0x60, 0x26, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x25, 0x4B, 0x9E, 0x22, + 0xFF, 0x32, 0x99, 0x5C, 0x09, 0x02, 0x01, 0x3A, 0x9A, 0x5C, 0x0A, 0x43, + 0x12, 0x04, 0x9C, 0x21, 0xFF, 0x31, 0x58, 0x5C, 0x00, 0x02, 0x01, 0x39, + 0x59, 0x5C, 0x01, 0x43, 0x0A, 0x43, 0x1E, 0x49, 0x0A, 0x60, 0xA0, 0x22, + 0xFF, 0x32, 0x98, 0x5C, 0x00, 0x02, 0x01, 0x3A, 0x9C, 0x5C, 0x04, 0x43, + 0x24, 0x04, 0x20, 0x00, 0x28, 0x43, 0x01, 0x35, 0x6D, 0x01, 0xEC, 0x1B, + 0x24, 0x04, 0x04, 0x43, 0x16, 0x4A, 0x14, 0x60, 0x9A, 0x22, 0xFF, 0x32, + 0x98, 0x5C, 0x00, 0x02, 0x01, 0x3A, 0x9B, 0x5C, 0x03, 0x43, 0x36, 0x02, + 0x1E, 0x43, 0x01, 0x20, 0x06, 0x43, 0x11, 0x4B, 0x1E, 0x60, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF8, 0xBD, 0xC0, 0x46, + 0x08, 0x04, 0x60, 0x40, 0x28, 0x19, 0x16, 0x00, 0xDC, 0x05, 0x60, 0x40, + 0x5C, 0x06, 0x60, 0x40, 0xD8, 0x05, 0x60, 0x40, 0x60, 0x06, 0x60, 0x40, + 0x50, 0x06, 0x60, 0x40, 0x54, 0x06, 0x60, 0x40, 0x58, 0x06, 0x60, 0x40, + 0x4C, 0x06, 0x60, 0x40, 0x20, 0xA3, 0x16, 0x00, 0x44, 0x06, 0x60, 0x40, + 0x48, 0x06, 0x60, 0x40, 0x40, 0x06, 0x60, 0x40, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8F, 0xB0, 0x80, 0x46, + 0x0E, 0x00, 0x15, 0x00, 0x03, 0x93, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, + 0x17, 0x00, 0x1F, 0x40, 0x1A, 0x42, 0x00, 0xD0, 0xF6, 0xE2, 0x72, 0xB6, + 0x00, 0x21, 0x5C, 0x20, 0x7D, 0xF7, 0xCE, 0xF9, 0x04, 0x1E, 0x00, 0xD1, + 0x25, 0xE3, 0x00, 0x20, 0x00, 0x2F, 0x00, 0xD0, 0xF1, 0xE2, 0x62, 0xB6, + 0x00, 0x28, 0x00, 0xD1, 0xED, 0xE2, 0x0F, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xDE, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0C, 0x20, 0x00, 0x2F, + 0xEF, 0xD1, 0xEA, 0xE7, 0x00, 0x23, 0x06, 0x93, 0xEC, 0xE2, 0x01, 0x23, + 0x06, 0x93, 0xE9, 0xE2, 0x00, 0x23, 0x5B, 0x00, 0xD6, 0x4A, 0xD3, 0x18, + 0x5F, 0x78, 0xBA, 0x46, 0xBF, 0xE0, 0x2F, 0x7B, 0xD4, 0x4B, 0x19, 0x00, + 0x00, 0x22, 0x08, 0x78, 0xB8, 0x42, 0x00, 0xD1, 0xAD, 0xE0, 0x01, 0x32, + 0x02, 0x31, 0x08, 0x2A, 0xF7, 0xD1, 0x02, 0x27, 0x68, 0x7B, 0x00, 0x22, + 0x19, 0x78, 0x81, 0x42, 0x00, 0xD1, 0xA7, 0xE0, 0x01, 0x32, 0x02, 0x33, + 0x08, 0x2A, 0xF7, 0xD1, 0x02, 0x23, 0x9A, 0x46, 0x09, 0x2F, 0x05, 0xD9, + 0xC5, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x07, 0x97, 0xD3, 0x46, 0xC4, 0x4A, 0x7B, 0x00, 0xDF, 0x19, 0xD7, 0x19, + 0x53, 0x46, 0x5B, 0x00, 0x53, 0x44, 0xD2, 0x18, 0xBF, 0x78, 0x93, 0x78, + 0xFF, 0x18, 0xFB, 0xB2, 0x1F, 0x00, 0x05, 0x93, 0x28, 0x7C, 0x19, 0x00, + 0xD3, 0xF7, 0x48, 0xFB, 0xC0, 0xB2, 0xBC, 0x4B, 0x63, 0x62, 0xBC, 0x4B, + 0xE3, 0x61, 0xBC, 0x4B, 0x23, 0x62, 0x03, 0x23, 0x23, 0x76, 0xBB, 0x4B, + 0x9B, 0x7A, 0xA3, 0x75, 0xBA, 0x4A, 0x9F, 0x23, 0x9B, 0x00, 0xD2, 0x5C, + 0x00, 0x23, 0x00, 0x2A, 0x02, 0xD1, 0x7B, 0x00, 0x03, 0x33, 0xDB, 0xB2, + 0xE3, 0x75, 0x00, 0x23, 0xA3, 0x82, 0x06, 0x33, 0x63, 0x76, 0x40, 0x33, + 0x42, 0x46, 0xE2, 0x54, 0x01, 0x33, 0xE6, 0x54, 0xEB, 0x88, 0x23, 0x87, + 0x2B, 0x89, 0x63, 0x87, 0xAA, 0x7A, 0x3D, 0x23, 0xE2, 0x54, 0xEA, 0x7A, + 0x01, 0x33, 0xE2, 0x54, 0x2A, 0x7B, 0x01, 0x33, 0xE2, 0x54, 0x6A, 0x7B, + 0x01, 0x33, 0xE2, 0x54, 0xAA, 0x7B, 0x01, 0x33, 0xE2, 0x54, 0xEA, 0x7B, + 0x01, 0x33, 0xE2, 0x54, 0x6A, 0x7C, 0x01, 0x33, 0xE2, 0x54, 0x01, 0x33, + 0xE0, 0x54, 0x9B, 0x4A, 0xB0, 0x33, 0xD3, 0x58, 0x23, 0x63, 0xAA, 0x78, + 0x4B, 0x23, 0xE2, 0x54, 0x2B, 0x7C, 0x05, 0x99, 0x8C, 0x46, 0x63, 0x44, + 0xEA, 0x7B, 0x9B, 0x1A, 0x5A, 0x42, 0x53, 0x41, 0x49, 0x22, 0xA3, 0x54, + 0x45, 0x23, 0xE1, 0x54, 0x13, 0x33, 0x08, 0x9A, 0xE2, 0x54, 0x01, 0x22, + 0x31, 0x00, 0x01, 0x20, 0xA6, 0xF7, 0xF8, 0xF9, 0x03, 0x9B, 0x00, 0x2B, + 0x00, 0xD0, 0x98, 0xE1, 0x06, 0x99, 0x01, 0x31, 0x2A, 0x89, 0x4A, 0x43, + 0xD3, 0xB2, 0x0C, 0x93, 0xEB, 0x88, 0x4B, 0x43, 0xDB, 0xB2, 0x0D, 0x93, + 0x2B, 0x79, 0x00, 0x22, 0x92, 0x46, 0x00, 0x2B, 0x02, 0xD0, 0xEA, 0x78, + 0x04, 0x2A, 0x26, 0xD0, 0x68, 0x78, 0x03, 0x28, 0x33, 0xD8, 0x2B, 0x78, + 0x04, 0x2B, 0x30, 0xD8, 0x9B, 0x00, 0x88, 0x4A, 0xD3, 0x18, 0x1A, 0x5C, + 0x0F, 0x23, 0x13, 0x40, 0x0A, 0x93, 0x53, 0x11, 0x01, 0x21, 0x0B, 0x40, + 0x03, 0x93, 0x12, 0x11, 0x11, 0x40, 0x0B, 0x91, 0x2C, 0xE0, 0x52, 0x00, + 0x79, 0x49, 0x8A, 0x18, 0x57, 0x78, 0x51, 0xE7, 0x52, 0x00, 0x77, 0x4B, + 0x9A, 0x18, 0x53, 0x78, 0x9A, 0x46, 0x09, 0x2F, 0x00, 0xD9, 0x57, 0xE7, + 0x53, 0x46, 0x09, 0x2B, 0x00, 0xD9, 0x53, 0xE7, 0x58, 0xE7, 0x01, 0x2B, + 0x0A, 0xD0, 0x02, 0x3B, 0x5A, 0x42, 0x53, 0x41, 0x5B, 0x42, 0x76, 0x4A, + 0x13, 0x40, 0x9A, 0x46, 0x75, 0x4B, 0x9C, 0x46, 0xE2, 0x44, 0xCB, 0xE7, + 0x74, 0x4B, 0x9A, 0x46, 0xC8, 0xE7, 0x29, 0x78, 0x66, 0x4B, 0xDB, 0x6E, + 0x98, 0x46, 0x00, 0x23, 0x00, 0x22, 0xC0, 0x47, 0x03, 0x9B, 0x0B, 0x93, + 0x00, 0x23, 0x0A, 0x93, 0x2B, 0x79, 0x0E, 0x2B, 0x00, 0xD1, 0xBC, 0xE0, + 0x00, 0xD9, 0xAC, 0xE0, 0x00, 0x22, 0x06, 0x92, 0x08, 0x2B, 0x04, 0xD0, + 0x01, 0x32, 0x06, 0x92, 0x0D, 0x2B, 0x00, 0xD0, 0xA8, 0xE0, 0xEB, 0x78, + 0x5A, 0x1E, 0x03, 0x2A, 0x00, 0xD9, 0xE3, 0xE0, 0xD3, 0xB2, 0x08, 0x93, + 0x63, 0x4A, 0x13, 0x68, 0x63, 0x49, 0x19, 0x40, 0x80, 0x23, 0x9B, 0x02, + 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0x61, 0x49, 0x0B, 0x40, 0x80, 0x21, + 0x49, 0x02, 0x8C, 0x46, 0x0B, 0x43, 0x13, 0x60, 0x73, 0x01, 0x98, 0x46, + 0x5D, 0x4A, 0x42, 0x44, 0x85, 0x23, 0x1B, 0x04, 0x51, 0x46, 0x0B, 0x43, + 0x13, 0x60, 0x5B, 0x4B, 0x43, 0x44, 0x9A, 0x46, 0x4B, 0x4A, 0x5B, 0x46, + 0x59, 0x00, 0x59, 0x44, 0x53, 0x18, 0x5B, 0x78, 0x1B, 0x01, 0xA8, 0x7A, + 0x03, 0x43, 0xE8, 0x7A, 0x02, 0x38, 0x07, 0x00, 0x78, 0x42, 0x78, 0x41, + 0xC0, 0x00, 0x03, 0x43, 0x07, 0x9F, 0x78, 0x00, 0xBB, 0x46, 0x58, 0x44, + 0x17, 0x18, 0x7F, 0x78, 0x7F, 0x01, 0x3B, 0x43, 0x67, 0x46, 0x3B, 0x43, + 0x57, 0x46, 0x3B, 0x60, 0x4C, 0x4B, 0x43, 0x44, 0x9A, 0x46, 0x2B, 0x89, + 0x1B, 0x05, 0x9C, 0x46, 0xEB, 0x88, 0x1B, 0x01, 0x67, 0x46, 0x3B, 0x43, + 0x80, 0x5C, 0x03, 0x43, 0x88, 0x5C, 0x00, 0x04, 0x03, 0x43, 0x52, 0x46, + 0x13, 0x60, 0x03, 0x9B, 0xDB, 0x03, 0x0A, 0x9A, 0x12, 0x02, 0x13, 0x43, + 0x0B, 0x9A, 0xD2, 0x01, 0x13, 0x43, 0x06, 0x9A, 0x12, 0x05, 0x13, 0x43, + 0x08, 0x9A, 0x12, 0x04, 0x13, 0x43, 0x3E, 0x4A, 0xB2, 0x18, 0x92, 0x00, + 0x13, 0x60, 0xB3, 0x00, 0x3C, 0x4A, 0x9C, 0x50, 0x4B, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x00, 0xD1, 0x87, 0xE0, 0x32, 0x01, 0xB2, 0x18, 0xD3, 0x01, + 0x9B, 0x1A, 0xF3, 0x18, 0x37, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x9B, 0xB2, + 0x36, 0x49, 0x41, 0x44, 0x0C, 0x98, 0xC2, 0x18, 0x12, 0x04, 0x13, 0x43, + 0x0B, 0x60, 0x87, 0x23, 0xDB, 0x00, 0x73, 0x43, 0x84, 0x46, 0x63, 0x44, + 0x31, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x5B, 0x00, 0x9B, 0xB2, 0x30, 0x49, + 0x41, 0x44, 0x0D, 0x9A, 0x9A, 0x18, 0x92, 0xB2, 0x1B, 0x04, 0x13, 0x43, + 0x0B, 0x60, 0x2D, 0x4B, 0x43, 0x44, 0xE9, 0x7B, 0x80, 0x22, 0xD2, 0x01, + 0x0A, 0x43, 0x1A, 0x60, 0x29, 0x89, 0x00, 0x29, 0x04, 0xD1, 0xEB, 0x88, + 0x01, 0x31, 0x00, 0x2B, 0x00, 0xD0, 0x19, 0x00, 0x00, 0x2E, 0x00, 0xD0, + 0xDA, 0xE0, 0xEA, 0x7B, 0x89, 0xB2, 0x00, 0x20, 0xFF, 0xF7, 0x72, 0xFD, + 0xD4, 0xE0, 0x03, 0x22, 0x06, 0x92, 0x10, 0x2B, 0x00, 0xD1, 0x56, 0xE7, + 0x05, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x00, 0x23, 0x06, 0x93, 0x4D, 0xE7, 0x02, 0x23, 0x06, 0x93, 0x4A, 0xE7, + 0x28, 0x19, 0x16, 0x00, 0xE4, 0xDF, 0x10, 0x00, 0xD4, 0xDF, 0x10, 0x00, + 0xE8, 0xDF, 0x10, 0x00, 0x69, 0xF5, 0x0A, 0x00, 0x21, 0x61, 0x10, 0x00, + 0x4D, 0xF3, 0x0A, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x7C, 0x1E, 0x16, 0x00, + 0x08, 0xE0, 0x10, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, + 0xFF, 0x0F, 0x00, 0x00, 0xD0, 0x04, 0x60, 0x40, 0xFF, 0xFF, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xD4, 0x05, 0x60, 0x40, 0xE0, 0x05, 0x60, 0x40, + 0xE4, 0x05, 0x60, 0x40, 0x8C, 0x01, 0x18, 0x10, 0x54, 0x27, 0x16, 0x00, + 0x5C, 0xAB, 0xFF, 0xFF, 0xD8, 0x05, 0x60, 0x40, 0xAE, 0x55, 0x00, 0x00, + 0xDC, 0x05, 0x60, 0x40, 0xD0, 0x05, 0x60, 0x40, 0x96, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, 0x08, 0x93, + 0x14, 0xE7, 0x42, 0x33, 0xE3, 0x5C, 0x5F, 0x1E, 0x20, 0x00, 0x50, 0x30, + 0x7F, 0xF7, 0xF0, 0xFA, 0x49, 0x23, 0xE1, 0x5C, 0xCB, 0x1C, 0xDB, 0xB2, + 0x04, 0x31, 0xC9, 0xB2, 0x8B, 0x4A, 0x92, 0x46, 0x0D, 0x9A, 0x04, 0x32, + 0xD2, 0xB2, 0x00, 0x92, 0x84, 0x22, 0x50, 0x46, 0x82, 0x58, 0x93, 0x46, + 0x0C, 0x9A, 0x30, 0x00, 0xD8, 0x47, 0x86, 0x4A, 0x42, 0x44, 0x00, 0x23, + 0x13, 0x60, 0x85, 0x4A, 0x42, 0x44, 0x13, 0x60, 0x19, 0x33, 0xFF, 0x33, + 0x52, 0x46, 0xD0, 0x58, 0x31, 0x00, 0xD2, 0xF7, 0x47, 0xFB, 0x81, 0x4A, + 0x11, 0x68, 0x80, 0x23, 0x9B, 0x01, 0xB3, 0x40, 0x0B, 0x43, 0x13, 0x60, + 0x7E, 0x4A, 0x42, 0x44, 0xFF, 0x23, 0x3B, 0x40, 0x1F, 0x2B, 0x00, 0xD9, + 0x1F, 0x23, 0x1B, 0x02, 0xE9, 0x7B, 0x0B, 0x43, 0x09, 0x99, 0x03, 0x39, + 0x48, 0x42, 0x41, 0x41, 0xC9, 0x03, 0x0B, 0x43, 0xC0, 0x21, 0xC9, 0x01, + 0x0B, 0x43, 0x13, 0x60, 0x42, 0xE0, 0x75, 0x4B, 0xF2, 0x18, 0x52, 0x01, + 0x74, 0x49, 0x5B, 0x46, 0x58, 0x00, 0x58, 0x44, 0x0B, 0x18, 0x5B, 0x78, + 0x1B, 0x01, 0xAF, 0x7A, 0x1F, 0x43, 0xBC, 0x46, 0xEB, 0x7A, 0x02, 0x3B, + 0x1F, 0x00, 0x7B, 0x42, 0x7B, 0x41, 0xDB, 0x00, 0x67, 0x46, 0x3B, 0x43, + 0x9A, 0x46, 0x07, 0x9F, 0x7B, 0x00, 0x98, 0x46, 0xBC, 0x46, 0xE0, 0x44, + 0x8C, 0x46, 0xC4, 0x44, 0x63, 0x46, 0x5B, 0x78, 0x5B, 0x01, 0x1F, 0x00, + 0x53, 0x46, 0x1F, 0x43, 0x80, 0x23, 0x5B, 0x02, 0x3B, 0x43, 0x13, 0x60, + 0x2B, 0x89, 0x1B, 0x05, 0xED, 0x88, 0x2D, 0x01, 0x2B, 0x43, 0x45, 0x46, + 0x6D, 0x5C, 0x2B, 0x43, 0x41, 0x5C, 0x09, 0x04, 0x0B, 0x43, 0x53, 0x60, + 0x31, 0x01, 0x71, 0x18, 0xCB, 0x01, 0x5B, 0x1A, 0xF3, 0x18, 0x5B, 0x49, + 0x8C, 0x46, 0x63, 0x44, 0x98, 0xB2, 0x11, 0x00, 0x08, 0x39, 0x1B, 0x04, + 0x03, 0x43, 0x0B, 0x60, 0x04, 0x3A, 0x13, 0x60, 0xEF, 0xF3, 0x10, 0x83, + 0x01, 0x22, 0x11, 0x00, 0x19, 0x40, 0x88, 0x46, 0x1A, 0x42, 0x00, 0xD1, + 0x72, 0xB6, 0x52, 0x4B, 0x05, 0x9A, 0x53, 0x43, 0x9B, 0xB2, 0x42, 0x22, + 0xA2, 0x5C, 0x52, 0x00, 0x44, 0x21, 0x61, 0x5C, 0x48, 0x1E, 0x81, 0x41, + 0x00, 0x91, 0x31, 0x00, 0x0B, 0x20, 0xD3, 0xF7, 0x41, 0xF8, 0x4B, 0x46, + 0xDB, 0x07, 0x33, 0xD4, 0x4B, 0x46, 0x1F, 0x01, 0x3F, 0x09, 0x41, 0x23, + 0xE5, 0x5C, 0x02, 0x33, 0xE3, 0x5C, 0x9B, 0x06, 0x7F, 0x08, 0x5F, 0x40, + 0x42, 0x23, 0xE3, 0x5C, 0x99, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x39, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x49, 0x46, + 0x38, 0x00, 0xD3, 0xF7, 0x63, 0xF9, 0x69, 0x1A, 0x00, 0x29, 0x21, 0xDD, + 0x42, 0x23, 0xE3, 0x5C, 0xC9, 0x1A, 0x49, 0x00, 0x58, 0x00, 0x04, 0x9A, + 0x94, 0x46, 0x60, 0x44, 0x09, 0x18, 0x09, 0x01, 0x09, 0x09, 0x61, 0x63, + 0x02, 0x2B, 0x02, 0xD9, 0x30, 0x00, 0x34, 0x4B, 0x98, 0x47, 0x00, 0x20, + 0x43, 0x46, 0x00, 0x2B, 0x00, 0xD0, 0x28, 0xE5, 0x62, 0xB6, 0x26, 0xE5, + 0x30, 0x4F, 0x4B, 0x46, 0x3B, 0x40, 0x1F, 0x00, 0x04, 0x98, 0x01, 0x38, + 0x00, 0x01, 0x03, 0x09, 0x04, 0x93, 0xC4, 0xE7, 0x42, 0x23, 0xE3, 0x5C, + 0xC9, 0x18, 0xD9, 0xE7, 0x00, 0x21, 0x5C, 0x20, 0x7C, 0xF7, 0xD8, 0xFE, + 0x04, 0x1E, 0x00, 0xD1, 0x18, 0xE5, 0x43, 0x46, 0x9B, 0x00, 0x26, 0x4A, + 0x9F, 0x58, 0x6B, 0x78, 0x09, 0x93, 0x03, 0x2B, 0x00, 0xD1, 0x19, 0xE5, + 0xAB, 0x78, 0x01, 0x2B, 0x00, 0xD1, 0x18, 0xE5, 0x2A, 0x79, 0x08, 0x23, + 0x93, 0x42, 0x9B, 0x41, 0x5B, 0x42, 0x06, 0x93, 0x06, 0x9B, 0x08, 0x93, + 0xA6, 0xF7, 0x1C, 0xFA, 0x04, 0x90, 0xBB, 0x6F, 0x81, 0x46, 0x99, 0x44, + 0x5C, 0x22, 0x00, 0x21, 0x20, 0x00, 0x7A, 0xF7, 0x67, 0xFE, 0xEB, 0x7A, + 0x00, 0x2B, 0x00, 0xD0, 0x0B, 0xE5, 0x2B, 0x7B, 0x00, 0x2B, 0x00, 0xD1, + 0x00, 0xE5, 0x02, 0x22, 0x92, 0x46, 0x02, 0x27, 0x02, 0x2B, 0x00, 0xD0, + 0x22, 0xE5, 0x01, 0x3B, 0xF9, 0xE4, 0x04, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0C, 0x20, 0xD5, 0xE4, 0xC0, 0x46, + 0x28, 0x19, 0x16, 0x00, 0xD8, 0x05, 0x60, 0x40, 0xDC, 0x05, 0x60, 0x40, + 0x0C, 0x04, 0x60, 0x40, 0xD0, 0x05, 0x60, 0x40, 0x2F, 0x00, 0x03, 0x02, + 0xE8, 0xDF, 0x10, 0x00, 0x5C, 0xAB, 0xFF, 0xFF, 0xE2, 0x04, 0x00, 0x00, + 0x3D, 0xF4, 0x0A, 0x00, 0xFE, 0xFF, 0xFF, 0x0F, 0x38, 0x27, 0x16, 0x00, + 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, + 0x14, 0x00, 0x1C, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x5A, 0x4B, + 0x1B, 0x68, 0xDB, 0x05, 0x0B, 0xD5, 0x58, 0x49, 0x0B, 0x68, 0x5B, 0x00, + 0x5B, 0x08, 0x80, 0x22, 0x12, 0x06, 0x13, 0x43, 0x0B, 0x60, 0x0A, 0x00, + 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xDB, 0x53, 0x4B, 0x1B, 0x68, 0xDB, 0x05, + 0x0B, 0xD5, 0x51, 0x49, 0x0B, 0x68, 0x5B, 0x00, 0x5B, 0x08, 0x80, 0x22, + 0x12, 0x06, 0x13, 0x43, 0x0B, 0x60, 0x0A, 0x00, 0x13, 0x68, 0x00, 0x2B, + 0xFC, 0xDB, 0x7A, 0xF7, 0x4F, 0xFF, 0x4B, 0x4B, 0x18, 0x68, 0x00, 0x28, + 0x09, 0xD0, 0x7C, 0xF7, 0xF5, 0xFE, 0x48, 0x4B, 0x00, 0x22, 0x1A, 0x60, + 0x47, 0x4A, 0x13, 0x68, 0x04, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x46, 0x4B, + 0x11, 0x22, 0x44, 0x21, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, + 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x10, 0x3A, + 0x40, 0x49, 0x5A, 0x54, 0x40, 0x49, 0x5A, 0x54, 0x40, 0x4A, 0x00, 0x21, + 0x99, 0x54, 0x40, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x47, 0xD9, 0x39, 0x4B, + 0x1A, 0x68, 0x08, 0x21, 0x8A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x01, 0x20, + 0x82, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x06, 0x39, 0x8A, 0x43, 0x1A, 0x60, + 0x1A, 0x68, 0x38, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x04, + 0x12, 0x0C, 0xB0, 0x21, 0x49, 0x03, 0x0A, 0x43, 0x1A, 0x60, 0x34, 0x4A, + 0xA0, 0x23, 0x9B, 0x00, 0xD0, 0x54, 0x29, 0x4A, 0x13, 0x68, 0x0F, 0x21, + 0x0B, 0x43, 0x13, 0x60, 0x30, 0x4A, 0x13, 0x68, 0x30, 0x49, 0x19, 0x40, + 0xA0, 0x23, 0xDB, 0x03, 0x0B, 0x43, 0x13, 0x60, 0x13, 0x68, 0xFF, 0x21, + 0x8B, 0x43, 0xAF, 0x39, 0x0B, 0x43, 0x13, 0x60, 0x2B, 0x4B, 0x2C, 0x4A, + 0x9A, 0x60, 0x2C, 0x4A, 0xDA, 0x60, 0x2C, 0x4A, 0x5A, 0x61, 0x2C, 0x4A, + 0x9A, 0x61, 0x00, 0x2C, 0x00, 0xD1, 0x62, 0xB6, 0x00, 0x23, 0x2A, 0x4A, + 0x13, 0x60, 0x2A, 0x4A, 0x13, 0x60, 0x2A, 0x4A, 0x13, 0x60, 0x0A, 0x22, + 0x29, 0x49, 0x2A, 0x48, 0xD3, 0xF7, 0x10, 0xFC, 0x10, 0xBD, 0x15, 0x4B, + 0x1A, 0x68, 0x08, 0x31, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x07, 0x39, + 0x8A, 0x43, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x02, 0x20, 0x02, 0x43, + 0x1A, 0x60, 0x1A, 0x68, 0x13, 0x48, 0x10, 0x40, 0x80, 0x22, 0x92, 0x01, + 0x02, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x04, 0x12, 0x0C, 0xB0, 0x20, + 0x40, 0x03, 0x02, 0x43, 0x1A, 0x60, 0x0E, 0x4A, 0xA0, 0x23, 0x9B, 0x00, + 0xD1, 0x54, 0x19, 0x4B, 0x19, 0x4A, 0x1A, 0x60, 0xAF, 0xE7, 0xC0, 0x46, + 0x00, 0x04, 0x60, 0x40, 0x00, 0x08, 0x60, 0x40, 0xF8, 0xE6, 0x10, 0x00, + 0xFC, 0x00, 0x60, 0x40, 0xEC, 0xA4, 0x16, 0x00, 0x1E, 0x03, 0x00, 0x00, + 0x6F, 0x04, 0x00, 0x00, 0x6D, 0x04, 0x00, 0x00, 0x50, 0xE0, 0x10, 0x00, + 0xFF, 0xDF, 0xFF, 0xFF, 0x7C, 0x1E, 0x16, 0x00, 0x8C, 0x04, 0x60, 0x40, + 0xFF, 0xFF, 0x00, 0xFF, 0x60, 0x92, 0x16, 0x00, 0x2D, 0x01, 0x10, 0x00, + 0x81, 0x01, 0x10, 0x00, 0x8D, 0x05, 0x10, 0x00, 0xB9, 0x00, 0x10, 0x00, + 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0x54, 0xE6, 0x10, 0x00, + 0xD8, 0xE1, 0x10, 0x00, 0xC0, 0x9F, 0x16, 0x00, 0x30, 0x10, 0x62, 0x40, + 0x15, 0x1C, 0x20, 0x00, 0xF8, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x70, 0x4B, 0x1B, 0x68, 0x1B, 0x07, 0x0B, 0xD5, + 0x6F, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x6C, 0x4A, 0x13, 0x68, + 0x08, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x6B, 0x4B, 0x01, 0x22, 0x1A, 0x60, + 0x6A, 0x4C, 0x23, 0x68, 0x6A, 0x4E, 0x33, 0x40, 0x23, 0x60, 0x6A, 0x4D, + 0x2B, 0x68, 0x6A, 0x4F, 0x3B, 0x40, 0x2B, 0x60, 0x83, 0xF7, 0xEE, 0xFA, + 0x23, 0x68, 0x68, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x2B, 0x68, 0x33, 0x40, + 0x2B, 0x60, 0x23, 0x68, 0x1F, 0x40, 0x80, 0x23, 0x5B, 0x00, 0x3B, 0x43, + 0x23, 0x60, 0x23, 0x68, 0x1E, 0x40, 0x80, 0x23, 0x9B, 0x00, 0x33, 0x43, + 0x23, 0x60, 0x60, 0x4B, 0x99, 0x46, 0xFF, 0x23, 0x9B, 0x46, 0x22, 0x00, + 0xC0, 0x3B, 0x98, 0x46, 0x5D, 0x4B, 0x9C, 0x46, 0x40, 0x25, 0x80, 0x21, + 0x09, 0x01, 0x5F, 0x46, 0x5E, 0x46, 0x04, 0x36, 0xF3, 0xB2, 0x9B, 0x46, + 0x4C, 0x46, 0x18, 0x00, 0x13, 0x68, 0x46, 0x46, 0xB3, 0x43, 0x03, 0x43, + 0x13, 0x60, 0x63, 0x46, 0x26, 0x68, 0x1E, 0x60, 0x13, 0x68, 0xAB, 0x43, + 0x2B, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, + 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, 0x01, 0x38, 0xC0, 0xB2, 0x04, 0x34, + 0xB8, 0x42, 0xE7, 0xD1, 0x10, 0x23, 0x9A, 0x46, 0xD1, 0x44, 0x5B, 0x46, + 0x0F, 0x2B, 0xDA, 0xD1, 0x42, 0x4C, 0x23, 0x68, 0x44, 0x4D, 0x2B, 0x40, + 0x23, 0x60, 0x83, 0xF7, 0xAA, 0xFA, 0x23, 0x68, 0x3F, 0x4A, 0x13, 0x40, + 0x23, 0x60, 0x3F, 0x4B, 0x1A, 0x68, 0x80, 0x21, 0x0A, 0x43, 0x1A, 0x60, + 0x1A, 0x68, 0x15, 0x40, 0x80, 0x22, 0x52, 0x00, 0x2A, 0x43, 0x1A, 0x60, + 0x3E, 0x4B, 0x9A, 0x46, 0xFF, 0x24, 0x38, 0x4A, 0x1F, 0x23, 0x99, 0x46, + 0x3C, 0x4B, 0x98, 0x46, 0x20, 0x26, 0x80, 0x21, 0xC9, 0x00, 0x04, 0xE0, + 0x08, 0x23, 0x9C, 0x46, 0xE2, 0x44, 0x1F, 0x2C, 0x1D, 0xD0, 0xA4, 0x46, + 0x02, 0x34, 0xE4, 0xB2, 0x55, 0x46, 0x20, 0x00, 0x13, 0x68, 0x4F, 0x46, + 0xBB, 0x43, 0x03, 0x43, 0x13, 0x60, 0x43, 0x46, 0x2F, 0x68, 0x1F, 0x60, + 0x13, 0x68, 0xB3, 0x43, 0x33, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, + 0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, 0x01, 0x38, + 0xC0, 0xB2, 0x04, 0x35, 0x60, 0x45, 0xE7, 0xD1, 0xDC, 0xE7, 0x22, 0x4C, + 0x23, 0x68, 0x80, 0x22, 0x93, 0x43, 0x23, 0x60, 0x83, 0xF7, 0x65, 0xFA, + 0x23, 0x68, 0x1F, 0x4D, 0x2B, 0x40, 0x23, 0x60, 0x23, 0x49, 0x0B, 0x68, + 0x23, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x02, 0x13, 0x43, 0x0B, 0x60, + 0x83, 0xF7, 0x50, 0xFA, 0x15, 0x49, 0x0B, 0x68, 0x18, 0x4A, 0x1A, 0x40, + 0x80, 0x23, 0xDB, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x0B, 0x68, 0x12, 0x48, + 0x03, 0x40, 0x80, 0x22, 0x92, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x23, 0x68, + 0x03, 0x40, 0x1A, 0x43, 0x22, 0x60, 0x23, 0x68, 0x1D, 0x40, 0x80, 0x23, + 0x5B, 0x00, 0x2B, 0x43, 0x23, 0x60, 0x14, 0x49, 0x0B, 0x68, 0x14, 0x4A, + 0x1A, 0x40, 0x80, 0x23, 0x5B, 0x03, 0x13, 0x43, 0x0B, 0x60, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF8, 0xBD, 0xC0, 0x46, + 0x18, 0x00, 0x58, 0x40, 0x40, 0x42, 0x04, 0x40, 0x58, 0x20, 0x62, 0x40, + 0xFF, 0xFD, 0xFF, 0xFF, 0x64, 0x20, 0x62, 0x40, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xD8, 0x97, 0x16, 0x00, 0x5C, 0x20, 0x62, 0x40, + 0xD8, 0x98, 0x16, 0x00, 0x68, 0x20, 0x62, 0x40, 0x4C, 0x20, 0x62, 0x40, + 0xFF, 0xFF, 0xFE, 0xFF, 0x30, 0x20, 0x62, 0x40, 0xFF, 0xFF, 0xEF, 0xFF, + 0xF8, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, + 0x6E, 0x4C, 0x23, 0x68, 0x6E, 0x4E, 0x33, 0x40, 0x23, 0x60, 0x6E, 0x4D, + 0x2B, 0x68, 0x6E, 0x4A, 0x13, 0x40, 0x2B, 0x60, 0x83, 0xF7, 0xF8, 0xF9, + 0x23, 0x68, 0x6C, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x2B, 0x68, 0x6B, 0x4A, + 0x13, 0x40, 0x2B, 0x60, 0x23, 0x68, 0x6A, 0x4A, 0x1A, 0x40, 0x80, 0x23, + 0xDB, 0x00, 0x13, 0x43, 0x23, 0x60, 0x23, 0x68, 0x1E, 0x40, 0x80, 0x23, + 0x1B, 0x01, 0x33, 0x43, 0x23, 0x60, 0x65, 0x4B, 0x9A, 0x46, 0x7F, 0x25, + 0x22, 0x00, 0xFF, 0x23, 0x99, 0x46, 0x63, 0x4B, 0x98, 0x46, 0x5D, 0x4B, + 0x9C, 0x46, 0x80, 0x21, 0x89, 0x01, 0x2E, 0x00, 0x04, 0x35, 0xED, 0xB2, + 0x54, 0x46, 0x28, 0x00, 0x13, 0x68, 0x4F, 0x46, 0xBB, 0x43, 0x03, 0x43, + 0x13, 0x60, 0x43, 0x46, 0x27, 0x68, 0x1F, 0x60, 0x13, 0x68, 0x67, 0x46, + 0x3B, 0x40, 0x80, 0x27, 0x7F, 0x00, 0x3B, 0x43, 0x13, 0x60, 0xC0, 0x46, + 0xC0, 0x46, 0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, + 0x01, 0x38, 0xC0, 0xB2, 0x04, 0x34, 0x86, 0x42, 0xE4, 0xD1, 0x10, 0x23, + 0x9B, 0x46, 0xDA, 0x44, 0x8F, 0x2D, 0xDA, 0xD1, 0x45, 0x4C, 0x23, 0x68, + 0x4A, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x83, 0xF7, 0xB2, 0xF9, 0x23, 0x68, + 0x42, 0x4A, 0x13, 0x40, 0x23, 0x60, 0x42, 0x4B, 0x1A, 0x68, 0x80, 0x21, + 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x40, 0x49, 0x11, 0x40, 0x80, 0x22, + 0x52, 0x00, 0x0A, 0x43, 0x1A, 0x60, 0x10, 0x20, 0x1A, 0x00, 0x1F, 0x27, + 0x41, 0x4E, 0x42, 0x4D, 0x20, 0x24, 0x80, 0x21, 0xC9, 0x00, 0x13, 0x68, + 0xBB, 0x43, 0x03, 0x43, 0x13, 0x60, 0x83, 0x00, 0xF3, 0x58, 0x2B, 0x60, + 0x13, 0x68, 0xA3, 0x43, 0x23, 0x43, 0x13, 0x60, 0xC0, 0x46, 0xC0, 0x46, + 0xC0, 0x46, 0xC0, 0x46, 0x13, 0x68, 0x0B, 0x42, 0xFC, 0xD0, 0x01, 0x30, + 0x20, 0x28, 0xEA, 0xD1, 0x2D, 0x4C, 0x23, 0x68, 0x80, 0x22, 0x93, 0x43, + 0x23, 0x60, 0x83, 0xF7, 0x7E, 0xF9, 0x23, 0x68, 0x2A, 0x4A, 0x13, 0x40, + 0x23, 0x60, 0x31, 0x4A, 0x13, 0x68, 0x00, 0x2B, 0xFC, 0xD0, 0x30, 0x4A, + 0x13, 0x68, 0x02, 0x21, 0x8B, 0x43, 0x13, 0x60, 0x2C, 0x4B, 0x01, 0x22, + 0x1A, 0x60, 0x2D, 0x4A, 0x13, 0x68, 0x2D, 0x49, 0x0B, 0x40, 0x13, 0x60, + 0x2C, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x83, 0xF7, 0x5D, 0xF9, 0x1B, 0x49, + 0x0B, 0x68, 0x1E, 0x4A, 0x13, 0x40, 0x80, 0x22, 0x52, 0x01, 0x13, 0x43, + 0x0B, 0x60, 0x0B, 0x68, 0x17, 0x48, 0x18, 0x40, 0x80, 0x23, 0x1B, 0x01, + 0x03, 0x43, 0x0B, 0x60, 0x15, 0x4B, 0x19, 0x68, 0x17, 0x48, 0x08, 0x40, + 0x80, 0x21, 0x89, 0x00, 0x01, 0x43, 0x19, 0x60, 0x19, 0x68, 0x12, 0x48, + 0x08, 0x40, 0x80, 0x21, 0x49, 0x00, 0x01, 0x43, 0x19, 0x60, 0x1C, 0x4B, + 0x19, 0x68, 0x0A, 0x43, 0x1A, 0x60, 0x1B, 0x4A, 0x13, 0x68, 0x1B, 0x49, + 0x0B, 0x40, 0x13, 0x60, 0x1A, 0x4B, 0x1A, 0x68, 0x1A, 0x49, 0x0A, 0x40, + 0x1A, 0x60, 0x19, 0x68, 0x80, 0x22, 0xD2, 0x05, 0x0A, 0x43, 0x1A, 0x60, + 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF8, 0xBD, + 0x60, 0x40, 0x34, 0x40, 0xFF, 0xF7, 0xFF, 0xFF, 0x6C, 0x40, 0x34, 0x40, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xD8, 0x9B, 0x16, 0x00, 0x64, 0x40, 0x34, 0x40, + 0x58, 0x99, 0x16, 0x00, 0x70, 0x40, 0x34, 0x40, 0x40, 0x42, 0x04, 0x40, + 0x18, 0x00, 0x58, 0x40, 0x58, 0x40, 0x34, 0x40, 0xFF, 0xFF, 0xFF, 0xFB, + 0x08, 0x40, 0x34, 0x40, 0x14, 0x20, 0x34, 0x40, 0x18, 0x20, 0x34, 0x40, + 0xFF, 0xFF, 0xFB, 0xFF, 0x1C, 0x20, 0x34, 0x40, 0xFF, 0xFF, 0xFF, 0xDF, + 0x10, 0xB5, 0x07, 0x49, 0x0A, 0x69, 0x0F, 0x24, 0xA2, 0x43, 0x03, 0x20, + 0x02, 0x43, 0x0A, 0x61, 0xCB, 0x69, 0xA3, 0x43, 0x03, 0x43, 0xCB, 0x61, + 0x02, 0x48, 0x7E, 0xF7, 0xA1, 0xFB, 0x10, 0xBD, 0x00, 0x30, 0x50, 0x40, + 0x94, 0xD1, 0x10, 0x00, 0x70, 0xB5, 0x1B, 0x4B, 0x9B, 0x69, 0xDB, 0x05, + 0x1F, 0xD4, 0x0C, 0x38, 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x14, 0x00, + 0x1C, 0x40, 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x15, 0x4B, 0x1B, 0x7F, + 0x01, 0x2B, 0x1C, 0xD0, 0xCF, 0xF7, 0x62, 0xF8, 0x12, 0x4B, 0x1B, 0x7F, + 0xFF, 0x2B, 0x1A, 0xD0, 0x02, 0x20, 0x7B, 0xF7, 0xCB, 0xF9, 0xFF, 0xF7, + 0xCF, 0xFF, 0x0F, 0x4B, 0x80, 0x22, 0x12, 0x04, 0x1A, 0x60, 0x00, 0x2C, + 0x00, 0xD1, 0x62, 0xB6, 0x70, 0xBD, 0x0C, 0x4D, 0xC4, 0x24, 0x64, 0x00, + 0x00, 0x23, 0x2B, 0x51, 0xCE, 0xF7, 0xCC, 0xF8, 0x09, 0x4B, 0x2B, 0x51, + 0xF4, 0xE7, 0x05, 0x4B, 0xFF, 0x22, 0x1A, 0x77, 0xDE, 0xE7, 0x03, 0x4B, + 0x01, 0x22, 0x1A, 0x77, 0xE0, 0xE7, 0xC0, 0x46, 0x3C, 0x95, 0x16, 0x00, + 0x24, 0x2A, 0x16, 0x00, 0x00, 0x41, 0x04, 0x40, 0x28, 0x19, 0x16, 0x00, + 0xB9, 0x5A, 0x10, 0x00, 0x01, 0x28, 0x02, 0xD0, 0x02, 0x28, 0x05, 0xD0, + 0x70, 0x47, 0x05, 0x4B, 0x80, 0x22, 0x92, 0x04, 0x1A, 0x60, 0xF9, 0xE7, + 0x02, 0x4B, 0x80, 0x22, 0x52, 0x04, 0x1A, 0x60, 0xF4, 0xE7, 0xC0, 0x46, + 0x00, 0x41, 0x04, 0x40, 0x15, 0x4B, 0x16, 0x4A, 0x13, 0x60, 0x16, 0x4A, + 0x13, 0x60, 0x16, 0x4B, 0x1A, 0x68, 0x30, 0x21, 0x8A, 0x43, 0x1A, 0x60, + 0x1A, 0x68, 0x90, 0x31, 0x8A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x12, 0x49, + 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x11, 0x49, 0x0A, 0x40, 0x1A, 0x60, + 0x1A, 0x68, 0x10, 0x49, 0x0A, 0x40, 0x1A, 0x60, 0x1A, 0x68, 0x0F, 0x49, + 0x0A, 0x40, 0x1A, 0x60, 0x0E, 0x4A, 0xC4, 0x20, 0x80, 0x00, 0x13, 0x58, + 0x1B, 0x02, 0x1B, 0x0A, 0xC0, 0x21, 0x09, 0x06, 0x0B, 0x43, 0x13, 0x50, + 0x80, 0x23, 0x1B, 0x03, 0x13, 0x60, 0x70, 0x47, 0x00, 0x00, 0x7C, 0x07, + 0x08, 0x41, 0x04, 0x40, 0x0C, 0x41, 0x04, 0x40, 0x18, 0x41, 0x04, 0x40, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xFF, 0x00, 0xE1, 0x00, 0xE0, 0x70, 0xB5, 0x82, 0xB0, + 0x04, 0x00, 0x64, 0x4B, 0x18, 0x68, 0x04, 0x28, 0x04, 0xD8, 0x49, 0xD8, + 0x80, 0x00, 0x62, 0x4B, 0x1B, 0x58, 0x9F, 0x46, 0xFF, 0x28, 0x43, 0xD1, + 0x60, 0x4B, 0x80, 0x22, 0xD2, 0x00, 0x1A, 0x60, 0x5F, 0x4B, 0x00, 0x22, + 0x1A, 0x70, 0x5F, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x40, 0xD1, 0x5E, 0x4B, + 0x19, 0x68, 0x41, 0x29, 0x57, 0xD0, 0x43, 0xD8, 0x01, 0x29, 0x49, 0xD0, + 0x21, 0x29, 0x00, 0xD0, 0x81, 0xE0, 0x5A, 0x4B, 0x01, 0x22, 0x1A, 0x70, + 0x52, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x58, 0x4B, 0x1B, 0x68, 0x01, 0x2B, + 0x54, 0xD1, 0x50, 0xE0, 0x54, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x4F, 0x4B, + 0x80, 0x22, 0xD2, 0x00, 0x1A, 0x60, 0x4E, 0x4B, 0x00, 0x22, 0x1A, 0x70, + 0x50, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x00, 0xD1, 0x7D, 0xE0, 0x47, 0x4B, + 0x1B, 0x68, 0x02, 0x2B, 0x40, 0xD1, 0x00, 0x25, 0x4C, 0x4B, 0x1D, 0x70, + 0x01, 0x20, 0xFB, 0xF7, 0xCB, 0xFD, 0x4B, 0x4B, 0x1D, 0x70, 0x3D, 0xE0, + 0x46, 0x4B, 0x02, 0x22, 0x1A, 0x70, 0xE2, 0xE7, 0x44, 0x4B, 0x01, 0x22, + 0x1A, 0x70, 0xDE, 0xE7, 0x42, 0x4B, 0x19, 0x78, 0x45, 0x4B, 0xDD, 0x6E, + 0x00, 0x23, 0x00, 0x22, 0xA8, 0x47, 0xD6, 0xE7, 0x0F, 0x20, 0xFA, 0xF7, + 0x6F, 0xFD, 0xFF, 0x23, 0x03, 0x40, 0x3B, 0x4A, 0x13, 0x60, 0xB6, 0xE7, + 0x61, 0x29, 0x10, 0xD0, 0xFF, 0x29, 0x3E, 0xD1, 0x3D, 0x48, 0x7E, 0xF7, + 0xA1, 0xFA, 0xCD, 0xE7, 0x36, 0x4B, 0x02, 0x22, 0x1A, 0x70, 0x2F, 0x4B, + 0x01, 0x3A, 0x1A, 0x60, 0x34, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x0D, 0xD1, + 0x4C, 0xE0, 0x31, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x29, 0x4B, 0x01, 0x32, + 0x1A, 0x60, 0x2F, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0xC1, 0xD1, 0x26, 0x4B, + 0x03, 0x22, 0x1A, 0x60, 0x2D, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x00, 0x20, + 0xFB, 0xF7, 0x8A, 0xFD, 0x2D, 0x4B, 0x03, 0x22, 0x1A, 0x70, 0xFF, 0xF7, + 0x35, 0xFF, 0x2C, 0x4B, 0x1B, 0x68, 0x24, 0x4A, 0x12, 0x78, 0x1D, 0x49, + 0x09, 0x68, 0x2A, 0x48, 0x00, 0x68, 0x01, 0x90, 0x1E, 0x48, 0x00, 0x68, + 0x00, 0x90, 0x28, 0x48, 0x7E, 0xF7, 0x6E, 0xFA, 0x00, 0x2C, 0x27, 0xD0, + 0x26, 0x4A, 0x13, 0x68, 0x20, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x02, 0xB0, + 0x70, 0xBD, 0x24, 0x48, 0x7E, 0xF7, 0x62, 0xFA, 0x17, 0x4E, 0x31, 0x78, + 0x10, 0x4D, 0x00, 0x23, 0x00, 0x22, 0x28, 0x68, 0x81, 0xF7, 0xFE, 0xFF, + 0x02, 0x23, 0x33, 0x70, 0x01, 0x3B, 0x2B, 0x60, 0x12, 0x4B, 0x1B, 0x68, + 0x01, 0x2B, 0xC9, 0xD1, 0x0F, 0x4B, 0x1B, 0x78, 0x03, 0xE0, 0x0E, 0x4B, + 0x1B, 0x78, 0x01, 0x2B, 0xBF, 0xD0, 0x02, 0x2B, 0x00, 0xD0, 0x7A, 0xE7, + 0x04, 0x4B, 0x04, 0x22, 0x1A, 0x60, 0xBB, 0xE7, 0x12, 0x4A, 0x13, 0x68, + 0x20, 0x21, 0x8B, 0x43, 0x13, 0x60, 0xD6, 0xE7, 0x50, 0xE0, 0x10, 0x00, + 0xE0, 0xD1, 0x10, 0x00, 0xE4, 0xE1, 0x10, 0x00, 0xB2, 0xE6, 0x10, 0x00, + 0xA4, 0xE5, 0x10, 0x00, 0xC0, 0xE5, 0x10, 0x00, 0xB4, 0xE5, 0x10, 0x00, + 0x54, 0xE0, 0x10, 0x00, 0x60, 0xE6, 0x10, 0x00, 0xDC, 0xE6, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x9C, 0xD1, 0x10, 0x00, 0xD1, 0xE6, 0x10, 0x00, + 0xA8, 0xE5, 0x10, 0x00, 0xBC, 0xE5, 0x10, 0x00, 0xC8, 0xD1, 0x10, 0x00, + 0x84, 0x40, 0x04, 0x40, 0xB0, 0xD1, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, + 0x00, 0xB5, 0x38, 0x4B, 0x38, 0x4A, 0x1A, 0x60, 0x38, 0x4B, 0x39, 0x4A, + 0x1A, 0x60, 0x40, 0x23, 0x38, 0x4A, 0x13, 0x60, 0x28, 0x22, 0x38, 0x49, + 0x0A, 0x80, 0xC8, 0x21, 0x49, 0x00, 0x37, 0x48, 0x01, 0x80, 0x37, 0x48, + 0x01, 0x80, 0x03, 0x20, 0x36, 0x49, 0x08, 0x80, 0x02, 0x21, 0x36, 0x4C, + 0x21, 0x80, 0x36, 0x4C, 0x20, 0x80, 0x36, 0x48, 0x01, 0x80, 0x36, 0x49, + 0x0A, 0x80, 0x80, 0x25, 0xAD, 0x00, 0x35, 0x49, 0x0D, 0x80, 0x14, 0x21, + 0x34, 0x48, 0x01, 0x80, 0x34, 0x48, 0x15, 0x24, 0x04, 0x80, 0x34, 0x48, + 0x01, 0x80, 0x20, 0x26, 0x33, 0x49, 0x0E, 0x60, 0x0D, 0x3C, 0x33, 0x49, + 0x0C, 0x60, 0x33, 0x49, 0x01, 0x20, 0x40, 0x42, 0x08, 0x60, 0x00, 0x20, + 0x31, 0x49, 0x08, 0x60, 0x31, 0x49, 0x88, 0x46, 0x31, 0x4F, 0x39, 0x60, + 0x31, 0x4F, 0x14, 0x21, 0xFF, 0x31, 0x39, 0x60, 0x30, 0x4F, 0x31, 0x49, + 0x39, 0x60, 0x31, 0x4F, 0x07, 0x21, 0x39, 0x80, 0x30, 0x4F, 0x3B, 0x80, + 0x30, 0x4F, 0x41, 0x31, 0x39, 0x80, 0x30, 0x4F, 0x01, 0x39, 0x39, 0x80, + 0x2F, 0x4F, 0x3E, 0x80, 0x2F, 0x4E, 0x35, 0x80, 0x2F, 0x4D, 0xD2, 0x26, + 0x76, 0x00, 0x2E, 0x80, 0x64, 0x25, 0x2E, 0x4E, 0x35, 0x80, 0x2E, 0x4E, + 0x35, 0x80, 0x2E, 0x4D, 0x2C, 0x80, 0x2E, 0x4C, 0x18, 0x25, 0x25, 0x80, + 0x2D, 0x4C, 0x22, 0x80, 0x2D, 0x4A, 0x8C, 0x24, 0x14, 0x80, 0x2D, 0x4A, + 0x10, 0x80, 0x2D, 0x4A, 0x13, 0x60, 0x2D, 0x4B, 0x42, 0x46, 0x1A, 0x60, + 0x2C, 0x4B, 0x32, 0x22, 0x1A, 0x80, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, + 0xA0, 0x06, 0x16, 0x00, 0x00, 0xD7, 0x18, 0x00, 0x9C, 0x06, 0x16, 0x00, + 0x00, 0xF7, 0x18, 0x00, 0x78, 0x06, 0x16, 0x00, 0x5C, 0x06, 0x16, 0x00, + 0x8E, 0x06, 0x16, 0x00, 0x8C, 0x06, 0x16, 0x00, 0x5A, 0x06, 0x16, 0x00, + 0x4A, 0x06, 0x16, 0x00, 0x56, 0x06, 0x16, 0x00, 0x54, 0x06, 0x16, 0x00, + 0x5E, 0x06, 0x16, 0x00, 0x58, 0x06, 0x16, 0x00, 0x64, 0x06, 0x16, 0x00, + 0x66, 0x06, 0x16, 0x00, 0x62, 0x06, 0x16, 0x00, 0x68, 0x06, 0x16, 0x00, + 0x6C, 0x06, 0x16, 0x00, 0x44, 0x1E, 0x16, 0x00, 0x40, 0x1E, 0x16, 0x00, + 0x20, 0x4E, 0x00, 0x00, 0x7C, 0x06, 0x16, 0x00, 0x38, 0x1E, 0x16, 0x00, + 0x3C, 0x1E, 0x16, 0x00, 0x02, 0x73, 0x06, 0x20, 0x4C, 0x06, 0x16, 0x00, + 0x4E, 0x06, 0x16, 0x00, 0x50, 0x06, 0x16, 0x00, 0x52, 0x06, 0x16, 0x00, + 0x90, 0x06, 0x16, 0x00, 0x94, 0x06, 0x16, 0x00, 0x92, 0x06, 0x16, 0x00, + 0x8A, 0x06, 0x16, 0x00, 0x88, 0x06, 0x16, 0x00, 0x82, 0x06, 0x16, 0x00, + 0x80, 0x06, 0x16, 0x00, 0x86, 0x06, 0x16, 0x00, 0x84, 0x06, 0x16, 0x00, + 0x48, 0x1E, 0x16, 0x00, 0x70, 0x06, 0x16, 0x00, 0x74, 0x06, 0x16, 0x00, + 0x60, 0x06, 0x16, 0x00, 0x0F, 0x4B, 0x02, 0x22, 0x9A, 0x77, 0x0F, 0x4A, + 0x11, 0x6D, 0x80, 0x23, 0xDB, 0x01, 0x0B, 0x43, 0x13, 0x65, 0x0D, 0x4B, + 0x1B, 0x78, 0x02, 0x2B, 0x0B, 0xD0, 0x0A, 0x4B, 0x19, 0x6D, 0x80, 0x22, + 0x12, 0x02, 0x0A, 0x43, 0x1A, 0x65, 0x19, 0x6D, 0x80, 0x22, 0x92, 0x02, + 0x0A, 0x43, 0x1A, 0x65, 0x70, 0x47, 0x11, 0x6D, 0x80, 0x23, 0xDB, 0x02, + 0x0B, 0x43, 0x13, 0x65, 0xED, 0xE7, 0xC0, 0x46, 0x3C, 0x95, 0x16, 0x00, + 0x00, 0x60, 0x50, 0x40, 0xB4, 0xE5, 0x10, 0x00, 0x01, 0x4B, 0x01, 0x22, + 0xDA, 0x77, 0x70, 0x47, 0x3C, 0x95, 0x16, 0x00, 0x10, 0xB5, 0x01, 0x20, + 0x7F, 0xF7, 0x48, 0xF9, 0x10, 0xBD, 0x10, 0xB5, 0x80, 0x20, 0x40, 0x00, + 0x7B, 0xF7, 0x3A, 0xFC, 0x10, 0xBD, 0x00, 0x00, 0x10, 0xB5, 0x04, 0x00, + 0x20, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x03, 0xD0, 0x1F, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0x22, 0xD1, 0x00, 0x2C, 0x2C, 0xD0, 0x1D, 0x4A, 0x13, 0x68, + 0x08, 0x21, 0x0B, 0x43, 0x13, 0x60, 0x00, 0x23, 0x1B, 0x4A, 0x13, 0x60, + 0x1B, 0x4A, 0x13, 0x60, 0x1B, 0x4A, 0x13, 0x60, 0x1B, 0x4B, 0x1B, 0x68, + 0x01, 0x2B, 0x22, 0xD9, 0x1A, 0x4A, 0x0F, 0x21, 0x11, 0x70, 0x03, 0x3B, + 0x01, 0x2B, 0x05, 0xD8, 0x18, 0x4A, 0x80, 0x23, 0x1B, 0x02, 0x91, 0x69, + 0x0B, 0x43, 0x93, 0x61, 0x16, 0x49, 0x17, 0x48, 0x7E, 0xF7, 0xEC, 0xF8, + 0x10, 0xBD, 0xFF, 0xF7, 0xCF, 0xFE, 0xFF, 0xF7, 0x97, 0xFF, 0x11, 0x4B, + 0x01, 0x22, 0xDA, 0x77, 0xFF, 0xF7, 0xBE, 0xFF, 0xFF, 0xF7, 0xC1, 0xFF, + 0xD0, 0xE7, 0x07, 0x4A, 0x13, 0x68, 0x08, 0x21, 0x8B, 0x43, 0x13, 0x60, + 0xD1, 0xE7, 0x09, 0x4B, 0x0B, 0x22, 0x1A, 0x70, 0xE4, 0xE7, 0xC0, 0x46, + 0xA8, 0xE5, 0x10, 0x00, 0xAC, 0xE5, 0x10, 0x00, 0x84, 0x40, 0x04, 0x40, + 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, 0x54, 0xE6, 0x10, 0x00, + 0x50, 0xE0, 0x10, 0x00, 0xE2, 0xE1, 0x10, 0x00, 0x3C, 0x95, 0x16, 0x00, + 0xF8, 0xE8, 0x10, 0x00, 0xF4, 0xD1, 0x10, 0x00, 0x02, 0x4B, 0x80, 0x22, + 0x12, 0x04, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, + 0x02, 0x4B, 0x80, 0x22, 0x12, 0x05, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, + 0x00, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x80, 0x22, 0xD2, 0x05, 0x1A, 0x60, + 0x70, 0x47, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, 0x04, 0x4B, 0x1B, 0x78, + 0x00, 0x2B, 0x03, 0xD0, 0x03, 0x4B, 0x80, 0x22, 0x52, 0x05, 0x1A, 0x60, + 0x70, 0x47, 0xC0, 0x46, 0xD0, 0xE6, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, + 0x10, 0xB5, 0x04, 0x00, 0x13, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x07, 0xD0, + 0x11, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x16, 0xD9, 0x20, 0x00, 0x10, 0x4B, + 0x98, 0x47, 0x10, 0xBD, 0xAD, 0x33, 0xC3, 0x5C, 0x00, 0x2B, 0xF7, 0xD0, + 0x0D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x01, 0x20, + 0xFD, 0xF7, 0x54, 0xF8, 0xEA, 0xE7, 0xFF, 0xF7, 0xD5, 0xFF, 0x08, 0x4B, + 0x01, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0xAE, 0xF7, 0x09, 0xFD, 0x00, 0x28, + 0xE4, 0xD1, 0xA7, 0x23, 0x04, 0x22, 0xE2, 0x54, 0xE0, 0xE7, 0xC0, 0x46, + 0x50, 0xE0, 0x10, 0x00, 0xD5, 0x0D, 0x0B, 0x00, 0xD8, 0xE6, 0x10, 0x00, + 0x10, 0xB5, 0x04, 0x00, 0x0B, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x03, 0xD0, + 0x20, 0x00, 0xFE, 0xF7, 0x11, 0xF9, 0x10, 0xBD, 0x08, 0x4B, 0x1B, 0x78, + 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x01, 0x20, 0xFD, 0xF7, 0x2C, 0xF8, + 0xF2, 0xE7, 0xFF, 0xF7, 0xAD, 0xFF, 0x03, 0x4B, 0x01, 0x22, 0x1A, 0x70, + 0xF4, 0xE7, 0xC0, 0x46, 0x50, 0xE0, 0x10, 0x00, 0xD8, 0xE6, 0x10, 0x00, + 0x04, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x03, 0xD0, 0x03, 0x4B, 0x80, 0x22, + 0x92, 0x05, 0x1A, 0x60, 0x70, 0x47, 0xC0, 0x46, 0xD2, 0xE6, 0x10, 0x00, + 0x00, 0x41, 0x04, 0x40, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x83, 0xB0, 0x80, 0x46, 0x00, 0x91, 0x82, 0x00, + 0x93, 0x4B, 0xD5, 0x58, 0x9E, 0x23, 0xEC, 0x5C, 0x64, 0x00, 0x0F, 0x33, + 0xEB, 0x5C, 0xE4, 0x18, 0xE4, 0xB2, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, + 0x00, 0xD1, 0xAF, 0xE0, 0xA8, 0x23, 0xEB, 0x5C, 0x77, 0x2B, 0x02, 0xD8, + 0x01, 0x33, 0xA8, 0x22, 0xAB, 0x54, 0x43, 0x46, 0x1B, 0x02, 0x01, 0x27, + 0x3B, 0x43, 0x9B, 0x46, 0x87, 0x4B, 0x99, 0x46, 0x47, 0xE0, 0xC5, 0x20, + 0x02, 0x23, 0xFF, 0x22, 0x59, 0x46, 0xC0, 0x00, 0x7B, 0xF7, 0x0A, 0xFF, + 0x06, 0x00, 0x3B, 0x88, 0x03, 0x80, 0x7B, 0xF7, 0x2F, 0xFF, 0x30, 0x88, + 0x43, 0x1C, 0x9B, 0xB2, 0x7F, 0x49, 0x5A, 0x5C, 0x41, 0x5C, 0x49, 0x10, + 0x7E, 0x48, 0x7D, 0xF7, 0xFF, 0xFF, 0x00, 0x23, 0x3B, 0x80, 0x7D, 0x4B, + 0xE2, 0x18, 0x13, 0x88, 0x78, 0x21, 0x8B, 0x43, 0x13, 0x80, 0x7B, 0x4B, + 0x9C, 0x46, 0x64, 0x44, 0x23, 0x88, 0x7A, 0x4A, 0x13, 0x40, 0x23, 0x80, + 0xAF, 0x22, 0xAB, 0x5C, 0x01, 0x3B, 0xDB, 0xB2, 0xAB, 0x54, 0x35, 0x31, + 0x6A, 0x5C, 0x50, 0x42, 0x42, 0x41, 0x6A, 0x54, 0x5A, 0x1E, 0x93, 0x41, + 0xA8, 0x22, 0xAB, 0x54, 0x8C, 0x23, 0xEB, 0x58, 0x00, 0x2B, 0x05, 0xD0, + 0x6A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x9E, 0x23, 0xEC, 0x5C, 0x64, 0x00, 0x0F, 0x33, 0xEB, 0x5C, 0xE4, 0x18, + 0xE4, 0xB2, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x58, 0xD0, 0xA3, 0x00, + 0x1C, 0x19, 0x64, 0x00, 0x66, 0x4B, 0xE3, 0x18, 0x1B, 0x88, 0xDB, 0x0B, + 0x50, 0xD0, 0x65, 0x4B, 0xE7, 0x18, 0x3B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, + 0xA9, 0xD1, 0x63, 0x4B, 0xE7, 0x18, 0x3B, 0x88, 0x9B, 0xB2, 0x00, 0x2B, + 0x38, 0xD0, 0xEC, 0x23, 0xEB, 0x58, 0x00, 0x2B, 0xB7, 0xD1, 0x5A, 0x4B, + 0xE3, 0x18, 0x1B, 0x88, 0xDB, 0x04, 0x9B, 0x0D, 0x0A, 0xD0, 0x3A, 0x88, + 0x90, 0x21, 0x69, 0x58, 0xD3, 0x18, 0x4A, 0x89, 0x92, 0x05, 0x92, 0x0D, + 0x09, 0x89, 0x52, 0x18, 0x93, 0x42, 0x0D, 0xDA, 0x8C, 0x23, 0xEB, 0x58, + 0x00, 0x2B, 0x06, 0xD0, 0x4B, 0x4B, 0x9B, 0x6E, 0x01, 0x93, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, 0x3B, 0x80, 0x98, 0xE7, + 0x01, 0x23, 0xFF, 0x22, 0x59, 0x46, 0x4E, 0x48, 0x7B, 0xF7, 0x8C, 0xFE, + 0x00, 0x23, 0x9A, 0x46, 0x03, 0x70, 0x7B, 0xF7, 0xB1, 0xFE, 0x90, 0x26, + 0xAB, 0x59, 0x18, 0x89, 0x85, 0xF7, 0xA2, 0xFF, 0x8C, 0x23, 0xEA, 0x58, + 0xAA, 0x51, 0x52, 0x46, 0xEA, 0x50, 0xE6, 0xE7, 0xEC, 0x23, 0xEB, 0x58, + 0x00, 0x2B, 0x00, 0xD0, 0x7D, 0xE7, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x4B, 0x46, 0x9B, 0x6E, 0x98, 0x47, 0x76, 0xE7, 0x00, 0x99, 0x40, 0x46, + 0xFD, 0xF7, 0x0C, 0xF8, 0x3D, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0x0A, 0xD0, + 0xFC, 0xF7, 0x6E, 0xF9, 0x01, 0x28, 0x28, 0xD0, 0x03, 0xB0, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0xAD, 0x33, + 0xEB, 0x5C, 0x00, 0x2B, 0x0E, 0xD1, 0x35, 0x4B, 0x1B, 0x78, 0x01, 0x2B, + 0x04, 0xD0, 0x00, 0x21, 0x02, 0x20, 0xFC, 0xF7, 0x2B, 0xFF, 0xE7, 0xE7, + 0xFF, 0xF7, 0x08, 0xFF, 0x2F, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0xF4, 0xE7, + 0x2D, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x21, 0x01, 0x20, + 0xFC, 0xF7, 0x1C, 0xFF, 0xD8, 0xE7, 0xFF, 0xF7, 0x9D, 0xFE, 0x28, 0x4B, + 0x01, 0x22, 0x1A, 0x70, 0xF4, 0xE7, 0xFB, 0xF7, 0x0F, 0xFA, 0x00, 0x28, + 0xD2, 0xD0, 0xAE, 0xF7, 0xCD, 0xFB, 0x00, 0x28, 0xCE, 0xD1, 0x8A, 0xF7, + 0x5D, 0xFA, 0x00, 0x28, 0xCA, 0xD1, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, + 0xC6, 0xD1, 0xA7, 0x33, 0xEB, 0x5C, 0x01, 0x2B, 0xC2, 0xD8, 0xD0, 0xF7, + 0xD9, 0xFA, 0x04, 0x1E, 0xBE, 0xD0, 0x1B, 0x4B, 0xC2, 0x69, 0x9A, 0x42, + 0xBA, 0xD1, 0xA5, 0xF7, 0x4D, 0xFA, 0x63, 0x68, 0x05, 0x3B, 0x1B, 0x1A, + 0x1B, 0x01, 0x1B, 0x09, 0xAA, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0xAF, 0xD0, + 0x0B, 0x2B, 0xAD, 0xD9, 0x13, 0x4B, 0x01, 0x22, 0x1A, 0x70, 0x9E, 0x23, + 0xE8, 0x5C, 0xD1, 0xF7, 0x35, 0xFA, 0xAA, 0x23, 0x00, 0x22, 0xEA, 0x54, + 0xA2, 0xE7, 0xC0, 0x46, 0x38, 0x27, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x00, 0x00, 0x61, 0x40, 0xFC, 0xD1, 0x10, 0x00, 0xCA, 0x69, 0x61, 0x40, + 0xCC, 0x69, 0x61, 0x40, 0x07, 0xE0, 0xFF, 0xFF, 0xC8, 0x69, 0x61, 0x40, + 0xD0, 0x69, 0x61, 0x40, 0xCE, 0x69, 0x61, 0x40, 0x2B, 0x06, 0x00, 0x00, + 0x50, 0xE0, 0x10, 0x00, 0xD8, 0xE6, 0x10, 0x00, 0xC9, 0x1F, 0x10, 0x00, + 0x98, 0xE5, 0x10, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x81, 0x46, 0x82, 0x00, 0xBA, 0x4B, + 0xD4, 0x58, 0x01, 0x94, 0xB0, 0x23, 0x15, 0x22, 0xE2, 0x54, 0x2A, 0x3B, + 0xFA, 0x22, 0x52, 0x01, 0xE2, 0x52, 0xB6, 0x4B, 0x1B, 0x68, 0x02, 0x2B, + 0x15, 0xD0, 0xB4, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x26, 0xD9, 0xB3, 0x4B, + 0x00, 0x22, 0x1A, 0x70, 0xA1, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0x2C, 0xD0, + 0x86, 0x23, 0xE3, 0x5A, 0x00, 0x2B, 0x6B, 0xD0, 0x5B, 0x00, 0x22, 0x6F, + 0x94, 0x46, 0x63, 0x44, 0x1B, 0x01, 0x1F, 0x09, 0x29, 0xE0, 0xAB, 0x4B, + 0xE3, 0x61, 0xAF, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x03, 0xD1, 0xA9, 0x4B, + 0x1B, 0x78, 0x01, 0x2B, 0x04, 0xD0, 0x01, 0x21, 0x02, 0x20, 0xFC, 0xF7, + 0x87, 0xFE, 0xDA, 0xE7, 0xFF, 0xF7, 0x64, 0xFE, 0xA3, 0x4B, 0x00, 0x22, + 0x1A, 0x70, 0xF4, 0xE7, 0xA0, 0x4B, 0xE3, 0x61, 0x9E, 0x4B, 0x1B, 0x78, + 0x00, 0x2B, 0xD2, 0xD0, 0x9F, 0x4B, 0x18, 0x68, 0x00, 0x28, 0xCE, 0xD0, + 0xFB, 0xF7, 0x86, 0xFE, 0xCB, 0xE7, 0xE4, 0x33, 0xE3, 0x58, 0x19, 0x68, + 0xA3, 0x6F, 0xC9, 0x1A, 0x14, 0x39, 0x09, 0x01, 0x0F, 0x09, 0xA6, 0x23, + 0xE3, 0x5C, 0xDB, 0x02, 0xE0, 0x22, 0x92, 0x01, 0x1A, 0x40, 0x96, 0x4B, + 0x59, 0x78, 0x0F, 0x23, 0x0B, 0x40, 0x13, 0x43, 0x94, 0x4A, 0x13, 0x43, + 0xA3, 0x82, 0xE7, 0x60, 0xFB, 0xF7, 0x56, 0xF9, 0x02, 0x90, 0xFD, 0xF7, + 0x2B, 0xF9, 0x03, 0x90, 0xAE, 0xF7, 0x12, 0xFB, 0x06, 0x00, 0xA1, 0x23, + 0xE3, 0x5C, 0x04, 0x2B, 0x00, 0xD1, 0x38, 0xE2, 0x00, 0x25, 0x00, 0x28, + 0x2B, 0xD0, 0x8B, 0x4B, 0xA2, 0x6F, 0x1A, 0x60, 0x9F, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x00, 0xD1, 0x5C, 0xE1, 0x88, 0x4A, 0xD2, 0x88, 0x22, 0x61, + 0x01, 0x2B, 0x00, 0xD0, 0xDA, 0xE1, 0xA7, 0x33, 0xE3, 0x5C, 0xA7, 0x21, + 0x61, 0x5C, 0x5B, 0x18, 0x1B, 0x11, 0x83, 0x49, 0x4B, 0x43, 0x93, 0x42, + 0x00, 0xD2, 0x13, 0x00, 0x23, 0x61, 0xCD, 0xE1, 0xA6, 0x23, 0xE3, 0x5C, + 0xDB, 0x02, 0xE0, 0x22, 0x92, 0x01, 0x1A, 0x40, 0x78, 0x4B, 0x59, 0x78, + 0x0F, 0x23, 0x0B, 0x40, 0x13, 0x43, 0x7B, 0x4A, 0x13, 0x43, 0xA3, 0x82, + 0x01, 0x27, 0x7F, 0x42, 0xC2, 0xE7, 0xA5, 0xF7, 0x73, 0xF9, 0x60, 0x60, + 0x03, 0x9B, 0x00, 0x2B, 0x52, 0xD0, 0x76, 0x4B, 0x23, 0x61, 0x11, 0x23, + 0xA3, 0x75, 0x8E, 0x33, 0xE3, 0x5C, 0x01, 0x2B, 0x47, 0xD0, 0x00, 0x25, + 0x48, 0x23, 0x9B, 0x46, 0xAF, 0x23, 0xE3, 0x5C, 0x98, 0x46, 0x20, 0x00, + 0x48, 0x30, 0x7E, 0xF7, 0x83, 0xFA, 0x6E, 0x4A, 0x12, 0x68, 0x92, 0x68, + 0x00, 0x2A, 0x00, 0xD0, 0xE0, 0xE0, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, + 0x01, 0xD1, 0x6A, 0x4B, 0x23, 0x61, 0x40, 0x44, 0xC3, 0xB2, 0xA7, 0x22, + 0xA2, 0x5C, 0x11, 0x00, 0x19, 0x43, 0x06, 0xD0, 0xD3, 0x18, 0x65, 0x4A, + 0x53, 0x43, 0x22, 0x69, 0x94, 0x46, 0x63, 0x44, 0x23, 0x61, 0x23, 0x69, + 0x62, 0x4A, 0x93, 0x42, 0x00, 0xD9, 0x13, 0x00, 0x23, 0x61, 0x5A, 0x46, + 0x21, 0x69, 0x20, 0x00, 0xFB, 0xF7, 0x16, 0xF8, 0x9F, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x04, 0xD1, 0x63, 0x68, 0x03, 0x33, 0x03, 0x22, 0x93, 0x43, + 0x63, 0x60, 0xA7, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x50, 0x4B, 0xA2, 0x6F, + 0x1A, 0x60, 0x20, 0x00, 0xCF, 0xF7, 0xB6, 0xFF, 0x00, 0x28, 0x00, 0xD0, + 0xAE, 0xE1, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x49, 0xE1, 0x37, 0x33, + 0x9B, 0x46, 0xB7, 0xE7, 0x02, 0x9B, 0x00, 0x2B, 0x6B, 0xD0, 0x00, 0x23, + 0x00, 0x25, 0x3E, 0x4A, 0x90, 0x46, 0xA1, 0x22, 0x94, 0x46, 0x02, 0xE0, + 0x01, 0x33, 0x07, 0x2B, 0x0B, 0xD0, 0x9A, 0x00, 0x41, 0x46, 0x52, 0x58, + 0x00, 0x2A, 0xF7, 0xD0, 0x61, 0x46, 0x52, 0x5C, 0x00, 0x2A, 0xF3, 0xD1, + 0x01, 0x35, 0xED, 0xB2, 0xF0, 0xE7, 0x01, 0x2D, 0x08, 0xD9, 0xA0, 0x33, + 0x00, 0x22, 0xE2, 0x54, 0x41, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x28, 0x23, + 0x9B, 0x46, 0x93, 0xE7, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x23, 0xD1, + 0xA7, 0x33, 0x00, 0x22, 0xE2, 0x54, 0x01, 0x33, 0xE2, 0x5C, 0x53, 0x42, + 0x5A, 0x41, 0x53, 0x42, 0x08, 0x22, 0x1A, 0x40, 0x68, 0x32, 0x38, 0x4B, + 0x1B, 0x68, 0x98, 0x46, 0xC3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x21, + 0x09, 0x05, 0x8B, 0x42, 0x04, 0xD9, 0x43, 0x46, 0x1B, 0x1A, 0x1B, 0x01, + 0x1B, 0x09, 0x5B, 0x42, 0x00, 0x21, 0x8B, 0x46, 0x9A, 0x42, 0x01, 0xD3, + 0xD3, 0x1A, 0x9B, 0x46, 0x2C, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x6B, 0xE7, + 0x01, 0x2B, 0x00, 0xD0, 0x65, 0xE1, 0xA7, 0x33, 0xE2, 0x5C, 0x53, 0x42, + 0x5A, 0x41, 0x53, 0x42, 0x0C, 0x22, 0x1A, 0x40, 0x44, 0x32, 0xE3, 0x6E, + 0x98, 0x46, 0xC3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x21, 0x09, 0x05, + 0x8B, 0x42, 0x04, 0xD9, 0x43, 0x46, 0x1B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, + 0x5B, 0x42, 0x00, 0x21, 0x8B, 0x46, 0x9A, 0x42, 0x01, 0xD3, 0xD3, 0x1A, + 0x9B, 0x46, 0x1B, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x48, 0xE7, 0x0A, 0x4B, + 0x1B, 0x68, 0x00, 0x25, 0x01, 0x2B, 0x00, 0xD9, 0x05, 0xE7, 0x13, 0x4B, + 0x1B, 0x68, 0x9B, 0x68, 0x00, 0x2B, 0x00, 0xD1, 0x37, 0xE1, 0x13, 0x4B, + 0x1B, 0x68, 0x23, 0x61, 0x00, 0x23, 0x9B, 0x46, 0x36, 0xE7, 0xC0, 0x46, + 0x38, 0x27, 0x16, 0x00, 0x50, 0xE0, 0x10, 0x00, 0x98, 0xE5, 0x10, 0x00, + 0xC1, 0x60, 0x10, 0x00, 0xD8, 0xE6, 0x10, 0x00, 0xF8, 0xE6, 0x10, 0x00, + 0x7C, 0x91, 0x0D, 0x00, 0x40, 0x80, 0xFF, 0xFF, 0xCC, 0xE6, 0x10, 0x00, + 0x5C, 0xAB, 0x16, 0x00, 0xE2, 0x04, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, + 0xE4, 0x57, 0x00, 0x00, 0xF4, 0xE1, 0x10, 0x00, 0x5C, 0x1C, 0x00, 0x00, + 0x70, 0x71, 0x00, 0x00, 0x40, 0xE0, 0x10, 0x00, 0x2C, 0xE6, 0x10, 0x00, + 0x00, 0x23, 0x04, 0x93, 0x05, 0x93, 0x20, 0x1D, 0x23, 0x00, 0x05, 0xAA, + 0x04, 0xA9, 0xFA, 0xF7, 0xAD, 0xFE, 0x04, 0x9B, 0x00, 0x2B, 0x28, 0xD0, + 0x22, 0x69, 0x9A, 0x42, 0x00, 0xD9, 0x1A, 0x00, 0x22, 0x61, 0x03, 0x26, + 0x63, 0x68, 0x9A, 0x46, 0x5A, 0x46, 0x21, 0x69, 0x01, 0x98, 0xFA, 0xF7, + 0x3B, 0xFF, 0x63, 0x68, 0x53, 0x45, 0x08, 0xD0, 0x05, 0x9B, 0x53, 0x44, + 0x1B, 0x01, 0x1B, 0x09, 0x63, 0x60, 0x01, 0x3E, 0xF6, 0xB2, 0x00, 0x2E, + 0xEC, 0xD1, 0x9F, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x0E, 0xE7, + 0x63, 0x68, 0x03, 0x33, 0x03, 0x22, 0x93, 0x43, 0x63, 0x60, 0x23, 0x69, + 0x70, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x23, 0x61, 0x03, 0xE7, 0x02, 0x9B, + 0x00, 0x2B, 0x00, 0xD1, 0x9B, 0xE6, 0xEA, 0xE7, 0xA7, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x00, 0xD0, 0x7B, 0xE0, 0xA8, 0x33, 0xE3, 0x5C, 0x00, 0x2B, + 0x00, 0xD0, 0x76, 0xE0, 0xB3, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, + 0x71, 0xE0, 0x65, 0x4B, 0x23, 0x61, 0x73, 0x42, 0x73, 0x41, 0x5B, 0x42, + 0x4B, 0x22, 0x93, 0x43, 0x60, 0x33, 0x5B, 0x00, 0x62, 0x68, 0x94, 0x46, + 0x63, 0x44, 0x60, 0x4A, 0x13, 0x40, 0x63, 0x60, 0xB0, 0x23, 0x09, 0x22, + 0xE2, 0x54, 0x20, 0x00, 0xCF, 0xF7, 0xA8, 0xFE, 0x00, 0x28, 0x00, 0xD0, + 0xA0, 0xE0, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x00, 0x2E, 0x3A, 0xD0, + 0xA5, 0xF7, 0x0E, 0xF8, 0x57, 0x4B, 0x18, 0x60, 0x07, 0xB0, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x66, 0x60, + 0x80, 0xE0, 0x00, 0x2E, 0x00, 0xD1, 0x86, 0xE0, 0x51, 0x4B, 0x23, 0x61, + 0x20, 0x00, 0xFD, 0xF7, 0x57, 0xFE, 0x60, 0x60, 0x18, 0x26, 0x65, 0x68, + 0x00, 0x22, 0x21, 0x69, 0x01, 0x98, 0xFA, 0xF7, 0xD1, 0xFE, 0x63, 0x68, + 0xAB, 0x42, 0x06, 0xD0, 0x75, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x65, 0x60, + 0x18, 0x36, 0x60, 0x2E, 0xEF, 0xD1, 0x20, 0x00, 0xCF, 0xF7, 0x76, 0xFE, + 0x00, 0x28, 0x6F, 0xD1, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xCF, 0xE7, + 0x39, 0x00, 0x14, 0x31, 0x09, 0x01, 0x09, 0x09, 0x48, 0x46, 0x40, 0x4B, + 0x98, 0x47, 0xCB, 0xE7, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xA3, 0x7D, + 0x10, 0x2B, 0x01, 0xD8, 0x11, 0x23, 0xA3, 0x75, 0x02, 0x9B, 0x00, 0x2B, + 0xBC, 0xD0, 0x01, 0x2D, 0xBA, 0xD1, 0x39, 0x4B, 0x1B, 0x68, 0x9B, 0x68, + 0x00, 0x2B, 0xB5, 0xD1, 0x37, 0x4B, 0x1B, 0x68, 0x23, 0x61, 0x9F, 0x23, + 0xE3, 0x5C, 0x01, 0x2B, 0xAE, 0xD1, 0x35, 0x4B, 0x1B, 0x68, 0x23, 0x61, + 0xAA, 0xE7, 0x34, 0x4B, 0xDB, 0x88, 0x23, 0x61, 0xA1, 0x23, 0xE3, 0x5C, + 0x04, 0x2B, 0xB0, 0xD0, 0x00, 0x2E, 0xB1, 0xD1, 0x30, 0x4B, 0x23, 0x61, + 0xA7, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x03, 0xD1, 0xA8, 0x22, 0xA2, 0x5C, + 0x00, 0x2A, 0x2E, 0xD0, 0xA8, 0x22, 0xA1, 0x5C, 0xCB, 0x18, 0x2A, 0x49, + 0x59, 0x43, 0x29, 0x4B, 0x9C, 0x46, 0x61, 0x44, 0x21, 0x61, 0x23, 0x4B, + 0x1A, 0x68, 0x53, 0x6F, 0x58, 0x42, 0x43, 0x41, 0x5B, 0x42, 0x1B, 0x48, + 0x03, 0x40, 0x24, 0x48, 0x84, 0x46, 0x63, 0x44, 0x92, 0x68, 0x00, 0x2A, + 0x02, 0xD0, 0x22, 0x4A, 0x12, 0x68, 0x9B, 0x1A, 0x99, 0x42, 0x00, 0xD9, + 0x19, 0x00, 0x21, 0x61, 0x66, 0x68, 0x28, 0x22, 0x20, 0x00, 0xFA, 0xF7, + 0x63, 0xFE, 0x01, 0x28, 0x00, 0xD1, 0x7C, 0xE7, 0x9F, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x04, 0xD1, 0x63, 0x68, 0x03, 0x33, 0x03, 0x22, 0x93, 0x43, + 0x63, 0x60, 0x20, 0x00, 0xCF, 0xF7, 0x06, 0xFE, 0x00, 0x28, 0x9B, 0xD0, + 0xA1, 0x23, 0xE3, 0x5C, 0x04, 0x2B, 0x8F, 0xD0, 0x08, 0x21, 0x48, 0x46, + 0x11, 0x4B, 0x98, 0x47, 0x5E, 0xE7, 0x00, 0x25, 0xC7, 0xE5, 0x00, 0x25, + 0xC5, 0xE5, 0x00, 0x23, 0x9B, 0x46, 0xFF, 0xE5, 0xAA, 0xF8, 0xFF, 0xFF, + 0x98, 0x12, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x0F, 0x34, 0xE6, 0x10, 0x00, + 0x88, 0x13, 0x00, 0x00, 0xB9, 0x4C, 0x0B, 0x00, 0xF4, 0xE1, 0x10, 0x00, + 0x40, 0xE0, 0x10, 0x00, 0x44, 0xE0, 0x10, 0x00, 0x5C, 0xAB, 0x16, 0x00, + 0x5C, 0x1C, 0x00, 0x00, 0x7C, 0x42, 0x00, 0x00, 0xE8, 0xE1, 0x10, 0x00, + 0x95, 0x0F, 0x0B, 0x00, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x46, 0x46, + 0xC0, 0xB5, 0x82, 0xB0, 0xB7, 0x4B, 0xB8, 0x4A, 0x13, 0x60, 0x80, 0x22, + 0x52, 0x00, 0x9C, 0x5C, 0xFD, 0xF7, 0x5A, 0xFA, 0xB5, 0x4B, 0x1B, 0x68, + 0x9B, 0x68, 0x00, 0x2B, 0x09, 0xD0, 0xB2, 0x4B, 0x1D, 0x68, 0x02, 0x23, + 0xFF, 0x33, 0xEB, 0x5C, 0xA3, 0x42, 0x00, 0xD1, 0x42, 0xE1, 0xB0, 0x4F, + 0x84, 0xE0, 0xFA, 0xF7, 0xFD, 0xFD, 0xF2, 0xE7, 0xAE, 0x4A, 0x93, 0x42, + 0x46, 0xD1, 0xAE, 0x4B, 0x4B, 0x60, 0x43, 0xE0, 0xAD, 0x49, 0x8B, 0x42, + 0x00, 0xD1, 0xE5, 0xE0, 0xAC, 0x49, 0x8B, 0x42, 0x16, 0xD1, 0xAC, 0x4B, + 0x1A, 0x68, 0x00, 0x2A, 0x38, 0xD0, 0x23, 0x01, 0xED, 0x18, 0xA9, 0x68, + 0x8B, 0x00, 0x9B, 0x58, 0x00, 0x9A, 0x48, 0x46, 0x02, 0x43, 0xD2, 0xB2, + 0x00, 0x2A, 0x04, 0xD0, 0x00, 0x29, 0x00, 0xD0, 0xCC, 0xE0, 0xD8, 0x22, + 0x1A, 0x86, 0x00, 0x22, 0x9A, 0x62, 0x25, 0xE0, 0xA1, 0x49, 0x8B, 0x42, + 0x22, 0xD1, 0x02, 0x2A, 0x20, 0xD1, 0x00, 0x21, 0x02, 0x20, 0xFC, 0xF7, + 0xA5, 0xFB, 0x1B, 0xE0, 0x9D, 0x4B, 0x1D, 0x68, 0x00, 0x9B, 0x4A, 0x46, + 0x13, 0x43, 0xDB, 0xB2, 0x00, 0x2B, 0x04, 0xD0, 0x00, 0x23, 0xAB, 0x62, + 0x34, 0x33, 0x01, 0x22, 0xEA, 0x54, 0xAE, 0xF7, 0x53, 0xF8, 0x43, 0x1E, + 0x98, 0x41, 0x43, 0x42, 0xC0, 0x22, 0x92, 0x01, 0x13, 0x40, 0x80, 0x22, + 0x52, 0x01, 0x94, 0x46, 0x63, 0x44, 0x2B, 0x86, 0x12, 0x23, 0x6B, 0x86, + 0x86, 0x4B, 0x1B, 0x68, 0x52, 0x46, 0x98, 0x18, 0x45, 0x68, 0x00, 0x2D, + 0x00, 0xD1, 0xD1, 0xE0, 0x42, 0x46, 0x04, 0x3A, 0x51, 0x42, 0x4A, 0x41, + 0xD2, 0xB2, 0x31, 0x01, 0x5B, 0x18, 0x99, 0x68, 0x00, 0x68, 0xA8, 0x47, + 0x7D, 0x4B, 0x1D, 0x68, 0x33, 0x01, 0xEB, 0x18, 0x85, 0x4A, 0x5B, 0x68, + 0x93, 0x42, 0x00, 0xD1, 0xC5, 0xE0, 0x33, 0x01, 0xEB, 0x18, 0x00, 0x22, + 0x1A, 0x73, 0x03, 0x32, 0xFF, 0x32, 0xAB, 0x5C, 0x01, 0x3B, 0xAB, 0x54, + 0x02, 0x23, 0xFF, 0x33, 0xEA, 0x5C, 0x0F, 0x21, 0xA2, 0x42, 0x00, 0xD1, + 0xC5, 0xE0, 0x01, 0x34, 0x0C, 0x40, 0x23, 0x01, 0xEB, 0x18, 0x1B, 0x7B, + 0x00, 0x2B, 0xF5, 0xD0, 0x80, 0x23, 0x5B, 0x00, 0xEC, 0x54, 0xA2, 0x42, + 0x00, 0xD1, 0xBB, 0xE0, 0x26, 0x00, 0x75, 0x4B, 0xE3, 0x18, 0x1B, 0x01, + 0x1B, 0x88, 0x9B, 0x06, 0x5B, 0x0F, 0x98, 0x46, 0x03, 0x3B, 0x02, 0x2B, + 0x00, 0xD9, 0xAF, 0xE0, 0xFB, 0xF7, 0x70, 0xFD, 0x00, 0x90, 0x01, 0x90, + 0x3A, 0x68, 0x00, 0x23, 0x01, 0x21, 0x91, 0x42, 0x5B, 0x41, 0xDB, 0xB2, + 0x99, 0x46, 0x23, 0x01, 0x9A, 0x46, 0xE9, 0x18, 0x4B, 0x68, 0x69, 0x48, + 0x83, 0x42, 0x62, 0xD0, 0x00, 0xD9, 0x63, 0xE7, 0x67, 0x4A, 0x93, 0x42, + 0x88, 0xD0, 0x63, 0x4A, 0x93, 0x42, 0x00, 0xD0, 0x56, 0xE7, 0x65, 0x4B, + 0x1D, 0x68, 0x00, 0x23, 0xAB, 0x62, 0x51, 0x33, 0x01, 0x22, 0xEA, 0x54, + 0xAD, 0xF7, 0xDE, 0xFF, 0x00, 0x28, 0x05, 0xD0, 0x80, 0x23, 0x9B, 0x01, + 0xAB, 0x85, 0x06, 0x23, 0xEB, 0x85, 0x8F, 0xE7, 0x50, 0x4B, 0x1B, 0x68, + 0x02, 0x2B, 0x0B, 0xD0, 0x00, 0x9B, 0x4A, 0x46, 0x13, 0x43, 0xDB, 0xB2, + 0x00, 0x2B, 0x1C, 0xD1, 0x80, 0x23, 0x1B, 0x01, 0xAB, 0x85, 0x12, 0x23, + 0xEB, 0x85, 0x7F, 0xE7, 0x55, 0x4B, 0xEB, 0x61, 0x01, 0x9B, 0x00, 0x2B, + 0x03, 0xD1, 0xFD, 0xF7, 0x13, 0xFA, 0x01, 0x28, 0x07, 0xD9, 0x00, 0x9A, + 0xD3, 0x02, 0xAB, 0x85, 0x09, 0x23, 0x9B, 0x1A, 0x5B, 0x00, 0xEB, 0x85, + 0x6E, 0xE7, 0x80, 0x23, 0x5B, 0x00, 0xAB, 0x85, 0xEE, 0x3B, 0xEB, 0x85, + 0x68, 0xE7, 0xFD, 0xF7, 0x41, 0xF9, 0x01, 0x28, 0x00, 0xD8, 0x63, 0xE7, + 0x80, 0x23, 0xDB, 0x01, 0xAB, 0x85, 0x08, 0x23, 0xEB, 0x85, 0x5D, 0xE7, + 0xC8, 0x22, 0x92, 0x00, 0x1A, 0x86, 0x30, 0xE7, 0x01, 0x2A, 0x00, 0xD9, + 0x56, 0xE7, 0x01, 0x9B, 0x00, 0x2B, 0x00, 0xD1, 0x52, 0xE7, 0x23, 0x01, + 0xED, 0x18, 0xAB, 0x68, 0x9B, 0x00, 0x3E, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1B, 0x68, 0xC0, 0x22, 0x12, 0x01, 0xDA, 0x66, 0x46, 0xE7, 0x02, 0x2A, + 0x00, 0xD0, 0x43, 0xE7, 0x23, 0x01, 0xED, 0x18, 0x2B, 0x7A, 0x9B, 0x00, + 0x37, 0x4A, 0x9D, 0x58, 0xAF, 0x23, 0xEB, 0x5C, 0x00, 0x2B, 0x03, 0xD1, + 0x35, 0x4B, 0x1B, 0x78, 0x01, 0x2B, 0x09, 0xD0, 0xA0, 0x23, 0xEB, 0x5C, + 0x02, 0x2B, 0x00, 0xD0, 0x30, 0xE7, 0x01, 0x21, 0x02, 0x20, 0xFC, 0xF7, + 0xB5, 0xFA, 0x2B, 0xE7, 0xFF, 0xF7, 0x92, 0xFA, 0x00, 0x23, 0x2D, 0x4A, + 0x13, 0x70, 0xEF, 0xE7, 0x2C, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x30, 0xE7, 0x24, 0x4B, 0x1B, 0x68, 0x00, 0x2B, + 0x00, 0xD1, 0x34, 0xE7, 0x11, 0x22, 0x9A, 0x75, 0x31, 0xE7, 0xFB, 0xF7, + 0x93, 0xFB, 0x11, 0xE0, 0x80, 0x20, 0x80, 0x00, 0x7A, 0xF7, 0xE2, 0xFD, + 0x13, 0xE0, 0x80, 0x23, 0x5B, 0x00, 0xEC, 0x54, 0x81, 0x23, 0x5B, 0x00, + 0xEB, 0x5C, 0x00, 0x2B, 0x04, 0xD1, 0x05, 0x33, 0xFF, 0x33, 0xEB, 0x58, + 0x00, 0x2B, 0xEA, 0xD0, 0x07, 0x4B, 0x1A, 0x68, 0x81, 0x23, 0x5B, 0x00, + 0xD3, 0x5C, 0x00, 0x2B, 0xE6, 0xD0, 0x02, 0xB0, 0x1C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x80, 0x2A, 0x16, 0x00, + 0x0C, 0xE7, 0x10, 0x00, 0xF4, 0xE1, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, + 0x31, 0xC3, 0x0A, 0x00, 0xE1, 0xA1, 0x10, 0x00, 0xE9, 0x8F, 0x0C, 0x00, + 0xCD, 0x05, 0x0D, 0x00, 0xF0, 0x29, 0x16, 0x00, 0x5D, 0x74, 0x0B, 0x00, + 0x20, 0x27, 0x16, 0x00, 0xD9, 0xEA, 0x0A, 0x00, 0x00, 0x10, 0x06, 0x04, + 0x11, 0x6F, 0x0B, 0x00, 0x99, 0xCA, 0x0A, 0x00, 0x28, 0x27, 0x16, 0x00, + 0x01, 0x00, 0x10, 0x00, 0x84, 0x29, 0x16, 0x00, 0x38, 0x27, 0x16, 0x00, + 0xD8, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x04, 0x4B, + 0x1B, 0x7F, 0x01, 0x2B, 0x00, 0xD0, 0x10, 0xBD, 0x02, 0x4B, 0x98, 0x47, + 0xFB, 0xE7, 0xC0, 0x46, 0x24, 0x2A, 0x16, 0x00, 0x69, 0x44, 0x0D, 0x00, + 0x10, 0xB5, 0x05, 0x4B, 0x80, 0x22, 0xD2, 0x03, 0x1A, 0x60, 0x80, 0x20, + 0x40, 0x00, 0x7A, 0xF7, 0xAF, 0xF8, 0xFF, 0xF7, 0xE7, 0xFF, 0x10, 0xBD, + 0x08, 0x41, 0x04, 0x40, 0x70, 0xB5, 0x2D, 0x4B, 0x1B, 0x68, 0xC0, 0x22, + 0x92, 0x02, 0x13, 0x42, 0x16, 0xD1, 0x5A, 0x03, 0x1E, 0xD4, 0x1A, 0x03, + 0x2D, 0xD4, 0xDA, 0x02, 0x34, 0xD4, 0x9A, 0x02, 0x36, 0xD4, 0x5A, 0x02, + 0x38, 0xD4, 0xDA, 0x01, 0x39, 0xD4, 0x9A, 0x01, 0x3E, 0xD4, 0x5B, 0x01, + 0x0F, 0xD5, 0xFD, 0xF7, 0x1B, 0xFF, 0x22, 0x4B, 0x80, 0x22, 0xD2, 0x04, + 0x1A, 0x60, 0x08, 0xE0, 0x20, 0x4D, 0x91, 0x24, 0xE4, 0x00, 0x00, 0x23, + 0x2B, 0x51, 0x84, 0xF7, 0x7F, 0xFB, 0x1E, 0x4B, 0x2B, 0x51, 0x70, 0xBD, + 0x1D, 0x4B, 0x1C, 0x78, 0xFE, 0xF7, 0x84, 0xFE, 0x02, 0x2C, 0x04, 0xD0, + 0x17, 0x4B, 0x80, 0x22, 0xD2, 0x02, 0x1A, 0x60, 0xF3, 0xE7, 0x19, 0x4B, + 0x01, 0x22, 0x1A, 0x70, 0x84, 0xF7, 0x32, 0xFB, 0xED, 0xE7, 0x12, 0x4B, + 0x80, 0x22, 0x12, 0x03, 0x1A, 0x60, 0x80, 0x20, 0x40, 0x00, 0x7A, 0xF7, + 0x3F, 0xFD, 0xE4, 0xE7, 0x01, 0x20, 0x84, 0xF7, 0x3D, 0xFB, 0xE0, 0xE7, + 0x02, 0x20, 0x84, 0xF7, 0x39, 0xFB, 0xDC, 0xE7, 0xFF, 0xF7, 0xA6, 0xFF, + 0xD9, 0xE7, 0xFA, 0xF7, 0xF1, 0xFD, 0x07, 0x4B, 0x80, 0x22, 0x52, 0x04, + 0x1A, 0x60, 0xD2, 0xE7, 0xFA, 0xF7, 0x9A, 0xFF, 0x03, 0x4B, 0x80, 0x22, + 0x92, 0x04, 0x1A, 0x60, 0xCB, 0xE7, 0xC0, 0x46, 0x1C, 0x41, 0x04, 0x40, + 0x08, 0x41, 0x04, 0x40, 0x28, 0x19, 0x16, 0x00, 0x31, 0x6D, 0x10, 0x00, + 0xE0, 0x1D, 0x16, 0x00, 0xE1, 0x1D, 0x16, 0x00, 0x10, 0xB5, 0x04, 0x4B, + 0x80, 0x22, 0x12, 0x03, 0x1A, 0x60, 0x80, 0x20, 0x40, 0x00, 0x7A, 0xF7, + 0x0F, 0xFD, 0x10, 0xBD, 0x08, 0x41, 0x04, 0x40, 0x10, 0xB5, 0x09, 0x4B, + 0xDB, 0x7F, 0x00, 0x2B, 0x08, 0xD0, 0x00, 0x28, 0x01, 0xD1, 0x00, 0x29, + 0x04, 0xD0, 0x01, 0x20, 0x80, 0xF7, 0xD6, 0xFF, 0x84, 0xF7, 0x00, 0xFD, + 0x03, 0x49, 0x40, 0x22, 0x0B, 0x6B, 0x1A, 0x42, 0xFC, 0xD0, 0x10, 0xBD, + 0x3C, 0x95, 0x16, 0x00, 0x00, 0x60, 0x50, 0x40, 0x70, 0xB5, 0x82, 0xB0, + 0x27, 0x4A, 0xD3, 0x69, 0x0F, 0x24, 0xA3, 0x43, 0xD3, 0x61, 0x26, 0x4B, + 0x99, 0x68, 0x80, 0x20, 0x01, 0x43, 0x99, 0x60, 0x59, 0x68, 0x01, 0x43, + 0x59, 0x60, 0x19, 0x68, 0x01, 0x43, 0x19, 0x60, 0x13, 0x69, 0xA3, 0x43, + 0x13, 0x61, 0x69, 0x46, 0x01, 0xA8, 0xA4, 0xF7, 0xEF, 0xFC, 0x01, 0x9C, + 0x00, 0x9B, 0x1E, 0x00, 0x7A, 0x36, 0x9C, 0x22, 0x92, 0x00, 0x96, 0x42, + 0x19, 0xD9, 0xF8, 0x3B, 0xFF, 0x3B, 0x1E, 0x00, 0x01, 0x34, 0x24, 0x01, + 0x24, 0x09, 0x80, 0x25, 0x2D, 0x05, 0x69, 0x46, 0x01, 0xA8, 0xA4, 0xF7, + 0xDB, 0xFC, 0x01, 0x9A, 0xA3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0xAB, 0x42, + 0xF5, 0xD9, 0x12, 0x1B, 0x12, 0x01, 0xF2, 0xD0, 0x00, 0x9B, 0xB3, 0x42, + 0xEF, 0xD3, 0x02, 0xB0, 0x70, 0xBD, 0xB3, 0x42, 0xE9, 0xD2, 0x80, 0x25, + 0x2D, 0x05, 0x02, 0xE0, 0x00, 0x9B, 0xB3, 0x42, 0xF5, 0xD2, 0x69, 0x46, + 0x01, 0xA8, 0xA4, 0xF7, 0xC1, 0xFC, 0x01, 0x9A, 0xA3, 0x1A, 0x1B, 0x01, + 0x1B, 0x09, 0xAB, 0x42, 0xF2, 0xD9, 0x12, 0x1B, 0x12, 0x01, 0xEF, 0xD0, + 0xE7, 0xE7, 0xC0, 0x46, 0x00, 0x30, 0x50, 0x40, 0x00, 0x40, 0x50, 0x40, + 0x70, 0xB5, 0x10, 0x4B, 0x9A, 0x69, 0x10, 0x4B, 0x1A, 0x42, 0x0A, 0xD1, + 0x0F, 0x4D, 0x10, 0x4C, 0x29, 0x68, 0x00, 0x20, 0xFA, 0xF7, 0xD0, 0xFC, + 0x7B, 0xF7, 0x96, 0xFD, 0x23, 0x68, 0x01, 0x2B, 0xF6, 0xD0, 0x0C, 0x4A, + 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x0B, 0x4B, 0x1B, 0x68, 0x03, 0x3B, + 0x01, 0x2B, 0x00, 0xD9, 0x70, 0xBD, 0x03, 0x4A, 0x80, 0x23, 0x1B, 0x02, + 0x91, 0x69, 0x0B, 0x43, 0x93, 0x61, 0xF7, 0xE7, 0x3C, 0x95, 0x16, 0x00, + 0x01, 0x20, 0x00, 0x00, 0x58, 0xE6, 0x10, 0x00, 0x5C, 0xE6, 0x10, 0x00, + 0x20, 0xE6, 0x10, 0x00, 0x50, 0xE0, 0x10, 0x00, 0x02, 0x38, 0x01, 0x28, + 0x11, 0xD8, 0x09, 0x4A, 0x80, 0x23, 0x5B, 0x00, 0x08, 0x21, 0xD1, 0x50, + 0x07, 0x49, 0x8B, 0x68, 0x07, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x02, + 0x13, 0x43, 0x8B, 0x60, 0x22, 0x22, 0x0B, 0x6B, 0x13, 0x40, 0x02, 0x2B, + 0xFB, 0xD1, 0x70, 0x47, 0x00, 0x00, 0x50, 0x40, 0x00, 0x60, 0x50, 0x40, + 0xFF, 0xFF, 0xFB, 0xFF, 0x70, 0xB5, 0xA6, 0xF7, 0x3D, 0xFF, 0x04, 0x1E, + 0x0D, 0xD1, 0x1A, 0x4B, 0x18, 0x68, 0x00, 0x28, 0x09, 0xD0, 0xEF, 0xF3, + 0x10, 0x83, 0xDB, 0x07, 0x17, 0xD4, 0x72, 0xB6, 0x3E, 0x23, 0xC3, 0x5C, + 0x00, 0x2B, 0x02, 0xD0, 0x62, 0xB6, 0x20, 0x00, 0x70, 0xBD, 0x13, 0x4B, + 0x1D, 0x68, 0x00, 0x21, 0xCF, 0xF7, 0x7A, 0xFC, 0x2B, 0x6B, 0x5B, 0x00, + 0x6A, 0x68, 0x9B, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0x0E, 0x4A, 0x13, 0x60, + 0x0E, 0x4B, 0x98, 0x47, 0xEC, 0xE7, 0x3E, 0x23, 0xC3, 0x5C, 0x00, 0x2B, + 0xE9, 0xD1, 0x09, 0x4B, 0x1D, 0x68, 0x00, 0x21, 0xCF, 0xF7, 0x66, 0xFC, + 0x2B, 0x6B, 0x5B, 0x00, 0x6A, 0x68, 0x9B, 0x18, 0x1B, 0x01, 0x1B, 0x09, + 0x04, 0x4A, 0x13, 0x60, 0x04, 0x4B, 0x98, 0x47, 0xD9, 0xE7, 0xC0, 0x46, + 0x28, 0x27, 0x16, 0x00, 0x24, 0x27, 0x16, 0x00, 0x18, 0x2C, 0x16, 0x00, + 0x15, 0xE6, 0x0A, 0x00, 0x10, 0xB5, 0xA5, 0xF7, 0xC7, 0xFA, 0x00, 0x28, + 0x0F, 0xD1, 0x0B, 0x4B, 0x19, 0x68, 0x00, 0x29, 0x0B, 0xD0, 0x0A, 0x4B, + 0xCB, 0x61, 0x0A, 0x4B, 0x1C, 0x00, 0x41, 0x34, 0xFF, 0x34, 0x1A, 0x78, + 0x09, 0x2A, 0x03, 0xD0, 0x40, 0x33, 0xA3, 0x42, 0xF9, 0xD1, 0x10, 0xBD, + 0x0B, 0x69, 0x05, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x0B, 0x61, 0xF8, 0xE7, + 0x18, 0x27, 0x16, 0x00, 0x51, 0x04, 0x10, 0x00, 0x70, 0xA6, 0x16, 0x00, + 0x78, 0xEC, 0xFF, 0xFF, 0x10, 0xB5, 0x02, 0x00, 0x0C, 0x00, 0x01, 0x23, + 0x00, 0x21, 0x03, 0x48, 0x7A, 0xF7, 0xC2, 0xFF, 0x04, 0x70, 0xCC, 0xF7, + 0x1F, 0xFE, 0x10, 0xBD, 0x01, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x02, 0x00, + 0x0C, 0x00, 0x01, 0x23, 0x00, 0x21, 0x03, 0x48, 0x7A, 0xF7, 0xB4, 0xFF, + 0x04, 0x70, 0xCC, 0xF7, 0x11, 0xFE, 0x10, 0xBD, 0x02, 0x11, 0x00, 0x00, + 0x10, 0xB5, 0x06, 0x23, 0x13, 0x4A, 0x00, 0x21, 0x13, 0x48, 0x7A, 0xF7, + 0xA7, 0xFF, 0x13, 0x4A, 0x2D, 0x23, 0xD3, 0x5C, 0x1B, 0x09, 0x12, 0x4A, + 0x12, 0x78, 0x02, 0x2A, 0x0B, 0xD0, 0x01, 0x2A, 0x10, 0xD0, 0x0E, 0x4A, + 0x2D, 0x23, 0xD3, 0x5C, 0x03, 0x71, 0x00, 0x23, 0x03, 0x70, 0xCC, 0xF7, + 0xF5, 0xFD, 0x00, 0x20, 0x10, 0xBD, 0x0B, 0x4A, 0xD2, 0x5C, 0x80, 0x23, + 0x9B, 0x00, 0x13, 0x43, 0x43, 0x80, 0xEE, 0xE7, 0x08, 0x4A, 0xD2, 0x5C, + 0x80, 0x23, 0x5B, 0x00, 0x13, 0x43, 0x43, 0x80, 0xE7, 0xE7, 0xC0, 0x46, + 0x2D, 0x0C, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x60, 0x92, 0x16, 0x00, + 0xB4, 0xE5, 0x10, 0x00, 0x30, 0xE0, 0x10, 0x00, 0x28, 0xE0, 0x10, 0x00, + 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x19, 0x78, 0x03, 0x4A, 0x2D, 0x23, + 0xD1, 0x54, 0x00, 0x21, 0xFF, 0xF7, 0xB2, 0xFF, 0x00, 0x20, 0x10, 0xBD, + 0x60, 0x92, 0x16, 0x00, 0x70, 0xB5, 0x82, 0xB0, 0x04, 0x00, 0x0D, 0x00, + 0xD1, 0xF7, 0x96, 0xFF, 0x06, 0x00, 0x2C, 0x4B, 0x99, 0x6F, 0x00, 0x29, + 0x15, 0xD0, 0xF8, 0x22, 0x20, 0x00, 0xD1, 0xF7, 0xBB, 0xFF, 0x00, 0x21, + 0x00, 0x28, 0x0A, 0xD1, 0x26, 0x4A, 0x30, 0x23, 0xD3, 0x5C, 0x01, 0x2B, + 0x21, 0xD0, 0x28, 0x00, 0xFF, 0xF7, 0x86, 0xFF, 0x00, 0x20, 0x02, 0xB0, + 0x70, 0xBD, 0x21, 0x4B, 0x98, 0x6F, 0x7B, 0xF7, 0xBF, 0xF8, 0xFF, 0x20, + 0x06, 0x40, 0xF8, 0x2E, 0x00, 0xD9, 0xF8, 0x26, 0x70, 0x1C, 0x00, 0x21, + 0x7B, 0xF7, 0x12, 0xF8, 0x1A, 0x4B, 0x98, 0x67, 0x07, 0x21, 0x00, 0x28, + 0xE2, 0xD0, 0x32, 0x00, 0x21, 0x00, 0xD1, 0xF7, 0x2F, 0xFE, 0x16, 0x4B, + 0x9B, 0x6F, 0x00, 0x22, 0x9A, 0x55, 0x00, 0x21, 0xD8, 0xE7, 0x7F, 0x33, + 0x5B, 0x00, 0x2F, 0x22, 0x00, 0x21, 0x12, 0x48, 0x7A, 0xF7, 0x2A, 0xFF, + 0x06, 0x00, 0x01, 0xA9, 0x0D, 0x70, 0x2D, 0x0A, 0x4D, 0x70, 0xF8, 0x23, + 0x8B, 0x70, 0x03, 0x22, 0xD1, 0xF7, 0x18, 0xFE, 0xF0, 0x1C, 0xF8, 0x22, + 0x21, 0x00, 0xD1, 0xF7, 0x13, 0xFE, 0x0A, 0x4B, 0x01, 0x22, 0x1A, 0x70, + 0x30, 0x00, 0x0C, 0x38, 0x08, 0x4B, 0x98, 0x47, 0x08, 0x4B, 0x5B, 0x7F, + 0x5B, 0xB2, 0x04, 0x2B, 0xBE, 0xDC, 0x01, 0x33, 0x05, 0x4A, 0x53, 0x77, + 0xBA, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, + 0x68, 0xE6, 0x10, 0x00, 0xA5, 0x4B, 0x0D, 0x00, 0x24, 0x2A, 0x16, 0x00, + 0xF8, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x16, 0x00, 0x1F, 0x00, 0x02, 0x20, + 0x79, 0xF7, 0x46, 0xFE, 0x6B, 0x1E, 0x1C, 0x70, 0x63, 0x1E, 0x03, 0x2B, + 0x22, 0xD8, 0x04, 0x2C, 0x10, 0xD0, 0x68, 0x1E, 0x16, 0x4B, 0x18, 0x61, + 0x1E, 0x83, 0x5F, 0x61, 0x1B, 0x7F, 0xFF, 0x2B, 0x25, 0xD1, 0x13, 0x4B, + 0x00, 0x22, 0x1A, 0x77, 0x71, 0x1C, 0x1A, 0x68, 0x54, 0x68, 0x11, 0x4A, + 0xA0, 0x47, 0x1C, 0xE0, 0x2B, 0x78, 0x2F, 0x2B, 0xEB, 0xD1, 0x0F, 0x4B, + 0x1B, 0x78, 0x00, 0x2B, 0xE7, 0xD0, 0x19, 0x23, 0x2B, 0x70, 0xE2, 0x33, + 0x6B, 0x70, 0x0B, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0xFD, 0x26, 0xDE, 0xE7, + 0x09, 0x4D, 0x00, 0x23, 0x00, 0x22, 0x01, 0x21, 0x20, 0x00, 0xEE, 0x6E, + 0xB0, 0x47, 0xED, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x01, 0x21, 0x20, 0x00, + 0xA8, 0x47, 0xF8, 0xBD, 0x58, 0x1E, 0x16, 0x00, 0x19, 0x74, 0x08, 0x00, + 0x68, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0xC0, 0xB5, 0x86, 0xB0, 0x04, 0x00, 0x0E, 0x00, + 0x03, 0x92, 0xCE, 0xF7, 0x93, 0xFE, 0x07, 0x00, 0xB8, 0x4B, 0x1D, 0x25, + 0x5D, 0x57, 0x2B, 0x00, 0x80, 0x33, 0x00, 0xD1, 0x61, 0xE1, 0x01, 0x3D, + 0x6D, 0xB2, 0xB4, 0x4B, 0x5D, 0x77, 0x00, 0x28, 0x00, 0xD1, 0x18, 0xE1, + 0x00, 0x2D, 0x00, 0xDA, 0x59, 0xE1, 0x80, 0x78, 0x0F, 0x23, 0x18, 0x40, + 0x08, 0x28, 0x5F, 0xD8, 0x83, 0x00, 0xAE, 0x4A, 0xD3, 0x58, 0x9F, 0x46, + 0x05, 0x23, 0x99, 0x46, 0x67, 0xE0, 0x06, 0x28, 0x1E, 0xD0, 0x01, 0x2E, + 0x00, 0xD8, 0x3B, 0xE1, 0x03, 0x9A, 0x53, 0x78, 0x1B, 0x02, 0x12, 0x78, + 0x13, 0x43, 0x0B, 0x2B, 0x00, 0xD9, 0x22, 0xE1, 0xA5, 0x4A, 0xD2, 0x18, + 0x12, 0x7E, 0x00, 0x2A, 0x00, 0xD1, 0x2D, 0xE1, 0xA2, 0x04, 0x37, 0xD4, + 0xA2, 0x4A, 0x94, 0x42, 0x34, 0xD0, 0x27, 0xD8, 0xA1, 0x4A, 0x94, 0x42, + 0x30, 0xD0, 0xA1, 0x4A, 0x94, 0x42, 0x00, 0xD0, 0x20, 0xE1, 0x2B, 0xE0, + 0x05, 0x2E, 0x00, 0xD8, 0x1C, 0xE1, 0x9E, 0x4D, 0x00, 0x23, 0x99, 0x46, + 0x07, 0xE0, 0x01, 0x23, 0x9C, 0x46, 0xE1, 0x44, 0x07, 0x35, 0x4B, 0x46, + 0x07, 0x2B, 0x00, 0xD1, 0x10, 0xE1, 0x2B, 0x78, 0x00, 0x2B, 0xF4, 0xD0, + 0x69, 0x1C, 0x06, 0x22, 0x03, 0x98, 0xD1, 0xF7, 0x2D, 0xFD, 0x00, 0x28, + 0xED, 0xD1, 0x4B, 0x46, 0x1B, 0x02, 0x01, 0x22, 0x13, 0x43, 0x9B, 0xB2, + 0x99, 0x46, 0x26, 0xE0, 0x90, 0x4A, 0x94, 0x42, 0x04, 0xD8, 0x90, 0x4A, + 0x94, 0x42, 0x00, 0xD8, 0xF8, 0xE0, 0x03, 0xE0, 0x8E, 0x4A, 0x94, 0x42, + 0x00, 0xD0, 0xF3, 0xE0, 0x1B, 0x02, 0x04, 0x22, 0x13, 0x43, 0x9B, 0xB2, + 0x99, 0x46, 0x14, 0xE0, 0x1B, 0x02, 0x01, 0x22, 0x13, 0x43, 0x9B, 0xB2, + 0x99, 0x46, 0x0E, 0xE0, 0x87, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, + 0x21, 0x00, 0xA8, 0x47, 0xAF, 0xE0, 0x03, 0x23, 0x99, 0x46, 0x04, 0xE0, + 0x02, 0x23, 0x99, 0x46, 0x01, 0xE0, 0x00, 0x23, 0x99, 0x46, 0x0E, 0x23, + 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x00, 0x22, 0x1A, 0x80, 0x7E, 0x4B, + 0x92, 0x46, 0x9C, 0x42, 0x59, 0xD0, 0x00, 0x2E, 0x00, 0xD1, 0xAD, 0xE0, + 0x7D, 0x68, 0x00, 0x2D, 0x00, 0xD1, 0x9C, 0xE0, 0xBB, 0x78, 0x5B, 0x06, + 0x65, 0xD5, 0xB3, 0xB2, 0x0E, 0x22, 0x02, 0xA9, 0x8C, 0x46, 0x62, 0x44, + 0x03, 0x99, 0x00, 0x20, 0xA8, 0x47, 0xC5, 0xB2, 0x01, 0x2D, 0x66, 0xD0, + 0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x22, 0x00, + 0x49, 0x46, 0x6F, 0x48, 0x7A, 0xF7, 0x00, 0xFE, 0x81, 0x46, 0x00, 0x2D, + 0x07, 0xD0, 0x6A, 0x4B, 0xDB, 0x6E, 0x9B, 0x46, 0x00, 0x23, 0x00, 0x22, + 0x21, 0x00, 0x28, 0x00, 0xD8, 0x47, 0x4B, 0x46, 0x00, 0x2B, 0x59, 0xD0, + 0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x00, 0x2B, + 0x0F, 0xD0, 0x7B, 0x68, 0x9B, 0x46, 0x00, 0x2B, 0x0B, 0xD0, 0xBB, 0x78, + 0x5B, 0x06, 0x51, 0xD5, 0xB3, 0xB2, 0x0E, 0x22, 0x02, 0xA9, 0x8C, 0x46, + 0x62, 0x44, 0x03, 0x99, 0x48, 0x46, 0xD8, 0x47, 0xC5, 0xB2, 0x00, 0x2D, + 0x06, 0xD0, 0x58, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, + 0x28, 0x00, 0xB0, 0x47, 0x48, 0x46, 0x7A, 0xF7, 0xF9, 0xFD, 0x54, 0x4B, + 0x9C, 0x42, 0x4A, 0xD1, 0x53, 0x46, 0x00, 0x2B, 0x47, 0xD0, 0x50, 0x46, + 0x7A, 0xF7, 0x3C, 0xFF, 0x43, 0xE0, 0x75, 0x1C, 0x01, 0x21, 0x28, 0x00, + 0x7A, 0xF7, 0x92, 0xFE, 0x82, 0x46, 0x03, 0x99, 0x0B, 0x78, 0x03, 0x70, + 0x72, 0x1E, 0x42, 0x70, 0x01, 0x31, 0x02, 0x30, 0xD1, 0xF7, 0xAE, 0xFC, + 0xEE, 0xB2, 0x49, 0x48, 0x7C, 0xF7, 0xB6, 0xFE, 0x53, 0x46, 0x03, 0x93, + 0x8F, 0xE7, 0xB3, 0xB2, 0x00, 0x95, 0x0E, 0x22, 0x02, 0xA9, 0x8C, 0x46, + 0x62, 0x44, 0x03, 0x99, 0x00, 0x20, 0x7D, 0xF7, 0x57, 0xF8, 0x05, 0x00, + 0x96, 0xE7, 0x21, 0x00, 0x40, 0x48, 0x7C, 0xF7, 0xA3, 0xFE, 0x00, 0x23, + 0x12, 0x22, 0x21, 0x00, 0x38, 0x00, 0x3E, 0x4D, 0xA8, 0x47, 0xC8, 0xE7, + 0x07, 0x22, 0x21, 0x00, 0x38, 0x00, 0x3B, 0x4D, 0xA8, 0x47, 0xC2, 0xE7, + 0xB3, 0xB2, 0x5A, 0x46, 0x00, 0x92, 0x0E, 0x22, 0x62, 0x44, 0x03, 0x99, + 0x48, 0x46, 0x7D, 0xF7, 0x3B, 0xF8, 0x05, 0x00, 0xAB, 0xE7, 0x00, 0x23, + 0x01, 0x22, 0x21, 0x00, 0x00, 0x20, 0x32, 0x4C, 0xA0, 0x47, 0x06, 0xB0, + 0x1C, 0xBC, 0x91, 0x46, 0x9A, 0x46, 0xA3, 0x46, 0xF0, 0xBD, 0x0E, 0x23, + 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x22, 0x00, 0x49, 0x46, + 0x27, 0x48, 0x7A, 0xF7, 0x71, 0xFD, 0x81, 0x46, 0x04, 0x25, 0x70, 0xE7, + 0x0E, 0x23, 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x22, 0x00, + 0x49, 0x46, 0x21, 0x48, 0x7A, 0xF7, 0x64, 0xFD, 0x81, 0x46, 0x35, 0x00, + 0x6B, 0xE7, 0x22, 0x4A, 0x13, 0x40, 0x1A, 0x00, 0x80, 0x3A, 0x92, 0xB2, + 0x06, 0x2A, 0x09, 0xD8, 0x80, 0x3B, 0xD9, 0x00, 0xC9, 0x1A, 0x0F, 0x4A, + 0x52, 0x18, 0x24, 0x32, 0x12, 0x78, 0x02, 0x2A, 0x00, 0xD1, 0x11, 0xE7, + 0x21, 0x00, 0x1A, 0x48, 0x7C, 0xF7, 0x50, 0xFE, 0x03, 0x9B, 0x02, 0x22, + 0x21, 0x00, 0x38, 0x00, 0x14, 0x4C, 0xA0, 0x47, 0xC3, 0xE7, 0x00, 0x28, + 0xBB, 0xD0, 0x00, 0x23, 0x07, 0x22, 0x21, 0x00, 0x38, 0x00, 0x10, 0x4C, + 0xA0, 0x47, 0xBA, 0xE7, 0x24, 0x2A, 0x16, 0x00, 0x2C, 0xD2, 0x10, 0x00, + 0xCC, 0xAA, 0x16, 0x00, 0x2D, 0x0C, 0x00, 0x00, 0x06, 0x04, 0x00, 0x00, + 0x1D, 0x04, 0x00, 0x00, 0xF0, 0xAA, 0x16, 0x00, 0x7C, 0x0C, 0x00, 0x00, + 0x7A, 0x0C, 0x00, 0x00, 0x05, 0x14, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x57, 0xFD, 0x00, 0x00, 0x05, 0x11, 0x00, 0x00, 0x14, 0xD2, 0x10, 0x00, + 0x20, 0xD2, 0x10, 0x00, 0x7D, 0x4A, 0x0D, 0x00, 0xFF, 0xFC, 0xFF, 0xFF, + 0x08, 0xD2, 0x10, 0x00, 0x10, 0xB5, 0x07, 0x20, 0x7B, 0xF7, 0x10, 0xFA, + 0x08, 0x4C, 0xA1, 0x7A, 0x20, 0x89, 0x62, 0x68, 0xFF, 0xF7, 0x54, 0xFE, + 0x60, 0x68, 0x00, 0x28, 0x03, 0xD0, 0x7A, 0xF7, 0x7F, 0xFE, 0x00, 0x22, + 0x62, 0x60, 0x02, 0x48, 0x02, 0x4B, 0x98, 0x47, 0x10, 0xBD, 0xC0, 0x46, + 0x58, 0x1E, 0x16, 0x00, 0xA5, 0x73, 0x08, 0x00, 0x30, 0xB5, 0x0C, 0x4C, + 0x25, 0x68, 0x29, 0x60, 0x24, 0x68, 0x60, 0x60, 0xA2, 0x60, 0xE3, 0x60, + 0x09, 0x4B, 0x0A, 0x4A, 0x98, 0x50, 0x0A, 0x48, 0x1A, 0x58, 0x0A, 0x43, + 0x1A, 0x50, 0x04, 0x30, 0x1A, 0x58, 0x11, 0x43, 0x19, 0x50, 0x07, 0x49, + 0x5A, 0x58, 0x01, 0x20, 0x02, 0x43, 0x5A, 0x50, 0x30, 0xBD, 0xC0, 0x46, + 0xFC, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x07, 0x40, 0x10, 0x10, 0x00, 0x00, + 0x1C, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x70, 0xB5, 0x0D, 0x00, + 0x1A, 0x4C, 0x30, 0x21, 0x61, 0x5C, 0x01, 0x29, 0x04, 0xD0, 0x29, 0x00, + 0x18, 0x4C, 0xA0, 0x47, 0x00, 0x20, 0x70, 0xBD, 0x14, 0x0A, 0x84, 0xF7, + 0x99, 0xFD, 0x06, 0x1E, 0x1F, 0xD0, 0x6A, 0x88, 0xA9, 0x88, 0x14, 0x4B, + 0x9C, 0x46, 0x61, 0x44, 0x00, 0x89, 0x60, 0x44, 0xD1, 0xF7, 0xB8, 0xFB, + 0x08, 0x23, 0x00, 0x22, 0x21, 0x00, 0x10, 0x48, 0x7A, 0xF7, 0xBA, 0xFC, + 0x33, 0x89, 0x43, 0x60, 0x2B, 0x88, 0x03, 0x80, 0x6B, 0x88, 0x43, 0x80, + 0xCC, 0xF7, 0x12, 0xFB, 0x20, 0x00, 0x80, 0x30, 0x01, 0x21, 0x0A, 0x4B, + 0x98, 0x47, 0xA8, 0x88, 0x84, 0xF7, 0xCA, 0xFD, 0xD8, 0xE7, 0x08, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEF, 0xE7, + 0x68, 0x9E, 0x16, 0x00, 0x49, 0x86, 0x0A, 0x00, 0x00, 0x00, 0x61, 0x40, + 0x06, 0x11, 0x00, 0x00, 0xC1, 0xDC, 0x09, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x42, 0x7A, 0x12, 0x02, 0x03, 0x7A, 0x13, 0x43, 0x0B, 0x80, 0x83, 0x7A, + 0x8B, 0x70, 0x70, 0x47, 0xC2, 0x7A, 0x12, 0x02, 0x83, 0x7A, 0x13, 0x43, + 0x4B, 0x80, 0x42, 0x7A, 0x12, 0x02, 0x03, 0x7A, 0x13, 0x43, 0x0B, 0x80, + 0x70, 0x47, 0x83, 0x7A, 0x8B, 0x70, 0x42, 0x7A, 0x12, 0x02, 0x03, 0x7A, + 0x13, 0x43, 0x0B, 0x80, 0x70, 0x47, 0x00, 0x00, 0x10, 0xB5, 0x03, 0x00, + 0x00, 0x22, 0x02, 0x73, 0x0B, 0x30, 0x1A, 0x68, 0x14, 0x68, 0x03, 0x4A, + 0x01, 0x21, 0xA0, 0x47, 0x04, 0x20, 0x7A, 0xF7, 0x91, 0xF8, 0x10, 0xBD, + 0x59, 0x78, 0x10, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x01, 0x22, 0x02, 0x73, + 0x08, 0x30, 0x1A, 0x68, 0x14, 0x68, 0x03, 0x4A, 0xA0, 0x47, 0x04, 0x20, + 0x79, 0xF7, 0xAC, 0xFB, 0x10, 0xBD, 0xC0, 0x46, 0x59, 0x78, 0x10, 0x00, + 0x10, 0xB5, 0x03, 0x00, 0x02, 0x22, 0x02, 0x73, 0x40, 0x68, 0x1A, 0x68, + 0x14, 0x68, 0x01, 0x4A, 0xA0, 0x47, 0x10, 0xBD, 0x59, 0x78, 0x10, 0x00, + 0x10, 0xB5, 0x03, 0x00, 0x03, 0x22, 0x02, 0x73, 0x0B, 0x30, 0x1A, 0x68, + 0x14, 0x68, 0x02, 0x4A, 0x01, 0x21, 0xA0, 0x47, 0x10, 0xBD, 0xC0, 0x46, + 0x59, 0x78, 0x10, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x01, 0x23, 0x10, 0x22, + 0x00, 0x21, 0x0B, 0x48, 0x7A, 0xF7, 0x38, 0xFC, 0x00, 0x23, 0x03, 0x70, + 0xCC, 0xF7, 0x94, 0xFA, 0x20, 0x00, 0x08, 0x30, 0x02, 0x22, 0x00, 0x21, + 0x78, 0xF7, 0xB2, 0xFC, 0xE3, 0x7A, 0xA3, 0x72, 0x20, 0x00, 0xFF, 0xF7, + 0xDB, 0xFF, 0x04, 0x20, 0x7A, 0xF7, 0x4A, 0xF8, 0x10, 0xBD, 0xC0, 0x46, + 0x03, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x06, 0x20, 0x7B, 0xF7, 0x1A, 0xF9, + 0x16, 0x4C, 0x17, 0x49, 0x20, 0x00, 0xFF, 0xF7, 0x83, 0xFF, 0xA4, 0x7A, + 0x00, 0x2C, 0x09, 0xD1, 0x12, 0x4C, 0x20, 0x89, 0x00, 0x22, 0x00, 0x21, + 0xFF, 0xF7, 0x56, 0xFD, 0x20, 0x00, 0xFF, 0xF7, 0x93, 0xFF, 0x10, 0xBD, + 0x0D, 0x4B, 0x18, 0x89, 0xCD, 0xF7, 0x9C, 0xFA, 0x84, 0x42, 0x03, 0xD9, + 0x0A, 0x48, 0xFF, 0xF7, 0xC3, 0xFF, 0xF4, 0xE7, 0x08, 0x4C, 0xA0, 0x7A, + 0x01, 0x21, 0x7A, 0xF7, 0xCF, 0xFC, 0x60, 0x60, 0x00, 0x28, 0x04, 0xD0, + 0x20, 0x00, 0xA1, 0x7A, 0xFF, 0xF7, 0x9C, 0xFF, 0xE7, 0xE7, 0x02, 0x48, + 0xFF, 0xF7, 0xB2, 0xFF, 0xE3, 0xE7, 0xC0, 0x46, 0x58, 0x1E, 0x16, 0x00, + 0x60, 0x1E, 0x16, 0x00, 0x10, 0xB5, 0x82, 0xB0, 0x04, 0x00, 0x0E, 0x4B, + 0x01, 0x93, 0x01, 0x00, 0x08, 0x31, 0x04, 0x22, 0x01, 0xA8, 0xD1, 0xF7, + 0xB5, 0xFA, 0x00, 0x28, 0x0B, 0xD0, 0x04, 0x20, 0x79, 0xF7, 0x2A, 0xFB, + 0x63, 0x7A, 0x23, 0x72, 0xA3, 0x7A, 0x63, 0x72, 0xE3, 0x7A, 0xA3, 0x72, + 0x00, 0x20, 0x02, 0xB0, 0x10, 0xBD, 0x00, 0x22, 0x00, 0x21, 0x03, 0x48, + 0xCD, 0xF7, 0x6C, 0xFA, 0x01, 0x20, 0xF6, 0xE7, 0x01, 0x03, 0x0C, 0x00, + 0x03, 0x0C, 0x00, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x00, 0x29, 0x0B, 0xD0, + 0x01, 0x29, 0x02, 0xD0, 0x03, 0x7B, 0x00, 0x2B, 0x03, 0xD0, 0x20, 0x00, + 0xFF, 0xF7, 0x7C, 0xFF, 0x10, 0xBD, 0xFF, 0xF7, 0x3F, 0xFF, 0xFB, 0xE7, + 0x03, 0x7B, 0x02, 0x2B, 0x44, 0xD0, 0x0F, 0xD8, 0x00, 0x2B, 0x17, 0xD0, + 0x40, 0x7B, 0x02, 0x28, 0x25, 0xD0, 0x03, 0x28, 0x27, 0xD0, 0x01, 0x28, + 0x1D, 0xD0, 0xA1, 0x7B, 0x34, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, + 0xA0, 0x47, 0xE7, 0xE7, 0x03, 0x2B, 0x59, 0xD1, 0xFF, 0xF7, 0xB4, 0xFF, + 0x00, 0x28, 0x51, 0xD0, 0x20, 0x00, 0xFF, 0xF7, 0x21, 0xFF, 0xDD, 0xE7, + 0xC3, 0x7A, 0x43, 0x73, 0x5A, 0x1E, 0x02, 0x2A, 0x04, 0xD8, 0x2B, 0x4A, + 0xD1, 0x5C, 0xFF, 0xF7, 0x27, 0xFF, 0xD3, 0xE7, 0xFF, 0xF7, 0x4E, 0xFF, + 0xD0, 0xE7, 0x05, 0x30, 0x7B, 0xF7, 0x5E, 0xF8, 0xCC, 0xE7, 0x08, 0x20, + 0x7B, 0xF7, 0x5A, 0xF8, 0xC8, 0xE7, 0x21, 0x00, 0x08, 0x31, 0x20, 0x00, + 0xFF, 0xF7, 0xFD, 0xFE, 0xA1, 0x7A, 0x20, 0x89, 0xCD, 0xF7, 0x2E, 0xFC, + 0x60, 0x60, 0x00, 0x28, 0x04, 0xD0, 0xA1, 0x7A, 0x20, 0x00, 0xFF, 0xF7, + 0x1B, 0xFF, 0xB7, 0xE7, 0x20, 0x00, 0xFF, 0xF7, 0x31, 0xFF, 0xB3, 0xE7, + 0x40, 0x7B, 0x02, 0x28, 0x0E, 0xD0, 0x03, 0x28, 0x15, 0xD0, 0x01, 0x28, + 0x06, 0xD0, 0xA1, 0x7B, 0x13, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, + 0xA0, 0x47, 0xA5, 0xE7, 0x06, 0x30, 0x7B, 0xF7, 0x33, 0xF8, 0xA1, 0xE7, + 0x61, 0x89, 0x20, 0x89, 0x62, 0x68, 0xCD, 0xF7, 0xB9, 0xFB, 0x20, 0x00, + 0xFF, 0xF7, 0xDC, 0xFE, 0x98, 0xE7, 0xA1, 0x7A, 0x20, 0x89, 0x62, 0x68, + 0xCD, 0xF7, 0x2E, 0xFC, 0x20, 0x00, 0xFF, 0xF7, 0xD3, 0xFE, 0x8F, 0xE7, + 0x20, 0x00, 0xFF, 0xF7, 0xFB, 0xFE, 0x8B, 0xE7, 0x03, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x84, 0xE7, 0xC0, 0x46, + 0x28, 0x19, 0x16, 0x00, 0xC8, 0xDF, 0x10, 0x00, 0x70, 0xB5, 0x0C, 0x00, + 0x03, 0x05, 0x1B, 0x0D, 0x82, 0x0B, 0x0B, 0x2B, 0x1C, 0xD8, 0x00, 0x2A, + 0x4C, 0xD1, 0x19, 0x02, 0x04, 0x22, 0x0A, 0x43, 0x92, 0xB2, 0xF8, 0x21, + 0x09, 0x01, 0x08, 0x42, 0x1F, 0xD1, 0xFB, 0x21, 0xFF, 0x2A, 0x46, 0xD0, + 0x8C, 0x42, 0x44, 0xD8, 0xFF, 0x23, 0x13, 0x40, 0x02, 0x2B, 0x26, 0xD9, + 0x04, 0x2B, 0x26, 0xD1, 0xB3, 0xF7, 0x8A, 0xFC, 0x00, 0x28, 0x3A, 0xD0, + 0x25, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x46, 0xE0, 0x01, 0x2A, 0x31, 0xD0, + 0x00, 0x2A, 0x32, 0xD1, 0xF8, 0x22, 0x12, 0x01, 0x10, 0x42, 0x2E, 0xD0, + 0x00, 0x21, 0xFF, 0x22, 0x86, 0x2B, 0xE1, 0xD8, 0x00, 0xE0, 0xFB, 0x21, + 0x80, 0x3B, 0xDD, 0x00, 0xED, 0x1A, 0x1C, 0x48, 0x40, 0x19, 0x24, 0x30, + 0x00, 0x78, 0x02, 0x28, 0xD6, 0xD1, 0x1B, 0x02, 0x01, 0x22, 0x1A, 0x43, + 0x92, 0xB2, 0x18, 0x49, 0xD2, 0xE7, 0x00, 0x2B, 0x06, 0xD1, 0x17, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x10, 0xE0, + 0x84, 0xF7, 0xE0, 0xFB, 0x00, 0x28, 0x03, 0xD0, 0x0E, 0x4B, 0x9C, 0x46, + 0x60, 0x44, 0x18, 0xE0, 0x10, 0x48, 0x7C, 0xF7, 0xEB, 0xFB, 0x04, 0xE0, + 0x01, 0x2A, 0x02, 0xD1, 0x0B, 0x4B, 0x9C, 0x42, 0xEE, 0xD9, 0x01, 0x23, + 0x1A, 0x22, 0x00, 0x21, 0x0B, 0x48, 0x7A, 0xF7, 0xDB, 0xFA, 0x01, 0x25, + 0x05, 0x70, 0xCC, 0xF7, 0x37, 0xF9, 0x01, 0x21, 0x20, 0x00, 0x7A, 0xF7, + 0xA5, 0xFB, 0x07, 0x4B, 0x9D, 0x77, 0x70, 0xBD, 0x00, 0x00, 0x61, 0x40, + 0xCC, 0xAA, 0x16, 0x00, 0xFD, 0x03, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x50, 0xD2, 0x10, 0x00, 0x03, 0x11, 0x00, 0x00, 0x24, 0x2A, 0x16, 0x00, + 0x10, 0xB5, 0x08, 0x20, 0x7A, 0xF7, 0xBA, 0xFF, 0x10, 0x4C, 0x11, 0x49, + 0x20, 0x00, 0xFF, 0xF7, 0x2B, 0xFE, 0x61, 0x89, 0x00, 0x29, 0x0E, 0xD0, + 0x20, 0x89, 0xFF, 0xF7, 0x77, 0xFF, 0x60, 0x60, 0x00, 0x28, 0x04, 0xD0, + 0x09, 0x48, 0x41, 0x89, 0xFF, 0xF7, 0x52, 0xFE, 0x0C, 0xE0, 0x20, 0x00, + 0xFF, 0xF7, 0x68, 0xFE, 0x08, 0xE0, 0x05, 0x4C, 0x20, 0x89, 0x00, 0x22, + 0x00, 0x21, 0xCD, 0xF7, 0x01, 0xFB, 0x20, 0x00, 0xFF, 0xF7, 0x24, 0xFE, + 0x10, 0xBD, 0xC0, 0x46, 0x58, 0x1E, 0x16, 0x00, 0x60, 0x1E, 0x16, 0x00, + 0x10, 0xB5, 0x7F, 0xF7, 0xBD, 0xFD, 0x06, 0x49, 0x06, 0x20, 0x7A, 0xF7, + 0x47, 0xFF, 0x05, 0x49, 0x07, 0x20, 0x7A, 0xF7, 0x43, 0xFF, 0x04, 0x49, + 0x08, 0x20, 0x7A, 0xF7, 0x3F, 0xFF, 0x10, 0xBD, 0xA5, 0x77, 0x10, 0x00, + 0xB9, 0x75, 0x10, 0x00, 0x65, 0x7A, 0x10, 0x00, 0x10, 0xB5, 0x0A, 0x00, + 0x41, 0x23, 0x00, 0x21, 0x0C, 0x48, 0x7A, 0xF7, 0x7B, 0xFA, 0x04, 0x00, + 0x01, 0x30, 0x28, 0x22, 0x0A, 0x49, 0xD1, 0xF7, 0x6D, 0xF9, 0xE2, 0x79, + 0x2F, 0x23, 0x13, 0x40, 0xE3, 0x71, 0x20, 0x00, 0x29, 0x30, 0x18, 0x22, + 0x00, 0x21, 0x78, 0xF7, 0xEF, 0xFA, 0x00, 0x23, 0x23, 0x70, 0x20, 0x00, + 0xCC, 0xF7, 0xC6, 0xF8, 0x00, 0x20, 0x10, 0xBD, 0x01, 0x11, 0x00, 0x00, + 0xA4, 0xB5, 0x0D, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x0D, 0x00, + 0x90, 0x46, 0x06, 0x0A, 0xB2, 0x00, 0x11, 0x4B, 0xD7, 0x58, 0x0C, 0x23, + 0x03, 0x22, 0x00, 0x21, 0x0F, 0x48, 0x7A, 0xF7, 0x51, 0xFA, 0x04, 0x00, + 0x43, 0x46, 0x03, 0x70, 0x2D, 0x02, 0x81, 0x35, 0xFF, 0x35, 0x75, 0x19, + 0x45, 0x80, 0x00, 0x23, 0x83, 0x72, 0x88, 0x23, 0xFF, 0x33, 0xFB, 0x5C, + 0xC3, 0x72, 0x39, 0x00, 0x72, 0x31, 0x04, 0x30, 0x06, 0x22, 0xD1, 0xF7, + 0x35, 0xF9, 0x20, 0x00, 0xCC, 0xF7, 0x9A, 0xF8, 0x04, 0xBC, 0x90, 0x46, + 0xF0, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, + 0x70, 0xB5, 0x05, 0x00, 0x0E, 0x00, 0x04, 0x78, 0x02, 0x2C, 0x21, 0xD8, + 0x00, 0x2C, 0x04, 0xD1, 0x14, 0x4A, 0x30, 0x23, 0x00, 0x21, 0xD1, 0x54, + 0x1B, 0xE0, 0x03, 0x20, 0x88, 0xF7, 0x2E, 0xFC, 0x04, 0x1E, 0x1C, 0xD1, + 0x2B, 0x78, 0x0F, 0x49, 0x30, 0x22, 0x8B, 0x54, 0x01, 0x2B, 0x10, 0xD1, + 0xDF, 0x20, 0x00, 0x21, 0x80, 0x00, 0x7A, 0xF7, 0xE7, 0xFA, 0x0B, 0x4B, + 0x18, 0x60, 0x0B, 0x4A, 0x24, 0x23, 0x01, 0x21, 0xD1, 0x54, 0x00, 0x21, + 0x00, 0x20, 0x92, 0xF7, 0xA1, 0xF8, 0x00, 0xE0, 0x12, 0x24, 0x21, 0x00, + 0x30, 0x00, 0xFF, 0xF7, 0x3B, 0xFA, 0x00, 0x20, 0x70, 0xBD, 0x0C, 0x24, + 0xF7, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, 0x64, 0xA2, 0x16, 0x00, + 0xCC, 0xAA, 0x16, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x0F, 0x4B, + 0x5B, 0x68, 0x02, 0x00, 0x06, 0x21, 0x01, 0x20, 0x98, 0x47, 0x20, 0x78, + 0x63, 0x78, 0x1B, 0x02, 0x03, 0x43, 0xA0, 0x78, 0x00, 0x04, 0x03, 0x43, + 0xE0, 0x78, 0x00, 0x06, 0x18, 0x43, 0x23, 0x79, 0x61, 0x79, 0x09, 0x02, + 0x19, 0x43, 0xA4, 0xF7, 0xFF, 0xF8, 0x20, 0x00, 0xB3, 0xF7, 0x3C, 0xFF, + 0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0x10, 0xFA, 0x00, 0x20, 0x70, 0xBD, + 0x94, 0x92, 0x16, 0x00, 0x10, 0x4A, 0xFF, 0x21, 0x13, 0x68, 0x8B, 0x43, + 0x0F, 0x48, 0x00, 0x78, 0x03, 0x43, 0x80, 0x20, 0x03, 0x43, 0x0E, 0x48, + 0x03, 0x60, 0x0E, 0x4B, 0x1B, 0x78, 0x1B, 0x01, 0x0B, 0x40, 0xD0, 0x68, + 0x88, 0x43, 0x03, 0x43, 0x0B, 0x49, 0x0B, 0x60, 0x0B, 0x4B, 0x00, 0x21, + 0x19, 0x60, 0x13, 0x69, 0x0A, 0x4A, 0x13, 0x40, 0x0A, 0x4A, 0x13, 0x60, + 0x0A, 0x4B, 0x0B, 0x4A, 0x1A, 0x60, 0x0B, 0x4A, 0x1A, 0x60, 0x70, 0x47, + 0xE4, 0xE6, 0x10, 0x00, 0x14, 0xE7, 0x10, 0x00, 0x08, 0x01, 0x60, 0x40, + 0xF7, 0xE8, 0x10, 0x00, 0x28, 0x10, 0x62, 0x40, 0x1C, 0x10, 0x62, 0x40, + 0xFF, 0x0F, 0xF0, 0xFF, 0x34, 0x08, 0x62, 0x40, 0x00, 0x00, 0x62, 0x40, + 0x00, 0x01, 0x0A, 0x01, 0x00, 0x01, 0x0F, 0x01, 0x0B, 0x4B, 0x1B, 0x78, + 0x00, 0x2B, 0x11, 0xD1, 0x0A, 0x4B, 0x1B, 0x68, 0x03, 0x60, 0x0A, 0x4B, + 0x1B, 0x68, 0x43, 0x60, 0x09, 0x4B, 0x1B, 0x68, 0x83, 0x60, 0x09, 0x4B, + 0x1B, 0x68, 0xC3, 0x60, 0x08, 0x4B, 0x1B, 0x68, 0x03, 0x61, 0x02, 0x4B, + 0x01, 0x22, 0x1A, 0x70, 0x70, 0x47, 0xC0, 0x46, 0xD3, 0xE6, 0x10, 0x00, + 0x08, 0x01, 0x60, 0x40, 0x00, 0x00, 0x62, 0x40, 0x1C, 0x10, 0x62, 0x40, + 0x28, 0x10, 0x62, 0x40, 0x34, 0x08, 0x62, 0x40, 0x09, 0x4B, 0x02, 0x68, + 0x1A, 0x60, 0x09, 0x4B, 0x42, 0x68, 0x1A, 0x60, 0x08, 0x4B, 0x82, 0x68, + 0x1A, 0x60, 0x08, 0x4B, 0xC2, 0x68, 0x1A, 0x60, 0x02, 0x69, 0x07, 0x4B, + 0x1A, 0x60, 0x07, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x70, 0x47, 0xC0, 0x46, + 0x08, 0x01, 0x60, 0x40, 0x00, 0x00, 0x62, 0x40, 0x1C, 0x10, 0x62, 0x40, + 0x28, 0x10, 0x62, 0x40, 0x34, 0x08, 0x62, 0x40, 0xD3, 0xE6, 0x10, 0x00, + 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x03, 0x78, 0x00, 0x2B, 0x17, 0xD0, + 0x02, 0x20, 0xF9, 0xF7, 0x8D, 0xFD, 0x0E, 0x48, 0xFF, 0xF7, 0xB0, 0xFF, + 0x62, 0x78, 0x0D, 0x4B, 0x1A, 0x70, 0xA2, 0x78, 0x0C, 0x4B, 0x1A, 0x70, + 0xFF, 0xF7, 0x70, 0xFF, 0x21, 0x78, 0x0B, 0x48, 0x7C, 0xF7, 0x46, 0xFA, + 0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0x82, 0xF9, 0x00, 0x20, 0x70, 0xBD, + 0x03, 0x48, 0xFF, 0xF7, 0xBF, 0xFF, 0x01, 0x20, 0xF9, 0xF7, 0x72, 0xFD, + 0xEE, 0xE7, 0xC0, 0x46, 0xE4, 0xE6, 0x10, 0x00, 0x14, 0xE7, 0x10, 0x00, + 0xF7, 0xE8, 0x10, 0x00, 0x5C, 0xD2, 0x10, 0x00, 0x00, 0x23, 0x03, 0x73, + 0x00, 0x20, 0x70, 0x47, 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x1B, 0x88, + 0x12, 0x21, 0x15, 0x2B, 0x04, 0xD9, 0x04, 0x4B, 0x80, 0x22, 0xD2, 0x01, + 0x9A, 0x82, 0x00, 0x21, 0xFF, 0xF7, 0x50, 0xF9, 0x00, 0x20, 0x10, 0xBD, + 0x68, 0x9E, 0x16, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x0F, 0x4B, + 0x1B, 0x68, 0x02, 0x2B, 0x0B, 0xD0, 0x29, 0x00, 0x20, 0x00, 0x0D, 0x4B, + 0x98, 0x47, 0x0D, 0x4B, 0x80, 0x22, 0x12, 0x01, 0x1A, 0x83, 0x12, 0x22, + 0x5A, 0x83, 0x00, 0x20, 0x70, 0xBD, 0xFA, 0xF7, 0x09, 0xFC, 0x00, 0x28, + 0xEF, 0xD1, 0x23, 0x78, 0x9B, 0x07, 0xEC, 0xD5, 0x05, 0x4B, 0x80, 0x22, + 0x92, 0x00, 0x1A, 0x83, 0xEF, 0x3A, 0xFF, 0x3A, 0x5A, 0x83, 0xE4, 0xE7, + 0x50, 0xE0, 0x10, 0x00, 0x15, 0x28, 0x09, 0x00, 0x68, 0x9E, 0x16, 0x00, + 0x70, 0xB5, 0x0C, 0x00, 0x0B, 0x4A, 0x8C, 0x23, 0xD3, 0x5C, 0x0C, 0x25, + 0x01, 0x2B, 0x05, 0xD0, 0x29, 0x00, 0x20, 0x00, 0xFF, 0xF7, 0x18, 0xF9, + 0x00, 0x20, 0x70, 0xBD, 0xA4, 0xF7, 0xB8, 0xFC, 0x05, 0x1E, 0xF5, 0xD0, + 0x04, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0xEE, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x1B, 0x78, 0x01, 0x21, 0x99, 0x42, + 0x9B, 0x41, 0x11, 0x31, 0x19, 0x40, 0xFF, 0xF7, 0xFB, 0xF8, 0x00, 0x20, + 0x10, 0xBD, 0x00, 0x00, 0x70, 0xB5, 0x05, 0x00, 0x08, 0x00, 0x1C, 0x00, + 0x47, 0x4B, 0x9C, 0x42, 0x43, 0xD0, 0x23, 0xD8, 0x46, 0x4B, 0x9C, 0x42, + 0x51, 0xD0, 0x13, 0xD8, 0x45, 0x4B, 0x9C, 0x42, 0x45, 0xD0, 0x45, 0x4B, + 0x9C, 0x42, 0x04, 0xD1, 0x43, 0x49, 0xFF, 0xF7, 0x43, 0xF9, 0x00, 0x25, + 0x6A, 0xE0, 0x42, 0x4B, 0x9C, 0x42, 0x00, 0xD0, 0x70, 0xE0, 0x40, 0x49, + 0xFF, 0xF7, 0xB6, 0xFF, 0x00, 0x25, 0x61, 0xE0, 0x3E, 0x4B, 0x9C, 0x42, + 0x3E, 0xD0, 0x3E, 0x4B, 0x9C, 0x42, 0x65, 0xD1, 0x3C, 0x49, 0x00, 0x20, + 0xFF, 0xF7, 0x16, 0xFE, 0x00, 0x25, 0x55, 0xE0, 0x3A, 0x4B, 0x9C, 0x42, + 0x20, 0xD0, 0x0A, 0xD9, 0x39, 0x4B, 0x9C, 0x42, 0x12, 0xD0, 0x39, 0x4B, + 0x9C, 0x42, 0x55, 0xD1, 0x19, 0x00, 0xFF, 0xF7, 0xDB, 0xF8, 0x00, 0x25, + 0x46, 0xE0, 0x36, 0x4B, 0x9C, 0x42, 0x28, 0xD0, 0x35, 0x4B, 0x9C, 0x42, + 0x2A, 0xD1, 0x34, 0x49, 0xFF, 0xF7, 0x84, 0xFE, 0x00, 0x25, 0x3B, 0xE0, + 0x2E, 0x49, 0xFF, 0xF7, 0x01, 0xF9, 0x00, 0x25, 0x36, 0xE0, 0x24, 0x49, + 0xFF, 0xF7, 0x42, 0xFE, 0x00, 0x25, 0x31, 0xE0, 0x28, 0x49, 0xFF, 0xF7, + 0x15, 0xFF, 0x00, 0x25, 0x2C, 0xE0, 0x00, 0x23, 0x0B, 0x73, 0x20, 0x4B, + 0x28, 0x00, 0x29, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0x24, 0xE0, 0x1C, 0x49, + 0xFF, 0xF7, 0x3A, 0xFF, 0x00, 0x25, 0x1F, 0xE0, 0x1D, 0x49, 0xFF, 0xF7, + 0x47, 0xFF, 0x00, 0x25, 0x1A, 0xE0, 0x20, 0x49, 0xFF, 0xF7, 0x88, 0xFF, + 0x00, 0x25, 0x15, 0xE0, 0x23, 0x00, 0x28, 0x00, 0x1E, 0x4D, 0xA8, 0x47, + 0x05, 0x00, 0x1E, 0x4B, 0x9C, 0x42, 0x05, 0xD0, 0x1D, 0x4B, 0x08, 0x22, + 0x21, 0x00, 0x91, 0x43, 0x99, 0x42, 0x04, 0xD1, 0x02, 0x20, 0xF9, 0xF7, + 0x81, 0xFC, 0xFA, 0xF7, 0x63, 0xF9, 0x19, 0x4B, 0x9C, 0x42, 0x05, 0xD0, + 0x21, 0x00, 0x18, 0x48, 0x7C, 0xF7, 0x40, 0xF9, 0x28, 0x00, 0x70, 0xBD, + 0x01, 0x20, 0xF9, 0xF7, 0x73, 0xFC, 0xF5, 0xE7, 0x23, 0x00, 0x01, 0x00, + 0x28, 0x00, 0x0E, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0xE0, 0xE7, 0xC0, 0x46, + 0x02, 0x18, 0x00, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, + 0x13, 0x0C, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x1A, 0x0C, 0x00, 0x00, + 0x02, 0x10, 0x00, 0x00, 0xC6, 0xFC, 0x00, 0x00, 0xC7, 0xFC, 0x00, 0x00, + 0xC9, 0xFC, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x70, 0xFC, 0x00, 0x00, + 0x1D, 0x0C, 0x09, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, 0x18, 0x00, 0x00, + 0x0C, 0x18, 0x00, 0x00, 0x6C, 0xD2, 0x10, 0x00, 0x70, 0xB5, 0x0D, 0x00, + 0x14, 0x00, 0x04, 0x23, 0x02, 0x00, 0x00, 0x21, 0x03, 0x48, 0x7A, 0xF7, + 0x03, 0xF8, 0x05, 0x70, 0x44, 0x80, 0xCB, 0xF7, 0x5F, 0xFE, 0x70, 0xBD, + 0x01, 0x11, 0x00, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x10, 0x00, 0x1A, 0x88, + 0x0C, 0x21, 0xFF, 0xF7, 0xE9, 0xFF, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x00, + 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, + 0x83, 0xB0, 0x80, 0x46, 0x0C, 0x00, 0x91, 0x46, 0x0F, 0x0A, 0xBA, 0x00, + 0x2E, 0x4B, 0xD5, 0x58, 0x08, 0x00, 0x7A, 0xF7, 0xB7, 0xFB, 0x02, 0x26, + 0x00, 0x28, 0x19, 0xD0, 0x36, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x4F, 0xD0, + 0x3C, 0x23, 0xEE, 0x5C, 0x02, 0x2E, 0x03, 0xD1, 0x43, 0x46, 0x5B, 0x88, + 0x00, 0x2B, 0x1B, 0xD1, 0xFA, 0x21, 0x49, 0x01, 0xA9, 0x83, 0xFF, 0xB2, + 0x36, 0x23, 0xEA, 0x5C, 0x38, 0x00, 0xA1, 0xF7, 0x6D, 0xFE, 0xA9, 0x8B, + 0x38, 0x00, 0xAB, 0xF7, 0x31, 0xFC, 0x00, 0x26, 0x43, 0x46, 0x1A, 0x88, + 0x31, 0x00, 0x48, 0x46, 0xFF, 0xF7, 0xB2, 0xFF, 0x00, 0x20, 0x03, 0xB0, + 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, + 0xFB, 0xB2, 0x9B, 0x46, 0x06, 0x23, 0x6B, 0x44, 0x9A, 0x46, 0x6B, 0x46, + 0x5A, 0x1D, 0x51, 0x46, 0x58, 0x46, 0x8B, 0xF7, 0x65, 0xFE, 0x43, 0x46, + 0x5A, 0x88, 0x53, 0x46, 0x19, 0x88, 0x8A, 0x42, 0x13, 0xD9, 0x6B, 0x46, + 0x05, 0x33, 0x1B, 0x78, 0x00, 0x2B, 0xCD, 0xD0, 0x4B, 0x43, 0x9A, 0x42, + 0xCA, 0xD8, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x58, 0x46, 0xAB, 0xF7, + 0x73, 0xFA, 0x22, 0x00, 0x21, 0x00, 0x07, 0x48, 0x79, 0xF7, 0xD2, 0xFF, + 0xBE, 0xE7, 0x43, 0x46, 0x1A, 0x88, 0x12, 0x21, 0x48, 0x46, 0xFF, 0xF7, + 0x7F, 0xFF, 0xC5, 0xE7, 0x0C, 0x26, 0xC3, 0xE7, 0x64, 0xA2, 0x16, 0x00, + 0x22, 0x06, 0x00, 0x00, 0xF0, 0xB5, 0x93, 0xB0, 0x01, 0x90, 0x0C, 0x00, + 0x16, 0x00, 0x0F, 0x0A, 0xBA, 0x00, 0x37, 0x4B, 0xD5, 0x58, 0x08, 0x00, + 0x7A, 0xF7, 0x4E, 0xFB, 0x04, 0x28, 0x06, 0xD0, 0x09, 0x28, 0x18, 0xD0, + 0x0C, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x42, 0xFB, 0x10, 0xE0, 0x3C, 0x22, + 0x30, 0x49, 0x03, 0xA8, 0xD0, 0xF7, 0x62, 0xFE, 0x00, 0x21, 0x30, 0x00, + 0x91, 0xF7, 0x38, 0xFB, 0x2D, 0x4A, 0xE8, 0x23, 0xD5, 0x58, 0x03, 0xAB, + 0x01, 0x22, 0x01, 0x21, 0x20, 0x00, 0xA8, 0x47, 0x00, 0x20, 0x13, 0xB0, + 0xF0, 0xBD, 0x21, 0x00, 0x28, 0x48, 0x79, 0xF7, 0x0F, 0xFF, 0x01, 0x21, + 0x20, 0x00, 0x7A, 0xF7, 0xC9, 0xFA, 0x00, 0x21, 0x30, 0x00, 0x91, 0xF7, + 0x21, 0xFB, 0xBC, 0x23, 0x5B, 0x00, 0xEB, 0x5C, 0xDB, 0x43, 0x9B, 0x07, + 0x21, 0xD1, 0x00, 0x23, 0x01, 0x9A, 0x93, 0x71, 0xFF, 0xB2, 0x29, 0x00, + 0x38, 0x31, 0x38, 0x00, 0x88, 0xF7, 0x70, 0xF9, 0x00, 0x28, 0x1C, 0xD0, + 0x1B, 0x48, 0x7C, 0xF7, 0x3F, 0xF8, 0x01, 0x23, 0xAF, 0x22, 0x92, 0x00, + 0xAB, 0x54, 0x43, 0x22, 0xAB, 0x54, 0x20, 0x00, 0x93, 0xF7, 0xA0, 0xF9, + 0x88, 0xF7, 0x64, 0xFA, 0x00, 0x28, 0x19, 0xD1, 0xC4, 0x20, 0x22, 0x00, + 0x21, 0x00, 0xC0, 0x00, 0x79, 0xF7, 0x68, 0xFF, 0xC8, 0xE7, 0x22, 0x00, + 0x21, 0x00, 0x10, 0x48, 0x79, 0xF7, 0x62, 0xFF, 0xD7, 0xE7, 0x0F, 0x48, + 0x7C, 0xF7, 0x22, 0xF8, 0x44, 0x23, 0x01, 0x22, 0xEA, 0x54, 0x0B, 0x3B, + 0xEA, 0x5C, 0x33, 0x21, 0x38, 0x00, 0xA1, 0xF7, 0x39, 0xFC, 0xE1, 0xE7, + 0x22, 0x00, 0x21, 0x00, 0x08, 0x48, 0x79, 0xF7, 0x4F, 0xFF, 0xDF, 0xE7, + 0x64, 0xA2, 0x16, 0x00, 0x80, 0xD6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, + 0x06, 0x06, 0x00, 0x00, 0x74, 0xD2, 0x10, 0x00, 0x14, 0x06, 0x00, 0x00, + 0x7C, 0xD2, 0x10, 0x00, 0x1D, 0x06, 0x00, 0x00, 0x70, 0xB5, 0x04, 0x00, + 0x0E, 0x00, 0x15, 0x00, 0x41, 0x88, 0x80, 0x23, 0x1B, 0x01, 0x99, 0x42, + 0x06, 0xD3, 0x22, 0x88, 0x0C, 0x21, 0x28, 0x00, 0xFF, 0xF7, 0xE4, 0xFE, + 0x00, 0x20, 0x70, 0xBD, 0x03, 0x48, 0x7B, 0xF7, 0xEF, 0xFF, 0x30, 0x0A, + 0x00, 0x21, 0xAB, 0xF7, 0xA7, 0xF8, 0xF0, 0xE7, 0x84, 0xD2, 0x10, 0x00, + 0x70, 0xB5, 0x0E, 0x00, 0x15, 0x00, 0x07, 0x23, 0x02, 0x00, 0x00, 0x21, + 0x06, 0x48, 0x79, 0xF7, 0xDB, 0xFE, 0x04, 0x00, 0x06, 0x70, 0x01, 0x30, + 0x06, 0x22, 0x29, 0x00, 0xD0, 0xF7, 0xCC, 0xFD, 0x20, 0x00, 0xCB, 0xF7, + 0x31, 0xFD, 0x70, 0xBD, 0x01, 0x11, 0x00, 0x00, 0xF0, 0xB5, 0x83, 0xB0, + 0x01, 0x90, 0x0D, 0x00, 0x16, 0x00, 0x0F, 0x0A, 0xBA, 0x00, 0x22, 0x4B, + 0xD4, 0x58, 0x08, 0x00, 0x7A, 0xF7, 0x98, 0xFA, 0x00, 0x28, 0x1A, 0xD0, + 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x16, 0xD9, 0x88, 0x23, 0xFF, 0x33, + 0xE3, 0x5C, 0x00, 0x2B, 0x03, 0xD1, 0x36, 0x33, 0xE3, 0x5C, 0x00, 0x2B, + 0x14, 0xD0, 0x00, 0x21, 0x30, 0x00, 0x91, 0xF7, 0x81, 0xFA, 0x36, 0x23, + 0xE3, 0x5C, 0x00, 0x2B, 0x11, 0xD1, 0x2A, 0x00, 0x29, 0x00, 0x14, 0x48, + 0x79, 0xF7, 0xE6, 0xFE, 0x03, 0xE0, 0x02, 0x21, 0x30, 0x00, 0x91, 0xF7, + 0x73, 0xFA, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0x0C, 0x21, 0x30, 0x00, + 0x91, 0xF7, 0x6C, 0xFA, 0xF7, 0xE7, 0x06, 0x23, 0x1C, 0x22, 0x00, 0x21, + 0x0B, 0x48, 0x79, 0xF7, 0x93, 0xFE, 0x05, 0x00, 0x00, 0x23, 0x03, 0x70, + 0x01, 0x9B, 0x1B, 0x88, 0x43, 0x80, 0xF8, 0xB2, 0xAB, 0xF7, 0x32, 0xFA, + 0xC0, 0x03, 0x40, 0x0C, 0xA8, 0x80, 0x28, 0x00, 0xCB, 0xF7, 0xE4, 0xFC, + 0xE1, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x16, 0x06, 0x00, 0x00, + 0x03, 0x11, 0x00, 0x00, 0xF0, 0xB5, 0x83, 0xB0, 0x01, 0x90, 0x0D, 0x00, + 0x16, 0x00, 0x0B, 0x0A, 0x9B, 0x00, 0x31, 0x4A, 0x9F, 0x58, 0x08, 0x00, + 0x7A, 0xF7, 0x46, 0xFA, 0x00, 0x28, 0x53, 0xD0, 0x16, 0x38, 0xC0, 0xB2, + 0x02, 0x24, 0x03, 0x28, 0x4F, 0xD9, 0x01, 0x99, 0x4B, 0x88, 0xA8, 0x22, + 0xD2, 0x00, 0x10, 0x34, 0x93, 0x42, 0x48, 0xD8, 0xDA, 0x07, 0x46, 0xD4, + 0x8A, 0x88, 0x05, 0x2A, 0x43, 0xD9, 0xD0, 0x07, 0x41, 0xD4, 0x08, 0x00, + 0xC9, 0x88, 0x00, 0x29, 0x3D, 0xD0, 0x00, 0x89, 0x84, 0x46, 0x28, 0x28, + 0x39, 0xD8, 0x58, 0x08, 0x81, 0x42, 0x36, 0xD8, 0x93, 0x42, 0x34, 0xD3, + 0x61, 0x44, 0x49, 0x00, 0x99, 0x42, 0x30, 0xD2, 0x7B, 0x8C, 0x06, 0x3C, + 0x5B, 0x07, 0x2C, 0xD5, 0x3C, 0x23, 0xFC, 0x5C, 0x00, 0x2C, 0x01, 0xD0, + 0x0C, 0x24, 0x26, 0xE0, 0x38, 0x00, 0x54, 0x30, 0x07, 0x21, 0xA1, 0xF7, + 0x47, 0xFA, 0x00, 0x28, 0x01, 0xD1, 0x1A, 0x24, 0x1D, 0xE0, 0x08, 0x23, + 0x2A, 0x00, 0x29, 0x00, 0x11, 0x48, 0x79, 0xF7, 0x31, 0xFE, 0x01, 0x9B, + 0x5A, 0x88, 0x02, 0x80, 0x9B, 0x88, 0x43, 0x80, 0xC0, 0x21, 0x49, 0x00, + 0x8A, 0x42, 0x00, 0xD9, 0x01, 0x80, 0xC0, 0x22, 0x52, 0x00, 0x93, 0x42, + 0x00, 0xD9, 0x42, 0x80, 0x01, 0x9A, 0xD3, 0x88, 0x83, 0x80, 0x13, 0x89, + 0xC3, 0x80, 0x79, 0xF7, 0x45, 0xFE, 0x00, 0xE0, 0x02, 0x24, 0x21, 0x00, + 0x30, 0x00, 0x91, 0xF7, 0xE7, 0xF9, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, + 0x64, 0xA2, 0x16, 0x00, 0x0D, 0x06, 0x00, 0x00, 0x70, 0xB5, 0x04, 0x00, + 0x08, 0x00, 0x15, 0x00, 0x0B, 0x0A, 0x9B, 0x00, 0x0F, 0x4A, 0x9E, 0x58, + 0x7A, 0xF7, 0xDA, 0xF9, 0x02, 0x21, 0x00, 0x28, 0x10, 0xD0, 0x63, 0x88, + 0xF0, 0x22, 0x10, 0x31, 0x1A, 0x42, 0x0B, 0xD1, 0xE6, 0x3A, 0x01, 0x39, + 0x1A, 0x42, 0x07, 0xD1, 0x73, 0x84, 0x2C, 0x32, 0xB1, 0x5C, 0x00, 0x29, + 0x08, 0xD1, 0x35, 0x3A, 0x93, 0x43, 0x73, 0x84, 0x22, 0x88, 0x28, 0x00, + 0xFF, 0xF7, 0xE0, 0xFD, 0x00, 0x20, 0x70, 0xBD, 0x00, 0x21, 0xF7, 0xE7, + 0x64, 0xA2, 0x16, 0x00, 0xF0, 0xB5, 0xD6, 0x46, 0x4F, 0x46, 0x80, 0xB5, + 0x83, 0xB0, 0x01, 0x90, 0x0E, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x4B, 0x4B, + 0x9C, 0x42, 0x5D, 0xD0, 0x0E, 0xD9, 0x4A, 0x4B, 0x9C, 0x42, 0x67, 0xD0, + 0x42, 0xD9, 0x49, 0x4B, 0x9C, 0x42, 0x00, 0xD0, 0x81, 0xE0, 0x47, 0x4A, + 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0xDA, 0xFD, 0x00, 0x25, 0x43, 0xE0, + 0x44, 0x4B, 0x9C, 0x42, 0x69, 0xD0, 0x01, 0x33, 0x9C, 0x42, 0x13, 0xD3, + 0x42, 0x4B, 0xE3, 0x18, 0x9B, 0xB2, 0x03, 0x2B, 0x00, 0xD9, 0x6E, 0xE0, + 0x10, 0x00, 0x7A, 0xF7, 0x91, 0xF9, 0x43, 0x28, 0x51, 0xD8, 0x41, 0x28, + 0x51, 0xD8, 0x32, 0x00, 0x0C, 0x21, 0x20, 0x00, 0xFF, 0xF7, 0xCE, 0xFE, + 0x00, 0x25, 0x29, 0xE0, 0x39, 0x4B, 0x9C, 0x42, 0x37, 0xD0, 0x39, 0x4B, + 0x9C, 0x42, 0x5A, 0xD1, 0x38, 0x48, 0x7B, 0xF7, 0xAB, 0xFE, 0xB5, 0x1D, + 0x16, 0x23, 0x9A, 0x46, 0xB2, 0x44, 0x36, 0x4B, 0x99, 0x46, 0x29, 0x78, + 0x48, 0x46, 0x7B, 0xF7, 0xA1, 0xFE, 0x01, 0x35, 0x55, 0x45, 0xF8, 0xD1, + 0x2F, 0x4B, 0x3A, 0x00, 0x31, 0x00, 0x01, 0x98, 0x30, 0x4D, 0xA8, 0x47, + 0x05, 0x00, 0x0B, 0xE0, 0x2F, 0x4B, 0x9C, 0x42, 0x38, 0xD0, 0x2F, 0x4B, + 0x9C, 0x42, 0x3C, 0xD1, 0x2D, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, + 0x8B, 0xFD, 0x00, 0x25, 0x21, 0x00, 0x2B, 0x48, 0x7B, 0xF7, 0x86, 0xFE, + 0x28, 0x00, 0x03, 0xB0, 0x0C, 0xBC, 0x91, 0x46, 0x9A, 0x46, 0xF0, 0xBD, + 0x1A, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0xFB, 0xFE, 0x00, 0x25, + 0xEE, 0xE7, 0x1C, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0xEC, 0xFD, + 0x05, 0x00, 0xE7, 0xE7, 0x14, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, + 0x6B, 0xFE, 0x05, 0x00, 0xE0, 0xE7, 0x4A, 0x28, 0xAD, 0xD1, 0x23, 0x00, + 0x3A, 0x00, 0x31, 0x00, 0x01, 0x98, 0x16, 0x4D, 0xA8, 0x47, 0x05, 0x00, + 0xD6, 0xE7, 0x0E, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, 0x8A, 0xFE, + 0x05, 0x00, 0xCF, 0xE7, 0x11, 0x4A, 0x39, 0x00, 0x30, 0x00, 0xFF, 0xF7, + 0x43, 0xFF, 0x05, 0x00, 0xC8, 0xE7, 0x23, 0x00, 0x3A, 0x00, 0x31, 0x00, + 0x01, 0x98, 0x0B, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0xC0, 0xE7, 0xC0, 0x46, + 0x03, 0x08, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0C, 0x00, 0x00, + 0x1F, 0x04, 0x00, 0x00, 0xD4, 0xFB, 0xFF, 0xFF, 0x09, 0x04, 0x00, 0x00, + 0x0B, 0x04, 0x00, 0x00, 0x90, 0xD2, 0x10, 0x00, 0x98, 0xD2, 0x10, 0x00, + 0xC1, 0xDB, 0x09, 0x00, 0x0D, 0x08, 0x00, 0x00, 0x11, 0x08, 0x00, 0x00, + 0x9C, 0xD2, 0x10, 0x00, 0x10, 0xB5, 0x03, 0x00, 0x08, 0x00, 0x1B, 0x78, + 0x00, 0x21, 0x01, 0x2B, 0x00, 0xD9, 0x12, 0x31, 0xB2, 0xF7, 0x7C, 0xFF, + 0x00, 0x20, 0x10, 0xBD, 0x10, 0xB5, 0x08, 0x00, 0x00, 0x21, 0xB2, 0xF7, + 0x75, 0xFF, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0xAD, 0xB0, 0x04, 0x00, + 0x0D, 0x00, 0x02, 0xAB, 0x00, 0x22, 0xDA, 0x71, 0x60, 0x32, 0x00, 0x21, + 0x14, 0xA8, 0x77, 0xF7, 0x8B, 0xFD, 0x9B, 0x4A, 0x9B, 0x4B, 0xD3, 0x5C, + 0x01, 0x2B, 0x00, 0xD1, 0xC8, 0xE1, 0x99, 0x4B, 0x02, 0x21, 0xD1, 0x54, + 0x02, 0xAB, 0x00, 0x21, 0xD9, 0x71, 0x44, 0x32, 0x00, 0x20, 0x00, 0x23, + 0x01, 0x26, 0x11, 0x78, 0x05, 0x29, 0x26, 0xD0, 0x01, 0x33, 0xDB, 0xB2, + 0x40, 0x32, 0x30, 0x00, 0x0C, 0x2B, 0xF6, 0xD1, 0x02, 0xAB, 0x0C, 0x22, + 0xDA, 0x71, 0x27, 0x78, 0x00, 0x2F, 0x24, 0xD0, 0x60, 0x7A, 0x07, 0x23, + 0x07, 0x00, 0x9F, 0x43, 0x00, 0x97, 0x00, 0xD0, 0xB5, 0xE1, 0x8A, 0x49, + 0x0F, 0x22, 0x02, 0x40, 0x03, 0x09, 0x8E, 0x5C, 0xCB, 0x5C, 0xF6, 0x18, + 0xF6, 0xB2, 0x00, 0x2E, 0x61, 0xDD, 0x23, 0x00, 0x0A, 0x33, 0x3A, 0x00, + 0x02, 0x37, 0x07, 0x40, 0x01, 0x21, 0x01, 0x40, 0xA4, 0x46, 0x0C, 0x00, + 0x1E, 0xE0, 0x00, 0x28, 0x01, 0xD0, 0x02, 0xAA, 0xD3, 0x71, 0x0C, 0x21, + 0x00, 0x27, 0x0B, 0x2B, 0x00, 0xD8, 0x8D, 0xE1, 0xD7, 0xE7, 0xA1, 0x78, + 0xE0, 0x1C, 0xB2, 0xF7, 0x35, 0xFF, 0x0B, 0x21, 0x00, 0x28, 0x00, 0xD0, + 0x84, 0xE1, 0xD1, 0xE7, 0x59, 0x88, 0x18, 0x88, 0x81, 0x42, 0x46, 0xD8, + 0x03, 0x29, 0x44, 0xD9, 0x03, 0x28, 0x42, 0xD9, 0x01, 0x32, 0x10, 0x33, + 0xB2, 0x42, 0x04, 0xDA, 0x00, 0x2F, 0xF1, 0xD0, 0x94, 0x42, 0xEF, 0xD1, + 0xF6, 0xE7, 0x64, 0x46, 0x23, 0x00, 0x0E, 0x33, 0x00, 0x98, 0xC8, 0x22, + 0x12, 0x01, 0x91, 0x46, 0x6B, 0x4A, 0x92, 0x46, 0xFA, 0x22, 0x52, 0x00, + 0x93, 0x46, 0xA4, 0x46, 0xA8, 0x46, 0x1F, 0x88, 0x5A, 0x88, 0x97, 0x42, + 0x2D, 0xD8, 0x1D, 0x89, 0x59, 0x89, 0x8D, 0x42, 0x29, 0xD8, 0xD9, 0x88, + 0x05, 0x2F, 0x26, 0xD9, 0x4A, 0x45, 0x24, 0xD8, 0x0F, 0x00, 0x0A, 0x3F, + 0xBF, 0xB2, 0x57, 0x45, 0x1F, 0xD8, 0x9F, 0x88, 0x5F, 0x45, 0x1C, 0xD2, + 0x8C, 0x00, 0x61, 0x18, 0x49, 0x00, 0x01, 0x37, 0x57, 0x43, 0xBA, 0x00, + 0xD2, 0x19, 0x01, 0x32, 0x52, 0x10, 0x91, 0x42, 0x11, 0xDB, 0x01, 0x30, + 0x10, 0x33, 0xB0, 0x42, 0xDB, 0xDB, 0x64, 0x46, 0x45, 0x46, 0xA3, 0x78, + 0x01, 0x2B, 0x0F, 0xD9, 0x12, 0x21, 0x00, 0x27, 0x38, 0xE1, 0x64, 0x46, + 0x96, 0x42, 0xC3, 0xDD, 0x12, 0x21, 0x00, 0x27, 0x32, 0xE1, 0x64, 0x46, + 0x45, 0x46, 0x86, 0x42, 0xEF, 0xDD, 0x12, 0x21, 0x00, 0x27, 0x2B, 0xE1, + 0x63, 0x78, 0x03, 0x2B, 0x00, 0xD9, 0x35, 0xE1, 0xDB, 0x07, 0x06, 0xD5, + 0x49, 0x49, 0x4A, 0x48, 0x7B, 0xF7, 0x98, 0xFD, 0x00, 0x28, 0x00, 0xD0, + 0x2F, 0xE1, 0x02, 0xAB, 0xD8, 0x1D, 0xB3, 0xF7, 0x71, 0xF9, 0x01, 0x00, + 0x01, 0x90, 0x00, 0x27, 0x00, 0x28, 0x00, 0xD0, 0x14, 0xE1, 0x00, 0x2E, + 0x00, 0xDC, 0x25, 0xE1, 0x0E, 0x23, 0x99, 0x46, 0xA1, 0x44, 0x14, 0xAF, + 0x00, 0x9B, 0x9A, 0x46, 0x00, 0x23, 0x9B, 0x46, 0xA0, 0x46, 0x4C, 0x46, + 0xA9, 0x46, 0x55, 0x46, 0x13, 0xE0, 0x78, 0x60, 0x39, 0x60, 0xBA, 0x60, + 0xFB, 0x60, 0x5B, 0x46, 0xBB, 0x74, 0xFB, 0x74, 0x02, 0xAB, 0xDB, 0x79, + 0x3B, 0x82, 0x38, 0x00, 0xCF, 0xF7, 0xCA, 0xFA, 0x00, 0x28, 0x18, 0xD1, + 0x01, 0x35, 0x10, 0x34, 0x20, 0x37, 0xB5, 0x42, 0x24, 0xDA, 0x23, 0x00, + 0x21, 0x88, 0x49, 0x00, 0x22, 0x89, 0x8A, 0x42, 0x00, 0xD9, 0x0A, 0x00, + 0x02, 0x2A, 0x00, 0xD2, 0x02, 0x22, 0x58, 0x88, 0x40, 0x00, 0x5B, 0x89, + 0x83, 0x42, 0x00, 0xD9, 0x03, 0x00, 0x93, 0x42, 0xD9, 0xD2, 0x13, 0x00, + 0xD7, 0xE7, 0xAA, 0x46, 0x44, 0x46, 0x4D, 0x46, 0x51, 0x46, 0x25, 0x48, + 0x7B, 0xF7, 0x10, 0xFD, 0x51, 0x46, 0x24, 0x48, 0x7B, 0xF7, 0x0C, 0xFD, + 0x01, 0x9F, 0x3B, 0x21, 0x56, 0x45, 0x00, 0xDD, 0xCC, 0xE0, 0x06, 0xE0, + 0xAA, 0x46, 0x44, 0x46, 0x4D, 0x46, 0x51, 0x46, 0x1D, 0x48, 0x7B, 0xF7, + 0xFF, 0xFC, 0x02, 0xAB, 0xDA, 0x79, 0x92, 0x01, 0x13, 0x4B, 0x9B, 0x18, + 0x9B, 0x68, 0x00, 0x2B, 0x05, 0xD0, 0x19, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x11, 0x00, 0x10, 0x00, 0x98, 0x47, 0x60, 0x78, 0x02, 0x28, 0x2D, 0xD0, + 0x0E, 0xD8, 0x00, 0x28, 0x2A, 0xD0, 0x0B, 0x49, 0x02, 0xAB, 0xD8, 0x79, + 0x80, 0x01, 0x08, 0x18, 0x0C, 0x30, 0x11, 0x4B, 0x9C, 0x46, 0x61, 0x44, + 0x06, 0x22, 0xD0, 0xF7, 0xD3, 0xFA, 0x2B, 0xE0, 0x03, 0x28, 0xF0, 0xD0, + 0x0B, 0x4B, 0xDF, 0x6E, 0x00, 0x23, 0x1A, 0x00, 0x19, 0x00, 0xB8, 0x47, + 0x22, 0xE0, 0xC0, 0x46, 0xEC, 0xA4, 0x16, 0x00, 0x6D, 0x04, 0x00, 0x00, + 0xE4, 0x98, 0x0D, 0x00, 0x76, 0x0C, 0x00, 0x00, 0xB4, 0x98, 0x0D, 0x00, + 0xFA, 0xA7, 0x16, 0x00, 0xA4, 0xD2, 0x10, 0x00, 0xB0, 0xD2, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x0E, 0x03, 0x00, 0x00, 0x4E, 0x4A, 0x02, 0xAB, + 0x07, 0x33, 0x1B, 0x78, 0x9B, 0x01, 0xD3, 0x18, 0xC2, 0x21, 0x89, 0x00, + 0x8C, 0x46, 0x62, 0x44, 0x11, 0x68, 0xD9, 0x60, 0x92, 0x88, 0x1A, 0x82, + 0x02, 0xAB, 0x07, 0x33, 0x1B, 0x78, 0x46, 0x4F, 0x9A, 0x01, 0xBA, 0x18, + 0x94, 0x60, 0x01, 0x33, 0x9B, 0x01, 0xFB, 0x18, 0x05, 0x22, 0x1A, 0x71, + 0xE1, 0x1C, 0x01, 0x32, 0x0E, 0x20, 0x02, 0xAB, 0x9C, 0x46, 0x60, 0x44, + 0xD0, 0xF7, 0x92, 0xFA, 0x3E, 0x4B, 0xF9, 0x18, 0x05, 0x22, 0x07, 0xA8, + 0xD0, 0xF7, 0x8C, 0xFA, 0x67, 0x7A, 0x04, 0xAB, 0x9F, 0x74, 0x00, 0x2E, + 0x17, 0xDD, 0x22, 0x00, 0x0A, 0x32, 0x14, 0xA9, 0x10, 0x88, 0x18, 0x83, + 0x50, 0x88, 0x58, 0x83, 0x48, 0x69, 0x40, 0x08, 0x98, 0x83, 0x88, 0x69, + 0xD8, 0x83, 0x10, 0x89, 0x18, 0x84, 0x50, 0x89, 0x58, 0x84, 0x00, 0x98, + 0x01, 0x30, 0x00, 0x90, 0x10, 0x32, 0x0C, 0x33, 0x20, 0x31, 0xB0, 0x42, + 0xEA, 0xDB, 0x05, 0x23, 0x3B, 0x40, 0x05, 0x2B, 0x20, 0xD0, 0x02, 0xAB, + 0x07, 0x33, 0x1B, 0x78, 0x04, 0xA8, 0xC3, 0x74, 0x62, 0x78, 0x02, 0x75, + 0xA2, 0x78, 0x42, 0x75, 0x22, 0x78, 0x82, 0x75, 0x24, 0x4A, 0x9B, 0x01, + 0xD3, 0x18, 0xD9, 0x68, 0x04, 0x91, 0x1B, 0x8A, 0x83, 0x80, 0x01, 0x23, + 0x43, 0x74, 0x22, 0x4B, 0xD2, 0x5C, 0x3C, 0x23, 0xC2, 0x54, 0xC7, 0xF7, + 0x29, 0xFF, 0x01, 0x00, 0x01, 0x27, 0x00, 0x28, 0x1E, 0xD0, 0x03, 0x21, + 0x01, 0x27, 0x1B, 0xE0, 0x01, 0x3E, 0x04, 0xA8, 0x43, 0x8B, 0x0C, 0x22, + 0x72, 0x43, 0x82, 0x18, 0x51, 0x8B, 0x5F, 0x18, 0x02, 0x8B, 0xBA, 0x42, + 0x00, 0xD2, 0x07, 0x83, 0x0C, 0x22, 0x72, 0x43, 0x04, 0xA8, 0x84, 0x46, + 0x62, 0x44, 0x12, 0x8B, 0xBA, 0x42, 0xCA, 0xD2, 0x0C, 0x22, 0x72, 0x43, + 0x62, 0x44, 0x5B, 0x18, 0x13, 0x83, 0xC4, 0xE7, 0x0C, 0x21, 0x00, 0x27, + 0x28, 0x00, 0xB2, 0xF7, 0x9B, 0xFD, 0x38, 0x00, 0x2D, 0xB0, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x12, 0x21, + 0x00, 0x27, 0xF1, 0xE7, 0x12, 0x21, 0x00, 0x27, 0xEE, 0xE7, 0x12, 0x21, + 0x00, 0x27, 0xEB, 0xE7, 0x00, 0x9B, 0x9A, 0x46, 0x1F, 0xE7, 0xC0, 0x46, + 0xEC, 0xA4, 0x16, 0x00, 0x19, 0x03, 0x00, 0x00, 0xD6, 0x03, 0x00, 0x00, + 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x80, 0x46, 0x0D, 0x00, 0x17, 0x00, + 0x1C, 0x00, 0x58, 0x4B, 0xE3, 0x18, 0x9A, 0xB2, 0x39, 0x2A, 0x00, 0xD9, + 0x90, 0xE0, 0x93, 0x00, 0x55, 0x4A, 0xD3, 0x58, 0x9F, 0x46, 0x02, 0x20, + 0xF8, 0xF7, 0x40, 0xFF, 0x53, 0x4B, 0x00, 0x22, 0x44, 0x21, 0x5A, 0x54, + 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, + 0x40, 0x31, 0x5A, 0x54, 0x00, 0x26, 0x7C, 0xE0, 0x01, 0x20, 0xF8, 0xF7, + 0x2F, 0xFF, 0x4B, 0x4B, 0x11, 0x22, 0x44, 0x21, 0x5A, 0x54, 0x40, 0x31, + 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, 0x5A, 0x54, 0x40, 0x31, + 0x5A, 0x54, 0x00, 0x26, 0x6B, 0xE0, 0x45, 0x4B, 0x1B, 0x78, 0x00, 0x26, + 0x00, 0x2B, 0x66, 0xD0, 0x43, 0x49, 0x28, 0x00, 0xFF, 0xF7, 0xB0, 0xFD, + 0x05, 0x00, 0x21, 0x00, 0x41, 0x48, 0x7B, 0xF7, 0xDB, 0xFB, 0x41, 0x4B, + 0x9C, 0x42, 0x6E, 0xD1, 0x00, 0x26, 0x3B, 0x4A, 0x3F, 0x4B, 0x00, 0x21, + 0xD1, 0x54, 0x62, 0xE0, 0x39, 0x4B, 0x1B, 0x78, 0x00, 0x26, 0x00, 0x2B, + 0x4F, 0xD0, 0x00, 0x21, 0x3B, 0x48, 0xB2, 0xF7, 0x1F, 0xFD, 0x00, 0x25, + 0xE7, 0xE7, 0x4B, 0x78, 0x02, 0x2B, 0x27, 0xD0, 0x38, 0x4E, 0x05, 0x22, + 0xFF, 0x21, 0x30, 0x00, 0x77, 0xF7, 0x3E, 0xFB, 0x36, 0x4B, 0xF3, 0x18, + 0x36, 0x49, 0x58, 0x5C, 0x1F, 0x22, 0x02, 0x40, 0x5A, 0x54, 0x35, 0x4B, + 0x1B, 0x78, 0xEB, 0x81, 0x2B, 0x82, 0x12, 0x23, 0xAB, 0x81, 0x6B, 0x7A, + 0x9A, 0x07, 0x07, 0xD5, 0x02, 0x22, 0x93, 0x43, 0x6B, 0x72, 0x12, 0x23, + 0xAB, 0x83, 0x6B, 0x8B, 0x9B, 0x00, 0x6B, 0x83, 0x6B, 0x7A, 0x00, 0x26, + 0x5B, 0x07, 0x24, 0xD5, 0x12, 0x23, 0xAB, 0x85, 0x6B, 0x8D, 0x5B, 0x00, + 0x6B, 0x85, 0x1E, 0xE0, 0x00, 0x23, 0x4B, 0x70, 0xD4, 0xE7, 0x23, 0x4E, + 0x05, 0x22, 0xFF, 0x21, 0x30, 0x00, 0x77, 0xF7, 0x13, 0xFB, 0x21, 0x4B, + 0xF0, 0x18, 0x21, 0x4A, 0x81, 0x5C, 0x1F, 0x23, 0x0B, 0x40, 0x83, 0x54, + 0x20, 0x4B, 0xC6, 0x5C, 0x00, 0x2E, 0x0A, 0xD0, 0x13, 0x4A, 0x00, 0x21, + 0xD1, 0x54, 0x06, 0xE0, 0x11, 0x4A, 0x16, 0x4B, 0x00, 0x21, 0xD1, 0x54, + 0x00, 0x26, 0x00, 0xE0, 0x00, 0x26, 0x23, 0x00, 0x3A, 0x00, 0x29, 0x00, + 0x40, 0x46, 0x18, 0x4D, 0xA8, 0x47, 0x05, 0x00, 0x21, 0x00, 0x0D, 0x48, + 0x7B, 0xF7, 0x72, 0xFB, 0x0C, 0x4B, 0x9C, 0x42, 0x97, 0xD0, 0x00, 0x2E, + 0x03, 0xD0, 0x06, 0x4A, 0x10, 0x4B, 0x01, 0x21, 0xD1, 0x54, 0x28, 0x00, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0xF6, 0xDF, 0xFF, 0xFF, + 0xC4, 0xD2, 0x10, 0x00, 0xEC, 0xA4, 0x16, 0x00, 0x60, 0xE6, 0x10, 0x00, + 0x0A, 0x20, 0x00, 0x00, 0xB8, 0xD2, 0x10, 0x00, 0x3B, 0x20, 0x00, 0x00, + 0x6D, 0x04, 0x00, 0x00, 0x39, 0x20, 0x00, 0x00, 0x05, 0xA8, 0x16, 0x00, + 0xE7, 0xFC, 0xFF, 0xFF, 0x1D, 0x03, 0x00, 0x00, 0xE2, 0xE1, 0x10, 0x00, + 0xD6, 0x03, 0x00, 0x00, 0x15, 0xC9, 0x0B, 0x00, 0xF0, 0xB5, 0x83, 0xB0, + 0x06, 0x00, 0x0D, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x17, 0x4B, 0x9C, 0x42, + 0x24, 0xD0, 0x17, 0x4B, 0x9C, 0x42, 0x13, 0xD1, 0xCB, 0x88, 0x10, 0x2B, + 0x01, 0xD9, 0x10, 0x23, 0xCB, 0x80, 0x14, 0x4B, 0x1B, 0x78, 0x6A, 0x88, + 0x9A, 0x42, 0x01, 0xD8, 0x6B, 0x80, 0xAB, 0x80, 0xEB, 0x88, 0xAA, 0x88, + 0x69, 0x88, 0x28, 0x89, 0x00, 0x90, 0x0F, 0x48, 0x7B, 0xF7, 0x26, 0xFB, + 0x23, 0x00, 0x3A, 0x00, 0x29, 0x00, 0x30, 0x00, 0x0C, 0x4D, 0xA8, 0x47, + 0x05, 0x00, 0x21, 0x00, 0x0B, 0x48, 0x7B, 0xF7, 0x1B, 0xFB, 0x28, 0x00, + 0x03, 0xB0, 0xF0, 0xBD, 0x0A, 0x88, 0x00, 0x21, 0x02, 0x48, 0xFF, 0xF7, + 0x03, 0xFA, 0x00, 0x25, 0xF1, 0xE7, 0xC0, 0x46, 0x0D, 0x08, 0x00, 0x00, + 0x13, 0x20, 0x00, 0x00, 0xE2, 0xE1, 0x10, 0x00, 0xAC, 0xD3, 0x10, 0x00, + 0x09, 0x1C, 0x0C, 0x00, 0xBC, 0xD3, 0x10, 0x00, 0xF8, 0xB5, 0xCE, 0x46, + 0x47, 0x46, 0x80, 0xB5, 0x14, 0x0A, 0xA4, 0x00, 0x0E, 0x4D, 0x65, 0x59, + 0x44, 0x24, 0x2C, 0x5D, 0x03, 0x27, 0x3E, 0x00, 0x26, 0x40, 0x27, 0x42, + 0x11, 0xD0, 0xB9, 0x46, 0xBC, 0x43, 0xA4, 0x46, 0x44, 0x24, 0x67, 0x46, + 0x2F, 0x55, 0xB9, 0xF7, 0x7F, 0xF8, 0x2B, 0x5D, 0x4A, 0x46, 0x93, 0x43, + 0x1E, 0x43, 0x2E, 0x55, 0x00, 0x20, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, + 0xF8, 0xBD, 0xB9, 0xF7, 0x73, 0xF8, 0xF7, 0xE7, 0x5C, 0xA9, 0x16, 0x00, + 0x70, 0xB5, 0x0D, 0x00, 0x14, 0x0A, 0xA2, 0x00, 0x29, 0x4B, 0xD6, 0x58, + 0x0B, 0x2C, 0x06, 0xD8, 0x00, 0x2E, 0x04, 0xD0, 0x44, 0x23, 0xF3, 0x5C, + 0xDB, 0x43, 0x9B, 0x07, 0x11, 0xD1, 0x2D, 0x23, 0xEB, 0x5C, 0x00, 0x2B, + 0x06, 0xD0, 0x2A, 0x00, 0x16, 0x21, 0x20, 0x00, 0x21, 0x4B, 0x98, 0x47, + 0x00, 0x20, 0x70, 0xBD, 0x45, 0x22, 0xB1, 0x5C, 0x7F, 0x23, 0x0B, 0x40, + 0xB3, 0x54, 0x00, 0x20, 0xF7, 0xE7, 0x00, 0x21, 0x20, 0x00, 0xB8, 0xF7, + 0x83, 0xFC, 0x00, 0x28, 0x2C, 0xD1, 0x42, 0x23, 0xF3, 0x5A, 0xDB, 0x06, + 0x04, 0xD5, 0x28, 0x00, 0xB8, 0xF7, 0x92, 0xFC, 0x00, 0x28, 0x25, 0xD0, + 0x28, 0x00, 0xB8, 0xF7, 0x8D, 0xFC, 0x00, 0x28, 0x0E, 0xD1, 0x2A, 0x00, + 0x00, 0x21, 0x20, 0x00, 0xB8, 0xF7, 0x20, 0xFC, 0x28, 0x00, 0xB8, 0xF7, + 0x83, 0xFC, 0x01, 0x00, 0x00, 0x22, 0x20, 0x00, 0x0D, 0x4B, 0x98, 0x47, + 0x01, 0x20, 0xD4, 0xE7, 0x28, 0x00, 0xB8, 0xF7, 0x79, 0xFC, 0x01, 0x28, + 0xEB, 0xD0, 0x0A, 0x4B, 0xDE, 0x6E, 0x28, 0x00, 0xB8, 0xF7, 0x72, 0xFC, + 0x01, 0x00, 0x00, 0x23, 0x00, 0x22, 0x20, 0x00, 0xB0, 0x47, 0xE0, 0xE7, + 0x02, 0x20, 0xC2, 0xE7, 0x02, 0x20, 0xC0, 0xE7, 0x5C, 0xA9, 0x16, 0x00, + 0x81, 0x45, 0x0C, 0x00, 0xF5, 0x46, 0x0C, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x82, 0xB0, 0x06, 0x00, 0x0D, 0x00, + 0x14, 0x00, 0x1F, 0x00, 0x13, 0x0A, 0x9B, 0x00, 0x0E, 0x4A, 0x9B, 0x58, + 0x00, 0x2B, 0x0E, 0xD0, 0x89, 0x88, 0x0D, 0x4B, 0x9C, 0x46, 0x61, 0x44, + 0x01, 0xAB, 0x98, 0x46, 0x01, 0x22, 0x18, 0x00, 0xD0, 0xF7, 0x5A, 0xF8, + 0x43, 0x46, 0x19, 0x78, 0x08, 0x48, 0x7B, 0xF7, 0x61, 0xFA, 0x3B, 0x00, + 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, 0xB9, 0xF7, 0x91, 0xF9, 0x02, 0xB0, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x5C, 0xA9, 0x16, 0x00, + 0x00, 0x00, 0x61, 0x40, 0xC8, 0xD3, 0x10, 0x00, 0xF8, 0xB5, 0x05, 0x00, + 0x0E, 0x00, 0x14, 0x00, 0x1F, 0x00, 0x13, 0x0A, 0x9B, 0x00, 0x08, 0x4A, + 0x9B, 0x58, 0x9B, 0x6A, 0x00, 0x2B, 0x03, 0xD0, 0x59, 0x7A, 0x06, 0x48, + 0x7B, 0xF7, 0x40, 0xFA, 0x3B, 0x00, 0x22, 0x00, 0x31, 0x00, 0x28, 0x00, + 0xB9, 0xF7, 0x50, 0xFA, 0xF8, 0xBD, 0xC0, 0x46, 0x5C, 0xA9, 0x16, 0x00, + 0xD4, 0xD3, 0x10, 0x00, 0xF8, 0xB5, 0x04, 0x00, 0x06, 0x0A, 0xB2, 0x00, + 0x28, 0x4B, 0xD5, 0x58, 0x28, 0x00, 0x54, 0x30, 0x2A, 0x21, 0xA0, 0xF7, + 0x31, 0xFD, 0x00, 0x28, 0x3C, 0xD0, 0xF6, 0xB2, 0x30, 0x00, 0xAA, 0xF7, + 0xB5, 0xF8, 0x20, 0x00, 0x91, 0xF7, 0x02, 0xFA, 0x43, 0x23, 0xEB, 0x5C, + 0x00, 0x2B, 0x23, 0xD0, 0x1F, 0x4B, 0xEB, 0x5C, 0x00, 0x2B, 0x14, 0xD0, + 0x95, 0x23, 0x9B, 0x00, 0xEF, 0x18, 0x38, 0x00, 0x86, 0xF7, 0x80, 0xFA, + 0x36, 0x23, 0xE9, 0x5C, 0x3A, 0x00, 0x30, 0x00, 0xA1, 0xF7, 0x42, 0xF8, + 0x36, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x0A, 0xD0, 0x2D, 0x21, 0x20, 0x00, + 0x79, 0xF7, 0x76, 0xFC, 0x22, 0xE0, 0x36, 0x23, 0xE9, 0x5C, 0x30, 0x00, + 0xA1, 0xF7, 0x4B, 0xF8, 0xF0, 0xE7, 0x2B, 0x21, 0x20, 0x00, 0x79, 0xF7, + 0x6B, 0xFC, 0x17, 0xE0, 0x36, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x04, 0xD0, + 0x60, 0x21, 0x20, 0x00, 0x79, 0xF7, 0x62, 0xFC, 0x0E, 0xE0, 0x61, 0x21, + 0x20, 0x00, 0x79, 0xF7, 0x5D, 0xFC, 0x09, 0xE0, 0x00, 0x23, 0xAC, 0x22, + 0x92, 0x00, 0xAB, 0x54, 0x05, 0x4A, 0xAB, 0x54, 0x00, 0x21, 0x20, 0x00, + 0x93, 0xF7, 0xA6, 0xFB, 0xF8, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0xAF, 0x02, 0x00, 0x00, 0xB3, 0x02, 0x00, 0x00, 0xF8, 0xB5, 0x05, 0x00, + 0x0E, 0x00, 0x07, 0x0A, 0xBA, 0x00, 0x1D, 0x4B, 0xD4, 0x58, 0x1D, 0x4B, + 0xE3, 0x5C, 0x00, 0x2B, 0x0A, 0xD1, 0x1B, 0x4B, 0x00, 0x22, 0xE2, 0x54, + 0x09, 0x3B, 0xE3, 0x5C, 0x00, 0x2B, 0x27, 0xD0, 0x28, 0x00, 0xFF, 0xF7, + 0x8F, 0xFF, 0xF8, 0xBD, 0x93, 0xF7, 0xCC, 0xF8, 0x00, 0x28, 0x03, 0xD0, + 0x14, 0x4B, 0xE3, 0x5C, 0x00, 0x2B, 0x0C, 0xD0, 0x11, 0x4B, 0xE3, 0x5C, + 0x00, 0x2B, 0xE8, 0xD0, 0x88, 0x23, 0xFF, 0x33, 0xE3, 0x5C, 0x00, 0x2B, + 0xE3, 0xD0, 0x43, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xDF, 0xE7, 0x04, 0x33, + 0x06, 0x22, 0x00, 0x21, 0x0B, 0x48, 0x79, 0xF7, 0xA3, 0xF8, 0x06, 0x70, + 0x80, 0x37, 0x47, 0x80, 0xCA, 0xF7, 0xFE, 0xFE, 0x43, 0x23, 0x00, 0x22, + 0xE2, 0x54, 0xE3, 0xE7, 0x31, 0x00, 0x28, 0x00, 0x93, 0xF7, 0x60, 0xFB, + 0xD5, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0xB9, 0x02, 0x00, 0x00, + 0xC5, 0x02, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, + 0x00, 0xB5, 0x8C, 0xB0, 0x05, 0x00, 0x0C, 0x00, 0x0F, 0x0A, 0xBA, 0x00, + 0x4A, 0x4B, 0xD6, 0x58, 0x08, 0x00, 0x79, 0xF7, 0x55, 0xFC, 0x20, 0x28, + 0x07, 0xD0, 0x21, 0x00, 0x28, 0x00, 0x47, 0x4B, 0x98, 0x47, 0x0C, 0xB0, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x2A, 0x78, 0x01, 0x23, 0x13, 0x40, + 0x39, 0x22, 0xB3, 0x54, 0x69, 0x1C, 0x29, 0x3A, 0x30, 0x00, 0xCB, 0x30, + 0xFF, 0x30, 0xCF, 0xF7, 0x61, 0xFF, 0xFD, 0x23, 0x5B, 0x00, 0x98, 0x46, + 0xB0, 0x44, 0x09, 0xAB, 0x07, 0x93, 0x43, 0x46, 0x06, 0x93, 0x02, 0xA8, + 0x10, 0x22, 0x31, 0x00, 0xCB, 0x31, 0xFF, 0x31, 0xCF, 0xF7, 0x52, 0xFF, + 0x6A, 0x46, 0x33, 0x00, 0x6C, 0x33, 0xF1, 0x6E, 0x00, 0x91, 0x9B, 0x88, + 0x93, 0x80, 0xCD, 0x23, 0x5B, 0x00, 0xF3, 0x5A, 0x35, 0x00, 0x9B, 0x35, + 0xFF, 0x35, 0x68, 0x88, 0x00, 0x04, 0x18, 0x43, 0xAB, 0x88, 0xE9, 0x88, + 0x09, 0x04, 0x19, 0x43, 0x2B, 0x89, 0x6A, 0x89, 0x12, 0x04, 0x1A, 0x43, + 0xAB, 0x89, 0x9C, 0x46, 0xEB, 0x89, 0x1B, 0x04, 0x65, 0x46, 0x2B, 0x43, + 0x83, 0xF7, 0xDA, 0xFD, 0x27, 0x4B, 0xF3, 0x5C, 0x00, 0x2B, 0x1F, 0xD0, + 0x39, 0x23, 0xF2, 0x5C, 0xF8, 0xB2, 0x41, 0x46, 0xA0, 0xF7, 0x93, 0xFE, + 0xBE, 0x23, 0x5B, 0x00, 0xF3, 0x5C, 0x00, 0x2B, 0x1B, 0xD0, 0x88, 0x23, + 0xFF, 0x33, 0xF3, 0x5C, 0x00, 0x2B, 0x05, 0xD0, 0x01, 0x23, 0xAC, 0x22, + 0x92, 0x00, 0xB3, 0x54, 0x1C, 0x4A, 0xB3, 0x54, 0x37, 0x23, 0xF3, 0x5C, + 0x05, 0x2B, 0x27, 0xD0, 0x00, 0x21, 0x20, 0x00, 0xFF, 0xF7, 0x44, 0xFF, + 0x00, 0x20, 0x9C, 0xE7, 0x0C, 0x22, 0x09, 0xA9, 0x16, 0x4B, 0xF0, 0x18, + 0xCF, 0xF7, 0x08, 0xFF, 0xD8, 0xE7, 0x17, 0x33, 0x18, 0x22, 0x00, 0x21, + 0x13, 0x48, 0x79, 0xF7, 0x09, 0xF8, 0x05, 0x00, 0xC0, 0x23, 0x5B, 0x00, + 0xF3, 0x5C, 0x83, 0x75, 0x06, 0x22, 0x31, 0x00, 0x72, 0x31, 0xCF, 0xF7, + 0xF7, 0xFE, 0xA8, 0x1D, 0x10, 0x22, 0x31, 0x00, 0x9B, 0x31, 0xFF, 0x31, + 0xCF, 0xF7, 0xF0, 0xFE, 0x28, 0x00, 0xCA, 0xF7, 0x55, 0xFE, 0xC8, 0xE7, + 0x05, 0x21, 0x20, 0x00, 0x93, 0xF7, 0x2E, 0xFB, 0x00, 0x20, 0x74, 0xE7, + 0x64, 0xA2, 0x16, 0x00, 0x01, 0x4A, 0x0A, 0x00, 0xC5, 0x02, 0x00, 0x00, + 0xB3, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, + 0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x0B, 0x0A, 0x9B, 0x00, 0x0B, 0x4A, + 0x9E, 0x58, 0x08, 0x00, 0x79, 0xF7, 0xAE, 0xFB, 0x24, 0x28, 0x04, 0xD0, + 0x21, 0x00, 0x28, 0x00, 0x07, 0x4B, 0x98, 0x47, 0x70, 0xBD, 0xBE, 0x23, + 0x5B, 0x00, 0xF3, 0x5C, 0x00, 0x2B, 0xF5, 0xD1, 0x7D, 0x33, 0xFF, 0x33, + 0x01, 0x22, 0xF2, 0x54, 0xF0, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0x55, 0x45, 0x0A, 0x00, 0xF8, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, + 0x05, 0x00, 0x0C, 0x00, 0x0F, 0x0A, 0xBA, 0x00, 0x2F, 0x4B, 0xD6, 0x58, + 0x02, 0x78, 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x42, 0x78, + 0x37, 0x23, 0xF2, 0x54, 0x08, 0x00, 0x79, 0xF7, 0x83, 0xFB, 0x18, 0x28, + 0x04, 0xD8, 0x01, 0x23, 0x83, 0x40, 0x28, 0x4A, 0x13, 0x42, 0x2B, 0xD1, + 0xFB, 0xB2, 0x99, 0x46, 0x18, 0x00, 0xAA, 0xF7, 0x81, 0xF9, 0x80, 0x46, + 0x24, 0x4B, 0x01, 0x22, 0xF2, 0x54, 0x21, 0x00, 0x23, 0x48, 0x78, 0xF7, + 0x51, 0xFF, 0x23, 0x4B, 0xF3, 0x5C, 0x00, 0x2B, 0x1F, 0xD1, 0x3C, 0x23, + 0xF3, 0x5C, 0x02, 0x2B, 0x2D, 0xD0, 0x48, 0x46, 0xA9, 0xF7, 0x24, 0xFF, + 0x36, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x2A, 0xD1, 0x43, 0x46, 0x58, 0x00, + 0x40, 0x44, 0x40, 0x00, 0x80, 0xB2, 0x7B, 0xF7, 0xE7, 0xF8, 0x02, 0x00, + 0x21, 0x00, 0x16, 0x48, 0x78, 0xF7, 0xBE, 0xFE, 0x19, 0x21, 0x20, 0x00, + 0x79, 0xF7, 0xF0, 0xFA, 0x00, 0x20, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, + 0xF8, 0xBD, 0x04, 0x23, 0x06, 0x22, 0x00, 0x21, 0x10, 0x48, 0x78, 0xF7, + 0x6F, 0xFF, 0x6B, 0x78, 0x03, 0x70, 0x80, 0x37, 0x47, 0x80, 0xCA, 0xF7, + 0xC9, 0xFD, 0x00, 0x23, 0x0A, 0x4A, 0xB3, 0x54, 0x43, 0x22, 0xB3, 0x54, + 0xCD, 0xE7, 0x20, 0x00, 0x09, 0x4B, 0x98, 0x47, 0xCD, 0xE7, 0x43, 0x46, + 0x58, 0x00, 0x40, 0x44, 0x80, 0xB2, 0xD4, 0xE7, 0x64, 0xA2, 0x16, 0x00, + 0x01, 0x00, 0x40, 0x01, 0xC2, 0x02, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00, + 0xB9, 0x02, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0xF5, 0x3A, 0x09, 0x00, + 0x00, 0x20, 0x70, 0x47, 0xF0, 0xB5, 0x83, 0xB0, 0x0C, 0x00, 0x04, 0x23, + 0x5B, 0x4A, 0x00, 0x21, 0x5B, 0x48, 0x78, 0xF7, 0x41, 0xFF, 0x05, 0x00, + 0x21, 0x78, 0x5A, 0x48, 0x7B, 0xF7, 0x40, 0xF8, 0x23, 0x78, 0x01, 0x2B, + 0x65, 0xD0, 0x06, 0x2B, 0x00, 0xD1, 0x80, 0xE0, 0x00, 0x2B, 0x05, 0xD0, + 0x28, 0x00, 0xCA, 0xF7, 0x91, 0xFD, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, + 0xA2, 0x78, 0x52, 0x4B, 0x1A, 0x70, 0x00, 0x23, 0x2B, 0x70, 0x6B, 0x70, + 0xA3, 0x78, 0xAB, 0x70, 0x4F, 0x4B, 0x1B, 0x78, 0xEB, 0x70, 0x63, 0x78, + 0x01, 0x2B, 0xEB, 0xD1, 0x4D, 0x4B, 0x1B, 0x68, 0x02, 0x2B, 0xE7, 0xD1, + 0x49, 0x4B, 0x1B, 0x78, 0x06, 0x2B, 0xE3, 0xD1, 0xFC, 0xF7, 0x66, 0xF9, + 0x49, 0x4C, 0x4A, 0x4B, 0x02, 0x22, 0xE2, 0x54, 0x6B, 0x46, 0xDF, 0x1D, + 0x38, 0x00, 0xB2, 0xF7, 0x2D, 0xFC, 0x3E, 0x78, 0x10, 0x23, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x78, 0xF7, 0x06, 0xFF, 0xB6, 0x01, 0xA6, 0x19, + 0xB0, 0x60, 0x3B, 0x78, 0x9B, 0x01, 0xE3, 0x18, 0x9B, 0x68, 0x01, 0x22, + 0x9A, 0x70, 0x00, 0x26, 0x1E, 0x71, 0x80, 0x22, 0x92, 0x01, 0xDA, 0x80, + 0x1A, 0x81, 0x1E, 0x70, 0x5E, 0x70, 0x38, 0x78, 0x43, 0x1C, 0x9B, 0x01, + 0xE3, 0x18, 0x06, 0x22, 0x1A, 0x71, 0x38, 0x4A, 0xA3, 0x5C, 0x03, 0x21, + 0x8B, 0x43, 0xA3, 0x54, 0x83, 0x01, 0xE3, 0x18, 0x1E, 0x86, 0x5E, 0x86, + 0x34, 0x4B, 0x98, 0x47, 0x3B, 0x78, 0x5A, 0x1C, 0x92, 0x01, 0xA2, 0x18, + 0x07, 0x21, 0x11, 0x71, 0x9B, 0x01, 0xE3, 0x18, 0x98, 0x68, 0x0C, 0x38, + 0x78, 0xF7, 0x27, 0xFF, 0x3B, 0x78, 0x9B, 0x01, 0xE4, 0x18, 0xA6, 0x60, + 0x9E, 0xE7, 0xA3, 0x78, 0x00, 0x2B, 0x0C, 0xD1, 0x24, 0x4B, 0x1B, 0x78, + 0x01, 0x33, 0xDB, 0xB2, 0x10, 0x2B, 0x02, 0xD8, 0x21, 0x4A, 0x13, 0x70, + 0x07, 0xE0, 0x20, 0x4B, 0x10, 0x22, 0x1A, 0x70, 0x03, 0xE0, 0x1E, 0x4A, + 0x13, 0x78, 0x01, 0x3B, 0x13, 0x70, 0x00, 0x23, 0x2B, 0x70, 0x01, 0x33, + 0x6B, 0x70, 0xA3, 0x78, 0xAB, 0x70, 0x19, 0x4B, 0x1B, 0x78, 0xEB, 0x70, + 0x80, 0xE7, 0xE2, 0x78, 0x12, 0x02, 0xA3, 0x78, 0x13, 0x43, 0x1B, 0x4A, + 0x1B, 0xB2, 0x93, 0x42, 0x00, 0xD0, 0x77, 0xE7, 0x19, 0x4B, 0x1A, 0x80, + 0x61, 0x79, 0x09, 0x02, 0x22, 0x79, 0x0A, 0x43, 0x5A, 0x80, 0xE1, 0x79, + 0x09, 0x02, 0xA2, 0x79, 0x0A, 0x43, 0x9A, 0x80, 0x98, 0x68, 0x00, 0x28, + 0x01, 0xD0, 0x79, 0xF7, 0x11, 0xF8, 0x20, 0x7A, 0x10, 0x4E, 0xB0, 0x71, + 0x01, 0x21, 0x78, 0xF7, 0x67, 0xFF, 0xB0, 0x60, 0xB2, 0x79, 0x21, 0x00, + 0x09, 0x31, 0xCF, 0xF7, 0x87, 0xFD, 0x59, 0xE7, 0x57, 0xFD, 0x00, 0x00, + 0x01, 0x11, 0x00, 0x00, 0xE0, 0xD3, 0x10, 0x00, 0xD0, 0xE5, 0x10, 0x00, + 0x48, 0x06, 0x16, 0x00, 0xA8, 0xE5, 0x10, 0x00, 0xEC, 0xA4, 0x16, 0x00, + 0x6D, 0x04, 0x00, 0x00, 0x6A, 0x04, 0x00, 0x00, 0xE1, 0xEA, 0x0B, 0x00, + 0x88, 0xAC, 0xFF, 0xFF, 0xC4, 0xE5, 0x10, 0x00, 0x09, 0x4B, 0x1B, 0x68, + 0xDA, 0x6E, 0x53, 0x1C, 0x0C, 0xD0, 0x08, 0x4B, 0x19, 0x68, 0x4B, 0x68, + 0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x06, 0x48, 0x83, 0x42, 0x03, 0xD9, + 0x04, 0x32, 0x12, 0x01, 0x12, 0x09, 0x4A, 0x60, 0x70, 0x47, 0xC0, 0x46, + 0xF4, 0xE1, 0x10, 0x00, 0x28, 0x27, 0x16, 0x00, 0xFE, 0xFF, 0xFF, 0x07, + 0x30, 0xB5, 0x83, 0xB0, 0x68, 0x46, 0x77, 0xF7, 0xE5, 0xFC, 0x00, 0x9D, + 0x34, 0x4C, 0x23, 0x68, 0x01, 0x22, 0x93, 0x43, 0x23, 0x60, 0x82, 0xF7, + 0x51, 0xFE, 0xB1, 0xF7, 0x69, 0xFE, 0x22, 0x68, 0x8C, 0x23, 0x5B, 0x01, + 0x13, 0x43, 0x23, 0x60, 0x2E, 0x4B, 0x1B, 0x68, 0x5A, 0x1C, 0x09, 0xD0, + 0xAB, 0x42, 0x41, 0xD0, 0x2A, 0x49, 0x0B, 0x68, 0x2B, 0x4A, 0x1A, 0x40, + 0x80, 0x23, 0xDB, 0x00, 0x13, 0x43, 0x0B, 0x60, 0x27, 0x4B, 0x5B, 0x68, + 0x5A, 0x1C, 0x09, 0xD0, 0xAB, 0x42, 0x36, 0xD0, 0x23, 0x49, 0x0B, 0x68, + 0x25, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x01, 0x13, 0x43, 0x0B, 0x60, + 0x20, 0x4B, 0x9B, 0x68, 0x5A, 0x1C, 0x09, 0xD0, 0xAB, 0x42, 0x2B, 0xD0, + 0x1C, 0x49, 0x0B, 0x68, 0x1F, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x9B, 0x00, + 0x13, 0x43, 0x0B, 0x60, 0x1D, 0x48, 0x78, 0xF7, 0x3F, 0xFA, 0x18, 0x4B, + 0x5B, 0x7F, 0x00, 0x2B, 0x1F, 0xD1, 0x7F, 0xF7, 0x9B, 0xFE, 0x02, 0x28, + 0x21, 0xD1, 0x19, 0x49, 0x0B, 0x68, 0x19, 0x4A, 0x1A, 0x40, 0x80, 0x23, + 0x9B, 0x03, 0x13, 0x43, 0x0B, 0x60, 0x17, 0x4B, 0x1A, 0x68, 0x01, 0x21, + 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, 0x01, 0x31, 0x8A, 0x43, 0x1A, 0x60, + 0x03, 0xB0, 0x30, 0xBD, 0x77, 0xF7, 0x4E, 0xFB, 0xC2, 0xE7, 0x77, 0xF7, + 0x5F, 0xFB, 0xCD, 0xE7, 0x77, 0xF7, 0x70, 0xFB, 0xD8, 0xE7, 0xFC, 0xF7, + 0x49, 0xFB, 0x05, 0x4B, 0x00, 0x22, 0x5A, 0x77, 0xD9, 0xE7, 0x7F, 0xF7, + 0x75, 0xFE, 0x03, 0x28, 0xEA, 0xD1, 0xD8, 0xE7, 0x0C, 0x00, 0x60, 0x40, + 0x3C, 0x95, 0x16, 0x00, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0x01, 0x20, 0x00, 0x00, 0x58, 0x40, 0x34, 0x40, + 0xFF, 0xFF, 0xDF, 0xFF, 0x18, 0x00, 0x58, 0x40, 0xF0, 0xB5, 0xCE, 0x46, + 0x47, 0x46, 0x80, 0xB5, 0x83, 0xB0, 0x91, 0x46, 0x9C, 0x4B, 0x1E, 0x68, + 0x80, 0x00, 0x84, 0x59, 0x3C, 0x23, 0xE3, 0x5C, 0x98, 0x46, 0x9A, 0x4B, + 0xE3, 0x61, 0xBD, 0xF7, 0x4D, 0xFA, 0x01, 0x90, 0x00, 0x23, 0xA3, 0x62, + 0x00, 0x20, 0xCE, 0xF7, 0x51, 0xFF, 0x96, 0x4B, 0x1D, 0x68, 0xEB, 0x6E, + 0x5A, 0x1C, 0x16, 0xD0, 0x63, 0x60, 0x00, 0x23, 0xA3, 0x60, 0xE7, 0x8E, + 0xA7, 0x62, 0x92, 0x49, 0x9A, 0x00, 0x52, 0x58, 0x00, 0x2A, 0x25, 0xD1, + 0x01, 0x33, 0x07, 0x2B, 0xF8, 0xD1, 0x00, 0x23, 0x9C, 0x46, 0x8E, 0x4B, + 0x18, 0x00, 0x41, 0x30, 0xFF, 0x30, 0x00, 0x22, 0x00, 0x21, 0x00, 0x91, + 0x1E, 0xE0, 0x8B, 0x4B, 0x1B, 0x68, 0x01, 0x33, 0x09, 0xD0, 0x8A, 0x4B, + 0x1B, 0x68, 0x5B, 0x00, 0x01, 0x9A, 0x94, 0x46, 0x63, 0x44, 0x88, 0x4A, + 0x13, 0x40, 0x63, 0x60, 0xDB, 0xE7, 0xA3, 0x8E, 0xE2, 0x8E, 0x9B, 0x1A, + 0x5B, 0x00, 0x01, 0x9A, 0x94, 0x46, 0x63, 0x44, 0x82, 0x4A, 0x13, 0x40, + 0x63, 0x60, 0xD0, 0xE7, 0x01, 0x23, 0x9C, 0x46, 0xDB, 0xE7, 0x40, 0x33, + 0x83, 0x42, 0x07, 0xD0, 0x19, 0x78, 0x09, 0x29, 0xF9, 0xD1, 0x01, 0x32, + 0xD2, 0xB2, 0x08, 0x39, 0x00, 0x91, 0xF4, 0xE7, 0xEB, 0x6E, 0x59, 0x1C, + 0x21, 0xD0, 0x63, 0x60, 0x75, 0x4B, 0x9A, 0x88, 0x77, 0x4B, 0x9A, 0x42, + 0x02, 0xD9, 0x77, 0x4B, 0x9C, 0x46, 0x62, 0x44, 0x76, 0x4B, 0x7B, 0x43, + 0x93, 0x42, 0x00, 0xD9, 0x13, 0x00, 0x75, 0x4A, 0x93, 0x42, 0x00, 0xD2, + 0x13, 0x00, 0x23, 0x61, 0xB3, 0x68, 0x80, 0x22, 0x52, 0x05, 0x93, 0x42, + 0x3B, 0xD2, 0x62, 0x68, 0xD3, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x6F, 0x4A, + 0x93, 0x42, 0x34, 0xD8, 0x6E, 0x4B, 0x98, 0x47, 0xAF, 0xE0, 0x65, 0x4B, + 0x1B, 0x68, 0x01, 0x33, 0x07, 0xD0, 0x64, 0x4B, 0x18, 0x68, 0x01, 0x9B, + 0x1D, 0x18, 0x63, 0x48, 0x05, 0x40, 0x65, 0x60, 0xD2, 0xE7, 0x63, 0x46, + 0x00, 0x2B, 0x03, 0xD1, 0x66, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x08, 0xD0, + 0x5C, 0x4B, 0x18, 0x68, 0x80, 0x00, 0x01, 0x9B, 0xC5, 0x18, 0x5B, 0x4B, + 0x1D, 0x40, 0x65, 0x60, 0xC2, 0xE7, 0x00, 0x9B, 0x00, 0x2B, 0xBF, 0xD0, + 0x5F, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x06, 0xD9, 0xD3, 0x01, 0x01, 0x9A, + 0x9D, 0x18, 0x54, 0x4B, 0x1D, 0x40, 0x65, 0x60, 0xB4, 0xE7, 0x51, 0x4B, + 0x1B, 0x68, 0x01, 0x9A, 0xD5, 0x18, 0x50, 0x4B, 0x1D, 0x40, 0x65, 0x60, + 0xAC, 0xE7, 0x4B, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x55, 0x4A, 0x26, 0x33, + 0xD3, 0x5C, 0xA3, 0x75, 0x63, 0x68, 0xE3, 0x62, 0x52, 0x4A, 0x27, 0x23, + 0xD2, 0x5C, 0x18, 0x3B, 0x1A, 0x40, 0xC0, 0x23, 0xDB, 0x01, 0x13, 0x43, + 0xA3, 0x82, 0x3F, 0x23, 0xE1, 0x5C, 0x1B, 0x33, 0x42, 0x46, 0x53, 0x43, + 0x4C, 0x4A, 0x98, 0x18, 0x8A, 0x00, 0x11, 0x43, 0x80, 0x22, 0x52, 0x01, + 0x0A, 0x43, 0x02, 0x80, 0x21, 0x8D, 0x49, 0x4A, 0x9A, 0x18, 0x11, 0x80, + 0x3E, 0x22, 0xA2, 0x5C, 0x0A, 0x3A, 0x01, 0x2A, 0x5A, 0xD9, 0x46, 0x4A, + 0x98, 0x18, 0xA1, 0x6A, 0x80, 0x22, 0xD2, 0x01, 0x91, 0x42, 0x00, 0xD3, + 0x43, 0x49, 0x44, 0x4A, 0x0A, 0x43, 0x92, 0xB2, 0x02, 0x80, 0x00, 0x21, + 0x42, 0x4A, 0x9A, 0x18, 0x11, 0x80, 0x32, 0x7D, 0x92, 0x07, 0x14, 0xD5, + 0xF1, 0x7B, 0x09, 0x02, 0xB2, 0x7B, 0x0A, 0x43, 0x3E, 0x49, 0x59, 0x18, + 0x0A, 0x80, 0x71, 0x7C, 0x09, 0x02, 0x32, 0x7C, 0x0A, 0x43, 0x3C, 0x49, + 0x59, 0x18, 0x0A, 0x80, 0xF1, 0x7C, 0x09, 0x02, 0xB2, 0x7C, 0x0A, 0x43, + 0x39, 0x49, 0x59, 0x18, 0x0A, 0x80, 0x71, 0x7D, 0xB5, 0x7D, 0x38, 0x4A, + 0x97, 0x78, 0x7A, 0x1E, 0x97, 0x41, 0x30, 0x7D, 0x80, 0x07, 0xC0, 0x0F, + 0x01, 0x22, 0x94, 0x46, 0x00, 0x2D, 0x00, 0xD1, 0x84, 0x46, 0x33, 0x4A, + 0x9E, 0x18, 0x09, 0x02, 0xAA, 0x01, 0x0A, 0x43, 0xFF, 0x00, 0x3A, 0x43, + 0x80, 0x00, 0x02, 0x43, 0x61, 0x46, 0x0A, 0x43, 0x32, 0x80, 0x2E, 0x4A, + 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, 0x1F, 0x21, 0x8A, 0x43, 0x11, 0x00, + 0x3E, 0x22, 0xA2, 0x5C, 0x0A, 0x43, 0x1A, 0x80, 0x20, 0x00, 0xCC, 0xF7, + 0x71, 0xFF, 0x00, 0x28, 0x0D, 0xD1, 0x00, 0x23, 0x47, 0x22, 0xA3, 0x54, + 0x63, 0x87, 0x03, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xF0, 0xBD, + 0x22, 0x49, 0x23, 0x4A, 0x9A, 0x18, 0x11, 0x80, 0x9F, 0xE7, 0x22, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEE, 0xE7, + 0xE4, 0x29, 0x16, 0x00, 0x71, 0x00, 0x10, 0x00, 0xF4, 0xE1, 0x10, 0x00, + 0x38, 0x27, 0x16, 0x00, 0x70, 0xA6, 0x16, 0x00, 0x5C, 0xAB, 0x16, 0x00, + 0xE4, 0xE1, 0x10, 0x00, 0xFE, 0xFF, 0xFF, 0x0F, 0xC4, 0x09, 0x00, 0x00, + 0x3C, 0xF6, 0xFF, 0xFF, 0xE2, 0x04, 0x00, 0x00, 0xA6, 0x0E, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0x07, 0x39, 0xC2, 0x0C, 0x00, 0xF0, 0x29, 0x16, 0x00, + 0x50, 0xE0, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x7A, 0x01, 0x61, 0x40, + 0x96, 0x01, 0x61, 0x40, 0x90, 0x01, 0x61, 0x40, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0xBC, 0x01, 0x61, 0x40, 0x7C, 0x01, 0x61, 0x40, + 0x7E, 0x01, 0x61, 0x40, 0x80, 0x01, 0x61, 0x40, 0xE8, 0x29, 0x16, 0x00, + 0x8A, 0x01, 0x61, 0x40, 0x76, 0x01, 0x61, 0x40, 0x72, 0x3E, 0x00, 0x00, + 0x9E, 0x01, 0x61, 0x40, 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x10, 0x23, + 0x0F, 0x4A, 0x00, 0x21, 0x0F, 0x48, 0x78, 0xF7, 0x53, 0xFC, 0x00, 0x22, + 0x02, 0x70, 0x05, 0x23, 0x43, 0x70, 0x04, 0x3B, 0x83, 0x70, 0x80, 0x21, + 0x89, 0x00, 0x81, 0x80, 0xFE, 0x39, 0xFF, 0x39, 0x81, 0x71, 0xC3, 0x71, + 0x0B, 0x31, 0x01, 0x72, 0x43, 0x72, 0x53, 0x31, 0x41, 0x81, 0x57, 0x39, + 0x81, 0x81, 0x83, 0x73, 0xC2, 0x73, 0xCA, 0xF7, 0x9B, 0xFA, 0x00, 0x20, + 0x10, 0xBD, 0xC0, 0x46, 0x53, 0xFD, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, + 0x10, 0xB5, 0x10, 0x4A, 0x11, 0x68, 0xA0, 0x23, 0x5B, 0x03, 0x0B, 0x43, + 0x13, 0x60, 0x0E, 0x4C, 0x01, 0x23, 0x23, 0x60, 0x05, 0x20, 0x7F, 0xF7, + 0x10, 0xFD, 0x00, 0x23, 0x23, 0x60, 0x0B, 0x49, 0x04, 0x22, 0x0B, 0x68, + 0x1A, 0x42, 0xFC, 0xD0, 0x06, 0x4A, 0x13, 0x68, 0x08, 0x49, 0x0B, 0x40, + 0x13, 0x60, 0x08, 0x4C, 0x01, 0x23, 0x23, 0x60, 0x05, 0x20, 0x7F, 0xF7, + 0xFE, 0xFC, 0x00, 0x23, 0x23, 0x60, 0x10, 0xBD, 0x58, 0x40, 0x34, 0x40, + 0x54, 0x40, 0x34, 0x40, 0x80, 0x40, 0x34, 0x40, 0xFF, 0xFF, 0xEB, 0xFF, + 0x48, 0x20, 0x62, 0x40, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x04, 0x90, 0x0F, 0x00, 0x16, 0x00, + 0xEF, 0xF3, 0x10, 0x83, 0x01, 0x22, 0x11, 0x00, 0x19, 0x40, 0x05, 0x91, + 0x1A, 0x42, 0x00, 0xD1, 0x72, 0xB6, 0x04, 0x9A, 0x93, 0x00, 0xA3, 0x49, + 0x8C, 0x46, 0x63, 0x44, 0x1C, 0x68, 0xA2, 0x46, 0xA1, 0x4B, 0x63, 0x62, + 0xE5, 0x6C, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0x00, 0xD5, 0x4F, 0xE2, + 0x93, 0x00, 0x9E, 0x4A, 0x9B, 0x58, 0x1A, 0x8A, 0x00, 0x2A, 0x0E, 0xD0, + 0x84, 0x23, 0xE3, 0x5A, 0x5B, 0x07, 0x00, 0xD5, 0x36, 0xE2, 0x9A, 0x4B, + 0x23, 0x61, 0xA2, 0x6E, 0x99, 0x4B, 0x1B, 0x68, 0x9A, 0x42, 0x00, 0xD1, + 0x3C, 0xE2, 0x96, 0x4B, 0x2F, 0xE2, 0x06, 0x32, 0x1A, 0x82, 0x96, 0x48, + 0x7A, 0xF7, 0xD0, 0xFC, 0xEA, 0xE7, 0x96, 0x23, 0x00, 0x22, 0xE2, 0x54, + 0x00, 0x2E, 0x00, 0xD1, 0x34, 0xE2, 0x20, 0x3B, 0xE3, 0x5A, 0x00, 0x2B, + 0x00, 0xD1, 0x2F, 0xE2, 0x80, 0x21, 0xC9, 0x00, 0x8E, 0x4A, 0x02, 0x40, + 0x8A, 0x42, 0x00, 0xD0, 0x28, 0xE2, 0x02, 0x07, 0x00, 0xD5, 0x25, 0xE2, + 0x4A, 0x22, 0xA2, 0x5C, 0x00, 0x2A, 0x00, 0xD0, 0x20, 0xE2, 0xA2, 0x6E, + 0x5A, 0x43, 0x55, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0x7E, 0x22, 0xA1, 0x5A, + 0x5B, 0x18, 0xA3, 0x52, 0x96, 0x23, 0x7D, 0x3A, 0xE2, 0x54, 0x7B, 0x1B, + 0x1B, 0x01, 0x1B, 0x09, 0x81, 0x4A, 0x93, 0x42, 0x00, 0xD8, 0x13, 0xE2, + 0xE7, 0x6D, 0x2B, 0xE2, 0x46, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, + 0x26, 0xE2, 0x7C, 0x33, 0xE3, 0x5A, 0x7E, 0x22, 0xA2, 0x5A, 0x9B, 0x18, + 0x48, 0x22, 0xA2, 0x5A, 0x9B, 0x1A, 0x79, 0x4A, 0x9B, 0xB2, 0x93, 0x42, + 0x00, 0xD9, 0x19, 0xE2, 0x46, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x21, 0xD1, + 0x40, 0x33, 0xE3, 0x5A, 0x5D, 0x19, 0x2D, 0x01, 0x2D, 0x09, 0xC3, 0x07, + 0x00, 0xD4, 0xCA, 0xE1, 0x44, 0x23, 0xE3, 0x5A, 0x5B, 0x08, 0x5D, 0x19, + 0x2D, 0x01, 0x2D, 0x09, 0xA3, 0x6B, 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, + 0x34, 0x33, 0xE2, 0x52, 0xE3, 0x6B, 0xE3, 0x66, 0x46, 0x23, 0x01, 0x22, + 0xE2, 0x54, 0x48, 0x33, 0xE0, 0x5C, 0x68, 0x4B, 0x98, 0x47, 0x84, 0x23, + 0xE3, 0x5A, 0xDB, 0x07, 0x00, 0xD4, 0xBB, 0xE1, 0x7C, 0x23, 0xE2, 0x5A, + 0x02, 0x33, 0xE3, 0x5A, 0xD2, 0x18, 0x48, 0x23, 0xE3, 0x5A, 0xD2, 0x1A, + 0x92, 0xB2, 0x53, 0x1E, 0x9B, 0xB2, 0x00, 0x2A, 0x0A, 0xD0, 0xA1, 0x6E, + 0x2F, 0x00, 0x5E, 0x4A, 0x7F, 0x1A, 0x3F, 0x01, 0x3F, 0x09, 0x01, 0x3B, + 0x9B, 0xB2, 0x93, 0x42, 0xF8, 0xD1, 0xDB, 0xE1, 0x2F, 0x00, 0xD9, 0xE1, + 0x00, 0x2B, 0x00, 0xD1, 0x5F, 0xE1, 0x68, 0xE1, 0x01, 0x3B, 0x1B, 0x01, + 0x1B, 0x09, 0x56, 0x4A, 0x94, 0x46, 0xE0, 0x44, 0x78, 0xE1, 0x2B, 0x00, + 0x63, 0x60, 0x50, 0x46, 0xCC, 0xF7, 0xFA, 0xFD, 0x00, 0x28, 0x00, 0xD1, + 0x2E, 0xE1, 0xA3, 0x7D, 0x50, 0x49, 0x2F, 0x22, 0x8A, 0x5C, 0x9B, 0x18, + 0xA3, 0x75, 0x84, 0x23, 0xE3, 0x5A, 0x9B, 0x07, 0x02, 0xD5, 0x03, 0x9B, + 0x00, 0x2B, 0x4C, 0xD0, 0xA3, 0x6E, 0x9C, 0x46, 0x65, 0x44, 0x2D, 0x01, + 0x2D, 0x09, 0x7E, 0x22, 0xA3, 0x5A, 0x01, 0x33, 0xA3, 0x52, 0xA3, 0x7D, + 0x01, 0x33, 0xA3, 0x75, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, + 0x8C, 0xE0, 0xEB, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x99, 0x45, 0x00, 0xD8, + 0xF5, 0xE0, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0xCF, 0xD5, 0x72, 0x23, + 0xE3, 0x5E, 0x98, 0x46, 0x63, 0x6D, 0xEE, 0x1A, 0x36, 0x01, 0x36, 0x09, + 0x77, 0xF7, 0x3C, 0xFF, 0x14, 0x23, 0x00, 0x28, 0x02, 0xD1, 0xC4, 0x33, + 0x37, 0x4A, 0xD3, 0x5A, 0x7A, 0x22, 0xA0, 0x5A, 0xC0, 0x18, 0x70, 0x43, + 0xC8, 0x21, 0xC9, 0x00, 0xCE, 0xF7, 0xA2, 0xFD, 0x20, 0x30, 0x46, 0x00, + 0x84, 0x23, 0xE3, 0x5A, 0x9B, 0x07, 0x00, 0xD5, 0x04, 0xE1, 0x74, 0x23, + 0xE2, 0x5A, 0x53, 0x01, 0x9B, 0x1A, 0x9B, 0x00, 0x9B, 0x18, 0x9A, 0x00, + 0x9B, 0x18, 0xF6, 0x18, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD0, + 0x05, 0xE1, 0x46, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, 0x8E, 0xE1, + 0xFF, 0xE0, 0xF7, 0xF7, 0xB1, 0xFE, 0x00, 0x28, 0xAE, 0xD0, 0x24, 0x4B, + 0x1A, 0x78, 0x01, 0x23, 0x00, 0x2A, 0x08, 0xD0, 0x22, 0x4B, 0x1B, 0x78, + 0x01, 0x3B, 0x5A, 0x1E, 0x93, 0x41, 0x5B, 0x42, 0x06, 0x22, 0x93, 0x43, + 0x08, 0x33, 0xA0, 0x6E, 0x02, 0x00, 0x5A, 0x43, 0x80, 0x21, 0x49, 0x00, + 0x8A, 0x42, 0x0C, 0xD9, 0x5A, 0x1E, 0xD2, 0xB2, 0x42, 0x43, 0x8C, 0x46, + 0x00, 0xE0, 0x0A, 0x00, 0x01, 0x3B, 0xDB, 0xB2, 0x62, 0x45, 0x02, 0xD9, + 0x11, 0x1A, 0x00, 0x2B, 0xF7, 0xD1, 0x55, 0x19, 0x2D, 0x01, 0x2D, 0x09, + 0x7E, 0x21, 0x62, 0x5A, 0xD3, 0x18, 0x63, 0x52, 0x01, 0x23, 0x03, 0x93, + 0x8B, 0xE7, 0xC0, 0x46, 0xF4, 0x29, 0x16, 0x00, 0x95, 0x9D, 0x10, 0x00, + 0x5C, 0xA9, 0x16, 0x00, 0xDE, 0x0D, 0x00, 0x00, 0x64, 0xE6, 0x10, 0x00, + 0xEC, 0xD3, 0x10, 0x00, 0x04, 0x04, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07, + 0xFE, 0x7F, 0x00, 0x00, 0xF1, 0x12, 0x0D, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x71, 0x02, 0x00, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x8C, 0xA9, 0x16, 0x00, + 0xB4, 0xE6, 0x10, 0x00, 0xB3, 0xE6, 0x10, 0x00, 0x46, 0x33, 0xE3, 0x5C, + 0x00, 0x2B, 0x00, 0xD0, 0x6D, 0xE7, 0x7C, 0x33, 0xE3, 0x5A, 0x7E, 0x22, + 0xA2, 0x5A, 0x9B, 0x18, 0x48, 0x22, 0xA2, 0x5A, 0x9B, 0x1A, 0x9F, 0x4A, + 0x9B, 0xB2, 0x93, 0x42, 0x00, 0xD9, 0x60, 0xE7, 0x46, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x26, 0xD1, 0x40, 0x33, 0xE3, 0x5A, 0x5D, 0x19, 0x2D, 0x01, + 0x2D, 0x09, 0x84, 0x23, 0xE3, 0x5A, 0xDB, 0x07, 0x00, 0xD4, 0x76, 0xE0, + 0x44, 0x23, 0xE3, 0x5A, 0x5B, 0x08, 0x5D, 0x19, 0x2D, 0x01, 0x2D, 0x09, + 0xA3, 0x6B, 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, + 0xE3, 0x6B, 0xE3, 0x66, 0x8E, 0x23, 0xE0, 0x5C, 0x8E, 0x4B, 0x98, 0x47, + 0x46, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xE3, 0x6E, 0x99, 0x46, 0x84, 0x23, + 0xE3, 0x5A, 0xDB, 0x07, 0x01, 0xD4, 0x47, 0x23, 0xE2, 0x54, 0x7C, 0x23, + 0xE2, 0x5A, 0x02, 0x33, 0xE3, 0x5A, 0xD2, 0x18, 0x48, 0x23, 0xE3, 0x5A, + 0xD2, 0x1A, 0x92, 0xB2, 0x53, 0x1E, 0x9B, 0xB2, 0x00, 0x2A, 0x0A, 0xD0, + 0xA1, 0x6E, 0x2F, 0x00, 0x81, 0x4A, 0x7F, 0x1A, 0x3F, 0x01, 0x3F, 0x09, + 0x01, 0x3B, 0x9B, 0xB2, 0x93, 0x42, 0xF8, 0xD1, 0x1D, 0xE7, 0x2F, 0x00, + 0x1B, 0xE7, 0x7D, 0x4B, 0x00, 0x22, 0x1A, 0x70, 0x7C, 0x4B, 0x1B, 0x68, + 0x00, 0x21, 0x1B, 0x02, 0x0A, 0xD5, 0x7B, 0x48, 0x7A, 0xF7, 0x2E, 0xFB, + 0x84, 0x23, 0xE2, 0x5A, 0x92, 0x07, 0xD2, 0x17, 0x4F, 0x3B, 0x9A, 0x43, + 0x3E, 0x32, 0x0A, 0xE0, 0x01, 0x20, 0xF8, 0xF7, 0x85, 0xFA, 0x01, 0x21, + 0xEF, 0xE7, 0x84, 0x23, 0xE3, 0x5A, 0x08, 0x22, 0x9B, 0x07, 0x00, 0xD4, + 0xB6, 0xE0, 0x01, 0x21, 0x04, 0x98, 0x70, 0x4B, 0x98, 0x47, 0x05, 0x9B, + 0x00, 0x2B, 0x00, 0xD1, 0x62, 0xB6, 0x07, 0xB0, 0x3C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x8F, 0x23, 0x00, 0x22, + 0xE2, 0x54, 0xE5, 0x64, 0x0B, 0x3B, 0xE3, 0x5A, 0x9A, 0x07, 0x02, 0xD5, + 0x62, 0x4A, 0x00, 0x21, 0x11, 0x70, 0xDB, 0x07, 0xE7, 0xD5, 0x70, 0x23, + 0x42, 0x46, 0xE2, 0x52, 0x1C, 0x36, 0x26, 0x65, 0xE1, 0xE7, 0xA3, 0x6B, + 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, 0xE3, 0x6B, + 0xE3, 0x66, 0x91, 0xE7, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, + 0x91, 0xE0, 0xA2, 0x6E, 0x53, 0x01, 0x9B, 0x1A, 0x9B, 0x00, 0x9B, 0x18, + 0x9A, 0x00, 0x9B, 0x18, 0x5B, 0x08, 0xB3, 0x42, 0xBF, 0xD9, 0x73, 0x08, + 0x9B, 0x46, 0x54, 0x49, 0x18, 0x00, 0xCE, 0xF7, 0x81, 0xFC, 0x01, 0x00, + 0x2B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x40, 0x01, 0x40, 0x1A, 0x80, 0x00, + 0x40, 0x18, 0x82, 0x00, 0x80, 0x18, 0x42, 0x46, 0x59, 0x46, 0x52, 0x1A, + 0x82, 0x18, 0x90, 0x46, 0x00, 0xD5, 0x7F, 0xE6, 0x42, 0x46, 0xA2, 0x60, + 0x22, 0x6E, 0x92, 0x19, 0x22, 0x61, 0x81, 0xE6, 0xE3, 0x6E, 0x99, 0x46, + 0xEB, 0x1B, 0x1B, 0x01, 0x1B, 0x09, 0x08, 0x22, 0x99, 0x45, 0xA0, 0xD9, + 0x00, 0x23, 0x03, 0x93, 0x1C, 0x26, 0x98, 0x46, 0x9F, 0xE6, 0xA3, 0x6B, + 0xA3, 0x66, 0x42, 0x23, 0xE2, 0x5A, 0x34, 0x33, 0xE2, 0x52, 0xE3, 0x6B, + 0xE3, 0x66, 0x46, 0x23, 0x01, 0x22, 0xE2, 0x54, 0x47, 0x23, 0x01, 0x22, + 0xE2, 0x54, 0x3F, 0xE6, 0x39, 0x4B, 0x23, 0x61, 0xA2, 0x6E, 0xA1, 0x6D, + 0x00, 0x20, 0x01, 0x90, 0x00, 0x93, 0x00, 0x23, 0x20, 0x00, 0xF7, 0xF7, + 0xC1, 0xFB, 0x35, 0x4B, 0xA2, 0x6E, 0x1A, 0x60, 0x84, 0x23, 0xE0, 0x5A, + 0xC3, 0x43, 0x9B, 0x07, 0x00, 0xD1, 0xC4, 0xE5, 0x7B, 0x1B, 0x1B, 0x01, + 0x1B, 0x09, 0x30, 0x4A, 0x93, 0x42, 0x13, 0xD8, 0xA1, 0x6E, 0x7E, 0x23, + 0xE2, 0x5A, 0x01, 0x32, 0x92, 0xB2, 0x2C, 0x4E, 0x4D, 0x19, 0x2D, 0x01, + 0x2D, 0x09, 0x03, 0x92, 0x01, 0x32, 0x92, 0xB2, 0x7B, 0x1B, 0x1B, 0x01, + 0x1B, 0x09, 0xB3, 0x42, 0xF4, 0xD9, 0x7E, 0x23, 0x03, 0x9A, 0xE2, 0x52, + 0xE7, 0x6D, 0x4A, 0x23, 0xE3, 0x5C, 0x01, 0x2B, 0x00, 0xD1, 0xD3, 0xE5, + 0x84, 0x23, 0xE3, 0x5A, 0x9B, 0x07, 0xAB, 0xD4, 0x14, 0x23, 0xA3, 0x75, + 0xA2, 0x6E, 0x53, 0x00, 0x9B, 0x18, 0x5B, 0x00, 0x99, 0x46, 0xEB, 0x1B, + 0x1B, 0x01, 0x1B, 0x09, 0x4B, 0x45, 0xA7, 0xD3, 0x12, 0x4B, 0x1B, 0x78, + 0x01, 0x33, 0xDB, 0xB2, 0x03, 0x2B, 0x00, 0xD9, 0x23, 0xE7, 0x0F, 0x4A, + 0x13, 0x70, 0x3E, 0x22, 0x3D, 0xE7, 0x46, 0x23, 0xE3, 0x5C, 0x00, 0x2B, + 0x00, 0xD1, 0x68, 0xE7, 0x00, 0x23, 0x47, 0x22, 0xA2, 0x5C, 0x00, 0x2A, + 0x00, 0xD0, 0xFF, 0xE5, 0x44, 0x23, 0xE2, 0x5A, 0x53, 0x01, 0x9B, 0x1A, + 0x9B, 0x00, 0x9B, 0x18, 0x9A, 0x00, 0x9B, 0x18, 0xF6, 0x18, 0x62, 0xE7, + 0xFE, 0x7F, 0x00, 0x00, 0xF1, 0x12, 0x0D, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x61, 0xE6, 0x10, 0x00, 0x58, 0x40, 0x34, 0x40, 0xF8, 0xD3, 0x10, 0x00, + 0x65, 0x17, 0x0D, 0x00, 0x71, 0x02, 0x00, 0x00, 0x42, 0x0E, 0x00, 0x00, + 0x64, 0xE6, 0x10, 0x00, 0xFE, 0xFF, 0xFF, 0x07, 0xF8, 0xB5, 0x04, 0x1E, + 0x32, 0xD0, 0xA1, 0xF7, 0x55, 0xFD, 0x05, 0x00, 0x8F, 0x23, 0xE6, 0x5C, + 0x00, 0x2E, 0x17, 0xD1, 0xE3, 0x6C, 0xA2, 0x6E, 0x94, 0x46, 0x63, 0x44, + 0x1B, 0x01, 0x1B, 0x09, 0xE3, 0x64, 0x7E, 0x22, 0xA3, 0x5A, 0x01, 0x33, + 0xA3, 0x52, 0xA3, 0x7D, 0x13, 0x49, 0x4F, 0x3A, 0x8A, 0x5C, 0x9B, 0x18, + 0xA3, 0x75, 0x8E, 0x23, 0xE0, 0x5C, 0x00, 0x22, 0x29, 0x00, 0xFF, 0xF7, + 0x01, 0xFD, 0xF8, 0xBD, 0x67, 0x68, 0xA1, 0xF7, 0x35, 0xFD, 0x03, 0x00, + 0x3A, 0x00, 0x31, 0x00, 0x0B, 0x48, 0x7A, 0xF7, 0x03, 0xFA, 0x8F, 0x23, + 0xE3, 0x5C, 0x00, 0x2B, 0xDA, 0xD0, 0x09, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xD3, 0xE7, 0x05, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xE3, 0xE7, 0xC0, 0x46, + 0x7C, 0x91, 0x0D, 0x00, 0x08, 0xD4, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x80, 0x46, 0x0F, 0x00, 0x16, 0x00, + 0x1D, 0x00, 0x02, 0x21, 0x10, 0x20, 0x78, 0xF7, 0xAD, 0xF9, 0x04, 0x00, + 0x04, 0x23, 0x03, 0x70, 0xFB, 0x33, 0x43, 0x70, 0xF2, 0x3B, 0x83, 0x70, + 0x43, 0x46, 0xC3, 0x70, 0x47, 0x60, 0x86, 0x60, 0xC5, 0x60, 0x1F, 0x4B, + 0x1B, 0x68, 0x02, 0x2B, 0x1A, 0xD0, 0x01, 0x2B, 0x30, 0xD1, 0x1D, 0x4B, + 0x1B, 0x68, 0x00, 0x2B, 0x0D, 0xD0, 0x0A, 0x25, 0x1B, 0x4F, 0x80, 0x26, + 0xB6, 0x02, 0xE8, 0x20, 0x7F, 0xF7, 0xA7, 0xF9, 0x3B, 0x68, 0x33, 0x42, + 0x25, 0xD1, 0x01, 0x3D, 0xED, 0xB2, 0x00, 0x2D, 0xF5, 0xD1, 0x00, 0x23, + 0x15, 0x4A, 0x10, 0x21, 0x20, 0x00, 0x81, 0xF7, 0x6D, 0xFC, 0x17, 0xE0, + 0x13, 0x48, 0x14, 0x49, 0x01, 0x22, 0x43, 0x58, 0x1A, 0x42, 0xFC, 0xD1, + 0x10, 0x4B, 0x12, 0x4A, 0x9C, 0x50, 0x12, 0x4A, 0x99, 0x58, 0x10, 0x20, + 0x01, 0x43, 0x99, 0x50, 0x81, 0x21, 0x49, 0x01, 0x5A, 0x58, 0x02, 0x43, + 0x5A, 0x50, 0x0B, 0x49, 0x5A, 0x58, 0x0F, 0x38, 0x02, 0x43, 0x5A, 0x50, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x0A, 0x4B, 0x80, 0x22, 0x92, 0x02, + 0x1A, 0x60, 0xD8, 0xE7, 0xA8, 0xE5, 0x10, 0x00, 0x28, 0x25, 0x16, 0x00, + 0x1C, 0x41, 0x04, 0x40, 0x19, 0x74, 0x08, 0x00, 0x00, 0x00, 0x07, 0x40, + 0x08, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x1C, 0x10, 0x00, 0x00, + 0x08, 0x41, 0x04, 0x40, 0x02, 0x4B, 0x80, 0x22, 0xD2, 0x04, 0x1A, 0x60, + 0x70, 0x47, 0xC0, 0x46, 0x00, 0x41, 0x04, 0x40, 0x10, 0xB5, 0x01, 0x00, + 0x13, 0x00, 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x00, 0xD4, 0x72, 0xB6, + 0x74, 0x46, 0x0E, 0x4A, 0x94, 0x42, 0x0F, 0xD0, 0x22, 0x00, 0x0D, 0x48, + 0x7A, 0xF7, 0x6A, 0xF9, 0x23, 0x00, 0x00, 0x22, 0x00, 0x21, 0x57, 0x20, + 0xFF, 0xF7, 0x7A, 0xFF, 0x09, 0x4B, 0x1B, 0x68, 0x01, 0x2B, 0x05, 0xD0, + 0x72, 0xB6, 0xFE, 0xE7, 0x07, 0x48, 0x7A, 0xF7, 0x5B, 0xF9, 0x10, 0xBD, + 0x06, 0x4B, 0x80, 0x22, 0xD2, 0x04, 0x1A, 0x60, 0xF4, 0xE7, 0xC0, 0x46, + 0xB9, 0x25, 0x0D, 0x00, 0x40, 0xD4, 0x10, 0x00, 0xA8, 0xE5, 0x10, 0x00, + 0x18, 0xD4, 0x10, 0x00, 0x00, 0x41, 0x04, 0x40, 0x70, 0xB5, 0x82, 0xB0, + 0x04, 0x00, 0x0D, 0x00, 0xEF, 0xF3, 0x10, 0x82, 0xD2, 0x07, 0x00, 0xD4, + 0x72, 0xB6, 0x76, 0x46, 0x00, 0x93, 0x33, 0x00, 0x2A, 0x00, 0x21, 0x00, + 0x09, 0x48, 0x7A, 0xF7, 0x39, 0xF9, 0x33, 0x00, 0x2A, 0x00, 0x21, 0x00, + 0x57, 0x20, 0xFF, 0xF7, 0x49, 0xFF, 0x06, 0x4B, 0x1B, 0x68, 0x01, 0x2B, + 0x01, 0xD0, 0x72, 0xB6, 0xFE, 0xE7, 0x04, 0x4B, 0x80, 0x22, 0xD2, 0x04, + 0x1A, 0x60, 0xF8, 0xE7, 0x64, 0xD4, 0x10, 0x00, 0xA8, 0xE5, 0x10, 0x00, + 0x00, 0x41, 0x04, 0x40, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x87, 0xB0, 0x65, 0x4B, 0x1E, 0x68, 0x07, 0x20, + 0xA1, 0xF7, 0xA4, 0xF9, 0x00, 0x28, 0x06, 0xD1, 0x07, 0xB0, 0x3C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, 0x5F, 0x4A, + 0xD5, 0x23, 0x5B, 0x00, 0xD3, 0x5C, 0xDC, 0x00, 0xE4, 0x1A, 0x64, 0x00, + 0x5C, 0x4B, 0xE3, 0x18, 0x1D, 0x88, 0xAD, 0xB2, 0xA1, 0xF7, 0x62, 0xF9, + 0x6B, 0x07, 0xE9, 0xD1, 0x3A, 0x23, 0xF3, 0x5C, 0x02, 0x2B, 0x52, 0xD0, + 0x57, 0x4B, 0xE3, 0x18, 0x1B, 0x88, 0x9B, 0xB2, 0x98, 0x46, 0x56, 0x4B, + 0xE2, 0x18, 0x13, 0x88, 0x5B, 0x06, 0x1B, 0x0F, 0x02, 0x2B, 0x08, 0xD0, + 0x10, 0x88, 0x40, 0x06, 0x00, 0x0F, 0x52, 0x4B, 0xDF, 0x6E, 0x00, 0x23, + 0x00, 0x22, 0x00, 0x21, 0xB8, 0x47, 0x39, 0x23, 0xF3, 0x5C, 0x00, 0x2B, + 0x01, 0xD0, 0xEB, 0x05, 0x53, 0xD4, 0x10, 0x23, 0xFF, 0x22, 0x00, 0x21, + 0x4B, 0x48, 0x77, 0xF7, 0xD5, 0xFF, 0x07, 0x00, 0x00, 0x23, 0x83, 0x73, + 0xFB, 0x1D, 0xBA, 0x1D, 0x02, 0x92, 0x05, 0xAA, 0x01, 0x92, 0x00, 0x22, + 0x00, 0x92, 0x3A, 0x00, 0x00, 0x21, 0x40, 0x46, 0xB0, 0xF7, 0x7C, 0xFC, + 0x43, 0x4B, 0x19, 0x88, 0x43, 0x4B, 0x1B, 0x88, 0x05, 0x9A, 0x92, 0x00, + 0x09, 0x04, 0x0B, 0x43, 0xD3, 0x1A, 0x6A, 0xD4, 0xDB, 0x03, 0x5B, 0x0C, + 0x7B, 0x81, 0x3F, 0x4B, 0x9C, 0x46, 0x64, 0x44, 0x23, 0x88, 0x3B, 0x73, + 0xED, 0x05, 0xED, 0x0F, 0x7D, 0x73, 0x38, 0x00, 0x77, 0xF7, 0xD8, 0xFF, + 0x3C, 0x23, 0xF3, 0x5C, 0x3B, 0x22, 0xB2, 0x5C, 0x9A, 0x42, 0x00, 0xD8, + 0x96, 0xE7, 0x01, 0x33, 0x3C, 0x22, 0xB3, 0x54, 0x92, 0xE7, 0x37, 0x33, + 0xF3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x8D, 0xE7, 0xEB, 0x05, 0x00, 0xD4, + 0x8A, 0xE7, 0x07, 0x20, 0xA1, 0xF7, 0x2A, 0xF9, 0x00, 0x28, 0x00, 0xD1, + 0x84, 0xE7, 0x25, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, + 0x9B, 0x1A, 0x5B, 0x00, 0x22, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, + 0xA1, 0xF7, 0xEE, 0xF8, 0x76, 0xE7, 0x07, 0x20, 0xA1, 0xF7, 0x16, 0xF9, + 0x00, 0x28, 0xA6, 0xD0, 0x1B, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, + 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x19, 0x4A, 0x9A, 0x18, 0x12, 0x88, + 0x52, 0x07, 0x02, 0xD0, 0xA1, 0xF7, 0xDA, 0xF8, 0x97, 0xE7, 0x1D, 0x4A, + 0x9A, 0x18, 0x11, 0x88, 0x8A, 0xB2, 0x91, 0x46, 0x1B, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x1B, 0x88, 0xDB, 0x08, 0x9B, 0x46, 0xFF, 0x23, 0x5A, 0x46, + 0x1A, 0x40, 0x92, 0x46, 0x13, 0x00, 0x10, 0x33, 0xFF, 0x22, 0x00, 0x21, + 0x0F, 0x48, 0x77, 0xF7, 0x5D, 0xFF, 0x07, 0x00, 0x5B, 0x46, 0x83, 0x73, + 0x12, 0x49, 0x49, 0x44, 0x0F, 0x30, 0x52, 0x46, 0xCE, 0xF7, 0x4C, 0xFE, + 0xA1, 0xF7, 0xB8, 0xF8, 0x7E, 0xE7, 0x80, 0x22, 0x52, 0x05, 0x94, 0x46, + 0x63, 0x44, 0x8F, 0xE7, 0x18, 0x27, 0x16, 0x00, 0x20, 0xA3, 0x16, 0x00, + 0x92, 0x69, 0x61, 0x40, 0x9C, 0x69, 0x61, 0x40, 0x94, 0x69, 0x61, 0x40, + 0x28, 0x19, 0x16, 0x00, 0x01, 0x05, 0x00, 0x00, 0xFA, 0x67, 0x61, 0x40, + 0xF8, 0x67, 0x61, 0x40, 0x98, 0x69, 0x61, 0x40, 0x9A, 0x69, 0x61, 0x40, + 0x96, 0x69, 0x61, 0x40, 0x00, 0x00, 0x61, 0x40, 0x70, 0xB5, 0xA1, 0xF7, + 0x5F, 0xFB, 0x05, 0x00, 0x0F, 0x4B, 0x1C, 0x68, 0x00, 0x2C, 0x06, 0xD1, + 0x0E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x70, 0xBD, 0xFF, 0xF7, 0x03, 0xFF, 0x01, 0x21, 0x20, 0x00, 0xCC, 0xF7, + 0x81, 0xFB, 0x3A, 0x23, 0xE3, 0x5C, 0x02, 0x2B, 0x06, 0xD0, 0x07, 0x4B, + 0x1B, 0x7D, 0xA3, 0x75, 0x65, 0x60, 0x06, 0x4B, 0x98, 0x47, 0xED, 0xE7, + 0x05, 0x4B, 0x98, 0x47, 0xEA, 0xE7, 0xC0, 0x46, 0x18, 0x27, 0x16, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0xE5, 0xC1, 0x0A, 0x00, + 0x99, 0xC1, 0x0A, 0x00, 0x70, 0xB5, 0x0D, 0x00, 0x14, 0x00, 0x07, 0x29, + 0x06, 0xD0, 0x11, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, + 0x28, 0x00, 0xB0, 0x47, 0x01, 0x2C, 0x0E, 0xD9, 0x04, 0x2C, 0x0F, 0xD1, + 0x0C, 0x4B, 0x1C, 0x68, 0x01, 0x21, 0x20, 0x00, 0xCC, 0xF7, 0x52, 0xFB, + 0x3A, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x20, 0x00, 0x08, 0x4B, 0x98, 0x47, + 0x01, 0xE0, 0xFF, 0xF7, 0xB3, 0xFF, 0x70, 0xBD, 0x03, 0x4B, 0xDE, 0x6E, + 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0x28, 0x00, 0xB0, 0x47, 0xF6, 0xE7, + 0x28, 0x19, 0x16, 0x00, 0x18, 0x27, 0x16, 0x00, 0xD1, 0xC2, 0x0A, 0x00, + 0x10, 0xB5, 0x01, 0x28, 0x00, 0xD0, 0x10, 0xBD, 0x00, 0x29, 0xFC, 0xD0, + 0x04, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0xF8, 0xD0, 0x03, 0x4A, 0xDA, 0x61, + 0x03, 0x48, 0x79, 0xF7, 0xCB, 0xFF, 0xF2, 0xE7, 0x24, 0x27, 0x16, 0x00, + 0x85, 0x04, 0x10, 0x00, 0x94, 0xD4, 0x10, 0x00, 0x70, 0xB5, 0x1E, 0x4B, + 0x1E, 0x4A, 0x13, 0x60, 0x80, 0x22, 0x52, 0x00, 0x9C, 0x5C, 0x1D, 0x4B, + 0xE3, 0x18, 0x1B, 0x01, 0x1A, 0x88, 0xD2, 0x08, 0x06, 0x21, 0x11, 0x42, + 0x08, 0xD1, 0x19, 0x88, 0x89, 0x06, 0x49, 0x0F, 0x18, 0x4B, 0xDD, 0x6E, + 0x00, 0x23, 0x00, 0x22, 0x20, 0x00, 0xA8, 0x47, 0x13, 0x4B, 0x1A, 0x68, + 0x81, 0x23, 0x5B, 0x00, 0xD3, 0x5C, 0x00, 0x2B, 0x05, 0xD1, 0x12, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x0D, 0x4B, + 0x1B, 0x68, 0x22, 0x01, 0x9B, 0x18, 0x1B, 0x7B, 0x00, 0x2B, 0x05, 0xD1, + 0x0B, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x06, 0x4B, 0x1A, 0x68, 0x23, 0x01, 0xD3, 0x18, 0x5D, 0x68, 0x00, 0x2D, + 0x03, 0xD0, 0x99, 0x68, 0x18, 0x68, 0x02, 0x22, 0xA8, 0x47, 0x70, 0xBD, + 0x80, 0x2A, 0x16, 0x00, 0x0C, 0xE7, 0x10, 0x00, 0x00, 0x10, 0x06, 0x04, + 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0xFF, 0x23, 0x9B, 0x00, 0x98, 0x42, + 0x08, 0xD9, 0x05, 0x4B, 0x59, 0x80, 0x00, 0x24, 0x21, 0x00, 0x04, 0x48, + 0x79, 0xF7, 0x72, 0xFF, 0x20, 0x00, 0x10, 0xBD, 0x11, 0x24, 0xF7, 0xE7, + 0x54, 0x2A, 0x16, 0x00, 0xA0, 0xD4, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, + 0x0D, 0x00, 0x81, 0x88, 0x00, 0x88, 0xFF, 0xF7, 0xE5, 0xFF, 0x01, 0x1E, + 0x04, 0xD0, 0x28, 0x00, 0xFC, 0xF7, 0x90, 0xFE, 0x00, 0x20, 0x70, 0xBD, + 0xE1, 0x88, 0xA0, 0x78, 0xCB, 0xF7, 0xB6, 0xFE, 0x01, 0x00, 0xF4, 0xE7, + 0xF0, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0x89, 0xB0, 0x06, 0x00, + 0x0A, 0x00, 0x04, 0x23, 0x00, 0x21, 0x26, 0x48, 0x77, 0xF7, 0x46, 0xFE, + 0x80, 0x46, 0x00, 0x23, 0x43, 0x80, 0xB1, 0x79, 0x23, 0x48, 0x79, 0xF7, + 0x43, 0xFF, 0xB3, 0x79, 0x00, 0x2B, 0x2A, 0xD1, 0x60, 0x24, 0x6B, 0x46, + 0xDD, 0x1D, 0x16, 0x23, 0x99, 0x46, 0x1F, 0x4F, 0x07, 0xE0, 0x03, 0x23, + 0x42, 0x46, 0x13, 0x70, 0x24, 0xE0, 0x01, 0x34, 0xE4, 0xB2, 0x68, 0x2C, + 0x20, 0xD0, 0x4B, 0x46, 0x2B, 0x70, 0x02, 0xAA, 0x29, 0x00, 0x20, 0x00, + 0x3B, 0x68, 0x98, 0x47, 0x00, 0x28, 0xF2, 0xD1, 0x06, 0x22, 0x02, 0xA9, + 0x30, 0x00, 0xCE, 0xF7, 0xF3, 0xFC, 0x00, 0x28, 0xEB, 0xD1, 0x12, 0x4B, + 0x9B, 0x68, 0x20, 0x00, 0x98, 0x47, 0x00, 0x28, 0xE1, 0xD1, 0x43, 0x46, + 0x5B, 0x88, 0x01, 0x33, 0x42, 0x46, 0x53, 0x80, 0x04, 0xE0, 0x01, 0x2B, + 0x0B, 0xD0, 0x12, 0x23, 0x42, 0x46, 0x13, 0x70, 0x40, 0x46, 0xC9, 0xF7, + 0x69, 0xFC, 0x00, 0x20, 0x09, 0xB0, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, + 0xF0, 0xBD, 0x43, 0x46, 0x5B, 0x88, 0x08, 0x33, 0x42, 0x46, 0x53, 0x80, + 0xF0, 0xE7, 0xC0, 0x46, 0x01, 0x11, 0x00, 0x00, 0xAC, 0xD4, 0x10, 0x00, + 0x94, 0x92, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, 0x57, 0x46, 0x4E, 0x46, + 0x45, 0x46, 0xE0, 0xB5, 0x85, 0xB0, 0x0C, 0x00, 0x16, 0x00, 0x17, 0x0A, + 0xBA, 0x00, 0x91, 0x4B, 0xD5, 0x58, 0x50, 0x23, 0xEB, 0x5C, 0x00, 0x2B, + 0x00, 0xD0, 0xD6, 0xE0, 0x4B, 0x78, 0x5B, 0x08, 0x98, 0x46, 0x7F, 0x2B, + 0x11, 0xD0, 0x01, 0x93, 0x00, 0x22, 0x19, 0x00, 0x8A, 0x48, 0x79, 0xF7, + 0xDD, 0xFE, 0x43, 0x46, 0x7E, 0x2B, 0x56, 0xD1, 0x36, 0x3B, 0xEB, 0x5C, + 0x00, 0x2B, 0x43, 0xD0, 0x00, 0x23, 0x9B, 0x46, 0x7E, 0x33, 0x01, 0x93, + 0x0C, 0xE0, 0x8B, 0x78, 0x9B, 0x46, 0x1A, 0x00, 0x7F, 0x21, 0x81, 0x48, + 0x79, 0xF7, 0xCA, 0xFE, 0x7F, 0x23, 0x01, 0x93, 0x48, 0x23, 0xEB, 0x5C, + 0x00, 0x2B, 0x43, 0xD0, 0xFB, 0xB2, 0x99, 0x46, 0x61, 0x78, 0x4F, 0x08, + 0x59, 0x29, 0x00, 0xD8, 0xE0, 0xE0, 0x7F, 0x2F, 0x05, 0xD1, 0xA3, 0x78, + 0x9A, 0x46, 0x0D, 0x2B, 0x55, 0xD8, 0x0B, 0x2B, 0x55, 0xD8, 0x07, 0x23, + 0x02, 0xAA, 0x94, 0x46, 0x63, 0x44, 0x9A, 0x46, 0x23, 0x78, 0x52, 0x46, + 0x13, 0x70, 0x14, 0x23, 0x32, 0x00, 0x31, 0x00, 0x70, 0x48, 0x77, 0xF7, + 0xA3, 0xFD, 0x07, 0x00, 0x61, 0x1C, 0x52, 0x46, 0x82, 0xF7, 0x30, 0xF9, + 0x02, 0x28, 0x75, 0xD0, 0x00, 0x28, 0x00, 0xD1, 0xA9, 0xE0, 0x04, 0x28, + 0x00, 0xD0, 0x99, 0xE0, 0xFB, 0x22, 0x43, 0x46, 0x15, 0x3B, 0x13, 0x42, + 0x00, 0xD1, 0xB1, 0xE0, 0x19, 0x24, 0x6F, 0xE0, 0x36, 0x33, 0xEB, 0x5C, + 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0xF8, 0xB2, 0x0C, 0x22, 0x7E, 0x21, + 0x9F, 0xF7, 0xC7, 0xFA, 0x00, 0x23, 0x9B, 0x46, 0x7E, 0x33, 0x01, 0x93, + 0xBE, 0xE7, 0x00, 0x23, 0x9B, 0x46, 0xB7, 0xE7, 0x59, 0x46, 0x40, 0x46, + 0x82, 0xF7, 0x96, 0xF8, 0x00, 0x28, 0xB5, 0xD1, 0x43, 0x46, 0x7F, 0x2B, + 0x0A, 0xD0, 0x36, 0x23, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, + 0xF8, 0xB2, 0x0C, 0x22, 0x41, 0x46, 0x9F, 0xF7, 0xAC, 0xFA, 0x5A, 0xE0, + 0x49, 0x3B, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, 0xDB, 0xB2, 0xF8, 0xB2, + 0x0C, 0x22, 0x59, 0x46, 0x9F, 0xF7, 0xB0, 0xFA, 0x4F, 0xE0, 0x15, 0x2B, + 0xA9, 0xD1, 0x4B, 0x46, 0x9B, 0x00, 0x48, 0x4A, 0x9B, 0x58, 0xB2, 0x22, + 0x92, 0x00, 0x9A, 0x5C, 0x00, 0x2A, 0xA0, 0xD0, 0xCA, 0x07, 0x9E, 0xD5, + 0x46, 0x4A, 0x9A, 0x5C, 0xBA, 0x42, 0x14, 0xD1, 0x7F, 0x2F, 0x98, 0xD1, + 0x44, 0x4A, 0x9B, 0x5C, 0x53, 0x45, 0x94, 0xD0, 0x4B, 0x46, 0x1B, 0x02, + 0x01, 0x20, 0x18, 0x43, 0x78, 0xF7, 0x16, 0xF9, 0x00, 0x28, 0x30, 0xD0, + 0x01, 0x23, 0x2A, 0x22, 0x51, 0x46, 0x48, 0x46, 0x9F, 0xF7, 0x8A, 0xFA, + 0x29, 0xE0, 0x4B, 0x46, 0x1B, 0x02, 0x01, 0x20, 0x18, 0x43, 0x78, 0xF7, + 0x07, 0xF9, 0x00, 0x28, 0x21, 0xD0, 0x7F, 0x2F, 0xEE, 0xD0, 0x01, 0x23, + 0x2A, 0x22, 0x39, 0x00, 0x48, 0x46, 0x9F, 0xF7, 0x6A, 0xFA, 0x18, 0xE0, + 0x33, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x01, 0x99, 0x08, 0x00, + 0xA0, 0x47, 0x1E, 0x24, 0x38, 0x00, 0x0C, 0x38, 0x77, 0xF7, 0x69, 0xFD, + 0x43, 0x46, 0x7F, 0x2B, 0x1C, 0xD0, 0x36, 0x23, 0xEB, 0x5C, 0x5A, 0x42, + 0x53, 0x41, 0xDB, 0xB2, 0x22, 0x00, 0x41, 0x46, 0x48, 0x46, 0x9F, 0xF7, + 0x50, 0xFA, 0x8A, 0x23, 0xFF, 0x33, 0xEB, 0x5C, 0x00, 0x2B, 0x03, 0xD0, + 0x25, 0x4B, 0xEB, 0x5C, 0x00, 0x2B, 0x18, 0xD1, 0x00, 0x20, 0x05, 0xB0, + 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, + 0x1E, 0x24, 0xDB, 0xE7, 0x49, 0x3B, 0xEB, 0x5C, 0x5A, 0x42, 0x53, 0x41, + 0xDB, 0xB2, 0x22, 0x00, 0x59, 0x46, 0x48, 0x46, 0x9F, 0xF7, 0x42, 0xFA, + 0xE1, 0xE7, 0x38, 0x00, 0x77, 0xF7, 0x16, 0xFD, 0xDD, 0xE7, 0xAA, 0x8D, + 0xEB, 0x8D, 0xD2, 0x1A, 0x31, 0x00, 0x16, 0x48, 0x77, 0xF7, 0x24, 0xFC, + 0xAA, 0x8D, 0x31, 0x00, 0x14, 0x48, 0x77, 0xF7, 0x1F, 0xFC, 0xD9, 0xE7, + 0x38, 0x00, 0x0C, 0x38, 0x77, 0xF7, 0x29, 0xFD, 0x1A, 0x24, 0xC0, 0xE7, + 0x12, 0x2F, 0x00, 0xD8, 0x23, 0xE7, 0x3A, 0x00, 0x13, 0x3A, 0xD2, 0xB2, + 0x01, 0x23, 0x93, 0x40, 0x0C, 0x4A, 0x13, 0x42, 0x00, 0xD1, 0x1A, 0xE7, + 0x00, 0x23, 0x9A, 0x46, 0x6D, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0xBC, 0xD4, 0x10, 0x00, 0x01, 0x06, 0x00, 0x00, 0xC6, 0x02, 0x00, 0x00, + 0xC7, 0x02, 0x00, 0x00, 0x28, 0x19, 0x16, 0x00, 0xAF, 0x02, 0x00, 0x00, + 0x09, 0x06, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x31, 0x00, 0x00, 0x03, + 0x30, 0xB5, 0x87, 0xB0, 0x1E, 0x4C, 0x23, 0x7B, 0x03, 0x22, 0x13, 0x43, + 0x23, 0x73, 0x03, 0xAD, 0x21, 0x00, 0x27, 0x31, 0x03, 0x22, 0x28, 0x00, + 0xCE, 0xF7, 0x9E, 0xFB, 0xE3, 0x89, 0xAB, 0x80, 0x23, 0x8A, 0xEB, 0x80, + 0xA3, 0x7C, 0x2B, 0x72, 0x23, 0x7F, 0x6B, 0x72, 0x28, 0x00, 0xA2, 0xF7, + 0x3F, 0xFB, 0x23, 0x00, 0x3C, 0x33, 0x00, 0x24, 0x1A, 0x78, 0x00, 0x2A, + 0x06, 0xD0, 0x01, 0x34, 0xE4, 0xB2, 0x09, 0x33, 0x07, 0x2C, 0xF7, 0xD1, + 0x07, 0xB0, 0x30, 0xBD, 0x06, 0x2C, 0xFB, 0xD8, 0x01, 0xA8, 0x0B, 0x4B, + 0x1A, 0x8B, 0x02, 0x80, 0x5A, 0x8B, 0x42, 0x80, 0x5B, 0x7F, 0x03, 0x71, + 0x44, 0x71, 0x08, 0x4A, 0xD0, 0x23, 0xD3, 0x58, 0x98, 0x47, 0x00, 0x28, + 0xEC, 0xD1, 0xE3, 0x00, 0x1B, 0x19, 0x03, 0x4C, 0xE4, 0x18, 0x3C, 0x34, + 0x02, 0x23, 0x23, 0x70, 0xE4, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x10, 0xB5, 0x07, 0x4C, 0xA0, 0x47, 0x86, 0xF7, + 0x97, 0xF8, 0x00, 0x28, 0x01, 0xD1, 0x00, 0x20, 0x10, 0xBD, 0xFF, 0xF7, + 0xB1, 0xFF, 0x03, 0x48, 0x79, 0xF7, 0x66, 0xFD, 0xF7, 0xE7, 0xC0, 0x46, + 0xDD, 0x90, 0x0A, 0x00, 0xCC, 0xD4, 0x10, 0x00, 0x00, 0xB5, 0x83, 0xB0, + 0x01, 0xAA, 0x01, 0x23, 0x0B, 0x40, 0x30, 0x21, 0x0B, 0x43, 0x13, 0x70, + 0x11, 0x00, 0x9F, 0xF7, 0x41, 0xF9, 0x03, 0xB0, 0x00, 0xBD, 0x00, 0x00, + 0x30, 0xB5, 0x83, 0xB0, 0x04, 0x00, 0x00, 0x0A, 0x82, 0x00, 0x0E, 0x4B, + 0xD2, 0x58, 0x3C, 0x23, 0xD3, 0x5C, 0x02, 0x2B, 0x07, 0xD0, 0x96, 0x22, + 0x52, 0x00, 0x21, 0x00, 0x0A, 0x48, 0x77, 0xF7, 0x7D, 0xFB, 0x03, 0xB0, + 0x30, 0xBD, 0x6B, 0x46, 0x9D, 0x1D, 0xC0, 0xB2, 0x00, 0x22, 0x29, 0x00, + 0x89, 0xF7, 0xEE, 0xFA, 0x28, 0x88, 0x79, 0xF7, 0x95, 0xFD, 0x40, 0x00, + 0x02, 0x00, 0x2D, 0x32, 0xFF, 0x32, 0xEA, 0xE7, 0x64, 0xA2, 0x16, 0x00, + 0x05, 0x06, 0x00, 0x00, 0x10, 0xB5, 0x04, 0x00, 0x00, 0x0A, 0x82, 0x00, + 0x07, 0x4B, 0xD2, 0x58, 0x36, 0x23, 0xD1, 0x5C, 0xC0, 0xB2, 0xFF, 0xF7, + 0xC1, 0xFF, 0x20, 0x00, 0xFF, 0xF7, 0xCC, 0xFF, 0x32, 0x21, 0x20, 0x00, + 0x77, 0xF7, 0x8C, 0xFF, 0x10, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0x70, 0xB5, 0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x17, 0x4B, 0xD6, 0x58, + 0x20, 0x00, 0x77, 0xF7, 0xDF, 0xFF, 0x03, 0x00, 0x19, 0x28, 0x1D, 0xD8, + 0x01, 0x38, 0xC0, 0xB2, 0x14, 0x28, 0x06, 0xD8, 0x02, 0x20, 0x01, 0x2B, + 0x15, 0xD1, 0x3C, 0x23, 0xF3, 0x5C, 0x02, 0x2B, 0x16, 0xD0, 0x08, 0x23, + 0x14, 0x22, 0x00, 0x21, 0x0D, 0x48, 0x77, 0xF7, 0xF5, 0xFB, 0x0C, 0x23, + 0x03, 0x70, 0x80, 0x35, 0x45, 0x80, 0x00, 0x23, 0xC3, 0x80, 0x3C, 0x33, + 0xF3, 0x5C, 0x03, 0x71, 0xC9, 0xF7, 0x4A, 0xFA, 0x00, 0x20, 0x70, 0xBD, + 0x02, 0x20, 0x66, 0x2B, 0xFB, 0xD1, 0xE4, 0xE7, 0x20, 0x00, 0xFF, 0xF7, + 0xB9, 0xFF, 0x00, 0x20, 0xF5, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0x03, 0x11, 0x00, 0x00, 0x70, 0xB5, 0x82, 0xB0, 0x14, 0x00, 0x15, 0x0A, + 0xAA, 0x00, 0x24, 0x4B, 0xD6, 0x58, 0x20, 0x00, 0x77, 0xF7, 0xA6, 0xFF, + 0x01, 0x28, 0x16, 0xD0, 0x04, 0xD9, 0x16, 0x38, 0xC3, 0xB2, 0x02, 0x20, + 0x03, 0x2B, 0x0E, 0xD8, 0x06, 0x23, 0x1C, 0x22, 0x00, 0x21, 0x1D, 0x48, + 0x77, 0xF7, 0xC2, 0xFB, 0x02, 0x23, 0x03, 0x70, 0x80, 0x35, 0x45, 0x80, + 0x00, 0x23, 0x83, 0x80, 0xC9, 0xF7, 0x1A, 0xFA, 0x00, 0x20, 0x02, 0xB0, + 0x70, 0xBD, 0x36, 0x23, 0xF3, 0x5C, 0x00, 0x2B, 0x0E, 0xD1, 0x01, 0xA9, + 0x0A, 0x33, 0x0B, 0x70, 0xE8, 0xB2, 0x9F, 0xF7, 0x9D, 0xF8, 0x20, 0x00, + 0xFF, 0xF7, 0x5C, 0xFF, 0x06, 0x21, 0x20, 0x00, 0x77, 0xF7, 0x1C, 0xFF, + 0x00, 0x20, 0xEA, 0xE7, 0x06, 0x23, 0x1C, 0x22, 0x00, 0x21, 0x0B, 0x48, + 0x77, 0xF7, 0x9E, 0xFB, 0x04, 0x00, 0x00, 0x23, 0x03, 0x70, 0x2B, 0x00, + 0x80, 0x33, 0x43, 0x80, 0xE8, 0xB2, 0xA8, 0xF7, 0x3D, 0xFF, 0x00, 0x04, + 0x40, 0x0C, 0xA0, 0x80, 0x20, 0x00, 0xC9, 0xF7, 0xEF, 0xF9, 0x00, 0x20, + 0xD3, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, + 0x70, 0xB5, 0x14, 0x00, 0x13, 0x0A, 0x9B, 0x00, 0x14, 0x4A, 0x9D, 0x58, + 0x20, 0x00, 0x77, 0xF7, 0x55, 0xFF, 0x00, 0x28, 0x1E, 0xD0, 0x16, 0x38, + 0xC3, 0xB2, 0x00, 0x20, 0x03, 0x2B, 0x13, 0xD9, 0x43, 0x23, 0x01, 0x22, + 0xEA, 0x54, 0x07, 0x3B, 0xEB, 0x5C, 0x02, 0x2B, 0x0D, 0xD0, 0x37, 0x23, + 0xE9, 0x5C, 0x20, 0x00, 0x8B, 0xF7, 0x32, 0xF8, 0x00, 0x28, 0x0D, 0xD0, + 0x37, 0x23, 0xE9, 0x5C, 0x20, 0x00, 0x90, 0xF7, 0x57, 0xFF, 0x00, 0x20, + 0x70, 0xBD, 0x20, 0x00, 0x89, 0xF7, 0xFE, 0xFD, 0x02, 0x20, 0xF9, 0xE7, + 0x00, 0x20, 0xF7, 0xE7, 0x02, 0x20, 0xF5, 0xE7, 0x64, 0xA2, 0x16, 0x00, + 0x10, 0xB5, 0x80, 0x00, 0x0F, 0x4B, 0xC4, 0x58, 0x8E, 0xF7, 0xD4, 0xFC, + 0x03, 0x00, 0x01, 0x20, 0x0B, 0x2B, 0x13, 0xD9, 0x11, 0x2B, 0x06, 0xD8, + 0x20, 0x00, 0x54, 0x30, 0x00, 0x21, 0x9E, 0xF7, 0x53, 0xFF, 0x00, 0x28, + 0x0B, 0xD1, 0x20, 0x00, 0x54, 0x30, 0x01, 0x21, 0x9E, 0xF7, 0x4C, 0xFF, + 0x43, 0x42, 0x58, 0x41, 0x40, 0x42, 0x03, 0x23, 0x98, 0x43, 0x05, 0x30, + 0x10, 0xBD, 0x03, 0x20, 0xFC, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0x02, 0x00, 0x00, 0x29, 0x16, 0xD1, 0x01, 0x23, 0x03, 0x40, 0x58, 0x42, + 0x43, 0x41, 0x58, 0x42, 0x20, 0x4B, 0x18, 0x40, 0x20, 0x4B, 0x9C, 0x46, + 0x60, 0x44, 0x06, 0x23, 0x1A, 0x40, 0x04, 0x2A, 0x02, 0xD0, 0x02, 0x2A, + 0x03, 0xD0, 0x70, 0x47, 0x80, 0x04, 0x80, 0x0C, 0xFB, 0xE7, 0x1B, 0x4B, + 0x18, 0x40, 0xF8, 0xE7, 0x18, 0x23, 0x19, 0x00, 0x01, 0x40, 0x03, 0x42, + 0x21, 0xD0, 0x08, 0x29, 0x0E, 0xD0, 0x60, 0x23, 0x03, 0x40, 0x40, 0x2B, + 0x21, 0xD0, 0x20, 0x3B, 0x18, 0x00, 0x43, 0x1E, 0x98, 0x41, 0x40, 0x42, + 0x12, 0x4B, 0x18, 0x40, 0x12, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xE2, 0xE7, + 0x48, 0x33, 0x03, 0x40, 0x60, 0x2B, 0x0E, 0xD0, 0x40, 0x2B, 0x0E, 0xD0, + 0x20, 0x3B, 0x18, 0x00, 0x43, 0x1E, 0x98, 0x41, 0x40, 0x42, 0x0C, 0x4B, + 0x18, 0x40, 0x0C, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xD1, 0xE7, 0x0B, 0x48, + 0xCF, 0xE7, 0x0B, 0x48, 0xCD, 0xE7, 0x0B, 0x48, 0xCB, 0xE7, 0x0B, 0x48, + 0xC9, 0xE7, 0xC0, 0x46, 0xF0, 0x77, 0xFF, 0xFF, 0x1E, 0xFF, 0x00, 0x00, + 0xFF, 0x33, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0x08, 0x33, 0x00, 0x00, + 0x00, 0xEF, 0xFF, 0xFF, 0x0C, 0x33, 0x00, 0x00, 0x0E, 0x33, 0x00, 0x00, + 0x0C, 0x22, 0x00, 0x00, 0x0C, 0x32, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, + 0x70, 0xB5, 0x05, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x77, 0xF7, 0xA4, 0xFE, + 0x03, 0x00, 0x01, 0x28, 0x0A, 0xD0, 0x00, 0x20, 0x01, 0x2B, 0x06, 0xD9, + 0x16, 0x3B, 0xDB, 0xB2, 0x03, 0x30, 0x98, 0x42, 0x80, 0x41, 0x40, 0x42, + 0x40, 0x00, 0x70, 0xBD, 0x24, 0x0A, 0xA2, 0x00, 0x0F, 0x4B, 0xD6, 0x58, + 0x3F, 0x23, 0xF1, 0x5C, 0x68, 0x78, 0xFF, 0xF7, 0x83, 0xFF, 0x70, 0x85, + 0xE4, 0xB2, 0x20, 0x00, 0xFF, 0xF7, 0x5A, 0xFF, 0x9E, 0xF7, 0x5C, 0xFF, + 0x71, 0x8D, 0x01, 0x22, 0x9E, 0xF7, 0x08, 0xFD, 0x31, 0x8C, 0x01, 0x22, + 0x9E, 0xF7, 0x04, 0xFD, 0x01, 0x00, 0x33, 0x8C, 0x00, 0x20, 0x8B, 0x42, + 0xE1, 0xD0, 0x20, 0x00, 0xA8, 0xF7, 0xA2, 0xFF, 0x00, 0x20, 0xDC, 0xE7, + 0x64, 0xA2, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x05, 0x00, + 0x08, 0x00, 0x0E, 0x0A, 0xB2, 0x00, 0x29, 0x4B, 0xD4, 0x58, 0x77, 0xF7, + 0x67, 0xFE, 0x00, 0x28, 0x03, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, + 0x03, 0xD8, 0x00, 0x20, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x2B, 0x78, + 0x01, 0x27, 0x3B, 0x40, 0x39, 0x22, 0xA3, 0x54, 0x54, 0x23, 0x98, 0x46, + 0xA0, 0x44, 0x69, 0x1C, 0x31, 0x3A, 0x40, 0x46, 0xCE, 0xF7, 0x72, 0xF9, + 0x57, 0x22, 0xA3, 0x5C, 0x04, 0x21, 0x8B, 0x43, 0xA3, 0x54, 0x02, 0x32, + 0xA3, 0x5C, 0x3E, 0x31, 0x8B, 0x43, 0xA3, 0x54, 0x29, 0x78, 0x39, 0x40, + 0xF0, 0xB2, 0x9F, 0xF7, 0x2D, 0xF9, 0x09, 0x21, 0x40, 0x46, 0x9E, 0xF7, + 0x73, 0xFE, 0x00, 0x28, 0x0D, 0xD1, 0x85, 0xF7, 0x8F, 0xFE, 0x00, 0x28, + 0x02, 0xD0, 0x4F, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xBC, 0x22, 0x52, 0x00, + 0xA3, 0x5C, 0x01, 0x21, 0x0B, 0x43, 0xA3, 0x54, 0xCB, 0xE7, 0x3A, 0x21, + 0x40, 0x46, 0x9E, 0xF7, 0x5F, 0xFE, 0x02, 0x00, 0x53, 0x1E, 0x9A, 0x41, + 0x4F, 0x23, 0xE2, 0x54, 0x00, 0x23, 0x00, 0x28, 0x04, 0xD0, 0x05, 0x4A, + 0x05, 0x4B, 0xD3, 0x5C, 0x5B, 0x07, 0xDB, 0x0F, 0x4F, 0x22, 0xA3, 0x54, + 0xDD, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x7C, 0x1E, 0x16, 0x00, + 0xA2, 0x02, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x06, 0x00, + 0x0D, 0x00, 0x0B, 0x0A, 0x98, 0x46, 0x9A, 0x00, 0x32, 0x4B, 0xD4, 0x58, + 0x27, 0x00, 0x54, 0x37, 0x41, 0x1C, 0x08, 0x22, 0x38, 0x00, 0xCE, 0xF7, + 0x23, 0xF9, 0x57, 0x22, 0xA3, 0x5C, 0x04, 0x21, 0x8B, 0x43, 0xA3, 0x54, + 0x02, 0x32, 0xA3, 0x5C, 0x3E, 0x31, 0x8B, 0x43, 0xA3, 0x54, 0x28, 0x00, + 0x77, 0xF7, 0xF4, 0xFD, 0x14, 0x28, 0x13, 0xD0, 0x07, 0xD9, 0x16, 0x38, + 0xC0, 0xB2, 0x03, 0x28, 0x05, 0xD8, 0x00, 0x20, 0x04, 0xBC, 0x90, 0x46, + 0xF0, 0xBD, 0x00, 0x28, 0xF9, 0xD0, 0x28, 0x00, 0x77, 0xF7, 0xE4, 0xFD, + 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x7D, 0xF7, 0xB1, 0xF8, 0xF0, 0xE7, + 0x29, 0x00, 0x1D, 0x48, 0x77, 0xF7, 0xBC, 0xF9, 0x32, 0x78, 0x01, 0x23, + 0x13, 0x40, 0x3A, 0x22, 0xA3, 0x54, 0x09, 0x21, 0x38, 0x00, 0x9E, 0xF7, + 0x07, 0xFE, 0x00, 0x28, 0x11, 0xD1, 0xBC, 0x22, 0x52, 0x00, 0xA3, 0x5C, + 0x01, 0x21, 0x0B, 0x43, 0xA3, 0x54, 0x3F, 0x21, 0x38, 0x00, 0x9E, 0xF7, + 0xFB, 0xFD, 0x00, 0x28, 0x19, 0xD0, 0x01, 0x22, 0x41, 0x46, 0x28, 0x00, + 0x91, 0xF7, 0xE6, 0xF8, 0xCF, 0xE7, 0x3A, 0x21, 0x38, 0x00, 0x9E, 0xF7, + 0xEF, 0xFD, 0x02, 0x00, 0x53, 0x1E, 0x9A, 0x41, 0x4F, 0x23, 0xE2, 0x54, + 0x00, 0x23, 0x00, 0x28, 0x04, 0xD0, 0x08, 0x4A, 0x08, 0x4B, 0xD3, 0x5C, + 0x5B, 0x07, 0xDB, 0x0F, 0x4F, 0x22, 0xA3, 0x54, 0xD9, 0xE7, 0x01, 0x21, + 0x28, 0x00, 0x77, 0xF7, 0x45, 0xFD, 0xB6, 0xE7, 0x64, 0xA2, 0x16, 0x00, + 0x05, 0x06, 0x00, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0xA2, 0x02, 0x00, 0x00, + 0xF0, 0xB5, 0xCE, 0x46, 0x47, 0x46, 0x80, 0xB5, 0x83, 0xB0, 0x04, 0x00, + 0x0D, 0x00, 0x0E, 0x0A, 0xB2, 0x00, 0x35, 0x4B, 0xD7, 0x58, 0x02, 0x78, + 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xBB, 0x54, 0x36, 0x23, 0xFB, 0x5C, + 0x98, 0x46, 0x33, 0x01, 0x9B, 0x1B, 0x9B, 0x00, 0x2F, 0x4A, 0xD3, 0x18, + 0x5B, 0x7B, 0x99, 0x46, 0x08, 0x00, 0x77, 0xF7, 0x7F, 0xFD, 0x02, 0x00, + 0x19, 0x28, 0x1B, 0xD8, 0x01, 0x38, 0xC0, 0xB2, 0x14, 0x28, 0x47, 0xD8, + 0x02, 0x20, 0x01, 0x2A, 0x47, 0xD1, 0x3C, 0x23, 0xFB, 0x5C, 0x00, 0x2B, + 0x36, 0xD1, 0x7B, 0x8C, 0x5B, 0x07, 0x33, 0xD5, 0xA3, 0x88, 0x62, 0x88, + 0x61, 0x78, 0x20, 0x89, 0x01, 0x90, 0xE0, 0x88, 0x00, 0x90, 0x21, 0x4C, + 0x94, 0x20, 0x24, 0x58, 0x28, 0x00, 0xA0, 0x47, 0x00, 0x20, 0x32, 0xE0, + 0x2E, 0x28, 0x2F, 0xD1, 0x01, 0x23, 0x4A, 0x46, 0x5A, 0x40, 0x13, 0x00, + 0x42, 0x46, 0x5A, 0x40, 0x13, 0x00, 0x39, 0x22, 0xBA, 0x5C, 0xDB, 0xB2, + 0x9A, 0x42, 0x0D, 0xD1, 0xA3, 0x88, 0x62, 0x88, 0x61, 0x78, 0x20, 0x89, + 0x01, 0x90, 0xE0, 0x88, 0x00, 0x90, 0x13, 0x4C, 0x94, 0x20, 0x24, 0x58, + 0x28, 0x00, 0xA0, 0x47, 0x00, 0x20, 0x16, 0xE0, 0x22, 0x78, 0x01, 0x23, + 0x13, 0x40, 0xF0, 0xB2, 0x23, 0x22, 0x17, 0x21, 0x9E, 0xF7, 0xA9, 0xFE, + 0x00, 0x20, 0x0C, 0xE0, 0x22, 0x78, 0x01, 0x23, 0x13, 0x40, 0xF0, 0xB2, + 0x24, 0x22, 0x17, 0x21, 0x9E, 0xF7, 0x9F, 0xFE, 0x00, 0x20, 0x02, 0xE0, + 0x00, 0x20, 0x00, 0xE0, 0x02, 0x20, 0x03, 0xB0, 0x0C, 0xBC, 0x90, 0x46, + 0x99, 0x46, 0xF0, 0xBD, 0x64, 0xA2, 0x16, 0x00, 0xC0, 0xA0, 0x16, 0x00, + 0x28, 0x19, 0x16, 0x00, 0xF8, 0xB5, 0x04, 0x00, 0x08, 0x00, 0x0D, 0x0A, + 0xAA, 0x00, 0x22, 0x4B, 0xD6, 0x58, 0x77, 0xF7, 0x19, 0xFD, 0x00, 0x28, + 0x3B, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x37, 0xD9, 0x22, 0x78, + 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x36, 0x23, 0xF3, 0x5C, + 0x01, 0x2B, 0x27, 0xD1, 0x23, 0x7A, 0x1B, 0x3A, 0x01, 0x2B, 0x24, 0xD8, + 0x27, 0x00, 0x09, 0x37, 0x38, 0x00, 0x79, 0xF7, 0x93, 0xFA, 0x01, 0x00, + 0x13, 0x28, 0x16, 0xD9, 0x8B, 0x23, 0x9B, 0x00, 0xF0, 0x18, 0x0A, 0x22, + 0x39, 0x00, 0xCE, 0xF7, 0x19, 0xF8, 0x22, 0x7A, 0x53, 0x1E, 0x9A, 0x41, + 0xD2, 0xB2, 0xE8, 0xB2, 0x3B, 0x00, 0x61, 0x68, 0xA9, 0xF7, 0x2E, 0xF8, + 0x23, 0x7A, 0x5A, 0x1E, 0x93, 0x41, 0x91, 0x22, 0x92, 0x00, 0xB3, 0x54, + 0x0B, 0xE0, 0x08, 0x48, 0x79, 0xF7, 0x12, 0xFA, 0x1E, 0x22, 0x00, 0xE0, + 0x24, 0x22, 0x39, 0x23, 0xF3, 0x5C, 0xE8, 0xB2, 0x3C, 0x21, 0x9E, 0xF7, + 0x48, 0xFE, 0x00, 0x20, 0xF8, 0xBD, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, + 0xD8, 0xD4, 0x10, 0x00, 0x70, 0xB5, 0x82, 0xB0, 0x04, 0x00, 0x08, 0x00, + 0x0D, 0x0A, 0xAA, 0x00, 0x2B, 0x4B, 0xD6, 0x58, 0x77, 0xF7, 0xCA, 0xFC, + 0x00, 0x28, 0x20, 0xD0, 0x16, 0x38, 0xC0, 0xB2, 0x03, 0x28, 0x1C, 0xD9, + 0x22, 0x78, 0x01, 0x23, 0x13, 0x40, 0x39, 0x22, 0xB3, 0x54, 0x4F, 0x23, + 0xF3, 0x5C, 0x00, 0x2B, 0x16, 0xD0, 0xA3, 0x78, 0x01, 0x2B, 0x31, 0xD0, + 0x02, 0x2B, 0x39, 0xD0, 0x00, 0x20, 0x00, 0x2B, 0x22, 0xD0, 0x01, 0xA9, + 0x39, 0x23, 0xF2, 0x5C, 0x3B, 0x3B, 0x13, 0x43, 0x0B, 0x70, 0x20, 0x23, + 0x4B, 0x70, 0x88, 0x70, 0xE8, 0xB2, 0x9E, 0xF7, 0xC1, 0xFD, 0x00, 0x20, + 0x02, 0xB0, 0x70, 0xBD, 0x85, 0xF7, 0xF8, 0xFC, 0x00, 0x28, 0x03, 0xD0, + 0x4F, 0x23, 0x01, 0x22, 0xF2, 0x54, 0xE0, 0xE7, 0x4F, 0x23, 0xF3, 0x5C, + 0x00, 0x2B, 0xDC, 0xD1, 0x39, 0x23, 0xF3, 0x5C, 0xE8, 0xB2, 0x1A, 0x22, + 0x1F, 0x21, 0x9E, 0xF7, 0x0D, 0xFE, 0xE8, 0xE7, 0xE8, 0xB2, 0xF5, 0xF7, + 0x59, 0xF9, 0x43, 0x1E, 0x98, 0x41, 0x43, 0x42, 0x2A, 0x20, 0x18, 0x40, + 0x15, 0x30, 0xD2, 0xE7, 0xE8, 0xB2, 0xF5, 0xF7, 0x79, 0xF9, 0x43, 0x1E, + 0x98, 0x41, 0x43, 0x42, 0x15, 0x20, 0x18, 0x40, 0x15, 0x30, 0xC8, 0xE7, + 0xE8, 0xB2, 0x03, 0x4B, 0x1B, 0x69, 0x98, 0x47, 0x2A, 0x20, 0xC2, 0xE7, + 0x64, 0xA2, 0x16, 0x00, 0x60, 0x92, 0x16, 0x00, 0x70, 0xB5, 0x14, 0x00, + 0x13, 0x0A, 0x9B, 0x00, 0x11, 0x4A, 0x9D, 0x58, 0x20, 0x00, 0x77, 0xF7, + 0x69, 0xFC, 0x03, 0x00, 0x01, 0x28, 0x0A, 0xD0, 0x00, 0x20, 0x01, 0x2B, + 0x06, 0xD9, 0x16, 0x3B, 0xDB, 0xB2, 0x03, 0x30, 0x98, 0x42, 0x80, 0x41, + 0x40, 0x42, 0x40, 0x00, 0x70, 0xBD, 0x36, 0x23, 0xEB, 0x5C, 0x00, 0x20, + 0x00, 0x2B, 0xF9, 0xD1, 0x91, 0x23, 0x9B, 0x00, 0xEB, 0x5C, 0x00, 0x2B, + 0xF4, 0xD0, 0x00, 0x21, 0x20, 0x00, 0x8E, 0xF7, 0xDB, 0xFC, 0x00, 0x20, + 0xEE, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0xF0, 0xB5, 0x83, 0xB0, + 0x00, 0x90, 0x0F, 0x00, 0x16, 0x00, 0x01, 0x93, 0x0B, 0x78, 0xDC, 0x00, + 0xE3, 0x18, 0x32, 0x4C, 0xE4, 0x18, 0x3C, 0x34, 0x23, 0x78, 0x01, 0x2B, + 0x02, 0xD0, 0x00, 0x20, 0x03, 0xB0, 0xF0, 0xBD, 0x4B, 0x78, 0x00, 0x2B, + 0x4B, 0xD1, 0x2C, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x4D, 0xD0, 0x2B, 0x4D, + 0x2C, 0x00, 0x3F, 0x34, 0x02, 0xE0, 0x09, 0x35, 0xA5, 0x42, 0x43, 0xD0, + 0xAB, 0x79, 0x02, 0x2B, 0xF9, 0xD9, 0x3B, 0x78, 0xD9, 0x00, 0xC9, 0x18, + 0x36, 0x31, 0x23, 0x4B, 0x9C, 0x46, 0x61, 0x44, 0x06, 0x22, 0x28, 0x00, + 0xCD, 0xF7, 0x18, 0xFF, 0x00, 0x28, 0xEC, 0xD1, 0x0C, 0x23, 0x03, 0x22, + 0x00, 0x21, 0x1F, 0x48, 0x77, 0xF7, 0x3C, 0xF8, 0x04, 0x00, 0x0B, 0x23, + 0x03, 0x70, 0x3B, 0x78, 0xD9, 0x00, 0xC9, 0x18, 0x36, 0x31, 0x18, 0x4D, + 0x49, 0x19, 0x04, 0x30, 0x06, 0x22, 0xCD, 0xF7, 0x27, 0xFF, 0x01, 0x23, + 0x5B, 0x42, 0x63, 0x80, 0x02, 0x33, 0xA3, 0x72, 0x00, 0x26, 0xE6, 0x72, + 0x20, 0x00, 0xC8, 0xF7, 0x85, 0xFE, 0x3A, 0x78, 0xD3, 0x00, 0x9B, 0x18, + 0xEB, 0x18, 0x3E, 0x33, 0x18, 0x78, 0x85, 0xF7, 0x0F, 0xFA, 0x3A, 0x78, + 0xD3, 0x00, 0x9B, 0x18, 0xEB, 0x18, 0x3C, 0x33, 0x1E, 0x70, 0x28, 0x68, + 0x0C, 0x38, 0x77, 0xF7, 0x62, 0xF8, 0x2E, 0x60, 0xAD, 0xE7, 0x16, 0x2B, + 0xAB, 0xD0, 0x02, 0xE0, 0x7B, 0x78, 0x16, 0x2B, 0xA7, 0xD0, 0x01, 0x9B, + 0x32, 0x00, 0x39, 0x00, 0x00, 0x98, 0x04, 0x4C, 0xA0, 0x47, 0xA0, 0xE7, + 0x68, 0x9E, 0x16, 0x00, 0x9E, 0x9E, 0x16, 0x00, 0x03, 0x11, 0x00, 0x00, + 0xED, 0x33, 0x09, 0x00, 0xF0, 0xB5, 0x87, 0xB0, 0x01, 0x90, 0x0D, 0x00, + 0x02, 0x92, 0x03, 0x93, 0x0A, 0x78, 0xD3, 0x00, 0x9A, 0x18, 0x29, 0x4B, + 0x9B, 0x18, 0x3C, 0x33, 0x1B, 0x78, 0x02, 0x2B, 0x02, 0xD0, 0x00, 0x20, + 0x07, 0xB0, 0xF0, 0xBD, 0x25, 0x4C, 0x27, 0x00, 0x3F, 0x37, 0x4E, 0x1C, + 0x02, 0xE0, 0x09, 0x34, 0xBC, 0x42, 0x39, 0xD0, 0xA3, 0x79, 0x02, 0x2B, + 0xF9, 0xD9, 0x06, 0x22, 0x31, 0x00, 0x20, 0x00, 0xCD, 0xF7, 0xAE, 0xFE, + 0x00, 0x28, 0xF2, 0xD1, 0x1B, 0x4A, 0x29, 0x78, 0xCB, 0x00, 0x5B, 0x18, + 0xD3, 0x18, 0x3C, 0x33, 0x00, 0x21, 0x19, 0x70, 0x13, 0x7B, 0x9B, 0x07, + 0xDF, 0xD5, 0x18, 0x4B, 0x00, 0x24, 0x1A, 0x78, 0x00, 0x2A, 0x05, 0xD0, + 0x01, 0x34, 0xE4, 0xB2, 0x09, 0x33, 0x07, 0x2C, 0xF7, 0xD1, 0xD4, 0xE7, + 0x06, 0x2C, 0xD2, 0xD8, 0x0F, 0x4B, 0x1A, 0x8B, 0x04, 0xA9, 0x0A, 0x80, + 0x5A, 0x8B, 0x4A, 0x80, 0x5B, 0x7F, 0x0B, 0x71, 0x4C, 0x71, 0x0E, 0x4A, + 0xD0, 0x23, 0xD3, 0x58, 0x08, 0x00, 0x98, 0x47, 0x00, 0x28, 0xC2, 0xD1, + 0xE3, 0x00, 0x1C, 0x19, 0x06, 0x4B, 0x1C, 0x19, 0x3C, 0x34, 0x02, 0x22, + 0x22, 0x70, 0xBA, 0xE7, 0x03, 0x9B, 0x02, 0x9A, 0x29, 0x00, 0x01, 0x98, + 0x05, 0x4C, 0xA0, 0x47, 0xB3, 0xE7, 0xC0, 0x46, 0x68, 0x9E, 0x16, 0x00, + 0x9E, 0x9E, 0x16, 0x00, 0xA4, 0x9E, 0x16, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xDD, 0x32, 0x09, 0x00, 0x00, 0x09, 0x70, 0x47, 0x00, 0x28, 0x14, 0xD0, + 0x0E, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x03, 0xD0, 0x0D, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0x06, 0xD1, 0x0C, 0x4B, 0x0A, 0x4A, 0x99, 0x68, 0x11, 0x60, + 0xDA, 0x68, 0x09, 0x4B, 0x1A, 0x60, 0x09, 0x4B, 0x09, 0x4A, 0x9A, 0x60, + 0x09, 0x4A, 0xDA, 0x60, 0x70, 0x47, 0x06, 0x4B, 0x03, 0x4A, 0x12, 0x68, + 0x9A, 0x60, 0x03, 0x4A, 0x12, 0x68, 0xDA, 0x60, 0xF6, 0xE7, 0xC0, 0x46, + 0xB8, 0xE6, 0x10, 0x00, 0xD4, 0xE6, 0x10, 0x00, 0x60, 0x92, 0x16, 0x00, + 0x2D, 0x01, 0x10, 0x00, 0x81, 0x01, 0x10, 0x00, 0x70, 0xB5, 0x04, 0x00, + 0x01, 0x00, 0x2F, 0x48, 0x79, 0xF7, 0x68, 0xF8, 0x7D, 0xF7, 0xE8, 0xFF, + 0x01, 0x28, 0x00, 0xD0, 0x70, 0xBD, 0xFF, 0xF7, 0xC9, 0xFF, 0x2B, 0x4A, + 0x95, 0x23, 0x9B, 0x00, 0xD2, 0x5C, 0x2A, 0x4B, 0x1A, 0x70, 0x2A, 0x4B, + 0x1A, 0x68, 0x2A, 0x4B, 0x1A, 0x60, 0xE6, 0x23, 0x5B, 0x00, 0x1B, 0x68, + 0x28, 0x48, 0x98, 0x47, 0x28, 0x4B, 0x18, 0x60, 0x01, 0x2C, 0x27, 0xD0, + 0x02, 0x23, 0x22, 0x00, 0x9A, 0x43, 0x05, 0xD0, 0x25, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x1C, 0x4E, 0x95, 0x25, + 0xAD, 0x00, 0x40, 0x23, 0x73, 0x55, 0x1C, 0x4B, 0x20, 0x4A, 0x1A, 0x60, + 0x8C, 0x21, 0xE8, 0x23, 0x5B, 0x00, 0x1B, 0x68, 0x49, 0x00, 0x1A, 0x48, + 0x98, 0x47, 0x73, 0x5D, 0x1C, 0x49, 0x2D, 0x22, 0x8B, 0x54, 0x01, 0x2C, + 0x1B, 0xD9, 0x02, 0x2C, 0xC8, 0xD1, 0x1A, 0x49, 0x0A, 0x88, 0xFF, 0x20, + 0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, 0xC1, 0xE7, 0x0D, 0x4D, 0x95, 0x24, + 0xA4, 0x00, 0x30, 0x23, 0x2B, 0x55, 0x0D, 0x4B, 0x11, 0x4A, 0x1A, 0x60, + 0x8C, 0x21, 0xE8, 0x23, 0x5B, 0x00, 0x1B, 0x68, 0x49, 0x00, 0x0B, 0x48, + 0x98, 0x47, 0x2B, 0x5D, 0x0D, 0x49, 0x2D, 0x22, 0x8B, 0x54, 0x0E, 0x49, + 0x0A, 0x88, 0xFF, 0x20, 0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, 0xA7, 0xE7, + 0xE4, 0xD4, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, 0xF6, 0xE8, 0x10, 0x00, + 0x54, 0x07, 0x62, 0x40, 0x08, 0xE7, 0x10, 0x00, 0x58, 0x00, 0x01, 0x50, + 0x18, 0xE7, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xFD, 0x20, 0x22, 0x21, + 0x60, 0x92, 0x16, 0x00, 0x8E, 0x01, 0x61, 0x40, 0x0C, 0x65, 0x61, 0x40, + 0x70, 0xB5, 0x04, 0x00, 0x01, 0x00, 0x1A, 0x48, 0x78, 0xF7, 0xEE, 0xFF, + 0x7D, 0xF7, 0x6E, 0xFF, 0x01, 0x28, 0x00, 0xD0, 0x70, 0xBD, 0x00, 0x20, + 0xFF, 0xF7, 0x4E, 0xFF, 0x15, 0x4E, 0x95, 0x25, 0xAD, 0x00, 0x15, 0x4B, + 0x1B, 0x78, 0x73, 0x55, 0x14, 0x4B, 0x1A, 0x68, 0x14, 0x4B, 0x1A, 0x60, + 0x14, 0x4B, 0x1B, 0x68, 0x80, 0x21, 0x49, 0x00, 0x19, 0x43, 0xE8, 0x23, + 0x5B, 0x00, 0x1B, 0x68, 0x11, 0x48, 0x98, 0x47, 0x73, 0x5D, 0x11, 0x49, + 0x2D, 0x22, 0x8B, 0x54, 0x01, 0x2C, 0x08, 0xD9, 0x02, 0x2C, 0xDF, 0xD1, + 0x0E, 0x49, 0x0A, 0x88, 0xFF, 0x20, 0x82, 0x43, 0x13, 0x43, 0x0B, 0x80, + 0xD8, 0xE7, 0x0C, 0x49, 0x0A, 0x88, 0xFF, 0x20, 0x82, 0x43, 0x13, 0x43, + 0x0B, 0x80, 0xD1, 0xE7, 0xF8, 0xD4, 0x10, 0x00, 0x7C, 0x1E, 0x16, 0x00, + 0xF6, 0xE8, 0x10, 0x00, 0x08, 0xE7, 0x10, 0x00, 0x54, 0x07, 0x62, 0x40, + 0x18, 0xE7, 0x10, 0x00, 0x58, 0x00, 0x01, 0x50, 0x60, 0x92, 0x16, 0x00, + 0x8E, 0x01, 0x61, 0x40, 0x0C, 0x65, 0x61, 0x40, 0x10, 0xB5, 0x09, 0x28, + 0x0B, 0xD9, 0xFF, 0x28, 0x0B, 0xD1, 0x0B, 0x09, 0x1F, 0x29, 0x0D, 0xD9, + 0x02, 0x3B, 0x01, 0x2B, 0x05, 0xD8, 0x01, 0x20, 0xFF, 0xF7, 0xA6, 0xFF, + 0x01, 0xE0, 0x00, 0x28, 0x08, 0xD1, 0x10, 0xBD, 0x00, 0x20, 0xFF, 0xF7, + 0x25, 0xFF, 0xFA, 0xE7, 0x00, 0x20, 0xFF, 0xF7, 0x9B, 0xFF, 0xF6, 0xE7, + 0x0B, 0x09, 0x1F, 0x29, 0xF4, 0xD9, 0x02, 0x3B, 0x01, 0x2B, 0xF0, 0xD8, + 0x01, 0x20, 0xFF, 0xF7, 0x17, 0xFF, 0xEC, 0xE7, 0xF8, 0xB5, 0xCE, 0x46, + 0x47, 0x46, 0x80, 0xB5, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0x1F, 0x00, + 0x13, 0x0A, 0x9B, 0x00, 0x11, 0x4A, 0x9B, 0x58, 0x99, 0x46, 0x0A, 0x88, + 0x10, 0x4B, 0xD3, 0x5C, 0x98, 0x46, 0x20, 0x00, 0x77, 0xF7, 0x42, 0xFA, + 0x0A, 0x28, 0x0A, 0xD0, 0x3B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, + 0x0B, 0x4C, 0xA0, 0x47, 0x00, 0x20, 0x0C, 0xBC, 0x90, 0x46, 0x99, 0x46, + 0xF8, 0xBD, 0x43, 0x46, 0x5B, 0x08, 0x03, 0x2B, 0xF0, 0xD1, 0x07, 0x4B, + 0x4A, 0x46, 0xD1, 0x5C, 0x06, 0x3B, 0xD0, 0x5C, 0xFF, 0xF7, 0xB0, 0xFF, + 0xE8, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x00, 0x00, 0x61, 0x40, + 0x05, 0x87, 0x0A, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x70, 0xB5, 0x82, 0xB0, + 0x14, 0x00, 0x15, 0x0A, 0xAA, 0x00, 0x20, 0x4B, 0xD6, 0x58, 0x20, 0x00, + 0x77, 0xF7, 0x16, 0xFA, 0x03, 0x00, 0x01, 0x28, 0x10, 0xD0, 0x00, 0x20, + 0x01, 0x2B, 0x05, 0xD9, 0x19, 0x2B, 0x05, 0xD8, 0x15, 0x22, 0x9A, 0x42, + 0x40, 0x41, 0x40, 0x00, 0x02, 0xB0, 0x70, 0xBD, 0x58, 0x3B, 0x18, 0x00, + 0x43, 0x1E, 0x98, 0x41, 0x40, 0x00, 0xF7, 0xE7, 0x4C, 0x23, 0xF3, 0x5C, + 0x00, 0x20, 0x00, 0x2B, 0xF2, 0xD1, 0x4B, 0x33, 0xF3, 0x5C, 0x00, 0x2B, + 0x02, 0xD0, 0x4B, 0x23, 0x00, 0x22, 0xF2, 0x54, 0x4F, 0x23, 0xF3, 0x5C, + 0x00, 0x20, 0x00, 0x2B, 0xE6, 0xD0, 0x01, 0xA9, 0x36, 0x23, 0xF2, 0x5C, + 0x38, 0x3B, 0x13, 0x43, 0x0B, 0x70, 0x1F, 0x23, 0x4B, 0x70, 0x1D, 0x3B, + 0x8B, 0x70, 0xE8, 0xB2, 0x9E, 0xF7, 0xFE, 0xFA, 0x20, 0x00, 0x8E, 0xF7, + 0xF1, 0xFE, 0x58, 0x21, 0x20, 0x00, 0x77, 0xF7, 0x7D, 0xF9, 0x00, 0x20, + 0xD0, 0xE7, 0xC0, 0x46, 0x64, 0xA2, 0x16, 0x00, 0x05, 0x4B, 0x00, 0x20, + 0x1A, 0x78, 0x00, 0x2A, 0x04, 0xD0, 0x01, 0x30, 0xC0, 0xB2, 0x09, 0x33, + 0x07, 0x28, 0xF7, 0xD1, 0x70, 0x47, 0xC0, 0x46, 0xA4, 0x9E, 0x16, 0x00, + 0x70, 0xB5, 0x80, 0x00, 0x28, 0x4B, 0xC2, 0x58, 0x28, 0x49, 0xD5, 0x23, + 0x5B, 0x00, 0xC9, 0x5C, 0xCB, 0x00, 0x5B, 0x1A, 0x5B, 0x00, 0x26, 0x49, + 0x8C, 0x46, 0x63, 0x44, 0x19, 0x88, 0xC9, 0x0B, 0x0B, 0xD0, 0x19, 0x88, + 0x49, 0x04, 0x49, 0x0C, 0x19, 0x80, 0x20, 0x4C, 0xD5, 0x20, 0x40, 0x00, + 0x21, 0x5C, 0x01, 0x31, 0x03, 0x23, 0x0B, 0x40, 0x23, 0x54, 0x9E, 0x23, + 0xD3, 0x5C, 0x5B, 0x00, 0xAE, 0x21, 0x51, 0x5C, 0x5B, 0x18, 0xDB, 0xB2, + 0x99, 0x00, 0xCB, 0x18, 0x5B, 0x00, 0x19, 0x49, 0x5C, 0x18, 0x21, 0x88, + 0x89, 0xB2, 0x00, 0x29, 0x19, 0xD1, 0x9C, 0x31, 0x50, 0x5C, 0x00, 0x28, + 0x01, 0xD1, 0x01, 0x31, 0x50, 0x5C, 0x14, 0x49, 0x5D, 0x18, 0x29, 0x88, + 0x78, 0x26, 0xB1, 0x43, 0xC0, 0x00, 0x01, 0x43, 0x29, 0x80, 0x96, 0x21, + 0x51, 0x5A, 0xC9, 0x00, 0x06, 0x20, 0x01, 0x43, 0x89, 0xB2, 0x0E, 0x48, + 0x18, 0x18, 0x01, 0x80, 0x94, 0x21, 0x51, 0x5A, 0x21, 0x80, 0x0C, 0x49, + 0x8C, 0x46, 0x63, 0x44, 0x19, 0x88, 0x49, 0x04, 0x49, 0x0C, 0x19, 0x80, + 0xAE, 0x21, 0x53, 0x5C, 0x58, 0x42, 0x43, 0x41, 0x53, 0x54, 0x70, 0xBD, + 0x38, 0xE6, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, 0x90, 0x69, 0x61, 0x40, + 0xCE, 0x69, 0x61, 0x40, 0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, + 0xC8, 0x69, 0x61, 0x40, 0x70, 0xB5, 0x35, 0x4B, 0x1C, 0x68, 0x00, 0x2C, + 0x14, 0xD0, 0xE3, 0x78, 0x9B, 0x00, 0x33, 0x4A, 0x9D, 0x58, 0xA0, 0x23, + 0xEB, 0x5C, 0x02, 0x2B, 0x0E, 0xD0, 0x31, 0x4B, 0x1B, 0x78, 0x00, 0x2B, + 0x05, 0xD0, 0x30, 0x4A, 0x11, 0x68, 0x80, 0x23, 0xDB, 0x03, 0x0B, 0x43, + 0x13, 0x60, 0xA0, 0x23, 0x02, 0x22, 0xEA, 0x54, 0x00, 0x20, 0x70, 0xBD, + 0x94, 0x23, 0xE8, 0x5A, 0x00, 0x28, 0x07, 0xD0, 0x63, 0x78, 0x00, 0x2B, + 0x42, 0xD0, 0x01, 0x2B, 0x43, 0xD0, 0x94, 0x23, 0x00, 0x22, 0xEA, 0x52, + 0xE2, 0x78, 0x62, 0x23, 0x53, 0x43, 0x24, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x18, 0x88, 0x40, 0x05, 0x40, 0x0F, 0x84, 0xF7, 0x51, 0xFF, 0x1D, 0x4D, + 0xE3, 0x78, 0x9B, 0x00, 0x58, 0x59, 0x76, 0xF7, 0xCF, 0xFE, 0xE3, 0x78, + 0x9B, 0x00, 0x00, 0x24, 0x5C, 0x51, 0x1C, 0x48, 0xCB, 0xF7, 0x56, 0xFD, + 0x1B, 0x48, 0x78, 0xF7, 0x53, 0xFE, 0x14, 0x4D, 0x2B, 0x68, 0xD8, 0x68, + 0x76, 0xF7, 0xC0, 0xFE, 0x2B, 0x68, 0xDC, 0x60, 0x98, 0x68, 0x00, 0x28, + 0x05, 0xD0, 0x76, 0xF7, 0xB9, 0xFE, 0x0E, 0x4B, 0x1B, 0x68, 0x00, 0x22, + 0x9A, 0x60, 0x0C, 0x4C, 0x20, 0x68, 0x76, 0xF7, 0xB1, 0xFE, 0x00, 0x23, + 0x23, 0x60, 0x0B, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0xBC, 0xD0, 0x0E, 0x4A, + 0x13, 0x68, 0x0E, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x06, 0x4B, 0x00, 0x22, + 0x1A, 0x70, 0xB3, 0xE7, 0x80, 0xF7, 0x4A, 0xFE, 0xBB, 0xE7, 0x80, 0xF7, + 0xFD, 0xFD, 0xB8, 0xE7, 0xD8, 0xE5, 0x10, 0x00, 0x38, 0xE6, 0x10, 0x00, + 0xDC, 0xE5, 0x10, 0x00, 0x00, 0x04, 0x60, 0x40, 0xFE, 0x64, 0x61, 0x40, + 0xFC, 0xE6, 0x10, 0x00, 0x0C, 0xD5, 0x10, 0x00, 0xD0, 0x04, 0x60, 0x40, + 0xFF, 0x7F, 0xFF, 0xFF, 0x70, 0xB5, 0x13, 0x4B, 0x1C, 0x68, 0xA5, 0x78, + 0x00, 0x2D, 0x1D, 0xD1, 0x23, 0x78, 0x03, 0x2B, 0x1C, 0xD0, 0x63, 0x78, + 0x00, 0x2B, 0x08, 0xD0, 0x01, 0x2B, 0x0F, 0xD0, 0x0D, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x04, 0xE0, 0x0E, 0x22, + 0x01, 0x00, 0xE0, 0x68, 0xCD, 0xF7, 0xF2, 0xFB, 0x01, 0x23, 0xA3, 0x70, + 0x28, 0x00, 0x70, 0xBD, 0x0E, 0x22, 0x01, 0x00, 0xE0, 0x68, 0xCD, 0xF7, + 0xE9, 0xFB, 0xF5, 0xE7, 0x0C, 0x25, 0xF5, 0xE7, 0x0C, 0x25, 0xF3, 0xE7, + 0xD8, 0xE5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xDE, 0x46, + 0x57, 0x46, 0x4E, 0x46, 0x45, 0x46, 0xE0, 0xB5, 0x8B, 0xB0, 0x05, 0x00, + 0x0E, 0x00, 0x14, 0x00, 0x01, 0x93, 0x00, 0x23, 0x08, 0x93, 0x09, 0x93, + 0x06, 0x93, 0x06, 0xAA, 0x93, 0x80, 0x82, 0x00, 0xBB, 0x4B, 0xD3, 0x58, + 0x00, 0x2B, 0x00, 0xD1, 0x10, 0xE1, 0xAB, 0x00, 0xB8, 0x4A, 0x9F, 0x58, + 0x21, 0x00, 0xB8, 0x48, 0x78, 0xF7, 0xCE, 0xFD, 0x00, 0x2C, 0x00, 0xD1, + 0x0D, 0xE1, 0x01, 0x2C, 0x00, 0xD1, 0x6D, 0xE2, 0xB4, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x23, 0x00, 0x93, + 0x98, 0x46, 0x99, 0x46, 0x02, 0x93, 0x00, 0x21, 0x00, 0x26, 0x01, 0x9B, + 0x00, 0x2B, 0x63, 0xD0, 0x62, 0x23, 0x6B, 0x43, 0xAC, 0x4A, 0x98, 0x18, + 0x02, 0x88, 0x1F, 0x24, 0xA2, 0x43, 0x32, 0x43, 0x02, 0x80, 0xAA, 0x4A, + 0x9A, 0x18, 0x10, 0x88, 0xA9, 0x4E, 0x06, 0x40, 0x80, 0x20, 0x40, 0x00, + 0x30, 0x43, 0x10, 0x80, 0x10, 0x88, 0x40, 0x04, 0x40, 0x0C, 0x10, 0x80, + 0x10, 0x88, 0xA5, 0x4E, 0x30, 0x40, 0x10, 0x80, 0xA4, 0x4A, 0x94, 0x46, + 0x9C, 0x44, 0x62, 0x46, 0x16, 0x88, 0xFF, 0x20, 0x86, 0x43, 0xA2, 0x4A, + 0x93, 0x46, 0x2D, 0x22, 0x5C, 0x46, 0xA2, 0x5C, 0x32, 0x43, 0x64, 0x46, + 0x22, 0x80, 0x9F, 0x4A, 0x9E, 0x18, 0x00, 0x22, 0x94, 0x46, 0x32, 0x80, + 0x9D, 0x4A, 0x93, 0x46, 0x9B, 0x44, 0x5A, 0x46, 0x12, 0x88, 0x52, 0x04, + 0x52, 0x0C, 0x5C, 0x46, 0x22, 0x80, 0x9A, 0x4A, 0x9A, 0x18, 0x11, 0x80, + 0x99, 0x4A, 0x9A, 0x18, 0x61, 0x46, 0x11, 0x80, 0x98, 0x4A, 0x9A, 0x18, + 0x11, 0x80, 0x98, 0x4A, 0x99, 0x18, 0x02, 0x22, 0xFF, 0x32, 0x0A, 0x80, + 0x32, 0x88, 0x40, 0x24, 0xA2, 0x43, 0x22, 0x43, 0x32, 0x80, 0x0A, 0x88, + 0x82, 0x43, 0xFE, 0x38, 0x02, 0x43, 0x0A, 0x80, 0x9E, 0x22, 0xBA, 0x5C, + 0x14, 0x21, 0x4A, 0x43, 0x8F, 0x49, 0x8C, 0x46, 0x62, 0x44, 0x92, 0xB2, + 0x8E, 0x49, 0x59, 0x18, 0x0A, 0x80, 0x8E, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1A, 0x88, 0x3F, 0x21, 0x0A, 0x40, 0x8C, 0x49, 0x0A, 0x43, 0x1A, 0x80, + 0x08, 0xAE, 0x31, 0x00, 0x06, 0xA8, 0xAF, 0xF7, 0x9D, 0xF9, 0x06, 0xAB, + 0x5A, 0x78, 0x12, 0x02, 0x1B, 0x78, 0x13, 0x43, 0x62, 0x27, 0x6F, 0x43, + 0x85, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0x06, 0xAB, 0xDA, 0x78, 0x12, 0x02, + 0x9B, 0x78, 0x13, 0x43, 0x82, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0x06, 0xAB, + 0x5A, 0x79, 0x12, 0x02, 0x1B, 0x79, 0x13, 0x43, 0x7F, 0x4A, 0xBA, 0x18, + 0x13, 0x80, 0x72, 0x78, 0x12, 0x02, 0x33, 0x78, 0x13, 0x43, 0x7D, 0x4A, + 0xBA, 0x18, 0x13, 0x80, 0xF2, 0x78, 0x12, 0x02, 0xB3, 0x78, 0x13, 0x43, + 0x7A, 0x4A, 0xBA, 0x18, 0x13, 0x80, 0x00, 0x22, 0x06, 0x2D, 0x01, 0xD8, + 0x6A, 0x1C, 0xD2, 0xB2, 0x08, 0xAB, 0x19, 0x79, 0x03, 0x23, 0x0B, 0x40, + 0x92, 0x00, 0x13, 0x43, 0x6E, 0x4A, 0x13, 0x43, 0x6C, 0x4A, 0xBA, 0x18, + 0x13, 0x80, 0x72, 0x48, 0x03, 0x68, 0x72, 0x49, 0x0B, 0x40, 0x80, 0x22, + 0x52, 0x01, 0x1A, 0x43, 0x02, 0x60, 0x5A, 0x4B, 0xFE, 0x18, 0x33, 0x88, + 0x02, 0x9A, 0x14, 0x03, 0x24, 0xB2, 0x0B, 0x40, 0x23, 0x43, 0x9B, 0xB2, + 0x33, 0x80, 0x4B, 0x46, 0x00, 0x2B, 0x00, 0xD1, 0xDE, 0xE1, 0x56, 0x4B, + 0xFA, 0x18, 0x13, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x80, 0x21, 0x09, 0x02, + 0x0B, 0x43, 0x13, 0x80, 0x33, 0x88, 0x64, 0x4A, 0x13, 0x40, 0x00, 0x9A, + 0xD2, 0x02, 0x13, 0x43, 0x9B, 0xB2, 0x33, 0x80, 0x61, 0x49, 0x0B, 0x68, + 0x61, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x02, 0x13, 0x43, 0x0B, 0x60, + 0x4C, 0x4B, 0xFB, 0x18, 0x00, 0x22, 0x1A, 0x80, 0x49, 0x4B, 0xFB, 0x18, + 0x1A, 0x88, 0x08, 0x21, 0x8A, 0x43, 0x1A, 0x80, 0x30, 0x88, 0x31, 0x88, + 0x33, 0x88, 0x80, 0x0B, 0x01, 0x22, 0x10, 0x40, 0x80, 0x03, 0xC9, 0x0A, + 0x0A, 0x40, 0xD2, 0x02, 0x10, 0x43, 0x05, 0x43, 0x58, 0x05, 0x40, 0x0F, + 0x00, 0x02, 0x05, 0x43, 0x25, 0x43, 0xAD, 0xB2, 0x35, 0x80, 0x0B, 0xB0, + 0x3C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xAB, 0x46, 0xF0, 0xBD, + 0x32, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0xE7, 0xE6, 0xB3, 0x78, 0x99, 0x46, 0xF3, 0x78, 0x98, 0x46, 0x33, 0x79, + 0x00, 0x93, 0x72, 0x79, 0x02, 0x92, 0x00, 0x2B, 0x10, 0xD1, 0x9D, 0x23, + 0x00, 0x22, 0xFA, 0x54, 0x32, 0x78, 0x01, 0x3B, 0xFA, 0x54, 0xF2, 0x88, + 0x96, 0x23, 0xFA, 0x52, 0x73, 0x78, 0x07, 0x2B, 0x00, 0xD9, 0x3D, 0xE1, + 0x9B, 0x00, 0x3E, 0x49, 0xCB, 0x58, 0x9F, 0x46, 0x31, 0x78, 0x9D, 0x23, + 0xF9, 0x54, 0x3C, 0x48, 0x78, 0xF7, 0x9C, 0xFC, 0x9C, 0x23, 0x00, 0x22, + 0xFA, 0x54, 0xEA, 0xE7, 0x39, 0x4B, 0x1A, 0x68, 0x39, 0x49, 0x0A, 0x40, + 0x1A, 0x60, 0x1A, 0x68, 0x30, 0x49, 0x11, 0x40, 0x80, 0x22, 0x52, 0x01, + 0x0A, 0x43, 0x1A, 0x60, 0x35, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x76, 0xD0, + 0x31, 0x49, 0x0B, 0x68, 0x2D, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x02, + 0x13, 0x43, 0x0B, 0x60, 0x6D, 0xE0, 0x2D, 0x4B, 0x1A, 0x68, 0x2D, 0x49, + 0x11, 0x40, 0x80, 0x22, 0x92, 0x01, 0x0A, 0x43, 0x1A, 0x60, 0x1A, 0x68, + 0x22, 0x49, 0x11, 0x40, 0x80, 0x22, 0x52, 0x01, 0x0A, 0x43, 0x1A, 0x60, + 0x27, 0x4B, 0x1B, 0x78, 0x00, 0x2B, 0x5A, 0xD0, 0x23, 0x49, 0x0B, 0x68, + 0x1F, 0x4A, 0x1A, 0x40, 0x80, 0x23, 0x1B, 0x02, 0x13, 0x43, 0x0B, 0x60, + 0x51, 0xE0, 0xC0, 0x46, 0x38, 0xE6, 0x10, 0x00, 0x18, 0xD5, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0xF8, 0x64, 0x61, 0x40, 0xFE, 0x64, 0x61, 0x40, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0C, 0x65, 0x61, 0x40, + 0x60, 0x92, 0x16, 0x00, 0x0E, 0x65, 0x61, 0x40, 0x56, 0x65, 0x61, 0x40, + 0x10, 0x65, 0x61, 0x40, 0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, + 0x1E, 0x65, 0x61, 0x40, 0xC8, 0x69, 0x00, 0x00, 0x12, 0x65, 0x61, 0x40, + 0x0A, 0x65, 0x61, 0x40, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x65, 0x61, 0x40, + 0x02, 0x65, 0x61, 0x40, 0x04, 0x65, 0x61, 0x40, 0x06, 0x65, 0x61, 0x40, + 0x08, 0x65, 0x61, 0x40, 0x00, 0x04, 0x60, 0x40, 0xFF, 0xEF, 0xFF, 0xFF, + 0xFF, 0xF7, 0xFF, 0xFF, 0x28, 0x04, 0x60, 0x40, 0xFF, 0x7F, 0xFF, 0xFF, + 0x48, 0xD5, 0x10, 0x00, 0x30, 0xD5, 0x10, 0x00, 0xD0, 0x04, 0x60, 0x40, + 0xFF, 0xDF, 0xFF, 0xFF, 0xDC, 0xE5, 0x10, 0x00, 0x94, 0x23, 0xF8, 0x5A, + 0x8E, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xF0, 0x21, 0x74, 0xF7, 0x96, 0xFB, + 0x8C, 0x4A, 0x13, 0x68, 0x8C, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x9E, 0x23, + 0xFA, 0x5C, 0x52, 0x00, 0x10, 0x33, 0xFB, 0x5C, 0xD2, 0x18, 0xD2, 0xB2, + 0x62, 0x23, 0x6B, 0x43, 0x87, 0x49, 0x8C, 0x46, 0x63, 0x44, 0x03, 0x93, + 0x02, 0x20, 0x07, 0x23, 0x9A, 0x46, 0x04, 0x95, 0x05, 0x96, 0x91, 0x00, + 0x89, 0x18, 0x49, 0x00, 0x82, 0x4B, 0xCC, 0x18, 0x23, 0x88, 0x78, 0x25, + 0xAB, 0x43, 0x70, 0x3D, 0x2B, 0x43, 0x9B, 0xB2, 0x23, 0x80, 0x03, 0x9B, + 0x1B, 0x88, 0x25, 0x88, 0xAB, 0x46, 0x1B, 0x0A, 0x55, 0x46, 0x2B, 0x40, + 0x5D, 0x46, 0x56, 0x46, 0xB5, 0x43, 0x2B, 0x43, 0x23, 0x80, 0x79, 0x4B, + 0x9C, 0x46, 0x8C, 0x44, 0x63, 0x46, 0x1B, 0x88, 0x77, 0x4C, 0x23, 0x40, + 0x64, 0x46, 0x23, 0x80, 0x76, 0x4B, 0xCB, 0x18, 0x00, 0x24, 0x1C, 0x80, + 0x75, 0x4B, 0x9C, 0x46, 0x61, 0x44, 0x9E, 0x23, 0xFB, 0x5C, 0x5B, 0x00, + 0x01, 0x34, 0x54, 0x40, 0xE4, 0xB2, 0xA4, 0x46, 0x63, 0x44, 0x9C, 0x00, + 0xA4, 0x46, 0x63, 0x44, 0x5B, 0x00, 0x6F, 0x4C, 0xA4, 0x46, 0x63, 0x44, + 0x6E, 0x4C, 0x23, 0x43, 0x9B, 0xB2, 0x0B, 0x80, 0x0B, 0x88, 0x5B, 0x04, + 0x5B, 0x0C, 0x0B, 0x80, 0x53, 0x42, 0x5A, 0x41, 0xD2, 0xB2, 0x01, 0x38, + 0xC0, 0xB2, 0x00, 0x28, 0xB9, 0xD1, 0x04, 0x9D, 0x05, 0x9E, 0x31, 0x00, + 0x08, 0x31, 0x06, 0x22, 0x06, 0xA8, 0xCD, 0xF7, 0xA5, 0xF9, 0x00, 0x21, + 0x02, 0x26, 0xF2, 0xE5, 0x94, 0x23, 0xF8, 0x5A, 0x56, 0x4B, 0x9C, 0x46, + 0x60, 0x44, 0xAA, 0x21, 0x74, 0xF7, 0x26, 0xFB, 0x54, 0x4A, 0x13, 0x68, + 0x54, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x8E, 0xE7, 0x94, 0x23, 0xF8, 0x5A, + 0x4F, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0xFF, 0x21, 0x74, 0xF7, 0x18, 0xFB, + 0x4D, 0x4A, 0x13, 0x68, 0x4D, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x80, 0xE7, + 0x94, 0x23, 0xF8, 0x5A, 0x48, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x21, + 0x74, 0xF7, 0x0A, 0xFB, 0x46, 0x4A, 0x13, 0x68, 0x46, 0x49, 0x0B, 0x40, + 0x13, 0x60, 0x72, 0xE7, 0x94, 0x23, 0xF8, 0x5A, 0x41, 0x4B, 0x9C, 0x46, + 0x60, 0x44, 0x0F, 0x21, 0x74, 0xF7, 0xFC, 0xFA, 0x3F, 0x4A, 0x13, 0x68, + 0x3F, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x64, 0xE7, 0x94, 0x23, 0xF8, 0x5A, + 0x3A, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x55, 0x21, 0x74, 0xF7, 0xEE, 0xFA, + 0x38, 0x4A, 0x13, 0x68, 0x38, 0x49, 0x0B, 0x40, 0x13, 0x60, 0x56, 0xE7, + 0x94, 0x23, 0xF8, 0x5A, 0x33, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x00, 0x21, + 0x74, 0xF7, 0xE0, 0xFA, 0x31, 0x4A, 0x13, 0x68, 0x31, 0x49, 0x0B, 0x40, + 0x13, 0x60, 0x48, 0xE7, 0xB3, 0x78, 0x98, 0x46, 0xF3, 0x78, 0x00, 0x93, + 0xB4, 0x79, 0xF1, 0x1D, 0x06, 0x22, 0x06, 0xA8, 0xCD, 0xF7, 0x44, 0xF9, + 0x00, 0x22, 0x33, 0x4B, 0x99, 0x46, 0xD5, 0x23, 0x5B, 0x00, 0x9C, 0x46, + 0x03, 0x26, 0x17, 0x3B, 0xFF, 0x3B, 0x9B, 0x46, 0x0A, 0xE0, 0x2F, 0x49, + 0x8A, 0x46, 0x53, 0x44, 0x19, 0x88, 0x49, 0x04, 0x49, 0x0C, 0x19, 0x80, + 0x01, 0x32, 0xD2, 0xB2, 0x04, 0x2A, 0x11, 0xD0, 0x4B, 0x46, 0x61, 0x46, + 0x5B, 0x5C, 0xD3, 0x18, 0x33, 0x40, 0xD9, 0x00, 0xCB, 0x1A, 0x5B, 0x00, + 0x26, 0x49, 0x58, 0x18, 0x01, 0x88, 0x89, 0xB2, 0x00, 0x29, 0xE6, 0xD1, + 0x59, 0x46, 0x79, 0x5A, 0x01, 0x80, 0xE2, 0xE7, 0x02, 0x94, 0x00, 0x23, + 0x99, 0x46, 0x21, 0x49, 0x03, 0x26, 0x66, 0xE5, 0x20, 0x4B, 0xFA, 0x18, + 0x13, 0x88, 0x5B, 0x04, 0x5B, 0x0C, 0x13, 0x80, 0x43, 0x46, 0xDB, 0x07, + 0x0F, 0xD4, 0x11, 0x88, 0x43, 0x46, 0x5B, 0x08, 0x1B, 0x02, 0x1B, 0x48, + 0x01, 0x40, 0x0B, 0x43, 0x13, 0x80, 0x43, 0x46, 0x5B, 0x08, 0x28, 0x33, + 0x19, 0x00, 0x18, 0x48, 0x78, 0xF7, 0x0A, 0xFB, 0x10, 0xE6, 0x10, 0x88, + 0x43, 0x46, 0x5B, 0x08, 0x28, 0x33, 0x1B, 0x02, 0x12, 0x49, 0x01, 0x40, + 0x0B, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0xEC, 0xE7, 0x00, 0x00, 0x61, 0x40, + 0xD0, 0x04, 0x60, 0x40, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x64, 0x61, 0x40, + 0xCA, 0x69, 0x61, 0x40, 0xCC, 0x69, 0x61, 0x40, 0x07, 0xE0, 0xFF, 0xFF, + 0xCE, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x61, 0x40, 0xC8, 0x69, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0x20, 0xA3, 0x16, 0x00, 0x90, 0x69, 0x61, 0x40, + 0x9A, 0x69, 0x61, 0x40, 0xFF, 0x1F, 0x00, 0x00, 0x0C, 0x65, 0x61, 0x40, + 0xFF, 0x80, 0xFF, 0xFF, 0x3C, 0xD5, 0x10, 0x00, 0x10, 0xB5, 0x07, 0x4B, + 0x1C, 0x68, 0xA3, 0x78, 0x00, 0x2B, 0x00, 0xD1, 0x10, 0xBD, 0x00, 0x23, + 0x0A, 0x00, 0xE1, 0x68, 0xFF, 0xF7, 0xE2, 0xFC, 0x00, 0x23, 0xA3, 0x70, + 0xF6, 0xE7, 0xC0, 0x46, 0xD8, 0xE5, 0x10, 0x00, 0xF0, 0xB5, 0xC6, 0x46, + 0x00, 0xB5, 0x05, 0x00, 0x82, 0x00, 0x52, 0x4B, 0xD4, 0x58, 0x00, 0x2C, + 0x00, 0xD1, 0x98, 0xE0, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x05, 0xD1, + 0x4E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x3B, 0xDB, 0xB2, 0xA3, 0x54, 0x09, 0x3A, + 0xA2, 0x5C, 0x02, 0x3A, 0x01, 0x2A, 0x01, 0xD8, 0x00, 0x2B, 0x14, 0xD0, + 0x9F, 0xF7, 0xD2, 0xFD, 0x06, 0x00, 0x01, 0x00, 0x28, 0x00, 0xFF, 0xF7, + 0xA9, 0xFB, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, 0x68, 0xE0, + 0x3F, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x01, 0x21, 0x20, 0x00, 0xCA, 0xF7, + 0xEF, 0xFD, 0xA0, 0x23, 0x02, 0x22, 0xE2, 0x54, 0xFF, 0xF7, 0xF4, 0xFB, + 0x37, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, + 0x5B, 0x00, 0x35, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0xD2, 0x0B, 0xE7, 0xD0, + 0x33, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, 0xD2, 0x0A, 0xAA, 0x42, + 0x07, 0xD0, 0x19, 0x88, 0xC9, 0x0A, 0x2C, 0x4B, 0xDC, 0x6E, 0x00, 0x23, + 0x00, 0x22, 0x28, 0x00, 0xA0, 0x47, 0x2A, 0x4C, 0xD5, 0x20, 0x40, 0x00, + 0x22, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x27, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x1A, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x1A, 0x80, 0x21, 0x5C, + 0x01, 0x31, 0x03, 0x23, 0x19, 0x40, 0x21, 0x54, 0x23, 0x4B, 0x1A, 0x68, + 0xCB, 0x00, 0x5B, 0x1A, 0x5B, 0x00, 0x22, 0x49, 0x8C, 0x46, 0x63, 0x44, + 0x52, 0x04, 0x52, 0x0C, 0x93, 0x42, 0x05, 0xD0, 0x19, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x18, 0x4E, 0x00, 0x24, + 0xD5, 0x23, 0x5B, 0x00, 0x98, 0x46, 0x14, 0x4F, 0x03, 0xE0, 0x01, 0x34, + 0x0E, 0x36, 0x04, 0x2C, 0xA8, 0xD0, 0x33, 0x88, 0xDB, 0x0B, 0xF8, 0xD0, + 0x10, 0x4B, 0x42, 0x46, 0x98, 0x5C, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, + 0xFD, 0x6E, 0xA8, 0x47, 0xEF, 0xE7, 0x01, 0x21, 0x20, 0x00, 0xCA, 0xF7, + 0x8F, 0xFD, 0x02, 0x36, 0x66, 0x60, 0x00, 0x21, 0x28, 0x00, 0xFF, 0xF7, + 0x4F, 0xFF, 0x20, 0x00, 0xF4, 0xF7, 0xA6, 0xFA, 0x8E, 0xE7, 0x04, 0x4B, + 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0xA0, 0x47, 0x87, 0xE7, + 0x38, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x20, 0xA3, 0x16, 0x00, + 0x90, 0x69, 0x61, 0x40, 0x92, 0x69, 0x61, 0x40, 0x2C, 0x04, 0x60, 0x40, + 0x90, 0x69, 0x00, 0x00, 0xF0, 0xB5, 0x83, 0xB0, 0x01, 0x90, 0x0D, 0x00, + 0x14, 0x00, 0xCF, 0xB2, 0x06, 0x2F, 0x07, 0xD9, 0xFF, 0x20, 0x08, 0x40, + 0x0B, 0x4B, 0xDE, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0xB0, 0x47, + 0x00, 0x2C, 0x09, 0xD0, 0xFF, 0x20, 0x28, 0x40, 0x06, 0x4B, 0xDD, 0x6E, + 0x00, 0x23, 0x00, 0x22, 0x21, 0x00, 0xA8, 0x47, 0x03, 0xB0, 0xF0, 0xBD, + 0x01, 0x99, 0x38, 0x00, 0xFF, 0xF7, 0x28, 0xFF, 0xF8, 0xE7, 0xC0, 0x46, + 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x96, 0xB0, + 0x2F, 0x4B, 0x1B, 0x68, 0xD9, 0x68, 0xEF, 0xF3, 0x10, 0x83, 0xDB, 0x07, + 0x51, 0xD4, 0x72, 0xB6, 0x10, 0x31, 0x24, 0x22, 0x0D, 0xA8, 0xCC, 0xF7, + 0xCF, 0xFF, 0x62, 0xB6, 0x0D, 0x9C, 0x00, 0x26, 0x00, 0x2C, 0x07, 0xD0, + 0x0E, 0x9B, 0xE3, 0x1A, 0x64, 0x20, 0x58, 0x43, 0x21, 0x00, 0xCC, 0xF7, + 0x75, 0xFB, 0x06, 0x00, 0x13, 0x9D, 0x00, 0x20, 0x00, 0x2D, 0x05, 0xD0, + 0x21, 0x48, 0x14, 0x9B, 0x58, 0x43, 0x29, 0x00, 0xCC, 0xF7, 0x6A, 0xFB, + 0x11, 0x9A, 0x12, 0x9F, 0x15, 0x99, 0x13, 0x00, 0x3B, 0x43, 0x0B, 0x43, + 0x1B, 0xD0, 0x0F, 0x9B, 0x98, 0x46, 0x0E, 0x9B, 0x9C, 0x46, 0x00, 0x23, + 0x09, 0x93, 0x08, 0x90, 0x07, 0x93, 0x06, 0x96, 0x14, 0x9B, 0x0B, 0x93, + 0x05, 0x93, 0x04, 0x95, 0x03, 0x91, 0x02, 0x97, 0x01, 0x92, 0x10, 0x9B, + 0x00, 0x93, 0x43, 0x46, 0x22, 0x00, 0x61, 0x46, 0x11, 0x48, 0x78, 0xF7, + 0xA5, 0xF9, 0x16, 0xB0, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x0F, 0x9B, + 0x0E, 0x99, 0x00, 0x22, 0x06, 0x92, 0x05, 0x90, 0x04, 0x92, 0x03, 0x96, + 0x14, 0x9A, 0x0B, 0x92, 0x02, 0x92, 0x01, 0x95, 0x10, 0x9A, 0x00, 0x92, + 0x22, 0x00, 0x08, 0x48, 0x78, 0xF7, 0x90, 0xF9, 0xE9, 0xE7, 0x10, 0x31, + 0x24, 0x22, 0x0D, 0xA8, 0xCC, 0xF7, 0x7E, 0xFF, 0xAE, 0xE7, 0xC0, 0x46, + 0xD8, 0xE5, 0x10, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0xD5, 0x10, 0x00, + 0xC8, 0xD5, 0x10, 0x00, 0x70, 0x47, 0x00, 0x00, 0xF0, 0xB5, 0xC6, 0x46, + 0x00, 0xB5, 0x05, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x1C, 0x00, 0x4B, 0x4B, + 0x1B, 0x68, 0x00, 0x2B, 0x05, 0xD0, 0x4A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x00, 0x21, 0x10, 0x20, 0x76, 0xF7, + 0x37, 0xF9, 0x44, 0x4B, 0x18, 0x60, 0x00, 0x28, 0x10, 0xD0, 0x42, 0x4B, + 0x18, 0x68, 0x10, 0x22, 0x00, 0x21, 0x74, 0xF7, 0xDF, 0xF8, 0x00, 0x2D, + 0x0E, 0xD0, 0x01, 0x2D, 0x2C, 0xD0, 0x3E, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x1B, 0xE0, 0x3A, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x98, 0x47, 0xE8, 0xE7, 0x36, 0x4C, 0x25, 0x68, + 0x00, 0x21, 0x0E, 0x20, 0x76, 0xF7, 0x16, 0xF9, 0xE8, 0x60, 0x23, 0x68, + 0xDB, 0x68, 0x00, 0x2B, 0x0D, 0xD0, 0x31, 0x4C, 0x23, 0x68, 0xD8, 0x68, + 0x0E, 0x22, 0x00, 0x21, 0x74, 0xF7, 0xBC, 0xF8, 0x23, 0x68, 0x00, 0x22, + 0x5A, 0x70, 0xDE, 0x70, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x2B, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xEA, 0xE7, + 0x26, 0x4D, 0x2B, 0x68, 0x98, 0x46, 0x00, 0x21, 0x38, 0x20, 0x76, 0xF7, + 0xF5, 0xF8, 0x43, 0x46, 0xD8, 0x60, 0x2B, 0x68, 0xDB, 0x68, 0x00, 0x2B, + 0x31, 0xD0, 0x20, 0x4D, 0x2B, 0x68, 0xD8, 0x68, 0x38, 0x22, 0x00, 0x21, + 0x74, 0xF7, 0x9A, 0xF8, 0x2B, 0x68, 0x98, 0x46, 0x00, 0x21, 0x28, 0x20, + 0x76, 0xF7, 0xE2, 0xF8, 0x43, 0x46, 0x98, 0x60, 0x2B, 0x68, 0x9B, 0x68, + 0x00, 0x2B, 0x25, 0xD0, 0x16, 0x4D, 0x2B, 0x68, 0x98, 0x68, 0x28, 0x22, + 0x00, 0x21, 0x74, 0xF7, 0x87, 0xF8, 0x2B, 0x68, 0xD8, 0x68, 0x0E, 0x22, + 0x39, 0x00, 0xCC, 0xF7, 0xF5, 0xFE, 0x2B, 0x68, 0x01, 0x22, 0x5A, 0x70, + 0xC8, 0x22, 0x52, 0x01, 0x5A, 0x60, 0xDE, 0x70, 0x0E, 0x48, 0x0F, 0x4A, + 0x82, 0x60, 0x5B, 0x68, 0xE4, 0x18, 0x24, 0x01, 0x24, 0x09, 0x44, 0x60, + 0xCA, 0xF7, 0xA0, 0xFF, 0xB6, 0xE7, 0x08, 0x4B, 0x9B, 0x6E, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xC6, 0xE7, 0x04, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xD2, 0xE7, 0xC0, 0x46, + 0xD8, 0xE5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xFC, 0xE6, 0x10, 0x00, + 0xD5, 0x01, 0x10, 0x00, 0xF8, 0xB5, 0x04, 0x00, 0x4E, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0x04, 0xD0, 0xFF, 0xF7, 0xB8, 0xFA, 0x05, 0x00, 0x28, 0x00, + 0xF8, 0xBD, 0x4B, 0x48, 0x78, 0xF7, 0xCA, 0xF8, 0x4A, 0x4B, 0x1B, 0x68, + 0x00, 0x2B, 0x07, 0xD0, 0x49, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x12, 0x25, 0xEE, 0xE7, 0x00, 0x21, 0xF8, 0x20, + 0x76, 0xF7, 0x88, 0xF8, 0x42, 0x4B, 0x18, 0x60, 0x00, 0x28, 0x75, 0xD0, + 0x9F, 0xF7, 0xE0, 0xFB, 0x07, 0x00, 0x84, 0xF7, 0x81, 0xF9, 0x40, 0x4A, + 0x13, 0x88, 0x40, 0x49, 0x0B, 0x40, 0x00, 0x02, 0x03, 0x43, 0x9B, 0xB2, + 0x13, 0x80, 0x3A, 0x4B, 0x1E, 0x68, 0xF8, 0x22, 0x00, 0x21, 0x30, 0x00, + 0x74, 0xF7, 0x22, 0xF8, 0x00, 0x23, 0x73, 0x62, 0x39, 0x4A, 0xF2, 0x61, + 0x39, 0x4A, 0x32, 0x62, 0x03, 0x22, 0x32, 0x76, 0x38, 0x4A, 0x12, 0x78, + 0xB2, 0x75, 0x38, 0x4A, 0x32, 0x61, 0x05, 0x22, 0xF2, 0x75, 0x99, 0x32, + 0xB3, 0x54, 0x01, 0x32, 0xB3, 0x54, 0x02, 0x32, 0xB3, 0x54, 0x03, 0x32, + 0x28, 0x21, 0xB1, 0x52, 0x1C, 0x3A, 0xB3, 0x52, 0x80, 0xF7, 0x72, 0xF8, + 0x05, 0x1E, 0x05, 0xD1, 0x28, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x94, 0x23, 0xF5, 0x52, 0x93, 0x3B, 0x00, 0x22, + 0x21, 0x00, 0x00, 0x20, 0xFF, 0xF7, 0x8A, 0xFA, 0x28, 0x4A, 0x13, 0x88, + 0x1F, 0x21, 0x0B, 0x40, 0x13, 0x80, 0x77, 0x60, 0x00, 0x23, 0x82, 0x22, + 0xB3, 0x52, 0xB3, 0x60, 0x00, 0x22, 0xA6, 0x33, 0xF2, 0x54, 0x20, 0x3B, + 0xFA, 0x22, 0xD2, 0x01, 0xF2, 0x52, 0x37, 0x67, 0x20, 0x4B, 0xB3, 0x82, + 0xFA, 0x23, 0x1B, 0x02, 0xFB, 0x18, 0x1B, 0x01, 0x1B, 0x09, 0xF3, 0x60, + 0x30, 0x00, 0xCA, 0xF7, 0x15, 0xFA, 0x05, 0x1E, 0x07, 0xD0, 0x12, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x12, 0x25, + 0x7F, 0xE7, 0xA0, 0x23, 0x00, 0x22, 0xF2, 0x54, 0x01, 0x32, 0x00, 0x21, + 0x00, 0x20, 0x9F, 0xF7, 0xF3, 0xF8, 0x3B, 0x00, 0x00, 0x22, 0x21, 0x00, + 0x00, 0x20, 0xFF, 0xF7, 0xC3, 0xFE, 0x70, 0xE7, 0x06, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x12, 0x25, 0x68, 0xE7, + 0xD8, 0xE5, 0x10, 0x00, 0x10, 0xD6, 0x10, 0x00, 0x38, 0xE6, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0xFE, 0x64, 0x61, 0x40, 0xFF, 0xF8, 0xFF, 0xFF, + 0xF1, 0x02, 0x10, 0x00, 0xD1, 0x01, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, + 0x6A, 0x04, 0x00, 0x00, 0xF8, 0x64, 0x61, 0x40, 0x00, 0x80, 0xFF, 0xFF, + 0x10, 0xB5, 0x00, 0x29, 0x12, 0xD1, 0x03, 0x78, 0xFF, 0x2B, 0x0A, 0xD1, + 0x43, 0x78, 0xC1, 0x2B, 0x2F, 0xD1, 0x83, 0x78, 0xFB, 0x2B, 0x2E, 0xD1, + 0xC1, 0x78, 0xE8, 0x39, 0x4B, 0x42, 0x59, 0x41, 0x03, 0x31, 0x04, 0x39, + 0x48, 0x42, 0x48, 0x41, 0xC0, 0xB2, 0x10, 0xBD, 0x03, 0x29, 0x0C, 0xD0, + 0x12, 0x4B, 0x5C, 0x5C, 0x00, 0x23, 0xD9, 0xB2, 0xC2, 0x5C, 0xA2, 0x42, + 0xF1, 0xD1, 0x01, 0x31, 0xC9, 0xB2, 0x01, 0x33, 0x04, 0x2B, 0xF6, 0xD1, + 0xEB, 0xE7, 0x03, 0x78, 0xFF, 0x2B, 0x0A, 0xD1, 0x43, 0x78, 0xC1, 0x2B, + 0x09, 0xD1, 0x83, 0x78, 0xFB, 0x2B, 0x08, 0xD1, 0xC3, 0x78, 0xE8, 0x2B, + 0xDF, 0xD1, 0x04, 0x21, 0xDD, 0xE7, 0x00, 0x21, 0xDB, 0xE7, 0x01, 0x21, + 0xD9, 0xE7, 0x02, 0x21, 0xD7, 0xE7, 0x01, 0x21, 0xD5, 0xE7, 0x02, 0x21, + 0xD3, 0xE7, 0xC0, 0x46, 0x1C, 0xE0, 0x10, 0x00, 0xF8, 0xB5, 0x23, 0x4B, + 0x1B, 0x68, 0x00, 0x2B, 0x3A, 0xD0, 0xDA, 0x68, 0x53, 0x78, 0x00, 0x2B, + 0x10, 0xD1, 0x95, 0x88, 0x00, 0x2D, 0x0C, 0xD0, 0x1E, 0x4F, 0x1F, 0x4E, + 0xF1, 0x5C, 0xC4, 0x5C, 0x61, 0x40, 0x79, 0x5C, 0xD4, 0x6A, 0xA4, 0x46, + 0x61, 0x44, 0xD1, 0x62, 0x01, 0x33, 0xAB, 0x42, 0xF4, 0xD3, 0xF8, 0xBD, + 0x03, 0x2B, 0x11, 0xD0, 0x18, 0x49, 0xCD, 0x5C, 0x94, 0x88, 0x00, 0x2C, + 0xF7, 0xD0, 0x00, 0x23, 0x13, 0x4E, 0xC1, 0x5C, 0x69, 0x40, 0x71, 0x5C, + 0xD7, 0x6A, 0xBC, 0x46, 0x61, 0x44, 0xD1, 0x62, 0x01, 0x33, 0xA3, 0x42, + 0xF5, 0xD3, 0xEA, 0xE7, 0x95, 0x88, 0x00, 0x2D, 0xE7, 0xD0, 0x00, 0x23, + 0x0B, 0x4F, 0x0E, 0x4E, 0xF1, 0x5C, 0xC4, 0x5C, 0x61, 0x40, 0x79, 0x5C, + 0xD4, 0x6A, 0xA4, 0x46, 0x61, 0x44, 0xD1, 0x62, 0x01, 0x33, 0xAB, 0x42, + 0xF4, 0xD3, 0xD8, 0xE7, 0x08, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0xD1, 0xE7, 0xC0, 0x46, 0xD8, 0xE5, 0x10, 0x00, + 0xBC, 0xDE, 0x10, 0x00, 0xBC, 0xDA, 0x10, 0x00, 0x1C, 0xE0, 0x10, 0x00, + 0xBC, 0xD6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xD6, 0x46, + 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x82, 0xB0, 0x06, 0x00, 0x74, 0x4B, + 0x1B, 0x68, 0xDD, 0x68, 0x54, 0x1E, 0xE4, 0xB2, 0x00, 0x2A, 0x00, 0xD1, + 0xDA, 0xE0, 0x71, 0x4F, 0xAB, 0xE0, 0x04, 0x21, 0x08, 0x00, 0x10, 0x40, + 0x11, 0x42, 0x2F, 0xD0, 0xE9, 0x69, 0x01, 0x31, 0xE9, 0x61, 0xDB, 0x04, + 0x9B, 0x0D, 0x99, 0x46, 0xB8, 0x23, 0x13, 0x42, 0x5B, 0xD1, 0xAB, 0x88, + 0xDB, 0x00, 0xAA, 0x6A, 0x94, 0x46, 0x63, 0x44, 0xAB, 0x62, 0xD5, 0x23, + 0x5B, 0x00, 0x65, 0x4A, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, + 0x63, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x18, 0x88, 0x83, 0xB2, 0x9A, 0x46, + 0x00, 0x2B, 0x06, 0xD1, 0x60, 0x4B, 0x9B, 0x6E, 0x01, 0x93, 0x00, 0x22, + 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x4B, 0x46, 0x00, 0x2B, 0x53, 0xD0, + 0x43, 0x46, 0x59, 0x06, 0x09, 0x0F, 0x5B, 0x48, 0x50, 0x44, 0xFF, 0xF7, + 0x67, 0xFF, 0x4B, 0xE0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61, 0xDB, 0x04, + 0x9B, 0x0D, 0x99, 0x46, 0xB8, 0x23, 0x13, 0x42, 0x00, 0xD0, 0x95, 0xE0, + 0x00, 0x28, 0xCC, 0xD1, 0xAB, 0x88, 0x4B, 0x45, 0x2B, 0xD0, 0x6B, 0x6A, + 0x01, 0x33, 0x6B, 0x62, 0x4C, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, + 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x4A, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x18, 0x88, 0x83, 0xB2, 0x98, 0x46, 0x00, 0x2B, 0x05, 0xD1, 0x47, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x4B, 0x46, + 0x00, 0x2B, 0x21, 0xD0, 0x69, 0x78, 0x43, 0x48, 0x40, 0x44, 0xFF, 0xF7, + 0xF7, 0xFE, 0x00, 0x28, 0x1A, 0xD1, 0x2B, 0x6B, 0x01, 0x33, 0x2B, 0x63, + 0x16, 0xE0, 0x2B, 0x6A, 0x01, 0x33, 0x2B, 0x62, 0x00, 0x28, 0x11, 0xD1, + 0xD0, 0xE7, 0xDB, 0x00, 0xAA, 0x6A, 0x94, 0x46, 0x63, 0x44, 0xAB, 0x62, + 0xD0, 0xE7, 0x35, 0x23, 0xEB, 0x5C, 0x01, 0x33, 0xDB, 0xB2, 0x64, 0x2B, + 0x54, 0xD8, 0x35, 0x22, 0xAB, 0x54, 0x34, 0x23, 0x00, 0x22, 0xEA, 0x54, + 0x2F, 0x4A, 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, + 0x5B, 0x00, 0x2D, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1B, 0x88, 0x9B, 0xB2, + 0x00, 0x2B, 0x05, 0xD1, 0x2A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x25, 0x48, 0xD5, 0x21, 0x49, 0x00, 0x42, 0x5C, + 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x26, 0x4A, 0x94, 0x46, 0x63, 0x44, + 0x1A, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x1A, 0x80, 0x42, 0x5C, 0x01, 0x32, + 0x03, 0x23, 0x13, 0x40, 0x43, 0x54, 0x01, 0x3C, 0xE4, 0xB2, 0xFF, 0x2C, + 0x2C, 0xD0, 0x30, 0x00, 0x9E, 0xF7, 0x5A, 0xFF, 0x00, 0x28, 0x27, 0xD0, + 0xD5, 0x23, 0x5B, 0x00, 0xFA, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, + 0x19, 0x4A, 0x9A, 0x18, 0x10, 0x88, 0x82, 0xB2, 0x18, 0x49, 0x59, 0x18, + 0x09, 0x88, 0x89, 0xB2, 0x88, 0x46, 0x17, 0x49, 0x8C, 0x46, 0x63, 0x44, + 0x1B, 0x88, 0x9B, 0xB2, 0xC1, 0x07, 0xAE, 0xD4, 0x29, 0x69, 0x01, 0x31, + 0x29, 0x61, 0x91, 0x07, 0x00, 0xD4, 0x32, 0xE7, 0xAB, 0x69, 0x01, 0x33, + 0xAB, 0x61, 0xAF, 0xE7, 0x35, 0x23, 0x64, 0x22, 0xEA, 0x54, 0xA8, 0xE7, + 0x2B, 0x6A, 0x01, 0x33, 0x2B, 0x62, 0x67, 0xE7, 0x02, 0xB0, 0x1C, 0xBC, + 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0xD8, 0xE5, 0x10, 0x00, + 0x20, 0xA3, 0x16, 0x00, 0x9A, 0x69, 0x61, 0x40, 0x28, 0x19, 0x16, 0x00, + 0x00, 0x00, 0x61, 0x40, 0x90, 0x69, 0x61, 0x40, 0x92, 0x69, 0x61, 0x40, + 0x94, 0x69, 0x61, 0x40, 0x96, 0x69, 0x61, 0x40, 0xF0, 0xB5, 0xD6, 0x46, + 0x4F, 0x46, 0x46, 0x46, 0xC0, 0xB5, 0x89, 0x46, 0x82, 0x00, 0x41, 0x4B, + 0xD5, 0x58, 0xA6, 0x23, 0xEF, 0x5C, 0x2E, 0x6D, 0x44, 0x3B, 0x58, 0x43, + 0x3E, 0x4B, 0xC3, 0x18, 0x1B, 0x88, 0x3E, 0x4A, 0x82, 0x18, 0x14, 0x88, + 0x1B, 0x04, 0x1C, 0x43, 0xA2, 0x46, 0x3C, 0x4B, 0xC3, 0x18, 0x1B, 0x88, + 0x9B, 0x05, 0x9B, 0x0D, 0x98, 0x46, 0x3A, 0x4B, 0xC3, 0x18, 0x1C, 0x88, + 0x39, 0x4B, 0x9C, 0x46, 0x60, 0x44, 0x01, 0x88, 0x24, 0x04, 0x0C, 0x19, + 0x37, 0x4B, 0x9E, 0x42, 0x1C, 0xD8, 0x53, 0x46, 0x4A, 0x46, 0x9B, 0x1A, + 0x19, 0x01, 0x09, 0x09, 0x80, 0x22, 0x12, 0x05, 0x91, 0x42, 0x40, 0xD9, + 0x4B, 0x46, 0x52, 0x46, 0x9B, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x5B, 0x42, + 0xA1, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0x3D, 0xD0, 0x00, 0x2B, 0x07, 0xDB, + 0x89, 0x08, 0x00, 0x29, 0x04, 0xDD, 0x89, 0x00, 0x49, 0x44, 0x09, 0x01, + 0x0B, 0x09, 0x99, 0x46, 0x53, 0x46, 0xE1, 0x1A, 0x49, 0x44, 0x09, 0x01, + 0x09, 0x09, 0xF4, 0x23, 0x5B, 0x00, 0x42, 0x46, 0x9B, 0x1A, 0x32, 0xD4, + 0xA9, 0x67, 0x82, 0x22, 0xAB, 0x52, 0x4A, 0x42, 0x03, 0x20, 0x10, 0x40, + 0xA6, 0x22, 0xA8, 0x54, 0x72, 0x3A, 0x2A, 0x65, 0xAB, 0x60, 0x34, 0x2E, + 0x09, 0xD9, 0xEA, 0x7D, 0x00, 0x2A, 0x06, 0xD0, 0xC8, 0x22, 0x52, 0x00, + 0x9A, 0x42, 0x92, 0x41, 0x52, 0x42, 0x05, 0x32, 0xEA, 0x75, 0x69, 0x67, + 0x84, 0x22, 0xAB, 0x52, 0xC0, 0x1B, 0x43, 0x1E, 0x98, 0x41, 0xC0, 0xB2, + 0x1C, 0xBC, 0x90, 0x46, 0x99, 0x46, 0xA2, 0x46, 0xF0, 0xBD, 0x1B, 0x01, + 0x1B, 0x09, 0xA1, 0x22, 0xAA, 0x5C, 0x00, 0x2A, 0xC4, 0xD0, 0xC1, 0xE7, + 0x00, 0x2B, 0xC1, 0xDA, 0x0D, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0xC2, 0xE7, 0x0B, 0x4B, 0x9B, 0x1A, 0x01, 0x31, + 0x09, 0x01, 0x09, 0x09, 0xC6, 0xE7, 0xC0, 0x46, 0x38, 0xE6, 0x10, 0x00, + 0x4C, 0x65, 0x61, 0x40, 0x4A, 0x65, 0x61, 0x40, 0x4E, 0x65, 0x61, 0x40, + 0xFC, 0x64, 0x61, 0x40, 0xFA, 0x64, 0x61, 0x40, 0xE1, 0x04, 0x00, 0x00, + 0x28, 0x19, 0x16, 0x00, 0x59, 0x04, 0x00, 0x00, 0xF8, 0xB5, 0x80, 0x00, + 0x25, 0x4B, 0xC5, 0x58, 0xA6, 0x23, 0xEE, 0x5C, 0x6C, 0x6F, 0xEB, 0x6E, + 0xC8, 0x1A, 0x00, 0x01, 0x00, 0x09, 0x22, 0x49, 0x48, 0x43, 0x22, 0x49, + 0xCB, 0xF7, 0x84, 0xFF, 0x1A, 0x30, 0x40, 0x00, 0x02, 0x00, 0x34, 0x3A, + 0x52, 0x08, 0x84, 0x23, 0xEB, 0x5A, 0x9B, 0x1A, 0x19, 0xB2, 0x1B, 0x04, + 0x27, 0xD5, 0x00, 0x23, 0x1B, 0x4A, 0x8A, 0x18, 0x11, 0xB2, 0x01, 0x34, + 0x24, 0x01, 0x24, 0x09, 0x1F, 0x00, 0x01, 0x33, 0xDB, 0xB2, 0x12, 0x04, + 0xF4, 0xD4, 0xAC, 0x67, 0x82, 0x22, 0xA9, 0x52, 0x64, 0x42, 0x7F, 0x3A, + 0x14, 0x40, 0xA3, 0x32, 0xAC, 0x54, 0x28, 0x65, 0xA9, 0x60, 0x00, 0x2B, + 0x0A, 0xD0, 0xEB, 0x7D, 0x00, 0x2B, 0x07, 0xD0, 0xC8, 0x23, 0x5B, 0x00, + 0x8B, 0x42, 0x9B, 0x41, 0x5B, 0x42, 0x06, 0x37, 0xDF, 0x19, 0xEF, 0x75, + 0x34, 0x1B, 0x66, 0x1E, 0xB4, 0x41, 0xE0, 0xB2, 0xF8, 0xBD, 0xAC, 0x67, + 0x82, 0x23, 0xE9, 0x52, 0x64, 0x42, 0x7F, 0x3B, 0x1C, 0x40, 0xA3, 0x33, + 0xEC, 0x54, 0x28, 0x65, 0xA9, 0x60, 0xEF, 0xE7, 0x38, 0xE6, 0x10, 0x00, + 0xA8, 0x61, 0x00, 0x00, 0x40, 0x42, 0x0F, 0x00, 0x71, 0x02, 0x00, 0x00, + 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x8A, 0xB0, 0x0E, 0x00, 0x8A, 0x00, + 0x52, 0x4B, 0xD5, 0x58, 0x00, 0x2D, 0x00, 0xD1, 0x9B, 0xE0, 0xA6, 0x23, + 0x98, 0x46, 0xEB, 0x5C, 0x01, 0x33, 0x03, 0x24, 0x23, 0x40, 0x1F, 0x00, + 0x9F, 0xF7, 0xB0, 0xF8, 0x00, 0x90, 0x03, 0x00, 0xA3, 0x43, 0x3B, 0x43, + 0x42, 0x46, 0xAA, 0x5C, 0xD2, 0x1A, 0x14, 0x40, 0x04, 0x3B, 0xE4, 0x18, + 0x24, 0x01, 0x24, 0x09, 0x23, 0x1A, 0x1B, 0x01, 0x1B, 0x09, 0x80, 0x22, + 0x12, 0x05, 0x93, 0x42, 0x02, 0xD9, 0x03, 0x1B, 0x1B, 0x01, 0x59, 0xD1, + 0x00, 0x23, 0x01, 0x93, 0x01, 0xA9, 0x68, 0x46, 0x9F, 0xF7, 0x9C, 0xF8, + 0x01, 0x9B, 0x1A, 0x00, 0x0F, 0x32, 0xFF, 0x32, 0x9C, 0x21, 0x89, 0x00, + 0x8A, 0x42, 0x57, 0xD8, 0x01, 0x92, 0x00, 0x9A, 0x13, 0x1B, 0x1B, 0x01, + 0x1B, 0x09, 0x38, 0x49, 0x8B, 0x42, 0x05, 0xD8, 0xA2, 0x42, 0x61, 0xD1, + 0xAB, 0x68, 0x01, 0x9A, 0x93, 0x42, 0x5D, 0xD9, 0x02, 0xA8, 0x34, 0x4B, + 0x02, 0x93, 0x44, 0x60, 0xAB, 0x68, 0x83, 0x60, 0x06, 0x76, 0x06, 0x61, + 0x31, 0x4B, 0xC3, 0x60, 0xAB, 0x7D, 0x03, 0x75, 0x01, 0x33, 0x43, 0x75, + 0x00, 0x23, 0x83, 0x75, 0xB0, 0x22, 0xAA, 0x5C, 0xC2, 0x75, 0x83, 0x76, + 0xC3, 0x76, 0x01, 0x33, 0x43, 0x76, 0xCA, 0xF7, 0xD7, 0xFE, 0xA9, 0x22, + 0xAB, 0x5C, 0x01, 0x33, 0xAB, 0x54, 0xAA, 0x23, 0xEB, 0x5C, 0x00, 0x2B, + 0x31, 0xD1, 0x9F, 0x23, 0xEB, 0x5C, 0x01, 0x2B, 0x3B, 0xD1, 0xAB, 0x6F, + 0x9B, 0xB2, 0x62, 0x21, 0x4E, 0x43, 0x22, 0x4A, 0xB2, 0x18, 0x13, 0x80, + 0xAB, 0x6F, 0x1B, 0x0C, 0x20, 0x4A, 0xB2, 0x18, 0x13, 0x80, 0x20, 0x4B, + 0x9C, 0x46, 0x66, 0x44, 0x2B, 0x6D, 0x01, 0x33, 0x5B, 0x08, 0x01, 0x33, + 0x5B, 0x08, 0x1D, 0x4A, 0x13, 0x43, 0x9B, 0xB2, 0x33, 0x80, 0x22, 0xE0, + 0x04, 0x34, 0x24, 0x01, 0x24, 0x09, 0x23, 0x1A, 0x1B, 0x01, 0x1B, 0x09, + 0x93, 0x42, 0x9D, 0xD9, 0x03, 0x1B, 0x1B, 0x01, 0x9A, 0xD0, 0xF3, 0xE7, + 0x64, 0x3B, 0xFF, 0x3B, 0x01, 0x93, 0x00, 0x9B, 0x01, 0x33, 0x1B, 0x01, + 0x1B, 0x09, 0x00, 0x93, 0x9F, 0xE7, 0x9E, 0x23, 0xE8, 0x5C, 0xCB, 0xF7, + 0x21, 0xF8, 0x0F, 0x4B, 0x01, 0x22, 0x1A, 0x60, 0xAA, 0x23, 0x00, 0x22, + 0xEA, 0x54, 0xC2, 0xE7, 0x0C, 0x48, 0x77, 0xF7, 0xF1, 0xFC, 0x0A, 0xB0, + 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0xC0, 0x46, 0x38, 0xE6, 0x10, 0x00, + 0xFE, 0xFF, 0xFF, 0x07, 0x39, 0xCB, 0x10, 0x00, 0xDE, 0x05, 0x00, 0x00, + 0xFA, 0x64, 0x61, 0x40, 0xFC, 0x64, 0x61, 0x40, 0x10, 0x65, 0x61, 0x40, + 0x00, 0x80, 0xFF, 0xFF, 0x18, 0x00, 0x60, 0x40, 0x28, 0xD6, 0x10, 0x00, + 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x82, 0xB0, 0x05, 0x00, 0x0E, 0x00, + 0x82, 0x00, 0x9D, 0x4B, 0xD4, 0x58, 0x00, 0x2C, 0x00, 0xD1, 0x2B, 0xE1, + 0x9B, 0x4B, 0x1B, 0x68, 0xDF, 0x68, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, + 0x05, 0xD1, 0x99, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, + 0x98, 0x47, 0xA9, 0x22, 0xA3, 0x5C, 0x01, 0x3B, 0xDB, 0xB2, 0xA3, 0x54, + 0x09, 0x3A, 0xA2, 0x5C, 0x02, 0x2A, 0x01, 0xD1, 0x00, 0x2B, 0x51, 0xD0, + 0x9E, 0xF7, 0xDE, 0xFF, 0x01, 0x90, 0x01, 0x22, 0x31, 0x00, 0x28, 0x00, + 0xFF, 0xF7, 0x20, 0xFD, 0x62, 0x23, 0x6B, 0x43, 0x8C, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x1B, 0x88, 0xDB, 0x0B, 0x00, 0xD1, 0xAC, 0xE0, 0x31, 0x00, + 0x28, 0x00, 0xFF, 0xF7, 0x15, 0xFE, 0xB4, 0x23, 0xE0, 0x54, 0xA0, 0x23, + 0xE3, 0x5C, 0x02, 0x2B, 0x00, 0xD1, 0xEA, 0xE0, 0x01, 0x21, 0x28, 0x00, + 0xFF, 0xF7, 0xBA, 0xF9, 0x82, 0x23, 0xE3, 0x5E, 0xA3, 0x60, 0x81, 0x4B, + 0x1B, 0x68, 0x00, 0x2B, 0x0C, 0xD0, 0x34, 0x23, 0xFB, 0x5C, 0x00, 0x2B, + 0x00, 0xD1, 0x9D, 0xE0, 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD1, + 0x93, 0xE0, 0x7A, 0x4B, 0x00, 0x22, 0x1A, 0x60, 0x34, 0x23, 0xFB, 0x5C, + 0x00, 0x2B, 0x00, 0xD1, 0x90, 0xE0, 0xB4, 0x23, 0xE3, 0x5C, 0x00, 0x2B, + 0x00, 0xD0, 0xBE, 0xE0, 0xAA, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x00, 0xD0, + 0xD6, 0xE0, 0xA6, 0x33, 0xE2, 0x5C, 0x01, 0x32, 0xA3, 0x3B, 0x13, 0x40, + 0x9E, 0x22, 0xA1, 0x5C, 0x9C, 0x3A, 0x6E, 0x48, 0xCA, 0xF7, 0x56, 0xFF, + 0xAA, 0x23, 0x01, 0x22, 0xE2, 0x54, 0xC7, 0xE0, 0x01, 0x21, 0x20, 0x00, + 0xC9, 0xF7, 0xBE, 0xFF, 0xA0, 0x23, 0x02, 0x22, 0xE2, 0x54, 0x0A, 0x33, + 0xE3, 0x5C, 0x00, 0x2B, 0x49, 0xD1, 0xFE, 0xF7, 0xBF, 0xFD, 0x65, 0x4A, + 0xD5, 0x23, 0x5B, 0x00, 0xD2, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, + 0x62, 0x4A, 0x9A, 0x18, 0x12, 0x88, 0xD2, 0x0B, 0x00, 0xD1, 0xAD, 0xE0, + 0x60, 0x4A, 0x94, 0x46, 0x63, 0x44, 0x1A, 0x88, 0xD2, 0x0A, 0xAA, 0x42, + 0x07, 0xD0, 0x19, 0x88, 0xC9, 0x0A, 0x56, 0x4B, 0xDC, 0x6E, 0x00, 0x23, + 0x00, 0x22, 0x28, 0x00, 0xA0, 0x47, 0x57, 0x4C, 0xD5, 0x20, 0x40, 0x00, + 0x22, 0x5C, 0xD3, 0x00, 0x9B, 0x1A, 0x5B, 0x00, 0x54, 0x4A, 0x94, 0x46, + 0x63, 0x44, 0x1A, 0x88, 0x52, 0x04, 0x52, 0x0C, 0x1A, 0x80, 0x21, 0x5C, + 0x01, 0x31, 0x03, 0x23, 0x19, 0x40, 0x21, 0x54, 0x50, 0x4B, 0x1A, 0x68, + 0xCB, 0x00, 0x5B, 0x1A, 0x5B, 0x00, 0x4F, 0x49, 0x8C, 0x46, 0x63, 0x44, + 0x52, 0x04, 0x52, 0x0C, 0x93, 0x42, 0x05, 0xD0, 0x43, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x45, 0x4E, 0x00, 0x24, + 0xD5, 0x23, 0x5B, 0x00, 0x98, 0x46, 0x3E, 0x4F, 0x0A, 0xE0, 0x28, 0x00, + 0xCA, 0xF7, 0x30, 0xFF, 0xAA, 0x23, 0x00, 0x22, 0xE2, 0x54, 0xAE, 0xE7, + 0x01, 0x34, 0x0E, 0x36, 0x04, 0x2C, 0x67, 0xD0, 0x33, 0x88, 0xDB, 0x0B, + 0xF8, 0xD0, 0x3A, 0x4B, 0x42, 0x46, 0x98, 0x5C, 0x00, 0x23, 0x00, 0x22, + 0x21, 0x00, 0xFD, 0x6E, 0xA8, 0x47, 0xEF, 0xE7, 0x31, 0x00, 0x28, 0x00, + 0xFF, 0xF7, 0x04, 0xFE, 0xB4, 0x23, 0xE0, 0x54, 0x51, 0xE7, 0x29, 0x00, + 0x01, 0x98, 0xFF, 0xF7, 0x53, 0xFE, 0x66, 0xE7, 0xB4, 0x23, 0xE3, 0x5C, + 0x00, 0x2B, 0x2E, 0xD1, 0xAA, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x47, 0xD1, + 0xA9, 0x33, 0xE3, 0x5C, 0x00, 0x2B, 0x43, 0xD1, 0x01, 0x21, 0x20, 0x00, + 0xC9, 0xF7, 0x3A, 0xFF, 0x01, 0x99, 0x61, 0x60, 0x86, 0x23, 0xFA, 0x22, + 0xD2, 0x01, 0xE2, 0x52, 0x21, 0x67, 0x20, 0x33, 0xE3, 0x5C, 0xDB, 0x02, + 0xE0, 0x22, 0x92, 0x01, 0x13, 0x40, 0x26, 0x4A, 0x13, 0x43, 0xA3, 0x82, + 0xFA, 0x23, 0x1B, 0x02, 0x9C, 0x46, 0x61, 0x44, 0x0F, 0x01, 0x3F, 0x09, + 0xE7, 0x60, 0x20, 0x00, 0xC9, 0xF7, 0x7C, 0xFD, 0x00, 0x28, 0x23, 0xD0, + 0x15, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x1C, 0xE0, 0x9E, 0x23, 0xE0, 0x5C, 0xCA, 0xF7, 0xD9, 0xFE, 0x00, 0x23, + 0xAA, 0x22, 0xA3, 0x54, 0x75, 0x3A, 0xBB, 0x54, 0xC6, 0xE7, 0x9E, 0x23, + 0xE0, 0x5C, 0xCA, 0xF7, 0xCF, 0xFE, 0xAA, 0x23, 0x00, 0x22, 0xE2, 0x54, + 0x01, 0x3B, 0xE1, 0x5C, 0x12, 0x48, 0x77, 0xF7, 0xA1, 0xFB, 0x05, 0xE0, + 0x06, 0x4B, 0xDC, 0x6E, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0xA0, 0x47, + 0x02, 0xB0, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x38, 0xE6, 0x10, 0x00, + 0xD8, 0xE5, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, 0x4E, 0x65, 0x61, 0x40, + 0xC8, 0xE6, 0x10, 0x00, 0x7D, 0x03, 0x10, 0x00, 0x20, 0xA3, 0x16, 0x00, + 0x90, 0x69, 0x61, 0x40, 0x92, 0x69, 0x61, 0x40, 0x2C, 0x04, 0x60, 0x40, + 0x90, 0x69, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x34, 0xD6, 0x10, 0x00, + 0x10, 0xB5, 0x82, 0x00, 0x0C, 0x4B, 0xD4, 0x58, 0x00, 0x2C, 0x0E, 0xD0, + 0xA9, 0x23, 0xE3, 0x5C, 0x00, 0x2B, 0x05, 0xD1, 0x09, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xA9, 0x22, 0xA3, 0x5C, + 0x01, 0x3B, 0xA3, 0x54, 0x10, 0xBD, 0x04, 0x4B, 0xDC, 0x6E, 0x00, 0x23, + 0x00, 0x22, 0x00, 0x21, 0xA0, 0x47, 0xF7, 0xE7, 0x38, 0xE6, 0x10, 0x00, + 0x28, 0x19, 0x16, 0x00, 0xF0, 0xB5, 0xC6, 0x46, 0x00, 0xB5, 0x06, 0x00, + 0x0D, 0x00, 0x14, 0x00, 0xCF, 0xB2, 0x06, 0x2F, 0x08, 0xD9, 0xFF, 0x20, + 0x08, 0x40, 0x10, 0x4B, 0xDB, 0x6E, 0x98, 0x46, 0x00, 0x23, 0x00, 0x22, + 0x21, 0x00, 0xC0, 0x47, 0x00, 0x2C, 0x0A, 0xD0, 0x04, 0x2C, 0x0F, 0xD0, + 0xFF, 0x20, 0x28, 0x40, 0x09, 0x4B, 0xDD, 0x6E, 0x00, 0x23, 0x00, 0x22, + 0x21, 0x00, 0xA8, 0x47, 0x03, 0xE0, 0x31, 0x00, 0x38, 0x00, 0xFF, 0xF7, + 0x61, 0xFE, 0x04, 0xBC, 0x90, 0x46, 0xF0, 0xBD, 0x31, 0x00, 0x38, 0x00, + 0xFF, 0xF7, 0xB6, 0xFF, 0xF7, 0xE7, 0xC0, 0x46, 0x28, 0x19, 0x16, 0x00, + 0xF8, 0xB5, 0x05, 0x00, 0x51, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x02, 0xD0, + 0xFE, 0xF7, 0x0E, 0xFD, 0xF8, 0xBD, 0x4F, 0x48, 0x77, 0xF7, 0x22, 0xFB, + 0x4E, 0x4B, 0x1B, 0x68, 0x00, 0x2B, 0x07, 0xD0, 0x4D, 0x4B, 0x9B, 0x6E, + 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0x12, 0x20, 0xEF, 0xE7, + 0x00, 0x21, 0xF8, 0x20, 0x75, 0xF7, 0xE0, 0xFA, 0x46, 0x4B, 0x18, 0x60, + 0x00, 0x28, 0x00, 0xD1, 0x7C, 0xE0, 0x9E, 0xF7, 0x37, 0xFE, 0x06, 0x00, + 0x83, 0xF7, 0xD8, 0xFB, 0x43, 0x4A, 0x13, 0x88, 0x43, 0x49, 0x0B, 0x40, + 0x00, 0x02, 0x03, 0x43, 0x9B, 0xB2, 0x13, 0x80, 0x3D, 0x4B, 0x1C, 0x68, + 0xF8, 0x22, 0x00, 0x21, 0x20, 0x00, 0x73, 0xF7, 0x79, 0xFA, 0x00, 0x23, + 0x63, 0x62, 0x3D, 0x4A, 0xE2, 0x61, 0x3D, 0x4A, 0x22, 0x62, 0x03, 0x22, + 0x22, 0x76, 0x3C, 0x4A, 0x12, 0x78, 0xA2, 0x75, 0x3B, 0x4A, 0x22, 0x61, + 0x05, 0x22, 0xE2, 0x75, 0x99, 0x32, 0xA3, 0x54, 0x01, 0x32, 0x01, 0x21, + 0xA1, 0x54, 0x6B, 0x3A, 0x22, 0x65, 0x6D, 0x32, 0xA3, 0x54, 0x7F, 0xF7, + 0xA9, 0xFA, 0x07, 0x1E, 0x3D, 0xD0, 0x3A, 0x89, 0x94, 0x23, 0xE2, 0x52, + 0x93, 0x3B, 0x01, 0x22, 0x29, 0x00, 0x00, 0x20, 0xFE, 0xF7, 0xE8, 0xFC, + 0x33, 0x00, 0x00, 0x22, 0x29, 0x00, 0x01, 0x20, 0xFF, 0xF7, 0x50, 0xF9, + 0x9E, 0xF7, 0xF8, 0xFD, 0x60, 0x60, 0x00, 0x23, 0x82, 0x22, 0xA3, 0x52, + 0xA3, 0x60, 0x04, 0x32, 0xFA, 0x21, 0xC9, 0x01, 0xA1, 0x52, 0xE6, 0x66, + 0x26, 0x67, 0x63, 0x67, 0xA3, 0x67, 0x00, 0x22, 0xA6, 0x33, 0xE2, 0x54, + 0x23, 0x4B, 0xA3, 0x82, 0xFA, 0x23, 0x1B, 0x02, 0x9C, 0x46, 0x66, 0x44, + 0x36, 0x01, 0x36, 0x09, 0xE6, 0x60, 0x20, 0x00, 0xC9, 0xF7, 0x6C, 0xFC, + 0x00, 0x28, 0x15, 0xD1, 0xA0, 0x23, 0x00, 0x22, 0xE2, 0x54, 0x1C, 0x49, + 0xA1, 0x32, 0xFF, 0x32, 0x8B, 0x5A, 0x01, 0x24, 0x23, 0x43, 0x8B, 0x52, + 0xA0, 0x3A, 0xFF, 0x3A, 0x18, 0x4B, 0x1A, 0x60, 0x78, 0xE7, 0x0E, 0x4B, + 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, 0xBA, 0xE7, + 0x0A, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x98, 0x47, + 0x12, 0x20, 0x69, 0xE7, 0x06, 0x4B, 0x9B, 0x6E, 0x00, 0x22, 0x00, 0x21, + 0x00, 0x20, 0x98, 0x47, 0x12, 0x20, 0x61, 0xE7, 0xD8, 0xE5, 0x10, 0x00, + 0x4C, 0xD6, 0x10, 0x00, 0x38, 0xE6, 0x10, 0x00, 0x28, 0x19, 0x16, 0x00, + 0xFE, 0x64, 0x61, 0x40, 0xFF, 0xF8, 0xFF, 0xFF, 0xA1, 0x04, 0x10, 0x00, + 0xD3, 0x01, 0x10, 0x00, 0x7C, 0x91, 0x0D, 0x00, 0x6A, 0x04, 0x00, 0x00, + 0x00, 0x80, 0xFF, 0xFF, 0x20, 0xA3, 0x16, 0x00, 0xC8, 0xE6, 0x10, 0x00, + 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x0A, 0x48, 0x77, 0xF7, 0x68, 0xFA, + 0xA1, 0x78, 0x4A, 0x10, 0x01, 0x23, 0x1A, 0x40, 0x07, 0x48, 0x02, 0x70, + 0x0B, 0x40, 0xA3, 0x70, 0x20, 0x00, 0xFF, 0xF7, 0x85, 0xF9, 0x01, 0x00, + 0x28, 0x00, 0xFA, 0xF7, 0x8B, 0xF9, 0x00, 0x20, 0x70, 0xBD, 0xC0, 0x46, + 0x60, 0xD6, 0x10, 0x00, 0xDC, 0xE5, 0x10, 0x00, 0x70, 0xB5, 0x05, 0x00, + 0x0C, 0x00, 0x06, 0x48, 0x77, 0xF7, 0x4C, 0xFA, 0x28, 0x00, 0xFF, 0xF7, + 0x1B, 0xFF, 0x01, 0x00, 0x20, 0x00, 0xFA, 0xF7, 0x77, 0xF9, 0x00, 0x20, + 0x70, 0xBD, 0xC0, 0x46, 0x68, 0xD6, 0x10, 0x00, 0x10, 0xB5, 0xFF, 0xF7, + 0x51, 0xF8, 0x00, 0x20, 0x10, 0xBD, 0x00, 0x00, 0x10, 0xB5, 0x0E, 0x4B, + 0x1B, 0x68, 0x00, 0x2B, 0x17, 0xD0, 0xDC, 0x68, 0x18, 0x23, 0x0D, 0x22, + 0x00, 0x21, 0x0B, 0x48, 0x75, 0xF7, 0x2A, 0xF9, 0xFF, 0x23, 0x03, 0x70, + 0xA3, 0x88, 0x43, 0x80, 0x00, 0x23, 0x03, 0x71, 0x43, 0x71, 0x23, 0x69, + 0x83, 0x60, 0x63, 0x69, 0xC3, 0x60, 0xE3, 0x69, 0x03, 0x61, 0xE3, 0x6A, + 0x43, 0x61, 0xC6, 0xF7, 0x79, 0xFF, 0x10, 0xBD, 0xD8, 0xE5, 0x10, 0x00, + 0x03, 0x11, 0x00, 0x00, 0x70, 0xB5, 0x04, 0x00, 0x0D, 0x00, 0x01, 0x78, + 0x0A, 0x48, 0x77, 0xF7, 0x11, 0xFA, 0x23, 0x78, 0x00, 0x2B, 0x07, 0xD0, + 0x01, 0x2B, 0x08, 0xD0, 0x00, 0x21, 0x28, 0x00, 0xFA, 0xF7, 0x3A, 0xF9, + 0x00, 0x20, 0x70, 0xBD, 0xFE, 0xF7, 0x6E, 0xFB, 0xF6, 0xE7, 0xFF, 0xF7, + 0xC7, 0xFF, 0xFE, 0xF7, 0x69, 0xFB, 0xF1, 0xE7, 0x70, 0xD6, 0x10, 0x00, + 0x45, 0x54, 0x45, 0x52, 0x52, 0x3A, 0x0A, 0x00, 0x77, 0x61, 0x6B, 0x65, + 0x75, 0x70, 0x5F, 0x68, 0x6F, 0x73, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x6F, 0x77, 0x65, 0x72, 0x5F, 0x75, 0x70, 0x5F, 0x68, 0x6F, 0x73, + 0x74, 0x0A, 0x00, 0x00, 0x75, 0x61, 0x72, 0x74, 0x5F, 0x69, 0x6E, 0x69, + 0x74, 0x0A, 0x00, 0x00, 0x70, 0x5F, 0x73, 0x5F, 0x70, 0x00, 0x00, 0x00, + 0x77, 0x69, 0x66, 0x69, 0x5F, 0x63, 0x68, 0x5F, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE6, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xF6, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0x1A, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0x42, 0x1B, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0x66, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0x8E, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xBA, 0x1B, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xE6, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0x0C, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0x32, 0x1C, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0x5C, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0x82, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA2, 0x1C, 0x10, 0x00, + 0xC4, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0x16, 0x1B, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0x3E, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0x62, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0x8A, 0x1B, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xB6, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xE2, 0x1B, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0x08, 0x1C, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0x2E, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0x58, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0x7E, 0x1C, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0x9E, 0x1C, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, 0xA8, 0x1A, 0x10, 0x00, + 0xC0, 0x1C, 0x10, 0x00, 0x30, 0x78, 0x34, 0x30, 0x33, 0x34, 0x33, 0x30, + 0x30, 0x34, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x43, 0x54, 0x53, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x20, 0x0A, 0x00, + 0xE2, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, + 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, + 0x52, 0x1E, 0x10, 0x00, 0xE4, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, + 0x78, 0x1D, 0x10, 0x00, 0xE2, 0x1D, 0x10, 0x00, 0x78, 0x1D, 0x10, 0x00, + 0x78, 0x1D, 0x10, 0x00, 0x6D, 0x64, 0x6C, 0x6C, 0x5F, 0x72, 0x65, 0x63, + 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x62, 0x64, 0x5F, 0x61, + 0x64, 0x64, 0x72, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, + 0x77, 0x69, 0x66, 0x69, 0x6D, 0x61, 0x63, 0x5F, 0x61, 0x64, 0x64, 0x72, + 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x66, 0x6C, 0x61, 0x73, + 0x68, 0x6D, 0x61, 0x63, 0x5F, 0x61, 0x64, 0x64, 0x72, 0x3A, 0x25, 0x78, + 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4E, 0x43, 0x52, + 0x5F, 0x50, 0x57, 0x52, 0x5F, 0x52, 0x45, 0x51, 0x0A, 0x00, 0x00, 0x00, + 0x50, 0x57, 0x52, 0x5F, 0x43, 0x54, 0x52, 0x4C, 0x5F, 0x52, 0x45, 0x51, + 0x0A, 0x00, 0x00, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x74, 0x65, 0x5F, 0x6D, + 0x61, 0x78, 0x5F, 0x70, 0x77, 0x72, 0x0A, 0x00, 0x61, 0x66, 0x68, 0x74, + 0x6F, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x74, 0x78, 0x5F, 0x61, + 0x62, 0x6F, 0x72, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x3A, 0x25, 0x78, + 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, + 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x73, 0x73, 0x69, + 0x3A, 0x20, 0x25, 0x78, 0x2C, 0x20, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x73, 0x6D, 0x75, 0x74, 0x65, 0x0A, 0x00, 0x00, 0x72, 0x78, 0x5F, 0x69, + 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x3A, 0x25, 0x78, 0x2C, 0x25, 0x78, + 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x65, 0x72, 0x72, 0x3A, + 0x25, 0x78, 0x0A, 0x00, 0x64, 0x75, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, + 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x66, 0x69, 0x20, 0x63, + 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x69, 0x6F, 0x6E, 0x0A, 0x00, 0x00, 0x00, + 0x75, 0x6D, 0x72, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x55, 0x4E, 0x44, 0x45, + 0x46, 0x20, 0x56, 0x45, 0x4E, 0x44, 0x4F, 0x52, 0x5F, 0x49, 0x4E, 0x46, + 0x4F, 0x0A, 0x00, 0x00, 0x55, 0x4E, 0x4B, 0x4E, 0x4F, 0x57, 0x20, 0x56, + 0x45, 0x4E, 0x44, 0x4F, 0x52, 0x5F, 0x49, 0x4E, 0x46, 0x4F, 0x3A, 0x25, + 0x78, 0x0A, 0x00, 0x00, 0x69, 0x6E, 0x69, 0x74, 0x3A, 0x25, 0x78, 0x2C, + 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x5C, 0x10, 0x00, 0x70, 0x5C, 0x10, 0x00, + 0x78, 0x5C, 0x10, 0x00, 0x38, 0x5C, 0x10, 0x00, 0x70, 0x5C, 0x10, 0x00, + 0x76, 0x65, 0x72, 0x3A, 0x25, 0x73, 0x0A, 0x00, 0x6C, 0x6D, 0x74, 0x3A, + 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x72, 0x65, 0x6A, 0x65, + 0x63, 0x74, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5F, 0x61, + 0x70, 0x63, 0x66, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x6A, 0x65, + 0x63, 0x74, 0x32, 0x3A, 0x25, 0x78, 0x00, 0x00, 0x92, 0x73, 0x10, 0x00, + 0xC6, 0x72, 0x10, 0x00, 0x86, 0x73, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, + 0x92, 0x73, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, 0xC6, 0x72, 0x10, 0x00, + 0x8C, 0x73, 0x10, 0x00, 0xC0, 0x72, 0x10, 0x00, 0x6E, 0x6F, 0x61, 0x6C, + 0x63, 0x62, 0x75, 0x66, 0x0A, 0x00, 0x00, 0x00, 0x62, 0x62, 0x5F, 0x74, + 0x78, 0x5F, 0x74, 0x6F, 0x6E, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, + 0x6F, 0x70, 0x6D, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x6D, 0x73, 0x73, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x6D, 0x73, 0x73, 0x65, 0x72, 0x72, 0x0A, 0x00, + 0x46, 0x4C, 0x55, 0x53, 0x48, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x4C, 0x54, 0x4B, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x25, 0x78, 0x20, 0x00, + 0x6F, 0x70, 0x63, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x69, 0x20, 0x3D, 0x20, + 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x69, 0x3A, 0x25, 0x78, + 0x0A, 0x00, 0x00, 0x00, 0x6F, 0x70, 0x6C, 0x6C, 0x6D, 0x3A, 0x25, 0x78, + 0x0A, 0x00, 0x00, 0x00, 0x1E, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xBE, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xDA, 0x89, 0x10, 0x00, + 0xDA, 0x89, 0x10, 0x00, 0xFC, 0x89, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xDA, 0x89, 0x10, 0x00, 0xDA, 0x89, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0x4C, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xE8, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, 0xF4, 0x8A, 0x10, 0x00, + 0xF4, 0x8A, 0x10, 0x00, 0x62, 0x8A, 0x10, 0x00, 0x55, 0x50, 0x3A, 0x25, + 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, + 0x6F, 0x70, 0x6C, 0x6C, 0x63, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x6C, 0x6C, 0x63, 0x72, 0x78, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x6C, 0x6C, 0x63, 0x74, 0x6D, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, + 0x61, 0x70, 0x63, 0x66, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x6C, 0x61, 0x74, 0x65, 0x6E, 0x63, 0x79, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x72, 0x66, 0x5F, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3A, 0x25, 0x78, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x52, 0x52, 0x3A, 0x25, 0x78, 0x2C, 0x25, + 0x78, 0x2C, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x41, 0x53, 0x53, 0x45, + 0x52, 0x54, 0x5F, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, 0x47, 0x28, 0x25, + 0x73, 0x29, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x61, 0x74, + 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, + 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x5F, 0x45, 0x52, 0x52, 0x7A, 0x28, + 0x25, 0x73, 0x29, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x61, + 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, + 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x5F, 0x50, 0x41, 0x52, 0x41, 0x4D, + 0x7A, 0x28, 0x30, 0x78, 0x25, 0x58, 0x2C, 0x20, 0x30, 0x78, 0x25, 0x58, + 0x29, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x78, 0x20, 0x61, 0x74, 0x20, + 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x67, 0x65, 0x5F, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x00, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78, 0x0D, 0x0A, 0x00, + 0x64, 0x65, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x25, 0x64, 0x0D, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0x3A, 0x30, 0x78, 0x25, 0x78, 0x20, + 0x30, 0x78, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6E, + 0x5F, 0x65, 0x6E, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x63, 0x68, 0x65, 0x72, + 0x72, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x74, 0x65, 0x73, 0x74, + 0x5F, 0x6D, 0x6F, 0x64, 0x65, 0x5F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3A, + 0x25, 0x78, 0x0A, 0x00, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x6D, 0x6F, 0x64, + 0x65, 0x5F, 0x65, 0x78, 0x69, 0x74, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, + 0x74, 0x73, 0x74, 0x5F, 0x65, 0x6E, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x6C, 0x64, 0x5F, 0x62, 0x62, 0x5F, 0x74, 0x73, 0x74, 0x5F, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0x65, 0x64, 0x72, 0x5F, 0x70, 0x6B, 0x74, 0x3D, 0x25, 0x78, 0x00, 0x00, + 0x66, 0x72, 0x65, 0x71, 0x25, 0x78, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xB8, 0x10, 0x00, 0xB4, 0xB9, 0x10, 0x00, 0x94, 0xBA, 0x10, 0x00, + 0xF2, 0xB8, 0x10, 0x00, 0xB0, 0xBA, 0x10, 0x00, 0xCC, 0xBA, 0x10, 0x00, + 0xE8, 0xBA, 0x10, 0x00, 0x04, 0xBB, 0x10, 0x00, 0x70, 0x6F, 0x3A, 0x25, + 0x34, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, + 0x68, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x63, 0x65, 0x3A, 0x25, + 0x34, 0x64, 0x2C, 0x20, 0x6F, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, + 0x63, 0x6F, 0x6C, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x70, 0x6E, + 0x3A, 0x25, 0x34, 0x64, 0x20, 0x62, 0x63, 0x3A, 0x25, 0x37, 0x64, 0x2C, + 0x20, 0x62, 0x65, 0x3A, 0x25, 0x37, 0x64, 0x2C, 0x20, 0x70, 0x65, 0x72, + 0x3A, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2C, 0x20, 0x62, 0x65, 0x72, 0x3A, + 0x25, 0x64, 0x2E, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x70, 0x6F, 0x3A, 0x25, + 0x34, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, + 0x68, 0x65, 0x3A, 0x25, 0x34, 0x64, 0x2C, 0x20, 0x63, 0x65, 0x3A, 0x25, + 0x34, 0x64, 0x2C, 0x20, 0x62, 0x63, 0x3A, 0x25, 0x37, 0x64, 0x2C, 0x20, + 0x62, 0x65, 0x3A, 0x25, 0x37, 0x64, 0x2C, 0x20, 0x70, 0x65, 0x72, 0x3A, + 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2C, 0x20, 0x62, 0x65, 0x72, 0x3A, 0x25, + 0x64, 0x2E, 0x25, 0x64, 0x0D, 0x0A, 0x00, 0x00, 0x6C, 0x64, 0x5F, 0x62, + 0x62, 0x5F, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5F, 0x74, 0x78, 0x5F, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x72, 0x78, 0x61, 0x62, + 0x6F, 0x72, 0x74, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x73, 0x63, 0x68, 0x5F, + 0x70, 0x72, 0x6F, 0x67, 0x5F, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, + 0x3A, 0x25, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x64, 0x5F, 0x62, + 0x62, 0x5F, 0x72, 0x78, 0x5F, 0x74, 0x73, 0x74, 0x5F, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x0A, 0x00, 0x74, 0x78, 0x5F, 0x74, 0x73, 0x74, 0x0A, 0x00, + 0x72, 0x78, 0x5F, 0x74, 0x73, 0x74, 0x0A, 0x00, 0x62, 0x62, 0x5F, 0x74, + 0x73, 0x74, 0x5F, 0x73, 0x74, 0x6F, 0x70, 0x3A, 0x25, 0x78, 0x0A, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0x03, 0x00, 0x00, + 0xFF, 0xC1, 0xFB, 0xE8, 0x4C, 0x90, 0x72, 0x8B, 0xE7, 0xB3, 0x51, 0x89, + 0x63, 0xAB, 0x23, 0x23, 0x02, 0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, + 0x51, 0xA8, 0xE5, 0x37, 0x49, 0xFB, 0xC9, 0xCA, 0x0C, 0x18, 0x53, 0x2C, + 0xFD, 0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, 0xB6, 0x1B, 0xB4, 0xBE, + 0x2A, 0x50, 0xEA, 0xE9, 0x0E, 0x9C, 0x4B, 0x5E, 0x57, 0x24, 0xCC, 0xA1, + 0xB7, 0x59, 0xB8, 0x87, 0xFF, 0xE0, 0x7D, 0x74, 0x26, 0x48, 0xB9, 0xC5, + 0xF3, 0xD9, 0xA8, 0xC4, 0xB1, 0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, + 0xD5, 0xB0, 0x97, 0x9D, 0x28, 0xD4, 0xF2, 0x9B, 0xA4, 0xFD, 0x64, 0x65, + 0x06, 0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, 0xF3, 0xF8, 0x2E, 0x58, + 0xDB, 0x0D, 0x5A, 0x5F, 0x15, 0x28, 0xF5, 0x74, 0x07, 0xCE, 0x25, 0xAF, + 0x2B, 0x12, 0xE6, 0xD0, 0xDB, 0x2C, 0xDC, 0xC3, 0x7F, 0xF0, 0x3E, 0x3A, + 0x13, 0xA4, 0xDC, 0xE2, 0xF9, 0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, + 0x00, 0x21, 0x86, 0x9C, 0x6A, 0xD8, 0xCB, 0x4E, 0x14, 0x6A, 0xF9, 0x4D, + 0xD2, 0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, 0x7F, 0xD1, 0xB8, 0xA6, + 0x79, 0x7C, 0x17, 0xAC, 0xED, 0x06, 0xAD, 0xAF, 0x0A, 0x94, 0x7A, 0xBA, + 0x03, 0xE7, 0x92, 0xD7, 0x15, 0x09, 0x73, 0xE8, 0x6D, 0x16, 0xEE, 0xE1, + 0x3F, 0x78, 0x1F, 0x9D, 0x09, 0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, + 0x6C, 0x75, 0x64, 0x44, 0x80, 0x10, 0x43, 0x4E, 0x35, 0xEC, 0x65, 0x27, + 0x0A, 0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, 0x01, 0x63, 0x8A, 0xA5, + 0xBF, 0x68, 0x5C, 0xD3, 0x3C, 0xBE, 0x0B, 0xD6, 0x76, 0x83, 0xD6, 0x57, + 0x05, 0x4A, 0x3D, 0xDD, 0x81, 0x73, 0xC9, 0xEB, 0x8A, 0x84, 0x39, 0xF4, + 0x36, 0x0B, 0xF7, 0xF0, 0x1F, 0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, + 0x3E, 0x1B, 0x95, 0x38, 0xB6, 0x3A, 0x32, 0x22, 0x40, 0x88, 0x21, 0xA7, + 0x1A, 0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, 0xB4, 0x9F, 0xAC, 0xCC, + 0x80, 0x31, 0xC5, 0xD2, 0x5F, 0x34, 0xAE, 0x69, 0x1E, 0xDF, 0x05, 0x6B, + 0xBB, 0x41, 0xEB, 0xAB, 0x02, 0xA5, 0x9E, 0xEE, 0xC0, 0xB9, 0xE4, 0x75, + 0x45, 0xC2, 0x1C, 0x7A, 0x9B, 0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, + 0x82, 0x94, 0x5B, 0x3C, 0x9F, 0x8D, 0x4A, 0x1C, 0x5B, 0x1D, 0x19, 0x11, + 0x20, 0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, 0x42, 0x2D, 0xBF, 0x49, + 0xDA, 0x4F, 0x56, 0x66, 0xC0, 0x98, 0x62, 0xE9, 0x2F, 0x1A, 0xD7, 0x34, + 0x8F, 0xEF, 0x82, 0xB5, 0xDD, 0xA0, 0xF5, 0x55, 0x81, 0x52, 0x4F, 0x77, + 0xE0, 0x5C, 0xF2, 0xBA, 0x22, 0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, + 0x07, 0xEF, 0xA3, 0x33, 0x41, 0xCA, 0x2D, 0x9E, 0xCF, 0x46, 0x25, 0x8E, + 0xAD, 0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, 0x86, 0xBD, 0xEC, 0x44, + 0xA1, 0x96, 0xDF, 0x24, 0xED, 0x27, 0x2B, 0x33, 0x60, 0x4C, 0xB1, 0xF4, + 0x17, 0x8D, 0x6B, 0x9A, 0xC7, 0x77, 0xC1, 0xDA, 0x6E, 0xD0, 0xFA, 0xAA, + 0x40, 0xA9, 0xA7, 0x3B, 0x70, 0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, + 0x66, 0xE1, 0x1E, 0xFE, 0x83, 0xF7, 0xD1, 0x99, 0x20, 0xE5, 0x16, 0xCF, + 0x67, 0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, 0x08, 0x31, 0xE4, 0x54, + 0xC3, 0x5E, 0x76, 0xA2, 0x50, 0xCB, 0x6F, 0x92, 0xF6, 0x93, 0x95, 0x19, + 0x30, 0xA6, 0x58, 0xFA, 0x8B, 0xC6, 0x35, 0xCD, 0xE3, 0xBB, 0x60, 0x6D, + 0x37, 0x68, 0x7D, 0x55, 0xA0, 0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, + 0x48, 0x98, 0x43, 0x6F, 0xB3, 0x70, 0x0F, 0xFF, 0xC1, 0xFB, 0xE8, 0x4C, + 0x90, 0x72, 0x8B, 0xE7, 0xB3, 0x51, 0x89, 0x63, 0xAB, 0x23, 0x23, 0x02, + 0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, 0x51, 0xA8, 0xE5, 0x37, 0x49, + 0xFB, 0xC9, 0xCA, 0x0C, 0x18, 0x53, 0x2C, 0xFD, 0x45, 0xE3, 0x9A, 0xE6, + 0xF1, 0x5D, 0xB0, 0xB6, 0x1B, 0xB4, 0xBE, 0x2A, 0x50, 0xEA, 0xE9, 0x0E, + 0x9C, 0x4B, 0x5E, 0x57, 0x24, 0xCC, 0xA1, 0xB7, 0x59, 0xB8, 0x87, 0xFF, + 0xE0, 0x7D, 0x74, 0x26, 0x48, 0xB9, 0xC5, 0xF3, 0xD9, 0xA8, 0xC4, 0xB1, + 0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, 0xD5, 0xB0, 0x97, 0x9D, 0x28, + 0xD4, 0xF2, 0x9B, 0xA4, 0xFD, 0x64, 0x65, 0x06, 0x8C, 0x29, 0x96, 0xFE, + 0xA2, 0x71, 0x4D, 0xF3, 0xF8, 0x2E, 0x58, 0xDB, 0x0D, 0x5A, 0x5F, 0x15, + 0x28, 0xF5, 0x74, 0x07, 0xCE, 0x25, 0xAF, 0x2B, 0x12, 0xE6, 0xD0, 0xDB, + 0x2C, 0xDC, 0xC3, 0x7F, 0xF0, 0x3E, 0x3A, 0x13, 0xA4, 0xDC, 0xE2, 0xF9, + 0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, 0x00, 0x21, 0x86, 0x9C, 0x6A, + 0xD8, 0xCB, 0x4E, 0x14, 0x6A, 0xF9, 0x4D, 0xD2, 0x7E, 0xB2, 0x32, 0x03, + 0xC6, 0x14, 0x4B, 0x7F, 0xD1, 0xB8, 0xA6, 0x79, 0x7C, 0x17, 0xAC, 0xED, + 0x06, 0xAD, 0xAF, 0x0A, 0x94, 0x7A, 0xBA, 0x03, 0xE7, 0x92, 0xD7, 0x15, + 0x09, 0x73, 0xE8, 0x6D, 0x16, 0xEE, 0xE1, 0x3F, 0x78, 0x1F, 0x9D, 0x09, + 0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, 0x6C, 0x75, 0x64, 0x44, 0x80, + 0x10, 0x43, 0x4E, 0x35, 0xEC, 0x65, 0x27, 0x0A, 0xB5, 0xFC, 0x26, 0x69, + 0x3F, 0x59, 0x99, 0x01, 0x63, 0x8A, 0xA5, 0xBF, 0x68, 0x5C, 0xD3, 0x3C, + 0xBE, 0x0B, 0xD6, 0x76, 0x83, 0xD6, 0x57, 0x05, 0x4A, 0x3D, 0xDD, 0x81, + 0x73, 0xC9, 0xEB, 0x8A, 0x84, 0x39, 0xF4, 0x36, 0x0B, 0xF7, 0xF0, 0x1F, + 0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, 0x3E, 0x1B, 0x95, 0x38, 0xB6, + 0x3A, 0x32, 0x22, 0x40, 0x88, 0x21, 0xA7, 0x1A, 0xF6, 0xB2, 0x13, 0x85, + 0x5A, 0x7E, 0x93, 0xB4, 0x9F, 0xAC, 0xCC, 0x80, 0x31, 0xC5, 0xD2, 0x5F, + 0x34, 0xAE, 0x69, 0x1E, 0xDF, 0x05, 0x6B, 0xBB, 0x41, 0xEB, 0xAB, 0x02, + 0xA5, 0x9E, 0xEE, 0xC0, 0xB9, 0xE4, 0x75, 0x45, 0xC2, 0x1C, 0x7A, 0x9B, + 0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, 0x82, 0x94, 0x5B, 0x3C, 0x9F, + 0x8D, 0x4A, 0x1C, 0x5B, 0x1D, 0x19, 0x11, 0x20, 0xC4, 0x90, 0x53, 0x0D, + 0x7B, 0xD9, 0x89, 0x42, 0x2D, 0xBF, 0x49, 0xDA, 0x4F, 0x56, 0x66, 0xC0, + 0x98, 0x62, 0xE9, 0x2F, 0x1A, 0xD7, 0x34, 0x8F, 0xEF, 0x82, 0xB5, 0xDD, + 0xA0, 0xF5, 0x55, 0x81, 0x52, 0x4F, 0x77, 0xE0, 0x5C, 0xF2, 0xBA, 0x22, + 0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, 0x07, 0xEF, 0xA3, 0x33, 0x41, + 0xCA, 0x2D, 0x9E, 0xCF, 0x46, 0x25, 0x8E, 0xAD, 0x8E, 0x8C, 0x08, 0x10, + 0x62, 0xC8, 0xA9, 0x86, 0xBD, 0xEC, 0x44, 0xA1, 0x96, 0xDF, 0x24, 0xED, + 0x27, 0x2B, 0x33, 0x60, 0x4C, 0xB1, 0xF4, 0x17, 0x8D, 0x6B, 0x9A, 0xC7, + 0x77, 0xC1, 0xDA, 0x6E, 0xD0, 0xFA, 0xAA, 0x40, 0xA9, 0xA7, 0x3B, 0x70, + 0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, 0x66, 0xE1, 0x1E, 0xFE, 0x83, + 0xF7, 0xD1, 0x99, 0x20, 0xE5, 0x16, 0xCF, 0x67, 0xA3, 0x12, 0xC7, 0x56, + 0x47, 0x46, 0x04, 0x08, 0x31, 0xE4, 0x54, 0xC3, 0x5E, 0x76, 0xA2, 0x50, + 0xCB, 0x6F, 0x92, 0xF6, 0x93, 0x95, 0x19, 0x30, 0xA6, 0x58, 0xFA, 0x8B, + 0xC6, 0x35, 0xCD, 0xE3, 0xBB, 0x60, 0x6D, 0x37, 0x68, 0x7D, 0x55, 0xA0, + 0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, 0x48, 0x98, 0x43, 0x6F, 0xB3, + 0x70, 0x0F, 0xFF, 0xC1, 0xFF, 0xC1, 0xFB, 0xE8, 0x4C, 0x90, 0x72, 0x8B, + 0xE7, 0xB3, 0x51, 0x89, 0x63, 0xAB, 0x23, 0x23, 0x02, 0x84, 0x18, 0x72, + 0xAA, 0x61, 0x2F, 0x3B, 0x51, 0xA8, 0xE5, 0x37, 0x49, 0xFB, 0xC9, 0xCA, + 0x0C, 0x18, 0x53, 0x2C, 0xFD, 0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, + 0xB6, 0x1B, 0xB4, 0xBE, 0x2A, 0x50, 0xEA, 0xE9, 0x0E, 0x9C, 0x4B, 0x5E, + 0x57, 0x24, 0xCC, 0xA1, 0xB7, 0x59, 0xB8, 0x87, 0xFF, 0xE0, 0x7D, 0x74, + 0x26, 0x48, 0xB9, 0xC5, 0xF3, 0xD9, 0xA8, 0xC4, 0xB1, 0xD5, 0x91, 0x11, + 0x01, 0x42, 0x0C, 0x39, 0xD5, 0xB0, 0x97, 0x9D, 0x28, 0xD4, 0xF2, 0x9B, + 0xA4, 0xFD, 0x64, 0x65, 0x06, 0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, + 0xF3, 0xF8, 0x2E, 0x58, 0xDB, 0x0D, 0x5A, 0x5F, 0x15, 0x28, 0xF5, 0x74, + 0x07, 0xCE, 0x25, 0xAF, 0x2B, 0x12, 0xE6, 0xD0, 0xDB, 0x2C, 0xDC, 0xC3, + 0x7F, 0xF0, 0x3E, 0x3A, 0x13, 0xA4, 0xDC, 0xE2, 0xF9, 0x6C, 0x54, 0xE2, + 0xD8, 0xEA, 0xC8, 0x88, 0x00, 0x21, 0x86, 0x9C, 0x6A, 0xD8, 0xCB, 0x4E, + 0x14, 0x6A, 0xF9, 0x4D, 0xD2, 0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, + 0x7F, 0xD1, 0xB8, 0xA6, 0x79, 0x7C, 0x17, 0xAC, 0xED, 0x06, 0xAD, 0xAF, + 0x0A, 0x94, 0x7A, 0xBA, 0x03, 0xE7, 0x92, 0xD7, 0x15, 0x09, 0x73, 0xE8, + 0x6D, 0x16, 0xEE, 0xE1, 0x3F, 0x78, 0x1F, 0x9D, 0x09, 0x52, 0x6E, 0xF1, + 0x7C, 0x36, 0x2A, 0x71, 0x6C, 0x75, 0x64, 0x44, 0x80, 0x10, 0x43, 0x4E, + 0x35, 0xEC, 0x65, 0x27, 0x0A, 0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, + 0x01, 0x63, 0x8A, 0xA5, 0xBF, 0x68, 0x5C, 0xD3, 0x3C, 0xBE, 0x0B, 0xD6, + 0x76, 0x83, 0xD6, 0x57, 0x05, 0x4A, 0x3D, 0xDD, 0x81, 0x73, 0xC9, 0xEB, + 0x8A, 0x84, 0x39, 0xF4, 0x36, 0x0B, 0xF7, 0xF0, 0x1F, 0xBC, 0x8F, 0xCE, + 0x04, 0x29, 0xB7, 0x78, 0x3E, 0x1B, 0x95, 0x38, 0xB6, 0x3A, 0x32, 0x22, + 0x40, 0x88, 0x21, 0xA7, 0x1A, 0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, + 0xB4, 0x9F, 0xAC, 0xCC, 0x80, 0x31, 0xC5, 0xD2, 0x5F, 0x34, 0xAE, 0x69, + 0x1E, 0xDF, 0x05, 0x6B, 0xBB, 0x41, 0xEB, 0xAB, 0x02, 0xA5, 0x9E, 0xEE, + 0xC0, 0xB9, 0xE4, 0x75, 0x45, 0xC2, 0x1C, 0x7A, 0x9B, 0x85, 0x7B, 0xF8, + 0x0F, 0xDE, 0x47, 0x67, 0x82, 0x94, 0x5B, 0x3C, 0x9F, 0x8D, 0x4A, 0x1C, + 0x5B, 0x1D, 0x19, 0x11, 0x20, 0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, + 0x42, 0x2D, 0xBF, 0x49, 0xDA, 0x4F, 0x56, 0x66, 0xC0, 0x98, 0x62, 0xE9, + 0x2F, 0x1A, 0xD7, 0x34, 0x8F, 0xEF, 0x82, 0xB5, 0xDD, 0xA0, 0xF5, 0x55, + 0x81, 0x52, 0x4F, 0x77, 0xE0, 0x5C, 0xF2, 0xBA, 0x22, 0x61, 0x0E, 0xBD, + 0xCD, 0xC2, 0x3D, 0xFC, 0x07, 0xEF, 0xA3, 0x33, 0x41, 0xCA, 0x2D, 0x9E, + 0xCF, 0x46, 0x25, 0x8E, 0xAD, 0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, + 0x86, 0xBD, 0xEC, 0x44, 0xA1, 0x96, 0xDF, 0x24, 0xED, 0x27, 0x2B, 0x33, + 0x60, 0x4C, 0xB1, 0xF4, 0x17, 0x8D, 0x6B, 0x9A, 0xC7, 0x77, 0xC1, 0xDA, + 0x6E, 0xD0, 0xFA, 0xAA, 0x40, 0xA9, 0xA7, 0x3B, 0x70, 0x2E, 0x79, 0x5D, + 0x91, 0x30, 0x87, 0xDE, 0x66, 0xE1, 0x1E, 0xFE, 0x83, 0xF7, 0xD1, 0x99, + 0x20, 0xE5, 0x16, 0xCF, 0x67, 0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, + 0x08, 0x31, 0xE4, 0x54, 0xC3, 0x5E, 0x76, 0xA2, 0x50, 0xCB, 0x6F, 0x92, + 0xF6, 0x93, 0x95, 0x19, 0x30, 0xA6, 0x58, 0xFA, 0x8B, 0xC6, 0x35, 0xCD, + 0xE3, 0xBB, 0x60, 0x6D, 0x37, 0x68, 0x7D, 0x55, 0xA0, 0xD4, 0xD3, 0x1D, + 0x38, 0x97, 0xBC, 0xAE, 0x48, 0x98, 0x43, 0x6F, 0xB3, 0x70, 0x0F, 0xFF, + 0xC1, 0xFB, 0xE8, 0x4C, 0x90, 0x72, 0x8B, 0xE7, 0xB3, 0x51, 0x89, 0x63, + 0xAB, 0x23, 0x23, 0x02, 0x84, 0x18, 0x72, 0xAA, 0x61, 0x2F, 0x3B, 0x51, + 0xA8, 0xE5, 0x37, 0x49, 0xFB, 0xC9, 0xCA, 0x0C, 0x18, 0x53, 0x2C, 0xFD, + 0x45, 0xE3, 0x9A, 0xE6, 0xF1, 0x5D, 0xB0, 0xB6, 0x1B, 0xB4, 0xBE, 0x2A, + 0x50, 0xEA, 0xE9, 0x0E, 0x9C, 0x4B, 0x5E, 0x57, 0x24, 0xCC, 0xA1, 0xB7, + 0x59, 0xB8, 0x87, 0xFF, 0xE0, 0x7D, 0x74, 0x26, 0x48, 0xB9, 0xC5, 0xF3, + 0xD9, 0xA8, 0xC4, 0xB1, 0xD5, 0x91, 0x11, 0x01, 0x42, 0x0C, 0x39, 0xD5, + 0xB0, 0x97, 0x9D, 0x28, 0xD4, 0xF2, 0x9B, 0xA4, 0xFD, 0x64, 0x65, 0x06, + 0x8C, 0x29, 0x96, 0xFE, 0xA2, 0x71, 0x4D, 0xF3, 0xF8, 0x2E, 0x58, 0xDB, + 0x0D, 0x5A, 0x5F, 0x15, 0x28, 0xF5, 0x74, 0x07, 0xCE, 0x25, 0xAF, 0x2B, + 0x12, 0xE6, 0xD0, 0xDB, 0x2C, 0xDC, 0xC3, 0x7F, 0xF0, 0x3E, 0x3A, 0x13, + 0xA4, 0xDC, 0xE2, 0xF9, 0x6C, 0x54, 0xE2, 0xD8, 0xEA, 0xC8, 0x88, 0x00, + 0x21, 0x86, 0x9C, 0x6A, 0xD8, 0xCB, 0x4E, 0x14, 0x6A, 0xF9, 0x4D, 0xD2, + 0x7E, 0xB2, 0x32, 0x03, 0xC6, 0x14, 0x4B, 0x7F, 0xD1, 0xB8, 0xA6, 0x79, + 0x7C, 0x17, 0xAC, 0xED, 0x06, 0xAD, 0xAF, 0x0A, 0x94, 0x7A, 0xBA, 0x03, + 0xE7, 0x92, 0xD7, 0x15, 0x09, 0x73, 0xE8, 0x6D, 0x16, 0xEE, 0xE1, 0x3F, + 0x78, 0x1F, 0x9D, 0x09, 0x52, 0x6E, 0xF1, 0x7C, 0x36, 0x2A, 0x71, 0x6C, + 0x75, 0x64, 0x44, 0x80, 0x10, 0x43, 0x4E, 0x35, 0xEC, 0x65, 0x27, 0x0A, + 0xB5, 0xFC, 0x26, 0x69, 0x3F, 0x59, 0x99, 0x01, 0x63, 0x8A, 0xA5, 0xBF, + 0x68, 0x5C, 0xD3, 0x3C, 0xBE, 0x0B, 0xD6, 0x76, 0x83, 0xD6, 0x57, 0x05, + 0x4A, 0x3D, 0xDD, 0x81, 0x73, 0xC9, 0xEB, 0x8A, 0x84, 0x39, 0xF4, 0x36, + 0x0B, 0xF7, 0xF0, 0x1F, 0xBC, 0x8F, 0xCE, 0x04, 0x29, 0xB7, 0x78, 0x3E, + 0x1B, 0x95, 0x38, 0xB6, 0x3A, 0x32, 0x22, 0x40, 0x88, 0x21, 0xA7, 0x1A, + 0xF6, 0xB2, 0x13, 0x85, 0x5A, 0x7E, 0x93, 0xB4, 0x9F, 0xAC, 0xCC, 0x80, + 0x31, 0xC5, 0xD2, 0x5F, 0x34, 0xAE, 0x69, 0x1E, 0xDF, 0x05, 0x6B, 0xBB, + 0x41, 0xEB, 0xAB, 0x02, 0xA5, 0x9E, 0xEE, 0xC0, 0xB9, 0xE4, 0x75, 0x45, + 0xC2, 0x1C, 0x7A, 0x9B, 0x85, 0x7B, 0xF8, 0x0F, 0xDE, 0x47, 0x67, 0x82, + 0x94, 0x5B, 0x3C, 0x9F, 0x8D, 0x4A, 0x1C, 0x5B, 0x1D, 0x19, 0x11, 0x20, + 0xC4, 0x90, 0x53, 0x0D, 0x7B, 0xD9, 0x89, 0x42, 0x2D, 0xBF, 0x49, 0xDA, + 0x4F, 0x56, 0x66, 0xC0, 0x98, 0x62, 0xE9, 0x2F, 0x1A, 0xD7, 0x34, 0x8F, + 0xEF, 0x82, 0xB5, 0xDD, 0xA0, 0xF5, 0x55, 0x81, 0x52, 0x4F, 0x77, 0xE0, + 0x5C, 0xF2, 0xBA, 0x22, 0x61, 0x0E, 0xBD, 0xCD, 0xC2, 0x3D, 0xFC, 0x07, + 0xEF, 0xA3, 0x33, 0x41, 0xCA, 0x2D, 0x9E, 0xCF, 0x46, 0x25, 0x8E, 0xAD, + 0x8E, 0x8C, 0x08, 0x10, 0x62, 0xC8, 0xA9, 0x86, 0xBD, 0xEC, 0x44, 0xA1, + 0x96, 0xDF, 0x24, 0xED, 0x27, 0x2B, 0x33, 0x60, 0x4C, 0xB1, 0xF4, 0x17, + 0x8D, 0x6B, 0x9A, 0xC7, 0x77, 0xC1, 0xDA, 0x6E, 0xD0, 0xFA, 0xAA, 0x40, + 0xA9, 0xA7, 0x3B, 0x70, 0x2E, 0x79, 0x5D, 0x91, 0x30, 0x87, 0xDE, 0x66, + 0xE1, 0x1E, 0xFE, 0x83, 0xF7, 0xD1, 0x99, 0x20, 0xE5, 0x16, 0xCF, 0x67, + 0xA3, 0x12, 0xC7, 0x56, 0x47, 0x46, 0x04, 0x08, 0x31, 0xE4, 0x54, 0xC3, + 0x5E, 0x76, 0xA2, 0x50, 0xCB, 0x6F, 0x92, 0xF6, 0x93, 0x95, 0x19, 0x30, + 0xA6, 0x58, 0xFA, 0x8B, 0xC6, 0x35, 0xCD, 0xE3, 0xBB, 0x60, 0x6D, 0x37, + 0x68, 0x7D, 0x55, 0xA0, 0xD4, 0xD3, 0x1D, 0x38, 0x97, 0xBC, 0xAE, 0x48, + 0x98, 0x43, 0x6F, 0xB3, 0x70, 0x0F, 0xFF, 0xC1, 0x00, 0x01, 0x01, 0x02, + 0x01, 0x02, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, + 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, + 0x03, 0x04, 0x04, 0x05, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, + 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, + 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, + 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, 0x02, 0x03, 0x03, 0x04, + 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, + 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x02, 0x03, 0x03, 0x04, + 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, + 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, + 0x05, 0x06, 0x06, 0x07, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04, + 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x04, + 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, + 0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, + 0x04, 0x05, 0x05, 0x06, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, + 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x02, 0x03, 0x03, 0x04, + 0x03, 0x04, 0x04, 0x05, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, + 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 0x04, 0x05, 0x05, 0x06, + 0x05, 0x06, 0x06, 0x07, 0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, + 0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07, 0x04, 0x05, 0x05, 0x06, + 0x05, 0x06, 0x06, 0x07, 0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x07, 0x08, + 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x00, 0x00, 0x01, 0x50, + 0x00, 0x03, 0x04, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x50, + 0x00, 0x02, 0x07, 0x03, 0x0C, 0x04, 0x0D, 0x05, 0x26, 0x06, 0x37, 0x07, + 0x2C, 0x08, 0x3D, 0x09, 0x00, 0x00, 0x02, 0x01, 0x05, 0x00, 0x01, 0x07, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x07, 0x00, 0x01, 0x0C, 0x00, 0x03, 0x0D, + 0x00, 0x03, 0x06, 0x01, 0x01, 0x07, 0x01, 0x01, 0x0C, 0x01, 0x03, 0x0D, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x27, 0x35, 0x00, 0x2B, 0x00, 0x31, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x22, 0x10, 0x00, + 0xFF, 0xF0, 0xAA, 0xFF, 0xFF, 0x00, 0x0F, 0x55, 0x80, 0x01, 0x00, 0x00, + 0xF6, 0xFC, 0xFE, 0x00, 0x03, 0x06, 0x09, 0x0A, 0xF9, 0xFC, 0xFF, 0x02, + 0x05, 0x07, 0x09, 0x0C, 0x0F, 0x11, 0x15, 0x17, 0x50, 0x00, 0x00, 0x00, + 0xE4, 0x57, 0x00, 0x00, 0x50, 0xC3, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0x24, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x04, 0x25, 0x00, 0x80, 0xDE, 0xA9, + 0x91, 0x06, 0x7B, 0x00, 0x04, 0x10, 0x04, 0x00, 0x04, 0x00, 0x00, 0x26, + 0x00, 0x80, 0xDE, 0xA9, 0x65, 0x06, 0x7C, 0x00, 0x04, 0xF0, 0x03, 0x00, + 0x3C, 0xE7, 0x1C, 0x24, 0x09, 0x80, 0xDE, 0xA9, 0x69, 0x06, 0x7C, 0x48, + 0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0x7F, 0x24, 0x17, 0x42, 0x40, 0x40, + 0x8D, 0x08, 0x7B, 0xB0, 0x14, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x84, 0x27, + 0x00, 0x80, 0xDE, 0xA9, 0x91, 0x46, 0x7B, 0x03, 0x04, 0x10, 0x04, 0x00, + 0x0C, 0x21, 0x04, 0x26, 0x00, 0x80, 0xDE, 0xA9, 0x81, 0x06, 0x7B, 0x03, + 0x04, 0xF0, 0x03, 0x00, 0x3C, 0xE7, 0x1C, 0x24, 0x09, 0x80, 0xDE, 0xA9, + 0x69, 0x06, 0x7C, 0x4B, 0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x27, + 0x17, 0x42, 0x40, 0x40, 0xFD, 0x08, 0x7A, 0xB0, 0x14, 0x10, 0x04, 0x00, + 0x0C, 0x21, 0x84, 0x27, 0x00, 0x80, 0xDE, 0xA9, 0x91, 0x46, 0x7B, 0x03, + 0x04, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x04, 0x26, 0x00, 0x80, 0xDE, 0xA9, + 0x81, 0x06, 0x7B, 0x03, 0x04, 0xF0, 0x03, 0x00, 0x3C, 0xE7, 0x1C, 0x24, + 0x09, 0x80, 0xDE, 0xA9, 0x69, 0x06, 0x7C, 0x4B, 0x04, 0x10, 0x04, 0x00, + 0xF8, 0xFF, 0xFF, 0x27, 0x17, 0x42, 0x40, 0x40, 0xFD, 0x08, 0x7A, 0xB0, + 0x14, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x84, 0x27, 0x00, 0x80, 0xDE, 0xA9, + 0x91, 0x46, 0x7B, 0x03, 0x04, 0x10, 0x04, 0x00, 0x0C, 0x21, 0x04, 0x26, + 0x00, 0x80, 0xDE, 0xA9, 0x81, 0x06, 0x7B, 0x03, 0x04, 0xF0, 0x03, 0x00, + 0x3C, 0xE7, 0x1C, 0x24, 0x09, 0x80, 0xDE, 0xA9, 0x69, 0x06, 0x7C, 0x4B, + 0x04, 0x10, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x27, 0x17, 0x42, 0x40, 0x40, + 0xFD, 0x08, 0x7A, 0xB0, 0xD0, 0x9E, 0x21, 0x00, 0x1C, 0x1C, 0xFB, 0x41, + 0xD4, 0x9E, 0x21, 0x00, 0x1C, 0x1C, 0xFB, 0x41, 0xD4, 0x9E, 0x21, 0x00, + 0x70, 0x70, 0xFB, 0x41, 0xD4, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0x61, + 0xD6, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0x65, 0xD7, 0x9E, 0x21, 0x00, + 0x70, 0x70, 0xFB, 0x75, 0xD7, 0x9E, 0x21, 0x00, 0x70, 0x70, 0xFB, 0xFD, + 0xD7, 0x9E, 0x21, 0x00, 0xF0, 0xF0, 0xFB, 0xFD, 0xD7, 0x9D, 0x21, 0x00, + 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, + 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, + 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, + 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, + 0xF0, 0xF0, 0x87, 0xFD, 0xD7, 0x9D, 0x21, 0x00, 0xF0, 0xF0, 0x87, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, + 0x00, 0x04, 0x00, 0x00, 0xB8, 0x0B, 0x00, 0x00, 0xFF, 0xF9, 0x01, 0x08, + 0x00, 0x00, 0x00, 0x00, 0xAC, 0x2B, 0x16, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x28, 0x21, 0x16, 0x00, 0xA8, 0x61, 0x00, 0x00, 0xB8, 0x88, 0x00, 0x00, + 0x74, 0x40, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0xED, 0x79, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0xCD, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, + 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x8D, 0x79, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x0D, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, + 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x58, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0xDB, 0x60, 0x07, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, + 0x60, 0xD7, 0x0C, 0x78, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x22, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0xDB, + 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0xD8, 0x3E, 0x55, 0x00, + 0x6D, 0x0C, 0x2F, 0xDB, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0xEB, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, + 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3F, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, + 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, 0xEB, 0x3F, 0x55, 0x00, + 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, + 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0xED, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, + 0x60, 0x07, 0xCD, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, + 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x8D, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x5B, + 0x60, 0x07, 0x0D, 0x79, 0x80, 0x80, 0x80, 0x80, 0x34, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x5B, 0x60, 0x07, 0x8D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x6B, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x07, 0x8D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0xDB, + 0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, + 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0xD7, 0x0C, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x22, 0x3E, 0x55, 0x00, 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x22, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, + 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x58, 0x3E, 0x55, 0x00, + 0x6D, 0x0C, 0x2F, 0xDB, 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0xD8, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0xDB, 0x60, 0x1F, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0xEB, 0x3E, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, + 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, 0x6B, 0x3F, 0x55, 0x00, + 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, + 0xEB, 0x3F, 0x55, 0x00, 0x6D, 0x0C, 0x2F, 0x1B, 0x60, 0x9F, 0x0D, 0x68, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, 0x6C, 0x00, 0x00, 0x03, + 0x60, 0x07, 0xAC, 0xE9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, + 0x6C, 0x00, 0x00, 0x03, 0x60, 0x07, 0x0C, 0xE8, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x94, 0x7F, 0x00, 0x6C, 0x00, 0x20, 0x03, 0x60, 0xD7, 0x0C, 0xE8, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x94, 0x7F, 0x00, 0x6C, 0x00, 0xE0, 0x03, + 0x60, 0x9F, 0x0D, 0xE8, 0x80, 0x80, 0x80, 0x80, 0x00, 0xBE, 0x7F, 0x00, + 0x6C, 0x00, 0x0F, 0x1B, 0x60, 0xE7, 0x8C, 0x69, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x1F, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, + 0x60, 0x1F, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0xEF, 0x9B, 0x60, 0x9F, 0x0D, 0x68, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x2F, 0x1B, 0x60, 0x87, 0xEC, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, + 0x60, 0x87, 0xEC, 0x79, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0xAD, 0x79, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x07, 0x0D, 0x79, + 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0x6F, 0x1B, + 0x60, 0x07, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, 0x00, 0x3E, 0x55, 0x00, + 0xFC, 0x00, 0x6F, 0x1B, 0x60, 0x17, 0x0D, 0x78, 0x80, 0x80, 0x80, 0x80, + 0x12, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x5B, 0x60, 0x1F, 0x0D, 0x78, + 0x80, 0x80, 0x80, 0x80, 0x6D, 0x3E, 0x55, 0x00, 0xFC, 0x00, 0xEF, 0x9B, + 0x60, 0x9F, 0x0D, 0x68, 0x03, 0xC7, 0x8E, 0x00, 0x07, 0xC7, 0x8E, 0x00, + 0x0B, 0xC7, 0x8E, 0x00, 0x0F, 0xC7, 0x8E, 0x00, 0x13, 0xC7, 0x8E, 0x00, + 0x17, 0xC7, 0x8E, 0x00, 0x1B, 0xC7, 0x8E, 0x00, 0x1F, 0xC7, 0x8E, 0x00, + 0x23, 0xC7, 0x8E, 0x00, 0x27, 0xC7, 0x8E, 0x00, 0x2B, 0xC7, 0x8E, 0x00, + 0x2F, 0xC7, 0x8E, 0x00, 0x33, 0xC7, 0x8E, 0x00, 0x37, 0xC7, 0x8E, 0x00, + 0x3B, 0xC7, 0x8E, 0x00, 0x3F, 0xC7, 0x8E, 0x00, 0x06, 0x81, 0x88, 0x00, + 0x0A, 0x81, 0x88, 0x00, 0x0C, 0xC1, 0x88, 0x00, 0x14, 0xC1, 0x90, 0x00, + 0x14, 0x41, 0x91, 0x00, 0x15, 0xC1, 0x91, 0x00, 0x23, 0xC1, 0x91, 0x00, + 0x3F, 0xC1, 0x91, 0x00, 0x3F, 0xC1, 0x92, 0x00, 0x3F, 0x01, 0x94, 0x00, + 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, + 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, 0x3F, 0xC1, 0x96, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2D, 0x20, 0x53, 0x65, 0x70, 0x20, 0x31, 0x33, 0x20, 0x32, 0x30, 0x32, + 0x32, 0x20, 0x31, 0x30, 0x3A, 0x33, 0x38, 0x3A, 0x33, 0x39, 0x20, 0x2D, + 0x20, 0x67, 0x69, 0x74, 0x20, 0x30, 0x61, 0x61, 0x62, 0x66, 0x62, 0x66, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; -struct firmware_info{ +struct firmware_info { char fw_name[30]; - char* fw_array; + char *fw_array; int fw_size; }; -struct firmware_info firmware[]={ - {"fmacfw.bin", fmacfw, sizeof(fmacfw)}, - {"fw_adid_u03.bin", fw_adid_u03, sizeof(fw_adid_u03)}, - {"fw_patch_table_u03.bin", fw_patch_table_u03, sizeof(fw_patch_table_u03)}, - {"fw_patch_u03.bin", fw_patch_u03, sizeof(fw_patch_u03)} +struct firmware_info firmware[] = { + { "fmacfw.bin", fmacfw, sizeof(fmacfw) }, + { "fw_adid_u03.bin", fw_adid_u03, sizeof(fw_adid_u03) }, + { "fw_patch_table_u03.bin", fw_patch_table_u03, + sizeof(fw_patch_table_u03) }, + { "fw_patch_u03.bin", fw_patch_u03, sizeof(fw_patch_u03) } }; -int aicwf_get_firmware_array(char* fw_name, u32 **fw_buf){ +int aicwf_get_firmware_array(char *fw_name, u32 **fw_buf) +{ int firmware_number = 0; int index = 0; int fw_size = 0; - firmware_number = sizeof(firmware)/sizeof(struct firmware_info); - printk("%s search:%s \r\n", __func__ , fw_name); + firmware_number = sizeof(firmware) / sizeof(struct firmware_info); + printk("%s search:%s \r\n", __func__, fw_name); - for(index = 0; index < firmware_number; index++){ - if(!strcmp(firmware[index].fw_name, fw_name)){ + for (index = 0; index < firmware_number; index++) { + if (!strcmp(firmware[index].fw_name, fw_name)) { fw_size = firmware[index].fw_size; - printk("%s find %s len:%d\r\n", __func__, fw_name, fw_size); - *fw_buf = (u32*)firmware[index].fw_array; + printk("%s find %s len:%d\r\n", __func__, fw_name, + fw_size); + *fw_buf = (u32 *)firmware[index].fw_array; return fw_size; } } printk("%s %s not found \r\n", __func__, fw_name); - + return 0; } \ No newline at end of file diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.h index dcf38e9ba..d2ef82aea 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_firmware_array.h @@ -1,3 +1 @@ -int aicwf_get_firmware_array(char* fw_name, u32 **fw_buf); - - +int aicwf_get_firmware_array(char *fw_name, u32 **fw_buf); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.c index 9514c416b..ffd27b3df 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.c @@ -2,10 +2,10 @@ #include "aicsdio_txrxif.h" #include "aic_bsp_driver.h" -struct prealloc_txq{ - int prealloced; - void *txq; - size_t size; +struct prealloc_txq { + int prealloced; + void *txq; + size_t size; }; struct prealloc_txq prealloc_txq; @@ -13,50 +13,47 @@ struct prealloc_txq prealloc_txq; void *aicwf_prealloc_txq_alloc(size_t size) { + BUG_ON(size > MAX_TXQ_SIZE); - BUG_ON(size > MAX_TXQ_SIZE); + //check prealloc_txq.size + if ((int)prealloc_txq.size != (int)size) { + AICWFDBG(LOGINFO, "%s size is diff will to be kzalloc \r\n", + __func__); - //check prealloc_txq.size - if((int)prealloc_txq.size != (int)size) - { - AICWFDBG(LOGINFO, "%s size is diff will to be kzalloc \r\n", __func__); + if (prealloc_txq.txq != NULL) { + AICWFDBG(LOGINFO, "%s txq to kfree \r\n", __func__); + kfree(prealloc_txq.txq); + prealloc_txq.txq = NULL; + } - if(prealloc_txq.txq != NULL) - { - AICWFDBG(LOGINFO, "%s txq to kfree \r\n", __func__); - kfree(prealloc_txq.txq); - prealloc_txq.txq = NULL; - } - - prealloc_txq.size = size; - prealloc_txq.prealloced = 0; - } + prealloc_txq.size = size; + prealloc_txq.prealloced = 0; + } - //check prealloc or not - if(!prealloc_txq.prealloced) - { - prealloc_txq.txq = kzalloc(size, GFP_KERNEL); - if(!prealloc_txq.txq){ - AICWFDBG(LOGERROR, "%s txq kzalloc fail \r\n", __func__); - }else{ - AICWFDBG(LOGINFO, "%s txq kzalloc successful \r\n", __func__); - prealloc_txq.prealloced = 1; - } - }else{ - AICWFDBG(LOGINFO, "%s txq not need to kzalloc \r\n", __func__); - } + //check prealloc or not + if (!prealloc_txq.prealloced) { + prealloc_txq.txq = kzalloc(size, GFP_KERNEL); + if (!prealloc_txq.txq) { + AICWFDBG(LOGERROR, "%s txq kzalloc fail \r\n", + __func__); + } else { + AICWFDBG(LOGINFO, "%s txq kzalloc successful \r\n", + __func__); + prealloc_txq.prealloced = 1; + } + } else { + AICWFDBG(LOGINFO, "%s txq not need to kzalloc \r\n", __func__); + } - return prealloc_txq.txq; + return prealloc_txq.txq; } void aicwf_prealloc_txq_free(void) { - if(prealloc_txq.txq != NULL) - { - AICWFDBG(LOGINFO, "%s txq to kfree \r\n", __func__); - kfree(prealloc_txq.txq); - prealloc_txq.txq = NULL; - } + if (prealloc_txq.txq != NULL) { + AICWFDBG(LOGINFO, "%s txq to kfree \r\n", __func__); + kfree(prealloc_txq.txq); + prealloc_txq.txq = NULL; + } } EXPORT_SYMBOL(aicwf_prealloc_txq_alloc); - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.h index ce4ee0747..9b5addaba 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/aicwf_txq_prealloc.h @@ -1,4 +1,3 @@ void aicwf_prealloc_txq_free(void); - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.c index 3d7b65375..f21eba9a3 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.c @@ -1,161 +1,154 @@ #include #include "md5.h" - -unsigned char PADDING[]={0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - + +unsigned char PADDING[] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + void MD5Init(MD5_CTX *context) { - context->count[0] = 0; - context->count[1] = 0; - context->state[0] = 0x67452301; - context->state[1] = 0xEFCDAB89; - context->state[2] = 0x98BADCFE; - context->state[3] = 0x10325476; + context->count[0] = 0; + context->count[1] = 0; + context->state[0] = 0x67452301; + context->state[1] = 0xEFCDAB89; + context->state[2] = 0x98BADCFE; + context->state[3] = 0x10325476; } -void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputlen) +void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputlen) { - unsigned int i = 0,index = 0,partlen = 0; - index = (context->count[0] >> 3) & 0x3F; - partlen = 64 - index; - context->count[0] += inputlen << 3; - if(context->count[0] < (inputlen << 3)) - context->count[1]++; - context->count[1] += inputlen >> 29; - - if(inputlen >= partlen) - { - memcpy(&context->buffer[index],input,partlen); - MD5Transform(context->state,context->buffer); - for(i = partlen;i+64 <= inputlen;i+=64) - MD5Transform(context->state,&input[i]); - index = 0; - } - else - { - i = 0; - } - memcpy(&context->buffer[index],&input[i],inputlen-i); + unsigned int i = 0, index = 0, partlen = 0; + index = (context->count[0] >> 3) & 0x3F; + partlen = 64 - index; + context->count[0] += inputlen << 3; + if (context->count[0] < (inputlen << 3)) + context->count[1]++; + context->count[1] += inputlen >> 29; + + if (inputlen >= partlen) { + memcpy(&context->buffer[index], input, partlen); + MD5Transform(context->state, context->buffer); + for (i = partlen; i + 64 <= inputlen; i += 64) + MD5Transform(context->state, &input[i]); + index = 0; + } else { + i = 0; + } + memcpy(&context->buffer[index], &input[i], inputlen - i); } -void MD5Final(MD5_CTX *context,unsigned char digest[16]) +void MD5Final(MD5_CTX *context, unsigned char digest[16]) { - unsigned int index = 0,padlen = 0; - unsigned char bits[8]; - index = (context->count[0] >> 3) & 0x3F; - padlen = (index < 56)?(56-index):(120-index); - MD5Encode(bits,context->count,8); - MD5Update(context,PADDING,padlen); - MD5Update(context,bits,8); - MD5Encode(digest,context->state,16); + unsigned int index = 0, padlen = 0; + unsigned char bits[8]; + index = (context->count[0] >> 3) & 0x3F; + padlen = (index < 56) ? (56 - index) : (120 - index); + MD5Encode(bits, context->count, 8); + MD5Update(context, PADDING, padlen); + MD5Update(context, bits, 8); + MD5Encode(digest, context->state, 16); } -void MD5Encode(unsigned char *output,unsigned int *input,unsigned int len) +void MD5Encode(unsigned char *output, unsigned int *input, unsigned int len) { - unsigned int i = 0,j = 0; - while(j < len) - { - output[j] = input[i] & 0xFF; - output[j+1] = (input[i] >> 8) & 0xFF; - output[j+2] = (input[i] >> 16) & 0xFF; - output[j+3] = (input[i] >> 24) & 0xFF; - i++; - j+=4; - } + unsigned int i = 0, j = 0; + while (j < len) { + output[j] = input[i] & 0xFF; + output[j + 1] = (input[i] >> 8) & 0xFF; + output[j + 2] = (input[i] >> 16) & 0xFF; + output[j + 3] = (input[i] >> 24) & 0xFF; + i++; + j += 4; + } } -void MD5Decode(unsigned int *output,unsigned char *input,unsigned int len) +void MD5Decode(unsigned int *output, unsigned char *input, unsigned int len) { - unsigned int i = 0,j = 0; - while(j < len) - { - output[i] = (input[j]) | - (input[j+1] << 8) | - (input[j+2] << 16) | - (input[j+3] << 24); - i++; - j+=4; - } + unsigned int i = 0, j = 0; + while (j < len) { + output[i] = (input[j]) | (input[j + 1] << 8) | + (input[j + 2] << 16) | (input[j + 3] << 24); + i++; + j += 4; + } } -void MD5Transform(unsigned int state[4],unsigned char block[64]) +void MD5Transform(unsigned int state[4], unsigned char block[64]) { - unsigned int a = state[0]; - unsigned int b = state[1]; - unsigned int c = state[2]; - unsigned int d = state[3]; - unsigned int x[64]; - MD5Decode(x,block,64); - FF(a, b, c, d, x[ 0], 7, 0xd76aa478); /* 1 */ - FF(d, a, b, c, x[ 1], 12, 0xe8c7b756); /* 2 */ - FF(c, d, a, b, x[ 2], 17, 0x242070db); /* 3 */ - FF(b, c, d, a, x[ 3], 22, 0xc1bdceee); /* 4 */ - FF(a, b, c, d, x[ 4], 7, 0xf57c0faf); /* 5 */ - FF(d, a, b, c, x[ 5], 12, 0x4787c62a); /* 6 */ - FF(c, d, a, b, x[ 6], 17, 0xa8304613); /* 7 */ - FF(b, c, d, a, x[ 7], 22, 0xfd469501); /* 8 */ - FF(a, b, c, d, x[ 8], 7, 0x698098d8); /* 9 */ - FF(d, a, b, c, x[ 9], 12, 0x8b44f7af); /* 10 */ - FF(c, d, a, b, x[10], 17, 0xffff5bb1); /* 11 */ - FF(b, c, d, a, x[11], 22, 0x895cd7be); /* 12 */ - FF(a, b, c, d, x[12], 7, 0x6b901122); /* 13 */ - FF(d, a, b, c, x[13], 12, 0xfd987193); /* 14 */ - FF(c, d, a, b, x[14], 17, 0xa679438e); /* 15 */ - FF(b, c, d, a, x[15], 22, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[ 1], 5, 0xf61e2562); /* 17 */ - GG(d, a, b, c, x[ 6], 9, 0xc040b340); /* 18 */ - GG(c, d, a, b, x[11], 14, 0x265e5a51); /* 19 */ - GG(b, c, d, a, x[ 0], 20, 0xe9b6c7aa); /* 20 */ - GG(a, b, c, d, x[ 5], 5, 0xd62f105d); /* 21 */ - GG(d, a, b, c, x[10], 9, 0x2441453); /* 22 */ - GG(c, d, a, b, x[15], 14, 0xd8a1e681); /* 23 */ - GG(b, c, d, a, x[ 4], 20, 0xe7d3fbc8); /* 24 */ - GG(a, b, c, d, x[ 9], 5, 0x21e1cde6); /* 25 */ - GG(d, a, b, c, x[14], 9, 0xc33707d6); /* 26 */ - GG(c, d, a, b, x[ 3], 14, 0xf4d50d87); /* 27 */ - GG(b, c, d, a, x[ 8], 20, 0x455a14ed); /* 28 */ - GG(a, b, c, d, x[13], 5, 0xa9e3e905); /* 29 */ - GG(d, a, b, c, x[ 2], 9, 0xfcefa3f8); /* 30 */ - GG(c, d, a, b, x[ 7], 14, 0x676f02d9); /* 31 */ - GG(b, c, d, a, x[12], 20, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[ 5], 4, 0xfffa3942); /* 33 */ - HH(d, a, b, c, x[ 8], 11, 0x8771f681); /* 34 */ - HH(c, d, a, b, x[11], 16, 0x6d9d6122); /* 35 */ - HH(b, c, d, a, x[14], 23, 0xfde5380c); /* 36 */ - HH(a, b, c, d, x[ 1], 4, 0xa4beea44); /* 37 */ - HH(d, a, b, c, x[ 4], 11, 0x4bdecfa9); /* 38 */ - HH(c, d, a, b, x[ 7], 16, 0xf6bb4b60); /* 39 */ - HH(b, c, d, a, x[10], 23, 0xbebfbc70); /* 40 */ - HH(a, b, c, d, x[13], 4, 0x289b7ec6); /* 41 */ - HH(d, a, b, c, x[ 0], 11, 0xeaa127fa); /* 42 */ - HH(c, d, a, b, x[ 3], 16, 0xd4ef3085); /* 43 */ - HH(b, c, d, a, x[ 6], 23, 0x4881d05); /* 44 */ - HH(a, b, c, d, x[ 9], 4, 0xd9d4d039); /* 45 */ - HH(d, a, b, c, x[12], 11, 0xe6db99e5); /* 46 */ - HH(c, d, a, b, x[15], 16, 0x1fa27cf8); /* 47 */ - HH(b, c, d, a, x[ 2], 23, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II(a, b, c, d, x[ 0], 6, 0xf4292244); /* 49 */ - II(d, a, b, c, x[ 7], 10, 0x432aff97); /* 50 */ - II(c, d, a, b, x[14], 15, 0xab9423a7); /* 51 */ - II(b, c, d, a, x[ 5], 21, 0xfc93a039); /* 52 */ - II(a, b, c, d, x[12], 6, 0x655b59c3); /* 53 */ - II(d, a, b, c, x[ 3], 10, 0x8f0ccc92); /* 54 */ - II(c, d, a, b, x[10], 15, 0xffeff47d); /* 55 */ - II(b, c, d, a, x[ 1], 21, 0x85845dd1); /* 56 */ - II(a, b, c, d, x[ 8], 6, 0x6fa87e4f); /* 57 */ - II(d, a, b, c, x[15], 10, 0xfe2ce6e0); /* 58 */ - II(c, d, a, b, x[ 6], 15, 0xa3014314); /* 59 */ - II(b, c, d, a, x[13], 21, 0x4e0811a1); /* 60 */ - II(a, b, c, d, x[ 4], 6, 0xf7537e82); /* 61 */ - II(d, a, b, c, x[11], 10, 0xbd3af235); /* 62 */ - II(c, d, a, b, x[ 2], 15, 0x2ad7d2bb); /* 63 */ - II(b, c, d, a, x[ 9], 21, 0xeb86d391); /* 64 */ - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; + unsigned int a = state[0]; + unsigned int b = state[1]; + unsigned int c = state[2]; + unsigned int d = state[3]; + unsigned int x[64]; + MD5Decode(x, block, 64); + FF(a, b, c, d, x[0], 7, 0xd76aa478); /* 1 */ + FF(d, a, b, c, x[1], 12, 0xe8c7b756); /* 2 */ + FF(c, d, a, b, x[2], 17, 0x242070db); /* 3 */ + FF(b, c, d, a, x[3], 22, 0xc1bdceee); /* 4 */ + FF(a, b, c, d, x[4], 7, 0xf57c0faf); /* 5 */ + FF(d, a, b, c, x[5], 12, 0x4787c62a); /* 6 */ + FF(c, d, a, b, x[6], 17, 0xa8304613); /* 7 */ + FF(b, c, d, a, x[7], 22, 0xfd469501); /* 8 */ + FF(a, b, c, d, x[8], 7, 0x698098d8); /* 9 */ + FF(d, a, b, c, x[9], 12, 0x8b44f7af); /* 10 */ + FF(c, d, a, b, x[10], 17, 0xffff5bb1); /* 11 */ + FF(b, c, d, a, x[11], 22, 0x895cd7be); /* 12 */ + FF(a, b, c, d, x[12], 7, 0x6b901122); /* 13 */ + FF(d, a, b, c, x[13], 12, 0xfd987193); /* 14 */ + FF(c, d, a, b, x[14], 17, 0xa679438e); /* 15 */ + FF(b, c, d, a, x[15], 22, 0x49b40821); /* 16 */ + + /* Round 2 */ + GG(a, b, c, d, x[1], 5, 0xf61e2562); /* 17 */ + GG(d, a, b, c, x[6], 9, 0xc040b340); /* 18 */ + GG(c, d, a, b, x[11], 14, 0x265e5a51); /* 19 */ + GG(b, c, d, a, x[0], 20, 0xe9b6c7aa); /* 20 */ + GG(a, b, c, d, x[5], 5, 0xd62f105d); /* 21 */ + GG(d, a, b, c, x[10], 9, 0x2441453); /* 22 */ + GG(c, d, a, b, x[15], 14, 0xd8a1e681); /* 23 */ + GG(b, c, d, a, x[4], 20, 0xe7d3fbc8); /* 24 */ + GG(a, b, c, d, x[9], 5, 0x21e1cde6); /* 25 */ + GG(d, a, b, c, x[14], 9, 0xc33707d6); /* 26 */ + GG(c, d, a, b, x[3], 14, 0xf4d50d87); /* 27 */ + GG(b, c, d, a, x[8], 20, 0x455a14ed); /* 28 */ + GG(a, b, c, d, x[13], 5, 0xa9e3e905); /* 29 */ + GG(d, a, b, c, x[2], 9, 0xfcefa3f8); /* 30 */ + GG(c, d, a, b, x[7], 14, 0x676f02d9); /* 31 */ + GG(b, c, d, a, x[12], 20, 0x8d2a4c8a); /* 32 */ + + /* Round 3 */ + HH(a, b, c, d, x[5], 4, 0xfffa3942); /* 33 */ + HH(d, a, b, c, x[8], 11, 0x8771f681); /* 34 */ + HH(c, d, a, b, x[11], 16, 0x6d9d6122); /* 35 */ + HH(b, c, d, a, x[14], 23, 0xfde5380c); /* 36 */ + HH(a, b, c, d, x[1], 4, 0xa4beea44); /* 37 */ + HH(d, a, b, c, x[4], 11, 0x4bdecfa9); /* 38 */ + HH(c, d, a, b, x[7], 16, 0xf6bb4b60); /* 39 */ + HH(b, c, d, a, x[10], 23, 0xbebfbc70); /* 40 */ + HH(a, b, c, d, x[13], 4, 0x289b7ec6); /* 41 */ + HH(d, a, b, c, x[0], 11, 0xeaa127fa); /* 42 */ + HH(c, d, a, b, x[3], 16, 0xd4ef3085); /* 43 */ + HH(b, c, d, a, x[6], 23, 0x4881d05); /* 44 */ + HH(a, b, c, d, x[9], 4, 0xd9d4d039); /* 45 */ + HH(d, a, b, c, x[12], 11, 0xe6db99e5); /* 46 */ + HH(c, d, a, b, x[15], 16, 0x1fa27cf8); /* 47 */ + HH(b, c, d, a, x[2], 23, 0xc4ac5665); /* 48 */ + + /* Round 4 */ + II(a, b, c, d, x[0], 6, 0xf4292244); /* 49 */ + II(d, a, b, c, x[7], 10, 0x432aff97); /* 50 */ + II(c, d, a, b, x[14], 15, 0xab9423a7); /* 51 */ + II(b, c, d, a, x[5], 21, 0xfc93a039); /* 52 */ + II(a, b, c, d, x[12], 6, 0x655b59c3); /* 53 */ + II(d, a, b, c, x[3], 10, 0x8f0ccc92); /* 54 */ + II(c, d, a, b, x[10], 15, 0xffeff47d); /* 55 */ + II(b, c, d, a, x[1], 21, 0x85845dd1); /* 56 */ + II(a, b, c, d, x[8], 6, 0x6fa87e4f); /* 57 */ + II(d, a, b, c, x[15], 10, 0xfe2ce6e0); /* 58 */ + II(c, d, a, b, x[6], 15, 0xa3014314); /* 59 */ + II(b, c, d, a, x[13], 21, 0x4e0811a1); /* 60 */ + II(a, b, c, d, x[4], 6, 0xf7537e82); /* 61 */ + II(d, a, b, c, x[11], 10, 0xbd3af235); /* 62 */ + II(c, d, a, b, x[2], 15, 0x2ad7d2bb); /* 63 */ + II(b, c, d, a, x[9], 21, 0xeb86d391); /* 64 */ + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.h index 6ed5c0f8e..9b2c52eed 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/md5.h @@ -1,48 +1,46 @@ #ifndef MD5_H #define MD5_H - -typedef struct -{ - unsigned int count[2]; - unsigned int state[4]; - unsigned char buffer[64]; -}MD5_CTX; - - -#define F(x,y,z) ((x & y) | (~x & z)) -#define G(x,y,z) ((x & z) | (y & ~z)) -#define H(x,y,z) (x^y^z) -#define I(x,y,z) (y ^ (x | ~z)) -#define ROTATE_LEFT(x,n) ((x << n) | (x >> (32-n))) -#define FF(a,b,c,d,x,s,ac) \ - { \ - a += F(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } -#define GG(a,b,c,d,x,s,ac) \ - { \ - a += G(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } -#define HH(a,b,c,d,x,s,ac) \ - { \ - a += H(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } -#define II(a,b,c,d,x,s,ac) \ - { \ - a += I(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } + +typedef struct { + unsigned int count[2]; + unsigned int state[4]; + unsigned char buffer[64]; +} MD5_CTX; + +#define F(x, y, z) ((x & y) | (~x & z)) +#define G(x, y, z) ((x & z) | (y & ~z)) +#define H(x, y, z) (x ^ y ^ z) +#define I(x, y, z) (y ^ (x | ~z)) +#define ROTATE_LEFT(x, n) ((x << n) | (x >> (32 - n))) +#define FF(a, b, c, d, x, s, ac) \ + { \ + a += F(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } +#define GG(a, b, c, d, x, s, ac) \ + { \ + a += G(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } +#define HH(a, b, c, d, x, s, ac) \ + { \ + a += H(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } +#define II(a, b, c, d, x, s, ac) \ + { \ + a += I(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } void MD5Init(MD5_CTX *context); -void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputlen); -void MD5Final(MD5_CTX *context,unsigned char digest[16]); -void MD5Transform(unsigned int state[4],unsigned char block[64]); -void MD5Encode(unsigned char *output,unsigned int *input,unsigned int len); -void MD5Decode(unsigned int *output,unsigned char *input,unsigned int len); - +void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputlen); +void MD5Final(MD5_CTX *context, unsigned char digest[16]); +void MD5Transform(unsigned int state[4], unsigned char block[64]); +void MD5Encode(unsigned char *output, unsigned int *input, unsigned int len); +void MD5Decode(unsigned int *output, unsigned char *input, unsigned int len); + #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/rwnx_version_gen.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/rwnx_version_gen.h index 6ce7186ae..6fcb679c8 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/rwnx_version_gen.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_bsp/rwnx_version_gen.h @@ -1,4 +1,4 @@ #define RWNX_VERS_REV "241c091M (master)" #define RWNX_VERS_MOD "6.4.3.0" #define RWNX_VERS_BANNER "rwnx v6.4.3.0 - - 241c091M (master)" -#define RELEASE_DATE "2024_0615_c3cb37b3" +#define RELEASE_DATE "2025_0410_b99ca8b6" diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic8800_btlpm.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic8800_btlpm.c index 52d768d83..aa9ffc0cc 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic8800_btlpm.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic8800_btlpm.c @@ -53,22 +53,20 @@ #undef BT_DBG #undef BT_ERR #ifdef BT_SLEEP_DBG -#define BT_DBG(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n",\ - __func__, ## arg) +#define BT_DBG(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n", __func__, ##arg) #else #define BT_DBG(fmt, arg...) #endif -#define BT_ERR(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n",\ - __func__, ## arg) +#define BT_ERR(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n", __func__, ##arg) /* * Defines */ -#define VERSION "1.3.3" -#define PROC_DIR "bluetooth/sleep" +#define VERSION "1.3.3" +#define PROC_DIR "bluetooth/sleep" -#define DEFAULT_UART_INDEX 1 +#define DEFAULT_UART_INDEX 1 #define BT_BLUEDROID_SUPPORT 1 static int bluesleep_start(void); static void bluesleep_stop(void); @@ -84,8 +82,8 @@ struct bluesleep_info { struct wake_lock wake_lock; #endif struct uart_port *uport; - unsigned host_wake_assert:1; - unsigned ext_wake_assert:1; + unsigned host_wake_assert : 1; + unsigned ext_wake_assert : 1; struct platform_device *pdev; }; @@ -97,21 +95,21 @@ static void bluesleep_tx_allow_sleep(void); DECLARE_DELAYED_WORK(sleep_workqueue, bluesleep_sleep_work); /* Macros for handling sleep work */ -#define bluesleep_rx_busy() schedule_delayed_work(&sleep_workqueue, 0) -#define bluesleep_tx_busy() schedule_delayed_work(&sleep_workqueue, 0) -#define bluesleep_rx_idle() schedule_delayed_work(&sleep_workqueue, 0) -#define bluesleep_tx_idle() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_rx_busy() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_tx_busy() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_rx_idle() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_tx_idle() schedule_delayed_work(&sleep_workqueue, 0) /* 1 second timeout */ -#define RX_TIMER_INTERVAL 1 +#define RX_TIMER_INTERVAL 1 /* state variable names and bit positions */ -#define BT_PROTO 0x01 -#define BT_TXDATA 0x02 -#define BT_ASLEEP 0x04 -#define BT_TXIDLE 0x08 -#define BT_PAUSE 0x09 -#define BT_RXTIMER 0x0a +#define BT_PROTO 0x01 +#define BT_TXDATA 0x02 +#define BT_ASLEEP 0x04 +#define BT_TXIDLE 0x08 +#define BT_PAUSE 0x09 +#define BT_RXTIMER 0x0a #if BT_BLUEDROID_SUPPORT static bool has_lpm_enabled; @@ -133,8 +131,8 @@ static atomic_t open_count = ATOMIC_INIT(1); */ #if !BT_BLUEDROID_SUPPORT -static int bluesleep_hci_event(struct notifier_block *this, - unsigned long event, void *data); +static int bluesleep_hci_event(struct notifier_block *this, unsigned long event, + void *data); #endif /* @@ -182,7 +180,8 @@ static void hsuart_power(int on) else bsi->uport->ops->set_mctrl(bsi->uport, 0); } else { - BT_ERR("bsi->uport = NULL, has_lpm_enabled = %d", has_lpm_enabled); + BT_ERR("bsi->uport = NULL, has_lpm_enabled = %d", + has_lpm_enabled); } } @@ -195,8 +194,8 @@ static inline int bluesleep_can_sleep(void) * are both deasserted */ return (gpio_get_value(bsi->ext_wake) != bsi->ext_wake_assert) && - (gpio_get_value(bsi->host_wake) != bsi->host_wake_assert) && - (!test_bit(BT_RXTIMER, &flags)) && (bsi->uport != NULL); + (gpio_get_value(bsi->host_wake) != bsi->host_wake_assert) && + (!test_bit(BT_RXTIMER, &flags)) && (bsi->uport != NULL); } /** @@ -248,12 +247,13 @@ static void bluesleep_sleep_work(struct work_struct *work) mod_timer(&rx_timer, jiffies + (RX_TIMER_INTERVAL * HZ)); set_bit(BT_RXTIMER, &flags); - if(test_bit(BT_PAUSE, &flags)){ + if (test_bit(BT_PAUSE, &flags)) { BT_DBG("rx wake du BT_PAUSE:%lx", flags); ///enable bt sleep immediately gpio_set_value(bsi->ext_wake, !bsi->ext_wake_assert); - } else if (gpio_get_value(bsi->ext_wake) != bsi->ext_wake_assert - && !test_bit(BT_TXIDLE, &flags)) { + } else if (gpio_get_value(bsi->ext_wake) != + bsi->ext_wake_assert && + !test_bit(BT_TXIDLE, &flags)) { BT_DBG("force retrigger bt wake:%lx", flags); gpio_set_value(bsi->ext_wake, bsi->ext_wake_assert); msleep(20); @@ -318,9 +318,8 @@ static struct uart_port *bluesleep_get_uart_port(void) if (bluesleep_uart_dev) { uport = platform_get_drvdata(bluesleep_uart_dev); if (uport) - BT_DBG( - "%s get uart_port from blusleep_uart_dev: %s, port irq: %d", - __func__, bluesleep_uart_dev->name, uport->irq); + BT_DBG("%s get uart_port from blusleep_uart_dev: %s, port irq: %d", + __func__, bluesleep_uart_dev->name, uport->irq); } return uport; } @@ -337,8 +336,8 @@ static int bluesleep_lpm_proc_open(struct inode *inode, struct file *file) } static ssize_t bluesleep_write_proc_lpm(struct file *file, - const char __user *buffer, - size_t count, loff_t *pos) + const char __user *buffer, size_t count, + loff_t *pos) { char b; @@ -389,8 +388,8 @@ static int bluesleep_btwrite_proc_open(struct inode *inode, struct file *file) } static ssize_t bluesleep_write_proc_btwrite(struct file *file, - const char __user *buffer, - size_t count, loff_t *pos) + const char __user *buffer, + size_t count, loff_t *pos) { char b; @@ -411,37 +410,37 @@ static ssize_t bluesleep_write_proc_btwrite(struct file *file, #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) static const struct proc_ops lpm_fops = { - .proc_open = bluesleep_lpm_proc_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, + .proc_open = bluesleep_lpm_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, .proc_release = single_release, - .proc_write = bluesleep_write_proc_lpm, + .proc_write = bluesleep_write_proc_lpm, }; static const struct proc_ops btwrite_fops = { - .proc_open = bluesleep_btwrite_proc_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, + .proc_open = bluesleep_btwrite_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, .proc_release = single_release, - .proc_write = bluesleep_write_proc_btwrite, + .proc_write = bluesleep_write_proc_btwrite, }; #else static const struct file_operations lpm_fops = { - .owner = THIS_MODULE, - .open = bluesleep_lpm_proc_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, - .write = bluesleep_write_proc_lpm, + .owner = THIS_MODULE, + .open = bluesleep_lpm_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, + .write = bluesleep_write_proc_lpm, }; static const struct file_operations btwrite_fops = { - .owner = THIS_MODULE, - .open = bluesleep_btwrite_proc_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, - .write = bluesleep_write_proc_btwrite, + .owner = THIS_MODULE, + .open = bluesleep_btwrite_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, + .write = bluesleep_write_proc_btwrite, }; #endif @@ -453,10 +452,10 @@ static const struct file_operations btwrite_fops = { * @param data The HCI device associated with the event. * @return NOTIFY_DONE. */ -static int bluesleep_hci_event(struct notifier_block *this, - unsigned long event, void *data) +static int bluesleep_hci_event(struct notifier_block *this, unsigned long event, + void *data) { - struct hci_dev *hdev = (struct hci_dev *) data; + struct hci_dev *hdev = (struct hci_dev *)data; struct hci_uart *hu; struct uart_state *state; @@ -467,8 +466,8 @@ static int bluesleep_hci_event(struct notifier_block *this, case HCI_DEV_REG: if (!bluesleep_hdev) { bluesleep_hdev = hdev; - hu = (struct hci_uart *) hdev->driver_data; - state = (struct uart_state *) hu->tty->driver_data; + hu = (struct hci_uart *)hdev->driver_data; + state = (struct uart_state *)hu->tty->driver_data; bsi->uport = state->uart_port; } break; @@ -501,7 +500,6 @@ static void bluesleep_tx_allow_sleep(void) spin_unlock_irqrestore(&rw_lock, irq_flags); } - /* Handles reception timer expiration. * Clear BT_RXTIMER. * @param data Not used. @@ -555,7 +553,7 @@ static int bluesleep_start(void) } /* start the timer */ - mod_timer(&rx_timer, jiffies + (RX_TIMER_INTERVAL*HZ)); + mod_timer(&rx_timer, jiffies + (RX_TIMER_INTERVAL * HZ)); /*deassert BT_WAKE first*/ gpio_set_value(bsi->ext_wake, !bsi->ext_wake_assert); msleep(20); @@ -563,9 +561,9 @@ static int bluesleep_start(void) /* assert BT_WAKE */ gpio_set_value(bsi->ext_wake, bsi->ext_wake_assert); retval = request_irq(bsi->host_wake_irq, bluesleep_hostwake_isr, - IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, - "bluetooth hostwake", &bsi->pdev->dev); - if (retval < 0) { + IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, + "bluetooth hostwake", &bsi->pdev->dev); + if (retval < 0) { BT_ERR("Couldn't acquire BT_HOST_WAKE IRQ"); goto fail; } @@ -798,7 +796,7 @@ static int __init bluesleep_probe(struct platform_device *pdev) struct aicbsp_feature_t bsp_feature_lpm; bsi = devm_kzalloc(&pdev->dev, sizeof(struct bluesleep_info), - GFP_KERNEL); + GFP_KERNEL); if (!bsi) return -ENOMEM; @@ -816,23 +814,24 @@ static int __init bluesleep_probe(struct platform_device *pdev) else bsi->host_wake_assert = (config == OF_GPIO_ACTIVE_LOW) ? 1 : 0; - BT_DBG("bt_hostwake gpio=%d assert=%d\n", bsi->host_wake, bsi->host_wake_assert); + BT_DBG("bt_hostwake gpio=%d assert=%d\n", bsi->host_wake, + bsi->host_wake_assert); if (assert_level != -1) { bsi->host_wake_assert = (assert_level & 0x02) > 0; - BT_DBG("override host_wake assert to %d", bsi->host_wake_assert); + BT_DBG("override host_wake assert to %d", + bsi->host_wake_assert); } ret = devm_gpio_request(dev, bsi->host_wake, "bt_hostwake"); if (ret < 0) { - BT_ERR("can't request bt_hostwake gpio %d\n", - bsi->host_wake); + BT_ERR("can't request bt_hostwake gpio %d\n", bsi->host_wake); goto err0; } ret = gpio_direction_input(bsi->host_wake); if (ret < 0) { BT_ERR("can't request input direction bt_wake gpio %d\n", - bsi->host_wake); + bsi->host_wake); goto err1; } @@ -840,7 +839,7 @@ static int __init bluesleep_probe(struct platform_device *pdev) if (!of_property_read_bool(np, "wakeup-source")) { #else if (!of_property_read_u32(np, "wakeup-source", &bsi->wakeup_enable) && - (bsi->wakeup_enable == 0)) { + (bsi->wakeup_enable == 0)) { #endif BT_DBG("wakeup source is disabled!\n"); } else { @@ -853,12 +852,12 @@ static int __init bluesleep_probe(struct platform_device *pdev) ret = dev_pm_set_wake_irq(dev, gpio_to_irq(bsi->host_wake)); if (ret < 0) { BT_ERR("can't enable wakeup src for bt_hostwake %d\n", - bsi->host_wake); + bsi->host_wake); goto err2; } bsi->wakeup_enable = 1; #else - BT_ERR("%s kernel unsupport this feature!\r\n", __func__); + BT_ERR("%s kernel unsupport this feature!\r\n", __func__); #endif } @@ -871,14 +870,14 @@ static int __init bluesleep_probe(struct platform_device *pdev) ret = devm_gpio_request(dev, bsi->ext_wake, "bt_wake"); if (ret < 0) { - BT_ERR("can't request bt_wake gpio %d\n", - bsi->ext_wake); + BT_ERR("can't request bt_wake gpio %d\n", bsi->ext_wake); goto err2; } /* set ext_wake_assert */ bsi->ext_wake_assert = (config == OF_GPIO_ACTIVE_LOW) ? 0 : 1; - BT_DBG("bt_wake gpio=%d assert=%d\n", bsi->ext_wake, bsi->ext_wake_assert); + BT_DBG("bt_wake gpio=%d assert=%d\n", bsi->ext_wake, + bsi->ext_wake_assert); if (assert_level != -1) { bsi->ext_wake_assert = (assert_level & 0x01) > 0; @@ -889,7 +888,7 @@ static int __init bluesleep_probe(struct platform_device *pdev) ret = gpio_direction_output(bsi->ext_wake, bsi->ext_wake_assert); if (ret < 0) { BT_ERR("can't request output direction bt_wake gpio %d\n", - bsi->ext_wake); + bsi->ext_wake); goto err3; } /*set ext_wake deassert as default*/ @@ -899,7 +898,7 @@ static int __init bluesleep_probe(struct platform_device *pdev) bsi->host_wake_irq = gpio_to_irq(bsi->host_wake); if (bsi->host_wake_irq < 0) { BT_ERR("map gpio [%d] to virq failed, errno = %d\n", - bsi->host_wake, bsi->host_wake_irq); + bsi->host_wake, bsi->host_wake_irq); ret = -ENODEV; goto err3; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bluetooth_main.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bluetooth_main.c index 122d867f0..f6f84bb42 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bluetooth_main.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bluetooth_main.c @@ -8,11 +8,11 @@ #include "lpm.h" #include "rfkill.h" -#define DRV_CONFIG_FW_NAME "fw.bin" -#define DRV_DESCRIPTION "AIC BLUETOOTH" -#define DRV_COPYRIGHT "Copyright(c) 2015-2020 AICSemi" -#define DRV_AUTHOR "AICSemi" -#define DRV_VERS_MOD "1.0" +#define DRV_CONFIG_FW_NAME "fw.bin" +#define DRV_DESCRIPTION "AIC BLUETOOTH" +#define DRV_COPYRIGHT "Copyright(c) 2015-2020 AICSemi" +#define DRV_AUTHOR "AICSemi" +#define DRV_VERS_MOD "1.0" static struct platform_device *aicbt_pdev; @@ -47,7 +47,8 @@ static int __init aic_bluetooth_mod_init(void) pr_err("rfkill init fail\n"); goto err1; } -#if defined(ANDROID_PLATFORM) && !defined(CONFIG_PLATFORM_ROCKCHIP) && !defined(CONFIG_PLATFORM_ROCKCHIP2) +#if defined(ANDROID_PLATFORM) && !defined(CONFIG_PLATFORM_ROCKCHIP) && \ + !defined(CONFIG_PLATFORM_ROCKCHIP2) ret = bluesleep_init(aicbt_pdev); if (ret) { pr_err("bluesleep init fail\n"); @@ -57,7 +58,8 @@ static int __init aic_bluetooth_mod_init(void) return 0; -#if defined(ANDROID_PLATFORM) && !defined(CONFIG_PLATFORM_ROCKCHIP) && !defined(CONFIG_PLATFORM_ROCKCHIP2) +#if defined(ANDROID_PLATFORM) && !defined(CONFIG_PLATFORM_ROCKCHIP) && \ + !defined(CONFIG_PLATFORM_ROCKCHIP2) err2: #endif rfkill_bluetooth_remove(aicbt_pdev); @@ -71,7 +73,8 @@ err0: static void __exit aic_bluetooth_mod_exit(void) { printk("%s\n", __func__); -#if defined(ANDROID_PLATFORM) && !defined(CONFIG_PLATFORM_ROCKCHIP) && !defined(CONFIG_PLATFORM_ROCKCHIP2) +#if defined(ANDROID_PLATFORM) && !defined(CONFIG_PLATFORM_ROCKCHIP) && \ + !defined(CONFIG_PLATFORM_ROCKCHIP2) bluesleep_exit(aicbt_pdev); #endif rfkill_bluetooth_remove(aicbt_pdev); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bsp_export.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bsp_export.h index 88f6b565c..3b002d7bb 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bsp_export.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/aic_bsp_export.h @@ -1,15 +1,15 @@ #ifndef __AIC_BSP_EXPORT_H #define __AIC_BSP_EXPORT_H -#define AIC_BLUETOOTH 0 -#define AIC_WIFI 1 -#define AIC_PWR_OFF 0 -#define AIC_PWR_ON 1 +#define AIC_BLUETOOTH 0 +#define AIC_WIFI 1 +#define AIC_PWR_OFF 0 +#define AIC_PWR_ON 1 struct aicbsp_feature_t { bool band_5g_support; uint32_t sdio_clock; - uint8_t sdio_phase; + uint8_t sdio_phase; uint8_t irqf; }; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.c index 6e9b71564..edb4516d3 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.c @@ -52,22 +52,20 @@ #undef BT_DBG #undef BT_ERR #ifdef BT_SLEEP_DBG -#define BT_DBG(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n",\ - __func__, ## arg) +#define BT_DBG(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n", __func__, ##arg) #else #define BT_DBG(fmt, arg...) #endif -#define BT_ERR(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n",\ - __func__, ## arg) +#define BT_ERR(fmt, arg...) pr_debug("[BT_LPM] %s: " fmt "\n", __func__, ##arg) /* * Defines */ -#define VERSION "1.3.3" -#define PROC_DIR "bluetooth/sleep" +#define VERSION "1.3.3" +#define PROC_DIR "bluetooth/sleep" -#define DEFAULT_UART_INDEX 1 +#define DEFAULT_UART_INDEX 1 #define BT_BLUEDROID_SUPPORT 1 static int bluesleep_start(void); static void bluesleep_stop(void); @@ -83,8 +81,8 @@ struct bluesleep_info { struct wake_lock wake_lock; #endif struct uart_port *uport; - unsigned host_wake_assert:1; - unsigned ext_wake_assert:1; + unsigned host_wake_assert : 1; + unsigned ext_wake_assert : 1; struct platform_device *pdev; }; @@ -96,20 +94,20 @@ static void bluesleep_tx_allow_sleep(void); DECLARE_DELAYED_WORK(sleep_workqueue, bluesleep_sleep_work); /* Macros for handling sleep work */ -#define bluesleep_rx_busy() schedule_delayed_work(&sleep_workqueue, 0) -#define bluesleep_tx_busy() schedule_delayed_work(&sleep_workqueue, 0) -#define bluesleep_rx_idle() schedule_delayed_work(&sleep_workqueue, 0) -#define bluesleep_tx_idle() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_rx_busy() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_tx_busy() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_rx_idle() schedule_delayed_work(&sleep_workqueue, 0) +#define bluesleep_tx_idle() schedule_delayed_work(&sleep_workqueue, 0) /* 1 second timeout */ -#define RX_TIMER_INTERVAL 1 +#define RX_TIMER_INTERVAL 1 /* state variable names and bit positions */ -#define BT_PROTO 0x01 -#define BT_TXDATA 0x02 -#define BT_ASLEEP 0x04 -#define BT_RXTIMER 0x20 -#define BT_TXIDLE 0x08 +#define BT_PROTO 0x01 +#define BT_TXDATA 0x02 +#define BT_ASLEEP 0x04 +#define BT_RXTIMER 0x20 +#define BT_TXIDLE 0x08 #if BT_BLUEDROID_SUPPORT static bool has_lpm_enabled; @@ -131,8 +129,8 @@ static atomic_t open_count = ATOMIC_INIT(1); */ #if !BT_BLUEDROID_SUPPORT -static int bluesleep_hci_event(struct notifier_block *this, - unsigned long event, void *data); +static int bluesleep_hci_event(struct notifier_block *this, unsigned long event, + void *data); #endif /* @@ -180,7 +178,8 @@ static void hsuart_power(int on) else bsi->uport->ops->set_mctrl(bsi->uport, 0); } else { - BT_ERR("bsi->uport = NULL, has_lpm_enabled = %d", has_lpm_enabled); + BT_ERR("bsi->uport = NULL, has_lpm_enabled = %d", + has_lpm_enabled); } } @@ -193,8 +192,8 @@ static inline int bluesleep_can_sleep(void) * are both deasserted */ return (gpio_get_value(bsi->ext_wake) != bsi->ext_wake_assert) && - (gpio_get_value(bsi->host_wake) != bsi->host_wake_assert) && - (!test_bit(BT_RXTIMER, &flags)) && (bsi->uport != NULL); + (gpio_get_value(bsi->host_wake) != bsi->host_wake_assert) && + (!test_bit(BT_RXTIMER, &flags)) && (bsi->uport != NULL); } /** @@ -244,8 +243,8 @@ static void bluesleep_sleep_work(struct work_struct *work) hsuart_power(1); } else { mod_timer(&rx_timer, jiffies + (RX_TIMER_INTERVAL * HZ)); - if (gpio_get_value(bsi->ext_wake) != bsi->ext_wake_assert - && !test_bit(BT_TXIDLE, &flags)) { + if (gpio_get_value(bsi->ext_wake) != bsi->ext_wake_assert && + !test_bit(BT_TXIDLE, &flags)) { BT_DBG("force retrigger bt wake:%lx", flags); gpio_set_value(bsi->ext_wake, bsi->ext_wake_assert); msleep(20); @@ -310,9 +309,8 @@ static struct uart_port *bluesleep_get_uart_port(void) if (bluesleep_uart_dev) { uport = platform_get_drvdata(bluesleep_uart_dev); if (uport) - BT_DBG( - "%s get uart_port from blusleep_uart_dev: %s, port irq: %d", - __func__, bluesleep_uart_dev->name, uport->irq); + BT_DBG("%s get uart_port from blusleep_uart_dev: %s, port irq: %d", + __func__, bluesleep_uart_dev->name, uport->irq); } return uport; } @@ -329,8 +327,8 @@ static int bluesleep_lpm_proc_open(struct inode *inode, struct file *file) } static ssize_t bluesleep_write_proc_lpm(struct file *file, - const char __user *buffer, - size_t count, loff_t *pos) + const char __user *buffer, size_t count, + loff_t *pos) { char b; @@ -372,8 +370,8 @@ static int bluesleep_btwrite_proc_open(struct inode *inode, struct file *file) } static ssize_t bluesleep_write_proc_btwrite(struct file *file, - const char __user *buffer, - size_t count, loff_t *pos) + const char __user *buffer, + size_t count, loff_t *pos) { char b; @@ -394,35 +392,35 @@ static ssize_t bluesleep_write_proc_btwrite(struct file *file, #if LINUX_VERSION_CODE > KERNEL_VERSION(5, 10, 0) static const struct proc_ops lpm_fops = { - .proc_open = bluesleep_lpm_proc_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, - .proc_write = bluesleep_write_proc_lpm, + .proc_open = bluesleep_lpm_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, + .proc_write = bluesleep_write_proc_lpm, }; static const struct proc_ops btwrite_fops = { - .proc_open = bluesleep_btwrite_proc_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, - .proc_write = bluesleep_write_proc_btwrite, + .proc_open = bluesleep_btwrite_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, + .proc_write = bluesleep_write_proc_btwrite, }; #else static const struct file_operations lpm_fops = { - .owner = THIS_MODULE, - .open = bluesleep_lpm_proc_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, - .write = bluesleep_write_proc_lpm, + .owner = THIS_MODULE, + .open = bluesleep_lpm_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, + .write = bluesleep_write_proc_lpm, }; static const struct file_operations btwrite_fops = { - .owner = THIS_MODULE, - .open = bluesleep_btwrite_proc_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, - .write = bluesleep_write_proc_btwrite, + .owner = THIS_MODULE, + .open = bluesleep_btwrite_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, + .write = bluesleep_write_proc_btwrite, }; #endif #else @@ -433,10 +431,10 @@ static const struct file_operations btwrite_fops = { * @param data The HCI device associated with the event. * @return NOTIFY_DONE. */ -static int bluesleep_hci_event(struct notifier_block *this, - unsigned long event, void *data) +static int bluesleep_hci_event(struct notifier_block *this, unsigned long event, + void *data) { - struct hci_dev *hdev = (struct hci_dev *) data; + struct hci_dev *hdev = (struct hci_dev *)data; struct hci_uart *hu; struct uart_state *state; @@ -447,8 +445,8 @@ static int bluesleep_hci_event(struct notifier_block *this, case HCI_DEV_REG: if (!bluesleep_hdev) { bluesleep_hdev = hdev; - hu = (struct hci_uart *) hdev->driver_data; - state = (struct uart_state *) hu->tty->driver_data; + hu = (struct hci_uart *)hdev->driver_data; + state = (struct uart_state *)hu->tty->driver_data; bsi->uport = state->uart_port; } break; @@ -480,7 +478,6 @@ static void bluesleep_tx_allow_sleep(void) spin_unlock_irqrestore(&rw_lock, irq_flags); } - /* Handles reception timer expiration. * Clear BT_RXTIMER. * @param data Not used. @@ -534,7 +531,7 @@ static int bluesleep_start(void) } /* start the timer */ - mod_timer(&rx_timer, jiffies + (RX_TIMER_INTERVAL*HZ)); + mod_timer(&rx_timer, jiffies + (RX_TIMER_INTERVAL * HZ)); /*deassert BT_WAKE first*/ gpio_set_value(bsi->ext_wake, !bsi->ext_wake_assert); msleep(20); @@ -542,9 +539,9 @@ static int bluesleep_start(void) /* assert BT_WAKE */ gpio_set_value(bsi->ext_wake, bsi->ext_wake_assert); retval = request_irq(bsi->host_wake_irq, bluesleep_hostwake_isr, - IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, - "bluetooth hostwake", &bsi->pdev->dev); - if (retval < 0) { + IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, + "bluetooth hostwake", &bsi->pdev->dev); + if (retval < 0) { BT_ERR("Couldn't acquire BT_HOST_WAKE IRQ"); goto fail; } @@ -772,14 +769,15 @@ static struct platform_device *sw_uart_get_pdev(int id) static int bluesleep_probe(struct platform_device *pdev) { #if 1 - struct device_node *np = of_find_compatible_node(NULL, NULL, "allwinner,sunxi-btlpm"); + struct device_node *np = + of_find_compatible_node(NULL, NULL, "allwinner,sunxi-btlpm"); struct device *dev = &pdev->dev; enum of_gpio_flags config; int ret, uart_index; u32 val; bsi = devm_kzalloc(&pdev->dev, sizeof(struct bluesleep_info), - GFP_KERNEL); + GFP_KERNEL); if (!bsi) return -ENOMEM; @@ -792,23 +790,24 @@ static int bluesleep_probe(struct platform_device *pdev) /* set host_wake_assert */ bsi->host_wake_assert = (config == OF_GPIO_ACTIVE_LOW) ? 0 : 1; - BT_DBG("bt_hostwake gpio=%d assert=%d\n", bsi->host_wake, bsi->host_wake_assert); + BT_DBG("bt_hostwake gpio=%d assert=%d\n", bsi->host_wake, + bsi->host_wake_assert); if (assert_level != -1) { bsi->host_wake_assert = (assert_level & 0x02) > 0; - BT_DBG("override host_wake assert to %d", bsi->host_wake_assert); + BT_DBG("override host_wake assert to %d", + bsi->host_wake_assert); } ret = devm_gpio_request(dev, bsi->host_wake, "bt_hostwake"); if (ret < 0) { - BT_ERR("can't request bt_hostwake gpio %d\n", - bsi->host_wake); + BT_ERR("can't request bt_hostwake gpio %d\n", bsi->host_wake); goto err0; } ret = gpio_direction_input(bsi->host_wake); if (ret < 0) { BT_ERR("can't request input direction bt_wake gpio %d\n", - bsi->host_wake); + bsi->host_wake); goto err1; } @@ -816,7 +815,7 @@ static int bluesleep_probe(struct platform_device *pdev) if (!of_property_read_bool(np, "wakeup-source")) { #else if (!of_property_read_u32(np, "wakeup-source", &bsi->wakeup_enable) && - (bsi->wakeup_enable == 0)) { + (bsi->wakeup_enable == 0)) { #endif BT_DBG("wakeup source is disabled!\n"); } else { @@ -829,12 +828,12 @@ static int bluesleep_probe(struct platform_device *pdev) ret = dev_pm_set_wake_irq(dev, gpio_to_irq(bsi->host_wake)); if (ret < 0) { BT_ERR("can't enable wakeup src for bt_hostwake %d\n", - bsi->host_wake); + bsi->host_wake); goto err2; } bsi->wakeup_enable = 1; #else - BT_ERR("%s kernel unsupport this feature!\r\n", __func__); + BT_ERR("%s kernel unsupport this feature!\r\n", __func__); #endif } @@ -847,14 +846,14 @@ static int bluesleep_probe(struct platform_device *pdev) ret = devm_gpio_request(dev, bsi->ext_wake, "bt_wake"); if (ret < 0) { - BT_ERR("can't request bt_wake gpio %d\n", - bsi->ext_wake); + BT_ERR("can't request bt_wake gpio %d\n", bsi->ext_wake); goto err2; } /* set ext_wake_assert */ bsi->ext_wake_assert = (config == OF_GPIO_ACTIVE_LOW) ? 0 : 1; - BT_DBG("bt_wake gpio=%d assert=%d\n", bsi->ext_wake, bsi->ext_wake_assert); + BT_DBG("bt_wake gpio=%d assert=%d\n", bsi->ext_wake, + bsi->ext_wake_assert); if (assert_level != -1) { bsi->ext_wake_assert = (assert_level & 0x01) > 0; @@ -865,7 +864,7 @@ static int bluesleep_probe(struct platform_device *pdev) ret = gpio_direction_output(bsi->ext_wake, bsi->ext_wake_assert); if (ret < 0) { BT_ERR("can't request output direction bt_wake gpio %d\n", - bsi->ext_wake); + bsi->ext_wake); goto err3; } /*set ext_wake deassert as default*/ @@ -875,7 +874,7 @@ static int bluesleep_probe(struct platform_device *pdev) bsi->host_wake_irq = gpio_to_irq(bsi->host_wake); if (bsi->host_wake_irq < 0) { BT_ERR("map gpio [%d] to virq failed, errno = %d\n", - bsi->host_wake, bsi->host_wake_irq); + bsi->host_wake, bsi->host_wake_irq); ret = -ENODEV; goto err3; } @@ -898,7 +897,7 @@ static int bluesleep_probe(struct platform_device *pdev) #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) - bsi->ws = wakeup_source_register(dev, "bluesleep"); + bsi->ws = wakeup_source_register(dev, "bluesleep"); #else bsi->ws = wakeup_source_register("bluesleep"); #endif @@ -1108,4 +1107,3 @@ int bluesleep_exit(struct platform_device *dev) bluesleep_remove(dev); return 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.h index 0ff9dca14..8b3973604 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/lpm.h @@ -18,4 +18,3 @@ int bluesleep_init(struct platform_device *pdev); int bluesleep_exit(struct platform_device *dev); #endif - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/rfkill.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/rfkill.c index 5caf3f83a..89879ac3f 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/rfkill.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_btlpm/rfkill.c @@ -44,12 +44,11 @@ static struct rfkill_ops rfkill_bluetooth_ops = { int rfkill_bluetooth_init(struct platform_device *pdev) { - int rc = 0; pr_info("-->%s\n", __func__); bt_rfk = rfkill_alloc(bt_name, &pdev->dev, RFKILL_TYPE_BLUETOOTH, - &rfkill_bluetooth_ops, NULL); + &rfkill_bluetooth_ops, NULL); if (!bt_rfk) { rc = -ENOMEM; goto err_rfkill_alloc; @@ -78,4 +77,3 @@ int rfkill_bluetooth_remove(struct platform_device *dev) pr_info("<--%s\n", __func__); return 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/Makefile b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/Makefile index 390d72fa4..551cb5f38 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/Makefile +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/Makefile @@ -1,8 +1,8 @@ EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) EXTRA_CFLAGS += -Wno-implicit-fallthrough -#EXTRA_CFLAGS += -Wno-unused-function +EXTRA_CFLAGS += -Wno-unused-function #EXTRA_CFLAGS += -Wno-maybe-uninitialized -#EXTRA_CFLAGS += -Wno-unused-variable +EXTRA_CFLAGS += -Wno-unused-variable RWNX_VERS_NUM := 6.4.3.0 @@ -75,22 +75,20 @@ CONFIG_RFTEST=y CONFIG_USB_BT =y CONFIG_SDIO_BT=n CONFIG_USE_5G ?= y -CONFIG_SDIO_PWRCTRL ?= y CONFIG_CREATE_TRACE_POINTS = n CONFIG_TXRX_THREAD_PRIO = y # CONFIG_COEX = n for BT_ONLY, CONFIG_COEX =y for combo and sw CONFIG_COEX = y CONFIG_RX_NETIF_RECV_SKB = y -CONFIG_GPIO_WAKEUP ?= n CONFIG_SET_VENDOR_EXTENSION_IE = n CONFIG_SUPPORT_REALTIME_CHANGE_MAC = y CONFIG_WPA3_FOR_OLD_KERNEL ?= n CONFIG_VHT_FOR_OLD_KERNEL ?= n CONFIG_HE_FOR_OLD_KERNEL ?= n -CONFIG_PREALLOC_RX_SKB = n +CONFIG_PREALLOC_RX_SKB ?= n CONFIG_WIFI_SUSPEND_FOR_LINUX = n # Need to set fw path in BOARD_KERNEL_CMDLINE -CONFIG_USE_FW_REQUEST = n +CONFIG_USE_FW_REQUEST ?= n CONFIG_USE_P2P0=n CONFIG_TX_NETIF_FLOWCTRL = n CONFIG_ONE_TXQ = n @@ -108,9 +106,23 @@ CONFIG_FILTER_TCP_ACK =y CONFIG_RESV_MEM_SUPPORT ?= y CONFIG_GKI = n CONFIG_TEMP_COMP = n +CONFIG_TEMP_CONTROL = n CONFIG_EXT_FEM_8800DCDW = n +CONFIG_SHUTDOWN_CALLBACK = y +CONFIG_FOR_IPCAM = n +CONFIG_SDIO_ADMA = n # CONFIG_MCC = n for sta and p2p concurrent in same channel. CONFIG_MCC = y +CONFIG_APF = n +CONFIG_POWER_LIMIT = n + +#CONFIG FOR LOW POWER MODE +CONFIG_SDIO_PWRCTRL ?= y +CONFIG_GPIO_WAKEUP ?= n +CONFIG_AUTO_POWERSAVE = n + +# Enable wifi-hal Latency Mode +CONFIG_AICWF_LATENCY_MODE = n ifneq ($(CONFIG_WIRELESS_EXT), y) CONFIG_USE_WIRELESS_EXT = n @@ -136,7 +148,10 @@ CONFIG_RWNX_RADAR ?= y CONFIG_RWNX_BCMC ?= y # Enable Monitor+Data interface support (need FW support) -CONFIG_RWNX_MON_DATA =y +CONFIG_RWNX_MON_DATA = n +CONFIG_RWNX_MON_XMIT = n +CONFIG_RWNX_MON_RXFILTER = n + # extra DEBUG config CONFIG_RWNX_SW_PROFILING ?= n @@ -185,6 +200,7 @@ $(MODULE_NAME)-$(CONFIG_SDIO_SUPPORT) += aicwf_txrxif.o $(MODULE_NAME)-$(CONFIG_SDIO_SUPPORT) += aicwf_sdio.o $(MODULE_NAME)-$(CONFIG_FILTER_TCP_ACK) += aicwf_tcp_ack.o $(MODULE_NAME)-$(CONFIG_SDIO_BT) += aic_btsdio.o +$(MODULE_NAME)-$(CONFIG_SDIO_BT) += btsdio.o $(MODULE_NAME)-$(CONFIG_USB_SUPPORT) += usb_host.o $(MODULE_NAME)-$(CONFIG_USB_SUPPORT) += aicwf_txrxif.o @@ -235,6 +251,9 @@ ccflags-y += -I$(srctree)/$(src)/../aic8800_bsp ccflags-y += -DCONFIG_AIC_FW_PATH=\"$(CONFIG_AIC_FW_PATH)\" ccflags-$(CONFIG_RWNX_RADAR) += -DCONFIG_RWNX_RADAR ccflags-$(CONFIG_RWNX_MON_DATA) += -DCONFIG_RWNX_MON_DATA +ccflags-$(CONFIG_RWNX_MON_XMIT) += -DCONFIG_RWNX_MON_XMIT +ccflags-$(CONFIG_RWNX_MON_RXFILTER) += -DCONFIG_RWNX_MON_RXFILTER + ccflags-$(CONFIG_RWNX_BFMER) += -DCONFIG_RWNX_BFMER ccflags-$(CONFIG_RWNX_SPLIT_TX_BUF) += -DCONFIG_RWNX_SPLIT_TX_BUF ifeq ($(CONFIG_RWNX_SPLIT_TX_BUF), y) @@ -260,6 +279,7 @@ ccflags-$(CONFIG_USE_P2P0) += -DCONFIG_USE_P2P0 ccflags-$(CONFIG_FDRV_NO_REG_SDIO) += -DCONFIG_FDRV_NO_REG_SDIO ccflags-$(CONFIG_SCHED_SCAN) += -DCONFIG_SCHED_SCAN ccflags-$(CONFIG_OOB) += -DCONFIG_OOB +ccflags-$(CONFIG_AICWF_LATENCY_MODE) += -DAICWF_LATENCY_MODE ccflags-$(CONFIG_USE_CUSTOMER_MAC) += -DCONFIG_USE_CUSTOMER_MAC ccflags-$(CONFIG_PREALLOC_TXQ) += -DCONFIG_PREALLOC_TXQ ccflags-$(CONFIG_DPD) += -DCONFIG_DPD @@ -270,8 +290,13 @@ ccflags-$(CONFIG_SDIO_BT) += -DCONFIG_SDIO_BT ccflags-$(CONFIG_RESV_MEM_SUPPORT) += -DCONFIG_RESV_MEM_SUPPORT ccflags-$(CONFIG_GKI) += -DCONFIG_GKI ccflags-$(CONFIG_TEMP_COMP) += -DCONFIG_TEMP_COMP +ccflags-$(CONFIG_TEMP_CONTROL) += -DCONFIG_TEMP_CONTROL +ccflags-$(CONFIG_POWER_LIMIT) += -DCONFIG_POWER_LIMIT ccflags-$(CONFIG_EXT_FEM_8800DCDW) += -DCONFIG_EXT_FEM_8800DCDW ccflags-$(CONFIG_MCC) += -DCONFIG_MCC +ccflags-$(CONFIG_SHUTDOWN_CALLBACK) += -DCONFIG_SHUTDOWN_CALLBACK +ccflags-$(CONFIG_FOR_IPCAM) += -DCONFIG_FOR_IPCAM +ccflags-$(CONFIG_SDIO_ADMA) += -DCONFIG_SDIO_ADMA ifeq ($(CONFIG_SDIO_SUPPORT), y) @@ -307,11 +332,13 @@ endif ccflags-$(CONFIG_RX_REORDER) += -DAICWF_RX_REORDER ccflags-$(CONFIG_ARP_OFFLOAD) += -DAICWF_ARP_OFFLOAD -ccflags-$(CONFIG_RADAR_DETECT) += -DRADAR_OR_IR_DETECT +ccflags-$(CONFIG_RADAR_OR_IR_DETECT) += -DCONFIG_RADAR_OR_IR_DETECT ccflags-$(CONFIG_DOWNLOAD_FW) += -DCONFIG_DOWNLOAD_FW ccflags-$(CONFIG_RX_NETIF_RECV_SKB) += -DCONFIG_RX_NETIF_RECV_SKB ccflags-$(CONFIG_ONE_TXQ) += -DCONFIG_ONE_TXQ ccflags-$(CONFIG_TX_NETIF_FLOWCTRL) += -DCONFIG_TX_NETIF_FLOWCTRL +ccflags-$(CONFIG_APF) += -DCONFIG_APF +ccflags-$(CONFIG_AUTO_POWERSAVE) += -DCONFIG_AUTO_POWERSAVE ccflags-y += -DAIC_TRACE_INCLUDE_PATH=$(src) MAKEFLAGS +=-j$(shell nproc) @@ -362,6 +389,7 @@ ccflags-y += -DANDROID_PLATFORM endif ifeq ($(CONFIG_PLATFORM_UBUNTU), y) +ccflags-$(CONFIG_PLATFORM_UBUNTU) += -DCONFIG_PLATFORM_UBUNTU KDIR ?= /lib/modules/$(shell uname -r)/build PWD ?= $(shell pwd) KVER ?= $(shell uname -r) diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.c index dd038e39f..c86fe7d35 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.c @@ -15,44 +15,44 @@ #define _AIC_BR_EXT_C_ #ifdef __KERNEL__ - #include - #include - #include - #include - #include - #include - #include "rwnx_defs.h" +#include +#include +#include +#include +#include +#include +#include "rwnx_defs.h" #endif #ifdef CL_IPV6_PASS - #ifdef __KERNEL__ - #include - #include - #include - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24)) - #include - #else - #include - #endif - #endif +#ifdef __KERNEL__ +#include +#include +#include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24)) +#include +#else +#include +#endif +#endif #endif #ifdef CONFIG_BR_SUPPORT /* #define BR_SUPPORT_DEBUG */ -#define NAT25_IPV4 01 -#define NAT25_IPV6 02 -#define NAT25_IPX 03 -#define NAT25_APPLE 04 -#define NAT25_PPPOE 05 +#define NAT25_IPV4 01 +#define NAT25_IPV6 02 +#define NAT25_IPX 03 +#define NAT25_APPLE 04 +#define NAT25_PPPOE 05 #define RTL_RELAY_TAG_LEN (ETH_ALEN) -#define TAG_HDR_LEN 4 +#define TAG_HDR_LEN 4 -#define MAGIC_CODE 0x8186 -#define MAGIC_CODE_LEN 2 -#define WAIT_TIME_PPPOE 5 /* waiting time for pppoe server in sec */ +#define MAGIC_CODE 0x8186 +#define MAGIC_CODE_LEN 2 +#define WAIT_TIME_PPPOE 5 /* waiting time for pppoe server in sec */ /*----------------------------------------------------------------- How database records network address: @@ -65,9 +65,9 @@ PPPoE |type| SID | AC MAC | -----------------------------------------------------------------*/ - /* Find a tag in pppoe frame and return the pointer */ -static __inline__ unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, unsigned short type) +static __inline__ unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, + unsigned short type) { unsigned char *cur_ptr, *start_ptr; unsigned short tagLen, tagType; @@ -76,7 +76,7 @@ static __inline__ unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, un while ((cur_ptr - start_ptr) < ntohs(ph->length)) { /* prevent un-alignment access */ tagType = (unsigned short)((cur_ptr[0] << 8) + cur_ptr[1]); - tagLen = (unsigned short)((cur_ptr[2] << 8) + cur_ptr[3]); + tagLen = (unsigned short)((cur_ptr[2] << 8) + cur_ptr[3]); if (tagType == type) return cur_ptr; cur_ptr = cur_ptr + TAG_HDR_LEN + tagLen; @@ -84,8 +84,8 @@ static __inline__ unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, un return 0; } - -static __inline__ int __nat25_add_pppoe_tag(struct sk_buff *skb, struct pppoe_tag *tag) +static __inline__ int __nat25_add_pppoe_tag(struct sk_buff *skb, + struct pppoe_tag *tag) { struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN); int data_len; @@ -98,7 +98,8 @@ static __inline__ int __nat25_add_pppoe_tag(struct sk_buff *skb, struct pppoe_ta skb_put(skb, data_len); /* have a room for new tag */ - memmove(((unsigned char *)ph->tag + data_len), (unsigned char *)ph->tag, ntohs(ph->length)); + memmove(((unsigned char *)ph->tag + data_len), (unsigned char *)ph->tag, + ntohs(ph->length)); ph->length = htons(ntohs(ph->length) + data_len); memcpy((unsigned char *)ph->tag, tag, data_len); return data_len; @@ -134,9 +135,8 @@ static __inline__ unsigned long __nat25_timeout(struct rwnx_vif *vif) return timeout; } - -static __inline__ int __nat25_has_expired(struct rwnx_vif *vif, - struct nat25_network_db_entry *fdb) +static __inline__ int __nat25_has_expired(struct rwnx_vif *vif, + struct nat25_network_db_entry *fdb) { if (time_before_eq(fdb->ageing_timer, __nat25_timeout(vif))) return 1; @@ -144,9 +144,9 @@ static __inline__ int __nat25_has_expired(struct rwnx_vif *vif, return 0; } - -static __inline__ void __nat25_generate_ipv4_network_addr(unsigned char *networkAddr, - unsigned int *ipAddr) +static __inline__ void +__nat25_generate_ipv4_network_addr(unsigned char *networkAddr, + unsigned int *ipAddr) { memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); @@ -154,9 +154,10 @@ static __inline__ void __nat25_generate_ipv4_network_addr(unsigned char *network memcpy(networkAddr + 7, (unsigned char *)ipAddr, 4); } - -static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr, - unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr) +static __inline__ void +__nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr, + unsigned int *ipxNetAddr, + unsigned char *ipxNodeAddr) { memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); @@ -165,9 +166,10 @@ static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char memcpy(networkAddr + 5, ipxNodeAddr, 6); } - -static __inline__ void __nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr, - unsigned int *ipxNetAddr, unsigned short *ipxSocketAddr) +static __inline__ void +__nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr, + unsigned int *ipxNetAddr, + unsigned short *ipxSocketAddr) { memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); @@ -176,9 +178,10 @@ static __inline__ void __nat25_generate_ipx_network_addr_with_socket(unsigned ch memcpy(networkAddr + 5, (unsigned char *)ipxSocketAddr, 2); } - -static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networkAddr, - unsigned short *network, unsigned char *node) +static __inline__ void +__nat25_generate_apple_network_addr(unsigned char *networkAddr, + unsigned short *network, + unsigned char *node) { memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); @@ -187,9 +190,9 @@ static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networ networkAddr[3] = *node; } - -static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr, - unsigned char *ac_mac, unsigned short *sid) +static __inline__ void +__nat25_generate_pppoe_network_addr(unsigned char *networkAddr, + unsigned char *ac_mac, unsigned short *sid) { memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); @@ -198,10 +201,9 @@ static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char *networ memcpy(networkAddr + 3, (unsigned char *)ac_mac, 6); } - #ifdef CL_IPV6_PASS -static void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr, - unsigned int *ipAddr) +static void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr, + unsigned int *ipAddr) { memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); @@ -209,8 +211,8 @@ static void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr, memcpy(networkAddr + 1, (unsigned char *)ipAddr, 16); } - -static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, unsigned char len8b) +static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, + unsigned char len8b) { while (len > 0) { if (*data == tag && *(data + 1) == len8b && len >= len8b * 8) @@ -222,8 +224,8 @@ static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, return NULL; } - -static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char *replace_mac) +static int update_nd_link_layer_addr(unsigned char *data, int len, + unsigned char *replace_mac) { struct icmp6hdr *icmphdr = (struct icmp6hdr *)data; unsigned char *mac; @@ -233,8 +235,10 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char mac = scan_tlv(&data[8], len - 8, 1, 1); if (mac) { printk("Router Solicitation, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], - replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]); + mac[0], mac[1], mac[2], mac[3], mac[4], + mac[5], replace_mac[0], replace_mac[1], + replace_mac[2], replace_mac[3], + replace_mac[4], replace_mac[5]); memcpy(mac, replace_mac, 6); return 1; } @@ -244,8 +248,10 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char mac = scan_tlv(&data[16], len - 16, 1, 1); if (mac) { printk("Router Advertisement, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], - replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]); + mac[0], mac[1], mac[2], mac[3], mac[4], + mac[5], replace_mac[0], replace_mac[1], + replace_mac[2], replace_mac[3], + replace_mac[4], replace_mac[5]); memcpy(mac, replace_mac, 6); return 1; } @@ -255,8 +261,10 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char mac = scan_tlv(&data[24], len - 24, 1, 1); if (mac) { printk("Neighbor Solicitation, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], - replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]); + mac[0], mac[1], mac[2], mac[3], mac[4], + mac[5], replace_mac[0], replace_mac[1], + replace_mac[2], replace_mac[3], + replace_mac[4], replace_mac[5]); memcpy(mac, replace_mac, 6); return 1; } @@ -266,8 +274,10 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char mac = scan_tlv(&data[24], len - 24, 2, 1); if (mac) { printk("Neighbor Advertisement, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], - replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]); + mac[0], mac[1], mac[2], mac[3], mac[4], + mac[5], replace_mac[0], replace_mac[1], + replace_mac[2], replace_mac[3], + replace_mac[4], replace_mac[5]); memcpy(mac, replace_mac, 6); return 1; } @@ -277,8 +287,10 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char mac = scan_tlv(&data[40], len - 40, 2, 1); if (mac) { printk("Redirect, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], - replace_mac[0], replace_mac[1], replace_mac[2], replace_mac[3], replace_mac[4], replace_mac[5]); + mac[0], mac[1], mac[2], mac[3], mac[4], + mac[5], replace_mac[0], replace_mac[1], + replace_mac[2], replace_mac[3], + replace_mac[4], replace_mac[5]); memcpy(mac, replace_mac, 6); return 1; } @@ -307,20 +319,22 @@ static void convert_ipv6_mac_to_mc(struct sk_buff *skb) #endif /* CL_IPV6_PASS */ #endif /* SUPPORT_RX_UNI2MCAST */ - static __inline__ int __nat25_network_hash(unsigned char *networkAddr) { if (networkAddr[0] == NAT25_IPV4) { unsigned long x; - x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; + x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ + networkAddr[10]; return x & (NAT25_HASH_SIZE - 1); } else if (networkAddr[0] == NAT25_IPX) { unsigned long x; - x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ - networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; + x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ + networkAddr[4] ^ networkAddr[5] ^ networkAddr[6] ^ + networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ + networkAddr[10]; return x & (NAT25_HASH_SIZE - 1); } else if (networkAddr[0] == NAT25_APPLE) { @@ -332,7 +346,9 @@ static __inline__ int __nat25_network_hash(unsigned char *networkAddr) } else if (networkAddr[0] == NAT25_PPPOE) { unsigned long x; - x = networkAddr[0] ^ networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ networkAddr[6] ^ networkAddr[7] ^ networkAddr[8]; + x = networkAddr[0] ^ networkAddr[1] ^ networkAddr[2] ^ + networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ + networkAddr[6] ^ networkAddr[7] ^ networkAddr[8]; return x & (NAT25_HASH_SIZE - 1); } @@ -340,9 +356,11 @@ static __inline__ int __nat25_network_hash(unsigned char *networkAddr) else if (networkAddr[0] == NAT25_IPV6) { unsigned long x; - x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ - networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10] ^ - networkAddr[11] ^ networkAddr[12] ^ networkAddr[13] ^ networkAddr[14] ^ networkAddr[15] ^ + x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ + networkAddr[4] ^ networkAddr[5] ^ networkAddr[6] ^ + networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ + networkAddr[10] ^ networkAddr[11] ^ networkAddr[12] ^ + networkAddr[13] ^ networkAddr[14] ^ networkAddr[15] ^ networkAddr[16]; return x & (NAT25_HASH_SIZE - 1); @@ -359,9 +377,9 @@ static __inline__ int __nat25_network_hash(unsigned char *networkAddr) } } - static __inline__ void __network_hash_link(struct rwnx_vif *vif, - struct nat25_network_db_entry *ent, int hash) + struct nat25_network_db_entry *ent, + int hash) { /* Caller must _enter_critical_bh already! */ /* _irqL irqL; */ @@ -376,7 +394,6 @@ static __inline__ void __network_hash_link(struct rwnx_vif *vif, /* _exit_critical_bh(&priv->br_ext_lock, &irqL); */ } - static __inline__ void __network_hash_unlink(struct nat25_network_db_entry *ent) { /* Caller must _enter_critical_bh already! */ @@ -392,16 +409,17 @@ static __inline__ void __network_hash_unlink(struct nat25_network_db_entry *ent) /* _exit_critical_bh(&priv->br_ext_lock, &irqL); */ } - static int __nat25_db_network_lookup_and_replace(struct rwnx_vif *vif, - struct sk_buff *skb, unsigned char *networkAddr) + struct sk_buff *skb, + unsigned char *networkAddr) { struct nat25_network_db_entry *db; - spin_lock_bh(&vif->br_ext_lock); + spin_lock_bh(&vif->br_ext_lock); db = vif->nethash[__nat25_network_hash(networkAddr)]; while (db != NULL) { - if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) { + if (!memcmp(db->networkAddr, networkAddr, + MAX_NETWORK_ADDR_LEN)) { if (!__nat25_has_expired(vif, db)) { /* replace the destination mac address */ memcpy(skb->data, db->macAddr, ETH_ALEN); @@ -409,52 +427,33 @@ static int __nat25_db_network_lookup_and_replace(struct rwnx_vif *vif, #ifdef CL_IPV6_PASS printk("NAT25: Lookup M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" - "%02x%02x%02x%02x%02x%02x\n", - db->macAddr[0], - db->macAddr[1], - db->macAddr[2], - db->macAddr[3], - db->macAddr[4], - db->macAddr[5], - db->networkAddr[0], - db->networkAddr[1], - db->networkAddr[2], - db->networkAddr[3], - db->networkAddr[4], - db->networkAddr[5], - db->networkAddr[6], - db->networkAddr[7], - db->networkAddr[8], - db->networkAddr[9], - db->networkAddr[10], - db->networkAddr[11], - db->networkAddr[12], - db->networkAddr[13], - db->networkAddr[14], - db->networkAddr[15], - db->networkAddr[16]); + "%02x%02x%02x%02x%02x%02x\n", + db->macAddr[0], db->macAddr[1], + db->macAddr[2], db->macAddr[3], + db->macAddr[4], db->macAddr[5], + db->networkAddr[0], db->networkAddr[1], + db->networkAddr[2], db->networkAddr[3], + db->networkAddr[4], db->networkAddr[5], + db->networkAddr[6], db->networkAddr[7], + db->networkAddr[8], db->networkAddr[9], + db->networkAddr[10], db->networkAddr[11], + db->networkAddr[12], db->networkAddr[13], + db->networkAddr[14], db->networkAddr[15], + db->networkAddr[16]); #else printk("NAT25: Lookup M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", - db->macAddr[0], - db->macAddr[1], - db->macAddr[2], - db->macAddr[3], - db->macAddr[4], - db->macAddr[5], - db->networkAddr[0], - db->networkAddr[1], - db->networkAddr[2], - db->networkAddr[3], - db->networkAddr[4], - db->networkAddr[5], - db->networkAddr[6], - db->networkAddr[7], - db->networkAddr[8], - db->networkAddr[9], - db->networkAddr[10]); + db->macAddr[0], db->macAddr[1], + db->macAddr[2], db->macAddr[3], + db->macAddr[4], db->macAddr[5], + db->networkAddr[0], db->networkAddr[1], + db->networkAddr[2], db->networkAddr[3], + db->networkAddr[4], db->networkAddr[5], + db->networkAddr[6], db->networkAddr[7], + db->networkAddr[8], db->networkAddr[9], + db->networkAddr[10]); #endif } - spin_unlock_bh(&vif->br_ext_lock); + spin_unlock_bh(&vif->br_ext_lock); return 1; } @@ -465,9 +464,9 @@ static int __nat25_db_network_lookup_and_replace(struct rwnx_vif *vif, return 0; } - static void __nat25_db_network_insert(struct rwnx_vif *vif, - unsigned char *macAddr, unsigned char *networkAddr) + unsigned char *macAddr, + unsigned char *networkAddr) { struct nat25_network_db_entry *db; int hash; @@ -475,9 +474,10 @@ static void __nat25_db_network_insert(struct rwnx_vif *vif, hash = __nat25_network_hash(networkAddr); db = vif->nethash[hash]; - + while (db != NULL) { - if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) { + if (!memcmp(db->networkAddr, networkAddr, + MAX_NETWORK_ADDR_LEN)) { memcpy(db->macAddr, macAddr, ETH_ALEN); db->ageing_timer = jiffies; spin_unlock_bh(&vif->br_ext_lock); @@ -487,7 +487,8 @@ static void __nat25_db_network_insert(struct rwnx_vif *vif, db = db->next_hash; } - db = (struct nat25_network_db_entry *)kmalloc(sizeof(*db), in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); + db = (struct nat25_network_db_entry *)kmalloc( + sizeof(*db), in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); if (db == NULL) { spin_unlock_bh(&vif->br_ext_lock); return; @@ -503,7 +504,6 @@ static void __nat25_db_network_insert(struct rwnx_vif *vif, spin_unlock_bh(&vif->br_ext_lock); } - static void __nat25_db_print(struct rwnx_vif *vif) { spin_lock_bh(&vif->br_ext_lock); @@ -523,55 +523,30 @@ static void __nat25_db_print(struct rwnx_vif *vif) while (db != NULL) { #ifdef CL_IPV6_PASS printk("NAT25: DB(%d) H(%02d) C(%d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" - "%02x%02x%02x%02x%02x%02x\n", - j, - i, - atomic_read(&db->use_count), - db->macAddr[0], - db->macAddr[1], - db->macAddr[2], - db->macAddr[3], - db->macAddr[4], - db->macAddr[5], - db->networkAddr[0], - db->networkAddr[1], - db->networkAddr[2], - db->networkAddr[3], - db->networkAddr[4], - db->networkAddr[5], - db->networkAddr[6], - db->networkAddr[7], - db->networkAddr[8], - db->networkAddr[9], - db->networkAddr[10], - db->networkAddr[11], - db->networkAddr[12], - db->networkAddr[13], - db->networkAddr[14], - db->networkAddr[15], - db->networkAddr[16]); + "%02x%02x%02x%02x%02x%02x\n", + j, i, atomic_read(&db->use_count), + db->macAddr[0], db->macAddr[1], db->macAddr[2], + db->macAddr[3], db->macAddr[4], db->macAddr[5], + db->networkAddr[0], db->networkAddr[1], + db->networkAddr[2], db->networkAddr[3], + db->networkAddr[4], db->networkAddr[5], + db->networkAddr[6], db->networkAddr[7], + db->networkAddr[8], db->networkAddr[9], + db->networkAddr[10], db->networkAddr[11], + db->networkAddr[12], db->networkAddr[13], + db->networkAddr[14], db->networkAddr[15], + db->networkAddr[16]); #else printk("NAT25: DB(%d) H(%02d) C(%d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", - j, - i, - atomic_read(&db->use_count), - db->macAddr[0], - db->macAddr[1], - db->macAddr[2], - db->macAddr[3], - db->macAddr[4], - db->macAddr[5], - db->networkAddr[0], - db->networkAddr[1], - db->networkAddr[2], - db->networkAddr[3], - db->networkAddr[4], - db->networkAddr[5], - db->networkAddr[6], - db->networkAddr[7], - db->networkAddr[8], - db->networkAddr[9], - db->networkAddr[10]); + j, i, atomic_read(&db->use_count), + db->macAddr[0], db->macAddr[1], db->macAddr[2], + db->macAddr[3], db->macAddr[4], db->macAddr[5], + db->networkAddr[0], db->networkAddr[1], + db->networkAddr[2], db->networkAddr[3], + db->networkAddr[4], db->networkAddr[5], + db->networkAddr[6], db->networkAddr[7], + db->networkAddr[8], db->networkAddr[9], + db->networkAddr[10]); #endif j++; @@ -583,9 +558,6 @@ static void __nat25_db_print(struct rwnx_vif *vif) spin_unlock_bh(&vif->br_ext_lock); } - - - /* * NAT2.5 interface */ @@ -593,7 +565,7 @@ static void __nat25_db_print(struct rwnx_vif *vif) void nat25_db_cleanup(struct rwnx_vif *vif) { int i; - spin_lock_bh(&vif->br_ext_lock); + spin_lock_bh(&vif->br_ext_lock); for (i = 0; i < NAT25_HASH_SIZE; i++) { struct nat25_network_db_entry *f; @@ -617,7 +589,6 @@ void nat25_db_cleanup(struct rwnx_vif *vif) spin_unlock_bh(&vif->br_ext_lock); } - void nat25_db_expire(struct rwnx_vif *vif) { int i; @@ -634,61 +605,64 @@ void nat25_db_expire(struct rwnx_vif *vif) g = f->next_hash; if (__nat25_has_expired(vif, f)) { - if (atomic_dec_and_test(&f->use_count)) { + if (atomic_dec_and_test( + &f->use_count)) { #ifdef BR_SUPPORT_DEBUG #ifdef CL_IPV6_PASS - panic_printk("NAT25 Expire H(%02d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" + panic_printk( + "NAT25 Expire H(%02d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" "%02x%02x%02x%02x%02x%02x\n", - i, - f->macAddr[0], - f->macAddr[1], - f->macAddr[2], - f->macAddr[3], - f->macAddr[4], - f->macAddr[5], - f->networkAddr[0], - f->networkAddr[1], - f->networkAddr[2], - f->networkAddr[3], - f->networkAddr[4], - f->networkAddr[5], - f->networkAddr[6], - f->networkAddr[7], - f->networkAddr[8], - f->networkAddr[9], - f->networkAddr[10], - f->networkAddr[11], - f->networkAddr[12], - f->networkAddr[13], - f->networkAddr[14], - f->networkAddr[15], + i, f->macAddr[0], + f->macAddr[1], + f->macAddr[2], + f->macAddr[3], + f->macAddr[4], + f->macAddr[5], + f->networkAddr[0], + f->networkAddr[1], + f->networkAddr[2], + f->networkAddr[3], + f->networkAddr[4], + f->networkAddr[5], + f->networkAddr[6], + f->networkAddr[7], + f->networkAddr[8], + f->networkAddr[9], + f->networkAddr[10], + f->networkAddr[11], + f->networkAddr[12], + f->networkAddr[13], + f->networkAddr[14], + f->networkAddr[15], f->networkAddr[16]); #else - panic_printk("NAT25 Expire H(%02d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", - i, - f->macAddr[0], - f->macAddr[1], - f->macAddr[2], - f->macAddr[3], - f->macAddr[4], - f->macAddr[5], - f->networkAddr[0], - f->networkAddr[1], - f->networkAddr[2], - f->networkAddr[3], - f->networkAddr[4], - f->networkAddr[5], - f->networkAddr[6], - f->networkAddr[7], - f->networkAddr[8], - f->networkAddr[9], + panic_printk( + "NAT25 Expire H(%02d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", + i, f->macAddr[0], + f->macAddr[1], + f->macAddr[2], + f->macAddr[3], + f->macAddr[4], + f->macAddr[5], + f->networkAddr[0], + f->networkAddr[1], + f->networkAddr[2], + f->networkAddr[3], + f->networkAddr[4], + f->networkAddr[5], + f->networkAddr[6], + f->networkAddr[7], + f->networkAddr[8], + f->networkAddr[9], f->networkAddr[10]); #endif #endif if (vif->scdb_entry == f) { - memset(vif->scdb_mac, 0, ETH_ALEN); - memset(vif->scdb_ip, 0, 4); + memset(vif->scdb_mac, 0, + ETH_ALEN); + memset(vif->scdb_ip, 0, + 4); vif->scdb_entry = NULL; } __network_hash_unlink(f); @@ -704,12 +678,12 @@ void nat25_db_expire(struct rwnx_vif *vif) spin_unlock_bh(&vif->br_ext_lock); } - #ifdef SUPPORT_TX_MCAST2UNI -static int checkIPMcAndReplace(struct rwnx_vif *vif, struct sk_buff *skb, unsigned int *dst_ip) +static int checkIPMcAndReplace(struct rwnx_vif *vif, struct sk_buff *skb, + unsigned int *dst_ip) { - struct stat_info *pstat; - struct list_head *phead, *plist; + struct stat_info *pstat; + struct list_head *phead, *plist; int i; phead = &vif->asoc_list; @@ -723,8 +697,11 @@ static int checkIPMcAndReplace(struct rwnx_vif *vif, struct sk_buff *skb, unsign continue; for (i = 0; i < MAX_IP_MC_ENTRY; i++) { - if (pstat->ipmc[i].used && !memcmp(&pstat->ipmc[i].mcmac[3], ((unsigned char *)dst_ip) + 1, 3)) { - memcpy(skb->data, pstat->ipmc[i].mcmac, ETH_ALEN); + if (pstat->ipmc[i].used && + !memcmp(&pstat->ipmc[i].mcmac[3], + ((unsigned char *)dst_ip) + 1, 3)) { + memcpy(skb->data, pstat->ipmc[i].mcmac, + ETH_ALEN); return 1; } } @@ -752,7 +729,8 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) if (protocol == __constant_htons(ETH_P_IP)) { struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN); - if (((unsigned char *)(iph) + (iph->ihl << 2)) >= (skb->data + ETH_HLEN + skb->len)) { + if (((unsigned char *)(iph) + (iph->ihl << 2)) >= + (skb->data + ETH_HLEN + skb->len)) { printk("NAT25: malformed IP packet !\n"); return -1; } @@ -766,46 +744,62 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) /* in class A, B, C, host address is all zero or all one is illegal */ if (iph->saddr == 0) return 0; - printk("NAT25: Insert IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); - __nat25_generate_ipv4_network_addr(networkAddr, &iph->saddr); + printk("NAT25: Insert IP, SA=%08x, DA=%08x\n", + iph->saddr, iph->daddr); + __nat25_generate_ipv4_network_addr(networkAddr, + &iph->saddr); /* record source IP address and , source mac address into db */ - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + __nat25_db_network_insert(vif, skb->data + ETH_ALEN, + networkAddr); __nat25_db_print(vif); } - return 0; + return 0; case NAT25_LOOKUP: { - printk("NAT25: Lookup IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); + printk("NAT25: Lookup IP, SA=%08x, DA=%08x\n", + iph->saddr, iph->daddr); #ifdef SUPPORT_TX_MCAST2UNI if (vif->pshare->rf_ft_var.mc2u_disable || - ((((OPMODE & (WIFI_STATION_STATE | WIFI_ASOC_STATE)) - == (WIFI_STATION_STATE | WIFI_ASOC_STATE)) && + ((((OPMODE & + (WIFI_STATION_STATE | WIFI_ASOC_STATE)) == + (WIFI_STATION_STATE | WIFI_ASOC_STATE)) && !checkIPMcAndReplace(vif, skb, &iph->daddr)) || (OPMODE & WIFI_ADHOC_STATE))) #endif { - __nat25_generate_ipv4_network_addr(networkAddr, &iph->daddr); + __nat25_generate_ipv4_network_addr(networkAddr, + &iph->daddr); - if (!__nat25_db_network_lookup_and_replace(vif, skb, networkAddr)) { - if (*((unsigned char *)&iph->daddr + 3) == 0xff) { + if (!__nat25_db_network_lookup_and_replace( + vif, skb, networkAddr)) { + if (*((unsigned char *)&iph->daddr + + 3) == 0xff) { /* L2 is unicast but L3 is broadcast, make L2 bacome broadcast */ printk("NAT25: Set DA as boardcast\n"); - memset(skb->data, 0xff, ETH_ALEN); + memset(skb->data, 0xff, + ETH_ALEN); } else { /* forward unknow IP packet to upper TCP/IP */ printk("NAT25: Replace DA with BR's MAC\n"); - if ((*(u32 *)vif->br_mac) == 0 && (*(u16 *)(vif->br_mac + 4)) == 0) { - void netdev_br_init(struct net_device *netdev); + if ((*(u32 *)vif->br_mac) == + 0 && + (*(u16 *)(vif->br_mac + + 4)) == 0) { + void netdev_br_init( + struct net_device * + netdev); printk("Re-init netdev_br_init() due to br_mac==0!\n"); - netdev_br_init(vif->ndev); + netdev_br_init( + vif->ndev); } - memcpy(skb->data, vif->br_mac, ETH_ALEN); + memcpy(skb->data, vif->br_mac, + ETH_ALEN); } } } } - return 0; + return 0; default: return -1; @@ -821,17 +815,19 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) unsigned int *sender, *target; if (arp->ar_pro != __constant_htons(ETH_P_IP)) { - printk("NAT25: arp protocol unknown (%4x)!\n", htons(arp->ar_pro)); + printk("NAT25: arp protocol unknown (%4x)!\n", + htons(arp->ar_pro)); return -1; } switch (method) { case NAT25_CHECK: - return 0; /* skb_copy for all ARP frame */ + return 0; /* skb_copy for all ARP frame */ case NAT25_INSERT: { - printk("NAT25: Insert ARP, MAC=%02x%02x%02x%02x%02x%02x\n", arp_ptr[0], - arp_ptr[1], arp_ptr[2], arp_ptr[3], arp_ptr[4], arp_ptr[5]); + printk("NAT25: Insert ARP, MAC=%02x%02x%02x%02x%02x%02x\n", + arp_ptr[0], arp_ptr[1], arp_ptr[2], arp_ptr[3], + arp_ptr[4], arp_ptr[5]); /* change to ARP sender mac address to wlan STA address */ memcpy(arp_ptr, vif->ndev->dev_addr, ETH_ALEN); @@ -841,11 +837,12 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) __nat25_generate_ipv4_network_addr(networkAddr, sender); - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + __nat25_db_network_insert(vif, skb->data + ETH_ALEN, + networkAddr); __nat25_db_print(vif); } - return 0; + return 0; case NAT25_LOOKUP: { printk("NAT25: Lookup ARP\n"); @@ -857,14 +854,15 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) __nat25_generate_ipv4_network_addr(networkAddr, target); - __nat25_db_network_lookup_and_replace(vif, skb, networkAddr); + __nat25_db_network_lookup_and_replace(vif, skb, + networkAddr); /* change to ARP target mac address to Lookup result */ arp_ptr = (unsigned char *)(arp + 1); arp_ptr += (arp->ar_hln + arp->ar_pln); memcpy(arp_ptr, skb->data, ETH_ALEN); } - return 0; + return 0; default: return -1; @@ -877,10 +875,10 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) else if ((protocol == __constant_htons(ETH_P_IPX)) || (protocol == __constant_htons(ETH_P_ATALK)) || (protocol == __constant_htons(ETH_P_AARP))) { - unsigned char ipx_header[2] = {0xFF, 0xFF}; - struct ipxhdr *ipx = NULL; - struct elapaarp *ea = NULL; - struct ddpehdr *ddp = NULL; + unsigned char ipx_header[2] = { 0xFF, 0xFF }; + struct ipxhdr *ipx = NULL; + struct elapaarp *ea = NULL; + struct ddpehdr *ddp = NULL; unsigned char *framePtr = skb->data + ETH_HLEN; if (protocol == __constant_htons(ETH_P_IPX)) { @@ -891,36 +889,51 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) printk("NAT25: Protocol=IPX (Ethernet 802.3)\n"); ipx = (struct ipxhdr *)framePtr; } else { - unsigned char ipx_8022_type = 0xE0; + unsigned char ipx_8022_type = 0xE0; unsigned char snap_8022_type = 0xAA; if (*framePtr == snap_8022_type) { - unsigned char ipx_snap_id[5] = {0x0, 0x0, 0x0, 0x81, 0x37}; /* IPX SNAP ID */ - unsigned char aarp_snap_id[5] = {0x00, 0x00, 0x00, 0x80, 0xF3}; /* Apple Talk AARP SNAP ID */ - unsigned char ddp_snap_id[5] = {0x08, 0x00, 0x07, 0x80, 0x9B}; /* Apple Talk DDP SNAP ID */ + unsigned char ipx_snap_id[5] = { + 0x0, 0x0, 0x0, 0x81, 0x37 + }; /* IPX SNAP ID */ + unsigned char aarp_snap_id[5] = { + 0x00, 0x00, 0x00, 0x80, 0xF3 + }; /* Apple Talk AARP SNAP ID */ + unsigned char ddp_snap_id[5] = { + 0x08, 0x00, 0x07, 0x80, 0x9B + }; /* Apple Talk DDP SNAP ID */ - framePtr += 3; /* eliminate the 802.2 header */ + framePtr += + 3; /* eliminate the 802.2 header */ if (!memcmp(ipx_snap_id, framePtr, 5)) { - framePtr += 5; /* eliminate the SNAP header */ + framePtr += + 5; /* eliminate the SNAP header */ printk("NAT25: Protocol=IPX (Ethernet SNAP)\n"); ipx = (struct ipxhdr *)framePtr; - } else if (!memcmp(aarp_snap_id, framePtr, 5)) { - framePtr += 5; /* eliminate the SNAP header */ + } else if (!memcmp(aarp_snap_id, + framePtr, 5)) { + framePtr += + 5; /* eliminate the SNAP header */ ea = (struct elapaarp *)framePtr; - } else if (!memcmp(ddp_snap_id, framePtr, 5)) { - framePtr += 5; /* eliminate the SNAP header */ + } else if (!memcmp(ddp_snap_id, + framePtr, 5)) { + framePtr += + 5; /* eliminate the SNAP header */ ddp = (struct ddpehdr *)framePtr; } else { - printk("NAT25: Protocol=Ethernet SNAP %02x%02x%02x%02x%02x\n", framePtr[0], - framePtr[1], framePtr[2], framePtr[3], framePtr[4]); + printk("NAT25: Protocol=Ethernet SNAP %02x%02x%02x%02x%02x\n", + framePtr[0], framePtr[1], + framePtr[2], framePtr[3], + framePtr[4]); return -1; } } else if (*framePtr == ipx_8022_type) { - framePtr += 3; /* eliminate the 802.2 header */ + framePtr += + 3; /* eliminate the 802.2 header */ if (!memcmp(ipx_header, framePtr, 2)) { printk("NAT25: Protocol=IPX (Ethernet 802.2)\n"); @@ -935,7 +948,8 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) if (ipx != NULL) { switch (method) { case NAT25_CHECK: - if (!memcmp(skb->data + ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) { + if (!memcmp(skb->data + ETH_ALEN, + ipx->ipx_source.node, ETH_ALEN)) { printk("NAT25: Check IPX skb_copy\n"); return 0; } @@ -943,56 +957,71 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) case NAT25_INSERT: { printk("NAT25: Insert IPX, Dest=%08x,%02x%02x%02x%02x%02x%02x,%04x Source=%08x,%02x%02x%02x%02x%02x%02x,%04x\n", - ipx->ipx_dest.net, - ipx->ipx_dest.node[0], - ipx->ipx_dest.node[1], - ipx->ipx_dest.node[2], - ipx->ipx_dest.node[3], - ipx->ipx_dest.node[4], - ipx->ipx_dest.node[5], - ipx->ipx_dest.sock, - ipx->ipx_source.net, - ipx->ipx_source.node[0], - ipx->ipx_source.node[1], - ipx->ipx_source.node[2], - ipx->ipx_source.node[3], - ipx->ipx_source.node[4], - ipx->ipx_source.node[5], - ipx->ipx_source.sock); + ipx->ipx_dest.net, ipx->ipx_dest.node[0], + ipx->ipx_dest.node[1], + ipx->ipx_dest.node[2], + ipx->ipx_dest.node[3], + ipx->ipx_dest.node[4], + ipx->ipx_dest.node[5], + ipx->ipx_dest.sock, ipx->ipx_source.net, + ipx->ipx_source.node[0], + ipx->ipx_source.node[1], + ipx->ipx_source.node[2], + ipx->ipx_source.node[3], + ipx->ipx_source.node[4], + ipx->ipx_source.node[5], + ipx->ipx_source.sock); - if (!memcmp(skb->data + ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) { + if (!memcmp(skb->data + ETH_ALEN, + ipx->ipx_source.node, ETH_ALEN)) { printk("NAT25: Use IPX Net, and Socket as network addr\n"); - __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_source.net, &ipx->ipx_source.sock); + __nat25_generate_ipx_network_addr_with_socket( + networkAddr, + &ipx->ipx_source.net, + &ipx->ipx_source.sock); /* change IPX source node addr to wlan STA address */ - memcpy(ipx->ipx_source.node, vif->ndev->dev_addr, ETH_ALEN); + memcpy(ipx->ipx_source.node, + vif->ndev->dev_addr, ETH_ALEN); } else - __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_source.net, ipx->ipx_source.node); + __nat25_generate_ipx_network_addr_with_node( + networkAddr, + &ipx->ipx_source.net, + ipx->ipx_source.node); - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + __nat25_db_network_insert( + vif, skb->data + ETH_ALEN, networkAddr); __nat25_db_print(vif); } - return 0; + return 0; case NAT25_LOOKUP: { - if (!memcmp(vif->ndev->dev_addr, ipx->ipx_dest.node, ETH_ALEN)) { + if (!memcmp(vif->ndev->dev_addr, + ipx->ipx_dest.node, ETH_ALEN)) { printk("NAT25: Lookup IPX, Modify Destination IPX Node addr\n"); - __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_dest.net, &ipx->ipx_dest.sock); + __nat25_generate_ipx_network_addr_with_socket( + networkAddr, &ipx->ipx_dest.net, + &ipx->ipx_dest.sock); - __nat25_db_network_lookup_and_replace(vif, skb, networkAddr); + __nat25_db_network_lookup_and_replace( + vif, skb, networkAddr); /* replace IPX destination node addr with Lookup destination MAC addr */ - memcpy(ipx->ipx_dest.node, skb->data, ETH_ALEN); + memcpy(ipx->ipx_dest.node, skb->data, + ETH_ALEN); } else { - __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_dest.net, ipx->ipx_dest.node); + __nat25_generate_ipx_network_addr_with_node( + networkAddr, &ipx->ipx_dest.net, + ipx->ipx_dest.node); - __nat25_db_network_lookup_and_replace(vif, skb, networkAddr); + __nat25_db_network_lookup_and_replace( + vif, skb, networkAddr); } } - return 0; + return 0; default: return -1; @@ -1002,7 +1031,8 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) /* AARP */ else if (ea != NULL) { /* Sanity check fields. */ - if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) { + if (ea->hw_len != ETH_ALEN || + ea->pa_len != AARP_PA_ALEN) { printk("NAT25: Appletalk AARP Sanity check fail!\n"); return -1; } @@ -1013,37 +1043,40 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) case NAT25_INSERT: { /* change to AARP source mac address to wlan STA address */ - memcpy(ea->hw_src, vif->ndev->dev_addr, ETH_ALEN); + memcpy(ea->hw_src, vif->ndev->dev_addr, + ETH_ALEN); printk("NAT25: Insert AARP, Source=%d,%d Destination=%d,%d\n", - ea->pa_src_net, - ea->pa_src_node, - ea->pa_dst_net, - ea->pa_dst_node); + ea->pa_src_net, ea->pa_src_node, + ea->pa_dst_net, ea->pa_dst_node); - __nat25_generate_apple_network_addr(networkAddr, &ea->pa_src_net, &ea->pa_src_node); + __nat25_generate_apple_network_addr( + networkAddr, &ea->pa_src_net, + &ea->pa_src_node); - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + __nat25_db_network_insert( + vif, skb->data + ETH_ALEN, networkAddr); __nat25_db_print(vif); } - return 0; + return 0; case NAT25_LOOKUP: { printk("NAT25: Lookup AARP, Source=%d,%d Destination=%d,%d\n", - ea->pa_src_net, - ea->pa_src_node, - ea->pa_dst_net, - ea->pa_dst_node); + ea->pa_src_net, ea->pa_src_node, + ea->pa_dst_net, ea->pa_dst_node); - __nat25_generate_apple_network_addr(networkAddr, &ea->pa_dst_net, &ea->pa_dst_node); + __nat25_generate_apple_network_addr( + networkAddr, &ea->pa_dst_net, + &ea->pa_dst_node); - __nat25_db_network_lookup_and_replace(vif, skb, networkAddr); + __nat25_db_network_lookup_and_replace( + vif, skb, networkAddr); /* change to AARP destination mac address to Lookup result */ memcpy(ea->hw_dst, skb->data, ETH_ALEN); } - return 0; + return 0; default: return -1; @@ -1058,31 +1091,33 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) case NAT25_INSERT: { printk("NAT25: Insert DDP, Source=%d,%d Destination=%d,%d\n", - ddp->deh_snet, - ddp->deh_snode, - ddp->deh_dnet, - ddp->deh_dnode); + ddp->deh_snet, ddp->deh_snode, + ddp->deh_dnet, ddp->deh_dnode); - __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_snet, &ddp->deh_snode); + __nat25_generate_apple_network_addr( + networkAddr, &ddp->deh_snet, + &ddp->deh_snode); - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + __nat25_db_network_insert( + vif, skb->data + ETH_ALEN, networkAddr); __nat25_db_print(vif); } - return 0; + return 0; case NAT25_LOOKUP: { printk("NAT25: Lookup DDP, Source=%d,%d Destination=%d,%d\n", - ddp->deh_snet, - ddp->deh_snode, - ddp->deh_dnet, - ddp->deh_dnode); + ddp->deh_snet, ddp->deh_snode, + ddp->deh_dnet, ddp->deh_dnode); - __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_dnet, &ddp->deh_dnode); + __nat25_generate_apple_network_addr( + networkAddr, &ddp->deh_dnet, + &ddp->deh_dnode); - __nat25_db_network_lookup_and_replace(vif, skb, networkAddr); + __nat25_db_network_lookup_and_replace( + vif, skb, networkAddr); } - return 0; + return 0; default: return -1; @@ -1097,7 +1132,8 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) /*---------------------------------------------------*/ else if ((protocol == __constant_htons(ETH_P_PPP_DISC)) || (protocol == __constant_htons(ETH_P_PPP_SES))) { - struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN); + struct pppoe_hdr *ph = + (struct pppoe_hdr *)(skb->data + ETH_HLEN); unsigned short *pMagic; switch (method) { @@ -1107,72 +1143,117 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) return 1; case NAT25_INSERT: - if (ph->sid == 0) { /* Discovery phase according to tag */ - if (ph->code == PADI_CODE || ph->code == PADR_CODE) { + if (ph->sid == + 0) { /* Discovery phase according to tag */ + if (ph->code == PADI_CODE || + ph->code == PADR_CODE) { if (vif->ethBrExtInfo.addPPPoETag) { struct pppoe_tag *tag, *pOldTag; unsigned char tag_buf[40]; int old_tag_len = 0; - tag = (struct pppoe_tag *)tag_buf; - pOldTag = (struct pppoe_tag *)__nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID)); + tag = (struct pppoe_tag *) + tag_buf; + pOldTag = (struct pppoe_tag *) + __nat25_find_pppoe_tag( + ph, + ntohs(PTT_RELAY_SID)); if (pOldTag) { /* if SID existed, copy old value and delete it */ - old_tag_len = ntohs(pOldTag->tag_len); - if (old_tag_len + TAG_HDR_LEN + MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN > sizeof(tag_buf)) { + old_tag_len = ntohs( + pOldTag->tag_len); + if (old_tag_len + + TAG_HDR_LEN + + MAGIC_CODE_LEN + + RTL_RELAY_TAG_LEN > + sizeof(tag_buf)) { printk("SID tag length too long!\n"); return -1; } - memcpy(tag->tag_data + MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN, - pOldTag->tag_data, old_tag_len); + memcpy(tag->tag_data + + MAGIC_CODE_LEN + + RTL_RELAY_TAG_LEN, + pOldTag->tag_data, + old_tag_len); - if (skb_pull_and_merge(skb, (unsigned char *)pOldTag, TAG_HDR_LEN + old_tag_len) < 0) { + if (skb_pull_and_merge( + skb, + (unsigned char + *) + pOldTag, + TAG_HDR_LEN + + old_tag_len) < + 0) { printk("call skb_pull_and_merge() failed in PADI/R packet!\n"); return -1; } - ph->length = htons(ntohs(ph->length) - TAG_HDR_LEN - old_tag_len); + ph->length = htons( + ntohs(ph->length) - + TAG_HDR_LEN - + old_tag_len); } tag->tag_type = PTT_RELAY_SID; - tag->tag_len = htons(MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN + old_tag_len); + tag->tag_len = htons( + MAGIC_CODE_LEN + + RTL_RELAY_TAG_LEN + + old_tag_len); /* insert the magic_code+client mac in relay tag */ - pMagic = (unsigned short *)tag->tag_data; + pMagic = (unsigned short *) + tag->tag_data; *pMagic = htons(MAGIC_CODE); - memcpy(tag->tag_data + MAGIC_CODE_LEN, skb->data + ETH_ALEN, ETH_ALEN); + memcpy(tag->tag_data + + MAGIC_CODE_LEN, + skb->data + ETH_ALEN, + ETH_ALEN); /* Add relay tag */ - if (__nat25_add_pppoe_tag(skb, tag) < 0) + if (__nat25_add_pppoe_tag( + skb, tag) < 0) return -1; printk("NAT25: Insert PPPoE, forward %s packet\n", - (ph->code == PADI_CODE ? "PADI" : "PADR")); + (ph->code == PADI_CODE ? + "PADI" : + "PADR")); } else { /* not add relay tag */ if (vif->pppoe_connection_in_progress && - memcmp(skb->data + ETH_ALEN, vif->pppoe_addr, ETH_ALEN)) { + memcmp(skb->data + ETH_ALEN, + vif->pppoe_addr, + ETH_ALEN)) { printk("Discard PPPoE packet due to another PPPoE connection is in progress!\n"); return -2; } - if (vif->pppoe_connection_in_progress == 0) - memcpy(vif->pppoe_addr, skb->data + ETH_ALEN, ETH_ALEN); + if (vif->pppoe_connection_in_progress == + 0) + memcpy(vif->pppoe_addr, + skb->data + + ETH_ALEN, + ETH_ALEN); - vif->pppoe_connection_in_progress = WAIT_TIME_PPPOE; + vif->pppoe_connection_in_progress = + WAIT_TIME_PPPOE; } } else return -1; - } else { /* session phase */ - printk("NAT25: Insert PPPoE, insert session packet to %s\n", skb->dev->name); + } else { /* session phase */ + printk("NAT25: Insert PPPoE, insert session packet to %s\n", + skb->dev->name); - __nat25_generate_pppoe_network_addr(networkAddr, skb->data, &(ph->sid)); + __nat25_generate_pppoe_network_addr( + networkAddr, skb->data, &(ph->sid)); - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + __nat25_db_network_insert( + vif, skb->data + ETH_ALEN, networkAddr); __nat25_db_print(vif); if (!vif->ethBrExtInfo.addPPPoETag && vif->pppoe_connection_in_progress && - !memcmp(skb->data + ETH_ALEN, vif->pppoe_addr, ETH_ALEN)) + !memcmp(skb->data + ETH_ALEN, + vif->pppoe_addr, ETH_ALEN)) vif->pppoe_connection_in_progress = 0; } return 0; @@ -1185,62 +1266,95 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) unsigned short tagType, tagLen; int offset = 0; - ptr = __nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID)); + ptr = __nat25_find_pppoe_tag( + ph, ntohs(PTT_RELAY_SID)); if (ptr == 0) { printk("Fail to find PTT_RELAY_SID in FADO!\n"); return -1; } tag = (struct pppoe_tag *)ptr; - tagType = (unsigned short)((ptr[0] << 8) + ptr[1]); - tagLen = (unsigned short)((ptr[2] << 8) + ptr[3]); + tagType = + (unsigned short)((ptr[0] << 8) + + ptr[1]); + tagLen = + (unsigned short)((ptr[2] << 8) + + ptr[3]); - if ((tagType != ntohs(PTT_RELAY_SID)) || (tagLen < (MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN))) { - printk("Invalid PTT_RELAY_SID tag length [%d]!\n", tagLen); + if ((tagType != ntohs(PTT_RELAY_SID)) || + (tagLen < (MAGIC_CODE_LEN + + RTL_RELAY_TAG_LEN))) { + printk("Invalid PTT_RELAY_SID tag length [%d]!\n", + tagLen); return -1; } - pMagic = (unsigned short *)tag->tag_data; + pMagic = + (unsigned short *)tag->tag_data; if (ntohs(*pMagic) != MAGIC_CODE) { printk("Can't find MAGIC_CODE in %s packet!\n", - (ph->code == PADO_CODE ? "PADO" : "PADS")); + (ph->code == PADO_CODE ? + "PADO" : + "PADS")); return -1; } - memcpy(skb->data, tag->tag_data + MAGIC_CODE_LEN, ETH_ALEN); + memcpy(skb->data, + tag->tag_data + MAGIC_CODE_LEN, + ETH_ALEN); - if (tagLen > MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN) + if (tagLen > + MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN) offset = TAG_HDR_LEN; - if (skb_pull_and_merge(skb, ptr + offset, TAG_HDR_LEN + MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN - offset) < 0) { + if (skb_pull_and_merge( + skb, ptr + offset, + TAG_HDR_LEN + + MAGIC_CODE_LEN + + RTL_RELAY_TAG_LEN - + offset) < 0) { printk("call skb_pull_and_merge() failed in PADO packet!\n"); return -1; } - ph->length = htons(ntohs(ph->length) - (TAG_HDR_LEN + MAGIC_CODE_LEN + RTL_RELAY_TAG_LEN - offset)); + ph->length = htons( + ntohs(ph->length) - + (TAG_HDR_LEN + MAGIC_CODE_LEN + + RTL_RELAY_TAG_LEN - offset)); if (offset > 0) - tag->tag_len = htons(tagLen - MAGIC_CODE_LEN - RTL_RELAY_TAG_LEN); + tag->tag_len = htons( + tagLen - + MAGIC_CODE_LEN - + RTL_RELAY_TAG_LEN); printk("NAT25: Lookup PPPoE, forward %s Packet from %s\n", - (ph->code == PADO_CODE ? "PADO" : "PADS"), skb->dev->name); + (ph->code == PADO_CODE ? "PADO" : + "PADS"), + skb->dev->name); } else { /* not add relay tag */ if (!vif->pppoe_connection_in_progress) { printk("Discard PPPoE packet due to no connection in progresss!\n"); return -1; } - memcpy(skb->data, vif->pppoe_addr, ETH_ALEN); - vif->pppoe_connection_in_progress = WAIT_TIME_PPPOE; + memcpy(skb->data, vif->pppoe_addr, + ETH_ALEN); + vif->pppoe_connection_in_progress = + WAIT_TIME_PPPOE; } } else { if (ph->sid != 0) { - printk("NAT25: Lookup PPPoE, lookup session packet from %s\n", skb->dev->name); - __nat25_generate_pppoe_network_addr(networkAddr, skb->data + ETH_ALEN, &(ph->sid)); + printk("NAT25: Lookup PPPoE, lookup session packet from %s\n", + skb->dev->name); + __nat25_generate_pppoe_network_addr( + networkAddr, + skb->data + ETH_ALEN, + &(ph->sid)); - __nat25_db_network_lookup_and_replace(vif, skb, networkAddr); + __nat25_db_network_lookup_and_replace( + vif, skb, networkAddr); __nat25_db_print(vif); } else return -1; - } return 0; @@ -1287,7 +1401,6 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) return -1; } } - /*---------------------------------------------------*/ /* Handle IPV6 frame */ /*---------------------------------------------------*/ @@ -1308,44 +1421,73 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) case NAT25_INSERT: { printk("NAT25: Insert IP, SA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x," - " DA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n", - iph->saddr.s6_addr16[0], iph->saddr.s6_addr16[1], iph->saddr.s6_addr16[2], iph->saddr.s6_addr16[3], - iph->saddr.s6_addr16[4], iph->saddr.s6_addr16[5], iph->saddr.s6_addr16[6], iph->saddr.s6_addr16[7], - iph->daddr.s6_addr16[0], iph->daddr.s6_addr16[1], iph->daddr.s6_addr16[2], iph->daddr.s6_addr16[3], - iph->daddr.s6_addr16[4], iph->daddr.s6_addr16[5], iph->daddr.s6_addr16[6], iph->daddr.s6_addr16[7]); + " DA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n", + iph->saddr.s6_addr16[0], iph->saddr.s6_addr16[1], + iph->saddr.s6_addr16[2], iph->saddr.s6_addr16[3], + iph->saddr.s6_addr16[4], iph->saddr.s6_addr16[5], + iph->saddr.s6_addr16[6], iph->saddr.s6_addr16[7], + iph->daddr.s6_addr16[0], iph->daddr.s6_addr16[1], + iph->daddr.s6_addr16[2], iph->daddr.s6_addr16[3], + iph->daddr.s6_addr16[4], iph->daddr.s6_addr16[5], + iph->daddr.s6_addr16[6], + iph->daddr.s6_addr16[7]); - if (memcmp(&iph->saddr, "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0", 16)) { - __nat25_generate_ipv6_network_addr(networkAddr, (unsigned int *)&iph->saddr); - __nat25_db_network_insert(vif, skb->data + ETH_ALEN, networkAddr); + if (memcmp(&iph->saddr, + "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0", + 16)) { + __nat25_generate_ipv6_network_addr( + networkAddr, + (unsigned int *)&iph->saddr); + __nat25_db_network_insert( + vif, skb->data + ETH_ALEN, networkAddr); __nat25_db_print(vif); if (iph->nexthdr == IPPROTO_ICMPV6 && - skb->len > (ETH_HLEN + sizeof(*iph) + 4)) { - if (update_nd_link_layer_addr(skb->data + ETH_HLEN + sizeof(*iph), - skb->len - ETH_HLEN - sizeof(*iph), vif->ndev->dev_addr)) { - struct icmp6hdr *hdr = (struct icmp6hdr *)(skb->data + ETH_HLEN + sizeof(*iph)); + skb->len > (ETH_HLEN + sizeof(*iph) + 4)) { + if (update_nd_link_layer_addr( + skb->data + ETH_HLEN + + sizeof(*iph), + skb->len - ETH_HLEN - + sizeof(*iph), + vif->ndev->dev_addr)) { + struct icmp6hdr *hdr = + (struct icmp6hdr + *)(skb->data + + ETH_HLEN + + sizeof(*iph)); hdr->icmp6_cksum = 0; - hdr->icmp6_cksum = csum_ipv6_magic(&iph->saddr, &iph->daddr, + hdr->icmp6_cksum = csum_ipv6_magic( + &iph->saddr, + &iph->daddr, iph->payload_len, IPPROTO_ICMPV6, - csum_partial((__u8 *)hdr, iph->payload_len, 0)); + csum_partial( + (__u8 *)hdr, + iph->payload_len, + 0)); } } } } - return 0; + return 0; case NAT25_LOOKUP: printk("NAT25: Lookup IP, SA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x," - " DA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n", - iph->saddr.s6_addr16[0], iph->saddr.s6_addr16[1], iph->saddr.s6_addr16[2], iph->saddr.s6_addr16[3], - iph->saddr.s6_addr16[4], iph->saddr.s6_addr16[5], iph->saddr.s6_addr16[6], iph->saddr.s6_addr16[7], - iph->daddr.s6_addr16[0], iph->daddr.s6_addr16[1], iph->daddr.s6_addr16[2], iph->daddr.s6_addr16[3], - iph->daddr.s6_addr16[4], iph->daddr.s6_addr16[5], iph->daddr.s6_addr16[6], iph->daddr.s6_addr16[7]); + " DA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n", + iph->saddr.s6_addr16[0], iph->saddr.s6_addr16[1], + iph->saddr.s6_addr16[2], iph->saddr.s6_addr16[3], + iph->saddr.s6_addr16[4], iph->saddr.s6_addr16[5], + iph->saddr.s6_addr16[6], iph->saddr.s6_addr16[7], + iph->daddr.s6_addr16[0], iph->daddr.s6_addr16[1], + iph->daddr.s6_addr16[2], iph->daddr.s6_addr16[3], + iph->daddr.s6_addr16[4], iph->daddr.s6_addr16[5], + iph->daddr.s6_addr16[6], + iph->daddr.s6_addr16[7]); - - __nat25_generate_ipv6_network_addr(networkAddr, (unsigned int *)&iph->daddr); - if (!__nat25_db_network_lookup_and_replace(vif, skb, networkAddr)) { + __nat25_generate_ipv6_network_addr( + networkAddr, (unsigned int *)&iph->daddr); + if (!__nat25_db_network_lookup_and_replace( + vif, skb, networkAddr)) { #ifdef SUPPORT_RX_UNI2MCAST if (iph->daddr.s6_addr[0] == 0xff) convert_ipv6_mac_to_mc(skb); @@ -1362,25 +1504,16 @@ int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method) return -1; } - int nat25_handle_frame(struct rwnx_vif *vif, struct sk_buff *skb) { //printk("%s : vif_type=%d \n",__func__,RWNX_VIF_TYPE(vif)); #ifdef BR_SUPPORT_DEBUG if ((!vif->ethBrExtInfo.nat25_disable) && (!(skb->data[0] & 1))) { printk("NAT25: Input Frame: DA=%02x%02x%02x%02x%02x%02x SA=%02x%02x%02x%02x%02x%02x\n", - skb->data[0], - skb->data[1], - skb->data[2], - skb->data[3], - skb->data[4], - skb->data[5], - skb->data[6], - skb->data[7], - skb->data[8], - skb->data[9], - skb->data[10], - skb->data[11]); + skb->data[0], skb->data[1], skb->data[2], skb->data[3], + skb->data[4], skb->data[5], skb->data[6], skb->data[7], + skb->data[8], skb->data[9], skb->data[10], + skb->data[11]); } #endif @@ -1388,11 +1521,17 @@ int nat25_handle_frame(struct rwnx_vif *vif, struct sk_buff *skb) int is_vlan_tag = 0, i, retval = 0; unsigned short vlan_hdr = 0; - if (*((unsigned short *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_8021Q)) { + if (*((unsigned short *)(skb->data + ETH_ALEN * 2)) == + __constant_htons(ETH_P_8021Q)) { is_vlan_tag = 1; - vlan_hdr = *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)); + vlan_hdr = *((unsigned short *)(skb->data + + ETH_ALEN * 2 + 2)); for (i = 0; i < 6; i++) - *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2 - i * 2)) = *((unsigned short *)(skb->data + ETH_ALEN * 2 - 2 - i * 2)); + *((unsigned short *)(skb->data + ETH_ALEN * 2 + + 2 - i * 2)) = + *((unsigned short *)(skb->data + + ETH_ALEN * 2 - 2 - + i * 2)); skb_pull(skb, 4); } @@ -1405,32 +1544,44 @@ int nat25_handle_frame(struct rwnx_vif *vif, struct sk_buff *skb) * corresponding network protocol is NOT support. */ if (!vif->ethBrExtInfo.nat25sc_disable && - (*((unsigned short *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_IP)) && - !memcmp(vif->scdb_ip, skb->data + ETH_HLEN + 16, 4)) { + (*((unsigned short *)(skb->data + ETH_ALEN * 2)) == + __constant_htons(ETH_P_IP)) && + !memcmp(vif->scdb_ip, skb->data + ETH_HLEN + 16, + 4)) { memcpy(skb->data, vif->scdb_mac, ETH_ALEN); spin_unlock_bh(&vif->br_ext_lock); } else { spin_unlock_bh(&vif->br_ext_lock); - retval = nat25_db_handle(vif, skb, NAT25_LOOKUP); + retval = + nat25_db_handle(vif, skb, NAT25_LOOKUP); } } else { - if (((*((unsigned short *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_IP)) && - !memcmp(vif->br_ip, skb->data + ETH_HLEN + 16, 4)) || - ((*((unsigned short *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_ARP)) && - !memcmp(vif->br_ip, skb->data + ETH_HLEN + 24, 4))) { + if (((*((unsigned short *)(skb->data + ETH_ALEN * 2)) == + __constant_htons(ETH_P_IP)) && + !memcmp(vif->br_ip, skb->data + ETH_HLEN + 16, + 4)) || + ((*((unsigned short *)(skb->data + ETH_ALEN * 2)) == + __constant_htons(ETH_P_ARP)) && + !memcmp(vif->br_ip, skb->data + ETH_HLEN + 24, + 4))) { /* for traffic to upper TCP/IP */ - retval = nat25_db_handle(vif, skb, NAT25_LOOKUP); + retval = + nat25_db_handle(vif, skb, NAT25_LOOKUP); } } if (is_vlan_tag) { skb_push(skb, 4); for (i = 0; i < 6; i++) - *((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2)); - *((unsigned short *)(skb->data + ETH_ALEN * 2)) = __constant_htons(ETH_P_8021Q); - *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)) = vlan_hdr; + *((unsigned short *)(skb->data + i * 2)) = + *((unsigned short *)(skb->data + 4 + + i * 2)); + *((unsigned short *)(skb->data + ETH_ALEN * 2)) = + __constant_htons(ETH_P_8021Q); + *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)) = + vlan_hdr; } if (retval == -1) { @@ -1471,10 +1622,10 @@ int mac_clone_handle_frame(_adapter *priv, struct sk_buff *skb) } #endif /* 0 */ -#define SERVER_PORT 67 -#define CLIENT_PORT 68 -#define DHCP_MAGIC 0x63825363 -#define BROADCAST_FLAG 0x8000 +#define SERVER_PORT 67 +#define CLIENT_PORT 68 +#define DHCP_MAGIC 0x63825363 +#define BROADCAST_FLAG 0x8000 struct dhcpMessage { u_int8_t op; @@ -1501,36 +1652,53 @@ void dhcp_flag_bcast(struct rwnx_vif *vif, struct sk_buff *skb) return; //print_hex_dump(KERN_ERR, "SKB DUMP: SKB->DATA== ", DUMP_PREFIX_NONE, 32, 1, skb->data, 64,false); if (!vif->ethBrExtInfo.dhcp_bcst_disable) { - unsigned short protocol = *((unsigned short *)(skb->data + 2 * ETH_ALEN)); + unsigned short protocol = + *((unsigned short *)(skb->data + 2 * ETH_ALEN)); printk("%s protocol: %04x\n", __func__, protocol); if (protocol == __constant_htons(ETH_P_IP)) { /* IP */ - struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN); + struct iphdr *iph = + (struct iphdr *)(skb->data + ETH_HLEN); if (iph->protocol == IPPROTO_UDP) { /* UDP */ - struct udphdr *udph = (struct udphdr *)((u8 *)iph + (iph->ihl << 2)); + struct udphdr *udph = + (struct udphdr *)((u8 *)iph + + (iph->ihl << 2)); - if ((udph->source == __constant_htons(CLIENT_PORT)) - && (udph->dest == __constant_htons(SERVER_PORT))) { /* DHCP request */ + if ((udph->source == + __constant_htons(CLIENT_PORT)) && + (udph->dest == + __constant_htons( + SERVER_PORT))) { /* DHCP request */ struct dhcpMessage *dhcph = - (struct dhcpMessage *)((u8 *)udph + sizeof(struct udphdr)); + (struct dhcpMessage + *)((u8 *)udph + + sizeof(struct udphdr)); - if (dhcph->cookie == __constant_htonl(DHCP_MAGIC)) { /* match magic word */ - if (!(dhcph->flags & htons(BROADCAST_FLAG))) { /* if not broadcast */ + if (dhcph->cookie == + __constant_htonl( + DHCP_MAGIC)) { /* match magic word */ + if (!(dhcph->flags & + htons(BROADCAST_FLAG))) { /* if not broadcast */ register int sum = 0; printk("DHCP: change flag of DHCP request to broadcast.\n"); - - #if 1 + +#if 1 /* or BROADCAST flag */ - dhcph->flags |= htons(BROADCAST_FLAG); + dhcph->flags |= htons( + BROADCAST_FLAG); /* recalculate checksum */ - sum = ~(udph->check) & 0xffff; + sum = ~(udph->check) & + 0xffff; sum += dhcph->flags; while (sum >> 16) - sum = (sum & 0xffff) + (sum >> 16); + sum = (sum & + 0xffff) + + (sum >> + 16); udph->check = ~sum; - #endif +#endif } } } @@ -1539,11 +1707,10 @@ void dhcp_flag_bcast(struct rwnx_vif *vif, struct sk_buff *skb) } } - void *scdb_findEntry(struct rwnx_vif *vif, unsigned char *macAddr, unsigned char *ipAddr) { - printk("%s()\n",__func__); + printk("%s()\n", __func__); unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; struct nat25_network_db_entry *db; int hash; @@ -1554,7 +1721,8 @@ void *scdb_findEntry(struct rwnx_vif *vif, unsigned char *macAddr, hash = __nat25_network_hash(networkAddr); db = vif->nethash[hash]; while (db != NULL) { - if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) { + if (!memcmp(db->networkAddr, networkAddr, + MAX_NETWORK_ADDR_LEN)) { /* _exit_critical_bh(&priv->br_ext_lock, &irqL); */ return (void *)db; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.h index 71ebeb293..d297ce4ca 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_br_ext.h @@ -15,13 +15,13 @@ #ifndef _AIC_BR_EXT_H_ #define _AIC_BR_EXT_H_ -#define CL_IPV6_PASS 1 -#define MACADDRLEN 6 -#define WLAN_ETHHDR_LEN 14 +#define CL_IPV6_PASS 1 +#define MACADDRLEN 6 +#define WLAN_ETHHDR_LEN 14 -#define NAT25_HASH_BITS 4 -#define NAT25_HASH_SIZE (1 << NAT25_HASH_BITS) -#define NAT25_AGEING_TIME 300 +#define NAT25_HASH_BITS 4 +#define NAT25_HASH_SIZE (1 << NAT25_HASH_BITS) +#define NAT25_AGEING_TIME 300 #define NDEV_FMT "%s" #define NDEV_ARG(ndev) ndev->name @@ -32,22 +32,23 @@ #define FUNC_ADPT_FMT "%s(%s)" //#define FUNC_ADPT_ARG(adapter) __func__, (adapter->pnetdev ? adapter->pnetdev->name : NULL) #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" -#define MAC_ARG(x) ((u8 *)(x))[0], ((u8 *)(x))[1], ((u8 *)(x))[2], ((u8 *)(x))[3], ((u8 *)(x))[4], ((u8 *)(x))[5] - +#define MAC_ARG(x) \ + ((u8 *)(x))[0], ((u8 *)(x))[1], ((u8 *)(x))[2], ((u8 *)(x))[3], \ + ((u8 *)(x))[4], ((u8 *)(x))[5] #ifdef CL_IPV6_PASS - #define MAX_NETWORK_ADDR_LEN 17 +#define MAX_NETWORK_ADDR_LEN 17 #else - #define MAX_NETWORK_ADDR_LEN 11 +#define MAX_NETWORK_ADDR_LEN 11 #endif struct nat25_network_db_entry { - struct nat25_network_db_entry *next_hash; - struct nat25_network_db_entry **pprev_hash; - atomic_t use_count; - unsigned char macAddr[6]; - unsigned long ageing_timer; - unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; + struct nat25_network_db_entry *next_hash; + struct nat25_network_db_entry **pprev_hash; + atomic_t use_count; + unsigned char macAddr[6]; + unsigned long ageing_timer; + unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; }; enum NAT25_METHOD { @@ -60,12 +61,12 @@ enum NAT25_METHOD { }; struct br_ext_info { - unsigned int nat25_disable; - unsigned int macclone_enable; - unsigned int dhcp_bcst_disable; - int addPPPoETag; /* 1: Add PPPoE relay-SID, 0: disable */ - unsigned char nat25_dmzMac[MACADDRLEN]; - unsigned int nat25sc_disable; + unsigned int nat25_disable; + unsigned int macclone_enable; + unsigned int dhcp_bcst_disable; + int addPPPoETag; /* 1: Add PPPoE relay-SID, 0: disable */ + unsigned char nat25_dmzMac[MACADDRLEN]; + unsigned int nat25sc_disable; }; void nat25_db_cleanup(struct rwnx_vif *vif); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_bsp_export.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_bsp_export.h index bd806fad5..48e1fa59a 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_bsp_export.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_bsp_export.h @@ -12,9 +12,9 @@ enum aicbsp_pwr_state { }; struct aicbsp_feature_t { - int hwinfo; + int hwinfo; uint32_t sdio_clock; - uint8_t sdio_phase; + uint8_t sdio_phase; int fwlog_en; uint8_t irqf; }; @@ -23,32 +23,38 @@ enum skb_buff_id { AIC_RESV_MEM_TXDATA, }; -#ifdef CONFIG_DPD +#if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) typedef struct { - uint32_t bit_mask[3]; - uint32_t reserved; - uint32_t dpd_high[96]; - uint32_t dpd_11b[96]; - uint32_t dpd_low[96]; - uint32_t idac_11b[48]; - uint32_t idac_high[48]; - uint32_t idac_low[48]; - uint32_t loft_res[18]; - uint32_t rx_iqim_res[16]; + uint32_t bit_mask[3]; + uint32_t reserved; + uint32_t dpd_high[96]; + uint32_t dpd_11b[96]; + uint32_t dpd_low[96]; + uint32_t idac_11b[48]; + uint32_t idac_high[48]; + uint32_t idac_low[48]; + uint32_t loft_res[18]; + uint32_t rx_iqim_res[16]; } rf_misc_ram_t; typedef struct { - uint32_t bit_mask[4]; - uint32_t dpd_high[96]; - uint32_t loft_res[18]; + uint32_t bit_mask[4]; + uint32_t dpd_high[96]; + uint32_t loft_res[18]; } rf_misc_ram_lite_t; -#define MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#define DPD_RESULT_SIZE_8800DC sizeof(rf_misc_ram_lite_t) +#define MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#define DPD_RESULT_SIZE_8800DC sizeof(rf_misc_ram_lite_t) +#endif +#ifdef CONFIG_DPD extern rf_misc_ram_lite_t dpd_res; #endif +#ifdef CONFIG_LOFT_CALIB +extern rf_misc_ram_lite_t loft_res_local; +#endif + int aicbsp_set_subsys(int, int); int aicbsp_get_feature(struct aicbsp_feature_t *feature, char *fw_path); bool aicbsp_get_load_fw_in_fdrv(void); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.c index 643f94698..2b935a48c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.c @@ -16,22 +16,22 @@ #include "aic_btsdio.h" #include "rwnx_msg_tx.h" +#if CONFIG_BLUEDROID == 1 static spinlock_t queue_lock; - static inline struct sk_buff *bt_skb_alloc(unsigned int len, gfp_t how) { - struct sk_buff *skb; + struct sk_buff *skb; - if ((skb = alloc_skb(len + BT_SKB_RESERVE, how))) { - skb_reserve(skb, BT_SKB_RESERVE); - bt_cb(skb)->incoming = 0; - } - return skb; + if ((skb = alloc_skb(len + BT_SKB_RESERVE, how))) { + skb_reserve(skb, BT_SKB_RESERVE); + bt_cb(skb)->incoming = 0; + } + return skb; } static spinlock_t queue_lock; static spinlock_t dlfw_lock; -static volatile uint16_t dlfw_dis_state = 0; +static volatile uint16_t dlfw_dis_state = 0; /* Global parameters for bt usb char driver */ #define BT_CHAR_DEVICE_NAME "aicbt_dev" @@ -56,278 +56,256 @@ static int aic_skb_queue_rear = 0; static inline int check_set_dlfw_state_value(uint16_t change_value) { - spin_lock(&dlfw_lock); - if(!dlfw_dis_state) { - dlfw_dis_state = change_value; - } - spin_unlock(&dlfw_lock); - return dlfw_dis_state; + spin_lock(&dlfw_lock); + if (!dlfw_dis_state) { + dlfw_dis_state = change_value; + } + spin_unlock(&dlfw_lock); + return dlfw_dis_state; } static inline void set_dlfw_state_value(uint16_t change_value) { - spin_lock(&dlfw_lock); - dlfw_dis_state = change_value; - spin_unlock(&dlfw_lock); + spin_lock(&dlfw_lock); + dlfw_dis_state = change_value; + spin_unlock(&dlfw_lock); } static void print_acl(struct sk_buff *skb, int direction) { #if PRINT_ACL_DATA - //uint wlength = skb->len; - u16 *handle = (u16 *)(skb->data); - u16 len = *(handle+1); - //u8 *acl_data = (u8 *)(skb->data); + //uint wlength = skb->len; + u16 *handle = (u16 *)(skb->data); + u16 len = *(handle + 1); + //u8 *acl_data = (u8 *)(skb->data); - AICBT_INFO("aic %s: direction %d, handle %04x, len %d", - __func__, direction, *handle, len); + AICBT_INFO("aic %s: direction %d, handle %04x, len %d", __func__, + direction, *handle, len); #endif } static void print_sco(struct sk_buff *skb, int direction) { #if PRINT_SCO_DATA - uint wlength = skb->len; - u16 *handle = (u16 *)(skb->data); - u8 len = *(u8 *)(handle+1); - //u8 *sco_data =(u8 *)(skb->data); + uint wlength = skb->len; + u16 *handle = (u16 *)(skb->data); + u8 len = *(u8 *)(handle + 1); + //u8 *sco_data =(u8 *)(skb->data); - AICBT_INFO("aic %s: direction %d, handle %04x, len %d,wlength %d", - __func__, direction, *handle, len,wlength); + AICBT_INFO("aic %s: direction %d, handle %04x, len %d,wlength %d", + __func__, direction, *handle, len, wlength); #endif } int bt_bypass_event(struct sk_buff *skb) { int ret = 0; - u8 *opcode = (u8*)(skb->data); + u8 *opcode = (u8 *)(skb->data); //u8 len = *(opcode+1); - //printk("bypass_event %x,%x,%x,%x,%x\r\n",opcode[0],opcode[1],opcode[2],opcode[3],opcode[4]); + //printk("bypass_event %x,%x,%x,%x,%x\r\n",opcode[0],opcode[1],opcode[2],opcode[3],opcode[4]); - switch(opcode[1]) { - case HCI_EV_LE_Meta: - { - u8 subevent_code; - subevent_code = opcode[3]; - switch(subevent_code){ - case HCI_BLE_ADV_PKT_RPT_EVT: - case HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT: - { - if(aic_queue_cnt() > (QUEUE_SIZE-490)){ - printk("more adv report bypass\r\n"); - ret = 1; - } - } - break; - } - } - break; - default: - break; + switch (opcode[1]) { + case HCI_EV_LE_Meta: { + u8 subevent_code; + subevent_code = opcode[3]; + switch (subevent_code) { + case HCI_BLE_ADV_PKT_RPT_EVT: + case HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT: { + if (aic_queue_cnt() > (QUEUE_SIZE - 490)) { + printk("more adv report bypass\r\n"); + ret = 1; + } + } break; + } + } break; + default: + break; } return ret; } -int bt_sdio_recv(u8 *data,u32 data_len) +int bt_sdio_recv(u8 *data, u32 data_len) { struct sk_buff *skb; - int type= data[0]; + int type = data[0]; struct hci_dev *hdev; u32 len = data_len; //int ret=0; hdev = hci_dev_get(0); - if (!hdev) { - AICWFDBG(LOGERROR,"%s: Failed to get hci dev[NULL]", __func__); - return -ENODEV; - } - - //printk("%s type %x len %d \n",__func__,type,len); - //bt_data_dump("bt_recv", ind->bt_data, 64); - - /*#if (CONFIG_BLUEDROID) || (HCI_VERSION_CODE < KERNEL_VERSION(3, 18, 0)) - if (hci_recv_fragment(hdev, type, - ind->bt_data[0], - ind->data_len) < 0) { - AICWFDBG(LOGERROR,"%s: Corrupted event packet", __func__); - hdev->stat.err_rx++; - } - #endif*/ - skb = alloc_skb(len,GFP_ATOMIC); - if(!skb){ - AICWFDBG(LOGERROR, "alloc skb fail %s \n",__func__); + if (!hdev) { + AICWFDBG(LOGERROR, "%s: Failed to get hci dev[NULL]", __func__); + return -ENODEV; } - memcpy(skb_put(skb,len) ,data, len); - if(bt_bypass_event(skb)){ + + skb = alloc_skb(len, GFP_ATOMIC); + if (!skb) { + AICWFDBG(LOGERROR, "alloc skb fail %s \n", __func__); + } + memcpy(skb_put(skb, len), data, len); + if (bt_bypass_event(skb)) { kfree_skb(skb); return 0; } //bt_data_dump("bt_skb", skb, skb->len); - - if(aic_enqueue(skb)<0){ + + if (aic_enqueue(skb) < 0) { kfree_skb(skb); - }else{ + } else { //printk("wake up \n"); wake_up_interruptible(&btchr_read_wait); } return 0; } - static int bypass_event(struct sk_buff *skb) { int ret = 0; - u8 *opcode = (u8*)(skb->data); + u8 *opcode = (u8 *)(skb->data); //u8 len = *(opcode+1); - //printk("bypass_event %x,%x,%x,%x,%x\r\n",opcode[0],opcode[1],opcode[2],opcode[3],opcode[4]); + //printk("bypass_event %x,%x,%x,%x,%x\r\n",opcode[0],opcode[1],opcode[2],opcode[3],opcode[4]); - switch(*opcode) { + switch (*opcode) { #ifdef CONFIG_SUPPORT_VENDOR_APCF - case HCI_EV_CMD_COMPLETE: - { - u16 sub_opcpde; - sub_opcpde = ((u16)opcode[3]|(u16)(opcode[4])<<8); - if(sub_opcpde == 0xfd57){ - if(vendor_apcf_sent_done){ - vendor_apcf_sent_done--; - printk("apcf bypass\r\n"); - ret = 1; - } - } - } - break; -#endif//CONFIG_SUPPORT_VENDOR_APCF - case HCI_EV_LE_Meta: - { - u8 subevent_code; - subevent_code = opcode[2]; - switch(subevent_code){ - case HCI_BLE_ADV_PKT_RPT_EVT: - case HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT: - { - if(aic_queue_cnt() > (QUEUE_SIZE-100)){ - printk("more adv report bypass\r\n"); - ret = 1; - } - } - break; - } - } - break; - default: - break; + case HCI_EV_CMD_COMPLETE: { + u16 sub_opcpde; + sub_opcpde = ((u16)opcode[3] | (u16)(opcode[4]) << 8); + if (sub_opcpde == 0xfd57) { + if (vendor_apcf_sent_done) { + vendor_apcf_sent_done--; + printk("apcf bypass\r\n"); + ret = 1; + } + } + } break; +#endif //CONFIG_SUPPORT_VENDOR_APCF + case HCI_EV_LE_Meta: { + u8 subevent_code; + subevent_code = opcode[2]; + switch (subevent_code) { + case HCI_BLE_ADV_PKT_RPT_EVT: + case HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT: { + if (aic_queue_cnt() > (QUEUE_SIZE - 100)) { + printk("more adv report bypass\r\n"); + ret = 1; + } + } break; + } + } break; + default: + break; } return ret; } static void print_event(struct sk_buff *skb) { #if PRINT_CMD_EVENT - //uint wlength = skb->len; - //uint icount = 0; - u8 *opcode = (u8*)(skb->data); - //u8 len = *(opcode+1); + //uint wlength = skb->len; + //uint icount = 0; + u8 *opcode = (u8 *)(skb->data); + //u8 len = *(opcode+1); - printk("aic %s ", __func__); - switch (*opcode) { - case HCI_EV_INQUIRY_COMPLETE: - printk("HCI_EV_INQUIRY_COMPLETE"); - break; - case HCI_EV_INQUIRY_RESULT: - printk("HCI_EV_INQUIRY_RESULT"); - break; - case HCI_EV_CONN_COMPLETE: - printk("HCI_EV_CONN_COMPLETE"); - break; - case HCI_EV_CONN_REQUEST: - printk("HCI_EV_CONN_REQUEST"); - break; - case HCI_EV_DISCONN_COMPLETE: - printk("HCI_EV_DISCONN_COMPLETE"); - break; - case HCI_EV_AUTH_COMPLETE: - printk("HCI_EV_AUTH_COMPLETE"); - break; - case HCI_EV_REMOTE_NAME: - printk("HCI_EV_REMOTE_NAME"); - break; - case HCI_EV_ENCRYPT_CHANGE: - printk("HCI_EV_ENCRYPT_CHANGE"); - break; - case HCI_EV_CHANGE_LINK_KEY_COMPLETE: - printk("HCI_EV_CHANGE_LINK_KEY_COMPLETE"); - break; - case HCI_EV_REMOTE_FEATURES: - printk("HCI_EV_REMOTE_FEATURES"); - break; - case HCI_EV_REMOTE_VERSION: - printk("HCI_EV_REMOTE_VERSION"); - break; - case HCI_EV_QOS_SETUP_COMPLETE: - printk("HCI_EV_QOS_SETUP_COMPLETE"); - break; - case HCI_EV_CMD_COMPLETE: - printk("HCI_EV_CMD_COMPLETE"); - break; - case HCI_EV_CMD_STATUS: - printk("HCI_EV_CMD_STATUS"); - break; - case HCI_EV_ROLE_CHANGE: - printk("HCI_EV_ROLE_CHANGE"); - break; - case HCI_EV_NUM_COMP_PKTS: - printk("HCI_EV_NUM_COMP_PKTS"); - break; - case HCI_EV_MODE_CHANGE: - printk("HCI_EV_MODE_CHANGE"); - break; - case HCI_EV_PIN_CODE_REQ: - printk("HCI_EV_PIN_CODE_REQ"); - break; - case HCI_EV_LINK_KEY_REQ: - printk("HCI_EV_LINK_KEY_REQ"); - break; - case HCI_EV_LINK_KEY_NOTIFY: - printk("HCI_EV_LINK_KEY_NOTIFY"); - break; - case HCI_EV_CLOCK_OFFSET: - printk("HCI_EV_CLOCK_OFFSET"); - break; - case HCI_EV_PKT_TYPE_CHANGE: - printk("HCI_EV_PKT_TYPE_CHANGE"); - break; - case HCI_EV_PSCAN_REP_MODE: - printk("HCI_EV_PSCAN_REP_MODE"); - break; - case HCI_EV_INQUIRY_RESULT_WITH_RSSI: - printk("HCI_EV_INQUIRY_RESULT_WITH_RSSI"); - break; - case HCI_EV_REMOTE_EXT_FEATURES: - printk("HCI_EV_REMOTE_EXT_FEATURES"); - break; - case HCI_EV_SYNC_CONN_COMPLETE: - printk("HCI_EV_SYNC_CONN_COMPLETE"); - break; - case HCI_EV_SYNC_CONN_CHANGED: - printk("HCI_EV_SYNC_CONN_CHANGED"); - break; - case HCI_EV_SNIFF_SUBRATE: - printk("HCI_EV_SNIFF_SUBRATE"); - break; - case HCI_EV_EXTENDED_INQUIRY_RESULT: - printk("HCI_EV_EXTENDED_INQUIRY_RESULT"); - break; - case HCI_EV_IO_CAPA_REQUEST: - printk("HCI_EV_IO_CAPA_REQUEST"); - break; - case HCI_EV_SIMPLE_PAIR_COMPLETE: - printk("HCI_EV_SIMPLE_PAIR_COMPLETE"); - break; - case HCI_EV_REMOTE_HOST_FEATURES: - printk("HCI_EV_REMOTE_HOST_FEATURES"); - break; - default: - printk("unknow event"); - break; - } + printk("aic %s ", __func__); + switch (*opcode) { + case HCI_EV_INQUIRY_COMPLETE: + printk("HCI_EV_INQUIRY_COMPLETE"); + break; + case HCI_EV_INQUIRY_RESULT: + printk("HCI_EV_INQUIRY_RESULT"); + break; + case HCI_EV_CONN_COMPLETE: + printk("HCI_EV_CONN_COMPLETE"); + break; + case HCI_EV_CONN_REQUEST: + printk("HCI_EV_CONN_REQUEST"); + break; + case HCI_EV_DISCONN_COMPLETE: + printk("HCI_EV_DISCONN_COMPLETE"); + break; + case HCI_EV_AUTH_COMPLETE: + printk("HCI_EV_AUTH_COMPLETE"); + break; + case HCI_EV_REMOTE_NAME: + printk("HCI_EV_REMOTE_NAME"); + break; + case HCI_EV_ENCRYPT_CHANGE: + printk("HCI_EV_ENCRYPT_CHANGE"); + break; + case HCI_EV_CHANGE_LINK_KEY_COMPLETE: + printk("HCI_EV_CHANGE_LINK_KEY_COMPLETE"); + break; + case HCI_EV_REMOTE_FEATURES: + printk("HCI_EV_REMOTE_FEATURES"); + break; + case HCI_EV_REMOTE_VERSION: + printk("HCI_EV_REMOTE_VERSION"); + break; + case HCI_EV_QOS_SETUP_COMPLETE: + printk("HCI_EV_QOS_SETUP_COMPLETE"); + break; + case HCI_EV_CMD_COMPLETE: + printk("HCI_EV_CMD_COMPLETE"); + break; + case HCI_EV_CMD_STATUS: + printk("HCI_EV_CMD_STATUS"); + break; + case HCI_EV_ROLE_CHANGE: + printk("HCI_EV_ROLE_CHANGE"); + break; + case HCI_EV_NUM_COMP_PKTS: + printk("HCI_EV_NUM_COMP_PKTS"); + break; + case HCI_EV_MODE_CHANGE: + printk("HCI_EV_MODE_CHANGE"); + break; + case HCI_EV_PIN_CODE_REQ: + printk("HCI_EV_PIN_CODE_REQ"); + break; + case HCI_EV_LINK_KEY_REQ: + printk("HCI_EV_LINK_KEY_REQ"); + break; + case HCI_EV_LINK_KEY_NOTIFY: + printk("HCI_EV_LINK_KEY_NOTIFY"); + break; + case HCI_EV_CLOCK_OFFSET: + printk("HCI_EV_CLOCK_OFFSET"); + break; + case HCI_EV_PKT_TYPE_CHANGE: + printk("HCI_EV_PKT_TYPE_CHANGE"); + break; + case HCI_EV_PSCAN_REP_MODE: + printk("HCI_EV_PSCAN_REP_MODE"); + break; + case HCI_EV_INQUIRY_RESULT_WITH_RSSI: + printk("HCI_EV_INQUIRY_RESULT_WITH_RSSI"); + break; + case HCI_EV_REMOTE_EXT_FEATURES: + printk("HCI_EV_REMOTE_EXT_FEATURES"); + break; + case HCI_EV_SYNC_CONN_COMPLETE: + printk("HCI_EV_SYNC_CONN_COMPLETE"); + break; + case HCI_EV_SYNC_CONN_CHANGED: + printk("HCI_EV_SYNC_CONN_CHANGED"); + break; + case HCI_EV_SNIFF_SUBRATE: + printk("HCI_EV_SNIFF_SUBRATE"); + break; + case HCI_EV_EXTENDED_INQUIRY_RESULT: + printk("HCI_EV_EXTENDED_INQUIRY_RESULT"); + break; + case HCI_EV_IO_CAPA_REQUEST: + printk("HCI_EV_IO_CAPA_REQUEST"); + break; + case HCI_EV_SIMPLE_PAIR_COMPLETE: + printk("HCI_EV_SIMPLE_PAIR_COMPLETE"); + break; + case HCI_EV_REMOTE_HOST_FEATURES: + printk("HCI_EV_REMOTE_HOST_FEATURES"); + break; + default: + printk("unknow event"); + break; + } printk("\n"); #if 0 printk("%02x,len:%d,", *opcode,len); @@ -338,17 +316,16 @@ static void print_event(struct sk_buff *skb) #endif } - -static inline ssize_t sdio_put_user(struct sk_buff *skb, - char __user *buf, int count) +static inline ssize_t sdio_put_user(struct sk_buff *skb, char __user *buf, + int count) { - char __user *ptr = buf; - int len = min_t(unsigned int, skb->len, count); + char __user *ptr = buf; + int len = min_t(unsigned int, skb->len, count); - if (copy_to_user(ptr, skb->data, len)) - return -EFAULT; + if (copy_to_user(ptr, skb->data, len)) + return -EFAULT; - return len; + return len; } int aic_enqueue(struct sk_buff *skb) @@ -356,98 +333,98 @@ int aic_enqueue(struct sk_buff *skb) unsigned long flags = 0; int ret = 0; spin_lock_irqsave(&queue_lock, flags); - if (aic_skb_queue_front == (aic_skb_queue_rear + 1) % QUEUE_SIZE) { - /* + if (aic_skb_queue_front == (aic_skb_queue_rear + 1) % QUEUE_SIZE) { + /* * If queue is full, current solution is to drop * the following entries. */ - AICBT_WARN("%s: Queue is full, entry will be dropped", __func__); + AICBT_WARN("%s: Queue is full, entry will be dropped", + __func__); ret = -1; - } else { - aic_skb_queue[aic_skb_queue_rear] = skb; + } else { + aic_skb_queue[aic_skb_queue_rear] = skb; - aic_skb_queue_rear++; - aic_skb_queue_rear %= QUEUE_SIZE; - - } + aic_skb_queue_rear++; + aic_skb_queue_rear %= QUEUE_SIZE; + } spin_unlock_irqrestore(&queue_lock, flags); return ret; } static struct sk_buff *aic_dequeue_try(unsigned int deq_len) { - struct sk_buff *skb; - struct sk_buff *skb_copy; + struct sk_buff *skb; + struct sk_buff *skb_copy; unsigned long flags = 0; - + spin_lock_irqsave(&queue_lock, flags); - if (aic_skb_queue_front == aic_skb_queue_rear) { - AICBT_WARN("%s: Queue is empty", __func__); + if (aic_skb_queue_front == aic_skb_queue_rear) { + AICBT_WARN("%s: Queue is empty", __func__); spin_unlock_irqrestore(&queue_lock, flags); - return NULL; - } + return NULL; + } - skb = aic_skb_queue[aic_skb_queue_front]; - if (deq_len >= skb->len) { + skb = aic_skb_queue[aic_skb_queue_front]; + if (deq_len >= skb->len) { + aic_skb_queue_front++; + aic_skb_queue_front %= QUEUE_SIZE; - aic_skb_queue_front++; - aic_skb_queue_front %= QUEUE_SIZE; - - /* + /* * Return skb addr to be dequeued, and the caller * should free the skb eventually. */ spin_unlock_irqrestore(&queue_lock, flags); - return skb; - } else { - skb_copy = pskb_copy(skb, GFP_ATOMIC); - skb_pull(skb, deq_len); - /* Return its copy to be freed */ + return skb; + } else { + skb_copy = pskb_copy(skb, GFP_ATOMIC); + skb_pull(skb, deq_len); + /* Return its copy to be freed */ spin_unlock_irqrestore(&queue_lock, flags); - return skb_copy; - } + return skb_copy; + } } static inline int is_queue_empty(void) { - return (aic_skb_queue_front == aic_skb_queue_rear) ? 1 : 0; + return (aic_skb_queue_front == aic_skb_queue_rear) ? 1 : 0; } void aic_clear_queue(void) { - struct sk_buff *skb; + struct sk_buff *skb; unsigned long flags = 0; - + spin_lock_irqsave(&queue_lock, flags); - while(!is_queue_empty()) { - skb = aic_skb_queue[aic_skb_queue_front]; - aic_skb_queue[aic_skb_queue_front] = NULL; - aic_skb_queue_front++; - aic_skb_queue_front %= QUEUE_SIZE; - if (skb) { - kfree_skb(skb); - } - } + while (!is_queue_empty()) { + skb = aic_skb_queue[aic_skb_queue_front]; + aic_skb_queue[aic_skb_queue_front] = NULL; + aic_skb_queue_front++; + aic_skb_queue_front %= QUEUE_SIZE; + if (skb) { + kfree_skb(skb); + } + } spin_unlock_irqrestore(&queue_lock, flags); } int aic_queue_cnt(void) { - int ret_cnt = 0; + int ret_cnt = 0; unsigned long flags = 0; - + spin_lock_irqsave(&queue_lock, flags); - if(is_queue_empty()) { - ret_cnt = 0; - }else{ - if(aic_skb_queue_rear > aic_skb_queue_front){ - ret_cnt = aic_skb_queue_rear-aic_skb_queue_front; - }else{ - ret_cnt = aic_skb_queue_rear+QUEUE_SIZE-aic_skb_queue_front; - } - } + if (is_queue_empty()) { + ret_cnt = 0; + } else { + if (aic_skb_queue_rear > aic_skb_queue_front) { + ret_cnt = aic_skb_queue_rear - aic_skb_queue_front; + } else { + ret_cnt = aic_skb_queue_rear + QUEUE_SIZE - + aic_skb_queue_front; + } + } spin_unlock_irqrestore(&queue_lock, flags); - return ret_cnt; + return ret_cnt; } /* @@ -458,27 +435,27 @@ int aic_queue_cnt(void) * Device is held on return. */ struct hci_dev *hci_dev_get(int index) { - if (index != 0) - return NULL; + if (index != 0) + return NULL; - return ghdev; + return ghdev; } /* ---- HCI ioctl helpers ---- */ static int hci_dev_open(__u16 dev) { - struct hci_dev *hdev; - int ret = 0; + struct hci_dev *hdev; + int ret = 0; - AICBT_DBG("%s: dev %d", __func__, dev); + AICBT_DBG("%s: dev %d", __func__, dev); - hdev = hci_dev_get(dev); - if (!hdev) { - AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); - return -ENODEV; - } + hdev = hci_dev_get(dev); + if (!hdev) { + AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); + return -ENODEV; + } - /*if (test_bit(HCI_UNREGISTER, &hdev->dev_flags)) { + /*if (test_bit(HCI_UNREGISTER, &hdev->dev_flags)) { ret = -ENODEV; goto done; } @@ -489,172 +466,173 @@ static int hci_dev_open(__u16 dev) }*/ done: - return ret; + return ret; } static int hci_dev_do_close(struct hci_dev *hdev) { - //if (hdev->flush) - // hdev->flush(hdev); - /* After this point our queues are empty + //if (hdev->flush) + // hdev->flush(hdev); + /* After this point our queues are empty * and no tasks are scheduled. */ - //hdev->close(hdev); - /* Clear flags */ - hdev->flags = 0; - return 0; + //hdev->close(hdev); + /* Clear flags */ + hdev->flags = 0; + return 0; } static int hci_dev_close(__u16 dev) { - struct hci_dev *hdev; - int err; - hdev = hci_dev_get(dev); - if (!hdev) { - AICBT_ERR("%s: failed to get hci dev[Null]", __func__); - return -ENODEV; - } + struct hci_dev *hdev; + int err; + hdev = hci_dev_get(dev); + if (!hdev) { + AICBT_ERR("%s: failed to get hci dev[Null]", __func__); + return -ENODEV; + } - err = hci_dev_do_close(hdev); + err = hci_dev_do_close(hdev); - return err; + return err; } #if CONFIG_BLUEDROID static struct hci_dev *hci_alloc_dev(void) { - struct hci_dev *hdev; + struct hci_dev *hdev; - hdev = kzalloc(sizeof(struct hci_dev), GFP_KERNEL); - if (!hdev) - return NULL; + hdev = kzalloc(sizeof(struct hci_dev), GFP_KERNEL); + if (!hdev) + return NULL; - return hdev; + return hdev; } /* Free HCI device */ static void hci_free_dev(struct hci_dev *hdev) { - kfree(hdev); + kfree(hdev); } /* Register HCI device */ static int hci_register_dev(struct hci_dev *hdev) { - int i, id; + int i, id; - AICBT_DBG("%s: %p name %s bus %d", __func__, hdev, hdev->name, hdev->bus); - /* Do not allow HCI_AMP devices to register at index 0, + AICBT_DBG("%s: %p name %s bus %d", __func__, hdev, hdev->name, + hdev->bus); + /* Do not allow HCI_AMP devices to register at index 0, * so the index can be used as the AMP controller ID. */ - id = (hdev->dev_type == HCI_BREDR) ? 0 : 1; + id = (hdev->dev_type == HCI_BREDR) ? 0 : 1; - write_lock(&hci_dev_lock); + write_lock(&hci_dev_lock); - sprintf(hdev->name, "hci%d", id); - hdev->id = id; - hdev->flags = 0; - hdev->dev_flags = 0; - mutex_init(&hdev->lock); + sprintf(hdev->name, "hci%d", id); + hdev->id = id; + hdev->flags = 0; + hdev->dev_flags = 0; + mutex_init(&hdev->lock); - AICBT_DBG("%s: id %d, name %s", __func__, hdev->id, hdev->name); + AICBT_DBG("%s: id %d, name %s", __func__, hdev->id, hdev->name); + for (i = 0; i < NUM_REASSEMBLY; i++) + hdev->reassembly[i] = NULL; - for (i = 0; i < NUM_REASSEMBLY; i++) - hdev->reassembly[i] = NULL; + memset(&hdev->stat, 0, sizeof(struct hci_dev_stats)); + atomic_set(&hdev->promisc, 0); - memset(&hdev->stat, 0, sizeof(struct hci_dev_stats)); - atomic_set(&hdev->promisc, 0); + if (ghdev) { + write_unlock(&hci_dev_lock); + AICBT_ERR("%s: Hci device has been registered already", + __func__); + return -1; + } else + ghdev = hdev; - if (ghdev) { - write_unlock(&hci_dev_lock); - AICBT_ERR("%s: Hci device has been registered already", __func__); - return -1; - } else - ghdev = hdev; + write_unlock(&hci_dev_lock); - write_unlock(&hci_dev_lock); - - return id; + return id; } /* Unregister HCI device */ static void hci_unregister_dev(struct hci_dev *hdev) { - int i; + int i; - AICBT_DBG("%s: hdev %p name %s bus %d", __func__, hdev, hdev->name, hdev->bus); - set_bit(HCI_UNREGISTER, &hdev->dev_flags); + AICBT_DBG("%s: hdev %p name %s bus %d", __func__, hdev, hdev->name, + hdev->bus); + set_bit(HCI_UNREGISTER, &hdev->dev_flags); - write_lock(&hci_dev_lock); - ghdev = NULL; - write_unlock(&hci_dev_lock); + write_lock(&hci_dev_lock); + ghdev = NULL; + write_unlock(&hci_dev_lock); - hci_dev_do_close(hdev); - for (i = 0; i < NUM_REASSEMBLY; i++) - kfree_skb(hdev->reassembly[i]); + hci_dev_do_close(hdev); + for (i = 0; i < NUM_REASSEMBLY; i++) + kfree_skb(hdev->reassembly[i]); } static void hci_send_to_stack(struct hci_dev *hdev, struct sk_buff *skb) { - struct sk_buff *aic_skb_copy = NULL; + struct sk_buff *aic_skb_copy = NULL; - //AICBT_DBG("%s", __func__); + //AICBT_DBG("%s", __func__); - if (!hdev) { - AICBT_ERR("%s: Frame for unknown HCI device", __func__); - return; - } + if (!hdev) { + AICBT_ERR("%s: Frame for unknown HCI device", __func__); + return; + } - if (!test_bit(HCI_RUNNING, &hdev->flags)) { - AICBT_ERR("%s: HCI not running", __func__); - return; - } + if (!test_bit(HCI_RUNNING, &hdev->flags)) { + AICBT_ERR("%s: HCI not running", __func__); + return; + } - aic_skb_copy = pskb_copy(skb, GFP_ATOMIC); - if (!aic_skb_copy) { - AICBT_ERR("%s: Copy skb error", __func__); - return; - } + aic_skb_copy = pskb_copy(skb, GFP_ATOMIC); + if (!aic_skb_copy) { + AICBT_ERR("%s: Copy skb error", __func__); + return; + } - memcpy(skb_push(aic_skb_copy, 1), &bt_cb(skb)->pkt_type, 1); - aic_enqueue(aic_skb_copy); + memcpy(skb_push(aic_skb_copy, 1), &bt_cb(skb)->pkt_type, 1); + aic_enqueue(aic_skb_copy); - /* Make sure bt char device existing before wakeup read queue */ - hdev = hci_dev_get(0); - if (hdev) { - //AICBT_DBG("%s: Try to wakeup read queue", __func__); - AICBT_DBG("%s", __func__); - wake_up_interruptible(&btchr_read_wait); - } + /* Make sure bt char device existing before wakeup read queue */ + hdev = hci_dev_get(0); + if (hdev) { + //AICBT_DBG("%s: Try to wakeup read queue", __func__); + AICBT_DBG("%s", __func__); + wake_up_interruptible(&btchr_read_wait); + } - - return; + return; } /* Receive frame from HCI drivers */ static int hci_recv_frame(struct sk_buff *skb) { - struct hci_dev *hdev = (struct hci_dev *) skb->dev; + struct hci_dev *hdev = (struct hci_dev *)skb->dev; - if (!hdev || - (!test_bit(HCI_UP, &hdev->flags) && !test_bit(HCI_INIT, &hdev->flags))) { - kfree_skb(skb); - return -ENXIO; - } + if (!hdev || (!test_bit(HCI_UP, &hdev->flags) && + !test_bit(HCI_INIT, &hdev->flags))) { + kfree_skb(skb); + return -ENXIO; + } - /* Incomming skb */ - bt_cb(skb)->incoming = 1; + /* Incomming skb */ + bt_cb(skb)->incoming = 1; - /* Time stamp */ - __net_timestamp(skb); + /* Time stamp */ + __net_timestamp(skb); - if (atomic_read(&hdev->promisc)) { + if (atomic_read(&hdev->promisc)) { #ifdef CONFIG_SCO_OVER_HCI - if(bt_cb(skb)->pkt_type == HCI_SCODATA_PKT){ - hci_send_to_alsa_ringbuffer(hdev, skb); - }else{ - if(bt_cb(skb)->pkt_type == HCI_EVENT_PKT){ - if(bypass_event(skb)){ + if (bt_cb(skb)->pkt_type == HCI_SCODATA_PKT) { + hci_send_to_alsa_ringbuffer(hdev, skb); + } else { + if (bt_cb(skb)->pkt_type == HCI_EVENT_PKT) { + if (bypass_event(skb)) { kfree_skb(skb); return 0; } @@ -662,8 +640,8 @@ static int hci_recv_frame(struct sk_buff *skb) hci_send_to_stack(hdev, skb); } #else - if(bt_cb(skb)->pkt_type == HCI_EVENT_PKT){ - if(bypass_event(skb)){ + if (bt_cb(skb)->pkt_type == HCI_EVENT_PKT) { + if (bypass_event(skb)) { kfree_skb(skb); return 0; } @@ -671,296 +649,285 @@ static int hci_recv_frame(struct sk_buff *skb) /* Send copy to the sockets */ hci_send_to_stack(hdev, skb); #endif + } - } - - kfree_skb(skb); - return 0; + kfree_skb(skb); + return 0; } - - -static int hci_reassembly(struct hci_dev *hdev, int type, void *data, - int count, __u8 index) +static int hci_reassembly(struct hci_dev *hdev, int type, void *data, int count, + __u8 index) { - int len = 0; - int hlen = 0; - int remain = count; - struct sk_buff *skb; - struct bt_skb_cb *scb; + int len = 0; + int hlen = 0; + int remain = count; + struct sk_buff *skb; + struct bt_skb_cb *scb; - //AICBT_DBG("%s", __func__); + //AICBT_DBG("%s", __func__); - if ((type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) || - index >= NUM_REASSEMBLY) - return -EILSEQ; + if ((type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) || + index >= NUM_REASSEMBLY) + return -EILSEQ; - skb = hdev->reassembly[index]; + skb = hdev->reassembly[index]; - if (!skb) { - switch (type) { - case HCI_ACLDATA_PKT: - len = HCI_MAX_FRAME_SIZE; - hlen = HCI_ACL_HDR_SIZE; - break; - case HCI_EVENT_PKT: - len = HCI_MAX_EVENT_SIZE; - hlen = HCI_EVENT_HDR_SIZE; - break; - case HCI_SCODATA_PKT: - len = HCI_MAX_SCO_SIZE; - hlen = HCI_SCO_HDR_SIZE; - break; - } + if (!skb) { + switch (type) { + case HCI_ACLDATA_PKT: + len = HCI_MAX_FRAME_SIZE; + hlen = HCI_ACL_HDR_SIZE; + break; + case HCI_EVENT_PKT: + len = HCI_MAX_EVENT_SIZE; + hlen = HCI_EVENT_HDR_SIZE; + break; + case HCI_SCODATA_PKT: + len = HCI_MAX_SCO_SIZE; + hlen = HCI_SCO_HDR_SIZE; + break; + } - skb = bt_skb_alloc(len, GFP_ATOMIC); - if (!skb) - return -ENOMEM; + skb = bt_skb_alloc(len, GFP_ATOMIC); + if (!skb) + return -ENOMEM; - scb = (void *) skb->cb; - scb->expect = hlen; - scb->pkt_type = type; + scb = (void *)skb->cb; + scb->expect = hlen; + scb->pkt_type = type; - skb->dev = (void *) hdev; - hdev->reassembly[index] = skb; - } + skb->dev = (void *)hdev; + hdev->reassembly[index] = skb; + } - while (count) { - scb = (void *) skb->cb; - len = min_t(uint, scb->expect, count); + while (count) { + scb = (void *)skb->cb; + len = min_t(uint, scb->expect, count); - memcpy(skb_put(skb, len), data, len); + memcpy(skb_put(skb, len), data, len); - count -= len; - data += len; - scb->expect -= len; - remain = count; + count -= len; + data += len; + scb->expect -= len; + remain = count; - switch (type) { - case HCI_EVENT_PKT: - if (skb->len == HCI_EVENT_HDR_SIZE) { - struct hci_event_hdr *h = hci_event_hdr(skb); - scb->expect = h->plen; + switch (type) { + case HCI_EVENT_PKT: + if (skb->len == HCI_EVENT_HDR_SIZE) { + struct hci_event_hdr *h = hci_event_hdr(skb); + scb->expect = h->plen; - if (skb_tailroom(skb) < scb->expect) { - kfree_skb(skb); - hdev->reassembly[index] = NULL; - return -ENOMEM; - } - } - break; + if (skb_tailroom(skb) < scb->expect) { + kfree_skb(skb); + hdev->reassembly[index] = NULL; + return -ENOMEM; + } + } + break; - case HCI_ACLDATA_PKT: - if (skb->len == HCI_ACL_HDR_SIZE) { - struct hci_acl_hdr *h = hci_acl_hdr(skb); - scb->expect = __le16_to_cpu(h->dlen); + case HCI_ACLDATA_PKT: + if (skb->len == HCI_ACL_HDR_SIZE) { + struct hci_acl_hdr *h = hci_acl_hdr(skb); + scb->expect = __le16_to_cpu(h->dlen); - if (skb_tailroom(skb) < scb->expect) { - kfree_skb(skb); - hdev->reassembly[index] = NULL; - return -ENOMEM; - } - } - break; + if (skb_tailroom(skb) < scb->expect) { + kfree_skb(skb); + hdev->reassembly[index] = NULL; + return -ENOMEM; + } + } + break; - case HCI_SCODATA_PKT: - if (skb->len == HCI_SCO_HDR_SIZE) { - struct hci_sco_hdr *h = hci_sco_hdr(skb); - scb->expect = h->dlen; + case HCI_SCODATA_PKT: + if (skb->len == HCI_SCO_HDR_SIZE) { + struct hci_sco_hdr *h = hci_sco_hdr(skb); + scb->expect = h->dlen; - if (skb_tailroom(skb) < scb->expect) { - kfree_skb(skb); - hdev->reassembly[index] = NULL; - return -ENOMEM; - } - } - break; - } + if (skb_tailroom(skb) < scb->expect) { + kfree_skb(skb); + hdev->reassembly[index] = NULL; + return -ENOMEM; + } + } + break; + } - if (scb->expect == 0) { - /* Complete frame */ - if(HCI_ACLDATA_PKT == type) - print_acl(skb,0); - if(HCI_SCODATA_PKT == type) - print_sco(skb,0); - if(HCI_EVENT_PKT == type) - print_event(skb); + if (scb->expect == 0) { + /* Complete frame */ + if (HCI_ACLDATA_PKT == type) + print_acl(skb, 0); + if (HCI_SCODATA_PKT == type) + print_sco(skb, 0); + if (HCI_EVENT_PKT == type) + print_event(skb); - bt_cb(skb)->pkt_type = type; - hci_recv_frame(skb); + bt_cb(skb)->pkt_type = type; + hci_recv_frame(skb); - hdev->reassembly[index] = NULL; - return remain; - } - } + hdev->reassembly[index] = NULL; + return remain; + } + } - return remain; + return remain; } int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count) { - int rem = 0; + int rem = 0; - if (type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) - return -EILSEQ; + if (type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) + return -EILSEQ; - while (count) { - rem = hci_reassembly(hdev, type, data, count, type - 1); - if (rem < 0) - return rem; + while (count) { + rem = hci_reassembly(hdev, type, data, count, type - 1); + if (rem < 0) + return rem; - data += (count - rem); - count = rem; - } + data += (count - rem); + count = rem; + } - return rem; + return rem; } #endif //CONFIG_BLUEDROID -static int btchr_open(struct inode *inode_p, struct file *file_p) +static int btchr_open(struct inode *inode_p, struct file *file_p) { - struct btusb_data *data; - struct hci_dev *hdev; + struct btusb_data *data; + struct hci_dev *hdev; - AICBT_DBG("%s: BT sdio char device is opening", __func__); - /* Not open unless wanna tracing log */ - /* trace_printk("%s: open....\n", __func__); */ + AICBT_DBG("%s: BT sdio char device is opening", __func__); + /* Not open unless wanna tracing log */ + /* trace_printk("%s: open....\n", __func__); */ - hdev = hci_dev_get(0); - if (!hdev) { - AICBT_DBG("%s: Failed to get hci dev[NULL]", __func__); - return -ENODEV; - } - data = GET_DRV_DATA(hdev); + hdev = hci_dev_get(0); + if (!hdev) { + AICBT_DBG("%s: Failed to get hci dev[NULL]", __func__); + return -ENODEV; + } + data = GET_DRV_DATA(hdev); - atomic_inc(&hdev->promisc); - /* + atomic_inc(&hdev->promisc); + /* * As bt device is not re-opened when hotplugged out, we cannot * trust on file's private data(may be null) when other file ops * are invoked. */ - file_p->private_data = data; + file_p->private_data = data; - mutex_lock(&btchr_mutex); - hci_dev_open(0); - mutex_unlock(&btchr_mutex); + mutex_lock(&btchr_mutex); + hci_dev_open(0); + mutex_unlock(&btchr_mutex); - aic_clear_queue(); - return nonseekable_open(inode_p, file_p); + aic_clear_queue(); + return nonseekable_open(inode_p, file_p); } -static int btchr_close(struct inode *inode_p, struct file *file_p) +static int btchr_close(struct inode *inode_p, struct file *file_p) { - struct btusb_data *data; - struct hci_dev *hdev; + struct btusb_data *data; + struct hci_dev *hdev; - AICBT_INFO("%s: BT sdio char device is closing", __func__); - /* Not open unless wanna tracing log */ - /* trace_printk("%s: close....\n", __func__); */ + AICBT_INFO("%s: BT sdio char device is closing", __func__); + /* Not open unless wanna tracing log */ + /* trace_printk("%s: close....\n", __func__); */ - data = file_p->private_data; - file_p->private_data = NULL; + data = file_p->private_data; + file_p->private_data = NULL; #if CONFIG_BLUEDROID - /* + /* * If the upper layer closes bt char interfaces, no reset * action required even bt device hotplugged out. */ - bt_reset = 0; + bt_reset = 0; #endif - hdev = hci_dev_get(0); - if (hdev) { - atomic_set(&hdev->promisc, 0); - mutex_lock(&btchr_mutex); - hci_dev_close(0); - mutex_unlock(&btchr_mutex); - } + hdev = hci_dev_get(0); + if (hdev) { + atomic_set(&hdev->promisc, 0); + mutex_lock(&btchr_mutex); + hci_dev_close(0); + mutex_unlock(&btchr_mutex); + } - return 0; + return 0; } -void bt_data_dump(char* tag, void* data, unsigned long len){ +void bt_data_dump(char *tag, void *data, unsigned long len) +{ unsigned long i = 0; - uint8_t* data_ = (uint8_t* )data; + uint8_t *data_ = (uint8_t *)data; printk("%s %s len:(%lu)\r\n", __func__, tag, len); - for (i = 0; i < len; i += 16){ - printk("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\r\n", - data_[0 + i], - data_[1 + i], - data_[2 + i], - data_[3 + i], - data_[4 + i], - data_[5 + i], - data_[6 + i], - data_[7 + i], - data_[8 + i], - data_[9 + i], - data_[10 + i], - data_[11 + i], - data_[12 + i], - data_[13 + i], - data_[14 + i], - data_[15 + i]); + for (i = 0; i < len; i += 16) { + printk("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\r\n", + data_[0 + i], data_[1 + i], data_[2 + i], data_[3 + i], + data_[4 + i], data_[5 + i], data_[6 + i], data_[7 + i], + data_[8 + i], data_[9 + i], data_[10 + i], data_[11 + i], + data_[12 + i], data_[13 + i], data_[14 + i], + data_[15 + i]); } - } -static ssize_t btchr_read(struct file *file_p, - char __user *buf_p, - size_t count, - loff_t *pos_p) +static ssize_t btchr_read(struct file *file_p, char __user *buf_p, size_t count, + loff_t *pos_p) { - struct hci_dev *hdev; - struct sk_buff *skb; - ssize_t ret = 0; + struct hci_dev *hdev; + struct sk_buff *skb; + ssize_t ret = 0; - while (count) { + while (count) { #if 1 hdev = hci_dev_get(0); - if (!hdev) { - /* + if (!hdev) { + /* * Note: Only when BT device hotplugged out, we wil get * into such situation. In order to keep the upper layer * stack alive (blocking the read), we should never return * EFAULT or break the loop. */ - AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); - } + AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); + } #endif - ret = wait_event_interruptible(btchr_read_wait, !is_queue_empty()); - if (ret < 0) { - AICBT_ERR("%s: wait event is signaled %d", __func__, (int)ret); - break; - } + ret = wait_event_interruptible(btchr_read_wait, + !is_queue_empty()); + if (ret < 0) { + AICBT_ERR("%s: wait event is signaled %d", __func__, + (int)ret); + break; + } - skb = aic_dequeue_try(count); + skb = aic_dequeue_try(count); //bt_data_dump("btchr_read", skb->data, skb->len); //printk("btchr_read \n"); - if (skb) { - ret = sdio_put_user(skb, buf_p, count); - if (ret < 0) - AICBT_ERR("%s: Failed to put data to user space", __func__); - kfree_skb(skb); - break; - } - } + if (skb) { + ret = sdio_put_user(skb, buf_p, count); + if (ret < 0) + AICBT_ERR( + "%s: Failed to put data to user space", + __func__); + kfree_skb(skb); + break; + } + } - return ret; + return ret; } #ifdef CONFIG_SUPPORT_VENDOR_APCF -void btchr_external_write(char* buff, int len){ +void btchr_external_write(char *buff, int len) +{ struct hci_dev *hdev; struct sk_buff *skb; int i; struct btusb_data *data; AICBT_INFO("%s \r\n", __func__); - for(i=0;idev = (void *)hdev; - memcpy((__u8 *)skb->data,(__u8 *)buff,len); + if (!skb) + return; + skb_reserve(skb, -1); // Add this line + skb->dev = (void *)hdev; + memcpy((__u8 *)skb->data, (__u8 *)buff, len); skb_put(skb, len); - bt_cb(skb)->pkt_type = *((__u8 *)skb->data); - skb_pull(skb, 1); - data->hdev->send(skb); + bt_cb(skb)->pkt_type = *((__u8 *)skb->data); + skb_pull(skb, 1); + data->hdev->send(skb); } EXPORT_SYMBOL(btchr_external_write); #endif //CONFIG_SUPPORT_VENDOR_APCF //extern struct rwnx_plat *g_rwnx_plat; -static ssize_t btchr_write(struct file *file_p, - const char __user *buf_p, - size_t count, - loff_t *pos_p) +static ssize_t btchr_write(struct file *file_p, const char __user *buf_p, + size_t count, loff_t *pos_p) { - struct btusb_data *data = file_p->private_data; - struct hci_dev *hdev; - struct sk_buff *skb; - int err=0; + struct btusb_data *data = file_p->private_data; + struct hci_dev *hdev; + struct sk_buff *skb; + int err = 0; - AICBT_DBG("%s", __func__); + AICBT_DBG("%s", __func__); - hdev = hci_dev_get(0); - if (!hdev) { - AICBT_WARN("%s: Failed to get hci dev[Null]", __func__); - /* + hdev = hci_dev_get(0); + if (!hdev) { + AICBT_WARN("%s: Failed to get hci dev[Null]", __func__); + /* * Note: we bypass the data from the upper layer if bt device * is hotplugged out. Fortunatelly, H4 or H5 HCI stack does * NOT check btchr_write's return value. However, returning * count instead of EFAULT is preferable. */ - /* return -EFAULT; */ - return count; - } + /* return -EFAULT; */ + return count; + } #if 0 /* Never trust on btusb_data, as bt device may be hotplugged out */ @@ -1026,57 +992,58 @@ static ssize_t btchr_write(struct file *file_p, } #endif - if (count > HCI_MAX_FRAME_SIZE) - return -EINVAL; + if (count > HCI_MAX_FRAME_SIZE) + return -EINVAL; - skb = bt_skb_alloc(count, GFP_ATOMIC); - if (!skb) - return -ENOMEM; - skb_reserve(skb, -1); // Add this line + skb = bt_skb_alloc(count, GFP_ATOMIC); + if (!skb) + return -ENOMEM; + skb_reserve(skb, -1); // Add this line - if (copy_from_user(skb_put(skb, count), buf_p, count)) { - AICBT_ERR("%s: Failed to get data from user space", __func__); - kfree_skb(skb); - return -EFAULT; - } + if (copy_from_user(skb_put(skb, count), buf_p, count)) { + AICBT_ERR("%s: Failed to get data from user space", __func__); + kfree_skb(skb); + return -EFAULT; + } + + skb->dev = (void *)hdev; + bt_cb(skb)->pkt_type = *((__u8 *)skb->data); + //skb_pull(skb, 1); + //data->hdev->send(skb); - skb->dev = (void *)hdev; - bt_cb(skb)->pkt_type = *((__u8 *)skb->data); - //skb_pull(skb, 1); - //data->hdev->send(skb); - //bt_data_dump("btwrite", skb->data, skb->len); - err = rwnx_sdio_bt_send_req(g_rwnx_plat->sdiodev->rwnx_hw, skb->len, skb); - if(err<0){ - printk("%s rwnx_sdio_bt_send_req error %d",__func__,err); + err = rwnx_sdio_bt_send_req(g_rwnx_plat->sdiodev->rwnx_hw, skb->len, + skb); + if (err < 0) { + printk("%s rwnx_sdio_bt_send_req error %d", __func__, err); } kfree_skb(skb); - return count; + return count; } static unsigned int btchr_poll(struct file *file_p, poll_table *wait) { - struct btusb_data *data = file_p->private_data; - struct hci_dev *hdev; + struct btusb_data *data = file_p->private_data; + struct hci_dev *hdev; - //AICBT_DBG("%s: BT sdio char device is polling", __func__); + //AICBT_DBG("%s: BT sdio char device is polling", __func__); - /*if(!bt_char_dev_registered) { + /*if(!bt_char_dev_registered) { AICBT_ERR("%s: char device has not registered!", __func__); return POLLERR | POLLHUP; }*/ //printk("poll wait\n"); - poll_wait(file_p, &btchr_read_wait, wait); + poll_wait(file_p, &btchr_read_wait, wait); //printk("poll out\n"); - hdev = hci_dev_get(0); - if (!hdev) { - AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); - //mdelay(URB_CANCELING_DELAY_MS); - return POLLERR | POLLHUP; - return POLLOUT | POLLWRNORM; - } + hdev = hci_dev_get(0); + if (!hdev) { + AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); + //mdelay(URB_CANCELING_DELAY_MS); + return POLLERR | POLLHUP; + return POLLOUT | POLLWRNORM; + } #if 0 /* Never trust on btusb_data, as bt device may be hotplugged out */ @@ -1092,50 +1059,51 @@ static unsigned int btchr_poll(struct file *file_p, poll_table *wait) } #endif - if (!is_queue_empty()) - return POLLIN | POLLRDNORM; + if (!is_queue_empty()) + return POLLIN | POLLRDNORM; - return POLLOUT | POLLWRNORM; + return POLLOUT | POLLWRNORM; } -static long btchr_ioctl(struct file *file_p,unsigned int cmd, unsigned long arg) +static long btchr_ioctl(struct file *file_p, unsigned int cmd, + unsigned long arg) { - int ret = 0; - struct hci_dev *hdev; - struct btusb_data *data; - //firmware_info *fw_info; + int ret = 0; + struct hci_dev *hdev; + struct btusb_data *data; + //firmware_info *fw_info; - /*if(!bt_char_dev_registered) { + /*if(!bt_char_dev_registered) { return -ENODEV; }*/ - printk("%s cmd support %d \n",__func__,cmd); + printk("%s cmd support %d \n", __func__, cmd); #if 1 - if(check_set_dlfw_state_value(1) != 1) { - AICBT_ERR("%s bt controller is disconnecting!", __func__); - return 0; - } + if (check_set_dlfw_state_value(1) != 1) { + AICBT_ERR("%s bt controller is disconnecting!", __func__); + return 0; + } - hdev = hci_dev_get(0); - if(!hdev) { - AICBT_ERR("%s device is NULL!", __func__); - set_dlfw_state_value(0); - return 0; - } - //data = GET_DRV_DATA(hdev); - //fw_info = data->fw_info; + hdev = hci_dev_get(0); + if (!hdev) { + AICBT_ERR("%s device is NULL!", __func__); + set_dlfw_state_value(0); + return 0; + } + //data = GET_DRV_DATA(hdev); + //fw_info = data->fw_info; - AICBT_INFO(" btchr_ioctl DOWN_FW_CFG with Cmd:%d",cmd); - switch (cmd) { - case DOWN_FW_CFG: - AICBT_INFO(" btchr_ioctl DOWN_FW_CFG"); - /*ret = usb_autopm_get_interface(data->intf); + AICBT_INFO(" btchr_ioctl DOWN_FW_CFG with Cmd:%d", cmd); + switch (cmd) { + case DOWN_FW_CFG: + AICBT_INFO(" btchr_ioctl DOWN_FW_CFG"); + /*ret = usb_autopm_get_interface(data->intf); if (ret < 0){ goto failed; }*/ - //ret = download_patch(fw_info,1); - /*usb_autopm_put_interface(data->intf); + //ret = download_patch(fw_info,1); + /*usb_autopm_put_interface(data->intf); if(ret < 0){ AICBT_ERR("%s:Failed in download_patch with ret:%d",__func__,ret); goto failed; @@ -1146,51 +1114,52 @@ static long btchr_ioctl(struct file *file_p,unsigned int cmd, unsigned long arg) AICBT_ERR("%s:Failed in hdev->open(hdev):%d",__func__,ret); goto failed; }*/ - set_bit(HCI_UP, &hdev->flags); - set_dlfw_state_value(0); - wake_up_interruptible(&bt_dlfw_wait); - return 1; - case DWFW_CMPLT: - AICBT_INFO(" btchr_ioctl DWFW_CMPLT"); + set_bit(HCI_UP, &hdev->flags); + set_dlfw_state_value(0); + wake_up_interruptible(&bt_dlfw_wait); + return 1; + case DWFW_CMPLT: + AICBT_INFO(" btchr_ioctl DWFW_CMPLT"); #if 1 case SET_ISO_CFG: - AICBT_INFO("btchr_ioctl SET_ISO_CFG"); - if(copy_from_user(&(hdev->voice_setting), (__u16*)arg, sizeof(__u16))){ + AICBT_INFO("btchr_ioctl SET_ISO_CFG"); + if (copy_from_user(&(hdev->voice_setting), (__u16 *)arg, + sizeof(__u16))) { AICBT_INFO(" voice settings err"); } //hdev->voice_setting = *(uint16_t*)arg; AICBT_INFO(" voice settings = %d", hdev->voice_setting); //return 1; #endif - case GET_USB_INFO: - //ret = download_patch(fw_info,1); - AICBT_INFO(" btchr_ioctl GET_USB_INFO"); - /*ret = hdev->open(hdev); + case GET_USB_INFO: + //ret = download_patch(fw_info,1); + AICBT_INFO(" btchr_ioctl GET_USB_INFO"); + /*ret = hdev->open(hdev); if(ret < 0){ AICBT_ERR("%s:Failed in hdev->open(hdev):%d",__func__,ret); //goto done; }*/ - set_bit(HCI_UP, &hdev->flags); - set_dlfw_state_value(0); - wake_up_interruptible(&bt_dlfw_wait); - return 1; - case RESET_CONTROLLER: - AICBT_INFO(" btchr_ioctl RESET_CONTROLLER"); - //reset_controller(fw_info); - return 1; - default: - AICBT_ERR("%s:Failed with wrong Cmd:%d",__func__,cmd); - goto failed; - } - failed: - set_dlfw_state_value(0); - wake_up_interruptible(&bt_dlfw_wait); - return ret; + set_bit(HCI_UP, &hdev->flags); + set_dlfw_state_value(0); + wake_up_interruptible(&bt_dlfw_wait); + return 1; + case RESET_CONTROLLER: + AICBT_INFO(" btchr_ioctl RESET_CONTROLLER"); + //reset_controller(fw_info); + return 1; + default: + AICBT_ERR("%s:Failed with wrong Cmd:%d", __func__, cmd); + goto failed; + } +failed: + set_dlfw_state_value(0); + wake_up_interruptible(&bt_dlfw_wait); + return ret; #endif } -#ifdef CONFIG_PLATFORM_UBUNTU//AIDEN -typedef u32 compat_uptr_t; +#ifdef CONFIG_PLATFORM_UBUNTU //AIDEN +typedef u32 compat_uptr_t; static inline void __user *compat_ptr(compat_uptr_t uptr) { return (void __user *)(unsigned long)uptr; @@ -1198,102 +1167,104 @@ static inline void __user *compat_ptr(compat_uptr_t uptr) #endif #ifdef CONFIG_COMPAT -static long compat_btchr_ioctl (struct file *filp, unsigned int cmd, unsigned long arg) +static long compat_btchr_ioctl(struct file *filp, unsigned int cmd, + unsigned long arg) { - AICBT_DBG("%s: enter",__func__); - return btchr_ioctl(filp, cmd, (unsigned long) compat_ptr(arg)); + AICBT_DBG("%s: enter", __func__); + return btchr_ioctl(filp, cmd, (unsigned long)compat_ptr(arg)); } #endif -static struct file_operations bt_chrdev_ops = { - open : btchr_open, - release : btchr_close, - read : btchr_read, - write : btchr_write, - poll : btchr_poll, - unlocked_ioctl : btchr_ioctl, +static struct file_operations bt_chrdev_ops = { + open: btchr_open, + release: btchr_close, + read: btchr_read, + write: btchr_write, + poll: btchr_poll, + unlocked_ioctl: btchr_ioctl, #ifdef CONFIG_COMPAT - compat_ioctl : compat_btchr_ioctl, + compat_ioctl: compat_btchr_ioctl, #endif }; int btchr_init() { - int res = 0; - struct device *dev; + int res = 0; + struct device *dev; - AICBT_INFO("Register sdio char device interface for BT driver"); - /* + AICBT_INFO("Register sdio char device interface for BT driver"); + /* * btchr mutex is used to sync between * 1) downloading patch and opening bt char driver * 2) the file operations of bt char driver */ - mutex_init(&btchr_mutex); + mutex_init(&btchr_mutex); - skb_queue_head_init(&btchr_readq); - init_waitqueue_head(&btchr_read_wait); - init_waitqueue_head(&bt_dlfw_wait); + skb_queue_head_init(&btchr_readq); + init_waitqueue_head(&btchr_read_wait); + init_waitqueue_head(&bt_dlfw_wait); - bt_char_class = class_create(THIS_MODULE, BT_CHAR_DEVICE_NAME); - if (IS_ERR(bt_char_class)) { - AICBT_ERR("Failed to create bt char class"); - return PTR_ERR(bt_char_class); - } + bt_char_class = class_create(THIS_MODULE, BT_CHAR_DEVICE_NAME); + if (IS_ERR(bt_char_class)) { + AICBT_ERR("Failed to create bt char class"); + return PTR_ERR(bt_char_class); + } - res = alloc_chrdev_region(&bt_devid, 0, 1, BT_CHAR_DEVICE_NAME); - if (res < 0) { - AICBT_ERR("Failed to allocate bt char device"); - goto err_alloc; - } + res = alloc_chrdev_region(&bt_devid, 0, 1, BT_CHAR_DEVICE_NAME); + if (res < 0) { + AICBT_ERR("Failed to allocate bt char device"); + goto err_alloc; + } - dev = device_create(bt_char_class, NULL, bt_devid, NULL, BT_CHAR_DEVICE_NAME); - if (IS_ERR(dev)) { - AICBT_ERR("Failed to create bt char device"); - res = PTR_ERR(dev); - goto err_create; - } + dev = device_create(bt_char_class, NULL, bt_devid, NULL, + BT_CHAR_DEVICE_NAME); + if (IS_ERR(dev)) { + AICBT_ERR("Failed to create bt char device"); + res = PTR_ERR(dev); + goto err_create; + } - cdev_init(&bt_char_dev, &bt_chrdev_ops); - res = cdev_add(&bt_char_dev, bt_devid, 1); - if (res < 0) { - AICBT_ERR("Failed to add bt char device"); - goto err_add; - } + cdev_init(&bt_char_dev, &bt_chrdev_ops); + res = cdev_add(&bt_char_dev, bt_devid, 1); + if (res < 0) { + AICBT_ERR("Failed to add bt char device"); + goto err_add; + } - return 0; + return 0; err_add: - device_destroy(bt_char_class, bt_devid); + device_destroy(bt_char_class, bt_devid); err_create: - unregister_chrdev_region(bt_devid, 1); + unregister_chrdev_region(bt_devid, 1); err_alloc: - class_destroy(bt_char_class); - return res; + class_destroy(bt_char_class); + return res; } void btchr_exit(void) { - AICBT_INFO("Unregister sdio char device interface for BT driver"); + AICBT_INFO("Unregister sdio char device interface for BT driver"); - device_destroy(bt_char_class, bt_devid); - cdev_del(&bt_char_dev); - unregister_chrdev_region(bt_devid, 1); - class_destroy(bt_char_class); + device_destroy(bt_char_class, bt_devid); + cdev_del(&bt_char_dev); + unregister_chrdev_region(bt_devid, 1); + class_destroy(bt_char_class); - return; + return; } int hdev_init(void) { struct hci_dev *hdev; - int err=0; + int err = 0; hdev = hci_alloc_dev(); err = hci_register_dev(hdev); if (err < 0) { - hci_free_dev(hdev); - hdev = NULL; - return err; - } + hci_free_dev(hdev); + hdev = NULL; + return err; + } spin_lock_init(&queue_lock); @@ -1307,4 +1278,4 @@ void hdev_exit(void) hci_unregister_dev(hdev); hci_free_dev(hdev); } - +#endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.h index 719c2c6bc..79e354ba8 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_btsdio.h @@ -17,84 +17,83 @@ #include #include - #ifdef CONFIG_PLATFORM_UBUNTU -#define CONFIG_BLUEDROID 1 /* bleuz 0, bluedroid 1 */ +#define CONFIG_BLUEDROID 0 /* bleuz 0, bluedroid 1 */ #else -#define CONFIG_BLUEDROID 1 /* bleuz 0, bluedroid 1 */ +#define CONFIG_BLUEDROID 1 /* bleuz 0, bluedroid 1 */ #endif /* #define HCI_VERSION_CODE KERNEL_VERSION(3, 14, 41) */ #define HCI_VERSION_CODE LINUX_VERSION_CODE +#define PRINT_CMD_EVENT 1 +#define PRINT_ACL_DATA 1 +#define PRINT_SCO_DATA 1 -#define PRINT_CMD_EVENT 1 -#define PRINT_ACL_DATA 1 -#define PRINT_SCO_DATA 1 - -#define AICBT_DBG_FLAG 1 +#define AICBT_DBG_FLAG 1 #if AICBT_DBG_FLAG -#define AICBT_DBG(fmt, arg...) printk( "aic_btsdio: " fmt "\n" , ## arg) +#define AICBT_DBG(fmt, arg...) printk("aic_btsdio: " fmt "\n", ##arg) #else #define AICBT_DBG(fmt, arg...) #endif -#define AICBT_INFO(fmt, arg...) printk("aic_btsdio: " fmt "\n" , ## arg) -#define AICBT_WARN(fmt, arg...) printk("aic_btsdio: " fmt "\n" , ## arg) -#define AICBT_ERR(fmt, arg...) printk("aic_btsdio: " fmt "\n" , ## arg) +#define AICBT_INFO(fmt, arg...) printk("aic_btsdio: " fmt "\n", ##arg) +#define AICBT_WARN(fmt, arg...) printk("aic_btsdio: " fmt "\n", ##arg) +#define AICBT_ERR(fmt, arg...) printk("aic_btsdio: " fmt "\n", ##arg) #if LINUX_VERSION_CODE > KERNEL_VERSION(3, 4, 0) -#define GET_DRV_DATA(x) hci_get_drvdata(x) +#define GET_DRV_DATA(x) hci_get_drvdata(x) #else -#define GET_DRV_DATA(x) x->driver_data +#define GET_DRV_DATA(x) x->driver_data #endif +#if CONFIG_BLUEDROID struct btusb_data { - struct hci_dev *hdev; - //struct usb_device *udev; - //struct usb_interface *intf; - //struct usb_interface *isoc; + struct hci_dev *hdev; + //struct usb_device *udev; + //struct usb_interface *intf; + //struct usb_interface *isoc; - spinlock_t lock; + spinlock_t lock; - unsigned long flags; + unsigned long flags; - struct work_struct work; - struct work_struct waker; + struct work_struct work; + struct work_struct waker; - /*struct usb_anchor tx_anchor; + /*struct usb_anchor tx_anchor; struct usb_anchor intr_anchor; struct usb_anchor bulk_anchor; struct usb_anchor isoc_anchor; struct usb_anchor deferred;*/ - int tx_in_flight; - spinlock_t txlock; - + int tx_in_flight; + spinlock_t txlock; + #if (CONFIG_BLUEDROID == 0) #if HCI_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) - spinlock_t rxlock; - struct sk_buff *evt_skb; - struct sk_buff *acl_skb; - struct sk_buff *sco_skb; + spinlock_t rxlock; + struct sk_buff *evt_skb; + struct sk_buff *acl_skb; + struct sk_buff *sco_skb; #endif #endif - /*struct usb_endpoint_descriptor *intr_ep; + /*struct usb_endpoint_descriptor *intr_ep; struct usb_endpoint_descriptor *bulk_tx_ep; struct usb_endpoint_descriptor *bulk_rx_ep; struct usb_endpoint_descriptor *isoc_tx_ep; struct usb_endpoint_descriptor *isoc_rx_ep;*/ - __u8 cmdreq_type; + __u8 cmdreq_type; - unsigned int sco_num; - int isoc_altsetting; - int suspend_count; - uint16_t sco_handle; + unsigned int sco_num; + int isoc_altsetting; + int suspend_count; + uint16_t sco_handle; #if (CONFIG_BLUEDROID == 0) #if HCI_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) - int (*recv_bulk) (struct btusb_data * data, void *buffer, int count); + int (*recv_bulk)(struct btusb_data *data, void *buffer, int count); #endif #endif @@ -102,81 +101,78 @@ struct btusb_data { #if 0 struct early_suspend early_suspend; #else - struct notifier_block pm_notifier; - struct notifier_block reboot_notifier; + struct notifier_block pm_notifier; + struct notifier_block reboot_notifier; #endif - //firmware_info *fw_info; + //firmware_info *fw_info; #ifdef CONFIG_SCO_OVER_HCI - AIC_sco_card_t *pSCOSnd; + AIC_sco_card_t *pSCOSnd; #endif }; - - #define QUEUE_SIZE 500 /*************************************** ** AicSemi - Integrate from bluetooth.h ** *****************************************/ /* Reserv for core and drivers use */ -#define BT_SKB_RESERVE 8 +#define BT_SKB_RESERVE 8 /* BD Address */ typedef struct { - __u8 b[6]; + __u8 b[6]; } __packed bdaddr_t; /* Skb helpers */ struct bt_skb_cb { - __u8 pkt_type; - __u8 incoming; - __u16 expect; - __u16 tx_seq; - __u8 retries; - __u8 sar; - __u8 force_active; + __u8 pkt_type; + __u8 incoming; + __u16 expect; + __u16 tx_seq; + __u8 retries; + __u8 sar; + __u8 force_active; }; #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) - /*********************************** ** AicSemi - Integrate from hci.h ** ***********************************/ -#define HCI_MAX_ACL_SIZE 1024 -#define HCI_MAX_SCO_SIZE 255 -#define HCI_MAX_EVENT_SIZE 260 -#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4) +#define HCI_MAX_ACL_SIZE 1024 +#define HCI_MAX_SCO_SIZE 255 +#define HCI_MAX_EVENT_SIZE 260 +#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4) /* HCI bus types */ -#define HCI_VIRTUAL 0 -#define HCI_USB 1 -#define HCI_PCCARD 2 -#define HCI_UART 3 -#define HCI_RS232 4 -#define HCI_PCI 5 -#define HCI_SDIO 6 +#define HCI_VIRTUAL 0 +#define HCI_USB 1 +#define HCI_PCCARD 2 +#define HCI_UART 3 +#define HCI_RS232 4 +#define HCI_PCI 5 +#define HCI_SDIO 6 /* HCI controller types */ -#define HCI_BREDR 0x00 -#define HCI_AMP 0x01 +#define HCI_BREDR 0x00 +#define HCI_AMP 0x01 /* HCI device flags */ enum { - HCI_UP, - HCI_INIT, - HCI_RUNNING, + HCI_UP, + HCI_INIT, + HCI_RUNNING, - HCI_PSCAN, - HCI_ISCAN, - HCI_AUTH, - HCI_ENCRYPT, - HCI_INQUIRY, + HCI_PSCAN, + HCI_ISCAN, + HCI_AUTH, + HCI_ENCRYPT, + HCI_INQUIRY, - HCI_RAW, + HCI_RAW, - HCI_RESET, + HCI_RESET, }; /* @@ -184,104 +180,104 @@ enum { * states from the controller. */ enum { - HCI_SETUP, - HCI_AUTO_OFF, - HCI_MGMT, - HCI_PAIRABLE, - HCI_SERVICE_CACHE, - HCI_LINK_KEYS, - HCI_DEBUG_KEYS, - HCI_UNREGISTER, + HCI_SETUP, + HCI_AUTO_OFF, + HCI_MGMT, + HCI_PAIRABLE, + HCI_SERVICE_CACHE, + HCI_LINK_KEYS, + HCI_DEBUG_KEYS, + HCI_UNREGISTER, - HCI_LE_SCAN, - HCI_SSP_ENABLED, - HCI_HS_ENABLED, - HCI_LE_ENABLED, - HCI_CONNECTABLE, - HCI_DISCOVERABLE, - HCI_LINK_SECURITY, - HCI_PENDING_CLASS, + HCI_LE_SCAN, + HCI_SSP_ENABLED, + HCI_HS_ENABLED, + HCI_LE_ENABLED, + HCI_CONNECTABLE, + HCI_DISCOVERABLE, + HCI_LINK_SECURITY, + HCI_PENDING_CLASS, }; /* HCI data types */ -#define HCI_COMMAND_PKT 0x01 -#define HCI_ACLDATA_PKT 0x02 -#define HCI_SCODATA_PKT 0x03 -#define HCI_EVENT_PKT 0x04 -#define HCI_VENDOR_PKT 0xff +#define HCI_COMMAND_PKT 0x01 +#define HCI_ACLDATA_PKT 0x02 +#define HCI_SCODATA_PKT 0x03 +#define HCI_EVENT_PKT 0x04 +#define HCI_VENDOR_PKT 0xff -#define HCI_MAX_NAME_LENGTH 248 -#define HCI_MAX_EIR_LENGTH 240 +#define HCI_MAX_NAME_LENGTH 248 +#define HCI_MAX_EIR_LENGTH 240 -#define HCI_OP_READ_LOCAL_VERSION 0x1001 +#define HCI_OP_READ_LOCAL_VERSION 0x1001 struct hci_rp_read_local_version { - __u8 status; - __u8 hci_ver; - __le16 hci_rev; - __u8 lmp_ver; - __le16 manufacturer; - __le16 lmp_subver; + __u8 status; + __u8 hci_ver; + __le16 hci_rev; + __u8 lmp_ver; + __le16 manufacturer; + __le16 lmp_subver; } __packed; -#define HCI_EV_CMD_COMPLETE 0x0e +#define HCI_EV_CMD_COMPLETE 0x0e struct hci_ev_cmd_complete { - __u8 ncmd; - __le16 opcode; + __u8 ncmd; + __le16 opcode; } __packed; /* ---- HCI Packet structures ---- */ #define HCI_COMMAND_HDR_SIZE 3 -#define HCI_EVENT_HDR_SIZE 2 -#define HCI_ACL_HDR_SIZE 4 -#define HCI_SCO_HDR_SIZE 3 +#define HCI_EVENT_HDR_SIZE 2 +#define HCI_ACL_HDR_SIZE 4 +#define HCI_SCO_HDR_SIZE 3 struct hci_command_hdr { - __le16 opcode; /* OCF & OGF */ - __u8 plen; + __le16 opcode; /* OCF & OGF */ + __u8 plen; } __packed; struct hci_event_hdr { - __u8 evt; - __u8 plen; + __u8 evt; + __u8 plen; } __packed; struct hci_acl_hdr { - __le16 handle; /* Handle & Flags(PB, BC) */ - __le16 dlen; + __le16 handle; /* Handle & Flags(PB, BC) */ + __le16 dlen; } __packed; struct hci_sco_hdr { - __le16 handle; - __u8 dlen; + __le16 handle; + __u8 dlen; } __packed; static inline struct hci_event_hdr *hci_event_hdr(const struct sk_buff *skb) { - return (struct hci_event_hdr *) skb->data; + return (struct hci_event_hdr *)skb->data; } static inline struct hci_acl_hdr *hci_acl_hdr(const struct sk_buff *skb) { - return (struct hci_acl_hdr *) skb->data; + return (struct hci_acl_hdr *)skb->data; } static inline struct hci_sco_hdr *hci_sco_hdr(const struct sk_buff *skb) { - return (struct hci_sco_hdr *) skb->data; + return (struct hci_sco_hdr *)skb->data; } /* ---- HCI Ioctl requests structures ---- */ struct hci_dev_stats { - __u32 err_rx; - __u32 err_tx; - __u32 cmd_tx; - __u32 evt_rx; - __u32 acl_tx; - __u32 acl_rx; - __u32 sco_tx; - __u32 sco_rx; - __u32 byte_rx; - __u32 byte_tx; + __u32 err_rx; + __u32 err_tx; + __u32 cmd_tx; + __u32 evt_rx; + __u32 acl_tx; + __u32 acl_rx; + __u32 sco_tx; + __u32 sco_rx; + __u32 byte_rx; + __u32 byte_tx; }; /* AicSemi - Integrate from hci.h end */ @@ -289,131 +285,130 @@ struct hci_dev_stats { ** AicSemi - Integrate from hci_core.h ** *****************************************/ struct hci_conn_hash { - struct list_head list; - unsigned int acl_num; - unsigned int sco_num; - unsigned int le_num; + struct list_head list; + unsigned int acl_num; + unsigned int sco_num; + unsigned int le_num; }; -#define HCI_MAX_SHORT_NAME_LENGTH 10 +#define HCI_MAX_SHORT_NAME_LENGTH 10 #define NUM_REASSEMBLY 4 struct hci_dev { - struct mutex lock; + struct mutex lock; - char name[8]; - unsigned long flags; - __u16 id; - __u8 bus; - __u8 dev_type; + char name[8]; + unsigned long flags; + __u16 id; + __u8 bus; + __u8 dev_type; - struct sk_buff *reassembly[NUM_REASSEMBLY]; + struct sk_buff *reassembly[NUM_REASSEMBLY]; - struct hci_conn_hash conn_hash; + struct hci_conn_hash conn_hash; - struct hci_dev_stats stat; + struct hci_dev_stats stat; #if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 4, 0) - atomic_t refcnt; - struct module *owner; - void *driver_data; + atomic_t refcnt; + struct module *owner; + void *driver_data; #endif - atomic_t promisc; + atomic_t promisc; - struct device *parent; - struct device dev; + struct device *parent; + struct device dev; - unsigned long dev_flags; + unsigned long dev_flags; - int (*open)(struct hci_dev *hdev); - int (*close)(struct hci_dev *hdev); - int (*flush)(struct hci_dev *hdev); - int (*send)(struct sk_buff *skb); + int (*open)(struct hci_dev *hdev); + int (*close)(struct hci_dev *hdev); + int (*flush)(struct hci_dev *hdev); + int (*send)(struct sk_buff *skb); #if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 4, 0) - void (*destruct)(struct hci_dev *hdev); + void (*destruct)(struct hci_dev *hdev); #endif #if LINUX_VERSION_CODE > KERNEL_VERSION(3, 7, 1) - __u16 voice_setting; + __u16 voice_setting; #endif - void (*notify)(struct hci_dev *hdev, unsigned int evt); - int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg); + void (*notify)(struct hci_dev *hdev, unsigned int evt); + int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg); u8 *align_data; }; #if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 4, 0) static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) { - atomic_inc(&d->refcnt); - return d; + atomic_inc(&d->refcnt); + return d; } static inline void __hci_dev_put(struct hci_dev *d) { - if (atomic_dec_and_test(&d->refcnt)) - d->destruct(d); + if (atomic_dec_and_test(&d->refcnt)) + d->destruct(d); } #endif static inline void *hci_get_drvdata(struct hci_dev *hdev) { - return dev_get_drvdata(&hdev->dev); + return dev_get_drvdata(&hdev->dev); } static inline void hci_set_drvdata(struct hci_dev *hdev, void *data) { - dev_set_drvdata(&hdev->dev, data); + dev_set_drvdata(&hdev->dev, data); } #define SET_HCIDEV_DEV(hdev, pdev) ((hdev)->parent = (pdev)) - /* ---- HCI Packet structures ---- */ #define HCI_COMMAND_HDR_SIZE 3 -#define HCI_EVENT_HDR_SIZE 2 -#define HCI_ACL_HDR_SIZE 4 -#define HCI_SCO_HDR_SIZE 3 +#define HCI_EVENT_HDR_SIZE 2 +#define HCI_ACL_HDR_SIZE 4 +#define HCI_SCO_HDR_SIZE 3 /* ----- HCI Commands ---- */ -#define HCI_OP_INQUIRY 0x0401 -#define HCI_OP_INQUIRY_CANCEL 0x0402 -#define HCI_OP_EXIT_PERIODIC_INQ 0x0404 -#define HCI_OP_CREATE_CONN 0x0405 -#define HCI_OP_DISCONNECT 0x0406 -#define HCI_OP_ADD_SCO 0x0407 -#define HCI_OP_CREATE_CONN_CANCEL 0x0408 -#define HCI_OP_ACCEPT_CONN_REQ 0x0409 -#define HCI_OP_REJECT_CONN_REQ 0x040a -#define HCI_OP_LINK_KEY_REPLY 0x040b -#define HCI_OP_LINK_KEY_NEG_REPLY 0x040c -#define HCI_OP_PIN_CODE_REPLY 0x040d -#define HCI_OP_PIN_CODE_NEG_REPLY 0x040e -#define HCI_OP_CHANGE_CONN_PTYPE 0x040f -#define HCI_OP_AUTH_REQUESTED 0x0411 -#define HCI_OP_SET_CONN_ENCRYPT 0x0413 -#define HCI_OP_CHANGE_CONN_LINK_KEY 0x0415 -#define HCI_OP_REMOTE_NAME_REQ 0x0419 -#define HCI_OP_REMOTE_NAME_REQ_CANCEL 0x041a -#define HCI_OP_READ_REMOTE_FEATURES 0x041b -#define HCI_OP_READ_REMOTE_EXT_FEATURES 0x041c -#define HCI_OP_READ_REMOTE_VERSION 0x041d -#define HCI_OP_SETUP_SYNC_CONN 0x0428 -#define HCI_OP_ACCEPT_SYNC_CONN_REQ 0x0429 -#define HCI_OP_REJECT_SYNC_CONN_REQ 0x042a -#define HCI_OP_SNIFF_MODE 0x0803 -#define HCI_OP_EXIT_SNIFF_MODE 0x0804 -#define HCI_OP_ROLE_DISCOVERY 0x0809 -#define HCI_OP_SWITCH_ROLE 0x080b -#define HCI_OP_READ_LINK_POLICY 0x080c -#define HCI_OP_WRITE_LINK_POLICY 0x080d -#define HCI_OP_READ_DEF_LINK_POLICY 0x080e -#define HCI_OP_WRITE_DEF_LINK_POLICY 0x080f -#define HCI_OP_SNIFF_SUBRATE 0x0811 +#define HCI_OP_INQUIRY 0x0401 +#define HCI_OP_INQUIRY_CANCEL 0x0402 +#define HCI_OP_EXIT_PERIODIC_INQ 0x0404 +#define HCI_OP_CREATE_CONN 0x0405 +#define HCI_OP_DISCONNECT 0x0406 +#define HCI_OP_ADD_SCO 0x0407 +#define HCI_OP_CREATE_CONN_CANCEL 0x0408 +#define HCI_OP_ACCEPT_CONN_REQ 0x0409 +#define HCI_OP_REJECT_CONN_REQ 0x040a +#define HCI_OP_LINK_KEY_REPLY 0x040b +#define HCI_OP_LINK_KEY_NEG_REPLY 0x040c +#define HCI_OP_PIN_CODE_REPLY 0x040d +#define HCI_OP_PIN_CODE_NEG_REPLY 0x040e +#define HCI_OP_CHANGE_CONN_PTYPE 0x040f +#define HCI_OP_AUTH_REQUESTED 0x0411 +#define HCI_OP_SET_CONN_ENCRYPT 0x0413 +#define HCI_OP_CHANGE_CONN_LINK_KEY 0x0415 +#define HCI_OP_REMOTE_NAME_REQ 0x0419 +#define HCI_OP_REMOTE_NAME_REQ_CANCEL 0x041a +#define HCI_OP_READ_REMOTE_FEATURES 0x041b +#define HCI_OP_READ_REMOTE_EXT_FEATURES 0x041c +#define HCI_OP_READ_REMOTE_VERSION 0x041d +#define HCI_OP_SETUP_SYNC_CONN 0x0428 +#define HCI_OP_ACCEPT_SYNC_CONN_REQ 0x0429 +#define HCI_OP_REJECT_SYNC_CONN_REQ 0x042a +#define HCI_OP_SNIFF_MODE 0x0803 +#define HCI_OP_EXIT_SNIFF_MODE 0x0804 +#define HCI_OP_ROLE_DISCOVERY 0x0809 +#define HCI_OP_SWITCH_ROLE 0x080b +#define HCI_OP_READ_LINK_POLICY 0x080c +#define HCI_OP_WRITE_LINK_POLICY 0x080d +#define HCI_OP_READ_DEF_LINK_POLICY 0x080e +#define HCI_OP_WRITE_DEF_LINK_POLICY 0x080f +#define HCI_OP_SNIFF_SUBRATE 0x0811 #define HCI_OP_Write_Link_Policy_Settings 0x080d -#define HCI_OP_SET_EVENT_MASK 0x0c01 -#define HCI_OP_RESET 0x0c03 -#define HCI_OP_SET_EVENT_FLT 0x0c05 -#define HCI_OP_Write_Extended_Inquiry_Response 0x0c52 +#define HCI_OP_SET_EVENT_MASK 0x0c01 +#define HCI_OP_RESET 0x0c03 +#define HCI_OP_SET_EVENT_FLT 0x0c05 +#define HCI_OP_Write_Extended_Inquiry_Response 0x0c52 #define HCI_OP_Write_Simple_Pairing_Mode 0x0c56 #define HCI_OP_Read_Buffer_Size 0x1005 #define HCI_OP_Host_Buffer_Size 0x0c33 @@ -449,42 +444,42 @@ static inline void hci_set_drvdata(struct hci_dev *hdev, void *data) #define HCI_OP_LE_Connection_Update 0x2013 /* ----- HCI events---- */ -#define HCI_OP_DISCONNECT 0x0406 -#define HCI_EV_INQUIRY_COMPLETE 0x01 -#define HCI_EV_INQUIRY_RESULT 0x02 -#define HCI_EV_CONN_COMPLETE 0x03 -#define HCI_EV_CONN_REQUEST 0x04 -#define HCI_EV_DISCONN_COMPLETE 0x05 -#define HCI_EV_AUTH_COMPLETE 0x06 -#define HCI_EV_REMOTE_NAME 0x07 -#define HCI_EV_ENCRYPT_CHANGE 0x08 -#define HCI_EV_CHANGE_LINK_KEY_COMPLETE 0x09 +#define HCI_OP_DISCONNECT 0x0406 +#define HCI_EV_INQUIRY_COMPLETE 0x01 +#define HCI_EV_INQUIRY_RESULT 0x02 +#define HCI_EV_CONN_COMPLETE 0x03 +#define HCI_EV_CONN_REQUEST 0x04 +#define HCI_EV_DISCONN_COMPLETE 0x05 +#define HCI_EV_AUTH_COMPLETE 0x06 +#define HCI_EV_REMOTE_NAME 0x07 +#define HCI_EV_ENCRYPT_CHANGE 0x08 +#define HCI_EV_CHANGE_LINK_KEY_COMPLETE 0x09 -#define HCI_EV_REMOTE_FEATURES 0x0b -#define HCI_EV_REMOTE_VERSION 0x0c -#define HCI_EV_QOS_SETUP_COMPLETE 0x0d -#define HCI_EV_CMD_COMPLETE 0x0e -#define HCI_EV_CMD_STATUS 0x0f +#define HCI_EV_REMOTE_FEATURES 0x0b +#define HCI_EV_REMOTE_VERSION 0x0c +#define HCI_EV_QOS_SETUP_COMPLETE 0x0d +#define HCI_EV_CMD_COMPLETE 0x0e +#define HCI_EV_CMD_STATUS 0x0f -#define HCI_EV_ROLE_CHANGE 0x12 -#define HCI_EV_NUM_COMP_PKTS 0x13 -#define HCI_EV_MODE_CHANGE 0x14 -#define HCI_EV_PIN_CODE_REQ 0x16 -#define HCI_EV_LINK_KEY_REQ 0x17 -#define HCI_EV_LINK_KEY_NOTIFY 0x18 -#define HCI_EV_CLOCK_OFFSET 0x1c -#define HCI_EV_PKT_TYPE_CHANGE 0x1d -#define HCI_EV_PSCAN_REP_MODE 0x20 +#define HCI_EV_ROLE_CHANGE 0x12 +#define HCI_EV_NUM_COMP_PKTS 0x13 +#define HCI_EV_MODE_CHANGE 0x14 +#define HCI_EV_PIN_CODE_REQ 0x16 +#define HCI_EV_LINK_KEY_REQ 0x17 +#define HCI_EV_LINK_KEY_NOTIFY 0x18 +#define HCI_EV_CLOCK_OFFSET 0x1c +#define HCI_EV_PKT_TYPE_CHANGE 0x1d +#define HCI_EV_PSCAN_REP_MODE 0x20 -#define HCI_EV_INQUIRY_RESULT_WITH_RSSI 0x22 -#define HCI_EV_REMOTE_EXT_FEATURES 0x23 -#define HCI_EV_SYNC_CONN_COMPLETE 0x2c -#define HCI_EV_SYNC_CONN_CHANGED 0x2d -#define HCI_EV_SNIFF_SUBRATE 0x2e -#define HCI_EV_EXTENDED_INQUIRY_RESULT 0x2f -#define HCI_EV_IO_CAPA_REQUEST 0x31 -#define HCI_EV_SIMPLE_PAIR_COMPLETE 0x36 -#define HCI_EV_REMOTE_HOST_FEATURES 0x3d +#define HCI_EV_INQUIRY_RESULT_WITH_RSSI 0x22 +#define HCI_EV_REMOTE_EXT_FEATURES 0x23 +#define HCI_EV_SYNC_CONN_COMPLETE 0x2c +#define HCI_EV_SYNC_CONN_CHANGED 0x2d +#define HCI_EV_SNIFF_SUBRATE 0x2e +#define HCI_EV_EXTENDED_INQUIRY_RESULT 0x2f +#define HCI_EV_IO_CAPA_REQUEST 0x31 +#define HCI_EV_SIMPLE_PAIR_COMPLETE 0x36 +#define HCI_EV_REMOTE_HOST_FEATURES 0x3d #define HCI_EV_LE_Meta 0x3e /* ULP Event sub code */ @@ -499,12 +494,12 @@ static inline void hci_set_drvdata(struct hci_dev *hdev, void *data) #define HCI_BLE_DIRECT_ADV_EVT 0x0b #define HCI_BLE_PHY_UPDATE_COMPLETE_EVT 0x0c #define HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT 0x0D -#define HCI_BLE_PERIODIC_ADV_SYNC_EST_EVT 0x0E -#define HCI_BLE_PERIODIC_ADV_REPORT_EVT 0x0F -#define HCI_BLE_PERIODIC_ADV_SYNC_LOST_EVT 0x10 -#define HCI_BLE_SCAN_TIMEOUT_EVT 0x11 +#define HCI_BLE_PERIODIC_ADV_SYNC_EST_EVT 0x0E +#define HCI_BLE_PERIODIC_ADV_REPORT_EVT 0x0F +#define HCI_BLE_PERIODIC_ADV_SYNC_LOST_EVT 0x10 +#define HCI_BLE_SCAN_TIMEOUT_EVT 0x11 #define HCI_LE_ADVERTISING_SET_TERMINATED_EVT 0x12 -#define HCI_BLE_SCAN_REQ_RX_EVT 0x13 +#define HCI_BLE_SCAN_REQ_RX_EVT 0x13 #define HCI_BLE_CIS_EST_EVT 0x19 #define HCI_BLE_CIS_REQ_EVT 0x1a #define HCI_BLE_CREATE_BIG_CPL_EVT 0x1b @@ -515,35 +510,38 @@ static inline void hci_set_drvdata(struct hci_dev *hdev, void *data) #define HCI_VENDOR_SPECIFIC_EVT 0xFF /* Vendor specific events */ -#define CONFIG_MAC_OFFSET_GEN_1_2 (0x3C) //MAC's OFFSET in config/efuse for aic generation 1~2 bluetooth chip -#define CONFIG_MAC_OFFSET_GEN_3PLUS (0x44) //MAC's OFFSET in config/efuse for aic generation 3+ bluetooth chip +#define CONFIG_MAC_OFFSET_GEN_1_2 \ + (0x3C) //MAC's OFFSET in config/efuse for aic generation 1~2 bluetooth chip +#define CONFIG_MAC_OFFSET_GEN_3PLUS \ + (0x44) //MAC's OFFSET in config/efuse for aic generation 3+ bluetooth chip //Define ioctl cmd the same as HCIDEVUP in the kernel -#define DOWN_FW_CFG _IOW('E', 176, int) +#define DOWN_FW_CFG _IOW('E', 176, int) //#ifdef CONFIG_SCO_OVER_HCI //#define SET_ISO_CFG _IOW('H', 202, int) //#else -#define SET_ISO_CFG _IOW('E', 177, int) +#define SET_ISO_CFG _IOW('E', 177, int) //#endif -#define RESET_CONTROLLER _IOW('E', 178, int) -#define DWFW_CMPLT _IOW('E', 179, int) +#define RESET_CONTROLLER _IOW('E', 178, int) +#define DWFW_CMPLT _IOW('E', 179, int) -#define GET_USB_INFO _IOR('E', 180, int) +#define GET_USB_INFO _IOR('E', 180, int) -void bt_data_dump(char* tag, void* data, unsigned long len); +void bt_data_dump(char *tag, void *data, unsigned long len); int aic_enqueue(struct sk_buff *skb); int aic_queue_cnt(void); -int bt_sdio_recv(u8 *data,u32 data_len); - +int bt_sdio_recv(u8 *data, u32 data_len); int btchr_init(void); void btchr_exit(void); int hdev_init(void); void hdev_exit(void); - struct hci_dev *hci_dev_get(int index); int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count); - -#endif//_AICWF_SDIO_BT_H_ - +#else +int btsdio_init(void); +void btsdio_remove(void); +int bt_sdio_recv(u8 *data, u32 data_len); +#endif +#endif //_AICWF_SDIO_BT_H_ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.c index 386a2d5c0..07eb25b91 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.c @@ -18,10 +18,13 @@ #include "rwnx_main.h" #include "aicwf_sdio.h" #include "aic_priv_cmd.h" +#include "rwnx_mod_params.h" extern int testmode; static void print_help(const char *cmd); -struct dbg_rftest_cmd_cfm cfm = {{0,}}; +struct dbg_rftest_cmd_cfm cfm = { { + 0, +} }; #ifdef CONFIG_RFTEST enum { @@ -68,7 +71,8 @@ enum { RDWR_EFUSE_HE_OFF, SET_USB_OFF, SET_PLL_TEST, - + SET_ANT_MODE, + RDWR_BT_EFUSE_PWROFST, }; typedef struct { @@ -110,8 +114,7 @@ typedef struct { } cob_result_ptr_t; #endif -typedef struct -{ +typedef struct { u8_l func; u8_l cnt; u8_l reserved[2]; @@ -119,11 +122,13 @@ typedef struct } cmd_ef_usrdata_t; #define CMD_MAXARGS 10 -#define POWER_LEVEL_INVALID_VAL (127) +#define POWER_LEVEL_INVALID_VAL (127) -#if 0//#include -#define isblank(c) ((c) == ' ' || (c) == '\t') -#define isascii(c) (((unsigned char)(c)) <= 0x7F) +extern char country_code[]; + +#if 0 //#include +#define isblank(c) ((c) == ' ' || (c) == '\t') +#define isascii(c) (((unsigned char)(c)) <= 0x7F) static int isdigit(unsigned char c) { @@ -154,7 +159,7 @@ static unsigned char toupper(unsigned char c) } #endif -static int parse_line (char *line, char *argv[]) +static int parse_line(char *line, char *argv[]) { int nargs = 0; @@ -164,7 +169,7 @@ static int parse_line (char *line, char *argv[]) ++line; } - if (*line == '\0') { /* end of line, no more args */ + if (*line == '\0') { /* end of line, no more args */ argv[nargs] = 0; return nargs; } @@ -182,7 +187,7 @@ static int parse_line (char *line, char *argv[]) ++line; } } else { - argv[nargs++] = line; /* begin of argument string */ + argv[nargs++] = line; /* begin of argument string */ /* find end of string */ while (*line && (*line != ' ') && (*line != '\t')) { @@ -190,12 +195,12 @@ static int parse_line (char *line, char *argv[]) } } - if (*line == '\0') { /* end of line, no more args */ + if (*line == '\0') { /* end of line, no more args */ argv[nargs] = 0; return nargs; } - *line++ = '\0'; /* terminate current arg */ + *line++ = '\0'; /* terminate current arg */ } printk("** Too many args (max. %d) **\n", CMD_MAXARGS); @@ -224,7 +229,10 @@ unsigned int command_strtoul(const char *cp, char **endp, unsigned int base) is_neg = 1; cp++; } - while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp - '0' : (islower(*cp) ? toupper(*cp) : *cp) - 'A' + 10) < base) { + while (isxdigit(*cp) && + (value = isdigit(*cp) ? *cp - '0' : + (islower(*cp) ? toupper(*cp) : *cp) - + 'A' + 10) < base) { result = result * base + value; cp++; } @@ -239,9 +247,26 @@ unsigned int command_strtoul(const char *cp, char **endp, unsigned int base) /* * aic_priv_cmd handers. */ -static int aic_priv_cmd_set_tx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_tx(struct rwnx_hw *rwnx_hw, int argc, char *argv[], + char *command) { cmd_rf_settx_t settx_param; + u8_l set_p = 0; + u8_l lvl_band, lvl_mod, lvl_idx, lvl_pwr = 0; + u8_l buf[10]; +#ifdef CONFIG_POWER_LIMIT + int8_t max_pwr; + uint8_t r_idx; + txpwr_loss_conf_t txpwr_loss_tmp; + txpwr_loss_conf_t *txpwr_loss; + txpwr_loss = &txpwr_loss_tmp; +#endif +#ifdef AICWF_SDIO_SUPPORT + struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; +#endif +#ifdef AICWF_USB_SUPPORT + struct aic_usb_dev *dev = g_rwnx_plat->usbdev; +#endif if (argc < 6) return -EINVAL; @@ -256,20 +281,88 @@ static int aic_priv_cmd_set_tx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], } else { settx_param.tx_intv_us = 10000; // set default val 10ms } + if (argc > 7) { + if (dev->chipid == PRODUCT_ID_AIC8801) { + AICWFDBG(LOGERROR, "unsupported cmd\n"); + return -EINVAL; + } + lvl_pwr = command_strtoul(argv[7], NULL, 10); + AICWFDBG(LOGINFO, "lvl_pwr: %d\n", lvl_pwr); + + if (settx_param.chan >= 36) + lvl_band = 2; + else + lvl_band = 1; + if (settx_param.mode == 0) + lvl_mod = 0; + else if (settx_param.mode == 2 || settx_param.mode == 4) + lvl_mod = 1; + else if (settx_param.mode == 5) + lvl_mod = 2; + if (settx_param.mode >= 4) + lvl_idx = settx_param.rate & 0xF; + else if (settx_param.mode >= 2) + lvl_idx = settx_param.rate & 0x7; + else + lvl_idx = settx_param.rate; + + buf[0] = lvl_band; + buf[1] = lvl_mod; + buf[2] = lvl_idx; + buf[3] = lvl_pwr; + + set_p = 1; + } settx_param.max_pwr = POWER_LEVEL_INVALID_VAL; - AICWFDBG(LOGINFO, "txparam:%d,%d,%d,%d,%d,%d\n", settx_param.chan, settx_param.bw, - settx_param.mode, settx_param.rate, settx_param.length, settx_param.tx_intv_us); - rwnx_send_rftest_req(rwnx_hw, SET_TX, sizeof(cmd_rf_settx_t), (u8_l *)&settx_param, NULL); + AICWFDBG(LOGINFO, "txparam:%d,%d,%d,%d,%d,%d\n", settx_param.chan, + settx_param.bw, settx_param.mode, settx_param.rate, + settx_param.length, settx_param.tx_intv_us); + +#ifdef CONFIG_POWER_LIMIT + r_idx = get_ccode_region(country_code); + txpwr_loss = &txpwr_loss_tmp; + get_userconfig_txpwr_loss(txpwr_loss); + if (txpwr_loss->loss_enable_2g4 == 1) + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + if (txpwr_loss->loss_enable_5g == 1) + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + max_pwr = get_powerlimit_by_chnum(settx_param.chan, r_idx, + settx_param.bw); + if (settx_param.chan >= 36) { + if (txpwr_loss->loss_enable_5g == 1) + max_pwr -= txpwr_loss->loss_value_5g; + } else { + if (txpwr_loss->loss_enable_2g4 == 1) + max_pwr -= txpwr_loss->loss_value_2g4; + } + + if (!set_p || (lvl_pwr == 255)) { + settx_param.max_pwr = max_pwr; + AICWFDBG(LOGINFO, "max_pwr:%d\n", settx_param.max_pwr); + } else + AICWFDBG(LOGINFO, + "the specified power is input without power limit\n"); +#endif + + if (set_p && (lvl_pwr != 255)) + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRLVL, 4, buf, &cfm); + + rwnx_send_rftest_req(rwnx_hw, SET_TX, sizeof(cmd_rf_settx_t), + (u8_l *)&settx_param, NULL); return 0; } -static int aic_priv_cmd_set_txstop (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_txstop(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { rwnx_send_rftest_req(rwnx_hw, SET_TXSTOP, 0, NULL, NULL); return 0; } -static int aic_priv_cmd_set_rx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_rx(struct rwnx_hw *rwnx_hw, int argc, char *argv[], + char *command) { cmd_rf_rx_t setrx_param; @@ -278,24 +371,28 @@ static int aic_priv_cmd_set_rx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], } setrx_param.chan = command_strtoul(argv[1], NULL, 10); setrx_param.bw = command_strtoul(argv[2], NULL, 10); - rwnx_send_rftest_req(rwnx_hw, SET_RX, sizeof(cmd_rf_rx_t), (u8_l *)&setrx_param, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_RX, sizeof(cmd_rf_rx_t), + (u8_l *)&setrx_param, NULL); return 0; } -static int aic_priv_cmd_get_rx_result (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_rx_result(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { rwnx_send_rftest_req(rwnx_hw, GET_RX_RESULT, 0, NULL, &cfm); memcpy(command, &cfm.rftest_result[0], 8); return 8; } -static int aic_priv_cmd_set_rxstop (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_rxstop(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { rwnx_send_rftest_req(rwnx_hw, SET_RXSTOP, 0, NULL, NULL); return 0; } -static int aic_priv_cmd_set_tx_tone (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_tx_tone(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; u8_l buf[2]; @@ -303,10 +400,10 @@ static int aic_priv_cmd_set_tx_tone (struct rwnx_hw *rwnx_hw, int argc, char *ar AICWFDBG(LOGINFO, "%s argc:%d\n", argv[0], argc); if ((argc == 2) || (argc == 3)) { - AICWFDBG(LOGINFO, "argv 1:%s\n",argv[1]); + AICWFDBG(LOGINFO, "argv 1:%s\n", argv[1]); func = (u8_l)command_strtoul(argv[1], NULL, 16); if (argc == 3) { - AICWFDBG(LOGINFO, "argv 2:%s\n",argv[2]); + AICWFDBG(LOGINFO, "argv 2:%s\n", argv[2]); freq_ = (u8_l)command_strtoul(argv[2], NULL, 10); } else { freq_ = 0; @@ -320,16 +417,19 @@ static int aic_priv_cmd_set_tx_tone (struct rwnx_hw *rwnx_hw, int argc, char *ar return 0; } -static int aic_priv_cmd_set_rx_meter (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_rx_meter(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { s8_l freq = 0; freq = (int)command_strtoul(argv[1], NULL, 10); - rwnx_send_rftest_req(rwnx_hw, SET_RX_METER, sizeof(freq), (u8_l *)&freq, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_RX_METER, sizeof(freq), (u8_l *)&freq, + NULL); return 0; } -static int aic_priv_cmd_set_set_power (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_set_power(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l ana_pwr; u8_l dig_pwr; @@ -354,11 +454,13 @@ static int aic_priv_cmd_set_set_power (struct rwnx_hw *rwnx_hw, int argc, char * return -EINVAL; } AICWFDBG(LOGINFO, "pwr =%x\r\n", pwr); - rwnx_send_rftest_req(rwnx_hw, SET_POWER, sizeof(pwr), (u8_l *)&pwr, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_POWER, sizeof(pwr), (u8_l *)&pwr, + NULL); return 0; } -static int aic_priv_cmd_set_xtal_cap (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_xtal_cap(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l xtal_cap; @@ -367,12 +469,14 @@ static int aic_priv_cmd_set_xtal_cap (struct rwnx_hw *rwnx_hw, int argc, char *a xtal_cap = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "xtal_cap =%x\r\n", xtal_cap); - rwnx_send_rftest_req(rwnx_hw, SET_XTAL_CAP, sizeof(xtal_cap), (u8_l *)&xtal_cap, &cfm); + rwnx_send_rftest_req(rwnx_hw, SET_XTAL_CAP, sizeof(xtal_cap), + (u8_l *)&xtal_cap, &cfm); memcpy(command, &cfm.rftest_result[0], 4); return 4; } -static int aic_priv_cmd_set_xtal_cap_fine (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_xtal_cap_fine(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l xtal_cap_fine; @@ -380,13 +484,15 @@ static int aic_priv_cmd_set_xtal_cap_fine (struct rwnx_hw *rwnx_hw, int argc, ch return -EINVAL; xtal_cap_fine = command_strtoul(argv[1], NULL, 10); - AICWFDBG(LOGINFO, "xtal_cap =%x\r\n", xtal_cap_fine); - rwnx_send_rftest_req(rwnx_hw, SET_XTAL_CAP, sizeof(xtal_cap_fine), (u8_l *)&xtal_cap_fine, &cfm); + AICWFDBG(LOGINFO, "xtal_cap_fine =%x\r\n", xtal_cap_fine); + rwnx_send_rftest_req(rwnx_hw, SET_XTAL_CAP_FINE, sizeof(xtal_cap_fine), + (u8_l *)&xtal_cap_fine, &cfm); memcpy(command, &cfm.rftest_result[0], 4); return 4; } -static int aic_priv_cmd_get_efuse_block (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_efuse_block(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { cmd_rf_getefuse_t getefuse_param; @@ -394,13 +500,16 @@ static int aic_priv_cmd_get_efuse_block (struct rwnx_hw *rwnx_hw, int argc, char return -EINVAL; getefuse_param.block = command_strtoul(argv[1], NULL, 10); - rwnx_send_rftest_req(rwnx_hw, GET_EFUSE_BLOCK, sizeof(cmd_rf_getefuse_t), (u8_l *)&getefuse_param, &cfm); + rwnx_send_rftest_req(rwnx_hw, GET_EFUSE_BLOCK, + sizeof(cmd_rf_getefuse_t), (u8_l *)&getefuse_param, + &cfm); AICWFDBG(LOGINFO, "get val=%x\r\n", cfm.rftest_result[0]); memcpy(command, &cfm.rftest_result[0], 4); return 4; } -static int aic_priv_cmd_set_freq_cal (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_freq_cal(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { cmd_rf_setfreq_t cmd_setfreq; @@ -409,12 +518,14 @@ static int aic_priv_cmd_set_freq_cal (struct rwnx_hw *rwnx_hw, int argc, char *a cmd_setfreq.val = command_strtoul(argv[1], NULL, 16); AICWFDBG(LOGINFO, "param:%x\r\n", cmd_setfreq.val); - rwnx_send_rftest_req(rwnx_hw, SET_FREQ_CAL, sizeof(cmd_rf_setfreq_t), (u8_l *)&cmd_setfreq, &cfm); + rwnx_send_rftest_req(rwnx_hw, SET_FREQ_CAL, sizeof(cmd_rf_setfreq_t), + (u8_l *)&cmd_setfreq, &cfm); memcpy(command, &cfm.rftest_result[0], 4); return 4; } -static int aic_priv_cmd_set_freq_cal_fine (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_freq_cal_fine(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { cmd_rf_setfreq_t cmd_setfreq; @@ -423,14 +534,17 @@ static int aic_priv_cmd_set_freq_cal_fine (struct rwnx_hw *rwnx_hw, int argc, ch cmd_setfreq.val = command_strtoul(argv[1], NULL, 16); AICWFDBG(LOGINFO, "param:%x\r\n", cmd_setfreq.val); - rwnx_send_rftest_req(rwnx_hw, SET_FREQ_CAL_FINE, sizeof(cmd_rf_setfreq_t), (u8_l *)&cmd_setfreq, &cfm); + rwnx_send_rftest_req(rwnx_hw, SET_FREQ_CAL_FINE, + sizeof(cmd_rf_setfreq_t), (u8_l *)&cmd_setfreq, + &cfm); memcpy(command, &cfm.rftest_result[0], 4); return 4; } -static int aic_priv_cmd_get_freq_cal (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_freq_cal(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { - u8_l val; + u32_l val; #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; #endif @@ -441,16 +555,20 @@ static int aic_priv_cmd_get_freq_cal (struct rwnx_hw *rwnx_hw, int argc, char *a rwnx_send_rftest_req(rwnx_hw, GET_FREQ_CAL, 0, NULL, &cfm); memcpy(command, &cfm.rftest_result[0], 4); val = cfm.rftest_result[0]; - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { - AICWFDBG(LOGINFO, "cap=0x%x (remain:%x), cap_fine=%x (remain:%x)\n", - val & 0xff, (val >> 8) & 0xff, (val >> 16) & 0xff, (val >> 24) & 0xff); + if (dev->chipid != PRODUCT_ID_AIC8801) { + AICWFDBG(LOGINFO, + "cap=0x%x (remain:%x), cap_fine=%x (remain:%x)\n", + val & 0xff, (val >> 8) & 0xff, (val >> 16) & 0xff, + (val >> 24) & 0xff); } else { - AICWFDBG(LOGINFO, "cap=0x%x, cap_fine=0x%x\n", val & 0xff, (val >> 8) & 0xff); + AICWFDBG(LOGINFO, "cap=0x%x, cap_fine=0x%x\n", val & 0xff, + (val >> 8) & 0xff); } return 4; } -static int aic_priv_cmd_set_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_mac_addr(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l mac_addr[6]; @@ -463,15 +581,18 @@ static int aic_priv_cmd_set_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *a mac_addr[2] = command_strtoul(argv[4], NULL, 16); mac_addr[1] = command_strtoul(argv[5], NULL, 16); mac_addr[0] = command_strtoul(argv[6], NULL, 16); - AICWFDBG(LOGINFO, "set macaddr:%x,%x,%x,%x,%x,%x\n", mac_addr[5], mac_addr[4], mac_addr[3], mac_addr[2], mac_addr[1], mac_addr[0]); - rwnx_send_rftest_req(rwnx_hw, SET_MAC_ADDR, sizeof(mac_addr), (u8_l *)&mac_addr, NULL); + AICWFDBG(LOGINFO, "set macaddr:%x,%x,%x,%x,%x,%x\n", mac_addr[5], + mac_addr[4], mac_addr[3], mac_addr[2], mac_addr[1], + mac_addr[0]); + rwnx_send_rftest_req(rwnx_hw, SET_MAC_ADDR, sizeof(mac_addr), + (u8_l *)&mac_addr, NULL); return 0; } -static int aic_priv_cmd_get_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_mac_addr(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u32_l addr0, addr1; - int rem_cnt = 0; #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; #endif @@ -482,10 +603,12 @@ static int aic_priv_cmd_get_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *a rwnx_send_rftest_req(rwnx_hw, GET_MAC_ADDR, 0, NULL, &cfm); memcpy(command, &cfm.rftest_result[0], 8); addr0 = cfm.rftest_result[0]; - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { - rem_cnt = (cfm.rftest_result[1] >> 16) & 0x00FF; + if ((dev->chipid == PRODUCT_ID_AIC8800DC) || + (dev->chipid == PRODUCT_ID_AIC8800DW)) { + int rem_cnt = (cfm.rftest_result[1] >> 16) & 0x00FF; addr1 = cfm.rftest_result[1] & 0x0000FFFF; - AICWFDBG(LOGINFO, "0x%x,0x%x (remain:%x)\n", addr0, addr1, rem_cnt); + AICWFDBG(LOGINFO, "0x%x,0x%x (remain:%x)\n", addr0, addr1, + rem_cnt); } else { addr1 = cfm.rftest_result[1]; AICWFDBG(LOGINFO, "0x%x,0x%x\n", addr0, addr1); @@ -493,7 +616,8 @@ static int aic_priv_cmd_get_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *a return 8; } -static int aic_priv_cmd_set_bt_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_bt_mac_addr(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l mac_addr[6]; @@ -506,15 +630,18 @@ static int aic_priv_cmd_set_bt_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char mac_addr[2] = command_strtoul(argv[4], NULL, 16); mac_addr[1] = command_strtoul(argv[5], NULL, 16); mac_addr[0] = command_strtoul(argv[6], NULL, 16); - AICWFDBG(LOGINFO, "set bt macaddr:%x,%x,%x,%x,%x,%x\n", mac_addr[5], mac_addr[4], mac_addr[3], mac_addr[2], mac_addr[1], mac_addr[0]); - rwnx_send_rftest_req(rwnx_hw, SET_BT_MAC_ADDR, sizeof(mac_addr), (u8_l *)&mac_addr, NULL); + AICWFDBG(LOGINFO, "set bt macaddr:%x,%x,%x,%x,%x,%x\n", mac_addr[5], + mac_addr[4], mac_addr[3], mac_addr[2], mac_addr[1], + mac_addr[0]); + rwnx_send_rftest_req(rwnx_hw, SET_BT_MAC_ADDR, sizeof(mac_addr), + (u8_l *)&mac_addr, NULL); return 0; } -static int aic_priv_cmd_get_bt_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_bt_mac_addr(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u32_l addr0, addr1; - int rem_cnt = 0; #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; #endif @@ -525,10 +652,12 @@ static int aic_priv_cmd_get_bt_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char rwnx_send_rftest_req(rwnx_hw, GET_BT_MAC_ADDR, 0, NULL, &cfm); memcpy(command, &cfm.rftest_result[0], 8); addr0 = cfm.rftest_result[0]; - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { - rem_cnt = (cfm.rftest_result[1] >> 16) & 0x00FF; + if ((dev->chipid == PRODUCT_ID_AIC8800DC) || + (dev->chipid == PRODUCT_ID_AIC8800DW)) { + int rem_cnt = (cfm.rftest_result[1] >> 16) & 0x00FF; addr1 = cfm.rftest_result[1] & 0x0000FFFF; - AICWFDBG(LOGINFO, "0x%x,0x%x (remain:%x)\n", addr0, addr1, rem_cnt); + AICWFDBG(LOGINFO, "0x%x,0x%x (remain:%x)\n", addr0, addr1, + rem_cnt); } else { addr1 = cfm.rftest_result[1]; AICWFDBG(LOGINFO, "0x%x,0x%x\n", addr0, addr1); @@ -536,7 +665,8 @@ static int aic_priv_cmd_get_bt_mac_addr (struct rwnx_hw *rwnx_hw, int argc, char return 8; } -static int aic_priv_cmd_set_vendor_info (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_vendor_info(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l vendor_info; #ifdef AICWF_SDIO_SUPPORT @@ -549,7 +679,8 @@ static int aic_priv_cmd_set_vendor_info (struct rwnx_hw *rwnx_hw, int argc, char vendor_info = command_strtoul(argv[1], NULL, 16); AICWFDBG(LOGINFO, "set vendor info:%x\n", vendor_info); rwnx_send_rftest_req(rwnx_hw, SET_VENDOR_INFO, 1, &vendor_info, &cfm); - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { + if ((dev->chipid == PRODUCT_ID_AIC8800DC) || + (dev->chipid == PRODUCT_ID_AIC8800DW)) { memcpy(command, &cfm.rftest_result[0], 2); return 2; } else { @@ -559,7 +690,8 @@ static int aic_priv_cmd_set_vendor_info (struct rwnx_hw *rwnx_hw, int argc, char AICWFDBG(LOGINFO, "0x%x\n", cfm.rftest_result[0]); } -static int aic_priv_cmd_get_vendor_info (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_vendor_info(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; @@ -569,7 +701,8 @@ static int aic_priv_cmd_get_vendor_info (struct rwnx_hw *rwnx_hw, int argc, char #endif rwnx_send_rftest_req(rwnx_hw, GET_VENDOR_INFO, 0, NULL, &cfm); - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { + if ((dev->chipid == PRODUCT_ID_AIC8800DC) || + (dev->chipid == PRODUCT_ID_AIC8800DW)) { memcpy(command, &cfm.rftest_result[0], 2); return 2; } else { @@ -579,7 +712,8 @@ static int aic_priv_cmd_get_vendor_info (struct rwnx_hw *rwnx_hw, int argc, char AICWFDBG(LOGINFO, "0x%x\n", cfm.rftest_result[0]); } -static int aic_priv_cmd_rdwr_pwrmm (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_pwrmm(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { if (argc <= 1) { // read cur rwnx_send_rftest_req(rwnx_hw, RDWR_PWRMM, 0, NULL, &cfm); @@ -587,13 +721,15 @@ static int aic_priv_cmd_rdwr_pwrmm (struct rwnx_hw *rwnx_hw, int argc, char *arg u8_l pwrmm = (u8_l)command_strtoul(argv[1], NULL, 16); pwrmm = (pwrmm) ? 1 : 0; AICWFDBG(LOGINFO, "set pwrmm = %x\r\n", pwrmm); - rwnx_send_rftest_req(rwnx_hw, RDWR_PWRMM, sizeof(pwrmm), (u8_l *)&pwrmm, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRMM, sizeof(pwrmm), + (u8_l *)&pwrmm, &cfm); } memcpy(command, &cfm.rftest_result[0], 4); return 4; } -static int aic_priv_cmd_rdwr_pwridx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_pwridx(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; #ifdef AICWF_SDIO_SUPPORT @@ -603,22 +739,24 @@ static int aic_priv_cmd_rdwr_pwridx (struct rwnx_hw *rwnx_hw, int argc, char *ar struct aic_usb_dev *dev = g_rwnx_plat->usbdev; #endif - if (dev->chipid != PRODUCT_ID_AIC8801){ + if (dev->chipid != PRODUCT_ID_AIC8801) { AICWFDBG(LOGERROR, "unsupported cmd\n"); return -EINVAL; } if (argc > 1) { func = (u8_l)command_strtoul(argv[1], NULL, 16); - } + } if (func == 0) { // read cur rwnx_send_rftest_req(rwnx_hw, RDWR_PWRIDX, 0, NULL, &cfm); } else if (func <= 2) { // write 2.4g/5g pwr idx if (argc > 3) { u8_l type = (u8_l)command_strtoul(argv[2], NULL, 16); u8_l pwridx = (u8_l)command_strtoul(argv[3], NULL, 10); - u8_l buf[3] = {func, type, pwridx}; - AICWFDBG(LOGINFO, "set pwridx:[%x][%x]=%x\r\n", func, type, pwridx); - rwnx_send_rftest_req(rwnx_hw, RDWR_PWRIDX, sizeof(buf), buf, &cfm); + u8_l buf[3] = { func, type, pwridx }; + AICWFDBG(LOGINFO, "set pwridx:[%x][%x]=%x\r\n", func, + type, pwridx); + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRIDX, sizeof(buf), + buf, &cfm); } else { return -EINVAL; } @@ -629,7 +767,8 @@ static int aic_priv_cmd_rdwr_pwridx (struct rwnx_hw *rwnx_hw, int argc, char *ar return 9; } -static int aic_priv_cmd_rdwr_pwrlvl (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_pwrlvl(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; #ifdef AICWF_SDIO_SUPPORT @@ -639,7 +778,7 @@ static int aic_priv_cmd_rdwr_pwrlvl (struct rwnx_hw *rwnx_hw, int argc, char *ar struct aic_usb_dev *dev = g_rwnx_plat->usbdev; #endif - if (dev->chipid == PRODUCT_ID_AIC8801){ + if (dev->chipid == PRODUCT_ID_AIC8801) { AICWFDBG(LOGERROR, "unsupported cmd\n"); return -EINVAL; } @@ -652,17 +791,23 @@ static int aic_priv_cmd_rdwr_pwrlvl (struct rwnx_hw *rwnx_hw, int argc, char *ar if (argc > 4) { u8_l grp = (u8_l)command_strtoul(argv[2], NULL, 16); u8_l idx, size; - u8_l buf[14] = {func, grp,}; + u8_l buf[14] = { + func, + grp, + }; if (argc > 12) { // set all grp - AICWFDBG(LOGINFO, "set pwrlvl %s:\n" - " [%x] =", (func == 1) ? "2.4g" : "5g", grp); + AICWFDBG(LOGINFO, + "set pwrlvl %s:\n" + " [%x] =", + (func == 1) ? "2.4g" : "5g", grp); if (grp == 1) { // TXPWR_LVL_GRP_11N_11AC size = 10; } else { size = 12; } for (idx = 0; idx < size; idx++) { - s8_l pwrlvl = (s8_l)command_strtoul(argv[3 + idx], NULL, 10); + s8_l pwrlvl = (s8_l)command_strtoul( + argv[3 + idx], NULL, 10); buf[2 + idx] = (u8_l)pwrlvl; if (idx && !(idx & 0x3)) { AICWFDBG(LOGINFO, " "); @@ -672,24 +817,31 @@ static int aic_priv_cmd_rdwr_pwrlvl (struct rwnx_hw *rwnx_hw, int argc, char *ar AICWFDBG(LOGINFO, "\n"); size += 2; } else { // set grp[idx] - u8_l idx = (u8_l)command_strtoul(argv[3], NULL, 10); - s8_l pwrlvl = (s8_l)command_strtoul(argv[4], NULL, 10); + u8_l idx = (u8_l)command_strtoul(argv[3], NULL, + 10); + s8_l pwrlvl = (s8_l)command_strtoul(argv[4], + NULL, 10); buf[2] = idx; buf[3] = (u8_l)pwrlvl; size = 4; - AICWFDBG(LOGINFO, "set pwrlvl %s:\n" - " [%x][%d] = %d\n", (func == 1) ? "2.4g" : "5g", grp, idx, pwrlvl); + AICWFDBG(LOGINFO, + "set pwrlvl %s:\n" + " [%x][%d] = %d\n", + (func == 1) ? "2.4g" : "5g", grp, idx, + pwrlvl); } - rwnx_send_rftest_req(rwnx_hw, RDWR_PWRLVL, size, buf, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRLVL, size, buf, + &cfm); } else { - AICWFDBG(LOGERROR, "wrong args\n"); - return -EINVAL; + AICWFDBG(LOGERROR, "wrong args\n"); + return -EINVAL; } } else { AICWFDBG(LOGERROR, "wrong func: %x\n", func); return -EINVAL; } - if(dev->chipid == PRODUCT_ID_AIC8800D80){ + if (dev->chipid == PRODUCT_ID_AIC8800D80 || + dev->chipid == PRODUCT_ID_AIC8800D80X2) { memcpy(command, &cfm.rftest_result[0], 6 * 12); return (6 * 12); } else { @@ -698,7 +850,8 @@ static int aic_priv_cmd_rdwr_pwrlvl (struct rwnx_hw *rwnx_hw, int argc, char *ar } } -static int aic_priv_cmd_rdwr_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_pwrofst(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; int res_len = 0; @@ -714,20 +867,28 @@ static int aic_priv_cmd_rdwr_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *a } if (func == 0) { // read cur rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, 0, NULL, &cfm); - } else if (func <= 2) { // write 2.4g/5g pwr ofst - if ((argc > 4) && (dev->chipid == PRODUCT_ID_AIC8800D80)) { + } else if (func <= 4) { // write 2.4g/5g pwr ofst and ant0/1 + if ((argc > 4) && (dev->chipid == PRODUCT_ID_AIC8800D80 || + dev->chipid == PRODUCT_ID_AIC8800D80X2)) { u8_l type = (u8_l)command_strtoul(argv[2], NULL, 16); u8_l chgrp = (u8_l)command_strtoul(argv[3], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[4], NULL, 10); - u8_l buf[4] = {func, type, chgrp, (u8_l)pwrofst}; - AICWFDBG(LOGINFO, "set pwrofst_%s:[%x][%x]=%d\r\n", (func == 1) ? "2.4g" : "5g", type, chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, sizeof(buf), buf, &cfm); - } else if ((argc > 3) && (dev->chipid != PRODUCT_ID_AIC8800D80)) { + u8_l buf[4] = { func, type, chgrp, (u8_l)pwrofst }; + AICWFDBG(LOGINFO, "set pwrofst_%s:[%x][%x]=%d\r\n", + (func == 1) ? "2.4g" : "5g", type, chgrp, + pwrofst); + rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, sizeof(buf), + buf, &cfm); + } else if ((argc > 3) && + (dev->chipid != PRODUCT_ID_AIC8800D80) && + (dev->chipid != PRODUCT_ID_AIC8800D80X2)) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); - u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; - AICWFDBG(LOGINFO, "set pwrofst_%s:[%x]=%d\r\n", (func == 1) ? "2.4g" : "5g", chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, sizeof(buf), buf, &cfm); + u8_l buf[3] = { func, chgrp, (u8_l)pwrofst }; + AICWFDBG(LOGINFO, "set pwrofst_%s:[%x]=%d\r\n", + (func == 1) ? "2.4g" : "5g", chgrp, pwrofst); + rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, sizeof(buf), + buf, &cfm); } else { return -EINVAL; } @@ -735,10 +896,14 @@ static int aic_priv_cmd_rdwr_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *a AICWFDBG(LOGERROR, "wrong func: %x\n", func); return -EINVAL; } - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { // 3 = 3 (2.4g) + if ((dev->chipid == PRODUCT_ID_AIC8800DC) || + (dev->chipid == PRODUCT_ID_AIC8800DW)) { // 3 = 3 (2.4g) res_len = 3; - } else if (dev->chipid == PRODUCT_ID_AIC8800D80) { // 3 * 2 (2.4g) + 3 * 6 (5g) + } else if (dev->chipid == + PRODUCT_ID_AIC8800D80) { // 3 * 2 (2.4g) + 3 * 6 (5g) res_len = 3 * 3 + 3 * 6; + } else if (dev->chipid == PRODUCT_ID_AIC8800D80X2) { // ant0/1 + res_len = (3 * 3 + 3 * 6) * 2; } else { res_len = 3 + 4; } @@ -746,7 +911,8 @@ static int aic_priv_cmd_rdwr_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *a return res_len; } -static int aic_priv_cmd_rdwr_pwrofstfine (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_pwrofstfine(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; @@ -759,24 +925,25 @@ static int aic_priv_cmd_rdwr_pwrofstfine (struct rwnx_hw *rwnx_hw, int argc, cha if (argc > 3) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); - u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; - AICWFDBG(LOGINFO, "set pwrofstfine:[%x][%x]=%d\r\n", func, chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFSTFINE, sizeof(buf), buf, &cfm); + u8_l buf[3] = { func, chgrp, (u8_l)pwrofst }; + AICWFDBG(LOGINFO, "set pwrofstfine:[%x][%x]=%d\r\n", + func, chgrp, pwrofst); + rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFSTFINE, + sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; - } } else { AICWFDBG(LOGERROR, "wrong func: %x\n", func); return -EINVAL; - } memcpy(command, &cfm.rftest_result[0], 7); return 7; } -static int aic_priv_cmd_rdwr_drvibit (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_drvibit(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; @@ -788,9 +955,11 @@ static int aic_priv_cmd_rdwr_drvibit (struct rwnx_hw *rwnx_hw, int argc, char *a } else if (func == 1) { // write 2.4g pa drv_ibit if (argc > 2) { u8_l ibit = (u8_l)command_strtoul(argv[2], NULL, 16); - u8_l buf[2] = {func, ibit}; - AICWFDBG(LOGINFO, "set drvibit:[%x]=%x\r\n", func, ibit); - rwnx_send_rftest_req(rwnx_hw, RDWR_DRVIBIT, sizeof(buf), buf, &cfm); + u8_l buf[2] = { func, ibit }; + AICWFDBG(LOGINFO, "set drvibit:[%x]=%x\r\n", func, + ibit); + rwnx_send_rftest_req(rwnx_hw, RDWR_DRVIBIT, sizeof(buf), + buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -803,7 +972,8 @@ static int aic_priv_cmd_rdwr_drvibit (struct rwnx_hw *rwnx_hw, int argc, char *a return 16; } -static int aic_priv_cmd_rdwr_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_pwrofst(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; int res_len = 0; @@ -818,21 +988,31 @@ static int aic_priv_cmd_rdwr_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, c func = (u8_l)command_strtoul(argv[1], NULL, 16); } if (func == 0) { // read cur - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, 0, NULL, &cfm); - } else if (func <= 2) { // write 2.4g/5g pwr ofst - if ((argc > 4) && (dev->chipid == PRODUCT_ID_AIC8800D80)) { + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, 0, NULL, + &cfm); + } else if (func <= 4) { // write 2.4g/5g pwr ofst and ant0/1 + if ((argc > 4) && (dev->chipid == PRODUCT_ID_AIC8800D80 || + dev->chipid == PRODUCT_ID_AIC8800D80X2)) { u8_l type = (u8_l)command_strtoul(argv[2], NULL, 16); u8_l chgrp = (u8_l)command_strtoul(argv[3], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[4], NULL, 10); - u8_l buf[4] = {func, type, chgrp, (u8_l)pwrofst}; - AICWFDBG(LOGINFO, "set efuse pwrofst_%s:[%x][%x]=%d\r\n", (func == 1) ? "2.4g" : "5g", type, chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, sizeof(buf), buf, &cfm); - } else if ((argc > 3) && (dev->chipid != PRODUCT_ID_AIC8800D80)) { + u8_l buf[4] = { func, type, chgrp, (u8_l)pwrofst }; + AICWFDBG(LOGINFO, + "set efuse pwrofst_%s:[%x][%x]=%d\r\n", + (func == 1) ? "2.4g" : "5g", type, chgrp, + pwrofst); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, + sizeof(buf), buf, &cfm); + } else if ((argc > 3) && + (dev->chipid != PRODUCT_ID_AIC8800D80) && + (dev->chipid != PRODUCT_ID_AIC8800D80X2)) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); - u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; - AICWFDBG(LOGINFO, "set efuse pwrofst_%s:[%x]=%d\r\n", (func == 1) ? "2.4g" : "5g", chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, sizeof(buf), buf, &cfm); + u8_l buf[3] = { func, chgrp, (u8_l)pwrofst }; + AICWFDBG(LOGINFO, "set efuse pwrofst_%s:[%x]=%d\r\n", + (func == 1) ? "2.4g" : "5g", chgrp, pwrofst); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, + sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -841,9 +1021,12 @@ static int aic_priv_cmd_rdwr_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, c AICWFDBG(LOGERROR, "wrong func: %x\n", func); return -EINVAL; } - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { // 6 = 3 (2.4g) * 2 + if ((dev->chipid == PRODUCT_ID_AIC8800DC) || + (dev->chipid == PRODUCT_ID_AIC8800DW)) { // 6 = 3 (2.4g) * 2 res_len = 3 * 2; - } else if (dev->chipid == PRODUCT_ID_AIC8800D80) { // 3 * 2 (2.4g) + 3 * 6 (5g) + } else if (dev->chipid == PRODUCT_ID_AIC8800D80 || + dev->chipid == + PRODUCT_ID_AIC8800D80X2) { // 3 * 2 (2.4g) + 3 * 6 (5g) res_len = (3 * 3 + 3 * 6) * 2; } else { // 7 = 3(2.4g) + 4(5g) res_len = 3 + 4; @@ -852,7 +1035,9 @@ static int aic_priv_cmd_rdwr_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, c return res_len; } -static int aic_priv_cmd_rdwr_efuse_pwrofstfine (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_pwrofstfine(struct rwnx_hw *rwnx_hw, + int argc, char *argv[], + char *command) { u8_l func = 0; @@ -860,14 +1045,17 @@ static int aic_priv_cmd_rdwr_efuse_pwrofstfine (struct rwnx_hw *rwnx_hw, int arg func = (u8_l)command_strtoul(argv[1], NULL, 16); } if (func == 0) { // read cur - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFSTFINE, 0, NULL, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFSTFINE, 0, NULL, + &cfm); } else if (func <= 2) { // write 2.4g/5g pwr ofst if (argc > 3) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); - u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; - AICWFDBG(LOGINFO, "set pwrofstfine:[%x][%x]=%d\r\n", func, chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFSTFINE, sizeof(buf), buf, &cfm); + u8_l buf[3] = { func, chgrp, (u8_l)pwrofst }; + AICWFDBG(LOGINFO, "set pwrofstfine:[%x][%x]=%d\r\n", + func, chgrp, pwrofst); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFSTFINE, + sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -880,7 +1068,8 @@ static int aic_priv_cmd_rdwr_efuse_pwrofstfine (struct rwnx_hw *rwnx_hw, int arg return 7; } -static int aic_priv_cmd_rdwr_efuse_drvibit (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_drvibit(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; @@ -888,13 +1077,16 @@ static int aic_priv_cmd_rdwr_efuse_drvibit (struct rwnx_hw *rwnx_hw, int argc, c func = (u8_l)command_strtoul(argv[1], NULL, 16); } if (func == 0) { // read cur - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_DRVIBIT, 0, NULL, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_DRVIBIT, 0, NULL, + &cfm); } else if (func == 1) { // write 2.4g pa drv_ibit if (argc > 2) { - u8_l ibit = (u8_l)command_strtoul(argv[2], NULL, 16); - u8_l buf[2] = {func, ibit}; - AICWFDBG(LOGINFO, "set efuse drvibit:[%x]=%x\r\n", func, ibit); - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_DRVIBIT, sizeof(buf), buf, &cfm); + u8_l ibit = (u8_l)command_strtoul(argv[2], NULL, 16); + u8_l buf[2] = { func, ibit }; + AICWFDBG(LOGINFO, "set efuse drvibit:[%x]=%x\r\n", func, + ibit); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_DRVIBIT, + sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -907,7 +1099,8 @@ static int aic_priv_cmd_rdwr_efuse_drvibit (struct rwnx_hw *rwnx_hw, int argc, c return 4; } -static int aic_priv_cmd_rdwr_efuse_usrdata (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_usrdata(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { cmd_ef_usrdata_t cmd_ef_usrdata; @@ -920,19 +1113,24 @@ static int aic_priv_cmd_rdwr_efuse_usrdata (struct rwnx_hw *rwnx_hw, int argc, c if (cmd_ef_usrdata.func == 1) { int idx; for (idx = 0; idx < cmd_ef_usrdata.cnt; idx++) { - cmd_ef_usrdata.usrdata[idx] = (u32_l)command_strtoul(argv[3 + idx], NULL, 16); + cmd_ef_usrdata.usrdata[idx] = + (u32_l)command_strtoul(argv[3 + idx], + NULL, 16); } } } else { AICWFDBG(LOGERROR, "wrong argc: %x\n", argc); return -EINVAL; } - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_USRDATA, sizeof(cmd_ef_usrdata), (u8_l *)&cmd_ef_usrdata, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_USRDATA, + sizeof(cmd_ef_usrdata), (u8_l *)&cmd_ef_usrdata, + &cfm); memcpy(command, &cfm.rftest_result[0], 12); return 12; } -static int aic_priv_cmd_rdwr_efuse_sdiocfg (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_sdiocfg(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; @@ -940,13 +1138,16 @@ static int aic_priv_cmd_rdwr_efuse_sdiocfg (struct rwnx_hw *rwnx_hw, int argc, c func = (u8_l)command_strtoul(argv[1], NULL, 16); } if (func == 0) { // read cur - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_SDIOCFG, 0, NULL, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_SDIOCFG, 0, NULL, + &cfm); } else if (func == 1) { // write sdiocfg if (argc > 2) { u8_l ibit = (u8_l)command_strtoul(argv[2], NULL, 16); - u8_l buf[2] = {func, ibit}; - AICWFDBG(LOGINFO, "set efuse sdiocfg:[%x]=%x\r\n", func, ibit); - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_SDIOCFG, sizeof(buf), buf, &cfm); + u8_l buf[2] = { func, ibit }; + AICWFDBG(LOGINFO, "set efuse sdiocfg:[%x]=%x\r\n", func, + ibit); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_SDIOCFG, + sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -959,7 +1160,8 @@ static int aic_priv_cmd_rdwr_efuse_sdiocfg (struct rwnx_hw *rwnx_hw, int argc, c return 4; } -static int aic_priv_cmd_rdwr_efuse_usbvidpid (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_usbvidpid(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; AICWFDBG(LOGINFO, "read/write usb vid/pid into efuse\n"); @@ -967,13 +1169,19 @@ static int aic_priv_cmd_rdwr_efuse_usbvidpid (struct rwnx_hw *rwnx_hw, int argc, func = (u8_l)command_strtoul(argv[1], NULL, 16); } if (func == 0) { // read cur - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_USBVIDPID, 0, NULL, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_USBVIDPID, 0, NULL, + &cfm); } else if (func == 1) { // write USB vid+pid if (argc > 2) { - u32_l usb_id = (u32_l)command_strtoul(argv[2], NULL, 16); - u8_l buf[5] = {func, (u8_l)usb_id, (u8_l)(usb_id >> 8), (u8_l)(usb_id >> 16), (u8_l)(usb_id >> 24)}; - AICWFDBG(LOGINFO, "set efuse usb vid/pid:[%x]=%x\r\n", func, usb_id); - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_USBVIDPID, sizeof(buf), buf, &cfm); + u32_l usb_id = + (u32_l)command_strtoul(argv[2], NULL, 16); + u8_l buf[5] = { func, (u8_l)usb_id, (u8_l)(usb_id >> 8), + (u8_l)(usb_id >> 16), + (u8_l)(usb_id >> 24) }; + AICWFDBG(LOGINFO, "set efuse usb vid/pid:[%x]=%x\r\n", + func, usb_id); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_USBVIDPID, + sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -986,14 +1194,16 @@ static int aic_priv_cmd_rdwr_efuse_usbvidpid (struct rwnx_hw *rwnx_hw, int argc, return 4; } -static int aic_priv_cmd_rdwr_efuse_he_off (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_rdwr_efuse_he_off(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; func = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "set he off: %d\n", func); - if(func == 1) { - rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_HE_OFF, sizeof(func), (u8_l *)&func, &cfm); + if (func == 1 || func == 0) { + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_HE_OFF, sizeof(func), + (u8_l *)&func, &cfm); AICWFDBG(LOGINFO, "he_off cfm: %d\n", cfm.rftest_result[0]); memcpy(command, &cfm.rftest_result[0], 4); return 4; @@ -1001,21 +1211,26 @@ static int aic_priv_cmd_rdwr_efuse_he_off (struct rwnx_hw *rwnx_hw, int argc, ch return 0; } -static int aic_priv_cmd_set_cal_xtal (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_cal_xtal(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { rwnx_send_rftest_req(rwnx_hw, SET_CAL_XTAL, 0, NULL, NULL); return 0; } -static int aic_priv_cmd_get_cal_xtal_res (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_cal_xtal_res(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { rwnx_send_rftest_req(rwnx_hw, GET_CAL_XTAL_RES, 0, NULL, &cfm); memcpy(command, &cfm.rftest_result[0], 4); - AICWFDBG(LOGINFO, "cap=0x%x, cap_fine=0x%x\n", cfm.rftest_result[0] & 0x0000ffff, (cfm.rftest_result[0] >> 16) & 0x0000ffff); + AICWFDBG(LOGINFO, "cap=0x%x, cap_fine=0x%x\n", + cfm.rftest_result[0] & 0x0000ffff, + (cfm.rftest_result[0] >> 16) & 0x0000ffff); return 4; } -static int aic_priv_cmd_set_cob_cal (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_cob_cal(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { cmd_rf_setcobcal_t setcob_cal; @@ -1024,24 +1239,33 @@ static int aic_priv_cmd_set_cob_cal (struct rwnx_hw *rwnx_hw, int argc, char *ar setcob_cal.dutid = command_strtoul(argv[1], NULL, 10); setcob_cal.chip_num = command_strtoul(argv[2], NULL, 10); setcob_cal.dis_xtal = command_strtoul(argv[3], NULL, 10); - rwnx_send_rftest_req(rwnx_hw, SET_COB_CAL, sizeof(cmd_rf_setcobcal_t), (u8_l *)&setcob_cal, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_COB_CAL, sizeof(cmd_rf_setcobcal_t), + (u8_l *)&setcob_cal, NULL); return 0; } -static int aic_priv_cmd_get_cob_cal_res (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_cob_cal_res(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l state; cob_result_ptr_t *cob_result_ptr; rwnx_send_rftest_req(rwnx_hw, GET_COB_CAL_RES, 0, NULL, &cfm); state = (cfm.rftest_result[0] >> 16) & 0x000000ff; - if (!state){ - AICWFDBG(LOGINFO, "cap= 0x%x, cap_fine= 0x%x, freq_ofst= %d Hz\n", - cfm.rftest_result[0] & 0x000000ff, (cfm.rftest_result[0] >> 8) & 0x000000ff, cfm.rftest_result[1]); - cob_result_ptr = (cob_result_ptr_t *) & (cfm.rftest_result[2]); - AICWFDBG(LOGINFO, "golden_rcv_dut= %d , tx_rssi= %d dBm, snr = %d dB\ndut_rcv_godlden= %d , rx_rssi= %d dBm", - cob_result_ptr->golden_rcv_dut_num, cob_result_ptr->rssi_static, cob_result_ptr->snr_static, - cob_result_ptr->dut_rcv_golden_num, cob_result_ptr->dut_rssi_static); + if (!state) { + AICWFDBG(LOGINFO, + "cap= 0x%x, cap_fine= 0x%x, freq_ofst= %d Hz\n", + cfm.rftest_result[0] & 0x000000ff, + (cfm.rftest_result[0] >> 8) & 0x000000ff, + cfm.rftest_result[1]); + cob_result_ptr = (cob_result_ptr_t *)&(cfm.rftest_result[2]); + AICWFDBG( + LOGINFO, + "golden_rcv_dut= %d , tx_rssi= %d dBm, snr = %d dB\ndut_rcv_godlden= %d , rx_rssi= %d dBm", + cob_result_ptr->golden_rcv_dut_num, + cob_result_ptr->rssi_static, cob_result_ptr->snr_static, + cob_result_ptr->dut_rcv_golden_num, + cob_result_ptr->dut_rssi_static); memcpy(command, &cfm.rftest_result, 16); return 16; } else { @@ -1050,7 +1274,8 @@ static int aic_priv_cmd_get_cob_cal_res (struct rwnx_hw *rwnx_hw, int argc, char } } -static int aic_priv_cmd_do_cob_test (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_do_cob_test(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l state; cmd_rf_setcobcal_t setcob_cal; @@ -1061,17 +1286,25 @@ static int aic_priv_cmd_do_cob_test (struct rwnx_hw *rwnx_hw, int argc, char *ar setcob_cal.dis_xtal = 0; if (argc > 1) setcob_cal.dis_xtal = command_strtoul(argv[1], NULL, 10); - rwnx_send_rftest_req(rwnx_hw, SET_COB_CAL, sizeof(cmd_rf_setcobcal_t), (u8_l *)&setcob_cal, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_COB_CAL, sizeof(cmd_rf_setcobcal_t), + (u8_l *)&setcob_cal, NULL); msleep(2000); rwnx_send_rftest_req(rwnx_hw, GET_COB_CAL_RES, 0, NULL, &cfm); state = (cfm.rftest_result[0] >> 16) & 0x000000ff; - if (!state){ - AICWFDBG(LOGINFO, "cap= 0x%x, cap_fine= 0x%x, freq_ofst= %d Hz\n", - cfm.rftest_result[0] & 0x000000ff, (cfm.rftest_result[0] >> 8) & 0x000000ff, cfm.rftest_result[1]); - cob_result_ptr = (cob_result_ptr_t *) & (cfm.rftest_result[2]); - AICWFDBG(LOGINFO, "golden_rcv_dut= %d , tx_rssi= %d dBm, snr = %d dB\ndut_rcv_godlden= %d , rx_rssi= %d dBm", - cob_result_ptr->golden_rcv_dut_num, cob_result_ptr->rssi_static, cob_result_ptr->snr_static, - cob_result_ptr->dut_rcv_golden_num, cob_result_ptr->dut_rssi_static); + if (!state) { + AICWFDBG(LOGINFO, + "cap= 0x%x, cap_fine= 0x%x, freq_ofst= %d Hz\n", + cfm.rftest_result[0] & 0x000000ff, + (cfm.rftest_result[0] >> 8) & 0x000000ff, + cfm.rftest_result[1]); + cob_result_ptr = (cob_result_ptr_t *)&(cfm.rftest_result[2]); + AICWFDBG( + LOGINFO, + "golden_rcv_dut= %d , tx_rssi= %d dBm, snr = %d dB\ndut_rcv_godlden= %d , rx_rssi= %d dBm", + cob_result_ptr->golden_rcv_dut_num, + cob_result_ptr->rssi_static, cob_result_ptr->snr_static, + cob_result_ptr->dut_rcv_golden_num, + cob_result_ptr->dut_rssi_static); memcpy(command, &cfm.rftest_result, 16); return 16; } else { @@ -1080,65 +1313,75 @@ static int aic_priv_cmd_do_cob_test (struct rwnx_hw *rwnx_hw, int argc, char *ar } } -static int aic_priv_cmd_set_papr (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_papr(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; if (argc > 1) { func = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "papr %d\r\n", func); - rwnx_send_rftest_req(rwnx_hw, SET_PAPR, sizeof(func), (u8_l *)&func, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_PAPR, sizeof(func), + (u8_l *)&func, NULL); } else { return -EINVAL; } return 0; } -static int aic_priv_cmd_set_notch (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_notch(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; if (argc > 1) { func = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "notch %d\r\n", func); - rwnx_send_rftest_req(rwnx_hw, SET_NOTCH, sizeof(func), (u8_l *)&func, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_NOTCH, sizeof(func), + (u8_l *)&func, NULL); } else { return -EINVAL; } return 0; } -static int aic_priv_cmd_set_srrc (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_srrc(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0; if (argc > 1) { func = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "srrc %d\r\n", func); - rwnx_send_rftest_req(rwnx_hw, SET_SRRC, sizeof(func), (u8_l *)&func, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_SRRC, sizeof(func), + (u8_l *)&func, NULL); } else { return -EINVAL; } return 0; } -static int aic_priv_cmd_set_fss (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_fss(struct rwnx_hw *rwnx_hw, int argc, char *argv[], + char *command) { u8_l func = 0; if (argc > 1) { func = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "fss %d\r\n", func); - rwnx_send_rftest_req(rwnx_hw, SET_FSS, sizeof(func), (u8_l *)&func, NULL); + rwnx_send_rftest_req(rwnx_hw, SET_FSS, sizeof(func), + (u8_l *)&func, NULL); } else { return -EINVAL; } return 0; } -static int aic_priv_cmd_set_usb_off (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_usb_off(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { rwnx_send_rftest_req(rwnx_hw, SET_USB_OFF, 0, NULL, NULL); return 0; } -static int aic_priv_cmd_set_pll_test (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_pll_test(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { u8_l func = 0, tx_pwr = 0xc; s8_l freq = 0; @@ -1151,9 +1394,11 @@ static int aic_priv_cmd_set_pll_test (struct rwnx_hw *rwnx_hw, int argc, char *a tx_pwr = command_strtoul(argv[3], NULL, 16); } if (func <= 1) { - u8_l buf[3] = {func, (u8_l)freq, tx_pwr}; - AICWFDBG(LOGINFO, "set pll_test %d: freq=%d, tx_pwr=0x%x\n", func, freq, tx_pwr); - rwnx_send_rftest_req(rwnx_hw, SET_PLL_TEST, sizeof(buf), buf, &cfm); + u8_l buf[3] = { func, (u8_l)freq, tx_pwr }; + AICWFDBG(LOGINFO, "set pll_test %d: freq=%d, tx_pwr=0x%x\n", + func, freq, tx_pwr); + rwnx_send_rftest_req(rwnx_hw, SET_PLL_TEST, sizeof(buf), buf, + &cfm); } else { AICWFDBG(LOGERROR, "wrong func: %x\n", func); return -EINVAL; @@ -1161,25 +1406,39 @@ static int aic_priv_cmd_set_pll_test (struct rwnx_hw *rwnx_hw, int argc, char *a return 0; } -static int aic_priv_cmd_get_txpwr(struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_get_txpwr(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { - s8_l power=0; + s8_l power = 0; power = get_txpwr_max(power); memcpy(command, &power, 1); return 1; } -static int aic_priv_cmd_set_txpwr_loss(struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_txpwr_loss(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) { s8_l func; if (argc > 1) { func = (s8_l)command_strtoul(argv[1], NULL, 10); printk("set txpwr loss: %d\n", func); - if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { set_txpwr_loss_ofst(func); - rwnx_send_txpwr_lvl_v3_req(g_rwnx_plat->sdiodev->rwnx_hw); - }else{ - AICWFDBG(LOGINFO,"error:don't support ,now only support D40 D80"); + rwnx_send_txpwr_lvl_v3_req( + g_rwnx_plat->sdiodev->rwnx_hw); + } else if (g_rwnx_plat->sdiodev->chipid == + PRODUCT_ID_AIC8800D80X2) { + set_txpwr_loss_ofst(func); + rwnx_send_txpwr_lvl_v4_req( + g_rwnx_plat->sdiodev->rwnx_hw); + } else if (g_rwnx_plat->sdiodev->chipid == + PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == + PRODUCT_ID_AIC8800DW) { + set_txpwr_loss_ofst(func); + rwnx_send_txpwr_lvl_req(g_rwnx_plat->sdiodev->rwnx_hw); + } else { + AICWFDBG(LOGINFO, "error:don't support 8800D"); } } else { printk("wrong args\n"); @@ -1188,7 +1447,90 @@ static int aic_priv_cmd_set_txpwr_loss(struct rwnx_hw *rwnx_hw, int argc, char * return 0; } -static int aic_priv_cmd_help (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +static int aic_priv_cmd_set_ant_mode(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) +{ + u8_l func = 0; + if (argc > 1) { + func = command_strtoul(argv[1], NULL, 10); + AICWFDBG(LOGINFO, "ant %d\r\n", func); + rwnx_send_rftest_req(rwnx_hw, SET_ANT_MODE, sizeof(func), + (u8_l *)&func, NULL); + } else { + return -EINVAL; + } + return 0; +} + +static int aic_priv_cmd_rdwr_bt_efuse_pwrofst(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) +{ + u8_l func = 0; + if (argc == 1) { + func = 0; + } else if (argc == 2) { + func = 1; + } + if (func == 0) { // read cur + rwnx_send_rftest_req(rwnx_hw, RDWR_BT_EFUSE_PWROFST, 0, NULL, + &cfm); + } else if (func == 1) { // write bt tx pwrofst + int8_t bt_txpwrofst = command_strtoul(argv[1], NULL, 10); + AICWFDBG(LOGINFO, "set bt efuse pwrofst %d\r\n", bt_txpwrofst); + if (bt_txpwrofst < -7 || bt_txpwrofst > 7) { + AICWFDBG(LOGERROR, + "wrong params %d, pwrofst limit -7 ~ 7\n", + bt_txpwrofst); + return -EINVAL; + } else { + rwnx_send_rftest_req(rwnx_hw, RDWR_BT_EFUSE_PWROFST, + sizeof(bt_txpwrofst), + &bt_txpwrofst, &cfm); + } + } else { + AICWFDBG(LOGERROR, "wrong func: %x\n", func); + return -EINVAL; + } + memcpy(command, &cfm.rftest_result[0], 2); + return 2; +} + +static int aic_priv_cmd_country_set(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) +{ + int ret = 0; + struct ieee80211_regdomain *regdomain; + + if (argc < 2) { + AICWFDBG(LOGINFO, "%s param err\n", __func__); + return -1; + } + + AICWFDBG(LOGINFO, "cmd country_set: %s\n", argv[1]); + + regdomain = getRegdomainFromRwnxDB(rwnx_hw->wiphy, argv[1]); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) + ret = regulatory_set_wiphy_regd(rwnx_hw->wiphy, regdomain); +#else + ret = wiphy_apply_custom_regulatory(rwnx_hw->wiphy, regdomain); +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) */ + +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_radar_set_domain(&rwnx_hw->radar, regdomain->dfs_region); +#endif + +#ifdef CONFIG_POWER_LIMIT + if (!testmode) { + rwnx_send_me_chan_config_req(rwnx_hw, argv[1]); + } +#endif + + return ret; +} + +static int aic_priv_cmd_help(struct rwnx_hw *rwnx_hw, int argc, char *argv[], + char *command) { print_help(argc > 0 ? argv[0] : NULL); return 0; @@ -1196,37 +1538,28 @@ static int aic_priv_cmd_help (struct rwnx_hw *rwnx_hw, int argc, char *argv[], c struct aic_priv_cmd { const char *cmd; - int (*handler)(struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command); + int (*handler)(struct rwnx_hw *rwnx_hw, int argc, char *argv[], + char *command); const char *usage; }; static const struct aic_priv_cmd aic_priv_commands[] = { { "set_tx", aic_priv_cmd_set_tx, " " }, - { "set_txstop", aic_priv_cmd_set_txstop, - "= stop tx " }, - { "set_rx", aic_priv_cmd_set_rx, - " " }, + { "set_txstop", aic_priv_cmd_set_txstop, "= stop tx " }, + { "set_rx", aic_priv_cmd_set_rx, " " }, { "get_rx_result", aic_priv_cmd_get_rx_result, "= display rx fcsok/total pkt num" }, - { "set_rxstop", aic_priv_cmd_set_rxstop, - "= stop rx " }, - { "set_txtone", aic_priv_cmd_set_tx_tone, - " val = 0/off" }, - { "set_rx_meter", aic_priv_cmd_set_rx_meter, - "= set rx meter " }, - { "set_power", aic_priv_cmd_set_set_power, - " " }, - { "set_xtal_cap", aic_priv_cmd_set_xtal_cap, - " [0 ~ 31]" }, + { "set_rxstop", aic_priv_cmd_set_rxstop, "= stop rx " }, + { "set_txtone", aic_priv_cmd_set_tx_tone, " val = 0/off" }, + { "set_rx_meter", aic_priv_cmd_set_rx_meter, "= set rx meter " }, + { "set_power", aic_priv_cmd_set_set_power, " " }, + { "set_xtal_cap", aic_priv_cmd_set_xtal_cap, " [0 ~ 31]" }, { "set_xtal_cap_fine", aic_priv_cmd_set_xtal_cap_fine, " [0 ~ 63]" }, - { "get_efuse_block", aic_priv_cmd_get_efuse_block, - "" }, - { "set_freq_cal", aic_priv_cmd_set_freq_cal, - "" }, - { "set_freq_cal_fine", aic_priv_cmd_set_freq_cal_fine, - "" }, + { "get_efuse_block", aic_priv_cmd_get_efuse_block, "" }, + { "set_freq_cal", aic_priv_cmd_set_freq_cal, "" }, + { "set_freq_cal_fine", aic_priv_cmd_set_freq_cal_fine, "" }, { "get_freq_cal", aic_priv_cmd_get_freq_cal, "= display cap & cap fine" }, { "set_mac_addr", aic_priv_cmd_set_mac_addr, @@ -1243,18 +1576,15 @@ static const struct aic_priv_cmd aic_priv_commands[] = { "= display vendor info stored in efuse or flash" }, { "rdwr_pwrmm", aic_priv_cmd_rdwr_pwrmm, " = 0/rdwr_pwrlvl, 1/set_power = read/write txpwr manul mode" }, - { "rdwr_pwridx", aic_priv_cmd_rdwr_pwridx, - " " }, - { "rdwr_pwrlvl", aic_priv_cmd_rdwr_pwrlvl, - " " }, + { "rdwr_pwridx", aic_priv_cmd_rdwr_pwridx, " " }, + { "rdwr_pwrlvl", aic_priv_cmd_rdwr_pwrlvl, " " }, { "rdwr_pwrofst", aic_priv_cmd_rdwr_pwrofst, " " }, { "rdwr_pwrofstfine", aic_priv_cmd_rdwr_pwrofstfine, " " }, { "rdwr_drvibit", aic_priv_cmd_rdwr_drvibit, " read/write 8800D pa drvibit" }, - { "set_cal_xtal", aic_priv_cmd_set_cal_xtal, - "= set cal xtal" }, + { "set_cal_xtal", aic_priv_cmd_set_cal_xtal, "= set cal xtal" }, { "get_cal_xtal_res", aic_priv_cmd_get_cal_xtal_res, "= get cal xtal result cap & cap_fine" }, { "set_cob_cal", aic_priv_cmd_set_cob_cal, @@ -1289,19 +1619,20 @@ static const struct aic_priv_cmd aic_priv_commands[] = { "= off usb configure before usb disconnect" }, { "set_pll_test", aic_priv_cmd_set_pll_test, " = use pll test to measure saturation power" }, - { "get_txpwr", aic_priv_cmd_get_txpwr, - "= get userconfig max txpwr" }, - { "set_txpwr_loss",aic_priv_cmd_set_txpwr_loss, + { "get_txpwr", aic_priv_cmd_get_txpwr, "= get userconfig max txpwr" }, + { "set_txpwr_loss", aic_priv_cmd_set_txpwr_loss, " = txpwr will change ,val can be negative" }, - -//Reserve for new aic_priv_cmd. - { "help", aic_priv_cmd_help, - "= show usage help" }, + { "set_ant", aic_priv_cmd_set_ant_mode, + " = 0/ant0, 1/ant1, 2/both" }, + { "rdwr_bt_efuse_pwrofst", aic_priv_cmd_rdwr_bt_efuse_pwrofst, + " = read/write bt tx power offset into efuse" }, + { "country_set", aic_priv_cmd_country_set, "" }, + //Reserve for new aic_priv_cmd. + { "help", aic_priv_cmd_help, "= show usage help" }, { NULL, NULL, NULL } }; - /* * Prints command usage, lines are padded with the specified string. */ @@ -1311,7 +1642,8 @@ static void print_help(const char *cmd) printk("commands:\n"); for (n = 0; aic_priv_commands[n].cmd; n++) { if (cmd != NULL) - printk("%s %s\n", aic_priv_commands[n].cmd, aic_priv_commands[n].usage); + printk("%s %s\n", aic_priv_commands[n].cmd, + aic_priv_commands[n].usage); } } @@ -1322,11 +1654,18 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) int bytes_written = 0; char *argv[CMD_MAXARGS + 1]; int argc; - struct rwnx_vif *vif = container_of(net->ieee80211_ptr, struct rwnx_vif, wdev); + struct rwnx_vif *vif = + container_of(net->ieee80211_ptr, struct rwnx_vif, wdev); struct rwnx_hw *p_rwnx_hw = vif->rwnx_hw; RWNX_DBG(RWNX_FN_ENTRY_STR); +#if 1 + if (!testmode) { + AICWFDBG(LOGERROR, "not in testmdoe\n"); + return -1; + } +#endif argc = parse_line(command, argv); if (argc == 0) { return -1; @@ -1335,8 +1674,8 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) count = 0; cmd = aic_priv_commands; while (cmd->cmd) { - if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) == 0) - { + if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) == 0 && + strncasecmp(cmd->cmd, argv[0], strlen(cmd->cmd)) == 0) { match = cmd; if (strcasecmp(cmd->cmd, argv[0]) == 0) { /* we have an exact match */ @@ -1349,11 +1688,12 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) } if (count > 1) { - AICWFDBG(LOGINFO, "Ambiguous command '%s'; possible commands:", argv[0]); + AICWFDBG(LOGINFO, + "Ambiguous command '%s'; possible commands:", argv[0]); cmd = aic_priv_commands; while (cmd->cmd) { - if (strncasecmp(cmd->cmd, argv[0], - strlen(argv[0])) == 0) { + if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) == + 0) { AICWFDBG(LOGINFO, " %s", cmd->cmd); } cmd++; @@ -1363,7 +1703,8 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) AICWFDBG(LOGERROR, "Unknown command '%s'\n", argv[0]); } else { AICWFDBG(LOGINFO, "match %s", match->cmd); - bytes_written = match->handler(p_rwnx_hw, argc, &argv[0], command); + bytes_written = + match->handler(p_rwnx_hw, argc, &argv[0], command); } if (bytes_written < 0) @@ -1377,19 +1718,22 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) #define CMD_SET_VENDOR_EX_IE "SET_VENDOR_EX_IE" #define CMD_SET_AP_WPS_P2P_IE "SET_AP_WPS_P2P_IE" #define CMD_SETSUSPENDMODE "SETSUSPENDMODE" +#define CMD_SET_MON_FREQ "SET_MON_FREQ" - -struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, char *alpha2); -struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy *wiphy, int index); +struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, + char *alpha2); +struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy *wiphy, + int index); extern int reg_regdb_size; #ifdef CONFIG_SET_VENDOR_EXTENSION_IE extern u8_l vendor_extension_data[256]; extern int vendor_extension_len; +extern int testmode = 0; -void set_vendor_extension_ie(char *command){ - - char databyte[3]={0x00, 0x00, 0x00}; +void set_vendor_extension_ie(char *command) +{ + char databyte[3] = { 0x00, 0x00, 0x00 }; int skip = strlen(CMD_SET_VENDOR_EX_IE) + 1; int command_index = skip; int data_index = 0; @@ -1401,15 +1745,46 @@ void set_vendor_extension_ie(char *command){ printk("%s len:%d \r\n", __func__, vendor_extension_len); //parser command and save data in vendor_extension_data - for(data_index = 0;data_index < vendor_extension_len; data_index++){ + for (data_index = 0; data_index < vendor_extension_len; data_index++) { command_index = command_index + 3; memcpy(databyte, command + command_index, 2); - vendor_extension_data[data_index] = command_strtoul(databyte, NULL, 16); + vendor_extension_data[data_index] = + command_strtoul(databyte, NULL, 16); } - } -#endif//CONFIG_SET_VENDOR_EXTENSION_IE +#endif //CONFIG_SET_VENDOR_EXTENSION_IE +int rwnx_cfg80211_set_monitor_channel_(struct wiphy *wiphy, + struct cfg80211_chan_def *chandef); +int rwnx_atoi2(char *value, int c_len); +void set_mon_chan(struct rwnx_vif *vif, char *parameter) +{ + struct cfg80211_chan_def *chandef = NULL; + int freq = 0; + chandef = (struct cfg80211_chan_def *)vmalloc( + sizeof(struct cfg80211_chan_def)); + memset(chandef, 0, sizeof(struct cfg80211_chan_def)); + chandef->chan = (struct ieee80211_channel *)vmalloc( + sizeof(struct ieee80211_channel)); + memset(chandef->chan, 0, sizeof(struct ieee80211_channel)); + + freq = rwnx_atoi2(parameter, 4); + + if (freq <= 2484) { + chandef->chan->band = NL80211_BAND_2GHZ; + } else { + chandef->chan->band = NL80211_BAND_5GHZ; + } + chandef->chan->center_freq = freq; + chandef->width = NL80211_CHAN_WIDTH_20; + chandef->center_freq1 = chandef->chan->center_freq; + chandef->center_freq2 = 0; + + rwnx_cfg80211_set_monitor_channel_(vif->rwnx_hw->wiphy, chandef); + + vfree(chandef->chan); + vfree(chandef); +} int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) { @@ -1424,7 +1799,9 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) int buf_size = 0; int skip = 0; char *country = NULL; +#ifdef CONFIG_GPIO_WAKEUP int setsusp_mode; +#endif struct ieee80211_regdomain *regdomain; RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -1432,8 +1809,7 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) ///todo: add our lock //net_os_wake_lock(net); - -/* if (!capable(CAP_NET_ADMIN)) { + /* if (!capable(CAP_NET_ADMIN)) { ret = -EPERM; goto exit; }*/ @@ -1450,8 +1826,9 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) #endif { compat_android_wifi_priv_cmd compat_priv_cmd; - if (copy_from_user(&compat_priv_cmd, ifr->ifr_data, sizeof(compat_android_wifi_priv_cmd))) { - ret = -EFAULT; + if (copy_from_user(&compat_priv_cmd, ifr->ifr_data, + sizeof(compat_android_wifi_priv_cmd))) { + ret = -EFAULT; goto exit; } priv_cmd.buf = compat_ptr(compat_priv_cmd.buf); @@ -1460,13 +1837,16 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) } else #endif /* CONFIG_COMPAT */ { - if (copy_from_user(&priv_cmd, ifr->ifr_data, sizeof(android_wifi_priv_cmd))) { - ret = -EFAULT; + if (copy_from_user(&priv_cmd, ifr->ifr_data, + sizeof(android_wifi_priv_cmd))) { + ret = -EFAULT; goto exit; } } - if ((priv_cmd.total_len > PRIVATE_COMMAND_MAX_LEN) || (priv_cmd.total_len < 0)) { - printk("%s: buf length invalid:%d\n", __FUNCTION__, priv_cmd.total_len); + if ((priv_cmd.total_len > PRIVATE_COMMAND_MAX_LEN) || + (priv_cmd.total_len < 0)) { + printk("%s: buf length invalid:%d\n", __FUNCTION__, + priv_cmd.total_len); ret = -EINVAL; goto exit; } @@ -1486,19 +1866,21 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) command[priv_cmd.total_len] = '\0'; /* outputs */ - AICWFDBG(LOGINFO, "%s: Android private cmd \"%s\" on %s\n", __FUNCTION__, command, ifr->ifr_name); + AICWFDBG(LOGINFO, "%s: Android private cmd \"%s\" on %s\n", + __FUNCTION__, command, ifr->ifr_name); AICWFDBG(LOGINFO, "cmd = %d\n", cmd); AICWFDBG(LOGINFO, "buf_size=%d\n", buf_size); -#if 1//Handle Android command - if(!strncasecmp(command, CMD_SET_COUNTRY, strlen(CMD_SET_COUNTRY))) { - skip = strlen(CMD_SET_COUNTRY) + 1; - country = command + skip; - if (!country || strlen(country) < RWNX_COUNTRY_CODE_LEN) { - printk("%s: invalid country code\n", __func__); - ret = -EINVAL; - goto exit; - } +#if 1 //Handle Android command + if (!strncasecmp(command, CMD_SET_COUNTRY, strlen(CMD_SET_COUNTRY)) && + strncasecmp(command, "country_set", strlen("country_set"))) { + skip = strlen(CMD_SET_COUNTRY) + 1; + country = command + skip; + if (!country || strlen(country) < RWNX_COUNTRY_CODE_LEN) { + printk("%s: invalid country code\n", __func__); + ret = -EINVAL; + goto exit; + } #if 0 for(index = 0; index < reg_regdb_size; index++){ regdomain = getRegdomainFromRwnxDBIndex(vif->rwnx_hw->wiphy, index); @@ -1509,43 +1891,90 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) } } #endif - AICWFDBG(LOGINFO, "%s country code:%c%c\n", __func__, toupper(country[0]), toupper(country[1])); - regdomain = getRegdomainFromRwnxDB(vif->rwnx_hw->wiphy, country); + AICWFDBG(LOGINFO, "%s country code:%c%c\n", __func__, + toupper(country[0]), toupper(country[1])); + regdomain = + getRegdomainFromRwnxDB(vif->rwnx_hw->wiphy, country); #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) - if((ret = regulatory_set_wiphy_regd(vif->rwnx_hw->wiphy, regdomain))){ - printk("regulatory_set_wiphy_regd fail \r\n"); - } + if ((ret = regulatory_set_wiphy_regd(vif->rwnx_hw->wiphy, + regdomain))) { + printk("regulatory_set_wiphy_regd fail \r\n"); + } #else - wiphy_apply_custom_regulatory(vif->rwnx_hw->wiphy, regdomain); + wiphy_apply_custom_regulatory(vif->rwnx_hw->wiphy, regdomain); #endif - } + +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_radar_set_domain(&vif->rwnx_hw->radar, + regdomain->dfs_region); +#endif + +#ifdef CONFIG_POWER_LIMIT + if (!testmode) + rwnx_send_me_chan_config_req(vif->rwnx_hw, country); +#endif + ret = 0; + goto exit; + } #ifdef CONFIG_SET_VENDOR_EXTENSION_IE - else if(!strncasecmp(command, CMD_SET_VENDOR_EX_IE, strlen(CMD_SET_VENDOR_EX_IE))){ - set_vendor_extension_ie(command); - } -#endif//CONFIG_SET_VENDOR_EXTENSION_IE - else if(!strncasecmp(command, CMD_SET_AP_WPS_P2P_IE, strlen(CMD_SET_AP_WPS_P2P_IE))){ - ret = 0; - goto exit; - } - else if(!strncasecmp(command, CMD_SETSUSPENDMODE, strlen(CMD_SETSUSPENDMODE))){ - skip = strlen(CMD_SET_COUNTRY) + 1; - setsusp_mode = command_strtoul(command + skip, NULL, 10); -#ifdef CONFIG_GPIO_WAKEUP + else if (!strncasecmp(command, CMD_SET_VENDOR_EX_IE, + strlen(CMD_SET_VENDOR_EX_IE))) { + set_vendor_extension_ie(command); + ret = 0; + goto exit; + } +#endif //CONFIG_SET_VENDOR_EXTENSION_IE + else if (!strncasecmp(command, CMD_SET_AP_WPS_P2P_IE, + strlen(CMD_SET_AP_WPS_P2P_IE))) { + ret = 0; + goto exit; + } else if (!strncasecmp(command, CMD_SETSUSPENDMODE, + strlen(CMD_SETSUSPENDMODE)) && + testmode == 0) { +#ifdef AICWF_SDIO_SUPPORT +#if defined(CONFIG_GPIO_WAKEUP) && !defined(CONFIG_AUTO_POWERSAVE) + skip = strlen(CMD_SETSUSPENDMODE) + 1; + setsusp_mode = command_strtoul((command + skip), NULL, 10); +#ifdef AICWF_LATENCY_MODE + if (setsusp_mode) + rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, + setsusp_mode, 0); + else + rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, + 1, 1); +#else + rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, + setsusp_mode, !setsusp_mode); +#endif +#if 0 if (setsusp_mode == 1) { -#if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(g_rwnx_plat->sdiodev, SDIO_SLEEP_ST); -#endif//CONFIG_SDIO_PWRCTRL - ret = aicwf_sdio_writeb(g_rwnx_plat->sdiodev, SDIOWIFI_WAKEUP_REG, 2); - if (ret < 0) { - sdio_err("reg:%d write failed!\n", SDIOWIFI_WAKEUP_REG); - } +#endif + ret = aicwf_sdio_writeb(g_rwnx_plat->sdiodev, SDIOWIFI_WAKEUP_REG, 2); + if (ret < 0) { + sdio_err("reg:%d write failed!\n", SDIOWIFI_WAKEUP_REG); + } } - AICWFDBG(LOGINFO, "set suspend mode %d\n", setsusp_mode); -#endif//CONFIG_GPIO_WAKEUP - goto exit; - } -#endif//Handle Android command +#endif + AICWFDBG(LOGINFO, "set suspend mode %d\n", setsusp_mode); +#endif //CONFIG_GPIO_WAKEUP +#endif + goto exit; + } +#ifdef CONFIG_RWNX_MON_DATA + else if (!strncasecmp(command, CMD_SET_MON_FREQ, + strlen(CMD_SET_MON_FREQ))) { + char *set_parameter; + skip = strlen(CMD_SET_MON_FREQ) + 1; + set_parameter = command + skip; + set_mon_chan(vif, set_parameter); + ret = 0; + goto exit; + } +#endif + +#endif //Handle Android command bytes_written = handle_private_cmd(net, command, priv_cmd.total_len); if (bytes_written >= 0) { @@ -1554,13 +1983,14 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) } if (bytes_written >= priv_cmd.total_len) { printk("%s: err. bytes_written:%d >= buf_size:%d \n", - __FUNCTION__, bytes_written, buf_size); + __FUNCTION__, bytes_written, buf_size); goto exit; } bytes_written++; priv_cmd.used_len = bytes_written; if (copy_to_user(priv_cmd.buf, command, bytes_written)) { - printk("%s: failed to copy data to user buffer\n", __FUNCTION__); + printk("%s: failed to copy data to user buffer\n", + __FUNCTION__); ret = -EFAULT; } } else { @@ -1577,15 +2007,14 @@ exit: #ifdef CONFIG_MCU_MESSAGE #define CMD_GET_VERSION_STR "GET_VERSION" -#define CMD_GET_SSID_STR "GET_SSID" -#define CMD_SET_SSID_STR "SET_SSID" -#define CMD_GET_PASS_STR "GET_PASS" -#define CMD_SET_PASS_STR "SET_PASS" -#define CMD_GET_VAR_STR "GET_VAR" -#define CMD_SET_VAR_STR "SET_VAR" +#define CMD_GET_SSID_STR "GET_SSID" +#define CMD_SET_SSID_STR "SET_SSID" +#define CMD_GET_PASS_STR "GET_PASS" +#define CMD_SET_PASS_STR "SET_PASS" +#define CMD_GET_VAR_STR "GET_VAR" +#define CMD_SET_VAR_STR "SET_VAR" -enum custmsg_cmd_tag -{ +enum custmsg_cmd_tag { CUST_CMD_GET_VERSION = 0, CUST_CMD_GET_SSID, CUST_CMD_SET_SSID, @@ -1603,30 +2032,37 @@ int handle_custom_msg(char *command, u32 cmd_len) u32 cmd, len = 0, flags = 0; char *buf = NULL; struct dbg_custom_msg_cfm *cust_msg_cfm; - printk("cmd,%s,%ld\n",command,strlen(command)); - if (strncasecmp(command, CMD_GET_VERSION_STR, strlen(CMD_GET_VERSION_STR)) == 0) { + printk("cmd,%s,%ld\n", command, strlen(command)); + if (strncasecmp(command, CMD_GET_VERSION_STR, + strlen(CMD_GET_VERSION_STR)) == 0) { cmd = CUST_CMD_GET_VERSION; max_bytes_to_read = 32; // max str len for version - } else if (strncasecmp(command, CMD_GET_SSID_STR, strlen(CMD_GET_SSID_STR)) == 0) { + } else if (strncasecmp(command, CMD_GET_SSID_STR, + strlen(CMD_GET_SSID_STR)) == 0) { cmd = CUST_CMD_GET_SSID; max_bytes_to_read = 48; // max str len for ssid - } else if (strncasecmp(command, CMD_SET_SSID_STR, strlen(CMD_SET_SSID_STR)) == 0) { + } else if (strncasecmp(command, CMD_SET_SSID_STR, + strlen(CMD_SET_SSID_STR)) == 0) { cmd = CUST_CMD_SET_SSID; len = cmd_len - (strlen(CMD_SET_SSID_STR) + 1); buf = command + (strlen(CMD_SET_SSID_STR) + 1); max_bytes_to_read = 0; - } else if (strncasecmp(command, CMD_GET_PASS_STR, strlen(CMD_GET_PASS_STR)) == 0) { + } else if (strncasecmp(command, CMD_GET_PASS_STR, + strlen(CMD_GET_PASS_STR)) == 0) { cmd = CUST_CMD_GET_PASS; max_bytes_to_read = 64; // max str len for PASS - } else if (strncasecmp(command, CMD_SET_PASS_STR, strlen(CMD_SET_PASS_STR)) == 0) { + } else if (strncasecmp(command, CMD_SET_PASS_STR, + strlen(CMD_SET_PASS_STR)) == 0) { cmd = CUST_CMD_SET_PASS; len = cmd_len - (strlen(CMD_SET_PASS_STR) + 1); buf = command + (strlen(CMD_SET_PASS_STR) + 1); max_bytes_to_read = 0; - } else if (strncasecmp(command, CMD_GET_VAR_STR, strlen(CMD_GET_VAR_STR)) == 0) { + } else if (strncasecmp(command, CMD_GET_VAR_STR, + strlen(CMD_GET_VAR_STR)) == 0) { cmd = CUST_CMD_GET_VAR; max_bytes_to_read = 64; // max str len for VAR - } else if (strncasecmp(command, CMD_SET_VAR_STR, strlen(CMD_SET_VAR_STR)) == 0) { + } else if (strncasecmp(command, CMD_SET_VAR_STR, + strlen(CMD_SET_VAR_STR)) == 0) { cmd = CUST_CMD_SET_VAR; len = cmd_len - (strlen(CMD_SET_VAR_STR) + 1); buf = command + (strlen(CMD_SET_VAR_STR) + 1); @@ -1639,20 +2075,24 @@ int handle_custom_msg(char *command, u32 cmd_len) printk("invalid len: %d\r\n", len); return -3; } - #ifdef AICWF_SDIO_SUPPORT +#ifdef AICWF_SDIO_SUPPORT p_rwnx_hw = g_rwnx_plat->sdiodev->rwnx_hw; - #endif - #ifdef AICWF_USB_SUPPORT +#endif +#ifdef AICWF_USB_SUPPORT p_rwnx_hw = g_rwnx_plat->usbdev->rwnx_hw; - #endif - cust_msg_cfm = (struct dbg_custom_msg_cfm *)kmalloc((offsetof(struct dbg_custom_msg_cfm, buf) + max_bytes_to_read), GFP_KERNEL); +#endif + cust_msg_cfm = (struct dbg_custom_msg_cfm *)kmalloc( + (offsetof(struct dbg_custom_msg_cfm, buf) + max_bytes_to_read), + GFP_KERNEL); if (cust_msg_cfm == NULL) { printk("msg cfm alloc fail\r\n"); return -2; } - rwnx_send_dbg_custom_msg_req(p_rwnx_hw, cmd, buf, len, flags, cust_msg_cfm); + rwnx_send_dbg_custom_msg_req(p_rwnx_hw, cmd, buf, len, flags, + cust_msg_cfm); bytes_read = cust_msg_cfm->len; - printk("Custom msg cfm: cmd=%d, len=%d, status=%x\n", cust_msg_cfm->cmd, bytes_read, cust_msg_cfm->status); + printk("Custom msg cfm: cmd=%d, len=%d, status=%x\n", cust_msg_cfm->cmd, + bytes_read, cust_msg_cfm->status); if (bytes_read) { memcpy(command, cust_msg_cfm->buf, bytes_read); command[bytes_read] = '\0'; @@ -1684,8 +2124,7 @@ int devipc_cust_msg(struct net_device *net, struct ifreq *ifr, int cmd) ///todo: add our lock //net_os_wake_lock(net); - -/* if (!capable(CAP_NET_ADMIN)) { + /* if (!capable(CAP_NET_ADMIN)) { ret = -EPERM; goto exit; }*/ @@ -1702,8 +2141,9 @@ int devipc_cust_msg(struct net_device *net, struct ifreq *ifr, int cmd) #endif { compat_android_wifi_priv_cmd compat_priv_cmd; - if (copy_from_user(&compat_priv_cmd, ifr->ifr_data, sizeof(compat_android_wifi_priv_cmd))) { - ret = -EFAULT; + if (copy_from_user(&compat_priv_cmd, ifr->ifr_data, + sizeof(compat_android_wifi_priv_cmd))) { + ret = -EFAULT; goto exit; } priv_cmd.buf = compat_ptr(compat_priv_cmd.buf); @@ -1712,13 +2152,16 @@ int devipc_cust_msg(struct net_device *net, struct ifreq *ifr, int cmd) } else #endif /* CONFIG_COMPAT */ { - if (copy_from_user(&priv_cmd, ifr->ifr_data, sizeof(android_wifi_priv_cmd))) { - ret = -EFAULT; - goto exit; + if (copy_from_user(&priv_cmd, ifr->ifr_data, + sizeof(android_wifi_priv_cmd))) { + ret = -EFAULT; + goto exit; } } - if ((priv_cmd.total_len > PRIVATE_COMMAND_MAX_LEN) || (priv_cmd.total_len < 0)) { - printk("%s: buf length invalid:%d\n", __FUNCTION__, priv_cmd.total_len); + if ((priv_cmd.total_len > PRIVATE_COMMAND_MAX_LEN) || + (priv_cmd.total_len < 0)) { + printk("%s: buf length invalid:%d\n", __FUNCTION__, + priv_cmd.total_len); ret = -EINVAL; goto exit; } @@ -1726,8 +2169,7 @@ int devipc_cust_msg(struct net_device *net, struct ifreq *ifr, int cmd) buf_size = max(priv_cmd.total_len, PRIVATE_COMMAND_DEF_LEN); command = kmalloc((buf_size + 1), GFP_KERNEL); - if (!command) - { + if (!command) { printk("%s: failed to allocate memory\n", __FUNCTION__); ret = -ENOMEM; goto exit; @@ -1739,29 +2181,29 @@ int devipc_cust_msg(struct net_device *net, struct ifreq *ifr, int cmd) command[priv_cmd.used_len] = '\0'; /* outputs */ - printk("%s: Devipc custom msg \"%s\" on %s\n", __FUNCTION__, command, ifr->ifr_name); + printk("%s: Devipc custom msg \"%s\" on %s\n", __FUNCTION__, command, + ifr->ifr_name); printk("cmd = %x\n", cmd); printk("buf_size=%d\n", buf_size); - bytes_written = handle_custom_msg(command, priv_cmd.used_len); if (bytes_written >= 0) { if ((bytes_written == 0) && (priv_cmd.total_len > 0)) { - command[0] = '\0'; + command[0] = '\0'; } if (bytes_written >= priv_cmd.total_len) { printk("%s: err. bytes_written:%d >= buf_size:%d \n", - __FUNCTION__, bytes_written, buf_size); + __FUNCTION__, bytes_written, buf_size); goto exit; } bytes_written++; priv_cmd.used_len = bytes_written; if (copy_to_user(priv_cmd.buf, command, bytes_written)) { - printk("%s: failed to copy data to user buffer\n", __FUNCTION__); + printk("%s: failed to copy data to user buffer\n", + __FUNCTION__); ret = -EFAULT; } - } - else { + } else { /* Propagate the error */ ret = bytes_written; } @@ -1773,4 +2215,3 @@ exit: Sreturn ret; } #endif - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.h index 265658ed1..a2f9226df 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_priv_cmd.h @@ -14,20 +14,19 @@ #include "rwnx_defs.h" typedef struct _android_wifi_priv_cmd { - char *buf; - int used_len; - int total_len; + char *buf; + int used_len; + int total_len; } android_wifi_priv_cmd; #ifdef CONFIG_COMPAT typedef struct _compat_android_wifi_priv_cmd { - compat_caddr_t buf; - int used_len; - int total_len; + compat_caddr_t buf; + int used_len; + int total_len; } compat_android_wifi_priv_cmd; #endif /* CONFIG_COMPAT */ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd); #endif /* _AIC_PRIV_CMD_H_ */ - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.c index 7dead4b31..f30893d65 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.c @@ -9,17 +9,18 @@ #include #include #include "rwnx_version_gen.h" +#include "rwnx_msg_tx.h" #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) static struct wifi_ring_buffer_status ring_buffer[] = { { - .name = "aicwf_ring_buffer0", - .flags = 0, - .ring_id = 0, - .verbose_level = 0, - .written_bytes = 0, - .read_bytes = 0, + .name = "aicwf_ring_buffer0", + .flags = 0, + .ring_id = 0, + .verbose_level = 0, + .written_bytes = 0, + .read_bytes = 0, .written_records = 0, }, }; @@ -28,18 +29,19 @@ static struct wlan_driver_wake_reason_cnt_t wake_reason_cnt = { .total_cmd_event_wake = 10, }; -enum apf_attributes { - APF_ATTRIBUTE_VERSION, - APF_ATTRIBUTE_MAX_LEN, - APF_ATTRIBUTE_PROGRAM, - APF_ATTRIBUTE_PROGRAM_LEN, - APF_ATTRIBUTE_MAX -}; - #endif -int aic_dev_start_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u8 mkeep_alive_id, u8 *ip_pkt, u16 ip_pkt_len, u8 *src_mac, u8 *dst_mac, u32 period_msec) +#ifdef CONFIG_APF +#define AIC_APF_MEM_SIZE 2048 +#define AIC_APF_VERSION 4 + +static char apfProgram[AIC_APF_MEM_SIZE]; +#endif + +int aic_dev_start_mkeep_alive(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, u8 mkeep_alive_id, + u8 *ip_pkt, u16 ip_pkt_len, u8 *src_mac, + u8 *dst_mac, u32 period_msec) { u8 *data, *pos; @@ -66,9 +68,10 @@ int aic_dev_start_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif return 0; } -int aic_dev_stop_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, u8 mkeep_alive_id) +int aic_dev_stop_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, + u8 mkeep_alive_id) { - int res = -1; + int res = -1; /* * The mkeep_alive packet is for STA interface only; if the bss is configured as AP, @@ -85,8 +88,9 @@ int aic_dev_stop_mkeep_alive(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, } #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) -static int aicwf_vendor_start_mkeep_alive(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_start_mkeep_alive(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { /* max size of IP packet for keep alive */ const int MKEEP_ALIVE_IP_PKT_MAX = 256; @@ -104,7 +108,7 @@ static int aicwf_vendor_start_mkeep_alive(struct wiphy *wiphy, struct wireless_d gfp_t kflags = in_atomic() ? GFP_ATOMIC : GFP_KERNEL; printk("%s\n", __func__); - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case MKEEP_ALIVE_ATTRIBUTE_ID: @@ -141,7 +145,8 @@ static int aicwf_vendor_start_mkeep_alive(struct wiphy *wiphy, struct wireless_d period_msec = nla_get_u32(iter); break; default: - pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); ret = -EINVAL; goto exit; } @@ -153,8 +158,9 @@ static int aicwf_vendor_start_mkeep_alive(struct wiphy *wiphy, struct wireless_d goto exit; } - ret = aic_dev_start_mkeep_alive(rwnx_hw, rwnx_vif, mkeep_alive_id, ip_pkt, ip_pkt_len, src_mac, - dst_mac, period_msec); + ret = aic_dev_start_mkeep_alive(rwnx_hw, rwnx_vif, mkeep_alive_id, + ip_pkt, ip_pkt_len, src_mac, dst_mac, + period_msec); if (ret < 0) { printk("start_mkeep_alive is failed ret: %d\n", ret); } @@ -167,8 +173,9 @@ exit: return ret; } -static int aicwf_vendor_stop_mkeep_alive(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_stop_mkeep_alive(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret = 0, rem, type; u8 mkeep_alive_id = 0; @@ -177,14 +184,15 @@ static int aicwf_vendor_stop_mkeep_alive(struct wiphy *wiphy, struct wireless_de struct rwnx_vif *rwnx_vif = container_of(wdev, struct rwnx_vif, wdev); printk("%s\n", __func__); - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case MKEEP_ALIVE_ATTRIBUTE_ID: mkeep_alive_id = nla_get_u8(iter); break; default: - pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); ret = -EINVAL; break; } @@ -199,30 +207,33 @@ static int aicwf_vendor_stop_mkeep_alive(struct wiphy *wiphy, struct wireless_de } static int aicwf_vendor_get_ver(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) + const void *data, int len) { int ret = 0, rem, type; const struct nlattr *iter; int payload = 0; char version[128]; - int attr = -1; + int attr = -1; struct sk_buff *reply; - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case LOGGER_ATTRIBUTE_DRIVER_VER: - memcpy(version, RWNX_VERS_BANNER, sizeof(RWNX_VERS_BANNER)); + memcpy(version, RWNX_VERS_BANNER, + sizeof(RWNX_VERS_BANNER)); payload = strlen(version); attr = LOGGER_ATTRIBUTE_DRIVER_VER; break; case LOGGER_ATTRIBUTE_FW_VER: - memcpy(version, wiphy->fw_version, sizeof(wiphy->fw_version)); + memcpy(version, wiphy->fw_version, + sizeof(wiphy->fw_version)); payload = strlen(version); attr = LOGGER_ATTRIBUTE_FW_VER; break; default: - AICWFDBG(LOGERROR, "%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + AICWFDBG(LOGERROR, "%s(%d), Unknown type: %d\n", + __func__, __LINE__, type); return -EINVAL; } } @@ -235,8 +246,7 @@ static int aicwf_vendor_get_ver(struct wiphy *wiphy, struct wireless_dev *wdev, if (!reply) return -ENOMEM; - if (nla_put(reply, attr, - payload, version)) { + if (nla_put(reply, attr, payload, version)) { wiphy_err(wiphy, "%s put version error\n", __func__); goto out_put_fail; } @@ -251,8 +261,9 @@ out_put_fail: return -EMSGSIZE; } -static int aicwf_vendor_subcmd_get_channel_list(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_subcmd_get_channel_list(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret = 0, rem, type; const struct nlattr *iter; @@ -262,11 +273,14 @@ static int aicwf_vendor_subcmd_get_channel_list(struct wiphy *wiphy, struct wire int payload; int i = 0; struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); - struct ieee80211_supported_band *rwnx_band_2GHz = rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; - struct ieee80211_supported_band *rwnx_band_5GHz = rwnx_hw->wiphy->bands[NL80211_BAND_5GHZ]; + struct ieee80211_supported_band *rwnx_band_2GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *rwnx_band_5GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_5GHZ]; num_channels += rwnx_band_2GHz->n_channels; - num_channels += (rwnx_hw->band_5g_support) ? rwnx_band_5GHz->n_channels : 0; + num_channels += + (rwnx_hw->band_5g_support) ? rwnx_band_5GHz->n_channels : 0; channel_list = (int *)kzalloc(sizeof(int) * num_channels, GFP_KERNEL); if (!channel_list) @@ -280,27 +294,32 @@ static int aicwf_vendor_subcmd_get_channel_list(struct wiphy *wiphy, struct wire payload = sizeof(num_channels) + sizeof(int) * num_channels + 4; - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case GSCAN_ATTRIBUTE_BAND: - reply = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, payload); + reply = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, + payload); if (!reply) return -ENOMEM; - if (nla_put_u32(reply, GSCAN_ATTRIBUTE_NUM_CHANNELS, num_channels)) + if (nla_put_u32(reply, GSCAN_ATTRIBUTE_NUM_CHANNELS, + num_channels)) goto out_put_fail; - if (nla_put(reply, GSCAN_ATTRIBUTE_CHANNEL_LIST, sizeof(int) * num_channels, channel_list)) + if (nla_put(reply, GSCAN_ATTRIBUTE_CHANNEL_LIST, + sizeof(int) * num_channels, channel_list)) goto out_put_fail; ret = cfg80211_vendor_cmd_reply(reply); if (ret) - wiphy_err(wiphy, "%s reply cmd error\n", __func__); + wiphy_err(wiphy, "%s reply cmd error\n", + __func__); break; default: - pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); return -EINVAL; } } @@ -314,20 +333,46 @@ out_put_fail: return -EMSGSIZE; } -static int aicwf_vendor_subcmd_set_country_code(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, + char *alpha2); + +static int aicwf_vendor_subcmd_set_country_code(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret = 0, rem, type; const struct nlattr *iter; + struct ieee80211_regdomain *regdomain; + char *country = NULL; + struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case ANDR_WIFI_ATTRIBUTE_COUNTRY: - printk("%s(%d), ANDR_WIFI_ATTRIBUTE_COUNTRY: %s\n", __func__, __LINE__, (char *)nla_data(iter)); + printk("%s(%d), ANDR_WIFI_ATTRIBUTE_COUNTRY: %s\n", + __func__, __LINE__, (char *)nla_data(iter)); + country = (char *)nla_data(iter); + + AICWFDBG(LOGINFO, "%s country code:%c%c\n", __func__, + country[0], country[1]); + + regdomain = + getRegdomainFromRwnxDB(rwnx_hw->wiphy, country); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) + if ((ret = regulatory_set_wiphy_regd(rwnx_hw->wiphy, + regdomain))) { + printk("regulatory_set_wiphy_regd fail \r\n"); + } +#else + wiphy_apply_custom_regulatory(rwnx_hw->wiphy, + regdomain); +#endif + break; default: - pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); return -EINVAL; } } @@ -339,8 +384,9 @@ static int aicwf_vendor_subcmd_set_country_code(struct wiphy *wiphy, struct wire return ret; } -static int aicwf_vendor_logger_trigger_memory_dump(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_trigger_memory_dump(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { /* TODO * Add handle in the future! @@ -348,8 +394,9 @@ static int aicwf_vendor_logger_trigger_memory_dump(struct wiphy *wiphy, struct w return 0; } -static int aicwf_vendor_subcmd_get_feature_set(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_subcmd_get_feature_set(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret; struct sk_buff *reply; @@ -378,7 +425,7 @@ static int aicwf_vendor_subcmd_get_feature_set(struct wiphy *wiphy, struct wirel /*bit 4:P2P*/ if ((wiphy->interface_modes & BIT(NL80211_IFTYPE_P2P_CLIENT)) && - (wiphy->interface_modes & BIT(NL80211_IFTYPE_P2P_GO))) + (wiphy->interface_modes & BIT(NL80211_IFTYPE_P2P_GO))) feature |= WIFI_FEATURE_P2P; /*bit 5:soft AP feature supported*/ @@ -391,6 +438,9 @@ static int aicwf_vendor_subcmd_get_feature_set(struct wiphy *wiphy, struct wirel /*bit 21:WiFi mkeep_alive*/ feature |= WIFI_FEATURE_MKEEP_ALIVE; +#ifdef AICWF_LATENCY_MODE + feature |= WIFI_FEATURE_SET_LATENCY_MODE; +#endif if (nla_put_u32(reply, ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET, feature)) { wiphy_err(wiphy, "%s put u32 error\n", __func__); goto out_put_fail; @@ -407,8 +457,9 @@ out_put_fail: return -EMSGSIZE; } -static int aicwf_vendor_logger_get_feature(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_get_feature(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret; struct sk_buff *reply; @@ -442,13 +493,15 @@ out_put_fail: return -EMSGSIZE; } -static int aicwf_vendor_logger_get_ring_status(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_get_ring_status(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret; struct sk_buff *reply; uint32_t payload; - uint32_t ring_buffer_nums = sizeof(ring_buffer) / sizeof(ring_buffer[0]); + uint32_t ring_buffer_nums = + sizeof(ring_buffer) / sizeof(ring_buffer[0]); payload = sizeof(ring_buffer_nums) + sizeof(ring_buffer); reply = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, payload); @@ -461,7 +514,8 @@ static int aicwf_vendor_logger_get_ring_status(struct wiphy *wiphy, struct wirel goto out_put_fail; } - if (nla_put(reply, LOGGER_ATTRIBUTE_RING_STATUS, sizeof(ring_buffer), ring_buffer)) { + if (nla_put(reply, LOGGER_ATTRIBUTE_RING_STATUS, sizeof(ring_buffer), + ring_buffer)) { wiphy_err(wiphy, "put skb failed\n"); goto out_put_fail; } @@ -477,14 +531,15 @@ out_put_fail: return -EMSGSIZE; } -static int aicwf_vendor_logger_start_logging(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_start_logging(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret = 0, rem, type, intval, size, i; const struct nlattr *iter; struct wifi_ring_buffer_status rb; - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case LOGGER_ATTRIBUTE_LOG_LEVEL: @@ -503,7 +558,8 @@ static int aicwf_vendor_logger_start_logging(struct wiphy *wiphy, struct wireles strcpy(rb.name, nla_data(iter)); break; default: - AICWFDBG(LOGERROR, "%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + AICWFDBG(LOGERROR, "%s(%d), Unknown type: %d\n", + __func__, __LINE__, type); return -EINVAL; } } @@ -523,21 +579,23 @@ static int aicwf_vendor_logger_start_logging(struct wiphy *wiphy, struct wireles return ret; } -static int aicwf_vendor_logger_get_ring_data(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_get_ring_data(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret = 0, rem, type, i; const struct nlattr *iter; struct wifi_ring_buffer_status rb; - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case LOGGER_ATTRIBUTE_RING_NAME: strcpy(rb.name, nla_data(iter)); break; default: - pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); return -EINVAL; } } @@ -557,8 +615,9 @@ static int aicwf_vendor_logger_get_ring_data(struct wiphy *wiphy, struct wireles return ret; } -static int aicwf_vendor_logger_get_wake_reason_stats(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_get_wake_reason_stats(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret; struct sk_buff *reply; @@ -573,7 +632,8 @@ static int aicwf_vendor_logger_get_wake_reason_stats(struct wiphy *wiphy, struct /* TODO * Add handle in the future */ - if (nla_put_u32(reply, WAKE_STAT_ATTRIBUTE_TOTAL_CMD_EVENT, wake_reason_cnt.total_cmd_event_wake)) + if (nla_put_u32(reply, WAKE_STAT_ATTRIBUTE_TOTAL_CMD_EVENT, + wake_reason_cnt.total_cmd_event_wake)) goto out_put_fail; ret = cfg80211_vendor_cmd_reply(reply); @@ -587,8 +647,9 @@ out_put_fail: return -EMSGSIZE; } -static int aicwf_vendor_logger_get_tx_pkt_fates(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_get_tx_pkt_fates(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { #if 0 int ret = 0, rem, type; @@ -618,8 +679,9 @@ static int aicwf_vendor_logger_get_tx_pkt_fates(struct wiphy *wiphy, struct wire return 0; } -static int aicwf_vendor_logger_get_rx_pkt_fates(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_logger_get_rx_pkt_fates(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { #if 0 int ret = 0, rem, type; @@ -649,8 +711,46 @@ static int aicwf_vendor_logger_get_rx_pkt_fates(struct wiphy *wiphy, struct wire return 0; } -static int aicwf_vendor_logger_start_pkt_fate_monitoring(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +#ifdef AICWF_LATENCY_MODE +static int aicwf_vendor_subcmd_set_latency_mode(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) +{ + int err = 0, rem, type; + u32 latency_mode; + const struct nlattr *iter; + struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + + nla_for_each_attr (iter, data, len, rem) { + type = nla_type(iter); + switch (type) { + case ANDR_WIFI_ATTRIBUTE_LATENCY_MODE: + latency_mode = nla_get_u32(iter); + printk("%s,Setting latency mode %d\n", __func__, + latency_mode); +#ifdef AICWF_SDIO_SUPPORT + if (latency_mode) { + rwnx_send_me_set_lp_level(rwnx_hw, 0, 1); + } else { + rwnx_send_me_set_lp_level(rwnx_hw, 1, 0); + } +#endif + break; + default: + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); + return err; + } + } + + return err; +} +#endif + +static int +aicwf_vendor_logger_start_pkt_fate_monitoring(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { /* TODO * Add handle in the future @@ -658,61 +758,155 @@ static int aicwf_vendor_logger_start_pkt_fate_monitoring(struct wiphy *wiphy, st return 0; } -static int aicwf_vendor_apf_subcmd_get_capabilities(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +#ifdef CONFIG_APF +static int aicwf_vendor_apf_subcmd_get_capabilities(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { - int ver, max_len; - int ret = 0; - struct sk_buff *skb = NULL; - - /* APF version */ - ver = 4; - /* APF memory size limit */ - max_len = 2048; + int ret; + struct sk_buff *reply; + uint32_t payload; + printk("%s\n", __func__); - - skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, max_len); - - ret = nla_put_u32(skb, APF_ATTRIBUTE_VERSION, ver); - if (ret < 0) { - AICWFDBG(LOGERROR, "Failed to put APF_ATTRIBUTE_VERSION, ret:%d\n", ret); - goto fail; - } - ret = nla_put_u32(skb, APF_ATTRIBUTE_MAX_LEN, max_len); - if (ret < 0) { - AICWFDBG(LOGERROR, "Failed to put APF_ATTRIBUTE_MAX_LEN, ret:%d\n", ret); - goto fail; + /* APF_ATTRIBUTE_VERSION + APF_ATTRIBUTE_MAX_LEN */ + payload = sizeof(u32) * 2; + reply = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, payload); + + if (!reply) + return -ENOMEM; + + if (nla_put_u32(reply, APF_ATTRIBUTE_VERSION, AIC_APF_VERSION)) + goto out_put_fail; + + if (nla_put_u32(reply, APF_ATTRIBUTE_MAX_LEN, AIC_APF_MEM_SIZE)) + goto out_put_fail; + + ret = cfg80211_vendor_cmd_reply(reply); + if (ret) + wiphy_err(wiphy, "reply cmd error\n"); + + return ret; + +out_put_fail: + kfree_skb(reply); + return -EMSGSIZE; +} + +static int aicwf_vendor_apf_set_filter(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) +{ + int ret = 0, rem, type; + const struct nlattr *iter; + unsigned int mProgramLen = 0; + struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + + printk("%s\n", __func__); + + nla_for_each_attr (iter, data, len, rem) { + type = nla_type(iter); + switch (type) { + case APF_ATTRIBUTE_PROGRAM_LEN: + memcpy(&mProgramLen, nla_data(iter), + sizeof(unsigned int)); + ret = (mProgramLen > 0 && + mProgramLen <= AIC_APF_MEM_SIZE) ? + 0 : + -EINVAL; + break; + case APF_ATTRIBUTE_PROGRAM: + if (mProgramLen > AIC_APF_MEM_SIZE || + mProgramLen == 0) { + printk("%s: apf program size invalid: %d (should > 0 and <= %d)\n", + __func__, mProgramLen, AIC_APF_MEM_SIZE); + return -EINVAL; + } + + memcpy(apfProgram, nla_data(iter), mProgramLen); + ret = rwnx_send_set_apf_prog_req(rwnx_hw, apfProgram, + mProgramLen); + break; + default: + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); + return -EINVAL; + } } - ret = cfg80211_vendor_cmd_reply(skb); - if (unlikely(ret)) { - AICWFDBG(LOGERROR, "vendor command reply failed, ret=%d\n", ret); - } - -fail: - /* TODO - * Add handle in the future - */ return ret; } -static int aicwf_vendor_sub_cmd_set_mac(struct wiphy *wiphy, struct wireless_dev *wdev, - const void *data, int len) +static int aicwf_vendor_apf_read_filter_data(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) +{ + struct sk_buff *reply; + int ret, payload, apf_mem_size; + struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + + printk("%s\n", __func__); + + apf_mem_size = AIC_APF_MEM_SIZE; + payload = sizeof(u32) + apf_mem_size; + + ret = rwnx_send_get_apf_prog_req(rwnx_hw, apfProgram, apf_mem_size); + if (ret != 0) { + pr_err("%s, Failed to read apf mem from firmware, ret = %d\n", + __func__, ret); + return ret; + } + + reply = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, payload); + if (!reply) + return -ENOMEM; + + ret = nla_put_u32(reply, APF_ATTRIBUTE_PROGRAM_LEN, apf_mem_size); + if (ret < 0) { + pr_err("%s, Failed to put APF_ATTRIBUTE_MAX_LEN, ret = %d\n", + __func__, ret); + goto out_put_fail; + } + + /* copy the full apf mem */ + ret = nla_put(reply, APF_ATTRIBUTE_PROGRAM, apf_mem_size, + &apfProgram[0]); + if (ret < 0) { + pr_err("%s, Failed to put APF_ATTRIBUTE_PROGRAM, ret = %d\n", + __func__, ret); + goto out_put_fail; + } + + ret = cfg80211_vendor_cmd_reply(reply); + if (ret) + wiphy_err(wiphy, "reply cmd error\n"); + + return ret; + +out_put_fail: + kfree_skb(reply); + return -EMSGSIZE; +} +#endif + +static int aicwf_vendor_sub_cmd_set_mac(struct wiphy *wiphy, + struct wireless_dev *wdev, + const void *data, int len) { int ret = 0, rem, type; const struct nlattr *iter; u8 mac[ETH_ALEN]; - nla_for_each_attr(iter, data, len, rem) { + nla_for_each_attr (iter, data, len, rem) { type = nla_type(iter); switch (type) { case WIFI_VENDOR_ATTR_DRIVER_MAC_ADDR: memcpy(mac, nla_data(iter), ETH_ALEN); printk("%s, %02X:%02X:%02X:%02X:%02X:%02X\n", __func__, - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); break; default: - pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); + pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, + type); return -EINVAL; } } @@ -726,52 +920,63 @@ static int aicwf_vendor_sub_cmd_set_mac(struct wiphy *wiphy, struct wireless_dev #endif static const struct nla_policy -aicwf_cfg80211_mkeep_alive_policy[MKEEP_ALIVE_ATTRIBUTE_MAX+1] = { - [0] = {.type = NLA_UNSPEC }, - [MKEEP_ALIVE_ATTRIBUTE_ID] = { .type = NLA_U8 }, - [MKEEP_ALIVE_ATTRIBUTE_IP_PKT] = { .type = NLA_MSECS }, - [MKEEP_ALIVE_ATTRIBUTE_IP_PKT_LEN] = { .type = NLA_U16 }, - [MKEEP_ALIVE_ATTRIBUTE_SRC_MAC_ADDR] = { .type = NLA_MSECS, - .len = ETH_ALEN }, - [MKEEP_ALIVE_ATTRIBUTE_DST_MAC_ADDR] = { .type = NLA_MSECS, - .len = ETH_ALEN }, - [MKEEP_ALIVE_ATTRIBUTE_PERIOD_MSEC] = { .type = NLA_U32 }, -}; + aicwf_cfg80211_mkeep_alive_policy[MKEEP_ALIVE_ATTRIBUTE_MAX + 1] = { + [0] = { .type = NLA_UNSPEC }, + [MKEEP_ALIVE_ATTRIBUTE_ID] = { .type = NLA_U8 }, + [MKEEP_ALIVE_ATTRIBUTE_IP_PKT] = { .type = NLA_MSECS }, + [MKEEP_ALIVE_ATTRIBUTE_IP_PKT_LEN] = { .type = NLA_U16 }, + [MKEEP_ALIVE_ATTRIBUTE_SRC_MAC_ADDR] = { .type = NLA_MSECS, + .len = ETH_ALEN }, + [MKEEP_ALIVE_ATTRIBUTE_DST_MAC_ADDR] = { .type = NLA_MSECS, + .len = ETH_ALEN }, + [MKEEP_ALIVE_ATTRIBUTE_PERIOD_MSEC] = { .type = NLA_U32 }, + }; static const struct nla_policy -aicwf_cfg80211_logger_policy[LOGGER_ATTRIBUTE_MAX + 1] = { - [0] = {.type = NLA_UNSPEC }, - [LOGGER_ATTRIBUTE_DRIVER_VER] = { .type = NLA_BINARY }, - [LOGGER_ATTRIBUTE_FW_VER] = { .type = NLA_BINARY }, - [LOGGER_ATTRIBUTE_LOG_LEVEL] = { .type = NLA_U32 }, - [LOGGER_ATTRIBUTE_RING_FLAGS] = { .type = NLA_U32 }, - [LOGGER_ATTRIBUTE_LOG_TIME_INTVAL] = { .type = NLA_U32 }, - [LOGGER_ATTRIBUTE_LOG_MIN_DATA_SIZE] = { .type = NLA_U32 }, - [LOGGER_ATTRIBUTE_RING_NAME] = { .type = NLA_STRING }, -}; + aicwf_cfg80211_logger_policy[LOGGER_ATTRIBUTE_MAX + 1] = { + [0] = { .type = NLA_UNSPEC }, + [LOGGER_ATTRIBUTE_DRIVER_VER] = { .type = NLA_BINARY }, + [LOGGER_ATTRIBUTE_FW_VER] = { .type = NLA_BINARY }, + [LOGGER_ATTRIBUTE_LOG_LEVEL] = { .type = NLA_U32 }, + [LOGGER_ATTRIBUTE_RING_FLAGS] = { .type = NLA_U32 }, + [LOGGER_ATTRIBUTE_LOG_TIME_INTVAL] = { .type = NLA_U32 }, + [LOGGER_ATTRIBUTE_LOG_MIN_DATA_SIZE] = { .type = NLA_U32 }, + [LOGGER_ATTRIBUTE_RING_NAME] = { .type = NLA_STRING }, + }; + +#ifdef CONFIG_APF +static const struct nla_policy + aicwf_cfg80211_apf_policy[APF_ATTRIBUTE_MAX + 1] = { + [0] = { .type = NLA_UNSPEC }, + [APF_ATTRIBUTE_VERSION] = { .type = NLA_U32 }, + [APF_ATTRIBUTE_MAX_LEN] = { .type = NLA_U32 }, + [APF_ATTRIBUTE_PROGRAM] = { .type = NLA_BINARY }, + [APF_ATTRIBUTE_PROGRAM_LEN] = { .type = NLA_U32 }, + }; +#endif static const struct nla_policy -aicwf_cfg80211_subcmd_policy[GSCAN_ATTRIBUTE_MAX + 1] = { - [0] = {.type = NLA_UNSPEC }, - [GSCAN_ATTRIBUTE_BAND] = { .type = NLA_U32 }, -}; + aicwf_cfg80211_subcmd_policy[GSCAN_ATTRIBUTE_MAX + 1] = { + [0] = { .type = NLA_UNSPEC }, + [GSCAN_ATTRIBUTE_BAND] = { .type = NLA_U32 }, + }; static const struct nla_policy -aicwf_cfg80211_andr_wifi_policy[ANDR_WIFI_ATTRIBUTE_MAX + 1] = { - [0] = {.type = NLA_UNSPEC }, - [ANDR_WIFI_ATTRIBUTE_COUNTRY] = { .type = NLA_STRING }, -}; + aicwf_cfg80211_andr_wifi_policy[ANDR_WIFI_ATTRIBUTE_MAX + 1] = { + [0] = { .type = NLA_UNSPEC }, + [ANDR_WIFI_ATTRIBUTE_COUNTRY] = { .type = NLA_STRING }, + }; static const struct nla_policy -aicwf_cfg80211_subcmd_set_mac_policy[WIFI_VENDOR_ATTR_DRIVER_MAX + 1] = { - [0] = {.type = NLA_UNSPEC }, - [WIFI_VENDOR_ATTR_DRIVER_MAC_ADDR] = { .type = NLA_MSECS, .len = ETH_ALEN }, -}; + aicwf_cfg80211_subcmd_set_mac_policy[WIFI_VENDOR_ATTR_DRIVER_MAX + 1] = { + [0] = { .type = NLA_UNSPEC }, + [WIFI_VENDOR_ATTR_DRIVER_MAC_ADDR] = { .type = NLA_MSECS, + .len = ETH_ALEN }, + }; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) -static int aicwf_dump_interface(struct wiphy *wiphy, - struct wireless_dev *wdev, struct sk_buff *skb, - const void *data, int data_len, - unsigned long *storage) +static int aicwf_dump_interface(struct wiphy *wiphy, struct wireless_dev *wdev, + struct sk_buff *skb, const void *data, + int data_len, unsigned long *storage) { return 0; } @@ -779,87 +984,67 @@ static int aicwf_dump_interface(struct wiphy *wiphy, #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) const struct wiphy_vendor_command aicwf_vendor_cmd[] = { - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = WIFI_OFFLOAD_SUBCMD_START_MKEEP_ALIVE - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_start_mkeep_alive, + { { .vendor_id = GOOGLE_OUI, + .subcmd = WIFI_OFFLOAD_SUBCMD_START_MKEEP_ALIVE }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_start_mkeep_alive, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, + .dumpit = aicwf_dump_interface, #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_mkeep_alive_policy, - .maxattr = MKEEP_ALIVE_ATTRIBUTE_MAX + .policy = aicwf_cfg80211_mkeep_alive_policy, + .maxattr = MKEEP_ALIVE_ATTRIBUTE_MAX +#endif + }, + { { .vendor_id = GOOGLE_OUI, + .subcmd = WIFI_OFFLOAD_SUBCMD_STOP_MKEEP_ALIVE }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_stop_mkeep_alive, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + .dumpit = aicwf_dump_interface, +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) + .policy = aicwf_cfg80211_mkeep_alive_policy, + .maxattr = MKEEP_ALIVE_ATTRIBUTE_MAX +#endif + }, + { { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_GET_VER }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_get_ver, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + .dumpit = aicwf_dump_interface, +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) + .policy = aicwf_cfg80211_logger_policy, + .maxattr = LOGGER_ATTRIBUTE_MAX +#endif + }, + { { .vendor_id = GOOGLE_OUI, .subcmd = GSCAN_SUBCMD_GET_CHANNEL_LIST }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_subcmd_get_channel_list, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + .dumpit = aicwf_dump_interface, +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) + .policy = aicwf_cfg80211_subcmd_policy, + .maxattr = GSCAN_ATTRIBUTE_MAX +#endif + }, + { { .vendor_id = GOOGLE_OUI, .subcmd = WIFI_SUBCMD_SET_COUNTRY_CODE }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_subcmd_set_country_code, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + .dumpit = aicwf_dump_interface, +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) + .policy = aicwf_cfg80211_andr_wifi_policy, + .maxattr = ANDR_WIFI_ATTRIBUTE_MAX #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = WIFI_OFFLOAD_SUBCMD_STOP_MKEEP_ALIVE - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_stop_mkeep_alive, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_mkeep_alive_policy, - .maxattr = MKEEP_ALIVE_ATTRIBUTE_MAX -#endif - }, - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_VER - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_get_ver, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_logger_policy, - .maxattr = LOGGER_ATTRIBUTE_MAX -#endif - }, - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = GSCAN_SUBCMD_GET_CHANNEL_LIST - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_subcmd_get_channel_list, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_subcmd_policy, - .maxattr = GSCAN_ATTRIBUTE_MAX -#endif - }, - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = WIFI_SUBCMD_SET_COUNTRY_CODE - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_subcmd_set_country_code, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_andr_wifi_policy, - .maxattr = ANDR_WIFI_ATTRIBUTE_MAX -#endif - }, - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_TRIGGER_MEM_DUMP - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_TRIGGER_MEM_DUMP }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_trigger_memory_dump, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -869,11 +1054,10 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = WIFI_SUBCMD_GET_FEATURE_SET - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, + .subcmd = WIFI_SUBCMD_GET_FEATURE_SET }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_subcmd_get_feature_set, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -883,11 +1067,9 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_FEATURE - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_GET_FEATURE }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_get_feature, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -897,11 +1079,9 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_RING_STATUS - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_GET_RING_STATUS }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_get_ring_status, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -910,42 +1090,33 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { .policy = VENDOR_CMD_RAW_DATA, #endif }, - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_START_LOGGING - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_logger_start_logging, + { { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_START_LOGGING }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_logger_start_logging, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, + .dumpit = aicwf_dump_interface, #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_logger_policy, - .maxattr = LOGGER_ATTRIBUTE_MAX + .policy = aicwf_cfg80211_logger_policy, + .maxattr = LOGGER_ATTRIBUTE_MAX +#endif + }, + { { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_GET_RING_DATA }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_logger_get_ring_data, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) + .dumpit = aicwf_dump_interface, +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) + .policy = aicwf_cfg80211_logger_policy, + .maxattr = LOGGER_ATTRIBUTE_MAX #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_RING_DATA - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, - .doit = aicwf_vendor_logger_get_ring_data, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_logger_policy, - .maxattr = LOGGER_ATTRIBUTE_MAX -#endif - }, - { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_WAKE_REASON_STATS - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, + .subcmd = LOGGER_GET_WAKE_REASON_STATS }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_get_wake_reason_stats, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -954,26 +1125,45 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { .policy = VENDOR_CMD_RAW_DATA, #endif }, +#ifdef CONFIG_APF { - { - .vendor_id = GOOGLE_OUI, - .subcmd = APF_SUBCMD_GET_CAPABILITIES - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, + .subcmd = APF_SUBCMD_GET_CAPABILITIES }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_apf_subcmd_get_capabilities, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = VENDOR_CMD_RAW_DATA, + .policy = aicwf_cfg80211_apf_policy, + .maxattr = APF_ATTRIBUTE_MAX, #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_START_PKT_FATE_MONITORING - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, .subcmd = APF_SUBCMD_SET_FILTER }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_apf_set_filter, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) + .policy = aicwf_cfg80211_apf_policy, + .maxattr = APF_ATTRIBUTE_MAX, +#endif + }, + { { .vendor_id = GOOGLE_OUI, .subcmd = APF_SUBCMD_READ_FILTER_DATA }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_apf_read_filter_data, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0)) + .policy = aicwf_cfg80211_apf_policy, + .maxattr = APF_ATTRIBUTE_MAX +#endif /* LINUX_VERSION >= 5.3 */ + }, +#endif + { + { .vendor_id = GOOGLE_OUI, + .subcmd = LOGGER_START_PKT_FATE_MONITORING }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_start_pkt_fate_monitoring, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -983,11 +1173,9 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_TX_PKT_FATES - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_GET_TX_PKT_FATES }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_get_tx_pkt_fates, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -997,11 +1185,9 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = LOGGER_GET_RX_PKT_FATES - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + { .vendor_id = GOOGLE_OUI, .subcmd = LOGGER_GET_RX_PKT_FATES }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_NETDEV, .doit = aicwf_vendor_logger_get_rx_pkt_fates, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -1011,11 +1197,10 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { #endif }, { - { - .vendor_id = GOOGLE_OUI, - .subcmd = VENDOR_NL80211_SUBCMD_SET_MAC - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_RUNNING, + { .vendor_id = GOOGLE_OUI, + .subcmd = VENDOR_NL80211_SUBCMD_SET_MAC }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_RUNNING, .doit = aicwf_vendor_sub_cmd_set_mac, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) .dumpit = aicwf_dump_interface, @@ -1024,29 +1209,36 @@ const struct wiphy_vendor_command aicwf_vendor_cmd[] = { .policy = aicwf_cfg80211_subcmd_set_mac_policy, .maxattr = WIFI_VENDOR_ATTR_DRIVER_MAX, #endif - }, + }, { - { - .vendor_id = BRCM_OUI, - .subcmd = VENDOR_NL80211_SUBCMD_SET_MAC - }, - .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_RUNNING, - .doit = aicwf_vendor_sub_cmd_set_mac, + { .vendor_id = BRCM_OUI, + .subcmd = VENDOR_NL80211_SUBCMD_SET_MAC }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | + WIPHY_VENDOR_CMD_NEED_RUNNING, + .doit = aicwf_vendor_sub_cmd_set_mac, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) - .dumpit = aicwf_dump_interface, + .dumpit = aicwf_dump_interface, #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) - .policy = aicwf_cfg80211_subcmd_set_mac_policy, - .maxattr = WIFI_VENDOR_ATTR_DRIVER_MAX, + .policy = aicwf_cfg80211_subcmd_set_mac_policy, + .maxattr = WIFI_VENDOR_ATTR_DRIVER_MAX, +#endif + }, +#ifdef AICWF_LATENCY_MODE + { { .vendor_id = GOOGLE_OUI, .subcmd = WIFI_SUBCMD_SET_LATENCY_MODE }, + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV, + .doit = aicwf_vendor_subcmd_set_latency_mode, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0)) + .policy = aicwf_cfg80211_andr_wifi_policy, + .maxattr = ANDR_WIFI_ATTRIBUTE_MAX +#endif /* LINUX_VERSION >= 5.3 */ + }, #endif - }, - }; #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) -static const struct nl80211_vendor_cmd_info aicwf_vendor_events[] = { -}; +static const struct nl80211_vendor_cmd_info aicwf_vendor_events[] = {}; #endif int aicwf_vendor_init(struct wiphy *wiphy) diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.h index 0e1e3e0c7..2a9b4424b 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aic_vendor.h @@ -3,8 +3,8 @@ #include -#define GOOGLE_OUI 0x001A11 -#define BRCM_OUI 0x001018 +#define GOOGLE_OUI 0x001A11 +#define BRCM_OUI 0x001018 typedef enum { START_MKEEP_ALIVE, @@ -17,49 +17,49 @@ typedef enum { /* define all vendor startup commands between 0x0 and 0x0FFF */ VENDOR_NL80211_SUBCMD_RANGE_START = 0x0001, - VENDOR_NL80211_SUBCMD_RANGE_END = 0x0FFF, + VENDOR_NL80211_SUBCMD_RANGE_END = 0x0FFF, /* define all GScan related commands between 0x1000 and 0x10FF */ ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START = 0x1000, - ANDROID_NL80211_SUBCMD_GSCAN_RANGE_END = 0x10FF, + ANDROID_NL80211_SUBCMD_GSCAN_RANGE_END = 0x10FF, /* define all NearbyDiscovery related commands between 0x1100 and 0x11FF */ ANDROID_NL80211_SUBCMD_NBD_RANGE_START = 0x1100, - ANDROID_NL80211_SUBCMD_NBD_RANGE_END = 0x11FF, + ANDROID_NL80211_SUBCMD_NBD_RANGE_END = 0x11FF, /* define all RTT related commands between 0x1100 and 0x11FF */ ANDROID_NL80211_SUBCMD_RTT_RANGE_START = 0x1100, - ANDROID_NL80211_SUBCMD_RTT_RANGE_END = 0x11FF, + ANDROID_NL80211_SUBCMD_RTT_RANGE_END = 0x11FF, ANDROID_NL80211_SUBCMD_LSTATS_RANGE_START = 0x1200, - ANDROID_NL80211_SUBCMD_LSTATS_RANGE_END = 0x12FF, + ANDROID_NL80211_SUBCMD_LSTATS_RANGE_END = 0x12FF, /* define all Logger related commands between 0x1400 and 0x14FF */ ANDROID_NL80211_SUBCMD_DEBUG_RANGE_START = 0x1400, - ANDROID_NL80211_SUBCMD_DEBUG_RANGE_END = 0x14FF, + ANDROID_NL80211_SUBCMD_DEBUG_RANGE_END = 0x14FF, /* define all wifi offload related commands between 0x1600 and 0x16FF */ ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_START = 0x1600, - ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_END = 0x16FF, + ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_END = 0x16FF, /* define all NAN related commands between 0x1700 and 0x17FF */ ANDROID_NL80211_SUBCMD_NAN_RANGE_START = 0x1700, - ANDROID_NL80211_SUBCMD_NAN_RANGE_END = 0x17FF, + ANDROID_NL80211_SUBCMD_NAN_RANGE_END = 0x17FF, /* define all Android Packet Filter related commands between 0x1800 and 0x18FF */ ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_START = 0x1800, - ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_END = 0x18FF, + ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_END = 0x18FF, /* This is reserved for future usage */ } ANDROID_VENDOR_SUB_COMMAND; typedef enum { - WIFI_OFFLOAD_SUBCMD_START_MKEEP_ALIVE = ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_START, + WIFI_OFFLOAD_SUBCMD_START_MKEEP_ALIVE = + ANDROID_NL80211_SUBCMD_WIFI_OFFLOAD_RANGE_START, WIFI_OFFLOAD_SUBCMD_STOP_MKEEP_ALIVE, } WIFI_OFFLOAD_SUB_COMMAND; - enum mkeep_alive_attributes { MKEEP_ALIVE_ATTRIBUTE_ID = 0x1, MKEEP_ALIVE_ATTRIBUTE_IP_PKT, @@ -117,36 +117,53 @@ enum logger_attributes { LOGGER_ATTRIBUTE_MAX = LOGGER_ATTRIBUTE_AFTER_LAST - 1, }; +#ifdef CONFIG_APF +enum wifi_apf_attr { + APF_ATTRIBUTE_VERSION, + APF_ATTRIBUTE_MAX_LEN, + APF_ATTRIBUTE_PROGRAM, + APF_ATTRIBUTE_PROGRAM_LEN, + APF_ATTRIBUTE_LAST, + APF_ATTRIBUTE_MAX = APF_ATTRIBUTE_LAST - 1, +}; +#endif + enum wifi_sub_command { - GSCAN_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START, - GSCAN_SUBCMD_SET_CONFIG, /* 0x1001 */ - GSCAN_SUBCMD_SET_SCAN_CONFIG, /* 0x1002 */ - GSCAN_SUBCMD_ENABLE_GSCAN, /* 0x1003 */ - GSCAN_SUBCMD_GET_SCAN_RESULTS, /* 0x1004 */ - GSCAN_SUBCMD_SCAN_RESULTS, /* 0x1005 */ - GSCAN_SUBCMD_SET_HOTLIST, /* 0x1006 */ - GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG, /* 0x1007 */ - GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS, /* 0x1008 */ - GSCAN_SUBCMD_GET_CHANNEL_LIST, /* 0x1009 */ - WIFI_SUBCMD_GET_FEATURE_SET, /* 0x100A */ - WIFI_SUBCMD_GET_FEATURE_SET_MATRIX, /* 0x100B */ - WIFI_SUBCMD_SET_PNO_RANDOM_MAC_OUI, /* 0x100C */ - WIFI_SUBCMD_NODFS_SET, /* 0x100D */ - WIFI_SUBCMD_SET_COUNTRY_CODE, /* 0x100E */ + GSCAN_SUBCMD_GET_CAPABILITIES = + ANDROID_NL80211_SUBCMD_GSCAN_RANGE_START, + GSCAN_SUBCMD_SET_CONFIG, /* 0x1001 */ + GSCAN_SUBCMD_SET_SCAN_CONFIG, /* 0x1002 */ + GSCAN_SUBCMD_ENABLE_GSCAN, /* 0x1003 */ + GSCAN_SUBCMD_GET_SCAN_RESULTS, /* 0x1004 */ + GSCAN_SUBCMD_SCAN_RESULTS, /* 0x1005 */ + GSCAN_SUBCMD_SET_HOTLIST, /* 0x1006 */ + GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG, /* 0x1007 */ + GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS, /* 0x1008 */ + GSCAN_SUBCMD_GET_CHANNEL_LIST, /* 0x1009 */ + WIFI_SUBCMD_GET_FEATURE_SET, /* 0x100A */ + WIFI_SUBCMD_GET_FEATURE_SET_MATRIX, /* 0x100B */ + WIFI_SUBCMD_SET_PNO_RANDOM_MAC_OUI, /* 0x100C */ + WIFI_SUBCMD_NODFS_SET, /* 0x100D */ + WIFI_SUBCMD_SET_COUNTRY_CODE, /* 0x100E */ /* Add more sub commands here */ - GSCAN_SUBCMD_SET_EPNO_SSID, /* 0x100F */ - WIFI_SUBCMD_SET_SSID_WHITE_LIST, /* 0x1010 */ - WIFI_SUBCMD_SET_ROAM_PARAMS, /* 0x1011 */ - WIFI_SUBCMD_ENABLE_LAZY_ROAM, /* 0x1012 */ - WIFI_SUBCMD_SET_BSSID_PREF, /* 0x1013 */ - WIFI_SUBCMD_SET_BSSID_BLACKLIST, /* 0x1014 */ - GSCAN_SUBCMD_ANQPO_CONFIG, /* 0x1015 */ - WIFI_SUBCMD_SET_RSSI_MONITOR, /* 0x1016 */ - WIFI_SUBCMD_CONFIG_ND_OFFLOAD, /* 0x1017 */ + GSCAN_SUBCMD_SET_EPNO_SSID, /* 0x100F */ + WIFI_SUBCMD_SET_SSID_WHITE_LIST, /* 0x1010 */ + WIFI_SUBCMD_SET_ROAM_PARAMS, /* 0x1011 */ + WIFI_SUBCMD_ENABLE_LAZY_ROAM, /* 0x1012 */ + WIFI_SUBCMD_SET_BSSID_PREF, /* 0x1013 */ + WIFI_SUBCMD_SET_BSSID_BLACKLIST, /* 0x1014 */ + GSCAN_SUBCMD_ANQPO_CONFIG, /* 0x1015 */ + WIFI_SUBCMD_SET_RSSI_MONITOR, /* 0x1016 */ + WIFI_SUBCMD_CONFIG_ND_OFFLOAD, /* 0x1017 */ + WIFI_SUBCMD_SET_LATENCY_MODE, /* 0x1018 */ /* Add more sub commands here */ GSCAN_SUBCMD_MAX, - APF_SUBCMD_GET_CAPABILITIES = ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_START, + APF_SUBCMD_GET_CAPABILITIES = + ANDROID_NL80211_SUBCMD_PKT_FILTER_RANGE_START, APF_SUBCMD_SET_FILTER, +#ifdef CONFIG_APF + APF_SUBCMD_READ_FILTER_DATA, +#endif }; enum gscan_attributes { @@ -163,18 +180,18 @@ enum gscan_attributes { GSCAN_ATTRIBUTE_BAND = GSCAN_ATTRIBUTE_BUCKETS_BAND, GSCAN_ATTRIBUTE_ENABLE_FEATURE = 20, - GSCAN_ATTRIBUTE_SCAN_RESULTS_COMPLETE, /* indicates no more results */ - GSCAN_ATTRIBUTE_FLUSH_FEATURE, /* Flush all the configs */ + GSCAN_ATTRIBUTE_SCAN_RESULTS_COMPLETE, /* indicates no more results */ + GSCAN_ATTRIBUTE_FLUSH_FEATURE, /* Flush all the configs */ GSCAN_ENABLE_FULL_SCAN_RESULTS, GSCAN_ATTRIBUTE_REPORT_EVENTS, /* remaining reserved for additional attributes */ GSCAN_ATTRIBUTE_NUM_OF_RESULTS = 30, GSCAN_ATTRIBUTE_FLUSH_RESULTS, - GSCAN_ATTRIBUTE_SCAN_RESULTS, /* flat array of wifi_scan_result */ - GSCAN_ATTRIBUTE_SCAN_ID, /* indicates scan number */ - GSCAN_ATTRIBUTE_SCAN_FLAGS, /* indicates if scan was aborted */ - GSCAN_ATTRIBUTE_AP_FLAGS, /* flags on significant change event */ + GSCAN_ATTRIBUTE_SCAN_RESULTS, /* flat array of wifi_scan_result */ + GSCAN_ATTRIBUTE_SCAN_ID, /* indicates scan number */ + GSCAN_ATTRIBUTE_SCAN_FLAGS, /* indicates if scan was aborted */ + GSCAN_ATTRIBUTE_AP_FLAGS, /* flags on significant change event */ GSCAN_ATTRIBUTE_NUM_CHANNELS, GSCAN_ATTRIBUTE_CHANNEL_LIST, GSCAN_ATTRIBUTE_CH_BUCKET_BITMASK, @@ -190,6 +207,7 @@ enum andr_wifi_attributes { ANDR_WIFI_ATTRIBUTE_NODFS_SET, ANDR_WIFI_ATTRIBUTE_COUNTRY, ANDR_WIFI_ATTRIBUTE_ND_OFFLOAD_VALUE, + ANDR_WIFI_ATTRIBUTE_LATENCY_MODE, // Add more attribute here ANDR_WIFI_ATTRIBUTE_AFTER_LAST, ANDR_WIFI_ATTRIBUTE_MAX = ANDR_WIFI_ATTRIBUTE_AFTER_LAST - 1, @@ -197,45 +215,61 @@ enum andr_wifi_attributes { enum wifi_support_feature { /* Feature enums */ - WIFI_FEATURE_INFRA = 0x0001, /* Basic infrastructure mode */ - WIFI_FEATURE_INFRA_5G = 0x0002, /* Support for 5, GHz Band */ - WIFI_FEATURE_HOTSPOT = 0x0004, /* Support for GAS/ANQP */ - WIFI_FEATURE_P2P = 0x0008, /* Wifi-Direct */ - WIFI_FEATURE_SOFT_AP = 0x0010, /* Soft AP */ - WIFI_FEATURE_GSCAN = 0x0020, /* Google-Scan APIs */ - WIFI_FEATURE_NAN = 0x0040, /* Neighbor Awareness Networking */ - WIFI_FEATURE_D2D_RTT = 0x0080, /* Device-to-device RTT */ - WIFI_FEATURE_D2AP_RTT = 0x0100, /* Device-to-AP RTT */ - WIFI_FEATURE_BATCH_SCAN = 0x0200, /* Batched Scan (legacy) */ - WIFI_FEATURE_PNO = 0x0400, /* Preferred network offload */ - WIFI_FEATURE_ADDITIONAL_STA = 0x0800, /* Support for two STAs */ - WIFI_FEATURE_TDLS = 0x1000, /* Tunnel directed link setup */ - WIFI_FEATURE_TDLS_OFFCHANNEL = 0x2000, /* Support for TDLS off channel */ - WIFI_FEATURE_EPR = 0x4000, /* Enhanced power reporting */ - WIFI_FEATURE_AP_STA = 0x8000, /* Support for AP STA Concurrency */ - WIFI_FEATURE_LINK_LAYER_STATS = 0x10000, /* Support for Linkstats */ - WIFI_FEATURE_LOGGER = 0x20000, /* WiFi Logger */ - WIFI_FEATURE_HAL_EPNO = 0x40000, /* WiFi PNO enhanced */ - WIFI_FEATURE_RSSI_MONITOR = 0x80000, /* RSSI Monitor */ - WIFI_FEATURE_MKEEP_ALIVE = 0x100000, /* WiFi mkeep_alive */ - WIFI_FEATURE_CONFIG_NDO = 0x200000, /* ND offload configure */ - WIFI_FEATURE_TX_TRANSMIT_POWER = 0x400000, /* Capture Tx transmit power levels */ - WIFI_FEATURE_CONTROL_ROAMING = 0x800000, /* Enable/Disable firmware roaming */ - WIFI_FEATURE_IE_WHITELIST = 0x1000000, /* Support Probe IE white listing */ - WIFI_FEATURE_SCAN_RAND = 0x2000000, /* Support MAC & Probe Sequence Number randomization */ - WIFI_FEATURE_INVALID = 0xFFFFFFFF, /* Invalid Feature */ + WIFI_FEATURE_INFRA = 0x0001, /* Basic infrastructure mode */ + WIFI_FEATURE_INFRA_5G = 0x0002, /* Support for 5, GHz Band */ + WIFI_FEATURE_HOTSPOT = 0x0004, /* Support for GAS/ANQP */ + WIFI_FEATURE_P2P = 0x0008, /* Wifi-Direct */ + WIFI_FEATURE_SOFT_AP = 0x0010, /* Soft AP */ + WIFI_FEATURE_GSCAN = 0x0020, /* Google-Scan APIs */ + WIFI_FEATURE_NAN = 0x0040, /* Neighbor Awareness Networking */ + WIFI_FEATURE_D2D_RTT = 0x0080, /* Device-to-device RTT */ + WIFI_FEATURE_D2AP_RTT = 0x0100, /* Device-to-AP RTT */ + WIFI_FEATURE_BATCH_SCAN = 0x0200, /* Batched Scan (legacy) */ + WIFI_FEATURE_PNO = 0x0400, /* Preferred network offload */ + WIFI_FEATURE_ADDITIONAL_STA = + 0x0800, /* Support for two STAs */ + WIFI_FEATURE_TDLS = 0x1000, /* Tunnel directed link setup */ + WIFI_FEATURE_TDLS_OFFCHANNEL = + 0x2000, /* Support for TDLS off channel */ + WIFI_FEATURE_EPR = 0x4000, /* Enhanced power reporting */ + WIFI_FEATURE_AP_STA = 0x8000, /* Support for AP STA Concurrency */ + WIFI_FEATURE_LINK_LAYER_STATS = + 0x10000, /* Support for Linkstats */ + WIFI_FEATURE_LOGGER = 0x20000, /* WiFi Logger */ + WIFI_FEATURE_HAL_EPNO = 0x40000, /* WiFi PNO enhanced */ + WIFI_FEATURE_RSSI_MONITOR = + 0x80000, /* RSSI Monitor */ + WIFI_FEATURE_MKEEP_ALIVE = + 0x100000, /* WiFi mkeep_alive */ + WIFI_FEATURE_CONFIG_NDO = + 0x200000, /* ND offload configure */ + WIFI_FEATURE_TX_TRANSMIT_POWER = + 0x400000, /* Capture Tx transmit power levels */ + WIFI_FEATURE_CONTROL_ROAMING = + 0x800000, /* Enable/Disable firmware roaming */ + WIFI_FEATURE_IE_WHITELIST = + 0x1000000, /* Support Probe IE white listing */ + WIFI_FEATURE_SCAN_RAND = + 0x2000000, /* Support MAC & Probe Sequence Number randomization */ + WIFI_FEATURE_SET_LATENCY_MODE = + 0x40000000, /* Support Latency mode setting */ + WIFI_FEATURE_INVALID = + 0xFFFFFFFF, /* Invalid Feature */ }; enum wifi_logger_feature { - WIFI_LOGGER_MEMORY_DUMP_SUPPORTED = (1 << (0)), // Memory dump of FW - WIFI_LOGGER_PER_PACKET_TX_RX_STATUS_SUPPORTED = (1 << (1)), // PKT status - WIFI_LOGGER_CONNECT_EVENT_SUPPORTED = (1 << (2)), // Connectivity event - WIFI_LOGGER_POWER_EVENT_SUPPORTED = (1 << (3)), // POWER of Driver - WIFI_LOGGER_WAKE_LOCK_SUPPORTED = (1 << (4)), // WAKE LOCK of Driver - WIFI_LOGGER_VERBOSE_SUPPORTED = (1 << (5)), // verbose log of FW - WIFI_LOGGER_WATCHDOG_TIMER_SUPPORTED = (1 << (6)), // monitor the health of FW - WIFI_LOGGER_DRIVER_DUMP_SUPPORTED = (1 << (7)), // dumps driver state - WIFI_LOGGER_PACKET_FATE_SUPPORTED = (1 << (8)), // tracks connection packets' fate + WIFI_LOGGER_MEMORY_DUMP_SUPPORTED = (1 << (0)), // Memory dump of FW + WIFI_LOGGER_PER_PACKET_TX_RX_STATUS_SUPPORTED = + (1 << (1)), // PKT status + WIFI_LOGGER_CONNECT_EVENT_SUPPORTED = (1 << (2)), // Connectivity event + WIFI_LOGGER_POWER_EVENT_SUPPORTED = (1 << (3)), // POWER of Driver + WIFI_LOGGER_WAKE_LOCK_SUPPORTED = (1 << (4)), // WAKE LOCK of Driver + WIFI_LOGGER_VERBOSE_SUPPORTED = (1 << (5)), // verbose log of FW + WIFI_LOGGER_WATCHDOG_TIMER_SUPPORTED = + (1 << (6)), // monitor the health of FW + WIFI_LOGGER_DRIVER_DUMP_SUPPORTED = (1 << (7)), // dumps driver state + WIFI_LOGGER_PACKET_FATE_SUPPORTED = + (1 << (8)), // tracks connection packets' fate }; enum wake_stats_attributes { @@ -266,20 +300,19 @@ enum wake_stats_attributes { enum vendor_nl80211_subcmd { /* copied from wpa_supplicant brcm definations */ - VENDOR_NL80211_SUBCMD_UNSPEC = 0, + VENDOR_NL80211_SUBCMD_UNSPEC = 0, VENDOR_NL80211_SUBCMD_SET_PMK = 4, VENDOR_NL80211_SUBCMD_SET_MAC = 6, - VENDOR_NL80211_SCMD_ACS = 9, - VENDOR_NL80211_SCMD_MAX = 10, + VENDOR_NL80211_SCMD_ACS = 9, + VENDOR_NL80211_SCMD_MAX = 10, }; enum nl80211_vendor_subcmd_attributes { - WIFI_VENDOR_ATTR_DRIVER_CMD = 0, - WIFI_VENDOR_ATTR_DRIVER_KEY_PMK = 1, - WIFI_VENDOR_ATTR_DRIVER_MAC_ADDR = 3, + WIFI_VENDOR_ATTR_DRIVER_CMD = 0, + WIFI_VENDOR_ATTR_DRIVER_KEY_PMK = 1, + WIFI_VENDOR_ATTR_DRIVER_MAC_ADDR = 3, WIFI_VENDOR_ATTR_DRIVER_AFTER_LAST = 5, - WIFI_VENDOR_ATTR_DRIVER_MAX = - WIFI_VENDOR_ATTR_DRIVER_AFTER_LAST - 1, + WIFI_VENDOR_ATTR_DRIVER_MAX = WIFI_VENDOR_ATTR_DRIVER_AFTER_LAST - 1, }; typedef int wifi_ring_buffer_id; @@ -296,51 +329,50 @@ struct wifi_ring_buffer_status { }; struct rx_data_cnt_details_t { - int rx_unicast_cnt; /*Total rx unicast packet which woke up host */ - int rx_multicast_cnt; /*Total rx multicast packet which woke up host */ - int rx_broadcast_cnt; /*Total rx broadcast packet which woke up host */ + int rx_unicast_cnt; /*Total rx unicast packet which woke up host */ + int rx_multicast_cnt; /*Total rx multicast packet which woke up host */ + int rx_broadcast_cnt; /*Total rx broadcast packet which woke up host */ }; struct rx_wake_pkt_type_classification_t { - int icmp_pkt; /*wake icmp packet count */ - int icmp6_pkt; /*wake icmp6 packet count */ - int icmp6_ra; /*wake icmp6 RA packet count */ - int icmp6_na; /*wake icmp6 NA packet count */ - int icmp6_ns; /*wake icmp6 NS packet count */ + int icmp_pkt; /*wake icmp packet count */ + int icmp6_pkt; /*wake icmp6 packet count */ + int icmp6_ra; /*wake icmp6 RA packet count */ + int icmp6_na; /*wake icmp6 NA packet count */ + int icmp6_ns; /*wake icmp6 NS packet count */ //ToDo: Any more interesting classification to add? }; -struct rx_multicast_cnt_t{ +struct rx_multicast_cnt_t { int ipv4_rx_multicast_addr_cnt; /*Rx wake packet was ipv4 multicast */ int ipv6_rx_multicast_addr_cnt; /*Rx wake packet was ipv6 multicast */ - int other_rx_multicast_addr_cnt;/*Rx wake packet was non-ipv4 and non-ipv6*/ + int other_rx_multicast_addr_cnt; /*Rx wake packet was non-ipv4 and non-ipv6*/ }; struct wlan_driver_wake_reason_cnt_t { - int total_cmd_event_wake; /* Total count of cmd event wakes */ - int *cmd_event_wake_cnt; /* Individual wake count array, each index a reason */ - int cmd_event_wake_cnt_sz; /* Max number of cmd event wake reasons */ - int cmd_event_wake_cnt_used; /* Number of cmd event wake reasons specific to the driver */ + int total_cmd_event_wake; /* Total count of cmd event wakes */ + int *cmd_event_wake_cnt; /* Individual wake count array, each index a reason */ + int cmd_event_wake_cnt_sz; /* Max number of cmd event wake reasons */ + int cmd_event_wake_cnt_used; /* Number of cmd event wake reasons specific to the driver */ - int total_driver_fw_local_wake; /* Total count of drive/fw wakes, for local reasons */ - int *driver_fw_local_wake_cnt; /* Individual wake count array, each index a reason */ - int driver_fw_local_wake_cnt_sz; /* Max number of local driver/fw wake reasons */ + int total_driver_fw_local_wake; /* Total count of drive/fw wakes, for local reasons */ + int *driver_fw_local_wake_cnt; /* Individual wake count array, each index a reason */ + int driver_fw_local_wake_cnt_sz; /* Max number of local driver/fw wake reasons */ int driver_fw_local_wake_cnt_used; /* Number of local driver/fw wake reasons specific to the driver */ - int total_rx_data_wake; /* total data rx packets, that woke up host */ + int total_rx_data_wake; /* total data rx packets, that woke up host */ struct rx_data_cnt_details_t rx_wake_details; struct rx_wake_pkt_type_classification_t rx_wake_pkt_classification_info; struct rx_multicast_cnt_t rx_multicast_wake_pkt_info; }; typedef struct wl_mkeep_alive_pkt { - u16 version; /* Version for mkeep_alive */ - u16 length; /* length of fixed parameters in the structure */ - u32 period_msec; /* high bit on means immediate send */ + u16 version; /* Version for mkeep_alive */ + u16 length; /* length of fixed parameters in the structure */ + u32 period_msec; /* high bit on means immediate send */ u16 len_bytes; - u8 keep_alive_id; /* 0 - 3 for N = 4 */ - u8 data[1]; + u8 keep_alive_id; /* 0 - 3 for N = 4 */ + u8 data[1]; } wl_mkeep_alive_pkt_t; #endif /* _AIC_VENDOR_H */ - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.c index 7f50fe6bf..37edb8d20 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.c @@ -3,64 +3,159 @@ #include "reg_access.h" #include "aicwf_compat_8800d80.h" -#define FW_USERCONFIG_NAME_8800D80 "aic_userconfig_8800d80.txt" +#define FW_USERCONFIG_NAME_8800D80 "aic_userconfig_8800d80.txt" +#define FW_USERCONFIG_NAME_8800D80X2 "aic_userconfig_8800d80x2.txt" +#define FW_POWERLIMIT_NAME_8800D80 "aic_powerlimit_8800d80.txt" -int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, - u32** buffer, const char *filename); +int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, u32 **buffer, + const char *filename); void rwnx_plat_userconfig_parsing2(char *buffer, int size); void rwnx_plat_userconfig_parsing3(char *buffer, int size); +void rwnx_plat_userconfig_parsing_8800d80x2(char *buffer, int size); -void rwnx_release_firmware_common(u32** buffer); +void rwnx_release_firmware_common(u32 **buffer); -int aicwf_set_rf_config_8800d80(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm) +int aicwf_set_rf_config_8800d80(struct rwnx_hw *rwnx_hw, + struct mm_set_rf_calib_cfm *cfm) { int ret = 0; - if ((ret = rwnx_send_txpwr_lvl_v3_req(rwnx_hw))) { - return -1; + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { + if ((ret = rwnx_send_txpwr_lvl_v3_req(rwnx_hw))) { + return -1; + } + + if ((ret = rwnx_send_txpwr_ofst2x_req(rwnx_hw))) { + return -1; + } + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + if ((ret = rwnx_send_txpwr_lvl_v4_req(rwnx_hw))) { + return -1; + } + if ((ret = rwnx_send_txpwr_ofst2x_v2_req(rwnx_hw))) { + return -1; + } } if ((ret = rwnx_send_txpwr_lvl_adj_req(rwnx_hw))) { return -1; } - if ((ret = rwnx_send_txpwr_ofst2x_req(rwnx_hw))) { + if ((ret = rwnx_send_rf_calib_req(rwnx_hw, cfm))) { return -1; } - if ((ret = rwnx_send_rf_calib_req(rwnx_hw, cfm))) { - return -1; - } - - return 0 ; + return 0; } -int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw) +int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw) { - int size; - u32 *dst=NULL; - char *filename = FW_USERCONFIG_NAME_8800D80; + int size; + u32 *dst = NULL; + char *filename = FW_USERCONFIG_NAME_8800D80; - AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); + AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); - /* load file */ - size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); - if (size <= 0) { - AICWFDBG(LOGERROR, "wrong size of firmware file\n"); - dst = NULL; - return 0; - } + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + return 0; + } /* Copy the file on the Embedded side */ - AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); rwnx_plat_userconfig_parsing3((char *)dst, size); - rwnx_release_firmware_common(&dst); - - AICWFDBG(LOGINFO, "userconfig download complete\n\n"); - return 0; + rwnx_release_firmware_common(&dst); + AICWFDBG(LOGINFO, "userconfig download complete\n\n"); + return 0; } +int rwnx_plat_userconfig_load_8800d80x2(struct rwnx_hw *rwnx_hw) +{ + int size; + u32 *dst = NULL; + char *filename = FW_USERCONFIG_NAME_8800D80X2; + AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); + + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + return 0; + } + + /* Copy the file on the Embedded side */ + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + + rwnx_plat_userconfig_parsing_8800d80x2((char *)dst, size); + + rwnx_release_firmware_common(&dst); + + AICWFDBG(LOGINFO, "userconfig download complete\n\n"); + return 0; +} + +#ifdef CONFIG_POWER_LIMIT +extern char country_code[4]; +int rwnx_plat_powerlimit_load_8800d80(struct rwnx_hw *rwnx_hw) +{ + int size; + u32 *dst = NULL; + char *filename = FW_POWERLIMIT_NAME_8800D80; + + AICWFDBG(LOGDEBUG, "powerlimit file path:%s \r\n", filename); + + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of cfg file\n"); + dst = NULL; + return 0; + } + + AICWFDBG(LOGDEBUG, "### Load file done: %s, size=%d\n", filename, size); + + /* parsing the file */ + rwnx_plat_powerlimit_parsing((char *)dst, size, country_code); + + rwnx_release_firmware_common(&dst); + + AICWFDBG(LOGDEBUG, "powerlimit download complete\n\n"); + return 0; +} + +int rwnx_plat_powerlimit_load_8800d80x2(struct rwnx_hw *rwnx_hw) +{ + int size; + u32 *dst = NULL; + char *filename = FW_POWERLIMIT_NAME_8800D80; + + AICWFDBG(LOGDEBUG, "powerlimit file path:%s \r\n", filename); + + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of cfg file\n"); + dst = NULL; + return 0; + } + + AICWFDBG(LOGDEBUG, "### Load file done: %s, size=%d\n", filename, size); + + /* parsing the file */ + rwnx_plat_powerlimit_parsing((char *)dst, size, country_code); + + rwnx_release_firmware_common(&dst); + + AICWFDBG(LOGDEBUG, "powerlimit download complete\n\n"); + return 0; +} + +#endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.h index df3e9d963..e3cac501d 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800d80.h @@ -2,8 +2,14 @@ #define _AICWF_COMPAT_8800D80_H_ #include -int aicwf_set_rf_config_8800d80(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm); -int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw); +int aicwf_set_rf_config_8800d80(struct rwnx_hw *rwnx_hw, + struct mm_set_rf_calib_cfm *cfm); +int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw); +int rwnx_plat_userconfig_load_8800d80x2(struct rwnx_hw *rwnx_hw); +#ifdef CONFIG_POWER_LIMIT +int rwnx_plat_powerlimit_load_8800d80(struct rwnx_hw *rwnx_hw); +int rwnx_plat_powerlimit_load_8800d80x2(struct rwnx_hw *rwnx_hw); #endif +#endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.c index c3de44526..4ec29c436 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.c @@ -3,489 +3,496 @@ #include "reg_access.h" #include "aic_bsp_export.h" -#define RWNX_MAC_RF_PATCH_BASE_NAME_8800DC "fmacfw_rf_patch_8800dc" -#define RWNX_MAC_RF_PATCH_NAME_8800DC RWNX_MAC_RF_PATCH_BASE_NAME_8800DC".bin" -#define FW_USERCONFIG_NAME_8800DC "aic_userconfig_8800dc.txt" -#define FW_USERCONFIG_NAME_8800DW "aic_userconfig_8800dw.txt" +#define RWNX_MAC_RF_PATCH_BASE_NAME_8800DC "fmacfw_rf_patch_8800dc" +#define RWNX_MAC_RF_PATCH_NAME_8800DC RWNX_MAC_RF_PATCH_BASE_NAME_8800DC ".bin" +#define FW_USERCONFIG_NAME_8800DC "aic_userconfig_8800dc.txt" +#define FW_USERCONFIG_NAME_8800DW "aic_userconfig_8800dw.txt" int rwnx_plat_bin_fw_upload_2(struct rwnx_hw *rwnx_hw, u32 fw_addr, - char *filename); -int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, - u32** buffer, const char *filename); + char *filename); +int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, u32 **buffer, + const char *filename); void rwnx_plat_userconfig_parsing2(char *buffer, int size); -void rwnx_release_firmware_common(u32** buffer); +void rwnx_release_firmware_common(u32 **buffer); #if !defined(CONFIG_EXT_FEM_8800DCDW) -u32 wifi_txgain_table_24g_8800dcdw[32] = -{ - 0xA4B22189, //index 0 - 0x00007825, - 0xA4B2214B, //index 1 - 0x00007825, - 0xA4B2214F, //index 2 - 0x00007825, - 0xA4B221D5, //index 3 - 0x00007825, - 0xA4B221DC, //index 4 - 0x00007825, - 0xA4B221E5, //index 5 - 0x00007825, - 0xAC9221E5, //index 6 - 0x00006825, - 0xAC9221EF, //index 7 - 0x00006825, - 0xBC9221EE, //index 8 - 0x00006825, - 0xBC9221FF, //index 9 - 0x00006825, - 0xBC9221FF, //index 10 - 0x00004025, - 0xB792203F, //index 11 - 0x00004026, - 0xDC92203F, //index 12 - 0x00004025, - 0xE692203F, //index 13 - 0x00004025, - 0xFF92203F, //index 14 - 0x00004035, - 0xFFFE203F, //index 15 - 0x00004832 +u32 wifi_txgain_table_24g_8800dcdw[32] = { 0xA4B22189, //index 0 + 0x00007825, + 0xA4B2214B, //index 1 + 0x00007825, + 0xA4B2214F, //index 2 + 0x00007825, + 0xA4B221D5, //index 3 + 0x00007825, + 0xA4B221DC, //index 4 + 0x00007825, + 0xA4B221E5, //index 5 + 0x00007825, + 0xAC9221E5, //index 6 + 0x00006825, + 0xAC9221EF, //index 7 + 0x00006825, + 0xBC9221EE, //index 8 + 0x00006825, + 0xBC9221FF, //index 9 + 0x00006825, + 0xBC9221FF, //index 10 + 0x00004025, + 0xB792203F, //index 11 + 0x00004026, + 0xDC92203F, //index 12 + 0x00004025, + 0xE692203F, //index 13 + 0x00004025, + 0xFF92203F, //index 14 + 0x00004035, + 0xFFFE203F, //index 15 + 0x00004832 }; + +u32 wifi_txgain_table_24g_1_8800dcdw[32] = { + 0x096E2011, //index 0 + 0x00004001, + 0x096E2015, //index 1 + 0x00004001, + 0x096E201B, //index 2 + 0x00004001, + 0x116E2018, //index 3 + 0x00004001, + 0x116E201E, //index 4 + 0x00004001, + 0x116E2023, //index 5 + 0x00004001, + 0x196E2021, //index 6 + 0x00004001, + 0x196E202B, //index 7 + 0x00004001, + 0x216E202B, //index 8 + 0x00004001, + 0x236E2027, //index 9 + 0x00004001, + 0x236E2031, //index 10 + 0x00004001, + 0x246E2039, //index 11 + 0x00004001, + 0x26922039, //index 12 + 0x00004001, + 0x2E92203F, //index 13 + 0x00004001, + 0x3692203F, //index 14 + 0x00004001, + 0x3FF2203F, //index 15 + 0x00004001, }; -u32 wifi_txgain_table_24g_1_8800dcdw[32] = -{ - 0x096E2011, //index 0 - 0x00004001, - 0x096E2015, //index 1 - 0x00004001, - 0x096E201B, //index 2 - 0x00004001, - 0x116E2018, //index 3 - 0x00004001, - 0x116E201E, //index 4 - 0x00004001, - 0x116E2023, //index 5 - 0x00004001, - 0x196E2021, //index 6 - 0x00004001, - 0x196E202B, //index 7 - 0x00004001, - 0x216E202B, //index 8 - 0x00004001, - 0x236E2027, //index 9 - 0x00004001, - 0x236E2031, //index 10 - 0x00004001, - 0x246E2039, //index 11 - 0x00004001, - 0x26922039, //index 12 - 0x00004001, - 0x2E92203F, //index 13 - 0x00004001, - 0x3692203F, //index 14 - 0x00004001, - 0x3FF2203F, //index 15 - 0x00004001, +u32 wifi_txgain_table_24g_8800dcdw_h[32] = { + 0xA55629C9, //index 0 + 0x00005825, + 0xAE5629C9, //index 1 + 0x00005825, + 0xAD5629CD, //index 2 + 0x00005825, + 0xAD5629D1, //index 3 + 0x00005825, + 0xAD5629D7, //index 4 + 0x00005825, + 0xAD5629DE, //index 5 + 0x00005825, + 0xAD5629E6, //index 6 + 0x00005825, + 0xBD5629E6, //index 7 + 0x00005825, + 0xBD5629F0, //index 8 + 0x00005825, + 0xCD5629F0, //index 9 + 0x00005825, + 0xE55629F0, //index 10 + 0x00005825, + 0xE55629FF, //index 11 + 0x00005825, + 0xE55629FF, //index 12 + 0x00002825, + 0xE75629FF, //index 13 + 0x00002825, + 0xFF5629FF, //index 14 + 0x00001825, + 0xFF5628FF, //index 15 + 0x00001025, }; -u32 wifi_txgain_table_24g_8800dcdw_h[32] = -{ - 0xA55629C9, //index 0 - 0x00005825, - 0xAE5629C9, //index 1 - 0x00005825, - 0xAD5629CD, //index 2 - 0x00005825, - 0xAD5629D1, //index 3 - 0x00005825, - 0xAD5629D7, //index 4 - 0x00005825, - 0xAD5629DE, //index 5 - 0x00005825, - 0xAD5629E6, //index 6 - 0x00005825, - 0xBD5629E6, //index 7 - 0x00005825, - 0xBD5629F0, //index 8 - 0x00005825, - 0xCD5629F0, //index 9 - 0x00005825, - 0xE55629F0, //index 10 - 0x00005825, - 0xE55629FF, //index 11 - 0x00005825, - 0xE55629FF, //index 12 - 0x00002825, - 0xE75629FF, //index 13 - 0x00002825, - 0xFF5629FF, //index 14 - 0x00001825, - 0xFF5628FF, //index 15 - 0x00001025, -}; - -u32 wifi_txgain_table_24g_1_8800dcdw_h[32] = -{ - 0x941A2048, //index 0 - 0x00001825, - 0x961A2048, //index 1 - 0x00001825, - 0x9D1A2048, //index 2 - 0x00001825, - 0x9A1A204F, //index 3 - 0x00001825, - 0x961A204F, //index 4 - 0x00001825, - 0x9A1A2057, //index 5 - 0x00001825, - 0x9C1A2057, //index 6 - 0x00001825, - 0xA31A205B, //index 7 - 0x00001825, - 0xAB1A205B, //index 8 - 0x00001825, - 0xAD1A205B, //index 9 - 0x00001825, - 0xA71A2064, //index 10 - 0x00001825, - 0xAD1A2070, //index 11 - 0x00001825, - 0xAD72207F, //index 12 - 0x00001825, - 0xBCAE207F, //index 13 - 0x00001825, - 0xBFB2207F, //index 14 - 0x00001825, - 0xD73A207F, //index 15 - 0x00001825, +u32 wifi_txgain_table_24g_1_8800dcdw_h[32] = { + 0x941A2048, //index 0 + 0x00001825, + 0x961A2048, //index 1 + 0x00001825, + 0x9D1A2048, //index 2 + 0x00001825, + 0x9A1A204F, //index 3 + 0x00001825, + 0x961A204F, //index 4 + 0x00001825, + 0x9A1A2057, //index 5 + 0x00001825, + 0x9C1A2057, //index 6 + 0x00001825, + 0xA31A205B, //index 7 + 0x00001825, + 0xAB1A205B, //index 8 + 0x00001825, + 0xAD1A205B, //index 9 + 0x00001825, + 0xA71A2064, //index 10 + 0x00001825, + 0xAD1A2070, //index 11 + 0x00001825, + 0xAD72207F, //index 12 + 0x00001825, + 0xBCAE207F, //index 13 + 0x00001825, + 0xBFB2207F, //index 14 + 0x00001825, + 0xD73A207F, //index 15 + 0x00001825, }; #else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ // ofdm uint32_t wifi_txgain_table_24g_8800dcdw_femkct[32] = { - 0x919221C2, //index 0 - 0x00007825, - 0x899221C3, //index 1 - 0x00007825, - 0x8B9221C3, //index 2 - 0x00007825, - 0x929221C3, //index 3 - 0x00007825, - 0x949221C4, //index 4 - 0x00007825, - 0x969221C4, //index 5 - 0x00007825, - 0x949221C6, //index 6 - 0x00007825, - 0x949221C8, //index 7 - 0x00007825, - 0x9C9221C8, //index 8 - 0x00007825, - 0x9C9221CA, //index 9 - 0x00007825, - 0x9C9221CB, //index 10 - 0x00007825, - 0x939221D5, //index 11 - 0x00007825, - 0x9B9221D7, //index 12 - 0x00007825, - 0xA49221D7, //index 13 - 0x00007825, - 0xA79221D7, //index 14 - 0x00007825, - 0xBD9221D7, //index 15 - 0x00007825, + 0x919221C2, //index 0 + 0x00007825, + 0x899221C3, //index 1 + 0x00007825, + 0x8B9221C3, //index 2 + 0x00007825, + 0x929221C3, //index 3 + 0x00007825, + 0x949221C4, //index 4 + 0x00007825, + 0x969221C4, //index 5 + 0x00007825, + 0x949221C6, //index 6 + 0x00007825, + 0x949221C8, //index 7 + 0x00007825, + 0x9C9221C8, //index 8 + 0x00007825, + 0x9C9221CA, //index 9 + 0x00007825, + 0x9C9221CB, //index 10 + 0x00007825, + 0x939221D5, //index 11 + 0x00007825, + 0x9B9221D7, //index 12 + 0x00007825, + 0xA49221D7, //index 13 + 0x00007825, + 0xA79221D7, //index 14 + 0x00007825, + 0xBD9221D7, //index 15 + 0x00007825, }; // 11b uint32_t wifi_txgain_table_24g_1_8800dcdw_femkct[32] = { - 0x836E20C2, //index 0 - 0x00003024, - 0x856E20C2, //index 1 - 0x00003024, - 0x826E20C3, //index 2 - 0x00003024, - 0x836E20C3, //index 3 - 0x00003024, - 0x856E20C3, //index 4 - 0x00003024, - 0x876E20C3, //index 5 - 0x00003024, - 0x8B6E20C3, //index 6 - 0x00003024, - 0x926E20C4, //index 7 - 0x00003024, - 0x9A6E20C4, //index 8 - 0x00003024, - 0x936E20C5, //index 9 - 0x00003024, - 0x936E20C7, //index 10 - 0x00003024, - 0xA16E20C8, //index 11 - 0x00003024, - 0xA16E20CA, //index 12 - 0x00003024, - 0xA26E20CB, //index 13 - 0x00003024, - 0xAA6E20CD, //index 14 - 0x00003024, - 0xAC7220CF, //index 15 - 0x00003024, + 0x836E20C2, //index 0 + 0x00003024, + 0x856E20C2, //index 1 + 0x00003024, + 0x826E20C3, //index 2 + 0x00003024, + 0x836E20C3, //index 3 + 0x00003024, + 0x856E20C3, //index 4 + 0x00003024, + 0x876E20C3, //index 5 + 0x00003024, + 0x8B6E20C3, //index 6 + 0x00003024, + 0x926E20C4, //index 7 + 0x00003024, + 0x9A6E20C4, //index 8 + 0x00003024, + 0x936E20C5, //index 9 + 0x00003024, + 0x936E20C7, //index 10 + 0x00003024, + 0xA16E20C8, //index 11 + 0x00003024, + 0xA16E20CA, //index 12 + 0x00003024, + 0xA26E20CB, //index 13 + 0x00003024, + 0xAA6E20CD, //index 14 + 0x00003024, + 0xAC7220CF, //index 15 + 0x00003024, }; #endif u32 wifi_rxgain_table_24g_20m_8800dcdw[64] = { - 0x82f282d1,//index 0 - 0x9591a324, - 0x80808419, - 0x000000f0, - 0x42f282d1,//index 1 - 0x95923524, - 0x80808419, - 0x000000f0, - 0x22f282d1,//index 2 - 0x9592c724, - 0x80808419, - 0x000000f0, - 0x02f282d1,//index 3 - 0x9591a324, - 0x80808419, - 0x000000f0, - 0x06f282d1,//index 4 - 0x9591a324, - 0x80808419, - 0x000000f0, - 0x0ef29ad1,//index 5 - 0x9591a324, - 0x80808419, - 0x000000f0, - 0x0ef29ad3,//index 6 - 0x95923524, - 0x80808419, - 0x000000f0, - 0x0ef29ad7,//index 7 - 0x9595a324, - 0x80808419, - 0x000000f0, - 0x02f282d2,//index 8 - 0x95951124, - 0x80808419, - 0x000000f0, - 0x02f282f4,//index 9 - 0x95951124, - 0x80808419, - 0x000000f0, - 0x02f282e6,//index 10 - 0x9595a324, - 0x80808419, - 0x000000f0, - 0x02f282e6,//index 11 - 0x9599a324, - 0x80808419, - 0x000000f0, - 0x02f282e6,//index 12 - 0x959da324, - 0x80808419, - 0x000000f0, - 0x02f282e6,//index 13 - 0x959f5924, - 0x80808419, - 0x000000f0, - 0x06f282e6,//index 14 - 0x959f5924, - 0x80808419, - 0x000000f0, - 0x0ef29ae6,//index 15 - 0x959f5924, //loft [35:34]=3 - 0x80808419, - 0x000000f0 + 0x82f282d1, //index 0 + 0x9591a324, 0x80808419, 0x000000f0, + 0x42f282d1, //index 1 + 0x95923524, 0x80808419, 0x000000f0, + 0x22f282d1, //index 2 + 0x9592c724, 0x80808419, 0x000000f0, + 0x02f282d1, //index 3 + 0x9591a324, 0x80808419, 0x000000f0, + 0x06f282d1, //index 4 + 0x9591a324, 0x80808419, 0x000000f0, + 0x0ef29ad1, //index 5 + 0x9591a324, 0x80808419, 0x000000f0, + 0x0ef29ad3, //index 6 + 0x95923524, 0x80808419, 0x000000f0, + 0x0ef29ad7, //index 7 + 0x9595a324, 0x80808419, 0x000000f0, + 0x02f282d2, //index 8 + 0x95951124, 0x80808419, 0x000000f0, + 0x02f282f4, //index 9 + 0x95951124, 0x80808419, 0x000000f0, + 0x02f282e6, //index 10 + 0x9595a324, 0x80808419, 0x000000f0, + 0x02f282e6, //index 11 + 0x9599a324, 0x80808419, 0x000000f0, + 0x02f282e6, //index 12 + 0x959da324, 0x80808419, 0x000000f0, + 0x02f282e6, //index 13 + 0x959f5924, 0x80808419, 0x000000f0, + 0x06f282e6, //index 14 + 0x959f5924, 0x80808419, 0x000000f0, + 0x0ef29ae6, //index 15 + 0x959f5924, //loft [35:34]=3 + 0x80808419, 0x000000f0 }; u32 wifi_rxgain_table_24g_40m_8800dcdw[64] = { - 0x83428151,//index 0 - 0x9631a328, - 0x80808419, - 0x000000f0, - 0x43428151,//index 1 - 0x96323528, - 0x80808419, - 0x000000f0, - 0x23428151,//index 2 - 0x9632c728, - 0x80808419, - 0x000000f0, - 0x03428151,//index 3 - 0x9631a328, - 0x80808419, - 0x000000f0, - 0x07429951,//index 4 - 0x9631a328, - 0x80808419, - 0x000000f0, - 0x0f42d151,//index 5 - 0x9631a328, - 0x80808419, - 0x000000f0, - 0x0f42d153,//index 6 - 0x96323528, - 0x80808419, - 0x000000f0, - 0x0f42d157,//index 7 - 0x9635a328, - 0x80808419, - 0x000000f0, - 0x03428152,//index 8 - 0x96351128, - 0x80808419, - 0x000000f0, - 0x03428174,//index 9 - 0x96351128, - 0x80808419, - 0x000000f0, - 0x03428166,//index 10 - 0x9635a328, - 0x80808419, - 0x000000f0, - 0x03428166,//index 11 - 0x9639a328, - 0x80808419, - 0x000000f0, - 0x03428166,//index 12 - 0x963da328, - 0x80808419, - 0x000000f0, - 0x03428166,//index 13 - 0x963f5928, - 0x80808419, - 0x000000f0, - 0x07429966,//index 14 - 0x963f5928, - 0x80808419, - 0x000000f0, - 0x0f42d166,//index 15 - 0x963f5928, - 0x80808419, - 0x000000f0 + 0x83428151, //index 0 + 0x9631a328, 0x80808419, 0x000000f0, + 0x43428151, //index 1 + 0x96323528, 0x80808419, 0x000000f0, + 0x23428151, //index 2 + 0x9632c728, 0x80808419, 0x000000f0, + 0x03428151, //index 3 + 0x9631a328, 0x80808419, 0x000000f0, + 0x07429951, //index 4 + 0x9631a328, 0x80808419, 0x000000f0, + 0x0f42d151, //index 5 + 0x9631a328, 0x80808419, 0x000000f0, + 0x0f42d153, //index 6 + 0x96323528, 0x80808419, 0x000000f0, + 0x0f42d157, //index 7 + 0x9635a328, 0x80808419, 0x000000f0, + 0x03428152, //index 8 + 0x96351128, 0x80808419, 0x000000f0, + 0x03428174, //index 9 + 0x96351128, 0x80808419, 0x000000f0, + 0x03428166, //index 10 + 0x9635a328, 0x80808419, 0x000000f0, + 0x03428166, //index 11 + 0x9639a328, 0x80808419, 0x000000f0, + 0x03428166, //index 12 + 0x963da328, 0x80808419, 0x000000f0, + 0x03428166, //index 13 + 0x963f5928, 0x80808419, 0x000000f0, + 0x07429966, //index 14 + 0x963f5928, 0x80808419, 0x000000f0, + 0x0f42d166, //index 15 + 0x963f5928, 0x80808419, 0x000000f0 }; -#define RAM_LMAC_FW_ADDR 0x00150000 +#define RAM_LMAC_FW_ADDR 0x00150000 #ifdef CONFIG_DPD #if (defined(CONFIG_DPD) && !defined(CONFIG_FORCE_DPD_CALIB)) -extern int is_file_exist(char* name); +extern int is_file_exist(char *name); #endif extern rf_misc_ram_lite_t dpd_res; -int aicwf_fdrv_dpd_result_apply_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res) +int aicwf_fdrv_dpd_result_apply_8800dc(struct rwnx_hw *rwnx_hw, + rf_misc_ram_lite_t *dpd_res) { - int ret = 0; - uint32_t cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - uint32_t misc_ram_addr; - uint32_t ram_base_addr, ram_byte_cnt; - AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", dpd_res->bit_mask[1]); - if (dpd_res->bit_mask[1] == 0) { - AICWFDBG(LOGERROR, "void dpd_res, bypass it.\n"); - return 0; - } - if (testmode == 1) { - cfg_base = RAM_LMAC_FW_ADDR + 0x0164; - } - if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm))) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); - return ret; - } - misc_ram_addr = cfm.memdata; - AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); - /* Copy dpd_res on the Embedded side */ - // bit_mask - AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", dpd_res->bit_mask[0]); - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); - ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved); - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, ram_byte_cnt, (u32 *)&dpd_res->bit_mask[0]); - if (ret) { - AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", ram_base_addr, ret); - return ret; - } - // dpd_high - AICWFDBG(LOGINFO, "dpd_high[0]=%x\n", dpd_res->dpd_high[0]); - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, dpd_high); - ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, dpd_high); - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, ram_byte_cnt, (u32 *)&dpd_res->dpd_high[0]); - if (ret) { - AICWFDBG(LOGERROR, "dpd_high wr fail: %x, ret:%d\r\n", ram_base_addr, ret); - return ret; - } - // loft_res - AICWFDBG(LOGINFO, "loft_res[0]=%x\n", dpd_res->loft_res[0]); - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); - ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, ram_byte_cnt, (u32 *)&dpd_res->loft_res[0]); - if (ret) { - AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", ram_base_addr, ret); - return ret; - } - return ret; + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_byte_cnt; + AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", dpd_res->bit_mask[1]); + if (dpd_res->bit_mask[1] == 0) { + AICWFDBG(LOGERROR, "void dpd_res, bypass it.\n"); + return 0; + } + if (testmode == 1) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, + &cfm))) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); + /* Copy dpd_res on the Embedded side */ + // bit_mask + AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", dpd_res->bit_mask[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, + ram_byte_cnt, + (u32 *)&dpd_res->bit_mask[0]); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + // dpd_high + AICWFDBG(LOGINFO, "dpd_high[0]=%x\n", dpd_res->dpd_high[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, dpd_high); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, dpd_high); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, + ram_byte_cnt, + (u32 *)&dpd_res->dpd_high[0]); + if (ret) { + AICWFDBG(LOGERROR, "dpd_high wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + // loft_res + AICWFDBG(LOGINFO, "loft_res[0]=%x\n", dpd_res->loft_res[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, + ram_byte_cnt, + (u32 *)&dpd_res->loft_res[0]); + if (ret) { + AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + return ret; } #ifndef CONFIG_FORCE_DPD_CALIB -int aicwf_fdrv_dpd_result_load_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res) +int aicwf_fdrv_dpd_result_load_8800dc(struct rwnx_hw *rwnx_hw, + rf_misc_ram_lite_t *dpd_res) { - int ret = 0; - int size; - u32 *dst=NULL; - char *filename = FW_DPDRESULT_NAME_8800DC; - AICWFDBG(LOGINFO, "dpd_res file path:%s \r\n", filename); - /* load file */ - size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); - if (size <= 0) { - AICWFDBG(LOGERROR, "wrong size of dpd_res file\n"); - dst = NULL; - return -1; - } - AICWFDBG(LOGINFO, "### Load file done: %s, size=%d, dst[0]=%x\n", filename, size, dst[0]); - memcpy((u8 *)dpd_res, (u8 *)dst, sizeof(rf_misc_ram_lite_t)); - if (dst) { - rwnx_release_firmware_common(&dst); - } - return ret; + int ret = 0; + int size; + u32 *dst = NULL; + char *filename = FW_DPDRESULT_NAME_8800DC; + AICWFDBG(LOGINFO, "dpd_res file path:%s \r\n", filename); + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of dpd_res file\n"); + dst = NULL; + return -1; + } + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d, dst[0]=%x\n", + filename, size, dst[0]); + memcpy((u8 *)dpd_res, (u8 *)dst, sizeof(rf_misc_ram_lite_t)); + if (dst) { + rwnx_release_firmware_common(&dst); + } + return ret; } #endif #endif +#if defined(CONFIG_LOFT_CALIB) +extern rf_misc_ram_lite_t loft_res_local; + +int aicwf_fdrv_loft_result_apply_8800dc(struct rwnx_hw *rwnx_hw, + rf_misc_ram_lite_t *loft_res) +{ + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_byte_cnt; + AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", loft_res->bit_mask[1]); + if (loft_res->bit_mask[1] == 0) { + AICWFDBG(LOGERROR, "void loft_res, bypass it.\n"); + return 0; + } + if (testmode == 1) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, + &cfm))) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); + /* Copy loft_res on the Embedded side */ + // bit_mask + AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", loft_res->bit_mask[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + + MEMBER_SIZE(rf_misc_ram_t, reserved); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, + ram_byte_cnt, + (u32 *)&loft_res->bit_mask[0]); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + // loft_res + AICWFDBG(LOGINFO, "loft_res[0]=%x\n", loft_res->loft_res[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, + ram_byte_cnt, + (u32 *)&loft_res->loft_res[0]); + if (ret) { + AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", + ram_base_addr, ret); + return ret; + } + return ret; +} +#endif + int aicwf_fdrv_misc_ram_init_8800dc(struct rwnx_hw *rwnx_hw) { - int ret = 0; - uint32_t cfg_base = 0x10164; - struct dbg_mem_read_cfm cfm; - uint32_t misc_ram_addr; - uint32_t misc_ram_size = 12; - int i; + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t misc_ram_size = 12; + int i; - if (testmode == 1) { - cfg_base = RAM_LMAC_FW_ADDR + 0x0164; - } - // init misc ram - printk("%s\n", __func__); - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); - return ret; - } - misc_ram_addr = cfm.memdata; - AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); - for (i = 0; i < (misc_ram_size / 4); i++) { - ret = rwnx_send_dbg_mem_write_req(rwnx_hw, misc_ram_addr + i * 4, 0); - if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] wr fail: %d\n", misc_ram_addr + i * 4, ret); - return ret; - } - } - return ret; + if (testmode == 1) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + // init misc ram + printk("%s\n", __func__); + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", + cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); + for (i = 0; i < (misc_ram_size / 4); i++) { + ret = rwnx_send_dbg_mem_write_req(rwnx_hw, + misc_ram_addr + i * 4, 0); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] wr fail: %d\n", + misc_ram_addr + i * 4, ret); + return ret; + } + } + return ret; } - -int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm){ +int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, + struct mm_set_rf_calib_cfm *cfm) +{ int ret = 0; if ((ret = rwnx_send_txpwr_lvl_req(rwnx_hw))) { @@ -496,135 +503,176 @@ int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_c return -1; } - if (testmode == 0) { - #if !defined(CONFIG_EXT_FEM_8800DCDW) - if (IS_CHIP_ID_H()) { - if ((ret = rwnx_send_rf_config_req(rwnx_hw, 0, 1, (u8_l *)wifi_txgain_table_24g_8800dcdw_h, 128))) - return -1; +#if !defined(CONFIG_EXT_FEM_8800DCDW) + if (IS_CHIP_ID_H()) { + if ((ret = rwnx_send_rf_config_req( + rwnx_hw, 0, 1, + (u8_l *)wifi_txgain_table_24g_8800dcdw_h, + 128))) + return -1; - if ((ret = rwnx_send_rf_config_req(rwnx_hw, 16, 1, (u8_l *)wifi_txgain_table_24g_1_8800dcdw_h, 128))) - return -1; - } else { - if ((ret = rwnx_send_rf_config_req(rwnx_hw, 0, 1, (u8_l *)wifi_txgain_table_24g_8800dcdw, 128))) - return -1; + if ((ret = rwnx_send_rf_config_req( + rwnx_hw, 16, 1, + (u8_l *)wifi_txgain_table_24g_1_8800dcdw_h, + 128))) + return -1; + } else { + if ((ret = rwnx_send_rf_config_req( + rwnx_hw, 0, 1, + (u8_l *)wifi_txgain_table_24g_8800dcdw, + 128))) + return -1; - if ((ret = rwnx_send_rf_config_req(rwnx_hw, 16, 1, (u8_l *)wifi_txgain_table_24g_1_8800dcdw, 128))) - return -1; - } - #else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ - { - ret = rwnx_send_rf_config_req(rwnx_hw, 0, 1, (u8_l *)wifi_txgain_table_24g_8800dcdw_femkct, 128); - if (ret) { - return -1; - } - ret = rwnx_send_rf_config_req(rwnx_hw, 16, 1, (u8_l *)wifi_txgain_table_24g_1_8800dcdw_femkct, 128); - if (ret) { - return -1; - } - } - #endif + if ((ret = rwnx_send_rf_config_req( + rwnx_hw, 16, 1, + (u8_l *)wifi_txgain_table_24g_1_8800dcdw, + 128))) + return -1; + } +#else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ + { + ret = rwnx_send_rf_config_req( + rwnx_hw, 0, 1, + (u8_l *)wifi_txgain_table_24g_8800dcdw_femkct, + 128); + if (ret) { + return -1; + } + ret = rwnx_send_rf_config_req( + rwnx_hw, 16, 1, + (u8_l *)wifi_txgain_table_24g_1_8800dcdw_femkct, + 128); + if (ret) { + return -1; + } + } +#endif - if ((ret = rwnx_send_rf_config_req(rwnx_hw, 0, 0, (u8_l *)wifi_rxgain_table_24g_20m_8800dcdw, 256))) + if ((ret = rwnx_send_rf_config_req( + rwnx_hw, 0, 0, + (u8_l *)wifi_rxgain_table_24g_20m_8800dcdw, 256))) return -1; - if ((ret = rwnx_send_rf_config_req(rwnx_hw, 32, 0, (u8_l *)wifi_rxgain_table_24g_40m_8800dcdw, 256))) + if ((ret = rwnx_send_rf_config_req( + rwnx_hw, 32, 0, + (u8_l *)wifi_rxgain_table_24g_40m_8800dcdw, 256))) return -1; if ((ret = rwnx_send_rf_calib_req(rwnx_hw, cfm))) { return -1; } } else if (testmode == 1) { - if (chip_sub_id >= 1) { - #ifdef CONFIG_DPD - #ifndef CONFIG_FORCE_DPD_CALIB - if (is_file_exist(FW_DPDRESULT_NAME_8800DC) == 1) { - AICWFDBG(LOGINFO, "%s load dpd bin\n", __func__); - ret = aicwf_fdrv_dpd_result_load_8800dc(rwnx_hw, &dpd_res); - if (ret) { - AICWFDBG(LOGINFO, "load dpd bin fail: %d\n", ret); - return ret; - } - } - #endif - if (dpd_res.bit_mask[1]) { - ret = aicwf_fdrv_dpd_result_apply_8800dc(rwnx_hw, &dpd_res); - if (ret) { - AICWFDBG(LOGINFO, "apply dpd bin fail: %d\n", ret); - return ret; - } - } - #else - { - ret = aicwf_fdrv_misc_ram_init_8800dc(rwnx_hw); - if (ret) { - AICWFDBG(LOGINFO, "misc ram init fail: %d\n", ret); - return ret; - } - } - #endif - ret = rwnx_send_rf_calib_req(rwnx_hw, cfm); - if (ret) { - AICWFDBG(LOGINFO, "rf calib req fail: %d\n", ret); - return ret; - } - } - } + if (chip_sub_id >= 1) { +#ifdef CONFIG_DPD +#ifndef CONFIG_FORCE_DPD_CALIB + if (is_file_exist(FW_DPDRESULT_NAME_8800DC) == 1) { + AICWFDBG(LOGINFO, "%s load dpd bin\n", + __func__); + ret = aicwf_fdrv_dpd_result_load_8800dc( + rwnx_hw, &dpd_res); + if (ret) { + AICWFDBG(LOGINFO, + "load dpd bin fail: %d\n", + ret); + return ret; + } + } +#endif + if (dpd_res.bit_mask[1]) { + ret = aicwf_fdrv_dpd_result_apply_8800dc( + rwnx_hw, &dpd_res); + if (ret) { + AICWFDBG(LOGINFO, + "apply dpd bin fail: %d\n", + ret); + return ret; + } + } +#elif defined(CONFIG_LOFT_CALIB) + if (loft_res_local.bit_mask[1]) { + ret = aicwf_fdrv_loft_result_apply_8800dc( + rwnx_hw, &loft_res_local); + if (ret) { + AICWFDBG(LOGINFO, + "apply loft res fail: %d\n", + ret); + return ret; + } + } +#else + { + ret = aicwf_fdrv_misc_ram_init_8800dc(rwnx_hw); + if (ret) { + AICWFDBG(LOGINFO, + "misc ram init fail: %d\n", + ret); + return ret; + } + } +#endif + ret = rwnx_send_rf_calib_req(rwnx_hw, cfm); + if (ret) { + AICWFDBG(LOGINFO, "rf calib req fail: %d\n", + ret); + return ret; + } + } + } - return 0 ; + return 0; } -int rwnx_plat_userconfig_load_8800dc(struct rwnx_hw *rwnx_hw){ - int size; - u32 *dst=NULL; - char *filename = FW_USERCONFIG_NAME_8800DC; +int rwnx_plat_userconfig_load_8800dc(struct rwnx_hw *rwnx_hw) +{ + int size; + u32 *dst = NULL; + char *filename = FW_USERCONFIG_NAME_8800DC; - AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); + AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); - /* load file */ - size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); - if (size <= 0) { - AICWFDBG(LOGERROR, "wrong size of firmware file\n"); - dst = NULL; - return 0; - } + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + return 0; + } /* Copy the file on the Embedded side */ - AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); rwnx_plat_userconfig_parsing2((char *)dst, size); - rwnx_release_firmware_common(&dst); - - AICWFDBG(LOGINFO, "userconfig download complete\n\n"); - return 0; + rwnx_release_firmware_common(&dst); + AICWFDBG(LOGINFO, "userconfig download complete\n\n"); + return 0; } -int rwnx_plat_userconfig_load_8800dw(struct rwnx_hw *rwnx_hw){ - int size; - u32 *dst=NULL; - char *filename = FW_USERCONFIG_NAME_8800DC; +int rwnx_plat_userconfig_load_8800dw(struct rwnx_hw *rwnx_hw) +{ + int size; + u32 *dst = NULL; + char *filename = FW_USERCONFIG_NAME_8800DC; - AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); + AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); - /* load file */ - size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); - if (size <= 0) { - AICWFDBG(LOGERROR, "wrong size of firmware file\n"); - dst = NULL; - return 0; - } + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + return 0; + } /* Copy the file on the Embedded side */ - AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); rwnx_plat_userconfig_parsing2((char *)dst, size); - rwnx_release_firmware_common(&dst); - - AICWFDBG(LOGINFO, "userconfig download complete\n\n"); - return 0; + rwnx_release_firmware_common(&dst); + AICWFDBG(LOGINFO, "userconfig download complete\n\n"); + return 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.h index 249703b68..0af1af834 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_compat_8800dc.h @@ -2,14 +2,15 @@ #include "aic_bsp_export.h" #ifdef CONFIG_DPD -int aicwf_fdrv_dpd_result_apply_8800dc(struct rwnx_hw * rwnx_hw, rf_misc_ram_lite_t * dpd_res); +int aicwf_fdrv_dpd_result_apply_8800dc(struct rwnx_hw *rwnx_hw, + rf_misc_ram_lite_t *dpd_res); #ifndef CONFIG_FORCE_DPD_CALIB -int aicwf_fdrv_dpd_result_load_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res); +int aicwf_fdrv_dpd_result_load_8800dc(struct rwnx_hw *rwnx_hw, + rf_misc_ram_lite_t *dpd_res); #endif #endif int aicwf_fdrv_misc_ram_init_8800dc(struct rwnx_hw *rwnx_hw); -int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm); -int rwnx_plat_userconfig_load_8800dc(struct rwnx_hw *rwnx_hw); -int rwnx_plat_userconfig_load_8800dw(struct rwnx_hw *rwnx_hw); - - +int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, + struct mm_set_rf_calib_cfm *cfm); +int rwnx_plat_userconfig_load_8800dc(struct rwnx_hw *rwnx_hw); +int rwnx_plat_userconfig_load_8800dw(struct rwnx_hw *rwnx_hw); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_debug.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_debug.h index 6fdb3ee9e..b2a05d9ac 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_debug.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_debug.h @@ -2,39 +2,36 @@ #define RWNX_FN_ENTRY_STR ">>> %s()\n", __func__ - - /* message levels */ -#define LOGERROR 0x0001 -#define LOGINFO 0x0002 -#define LOGTRACE 0x0004 -#define LOGDEBUG 0x0008 -#define LOGDATA 0x0010 -#define LOGIRQ 0x0020 -#define LOGSDPWRC 0x0040 -#define LOGWAKELOCK 0x0080 -#define LOGRXPOLL 0x0100 +#define LOGERROR 0x0001 +#define LOGINFO 0x0002 +#define LOGTRACE 0x0004 +#define LOGDEBUG 0x0008 +#define LOGDATA 0x0010 +#define LOGIRQ 0x0020 +#define LOGSDPWRC 0x0040 +#define LOGWAKELOCK 0x0080 +#define LOGRXPOLL 0x0100 extern int aicwf_dbg_level; -void rwnx_data_dump(char* tag, void* data, unsigned long len); - -#define AICWF_LOG "AICWFDBG(" +void rwnx_data_dump(char *tag, void *data, unsigned long len); +#define AICWF_LOG "AICWFDBG(" #ifdef DEBUG -#define AICWFDBG(level, args, arg...) \ -do { \ - if (aicwf_dbg_level & level) { \ - printk(AICWF_LOG#level")\t" args, ##arg); \ - } \ -} while (0) +#define AICWFDBG(level, args, arg...) \ + do { \ + if (aicwf_dbg_level & level) { \ + printk(AICWF_LOG #level ")\t" args, ##arg); \ + } \ + } while (0) -#define RWNX_DBG(fmt, ...) \ -do { \ - if (aicwf_dbg_level & LOGTRACE) { \ - printk(AICWF_LOG"LOGTRACE)\t"fmt , ##__VA_ARGS__); \ - } \ -} while (0) +#define RWNX_DBG(fmt, ...) \ + do { \ + if (aicwf_dbg_level & LOGTRACE) { \ + printk(AICWF_LOG "LOGTRACE)\t" fmt, ##__VA_ARGS__); \ + } \ + } while (0) #else #define AICWFDBG(level, args, arg...) @@ -43,20 +40,19 @@ do { \ #endif #if 0 -#define RWNX_DBG(fmt, ...) \ - do { \ - if (aicwf_dbg_level & LOGTRACE) { \ - printk(AICWF_LOG"LOGTRACE"")\t" fmt, ##__VA_ARGS__); \ - } \ +#define RWNX_DBG(fmt, ...) \ + do { \ + if (aicwf_dbg_level & LOGTRACE) { \ + printk(AICWF_LOG "LOGTRACE" \ + ")\t" fmt, \ + ##__VA_ARGS__); \ + } \ + } while (0) +#define AICWFDBG(args, level) \ + do { \ + if (aicwf_dbg_level & level) { \ + printk(AICWF_LOG "(%s)\t", #level); \ + printf args; \ + } \ } while (0) -#define AICWFDBG(args, level) \ -do { \ - if (aicwf_dbg_level & level) { \ - printk(AICWF_LOG"(%s)\t" ,#level); \ - printf args; \ - } \ -} while (0) #endif - - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.c index 59502b89a..2b39fa95a 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.c @@ -12,86 +12,89 @@ int aic_rxbuff_num_max = 30; int aic_rxbuff_size = (64 * 512); -struct rx_buff *aicwf_prealloc_rxbuff_alloc(spinlock_t *lock) +struct rx_buff *aicwf_prealloc_rxbuff_alloc(spinlock_t *lock) { - unsigned long flags; - struct rx_buff *rxbuff = NULL; + unsigned long flags; + struct rx_buff *rxbuff = NULL; - spin_lock_irqsave(lock, flags); - if (list_empty(&aic_rx_buff_list.rxbuff_list)) { - spin_unlock_irqrestore(lock, flags); - printk("%s %d, rxbuff list is empty\n", __func__, __LINE__); - return NULL; - } else { + spin_lock_irqsave(lock, flags); + if (list_empty(&aic_rx_buff_list.rxbuff_list)) { + spin_unlock_irqrestore(lock, flags); + printk("%s %d, rxbuff list is empty\n", __func__, __LINE__); + return NULL; + } else { rxbuff = list_first_entry(&aic_rx_buff_list.rxbuff_list, - struct rx_buff, queue); + struct rx_buff, queue); list_del_init(&rxbuff->queue); - atomic_dec(&aic_rx_buff_list.rxbuff_list_len); + atomic_dec(&aic_rx_buff_list.rxbuff_list_len); } - spin_unlock_irqrestore(lock, flags); - //printk("len:%d\n", aic_rx_buff_list.rxbuff_list_len); - memset(rxbuff->data, 0, aic_rxbuff_size); - rxbuff->len = 0; - rxbuff->start = NULL; - rxbuff->read = NULL; - rxbuff->end = NULL; + spin_unlock_irqrestore(lock, flags); + //printk("len:%d\n", aic_rx_buff_list.rxbuff_list_len); + memset(rxbuff->data, 0, aic_rxbuff_size); + rxbuff->len = 0; + rxbuff->start = NULL; + rxbuff->read = NULL; + rxbuff->end = NULL; - return rxbuff; + return rxbuff; } void aicwf_prealloc_rxbuff_free(struct rx_buff *rxbuff, spinlock_t *lock) { - unsigned long flags; + unsigned long flags; - spin_lock_irqsave(lock, flags); + spin_lock_irqsave(lock, flags); list_add_tail(&rxbuff->queue, &aic_rx_buff_list.rxbuff_list); atomic_inc(&aic_rx_buff_list.rxbuff_list_len); - spin_unlock_irqrestore(lock, flags); + spin_unlock_irqrestore(lock, flags); } int aicwf_prealloc_init() { - struct rx_buff *rxbuff; - int i = 0; + struct rx_buff *rxbuff; + int i = 0; - printk("%s enter\n", __func__); - INIT_LIST_HEAD(&aic_rx_buff_list.rxbuff_list); - - for (i = 0 ; i < aic_rxbuff_num_max ; i++) { - rxbuff = kzalloc(sizeof(struct rx_buff), GFP_KERNEL); - if (rxbuff) { - rxbuff->data = kzalloc(aic_rxbuff_size, GFP_KERNEL); - if (rxbuff->data == NULL) { - printk("failed to alloc rxbuff data\n"); - kfree(rxbuff); - continue; - } - rxbuff->len = 0; - rxbuff->start = NULL; - rxbuff->read = NULL; - rxbuff->end = NULL; - list_add_tail(&rxbuff->queue, &aic_rx_buff_list.rxbuff_list); - atomic_inc(&aic_rx_buff_list.rxbuff_list_len); - } - } + printk("%s enter\n", __func__); + INIT_LIST_HEAD(&aic_rx_buff_list.rxbuff_list); - printk("pre alloc rxbuff list len: %d\n", (int)atomic_read(&aic_rx_buff_list.rxbuff_list_len)); - return 0; + for (i = 0; i < aic_rxbuff_num_max; i++) { + rxbuff = kzalloc(sizeof(struct rx_buff), GFP_KERNEL); + if (rxbuff) { + rxbuff->data = kzalloc(aic_rxbuff_size, GFP_KERNEL); + if (rxbuff->data == NULL) { + printk("failed to alloc rxbuff data\n"); + kfree(rxbuff); + continue; + } + rxbuff->len = 0; + rxbuff->start = NULL; + rxbuff->read = NULL; + rxbuff->end = NULL; + list_add_tail(&rxbuff->queue, + &aic_rx_buff_list.rxbuff_list); + atomic_inc(&aic_rx_buff_list.rxbuff_list_len); + } + } + + printk("pre alloc rxbuff list len: %d\n", + (int)atomic_read(&aic_rx_buff_list.rxbuff_list_len)); + return 0; } void aicwf_prealloc_exit() { - struct rx_buff *rxbuff; - struct rx_buff *pos; - - printk("%s enter\n", __func__); + struct rx_buff *rxbuff; + struct rx_buff *pos; - printk("free pre alloc rxbuff list %d\n", (int)atomic_read(&aic_rx_buff_list.rxbuff_list_len)); - list_for_each_entry_safe(rxbuff, pos, &aic_rx_buff_list.rxbuff_list, queue) { - list_del_init(&rxbuff->queue); - kfree(rxbuff->data); - kfree(rxbuff); - } + printk("%s enter\n", __func__); + + printk("free pre alloc rxbuff list %d\n", + (int)atomic_read(&aic_rx_buff_list.rxbuff_list_len)); + list_for_each_entry_safe (rxbuff, pos, &aic_rx_buff_list.rxbuff_list, + queue) { + list_del_init(&rxbuff->queue); + kfree(rxbuff->data); + kfree(rxbuff); + } } #endif - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.h index 64a494aee..608af7476 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_rx_prealloc.h @@ -3,17 +3,17 @@ #ifdef CONFIG_PREALLOC_RX_SKB struct rx_buff { - struct list_head queue; - unsigned char *data; - u32 len; - uint8_t *start; - uint8_t *end; - uint8_t *read; + struct list_head queue; + unsigned char *data; + u32 len; + uint8_t *start; + uint8_t *end; + uint8_t *read; }; struct aicwf_rx_buff_list { - struct list_head rxbuff_list; - atomic_t rxbuff_list_len; + struct list_head rxbuff_list; + atomic_t rxbuff_list_len; }; struct rx_buff *aicwf_prealloc_rxbuff_alloc(spinlock_t *lock); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.c index 422532ba2..13005ac68 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.c @@ -15,12 +15,14 @@ #include #include #include +#include #include "aicwf_txrxif.h" #include "aicwf_sdio.h" #include "sdio_host.h" #include "rwnx_defs.h" #include "rwnx_platform.h" #include "aicwf_rx_prealloc.h" +#include "rwnx_msg_tx.h" #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) #include #else @@ -41,8 +43,14 @@ #include "aic_bsp_export.h" extern uint8_t scanning; +#ifdef CONFIG_SDIO_ADMA +unsigned char sdio_tx_buf_fill[512]; +unsigned char sdio_tx_buf_dummy[SDIO_TX_SLIST_MAX][8]; +#endif + #ifdef CONFIG_GPIO_WAKEUP -extern int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level); +extern int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level, + u8 disable_filter); #ifdef CONFIG_WIFI_SUSPEND_FOR_LINUX #include @@ -50,9 +58,9 @@ void rwnx_init_wifi_suspend_node(void); void rwnx_deinit_wifi_suspend_node(void); void rwnx_set_wifi_suspend(char onoff); struct proc_dir_entry *wifi_suspend_node; -#endif//CONFIG_WIFI_SUSPEND_FOR_LINUX +#endif //CONFIG_WIFI_SUSPEND_FOR_LINUX -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP int tx_aggr_counter = 32; module_param_named(tx_aggr_counter, tx_aggr_counter, int, 0644); @@ -65,6 +73,37 @@ int tx_fc_high_water = AICWF_SDIO_TX_HIGH_WATER; module_param_named(tx_fc_high_water, tx_fc_high_water, int, 0644); #endif +#if 0 +void rwnx_data_dump(char* tag, void* data, unsigned long len){ + if(dump){ + unsigned long i = 0; + uint8_t* data_ = (uint8_t* )data; + + printk("%s %s len:(%lu)\r\n", __func__, tag, len); + + for (i = 0; i < len; i += 16){ + printk("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\r\n", + data_[0 + i], + data_[1 + i], + data_[2 + i], + data_[3 + i], + data_[4 + i], + data_[5 + i], + data_[6 + i], + data_[7 + i], + data_[8 + i], + data_[9 + i], + data_[10 + i], + data_[11 + i], + data_[12 + i], + data_[13 + i], + data_[14 + i], + data_[15 + i]); + } + } +} +#endif + int aicwf_sdio_readb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 *val) { int ret; @@ -83,111 +122,301 @@ int aicwf_sdio_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val) return ret; } +int aicwf_sdio_func2_readb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 *val) +{ + int ret; + sdio_claim_host(sdiodev->func2); + *val = sdio_readb(sdiodev->func2, regaddr, &ret); + sdio_release_host(sdiodev->func2); + return ret; +} + +int aicwf_sdio_func2_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val) +{ + int ret; + sdio_claim_host(sdiodev->func2); + sdio_writeb(sdiodev->func2, val, regaddr, &ret); + sdio_release_host(sdiodev->func2); + return ret; +} + #ifdef CONFIG_TX_NETIF_FLOWCTRL void aicwf_sdio_tx_netif_flowctrl(struct rwnx_hw *rwnx_hw, bool state) { - struct rwnx_vif *rwnx_vif; - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { - if (! rwnx_vif->up) - continue; - if (state) - netif_tx_stop_all_queues(rwnx_vif->ndev);//netif_stop_queue(rwnx_vif->ndev); - else - netif_tx_wake_all_queues(rwnx_vif->ndev);//netif_wake_queue(rwnx_vif->ndev); - } + struct rwnx_vif *rwnx_vif; + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { + if (!rwnx_vif->up) + continue; + if (state) + netif_tx_stop_all_queues( + rwnx_vif->ndev); //netif_stop_queue(rwnx_vif->ndev); + else + netif_tx_wake_all_queues( + rwnx_vif->ndev); //netif_wake_queue(rwnx_vif->ndev); + } +} +#endif + +#ifdef CONFIG_TEMP_CONTROL +//int interval = 30; +//module_param(interval, int, 0660); +static int update_state(s8_l value, u8_l current_state) +{ + if (value > TEMP_THD_2) + return 2; + else if (value > (TEMP_THD_2 - BUFFERING_V2) && (current_state == 2)) + return 2; + else if (value > TEMP_THD_1 && current_state != 2) + return 1; + else if (value > (TEMP_THD_1 - BUFFERING_V1) && current_state == 1) + return 1; + else if (current_state == 0) + return 0; + else + return 1; +} + +void aicwf_netif_ctrl(struct aic_sdio_dev *sdiodev, int val) +{ + unsigned long flags; + struct rwnx_vif *rwnx_vif; + + if (sdiodev->net_stop) + return; + + spin_lock_irqsave(&sdiodev->tx_flow_lock, flags); + list_for_each_entry (rwnx_vif, &sdiodev->rwnx_hw->vifs, list) { + if (!rwnx_vif || !rwnx_vif->ndev || !rwnx_vif->up) + continue; + netif_tx_stop_all_queues( + rwnx_vif->ndev); //netif_stop_queue(rwnx_vif->ndev); + } + spin_unlock_irqrestore(&sdiodev->tx_flow_lock, flags); + sdiodev->net_stop = true; + mod_timer(&sdiodev->netif_timer, jiffies + msecs_to_jiffies(val)); + + return; +} + +void aicwf_temp_ctrl(struct aic_sdio_dev *sdiodev) +{ + if (sdiodev->set_level) { + if (sdiodev->set_level == 1) { + sdiodev->get_level = 1; + aicwf_netif_ctrl( + sdiodev, + sdiodev->interval_t1 /*TMR_INTERVAL_1*/); + //mdelay(1); + } else if (sdiodev->set_level == 2) { + sdiodev->get_level = 2; + aicwf_netif_ctrl( + sdiodev, + sdiodev->interval_t2 /*TMR_INTERVAL_2*/); + //mdelay(2); + } + return; + } else { + if (sdiodev->cur_temp > (TEMP_THD_1 - 8)) { + //if ((sdiodev->cur_temp > TEMP_THD_1 && sdiodev->cur_temp <= TEMP_THD_2) || (sdiodev->cur_stat == 1)) { + if (update_state(sdiodev->cur_temp, + sdiodev->cur_stat) == 1) { + sdiodev->get_level = 1; + sdiodev->cur_stat = 1; + aicwf_netif_ctrl( + sdiodev, + sdiodev->interval_t1 /*TMR_INTERVAL_1*/); + //mdelay(1); + //break; + //} else if ((sdiodev->cur_temp > TEMP_THD_2) || (sdiodev->cur_stat == 2)) { + } else if (update_state(sdiodev->cur_temp, + sdiodev->cur_stat) == 2) { + sdiodev->get_level = 2; + sdiodev->cur_stat = 2; + aicwf_netif_ctrl( + sdiodev, + sdiodev->interval_t2 /*TMR_INTERVAL_2*/); + //mdelay(2); + //break; + } + return; + } + + if (sdiodev->cur_stat) { + AICWFDBG(LOGINFO, "reset cur_stat"); + sdiodev->cur_stat = 0; + } + + return; + } +} + +void aicwf_netif_worker(struct work_struct *work) +{ + struct aic_sdio_dev *sdiodev = + container_of(work, struct aic_sdio_dev, netif_work); + unsigned long flags; + struct rwnx_vif *rwnx_vif; + spin_lock_irqsave(&sdiodev->tx_flow_lock, flags); + list_for_each_entry (rwnx_vif, &sdiodev->rwnx_hw->vifs, list) { + if (!rwnx_vif || !rwnx_vif->ndev || !rwnx_vif->up) + continue; + netif_tx_wake_all_queues( + rwnx_vif->ndev); //netif_wake_queue(rwnx_vif->ndev); + } + spin_unlock_irqrestore(&sdiodev->tx_flow_lock, flags); + sdiodev->net_stop = false; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +static void aicwf_netif_timer(ulong data) +#else +static void aicwf_netif_timer(struct timer_list *t) +#endif +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *)data; +#else + struct aic_sdio_dev *sdiodev = from_timer(sdiodev, t, netif_timer); +#endif + + if (!work_pending(&sdiodev->netif_work)) + schedule_work(&sdiodev->netif_work); + + return; +} + +void aicwf_temp_ctrl_worker(struct work_struct *work) +{ + struct rwnx_hw *rwnx_hw; + struct mm_set_vendor_swconfig_cfm cfm; + struct aic_sdio_dev *sdiodev = + container_of(work, struct aic_sdio_dev, tp_ctrl_work); + rwnx_hw = sdiodev->rwnx_hw; + //AICWFDBG(LOGINFO, "%s\n", __func__); + + rwnx_hw->started_jiffies = jiffies; + + rwnx_send_get_temp_req(rwnx_hw, &cfm); + sdiodev->cur_temp = cfm.temp_comp_get_cfm.degree; + + mod_timer(&sdiodev->tp_ctrl_timer, + jiffies + msecs_to_jiffies(TEMP_GET_INTERVAL)); + + return; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +static void aicwf_temp_ctrl_timer(ulong data) +#else +static void aicwf_temp_ctrl_timer(struct timer_list *t) +#endif +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *)data; +#else + struct aic_sdio_dev *sdiodev = from_timer(sdiodev, t, tp_ctrl_timer); +#endif + + if (!work_pending(&sdiodev->tp_ctrl_work)) + schedule_work(&sdiodev->tp_ctrl_work); + + return; } #endif int aicwf_sdio_flow_ctrl_msg(struct aic_sdio_dev *sdiodev) { - int ret = -1; - u8 fc_reg = 0; - u32 count = 0; + int ret = -1; + u8 fc_reg = 0; + u32 count = 0; - while (true) { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.flow_ctrl_reg, &fc_reg); - if (ret) { - return -1; - } + while (true) { + ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.flow_ctrl_reg, + &fc_reg); + if (ret) { + return -1; + } - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - fc_reg = fc_reg & SDIOWIFI_FLOWCTRL_MASK_REG; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + fc_reg = fc_reg & SDIOWIFI_FLOWCTRL_MASK_REG; + } - if (fc_reg != 0) { - ret = fc_reg; - if(ret > tx_aggr_counter){ + if (fc_reg != 0) { + ret = fc_reg; + if (ret > tx_aggr_counter) { ret = tx_aggr_counter; } - return ret; - } else { - if (count >= FLOW_CTRL_RETRY_COUNT) { - ret = -fc_reg; - break; - } - count++; - if (count < 30) - udelay(200); - else if(count < 40) - msleep(2); - else - msleep(10); - } - } + return ret; + } else { + if (count >= FLOW_CTRL_RETRY_COUNT) { + ret = -fc_reg; + break; + } + count++; + if (count < 30) + udelay(200); + else if (count < 40) + msleep(2); + else + msleep(10); + } + } - return ret; + return ret; } - int aicwf_sdio_flow_ctrl(struct aic_sdio_dev *sdiodev) { - int ret = -1; - u8 fc_reg = 0; - u32 count = 0; + int ret = -1; + u8 fc_reg = 0; + u32 count = 0; - while (true) { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.flow_ctrl_reg, &fc_reg); - if (ret) { - return -1; - } + while (true) { + ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.flow_ctrl_reg, + &fc_reg); + if (ret) { + return -1; + } - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - fc_reg = fc_reg & SDIOWIFI_FLOWCTRL_MASK_REG; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + fc_reg = fc_reg & SDIOWIFI_FLOWCTRL_MASK_REG; + } - if (fc_reg > DATA_FLOW_CTRL_THRESH) { - ret = fc_reg; - if(ret > tx_aggr_counter){ + if (fc_reg > DATA_FLOW_CTRL_THRESH) { + ret = fc_reg; + if (ret > tx_aggr_counter) { ret = tx_aggr_counter; } - return ret; - } else { - if (count >= FLOW_CTRL_RETRY_COUNT) { - ret = -fc_reg; - break; - } - count++; - if (count < 30) - udelay(200); - else if(count < 40) - msleep(2); - else - msleep(10); - } - } + return ret; + } else { + if (count >= FLOW_CTRL_RETRY_COUNT) { + ret = -fc_reg; + break; + } + count++; + if (count < 30) + udelay(200); + else if (count < 40) + msleep(2); + else + msleep(10); + } + } - return ret; + return ret; } - int aicwf_sdio_send_pkt(struct aic_sdio_dev *sdiodev, u8 *buf, uint count) { int ret = 0; sdio_claim_host(sdiodev->func); - ret = sdio_writesb(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, buf, count); + ret = sdio_writesb(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, buf, + count); sdio_release_host(sdiodev->func); return ret; @@ -195,17 +424,19 @@ int aicwf_sdio_send_pkt(struct aic_sdio_dev *sdiodev, u8 *buf, uint count) #ifdef CONFIG_PREALLOC_RX_SKB int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct rx_buff *rxbuff, - u32 size) + u32 size) { int ret; if ((!rxbuff->data) || (!size)) { - return -EINVAL;; + return -EINVAL; + ; } - sdio_claim_host(sdiodev->func); - ret = sdio_readsb(sdiodev->func, rxbuff->data, sdiodev->sdio_reg.rd_fifo_addr, size); - sdio_release_host(sdiodev->func); + sdio_claim_host(sdiodev->func); + ret = sdio_readsb(sdiodev->func, rxbuff->data, + sdiodev->sdio_reg.rd_fifo_addr, size); + sdio_release_host(sdiodev->func); if (ret < 0) { return ret; @@ -216,17 +447,19 @@ int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct rx_buff *rxbuff, } #else int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, - u32 size) + u32 size) { int ret; if ((!skbbuf) || (!size)) { - return -EINVAL;; + return -EINVAL; + ; } - sdio_claim_host(sdiodev->func); - ret = sdio_readsb(sdiodev->func, skbbuf->data, sdiodev->sdio_reg.rd_fifo_addr, size); - sdio_release_host(sdiodev->func); + sdio_claim_host(sdiodev->func); + ret = sdio_readsb(sdiodev->func, skbbuf->data, + sdiodev->sdio_reg.rd_fifo_addr, size); + sdio_release_host(sdiodev->func); if (ret < 0) { return ret; @@ -237,13 +470,14 @@ int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, } #endif - #ifdef CONFIG_GPIO_WAKEUP static int wakeup_enable; static u32 hostwake_irq_num; -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)//LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) +#if LINUX_VERSION_CODE >= \ + KERNEL_VERSION(4, 14, \ + 0) //LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) //static struct wakeup_source *ws_rx_sdio; //static struct wakeup_source *ws_sdio_pwrctrl; //static struct wakeup_source *ws_tx_sdio; @@ -256,8 +490,8 @@ static u32 hostwake_irq_num; #include static struct wake_lock irq_wakelock; //struct wake_lock irq_wakelock; -#endif//CONFIG_GPIO_WAKEUP -#endif//ANDROID_PLATFORM +#endif //CONFIG_GPIO_WAKEUP +#endif //ANDROID_PLATFORM #endif #ifdef CONFIG_PLATFORM_ALLWINNER @@ -267,7 +501,7 @@ extern int sunxi_wlan_get_oob_irq(int *, int *); extern int sunxi_wlan_get_oob_irq(void); extern int sunxi_wlan_get_oob_irq_flags(void); #endif -#endif// CONFIG_PLATFORM_ALLWINNER +#endif // CONFIG_PLATFORM_ALLWINNER #if 0 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) @@ -277,8 +511,8 @@ static struct wakeup_source *ws; #ifdef CONFIG_GPIO_WAKEUP #include static struct wake_lock irq_wakelock; -#endif//CONFIG_GPIO_WAKEUP -#endif//ANDROID_PLATFORM +#endif //CONFIG_GPIO_WAKEUP +#endif //ANDROID_PLATFORM #endif #endif @@ -328,12 +562,10 @@ void rwnx_pm_relax(struct aic_sdio_dev *sdiodev){ } #endif - #ifdef CONFIG_GPIO_WAKEUP void rwnx_set_wifi_suspend(char onoff); - static irqreturn_t rwnx_hostwake_irq_handler(int irq, void *para) { static int wake_cnt; @@ -347,21 +579,22 @@ static irqreturn_t rwnx_hostwake_irq_handler(int irq, void *para) #endif //ANDROID_PLATFORM #endif - AICWFDBG(LOGIRQ, "%s(%d): wake_irq_cnt = %d\n", __func__, __LINE__, wake_cnt); + AICWFDBG(LOGIRQ, "%s(%d): wake_irq_cnt = %d\n", __func__, __LINE__, + wake_cnt); #ifdef CONFIG_OOB -#if 0//old oob feature +#if 0 //old oob feature complete(&g_rwnx_plat->sdiodev->bus_if->busrx_trgg); -#else//new oob feature - if(g_rwnx_plat->sdiodev->oob_enable){ - complete(&g_rwnx_plat->sdiodev->bus_if->busirq_trgg); - } -#endif//old oob feature +#else //new oob feature + if (g_rwnx_plat->sdiodev->oob_enable) { + complete(&g_rwnx_plat->sdiodev->bus_if->busirq_trgg); + } +#endif //old oob feature #endif return IRQ_HANDLED; } -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP #ifdef CONFIG_GPIO_WAKEUP static int rwnx_disable_hostwake_irq(void); @@ -370,12 +603,12 @@ static int rwnx_enable_hostwake_irq(void); static int rwnx_register_hostwake_irq(struct device *dev) { - int ret = 0;//-1; + int ret = 0; //-1; #ifdef CONFIG_GPIO_WAKEUP unsigned long flag_edge; struct aicbsp_feature_t aicwf_feature; int irq_flags; -//TODO hostwake_irq_num hostwake_irq_num and wakeup_enable + //TODO hostwake_irq_num hostwake_irq_num and wakeup_enable aicbsp_get_feature(&aicwf_feature, NULL); if (aicwf_feature.irqf == 0) @@ -383,7 +616,6 @@ static int rwnx_register_hostwake_irq(struct device *dev) else flag_edge = IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND; - #ifdef CONFIG_PLATFORM_ALLWINNER #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) hostwake_irq_num = sunxi_wlan_get_oob_irq(&irq_flags, &wakeup_enable); @@ -396,23 +628,25 @@ static int rwnx_register_hostwake_irq(struct device *dev) //For Rockchip #ifdef CONFIG_PLATFORM_ROCKCHIP - hostwake_irq_num = rockchip_wifi_get_oob_irq(); - printk("%s hostwake_irq_num:%d \r\n", __func__, hostwake_irq_num); - irq_flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | IORESOURCE_IRQ_SHAREABLE) & IRQF_TRIGGER_MASK; - printk("%s irq_flags:%d \r\n", __func__, irq_flags); - wakeup_enable = 1; + hostwake_irq_num = rockchip_wifi_get_oob_irq(); + printk("%s hostwake_irq_num:%d \r\n", __func__, hostwake_irq_num); + irq_flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | + IORESOURCE_IRQ_SHAREABLE) & + IRQF_TRIGGER_MASK; + printk("%s irq_flags:%d \r\n", __func__, irq_flags); + wakeup_enable = 1; #endif //CONFIG_PLATFORM_ROCKCHIP - //For Rockchip + //For Rockchip #ifdef CONFIG_PLATFORM_ROCKCHIP2 - hostwake_irq_num = rockchip_wifi_get_oob_irq(); - printk("%s hostwake_irq_num:%d \r\n", __func__, hostwake_irq_num); - irq_flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | IORESOURCE_IRQ_SHAREABLE) & IRQF_TRIGGER_MASK; - printk("%s irq_flags:%d \r\n", __func__, irq_flags); - wakeup_enable = 1; + hostwake_irq_num = rockchip_wifi_get_oob_irq(); + printk("%s hostwake_irq_num:%d \r\n", __func__, hostwake_irq_num); + irq_flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | + IORESOURCE_IRQ_SHAREABLE) & + IRQF_TRIGGER_MASK; + printk("%s irq_flags:%d \r\n", __func__, irq_flags); + wakeup_enable = 1; #endif //CONFIG_PLATFORM_ROCKCHIP - - if (wakeup_enable) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) //ws = wakeup_source_register(dev, "wifisleep"); @@ -426,7 +660,8 @@ static int rwnx_register_hostwake_irq(struct device *dev) #endif ret = device_init_wakeup(dev, true); if (ret < 0) { - pr_err("%s(%d): device init wakeup failed!\n", __func__, __LINE__); + pr_err("%s(%d): device init wakeup failed!\n", __func__, + __LINE__); return ret; } @@ -434,14 +669,17 @@ static int rwnx_register_hostwake_irq(struct device *dev) ret = dev_pm_set_wake_irq(dev, hostwake_irq_num); #endif if (ret < 0) { - pr_err("%s(%d): can't enable wakeup src!\n", __func__, __LINE__); + pr_err("%s(%d): can't enable wakeup src!\n", __func__, + __LINE__); goto fail1; } - ret = request_irq(hostwake_irq_num, rwnx_hostwake_irq_handler, flag_edge, "rwnx_hostwake_irq", NULL); + ret = request_irq(hostwake_irq_num, rwnx_hostwake_irq_handler, + flag_edge, "rwnx_hostwake_irq", NULL); if (ret < 0) { - pr_err("%s(%d): request_irq fail! ret = %d\n", __func__, __LINE__, ret); + pr_err("%s(%d): request_irq fail! ret = %d\n", __func__, + __LINE__, ret); goto fail2; } } @@ -470,7 +708,7 @@ fail1: wake_lock_destroy(&irq_wakelock); #endif #endif -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP return ret; } @@ -483,7 +721,8 @@ static int rwnx_unregister_hostwake_irq(struct device *dev) #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) dev_pm_clear_wake_irq(dev); #else - AICWFDBG(LOGERROR, "%s kernel unsupport this feature!\r\n", __func__); + AICWFDBG(LOGERROR, "%s kernel unsupport this feature!\r\n", + __func__); #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) //wakeup_source_unregister(ws); @@ -497,7 +736,7 @@ static int rwnx_unregister_hostwake_irq(struct device *dev) #endif } free_irq(hostwake_irq_num, NULL); -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP AICWFDBG(LOGINFO, "%s(%d)\n", __func__, __LINE__); return 0; } @@ -508,7 +747,7 @@ static int rwnx_enable_hostwake_irq(void) #ifdef CONFIG_GPIO_WAKEUP enable_irq(hostwake_irq_num); enable_irq_wake(hostwake_irq_num); -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP AICWFDBG(LOGINFO, "%s(%d)\n", __func__, __LINE__); return 0; } @@ -520,46 +759,54 @@ static int rwnx_disable_hostwake_irq(void) disable_irq_nosync(hostwake_irq_num); //disable_irq_wake(hostwake_irq_num); //disable_irq(hostwake_irq_num); -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP return 0; } #endif -static int aicwf_sdio_chipmatch(struct aic_sdio_dev *sdio_dev, u16_l vid, u16_l did){ - - if(vid == SDIO_VENDOR_ID_AIC8801 && did == SDIO_DEVICE_ID_AIC8801){ +static int aicwf_sdio_chipmatch(struct aic_sdio_dev *sdio_dev, u16_l vid, + u16_l did) +{ + if (vid == SDIO_VENDOR_ID_AIC8801 && did == SDIO_DEVICE_ID_AIC8801) { sdio_dev->chipid = PRODUCT_ID_AIC8801; AICWFDBG(LOGINFO, "%s USE AIC8801\r\n", __func__); return 0; - }else if(vid == SDIO_VENDOR_ID_AIC8800DC && did == SDIO_DEVICE_ID_AIC8800DC){ + } else if (vid == SDIO_VENDOR_ID_AIC8800DC && + did == SDIO_DEVICE_ID_AIC8800DC) { sdio_dev->chipid = PRODUCT_ID_AIC8800DC; AICWFDBG(LOGINFO, "%s USE AIC8800DC\r\n", __func__); return 0; - }else if(vid == SDIO_VENDOR_ID_AIC8800D80 && did == SDIO_DEVICE_ID_AIC8800D80){ + } else if (vid == SDIO_VENDOR_ID_AIC8800D80 && + did == SDIO_DEVICE_ID_AIC8800D80) { sdio_dev->chipid = PRODUCT_ID_AIC8800D80; AICWFDBG(LOGINFO, "%s USE AIC8800D80\r\n", __func__); return 0; - }else{ + } else if (vid == SDIO_VENDOR_ID_AIC8800D80X2 && + did == SDIO_DEVICE_ID_AIC8800D80X2) { + sdio_dev->chipid = PRODUCT_ID_AIC8800D80X2; + AICWFDBG(LOGINFO, "%s USE AIC8800D80X2\r\n", __func__); + return 0; + } else { return -1; } } - -extern int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level); +extern int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level, + u8 disable_filter); static int aicwf_sdio_probe(struct sdio_func *func, - const struct sdio_device_id *id) + const struct sdio_device_id *id) { struct mmc_host *host; struct aic_sdio_dev *sdiodev; struct aicwf_bus *bus_if; int err = -ENODEV; - AICWFDBG(LOGDEBUG, "%s:%d\n", __func__, func->num); - AICWFDBG(LOGDEBUG, "Class=%x\n", func->class); - AICWFDBG(LOGDEBUG, "sdio vendor ID: 0x%04x\n", func->vendor); - AICWFDBG(LOGDEBUG, "sdio device ID: 0x%04x\n", func->device); - AICWFDBG(LOGDEBUG, "Function#: %d\n", func->num); + AICWFDBG(LOGDEBUG, "%s:%d\n", __func__, func->num); + AICWFDBG(LOGDEBUG, "Class=%x\n", func->class); + AICWFDBG(LOGDEBUG, "sdio vendor ID: 0x%04x\n", func->vendor); + AICWFDBG(LOGDEBUG, "sdio device ID: 0x%04x\n", func->device); + AICWFDBG(LOGDEBUG, "Function#: %d\n", func->num); host = func->card->host; if (func->num != 1) { @@ -579,35 +826,42 @@ static int aicwf_sdio_probe(struct sdio_func *func, return -ENOMEM; } - err = aicwf_sdio_chipmatch(sdiodev, func->vendor, func->device); sdiodev->func = func; sdiodev->bus_if = bus_if; - + #ifdef CONFIG_OOB - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ - AICWFDBG(LOGERROR, "%s ERROR!!! 8801 not support OOB \r\n", __func__); - sdiodev->oob_enable = false; - }else{ - sdiodev->oob_enable = true; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { + AICWFDBG(LOGERROR, "%s ERROR!!! 8801 not support OOB \r\n", + __func__); + sdiodev->oob_enable = false; + } else { + sdiodev->oob_enable = true; + } #else - sdiodev->oob_enable = false; + sdiodev->oob_enable = false; #endif - atomic_set(&sdiodev->is_bus_suspend, 0); + atomic_set(&sdiodev->is_bus_suspend, 0); bus_if->bus_priv.sdio = sdiodev; dev_set_drvdata(&func->dev, bus_if); sdiodev->dev = &func->dev; + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + sdiodev->func2 = func->card->sdio_func[1]; + } + //sdio func init start - if (sdiodev->chipid != PRODUCT_ID_AIC8800D80) { - err = aicwf_sdio_func_init(sdiodev); - } else { - err = aicwf_sdiov3_func_init(sdiodev); - } + if (sdiodev->chipid != PRODUCT_ID_AIC8800D80 && + sdiodev->chipid != PRODUCT_ID_AIC8800D80X2) { + err = aicwf_sdio_func_init(sdiodev); + } else { + err = aicwf_sdiov3_func_init(sdiodev); + } if (err < 0) { sdio_err("sdio func init fail\n"); goto fail; @@ -629,31 +883,33 @@ static int aicwf_sdio_probe(struct sdio_func *func, #ifdef CONFIG_GPIO_WAKEUP #ifdef CONFIG_OOB - if(sdiodev->oob_enable){ - AICWFDBG(LOGINFO, "%s SDIOWIFI_INTR_CONFIG_REG Disable\n", __func__); - sdio_claim_host(sdiodev->func); - //disable sdio interrupt - err = aicwf_sdio_writeb(sdiodev, SDIOWIFI_INTR_CONFIG_REG, 0x0); - if (err < 0) { - sdio_err("reg:%d write failed!\n", SDIOWIFI_INTR_CONFIG_REG); - } - sdio_release_irq(sdiodev->func); - sdio_release_host(sdiodev->func); -#if 0 -#if 0//old oob feature + if (sdiodev->oob_enable) { + AICWFDBG(LOGINFO, "%s SDIOWIFI_INTR_CONFIG_REG Disable\n", + __func__); + sdio_claim_host(sdiodev->func); + //disable sdio interrupt + err = aicwf_sdio_writeb(sdiodev, SDIOWIFI_INTR_CONFIG_REG, 0x0); + if (err < 0) { + sdio_err("reg:%d write failed!\n", + SDIOWIFI_INTR_CONFIG_REG); + } + sdio_release_irq(sdiodev->func); + sdio_release_host(sdiodev->func); +#if 0 +#if 0 //old oob feature sdiodev->oob_enable = true; -#else//new oob feature +#else //new oob feature sdiodev->oob_enable = true; -#endif//old oob feature +#endif //old oob feature #endif - } + } #endif #ifdef CONFIG_WIFI_SUSPEND_FOR_LINUX rwnx_init_wifi_suspend_node(); -#endif//CONFIG_WIFI_SUSPEND_FOR_LINUX -#endif//CONFIG_GPIO_WAKEUP - device_disable_async_suspend(sdiodev->dev); +#endif //CONFIG_WIFI_SUSPEND_FOR_LINUX +#endif //CONFIG_GPIO_WAKEUP + device_disable_async_suspend(sdiodev->dev); return 0; fail: @@ -665,12 +921,11 @@ fail: return err; } -void aicwf_sdio_probe_(struct sdio_func *func, - const struct sdio_device_id *id){ - aicwf_sdio_probe(func, NULL); +void aicwf_sdio_probe_(struct sdio_func *func, const struct sdio_device_id *id) +{ + aicwf_sdio_probe(func, NULL); } - static void aicwf_sdio_remove(struct sdio_func *func) { struct mmc_host *host; @@ -699,15 +954,71 @@ static void aicwf_sdio_remove(struct sdio_func *func) kfree(bus_if); #ifdef CONFIG_WIFI_SUSPEND_FOR_LINUX rwnx_deinit_wifi_suspend_node(); -#endif//CONFIG_WIFI_SUSPEND_FOR_LINUX +#endif //CONFIG_WIFI_SUSPEND_FOR_LINUX AICWFDBG(LOGINFO, "%s done\n", __func__); } -void aicwf_sdio_remove_(struct sdio_func *func){ - aicwf_sdio_remove(func); +void aicwf_sdio_remove_(struct sdio_func *func) +{ + aicwf_sdio_remove(func); } -#ifdef SDIO_REMOVEABLE +#if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) +#ifdef CONFIG_SHUTDOWN_CALLBACK +int rwnx_close_(struct net_device *dev); + +void aicwf_sdio_shutdown(struct device *dev) +{ + struct rwnx_vif *rwnx_vif, *tmp; + struct aicwf_bus *bus_if = dev_get_drvdata(dev); + struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; + + AICWFDBG(LOGINFO, "%s Enter", __func__); + list_for_each_entry_safe (rwnx_vif, tmp, &sdiodev->rwnx_hw->vifs, + list) { + if (rwnx_vif->ndev && + test_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags)) { + AICWFDBG(LOGINFO, "%s rwnx_close by shutdown", + __func__); + rwnx_close_(rwnx_vif->ndev); + + } else { + if (!rwnx_vif->ndev) { + AICWFDBG(LOGERROR, + "%s rwnx_vif->ndev is NULL \r\n", + __func__); + } + if (!test_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags)) { + AICWFDBG(LOGERROR, + "%s rwnx_vif->drv_flags close\r\n", + __func__); + } + } + } + AICWFDBG(LOGINFO, "%s Exit", __func__); +} +#endif +#endif + +#if defined(CONFIG_AUTO_POWERSAVE) +static int aicwf_wakeup_lock_status(struct rwnx_hw *rwnx_hw) +{ + if (rwnx_hw->ws_tx && rwnx_hw->ws_tx->active) + return -1; + + if (rwnx_hw->ws_rx && rwnx_hw->ws_rx->active) + return -1; + + if (rwnx_hw->ws_pwrctrl && rwnx_hw->ws_pwrctrl->active) + return -1; + + if (rwnx_hw->ws_irqrx && rwnx_hw->ws_irqrx->active) + return -1; + + return 0; +} +#endif + static int aicwf_sdio_suspend(struct device *dev) { int ret = 0; @@ -718,7 +1029,8 @@ static int aicwf_sdio_suspend(struct device *dev) sdio_dbg("%s enter\n", __func__); - list_for_each_entry_safe(rwnx_vif, tmp, &sdiodev->rwnx_hw->vifs, list) { + list_for_each_entry_safe (rwnx_vif, tmp, &sdiodev->rwnx_hw->vifs, + list) { if (rwnx_vif->ndev) netif_device_detach(rwnx_vif->ndev); } @@ -732,36 +1044,85 @@ static int aicwf_sdio_suspend(struct device *dev) return ret; } +#ifdef CONFIG_TEMP_CONTROL + del_timer_sync(&sdiodev->tp_ctrl_timer); + cancel_work_sync(&sdiodev->tp_ctrl_work); + mod_timer(&sdiodev->tp_ctrl_timer, + jiffies + msecs_to_jiffies(TEMP_GET_INTERVAL)); + + del_timer_sync(&sdiodev->netif_timer); + cancel_work_sync(&sdiodev->netif_work); +#endif + +#if (defined(CONFIG_AUTO_POWERSAVE) && defined(CONFIG_SDIO_PWRCTRL)) + aicwf_sdio_pwr_stctl(sdiodev, SDIO_ACTIVE_ST); + + if ((sdiodev->chipid == PRODUCT_ID_AIC8800D80) || + (sdiodev->chipid == PRODUCT_ID_AIC8800D80X2)) { + sdio_dbg("autops set\n"); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, + 0x8); + if (ret) { + sdio_err("sdio set autops fail\n"); + } + } +#endif + +#if (!defined(CONFIG_AUTO_POWERSAVE)) while (sdiodev->state == SDIO_ACTIVE_ST) { if (down_interruptible(&sdiodev->tx_priv->txctl_sema)) continue; - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(sdiodev, SDIO_SLEEP_ST); - #endif +#endif up(&sdiodev->tx_priv->txctl_sema); break; } +#else +#if defined(CONFIG_SDIO_PWRCTRL) + aicwf_sdio_pwr_stctl(sdiodev, SDIO_SLEEP_ST); +#endif +#endif #ifdef CONFIG_GPIO_WAKEUP // rwnx_enable_hostwake_irq(); #endif - #if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { sdio_dbg("%s SDIOWIFI_INTR_CONFIG_REG Disable\n", __func__); sdio_claim_host(sdiodev->func); //disable sdio interrupt ret = aicwf_sdio_writeb(sdiodev, SDIOWIFI_INTR_CONFIG_REG, 0x0); if (ret < 0) { - sdio_err("reg:%d write failed!\n", SDIOWIFI_INTR_CONFIG_REG); + sdio_err("reg:%d write failed!\n", + SDIOWIFI_INTR_CONFIG_REG); } sdio_release_irq(sdiodev->func); sdio_release_host(sdiodev->func); } #endif - atomic_set(&sdiodev->is_bus_suspend, 1); -// smp_mb(); + atomic_set(&sdiodev->is_bus_suspend, 1); + // smp_mb(); + +#if defined(CONFIG_AUTO_POWERSAVE) + if (aicwf_wakeup_lock_status(sdiodev->rwnx_hw)) { + printk("%s ws active dont suspend", __func__); + aicwf_sdio_pwr_stctl(sdiodev, SDIO_ACTIVE_ST); + + if ((sdiodev->chipid == PRODUCT_ID_AIC8800D80) || + (sdiodev->chipid == PRODUCT_ID_AIC8800D80X2)) { + sdio_dbg("autops clear\n"); + ret = aicwf_sdio_writeb( + sdiodev, sdiodev->sdio_reg.wakeup_reg, 0x8); + if (ret) { + sdio_err("sdio clear autops fail\n"); + } + } + + return -EBUSY; + } +#endif sdio_dbg("%s exit\n", __func__); @@ -773,63 +1134,83 @@ static int aicwf_sdio_resume(struct device *dev) struct aicwf_bus *bus_if = dev_get_drvdata(dev); struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; struct rwnx_vif *rwnx_vif, *tmp; -#if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) +#if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) || \ + defined(CONFIG_AUTO_POWERSAVE) int ret; #endif sdio_dbg("%s enter \n", __func__); -//#ifdef CONFIG_GPIO_WAKEUP -// rwnx_disable_hostwake_irq(); -//#endif + +#ifdef CONFIG_TEMP_CONTROL + mod_timer(&sdiodev->tp_ctrl_timer, + jiffies + msecs_to_jiffies(TEMP_GET_INTERVAL)); +#endif + + //#ifdef CONFIG_GPIO_WAKEUP + // rwnx_disable_hostwake_irq(); + //#endif //dev_pm_clear_wake_irq(dev); - list_for_each_entry_safe(rwnx_vif, tmp, &sdiodev->rwnx_hw->vifs, list) { + list_for_each_entry_safe (rwnx_vif, tmp, &sdiodev->rwnx_hw->vifs, + list) { if (rwnx_vif->ndev) netif_device_attach(rwnx_vif->ndev); } - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(sdiodev, SDIO_ACTIVE_ST); - #endif +#endif -// aicwf_sdio_hal_irqhandler(sdiodev->func); +#if defined(CONFIG_AUTO_POWERSAVE) && defined(CONFIG_SDIO_PWRCTRL) + if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + sdio_dbg("autops clear\n"); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, + 0x8); + if (ret) { + sdio_err("sdio clear autops fail\n"); + } + } +#endif + + // aicwf_sdio_hal_irqhandler(sdiodev->func); #if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) - if(sdiodev->chipid == PRODUCT_ID_AIC8801){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801) { sdio_dbg("%s SDIOWIFI_INTR_CONFIG_REG Enable\n", __func__); sdio_claim_host(sdiodev->func); sdio_claim_irq(sdiodev->func, aicwf_sdio_hal_irqhandler); //enable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, SDIOWIFI_INTR_CONFIG_REG, 0x07); + ret = aicwf_sdio_writeb(sdiodev, SDIOWIFI_INTR_CONFIG_REG, + 0x07); if (ret != 0) sdio_err("intr register failed:%d\n", ret); sdio_release_host(sdiodev->func); } #endif - atomic_set(&sdiodev->is_bus_suspend, 0); -// smp_mb(); - #ifdef CONFIG_WIFI_SUSPEND_FOR_LINUX + atomic_set(&sdiodev->is_bus_suspend, 0); + // smp_mb(); +#ifdef CONFIG_WIFI_SUSPEND_FOR_LINUX rwnx_set_wifi_suspend('0'); - #endif//CONFIG_WIFI_SUSPEND_FOR_LINUX - +#endif //CONFIG_WIFI_SUSPEND_FOR_LINUX sdio_dbg("%s exit\n", __func__); return 0; } -#endif static const struct sdio_device_id aicwf_sdmmc_ids[] = { - {SDIO_DEVICE(SDIO_VENDOR_ID_AIC8801, SDIO_DEVICE_ID_AIC8801)}, - {SDIO_DEVICE(SDIO_VENDOR_ID_AIC8800DC, SDIO_DEVICE_ID_AIC8800DC)}, - {SDIO_DEVICE(SDIO_VENDOR_ID_AIC8800D80, SDIO_DEVICE_ID_AIC8800D80)}, - { }, + { SDIO_DEVICE(SDIO_VENDOR_ID_AIC8801, SDIO_DEVICE_ID_AIC8801) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_AIC8800DC, SDIO_DEVICE_ID_AIC8800DC) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_AIC8800D80, SDIO_DEVICE_ID_AIC8800D80) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_AIC8800D80X2, + SDIO_DEVICE_ID_AIC8800D80X2) }, + {}, }; MODULE_DEVICE_TABLE(sdio, aicwf_sdmmc_ids); -static const struct dev_pm_ops aicwf_sdio_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(aicwf_sdio_suspend, aicwf_sdio_resume) -}; +static const struct dev_pm_ops aicwf_sdio_pm_ops = { SET_SYSTEM_SLEEP_PM_OPS( + aicwf_sdio_suspend, aicwf_sdio_resume) }; #ifndef CONFIG_FDRV_NO_REG_SDIO static struct sdio_driver aicwf_sdio_driver = { @@ -839,6 +1220,11 @@ static struct sdio_driver aicwf_sdio_driver = { .id_table = aicwf_sdmmc_ids, .drv = { .pm = &aicwf_sdio_pm_ops, +#if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) +#ifdef CONFIG_SHUTDOWN_CALLBACK + .shutdown = aicwf_sdio_shutdown, +#endif +#endif }, }; #endif @@ -882,7 +1268,6 @@ void aicwf_sdio_register(void) jzmmc_manual_detect(1, 1); #endif /* CONFIG_INGENIC_T20 */ - #ifdef CONFIG_NANOPI_M4 if (aic_host_drv->card == NULL) { __mmc_claim_host(aic_host_drv, NULL); @@ -893,32 +1278,44 @@ void aicwf_sdio_register(void) #endif #endif - #ifndef CONFIG_FDRV_NO_REG_SDIO if (sdio_register_driver(&aicwf_sdio_driver)) { - } else { //may add mmc_rescan here } #else - aicwf_sdio_probe_(get_sdio_func(), NULL); + aicwf_sdio_probe_(get_sdio_func(), NULL); #endif } void aicwf_sdio_exit(void) { - if (g_rwnx_plat && g_rwnx_plat->enabled){ + if (g_rwnx_plat && g_rwnx_plat->enabled) { +#ifdef CONFIG_TEMP_CONTROL + if (timer_pending(&g_rwnx_plat->sdiodev->tp_ctrl_timer)) { + AICWFDBG(LOGINFO, "%s del tp_ctrl_timer\n", __func__); + del_timer_sync(&g_rwnx_plat->sdiodev->tp_ctrl_timer); + } + cancel_work_sync(&g_rwnx_plat->sdiodev->tp_ctrl_work); + + if (timer_pending(&g_rwnx_plat->sdiodev->netif_timer)) { + AICWFDBG(LOGINFO, "%s del netif_timer\n", __func__); + del_timer_sync(&g_rwnx_plat->sdiodev->netif_timer); + } + cancel_work_sync(&g_rwnx_plat->sdiodev->netif_work); +#endif rwnx_platform_deinit(g_rwnx_plat->sdiodev->rwnx_hw); - }else{ - AICWFDBG(LOGERROR, "%s g_rwnx_plat is not ready \r\n", __func__); + } else { + AICWFDBG(LOGERROR, "%s g_rwnx_plat is not ready \r\n", + __func__); } - udelay(500); + udelay(500); -#ifndef CONFIG_FDRV_NO_REG_SDIO +#ifndef CONFIG_FDRV_NO_REG_SDIO sdio_unregister_driver(&aicwf_sdio_driver); #else - aicwf_sdio_remove_(get_sdio_func()); + aicwf_sdio_remove_(get_sdio_func()); #endif #if 0 @@ -936,7 +1333,7 @@ void aicwf_sdio_exit(void) #endif /*CONFIG_PLATFORM_ROCKCHIP*/ #endif - if(g_rwnx_plat){ + if (g_rwnx_plat) { kfree(g_rwnx_plat); } } @@ -946,16 +1343,17 @@ int aicwf_sdio_wakeup(struct aic_sdio_dev *sdiodev) { int ret = 0; int read_retry; - int write_retry = 20; - int wakeup_reg_val = 0; + int write_retry = 1; + int wakeup_reg_val = 0; - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || - sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - wakeup_reg_val = 1; - } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - wakeup_reg_val = 0x11; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + wakeup_reg_val = 1; + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + wakeup_reg_val = 0x11; + } if (sdiodev->state == SDIO_SLEEP_ST) { AICWFDBG(LOGSDPWRC, "%s w\n", __func__); @@ -963,18 +1361,24 @@ int aicwf_sdio_wakeup(struct aic_sdio_dev *sdiodev) //rwnx_pm_stay_awake(sdiodev); while (write_retry) { - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, wakeup_reg_val); + ret = aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.wakeup_reg, + wakeup_reg_val); if (ret) { txrx_err("sdio wakeup fail\n"); ret = -1; } else { - read_retry = 10; + read_retry = 50; while (read_retry) { u8 val; - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.sleep_reg, &val); + ret = aicwf_sdio_readb( + sdiodev, + sdiodev->sdio_reg.wakeup_reg, + &val); if (ret < 0) - txrx_err("sdio wakeup read fail\n"); - else if (val & 0x10) { + txrx_err( + "sdio wakeup read fail\n"); + else if ((val & 0x1) == 0) { break; } read_retry--; @@ -999,9 +1403,12 @@ int aicwf_sdio_sleep_allow(struct aic_sdio_dev *sdiodev) int ret = 0; struct aicwf_bus *bus_if = sdiodev->bus_if; struct rwnx_hw *rwnx_hw = sdiodev->rwnx_hw; + u8 read_retry; + u8 val; if (bus_if->state == BUS_DOWN_ST) { - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, 0x10); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, + 0x10); if (ret) { sdio_err("Write sleep fail!\n"); } @@ -1010,15 +1417,53 @@ int aicwf_sdio_sleep_allow(struct aic_sdio_dev *sdiodev) } sdio_info("sleep: %d, %d\n", sdiodev->state, scanning); - if (sdiodev->state == SDIO_ACTIVE_ST && !scanning && !rwnx_hw->is_p2p_alive \ - && !rwnx_hw->is_p2p_connected) { + if (sdiodev->state == SDIO_ACTIVE_ST && !scanning && + !rwnx_hw->is_p2p_alive && !rwnx_hw->is_p2p_connected && + (int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) <= 0) && + (sdiodev->tx_priv->cmd_txstate == false) && + (int)(atomic_read(&sdiodev->rx_priv->rx_cnt) == 0)) { AICWFDBG(LOGSDPWRC, "%s s\n", __func__); - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, 0x10); - if (ret) - sdio_err("Write sleep fail!\n"); + if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + if (aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.wakeup_reg, + 0x02) < 0) { + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.wakeup_reg); + } + } else if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + if (aicwf_sdio_func2_writeb( + sdiodev, sdiodev->sdio_reg.wakeup_reg, + 0x2) < 0) { + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.wakeup_reg); + } + read_retry = 100; + while (read_retry) { + val = 0; + if (aicwf_sdio_func2_readb( + sdiodev, + sdiodev->sdio_reg.wakeup_reg, + &val) < 0) { + sdio_err("reg %d read fail\n", + sdiodev->sdio_reg.wakeup_reg); + } else if ((val & 0x2) == 0) { + break; + } else { + sdio_err("val:%d\n", val); + } + read_retry--; + if (read_retry < 90) + printk("warning: read cnt %d\n", + read_retry); + udelay(500); + } + } sdiodev->state = SDIO_SLEEP_ST; aicwf_sdio_pwrctl_timer(sdiodev, 0); - //rwnx_pm_relax(sdiodev); + //rwnx_pm_relax(sdiodev); } else { aicwf_sdio_pwrctl_timer(sdiodev, sdiodev->active_duration); } @@ -1038,7 +1483,8 @@ int aicwf_sdio_pwr_stctl(struct aic_sdio_dev *sdiodev, uint target) if (sdiodev->state == target) { if (target == SDIO_ACTIVE_ST) { - aicwf_sdio_pwrctl_timer(sdiodev, sdiodev->active_duration); + aicwf_sdio_pwrctl_timer(sdiodev, + sdiodev->active_duration); } up(&sdiodev->pwrctl_wakeup_sema); return ret; @@ -1092,9 +1538,10 @@ int aicwf_sdio_txpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt) kfree(frame); #endif #if 1 - frame = (u8 *) (pkt->data); + frame = (u8 *)(pkt->data); len = pkt->len; - len = (len + SDIOWIFI_FUNC_BLOCKSIZE - 1) / SDIOWIFI_FUNC_BLOCKSIZE * SDIOWIFI_FUNC_BLOCKSIZE; + len = (len + SDIOWIFI_FUNC_BLOCKSIZE - 1) / SDIOWIFI_FUNC_BLOCKSIZE * + SDIOWIFI_FUNC_BLOCKSIZE; ret = aicwf_sdio_send_pkt(sdiodev, pkt->data, len); if (ret) @@ -1103,7 +1550,248 @@ int aicwf_sdio_txpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt) return ret; } -static int aicwf_sdio_intr_get_len_bytemode(struct aic_sdio_dev *sdiodev, u8 *byte_len) +#ifdef CONFIG_SDIO_ADMA +int aicwf_sdio_txscatterpkt(struct aicwf_tx_priv *tx_priv) +{ + int ret = 0; + u8 *frame; + u32 len = 0; + struct aicwf_bus *bus_if = dev_get_drvdata(tx_priv->sdiodev->dev); + struct aic_sdio_dev *sdiodev = tx_priv->sdiodev; + int nents = tx_priv->aggr_segcnt; + int i = 0; + + if (bus_if->state == BUS_DOWN_ST) { + sdio_dbg("tx bus is down!\n"); + return -EINVAL; + } + + //AICWFDBG(LOGTRACE,"%s aggr_segcnt %d len %d \n",__func__,tx_priv->aggr_segcnt, tx_priv->len); + sdio_claim_host(sdiodev->func); + ret = sdio_write_sg(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, + &(tx_priv->sg_list[0]), tx_priv->aggr_segcnt, + tx_priv->len); //&(tx_priv->sg_list[0]) + //sdio_writesb(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, tx_priv->sg_list[0].buf, tx_priv->sg_list[0].len); + /*for(i=0;i<1;i++){ + sdio_writesb(sdiodev->func, sdiodev->sdio_reg.wr_fifo_addr, tx_priv->sg_list[i].buf, tx_priv->sg_list[i].len); + }*/ + sdio_release_host(sdiodev->func); + + return ret; +} + +void aicwf_adma_add(struct aicwf_tx_priv *tx_priv, struct sk_buff *pkt) +{ + u8 adj_len = 0; + u8 *sdio_header = NULL; + u32 sdio_len = 0; + u32 curr_len = 0; + unsigned int align_len = 0; + u8 *start_ptr = NULL; + + adj_len = ALIGN4_ADJ_LEN((uint32_t)pkt->data); + start_ptr = skb_push(pkt, adj_len); //skb_push(pkt,adj_len) + //ASSERT((adj_len==0)||(adj_len==2)); // mgmt-pkt or data-pkt + //ASSERT((((uint32_t)start_ptr)&3) == 0); // start_ptr addr word align + if (!((adj_len == 0) || (adj_len == 2))) + AICWFDBG(LOGTRACE, "adj_len false %u \n", adj_len); + + if ((((uint32_t)start_ptr) & 3) != 0) + AICWFDBG(LOGTRACE, "start_ptr %x \n", + (((uint32_t)start_ptr) & 3)); + + //AICWFDBG(LOGTRACE,"start adj_len %d aggrcnt %d segcnt %d len %d \n",adj_len,atomic_read(&tx_priv->aggr_count),tx_priv->aggr_segcnt,tx_priv->len); + + if (adj_len == 0) { + sdio_len = pkt->len + SDIO_MGMT_FAKE_LEN; + if (sdio_len & (TX_ALIGNMENT - 1)) { + align_len = + TX_ALIGNMENT - (sdio_len & (TX_ALIGNMENT - 1)); + //#ifdef CONFIG_SDIO_ADMA_ADJ + //memset(pkt->data + sdio_len,0,align_len); + //#endif + //skb_put(pkt,align_len); + sdio_len += align_len; + } + + //AICWFDBG(LOGTRACE,"pkt_len %d \n",pkt->len); + start_ptr = + skb_push(pkt, (SDIO_HEADER_LEN + SDIO_MGMT_FAKE_LEN)); + //AICWFDBG(LOGTRACE,"push_pkt_len %d \n",pkt->len); + sdio_header = start_ptr; + + sdio_header[0] = ((sdio_len)&0xff); + sdio_header[1] = (((sdio_len) >> 8) & 0x0f); + sdio_header[2] = 0x01; //data + if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80) + sdio_header[3] = + crc8_ponl_107(&sdio_header[0], 3); // crc8 + else + sdio_header[3] = 0; //reserved + + // fill 4 byte 0x00, need to fasync with data-pkt. + sdio_header[4] = 0; + sdio_header[5] = 0; + sdio_header[6] = 0; + sdio_header[7] = 0; + + curr_len = sdio_len + SDIO_HEADER_LEN; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = start_ptr; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = curr_len; + tx_priv->free_buf[tx_priv->aggr_segcnt] = pkt; + + //AICWFDBG(LOGTRACE,"curr_len %d \n",curr_len); + //rwnx_data_dump("adj0",pkt->data,((pkt->len>32) ? 32 : pkt->len)); + + tx_priv->aggr_segcnt++; + atomic_inc(&tx_priv->aggr_count); + tx_priv->len += curr_len; + } else if (adj_len == 1) { + sdio_len = pkt->len + 3; + if (sdio_len & (TX_ALIGNMENT - 1)) { + align_len = + TX_ALIGNMENT - (sdio_len & (TX_ALIGNMENT - 1)); + //#ifdef CONFIG_SDIO_ADMA_ADJ + //memset(pkt->data + sdio_len,0,align_len); + //#endif + //skb_put(pkt,align_len); + sdio_len += align_len; + } + + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][0] = ((sdio_len)&0xff); + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][1] = + (((sdio_len) >> 8) & 0x0f); + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][2] = 0x01; // data + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][3] = 0; + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][4] = 0; + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][5] = 0; + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][6] = 0; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = + sdio_tx_buf_dummy[tx_priv->aggr_segcnt]; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = + SDIO_HEADER_LEN + 3; + tx_priv->free_buf[tx_priv->aggr_segcnt] = NULL; + + tx_priv->aggr_segcnt++; + + sdio_header = start_ptr; + sdio_header[0] = 0; + + curr_len = sdio_len - 3; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = start_ptr; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = curr_len; + tx_priv->free_buf[tx_priv->aggr_segcnt] = pkt; + + //AICWFDBG(LOGTRACE,"curr_len %d \n",curr_len); + //rwnx_data_dump("adj1",start_ptr,((curr_len>32) ? 32 : curr_len)); + + tx_priv->aggr_segcnt++; + atomic_inc(&tx_priv->aggr_count); + + tx_priv->len += curr_len + SDIO_HEADER_LEN + 3; + + } else if (adj_len == 2) { // adj_len==2 + sdio_len = pkt->len + SDIO_DATA_FAKE_LEN; //adj_len + + if (sdio_len & (TX_ALIGNMENT - 1)) { + align_len = + TX_ALIGNMENT - (sdio_len & (TX_ALIGNMENT - 1)); + //#ifdef CONFIG_SDIO_ADMA_ADJ + //memset(pkt->data + sdio_len,0,align_len); + //#endif + //skb_put(pkt,align_len); + sdio_len += align_len; + } + + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][0] = ((sdio_len)&0xff); + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][1] = + (((sdio_len) >> 8) & 0x0f); + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][2] = 0x01; // data + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][3] = 0; + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][4] = 0; + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][5] = 0; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = + sdio_tx_buf_dummy[tx_priv->aggr_segcnt]; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = + SDIO_HEADER_LEN + SDIO_DATA_FAKE_LEN; + tx_priv->free_buf[tx_priv->aggr_segcnt] = NULL; + + tx_priv->aggr_segcnt++; + + sdio_header = start_ptr; + sdio_header[0] = 0; + sdio_header[1] = 0; + + curr_len = sdio_len - SDIO_DATA_FAKE_LEN; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = start_ptr; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = curr_len; + tx_priv->free_buf[tx_priv->aggr_segcnt] = pkt; + + //AICWFDBG(LOGTRACE,"curr_len %d \n",curr_len); + //rwnx_data_dump("adj2",start_ptr,((curr_len>32) ? 32 : curr_len)); + + tx_priv->aggr_segcnt++; + atomic_inc(&tx_priv->aggr_count); + + tx_priv->len += curr_len + SDIO_HEADER_LEN + SDIO_DATA_FAKE_LEN; + } else if (adj_len == 3) { + sdio_len = pkt->len + 1; + if (sdio_len & (TX_ALIGNMENT - 1)) { + align_len = + TX_ALIGNMENT - (sdio_len & (TX_ALIGNMENT - 1)); + //#ifdef CONFIG_SDIO_ADMA_ADJ + //memset(pkt->data + sdio_len,0,align_len); + //#endif + //skb_put(pkt,align_len); + sdio_len += align_len; + } + + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][0] = ((sdio_len)&0xff); + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][1] = + (((sdio_len) >> 8) & 0x0f); + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][2] = 0x01; // data + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][3] = 0; + sdio_tx_buf_dummy[tx_priv->aggr_segcnt][4] = 0; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = + sdio_tx_buf_dummy[tx_priv->aggr_segcnt]; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = + SDIO_HEADER_LEN + 1; + tx_priv->free_buf[tx_priv->aggr_segcnt] = NULL; + + tx_priv->aggr_segcnt++; + + sdio_header = start_ptr; + sdio_header[0] = 0; + sdio_header[1] = 0; + sdio_header[2] = 0; + + curr_len = sdio_len - 1; + + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = start_ptr; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = curr_len; + tx_priv->free_buf[tx_priv->aggr_segcnt] = pkt; + + //AICWFDBG(LOGTRACE,"curr_len %d \n",curr_len); + //rwnx_data_dump("adj3",start_ptr,((curr_len>32) ? 32 : curr_len)); + + tx_priv->aggr_segcnt++; + atomic_inc(&tx_priv->aggr_count); + + tx_priv->len += curr_len + SDIO_HEADER_LEN + 1; + } + + //AICWFDBG(LOGTRACE,"end aggrcnt %d segcnt %d len %d \n",atomic_read(&tx_priv->aggr_count),tx_priv->aggr_segcnt,tx_priv->len); +} + +#endif + +static int aicwf_sdio_intr_get_len_bytemode(struct aic_sdio_dev *sdiodev, + u8 *byte_len) { int ret = 0; @@ -1113,8 +1801,9 @@ static int aicwf_sdio_intr_get_len_bytemode(struct aic_sdio_dev *sdiodev, u8 *by if (sdiodev->bus_if->state == BUS_DOWN_ST) { *byte_len = 0; } else { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.bytemode_len_reg, byte_len); - sdiodev->rx_priv->data_len = (*byte_len)*4; + ret = aicwf_sdio_readb( + sdiodev, sdiodev->sdio_reg.bytemode_len_reg, byte_len); + sdiodev->rx_priv->data_len = (*byte_len) * 4; } return ret; @@ -1126,9 +1815,9 @@ static void aicwf_sdio_bus_stop(struct device *dev) struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; int ret = 0; - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwrctl_timer(sdiodev, 0); - #endif +#endif AICWFDBG(LOGINFO, "%s Enter\n", __func__); bus_if->state = BUS_DOWN_ST; @@ -1138,9 +1827,9 @@ static void aicwf_sdio_bus_stop(struct device *dev) AICWFDBG(LOGERROR, "down txctl_sema fail\n"); } - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(sdiodev, SDIO_SLEEP_ST); - #endif +#endif if (sdiodev->tx_priv) { if (!ret) @@ -1156,7 +1845,7 @@ struct rx_buff *aicwf_sdio_readframes(struct aic_sdio_dev *sdiodev) int ret = 0; u32 size = 0; struct aicwf_bus *bus_if = dev_get_drvdata(sdiodev->dev); - struct rx_buff* rxbuff; + struct rx_buff *rxbuff; if (bus_if->state == BUS_DOWN_ST) { sdio_dbg("bus down\n"); @@ -1164,7 +1853,7 @@ struct rx_buff *aicwf_sdio_readframes(struct aic_sdio_dev *sdiodev) } size = sdiodev->rx_priv->data_len; - rxbuff = aicwf_prealloc_rxbuff_alloc(&sdiodev->rx_priv->rxbuff_lock); + rxbuff = aicwf_prealloc_rxbuff_alloc(&sdiodev->rx_priv->rxbuff_lock); if (rxbuff == NULL) { printk("failed to alloc rxbuff\n"); return NULL; @@ -1177,7 +1866,8 @@ struct rx_buff *aicwf_sdio_readframes(struct aic_sdio_dev *sdiodev) ret = aicwf_sdio_recv_pkt(sdiodev, rxbuff, size); if (ret) { printk("%s %d, sdio recv pkt fail\n", __func__, __LINE__); - aicwf_prealloc_rxbuff_free(rxbuff, &sdiodev->rx_priv->rxbuff_lock); + aicwf_prealloc_rxbuff_free(rxbuff, + &sdiodev->rx_priv->rxbuff_lock); return NULL; } @@ -1197,7 +1887,7 @@ struct sk_buff *aicwf_sdio_readframes(struct aic_sdio_dev *sdiodev) } size = sdiodev->rx_priv->data_len; - skb = __dev_alloc_skb(size, GFP_KERNEL); + skb = __dev_alloc_skb(size, GFP_KERNEL); if (!skb) { return NULL; } @@ -1218,7 +1908,7 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) u16 len; u8 *payload = sdiodev->tx_priv->cmd_buf; u16 payload_len = sdiodev->tx_priv->cmd_len; - u8 adjust_str[4] = {0, 0, 0, 0}; + u8 adjust_str[4] = { 0, 0, 0, 0 }; int adjust_len = 0; int buffer_cnt = 0; u8 retry = 0; @@ -1226,22 +1916,27 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) len = payload_len; if ((len % TX_ALIGNMENT) != 0) { adjust_len = roundup(len, TX_ALIGNMENT); - memcpy(payload+payload_len, adjust_str, (adjust_len - len)); + memcpy(payload + payload_len, adjust_str, (adjust_len - len)); payload_len += (adjust_len - len); } len = payload_len; //link tail is necessary if ((len % SDIOWIFI_FUNC_BLOCKSIZE) != 0) { - memset(payload+payload_len, 0, TAIL_LEN); + memset(payload + payload_len, 0, TAIL_LEN); payload_len += TAIL_LEN; - len = (payload_len/SDIOWIFI_FUNC_BLOCKSIZE + 1) * SDIOWIFI_FUNC_BLOCKSIZE; + len = (payload_len / SDIOWIFI_FUNC_BLOCKSIZE + 1) * + SDIOWIFI_FUNC_BLOCKSIZE; } else len = payload_len; - if(sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { buffer_cnt = aicwf_sdio_flow_ctrl_msg(sdiodev); - while ((buffer_cnt <= 0 || (buffer_cnt > 0 && len > (buffer_cnt * BUFFER_SIZE))) && retry < 10) { + while ((buffer_cnt <= 0 || + (buffer_cnt > 0 && len > (buffer_cnt * BUFFER_SIZE))) && + retry < 10) { retry++; buffer_cnt = aicwf_sdio_flow_ctrl_msg(sdiodev); printk("buffer_cnt = %d\n", buffer_cnt); @@ -1249,18 +1944,21 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) } down(&sdiodev->tx_priv->cmd_txsema); - if(sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { if (buffer_cnt > 0 && len < (buffer_cnt * BUFFER_SIZE)) { err = aicwf_sdio_send_pkt(sdiodev, payload, len); if (err) { sdio_err("aicwf_sdio_send_pkt fail%d\n", err); } } else { - sdio_err("tx msg fc retry fail:%d, %d\n", buffer_cnt, len); + sdio_err("tx msg fc retry fail:%d, %d\n", buffer_cnt, + len); up(&sdiodev->tx_priv->cmd_txsema); return -1; } - }else if(sdiodev->chipid == PRODUCT_ID_AIC8800DC){ + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800DC) { err = aicwf_sdio_send_pkt(sdiodev, payload, len); if (err) { sdio_err("aicwf_sdio_send_pkt fail%d\n", err); @@ -1280,7 +1978,6 @@ static int aicwf_sdio_tx_msg(struct aic_sdio_dev *sdiodev) up(&sdiodev->tx_priv->cmd_txsema); return err; - } static void aicwf_sdio_tx_process(struct aic_sdio_dev *sdiodev) @@ -1295,9 +1992,9 @@ static void aicwf_sdio_tx_process(struct aic_sdio_dev *sdiodev) return; } - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(sdiodev, SDIO_ACTIVE_ST); - #endif +#endif //config sdio_info("send cmd\n"); @@ -1312,7 +2009,6 @@ static void aicwf_sdio_tx_process(struct aic_sdio_dev *sdiodev) txrx_err("txctl up bus->txctl_sema fail\n"); return; } - err = aicwf_sdio_tx_msg(sdiodev); up(&sdiodev->tx_priv->txctl_sema); if (waitqueue_active(&sdiodev->tx_priv->cmd_txdone_wait)) @@ -1332,25 +2028,33 @@ static void aicwf_sdio_tx_process(struct aic_sdio_dev *sdiodev) return; } - if (!aicwf_is_framequeue_empty(&sdiodev->tx_priv->txq)){ - sdiodev->tx_priv->fw_avail_bufcnt = aicwf_sdio_flow_ctrl(sdiodev); + if (!aicwf_is_framequeue_empty(&sdiodev->tx_priv->txq)) { + sdiodev->tx_priv->fw_avail_bufcnt = + aicwf_sdio_flow_ctrl(sdiodev); } while (!aicwf_is_framequeue_empty(&sdiodev->tx_priv->txq)) { - if(sdiodev->bus_if->state == BUS_DOWN_ST) { + if (sdiodev->bus_if->state == BUS_DOWN_ST) { break; } - if (sdiodev->tx_priv->fw_avail_bufcnt <= DATA_FLOW_CTRL_THRESH) { - if (sdiodev->tx_priv->cmd_txstate) - break; - sdiodev->tx_priv->fw_avail_bufcnt = aicwf_sdio_flow_ctrl(sdiodev); - } else { - if (sdiodev->tx_priv->cmd_txstate) { - aicwf_sdio_send(sdiodev->tx_priv, 1); - break; - } else { - aicwf_sdio_send(sdiodev->tx_priv, 0); - } - } +#ifdef CONFIG_TEMP_CONTROL + if (sdiodev->on_off) + aicwf_temp_ctrl(sdiodev); +#endif + + if (sdiodev->tx_priv->fw_avail_bufcnt <= + DATA_FLOW_CTRL_THRESH) { + if (sdiodev->tx_priv->cmd_txstate) + break; + sdiodev->tx_priv->fw_avail_bufcnt = + aicwf_sdio_flow_ctrl(sdiodev); + } else { + if (sdiodev->tx_priv->cmd_txstate) { + aicwf_sdio_send(sdiodev->tx_priv, 1); + break; + } else { + aicwf_sdio_send(sdiodev->tx_priv, 0); + } + } } #ifdef CONFIG_TX_NETIF_FLOWCTRL @@ -1371,46 +2075,50 @@ static void aicwf_sdio_tx_process(struct aic_sdio_dev *sdiodev) static int aicwf_sdio_bus_txdata(struct device *dev, struct sk_buff *pkt) { - uint prio; - int ret = -EBADE; - struct rwnx_txhdr *txhdr = NULL; - int headroom = 0; - struct aicwf_bus *bus_if = dev_get_drvdata(dev); - struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; + uint prio; + int ret = -EBADE; + struct rwnx_txhdr *txhdr = NULL; + int headroom = 0; + struct aicwf_bus *bus_if = dev_get_drvdata(dev); + struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; #ifdef CONFIG_TX_NETIF_FLOWCTRL unsigned long flags; #endif - if (bus_if->state == BUS_DOWN_ST) { - sdio_err("bus_if stopped\n"); - txhdr = (struct rwnx_txhdr *)pkt->data; - headroom = txhdr->sw_hdr->headroom; - kmem_cache_free(txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, txhdr->sw_hdr); - skb_pull(pkt, headroom); - consume_skb(pkt); - return -1; - } + if (bus_if->state == BUS_DOWN_ST) { + sdio_err("bus_if stopped\n"); + txhdr = (struct rwnx_txhdr *)pkt->data; + headroom = txhdr->sw_hdr->headroom; + kmem_cache_free( + txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, + txhdr->sw_hdr); + skb_pull(pkt, headroom); + consume_skb(pkt); + return -1; + } - prio = (pkt->priority & 0x7); - spin_lock_bh(&sdiodev->tx_priv->txqlock); - if (!aicwf_frame_enq(sdiodev->dev, &sdiodev->tx_priv->txq, pkt, prio)) { - txhdr = (struct rwnx_txhdr *)pkt->data; - headroom = txhdr->sw_hdr->headroom; - kmem_cache_free(txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, txhdr->sw_hdr); - skb_pull(pkt, headroom); - consume_skb(pkt); - spin_unlock_bh(&sdiodev->tx_priv->txqlock); - return -ENOSR; + prio = (pkt->priority & 0x7); + spin_lock_bh(&sdiodev->tx_priv->txqlock); + if (!aicwf_frame_enq(sdiodev->dev, &sdiodev->tx_priv->txq, pkt, prio)) { + txhdr = (struct rwnx_txhdr *)pkt->data; + headroom = txhdr->sw_hdr->headroom; + kmem_cache_free( + txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, + txhdr->sw_hdr); + skb_pull(pkt, headroom); + consume_skb(pkt); + spin_unlock_bh(&sdiodev->tx_priv->txqlock); + return -ENOSR; goto flowctrl; - } else { - ret = 0; - } + } else { + ret = 0; + } - atomic_inc(&sdiodev->tx_priv->tx_pktcnt); - spin_unlock_bh(&sdiodev->tx_priv->txqlock); - complete(&bus_if->bustx_trgg); + atomic_inc(&sdiodev->tx_priv->tx_pktcnt); + spin_unlock_bh(&sdiodev->tx_priv->txqlock); + complete(&bus_if->bustx_trgg); - flowctrl: +flowctrl: #ifdef CONFIG_TX_NETIF_FLOWCTRL spin_lock_irqsave(&sdiodev->tx_flow_lock, flags); if (atomic_read(&sdiodev->tx_priv->tx_pktcnt) >= tx_fc_high_water) { @@ -1424,7 +2132,7 @@ static int aicwf_sdio_bus_txdata(struct device *dev, struct sk_buff *pkt) spin_unlock_irqrestore(&sdiodev->tx_flow_lock, flags); #endif - return ret; + return ret; } static int aicwf_sdio_bus_txmsg(struct device *dev, u8 *msg, uint msglen) @@ -1462,7 +2170,6 @@ static int aicwf_sdio_bus_txmsg(struct device *dev, u8 *msg, uint msglen) return 0; } - int aicwf_sdio_send(struct aicwf_tx_priv *tx_priv, u8 txnow) { struct sk_buff *pkt; @@ -1472,119 +2179,267 @@ int aicwf_sdio_send(struct aicwf_tx_priv *tx_priv, u8 txnow) unsigned long flags; #endif +#ifdef CONFIG_SDIO_ADMA + aggr_len = tx_priv->len; +#else aggr_len = (tx_priv->tail - tx_priv->head); - if (((atomic_read(&tx_priv->aggr_count) == 0) && (aggr_len != 0)) - || ((atomic_read(&tx_priv->aggr_count) != 0) && (aggr_len == 0))) { - if (aggr_len > 0) +#endif + + if (((atomic_read(&tx_priv->aggr_count) == 0) && (aggr_len != 0)) || + ((atomic_read(&tx_priv->aggr_count) != 0) && (aggr_len == 0))) { + if (aggr_len > 0) { +#ifdef CONFIG_SDIO_ADMA + printk("len %d seg_cnt %d aggr_cnt %d avail_cnt %d \n", + aggr_len, tx_priv->aggr_segcnt, + atomic_read(&tx_priv->aggr_count), + tx_priv->fw_avail_bufcnt); +#endif aicwf_sdio_aggrbuf_reset(tx_priv); - goto done; +#ifdef CONFIG_SDIO_ADMA + printk("set len %d seg_cnt %d aggr_cnt %d avail_cnt %d \n", + aggr_len, tx_priv->aggr_segcnt, + atomic_read(&tx_priv->aggr_count), + tx_priv->fw_avail_bufcnt); +#endif + } + + return 0; } - if (atomic_read(&tx_priv->aggr_count) == (tx_priv->fw_avail_bufcnt - DATA_FLOW_CTRL_THRESH)) { + if (atomic_read(&tx_priv->aggr_count) == + (tx_priv->fw_avail_bufcnt - DATA_FLOW_CTRL_THRESH)) { if (atomic_read(&tx_priv->aggr_count) > 0) { - tx_priv->fw_avail_bufcnt -= atomic_read(&tx_priv->aggr_count); - aicwf_sdio_aggr_send(tx_priv); //send and check the next pkt; + tx_priv->fw_avail_bufcnt -= + atomic_read(&tx_priv->aggr_count); + aicwf_sdio_aggr_send( + tx_priv); //send and check the next pkt; } + return 0; } else { spin_lock_bh(&sdiodev->tx_priv->txqlock); pkt = aicwf_frame_dequeue(&sdiodev->tx_priv->txq); if (pkt == NULL) { sdio_err("txq no pkt\n"); spin_unlock_bh(&sdiodev->tx_priv->txqlock); - goto done; + return 0; } - atomic_dec(&sdiodev->tx_priv->tx_pktcnt); + //atomic_dec(&sdiodev->tx_priv->tx_pktcnt); spin_unlock_bh(&sdiodev->tx_priv->txqlock); #ifdef CONFIG_TX_NETIF_FLOWCTRL spin_lock_irqsave(&sdiodev->tx_flow_lock, flags); - if (atomic_read(&sdiodev->tx_priv->tx_pktcnt) < tx_fc_low_water) { + if (atomic_read(&sdiodev->tx_priv->tx_pktcnt) < + tx_fc_low_water) { //printk("sdiodev->tx_priv->tx_pktcnt < tx_fc_low_water:%d %d\r\n", // atomic_read(&sdiodev->tx_priv->tx_pktcnt), tx_fc_low_water); if (sdiodev->flowctrl) { sdiodev->flowctrl = 0; - aicwf_sdio_tx_netif_flowctrl(sdiodev->rwnx_hw, false); + aicwf_sdio_tx_netif_flowctrl(sdiodev->rwnx_hw, + false); } } spin_unlock_irqrestore(&sdiodev->tx_flow_lock, flags); #endif +#ifndef CONFIG_SDIO_ADMA if (tx_priv == NULL || tx_priv->tail == NULL || pkt == NULL) txrx_err("null error\n"); +#endif if (aicwf_sdio_aggr(tx_priv, pkt)) { aicwf_sdio_aggrbuf_reset(tx_priv); sdio_err("add aggr pkts failed!\n"); - goto done; + atomic_dec(&sdiodev->tx_priv->tx_pktcnt); + return 0; } //when aggr finish or there is cmd to send, just send this aggr pkt to fw - if ((int)atomic_read(&sdiodev->tx_priv->tx_pktcnt) == 0 || txnow || (atomic_read(&tx_priv->aggr_count) == (tx_priv->fw_avail_bufcnt - DATA_FLOW_CTRL_THRESH))) { - tx_priv->fw_avail_bufcnt -= atomic_read(&tx_priv->aggr_count); + if ((int)atomic_read(&sdiodev->tx_priv->tx_pktcnt) == 1 || + txnow || + (atomic_read(&tx_priv->aggr_count) == + (tx_priv->fw_avail_bufcnt - DATA_FLOW_CTRL_THRESH))) { + tx_priv->fw_avail_bufcnt -= + atomic_read(&tx_priv->aggr_count); aicwf_sdio_aggr_send(tx_priv); - } else - goto done; + atomic_dec(&sdiodev->tx_priv->tx_pktcnt); + return 0; + } else { + atomic_dec(&sdiodev->tx_priv->tx_pktcnt); + return 0; + } } - -done: - return 0; } int aicwf_sdio_aggr(struct aicwf_tx_priv *tx_priv, struct sk_buff *pkt) { +#ifdef CONFIG_SDIO_ADMA + u8 adj_len = 0; + struct rwnx_txhdr *txhdr = (struct rwnx_txhdr *)pkt->data; + u8 *sdio_header = NULL; + u32 sdio_len = 0; + u32 curr_len = 0; + int align_len = 0; + int headroom; + u32 pkt_len = 0; + struct txdesc_api tmp_txdesc; + struct sk_buff *tmp_skb; + + //AICWFDBG(LOGTRACE,"%s \n",__func__); + //pkt (txhdr + data),aggr only need txhdr->sw_hdr->desc and data + memcpy(&tmp_txdesc, (u8 *)(long)&txhdr->sw_hdr->desc, + sizeof(struct txdesc_api)); + + if (txhdr->sw_hdr->need_cfm) { + tmp_skb = skb_copy( + pkt, + GFP_ATOMIC); //save pkt when cfm get,then release,send skb is copy + if (!tmp_skb) { + AICWFDBG(LOGERROR, "skb copy fail"); + return -ENOMEM; + } + //AICWFDBG(LOGTRACE,"tmp_len %d pkt_len %d \n",tmp_skb->len,pkt->len); + + skb_pull(tmp_skb, txhdr->sw_hdr->headroom); + + //AICWFDBG(LOGTRACE,"pull_tmp_len %d \n",tmp_skb->len); + + skb_push(tmp_skb, + sizeof(struct txdesc_api)); //skb header is enough + + //AICWFDBG(LOGTRACE,"push_tmp_len %d \n",tmp_skb->len); + + memcpy(tmp_skb->data, (u8 *)(long)&tmp_txdesc, + sizeof(struct txdesc_api)); + AICWFDBG(LOGTRACE, "need cfm len %d \n", tmp_skb->len); + + //printk("cfm alloc %p \n",tmp_skb); + //printk("delay free %p \n",pkt); + aicwf_adma_add(tx_priv, tmp_skb); + tx_priv->copyd[tx_priv->aggr_segcnt - 1] = true; + } else { + headroom = txhdr->sw_hdr->headroom; + kmem_cache_free( + txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, + txhdr->sw_hdr); + skb_pull(pkt, headroom); + + //AICWFDBG(LOGTRACE,"pull_pkt_len %d \n",pkt->len); + + skb_push(pkt, sizeof(struct txdesc_api)); //skb header is enough + + //AICWFDBG(LOGTRACE,"push_pkt_len %d \n",pkt->len); + + memcpy(pkt->data, (u8 *)(long)&tmp_txdesc, + sizeof(struct txdesc_api)); + + //rwnx_data_dump("data",pkt->data,((pkt->len>64) ? 64 : pkt->len)); + + //printk("alloc %p \n",pkt); + + aicwf_adma_add(tx_priv, pkt); + tx_priv->copyd[tx_priv->aggr_segcnt - 1] = false; + } + +#else + struct rwnx_txhdr *txhdr = (struct rwnx_txhdr *)pkt->data; u8 *start_ptr = tx_priv->tail; u8 sdio_header[4]; - u8 adjust_str[4] = {0, 0, 0, 0}; + u8 adjust_str[4] = { 0, 0, 0, 0 }; u32 curr_len = 0; int allign_len = 0; int headroom; - sdio_header[0] = ((pkt->len - txhdr->sw_hdr->headroom + sizeof(struct txdesc_api)) & 0xff); - sdio_header[1] = (((pkt->len - txhdr->sw_hdr->headroom + sizeof(struct txdesc_api)) >> 8)&0x0f); + sdio_header[0] = ((pkt->len - txhdr->sw_hdr->headroom + + sizeof(struct txdesc_api)) & + 0xff); + sdio_header[1] = (((pkt->len - txhdr->sw_hdr->headroom + + sizeof(struct txdesc_api)) >> + 8) & + 0x0f); sdio_header[2] = 0x01; //data - if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || - tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) - sdio_header[3] = 0; //reserved - else if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80) - sdio_header[3] = crc8_ponl_107(&sdio_header[0], 3); // crc8 + if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) + sdio_header[3] = 0; //reserved + else if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) + sdio_header[3] = crc8_ponl_107(&sdio_header[0], 3); // crc8 memcpy(tx_priv->tail, (u8 *)&sdio_header, sizeof(sdio_header)); tx_priv->tail += sizeof(sdio_header); //payload - memcpy(tx_priv->tail, (u8 *)(long)&txhdr->sw_hdr->desc, sizeof(struct txdesc_api)); + memcpy(tx_priv->tail, (u8 *)(long)&txhdr->sw_hdr->desc, + sizeof(struct txdesc_api)); tx_priv->tail += sizeof(struct txdesc_api); //hostdesc - memcpy(tx_priv->tail, (u8 *)((u8 *)txhdr + txhdr->sw_hdr->headroom), pkt->len-txhdr->sw_hdr->headroom); + memcpy(tx_priv->tail, (u8 *)((u8 *)txhdr + txhdr->sw_hdr->headroom), + pkt->len - txhdr->sw_hdr->headroom); tx_priv->tail += (pkt->len - txhdr->sw_hdr->headroom); //word alignment curr_len = tx_priv->tail - tx_priv->head; if (curr_len & (TX_ALIGNMENT - 1)) { - allign_len = roundup(curr_len, TX_ALIGNMENT)-curr_len; + allign_len = roundup(curr_len, TX_ALIGNMENT) - curr_len; memcpy(tx_priv->tail, adjust_str, allign_len); tx_priv->tail += allign_len; } - if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - start_ptr[0] = ((tx_priv->tail - start_ptr - 4) & 0xff); - start_ptr[1] = (((tx_priv->tail - start_ptr - 4)>>8) & 0x0f); - } + if (tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8801 || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + tx_priv->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + start_ptr[0] = ((tx_priv->tail - start_ptr - 4) & 0xff); + start_ptr[1] = (((tx_priv->tail - start_ptr - 4) >> 8) & 0x0f); + } tx_priv->aggr_buf->dev = pkt->dev; if (!txhdr->sw_hdr->need_cfm) { headroom = txhdr->sw_hdr->headroom; - kmem_cache_free(txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, txhdr->sw_hdr); + kmem_cache_free( + txhdr->sw_hdr->rwnx_vif->rwnx_hw->sw_txhdr_cache, + txhdr->sw_hdr); skb_pull(pkt, headroom); consume_skb(pkt); } atomic_inc(&tx_priv->aggr_count); +#endif /* CONFIG_SDIO_ADMA */ + return 0; } void aicwf_sdio_aggr_send(struct aicwf_tx_priv *tx_priv) { +#ifdef CONFIG_SDIO_ADMA + int ret = 0; + int i = 0; + int nents = tx_priv->aggr_segcnt; + //struct sk_buff *scatter_buf; + + if (tx_priv->len & (TXPKT_BLOCKSIZE - 1)) { + uint16_t alen = TXPKT_BLOCKSIZE - + (tx_priv->len & (TXPKT_BLOCKSIZE - 1)); + + memset(sdio_tx_buf_fill, 0, 32); + tx_priv->sg_list[tx_priv->aggr_segcnt].buf = sdio_tx_buf_fill; + tx_priv->sg_list[tx_priv->aggr_segcnt].len = alen; + tx_priv->free_buf[tx_priv->aggr_segcnt] = NULL; + tx_priv->aggr_segcnt += 1; + tx_priv->len += alen; + } + + //AICWFDBG(LOGTRACE,"nents %d \n",tx_priv->aggr_segcnt); + /*for(i=0;iaggr_segcnt;i++){ + if(tx_priv->sg_list[i].buf != NULL){ + rwnx_data_dump("send",tx_priv->sg_list[i].buf,((tx_priv->sg_list[i].len>64) ? 64 : tx_priv->sg_list[i].len)); + } + }*/ + + ret = aicwf_sdio_txscatterpkt(tx_priv); + if (ret < 0) { + sdio_err("fail to send scatter pkt %d !\n", ret); + } + +#else + struct sk_buff *tx_buf = tx_priv->aggr_buf; int ret = 0; int curr_len = 0; @@ -1601,17 +2456,44 @@ void aicwf_sdio_aggr_send(struct aicwf_tx_priv *tx_priv) if (ret < 0) { sdio_err("fail to send aggr pkt!\n"); } +#endif /* CONFIG_SDIO_ADMA */ aicwf_sdio_aggrbuf_reset(tx_priv); } void aicwf_sdio_aggrbuf_reset(struct aicwf_tx_priv *tx_priv) { +#ifdef CONFIG_SDIO_ADMA + struct sk_buff *scatter_buf; + int i = 0; + int nents = tx_priv->aggr_segcnt; + + for (i = 0; i < nents; i++) { + scatter_buf = (struct sk_buff *)tx_priv->free_buf[i]; + if (scatter_buf != NULL) { + //printk("free %p \n",scatter_buf); + if (tx_priv->copyd[i]) { + kfree_skb(scatter_buf); + tx_priv->copyd[i] = false; + } else + consume_skb(scatter_buf); + } + } + + tx_priv->len = 0; + tx_priv->aggr_segcnt = 0; + atomic_set(&tx_priv->aggr_count, 0); + AICWFDBG(LOGTRACE, "reset len %d seg_cnt %d aggr_cnt %d \n", + tx_priv->len, tx_priv->aggr_segcnt, + atomic_read(&tx_priv->aggr_count)); +#else + struct sk_buff *aggr_buf = tx_priv->aggr_buf; tx_priv->tail = tx_priv->head; aggr_buf->len = 0; atomic_set(&tx_priv->aggr_count, 0); +#endif /* CONFIG_SDIO_ADMA */ } extern void set_irq_handler(void *fn); @@ -1622,24 +2504,24 @@ static int aicwf_sdio_bus_start(struct device *dev) struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; int ret = 0; - sdio_claim_host(sdiodev->func); #ifndef CONFIG_FDRV_NO_REG_SDIO sdio_claim_irq(sdiodev->func, aicwf_sdio_hal_irqhandler); #else - set_irq_handler(aicwf_sdio_hal_irqhandler); + set_irq_handler(aicwf_sdio_hal_irqhandler); #endif - if(sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - sdio_f0_writeb(sdiodev->func, 0x07, 0x04, &ret); - if (ret) { - sdio_err("set func0 int en fail %d\n", ret); - } - } - sdio_release_host(sdiodev->func); - + if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + sdio_f0_writeb(sdiodev->func, 0x07, 0x04, &ret); + if (ret) { + sdio_err("set func0 int en fail %d\n", ret); + } + } + sdio_release_host(sdiodev->func); //enable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x07); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, + 0x07); if (ret != 0) sdio_err("intr register failed:%d\n", ret); @@ -1666,15 +2548,37 @@ module_param_named(busrx_thread_prio, busrx_thread_prio, int, 0644); //module_param(busrx_thread_prio, int, 0); #endif +static inline void aic_thread_wait_stop(void) +{ +#if 1 // PLATFORM_LINUX +#if 0 + while (!kthread_should_stop()){ + AICWFDBG(LOGINFO, "%s waiting for thread_stop notify \r\n", __func__); + msleep(100); + } +#else + set_current_state(TASK_INTERRUPTIBLE); + while (!kthread_should_stop()) { + AICWFDBG(LOGINFO, "%s waiting for thread_stop notify \r\n", + __func__); + schedule(); + set_current_state(TASK_INTERRUPTIBLE); + } + __set_current_state(TASK_RUNNING); +#endif +#endif +} + #ifdef CONFIG_OOB int rx_thread_wait_to = 1000; module_param_named(rx_thread_wait_to, rx_thread_wait_to, int, 0644); //new oob feature -int sdio_busirq_thread(void *data){ - struct aicwf_rx_priv *rx_priv = (struct aicwf_rx_priv *)data; - struct aicwf_bus *bus_if = rx_priv->sdiodev->bus_if; -#if 0 +int sdio_busirq_thread(void *data) +{ + struct aicwf_rx_priv *rx_priv = (struct aicwf_rx_priv *)data; + struct aicwf_bus *bus_if = rx_priv->sdiodev->bus_if; +#if 0 #ifdef CONFIG_THREAD_INFO_IN_TASK int set_cpu_ret = 0; @@ -1686,59 +2590,76 @@ int sdio_busirq_thread(void *data){ #endif #ifdef CONFIG_TXRX_THREAD_PRIO - if (busrx_thread_prio > 0) { + if (busrx_thread_prio > 0) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) - sched_set_fifo_low(current); + sched_set_fifo_low(current); #else - struct sched_param param; - param.sched_priority = (busrx_thread_prio - 1 < MAX_RT_PRIO)?busrx_thread_prio:(MAX_RT_PRIO-1); - sched_setscheduler(current, SCHED_FIFO, ¶m); + struct sched_param param; + param.sched_priority = (busrx_thread_prio - 1 < MAX_RT_PRIO) ? + busrx_thread_prio : + (MAX_RT_PRIO - 1); + sched_setscheduler(current, SCHED_FIFO, ¶m); #endif - } + } #endif - AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, current->policy); - AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", __func__, current->rt_priority); - AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); - - - while (1) { + AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, + current->policy); + AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", + __func__, current->rt_priority); + AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); + + while (1) { +#if 0 if (kthread_should_stop()) { AICWFDBG(LOGERROR, "sdio busirq thread stop\n"); break; } +#endif + if (!wait_for_completion_timeout( + &bus_if->busirq_trgg, + msecs_to_jiffies(rx_thread_wait_to))) { + AICWFDBG(LOGRXPOLL, + "%s wait for completion timout \r\n", + __func__); + } - if(!wait_for_completion_timeout(&bus_if->busirq_trgg, msecs_to_jiffies(rx_thread_wait_to))){ - AICWFDBG(LOGRXPOLL, "%s wait for completion timout \r\n", __func__); - } - - if (bus_if->state == BUS_DOWN_ST) - continue; + if (bus_if->state == BUS_DOWN_ST) { + AICWFDBG(LOGERROR, "%s bus down thread exit \r\n", + __func__); + break; + } + //continue; #if 1 #ifdef CONFIG_SDIO_PWRCTRL - while(atomic_read(&bus_if->bus_priv.sdio->is_bus_suspend) == 1){ - AICWFDBG(LOGDEBUG, "%s waiting for sdio bus resume \r\n", __func__); - msleep(100); - } - aicwf_sdio_pwr_stctl(bus_if->bus_priv.sdio, SDIO_ACTIVE_ST); -#endif//CONFIG_SDIO_PWRCTRL + while (atomic_read(&bus_if->bus_priv.sdio->is_bus_suspend) == + 1) { + AICWFDBG(LOGDEBUG, + "%s waiting for sdio bus resume \r\n", + __func__); + msleep(100); + } + aicwf_sdio_pwr_stctl(bus_if->bus_priv.sdio, SDIO_ACTIVE_ST); +#endif //CONFIG_SDIO_PWRCTRL #endif - aicwf_sdio_hal_irqhandler(bus_if->bus_priv.sdio->func); - } + aicwf_sdio_hal_irqhandler(bus_if->bus_priv.sdio->func); + } - return 0; + aic_thread_wait_stop(); + + return 0; } -#endif//CONFIG_OOB +#endif //CONFIG_OOB #if 0 #include #endif int sdio_bustx_thread(void *data) { - struct aicwf_bus *bus = (struct aicwf_bus *) data; + struct aicwf_bus *bus = (struct aicwf_bus *)data; struct aic_sdio_dev *sdiodev = bus->bus_priv.sdio; -#if 0 +#if 0 #ifdef CONFIG_THREAD_INFO_IN_TASK int set_cpu_ret = 0; @@ -1758,43 +2679,53 @@ int sdio_bustx_thread(void *data) sched_setaffinity(0, &cpumask);//need to add EXPORT_SYMBOL_GPL(sched_setaffinity) in kernel/sched/core.c #endif #ifdef CONFIG_TXRX_THREAD_PRIO - if (bustx_thread_prio > 0) { + if (bustx_thread_prio > 0) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) - sched_set_fifo_low(current); + sched_set_fifo_low(current); #else - struct sched_param param; - param.sched_priority = (bustx_thread_prio < MAX_RT_PRIO)?bustx_thread_prio:(MAX_RT_PRIO-1); - sched_setscheduler(current, SCHED_FIFO, ¶m); + struct sched_param param; + param.sched_priority = (bustx_thread_prio < MAX_RT_PRIO) ? + bustx_thread_prio : + (MAX_RT_PRIO - 1); + sched_setscheduler(current, SCHED_FIFO, ¶m); #endif - } + } #endif - AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, current->policy); - AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", __func__, current->rt_priority); - AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); + AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, + current->policy); + AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", + __func__, current->rt_priority); + AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); while (1) { +#if 0 if (kthread_should_stop()) { AICWFDBG(LOGERROR, "sdio bustx thread stop\n"); break; } - - if (!wait_for_completion_interruptible(&bus->bustx_trgg)) { +#endif + if (!wait_for_completion_interruptible(&bus->bustx_trgg)) { if (sdiodev->bus_if->state == BUS_DOWN_ST) - continue; + break; + //continue; - rwnx_wakeup_lock(sdiodev->rwnx_hw->ws_tx); - if ((int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) > 0) || (sdiodev->tx_priv->cmd_txstate == true)){ + rwnx_wakeup_lock(sdiodev->rwnx_hw->ws_tx); + if ((int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) > + 0) || + (sdiodev->tx_priv->cmd_txstate == true)) { aicwf_sdio_tx_process(sdiodev); } - rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_tx); + rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_tx); } } + aic_thread_wait_stop(); + AICWFDBG(LOGINFO, "%s Exit\r\n", __func__); return 0; } -#if 0//old oob feature +#if 0 //old oob feature int sdio_busrx_thread(void *data) { struct aicwf_rx_priv *rx_priv = (struct aicwf_rx_priv *)data; @@ -1840,9 +2771,9 @@ while (1) { msleep(100); } aicwf_sdio_pwr_stctl(bus_if->bus_priv.sdio, SDIO_ACTIVE_ST); -#endif//CONFIG_SDIO_PWRCTRL +#endif //CONFIG_SDIO_PWRCTRL aicwf_sdio_hal_irqhandler(bus_if->bus_priv.sdio->func); -#endif//CONFIG_OOB +#endif //CONFIG_OOB rwnx_wakeup_lock(rx_priv->sdiodev->rwnx_hw->ws_rx); aicwf_process_rxframes(rx_priv); rwnx_wakeup_unlock(rx_priv->sdiodev->rwnx_hw->ws_rx); @@ -1854,13 +2785,12 @@ while (1) { return 0; } -#else//new oob feature +#else //new oob feature int sdio_busrx_thread(void *data) { - struct aicwf_rx_priv *rx_priv = (struct aicwf_rx_priv *)data; - struct aicwf_bus *bus_if = rx_priv->sdiodev->bus_if; - - + struct aicwf_rx_priv *rx_priv = (struct aicwf_rx_priv *)data; + struct aicwf_bus *bus_if = rx_priv->sdiodev->bus_if; + #if 0 struct cpumask cpumask; cpumask_clear(&cpumask); @@ -1880,66 +2810,77 @@ int sdio_busrx_thread(void *data) #endif #endif #ifdef CONFIG_TXRX_THREAD_PRIO - if (busrx_thread_prio > 0) { + if (busrx_thread_prio > 0) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) - sched_set_fifo_low(current); + sched_set_fifo_low(current); #else - struct sched_param param; - param.sched_priority = (busrx_thread_prio < MAX_RT_PRIO)?busrx_thread_prio:(MAX_RT_PRIO-1); - sched_setscheduler(current, SCHED_FIFO, ¶m); + struct sched_param param; + param.sched_priority = (busrx_thread_prio < MAX_RT_PRIO) ? + busrx_thread_prio : + (MAX_RT_PRIO - 1); + sched_setscheduler(current, SCHED_FIFO, ¶m); #endif - } + } #endif - - AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, current->policy); - AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", __func__, current->rt_priority); - AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); - - while (1) { + + AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, + current->policy); + AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", + __func__, current->rt_priority); + AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); + + while (1) { +#if 0 if (kthread_should_stop()) { AICWFDBG(LOGERROR, "sdio busrx thread stop\n"); break; } - if (!wait_for_completion_interruptible(&bus_if->busrx_trgg)) { - - if (bus_if->state == BUS_DOWN_ST) - continue; - rwnx_wakeup_lock(rx_priv->sdiodev->rwnx_hw->ws_rx); - aicwf_process_rxframes(rx_priv); - rwnx_wakeup_unlock(rx_priv->sdiodev->rwnx_hw->ws_rx); - } - } - return 0; - +#endif + if (!wait_for_completion_interruptible(&bus_if->busrx_trgg)) { + if (bus_if->state == BUS_DOWN_ST) + break; + //continue; + rwnx_wakeup_lock(rx_priv->sdiodev->rwnx_hw->ws_rx); + aicwf_process_rxframes(rx_priv); + rwnx_wakeup_unlock(rx_priv->sdiodev->rwnx_hw->ws_rx); + } + } + aic_thread_wait_stop(); + AICWFDBG(LOGINFO, "%s Exit\r\n", __func__); + return 0; } -#endif//old oob feature +#endif //old oob feature #if defined(CONFIG_SDIO_PWRCTRL) static int aicwf_sdio_pwrctl_thread(void *data) { - struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *) data; + struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *)data; while (1) { if (kthread_should_stop()) { sdio_err("sdio pwrctl thread stop\n"); break; } - if (!wait_for_completion_interruptible(&sdiodev->pwrctrl_trgg)) { + if (!wait_for_completion_interruptible( + &sdiodev->pwrctrl_trgg)) { //printk("%s working\r\n", __func__); if (sdiodev->bus_if->state == BUS_DOWN_ST) continue; - rwnx_wakeup_lock(sdiodev->rwnx_hw->ws_pwrctrl); - - if ((int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) <= 0) && (sdiodev->tx_priv->cmd_txstate == false) && \ - atomic_read(&sdiodev->rx_priv->rx_cnt) == 0) + rwnx_wakeup_lock(sdiodev->rwnx_hw->ws_pwrctrl); + + if ((int)(atomic_read(&sdiodev->tx_priv->tx_pktcnt) <= + 0) && + (sdiodev->tx_priv->cmd_txstate == false) && + atomic_read(&sdiodev->rx_priv->rx_cnt) == 0) aicwf_sdio_pwr_stctl(sdiodev, SDIO_SLEEP_ST); else - aicwf_sdio_pwrctl_timer(sdiodev, sdiodev->active_duration); + aicwf_sdio_pwrctl_timer( + sdiodev, sdiodev->active_duration); - rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_pwrctrl); + rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_pwrctrl); } } @@ -1953,7 +2894,7 @@ static void aicwf_sdio_bus_pwrctl(struct timer_list *t) #endif { #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) - struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *) data; + struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *)data; #else struct aic_sdio_dev *sdiodev = from_timer(sdiodev, t, timer); #endif @@ -1970,35 +2911,36 @@ static void aicwf_sdio_bus_pwrctl(struct timer_list *t) #endif #ifdef CONFIG_PREALLOC_RX_SKB -static void aicwf_sdio_enq_rxpkt(struct aic_sdio_dev *sdiodev, struct rx_buff *pkt) +static void aicwf_sdio_enq_rxpkt(struct aic_sdio_dev *sdiodev, + struct rx_buff *pkt) #else -static void aicwf_sdio_enq_rxpkt(struct aic_sdio_dev *sdiodev, struct sk_buff *pkt) +static void aicwf_sdio_enq_rxpkt(struct aic_sdio_dev *sdiodev, + struct sk_buff *pkt) #endif { struct aicwf_rx_priv *rx_priv = sdiodev->rx_priv; unsigned long flags = 0; spin_lock_irqsave(&rx_priv->rxqlock, flags); - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB if (!aicwf_rxbuff_enqueue(sdiodev->dev, &rx_priv->rxq, pkt)) { spin_unlock_irqrestore(&rx_priv->rxqlock, flags); printk("%s %d, enqueue rxq fail\n", __func__, __LINE__); aicwf_prealloc_rxbuff_free(pkt, &rx_priv->rxbuff_lock); return; - } - #else + } +#else if (!aicwf_rxframe_enqueue(sdiodev->dev, &rx_priv->rxq, pkt)) { spin_unlock_irqrestore(&rx_priv->rxqlock, flags); aicwf_dev_skb_free(pkt); return; } - #endif +#endif spin_unlock_irqrestore(&rx_priv->rxqlock, flags); atomic_inc(&rx_priv->rx_cnt); } - #define SDIO_OTHER_INTERRUPT (0x1ul << 7) void aicwf_sdio_hal_irqhandler(struct sdio_func *func) @@ -2007,20 +2949,24 @@ void aicwf_sdio_hal_irqhandler(struct sdio_func *func) struct aic_sdio_dev *sdiodev = bus_if->bus_priv.sdio; u8 intstatus = 0; u8 byte_len = 0; - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB struct rx_buff *pkt = NULL; - #else +#else struct sk_buff *pkt = NULL; - #endif +#endif int ret; - //AICWFDBG(LOGDEBUG, "fdrv %s enter \r\n", __func__); - rwnx_wakeup_lock(sdiodev->rwnx_hw->ws_irqrx); + if ((sdiodev->rwnx_hw) == NULL) { + sdio_err("waiting for rwnx_hw->irq_enable is true\r\n"); + return; + } + //AICWFDBG(LOGDEBUG, "fdrv %s enter \r\n", __func__); + rwnx_wakeup_lock(sdiodev->rwnx_hw->ws_irqrx); if (!bus_if || bus_if->state == BUS_DOWN_ST) { sdio_err("bus err\n"); - rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_irqrx); + rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_irqrx); return; } @@ -2032,99 +2978,129 @@ void aicwf_sdio_hal_irqhandler(struct sdio_func *func) } #endif - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); - while (ret || (intstatus & SDIO_OTHER_INTERRUPT)) { - sdio_err("ret=%d, intstatus=%x\r\n", ret, intstatus); - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.block_cnt_reg, &intstatus); - } - sdiodev->rx_priv->data_len = intstatus * SDIOWIFI_FUNC_BLOCKSIZE; + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.block_cnt_reg, + &intstatus); + while (ret || (intstatus & SDIO_OTHER_INTERRUPT)) { + sdio_err("ret=%d, intstatus=%x\r\n", ret, intstatus); + ret = aicwf_sdio_readb(sdiodev, + sdiodev->sdio_reg.block_cnt_reg, + &intstatus); + if (!ret) { + return; + } + } + sdiodev->rx_priv->data_len = + intstatus * SDIOWIFI_FUNC_BLOCKSIZE; - if (intstatus > 0) { - if (intstatus < 64) { - pkt = aicwf_sdio_readframes(sdiodev); - } else { - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - sdio_info("byte mode len=%d\r\n", byte_len); - pkt = aicwf_sdio_readframes(sdiodev); - } - } else { - #ifndef CONFIG_PLATFORM_ALLWINNER - // sdio_err("Interrupt but no data\n"); - #endif - } + if (intstatus > 0) { + if (intstatus < 64) { + pkt = aicwf_sdio_readframes(sdiodev); + } else { + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + sdio_info("byte mode len=%d\r\n", byte_len); + pkt = aicwf_sdio_readframes(sdiodev); + } + } else { +#ifndef CONFIG_PLATFORM_ALLWINNER +// sdio_err("Interrupt but no data\n"); +#endif + } - if (pkt) - aicwf_sdio_enq_rxpkt(sdiodev, pkt); + if (pkt) + aicwf_sdio_enq_rxpkt(sdiodev, pkt); - if(atomic_read(&sdiodev->rx_priv->rx_cnt) == 1){ - complete(&bus_if->busrx_trgg); - } + if (atomic_read(&sdiodev->rx_priv->rx_cnt) == 1) { + complete(&bus_if->busrx_trgg); + } - }else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - do { - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.misc_int_status_reg, &intstatus); - if (!ret) { - break; - } - sdio_err("ret=%d, intstatus=%x\r\n",ret, intstatus); - } while (1); - if (intstatus & SDIO_OTHER_INTERRUPT) { - u8 int_pending; - ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.sleep_reg, &int_pending); - if (ret < 0) { - sdio_err("reg:%d read failed!\n", sdiodev->sdio_reg.sleep_reg); - } - int_pending &= ~0x01; // dev to host soft irq - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.sleep_reg, int_pending); - if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.sleep_reg); - } - } + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + do { + ret = aicwf_sdio_readb( + sdiodev, sdiodev->sdio_reg.misc_int_status_reg, + &intstatus); + if (!ret) { + break; + } + sdio_err("ret=%d, intstatus=%x\r\n", ret, intstatus); + return; + } while (1); + if (intstatus & SDIO_OTHER_INTERRUPT) { + u8 int_pending; + ret = aicwf_sdio_readb(sdiodev, + sdiodev->sdio_reg.sleep_reg, + &int_pending); + if (ret < 0) { + sdio_err("reg:%d read failed!\n", + sdiodev->sdio_reg.sleep_reg); + } + int_pending &= ~0x01; // dev to host soft irq + ret = aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.sleep_reg, + int_pending); + if (ret < 0) { + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.sleep_reg); + } + } - if (intstatus > 0) { - uint8_t intmaskf2 = intstatus | (0x1UL << 3); - if (intmaskf2 > 120U) { // func2 - if (intmaskf2 == 127U) { // byte mode - //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 1);//byte_len must<= 128 - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - sdio_info("byte mode len=%d\r\n", byte_len); - //pkt = aicwf_sdio_readframes(sdiodev, 1); - pkt = aicwf_sdio_readframes(sdiodev); - } else { // block mode - sdiodev->rx_priv->data_len = (intstatus & 0x7U) * SDIOWIFI_FUNC_BLOCKSIZE; - //pkt = aicwf_sdio_readframes(sdiodev, 1); - pkt = aicwf_sdio_readframes(sdiodev); - } - } else { // func1 - if (intstatus == 120U) { // byte mode - //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 0);//byte_len must<= 128 - aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len);//byte_len must<= 128 - sdio_info("byte mode len=%d\r\n", byte_len); - //pkt = aicwf_sdio_readframes(sdiodev, 0); - pkt = aicwf_sdio_readframes(sdiodev); - } else { // block mode - sdiodev->rx_priv->data_len = (intstatus & 0x7FU) * SDIOWIFI_FUNC_BLOCKSIZE; - //pkt = aicwf_sdio_readframes(sdiodev, 0); - pkt = aicwf_sdio_readframes(sdiodev); - } - } - } else { - #ifndef CONFIG_PLATFORM_ALLWINNER - //sdio_err("Interrupt but no data\n"); - #endif - } + if (intstatus > 0) { + uint8_t intmaskf2 = intstatus | (0x1UL << 3); + if (intmaskf2 > 120U) { // func2 + if (intmaskf2 == 127U) { // byte mode + //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 1);//byte_len must<= 128 + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + sdio_info("byte mode len=%d\r\n", + byte_len); + //pkt = aicwf_sdio_readframes(sdiodev, 1); + pkt = aicwf_sdio_readframes(sdiodev); + } else { // block mode + sdiodev->rx_priv->data_len = + (intstatus & 0x7U) * + SDIOWIFI_FUNC_BLOCKSIZE; + //pkt = aicwf_sdio_readframes(sdiodev, 1); + pkt = aicwf_sdio_readframes(sdiodev); + } + } else { // func1 + if (intstatus == 120U) { // byte mode + //aicwf_sdio_intr_get_len_bytemode(sdiodev, &byte_len, 0);//byte_len must<= 128 + aicwf_sdio_intr_get_len_bytemode( + sdiodev, + &byte_len); //byte_len must<= 128 + sdio_info("byte mode len=%d\r\n", + byte_len); + //pkt = aicwf_sdio_readframes(sdiodev, 0); + pkt = aicwf_sdio_readframes(sdiodev); + } else { // block mode + sdiodev->rx_priv->data_len = + (intstatus & 0x7FU) * + SDIOWIFI_FUNC_BLOCKSIZE; + //pkt = aicwf_sdio_readframes(sdiodev, 0); + pkt = aicwf_sdio_readframes(sdiodev); + } + } + } else { +#ifndef CONFIG_PLATFORM_ALLWINNER + //sdio_err("Interrupt but no data\n"); +#endif + } - if (pkt) - aicwf_sdio_enq_rxpkt(sdiodev, pkt); + if (pkt) + aicwf_sdio_enq_rxpkt(sdiodev, pkt); - if(atomic_read(&sdiodev->rx_priv->rx_cnt) == 1){ - complete(&bus_if->busrx_trgg); - } - } + if (atomic_read(&sdiodev->rx_priv->rx_cnt) == 1) { + complete(&bus_if->busrx_trgg); + } + } - rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_irqrx); + rwnx_wakeup_unlock(sdiodev->rwnx_hw->ws_irqrx); } #if defined(CONFIG_SDIO_PWRCTRL) @@ -2159,19 +3135,20 @@ static struct aicwf_bus_ops aicwf_sdio_bus_ops = { void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) { struct aicwf_bus *bus_if; - int ret; - + int ret = 0; AICWFDBG(LOGINFO, "%s Enter\n", __func__); bus_if = dev_get_drvdata(sdiodev->dev); bus_if->state = BUS_DOWN_ST; #ifdef CONFIG_OOB - if(sdiodev->oob_enable){ + if (sdiodev->oob_enable) { sdio_claim_host(sdiodev->func); //disable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x0); + ret = aicwf_sdio_writeb(sdiodev, + sdiodev->sdio_reg.intr_config_reg, 0x0); if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.intr_config_reg); + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.intr_config_reg); } sdio_release_irq(sdiodev->func); sdio_release_host(sdiodev->func); @@ -2179,9 +3156,11 @@ void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) #else sdio_claim_host(sdiodev->func); //disable sdio interrupt - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, 0x0); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.intr_config_reg, + 0x0); if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.intr_config_reg); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.intr_config_reg); } sdio_release_irq(sdiodev->func); sdio_release_host(sdiodev->func); @@ -2195,7 +3174,7 @@ void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) if (sdiodev->rx_priv) aicwf_rx_deinit(sdiodev->rx_priv); - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) if (sdiodev->pwrctl_tsk) { complete_all(&sdiodev->pwrctrl_trgg); kthread_stop(sdiodev->pwrctl_tsk); @@ -2203,7 +3182,7 @@ void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) } AICWFDBG(LOGINFO, "%s:pwrctl stopped\n", __func__); - #endif +#endif if (sdiodev->cmd_mgr.state == RWNX_CMD_MGR_STATE_INITED) rwnx_cmd_mgr_deinit(&sdiodev->cmd_mgr); @@ -2212,49 +3191,55 @@ void aicwf_sdio_release(struct aic_sdio_dev *sdiodev) void aicwf_sdio_reg_init(struct aic_sdio_dev *sdiodev) { - sdio_dbg("%s\n", __func__); + sdio_dbg("%s\n", __func__); - if(sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - sdiodev->sdio_reg.bytemode_len_reg = SDIOWIFI_BYTEMODE_LEN_REG; - sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_CONFIG_REG; - sdiodev->sdio_reg.sleep_reg = SDIOWIFI_SLEEP_REG; - sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_WAKEUP_REG; - sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_REG; - sdiodev->sdio_reg.register_block = SDIOWIFI_REGISTER_BLOCK; - sdiodev->sdio_reg.bytemode_enable_reg = SDIOWIFI_BYTEMODE_ENABLE_REG; - sdiodev->sdio_reg.block_cnt_reg = SDIOWIFI_BLOCK_CNT_REG; - sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR; - sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR; - } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - sdiodev->sdio_reg.bytemode_len_reg = SDIOWIFI_BYTEMODE_LEN_REG_V3; - sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_ENABLE_REG_V3; - sdiodev->sdio_reg.sleep_reg = SDIOWIFI_INTR_PENDING_REG_V3; - sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_INTR_TO_DEVICE_REG_V3; - sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_Q1_REG_V3; - sdiodev->sdio_reg.bytemode_enable_reg = SDIOWIFI_BYTEMODE_ENABLE_REG_V3; - sdiodev->sdio_reg.misc_int_status_reg = SDIOWIFI_MISC_INT_STATUS_REG_V3; - sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR_V3; - sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR_V3; - } + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + sdiodev->sdio_reg.bytemode_len_reg = SDIOWIFI_BYTEMODE_LEN_REG; + sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_CONFIG_REG; + sdiodev->sdio_reg.sleep_reg = SDIOWIFI_SLEEP_REG; + sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_WAKEUP_REG; + sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_REG; + sdiodev->sdio_reg.register_block = SDIOWIFI_REGISTER_BLOCK; + sdiodev->sdio_reg.bytemode_enable_reg = + SDIOWIFI_BYTEMODE_ENABLE_REG; + sdiodev->sdio_reg.block_cnt_reg = SDIOWIFI_BLOCK_CNT_REG; + sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR; + sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR; + } else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + sdiodev->sdio_reg.bytemode_len_reg = + SDIOWIFI_BYTEMODE_LEN_REG_V3; + sdiodev->sdio_reg.intr_config_reg = SDIOWIFI_INTR_ENABLE_REG_V3; + sdiodev->sdio_reg.sleep_reg = SDIOWIFI_INTR_PENDING_REG_V3; + sdiodev->sdio_reg.wakeup_reg = SDIOWIFI_INTR_TO_DEVICE_REG_V3; + sdiodev->sdio_reg.flow_ctrl_reg = SDIOWIFI_FLOW_CTRL_Q1_REG_V3; + sdiodev->sdio_reg.bytemode_enable_reg = + SDIOWIFI_BYTEMODE_ENABLE_REG_V3; + sdiodev->sdio_reg.misc_int_status_reg = + SDIOWIFI_MISC_INT_STATUS_REG_V3; + sdiodev->sdio_reg.rd_fifo_addr = SDIOWIFI_RD_FIFO_ADDR_V3; + sdiodev->sdio_reg.wr_fifo_addr = SDIOWIFI_WR_FIFO_ADDR_V3; + } } int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) { struct mmc_host *host; u8 block_bit0 = 0x1; - u8 byte_mode_disable = 0x1;//1: no byte mode + u8 byte_mode_disable = 0x1; //1: no byte mode int ret = 0; struct aicbsp_feature_t feature; - u8 val = 0; + //u8 val = 0; aicbsp_get_feature(&feature, NULL); - aicwf_sdio_reg_init(sdiodev); + aicwf_sdio_reg_init(sdiodev); host = sdiodev->func->card->host; sdio_claim_host(sdiodev->func); -#if 0//SDIO PHASE SETTING +#if 0 //SDIO PHASE SETTING sdiodev->func->card->quirks |= MMC_QUIRK_LENIENT_FN0; sdio_f0_writeb(sdiodev->func, feature.sdio_phase, 0x13, &ret); if (ret < 0) { @@ -2273,39 +3258,87 @@ int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) if (ret < 0) { sdio_release_host(sdiodev->func); AICWFDBG(LOGERROR, "enable func fail %d.\n", ret); - return ret; + return ret; } -#if 1//SDIO CLOCK SETTING +#if 1 //SDIO CLOCK SETTING if (feature.sdio_clock > 0) { host->ios.clock = feature.sdio_clock; host->ops->set_ios(host, &host->ios); - AICWFDBG(LOGINFO, "Set SDIO Clock %d MHz\n", host->ios.clock/1000000); + AICWFDBG(LOGINFO, "Set SDIO Clock %d MHz\n", + host->ios.clock / 1000000); } #endif sdio_release_host(sdiodev->func); - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.register_block, block_bit0); + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + sdio_claim_host(sdiodev->func2); + //set sdio blocksize + ret = sdio_set_block_size(sdiodev->func2, + SDIOWIFI_FUNC_BLOCKSIZE); + if (ret < 0) { + AICWFDBG(LOGERROR, "set func2 blocksize fail %d\n", + ret); + sdio_release_host(sdiodev->func2); + return ret; + } + + //set sdio enable func + ret = sdio_enable_func(sdiodev->func2); + if (ret < 0) { + sdio_release_host(sdiodev->func2); + AICWFDBG(LOGERROR, "enable func2 fail %d.\n", ret); + return ret; + } + + sdio_release_host(sdiodev->func2); + + ret = aicwf_sdio_func2_writeb( + sdiodev, sdiodev->sdio_reg.register_block, block_bit0); + if (ret < 0) { + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.register_block); + return ret; + } + + //1: no byte mode + ret = aicwf_sdio_func2_writeb( + sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, + byte_mode_disable); + if (ret < 0) { + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.bytemode_enable_reg); + return ret; + } + } + + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.register_block, + block_bit0); if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.register_block); + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.register_block); return ret; } //1: no byte mode - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, byte_mode_disable); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, + byte_mode_disable); if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.bytemode_enable_reg); + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.bytemode_enable_reg); return ret; } +#if 0 ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, 1); if (ret < 0) { AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.wakeup_reg); return ret; } -#if 1 mdelay(5); ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.sleep_reg, &val); if (ret < 0) { @@ -2318,6 +3351,8 @@ int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) }else{ AICWFDBG(LOGINFO, "sdio ready\n"); } +#else + mdelay(10); #endif return ret; } @@ -2325,19 +3360,19 @@ int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev) int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) { struct mmc_host *host; - u8 byte_mode_disable = 0x1;//1: no byte mode + u8 byte_mode_disable = 0x1; //1: no byte mode int ret = 0; struct aicbsp_feature_t feature; //u8 val = 0; - u8 val1 = 0; + u8 val1 = 0; aicbsp_get_feature(&feature, NULL); - aicwf_sdio_reg_init(sdiodev); + aicwf_sdio_reg_init(sdiodev); host = sdiodev->func->card->host; sdio_claim_host(sdiodev->func); - sdiodev->func->card->quirks |= MMC_QUIRK_LENIENT_FN0; + sdiodev->func->card->quirks |= MMC_QUIRK_LENIENT_FN0; ret = sdio_set_block_size(sdiodev->func, SDIOWIFI_FUNC_BLOCKSIZE); if (ret < 0) { @@ -2349,15 +3384,15 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) if (ret < 0) { sdio_release_host(sdiodev->func); AICWFDBG(LOGERROR, "enable func fail %d.\n", ret); - return ret; + return ret; } - sdio_f0_writeb(sdiodev->func, 0x7F, 0xF2, &ret); - if (ret) { - sdio_err("set fn0 0xF2 fail %d\n", ret); - sdio_release_host(sdiodev->func); - return ret; - } + sdio_f0_writeb(sdiodev->func, 0x7F, 0xF2, &ret); + if (ret) { + sdio_err("set fn0 0xF2 fail %d\n", ret); + sdio_release_host(sdiodev->func); + return ret; + } #if 0 if (host->ios.timing == MMC_TIMING_UHS_DDR50) { val = 0x21;//0x1D;//0x5; @@ -2384,7 +3419,7 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) return ret; } msleep(1); -#if 1//SDIO CLOCK SETTING +#if 1 //SDIO CLOCK SETTING if ((feature.sdio_clock > 0) && (host->ios.timing != MMC_TIMING_UHS_DDR50)) { host->ios.clock = feature.sdio_clock; host->ops->set_ios(host, &host->ios); @@ -2395,15 +3430,18 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) sdio_release_host(sdiodev->func); //1: no byte mode - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, byte_mode_disable); + ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.bytemode_enable_reg, + byte_mode_disable); if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.bytemode_enable_reg); + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.bytemode_enable_reg); return ret; } ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, 0x11); if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d write failed!\n", sdiodev->sdio_reg.wakeup_reg); + AICWFDBG(LOGERROR, "reg:%d write failed!\n", + sdiodev->sdio_reg.wakeup_reg); return ret; } @@ -2411,13 +3449,14 @@ int aicwf_sdiov3_func_init(struct aic_sdio_dev *sdiodev) mdelay(5); ret = aicwf_sdio_readb(sdiodev, sdiodev->sdio_reg.sleep_reg, &val1); if (ret < 0) { - AICWFDBG(LOGERROR, "reg:%d read failed!\n", sdiodev->sdio_reg.sleep_reg); + AICWFDBG(LOGERROR, "reg:%d read failed!\n", + sdiodev->sdio_reg.sleep_reg); return ret; } - if(!(val1 & 0x10)){ + if (!(val1 & 0x10)) { AICWFDBG(LOGERROR, "wakeup fail\n"); - }else{ + } else { AICWFDBG(LOGINFO, "sdio ready\n"); } #endif @@ -2429,6 +3468,14 @@ void aicwf_sdio_func_deinit(struct aic_sdio_dev *sdiodev) sdio_claim_host(sdiodev->func); sdio_disable_func(sdiodev->func); sdio_release_host(sdiodev->func); + + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + sdio_claim_host(sdiodev->func2); + sdio_disable_func(sdiodev->func2); + sdio_release_host(sdiodev->func2); + } } void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) @@ -2438,21 +3485,21 @@ void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) struct aicwf_rx_priv *rx_priv; struct aicwf_tx_priv *tx_priv; - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) spin_lock_init(&sdiodev->pwrctl_lock); sema_init(&sdiodev->pwrctl_wakeup_sema, 1); - #endif +#endif bus_if = sdiodev->bus_if; bus_if->dev = sdiodev->dev; bus_if->ops = &aicwf_sdio_bus_ops; bus_if->state = BUS_DOWN_ST; - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) sdiodev->state = SDIO_SLEEP_ST; sdiodev->active_duration = SDIOWIFI_PWR_CTRL_INTERVAL; - #else +#else sdiodev->state = SDIO_ACTIVE_ST; - #endif +#endif rx_priv = aicwf_rx_init(sdiodev); if (!rx_priv) { @@ -2477,14 +3524,15 @@ void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) #if defined(CONFIG_SDIO_PWRCTRL) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) init_timer(&sdiodev->timer); - sdiodev->timer.data = (ulong) sdiodev; + sdiodev->timer.data = (ulong)sdiodev; sdiodev->timer.function = aicwf_sdio_bus_pwrctl; #else timer_setup(&sdiodev->timer, aicwf_sdio_bus_pwrctl, 0); #endif init_completion(&sdiodev->pwrctrl_trgg); #ifdef AICWF_SDIO_SUPPORT - sdiodev->pwrctl_tsk = kthread_run(aicwf_sdio_pwrctl_thread, sdiodev, "aicwf_pwrctl"); + sdiodev->pwrctl_tsk = + kthread_run(aicwf_sdio_pwrctl_thread, sdiodev, "aicwf_pwrctl"); #endif if (IS_ERR(sdiodev->pwrctl_tsk)) { sdiodev->pwrctl_tsk = NULL; @@ -2495,13 +3543,40 @@ void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev) spin_lock_init(&sdiodev->tx_flow_lock); #endif +#ifdef CONFIG_TEMP_CONTROL +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + init_timer(&sdiodev->tp_ctrl_timer); + sdiodev->tp_ctrl_timer.data = (ulong)sdiodev; + sdiodev->tp_ctrl_timer.function = aicwf_temp_ctrl_timer; + init_timer(&sdiodev->netif_timer); + sdiodev->netif_timer.data = (ulong)sdiodev; + sdiodev->netif_timer.function = aicwf_netif_timer; +#else + timer_setup(&sdiodev->tp_ctrl_timer, aicwf_temp_ctrl_timer, 0); + timer_setup(&sdiodev->netif_timer, aicwf_netif_timer, 0); +#endif + INIT_WORK(&sdiodev->tp_ctrl_work, aicwf_temp_ctrl_worker); + INIT_WORK(&sdiodev->netif_work, aicwf_netif_worker); + mod_timer(&sdiodev->tp_ctrl_timer, + jiffies + msecs_to_jiffies(TEMP_GET_INTERVAL)); + sdiodev->net_stop = false; + ; + sdiodev->on_off = true; + sdiodev->cur_temp = 0; + sdiodev->get_level = 0; + sdiodev->set_level = 0; + sdiodev->interval_t1 = TMR_INTERVAL_1; + sdiodev->interval_t2 = TMR_INTERVAL_2; + sdiodev->cur_stat = 0; +#endif + ret = aicwf_bus_init(0, sdiodev->dev); if (ret < 0) { sdio_err("bus init fail\n"); goto fail; } - ret = aicwf_bus_start(bus_if); + ret = aicwf_bus_start(bus_if); if (ret != 0) { sdio_err("bus start fail\n"); goto fail; @@ -2516,51 +3591,57 @@ fail: uint8_t crc8_ponl_107(uint8_t *p_buffer, uint16_t cal_size) { - uint8_t i; - uint8_t crc = 0; - if (cal_size==0) { - return crc; - } - while (cal_size--) { - for (i = 0x80; i > 0; i /= 2) { - if (crc & 0x80) { - crc *= 2; - crc ^= 0x07; //polynomial X8 + X2 + X + 1,(0x107) - } else { - crc *= 2; - } - if ((*p_buffer) & i) { - crc ^= 0x07; - } - } - p_buffer++; - } + uint8_t i; + uint8_t crc = 0; + if (cal_size == 0) { + return crc; + } + while (cal_size--) { + for (i = 0x80; i > 0; i /= 2) { + if (crc & 0x80) { + crc *= 2; + crc ^= 0x07; //polynomial X8 + X2 + X + 1,(0x107) + } else { + crc *= 2; + } + if ((*p_buffer) & i) { + crc ^= 0x07; + } + } + p_buffer++; + } - return crc; + return crc; } #ifdef CONFIG_WIFI_SUSPEND_FOR_LINUX -void rwnx_set_wifi_suspend(char onoff){ +void rwnx_set_wifi_suspend(char onoff) +{ int ret = 0; if (onoff == '0') { printk("%s resume \r\n", __func__); - rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, 0); - }else{ + rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, 0, 1); + } else { printk("%s suspend \r\n", __func__); - ret = rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, 1); + ret = rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, + 1, 0); if (!ret) { - aicwf_sdio_pwr_stctl(g_rwnx_plat->sdiodev, SDIO_SLEEP_ST); - ret = aicwf_sdio_writeb(g_rwnx_plat->sdiodev, SDIOWIFI_WAKEUP_REG, 2); + aicwf_sdio_pwr_stctl(g_rwnx_plat->sdiodev, + SDIO_SLEEP_ST); + ret = aicwf_sdio_writeb(g_rwnx_plat->sdiodev, + SDIOWIFI_WAKEUP_REG, 2); if (ret < 0) { - sdio_err("reg:%d write failed!\n", SDIOWIFI_WAKEUP_REG); + sdio_err("reg:%d write failed!\n", + SDIOWIFI_WAKEUP_REG); } } } } static ssize_t rwnx_wifi_suspend_write_proc(struct file *file, - const char __user *buffer, - size_t count, loff_t *pos){ + const char __user *buffer, + size_t count, loff_t *pos) +{ char onoff; if (count < 1) @@ -2575,11 +3656,12 @@ static ssize_t rwnx_wifi_suspend_write_proc(struct file *file, } static const struct file_operations wifi_suspend_fops = { - .owner = THIS_MODULE, - .write = rwnx_wifi_suspend_write_proc, + .owner = THIS_MODULE, + .write = rwnx_wifi_suspend_write_proc, }; -void rwnx_init_wifi_suspend_node(void){ +void rwnx_init_wifi_suspend_node(void) +{ struct proc_dir_entry *ent; wifi_suspend_node = proc_mkdir("wifi_suspend", NULL); @@ -2587,15 +3669,16 @@ void rwnx_init_wifi_suspend_node(void){ printk("Unable to create /proc/wifi_suspend directory"); } - ent = proc_create("suspend", 0660, wifi_suspend_node, &wifi_suspend_fops); + ent = proc_create("suspend", 0660, wifi_suspend_node, + &wifi_suspend_fops); if (ent == NULL) { printk("Unable to create /proc/wifi_suspend/suspend"); } } -void rwnx_deinit_wifi_suspend_node(void){ +void rwnx_deinit_wifi_suspend_node(void) +{ remove_proc_entry("suspend", wifi_suspend_node); remove_proc_entry("wifi_suspend", 0); } -#endif//CONFIG_WIFI_SUSPEND_FOR_LINUX - +#endif //CONFIG_WIFI_SUSPEND_FOR_LINUX diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.h index 4ca6de280..0dd55e349 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_sdio.h @@ -16,97 +16,110 @@ #include #include "rwnx_cmds.h" #include "aicwf_rx_prealloc.h" -#define AICWF_SDIO_NAME "aicwf_sdio" -#define SDIOWIFI_FUNC_BLOCKSIZE 512 +#define AICWF_SDIO_NAME "aicwf_sdio" +#define SDIOWIFI_FUNC_BLOCKSIZE 512 -#define SDIOWIFI_BYTEMODE_LEN_REG 0x02 -#define SDIOWIFI_INTR_CONFIG_REG 0x04 -#define SDIOWIFI_SLEEP_REG 0x05 -#define SDIOWIFI_WAKEUP_REG 0x09 -#define SDIOWIFI_FLOW_CTRL_REG 0x0A -#define SDIOWIFI_REGISTER_BLOCK 0x0B -#define SDIOWIFI_BYTEMODE_ENABLE_REG 0x11 -#define SDIOWIFI_BLOCK_CNT_REG 0x12 -#define SDIOWIFI_FLOWCTRL_MASK_REG 0x7F -#define SDIOWIFI_WR_FIFO_ADDR 0x07 -#define SDIOWIFI_RD_FIFO_ADDR 0x08 +#define SDIOWIFI_BYTEMODE_LEN_REG 0x02 +#define SDIOWIFI_INTR_CONFIG_REG 0x04 +#define SDIOWIFI_SLEEP_REG 0x05 +#define SDIOWIFI_WAKEUP_REG 0x09 +#define SDIOWIFI_FLOW_CTRL_REG 0x0A +#define SDIOWIFI_REGISTER_BLOCK 0x0B +#define SDIOWIFI_BYTEMODE_ENABLE_REG 0x11 +#define SDIOWIFI_BLOCK_CNT_REG 0x12 +#define SDIOWIFI_FLOWCTRL_MASK_REG 0x7F +#define SDIOWIFI_WR_FIFO_ADDR 0x07 +#define SDIOWIFI_RD_FIFO_ADDR 0x08 -#define SDIOWIFI_INTR_ENABLE_REG_V3 0x00 -#define SDIOWIFI_INTR_PENDING_REG_V3 0x01 -#define SDIOWIFI_INTR_TO_DEVICE_REG_V3 0x02 -#define SDIOWIFI_FLOW_CTRL_Q1_REG_V3 0x03 -#define SDIOWIFI_MISC_INT_STATUS_REG_V3 0x04 -#define SDIOWIFI_BYTEMODE_LEN_REG_V3 0x05 -#define SDIOWIFI_BYTEMODE_LEN_MSB_REG_V3 0x06 -#define SDIOWIFI_BYTEMODE_ENABLE_REG_V3 0x07 -#define SDIOWIFI_MISC_CTRL_REG_V3 0x08 -#define SDIOWIFI_FLOW_CTRL_Q2_REG_V3 0x09 -#define SDIOWIFI_CLK_TEST_RESULT_REG_V3 0x0A -#define SDIOWIFI_RD_FIFO_ADDR_V3 0x0F -#define SDIOWIFI_WR_FIFO_ADDR_V3 0x10 +#define SDIOWIFI_INTR_ENABLE_REG_V3 0x00 +#define SDIOWIFI_INTR_PENDING_REG_V3 0x01 +#define SDIOWIFI_INTR_TO_DEVICE_REG_V3 0x02 +#define SDIOWIFI_FLOW_CTRL_Q1_REG_V3 0x03 +#define SDIOWIFI_MISC_INT_STATUS_REG_V3 0x04 +#define SDIOWIFI_BYTEMODE_LEN_REG_V3 0x05 +#define SDIOWIFI_BYTEMODE_LEN_MSB_REG_V3 0x06 +#define SDIOWIFI_BYTEMODE_ENABLE_REG_V3 0x07 +#define SDIOWIFI_MISC_CTRL_REG_V3 0x08 +#define SDIOWIFI_FLOW_CTRL_Q2_REG_V3 0x09 +#define SDIOWIFI_CLK_TEST_RESULT_REG_V3 0x0A +#define SDIOWIFI_RD_FIFO_ADDR_V3 0x0F +#define SDIOWIFI_WR_FIFO_ADDR_V3 0x10 -#define SDIOCLK_FREE_RUNNING_BIT (1 << 6) +#define SDIOCLK_FREE_RUNNING_BIT (1 << 6) -#define SDIOWIFI_PWR_CTRL_INTERVAL 30 -#define FLOW_CTRL_RETRY_COUNT 50 -#define BUFFER_SIZE 1536 -#define TAIL_LEN 4 -#define TXQLEN (2048*4) +#define SDIOWIFI_PWR_CTRL_INTERVAL 30 +#define FLOW_CTRL_RETRY_COUNT 50 +#define BUFFER_SIZE 1536 +#define TAIL_LEN 4 +#define TXQLEN (2048 * 4) -#define SDIO_SLEEP_ST 0 -#define SDIO_ACTIVE_ST 1 +#define SDIO_SLEEP_ST 0 +#define SDIO_ACTIVE_ST 1 #define DATA_FLOW_CTRL_THRESH 2 #ifdef CONFIG_TX_NETIF_FLOWCTRL -#define AICWF_SDIO_TX_LOW_WATER 100 -#define AICWF_SDIO_TX_HIGH_WATER 500 +#define AICWF_SDIO_TX_LOW_WATER 100 +#define AICWF_SDIO_TX_HIGH_WATER 500 +#endif + +#ifdef CONFIG_TEMP_CONTROL +#define TEMP_GET_INTERVAL (60 * 1000) +#define TEMP_THD_1 80 //temperature 1 (℃) +#define TEMP_THD_2 95 //temperature 2 (℃) +#define BUFFERING_V1 8 +#define BUFFERING_V2 13 +#define TMR_INTERVAL_1 60 //timer_1 60ms +#define TMR_INTERVAL_2 180 //timer_2 130ms #endif typedef enum { - SDIO_TYPE_DATA = 0X00, - SDIO_TYPE_CFG = 0X10, - SDIO_TYPE_CFG_CMD_RSP = 0X11, + SDIO_TYPE_DATA = 0X00, + SDIO_TYPE_CFG = 0X10, + SDIO_TYPE_CFG_CMD_RSP = 0X11, SDIO_TYPE_CFG_DATA_CFM = 0X12, - SDIO_TYPE_CFG_PRINT = 0X13 + SDIO_TYPE_CFG_PRINT = 0X13 } sdio_type; /* SDIO Device ID */ -#define SDIO_VENDOR_ID_AIC8801 0x5449 -#define SDIO_VENDOR_ID_AIC8800DC 0xc8a1 -#define SDIO_VENDOR_ID_AIC8800D80 0xc8a1 +#define SDIO_VENDOR_ID_AIC8801 0x5449 +#define SDIO_VENDOR_ID_AIC8800DC 0xc8a1 +#define SDIO_VENDOR_ID_AIC8800D80 0xc8a1 +#define SDIO_VENDOR_ID_AIC8800D80X2 0xc8a1 -#define SDIO_DEVICE_ID_AIC8801 0x0145 -#define SDIO_DEVICE_ID_AIC8800DC 0xc08d -#define SDIO_DEVICE_ID_AIC8800D80 0x0082 +#define SDIO_DEVICE_ID_AIC8801 0x0145 +#define SDIO_DEVICE_ID_AIC8800DC 0xc08d +#define SDIO_DEVICE_ID_AIC8800D80 0x0082 +#define SDIO_DEVICE_ID_AIC8800D80X2 0x2082 -enum AICWF_IC{ - PRODUCT_ID_AIC8801 = 0, +enum AICWF_IC { + PRODUCT_ID_AIC8801 = 0, PRODUCT_ID_AIC8800DC, PRODUCT_ID_AIC8800DW, - PRODUCT_ID_AIC8800D80 + PRODUCT_ID_AIC8800D80, + PRODUCT_ID_AIC8800D80X2 }; - struct rwnx_hw; struct aic_sdio_reg { - u8 bytemode_len_reg; - u8 intr_config_reg; - u8 sleep_reg; - u8 wakeup_reg; - u8 flow_ctrl_reg; - u8 flowctrl_mask_reg; - u8 register_block; - u8 bytemode_enable_reg; - u8 block_cnt_reg; - u8 misc_int_status_reg; - u8 rd_fifo_addr; - u8 wr_fifo_addr; + u8 bytemode_len_reg; + u8 intr_config_reg; + u8 sleep_reg; + u8 wakeup_reg; + u8 flow_ctrl_reg; + u8 flowctrl_mask_reg; + u8 register_block; + u8 bytemode_enable_reg; + u8 block_cnt_reg; + u8 misc_int_status_reg; + u8 rd_fifo_addr; + u8 wr_fifo_addr; }; struct aic_sdio_dev { struct rwnx_hw *rwnx_hw; struct sdio_func *func; + struct sdio_func *func2; struct device *dev; struct aicwf_bus *bus_if; struct rwnx_cmd_mgr cmd_mgr; @@ -119,7 +132,7 @@ struct aic_sdio_dev { spinlock_t tx_flow_lock; #endif - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) //for sdio pwr ctrl struct timer_list timer; uint active_duration; @@ -127,21 +140,46 @@ struct aic_sdio_dev { struct task_struct *pwrctl_tsk; spinlock_t pwrctl_lock; struct semaphore pwrctl_wakeup_sema; - #endif +#endif u16 chipid; - struct aic_sdio_reg sdio_reg; + struct aic_sdio_reg sdio_reg; - spinlock_t wslock;//AIDEN test + spinlock_t wslock; //AIDEN test bool oob_enable; - atomic_t is_bus_suspend; + atomic_t is_bus_suspend; + +#ifdef CONFIG_TEMP_CONTROL + spinlock_t tx_flow_lock; + struct timer_list netif_timer; + struct timer_list tp_ctrl_timer; + struct work_struct tp_ctrl_work; + struct work_struct netif_work; + s8_l cur_temp; + bool net_stop; + bool on_off; //for command, 0 - off, 1 - on + int8_t get_level; //for command, 0 - 100%, 1 - 12%, 2 - 3% + int8_t set_level; //for command, 0 - driver auto, 1 - 12%, 2 - 3% + int interval_t1; + int interval_t2; + u8_l cur_stat; //0--normal temp, 1/2--buffering temp +#endif }; + +#ifdef CONFIG_TEMP_CONTROL +void aicwf_netif_worker(struct work_struct *work); +void aicwf_temp_ctrl_worker(struct work_struct *work); +void aicwf_temp_ctrl(struct aic_sdio_dev *sdiodev); +void aicwf_netif_ctrl(struct aic_sdio_dev *sdiodev, int val); +#endif extern struct aicwf_rx_buff_list aic_rx_buff_list; int aicwf_sdio_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val); +int aicwf_sdio_func2_readb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 *val); +int aicwf_sdio_func2_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val); void aicwf_sdio_hal_irqhandler(struct sdio_func *func); #if defined(CONFIG_SDIO_PWRCTRL) void aicwf_sdio_pwrctl_timer(struct aic_sdio_dev *sdiodev, uint duration); -int aicwf_sdio_pwr_stctl(struct aic_sdio_dev *sdiodev, uint target); +int aicwf_sdio_pwr_stctl(struct aic_sdio_dev *sdiodev, uint target); #endif void aicwf_sdio_reg_init(struct aic_sdio_dev *sdiodev); int aicwf_sdio_func_init(struct aic_sdio_dev *sdiodev); @@ -153,9 +191,11 @@ void aicwf_sdio_tx_netif_flowctrl(struct rwnx_hw *rwnx_hw, bool state); int aicwf_sdio_flow_ctrl(struct aic_sdio_dev *sdiodev); int aicwf_sdio_flow_ctrl_msg(struct aic_sdio_dev *sdiodev); #ifdef CONFIG_PREALLOC_RX_SKB -int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct rx_buff *rxbbuf, u32 size); +int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct rx_buff *rxbbuf, + u32 size); #else -int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, u32 size); +int aicwf_sdio_recv_pkt(struct aic_sdio_dev *sdiodev, struct sk_buff *skbbuf, + u32 size); #endif int aicwf_sdio_send_pkt(struct aic_sdio_dev *sdiodev, u8 *buf, uint count); void *aicwf_sdio_bus_init(struct aic_sdio_dev *sdiodev); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.c index fa30efd81..13715071b 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.c @@ -1,21 +1,20 @@ -#include"aicwf_tcp_ack.h" +#include "aicwf_tcp_ack.h" //#include"rwnx_tx.h" //#include "aicwf_tcp_ack.h" -#include"rwnx_defs.h" -extern int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg); +#include "rwnx_defs.h" +extern int intf_tx(struct rwnx_hw *priv, struct msg_buf *msg); struct msg_buf *intf_tcp_alloc_msg(struct msg_buf *msg) { //printk("%s \n",__func__); - int len=sizeof(struct msg_buf) ; - msg = kzalloc(len , /*GFP_KERNEL*/GFP_ATOMIC); - if(!msg) + int len = sizeof(struct msg_buf); + msg = kzalloc(len, /*GFP_KERNEL*/ GFP_ATOMIC); + if (!msg) printk("%s: alloc failed \n", __func__); - memset(msg,0,len); + memset(msg, 0, len); return msg; } - -void intf_tcp_drop_msg(struct rwnx_hw *priv, - struct msg_buf *msg) + +void intf_tcp_drop_msg(struct rwnx_hw *priv, struct msg_buf *msg) { //printk("%s \n",__func__); if (msg->skb) @@ -24,7 +23,7 @@ void intf_tcp_drop_msg(struct rwnx_hw *priv, kfree(msg); } -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) void tcp_ack_timeout(unsigned long data) #else void tcp_ack_timeout(struct timer_list *t) @@ -35,10 +34,10 @@ void tcp_ack_timeout(struct timer_list *t) struct msg_buf *msg; struct tcp_ack_manage *ack_m = NULL; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) ack_info = (struct tcp_ack_info *)data; #else - ack_info = container_of(t,struct tcp_ack_info,timer); + ack_info = container_of(t, struct tcp_ack_info, timer); #endif ack_m = container_of(ack_info, struct tcp_ack_manage, @@ -51,7 +50,7 @@ void tcp_ack_timeout(struct timer_list *t) ack_info->drop_cnt = 0; ack_info->in_send_msg = msg; write_sequnlock_bh(&ack_info->seqlock); - intf_tx(ack_m->priv, msg);//send skb + intf_tx(ack_m->priv, msg); //send skb //ack_info->in_send_msg = NULL;//add by dwx //write_sequnlock_bh(&ack_info->seqlock); //intf_tx(ack_m->priv, msg); @@ -66,7 +65,7 @@ void tcp_ack_init(struct rwnx_hw *priv) struct tcp_ack_info *ack_info; struct tcp_ack_manage *ack_m = &priv->ack_m; - printk("%s \n",__func__); + printk("%s \n", __func__); memset(ack_m, 0, sizeof(struct tcp_ack_manage)); ack_m->priv = priv; spin_lock_init(&ack_m->lock); @@ -81,12 +80,12 @@ void tcp_ack_init(struct rwnx_hw *priv) ack_info->last_time = jiffies; ack_info->timeout = msecs_to_jiffies(ACK_OLD_TIME); - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) - setup_timer(&ack_info->timer, tcp_ack_timeout, - (unsigned long)ack_info); - #else - timer_setup(&ack_info->timer,tcp_ack_timeout,0); - #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + setup_timer(&ack_info->timer, tcp_ack_timeout, + (unsigned long)ack_info); +#else + timer_setup(&ack_info->timer, tcp_ack_timeout, 0); +#endif } atomic_set(&ack_m->enable, 1); @@ -99,7 +98,7 @@ void tcp_ack_deinit(struct rwnx_hw *priv) struct tcp_ack_manage *ack_m = &priv->ack_m; struct msg_buf *drop_msg = NULL; - printk("%s \n",__func__); + printk("%s \n", __func__); atomic_set(&ack_m->enable, 0); for (i = 0; i < TCP_ACK_NUM; i++) { @@ -112,12 +111,11 @@ void tcp_ack_deinit(struct rwnx_hw *priv) write_sequnlock_bh(&ack_m->ack_info[i].seqlock); if (drop_msg) - intf_tcp_drop_msg(priv, drop_msg);//drop skb + intf_tcp_drop_msg(priv, drop_msg); //drop skb } } -int tcp_check_quick_ack(unsigned char *buf, - struct tcp_ack_msg *msg) +int tcp_check_quick_ack(unsigned char *buf, struct tcp_ack_msg *msg) { int ip_hdr_len; unsigned char *temp; @@ -151,14 +149,14 @@ int tcp_check_quick_ack(unsigned char *buf, } int is_drop_tcp_ack(struct tcphdr *tcphdr, int tcp_tot_len, - unsigned short *win_scale) + unsigned short *win_scale) { //printk("%s \n",__func__); int drop = 1; int len = tcphdr->doff * 4; unsigned char *ptr; - if(tcp_tot_len > len) { + if (tcp_tot_len > len) { drop = 0; } else { len -= sizeof(struct tcphdr); @@ -188,7 +186,7 @@ int is_drop_tcp_ack(struct tcphdr *tcphdr, int tcp_tot_len, case TCPOPT_WINDOW: if (*ptr < 15) *win_scale = (1 << (*ptr)); - printk("%d\n",*win_scale); + //printk("%d\n",*win_scale); break; default: drop = 2; @@ -203,15 +201,13 @@ int is_drop_tcp_ack(struct tcphdr *tcphdr, int tcp_tot_len, return drop; } - /* flag:0 for not tcp ack * 1 for ack which can be drop * 2 for other ack whith more info */ -int tcp_check_ack(unsigned char *buf, - struct tcp_ack_msg *msg, - unsigned short *win_scale) +int tcp_check_ack(unsigned char *buf, struct tcp_ack_msg *msg, + unsigned short *win_scale) { int ret; int ip_hdr_len; @@ -221,7 +217,7 @@ int tcp_check_ack(unsigned char *buf, struct iphdr *iphdr; struct tcphdr *tcphdr; - ethhdr =(struct ethhdr *)buf; + ethhdr = (struct ethhdr *)buf; if (ethhdr->h_proto != htons(ETH_P_IP)) return 0; @@ -236,7 +232,7 @@ int tcp_check_ack(unsigned char *buf, if (!(temp[13] & 0x10)) return 0; - tcp_tot_len = ntohs(iphdr->tot_len) - ip_hdr_len;// tcp total len + tcp_tot_len = ntohs(iphdr->tot_len) - ip_hdr_len; // tcp total len ret = is_drop_tcp_ack(tcphdr, tcp_tot_len, win_scale); //printk("is drop:%d \n",ret); @@ -248,13 +244,12 @@ int tcp_check_ack(unsigned char *buf, msg->seq = ntohl(tcphdr->ack_seq); msg->win = ntohs(tcphdr->window); } - + return ret; } /* return val: -1 for not match, others for match */ -int tcp_ack_match(struct tcp_ack_manage *ack_m, - struct tcp_ack_msg *ack_msg) +int tcp_ack_match(struct tcp_ack_manage *ack_m, struct tcp_ack_msg *ack_msg) { int i, ret = -1; unsigned start; @@ -268,19 +263,17 @@ int tcp_ack_match(struct tcp_ack_manage *ack_m, ret = -1; ack = &ack_info->ack_msg; - if (ack_info->busy && - ack->dest == ack_msg->dest && + if (ack_info->busy && ack->dest == ack_msg->dest && ack->source == ack_msg->source && ack->saddr == ack_msg->saddr && ack->daddr == ack_msg->daddr) ret = i; - } while(read_seqretry(&ack_info->seqlock, start)); + } while (read_seqretry(&ack_info->seqlock, start)); } return ret; } - void tcp_ack_update(struct tcp_ack_manage *ack_m) { int i; @@ -294,7 +287,7 @@ void tcp_ack_update(struct tcp_ack_manage *ack_m) write_seqlock_bh(&ack_info->seqlock); if (ack_info->busy && time_after(jiffies, ack_info->last_time + - ack_info->timeout)) { + ack_info->timeout)) { ack_m->free_index = i; ack_m->max_num--; ack_info->busy = 0; @@ -336,20 +329,17 @@ int tcp_ack_alloc_index(struct tcp_ack_manage *ack_m) ack_m->max_num++; ret = i; } - } while(read_seqretry(&ack_info->seqlock, start)); + } while (read_seqretry(&ack_info->seqlock, start)); } spin_unlock_bh(&ack_m->lock); return ret; } - /* return val: 0 for not handle tx, 1 for handle tx */ -int tcp_ack_handle(struct msg_buf *new_msgbuf, - struct tcp_ack_manage *ack_m, - struct tcp_ack_info *ack_info, - struct tcp_ack_msg *ack_msg, - int type) +int tcp_ack_handle(struct msg_buf *new_msgbuf, struct tcp_ack_manage *ack_m, + struct tcp_ack_info *ack_info, struct tcp_ack_msg *ack_msg, + int type) { int quick_ack = 0; struct tcp_ack_msg *ack; @@ -366,8 +356,7 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, if (U32_BEFORE(ack->seq, ack_msg->seq)) { ack->seq = ack_msg->seq; if (ack_info->psh_flag && - !U32_BEFORE(ack_msg->seq, - ack_info->psh_seq)) { + !U32_BEFORE(ack_msg->seq, ack_info->psh_seq)) { ack_info->psh_flag = 0; } @@ -376,15 +365,15 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, drop_msg = ack_info->msgbuf; ack_info->msgbuf = NULL; del_timer(&ack_info->timer); - }else{ + } else { //printk("msgbuf is NULL \n"); } ack_info->in_send_msg = NULL; ack_info->drop_cnt = atomic_read(&ack_m->max_drop_cnt); } else { - printk("%s before abnormal ack: %d, %d\n", - __func__, ack->seq, ack_msg->seq); + printk("%s before abnormal ack: %d, %d\n", __func__, + ack->seq, ack_msg->seq); drop_msg = new_msgbuf; ret = 1; } @@ -418,8 +407,8 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, (jiffies + msecs_to_jiffies(5))); } } else { - printk("%s before ack: %d, %d\n", - __func__, ack->seq, ack_msg->seq); + printk("%s before ack: %d, %d\n", __func__, ack->seq, + ack_msg->seq); drop_msg = new_msgbuf; ret = 1; } @@ -427,29 +416,27 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, write_sequnlock_bh(&ack_info->seqlock); if (drop_msg) - intf_tcp_drop_msg(ack_m->priv, drop_msg);// drop skb + intf_tcp_drop_msg(ack_m->priv, drop_msg); // drop skb return ret; } -int tcp_ack_handle_new(struct msg_buf *new_msgbuf, - struct tcp_ack_manage *ack_m, - struct tcp_ack_info *ack_info, - struct tcp_ack_msg *ack_msg, - int type) +int tcp_ack_handle_new(struct msg_buf *new_msgbuf, struct tcp_ack_manage *ack_m, + struct tcp_ack_info *ack_info, + struct tcp_ack_msg *ack_msg, int type) { int quick_ack = 0; struct tcp_ack_msg *ack; int ret = 0; struct msg_buf *drop_msg = NULL; - struct msg_buf * send_msg = NULL; + //struct msg_buf * send_msg = NULL; //printk("",); write_seqlock_bh(&ack_info->seqlock); - ack_info->last_time = jiffies; - ack = &ack_info->ack_msg; + ack_info->last_time = jiffies; + ack = &ack_info->ack_msg; - if(U32_BEFORE(ack->seq, ack_msg->seq)){ + if (U32_BEFORE(ack->seq, ack_msg->seq)) { if (ack_info->msgbuf) { drop_msg = ack_info->msgbuf; ack_info->msgbuf = NULL; @@ -466,25 +453,25 @@ int tcp_ack_handle_new(struct msg_buf *new_msgbuf, ack->seq = ack_msg->seq; - if(quick_ack || (!ack_info->in_send_msg && + if (quick_ack || (!ack_info->in_send_msg && (ack_info->drop_cnt >= - atomic_read(&ack_m->max_drop_cnt)))){ + atomic_read(&ack_m->max_drop_cnt)))) { ack_info->drop_cnt = 0; - send_msg = new_msgbuf; - ack_info->in_send_msg = send_msg; + //send_msg = new_msgbuf; + ack_info->in_send_msg = new_msgbuf; del_timer(&ack_info->timer); - }else{ + } else { ret = 1; ack_info->msgbuf = new_msgbuf; if (!timer_pending(&ack_info->timer)) mod_timer(&ack_info->timer, (jiffies + msecs_to_jiffies(5))); } - + //ret = 1; - }else { - printk("%s before ack: %d, %d\n", - __func__, ack->seq, ack_msg->seq); + } else { + printk("%s before ack: %d, %d\n", __func__, ack->seq, + ack_msg->seq); drop_msg = new_msgbuf; ret = 1; } @@ -495,23 +482,21 @@ int tcp_ack_handle_new(struct msg_buf *new_msgbuf, }*/ //ack_info->in_send_msg=NULL; - + write_sequnlock_bh(&ack_info->seqlock); - /*if(send_msg){ + /*if(send_msg){ intf_tx(ack_m->priv,send_msg); //ack_info->in_send_msg=NULL; }*/ if (drop_msg) - intf_tcp_drop_msg(ack_m->priv, drop_msg);// drop skb + intf_tcp_drop_msg(ack_m->priv, drop_msg); // drop skb return ret; - } -void filter_rx_tcp_ack(struct rwnx_hw *priv, - unsigned char *buf, unsigned plen) +void filter_rx_tcp_ack(struct rwnx_hw *priv, unsigned char *buf, unsigned plen) { int index; struct tcp_ack_msg ack_msg; @@ -521,8 +506,7 @@ void filter_rx_tcp_ack(struct rwnx_hw *priv, if (!atomic_read(&ack_m->enable)) return; - if ((plen > MAX_TCP_ACK) || - !tcp_check_quick_ack(buf, &ack_msg)) + if ((plen > MAX_TCP_ACK) || !tcp_check_quick_ack(buf, &ack_msg)) return; index = tcp_ack_match(ack_m, &ack_msg); @@ -536,9 +520,8 @@ void filter_rx_tcp_ack(struct rwnx_hw *priv, } /* return val: 0 for not filter, 1 for filter */ -int filter_send_tcp_ack(struct rwnx_hw *priv, - struct msg_buf *msgbuf, - unsigned char *buf, unsigned int plen) +int filter_send_tcp_ack(struct rwnx_hw *priv, struct msg_buf *msgbuf, + unsigned char *buf, unsigned int plen) { //printk("%s \n",__func__); int ret = 0; @@ -550,9 +533,6 @@ int filter_send_tcp_ack(struct rwnx_hw *priv, struct tcp_ack_info *ack_info; struct tcp_ack_manage *ack_m = &priv->ack_m; - if (plen > MAX_TCP_ACK) - return 0; - tcp_ack_update(ack_m); drop = tcp_check_ack(buf, &ack_msg, &win_scale); //printk("drop:%d win_scale:%d",drop,win_scale); @@ -562,8 +542,7 @@ int filter_send_tcp_ack(struct rwnx_hw *priv, index = tcp_ack_match(ack_m, &ack_msg); if (index >= 0) { ack_info = ack_m->ack_info + index; - if ((0 != win_scale) && - (ack_info->win_scale != win_scale)) { + if ((0 != win_scale) && (ack_info->win_scale != win_scale)) { write_seqlock_bh(&ack_info->seqlock); ack_info->win_scale = win_scale; write_sequnlock_bh(&ack_info->seqlock); @@ -571,13 +550,14 @@ int filter_send_tcp_ack(struct rwnx_hw *priv, if (drop > 0 && atomic_read(&ack_m->enable)) { win = ack_info->win_scale * ack_msg.win; - if ((win_scale!=0) && (win < (ack_m->ack_winsize * SIZE_KB))) - { + if ((win_scale != 0) && + (win < (ack_m->ack_winsize * SIZE_KB))) { drop = 2; - printk("%d %d %d",win_scale,win,(ack_m->ack_winsize * SIZE_KB)); + printk("%d %d %d", win_scale, win, + (ack_m->ack_winsize * SIZE_KB)); } ret = tcp_ack_handle_new(msgbuf, ack_m, ack_info, - &ack_msg, drop); + &ack_msg, drop); } goto out; @@ -593,7 +573,7 @@ int filter_send_tcp_ack(struct rwnx_hw *priv, atomic_read(&ack_m->max_drop_cnt); ack_m->ack_info[index].win_scale = (win_scale != 0) ? win_scale : 1; - + //ack_m->ack_info[index].msgbuf = NULL; //ack_m->ack_info[index].in_send_msg = NULL; ack = &ack_m->ack_info[index].ack_msg; @@ -609,8 +589,7 @@ out: return ret; } -void move_tcpack_msg(struct rwnx_hw *priv, - struct msg_buf *msg) +void move_tcpack_msg(struct rwnx_hw *priv, struct msg_buf *msg) { struct tcp_ack_info *ack_info; struct tcp_ack_manage *ack_m = &priv->ack_m; @@ -630,4 +609,3 @@ void move_tcpack_msg(struct rwnx_hw *priv, write_sequnlock_bh(&ack_info->seqlock); } } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.h index d872e635c..f415e8caf 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_tcp_ack.h @@ -9,44 +9,23 @@ #include #include +#define TCP_ACK_NUM 32 +#define TCP_ACK_EXIT_VAL 0x800 +#define TCP_ACK_DROP_CNT 10 -#define TCP_ACK_NUM 32 -#define TCP_ACK_EXIT_VAL 0x800 -#define TCP_ACK_DROP_CNT 10 - -#define ACK_OLD_TIME 4000 -#define U32_BEFORE(a, b) ((__s32)((__u32)a - (__u32)b) <= 0) +#define ACK_OLD_TIME 4000 +#define U32_BEFORE(a, b) ((__s32)((__u32)a - (__u32)b) <= 0) #define MAX_TCP_ACK 200 /*min window size in KB, it's 256KB*/ #define MIN_WIN 256 #define SIZE_KB 1024 - struct msg_buf { //struct list_head list; struct sk_buff *skb; struct rwnx_vif *rwnx_vif; - /* data just tx cmd use,not include the head */ - /*void *data; - void *tran_data; - unsigned long pcie_addr; - u8 type; - u8 mode; - u16 len; - unsigned long timeout;*/ - - /*unsigned int fifo_id; - struct sprdwl_msg_list *msglist;*/ - - /*unsigned char buffer_type; - struct sprdwl_xmit_msg_list *xmit_msg_list; - unsigned char msg_type; - - unsigned long last_time; - u8 ctxt_id;*/ - }; struct tcp_ack_msg { @@ -58,7 +37,6 @@ struct tcp_ack_msg { u16 win; }; - struct tcp_ack_info { int ack_info_num; int busy; @@ -98,14 +76,15 @@ void tcp_ack_init(struct rwnx_hw *priv); void tcp_ack_deinit(struct rwnx_hw *priv); - -int is_drop_tcp_ack(struct tcphdr *tcphdr, int tcp_tot_len, unsigned short *win_scale); +int is_drop_tcp_ack(struct tcphdr *tcphdr, int tcp_tot_len, + unsigned short *win_scale); int is_tcp_ack(struct sk_buff *skb, unsigned short *win_scale); -int filter_send_tcp_ack(struct rwnx_hw *priv, struct msg_buf *msgbuf,unsigned char *buf, unsigned int plen); +int filter_send_tcp_ack(struct rwnx_hw *priv, struct msg_buf *msgbuf, + unsigned char *buf, unsigned int plen); -void filter_rx_tcp_ack(struct rwnx_hw *priv,unsigned char *buf, unsigned plen); +void filter_rx_tcp_ack(struct rwnx_hw *priv, unsigned char *buf, unsigned plen); -void move_tcpack_msg(struct rwnx_hw *priv, struct msg_buf * msg); +void move_tcpack_msg(struct rwnx_hw *priv, struct msg_buf *msg); #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.c index 47613d7c6..9b5d7acf1 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.c @@ -31,11 +31,13 @@ #ifdef CONFIG_PREALLOC_RX_SKB void aicwf_rxframe_queue_init_2(struct rx_frame_queue *pq, int max_len) { - //int prio; + //int prio; - memset(pq, 0, offsetof(struct rx_frame_queue, queuelist) + (sizeof(struct list_head))); - pq->qmax = (u16)max_len; - INIT_LIST_HEAD(&pq->queuelist); + memset(pq, 0, + offsetof(struct rx_frame_queue, queuelist) + + (sizeof(struct list_head))); + pq->qmax = (u16)max_len; + INIT_LIST_HEAD(&pq->queuelist); #if 0 memset(pq, 0, offsetof(struct rx_frame_queue, queuelist) + (sizeof(struct list_head) * num_prio)); pq->num_prio = (u16)num_prio; @@ -48,27 +50,26 @@ void aicwf_rxframe_queue_init_2(struct rx_frame_queue *pq, int max_len) } //extern struct aic_sdio_dev *g_sdiodev; -void rxbuff_queue_flush(struct aicwf_rx_priv* rx_priv) +void rxbuff_queue_flush(struct aicwf_rx_priv *rx_priv) { - - //int prio; + //int prio; struct rx_frame_queue *pq = &rx_priv->rxq; - struct list_head *pos; - struct list_head *n; - struct list_head *head; - struct rx_buff *tempbuf = NULL; + struct list_head *pos; + struct list_head *n; + struct list_head *head; + struct rx_buff *tempbuf = NULL; - head = &pq->queuelist; - list_for_each_safe(pos, n, head) { - tempbuf = list_entry(pos, struct rx_buff, queue); - list_del_init(&tempbuf->queue); + head = &pq->queuelist; + list_for_each_safe (pos, n, head) { + tempbuf = list_entry(pos, struct rx_buff, queue); + list_del_init(&tempbuf->queue); #if 0 rxbuff_free(tempbuf); #else - aicwf_prealloc_rxbuff_free(tempbuf, &rx_priv->rxbuff_lock); + aicwf_prealloc_rxbuff_free(tempbuf, &rx_priv->rxbuff_lock); #endif - pq->qcnt--; - } + pq->qcnt--; + } } #endif @@ -92,32 +93,43 @@ int aicwf_bus_init(uint bus_hdrlen, struct device *dev) init_completion(&bus_if->bustx_trgg); init_completion(&bus_if->busrx_trgg); - //new oob feature - init_completion(&bus_if->busirq_trgg); + //new oob feature + init_completion(&bus_if->busirq_trgg); #ifdef AICWF_SDIO_SUPPORT - spin_lock_init(&bus_if->bus_priv.sdio->wslock);//AIDEN test - bus_if->bustx_thread = kthread_run(sdio_bustx_thread, (void *)bus_if, "aicwf_bustx_thread"); - bus_if->busrx_thread = kthread_run(sdio_busrx_thread, (void *)bus_if->bus_priv.sdio->rx_priv, "aicwf_busrx_thread"); - //new oob feature + spin_lock_init(&bus_if->bus_priv.sdio->wslock); //AIDEN test + bus_if->bustx_thread = kthread_run(sdio_bustx_thread, (void *)bus_if, + "aicwf_bustx_thread"); + bus_if->busrx_thread = + kthread_run(sdio_busrx_thread, + (void *)bus_if->bus_priv.sdio->rx_priv, + "aicwf_busrx_thread"); + //new oob feature #ifdef CONFIG_OOB - if(bus_if->bus_priv.sdio->oob_enable){ - bus_if->busirq_thread = kthread_run(sdio_busirq_thread, (void *)bus_if->bus_priv.sdio->rx_priv, "aicwf_busirq_thread"); - } + if (bus_if->bus_priv.sdio->oob_enable) { + bus_if->busirq_thread = + kthread_run(sdio_busirq_thread, + (void *)bus_if->bus_priv.sdio->rx_priv, + "aicwf_busirq_thread"); + } #endif //CONFIG_OOB #endif #ifdef AICWF_USB_SUPPORT - bus_if->bustx_thread = kthread_run(usb_bustx_thread, (void *)bus_if, "aicwf_bustx_thread"); - bus_if->busrx_thread = kthread_run(usb_busrx_thread, (void *)bus_if->bus_priv.usb->rx_priv, "aicwf_busrx_thread"); + bus_if->bustx_thread = kthread_run(usb_bustx_thread, (void *)bus_if, + "aicwf_bustx_thread"); + bus_if->busrx_thread = + kthread_run(usb_busrx_thread, + (void *)bus_if->bus_priv.usb->rx_priv, + "aicwf_busrx_thread"); #endif if (IS_ERR(bus_if->bustx_thread)) { - bus_if->bustx_thread = NULL; + bus_if->bustx_thread = NULL; txrx_err("aicwf_bustx_thread run fail\n"); goto fail; } if (IS_ERR(bus_if->busrx_thread)) { - bus_if->busrx_thread = NULL; + bus_if->busrx_thread = NULL; txrx_err("aicwf_bustx_thread run fail\n"); goto fail; } @@ -205,8 +217,9 @@ struct aicwf_tx_priv *aicwf_tx_init(void *arg) #endif atomic_set(&tx_priv->aggr_count, 0); -#ifdef CONFIG_RESV_MEM_SUPPORT - tx_priv->aggr_buf = aicbsp_resv_mem_alloc_skb(MAX_AGGR_TXPKT_LEN, AIC_RESV_MEM_TXDATA); +#ifdef CONFIG_RESV_MEM_SUPPORT + tx_priv->aggr_buf = aicbsp_resv_mem_alloc_skb(MAX_AGGR_TXPKT_LEN, + AIC_RESV_MEM_TXDATA); #else tx_priv->aggr_buf = dev_alloc_skb(MAX_AGGR_TXPKT_LEN); #endif @@ -218,40 +231,49 @@ struct aicwf_tx_priv *aicwf_tx_init(void *arg) tx_priv->head = tx_priv->aggr_buf->data; tx_priv->tail = tx_priv->aggr_buf->data; +#ifdef CONFIG_SDIO_ADMA + tx_priv->aggr_segcnt = 0; + tx_priv->len = 0; +#endif + return tx_priv; } void aicwf_tx_deinit(struct aicwf_tx_priv *tx_priv) { if (tx_priv && tx_priv->aggr_buf) { -#ifdef CONFIG_RESV_MEM_SUPPORT - aicbsp_resv_mem_kfree_skb(tx_priv->aggr_buf, AIC_RESV_MEM_TXDATA); +#ifdef CONFIG_RESV_MEM_SUPPORT + aicbsp_resv_mem_kfree_skb(tx_priv->aggr_buf, + AIC_RESV_MEM_TXDATA); #else dev_kfree_skb(tx_priv->aggr_buf); #endif kfree(tx_priv); } +#ifdef CONFIG_SDIO_ADMA + aicwf_sdio_aggrbuf_reset(tx_priv); +#endif } #ifdef AICWF_SDIO_SUPPORT #ifdef CONFIG_PREALLOC_RX_SKB static bool aicwf_another_ptk_1(struct rx_buff *buffer) { - u8 *read = buffer->read; - u16 aggr_len = 0; + u8 *read = buffer->read; + u16 aggr_len = 0; - BUG_ON((read - buffer->start)%4 != 0); + BUG_ON((read - buffer->start) % 4 != 0); - if(read == NULL || read >= buffer->end) { - return false; - } + if (read == NULL || read >= buffer->end) { + return false; + } - aggr_len = (*read | (*(read + 1) << 8)); - if(aggr_len == 0) { - return false; - } + aggr_len = (*read | (*(read + 1) << 8)); + if (aggr_len == 0) { + return false; + } - return true; + return true; } #else static bool aicwf_another_ptk(struct sk_buff *skb) @@ -286,7 +308,7 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) u16 aggr_len = 0, adjust_len = 0; u8 *data = NULL; u8_l *msg = NULL; - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB struct rx_buff *buffer = NULL; while (1) { @@ -305,50 +327,71 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) data = buffer->read; pkt_len = (*data | (*(data + 1) << 8)); - if ((data[2] & SDIO_TYPE_CFG) != SDIO_TYPE_CFG) { // type : data + if ((data[2] & SDIO_TYPE_CFG) != + SDIO_TYPE_CFG) { // type : data aggr_len = pkt_len + RX_HWHRD_LEN; if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); + adjust_len = + roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL); + skb_inblock = __dev_alloc_skb( + aggr_len + CCMP_OR_WEP_INFO, + GFP_KERNEL); if (skb_inblock == NULL) { txrx_err("no more space! skip\n"); - buffer->read = buffer->read + adjust_len; + buffer->read = + buffer->read + adjust_len; continue; } skb_put(skb_inblock, aggr_len); memcpy(skb_inblock->data, data, aggr_len); - rwnx_rxdataind_aicwf(rx_priv->sdiodev->rwnx_hw, skb_inblock, (void *)rx_priv); + rwnx_rxdataind_aicwf(rx_priv->sdiodev->rwnx_hw, + skb_inblock, + (void *)rx_priv); buffer->read = buffer->read + adjust_len; } else { // type : config aggr_len = pkt_len; if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); + adjust_len = + roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - msg = kmalloc(aggr_len+4, GFP_KERNEL); + msg = kmalloc(aggr_len + 4, GFP_KERNEL); if (msg == NULL) { txrx_err("no more space for msg!\n"); - aicwf_prealloc_rxbuff_free(buffer, &rx_priv->rxbuff_lock); + aicwf_prealloc_rxbuff_free( + buffer, &rx_priv->rxbuff_lock); return -EBADE; } memcpy(msg, data, aggr_len + 4); - if (((*(msg + 2) & 0x7f) == SDIO_TYPE_CFG_CMD_RSP) && (rx_priv->sdiodev->bus_if->state != BUS_DOWN_ST)) - rwnx_rx_handle_msg(rx_priv->sdiodev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); + if (((*(msg + 2) & 0x7f) == + SDIO_TYPE_CFG_CMD_RSP) && + (rx_priv->sdiodev->bus_if->state != + BUS_DOWN_ST)) + rwnx_rx_handle_msg( + rx_priv->sdiodev->rwnx_hw, + (struct ipc_e2a_msg *)(msg + + 4)); - if ((*(msg + 2) & 0x7f) == SDIO_TYPE_CFG_DATA_CFM) - aicwf_sdio_host_tx_cfm_handler(&(rx_priv->sdiodev->rwnx_hw->sdio_env), (u32 *)(msg + 4)); + if ((*(msg + 2) & 0x7f) == + SDIO_TYPE_CFG_DATA_CFM) + aicwf_sdio_host_tx_cfm_handler( + &(rx_priv->sdiodev->rwnx_hw + ->sdio_env), + (u32 *)(msg + 4)); if ((*(msg + 2) & 0x7f) == SDIO_TYPE_CFG_PRINT) - rwnx_rx_handle_print(rx_priv->sdiodev->rwnx_hw, msg + 4, aggr_len); + rwnx_rx_handle_print( + rx_priv->sdiodev->rwnx_hw, + msg + 4, aggr_len); buffer->read = buffer->read + (adjust_len + 4); kfree(msg); @@ -360,7 +403,7 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) atomic_dec(&rx_priv->rx_cnt); } - #else +#else while (1) { spin_lock_irqsave(&rx_priv->rxqlock, flags); @@ -378,15 +421,19 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) data = skb->data; pkt_len = (*skb->data | (*(skb->data + 1) << 8)); - if ((skb->data[2] & SDIO_TYPE_CFG) != SDIO_TYPE_CFG) { // type : data + if ((skb->data[2] & SDIO_TYPE_CFG) != + SDIO_TYPE_CFG) { // type : data aggr_len = pkt_len + RX_HWHRD_LEN; if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); + adjust_len = + roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL); + skb_inblock = __dev_alloc_skb( + aggr_len + CCMP_OR_WEP_INFO, + GFP_KERNEL); if (skb_inblock == NULL) { txrx_err("no more space! skip\n"); skb_pull(skb, adjust_len); @@ -395,18 +442,21 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) skb_put(skb_inblock, aggr_len); memcpy(skb_inblock->data, data, aggr_len); - rwnx_rxdataind_aicwf(rx_priv->sdiodev->rwnx_hw, skb_inblock, (void *)rx_priv); + rwnx_rxdataind_aicwf(rx_priv->sdiodev->rwnx_hw, + skb_inblock, + (void *)rx_priv); skb_pull(skb, adjust_len); } else { // type : config aggr_len = pkt_len; if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); + adjust_len = + roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - msg = kmalloc(aggr_len+4, GFP_KERNEL); + msg = kmalloc(aggr_len + 4, GFP_KERNEL); if (msg == NULL) { txrx_err("no more space for msg!\n"); aicwf_dev_skb_free(skb); @@ -414,16 +464,28 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) } memcpy(msg, data, aggr_len + 4); - if (((*(msg + 2) & 0x7f) == SDIO_TYPE_CFG_CMD_RSP) && (rx_priv->sdiodev->bus_if->state != BUS_DOWN_ST)) - rwnx_rx_handle_msg(rx_priv->sdiodev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); + if (((*(msg + 2) & 0x7f) == + SDIO_TYPE_CFG_CMD_RSP) && + (rx_priv->sdiodev->bus_if->state != + BUS_DOWN_ST)) + rwnx_rx_handle_msg( + rx_priv->sdiodev->rwnx_hw, + (struct ipc_e2a_msg *)(msg + + 4)); - if ((*(msg + 2) & 0x7f) == SDIO_TYPE_CFG_DATA_CFM) - aicwf_sdio_host_tx_cfm_handler(&(rx_priv->sdiodev->rwnx_hw->sdio_env), (u32 *)(msg + 4)); + if ((*(msg + 2) & 0x7f) == + SDIO_TYPE_CFG_DATA_CFM) + aicwf_sdio_host_tx_cfm_handler( + &(rx_priv->sdiodev->rwnx_hw + ->sdio_env), + (u32 *)(msg + 4)); if ((*(msg + 2) & 0x7f) == SDIO_TYPE_CFG_PRINT) - rwnx_rx_handle_print(rx_priv->sdiodev->rwnx_hw, msg + 4, aggr_len); + rwnx_rx_handle_print( + rx_priv->sdiodev->rwnx_hw, + msg + 4, aggr_len); - skb_pull(skb, adjust_len+4); + skb_pull(skb, adjust_len + 4); kfree(msg); } } @@ -431,11 +493,11 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) dev_kfree_skb(skb); atomic_dec(&rx_priv->rx_cnt); } - #endif +#endif - #if defined(CONFIG_SDIO_PWRCTRL) +#if defined(CONFIG_SDIO_PWRCTRL) aicwf_sdio_pwr_stctl(rx_priv->sdiodev, SDIO_ACTIVE_ST); - #endif +#endif return ret; #else //AICWF_USB_SUPPORT @@ -467,17 +529,20 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) if (pkt_len > 1600) { dev_kfree_skb(skb); atomic_dec(&rx_priv->rx_cnt); - continue; + continue; } - if ((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data + if ((skb->data[2] & USB_TYPE_CFG) != + USB_TYPE_CFG) { // type : data aggr_len = pkt_len + RX_HWHRD_LEN; if (aggr_len & (RX_ALIGNMENT - 1)) adjust_len = roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL);//8 is for ccmp mic or wep icv + skb_inblock = __dev_alloc_skb( + aggr_len + CCMP_OR_WEP_INFO, + GFP_KERNEL); //8 is for ccmp mic or wep icv if (skb_inblock == NULL) { txrx_err("no more space! skip!\n"); skb_pull(skb, adjust_len); @@ -486,7 +551,8 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) skb_put(skb_inblock, aggr_len); memcpy(skb_inblock->data, data, aggr_len); - rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb_inblock, (void *)rx_priv); + rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, + skb_inblock, (void *)rx_priv); ///TODO: here need to add rx data process skb_pull(skb, adjust_len); @@ -497,7 +563,7 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) else adjust_len = aggr_len; - msg = kmalloc(aggr_len+4, GFP_KERNEL); + msg = kmalloc(aggr_len + 4, GFP_KERNEL); if (msg == NULL) { txrx_err("no more space for msg!\n"); aicwf_dev_skb_free(skb); @@ -505,10 +571,14 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) } memcpy(msg, data, aggr_len + 4); if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) - rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); + rwnx_rx_handle_msg( + rx_priv->usbdev->rwnx_hw, + (struct ipc_e2a_msg *)(msg + 4)); if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) - aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); + aicwf_usb_host_tx_cfm_handler( + &(rx_priv->usbdev->rwnx_hw->usb_env), + (u32 *)(msg + 4)); skb_pull(skb, adjust_len + 4); kfree(msg); } @@ -521,12 +591,13 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) #endif //AICWF_SDIO_SUPPORT } -static struct recv_msdu *aicwf_rxframe_queue_init(struct list_head *q, int qsize) +static struct recv_msdu *aicwf_rxframe_queue_init(struct list_head *q, + int qsize) { int i; struct recv_msdu *req, *reqs; - reqs = vmalloc(qsize*sizeof(struct recv_msdu)); + reqs = vmalloc(qsize * sizeof(struct recv_msdu)); if (reqs == NULL) return NULL; @@ -553,22 +624,23 @@ struct aicwf_rx_priv *aicwf_rx_init(void *arg) rx_priv->usbdev = (struct aic_usb_dev *)arg; #endif - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB aicwf_rxframe_queue_init_2(&rx_priv->rxq, MAX_RXQLEN); - #else +#else aicwf_frame_queue_init(&rx_priv->rxq, 1, MAX_RXQLEN); - #endif +#endif spin_lock_init(&rx_priv->rxqlock); - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB spin_lock_init(&rx_priv->rxbuff_lock); aicwf_prealloc_init(); - #endif +#endif atomic_set(&rx_priv->rx_cnt, 0); #ifdef AICWF_RX_REORDER INIT_LIST_HEAD(&rx_priv->rxframes_freequeue); spin_lock_init(&rx_priv->freeq_lock); - rx_priv->recv_frames = aicwf_rxframe_queue_init(&rx_priv->rxframes_freequeue, MAX_REORD_RXFRAME); + rx_priv->recv_frames = aicwf_rxframe_queue_init( + &rx_priv->rxframes_freequeue, MAX_REORD_RXFRAME); if (!rx_priv->recv_frames) { txrx_err("no enough buffer for free recv frame queue!\n"); kfree(rx_priv); @@ -581,12 +653,11 @@ struct aicwf_rx_priv *aicwf_rx_init(void *arg) return rx_priv; } - static void aicwf_recvframe_queue_deinit(struct list_head *q) { struct recv_msdu *req, *next; - list_for_each_entry_safe(req, next, q, rxframe_list) { + list_for_each_entry_safe (req, next, q, rxframe_list) { list_del_init(&req->rxframe_list); } } @@ -598,12 +669,10 @@ void aicwf_rx_deinit(struct aicwf_rx_priv *rx_priv) AICWFDBG(LOGINFO, "%s\n", __func__); - spin_lock_bh(&rx_priv->stas_reord_lock); - list_for_each_entry_safe(reord_info, tmp, - &rx_priv->stas_reord_list, list) { + list_for_each_entry_safe (reord_info, tmp, &rx_priv->stas_reord_list, + list) { reord_deinit_sta(rx_priv, reord_info); } - spin_unlock_bh(&rx_priv->stas_reord_lock); #endif #ifdef AICWF_SDIO_SUPPORT @@ -614,14 +683,14 @@ void aicwf_rx_deinit(struct aicwf_rx_priv *rx_priv) rx_priv->sdiodev->bus_if->busrx_thread = NULL; } #ifdef CONFIG_OOB - if(rx_priv->sdiodev->oob_enable){ - //new oob feature - if (rx_priv->sdiodev->bus_if->busirq_thread) { - complete_all(&rx_priv->sdiodev->bus_if->busirq_trgg); - kthread_stop(rx_priv->sdiodev->bus_if->busirq_thread); - rx_priv->sdiodev->bus_if->busirq_thread = NULL; - } - } + if (rx_priv->sdiodev->oob_enable) { + //new oob feature + if (rx_priv->sdiodev->bus_if->busirq_thread) { + complete_all(&rx_priv->sdiodev->bus_if->busirq_trgg); + kthread_stop(rx_priv->sdiodev->bus_if->busirq_thread); + rx_priv->sdiodev->bus_if->busirq_thread = NULL; + } + } #endif //CONFIG_OOB #endif #ifdef AICWF_USB_SUPPORT @@ -632,11 +701,11 @@ void aicwf_rx_deinit(struct aicwf_rx_priv *rx_priv) } #endif - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB rxbuff_queue_flush(rx_priv); - #else +#else aicwf_frame_queue_flush(&rx_priv->rxq); - #endif +#endif #ifdef AICWF_RX_REORDER aicwf_recvframe_queue_deinit(&rx_priv->rxframes_freequeue); @@ -644,20 +713,20 @@ void aicwf_rx_deinit(struct aicwf_rx_priv *rx_priv) vfree(rx_priv->recv_frames); #endif - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB aicwf_prealloc_exit(); - #endif +#endif kfree(rx_priv); AICWFDBG(LOGINFO, "%s exit \n", __func__); } -bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, struct sk_buff *pkt) +bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt) { return aicwf_frame_enq(dev, q, pkt, 0); } - void aicwf_dev_skb_free(struct sk_buff *skb) { if (!skb) @@ -666,7 +735,8 @@ void aicwf_dev_skb_free(struct sk_buff *skb) dev_kfree_skb_any(skb); } -static struct sk_buff *aicwf_frame_queue_penq(struct frame_queue *pq, int prio, struct sk_buff *p) +static struct sk_buff *aicwf_frame_queue_penq(struct frame_queue *pq, int prio, + struct sk_buff *p) { struct sk_buff_head *q; @@ -690,7 +760,8 @@ void aicwf_frame_queue_flush(struct frame_queue *pq) for (prio = 0; prio < pq->num_prio; prio++) { q = &pq->queuelist[prio]; - skb_queue_walk_safe(q, p, next) { + skb_queue_walk_safe(q, p, next) + { skb_unlink(p, q); aicwf_dev_skb_free(p); pq->qcnt--; @@ -702,7 +773,9 @@ void aicwf_frame_queue_init(struct frame_queue *pq, int num_prio, int max_len) { int prio; - memset(pq, 0, offsetof(struct frame_queue, queuelist) + (sizeof(struct sk_buff_head) * num_prio)); + memset(pq, 0, + offsetof(struct frame_queue, queuelist) + + (sizeof(struct sk_buff_head) * num_prio)); pq->num_prio = (u16)num_prio; pq->qmax = (u16)max_len; @@ -711,7 +784,8 @@ void aicwf_frame_queue_init(struct frame_queue *pq, int num_prio, int max_len) } } -struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, int *prio_out) +struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, + int *prio_out) { int prio; @@ -750,7 +824,8 @@ struct sk_buff *aicwf_frame_dequeue(struct frame_queue *pq) if (pq->qcnt == 0) return NULL; - while ((prio = pq->hi_prio) > 0 && skb_queue_empty(&pq->queuelist[prio])) + while ((prio = pq->hi_prio) > 0 && + skb_queue_empty(&pq->queuelist[prio])) pq->hi_prio--; q = &pq->queuelist[prio]; @@ -776,9 +851,10 @@ static struct sk_buff *aicwf_skb_dequeue_tail(struct frame_queue *pq, int prio) } #endif -bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, struct sk_buff *pkt, int prio) +bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt, int prio) { - #if 0 +#if 0 struct sk_buff *p = NULL; int prio_modified = -1; @@ -807,79 +883,78 @@ bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, struct sk_buff * } return p != NULL; - #else +#else if (q->queuelist[prio].qlen < q->qmax && q->qcnt < q->qmax) { - aicwf_frame_queue_penq(q, prio, pkt); - return true; - } else + aicwf_frame_queue_penq(q, prio, pkt); + return true; + } else return false; - #endif +#endif } #ifdef CONFIG_PREALLOC_RX_SKB void rxbuff_free(struct rx_buff *rxbuff) { - kfree(rxbuff->data); - kfree(rxbuff); + kfree(rxbuff->data); + kfree(rxbuff); } struct rx_buff *rxbuff_queue_penq(struct rx_frame_queue *pq, struct rx_buff *p) { + struct list_head *q; + if (pq->qcnt >= pq->qmax) + return NULL; - struct list_head *q; - if (pq->qcnt >= pq->qmax) - return NULL; + q = &pq->queuelist; + list_add_tail(&p->queue, q); - q = &pq->queuelist; - list_add_tail(&p->queue,q); + pq->qcnt++; - pq->qcnt++; - - return p; + return p; } struct rx_buff *rxbuff_dequeue(struct rx_frame_queue *pq) { - struct rx_buff *p = NULL; + struct rx_buff *p = NULL; - if (pq->qcnt == 0) { - printk("%s %d, rxq is empty\n", __func__, __LINE__); - return NULL; - } + if (pq->qcnt == 0) { + printk("%s %d, rxq is empty\n", __func__, __LINE__); + return NULL; + } - if(list_empty(&pq->queuelist)) { - printk("%s %d, rxq is empty\n", __func__, __LINE__); - return NULL; - } else { - p = list_first_entry(&pq->queuelist, struct rx_buff, queue); - list_del_init(&p->queue); - pq->qcnt--; - } + if (list_empty(&pq->queuelist)) { + printk("%s %d, rxq is empty\n", __func__, __LINE__); + return NULL; + } else { + p = list_first_entry(&pq->queuelist, struct rx_buff, queue); + list_del_init(&p->queue); + pq->qcnt--; + } - return p; + return p; } -bool aicwf_rxbuff_enqueue(struct device *dev, struct rx_frame_queue *rxq, struct rx_buff *pkt) +bool aicwf_rxbuff_enqueue(struct device *dev, struct rx_frame_queue *rxq, + struct rx_buff *pkt) { -// struct rx_buff *p = NULL; + // struct rx_buff *p = NULL; - if ((rxq == NULL) || (pkt == NULL)) { - printk("%s %d, rxq or pkt is NULL\n", __func__, __LINE__); - return false; - } + if ((rxq == NULL) || (pkt == NULL)) { + printk("%s %d, rxq or pkt is NULL\n", __func__, __LINE__); + return false; + } - if (rxq->qcnt < rxq->qmax) { - if (rxbuff_queue_penq(rxq, pkt)) { - return true; - } else { - printk("%s %d, rxbuff enqueue fail\n", __func__, __LINE__); - return false; - } - } else { - printk("%s %d, rxq or pkt is full\n", __func__, __LINE__); - return false; - } + if (rxq->qcnt < rxq->qmax) { + if (rxbuff_queue_penq(rxq, pkt)) { + return true; + } else { + printk("%s %d, rxbuff enqueue fail\n", __func__, + __LINE__); + return false; + } + } else { + printk("%s %d, rxq or pkt is full\n", __func__, __LINE__); + return false; + } } #endif - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.h index 2a0644279..2ec52cf20 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_txrxif.h @@ -19,70 +19,70 @@ #include "aicwf_usb.h" #endif -#define CMD_BUF_MAX 1536 -#define TXPKT_BLOCKSIZE 512 -#define MAX_AGGR_TXPKT_LEN (1536*64) -#define CMD_TX_TIMEOUT 5000 -#define TX_ALIGNMENT 4 +#define CMD_BUF_MAX 1536 +#define TXPKT_BLOCKSIZE 512 +#define MAX_AGGR_TXPKT_LEN (1536 * 64) +#define CMD_TX_TIMEOUT 5000 +#define TX_ALIGNMENT 4 -#define RX_HWHRD_LEN 60 //58->60 word allined -#define CCMP_OR_WEP_INFO 8 -#define MAX_RXQLEN 2000 -#define RX_ALIGNMENT 4 +#define RX_HWHRD_LEN 60 //58->60 word allined +#define CCMP_OR_WEP_INFO 8 +#define MAX_RXQLEN 2000 +#define RX_ALIGNMENT 4 -#define DEBUG_ERROR_LEVEL 0 -#define DEBUG_DEBUG_LEVEL 1 -#define DEBUG_INFO_LEVEL 2 +#define DEBUG_ERROR_LEVEL 0 +#define DEBUG_DEBUG_LEVEL 1 +#define DEBUG_INFO_LEVEL 2 -#define DBG_LEVEL DEBUG_DEBUG_LEVEL +#define DBG_LEVEL DEBUG_DEBUG_LEVEL -#define txrx_err(fmt, ...) pr_err("txrx_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) -#define sdio_err(fmt, ...) pr_err("sdio_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) -#define usb_err(fmt, ...) pr_err("usb_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) +#define txrx_err(fmt, ...) \ + pr_err("txrx_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) +#define sdio_err(fmt, ...) \ + pr_err("sdio_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) +#define usb_err(fmt, ...) \ + pr_err("usb_err:<%s,%d>: " fmt, __func__, __LINE__, ##__VA_ARGS__) #if DBG_LEVEL >= DEBUG_DEBUG_LEVEL -#define txrx_dbg(fmt, ...) printk("txrx: " fmt, ##__VA_ARGS__) -#define sdio_dbg(fmt, ...) printk("aicsdio: " fmt, ##__VA_ARGS__) -#define usb_dbg(fmt, ...) printk("aicusb: " fmt, ##__VA_ARGS__) +#define txrx_dbg(fmt, ...) printk("txrx: " fmt, ##__VA_ARGS__) +#define sdio_dbg(fmt, ...) printk("aicsdio: " fmt, ##__VA_ARGS__) +#define usb_dbg(fmt, ...) printk("aicusb: " fmt, ##__VA_ARGS__) #else #define txrx_dbg(fmt, ...) #define sdio_dbg(fmt, ...) #define usb_dbg(fmt, ...) #endif #if DBG_LEVEL >= DEBUG_INFO_LEVEL -#define txrx_info(fmt, ...) printk("aicsdio: " fmt, ##__VA_ARGS__) -#define sdio_info(fmt, ...) printk("aicsdio: " fmt, ##__VA_ARGS__) -#define usb_info(fmt, ...) printk("aicusb: " fmt, ##__VA_ARGS__) +#define txrx_info(fmt, ...) printk("aicsdio: " fmt, ##__VA_ARGS__) +#define sdio_info(fmt, ...) printk("aicsdio: " fmt, ##__VA_ARGS__) +#define usb_info(fmt, ...) printk("aicusb: " fmt, ##__VA_ARGS__) #else #define txrx_info(fmt, ...) #define sdio_info(fmt, ...) #define usb_info(fmt, ...) #endif -enum aicwf_bus_state { - BUS_DOWN_ST, - BUS_UP_ST -}; +enum aicwf_bus_state { BUS_DOWN_ST, BUS_UP_ST }; struct aicwf_bus_ops { - int (*start) (struct device *dev); - void (*stop) (struct device *dev); - int (*txdata) (struct device *dev, struct sk_buff *skb); - int (*txmsg) (struct device *dev, u8 *msg, uint len); + int (*start)(struct device *dev); + void (*stop)(struct device *dev); + int (*txdata)(struct device *dev, struct sk_buff *skb); + int (*txmsg)(struct device *dev, u8 *msg, uint len); }; struct frame_queue { - u16 num_prio; - u16 hi_prio; - u16 qmax; /* max number of queued frames */ - u16 qcnt; + u16 num_prio; + u16 hi_prio; + u16 qmax; /* max number of queued frames */ + u16 qcnt; struct sk_buff_head queuelist[8]; }; #ifdef CONFIG_PREALLOC_RX_SKB struct rx_frame_queue { - u16 qmax; /* max number of queued frames */ - u16 qcnt; - struct list_head queuelist; + u16 qmax; /* max number of queued frames */ + u16 qcnt; + struct list_head queuelist; }; #endif @@ -97,12 +97,26 @@ struct aicwf_bus { u8 *cmd_buf; struct completion bustx_trgg; struct completion busrx_trgg; - struct completion busirq_trgg;//new oob feature + struct completion busirq_trgg; //new oob feature struct task_struct *bustx_thread; struct task_struct *busrx_thread; - struct task_struct *busirq_thread;//new oob feature + struct task_struct *busirq_thread; //new oob feature }; +#ifdef CONFIG_SDIO_ADMA +#define SDIO_HEADER_LEN 4 +#define SDIO_DATA_FAKE_LEN 2 +#define SDIO_MGMT_FAKE_LEN 4 +#define ALIGN4_ADJ_LEN(x) ((4 - (x & 3)) & 3) + +#define SDIO_TX_SLIST_MAX 136 + +/*struct tx_scatterlist { + const void *buf; + unsigned int len; +};*/ +#endif + struct aicwf_tx_priv { #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *sdiodev; @@ -128,16 +142,23 @@ struct aicwf_tx_priv { atomic_t aggr_count; u8 *head; u8 *tail; + +#ifdef CONFIG_SDIO_ADMA + struct tx_scatterlist sg_list[SDIO_TX_SLIST_MAX]; + void *free_buf[SDIO_TX_SLIST_MAX]; + bool copyd[SDIO_TX_SLIST_MAX]; + u32 aggr_segcnt; + u32 len; +#endif }; - -#define DEFRAG_MAX_WAIT 40 //100 +#define DEFRAG_MAX_WAIT 40 //100 #ifdef AICWF_RX_REORDER -#define MAX_REORD_RXFRAME 250 -#define REORDER_UPDATE_TIME 50 -#define AICWF_REORDER_WINSIZE 64 -#define SN_LESS(a, b) (((a-b)&0x800) != 0) -#define SN_EQUAL(a, b) (a == b) +#define MAX_REORD_RXFRAME 250 +#define REORDER_UPDATE_TIME 50 +#define AICWF_REORDER_WINSIZE 64 +#define SN_LESS(a, b) (((a - b) & 0x800) != 0) +#define SN_EQUAL(a, b) (a == b) struct reord_ctrl { struct aicwf_rx_priv *rx_priv; @@ -157,14 +178,14 @@ struct reord_ctrl_info { }; struct recv_msdu { - struct sk_buff *pkt; - u8 tid; - u16 seq_num; - u8 forward; - //uint len; - u32 is_amsdu; - u8 *rx_data; - //for pending rx reorder list + struct sk_buff *pkt; + u8 tid; + u16 seq_num; + u8 forward; + //uint len; + u32 is_amsdu; + u8 *rx_data; + //for pending rx reorder list struct list_head reord_pending_list; //for total frame list, when rxframe from busif, dequeue, when submit frame to net, enqueue struct list_head rxframe_list; @@ -184,11 +205,11 @@ struct aicwf_rx_priv { atomic_t rx_cnt; u32 data_len; spinlock_t rxqlock; - #ifdef CONFIG_PREALLOC_RX_SKB +#ifdef CONFIG_PREALLOC_RX_SKB struct rx_frame_queue rxq; - #else +#else struct frame_queue rxq; - #endif +#endif #ifdef AICWF_RX_REORDER spinlock_t freeq_lock; @@ -243,19 +264,23 @@ struct aicwf_tx_priv *aicwf_tx_init(void *arg); struct aicwf_rx_priv *aicwf_rx_init(void *arg); void aicwf_frame_queue_init(struct frame_queue *pq, int num_prio, int max_len); void aicwf_frame_queue_flush(struct frame_queue *pq); -bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, struct sk_buff *pkt, int prio); -bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, struct sk_buff *pkt); +bool aicwf_frame_enq(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt, int prio); +bool aicwf_rxframe_enqueue(struct device *dev, struct frame_queue *q, + struct sk_buff *pkt); bool aicwf_is_framequeue_empty(struct frame_queue *pq); void aicwf_frame_tx(void *dev, struct sk_buff *skb); void aicwf_dev_skb_free(struct sk_buff *skb); struct sk_buff *aicwf_frame_dequeue(struct frame_queue *pq); -struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, int *prio_out); +struct sk_buff *aicwf_frame_queue_peek_tail(struct frame_queue *pq, + int *prio_out); #ifdef CONFIG_PREALLOC_RX_SKB -void rxbuff_queue_flush(struct aicwf_rx_priv* rx_priv); +void rxbuff_queue_flush(struct aicwf_rx_priv *rx_priv); void aicwf_rxframe_queue_init_2(struct rx_frame_queue *pq, int max_len); void rxbuff_free(struct rx_buff *rxbuff); struct rx_buff *rxbuff_dequeue(struct rx_frame_queue *pq); -bool aicwf_rxbuff_enqueue(struct device *dev, struct rx_frame_queue *rxq, struct rx_buff *pkt); +bool aicwf_rxbuff_enqueue(struct device *dev, struct rx_frame_queue *rxq, + struct rx_buff *pkt); extern struct aicwf_rx_buff_list aic_rx_buff_list; #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.c index 9344217c2..224ff36dc 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.c @@ -18,7 +18,7 @@ void aicwf_usb_tx_flowctrl(struct rwnx_hw *rwnx_hw, bool state) { struct rwnx_vif *rwnx_vif; - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { if (!rwnx_vif->up) continue; if (!rwnx_vif->ndev) @@ -31,7 +31,9 @@ void aicwf_usb_tx_flowctrl(struct rwnx_hw *rwnx_hw, bool state) } static struct aicwf_usb_buf *aicwf_usb_tx_dequeue(struct aic_usb_dev *usb_dev, - struct list_head *q, int *counter, spinlock_t *qlock) + struct list_head *q, + int *counter, + spinlock_t *qlock) { unsigned long flags; struct aicwf_usb_buf *usb_buf; @@ -49,9 +51,9 @@ static struct aicwf_usb_buf *aicwf_usb_tx_dequeue(struct aic_usb_dev *usb_dev, return usb_buf; } -static void aicwf_usb_tx_queue(struct aic_usb_dev *usb_dev, - struct list_head *q, struct aicwf_usb_buf *usb_buf, int *counter, - spinlock_t *qlock) +static void aicwf_usb_tx_queue(struct aic_usb_dev *usb_dev, struct list_head *q, + struct aicwf_usb_buf *usb_buf, int *counter, + spinlock_t *qlock) { unsigned long flags; @@ -70,14 +72,16 @@ static struct aicwf_usb_buf *aicwf_usb_rx_buf_get(struct aic_usb_dev *usb_dev) if (list_empty(&usb_dev->rx_free_list)) { usb_buf = NULL; } else { - usb_buf = list_first_entry(&usb_dev->rx_free_list, struct aicwf_usb_buf, list); + usb_buf = list_first_entry(&usb_dev->rx_free_list, + struct aicwf_usb_buf, list); list_del_init(&usb_buf->list); } spin_unlock_irqrestore(&usb_dev->rx_free_lock, flags); return usb_buf; } -static void aicwf_usb_rx_buf_put(struct aic_usb_dev *usb_dev, struct aicwf_usb_buf *usb_buf) +static void aicwf_usb_rx_buf_put(struct aic_usb_dev *usb_dev, + struct aicwf_usb_buf *usb_buf) { unsigned long flags; @@ -89,7 +93,7 @@ static void aicwf_usb_rx_buf_put(struct aic_usb_dev *usb_dev, struct aicwf_usb_b static void aicwf_usb_tx_complete(struct urb *urb) { unsigned long flags; - struct aicwf_usb_buf *usb_buf = (struct aicwf_usb_buf *) urb->context; + struct aicwf_usb_buf *usb_buf = (struct aicwf_usb_buf *)urb->context; struct aic_usb_dev *usb_dev = usb_buf->usbdev; struct sk_buff *skb; u8 *buf; @@ -108,7 +112,7 @@ static void aicwf_usb_tx_complete(struct urb *urb) usb_buf->skb = NULL; aicwf_usb_tx_queue(usb_dev, &usb_dev->tx_free_list, usb_buf, - &usb_dev->tx_free_count, &usb_dev->tx_free_lock); + &usb_dev->tx_free_count, &usb_dev->tx_free_lock); spin_lock_irqsave(&usb_dev->tx_flow_lock, flags); if (usb_dev->tx_free_count > AICWF_USB_TX_HIGH_WATER) { @@ -118,11 +122,11 @@ static void aicwf_usb_tx_complete(struct urb *urb) } } spin_unlock_irqrestore(&usb_dev->tx_flow_lock, flags); - } +} static void aicwf_usb_rx_complete(struct urb *urb) { - struct aicwf_usb_buf *usb_buf = (struct aicwf_usb_buf *) urb->context; + struct aicwf_usb_buf *usb_buf = (struct aicwf_usb_buf *)urb->context; struct aic_usb_dev *usb_dev = usb_buf->usbdev; struct aicwf_rx_priv *rx_priv = usb_dev->rx_priv; struct sk_buff *skb = NULL; @@ -169,7 +173,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) } static int aicwf_usb_submit_rx_urb(struct aic_usb_dev *usb_dev, - struct aicwf_usb_buf *usb_buf) + struct aicwf_usb_buf *usb_buf) { struct sk_buff *skb; int ret; @@ -191,10 +195,9 @@ static int aicwf_usb_submit_rx_urb(struct aic_usb_dev *usb_dev, usb_buf->skb = skb; - usb_fill_bulk_urb(usb_buf->urb, - usb_dev->udev, - usb_dev->bulk_in_pipe, - skb->data, skb_tailroom(skb), aicwf_usb_rx_complete, usb_buf); + usb_fill_bulk_urb(usb_buf->urb, usb_dev->udev, usb_dev->bulk_in_pipe, + skb->data, skb_tailroom(skb), aicwf_usb_rx_complete, + usb_buf); usb_buf->usbdev = usb_dev; @@ -241,13 +244,15 @@ static void aicwf_usb_tx_prepare(struct aic_usb_dev *usb_dev) while (!list_empty(&usb_dev->tx_post_list)) { usb_buf = aicwf_usb_tx_dequeue(usb_dev, &usb_dev->tx_post_list, - &usb_dev->tx_post_count, &usb_dev->tx_post_lock); + &usb_dev->tx_post_count, + &usb_dev->tx_post_lock); if (usb_buf->skb) { dev_kfree_skb(usb_buf->skb); usb_buf->skb = NULL; } aicwf_usb_tx_queue(usb_dev, &usb_dev->tx_free_list, usb_buf, - &usb_dev->tx_free_count, &usb_dev->tx_free_lock); + &usb_dev->tx_free_count, + &usb_dev->tx_free_lock); } } static void aicwf_usb_tx_process(struct aic_usb_dev *usb_dev) @@ -263,7 +268,8 @@ static void aicwf_usb_tx_process(struct aic_usb_dev *usb_dev) } usb_buf = aicwf_usb_tx_dequeue(usb_dev, &usb_dev->tx_post_list, - &usb_dev->tx_post_count, &usb_dev->tx_post_lock); + &usb_dev->tx_post_count, + &usb_dev->tx_post_lock); if (!usb_buf) { usb_err("can not get usb_buf from tx_post_list!\n"); return; @@ -277,11 +283,12 @@ static void aicwf_usb_tx_process(struct aic_usb_dev *usb_dev) } continue; -fail: + fail: dev_kfree_skb(usb_buf->skb); usb_buf->skb = NULL; aicwf_usb_tx_queue(usb_dev, &usb_dev->tx_free_list, usb_buf, - &usb_dev->tx_free_count, &usb_dev->tx_free_lock); + &usb_dev->tx_free_count, + &usb_dev->tx_free_lock); } } @@ -328,7 +335,7 @@ int usb_busrx_thread(void *data) static void aicwf_usb_send_msg_complete(struct urb *urb) { - struct aic_usb_dev *usb_dev = (struct aic_usb_dev *) urb->context; + struct aic_usb_dev *usb_dev = (struct aic_usb_dev *)urb->context; usb_dev->msg_finished = true; if (waitqueue_active(&usb_dev->msg_wait)) @@ -354,10 +361,9 @@ static int aicwf_usb_bus_txmsg(struct device *dev, u8 *buf, u32 len) usb_dev->msg_finished = false; - usb_fill_bulk_urb(usb_dev->msg_out_urb, - usb_dev->udev, - usb_dev->bulk_out_pipe, - buf, len, (usb_complete_t) aicwf_usb_send_msg_complete, usb_dev); + usb_fill_bulk_urb(usb_dev->msg_out_urb, usb_dev->udev, + usb_dev->bulk_out_pipe, buf, len, + (usb_complete_t)aicwf_usb_send_msg_complete, usb_dev); usb_dev->msg_out_urb->transfer_flags |= URB_ZERO_PACKET; ret = usb_submit_urb(usb_dev->msg_out_urb, GFP_ATOMIC); @@ -366,8 +372,8 @@ static int aicwf_usb_bus_txmsg(struct device *dev, u8 *buf, u32 len) goto exit; } - ret = wait_event_timeout(usb_dev->msg_wait, - usb_dev->msg_finished, msecs_to_jiffies(CMD_TX_TIMEOUT)); + ret = wait_event_timeout(usb_dev->msg_wait, usb_dev->msg_finished, + msecs_to_jiffies(CMD_TX_TIMEOUT)); if (!ret) { if (usb_dev->msg_out_urb) usb_kill_urb(usb_dev->msg_out_urb); @@ -386,15 +392,14 @@ exit: return ret; } - static void aicwf_usb_free_urb(struct list_head *q, spinlock_t *qlock) { struct aicwf_usb_buf *usb_buf, *tmp; unsigned long flags; spin_lock_irqsave(qlock, flags); - list_for_each_entry_safe(usb_buf, tmp, q, list) { - spin_unlock_irqrestore(qlock, flags); + list_for_each_entry_safe (usb_buf, tmp, q, list) { + spin_unlock_irqrestore(qlock, flags); if (!usb_buf->urb) { usb_err("bad usb_buf\n"); spin_lock_irqsave(qlock, flags); @@ -452,7 +457,6 @@ err: return -ENOMEM; } - static void aicwf_usb_state_change(struct aic_usb_dev *usb_dev, int state) { int old_state; @@ -484,7 +488,7 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) struct rwnx_txhdr *txhdr = (struct rwnx_txhdr *)skb->data; struct rwnx_hw *rwnx_hw = usb_dev->rwnx_hw; u8 usb_header[4]; - u8 adj_buf[4] = {0}; + u8 adj_buf[4] = { 0 }; u16 index = 0; bool need_cfm = false; @@ -496,9 +500,11 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) } usb_buf = aicwf_usb_tx_dequeue(usb_dev, &usb_dev->tx_free_list, - &usb_dev->tx_free_count, &usb_dev->tx_free_lock); + &usb_dev->tx_free_count, + &usb_dev->tx_free_lock); if (!usb_buf) { - usb_err("free:%d, post:%d\n", usb_dev->tx_free_count, usb_dev->tx_post_count); + usb_err("free:%d, post:%d\n", usb_dev->tx_free_count, + usb_dev->tx_post_count); kmem_cache_free(rwnx_hw->sw_txhdr_cache, txhdr->sw_hdr); dev_kfree_skb_any(skb); ret = -ENOMEM; @@ -509,18 +515,20 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) need_cfm = true; buf = kmalloc(skb->len, GFP_KERNEL); index += sizeof(usb_header); - memcpy(&buf[index], (u8 *)(long)&txhdr->sw_hdr->desc, sizeof(struct txdesc_api)); + memcpy(&buf[index], (u8 *)(long)&txhdr->sw_hdr->desc, + sizeof(struct txdesc_api)); index += sizeof(struct txdesc_api); - memcpy(&buf[index], &skb->data[txhdr->sw_hdr->headroom], skb->len - txhdr->sw_hdr->headroom); + memcpy(&buf[index], &skb->data[txhdr->sw_hdr->headroom], + skb->len - txhdr->sw_hdr->headroom); index += skb->len - txhdr->sw_hdr->headroom; buf_len = index; if (buf_len & (TX_ALIGNMENT - 1)) { - adjust_len = roundup(buf_len, TX_ALIGNMENT)-buf_len; + adjust_len = roundup(buf_len, TX_ALIGNMENT) - buf_len; memcpy(&buf[buf_len], adj_buf, adjust_len); buf_len += adjust_len; } - usb_header[0] = ((buf_len) & 0xff); - usb_header[1] = (((buf_len) >> 8)&0x0f); + usb_header[0] = ((buf_len)&0xff); + usb_header[1] = (((buf_len) >> 8) & 0x0f); usb_header[2] = 0x01; //data usb_header[3] = 0; //reserved memcpy(&buf[0], usb_header, sizeof(usb_header)); @@ -528,12 +536,13 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) } else { skb_pull(skb, txhdr->sw_hdr->headroom); skb_push(skb, sizeof(struct txdesc_api)); - memcpy(&skb->data[0], (u8 *)(long)&txhdr->sw_hdr->desc, sizeof(struct txdesc_api)); + memcpy(&skb->data[0], (u8 *)(long)&txhdr->sw_hdr->desc, + sizeof(struct txdesc_api)); kmem_cache_free(rwnx_hw->sw_txhdr_cache, txhdr->sw_hdr); skb_push(skb, sizeof(usb_header)); usb_header[0] = ((skb->len) & 0xff); - usb_header[1] = (((skb->len) >> 8)&0x0f); + usb_header[1] = (((skb->len) >> 8) & 0x0f); usb_header[2] = 0x01; //data usb_header[3] = 0; //reserved memcpy(&skb->data[0], usb_header, sizeof(usb_header)); @@ -549,15 +558,15 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) else usb_buf->cfm = false; usb_fill_bulk_urb(usb_buf->urb, usb_dev->udev, usb_dev->bulk_out_pipe, - buf, buf_len, aicwf_usb_tx_complete, usb_buf); + buf, buf_len, aicwf_usb_tx_complete, usb_buf); usb_buf->urb->transfer_flags |= URB_ZERO_PACKET; aicwf_usb_tx_queue(usb_dev, &usb_dev->tx_post_list, usb_buf, - &usb_dev->tx_post_count, &usb_dev->tx_post_lock); + &usb_dev->tx_post_count, &usb_dev->tx_post_lock); complete(&bus_if->bustx_trgg); ret = 0; - flow_ctrl: +flow_ctrl: spin_lock_irqsave(&usb_dev->tx_flow_lock, flags); if (usb_dev->tx_free_count < AICWF_USB_TX_LOW_WATER) { usb_dev->tbusy = true; @@ -591,7 +600,7 @@ static void aicwf_usb_cancel_all_urbs(struct aic_usb_dev *usb_dev) usb_kill_urb(usb_dev->msg_out_urb); spin_lock_irqsave(&usb_dev->tx_post_lock, flags); - list_for_each_entry_safe(usb_buf, tmp, &usb_dev->tx_post_list, list) { + list_for_each_entry_safe (usb_buf, tmp, &usb_dev->tx_post_list, list) { spin_unlock_irqrestore(&usb_dev->tx_post_lock, flags); if (!usb_buf->urb) { usb_err("bad usb_buf\n"); @@ -632,7 +641,8 @@ static void aicwf_usb_deinit(struct aic_usb_dev *usbdev) static void aicwf_usb_rx_urb_work(struct work_struct *work) { - struct aic_usb_dev *usb_dev = container_of(work, struct aic_usb_dev, rx_urb_work); + struct aic_usb_dev *usb_dev = + container_of(work, struct aic_usb_dev, rx_urb_work); aicwf_usb_rx_submit_all_urb(usb_dev); } @@ -659,16 +669,15 @@ static int aicwf_usb_init(struct aic_usb_dev *usb_dev) usb_dev->tx_free_count = 0; usb_dev->tx_post_count = 0; - ret = aicwf_usb_alloc_rx_urb(usb_dev); + ret = aicwf_usb_alloc_rx_urb(usb_dev); if (ret) { goto error; } - ret = aicwf_usb_alloc_tx_urb(usb_dev); + ret = aicwf_usb_alloc_tx_urb(usb_dev); if (ret) { goto error; } - usb_dev->msg_out_urb = usb_alloc_urb(0, GFP_ATOMIC); if (!usb_dev->msg_out_urb) { usb_err("usb_alloc_urb (msg out) failed\n"); @@ -679,14 +688,14 @@ static int aicwf_usb_init(struct aic_usb_dev *usb_dev) INIT_WORK(&usb_dev->rx_urb_work, aicwf_usb_rx_urb_work); return ret; - error: +error: usb_err("failed!\n"); aicwf_usb_deinit(usb_dev); return ret; } - -static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *interface) +static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, + struct usb_interface *interface) { struct usb_interface_descriptor *interface_desc; struct usb_host_interface *host_interface; @@ -706,7 +715,7 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in /* Check device configuration */ if (usb->descriptor.bNumConfigurations != 1) { usb_err("Number of configurations: %d not supported\n", - usb->descriptor.bNumConfigurations); + usb->descriptor.bNumConfigurations); ret = -ENODEV; goto exit; } @@ -715,7 +724,7 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in #ifndef CONFIG_USB_BT if (usb->descriptor.bDeviceClass != 0x00) { usb_err("DeviceClass %d not supported\n", - usb->descriptor.bDeviceClass); + usb->descriptor.bDeviceClass); ret = -ENODEV; goto exit; } @@ -727,18 +736,20 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in #else if (usb->actconfig->desc.bNumInterfaces != 1) { #endif - usb_err("Number of interfaces: %d not supported\n", - usb->actconfig->desc.bNumInterfaces); - ret = -ENODEV; - goto exit; + usb_err("Number of interfaces: %d not supported\n", + usb->actconfig->desc.bNumInterfaces); + ret = -ENODEV; + goto exit; } if ((interface_desc->bInterfaceClass != USB_CLASS_VENDOR_SPEC) || - (interface_desc->bInterfaceSubClass != 0xff) || - (interface_desc->bInterfaceProtocol != 0xff)) { + (interface_desc->bInterfaceSubClass != 0xff) || + (interface_desc->bInterfaceProtocol != 0xff)) { usb_err("non WLAN interface %d: 0x%x:0x%x:0x%x\n", - interface_desc->bInterfaceNumber, interface_desc->bInterfaceClass, - interface_desc->bInterfaceSubClass, interface_desc->bInterfaceProtocol); + interface_desc->bInterfaceNumber, + interface_desc->bInterfaceClass, + interface_desc->bInterfaceSubClass, + interface_desc->bInterfaceProtocol); ret = -ENODEV; goto exit; } @@ -748,16 +759,18 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in endpoint_num = usb_endpoint_num(endpoint); if (usb_endpoint_dir_in(endpoint) && - usb_endpoint_xfer_bulk(endpoint)) { + usb_endpoint_xfer_bulk(endpoint)) { if (!usb_dev->bulk_in_pipe) { - usb_dev->bulk_in_pipe = usb_rcvbulkpipe(usb, endpoint_num); + usb_dev->bulk_in_pipe = + usb_rcvbulkpipe(usb, endpoint_num); } } if (usb_endpoint_dir_out(endpoint) && - usb_endpoint_xfer_bulk(endpoint)) { + usb_endpoint_xfer_bulk(endpoint)) { if (!usb_dev->bulk_out_pipe) { - usb_dev->bulk_out_pipe = usb_sndbulkpipe(usb, endpoint_num); + usb_dev->bulk_out_pipe = + usb_sndbulkpipe(usb, endpoint_num); } } } @@ -778,12 +791,10 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in else printk("Aic full speed USB device detected\n"); - exit: +exit: return ret; } - - static struct aicwf_bus_ops aicwf_usb_bus_ops = { .start = aicwf_usb_bus_start, .stop = aicwf_usb_bus_stop, @@ -791,11 +802,12 @@ static struct aicwf_bus_ops aicwf_usb_bus_ops = { .txmsg = aicwf_usb_bus_txmsg, }; -static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) +static int aicwf_usb_probe(struct usb_interface *intf, + const struct usb_device_id *id) { int ret = 0; struct usb_device *usb = interface_to_usbdev(intf); - struct aicwf_bus *bus_if ; + struct aicwf_bus *bus_if; struct device *dev = NULL; struct aicwf_rx_priv *rx_priv = NULL; struct aic_usb_dev *usb_dev = NULL; @@ -874,7 +886,7 @@ out_free: static void aicwf_usb_disconnect(struct usb_interface *intf) { struct aic_usb_dev *usb_dev = - (struct aic_usb_dev *) usb_get_intfdata(intf); + (struct aic_usb_dev *)usb_get_intfdata(intf); if (!usb_dev) return; @@ -892,7 +904,7 @@ static void aicwf_usb_disconnect(struct usb_interface *intf) static int aicwf_usb_suspend(struct usb_interface *intf, pm_message_t state) { struct aic_usb_dev *usb_dev = - (struct aic_usb_dev *) usb_get_intfdata(intf); + (struct aic_usb_dev *)usb_get_intfdata(intf); aicwf_usb_state_change(usb_dev, USB_SLEEP_ST); aicwf_bus_stop(usb_dev->bus_if); @@ -902,7 +914,7 @@ static int aicwf_usb_suspend(struct usb_interface *intf, pm_message_t state) static int aicwf_usb_resume(struct usb_interface *intf) { struct aic_usb_dev *usb_dev = - (struct aic_usb_dev *) usb_get_intfdata(intf); + (struct aic_usb_dev *)usb_get_intfdata(intf); if (usb_dev->state == USB_UP_ST) return 0; @@ -918,9 +930,10 @@ static int aicwf_usb_reset_resume(struct usb_interface *intf) static struct usb_device_id aicwf_usb_id_table[] = { #ifndef CONFIG_USB_BT - {USB_DEVICE(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC)}, + { USB_DEVICE(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC) }, #else - {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC, 0xff, 0xff, 0xff)}, + { USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC, + 0xff, 0xff, 0xff) }, #endif {} }; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.h index cc3619b2d..b5715d5fe 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/aicwf_usb.h @@ -15,32 +15,28 @@ #ifdef AICWF_USB_SUPPORT /* USB Device ID */ -#define USB_VENDOR_ID_AIC 0xA69C +#define USB_VENDOR_ID_AIC 0xA69C #ifndef CONFIG_USB_BT -#define USB_PRODUCT_ID_AIC 0x8800 +#define USB_PRODUCT_ID_AIC 0x8800 #else -#define USB_PRODUCT_ID_AIC 0x8801 +#define USB_PRODUCT_ID_AIC 0x8801 #endif -#define AICWF_USB_RX_URBS (200) -#define AICWF_USB_TX_URBS (100) -#define AICWF_USB_TX_LOW_WATER (AICWF_USB_TX_URBS/4) -#define AICWF_USB_TX_HIGH_WATER (AICWF_USB_TX_LOW_WATER*3) -#define AICWF_USB_MAX_PKT_SIZE (2048) +#define AICWF_USB_RX_URBS (200) +#define AICWF_USB_TX_URBS (100) +#define AICWF_USB_TX_LOW_WATER (AICWF_USB_TX_URBS / 4) +#define AICWF_USB_TX_HIGH_WATER (AICWF_USB_TX_LOW_WATER * 3) +#define AICWF_USB_MAX_PKT_SIZE (2048) typedef enum { - USB_TYPE_DATA = 0X00, - USB_TYPE_CFG = 0X10, - USB_TYPE_CFG_CMD_RSP = 0X11, + USB_TYPE_DATA = 0X00, + USB_TYPE_CFG = 0X10, + USB_TYPE_CFG_CMD_RSP = 0X11, USB_TYPE_CFG_DATA_CFM = 0X12 } usb_type; -enum aicwf_usb_state { - USB_DOWN_ST, - USB_UP_ST, - USB_SLEEP_ST -}; +enum aicwf_usb_state { USB_DOWN_ST, USB_UP_ST, USB_SLEEP_ST }; struct aicwf_usb_buf { struct list_head list; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/btsdio.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/btsdio.c new file mode 100755 index 000000000..96ad0b26f --- /dev/null +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/btsdio.c @@ -0,0 +1,285 @@ +/* + * + * Generic Bluetooth SDIO driver + * + * Copyright (C) 2007 Cambridge Silicon Radio Ltd. + * Copyright (C) 2007 Marcel Holtmann + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "aic_btsdio.h" +#include "rwnx_msg_tx.h" + +#include + +#define VERSION "0.1" +#if CONFIG_BLUEDROID == 0 +struct btsdio_data { + struct hci_dev *hdev; + + struct work_struct work; + + struct sk_buff_head txq; +}; +struct hci_dev *ghdev = NULL; + +void bt_data_dump(char *tag, void *data, unsigned long len) +{ + unsigned long i = 0; + uint8_t *data_ = (uint8_t *)data; + + printk("%s %s len:(%lu)\r\n", __func__, tag, len); + + for (i = 0; i < len; i += 16) { + printk("%02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\r\n", + data_[0 + i], data_[1 + i], data_[2 + i], data_[3 + i], + data_[4 + i], data_[5 + i], data_[6 + i], data_[7 + i], + data_[8 + i], data_[9 + i], data_[10 + i], data_[11 + i], + data_[12 + i], data_[13 + i], data_[14 + i], + data_[15 + i]); + } +} + +static int btsdio_tx_packet(struct btsdio_data *data, struct sk_buff *skb) +{ + int err; + + AICBT_INFO("%s", data->hdev->name); + + /* Prepend Type-A header */ + skb_push(skb, 1); + skb->data[0] = hci_skb_pkt_type(skb); + + //bt_data_dump("btwrite", skb->data, skb->len); + err = rwnx_sdio_bt_send_req(g_rwnx_plat->sdiodev->rwnx_hw, skb->len, + skb); + if (err < 0) { + printk("%s rwnx_sdio_bt_send_req error %d", __func__, err); + return err; + } + + data->hdev->stat.byte_tx += skb->len; + + kfree_skb(skb); + + return 0; +} + +static void btsdio_work(struct work_struct *work) +{ + struct btsdio_data *data = container_of(work, struct btsdio_data, work); + struct sk_buff *skb; + int err; + + AICBT_INFO("%s,%s", data->hdev->name, __func__); + + while ((skb = skb_dequeue(&data->txq))) { + err = btsdio_tx_packet(data, skb); + if (err < 0) { + data->hdev->stat.err_tx++; + skb_queue_head(&data->txq, skb); + break; + } + } +} + +/* Get HCI device by index. + * Device is held on return. */ +struct hci_dev *hci_dev_get(int index) +{ + if (index != 0) + return NULL; + + return ghdev; +} + +int bt_sdio_recv(u8 *data, u32 data_len) +{ + struct sk_buff *skb; + int type = data[0]; + struct hci_dev *hdev; + u32 len = data_len; + int ret = 0; + hdev = hci_dev_get(0); + if (!hdev) { + AICWFDBG(LOGERROR, "%s: Failed to get hci dev[NULL]", __func__); + return -ENODEV; + } + + skb = alloc_skb(len - 1, GFP_ATOMIC); + if (!skb) { + AICWFDBG(LOGERROR, "alloc skb fail %s \n", __func__); + } + memcpy(skb_put(skb, len - 1), (data + 1), len - 1); + hdev->stat.byte_rx += len; + hci_skb_pkt_type(skb) = type; + //if(bt_bypass_event(skb)){ + //kfree_skb(skb); + ///return 0; + //} + AICBT_INFO("skb type %d", type); + //bt_data_dump("bt_skb", skb, skb->len); + ret = hci_recv_frame(hdev, skb); + if (ret < 0) { + AICWFDBG(LOGERROR, "hci_recv_frame fail %d\n", ret); + hdev->stat.err_rx++; + kfree_skb(skb); + } + return 0; +} + +static int btsdio_open(struct hci_dev *hdev) +{ + //struct btsdio_data *data = hci_get_drvdata(hdev); + int err = 0; + + AICBT_INFO("%s", hdev->name); + + return err; +} + +static int btsdio_close(struct hci_dev *hdev) +{ + //struct btsdio_data *data = hci_get_drvdata(hdev); + + AICBT_INFO("%s,%s", hdev->name, __func__); + + return 0; +} + +static int btsdio_flush(struct hci_dev *hdev) +{ + struct btsdio_data *data = hci_get_drvdata(hdev); + + AICBT_INFO("%s,%s", hdev->name, __func__); + + skb_queue_purge(&data->txq); + + return 0; +} + +static int btsdio_send_frame(struct hci_dev *hdev, struct sk_buff *skb) +{ + struct btsdio_data *data = hci_get_drvdata(hdev); + + AICBT_INFO("%s,%s", hdev->name, __func__); + + switch (hci_skb_pkt_type(skb)) { + case HCI_COMMAND_PKT: + hdev->stat.cmd_tx++; + break; + + case HCI_ACLDATA_PKT: + hdev->stat.acl_tx++; + break; + + case HCI_SCODATA_PKT: + hdev->stat.sco_tx++; + break; + + default: + return -EILSEQ; + } + + skb_queue_tail(&data->txq, skb); + + schedule_work(&data->work); + + return 0; +} + +int btsdio_init(void) +{ + struct btsdio_data *data; + struct hci_dev *hdev; + int err; + + AICBT_INFO("%s", __func__); + + data = kzalloc(sizeof(struct btsdio_data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + INIT_WORK(&data->work, btsdio_work); + + skb_queue_head_init(&data->txq); + + hdev = hci_alloc_dev(); + if (!hdev) + return -ENOMEM; + + hdev->bus = HCI_SDIO; + hci_set_drvdata(hdev, data); + + hdev->dev_type = HCI_PRIMARY; + + data->hdev = hdev; + + hdev->open = btsdio_open; + hdev->close = btsdio_close; + hdev->flush = btsdio_flush; + hdev->send = btsdio_send_frame; + + err = hci_register_dev(hdev); + if (err < 0) { + hci_free_dev(hdev); + return err; + } + ghdev = hdev; + + return 0; +} + +void btsdio_remove(void) +{ + struct btsdio_data *data; + struct hci_dev *hdev; + hdev = hci_dev_get(0); + if (!hdev) { + AICBT_ERR("%s: Failed to get hci dev[Null]", __func__); + return; + } + data = hci_get_drvdata(hdev); + + AICBT_INFO("btsdio_remove"); + + if (!data) + return; + + kfree(data); + + hci_unregister_dev(hdev); + + hci_free_dev(hdev); +} +#endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/hal_desc.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/hal_desc.h index 17cb02526..f47a55c43 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/hal_desc.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/hal_desc.h @@ -19,10 +19,10 @@ /* Rate and policy table */ -#define N_CCK 8 +#define N_CCK 8 #define N_OFDM 8 -#define N_HT (8 * 2 * 2 * 4) -#define N_VHT (10 * 4 * 2 * 8) +#define N_HT (8 * 2 * 2 * 4) +#define N_VHT (10 * 4 * 2 * 8) #define N_HE_SU (12 * 4 * 3 * 8) #define N_HE_MU (12 * 6 * 3 * 8) #define N_HE_ER (3 * 3 + 3) //RU242 + RU106 @@ -33,51 +33,63 @@ extern const int chnl2bw[]; /* conversion table from MACHW to NL80211 enum */ extern const int bw2chnl[]; +/* Rate cntrl info */ +#define MCS_INDEX_TX_RCX_OFT 0 +#define MCS_INDEX_TX_RCX_MASK (0x7F << MCS_INDEX_TX_RCX_OFT) +#define BW_TX_RCX_OFT 7 +#define BW_TX_RCX_MASK (0x3 << BW_TX_RCX_OFT) +#define SHORT_GI_TX_RCX_OFT 9 +#define SHORT_GI_TX_RCX_MASK (0x1 << SHORT_GI_TX_RCX_OFT) +#define PRE_TYPE_TX_RCX_OFT 10 +#define PRE_TYPE_TX_RCX_MASK (0x1 << PRE_TYPE_TX_RCX_OFT) +#define FORMAT_MOD_TX_RCX_OFT 11 +#define FORMAT_MOD_TX_RCX_MASK (0x7 << FORMAT_MOD_TX_RCX_OFT) + /* Values for formatModTx */ -#define FORMATMOD_NON_HT 0 +#define FORMATMOD_NON_HT 0 #define FORMATMOD_NON_HT_DUP_OFDM 1 -#define FORMATMOD_HT_MF 2 -#define FORMATMOD_HT_GF 3 -#define FORMATMOD_VHT 4 -#define FORMATMOD_HE_SU 5 -#define FORMATMOD_HE_MU 6 -#define FORMATMOD_HE_ER 7 -#define FORMATMOD_HE_TB 8 +#define FORMATMOD_HT_MF 2 +#define FORMATMOD_HT_GF 3 +#define FORMATMOD_VHT 4 +#define FORMATMOD_HE_SU 5 +#define FORMATMOD_HE_MU 6 +#define FORMATMOD_HE_ER 7 +#define FORMATMOD_HE_TB 8 /* Values for navProtFrmEx */ -#define NAV_PROT_NO_PROT_BIT 0 -#define NAV_PROT_SELF_CTS_BIT 1 -#define NAV_PROT_RTS_CTS_BIT 2 -#define NAV_PROT_RTS_CTS_WITH_QAP_BIT 3 -#define NAV_PROT_STBC_BIT 4 +#define NAV_PROT_NO_PROT_BIT 0 +#define NAV_PROT_SELF_CTS_BIT 1 +#define NAV_PROT_RTS_CTS_BIT 2 +#define NAV_PROT_RTS_CTS_WITH_QAP_BIT 3 +#define NAV_PROT_STBC_BIT 4 /* THD MACCTRLINFO2 fields, used in struct umacdesc umac.flags */ /// WhichDescriptor definition - contains aMPDU bit and position value /// Offset of WhichDescriptor field in the MAC CONTROL INFO 2 word -#define WHICHDESC_OFT 19 +#define WHICHDESC_OFT 19 /// Mask of the WhichDescriptor field -#define WHICHDESC_MSK (0x07 << WHICHDESC_OFT) +#define WHICHDESC_MSK (0x07 << WHICHDESC_OFT) /// Only 1 THD possible, describing an unfragmented MSDU -#define WHICHDESC_UNFRAGMENTED_MSDU (0x00 << WHICHDESC_OFT) +#define WHICHDESC_UNFRAGMENTED_MSDU (0x00 << WHICHDESC_OFT) /// THD describing the first MPDU of a fragmented MSDU -#define WHICHDESC_FRAGMENTED_MSDU_FIRST (0x01 << WHICHDESC_OFT) +#define WHICHDESC_FRAGMENTED_MSDU_FIRST (0x01 << WHICHDESC_OFT) /// THD describing intermediate MPDUs of a fragmented MSDU -#define WHICHDESC_FRAGMENTED_MSDU_INT (0x02 << WHICHDESC_OFT) +#define WHICHDESC_FRAGMENTED_MSDU_INT (0x02 << WHICHDESC_OFT) /// THD describing the last MPDU of a fragmented MSDU -#define WHICHDESC_FRAGMENTED_MSDU_LAST (0x03 << WHICHDESC_OFT) +#define WHICHDESC_FRAGMENTED_MSDU_LAST (0x03 << WHICHDESC_OFT) /// THD for extra descriptor starting an AMPDU -#define WHICHDESC_AMPDU_EXTRA (0x04 << WHICHDESC_OFT) +#define WHICHDESC_AMPDU_EXTRA (0x04 << WHICHDESC_OFT) /// THD describing the first MPDU of an A-MPDU -#define WHICHDESC_AMPDU_FIRST (0x05 << WHICHDESC_OFT) +#define WHICHDESC_AMPDU_FIRST (0x05 << WHICHDESC_OFT) /// THD describing intermediate MPDUs of an A-MPDU -#define WHICHDESC_AMPDU_INT (0x06 << WHICHDESC_OFT) +#define WHICHDESC_AMPDU_INT (0x06 << WHICHDESC_OFT) /// THD describing the last MPDU of an A-MPDU -#define WHICHDESC_AMPDU_LAST (0x07 << WHICHDESC_OFT) +#define WHICHDESC_AMPDU_LAST (0x07 << WHICHDESC_OFT) /// aMPDU bit offset -#define AMPDU_OFT 21 +#define AMPDU_OFT 21 /// aMPDU bit -#define AMPDU_BIT CO_BIT(AMPDU_OFT) +#define AMPDU_BIT CO_BIT(AMPDU_OFT) union rwnx_mcs_index { struct { @@ -95,40 +107,56 @@ union rwnx_mcs_index { u32 legacy : 7; }; +enum { + HW_RATE_1MBPS = 0, + HW_RATE_2MBPS = 1, + HW_RATE_5_5MBPS = 2, + HW_RATE_11MBPS = 3, + HW_RATE_6MBPS = 4, + HW_RATE_9MBPS = 5, + HW_RATE_12MBPS = 6, + HW_RATE_18MBPS = 7, + HW_RATE_24MBPS = 8, + HW_RATE_36MBPS = 9, + HW_RATE_48MBPS = 10, + HW_RATE_54MBPS = 11, + HW_RATE_MAX +}; + /* c.f RW-WLAN-nX-MAC-HW-UM */ union rwnx_rate_ctrl_info { struct { - u32 mcsIndexTx : 7; - u32 bwTx : 2; - u32 giAndPreTypeTx : 2; - u32 formatModTx : 3; - u32 navProtFrmEx : 3; - u32 mcsIndexProtTx : 7; - u32 bwProtTx : 2; + u32 mcsIndexTx : 7; + u32 bwTx : 2; + u32 giAndPreTypeTx : 2; + u32 formatModTx : 3; + u32 navProtFrmEx : 3; + u32 mcsIndexProtTx : 7; + u32 bwProtTx : 2; u32 formatModProtTx : 3; - u32 nRetry : 3; + u32 nRetry : 3; }; u32 value; }; /* c.f RW-WLAN-nX-MAC-HW-UM */ struct rwnx_power_ctrl_info { - u32 txPwrLevelPT : 8; - u32 txPwrLevelProtPT : 8; - u32 reserved :16; + u32 txPwrLevelPT : 8; + u32 txPwrLevelProtPT : 8; + u32 reserved : 16; }; /* c.f RW-WLAN-nX-MAC-HW-UM */ union rwnx_pol_phy_ctrl_info_1 { struct { - u32 rsvd1 : 3; - u32 bfFrmEx : 1; + u32 rsvd1 : 3; + u32 bfFrmEx : 1; u32 numExtnSS : 2; u32 fecCoding : 1; - u32 stbc : 2; - u32 rsvd2 : 5; - u32 nTx : 3; - u32 nTxProt : 3; + u32 stbc : 2; + u32 rsvd2 : 5; + u32 nTx : 3; + u32 nTxProt : 3; }; u32 value; }; @@ -137,7 +165,7 @@ union rwnx_pol_phy_ctrl_info_1 { union rwnx_pol_phy_ctrl_info_2 { struct { u32 antennaSet : 8; - u32 smmIndex : 8; + u32 smmIndex : 8; u32 beamFormed : 1; }; u32 value; @@ -146,7 +174,7 @@ union rwnx_pol_phy_ctrl_info_2 { /* c.f RW-WLAN-nX-MAC-HW-UM */ union rwnx_pol_mac_ctrl_info_1 { struct { - u32 keySRamIndex : 10; + u32 keySRamIndex : 10; u32 keySRamIndexRA : 10; }; u32 value; @@ -155,14 +183,14 @@ union rwnx_pol_mac_ctrl_info_1 { /* c.f RW-WLAN-nX-MAC-HW-UM */ union rwnx_pol_mac_ctrl_info_2 { struct { - u32 longRetryLimit : 8; + u32 longRetryLimit : 8; u32 shortRetryLimit : 8; - u32 rtsThreshold : 12; + u32 rtsThreshold : 12; }; u32 value; }; -#define POLICY_TABLE_PATTERN 0xBADCAB1E +#define POLICY_TABLE_PATTERN 0xBADCAB1E struct tx_policy_tbl { /* Unique Pattern at the start of Policy Table */ @@ -176,7 +204,7 @@ struct tx_policy_tbl { /* MAC Control 2 Information used by MAC HW */ union rwnx_pol_mac_ctrl_info_2 macctrlinfo_2; - union rwnx_rate_ctrl_info ratectrlinfos[NX_TX_MAX_RATES]; + union rwnx_rate_ctrl_info ratectrlinfos[NX_TX_MAX_RATES]; struct rwnx_power_ctrl_info powerctrlinfos[NX_TX_MAX_RATES]; }; @@ -194,11 +222,11 @@ struct tx_policy_tbl { */ union rwnx_hw_txstatus { struct { - u32 tx_done : 1; - u32 retry_required : 1; - u32 sw_retry_required : 1; - u32 acknowledged : 1; - u32 reserved :28; + u32 tx_done : 1; + u32 retry_required : 1; + u32 sw_retry_required : 1; + u32 acknowledged : 1; + u32 reserved : 28; }; u32 value; }; @@ -220,7 +248,7 @@ union rwnx_hw_txstatus { * @status: transmission status */ struct tx_cfm_tag { -/* + /* u16_l pn[4]; u16_l sn; u16_l timestamp; @@ -231,7 +259,7 @@ struct tx_cfm_tag { u16_l amsdu_size; #endif union rwnx_hw_txstatus status; - u32_l hostid; + u32_l hostid; }; /** @@ -247,107 +275,108 @@ struct rwnx_hw_txhdr { /* Modem */ -#define MDM_PHY_CONFIG_TRIDENT 0 -#define MDM_PHY_CONFIG_ELMA 1 -#define MDM_PHY_CONFIG_KARST 2 +#define MDM_PHY_CONFIG_TRIDENT 0 +#define MDM_PHY_CONFIG_ELMA 1 +#define MDM_PHY_CONFIG_KARST 2 // MODEM features (from reg_mdm_stat.h) /// MUMIMOTX field bit -#define MDM_MUMIMOTX_BIT ((u32)0x80000000) +#define MDM_MUMIMOTX_BIT ((u32)0x80000000) /// MUMIMOTX field position -#define MDM_MUMIMOTX_POS 31 +#define MDM_MUMIMOTX_POS 31 /// MUMIMORX field bit -#define MDM_MUMIMORX_BIT ((u32)0x40000000) +#define MDM_MUMIMORX_BIT ((u32)0x40000000) /// MUMIMORX field position -#define MDM_MUMIMORX_POS 30 +#define MDM_MUMIMORX_POS 30 /// BFMER field bit -#define MDM_BFMER_BIT ((u32)0x20000000) +#define MDM_BFMER_BIT ((u32)0x20000000) /// BFMER field position -#define MDM_BFMER_POS 29 +#define MDM_BFMER_POS 29 /// BFMEE field bit -#define MDM_BFMEE_BIT ((u32)0x10000000) +#define MDM_BFMEE_BIT ((u32)0x10000000) /// BFMEE field position -#define MDM_BFMEE_POS 28 +#define MDM_BFMEE_POS 28 /// LDPCDEC field bit -#define MDM_LDPCDEC_BIT ((u32)0x08000000) +#define MDM_LDPCDEC_BIT ((u32)0x08000000) /// LDPCDEC field position -#define MDM_LDPCDEC_POS 27 +#define MDM_LDPCDEC_POS 27 /// LDPCENC field bit -#define MDM_LDPCENC_BIT ((u32)0x04000000) +#define MDM_LDPCENC_BIT ((u32)0x04000000) /// LDPCENC field position -#define MDM_LDPCENC_POS 26 +#define MDM_LDPCENC_POS 26 /// CHBW field mask -#define MDM_CHBW_MASK ((u32)0x03000000) +#define MDM_CHBW_MASK ((u32)0x03000000) /// CHBW field LSB position -#define MDM_CHBW_LSB 24 +#define MDM_CHBW_LSB 24 /// CHBW field width -#define MDM_CHBW_WIDTH ((u32)0x00000002) +#define MDM_CHBW_WIDTH ((u32)0x00000002) /// DSSSCCK field bit -#define MDM_DSSSCCK_BIT ((u32)0x00800000) +#define MDM_DSSSCCK_BIT ((u32)0x00800000) /// DSSSCCK field position -#define MDM_DSSSCCK_POS 23 +#define MDM_DSSSCCK_POS 23 /// VHT field bit -#define MDM_VHT_BIT ((u32)0x00400000) +#define MDM_VHT_BIT ((u32)0x00400000) /// VHT field position -#define MDM_VHT_POS 22 +#define MDM_VHT_POS 22 /// HE field bit -#define MDM_HE_BIT ((u32)0x00200000) +#define MDM_HE_BIT ((u32)0x00200000) /// HE field position -#define MDM_HE_POS 21 +#define MDM_HE_POS 21 /// ESS field bit -#define MDM_ESS_BIT ((u32)0x00100000) +#define MDM_ESS_BIT ((u32)0x00100000) /// ESS field position -#define MDM_ESS_POS 20 +#define MDM_ESS_POS 20 /// RFMODE field mask -#define MDM_RFMODE_MASK ((u32)0x000F0000) +#define MDM_RFMODE_MASK ((u32)0x000F0000) /// RFMODE field LSB position -#define MDM_RFMODE_LSB 16 +#define MDM_RFMODE_LSB 16 /// RFMODE field width -#define MDM_RFMODE_WIDTH ((u32)0x00000004) +#define MDM_RFMODE_WIDTH ((u32)0x00000004) /// NSTS field mask -#define MDM_NSTS_MASK ((u32)0x0000F000) +#define MDM_NSTS_MASK ((u32)0x0000F000) /// NSTS field LSB position -#define MDM_NSTS_LSB 12 +#define MDM_NSTS_LSB 12 /// NSTS field width -#define MDM_NSTS_WIDTH ((u32)0x00000004) +#define MDM_NSTS_WIDTH ((u32)0x00000004) /// NSS field mask -#define MDM_NSS_MASK ((u32)0x00000F00) +#define MDM_NSS_MASK ((u32)0x00000F00) /// NSS field LSB position -#define MDM_NSS_LSB 8 +#define MDM_NSS_LSB 8 /// NSS field width -#define MDM_NSS_WIDTH ((u32)0x00000004) +#define MDM_NSS_WIDTH ((u32)0x00000004) /// NTX field mask -#define MDM_NTX_MASK ((u32)0x000000F0) +#define MDM_NTX_MASK ((u32)0x000000F0) /// NTX field LSB position -#define MDM_NTX_LSB 4 +#define MDM_NTX_LSB 4 /// NTX field width -#define MDM_NTX_WIDTH ((u32)0x00000004) +#define MDM_NTX_WIDTH ((u32)0x00000004) /// NRX field mask -#define MDM_NRX_MASK ((u32)0x0000000F) +#define MDM_NRX_MASK ((u32)0x0000000F) /// NRX field LSB position -#define MDM_NRX_LSB 0 +#define MDM_NRX_LSB 0 /// NRX field width -#define MDM_NRX_WIDTH ((u32)0x00000004) +#define MDM_NRX_WIDTH ((u32)0x00000004) -#define __MDM_PHYCFG_FROM_VERS(v) (((v) & MDM_RFMODE_MASK) >> MDM_RFMODE_LSB) +#define __MDM_PHYCFG_FROM_VERS(v) (((v)&MDM_RFMODE_MASK) >> MDM_RFMODE_LSB) -#define RIU_FCU_PRESENT_MASK ((u32)0xFF000000) -#define RIU_FCU_PRESENT_LSB 24 +#define RIU_FCU_PRESENT_MASK ((u32)0xFF000000) +#define RIU_FCU_PRESENT_LSB 24 -#define __RIU_FCU_PRESENT(v) (((v) & RIU_FCU_PRESENT_MASK) >> RIU_FCU_PRESENT_LSB == 5) +#define __RIU_FCU_PRESENT(v) \ + (((v)&RIU_FCU_PRESENT_MASK) >> RIU_FCU_PRESENT_LSB == 5) /// AGC load version field mask -#define RIU_AGC_LOAD_MASK ((u32)0x00C00000) +#define RIU_AGC_LOAD_MASK ((u32)0x00C00000) /// AGC load version field LSB position -#define RIU_AGC_LOAD_LSB 22 +#define RIU_AGC_LOAD_LSB 22 -#define __RIU_AGCLOAD_FROM_VERS(v) (((v) & RIU_AGC_LOAD_MASK) >> RIU_AGC_LOAD_LSB) +#define __RIU_AGCLOAD_FROM_VERS(v) (((v)&RIU_AGC_LOAD_MASK) >> RIU_AGC_LOAD_LSB) -#define __FPGA_TYPE(v) (((v) & 0xFFFF0000) >> 16) - -#define __MDM_MAJOR_VERSION(v) (((v) & 0xFF000000) >> 24) -#define __MDM_MINOR_VERSION(v) (((v) & 0x00FF0000) >> 16) -#define __MDM_VERSION(v) ((__MDM_MAJOR_VERSION(v) + 2) * 10 + __MDM_MINOR_VERSION(v)) +#define __FPGA_TYPE(v) (((v)&0xFFFF0000) >> 16) +#define __MDM_MAJOR_VERSION(v) (((v)&0xFF000000) >> 24) +#define __MDM_MINOR_VERSION(v) (((v)&0x00FF0000) >> 16) +#define __MDM_VERSION(v) \ + ((__MDM_MAJOR_VERSION(v) + 2) * 10 + __MDM_MINOR_VERSION(v)) #endif // _HAL_DESC_H_ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_compat.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_compat.h index 069f69ee5..10cabd094 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_compat.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_compat.h @@ -15,11 +15,12 @@ #define __ALIGN4 __aligned(4) -#define ASSERT_ERR(condition) \ - do { \ - if (unlikely(!(condition))) { \ - printk(KERN_ERR "%s:%d:ASSERT_ERR(" #condition ")\n", __FILE__, __LINE__); \ - } \ +#define ASSERT_ERR(condition) \ + do { \ + if (unlikely(!(condition))) { \ + printk(KERN_ERR "%s:%d:ASSERT_ERR(" #condition ")\n", \ + __FILE__, __LINE__); \ + } \ } while (0) #endif /* _IPC_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.c index 7746f4097..8a82a9bab 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.c @@ -30,13 +30,10 @@ */ const int nx_txdesc_cnt[] = { - NX_TXDESC_CNT0, - NX_TXDESC_CNT1, - NX_TXDESC_CNT2, - NX_TXDESC_CNT3, - #if NX_TXQ_CNT == 5 + NX_TXDESC_CNT0, NX_TXDESC_CNT1, NX_TXDESC_CNT2, NX_TXDESC_CNT3, +#if NX_TXQ_CNT == 5 NX_TXDESC_CNT4, - #endif +#endif }; const int nx_txuser_cnt[] = { @@ -44,9 +41,7 @@ const int nx_txuser_cnt[] = { CONFIG_USER_MAX, CONFIG_USER_MAX, CONFIG_USER_MAX, - #if NX_TXQ_CNT == 5 +#if NX_TXQ_CNT == 5 1, - #endif +#endif }; - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.h index 583b66889..cc5b6a5eb 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_host.h @@ -57,15 +57,14 @@ struct ipc_host_cb_tag { /// WLAN driver call-back function: sec_tbtt_ind void (*sec_tbtt_ind)(void *pthis); - }; /* * Struct used to store information about host buffers (DMA Address and local pointer) */ struct ipc_hostbuf { - void *hostid; ///< ptr to hostbuf client (ipc_host client) structure - uint32_t dma_addr; ///< ptr to real hostbuf dma address + void *hostid; ///< ptr to hostbuf client (ipc_host client) structure + uint32_t dma_addr; ///< ptr to real hostbuf dma address }; /// Definition of the IPC Host environment structure. @@ -76,14 +75,14 @@ struct ipc_host_env_tag { /// Pointer to the shared environment struct ipc_shared_env_tag *shared; - #ifdef CONFIG_RWNX_FULLMAC +#ifdef CONFIG_RWNX_FULLMAC // Array used to store the descriptor addresses struct ipc_hostbuf ipc_host_rxdesc_array[IPC_RXDESC_CNT]; // Index of the host RX descriptor array (ipc_shared environment) uint8_t ipc_host_rxdesc_idx; /// Store the number of RX Descriptors uint8_t rxdesc_nb; - #endif //(CONFIG_RWNX_FULLMAC) +#endif //(CONFIG_RWNX_FULLMAC) /// Fields for Data Rx handling // Index used for ipc_host_rxbuf_array to point to current buffer @@ -125,10 +124,10 @@ struct ipc_host_env_tag { void *tx_host_id2[CONFIG_USER_MAX][NX_TXDESC_CNT2]; // Array storing the currently pushed host ids for the VO queue void *tx_host_id3[CONFIG_USER_MAX][NX_TXDESC_CNT3]; - #if NX_TXQ_CNT == 5 +#if NX_TXQ_CNT == 5 // Array storing the currently pushed host ids for the BCN queue void *tx_host_id4[1][NX_TXDESC_CNT4]; - #endif +#endif // Pointer to the different host ids arrays, per IPC queue void **tx_host_id[IPC_TXQUEUE_CNT][CONFIG_USER_MAX]; // Pointer to the different TX descriptor arrays, per IPC queue diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_shared.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_shared.h index 7e2fedcb1..b56ec0a2c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_shared.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/ipc_shared.h @@ -24,71 +24,72 @@ * DEFINES AND MACROS **************************************************************************************** */ -#define CO_BIT(pos) (1U<<(pos)) +#define CO_BIT(pos) (1U << (pos)) -#define IPC_TXQUEUE_CNT NX_TXQ_CNT -#define NX_TXDESC_CNT0 8 -#define NX_TXDESC_CNT1 64 -#define NX_TXDESC_CNT2 64 -#define NX_TXDESC_CNT3 32 +#define IPC_TXQUEUE_CNT NX_TXQ_CNT +#define NX_TXDESC_CNT0 8 +#define NX_TXDESC_CNT1 64 +#define NX_TXDESC_CNT2 64 +#define NX_TXDESC_CNT3 32 #if NX_TXQ_CNT == 5 -#define NX_TXDESC_CNT4 8 +#define NX_TXDESC_CNT4 8 #endif /* * Number of Host buffers available for Data Rx handling (through DMA) */ -#define IPC_RXBUF_CNT 128 +#define IPC_RXBUF_CNT 128 /* * Number of shared descriptors available for Data RX handling */ -#define IPC_RXDESC_CNT 128 +#define IPC_RXDESC_CNT 128 /* * Number of Host buffers available for Radar events handling (through DMA) */ -#define IPC_RADARBUF_CNT 16 +#define IPC_RADARBUF_CNT 16 /* * Number of Host buffers available for unsupported Rx vectors handling (through DMA) */ -#define IPC_UNSUPRXVECBUF_CNT 8 +#define IPC_UNSUPRXVECBUF_CNT 8 /* * Size of RxVector */ -#define IPC_RXVEC_SIZE 16 +#define IPC_RXVEC_SIZE 16 /* * Number of Host buffers available for Emb->App MSGs sending (through DMA) */ #ifdef CONFIG_RWNX_FULLMAC -#define IPC_MSGE2A_BUF_CNT 64 +#define IPC_MSGE2A_BUF_CNT 64 #endif /* * Number of Host buffers available for Debug Messages sending (through DMA) */ -#define IPC_DBGBUF_CNT 32 +#define IPC_DBGBUF_CNT 32 /* * Length used in MSGs structures */ -#define IPC_A2E_MSG_BUF_SIZE 127 // size in 4-byte words +#define IPC_A2E_MSG_BUF_SIZE 127 // size in 4-byte words #ifdef CONFIG_RWNX_FULLMAC -#define IPC_E2A_MSG_SIZE_BASE 256 // size in 4-byte words +#define IPC_E2A_MSG_SIZE_BASE 256 // size in 4-byte words #endif #ifdef CONFIG_RWNX_TL4 -#define IPC_E2A_MSG_PARAM_SIZE (IPC_E2A_MSG_SIZE_BASE + (IPC_E2A_MSG_SIZE_BASE / 2)) +#define IPC_E2A_MSG_PARAM_SIZE \ + (IPC_E2A_MSG_SIZE_BASE + (IPC_E2A_MSG_SIZE_BASE / 2)) #else -#define IPC_E2A_MSG_PARAM_SIZE IPC_E2A_MSG_SIZE_BASE +#define IPC_E2A_MSG_PARAM_SIZE IPC_E2A_MSG_SIZE_BASE #endif /* * Debug messages buffers size (in bytes) */ -#define IPC_DBG_PARAM_SIZE 256 +#define IPC_DBG_PARAM_SIZE 256 /* * Define used for Rx hostbuf validity. @@ -111,21 +112,21 @@ /* * Length of the receive vectors, in bytes */ -#define DMA_HDR_PHYVECT_LEN 36 +#define DMA_HDR_PHYVECT_LEN 36 /* * Maximum number of payload addresses and lengths present in the descriptor */ #ifdef CONFIG_RWNX_SPLIT_TX_BUF -#define NX_TX_PAYLOAD_MAX 6 +#define NX_TX_PAYLOAD_MAX 6 #else -#define NX_TX_PAYLOAD_MAX 1 +#define NX_TX_PAYLOAD_MAX 1 #endif /* * Message struct/ID API version */ -#define MSG_API_VER 33 +#define MSG_API_VER 33 /* **************************************************************************************** @@ -139,7 +140,7 @@ struct hostdesc { u16_l packet_len; u16_l flags_ext; - u32_l hostid; + u32_l hostid; #ifdef CONFIG_RWNX_FULLMAC /// Address of the status descriptor in host memory (used for confirmation upload) //u32_l status_desc_addr; @@ -193,7 +194,6 @@ struct txdesc_api { struct hostdesc host; }; - struct txdesc_host { u32_l ready; @@ -206,21 +206,21 @@ struct txdesc_host { struct dma_desc { /** Application subsystem address which is used as source address for DMA payload * transfer*/ - u32_l src; + u32_l src; /** Points to the start of the embedded data buffer associated with this descriptor. * This address acts as the destination address for the DMA payload transfer*/ - u32_l dest; + u32_l dest; /// Complete length of the buffer in memory - u16_l length; + u16_l length; /// Control word for the DMA engine (e.g. for interrupt generation) - u16_l ctrl; + u16_l ctrl; /// Pointer to the next element of the chained list - u32_l next; + u32_l next; }; // Comes from la.h /// Length of the configuration data of a logic analyzer -#define LA_CONF_LEN 10 +#define LA_CONF_LEN 10 /// Structure containing the configuration data of a logic analyzer struct la_conf_tag { @@ -230,7 +230,7 @@ struct la_conf_tag { }; /// Size of a logic analyzer memory -#define LA_MEM_LEN (1024 * 1024) +#define LA_MEM_LEN (1024 * 1024) /// Type of errors enum { @@ -241,25 +241,25 @@ enum { }; /// Maximum length of the SW diag trace -#define DBG_SW_DIAG_MAX_LEN 1024 +#define DBG_SW_DIAG_MAX_LEN 1024 /// Maximum length of the error trace -#define DBG_ERROR_TRACE_SIZE 256 +#define DBG_ERROR_TRACE_SIZE 256 /// Number of MAC diagnostic port banks -#define DBG_DIAGS_MAC_MAX 48 +#define DBG_DIAGS_MAC_MAX 48 /// Number of PHY diagnostic port banks -#define DBG_DIAGS_PHY_MAX 32 +#define DBG_DIAGS_PHY_MAX 32 /// Maximum size of the RX header descriptor information in the debug dump -#define DBG_RHD_MEM_LEN (5 * 1024) +#define DBG_RHD_MEM_LEN (5 * 1024) /// Maximum size of the RX buffer descriptor information in the debug dump -#define DBG_RBD_MEM_LEN (5 * 1024) +#define DBG_RBD_MEM_LEN (5 * 1024) /// Maximum size of the TX header descriptor information in the debug dump -#define DBG_THD_MEM_LEN (10 * 1024) +#define DBG_THD_MEM_LEN (10 * 1024) /// Structure containing the information about the PHY channel that is used struct phy_channel_info { @@ -288,11 +288,11 @@ struct dbg_debug_info_tag { /// MAC HW diag configuration u32_l hw_diag; /// Error message - u32_l error[DBG_ERROR_TRACE_SIZE/4]; + u32_l error[DBG_ERROR_TRACE_SIZE / 4]; /// SW diag configuration length u32_l sw_diag_len; /// SW diag configuration - u32_l sw_diag[DBG_SW_DIAG_MAX_LEN/4]; + u32_l sw_diag[DBG_SW_DIAG_MAX_LEN / 4]; /// PHY channel information struct phy_channel_info chan_info; /// Embedded LA configuration @@ -313,21 +313,20 @@ struct dbg_debug_dump_tag { struct dbg_debug_info_tag dbg_info; /// RX header descriptor memory - u32_l rhd_mem[DBG_RHD_MEM_LEN/4]; + u32_l rhd_mem[DBG_RHD_MEM_LEN / 4]; /// RX buffer descriptor memory - u32_l rbd_mem[DBG_RBD_MEM_LEN/4]; + u32_l rbd_mem[DBG_RBD_MEM_LEN / 4]; /// TX header descriptor memory - u32_l thd_mem[NX_TXQ_CNT][DBG_THD_MEM_LEN/4]; + u32_l thd_mem[NX_TXQ_CNT][DBG_THD_MEM_LEN / 4]; /// Logic analyzer memory - u32_l la_mem[LA_MEM_LEN/4]; + u32_l la_mem[LA_MEM_LEN / 4]; }; - /// Number of pulses in a radar event structure -#define RADAR_PULSE_MAX 4 +#define RADAR_PULSE_MAX 4 /// Definition of an array of radar pulses struct radar_pulse_array_desc { @@ -341,10 +340,10 @@ struct radar_pulse_array_desc { /// Bit mapping inside a radar pulse element struct radar_pulse { - s32_l freq:6; /** Freq (resolution is 2Mhz range is [-Fadc/4 .. Fadc/4]) */ - u32_l fom:4; /** Figure of Merit */ - u32_l len:6; /** Length of the current radar pulse (resolution is 2us) */ - u32_l rep:16; /** Time interval between the previous radar event + s32_l freq : 6; /** Freq (resolution is 2Mhz range is [-Fadc/4 .. Fadc/4]) */ + u32_l fom : 4; /** Figure of Merit */ + u32_l len : 6; /** Length of the current radar pulse (resolution is 2us) */ + u32_l rep : 16; /** Time interval between the previous radar event and the current one (in us) */ }; @@ -354,7 +353,7 @@ struct rx_vector_desc { struct phy_channel_info phy_info; /// RX vector 1 - u32_l rx_vect1[IPC_RXVEC_SIZE/4]; + u32_l rx_vect1[IPC_RXVEC_SIZE / 4]; /// Used to print a valid rx vector u32_l pattern; @@ -384,7 +383,6 @@ struct rxdesc_tag { **************************************************************************************** */ - /** **************************************************************************************** * @addtogroup IPC_TX IPC Tx path @@ -477,8 +475,6 @@ struct rxdesc_tag { /// @} IPC_RX - - /** **************************************************************************************** * @defgroup IPC_MISC IPC Misc @@ -503,24 +499,24 @@ struct ipc_msg_elt { /// Message structure for MSGs from Emb to App struct ipc_e2a_msg { - u16_l id; ///< Message id. + u16_l id; ///< Message id. u16_l dummy_dest_id; u16_l dummy_src_id; - u16_l param_len; ///< Parameter embedded struct length. - u32_l pattern; ///< Used to stamp a valid MSG buffer - u32_l param[IPC_E2A_MSG_PARAM_SIZE]; ///< Parameter embedded struct. Must be word-aligned. + u16_l param_len; ///< Parameter embedded struct length. + u32_l pattern; ///< Used to stamp a valid MSG buffer + u32_l param[IPC_E2A_MSG_PARAM_SIZE]; ///< Parameter embedded struct. Must be word-aligned. }; /// Message structure for Debug messages from Emb to App struct ipc_dbg_msg { - u32_l string[IPC_DBG_PARAM_SIZE/4]; ///< Debug string - u32_l pattern; ///< Used to stamp a valid buffer + u32_l string[IPC_DBG_PARAM_SIZE / 4]; ///< Debug string + u32_l pattern; ///< Used to stamp a valid buffer }; /// Message structure for MSGs from App to Emb. /// Actually a sub-structure will be used when filling the messages. struct ipc_a2e_msg { - u32_l dummy_word; // used to cope with kernel message structure + u32_l dummy_word; // used to cope with kernel message structure u32_l msg[IPC_A2E_MSG_BUF_SIZE]; // body of the msg }; @@ -573,42 +569,51 @@ struct compatibility_tag { **************************************************************************************** */ - // Indexes are defined in the MIB shared structure struct ipc_shared_env_tag { volatile struct compatibility_tag comp_info; //FW characteristics - volatile struct ipc_a2e_msg msg_a2e_buf; // room for MSG to be sent from App to Emb + volatile struct ipc_a2e_msg + msg_a2e_buf; // room for MSG to be sent from App to Emb // Fields for MSGs sending from Emb to App - volatile struct ipc_e2a_msg msg_e2a_buf; // room to build the MSG to be DMA Xferred - volatile struct dma_desc msg_dma_desc; // DMA descriptor for Emb->App MSGs Xfers - volatile u32_l msg_e2a_hostbuf_addr[IPC_MSGE2A_BUF_CNT]; // buffers @ for DMA Xfers + volatile struct ipc_e2a_msg + msg_e2a_buf; // room to build the MSG to be DMA Xferred + volatile struct dma_desc + msg_dma_desc; // DMA descriptor for Emb->App MSGs Xfers + volatile u32_l msg_e2a_hostbuf_addr + [IPC_MSGE2A_BUF_CNT]; // buffers @ for DMA Xfers // Fields for Debug MSGs sending from Emb to App - volatile struct ipc_dbg_msg dbg_buf; // room to build the MSG to be DMA Xferred - volatile struct dma_desc dbg_dma_desc; // DMA descriptor for Emb->App MSGs Xfers - volatile u32_l dbg_hostbuf_addr[IPC_DBGBUF_CNT]; // buffers @ for MSGs DMA Xfers - volatile u32_l la_dbginfo_addr; // Host buffer address for the debug information - volatile u32_l pattern_addr; - volatile u32_l radarbuf_hostbuf[IPC_RADARBUF_CNT]; // buffers @ for Radar Events - volatile u32_l unsuprxvecbuf_hostbuf[IPC_UNSUPRXVECBUF_CNT]; // buffers @ for unsupported Rx vectors + volatile struct ipc_dbg_msg + dbg_buf; // room to build the MSG to be DMA Xferred + volatile struct dma_desc + dbg_dma_desc; // DMA descriptor for Emb->App MSGs Xfers + volatile u32_l + dbg_hostbuf_addr[IPC_DBGBUF_CNT]; // buffers @ for MSGs DMA Xfers + volatile u32_l + la_dbginfo_addr; // Host buffer address for the debug information + volatile u32_l pattern_addr; + volatile u32_l + radarbuf_hostbuf[IPC_RADARBUF_CNT]; // buffers @ for Radar Events + volatile u32_l unsuprxvecbuf_hostbuf + [IPC_UNSUPRXVECBUF_CNT]; // buffers @ for unsupported Rx vectors volatile struct txdesc_host txdesc0[CONFIG_USER_MAX][NX_TXDESC_CNT0]; volatile struct txdesc_host txdesc1[CONFIG_USER_MAX][NX_TXDESC_CNT1]; volatile struct txdesc_host txdesc2[CONFIG_USER_MAX][NX_TXDESC_CNT2]; volatile struct txdesc_host txdesc3[CONFIG_USER_MAX][NX_TXDESC_CNT3]; - #if NX_TXQ_CNT == 5 +#if NX_TXQ_CNT == 5 volatile struct txdesc_host txdesc4[1][NX_TXDESC_CNT4]; - #endif - #ifdef CONFIG_RWNX_FULLMAC +#endif +#ifdef CONFIG_RWNX_FULLMAC // RX Descriptors Array volatile struct ipc_shared_rx_desc host_rxdesc[IPC_RXDESC_CNT]; // RX Buffers Array - volatile struct ipc_shared_rx_buf host_rxbuf[IPC_RXBUF_CNT]; - #else + volatile struct ipc_shared_rx_buf host_rxbuf[IPC_RXBUF_CNT]; +#else // buffers @ for Data Rx volatile u32_l host_rxbuf[IPC_RXBUF_CNT]; - #endif /* CONFIG_RWNX_FULLMAC */ +#endif /* CONFIG_RWNX_FULLMAC */ u32_l buffered[NX_REMOTE_STA_MAX][TID_MAX]; @@ -623,7 +628,6 @@ struct ipc_shared_env_tag { extern struct ipc_shared_env_tag ipc_shared_env; - /* * TYPE and STRUCT DEFINITIONS **************************************************************************************** @@ -637,62 +641,63 @@ extern struct ipc_shared_env_tag ipc_shared_env; #endif /// Interrupts bits used #if CONFIG_USER_MAX > 3 -#define IPC_IRQ_A2E_USER_MSK 0xF +#define IPC_IRQ_A2E_USER_MSK 0xF #elif CONFIG_USER_MAX > 2 -#define IPC_IRQ_A2E_USER_MSK 0x7 +#define IPC_IRQ_A2E_USER_MSK 0x7 #else -#define IPC_IRQ_A2E_USER_MSK 0x3 +#define IPC_IRQ_A2E_USER_MSK 0x3 #endif /// Offset of the interrupts for AC0 -#define IPC_IRQ_A2E_AC0_OFT 8 +#define IPC_IRQ_A2E_AC0_OFT 8 /// Mask of the interrupts for AC0 -#define IPC_IRQ_A2E_AC0_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC0_OFT) +#define IPC_IRQ_A2E_AC0_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC0_OFT) /// Offset of the interrupts for AC1 -#define IPC_IRQ_A2E_AC1_OFT (IPC_IRQ_A2E_AC0_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_A2E_AC1_OFT (IPC_IRQ_A2E_AC0_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for AC1 -#define IPC_IRQ_A2E_AC1_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC1_OFT) +#define IPC_IRQ_A2E_AC1_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC1_OFT) /// Offset of the interrupts for AC2 -#define IPC_IRQ_A2E_AC2_OFT (IPC_IRQ_A2E_AC1_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_A2E_AC2_OFT (IPC_IRQ_A2E_AC1_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for AC2 -#define IPC_IRQ_A2E_AC2_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC2_OFT) +#define IPC_IRQ_A2E_AC2_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC2_OFT) /// Offset of the interrupts for AC3 -#define IPC_IRQ_A2E_AC3_OFT (IPC_IRQ_A2E_AC2_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_A2E_AC3_OFT (IPC_IRQ_A2E_AC2_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for AC3 -#define IPC_IRQ_A2E_AC3_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC3_OFT) +#define IPC_IRQ_A2E_AC3_MSK (IPC_IRQ_A2E_USER_MSK << IPC_IRQ_A2E_AC3_OFT) /// Offset of the interrupts for BCN -#define IPC_IRQ_A2E_BCN_OFT (IPC_IRQ_A2E_AC3_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_A2E_BCN_OFT (IPC_IRQ_A2E_AC3_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for BCN -#define IPC_IRQ_A2E_BCN_MSK CO_BIT(IPC_IRQ_A2E_BCN_OFT) +#define IPC_IRQ_A2E_BCN_MSK CO_BIT(IPC_IRQ_A2E_BCN_OFT) -#define IPC_IRQ_A2E_AC_TXDESC (IPC_IRQ_A2E_AC0_MSK | IPC_IRQ_A2E_AC1_MSK | \ - IPC_IRQ_A2E_AC2_MSK | IPC_IRQ_A2E_AC3_MSK) +#define IPC_IRQ_A2E_AC_TXDESC \ + (IPC_IRQ_A2E_AC0_MSK | IPC_IRQ_A2E_AC1_MSK | IPC_IRQ_A2E_AC2_MSK | \ + IPC_IRQ_A2E_AC3_MSK) /// Interrupts bits used for the TX descriptors of the BCN queue #if NX_TXQ_CNT < 5 -#define IPC_IRQ_A2E_BCN_TXDESC 0 +#define IPC_IRQ_A2E_BCN_TXDESC 0 #else -#define IPC_IRQ_A2E_BCN_TXDESC (0x01 << IPC_IRQ_A2E_BCN_OFT) +#define IPC_IRQ_A2E_BCN_TXDESC (0x01 << IPC_IRQ_A2E_BCN_OFT) #endif /// IPC TX descriptor interrupt mask -#define IPC_IRQ_A2E_TXDESC (IPC_IRQ_A2E_AC_TXDESC | IPC_IRQ_A2E_BCN_TXDESC) +#define IPC_IRQ_A2E_TXDESC (IPC_IRQ_A2E_AC_TXDESC | IPC_IRQ_A2E_BCN_TXDESC) #else /// IPC TX descriptor interrupt mask -#define IPC_IRQ_A2E_TXDESC 0xFF00 +#define IPC_IRQ_A2E_TXDESC 0xFF00 #endif #define IPC_IRQ_A2E_TXDESC_FIRSTBIT (8) -#define IPC_IRQ_A2E_RXBUF_BACK CO_BIT(5) -#define IPC_IRQ_A2E_RXDESC_BACK CO_BIT(4) +#define IPC_IRQ_A2E_RXBUF_BACK CO_BIT(5) +#define IPC_IRQ_A2E_RXDESC_BACK CO_BIT(4) -#define IPC_IRQ_A2E_MSG CO_BIT(1) -#define IPC_IRQ_A2E_DBG CO_BIT(0) +#define IPC_IRQ_A2E_MSG CO_BIT(1) +#define IPC_IRQ_A2E_DBG CO_BIT(0) -#define IPC_IRQ_A2E_ALL (IPC_IRQ_A2E_TXDESC|IPC_IRQ_A2E_MSG|IPC_IRQ_A2E_DBG) +#define IPC_IRQ_A2E_ALL (IPC_IRQ_A2E_TXDESC | IPC_IRQ_A2E_MSG | IPC_IRQ_A2E_DBG) // IRQs from emb to app -#define IPC_IRQ_E2A_TXCFM_POS 7 +#define IPC_IRQ_E2A_TXCFM_POS 7 #ifdef CONFIG_RWNX_MUMIMO_TX #ifdef CONFIG_RWNX_OLD_IPC @@ -700,76 +705,71 @@ extern struct ipc_shared_env_tag ipc_shared_env; #endif /// Interrupts bits used #if CONFIG_USER_MAX > 3 -#define IPC_IRQ_E2A_USER_MSK 0xF +#define IPC_IRQ_E2A_USER_MSK 0xF #elif CONFIG_USER_MAX > 2 -#define IPC_IRQ_E2A_USER_MSK 0x7 +#define IPC_IRQ_E2A_USER_MSK 0x7 #else -#define IPC_IRQ_E2A_USER_MSK 0x3 +#define IPC_IRQ_E2A_USER_MSK 0x3 #endif /// Offset of the interrupts for AC0 -#define IPC_IRQ_E2A_AC0_OFT IPC_IRQ_E2A_TXCFM_POS +#define IPC_IRQ_E2A_AC0_OFT IPC_IRQ_E2A_TXCFM_POS /// Mask of the interrupts for AC0 -#define IPC_IRQ_E2A_AC0_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC0_OFT) +#define IPC_IRQ_E2A_AC0_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC0_OFT) /// Offset of the interrupts for AC1 -#define IPC_IRQ_E2A_AC1_OFT (IPC_IRQ_E2A_AC0_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_E2A_AC1_OFT (IPC_IRQ_E2A_AC0_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for AC1 -#define IPC_IRQ_E2A_AC1_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC1_OFT) +#define IPC_IRQ_E2A_AC1_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC1_OFT) /// Offset of the interrupts for AC2 -#define IPC_IRQ_E2A_AC2_OFT (IPC_IRQ_E2A_AC1_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_E2A_AC2_OFT (IPC_IRQ_E2A_AC1_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for AC2 -#define IPC_IRQ_E2A_AC2_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC2_OFT) +#define IPC_IRQ_E2A_AC2_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC2_OFT) /// Offset of the interrupts for AC3 -#define IPC_IRQ_E2A_AC3_OFT (IPC_IRQ_E2A_AC2_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_E2A_AC3_OFT (IPC_IRQ_E2A_AC2_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for AC3 -#define IPC_IRQ_E2A_AC3_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC3_OFT) +#define IPC_IRQ_E2A_AC3_MSK (IPC_IRQ_E2A_USER_MSK << IPC_IRQ_E2A_AC3_OFT) /// Offset of the interrupts for BCN -#define IPC_IRQ_E2A_BCN_OFT (IPC_IRQ_E2A_AC3_OFT + CONFIG_USER_MAX) +#define IPC_IRQ_E2A_BCN_OFT (IPC_IRQ_E2A_AC3_OFT + CONFIG_USER_MAX) /// Mask of the interrupts for BCN -#define IPC_IRQ_E2A_BCN_MSK CO_BIT(IPC_IRQ_E2A_BCN_OFT) +#define IPC_IRQ_E2A_BCN_MSK CO_BIT(IPC_IRQ_E2A_BCN_OFT) -#define IPC_IRQ_E2A_AC_TXCFM (IPC_IRQ_E2A_AC0_MSK | IPC_IRQ_E2A_AC1_MSK | \ - IPC_IRQ_E2A_AC2_MSK | IPC_IRQ_E2A_AC3_MSK) +#define IPC_IRQ_E2A_AC_TXCFM \ + (IPC_IRQ_E2A_AC0_MSK | IPC_IRQ_E2A_AC1_MSK | IPC_IRQ_E2A_AC2_MSK | \ + IPC_IRQ_E2A_AC3_MSK) /// Interrupts bits used for the TX descriptors of the BCN queue #if NX_TXQ_CNT < 5 -#define IPC_IRQ_E2A_BCN_TXCFM 0 +#define IPC_IRQ_E2A_BCN_TXCFM 0 #else -#define IPC_IRQ_E2A_BCN_TXCFM (0x01 << IPC_IRQ_E2A_BCN_OFT) +#define IPC_IRQ_E2A_BCN_TXCFM (0x01 << IPC_IRQ_E2A_BCN_OFT) #endif /// IPC TX descriptor interrupt mask -#define IPC_IRQ_E2A_TXCFM (IPC_IRQ_E2A_AC_TXCFM | IPC_IRQ_E2A_BCN_TXCFM) +#define IPC_IRQ_E2A_TXCFM (IPC_IRQ_E2A_AC_TXCFM | IPC_IRQ_E2A_BCN_TXCFM) #else -#define IPC_IRQ_E2A_TXCFM (((1 << NX_TXQ_CNT) - 1) << IPC_IRQ_E2A_TXCFM_POS) +#define IPC_IRQ_E2A_TXCFM (((1 << NX_TXQ_CNT) - 1) << IPC_IRQ_E2A_TXCFM_POS) #endif /* CONFIG_RWNX_MUMIMO_TX */ -#define IPC_IRQ_E2A_UNSUP_RX_VEC CO_BIT(7) -#define IPC_IRQ_E2A_RADAR CO_BIT(6) -#define IPC_IRQ_E2A_TBTT_SEC CO_BIT(5) -#define IPC_IRQ_E2A_TBTT_PRIM CO_BIT(4) -#define IPC_IRQ_E2A_RXDESC CO_BIT(3) -#define IPC_IRQ_E2A_MSG_ACK CO_BIT(2) -#define IPC_IRQ_E2A_MSG CO_BIT(1) -#define IPC_IRQ_E2A_DBG CO_BIT(0) +#define IPC_IRQ_E2A_UNSUP_RX_VEC CO_BIT(7) +#define IPC_IRQ_E2A_RADAR CO_BIT(6) +#define IPC_IRQ_E2A_TBTT_SEC CO_BIT(5) +#define IPC_IRQ_E2A_TBTT_PRIM CO_BIT(4) +#define IPC_IRQ_E2A_RXDESC CO_BIT(3) +#define IPC_IRQ_E2A_MSG_ACK CO_BIT(2) +#define IPC_IRQ_E2A_MSG CO_BIT(1) +#define IPC_IRQ_E2A_DBG CO_BIT(0) -#define IPC_IRQ_E2A_ALL (IPC_IRQ_E2A_TXCFM \ - | IPC_IRQ_E2A_RXDESC \ - | IPC_IRQ_E2A_MSG_ACK \ - | IPC_IRQ_E2A_MSG \ - | IPC_IRQ_E2A_DBG \ - | IPC_IRQ_E2A_TBTT_PRIM \ - | IPC_IRQ_E2A_TBTT_SEC \ - | IPC_IRQ_E2A_RADAR \ - | IPC_IRQ_E2A_UNSUP_RX_VEC) +#define IPC_IRQ_E2A_ALL \ + (IPC_IRQ_E2A_TXCFM | IPC_IRQ_E2A_RXDESC | IPC_IRQ_E2A_MSG_ACK | \ + IPC_IRQ_E2A_MSG | IPC_IRQ_E2A_DBG | IPC_IRQ_E2A_TBTT_PRIM | \ + IPC_IRQ_E2A_TBTT_SEC | IPC_IRQ_E2A_RADAR | IPC_IRQ_E2A_UNSUP_RX_VEC) // FLAGS for RX desc -#define IPC_RX_FORWARD CO_BIT(1) -#define IPC_RX_INTRABSS CO_BIT(0) - +#define IPC_RX_FORWARD CO_BIT(1) +#define IPC_RX_INTRABSS CO_BIT(0) // IPC message TYPE enum { @@ -782,4 +782,3 @@ enum { }; #endif // _IPC_SHARED_H_ - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_mac.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_mac.h index 2753d4d23..caac5e116 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_mac.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_mac.h @@ -42,7 +42,7 @@ enum mac_vif_type { /// MAC address structure. struct mac_addr { /// Array of 16-bit words that make up the MAC address. - u16_l array[MAC_ADDR_LEN/2]; + u16_l array[MAC_ADDR_LEN / 2]; }; /// SSID maximum length. @@ -241,29 +241,29 @@ struct mac_scan_result { /// Legacy rate 802.11 definitions enum mac_legacy_rates { /// DSSS/CCK 1Mbps - MAC_RATE_1MBPS = 2, + MAC_RATE_1MBPS = 2, /// DSSS/CCK 2Mbps - MAC_RATE_2MBPS = 4, + MAC_RATE_2MBPS = 4, /// DSSS/CCK 5.5Mbps - MAC_RATE_5_5MBPS = 11, + MAC_RATE_5_5MBPS = 11, /// OFDM 6Mbps - MAC_RATE_6MBPS = 12, + MAC_RATE_6MBPS = 12, /// OFDM 9Mbps - MAC_RATE_9MBPS = 18, + MAC_RATE_9MBPS = 18, /// DSSS/CCK 11Mbps - MAC_RATE_11MBPS = 22, + MAC_RATE_11MBPS = 22, /// OFDM 12Mbps - MAC_RATE_12MBPS = 24, + MAC_RATE_12MBPS = 24, /// OFDM 18Mbps - MAC_RATE_18MBPS = 36, + MAC_RATE_18MBPS = 36, /// OFDM 24Mbps - MAC_RATE_24MBPS = 48, + MAC_RATE_24MBPS = 48, /// OFDM 36Mbps - MAC_RATE_36MBPS = 72, + MAC_RATE_36MBPS = 72, /// OFDM 48Mbps - MAC_RATE_48MBPS = 96, + MAC_RATE_48MBPS = 96, /// OFDM 54Mbps - MAC_RATE_54MBPS = 108 + MAC_RATE_54MBPS = 108 }; /// BSS Membership Selector definitions @@ -286,14 +286,14 @@ struct mac_rateset { }; /// MAC Security Key maximum length -#define MAC_SEC_KEY_LEN 32 // TKIP keys 256 bits (max length) with MIC keys +#define MAC_SEC_KEY_LEN 32 // TKIP keys 256 bits (max length) with MIC keys /// Structure defining a security key struct mac_sec_key { /// Key material length u8_l length; /// Key material - u32_l array[MAC_SEC_KEY_LEN/4]; + u32_l array[MAC_SEC_KEY_LEN / 4]; }; /// Access Category enumeration @@ -435,38 +435,38 @@ enum mac_connection_flags { }; #ifdef CONFIG_HE_FOR_OLD_KERNEL -#define IEEE80211_HE_MAC_CAP2_ALL_ACK 0x02 -#define IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G 0x02 -#define IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G 0x04 -#define IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD 0x20 -#define IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US 0x40 -#define IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS 0x80 -#define IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS 0x01 -#define IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US 0x02 -#define IEEE80211_HE_PHY_CAP2_DOPPLER_RX 0x20 -#define IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ 0x08 -#define IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM 0x18 -#define IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 0x00 -#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA 0x40 -#define IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE 0x01 -#define IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4 0x0c -#define IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK 0x40 -#define IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK 0x80 -#define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU 0x01 -#define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU 0x02 -#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB 0x04 -#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB 0x08 -#define IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT 0x80 -#define IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO 0x40 -#define IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI 0x04 -#define IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G 0x02 -#define IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB 0x10 -#define IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB 0x20 +#define IEEE80211_HE_MAC_CAP2_ALL_ACK 0x02 +#define IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G 0x02 +#define IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G 0x04 +#define IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD 0x20 +#define IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US 0x40 +#define IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS 0x80 +#define IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS 0x01 +#define IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US 0x02 +#define IEEE80211_HE_PHY_CAP2_DOPPLER_RX 0x20 +#define IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ 0x08 +#define IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM 0x18 +#define IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 0x00 +#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA 0x40 +#define IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE 0x01 +#define IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4 0x0c +#define IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK 0x40 +#define IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK 0x80 +#define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU 0x01 +#define IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU 0x02 +#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB 0x04 +#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB 0x08 +#define IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT 0x80 +#define IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO 0x40 +#define IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI 0x04 +#define IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G 0x02 +#define IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB 0x10 +#define IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB 0x20 -#define IEEE80211_HE_PPE_THRES_MAX_LEN 25 +#define IEEE80211_HE_PPE_THRES_MAX_LEN 25 #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) -#define WLAN_EID_EXTENSION 255 +#define WLAN_EID_EXTENSION 255 /* Element ID Extensions for Element ID 255 */ enum ieee80211_eid_ext { @@ -487,30 +487,29 @@ enum ieee80211_eid_ext { #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) -#define WLAN_EID_EXT_HE_CAPABILITY 35 -#define WLAN_EID_EXT_HE_OPERATION 36 -#define WLAN_EID_EXT_UORA 37 -#define WLAN_EID_EXT_HE_MU_EDCA 38 -#define WLAN_EID_EXT_HE_SPR 39 -#define WLAN_EID_EXT_NDP_FEEDBACK_REPORT_PARAMSET 41 -#define WLAN_EID_EXT_BSS_COLOR_CHG_ANN 42 -#define WLAN_EID_EXT_QUIET_TIME_PERIOD_SETUP 43 -#define WLAN_EID_EXT_ESS_REPORT 45 -#define WLAN_EID_EXT_OPS 46 -#define WLAN_EID_EXT_HE_BSS_LOAD 47 -#define WLAN_EID_EXT_MAX_CHANNEL_SWITCH_TIME 52 -#define WLAN_EID_EXT_MULTIPLE_BSSID_CONFIGURATION 55 -#define WLAN_EID_EXT_NON_INHERITANCE 56 -#define WLAN_EID_EXT_KNOWN_BSSID 57 -#define WLAN_EID_EXT_SHORT_SSID_LIST 58 -#define WLAN_EID_EXT_HE_6GHZ_CAPA 59 -#define WLAN_EID_EXT_UL_MU_POWER_CAPA 60 -#define WLAN_EID_EXT_EHT_OPERATION 106 -#define WLAN_EID_EXT_EHT_MULTI_LINK 107 -#define WLAN_EID_EXT_EHT_CAPABILITY 108 +#define WLAN_EID_EXT_HE_CAPABILITY 35 +#define WLAN_EID_EXT_HE_OPERATION 36 +#define WLAN_EID_EXT_UORA 37 +#define WLAN_EID_EXT_HE_MU_EDCA 38 +#define WLAN_EID_EXT_HE_SPR 39 +#define WLAN_EID_EXT_NDP_FEEDBACK_REPORT_PARAMSET 41 +#define WLAN_EID_EXT_BSS_COLOR_CHG_ANN 42 +#define WLAN_EID_EXT_QUIET_TIME_PERIOD_SETUP 43 +#define WLAN_EID_EXT_ESS_REPORT 45 +#define WLAN_EID_EXT_OPS 46 +#define WLAN_EID_EXT_HE_BSS_LOAD 47 +#define WLAN_EID_EXT_MAX_CHANNEL_SWITCH_TIME 52 +#define WLAN_EID_EXT_MULTIPLE_BSSID_CONFIGURATION 55 +#define WLAN_EID_EXT_NON_INHERITANCE 56 +#define WLAN_EID_EXT_KNOWN_BSSID 57 +#define WLAN_EID_EXT_SHORT_SSID_LIST 58 +#define WLAN_EID_EXT_HE_6GHZ_CAPA 59 +#define WLAN_EID_EXT_UL_MU_POWER_CAPA 60 +#define WLAN_EID_EXT_EHT_OPERATION 106 +#define WLAN_EID_EXT_EHT_MULTI_LINK 107 +#define WLAN_EID_EXT_EHT_CAPABILITY 108 #endif - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) #include #else @@ -541,7 +540,8 @@ struct ieee80211_sband_iftype_data { }; #endif #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) struct ieee80211_vht_mcs_info { __le16 rx_mcs_map; __le16 rx_highest; @@ -553,7 +553,7 @@ struct ieee80211_vht_cap { __le32 vht_cap_info; struct ieee80211_vht_mcs_info supp_mcs; }; -#define WLAN_EID_VHT_CAPABILITY 191 +#define WLAN_EID_VHT_CAPABILITY 191 struct ieee80211_sta_vht_cap { bool vht_supported; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_msg.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_msg.h index 92452942d..f5aa6e3af 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_msg.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_msg.h @@ -20,6 +20,8 @@ // for MAC related elements (mac_addr, mac_ssid...) #include "lmac_mac.h" +#define LMAC_MSG_MAX_LEN 1024 + /* **************************************************************************************** */ @@ -28,7 +30,7 @@ ///////////////////////////////////////////////////////////////////////////////// /* Task identifiers for communication between LMAC and DRIVER */ enum { - TASK_NONE = (u8_l) -1, + TASK_NONE = (u8_l)-1, // MAC Management task. TASK_MM = 0, @@ -54,8 +56,8 @@ enum { TASK_RXU, /// RM_task TASK_RM, - /// TWT task - TASK_TWT, + /// TWT task + TASK_TWT, #if defined CONFIG_RWNX_FULLMAC || defined CONFIG_RWNX_FHOST // This is used to define the last task that is running on the EMB processor TASK_LAST_EMB = TASK_TWT, @@ -67,7 +69,6 @@ enum { TASK_MAX, }; - /// For MAC HW States copied from "hal_machw.h" enum { /// MAC HW IDLE State. @@ -121,284 +122,292 @@ typedef u16 lmac_task_id_t; #define LMAC_FIRST_MSG(task) ((lmac_msg_id_t)((task) << 10)) #define MSG_T(msg) ((lmac_task_id_t)((msg) >> 10)) -#define MSG_I(msg) ((msg) & ((1<<10)-1)) +#define MSG_I(msg) ((msg) & ((1 << 10) - 1)) /// Message structure. struct lmac_msg { - lmac_msg_id_t id; ///< Message id. - lmac_task_id_t dest_id; ///< Destination kernel identifier. - lmac_task_id_t src_id; ///< Source kernel identifier. - u16 param_len; ///< Parameter embedded struct length. - u32 param[]; ///< Parameter embedded struct. Must be word-aligned. + lmac_msg_id_t id; ///< Message id. + lmac_task_id_t dest_id; ///< Destination kernel identifier. + lmac_task_id_t src_id; ///< Source kernel identifier. + u16 param_len; ///< Parameter embedded struct length. + u32 param[]; ///< Parameter embedded struct. Must be word-aligned. }; /// List of messages related to the task. enum mm_msg_tag { - /// RESET Request. - MM_RESET_REQ = LMAC_FIRST_MSG(TASK_MM), - /// RESET Confirmation. - MM_RESET_CFM, - /// START Request. - MM_START_REQ, - /// START Confirmation. - MM_START_CFM, - /// Read Version Request. - MM_VERSION_REQ, - /// Read Version Confirmation. - MM_VERSION_CFM, - /// ADD INTERFACE Request. - MM_ADD_IF_REQ, - /// ADD INTERFACE Confirmation. - MM_ADD_IF_CFM, - /// REMOVE INTERFACE Request. - MM_REMOVE_IF_REQ, - /// REMOVE INTERFACE Confirmation. - MM_REMOVE_IF_CFM, - /// STA ADD Request. - MM_STA_ADD_REQ, - /// STA ADD Confirm. - MM_STA_ADD_CFM, - /// STA DEL Request. - MM_STA_DEL_REQ, - /// STA DEL Confirm. - MM_STA_DEL_CFM, - /// RX FILTER CONFIGURATION Request. - MM_SET_FILTER_REQ, - /// RX FILTER CONFIGURATION Confirmation. - MM_SET_FILTER_CFM, - /// CHANNEL CONFIGURATION Request. - MM_SET_CHANNEL_REQ, - /// CHANNEL CONFIGURATION Confirmation. - MM_SET_CHANNEL_CFM, - /// DTIM PERIOD CONFIGURATION Request. - MM_SET_DTIM_REQ, - /// DTIM PERIOD CONFIGURATION Confirmation. - MM_SET_DTIM_CFM, - /// BEACON INTERVAL CONFIGURATION Request. - MM_SET_BEACON_INT_REQ, - /// BEACON INTERVAL CONFIGURATION Confirmation. - MM_SET_BEACON_INT_CFM, - /// BASIC RATES CONFIGURATION Request. - MM_SET_BASIC_RATES_REQ, - /// BASIC RATES CONFIGURATION Confirmation. - MM_SET_BASIC_RATES_CFM, - /// BSSID CONFIGURATION Request. - MM_SET_BSSID_REQ, - /// BSSID CONFIGURATION Confirmation. - MM_SET_BSSID_CFM, - /// EDCA PARAMETERS CONFIGURATION Request. - MM_SET_EDCA_REQ, - /// EDCA PARAMETERS CONFIGURATION Confirmation. - MM_SET_EDCA_CFM, - /// ABGN MODE CONFIGURATION Request. - MM_SET_MODE_REQ, - /// ABGN MODE CONFIGURATION Confirmation. - MM_SET_MODE_CFM, - /// Request setting the VIF active state (i.e associated or AP started) - MM_SET_VIF_STATE_REQ, - /// Confirmation of the @ref MM_SET_VIF_STATE_REQ message. - MM_SET_VIF_STATE_CFM, - /// SLOT TIME PARAMETERS CONFIGURATION Request. - MM_SET_SLOTTIME_REQ, - /// SLOT TIME PARAMETERS CONFIGURATION Confirmation. - MM_SET_SLOTTIME_CFM, - /// Power Mode Change Request. - MM_SET_IDLE_REQ, - /// Power Mode Change Confirm. - MM_SET_IDLE_CFM, - /// KEY ADD Request. - MM_KEY_ADD_REQ, - /// KEY ADD Confirm. - MM_KEY_ADD_CFM, - /// KEY DEL Request. - MM_KEY_DEL_REQ, - /// KEY DEL Confirm. - MM_KEY_DEL_CFM, - /// Block Ack agreement info addition - MM_BA_ADD_REQ, - /// Block Ack agreement info addition confirmation - MM_BA_ADD_CFM, - /// Block Ack agreement info deletion - MM_BA_DEL_REQ, - /// Block Ack agreement info deletion confirmation - MM_BA_DEL_CFM, - /// Indication of the primary TBTT to the upper MAC. Upon the reception of this - // message the upper MAC has to push the beacon(s) to the beacon transmission queue. - MM_PRIMARY_TBTT_IND, - /// Indication of the secondary TBTT to the upper MAC. Upon the reception of this - // message the upper MAC has to push the beacon(s) to the beacon transmission queue. - MM_SECONDARY_TBTT_IND, - /// Request for changing the TX power - MM_SET_POWER_REQ, - /// Confirmation of the TX power change - MM_SET_POWER_CFM, - /// Request to the LMAC to trigger the embedded logic analyzer and forward the debug - /// dump. - MM_DBG_TRIGGER_REQ, - /// Set Power Save mode - MM_SET_PS_MODE_REQ, - /// Set Power Save mode confirmation - MM_SET_PS_MODE_CFM, - /// Request to add a channel context - MM_CHAN_CTXT_ADD_REQ, - /// Confirmation of the channel context addition - MM_CHAN_CTXT_ADD_CFM, - /// Request to delete a channel context - MM_CHAN_CTXT_DEL_REQ, - /// Confirmation of the channel context deletion - MM_CHAN_CTXT_DEL_CFM, - /// Request to link a channel context to a VIF - MM_CHAN_CTXT_LINK_REQ, - /// Confirmation of the channel context link - MM_CHAN_CTXT_LINK_CFM, - /// Request to unlink a channel context from a VIF - MM_CHAN_CTXT_UNLINK_REQ, - /// Confirmation of the channel context unlink - MM_CHAN_CTXT_UNLINK_CFM, - /// Request to update a channel context - MM_CHAN_CTXT_UPDATE_REQ, - /// Confirmation of the channel context update - MM_CHAN_CTXT_UPDATE_CFM, - /// Request to schedule a channel context - MM_CHAN_CTXT_SCHED_REQ, - /// Confirmation of the channel context scheduling - MM_CHAN_CTXT_SCHED_CFM, - /// Request to change the beacon template in LMAC - MM_BCN_CHANGE_REQ, - /// Confirmation of the beacon change - MM_BCN_CHANGE_CFM, - /// Request to update the TIM in the beacon (i.e to indicate traffic bufferized at AP) - MM_TIM_UPDATE_REQ, - /// Confirmation of the TIM update - MM_TIM_UPDATE_CFM, - /// Connection loss indication - MM_CONNECTION_LOSS_IND, - /// Channel context switch indication to the upper layers - MM_CHANNEL_SWITCH_IND, - /// Channel context pre-switch indication to the upper layers - MM_CHANNEL_PRE_SWITCH_IND, - /// Request to remain on channel or cancel remain on channel - MM_REMAIN_ON_CHANNEL_REQ, - /// Confirmation of the (cancel) remain on channel request - MM_REMAIN_ON_CHANNEL_CFM, - /// Remain on channel expired indication - MM_REMAIN_ON_CHANNEL_EXP_IND, - /// Indication of a PS state change of a peer device - MM_PS_CHANGE_IND, - /// Indication that some buffered traffic should be sent to the peer device - MM_TRAFFIC_REQ_IND, - /// Request to modify the STA Power-save mode options - MM_SET_PS_OPTIONS_REQ, - /// Confirmation of the PS options setting - MM_SET_PS_OPTIONS_CFM, - /// Indication of PS state change for a P2P VIF - MM_P2P_VIF_PS_CHANGE_IND, - /// Indication that CSA counter has been updated - MM_CSA_COUNTER_IND, - /// Channel occupation report indication - MM_CHANNEL_SURVEY_IND, - /// Message containing Beamformer Information - MM_BFMER_ENABLE_REQ, - /// Request to Start/Stop/Update NOA - GO Only - MM_SET_P2P_NOA_REQ, - /// Request to Start/Stop/Update Opportunistic PS - GO Only - MM_SET_P2P_OPPPS_REQ, - /// Start/Stop/Update NOA Confirmation - MM_SET_P2P_NOA_CFM, - /// Start/Stop/Update Opportunistic PS Confirmation - MM_SET_P2P_OPPPS_CFM, - /// P2P NoA Update Indication - GO Only - MM_P2P_NOA_UPD_IND, - /// Request to set RSSI threshold and RSSI hysteresis - MM_CFG_RSSI_REQ, - /// Indication that RSSI level is below or above the threshold - MM_RSSI_STATUS_IND, - /// Indication that CSA is done - MM_CSA_FINISH_IND, - /// Indication that CSA is in prorgess (resp. done) and traffic must be stopped (resp. restarted) - MM_CSA_TRAFFIC_IND, - /// Request to update the group information of a station - MM_MU_GROUP_UPDATE_REQ, - /// Confirmation of the @ref MM_MU_GROUP_UPDATE_REQ message - MM_MU_GROUP_UPDATE_CFM, - /// Request to initialize the antenna diversity algorithm - MM_ANT_DIV_INIT_REQ, - /// Request to stop the antenna diversity algorithm - MM_ANT_DIV_STOP_REQ, - /// Request to update the antenna switch status - MM_ANT_DIV_UPDATE_REQ, - /// Request to switch the antenna connected to path_0 - MM_SWITCH_ANTENNA_REQ, - /// Indication that a packet loss has occurred - MM_PKTLOSS_IND, + /// RESET Request. + MM_RESET_REQ = LMAC_FIRST_MSG(TASK_MM), + /// RESET Confirmation. + MM_RESET_CFM, + /// START Request. + MM_START_REQ, + /// START Confirmation. + MM_START_CFM, + /// Read Version Request. + MM_VERSION_REQ, + /// Read Version Confirmation. + MM_VERSION_CFM, + /// ADD INTERFACE Request. + MM_ADD_IF_REQ, + /// ADD INTERFACE Confirmation. + MM_ADD_IF_CFM, + /// REMOVE INTERFACE Request. + MM_REMOVE_IF_REQ, + /// REMOVE INTERFACE Confirmation. + MM_REMOVE_IF_CFM, + /// STA ADD Request. + MM_STA_ADD_REQ, + /// STA ADD Confirm. + MM_STA_ADD_CFM, + /// STA DEL Request. + MM_STA_DEL_REQ, + /// STA DEL Confirm. + MM_STA_DEL_CFM, + /// RX FILTER CONFIGURATION Request. + MM_SET_FILTER_REQ, + /// RX FILTER CONFIGURATION Confirmation. + MM_SET_FILTER_CFM, + /// CHANNEL CONFIGURATION Request. + MM_SET_CHANNEL_REQ, + /// CHANNEL CONFIGURATION Confirmation. + MM_SET_CHANNEL_CFM, + /// DTIM PERIOD CONFIGURATION Request. + MM_SET_DTIM_REQ, + /// DTIM PERIOD CONFIGURATION Confirmation. + MM_SET_DTIM_CFM, + /// BEACON INTERVAL CONFIGURATION Request. + MM_SET_BEACON_INT_REQ, + /// BEACON INTERVAL CONFIGURATION Confirmation. + MM_SET_BEACON_INT_CFM, + /// BASIC RATES CONFIGURATION Request. + MM_SET_BASIC_RATES_REQ, + /// BASIC RATES CONFIGURATION Confirmation. + MM_SET_BASIC_RATES_CFM, + /// BSSID CONFIGURATION Request. + MM_SET_BSSID_REQ, + /// BSSID CONFIGURATION Confirmation. + MM_SET_BSSID_CFM, + /// EDCA PARAMETERS CONFIGURATION Request. + MM_SET_EDCA_REQ, + /// EDCA PARAMETERS CONFIGURATION Confirmation. + MM_SET_EDCA_CFM, + /// ABGN MODE CONFIGURATION Request. + MM_SET_MODE_REQ, + /// ABGN MODE CONFIGURATION Confirmation. + MM_SET_MODE_CFM, + /// Request setting the VIF active state (i.e associated or AP started) + MM_SET_VIF_STATE_REQ, + /// Confirmation of the @ref MM_SET_VIF_STATE_REQ message. + MM_SET_VIF_STATE_CFM, + /// SLOT TIME PARAMETERS CONFIGURATION Request. + MM_SET_SLOTTIME_REQ, + /// SLOT TIME PARAMETERS CONFIGURATION Confirmation. + MM_SET_SLOTTIME_CFM, + /// Power Mode Change Request. + MM_SET_IDLE_REQ, + /// Power Mode Change Confirm. + MM_SET_IDLE_CFM, + /// KEY ADD Request. + MM_KEY_ADD_REQ, + /// KEY ADD Confirm. + MM_KEY_ADD_CFM, + /// KEY DEL Request. + MM_KEY_DEL_REQ, + /// KEY DEL Confirm. + MM_KEY_DEL_CFM, + /// Block Ack agreement info addition + MM_BA_ADD_REQ, + /// Block Ack agreement info addition confirmation + MM_BA_ADD_CFM, + /// Block Ack agreement info deletion + MM_BA_DEL_REQ, + /// Block Ack agreement info deletion confirmation + MM_BA_DEL_CFM, + /// Indication of the primary TBTT to the upper MAC. Upon the reception of this + // message the upper MAC has to push the beacon(s) to the beacon transmission queue. + MM_PRIMARY_TBTT_IND, + /// Indication of the secondary TBTT to the upper MAC. Upon the reception of this + // message the upper MAC has to push the beacon(s) to the beacon transmission queue. + MM_SECONDARY_TBTT_IND, + /// Request for changing the TX power + MM_SET_POWER_REQ, + /// Confirmation of the TX power change + MM_SET_POWER_CFM, + /// Request to the LMAC to trigger the embedded logic analyzer and forward the debug + /// dump. + MM_DBG_TRIGGER_REQ, + /// Set Power Save mode + MM_SET_PS_MODE_REQ, + /// Set Power Save mode confirmation + MM_SET_PS_MODE_CFM, + /// Request to add a channel context + MM_CHAN_CTXT_ADD_REQ, + /// Confirmation of the channel context addition + MM_CHAN_CTXT_ADD_CFM, + /// Request to delete a channel context + MM_CHAN_CTXT_DEL_REQ, + /// Confirmation of the channel context deletion + MM_CHAN_CTXT_DEL_CFM, + /// Request to link a channel context to a VIF + MM_CHAN_CTXT_LINK_REQ, + /// Confirmation of the channel context link + MM_CHAN_CTXT_LINK_CFM, + /// Request to unlink a channel context from a VIF + MM_CHAN_CTXT_UNLINK_REQ, + /// Confirmation of the channel context unlink + MM_CHAN_CTXT_UNLINK_CFM, + /// Request to update a channel context + MM_CHAN_CTXT_UPDATE_REQ, + /// Confirmation of the channel context update + MM_CHAN_CTXT_UPDATE_CFM, + /// Request to schedule a channel context + MM_CHAN_CTXT_SCHED_REQ, + /// Confirmation of the channel context scheduling + MM_CHAN_CTXT_SCHED_CFM, + /// Request to change the beacon template in LMAC + MM_BCN_CHANGE_REQ, + /// Confirmation of the beacon change + MM_BCN_CHANGE_CFM, + /// Request to update the TIM in the beacon (i.e to indicate traffic bufferized at AP) + MM_TIM_UPDATE_REQ, + /// Confirmation of the TIM update + MM_TIM_UPDATE_CFM, + /// Connection loss indication + MM_CONNECTION_LOSS_IND, + /// Channel context switch indication to the upper layers + MM_CHANNEL_SWITCH_IND, + /// Channel context pre-switch indication to the upper layers + MM_CHANNEL_PRE_SWITCH_IND, + /// Request to remain on channel or cancel remain on channel + MM_REMAIN_ON_CHANNEL_REQ, + /// Confirmation of the (cancel) remain on channel request + MM_REMAIN_ON_CHANNEL_CFM, + /// Remain on channel expired indication + MM_REMAIN_ON_CHANNEL_EXP_IND, + /// Indication of a PS state change of a peer device + MM_PS_CHANGE_IND, + /// Indication that some buffered traffic should be sent to the peer device + MM_TRAFFIC_REQ_IND, + /// Request to modify the STA Power-save mode options + MM_SET_PS_OPTIONS_REQ, + /// Confirmation of the PS options setting + MM_SET_PS_OPTIONS_CFM, + /// Indication of PS state change for a P2P VIF + MM_P2P_VIF_PS_CHANGE_IND, + /// Indication that CSA counter has been updated + MM_CSA_COUNTER_IND, + /// Channel occupation report indication + MM_CHANNEL_SURVEY_IND, + /// Message containing Beamformer Information + MM_BFMER_ENABLE_REQ, + /// Request to Start/Stop/Update NOA - GO Only + MM_SET_P2P_NOA_REQ, + /// Request to Start/Stop/Update Opportunistic PS - GO Only + MM_SET_P2P_OPPPS_REQ, + /// Start/Stop/Update NOA Confirmation + MM_SET_P2P_NOA_CFM, + /// Start/Stop/Update Opportunistic PS Confirmation + MM_SET_P2P_OPPPS_CFM, + /// P2P NoA Update Indication - GO Only + MM_P2P_NOA_UPD_IND, + /// Request to set RSSI threshold and RSSI hysteresis + MM_CFG_RSSI_REQ, + /// Indication that RSSI level is below or above the threshold + MM_RSSI_STATUS_IND, + /// Indication that CSA is done + MM_CSA_FINISH_IND, + /// Indication that CSA is in prorgess (resp. done) and traffic must be stopped (resp. restarted) + MM_CSA_TRAFFIC_IND, + /// Request to update the group information of a station + MM_MU_GROUP_UPDATE_REQ, + /// Confirmation of the @ref MM_MU_GROUP_UPDATE_REQ message + MM_MU_GROUP_UPDATE_CFM, + /// Request to initialize the antenna diversity algorithm + MM_ANT_DIV_INIT_REQ, + /// Request to stop the antenna diversity algorithm + MM_ANT_DIV_STOP_REQ, + /// Request to update the antenna switch status + MM_ANT_DIV_UPDATE_REQ, + /// Request to switch the antenna connected to path_0 + MM_SWITCH_ANTENNA_REQ, + /// Indication that a packet loss has occurred + MM_PKTLOSS_IND, - MM_SET_ARPOFFLOAD_REQ, - MM_SET_ARPOFFLOAD_CFM, - MM_SET_AGG_DISABLE_REQ, - MM_SET_AGG_DISABLE_CFM, - MM_SET_COEX_REQ, - MM_SET_COEX_CFM, - MM_SET_RF_CONFIG_REQ, - MM_SET_RF_CONFIG_CFM, - MM_SET_RF_CALIB_REQ, - MM_SET_RF_CALIB_CFM, + MM_SET_ARPOFFLOAD_REQ, + MM_SET_ARPOFFLOAD_CFM, + MM_SET_AGG_DISABLE_REQ, + MM_SET_AGG_DISABLE_CFM, + MM_SET_COEX_REQ, + MM_SET_COEX_CFM, + MM_SET_RF_CONFIG_REQ, + MM_SET_RF_CONFIG_CFM, + MM_SET_RF_CALIB_REQ, + MM_SET_RF_CALIB_CFM, - /// MU EDCA PARAMETERS Configuration Request. - MM_SET_MU_EDCA_REQ, - /// MU EDCA PARAMETERS Configuration Confirmation. - MM_SET_MU_EDCA_CFM, - /// UORA PARAMETERS Configuration Request. - MM_SET_UORA_REQ, - /// UORA PARAMETERS Configuration Confirmation. - MM_SET_UORA_CFM, - /// TXOP RTS THRESHOLD Configuration Request. - MM_SET_TXOP_RTS_THRES_REQ, - /// TXOP RTS THRESHOLD Configuration Confirmation. - MM_SET_TXOP_RTS_THRES_CFM, - /// HE BSS Color Configuration Request. - MM_SET_BSS_COLOR_REQ, - /// HE BSS Color Configuration Confirmation. - MM_SET_BSS_COLOR_CFM, + /// MU EDCA PARAMETERS Configuration Request. + MM_SET_MU_EDCA_REQ, + /// MU EDCA PARAMETERS Configuration Confirmation. + MM_SET_MU_EDCA_CFM, + /// UORA PARAMETERS Configuration Request. + MM_SET_UORA_REQ, + /// UORA PARAMETERS Configuration Confirmation. + MM_SET_UORA_CFM, + /// TXOP RTS THRESHOLD Configuration Request. + MM_SET_TXOP_RTS_THRES_REQ, + /// TXOP RTS THRESHOLD Configuration Confirmation. + MM_SET_TXOP_RTS_THRES_CFM, + /// HE BSS Color Configuration Request. + MM_SET_BSS_COLOR_REQ, + /// HE BSS Color Configuration Confirmation. + MM_SET_BSS_COLOR_CFM, - MM_GET_MAC_ADDR_REQ, - MM_GET_MAC_ADDR_CFM, + MM_GET_MAC_ADDR_REQ, + MM_GET_MAC_ADDR_CFM, - MM_GET_STA_INFO_REQ, - MM_GET_STA_INFO_CFM, + MM_GET_STA_INFO_REQ, + MM_GET_STA_INFO_CFM, - MM_SET_TXPWR_IDX_LVL_REQ, - MM_SET_TXPWR_IDX_LVL_CFM, + MM_SET_TXPWR_IDX_LVL_REQ, + MM_SET_TXPWR_IDX_LVL_CFM, - MM_SET_TXPWR_OFST_REQ, - MM_SET_TXPWR_OFST_CFM, + MM_SET_TXPWR_OFST_REQ, + MM_SET_TXPWR_OFST_CFM, - MM_SET_STACK_START_REQ, - MM_SET_STACK_START_CFM, + MM_SET_STACK_START_REQ, + MM_SET_STACK_START_CFM, - MM_APM_STALOSS_IND, + MM_APM_STALOSS_IND, - MM_SET_VENDOR_HWCONFIG_REQ, - MM_SET_VENDOR_HWCONFIG_CFM, + MM_SET_VENDOR_HWCONFIG_REQ, + MM_SET_VENDOR_HWCONFIG_CFM, - MM_GET_FW_VERSION_REQ, - MM_GET_FW_VERSION_CFM, + MM_GET_FW_VERSION_REQ, + MM_GET_FW_VERSION_CFM, - MM_SET_RESUME_RESTORE_REQ, - MM_SET_RESUME_RESTORE_CFM, + MM_SET_RESUME_RESTORE_REQ, + MM_SET_RESUME_RESTORE_CFM, - MM_GET_WIFI_DISABLE_REQ, - MM_GET_WIFI_DISABLE_CFM, + MM_GET_WIFI_DISABLE_REQ, + MM_GET_WIFI_DISABLE_CFM, - MM_CFG_RSSI_CFM, + MM_CFG_RSSI_CFM, - MM_SET_VENDOR_SWCONFIG_REQ, - MM_SET_VENDOR_SWCONFIG_CFM, + MM_SET_VENDOR_SWCONFIG_REQ, + MM_SET_VENDOR_SWCONFIG_CFM, - MM_SET_TXPWR_LVL_ADJ_REQ, - MM_SET_TXPWR_LVL_ADJ_CFM, + MM_SET_TXPWR_LVL_ADJ_REQ, + MM_SET_TXPWR_LVL_ADJ_CFM, - /// MAX number of messages - MM_MAX, + MM_RADAR_DETECT_IND, + + MM_SET_APF_PROG_REQ, + MM_SET_APF_PROG_CFM, + + MM_GET_APF_PROG_REQ, + MM_GET_APF_PROG_CFM, + + /// MAX number of messages + MM_MAX, }; /// Interface types @@ -438,8 +447,8 @@ enum { /// Features supported by LMAC - Positions enum mm_features { /// Beaconing - MM_FEAT_BCN_BIT = 0, -/* + MM_FEAT_BCN_BIT = 0, + /* /// Autonomous Beacon Transmission MM_FEAT_AUTOBCN_BIT, /// Scan in LMAC @@ -456,15 +465,15 @@ enum mm_features { /// UAPSD MM_FEAT_UAPSD_BIT, /// DPSM -// MM_FEAT_DPSM_BIT, + // MM_FEAT_DPSM_BIT, /// A-MPDU MM_FEAT_AMPDU_BIT, /// A-MSDU MM_FEAT_AMSDU_BIT, /// Channel Context -// MM_FEAT_CHNL_CTXT_BIT, + // MM_FEAT_CHNL_CTXT_BIT, /// Packet reordering -// MM_FEAT_REORD_BIT, + // MM_FEAT_REORD_BIT, /// P2P MM_FEAT_P2P_BIT, /// P2P Go @@ -502,11 +511,11 @@ enum mm_features { /// HE (802.11ax) support MM_FEAT_HE_BIT, /// TWT support - MM_FEAT_TWT_BIT, + MM_FEAT_TWT_BIT, }; /// Maximum number of words in the configuration buffer -#define PHY_CFG_BUF_SIZE 16 +#define PHY_CFG_BUF_SIZE 16 /// Structure containing the parameters of the PHY configuration struct phy_cfg_tag { @@ -730,8 +739,8 @@ struct mm_version_cfm { /// Structure containing the parameters of the @ref MM_STA_ADD_REQ message. struct mm_sta_add_req { - /// Bitfield showing some capabilities of the STA (@ref enum mac_sta_flags) - u32_l capa_flags; + /// Bitfield showing some capabilities of the STA (@ref enum mac_sta_flags) + u32_l capa_flags; /// Maximum A-MPDU size, in bytes, for HE frames u32_l ampdu_size_max_he; /// Maximum A-MPDU size, in bytes, for VHT frames @@ -752,12 +761,12 @@ struct mm_sta_add_req { bool_l tdls_sta_initiator; /// Indicate if the TDLS Channel Switch is allowed bool_l tdls_chsw_allowed; - /// nonTransmitted BSSID index, set to the BSSID index in case the STA added is an AP - /// that is a nonTransmitted BSSID. Should be set to 0 otherwise - u8_l bssid_index; - /// Maximum BSSID indicator, valid if the STA added is an AP that is a nonTransmitted - /// BSSID - u8_l max_bssid_ind; + /// nonTransmitted BSSID index, set to the BSSID index in case the STA added is an AP + /// that is a nonTransmitted BSSID. Should be set to 0 otherwise + u8_l bssid_index; + /// Maximum BSSID indicator, valid if the STA added is an AP that is a nonTransmitted + /// BSSID + u8_l max_bssid_ind; }; /// Structure containing the parameters of the @ref MM_STA_ADD_CFM message. @@ -779,7 +788,7 @@ struct mm_sta_del_req { /// Structure containing the parameters of the @ref MM_STA_DEL_CFM message. struct mm_sta_del_cfm { /// Status of the operation (different from 0 if unsuccessful) - u8_l status; + u8_l status; }; /// Structure containing the parameters of the SET_POWER_MODE REQ message. @@ -790,7 +799,7 @@ struct mm_setpowermode_req { /// Structure containing the parameters of the SET_POWER_MODE CFM message. struct mm_setpowermode_cfm { - u8_l status; + u8_l status; }; /// Structure containing the parameters of the @ref MM_KEY_ADD REQ message. @@ -828,13 +837,13 @@ struct mm_key_del_req { /// Structure containing the parameters of the @ref MM_BA_ADD_REQ message. struct mm_ba_add_req { ///Type of agreement (0: TX, 1: RX) - u8_l type; + u8_l type; ///Index of peer station with which the agreement is made - u8_l sta_idx; + u8_l sta_idx; ///TID for which the agreement is made with peer station - u8_l tid; + u8_l tid; ///Buffer size - number of MPDUs that can be held in its buffer per TID - u8_l bufsz; + u8_l bufsz; /// Start sequence number negotiated during BA setup - the one in first aggregated MPDU counts more u16_l ssn; }; @@ -883,14 +892,12 @@ struct mm_chan_ctxt_add_cfm { u8_l index; }; - /// Structure containing the parameters of the @ref MM_CHAN_CTXT_DEL_REQ message struct mm_chan_ctxt_del_req { /// Index of the new channel context to be deleted u8_l index; }; - /// Structure containing the parameters of the @ref MM_CHAN_CTXT_LINK_REQ message struct mm_chan_ctxt_link_req { /// VIF index @@ -950,7 +957,6 @@ struct mm_connection_loss_ind { u8_l inst_nbr; }; - /// Structure containing the parameters of the @ref MM_DBG_TRIGGER_REQ message. struct mm_dbg_trigger_req { /// Error trace to be reported by the LMAC @@ -960,7 +966,7 @@ struct mm_dbg_trigger_req { /// Structure containing the parameters of the @ref MM_SET_PS_MODE_REQ message. struct mm_set_ps_mode_req { /// Power Save is activated or deactivated - u8_l new_state; + u8_l new_state; }; /// Structure containing the parameters of the @ref MM_BCN_CHANGE_REQ message. @@ -980,7 +986,6 @@ struct mm_bcn_change_req { u8_l csa_oft[BCN_MAX_CSA_CPT]; }; - /// Structure containing the parameters of the @ref MM_TIM_UPDATE_REQ message. struct mm_tim_update_req { /// Association ID of the STA the bit of which has to be updated (0 for BC/MC traffic) @@ -1034,18 +1039,17 @@ struct mm_remain_on_channel_exp_ind { /// Structure containing the parameters of the @ref MM_SET_UAPSD_TMR_REQ message. struct mm_set_uapsd_tmr_req { /// action: Start or Stop the timer - u8_l action; + u8_l action; /// timeout value, in milliseconds - u32_l timeout; + u32_l timeout; }; /// Structure containing the parameters of the @ref MM_SET_UAPSD_TMR_CFM message. struct mm_set_uapsd_tmr_cfm { /// Status of the operation (different from 0 if unsuccessful) - u8_l status; + u8_l status; }; - /// Structure containing the parameters of the @ref MM_PS_CHANGE_IND message struct mm_ps_change_ind { /// Index of the peer device that is switching its PS state @@ -1163,7 +1167,7 @@ struct mm_set_arpoffload_en_cfm { struct mm_set_agg_disable_req { u8_l disable; u8_l staidx; - u8_l disable_rx; + u8_l disable_rx; }; struct mm_set_coex_req { @@ -1186,13 +1190,12 @@ struct mm_set_rf_config_req { u32_l tx_gain[32]; }; #endif -struct mm_set_rf_config_req -{ - u8_l table_sel; - u8_l table_ofst; - u8_l table_num; +struct mm_set_rf_config_req { + u8_l table_sel; + u8_l table_ofst; + u8_l table_num; u8_l deft_page; - u32_l data[64]; + u32_l data[64]; }; struct mm_set_rf_calib_req { @@ -1227,67 +1230,81 @@ struct mm_get_sta_info_req { struct mm_get_sta_info_cfm { u32_l rate_info; u32_l txfailed; - u8 rssi; + u8 rssi; + u8 reserved[3]; + u32_l chan_busy_time; + u32_l ack_fail_stat; + u32_l ack_succ_stat; + u32_l chan_tx_busy_time; }; -typedef struct -{ - u8_l enable; - u8_l dsss; - u8_l ofdmlowrate_2g4; - u8_l ofdm64qam_2g4; - u8_l ofdm256qam_2g4; - u8_l ofdm1024qam_2g4; - u8_l ofdmlowrate_5g; - u8_l ofdm64qam_5g; - u8_l ofdm256qam_5g; - u8_l ofdm1024qam_5g; +typedef struct { + u8_l enable; + u8_l dsss; + u8_l ofdmlowrate_2g4; + u8_l ofdm64qam_2g4; + u8_l ofdm256qam_2g4; + u8_l ofdm1024qam_2g4; + u8_l ofdmlowrate_5g; + u8_l ofdm64qam_5g; + u8_l ofdm256qam_5g; + u8_l ofdm1024qam_5g; } txpwr_lvl_conf_t; -typedef struct -{ - u8_l enable; - s8_l pwrlvl_11b_11ag_2g4[12]; - s8_l pwrlvl_11n_11ac_2g4[10]; - s8_l pwrlvl_11ax_2g4[12]; +typedef struct { + u8_l enable; + s8_l pwrlvl_11b_11ag_2g4[12]; + s8_l pwrlvl_11n_11ac_2g4[10]; + s8_l pwrlvl_11ax_2g4[12]; } txpwr_lvl_conf_v2_t; -typedef struct -{ - u8_l enable; - s8_l pwrlvl_11b_11ag_2g4[12]; - s8_l pwrlvl_11n_11ac_2g4[10]; - s8_l pwrlvl_11ax_2g4[12]; - s8_l pwrlvl_11a_5g[12]; - s8_l pwrlvl_11n_11ac_5g[10]; - s8_l pwrlvl_11ax_5g[12]; +typedef struct { + u8_l enable; + s8_l pwrlvl_11b_11ag_2g4[12]; + s8_l pwrlvl_11n_11ac_2g4[10]; + s8_l pwrlvl_11ax_2g4[12]; + s8_l pwrlvl_11a_5g[12]; + s8_l pwrlvl_11n_11ac_5g[10]; + s8_l pwrlvl_11ax_5g[12]; } txpwr_lvl_conf_v3_t; -typedef struct -{ - u8_l enable; - s8_l pwrlvl_adj_tbl_2g4[3]; - s8_l pwrlvl_adj_tbl_5g[6]; +typedef struct { + u8_l enable; + s8_l pwrlvl_11b_11ag_2g4[12]; + s8_l pwrlvl_11n_11ac_2g4[10]; + s8_l pwrlvl_11ax_2g4[12]; + s8_l pwrlvl_11a_5g[8]; + s8_l pwrlvl_11n_11ac_5g[10]; + s8_l pwrlvl_11ax_5g[12]; + s8_l pwrlvl_11a_6g[8]; + s8_l pwrlvl_11n_11ac_6g[10]; + s8_l pwrlvl_11ax_6g[12]; +} txpwr_lvl_conf_v4_t; + +typedef struct { + u8_l enable; + s8_l pwrlvl_adj_tbl_2g4[3]; + s8_l pwrlvl_adj_tbl_5g[6]; } txpwr_lvl_adj_conf_t; -typedef struct -{ - u8_l loss_enable; - u8_l loss_value; +typedef struct { + u8_l loss_enable_2g4; + s8_l loss_value_2g4; + u8_l loss_enable_5g; + s8_l loss_value_5g; } txpwr_loss_conf_t; -struct mm_set_txpwr_lvl_req -{ - union { - txpwr_lvl_conf_t txpwr_lvl; - txpwr_lvl_conf_v2_t txpwr_lvl_v2; - txpwr_lvl_conf_v3_t txpwr_lvl_v3; - }; +struct mm_set_txpwr_lvl_req { + union { + txpwr_lvl_conf_t txpwr_lvl; + txpwr_lvl_conf_v2_t txpwr_lvl_v2; + txpwr_lvl_conf_v3_t txpwr_lvl_v3; + txpwr_lvl_conf_v4_t txpwr_lvl_v4; + }; }; -struct mm_set_txpwr_lvl_adj_req -{ - txpwr_lvl_adj_conf_t txpwr_lvl_adj; +struct mm_set_txpwr_lvl_adj_req { + txpwr_lvl_adj_conf_t txpwr_lvl_adj; }; typedef struct { @@ -1341,25 +1358,63 @@ typedef struct { * +---------------+--------------+--------------+----------------+----------------+----------------+----------------+ */ -typedef struct -{ - int8_t enable; - int8_t pwrofst2x_tbl_2g4[3][3]; - int8_t pwrofst2x_tbl_5g[3][6]; +typedef struct { + int8_t enable; + int8_t pwrofst2x_tbl_2g4[3][3]; + int8_t pwrofst2x_tbl_5g[3][6]; } txpwr_ofst2x_conf_t; -typedef struct -{ - u8_l enable; - u8_l xtal_cap; - u8_l xtal_cap_fine; -} xtal_cap_conf_t; +/* + * pwrofst2x_v2_tbl_2g4_ant0/1[3][3]: + * +---------------+----------+---------------+--------------+ + * | ChGrp\RateTyp | DSSS | OFDM_HIGHRATE | OFDM_LOWRATE | + * +---------------+----------+---------------+--------------+ + * | CH_1_4 | [0][0] | [0][1] | Reserved | + * +---------------+----------+---------------+--------------+ + * | CH_5_9 | [1][0] | [1][1] | Reserved | + * +---------------+----------+---------------+--------------+ + * | CH_10_13 | [2][0] | [2][1] | Reserved | + * +---------------+----------+---------------+--------------+ + * pwrofst2x_v2_tbl_5g_ant0/1[6][3]: + * +-----------------+---------------+--------------+--------------+ + * | ChGrp\RateTyp | OFDM_HIGHRATE | OFDM_LOWRATE | OFDM_MIDRATE | + * +-----------------+---------------+--------------+--------------+ + * | CH_42(36~50) | [0][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_58(51~64) | [1][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_106(98~114) | [2][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_122(115~130) | [3][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_138(131~146) | [4][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_155(147~166) | [5][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + */ +typedef struct { + u8_l enable; + u8_l pwrofst_flags; + s8_l pwrofst2x_tbl_2g4_ant0[3][3]; + s8_l pwrofst2x_tbl_2g4_ant1[3][3]; + s8_l pwrofst2x_tbl_5g_ant0[6][3]; + s8_l pwrofst2x_tbl_5g_ant1[6][3]; + s8_l pwrofst2x_tbl_6g_ant0[15]; + s8_l pwrofst2x_tbl_6g_ant1[15]; +} txpwr_ofst2x_conf_v2_t; + +typedef struct { + u8_l enable; + u8_l xtal_cap; + u8_l xtal_cap_fine; +} xtal_cap_conf_t; struct mm_set_txpwr_ofst_req { union { - txpwr_ofst_conf_t txpwr_ofst; - txpwr_ofst2x_conf_t txpwr_ofst2x; + txpwr_ofst_conf_t txpwr_ofst; + txpwr_ofst2x_conf_t txpwr_ofst2x; + txpwr_ofst2x_conf_v2_t txpwr_ofst2x_v2; }; }; @@ -1497,7 +1552,7 @@ enum scan_msg_tag { }; /// Maximum number of SSIDs in a scan request -#define SCAN_SSID_MAX 3 +#define SCAN_SSID_MAX 3 /// Maximum number of channels in a scan request #define SCAN_CHANNEL_MAX (MAC_DOMAINCHANNEL_24G_MAX + MAC_DOMAINCHANNEL_5G_MAX) @@ -1529,8 +1584,8 @@ struct scan_start_req { u8_l ssid_cnt; /// no CCK - For P2P frames not being sent at CCK rate in 2GHz band. bool no_cck; - /// Scan duration, in us - u32_l duration; + /// Scan duration, in us + u32_l duration; }; /// Structure containing the parameters of the @ref SCAN_START_CFM message @@ -1540,8 +1595,7 @@ struct scan_start_cfm { }; /// Structure containing the parameters of the @ref SCAN_CANCEL_REQ message -struct scan_cancel_req { -}; +struct scan_cancel_req {}; /// Structure containing the parameters of the @ref SCAN_START_CFM message struct scan_cancel_cfm { @@ -1580,7 +1634,7 @@ enum { }; /// Maximum length of the additional ProbeReq IEs (FullMAC mode) -#define SCANU_MAX_IE_LEN 200 +#define SCANU_MAX_IE_LEN 200 /// Structure containing the parameters of the @ref SCANU_START_REQ message struct scanu_start_req { @@ -1603,14 +1657,14 @@ struct scanu_start_req { u8_l ssid_cnt; /// no CCK - For P2P frames not being sent at CCK rate in 2GHz band. bool no_cck; - /// Scan duration, in us - u32_l duration; + /// Scan duration, in us + u32_l duration; }; struct scanu_vendor_ie_req { u16_l add_ie_len; u8_l vif_idx; - u8_l ie[256]; + u8_l ie[256]; }; /// Structure containing the parameters of the @ref SCANU_START_CFM message @@ -1847,22 +1901,20 @@ struct me_traffic_ind_req { bool_l uapsd; }; -struct mm_apm_staloss_ind -{ +struct mm_apm_staloss_ind { u8_l sta_idx; u8_l vif_idx; u8_l mac_addr[6]; }; #ifdef CONFIG_SDIO_BT -struct mm_bt_recv_ind -{ +struct mm_bt_recv_ind { u32_l data_len; u8_l bt_data[1024]; }; #endif -enum vendor_hwconfig_tag{ +enum vendor_hwconfig_tag { ACS_TXOP_REQ = 0, CHANNEL_ACCESS_REQ, MAC_TIMESCALE_REQ, @@ -1876,104 +1928,91 @@ enum vendor_hwconfig_tag{ }; enum { - BWMODE20M = 0, - BWMODE10M, - BWMODE5M, + BWMODE20M = 0, + BWMODE10M, + BWMODE5M, }; -struct mm_set_acs_txop_req -{ - u32_l hwconfig_id; +struct mm_set_acs_txop_req { + u32_l hwconfig_id; u16_l txop_bk; u16_l txop_be; u16_l txop_vi; u16_l txop_vo; }; -struct mm_set_channel_access_req -{ - u32_l hwconfig_id; +struct mm_set_channel_access_req { + u32_l hwconfig_id; u32_l edca[4]; - u8_l vif_idx; - u8_l retry_cnt; - u8_l rts_en; - u8_l long_nav_en; - u8_l cfe_en; - u8_l rc_retry_cnt[3]; + u8_l vif_idx; + u8_l retry_cnt; + u8_l rts_en; + u8_l long_nav_en; + u8_l cfe_en; + u8_l rc_retry_cnt[3]; s8_l ccademod_th; + u8_l remove_1m2m; }; -struct mm_set_mac_timescale_req -{ - u32_l hwconfig_id; - u8_l sifsA_time; - u8_l sifsB_time; - u8_l slot_time; - u8_l rx_startdelay_ofdm; - u8_l rx_startdelay_long; - u8_l rx_startdelay_short; +struct mm_set_mac_timescale_req { + u32_l hwconfig_id; + u8_l sifsA_time; + u8_l sifsB_time; + u8_l slot_time; + u8_l rx_startdelay_ofdm; + u8_l rx_startdelay_long; + u8_l rx_startdelay_short; }; -struct mm_set_cca_threshold_req -{ - u32_l hwconfig_id; - u8_l auto_cca_en; - s8_l cca20p_rise_th; - s8_l cca20s_rise_th; - s8_l cca20p_fall_th; - s8_l cca20s_fall_th; - +struct mm_set_cca_threshold_req { + u32_l hwconfig_id; + u8_l auto_cca_en; + s8_l cca20p_rise_th; + s8_l cca20s_rise_th; + s8_l cca20p_fall_th; + s8_l cca20s_fall_th; }; -struct mm_set_bwmode_req -{ - u32_l hwconfig_id; - u8_l bwmode; +struct mm_set_bwmode_req { + u32_l hwconfig_id; + u8_l bwmode; }; -struct mm_get_chip_temp_req -{ - u32_l hwconfig_id; +struct mm_get_chip_temp_req { + u32_l hwconfig_id; }; -struct mm_get_chip_temp_cfm -{ - /// Temp degree val - s8_l degree; +struct mm_get_chip_temp_cfm { + /// Temp degree val + s8_l degree; }; -struct mm_set_ap_ps_level_req -{ - u32_l hwconfig_id; - u8 ap_ps_level; +struct mm_set_ap_ps_level_req { + u32_l hwconfig_id; + u8 ap_ps_level; }; -struct mm_set_vendor_hwconfig_cfm -{ - u32_l hwconfig_id; - union { - struct mm_get_chip_temp_cfm chip_temp_cfm; - }; +struct mm_set_vendor_hwconfig_cfm { + u32_l hwconfig_id; + union { + struct mm_get_chip_temp_cfm chip_temp_cfm; + }; }; -struct mm_set_customized_freq_req -{ +struct mm_set_customized_freq_req { u32_l hwconfig_id; u16_l raw_freq[4]; u16_l map_freq[4]; }; -struct mm_set_wakeup_info_req -{ +struct mm_set_wakeup_info_req { u32_l hwconfig_id; u16_l offset; - u8_l length; - u8_l mask_and_patten[]; - + u8_l length; + u8_l mask_and_patten[]; }; -struct mm_set_keepalive_req -{ +struct mm_set_keepalive_req { u32_l hwconfig_id; u16_l code; u16_l length; @@ -1981,130 +2020,128 @@ struct mm_set_keepalive_req u8_l payload[]; }; -struct mm_set_txop_req -{ +struct mm_set_txop_req { u16_l txop_bk; u16_l txop_be; u16_l txop_vi; u16_l txop_vo; - u8_l long_nav_en; - u8_l cfe_en; + u8_l long_nav_en; + u8_l cfe_en; }; -struct mm_get_fw_version_cfm -{ - u8_l fw_version_len; - u8_l fw_version[63]; +#ifdef CONFIG_APF +struct mm_set_apf_prog_req { + u32_l program_len; + u32_l offset; + u8_l program[LMAC_MSG_MAX_LEN]; }; -struct mm_get_wifi_disable_cfm -{ - u8_l wifi_disable; +struct mm_get_apf_prog_req { + u16_l offset; }; -enum vendor_swconfig_tag -{ - BCN_CFG_REQ = 0, - TEMP_COMP_SET_REQ, - TEMP_COMP_GET_REQ, - EXT_FLAGS_SET_REQ, - EXT_FLAGS_GET_REQ, - EXT_FLAGS_MASK_SET_REQ, +struct mm_get_apf_prog_cfm { + u8_l program[LMAC_MSG_MAX_LEN]; +}; +#endif + +struct mm_get_fw_version_cfm { + u8_l fw_version_len; + u8_l fw_version[63]; }; -struct mm_set_bcn_cfg_req -{ - /// Ignore or not bcn tim bcmc bit - bool_l tim_bcmc_ignored_enable; +struct mm_get_wifi_disable_cfm { + u8_l wifi_disable; }; -struct mm_set_bcn_cfg_cfm -{ - /// Request status - bool_l tim_bcmc_ignored_status; +enum vendor_swconfig_tag { + BCN_CFG_REQ = 0, + TEMP_COMP_SET_REQ, + TEMP_COMP_GET_REQ, + EXT_FLAGS_SET_REQ, + EXT_FLAGS_GET_REQ, + EXT_FLAGS_MASK_SET_REQ, }; -struct mm_set_temp_comp_req -{ - /// Enable or not temp comp - u8_l enable; - u8_l reserved[3]; - u32_l tmr_period_ms; +struct mm_set_bcn_cfg_req { + /// Ignore or not bcn tim bcmc bit + bool_l tim_bcmc_ignored_enable; }; -struct mm_set_temp_comp_cfm -{ - /// Request status - u8_l status; +struct mm_set_bcn_cfg_cfm { + /// Request status + bool_l tim_bcmc_ignored_status; }; -struct mm_get_temp_comp_cfm -{ - /// Request status - u8_l status; - /// Temp degree val - s8_l degree; +struct mm_set_temp_comp_req { + /// Enable or not temp comp + u8_l enable; + u8_l reserved[3]; + u32_l tmr_period_ms; }; -struct mm_set_ext_flags_req -{ - u32_l user_flags; +struct mm_set_temp_comp_cfm { + /// Request status + u8_l status; }; -struct mm_set_ext_flags_cfm -{ - u32_l user_flags; +struct mm_get_temp_comp_cfm { + /// Request status + u8_l status; + /// Temp degree val + s8_l degree; }; -struct mm_get_ext_flags_cfm -{ - u32_l user_flags; +struct mm_set_ext_flags_req { + u32_l user_flags; }; -struct mm_mask_set_ext_flags_req -{ - u32_l user_flags_mask; - u32_l user_flags_val; +struct mm_set_ext_flags_cfm { + u32_l user_flags; }; -struct mm_mask_set_ext_flags_cfm -{ - u32_l user_flags; +struct mm_get_ext_flags_cfm { + u32_l user_flags; }; -struct mm_set_vendor_swconfig_req -{ - u32_l swconfig_id; - union { - struct mm_set_bcn_cfg_req bcn_cfg_req; - struct mm_set_temp_comp_req temp_comp_set_req; - struct mm_set_ext_flags_req ext_flags_set_req; - struct mm_mask_set_ext_flags_req ext_flags_mask_set_req; - }; +struct mm_mask_set_ext_flags_req { + u32_l user_flags_mask; + u32_l user_flags_val; }; -struct mm_set_vendor_swconfig_cfm -{ - u32_l swconfig_id; - union { - struct mm_set_bcn_cfg_cfm bcn_cfg_cfm; - struct mm_set_temp_comp_cfm temp_comp_set_cfm; - struct mm_get_temp_comp_cfm temp_comp_get_cfm; - struct mm_set_ext_flags_cfm ext_flags_set_cfm; - struct mm_get_ext_flags_cfm ext_flags_get_cfm; - struct mm_mask_set_ext_flags_cfm ext_flags_mask_set_cfm; - }; +struct mm_mask_set_ext_flags_cfm { + u32_l user_flags; +}; + +struct mm_set_vendor_swconfig_req { + u32_l swconfig_id; + union { + struct mm_set_bcn_cfg_req bcn_cfg_req; + struct mm_set_temp_comp_req temp_comp_set_req; + struct mm_set_ext_flags_req ext_flags_set_req; + struct mm_mask_set_ext_flags_req ext_flags_mask_set_req; + }; +}; + +struct mm_set_vendor_swconfig_cfm { + u32_l swconfig_id; + union { + struct mm_set_bcn_cfg_cfm bcn_cfg_cfm; + struct mm_set_temp_comp_cfm temp_comp_set_cfm; + struct mm_get_temp_comp_cfm temp_comp_get_cfm; + struct mm_set_ext_flags_cfm ext_flags_set_cfm; + struct mm_get_ext_flags_cfm ext_flags_get_cfm; + struct mm_mask_set_ext_flags_cfm ext_flags_mask_set_cfm; + }; }; #ifdef CONFIG_SDIO_BT -struct mm_bt_send_req -{ +struct mm_bt_send_req { u32_l data_len; u8_l bt_data[1024]; }; -struct mm_bt_send_cfm -{ +struct mm_bt_send_cfm { u8_l status; }; #endif @@ -2128,9 +2165,9 @@ struct rc_rate_stats { union { struct { /// Number of times the sample has been skipped (per sampling interval) - u8_l sample_skipped; + u8_l sample_skipped; /// Whether the old probability is available - bool_l old_prob_available; + bool_l old_prob_available; /// Whether the rate can be used in the retry chain bool_l rate_allowed; }; @@ -2201,16 +2238,16 @@ struct me_config_monitor_cfm { /// Structure containing the parameters of the @ref ME_SET_PS_MODE_REQ message. struct me_set_ps_mode_req { /// Power Save is activated or deactivated - u8_l ps_state; + u8_l ps_state; }; /// Structure containing the parameters of the @ref ME_SET_LP_LEVEL_REQ message. struct me_set_lp_level_req { /// Low Power level u8_l lp_level; + u8_l disable_filter; }; - /////////////////////////////////////////////////////////////////////////////// /////////// For SM messages /////////////////////////////////////////////////////////////////////////////// @@ -2283,7 +2320,7 @@ struct sm_connect_cfm { u8_l status; }; -#define SM_ASSOC_IE_LEN 800 +#define SM_ASSOC_IE_LEN 800 /// Structure containing the parameters of the @ref SM_CONNECT_IND message. struct sm_connect_ind { /// Status code of the connection procedure @@ -2307,7 +2344,7 @@ struct sm_connect_ind { /// Length of the AssocRsp IEs u16_l assoc_rsp_ie_len; /// IE buffer - u32_l assoc_ie_buf[SM_ASSOC_IE_LEN/4]; + u32_l assoc_ie_buf[SM_ASSOC_IE_LEN / 4]; u16_l aid; u8_l band; @@ -2331,10 +2368,9 @@ struct sm_disconnect_req { /// Structure containing the parameters of SM_ASSOCIATION_IND the message struct sm_association_ind { // MAC ADDR of the STA - struct mac_addr me_mac_addr; + struct mac_addr me_mac_addr; }; - /// Structure containing the parameters of the @ref SM_DISCONNECT_IND message. struct sm_disconnect_ind { /// Reason of the disconnection. @@ -2452,13 +2488,13 @@ struct apm_stop_req { /// Structure containing the parameters of the @ref APM_START_CAC_REQ message. struct apm_start_cac_req { /// Control channel on which we have to start the CAC - struct mac_chan_def chan; + struct mac_chan_op chan; /// Center frequency of the first segment - u32_l center_freq1; + //u32_l center_freq1; /// Center frequency of the second segment (only in 80+80 configuration) - u32_l center_freq2; + //u32_l center_freq2; /// Width of channel - u8_l ch_width; + //u8_l ch_width; /// Index of the VIF for which the CAC is started u8_l vif_idx; }; @@ -2482,59 +2518,57 @@ struct apm_stop_cac_req { /////////////////////////////////////////////////////////////////////////////// /// Maximum length of the Mesh ID -#define MESH_MESHID_MAX_LEN (32) +#define MESH_MESHID_MAX_LEN (32) /// Message API of the MESH task -enum mesh_msg_tag -{ - /// Request to start the MP - MESH_START_REQ = LMAC_FIRST_MSG(TASK_MESH), - /// Confirmation of the MP start. - MESH_START_CFM, +enum mesh_msg_tag { + /// Request to start the MP + MESH_START_REQ = LMAC_FIRST_MSG(TASK_MESH), + /// Confirmation of the MP start. + MESH_START_CFM, - /// Request to stop the MP. - MESH_STOP_REQ, - /// Confirmation of the MP stop. - MESH_STOP_CFM, + /// Request to stop the MP. + MESH_STOP_REQ, + /// Confirmation of the MP stop. + MESH_STOP_CFM, - // Request to update the MP - MESH_UPDATE_REQ, - /// Confirmation of the MP update - MESH_UPDATE_CFM, + // Request to update the MP + MESH_UPDATE_REQ, + /// Confirmation of the MP update + MESH_UPDATE_CFM, - /// Request information about a given link - MESH_PEER_INFO_REQ, - /// Response to the MESH_PEER_INFO_REQ message - MESH_PEER_INFO_CFM, + /// Request information about a given link + MESH_PEER_INFO_REQ, + /// Response to the MESH_PEER_INFO_REQ message + MESH_PEER_INFO_CFM, - /// Request automatic establishment of a path with a given mesh STA - MESH_PATH_CREATE_REQ, - /// Confirmation to the MESH_PATH_CREATE_REQ message - MESH_PATH_CREATE_CFM, + /// Request automatic establishment of a path with a given mesh STA + MESH_PATH_CREATE_REQ, + /// Confirmation to the MESH_PATH_CREATE_REQ message + MESH_PATH_CREATE_CFM, - /// Request a path update (delete path, modify next hop mesh STA) - MESH_PATH_UPDATE_REQ, - /// Confirmation to the MESH_PATH_UPDATE_REQ message - MESH_PATH_UPDATE_CFM, + /// Request a path update (delete path, modify next hop mesh STA) + MESH_PATH_UPDATE_REQ, + /// Confirmation to the MESH_PATH_UPDATE_REQ message + MESH_PATH_UPDATE_CFM, - /// Indication from Host that the indicated Mesh Interface is a proxy for an external STA - MESH_PROXY_ADD_REQ, + /// Indication from Host that the indicated Mesh Interface is a proxy for an external STA + MESH_PROXY_ADD_REQ, - /// Indicate that a connection has been established or lost - MESH_PEER_UPDATE_IND, - /// Notification that a connection has been established or lost (when MPM handled by userspace) - MESH_PEER_UPDATE_NTF = MESH_PEER_UPDATE_IND, + /// Indicate that a connection has been established or lost + MESH_PEER_UPDATE_IND, + /// Notification that a connection has been established or lost (when MPM handled by userspace) + MESH_PEER_UPDATE_NTF = MESH_PEER_UPDATE_IND, - /// Indicate that a path is now active or inactive - MESH_PATH_UPDATE_IND, - /// Indicate that proxy information have been updated - MESH_PROXY_UPDATE_IND, + /// Indicate that a path is now active or inactive + MESH_PATH_UPDATE_IND, + /// Indicate that proxy information have been updated + MESH_PROXY_UPDATE_IND, - /// MAX number of messages - MESH_MAX, + /// MAX number of messages + MESH_MAX, }; - /// Structure containing the parameters of the @ref MESH_START_REQ message. struct mesh_start_req { /// Basic rate set @@ -2880,46 +2914,44 @@ struct dbg_rftest_cmd_req { }; struct dbg_rftest_cmd_cfm { - u32_l rftest_result[18]; + u32_l rftest_result[32]; }; struct dbg_gpio_write_req { - uint8_t gpio_idx; - uint8_t gpio_val; + uint8_t gpio_idx; + uint8_t gpio_val; }; struct dbg_gpio_read_req { - uint8_t gpio_idx; + uint8_t gpio_idx; }; struct dbg_gpio_read_cfm { - uint8_t gpio_idx; - uint8_t gpio_val; + uint8_t gpio_idx; + uint8_t gpio_val; }; struct dbg_gpio_init_req { - uint8_t gpio_idx; - uint8_t gpio_dir; //1 output, 0 input; - uint8_t gpio_val; //for output, 1 high, 0 low; + uint8_t gpio_idx; + uint8_t gpio_dir; //1 output, 0 input; + uint8_t gpio_val; //for output, 1 high, 0 low; }; #ifdef CONFIG_MCU_MESSAGE /// Structure containing the parameters of the @ref DBG_CUSTOM_MSG_REQ message. -struct dbg_custom_msg_req -{ - u32_l cmd; - u32_l len; - u32_l flags; - u32_l buf[1]; +struct dbg_custom_msg_req { + u32_l cmd; + u32_l len; + u32_l flags; + u32_l buf[1]; }; /// Structure containing the parameters of the @ref DBG_CUSTOM_MSG_CFM message. -struct dbg_custom_msg_cfm -{ - u32_l cmd; - u32_l len; - u32_l status; - u32_l buf[1]; +struct dbg_custom_msg_cfm { + u32_l cmd; + u32_l len; + u32_l status; + u32_l buf[1]; }; typedef struct dbg_custom_msg_cfm dbg_custom_msg_ind_t; @@ -2959,6 +2991,19 @@ struct dbg_mem_block_write_cfm { u32_l wstatus; }; +/// Structure containing the parameters of the @ref DBG_MEM_BLOCK_READ_REQ message. +struct dbg_mem_block_read_req { + u32_l memaddr; + u32_l memsize; +}; + +/// Structure containing the parameters of the @ref DBG_MEM_BLOCK_READ_CFM message. +struct dbg_mem_block_read_cfm { + u32_l memaddr; + u32_l memsize; + u32_l memdata[1024 / sizeof(u32_l)]; +}; + /// Structure containing the parameters of the @ref DBG_START_APP_REQ message. struct dbg_start_app_req { u32_l bootaddr; @@ -2971,13 +3016,12 @@ struct dbg_start_app_cfm { }; enum { - HOST_START_APP_AUTO = 1, - HOST_START_APP_CUSTOM, + HOST_START_APP_AUTO = 1, + HOST_START_APP_CUSTOM, HOST_START_APP_FNCALL = 4, - HOST_START_APP_DUMMY = 5, + HOST_START_APP_DUMMY = 5, }; - /////////////////////////////////////////////////////////////////////////////// /////////// For TDLS messages /////////////////////////////////////////////////////////////////////////////// @@ -3004,7 +3048,7 @@ enum tdls_msg_tag { TDLS_PEER_TRAFFIC_IND_CFM, #ifdef CONFIG_SDIO_BT - TDLS_SDIO_BT_SEND_REQ = LMAC_FIRST_MSG(TASK_TDLS)+16, + TDLS_SDIO_BT_SEND_REQ = LMAC_FIRST_MSG(TASK_TDLS) + 16, TDLS_SDIO_BT_SEND_CFM, TDLS_SDIO_BT_RECV_IND, #endif @@ -3047,7 +3091,6 @@ struct tdls_cancel_chan_switch_req { struct mac_addr peer_mac_addr; }; - /// Structure containing the parameters of the @ref TDLS_CHAN_SWITCH_CFM message struct tdls_chan_switch_cfm { /// Status of the operation @@ -3113,5 +3156,4 @@ struct tdls_peer_traffic_ind_cfm { u8_l status; }; - #endif // LMAC_MSG_H_ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_types.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_types.h index 83b112290..eb90d08d5 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_types.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/lmac_types.h @@ -16,7 +16,6 @@ #ifndef _LMAC_INT_H_ #define _LMAC_INT_H_ - /** **************************************************************************************** * @addtogroup CO_INT @@ -27,7 +26,6 @@ **************************************************************************************** */ - /* * DEFINES **************************************************************************************** @@ -56,7 +54,5 @@ typedef uint32_t u32_l; typedef int32_t s32_l; typedef uint64_t u64_l; - - /// @} CO_INT #endif // _LMAC_INT_H_ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.c index 3d7b65375..f21eba9a3 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.c @@ -1,161 +1,154 @@ #include #include "md5.h" - -unsigned char PADDING[]={0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - + +unsigned char PADDING[] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + void MD5Init(MD5_CTX *context) { - context->count[0] = 0; - context->count[1] = 0; - context->state[0] = 0x67452301; - context->state[1] = 0xEFCDAB89; - context->state[2] = 0x98BADCFE; - context->state[3] = 0x10325476; + context->count[0] = 0; + context->count[1] = 0; + context->state[0] = 0x67452301; + context->state[1] = 0xEFCDAB89; + context->state[2] = 0x98BADCFE; + context->state[3] = 0x10325476; } -void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputlen) +void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputlen) { - unsigned int i = 0,index = 0,partlen = 0; - index = (context->count[0] >> 3) & 0x3F; - partlen = 64 - index; - context->count[0] += inputlen << 3; - if(context->count[0] < (inputlen << 3)) - context->count[1]++; - context->count[1] += inputlen >> 29; - - if(inputlen >= partlen) - { - memcpy(&context->buffer[index],input,partlen); - MD5Transform(context->state,context->buffer); - for(i = partlen;i+64 <= inputlen;i+=64) - MD5Transform(context->state,&input[i]); - index = 0; - } - else - { - i = 0; - } - memcpy(&context->buffer[index],&input[i],inputlen-i); + unsigned int i = 0, index = 0, partlen = 0; + index = (context->count[0] >> 3) & 0x3F; + partlen = 64 - index; + context->count[0] += inputlen << 3; + if (context->count[0] < (inputlen << 3)) + context->count[1]++; + context->count[1] += inputlen >> 29; + + if (inputlen >= partlen) { + memcpy(&context->buffer[index], input, partlen); + MD5Transform(context->state, context->buffer); + for (i = partlen; i + 64 <= inputlen; i += 64) + MD5Transform(context->state, &input[i]); + index = 0; + } else { + i = 0; + } + memcpy(&context->buffer[index], &input[i], inputlen - i); } -void MD5Final(MD5_CTX *context,unsigned char digest[16]) +void MD5Final(MD5_CTX *context, unsigned char digest[16]) { - unsigned int index = 0,padlen = 0; - unsigned char bits[8]; - index = (context->count[0] >> 3) & 0x3F; - padlen = (index < 56)?(56-index):(120-index); - MD5Encode(bits,context->count,8); - MD5Update(context,PADDING,padlen); - MD5Update(context,bits,8); - MD5Encode(digest,context->state,16); + unsigned int index = 0, padlen = 0; + unsigned char bits[8]; + index = (context->count[0] >> 3) & 0x3F; + padlen = (index < 56) ? (56 - index) : (120 - index); + MD5Encode(bits, context->count, 8); + MD5Update(context, PADDING, padlen); + MD5Update(context, bits, 8); + MD5Encode(digest, context->state, 16); } -void MD5Encode(unsigned char *output,unsigned int *input,unsigned int len) +void MD5Encode(unsigned char *output, unsigned int *input, unsigned int len) { - unsigned int i = 0,j = 0; - while(j < len) - { - output[j] = input[i] & 0xFF; - output[j+1] = (input[i] >> 8) & 0xFF; - output[j+2] = (input[i] >> 16) & 0xFF; - output[j+3] = (input[i] >> 24) & 0xFF; - i++; - j+=4; - } + unsigned int i = 0, j = 0; + while (j < len) { + output[j] = input[i] & 0xFF; + output[j + 1] = (input[i] >> 8) & 0xFF; + output[j + 2] = (input[i] >> 16) & 0xFF; + output[j + 3] = (input[i] >> 24) & 0xFF; + i++; + j += 4; + } } -void MD5Decode(unsigned int *output,unsigned char *input,unsigned int len) +void MD5Decode(unsigned int *output, unsigned char *input, unsigned int len) { - unsigned int i = 0,j = 0; - while(j < len) - { - output[i] = (input[j]) | - (input[j+1] << 8) | - (input[j+2] << 16) | - (input[j+3] << 24); - i++; - j+=4; - } + unsigned int i = 0, j = 0; + while (j < len) { + output[i] = (input[j]) | (input[j + 1] << 8) | + (input[j + 2] << 16) | (input[j + 3] << 24); + i++; + j += 4; + } } -void MD5Transform(unsigned int state[4],unsigned char block[64]) +void MD5Transform(unsigned int state[4], unsigned char block[64]) { - unsigned int a = state[0]; - unsigned int b = state[1]; - unsigned int c = state[2]; - unsigned int d = state[3]; - unsigned int x[64]; - MD5Decode(x,block,64); - FF(a, b, c, d, x[ 0], 7, 0xd76aa478); /* 1 */ - FF(d, a, b, c, x[ 1], 12, 0xe8c7b756); /* 2 */ - FF(c, d, a, b, x[ 2], 17, 0x242070db); /* 3 */ - FF(b, c, d, a, x[ 3], 22, 0xc1bdceee); /* 4 */ - FF(a, b, c, d, x[ 4], 7, 0xf57c0faf); /* 5 */ - FF(d, a, b, c, x[ 5], 12, 0x4787c62a); /* 6 */ - FF(c, d, a, b, x[ 6], 17, 0xa8304613); /* 7 */ - FF(b, c, d, a, x[ 7], 22, 0xfd469501); /* 8 */ - FF(a, b, c, d, x[ 8], 7, 0x698098d8); /* 9 */ - FF(d, a, b, c, x[ 9], 12, 0x8b44f7af); /* 10 */ - FF(c, d, a, b, x[10], 17, 0xffff5bb1); /* 11 */ - FF(b, c, d, a, x[11], 22, 0x895cd7be); /* 12 */ - FF(a, b, c, d, x[12], 7, 0x6b901122); /* 13 */ - FF(d, a, b, c, x[13], 12, 0xfd987193); /* 14 */ - FF(c, d, a, b, x[14], 17, 0xa679438e); /* 15 */ - FF(b, c, d, a, x[15], 22, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[ 1], 5, 0xf61e2562); /* 17 */ - GG(d, a, b, c, x[ 6], 9, 0xc040b340); /* 18 */ - GG(c, d, a, b, x[11], 14, 0x265e5a51); /* 19 */ - GG(b, c, d, a, x[ 0], 20, 0xe9b6c7aa); /* 20 */ - GG(a, b, c, d, x[ 5], 5, 0xd62f105d); /* 21 */ - GG(d, a, b, c, x[10], 9, 0x2441453); /* 22 */ - GG(c, d, a, b, x[15], 14, 0xd8a1e681); /* 23 */ - GG(b, c, d, a, x[ 4], 20, 0xe7d3fbc8); /* 24 */ - GG(a, b, c, d, x[ 9], 5, 0x21e1cde6); /* 25 */ - GG(d, a, b, c, x[14], 9, 0xc33707d6); /* 26 */ - GG(c, d, a, b, x[ 3], 14, 0xf4d50d87); /* 27 */ - GG(b, c, d, a, x[ 8], 20, 0x455a14ed); /* 28 */ - GG(a, b, c, d, x[13], 5, 0xa9e3e905); /* 29 */ - GG(d, a, b, c, x[ 2], 9, 0xfcefa3f8); /* 30 */ - GG(c, d, a, b, x[ 7], 14, 0x676f02d9); /* 31 */ - GG(b, c, d, a, x[12], 20, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[ 5], 4, 0xfffa3942); /* 33 */ - HH(d, a, b, c, x[ 8], 11, 0x8771f681); /* 34 */ - HH(c, d, a, b, x[11], 16, 0x6d9d6122); /* 35 */ - HH(b, c, d, a, x[14], 23, 0xfde5380c); /* 36 */ - HH(a, b, c, d, x[ 1], 4, 0xa4beea44); /* 37 */ - HH(d, a, b, c, x[ 4], 11, 0x4bdecfa9); /* 38 */ - HH(c, d, a, b, x[ 7], 16, 0xf6bb4b60); /* 39 */ - HH(b, c, d, a, x[10], 23, 0xbebfbc70); /* 40 */ - HH(a, b, c, d, x[13], 4, 0x289b7ec6); /* 41 */ - HH(d, a, b, c, x[ 0], 11, 0xeaa127fa); /* 42 */ - HH(c, d, a, b, x[ 3], 16, 0xd4ef3085); /* 43 */ - HH(b, c, d, a, x[ 6], 23, 0x4881d05); /* 44 */ - HH(a, b, c, d, x[ 9], 4, 0xd9d4d039); /* 45 */ - HH(d, a, b, c, x[12], 11, 0xe6db99e5); /* 46 */ - HH(c, d, a, b, x[15], 16, 0x1fa27cf8); /* 47 */ - HH(b, c, d, a, x[ 2], 23, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II(a, b, c, d, x[ 0], 6, 0xf4292244); /* 49 */ - II(d, a, b, c, x[ 7], 10, 0x432aff97); /* 50 */ - II(c, d, a, b, x[14], 15, 0xab9423a7); /* 51 */ - II(b, c, d, a, x[ 5], 21, 0xfc93a039); /* 52 */ - II(a, b, c, d, x[12], 6, 0x655b59c3); /* 53 */ - II(d, a, b, c, x[ 3], 10, 0x8f0ccc92); /* 54 */ - II(c, d, a, b, x[10], 15, 0xffeff47d); /* 55 */ - II(b, c, d, a, x[ 1], 21, 0x85845dd1); /* 56 */ - II(a, b, c, d, x[ 8], 6, 0x6fa87e4f); /* 57 */ - II(d, a, b, c, x[15], 10, 0xfe2ce6e0); /* 58 */ - II(c, d, a, b, x[ 6], 15, 0xa3014314); /* 59 */ - II(b, c, d, a, x[13], 21, 0x4e0811a1); /* 60 */ - II(a, b, c, d, x[ 4], 6, 0xf7537e82); /* 61 */ - II(d, a, b, c, x[11], 10, 0xbd3af235); /* 62 */ - II(c, d, a, b, x[ 2], 15, 0x2ad7d2bb); /* 63 */ - II(b, c, d, a, x[ 9], 21, 0xeb86d391); /* 64 */ - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; + unsigned int a = state[0]; + unsigned int b = state[1]; + unsigned int c = state[2]; + unsigned int d = state[3]; + unsigned int x[64]; + MD5Decode(x, block, 64); + FF(a, b, c, d, x[0], 7, 0xd76aa478); /* 1 */ + FF(d, a, b, c, x[1], 12, 0xe8c7b756); /* 2 */ + FF(c, d, a, b, x[2], 17, 0x242070db); /* 3 */ + FF(b, c, d, a, x[3], 22, 0xc1bdceee); /* 4 */ + FF(a, b, c, d, x[4], 7, 0xf57c0faf); /* 5 */ + FF(d, a, b, c, x[5], 12, 0x4787c62a); /* 6 */ + FF(c, d, a, b, x[6], 17, 0xa8304613); /* 7 */ + FF(b, c, d, a, x[7], 22, 0xfd469501); /* 8 */ + FF(a, b, c, d, x[8], 7, 0x698098d8); /* 9 */ + FF(d, a, b, c, x[9], 12, 0x8b44f7af); /* 10 */ + FF(c, d, a, b, x[10], 17, 0xffff5bb1); /* 11 */ + FF(b, c, d, a, x[11], 22, 0x895cd7be); /* 12 */ + FF(a, b, c, d, x[12], 7, 0x6b901122); /* 13 */ + FF(d, a, b, c, x[13], 12, 0xfd987193); /* 14 */ + FF(c, d, a, b, x[14], 17, 0xa679438e); /* 15 */ + FF(b, c, d, a, x[15], 22, 0x49b40821); /* 16 */ + + /* Round 2 */ + GG(a, b, c, d, x[1], 5, 0xf61e2562); /* 17 */ + GG(d, a, b, c, x[6], 9, 0xc040b340); /* 18 */ + GG(c, d, a, b, x[11], 14, 0x265e5a51); /* 19 */ + GG(b, c, d, a, x[0], 20, 0xe9b6c7aa); /* 20 */ + GG(a, b, c, d, x[5], 5, 0xd62f105d); /* 21 */ + GG(d, a, b, c, x[10], 9, 0x2441453); /* 22 */ + GG(c, d, a, b, x[15], 14, 0xd8a1e681); /* 23 */ + GG(b, c, d, a, x[4], 20, 0xe7d3fbc8); /* 24 */ + GG(a, b, c, d, x[9], 5, 0x21e1cde6); /* 25 */ + GG(d, a, b, c, x[14], 9, 0xc33707d6); /* 26 */ + GG(c, d, a, b, x[3], 14, 0xf4d50d87); /* 27 */ + GG(b, c, d, a, x[8], 20, 0x455a14ed); /* 28 */ + GG(a, b, c, d, x[13], 5, 0xa9e3e905); /* 29 */ + GG(d, a, b, c, x[2], 9, 0xfcefa3f8); /* 30 */ + GG(c, d, a, b, x[7], 14, 0x676f02d9); /* 31 */ + GG(b, c, d, a, x[12], 20, 0x8d2a4c8a); /* 32 */ + + /* Round 3 */ + HH(a, b, c, d, x[5], 4, 0xfffa3942); /* 33 */ + HH(d, a, b, c, x[8], 11, 0x8771f681); /* 34 */ + HH(c, d, a, b, x[11], 16, 0x6d9d6122); /* 35 */ + HH(b, c, d, a, x[14], 23, 0xfde5380c); /* 36 */ + HH(a, b, c, d, x[1], 4, 0xa4beea44); /* 37 */ + HH(d, a, b, c, x[4], 11, 0x4bdecfa9); /* 38 */ + HH(c, d, a, b, x[7], 16, 0xf6bb4b60); /* 39 */ + HH(b, c, d, a, x[10], 23, 0xbebfbc70); /* 40 */ + HH(a, b, c, d, x[13], 4, 0x289b7ec6); /* 41 */ + HH(d, a, b, c, x[0], 11, 0xeaa127fa); /* 42 */ + HH(c, d, a, b, x[3], 16, 0xd4ef3085); /* 43 */ + HH(b, c, d, a, x[6], 23, 0x4881d05); /* 44 */ + HH(a, b, c, d, x[9], 4, 0xd9d4d039); /* 45 */ + HH(d, a, b, c, x[12], 11, 0xe6db99e5); /* 46 */ + HH(c, d, a, b, x[15], 16, 0x1fa27cf8); /* 47 */ + HH(b, c, d, a, x[2], 23, 0xc4ac5665); /* 48 */ + + /* Round 4 */ + II(a, b, c, d, x[0], 6, 0xf4292244); /* 49 */ + II(d, a, b, c, x[7], 10, 0x432aff97); /* 50 */ + II(c, d, a, b, x[14], 15, 0xab9423a7); /* 51 */ + II(b, c, d, a, x[5], 21, 0xfc93a039); /* 52 */ + II(a, b, c, d, x[12], 6, 0x655b59c3); /* 53 */ + II(d, a, b, c, x[3], 10, 0x8f0ccc92); /* 54 */ + II(c, d, a, b, x[10], 15, 0xffeff47d); /* 55 */ + II(b, c, d, a, x[1], 21, 0x85845dd1); /* 56 */ + II(a, b, c, d, x[8], 6, 0x6fa87e4f); /* 57 */ + II(d, a, b, c, x[15], 10, 0xfe2ce6e0); /* 58 */ + II(c, d, a, b, x[6], 15, 0xa3014314); /* 59 */ + II(b, c, d, a, x[13], 21, 0x4e0811a1); /* 60 */ + II(a, b, c, d, x[4], 6, 0xf7537e82); /* 61 */ + II(d, a, b, c, x[11], 10, 0xbd3af235); /* 62 */ + II(c, d, a, b, x[2], 15, 0x2ad7d2bb); /* 63 */ + II(b, c, d, a, x[9], 21, 0xeb86d391); /* 64 */ + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.h index 6ed5c0f8e..9b2c52eed 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/md5.h @@ -1,48 +1,46 @@ #ifndef MD5_H #define MD5_H - -typedef struct -{ - unsigned int count[2]; - unsigned int state[4]; - unsigned char buffer[64]; -}MD5_CTX; - - -#define F(x,y,z) ((x & y) | (~x & z)) -#define G(x,y,z) ((x & z) | (y & ~z)) -#define H(x,y,z) (x^y^z) -#define I(x,y,z) (y ^ (x | ~z)) -#define ROTATE_LEFT(x,n) ((x << n) | (x >> (32-n))) -#define FF(a,b,c,d,x,s,ac) \ - { \ - a += F(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } -#define GG(a,b,c,d,x,s,ac) \ - { \ - a += G(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } -#define HH(a,b,c,d,x,s,ac) \ - { \ - a += H(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } -#define II(a,b,c,d,x,s,ac) \ - { \ - a += I(b,c,d) + x + ac; \ - a = ROTATE_LEFT(a,s); \ - a += b; \ - } + +typedef struct { + unsigned int count[2]; + unsigned int state[4]; + unsigned char buffer[64]; +} MD5_CTX; + +#define F(x, y, z) ((x & y) | (~x & z)) +#define G(x, y, z) ((x & z) | (y & ~z)) +#define H(x, y, z) (x ^ y ^ z) +#define I(x, y, z) (y ^ (x | ~z)) +#define ROTATE_LEFT(x, n) ((x << n) | (x >> (32 - n))) +#define FF(a, b, c, d, x, s, ac) \ + { \ + a += F(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } +#define GG(a, b, c, d, x, s, ac) \ + { \ + a += G(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } +#define HH(a, b, c, d, x, s, ac) \ + { \ + a += H(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } +#define II(a, b, c, d, x, s, ac) \ + { \ + a += I(b, c, d) + x + ac; \ + a = ROTATE_LEFT(a, s); \ + a += b; \ + } void MD5Init(MD5_CTX *context); -void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputlen); -void MD5Final(MD5_CTX *context,unsigned char digest[16]); -void MD5Transform(unsigned int state[4],unsigned char block[64]); -void MD5Encode(unsigned char *output,unsigned int *input,unsigned int len); -void MD5Decode(unsigned int *output,unsigned char *input,unsigned int len); - +void MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputlen); +void MD5Final(MD5_CTX *context, unsigned char digest[16]); +void MD5Transform(unsigned int state[4], unsigned char block[64]); +void MD5Encode(unsigned char *output, unsigned int *input, unsigned int len); +void MD5Decode(unsigned int *output, unsigned char *input, unsigned int len); + #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/reg_access.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/reg_access.h index 568146624..4ba497655 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/reg_access.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/reg_access.h @@ -17,132 +17,132 @@ * Addresses within RWNX_ADDR_SYSTEM *****************************************************************************/ /* Shard RAM */ -#define SHARED_RAM_START_ADDR 0x00000000 +#define SHARED_RAM_START_ADDR 0x00000000 /* IPC registers */ -#define IPC_REG_BASE_ADDR 0x00800000 +#define IPC_REG_BASE_ADDR 0x00800000 /* System Controller Registers */ -#define SYSCTRL_SIGNATURE_ADDR 0x00900000 +#define SYSCTRL_SIGNATURE_ADDR 0x00900000 // old diag register name -#define SYSCTRL_DIAG_CONF_ADDR 0x00900068 -#define SYSCTRL_PHYDIAG_CONF_ADDR 0x00900074 -#define SYSCTRL_RIUDIAG_CONF_ADDR 0x00900078 +#define SYSCTRL_DIAG_CONF_ADDR 0x00900068 +#define SYSCTRL_PHYDIAG_CONF_ADDR 0x00900074 +#define SYSCTRL_RIUDIAG_CONF_ADDR 0x00900078 // new diag register name -#define SYSCTRL_DIAG_CONF0 0x00900064 -#define SYSCTRL_DIAG_CONF1 0x00900068 -#define SYSCTRL_DIAG_CONF2 0x00900074 -#define SYSCTRL_DIAG_CONF3 0x00900078 -#define SYSCTRL_MISC_CNTL_ADDR 0x009000E0 -#define BOOTROM_ENABLE BIT(4) -#define FPGA_B_RESET BIT(1) -#define SOFT_RESET BIT(0) +#define SYSCTRL_DIAG_CONF0 0x00900064 +#define SYSCTRL_DIAG_CONF1 0x00900068 +#define SYSCTRL_DIAG_CONF2 0x00900074 +#define SYSCTRL_DIAG_CONF3 0x00900078 +#define SYSCTRL_MISC_CNTL_ADDR 0x009000E0 +#define BOOTROM_ENABLE BIT(4) +#define FPGA_B_RESET BIT(1) +#define SOFT_RESET BIT(0) /* MAC platform */ -#define NXMAC_VERSION_1_ADDR 0x00B00004 -#define NXMAC_MU_MIMO_TX_BIT BIT(19) -#define NXMAC_BFMER_BIT BIT(18) -#define NXMAC_BFMEE_BIT BIT(17) -#define NXMAC_MAC_80211MH_FORMAT_BIT BIT(16) -#define NXMAC_COEX_BIT BIT(14) -#define NXMAC_WAPI_BIT BIT(13) -#define NXMAC_TPC_BIT BIT(12) -#define NXMAC_VHT_BIT BIT(11) -#define NXMAC_HT_BIT BIT(10) -#define NXMAC_RCE_BIT BIT(8) -#define NXMAC_CCMP_BIT BIT(7) -#define NXMAC_TKIP_BIT BIT(6) -#define NXMAC_WEP_BIT BIT(5) -#define NXMAC_SECURITY_BIT BIT(4) -#define NXMAC_SME_BIT BIT(3) -#define NXMAC_HCCA_BIT BIT(2) -#define NXMAC_EDCA_BIT BIT(1) -#define NXMAC_QOS_BIT BIT(0) +#define NXMAC_VERSION_1_ADDR 0x00B00004 +#define NXMAC_MU_MIMO_TX_BIT BIT(19) +#define NXMAC_BFMER_BIT BIT(18) +#define NXMAC_BFMEE_BIT BIT(17) +#define NXMAC_MAC_80211MH_FORMAT_BIT BIT(16) +#define NXMAC_COEX_BIT BIT(14) +#define NXMAC_WAPI_BIT BIT(13) +#define NXMAC_TPC_BIT BIT(12) +#define NXMAC_VHT_BIT BIT(11) +#define NXMAC_HT_BIT BIT(10) +#define NXMAC_RCE_BIT BIT(8) +#define NXMAC_CCMP_BIT BIT(7) +#define NXMAC_TKIP_BIT BIT(6) +#define NXMAC_WEP_BIT BIT(5) +#define NXMAC_SECURITY_BIT BIT(4) +#define NXMAC_SME_BIT BIT(3) +#define NXMAC_HCCA_BIT BIT(2) +#define NXMAC_EDCA_BIT BIT(1) +#define NXMAC_QOS_BIT BIT(0) -#define NXMAC_RX_CNTRL_ADDR 0x00B00060 -#define NXMAC_EN_DUPLICATE_DETECTION_BIT BIT(31) -#define NXMAC_ACCEPT_UNKNOWN_BIT BIT(30) -#define NXMAC_ACCEPT_OTHER_DATA_FRAMES_BIT BIT(29) -#define NXMAC_ACCEPT_QO_S_NULL_BIT BIT(28) -#define NXMAC_ACCEPT_QCFWO_DATA_BIT BIT(27) -#define NXMAC_ACCEPT_Q_DATA_BIT BIT(26) -#define NXMAC_ACCEPT_CFWO_DATA_BIT BIT(25) -#define NXMAC_ACCEPT_DATA_BIT BIT(24) -#define NXMAC_ACCEPT_OTHER_CNTRL_FRAMES_BIT BIT(23) -#define NXMAC_ACCEPT_CF_END_BIT BIT(22) -#define NXMAC_ACCEPT_ACK_BIT BIT(21) -#define NXMAC_ACCEPT_CTS_BIT BIT(20) -#define NXMAC_ACCEPT_RTS_BIT BIT(19) -#define NXMAC_ACCEPT_PS_POLL_BIT BIT(18) -#define NXMAC_ACCEPT_BA_BIT BIT(17) -#define NXMAC_ACCEPT_BAR_BIT BIT(16) -#define NXMAC_ACCEPT_OTHER_MGMT_FRAMES_BIT BIT(15) -#define NXMAC_ACCEPT_BFMEE_FRAMES_BIT BIT(14) -#define NXMAC_ACCEPT_ALL_BEACON_BIT BIT(13) -#define NXMAC_ACCEPT_NOT_EXPECTED_BA_BIT BIT(12) -#define NXMAC_ACCEPT_DECRYPT_ERROR_FRAMES_BIT BIT(11) -#define NXMAC_ACCEPT_BEACON_BIT BIT(10) -#define NXMAC_ACCEPT_PROBE_RESP_BIT BIT(9) -#define NXMAC_ACCEPT_PROBE_REQ_BIT BIT(8) -#define NXMAC_ACCEPT_MY_UNICAST_BIT BIT(7) -#define NXMAC_ACCEPT_UNICAST_BIT BIT(6) -#define NXMAC_ACCEPT_ERROR_FRAMES_BIT BIT(5) -#define NXMAC_ACCEPT_OTHER_BSSID_BIT BIT(4) -#define NXMAC_ACCEPT_BROADCAST_BIT BIT(3) -#define NXMAC_ACCEPT_MULTICAST_BIT BIT(2) -#define NXMAC_DONT_DECRYPT_BIT BIT(1) -#define NXMAC_EXC_UNENCRYPTED_BIT BIT(0) +#define NXMAC_RX_CNTRL_ADDR 0x00B00060 +#define NXMAC_EN_DUPLICATE_DETECTION_BIT BIT(31) +#define NXMAC_ACCEPT_UNKNOWN_BIT BIT(30) +#define NXMAC_ACCEPT_OTHER_DATA_FRAMES_BIT BIT(29) +#define NXMAC_ACCEPT_QO_S_NULL_BIT BIT(28) +#define NXMAC_ACCEPT_QCFWO_DATA_BIT BIT(27) +#define NXMAC_ACCEPT_Q_DATA_BIT BIT(26) +#define NXMAC_ACCEPT_CFWO_DATA_BIT BIT(25) +#define NXMAC_ACCEPT_DATA_BIT BIT(24) +#define NXMAC_ACCEPT_OTHER_CNTRL_FRAMES_BIT BIT(23) +#define NXMAC_ACCEPT_CF_END_BIT BIT(22) +#define NXMAC_ACCEPT_ACK_BIT BIT(21) +#define NXMAC_ACCEPT_CTS_BIT BIT(20) +#define NXMAC_ACCEPT_RTS_BIT BIT(19) +#define NXMAC_ACCEPT_PS_POLL_BIT BIT(18) +#define NXMAC_ACCEPT_BA_BIT BIT(17) +#define NXMAC_ACCEPT_BAR_BIT BIT(16) +#define NXMAC_ACCEPT_OTHER_MGMT_FRAMES_BIT BIT(15) +#define NXMAC_ACCEPT_BFMEE_FRAMES_BIT BIT(14) +#define NXMAC_ACCEPT_ALL_BEACON_BIT BIT(13) +#define NXMAC_ACCEPT_NOT_EXPECTED_BA_BIT BIT(12) +#define NXMAC_ACCEPT_DECRYPT_ERROR_FRAMES_BIT BIT(11) +#define NXMAC_ACCEPT_BEACON_BIT BIT(10) +#define NXMAC_ACCEPT_PROBE_RESP_BIT BIT(9) +#define NXMAC_ACCEPT_PROBE_REQ_BIT BIT(8) +#define NXMAC_ACCEPT_MY_UNICAST_BIT BIT(7) +#define NXMAC_ACCEPT_UNICAST_BIT BIT(6) +#define NXMAC_ACCEPT_ERROR_FRAMES_BIT BIT(5) +#define NXMAC_ACCEPT_OTHER_BSSID_BIT BIT(4) +#define NXMAC_ACCEPT_BROADCAST_BIT BIT(3) +#define NXMAC_ACCEPT_MULTICAST_BIT BIT(2) +#define NXMAC_DONT_DECRYPT_BIT BIT(1) +#define NXMAC_EXC_UNENCRYPTED_BIT BIT(0) -#define NXMAC_DEBUG_PORT_SEL_ADDR 0x00B00510 -#define NXMAC_SW_SET_PROFILING_ADDR 0x00B08564 -#define NXMAC_SW_CLEAR_PROFILING_ADDR 0x00B08568 +#define NXMAC_DEBUG_PORT_SEL_ADDR 0x00B00510 +#define NXMAC_SW_SET_PROFILING_ADDR 0x00B08564 +#define NXMAC_SW_CLEAR_PROFILING_ADDR 0x00B08568 /* Modem Status */ -#define MDM_HDMCONFIG_ADDR 0x00C00000 +#define MDM_HDMCONFIG_ADDR 0x00C00000 /* Clock gating configuration */ -#define MDM_MEMCLKCTRL0_ADDR 0x00C00848 -#define MDM_CLKGATEFCTRL0_ADDR 0x00C00874 -#define CRM_CLKGATEFCTRL0_ADDR 0x00940010 +#define MDM_MEMCLKCTRL0_ADDR 0x00C00848 +#define MDM_CLKGATEFCTRL0_ADDR 0x00C00874 +#define CRM_CLKGATEFCTRL0_ADDR 0x00940010 /* AGC (trident) */ -#define AGC_RWNXAGCCNTL_ADDR 0x00C02060 +#define AGC_RWNXAGCCNTL_ADDR 0x00C02060 /* LDPC RAM*/ -#define PHY_LDPC_RAM_ADDR 0x00C09000 +#define PHY_LDPC_RAM_ADDR 0x00C09000 /* FCU (elma )*/ -#define FCU_RWNXFCAGCCNTL_ADDR 0x00C09034 +#define FCU_RWNXFCAGCCNTL_ADDR 0x00C09034 /* AGC RAM */ -#define PHY_AGC_UCODE_ADDR 0x00C0A000 +#define PHY_AGC_UCODE_ADDR 0x00C0A000 /* RIU */ -#define RIU_RWNXVERSION_ADDR 0x00C0B000 -#define RIU_RWNXDYNAMICCONFIG_ADDR 0x00C0B008 -#define RIU_AGCMEMBISTSTAT_ADDR 0x00C0B238 -#define RIU_AGCMEMSIGNATURESTAT_ADDR 0x00C0B23C -#define RIU_RWNXAGCCNTL_ADDR 0x00C0B390 +#define RIU_RWNXVERSION_ADDR 0x00C0B000 +#define RIU_RWNXDYNAMICCONFIG_ADDR 0x00C0B008 +#define RIU_AGCMEMBISTSTAT_ADDR 0x00C0B238 +#define RIU_AGCMEMSIGNATURESTAT_ADDR 0x00C0B23C +#define RIU_RWNXAGCCNTL_ADDR 0x00C0B390 /* FCU RAM */ -#define PHY_FCU_UCODE_ADDR 0x00C0E000 +#define PHY_FCU_UCODE_ADDR 0x00C0E000 /* RF ITF */ -#define FPGAB_MPIF_SEL_ADDR 0x00C10030 -#define RF_V6_DIAGPORT_CONF1_ADDR 0x00C10010 -#define RF_v6_PHYDIAG_CONF1_ADDR 0x00C10018 +#define FPGAB_MPIF_SEL_ADDR 0x00C10030 +#define RF_V6_DIAGPORT_CONF1_ADDR 0x00C10010 +#define RF_v6_PHYDIAG_CONF1_ADDR 0x00C10018 -#define RF_V7_DIAGPORT_CONF1_ADDR 0x00F10010 -#define RF_v7_PHYDIAG_CONF1_ADDR 0x00F10018 +#define RF_V7_DIAGPORT_CONF1_ADDR 0x00F10010 +#define RF_v7_PHYDIAG_CONF1_ADDR 0x00F10018 /***************************************************************************** * Macros for generated register files *****************************************************************************/ /* Macros for IPC registers access (used in reg_ipc_app.h) */ -#define REG_IPC_APP_RD(env, INDEX) \ +#define REG_IPC_APP_RD(env, INDEX) \ (*(volatile u32 *)((u8 *)env + IPC_REG_BASE_ADDR + 4 * (INDEX))) -#define REG_IPC_APP_WR(env, INDEX, value) \ +#define REG_IPC_APP_WR(env, INDEX, value) \ (*(volatile u32 *)((u8 *)env + IPC_REG_BASE_ADDR + 4 * (INDEX)) = value) #endif /* REG_ACCESS_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/regdb.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/regdb.c index c984c03f2..dda8dc67f 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/regdb.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/regdb.c @@ -5,15 +5,14 @@ //#include "regdb.h" #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) -#define REG_RULE_EXT(start, end, bw, gain, eirp, dfs_cac, reg_flags) \ -{ \ - .freq_range.start_freq_khz = MHZ_TO_KHZ(start), \ - .freq_range.end_freq_khz = MHZ_TO_KHZ(end), \ - .freq_range.max_bandwidth_khz = MHZ_TO_KHZ(bw), \ - .power_rule.max_antenna_gain = DBI_TO_MBI(gain),\ - .power_rule.max_eirp = DBM_TO_MBM(eirp), \ - .flags = reg_flags, \ -} +#define REG_RULE_EXT(start, end, bw, gain, eirp, dfs_cac, reg_flags) \ + { \ + .freq_range.start_freq_khz = MHZ_TO_KHZ(start), \ + .freq_range.end_freq_khz = MHZ_TO_KHZ(end), \ + .freq_range.max_bandwidth_khz = MHZ_TO_KHZ(bw), \ + .power_rule.max_antenna_gain = DBI_TO_MBI(gain), \ + .power_rule.max_eirp = DBM_TO_MBM(eirp), .flags = reg_flags, \ + } #define NL80211_RRF_AUTO_BW 0 #endif @@ -687,24 +686,25 @@ static const struct ieee80211_regdomain regdom_CZ = { }; static const struct ieee80211_regdomain regdom_DE = { - .alpha2 = "DE", - .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5250, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5470, 5695, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - /*REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, - NL80211_RRF_DFS | 0),*/ - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 + .alpha2 = "DE", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW| + NL80211_RRF_NO_OUTDOOR| + 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, NL80211_RRF_AUTO_BW| + NL80211_RRF_DFS| + NL80211_RRF_NO_OUTDOOR| + 0), + REG_RULE_EXT(5470, 5725, 160, 0, 20, 0, NL80211_RRF_DFS| + 0), + REG_RULE_EXT(5725, 5875, 80, 0, 20, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 20, 0, NL80211_RRF_NO_OUTDOOR| + 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 20, 0, 0), + }, + .n_reg_rules = 7 }; static const struct ieee80211_regdomain regdom_DK = { @@ -1825,6 +1825,18 @@ static const struct ieee80211_regdomain regdom_MY = { .n_reg_rules = 4 }; +static const struct ieee80211_regdomain regdom_NG = { + .alpha2 = "NG", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, NL80211_RRF_DFS| + 0), + REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), + }, + .n_reg_rules = 3 +}; + static const struct ieee80211_regdomain regdom_NI = { .alpha2 = "NI", .dfs_region = NL80211_DFS_FCC, @@ -2722,178 +2734,35 @@ static const struct ieee80211_regdomain regdom_ZW = { }; const struct ieee80211_regdomain *reg_regdb[] = { - ®dom_00, - ®dom_AD, - ®dom_AE, - ®dom_AF, - ®dom_AI, - ®dom_AL, - ®dom_AM, - ®dom_AN, - ®dom_AR, - ®dom_AS, - ®dom_AT, - ®dom_AU, - ®dom_AW, - ®dom_AZ, - ®dom_BA, - ®dom_BB, - ®dom_BD, - ®dom_BE, - ®dom_BF, - ®dom_BG, - ®dom_BH, - ®dom_BL, - ®dom_BM, - ®dom_BN, - ®dom_BO, - ®dom_BR, - ®dom_BS, - ®dom_BT, - ®dom_BY, - ®dom_BZ, - ®dom_CA, - ®dom_CF, - ®dom_CH, - ®dom_CI, - ®dom_CL, - ®dom_CN, - ®dom_CO, - ®dom_CR, - ®dom_CX, - ®dom_CY, - ®dom_CZ, - ®dom_DE, - ®dom_DK, - ®dom_DM, - ®dom_DO, - ®dom_DZ, - ®dom_EC, - ®dom_EE, - ®dom_EG, - ®dom_ES, - ®dom_ET, - ®dom_FI, - ®dom_FM, - ®dom_FR, - ®dom_GB, - ®dom_GD, - ®dom_GE, - ®dom_GF, - ®dom_GH, - ®dom_GL, - ®dom_GP, - ®dom_GR, - ®dom_GT, - ®dom_GU, - ®dom_GY, - ®dom_HK, - ®dom_HN, - ®dom_HR, - ®dom_HT, - ®dom_HU, - ®dom_ID, - ®dom_IE, - ®dom_IL, - ®dom_IN, - ®dom_IR, - ®dom_IS, - ®dom_IT, - ®dom_JM, - ®dom_JO, - ®dom_JP, - ®dom_KE, - ®dom_KH, - ®dom_KN, - ®dom_KP, - ®dom_KR, - ®dom_KW, - ®dom_KY, - ®dom_KZ, - ®dom_LB, - ®dom_LC, - ®dom_LI, - ®dom_LK, - ®dom_LS, - ®dom_LT, - ®dom_LU, - ®dom_LV, - ®dom_MA, - ®dom_MC, - ®dom_MD, - ®dom_ME, - ®dom_MF, - ®dom_MH, - ®dom_MK, - ®dom_MN, - ®dom_MO, - ®dom_MP, - ®dom_MQ, - ®dom_MR, - ®dom_MT, - ®dom_MU, - ®dom_MW, - ®dom_MX, - ®dom_MY, - ®dom_NI, - ®dom_NL, - ®dom_NO, - ®dom_NP, - ®dom_NZ, - ®dom_OM, - ®dom_PA, - ®dom_PE, - ®dom_PF, - ®dom_PG, - ®dom_PH, - ®dom_PK, - ®dom_PL, - ®dom_PM, - ®dom_PR, - ®dom_PT, - ®dom_PW, - ®dom_PY, - ®dom_QA, - ®dom_RE, - ®dom_RO, - ®dom_RS, - ®dom_RU, - ®dom_RW, - ®dom_SA, - ®dom_SE, - ®dom_SG, - ®dom_SI, - ®dom_SK, - ®dom_SN, - ®dom_SR, - ®dom_SV, - ®dom_SY, - ®dom_TC, - ®dom_TD, - ®dom_TG, - ®dom_TH, - ®dom_TN, - ®dom_TR, - ®dom_TT, - ®dom_TW, - ®dom_UA, - ®dom_UG, - ®dom_US, - ®dom_UY, - ®dom_UZ, - ®dom_VC, - ®dom_VE, - ®dom_VI, - ®dom_VN, - ®dom_VU, - ®dom_WF, - ®dom_YE, - ®dom_YT, - ®dom_ZA, - ®dom_ZW, - NULL, + ®dom_00, ®dom_AD, ®dom_AE, ®dom_AF, ®dom_AI, ®dom_AL, + ®dom_AM, ®dom_AN, ®dom_AR, ®dom_AS, ®dom_AT, ®dom_AU, + ®dom_AW, ®dom_AZ, ®dom_BA, ®dom_BB, ®dom_BD, ®dom_BE, + ®dom_BF, ®dom_BG, ®dom_BH, ®dom_BL, ®dom_BM, ®dom_BN, + ®dom_BO, ®dom_BR, ®dom_BS, ®dom_BT, ®dom_BY, ®dom_BZ, + ®dom_CA, ®dom_CF, ®dom_CH, ®dom_CI, ®dom_CL, ®dom_CN, + ®dom_CO, ®dom_CR, ®dom_CX, ®dom_CY, ®dom_CZ, ®dom_DE, + ®dom_DK, ®dom_DM, ®dom_DO, ®dom_DZ, ®dom_EC, ®dom_EE, + ®dom_EG, ®dom_ES, ®dom_ET, ®dom_FI, ®dom_FM, ®dom_FR, + ®dom_GB, ®dom_GD, ®dom_GE, ®dom_GF, ®dom_GH, ®dom_GL, + ®dom_GP, ®dom_GR, ®dom_GT, ®dom_GU, ®dom_GY, ®dom_HK, + ®dom_HN, ®dom_HR, ®dom_HT, ®dom_HU, ®dom_ID, ®dom_IE, + ®dom_IL, ®dom_IN, ®dom_IR, ®dom_IS, ®dom_IT, ®dom_JM, + ®dom_JO, ®dom_JP, ®dom_KE, ®dom_KH, ®dom_KN, ®dom_KP, + ®dom_KR, ®dom_KW, ®dom_KY, ®dom_KZ, ®dom_LB, ®dom_LC, + ®dom_LI, ®dom_LK, ®dom_LS, ®dom_LT, ®dom_LU, ®dom_LV, + ®dom_MA, ®dom_MC, ®dom_MD, ®dom_ME, ®dom_MF, ®dom_MH, + ®dom_MK, ®dom_MN, ®dom_MO, ®dom_MP, ®dom_MQ, ®dom_MR, + ®dom_MT, ®dom_MU, ®dom_MW, ®dom_MX, ®dom_MY, ®dom_NG, + ®dom_NI, ®dom_NL, ®dom_NO, ®dom_NP, ®dom_NZ, ®dom_OM, + ®dom_PA, ®dom_PE, ®dom_PF, ®dom_PG, ®dom_PH, ®dom_PK, + ®dom_PL, ®dom_PM, ®dom_PR, ®dom_PT, ®dom_PW, ®dom_PY, + ®dom_QA, ®dom_RE, ®dom_RO, ®dom_RS, ®dom_RU, ®dom_RW, + ®dom_SA, ®dom_SE, ®dom_SG, ®dom_SI, ®dom_SK, ®dom_SN, + ®dom_SR, ®dom_SV, ®dom_SY, ®dom_TC, ®dom_TD, ®dom_TG, + ®dom_TH, ®dom_TN, ®dom_TR, ®dom_TT, ®dom_TW, ®dom_UA, + ®dom_UG, ®dom_US, ®dom_UY, ®dom_UZ, ®dom_VC, ®dom_VE, + ®dom_VI, ®dom_VN, ®dom_VU, ®dom_WF, ®dom_YE, ®dom_YT, + ®dom_ZA, ®dom_ZW, NULL, }; int reg_regdb_size = ARRAY_SIZE(reg_regdb); - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.c index b39cf0f20..5e8a4af9b 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.c @@ -24,10 +24,10 @@ */ int rwnx_bfmer_report_add(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, - unsigned int length) + unsigned int length) { gfp_t flags; - struct rwnx_bfmer_report *bfm_report ; + struct rwnx_bfmer_report *bfm_report; if (in_softirq()) flags = GFP_ATOMIC; @@ -37,7 +37,6 @@ int rwnx_bfmer_report_add(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, /* Allocate a structure that will contain the beamforming report */ bfm_report = kmalloc(sizeof(*bfm_report) + length, flags); - /* Check report allocation */ if (!bfm_report) { /* Do not use beamforming */ @@ -51,8 +50,8 @@ int rwnx_bfmer_report_add(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, * Need to provide a Virtual Address to the MAC so that it can * upload the received Beamforming Report in driver memory */ - bfm_report->dma_addr = dma_map_single(rwnx_hw->dev, &bfm_report->report[0], - length, DMA_FROM_DEVICE); + bfm_report->dma_addr = dma_map_single( + rwnx_hw->dev, &bfm_report->report[0], length, DMA_FROM_DEVICE); /* Check DMA mapping result */ if (dma_mapping_error(rwnx_hw->dev, bfm_report->dma_addr)) { @@ -76,7 +75,7 @@ void rwnx_bfmer_report_del(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta) /* Unmap DMA region */ dma_unmap_single(rwnx_hw->dev, bfm_report->dma_addr, - bfm_report->length, DMA_BIDIRECTIONAL); + bfm_report->length, DMA_BIDIRECTIONAL); /* Free allocated report structure and clean the pointer */ kfree(bfm_report); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.h index 4ce16496e..8191946ce 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_bfmer.h @@ -26,10 +26,10 @@ */ /// Maximal supported report length (in bytes) -#define RWNX_BFMER_REPORT_MAX_LEN 2048 +#define RWNX_BFMER_REPORT_MAX_LEN 2048 /// Size of the allocated report space (twice the maximum report length) -#define RWNX_BFMER_REPORT_SPACE_SIZE (RWNX_BFMER_REPORT_MAX_LEN * 2) +#define RWNX_BFMER_REPORT_SPACE_SIZE (RWNX_BFMER_REPORT_MAX_LEN * 2) /** * TYPE DEFINITIONS @@ -40,10 +40,10 @@ * Structure used to store a beamforming report. */ struct rwnx_bfmer_report { - dma_addr_t dma_addr; /* Virtual address provided to MAC for + dma_addr_t dma_addr; /* Virtual address provided to MAC for DMA transfer of the Beamforming Report */ - unsigned int length; /* Report Length */ - u8 report[1]; /* Report to be used for VHT TX Beamforming */ + unsigned int length; /* Report Length */ + u8 report[1]; /* Report to be used for VHT TX Beamforming */ }; /** @@ -70,7 +70,7 @@ struct rwnx_bfmer_report { ****************************************************************************** */ int rwnx_bfmer_report_add(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, - unsigned int length); + unsigned int length); /** ****************************************************************************** diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.c index 39a5a2514..492c798bc 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.c @@ -17,7 +17,7 @@ * */ static const char *rwnx_find_tag(const u8 *file_data, unsigned int file_size, - const char *tag_name, unsigned int tag_len) + const char *tag_name, unsigned int tag_len) { unsigned int curr, line_start = 0, line_size; @@ -35,7 +35,8 @@ static const char *rwnx_find_tag(const u8 *file_data, unsigned int file_size, /* Check if this line contains the expected tag */ if ((line_size == (strlen(tag_name) + tag_len)) && - (!strncmp(&file_data[line_start], tag_name, strlen(tag_name)))) + (!strncmp(&file_data[line_start], tag_name, + strlen(tag_name)))) return &file_data[line_start + strlen(tag_name)]; /* Move to next line */ @@ -50,7 +51,7 @@ static const char *rwnx_find_tag(const u8 *file_data, unsigned int file_size, * Parse the Config file used at init time */ int rwnx_parse_configfile(struct rwnx_hw *rwnx_hw, const char *filename, - struct rwnx_conf_file *config) + struct rwnx_conf_file *config) { const struct firmware *config_fw; u8 dflt_mac[ETH_ALEN] = { 0, 111, 111, 111, 111, 0 }; @@ -61,19 +62,19 @@ int rwnx_parse_configfile(struct rwnx_hw *rwnx_hw, const char *filename, ret = request_firmware(&config_fw, filename, rwnx_hw->dev); if (ret) { - printk(KERN_CRIT "%s: Failed to get %s (%d)\n", __func__, filename, ret); + printk(KERN_CRIT "%s: Failed to get %s (%d)\n", __func__, + filename, ret); return ret; } /* Get MAC Address */ tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "MAC_ADDR=", strlen("00:00:00:00:00:00")); + "MAC_ADDR=", strlen("00:00:00:00:00:00")); if (tag_ptr != NULL) { u8 *addr = config->mac_addr; - if (sscanf(tag_ptr, - "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - addr + 0, addr + 1, addr + 2, - addr + 3, addr + 4, addr + 5) != ETH_ALEN) + if (sscanf(tag_ptr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", addr + 0, + addr + 1, addr + 2, addr + 3, addr + 4, + addr + 5) != ETH_ALEN) memcpy(config->mac_addr, dflt_mac, ETH_ALEN); } else memcpy(config->mac_addr, dflt_mac, ETH_ALEN); @@ -90,7 +91,7 @@ int rwnx_parse_configfile(struct rwnx_hw *rwnx_hw, const char *filename, * Parse the Config file used at init time */ int rwnx_parse_phy_configfile(struct rwnx_hw *rwnx_hw, const char *filename, - struct rwnx_phy_conf_file *config, int path) + struct rwnx_phy_conf_file *config, int path) { const struct firmware *config_fw; int ret; @@ -100,13 +101,14 @@ int rwnx_parse_phy_configfile(struct rwnx_hw *rwnx_hw, const char *filename, ret = request_firmware(&config_fw, filename, rwnx_hw->dev); if (ret) { - printk(KERN_CRIT "%s: Failed to get %s (%d)\n", __func__, filename, ret); + printk(KERN_CRIT "%s: Failed to get %s (%d)\n", __func__, + filename, ret); return ret; } /* Get Trident path mapping */ tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "TRD_PATH_MAPPING=", strlen("00")); + "TRD_PATH_MAPPING=", strlen("00")); if (tag_ptr != NULL) { u8 val; if (sscanf(tag_ptr, "%hhx", &val) == 1) @@ -120,106 +122,131 @@ int rwnx_parse_phy_configfile(struct rwnx_hw *rwnx_hw, const char *filename, /* Get DC offset compensation */ tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "TX_DC_OFF_COMP=", strlen("00000000")); + "TX_DC_OFF_COMP=", strlen("00000000")); if (tag_ptr != NULL) { if (sscanf(tag_ptr, "%08x", &config->trd.tx_dc_off_comp) != 1) config->trd.tx_dc_off_comp = 0; } else config->trd.tx_dc_off_comp = 0; - RWNX_DBG("TX DC offset compensation is: %08X\n", config->trd.tx_dc_off_comp); + RWNX_DBG("TX DC offset compensation is: %08X\n", + config->trd.tx_dc_off_comp); /* Get Karst TX IQ compensation value for path0 on 2.4GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_TX_IQ_COMP_2_4G_PATH_0=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_TX_IQ_COMP_2_4G_PATH_0=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.tx_iq_comp_2_4G[0]) != 1) + if (sscanf(tag_ptr, "%08x", + &config->karst.tx_iq_comp_2_4G[0]) != 1) config->karst.tx_iq_comp_2_4G[0] = 0x01000000; } else config->karst.tx_iq_comp_2_4G[0] = 0x01000000; - RWNX_DBG("Karst TX IQ compensation for path 0 on 2.4GHz is: %08X\n", config->karst.tx_iq_comp_2_4G[0]); + RWNX_DBG("Karst TX IQ compensation for path 0 on 2.4GHz is: %08X\n", + config->karst.tx_iq_comp_2_4G[0]); /* Get Karst TX IQ compensation value for path1 on 2.4GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_TX_IQ_COMP_2_4G_PATH_1=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_TX_IQ_COMP_2_4G_PATH_1=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.tx_iq_comp_2_4G[1]) != 1) + if (sscanf(tag_ptr, "%08x", + &config->karst.tx_iq_comp_2_4G[1]) != 1) config->karst.tx_iq_comp_2_4G[1] = 0x01000000; } else config->karst.tx_iq_comp_2_4G[1] = 0x01000000; - RWNX_DBG("Karst TX IQ compensation for path 1 on 2.4GHz is: %08X\n", config->karst.tx_iq_comp_2_4G[1]); + RWNX_DBG("Karst TX IQ compensation for path 1 on 2.4GHz is: %08X\n", + config->karst.tx_iq_comp_2_4G[1]); /* Get Karst RX IQ compensation value for path0 on 2.4GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_RX_IQ_COMP_2_4G_PATH_0=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_RX_IQ_COMP_2_4G_PATH_0=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.rx_iq_comp_2_4G[0]) != 1) + if (sscanf(tag_ptr, "%08x", + &config->karst.rx_iq_comp_2_4G[0]) != 1) config->karst.rx_iq_comp_2_4G[0] = 0x01000000; } else config->karst.rx_iq_comp_2_4G[0] = 0x01000000; - RWNX_DBG("Karst RX IQ compensation for path 0 on 2.4GHz is: %08X\n", config->karst.rx_iq_comp_2_4G[0]); + RWNX_DBG("Karst RX IQ compensation for path 0 on 2.4GHz is: %08X\n", + config->karst.rx_iq_comp_2_4G[0]); /* Get Karst RX IQ compensation value for path1 on 2.4GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_RX_IQ_COMP_2_4G_PATH_1=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_RX_IQ_COMP_2_4G_PATH_1=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.rx_iq_comp_2_4G[1]) != 1) + if (sscanf(tag_ptr, "%08x", + &config->karst.rx_iq_comp_2_4G[1]) != 1) config->karst.rx_iq_comp_2_4G[1] = 0x01000000; } else config->karst.rx_iq_comp_2_4G[1] = 0x01000000; - RWNX_DBG("Karst RX IQ compensation for path 1 on 2.4GHz is: %08X\n", config->karst.rx_iq_comp_2_4G[1]); + RWNX_DBG("Karst RX IQ compensation for path 1 on 2.4GHz is: %08X\n", + config->karst.rx_iq_comp_2_4G[1]); /* Get Karst TX IQ compensation value for path0 on 5GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_TX_IQ_COMP_5G_PATH_0=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_TX_IQ_COMP_5G_PATH_0=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.tx_iq_comp_5G[0]) != 1) + if (sscanf(tag_ptr, "%08x", &config->karst.tx_iq_comp_5G[0]) != + 1) config->karst.tx_iq_comp_5G[0] = 0x01000000; } else config->karst.tx_iq_comp_5G[0] = 0x01000000; - RWNX_DBG("Karst TX IQ compensation for path 0 on 5GHz is: %08X\n", config->karst.tx_iq_comp_5G[0]); + RWNX_DBG("Karst TX IQ compensation for path 0 on 5GHz is: %08X\n", + config->karst.tx_iq_comp_5G[0]); /* Get Karst TX IQ compensation value for path1 on 5GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_TX_IQ_COMP_5G_PATH_1=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_TX_IQ_COMP_5G_PATH_1=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.tx_iq_comp_5G[1]) != 1) + if (sscanf(tag_ptr, "%08x", &config->karst.tx_iq_comp_5G[1]) != + 1) config->karst.tx_iq_comp_5G[1] = 0x01000000; } else config->karst.tx_iq_comp_5G[1] = 0x01000000; - RWNX_DBG("Karst TX IQ compensation for path 1 on 5GHz is: %08X\n", config->karst.tx_iq_comp_5G[1]); + RWNX_DBG("Karst TX IQ compensation for path 1 on 5GHz is: %08X\n", + config->karst.tx_iq_comp_5G[1]); /* Get Karst RX IQ compensation value for path0 on 5GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_RX_IQ_COMP_5G_PATH_0=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_RX_IQ_COMP_5G_PATH_0=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.rx_iq_comp_5G[0]) != 1) + if (sscanf(tag_ptr, "%08x", &config->karst.rx_iq_comp_5G[0]) != + 1) config->karst.rx_iq_comp_5G[0] = 0x01000000; } else config->karst.rx_iq_comp_5G[0] = 0x01000000; - RWNX_DBG("Karst RX IQ compensation for path 0 on 5GHz is: %08X\n", config->karst.rx_iq_comp_5G[0]); + RWNX_DBG("Karst RX IQ compensation for path 0 on 5GHz is: %08X\n", + config->karst.rx_iq_comp_5G[0]); /* Get Karst RX IQ compensation value for path1 on 5GHz */ - tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_RX_IQ_COMP_5G_PATH_1=", strlen("00000000")); + tag_ptr = rwnx_find_tag( + config_fw->data, config_fw->size, + "KARST_RX_IQ_COMP_5G_PATH_1=", strlen("00000000")); if (tag_ptr != NULL) { - if (sscanf(tag_ptr, "%08x", &config->karst.rx_iq_comp_5G[1]) != 1) + if (sscanf(tag_ptr, "%08x", &config->karst.rx_iq_comp_5G[1]) != + 1) config->karst.rx_iq_comp_5G[1] = 0x01000000; } else config->karst.rx_iq_comp_5G[1] = 0x01000000; - RWNX_DBG("Karst RX IQ compensation for path 1 on 5GHz is: %08X\n", config->karst.rx_iq_comp_5G[1]); + RWNX_DBG("Karst RX IQ compensation for path 1 on 5GHz is: %08X\n", + config->karst.rx_iq_comp_5G[1]); /* Get Karst default path */ tag_ptr = rwnx_find_tag(config_fw->data, config_fw->size, - "KARST_DEFAULT_PATH=", strlen("00")); + "KARST_DEFAULT_PATH=", strlen("00")); if (tag_ptr != NULL) { u8 val; if (sscanf(tag_ptr, "%hhx", &val) == 1) @@ -236,4 +263,3 @@ int rwnx_parse_phy_configfile(struct rwnx_hw *rwnx_hw, const char *filename, return 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.h index 7dc96fe58..219b21f5e 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cfgfile.h @@ -27,9 +27,9 @@ struct rwnx_phy_conf_file { }; int rwnx_parse_configfile(struct rwnx_hw *rwnx_hw, const char *filename, - struct rwnx_conf_file *config); + struct rwnx_conf_file *config); int rwnx_parse_phy_configfile(struct rwnx_hw *rwnx_hw, const char *filename, - struct rwnx_phy_conf_file *config, int path); + struct rwnx_phy_conf_file *config, int path); #endif /* _RWNX_CFGFILE_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.c index 36f4686ed..276fc6017 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.c @@ -27,15 +27,19 @@ /** * */ -extern int aicwf_sdio_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, u8 val); +extern int aicwf_sdio_writeb(struct aic_sdio_dev *sdiodev, uint regaddr, + u8 val); void rwnx_cmd_free(struct rwnx_cmd *cmd); static void cmd_dump(const struct rwnx_cmd *cmd) { - printk(KERN_CRIT "tkn[%d] flags:%04x result:%3d cmd:%4d-%-24s - reqcfm(%4d-%-s)\n", - cmd->tkn, cmd->flags, cmd->result, cmd->id, RWNX_ID2STR(cmd->id), - cmd->reqid, cmd->reqid != (lmac_msg_id_t)-1 ? RWNX_ID2STR(cmd->reqid) : "none"); + printk(KERN_CRIT + "tkn[%d] flags:%04x result:%3d cmd:%4d-%-24s - reqcfm(%4d-%-s)\n", + cmd->tkn, cmd->flags, cmd->result, cmd->id, RWNX_ID2STR(cmd->id), + cmd->reqid, + cmd->reqid != (lmac_msg_id_t)-1 ? RWNX_ID2STR(cmd->reqid) : + "none"); } /** @@ -46,12 +50,12 @@ static void cmd_complete(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) //RWNX_DBG(RWNX_FN_ENTRY_STR); lockdep_assert_held(&cmd_mgr->lock); - list_del(&cmd->list); - cmd_mgr->queue_sz--; + //list_del(&cmd->list); + //cmd_mgr->queue_sz--; cmd->flags |= RWNX_CMD_FLAG_DONE; if (cmd->flags & RWNX_CMD_FLAG_NONBLOCK) { - rwnx_cmd_free(cmd);//kfree(cmd); + rwnx_cmd_free(cmd); //kfree(cmd); } else { if (RWNX_CMD_WAIT_COMPLETE(cmd->flags)) { cmd->result = 0; @@ -60,7 +64,8 @@ static void cmd_complete(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) } } -int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) +int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, + struct rwnx_cmd *cmd) { bool defer_push = false; @@ -71,23 +76,23 @@ int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd spin_lock_bh(&cmd_mgr->lock); if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) { - printk(KERN_CRIT"cmd queue crashed\n"); + printk(KERN_CRIT "cmd queue crashed\n"); cmd->result = -EPIPE; spin_unlock_bh(&cmd_mgr->lock); return -EPIPE; } - #ifndef CONFIG_RWNX_FHOST +#ifndef CONFIG_RWNX_FHOST if (!list_empty(&cmd_mgr->cmds)) { if (cmd_mgr->queue_sz == cmd_mgr->max_queue_sz) { - printk(KERN_CRIT"Too many cmds (%d) already queued\n", - cmd_mgr->max_queue_sz); + printk(KERN_CRIT "Too many cmds (%d) already queued\n", + cmd_mgr->max_queue_sz); cmd->result = -ENOMEM; spin_unlock_bh(&cmd_mgr->lock); return -ENOMEM; } } - #endif +#endif cmd->flags |= RWNX_CMD_FLAG_WAIT_PUSH; defer_push = true; @@ -95,7 +100,7 @@ int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd if (cmd->flags & RWNX_CMD_FLAG_REQ_CFM) cmd->flags |= RWNX_CMD_FLAG_WAIT_CFM; - cmd->tkn = cmd_mgr->next_tkn++; + cmd->tkn = cmd_mgr->next_tkn++; cmd->result = -EINTR; if (!(cmd->flags & RWNX_CMD_FLAG_NONBLOCK)) @@ -109,43 +114,81 @@ int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd return 0; } +#if 1 +static void aic8800_start_system_reset_flow(struct aic_sdio_dev *aic) +{ + int ret = 0; + char *event_string = "DHDISDOWN=1"; + char *envp[] = { event_string, NULL }; + printk(KERN_ERR "wlan error reset flow.\n"); + printk(KERN_ERR "send event.\n"); + ret = kobject_uevent_env(&aic->dev->kobj, KOBJ_CHANGE, envp); + if (!ret) + printk(KERN_ERR "wlan error event send.\n"); +} +#endif + static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) { #ifdef AICWF_SDIO_SUPPORT int ret; - struct aic_sdio_dev *sdiodev = container_of(cmd_mgr, struct aic_sdio_dev, cmd_mgr); + struct aic_sdio_dev *sdiodev = + container_of(cmd_mgr, struct aic_sdio_dev, cmd_mgr); #endif #ifdef AICWF_USB_SUPPORT - struct aic_usb_dev *usbdev = container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); + struct aic_usb_dev *usbdev = + container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); #endif bool defer_push = false; + u8_l empty = 0; //RWNX_DBG(RWNX_FN_ENTRY_STR); #ifdef CREATE_TRACE_POINTS trace_msg_send(cmd->id); #endif - spin_lock_bh(&cmd_mgr->lock); + if (cmd->e2a_msg != NULL) { + do { + if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) + break; + spin_lock_bh(&cmd_mgr->lock); + empty = list_empty(&cmd_mgr->cmds); + if (!empty) { + spin_unlock_bh(&cmd_mgr->lock); + if (in_softirq()) { + printk("in_softirq:check cmdqueue empty\n"); + mdelay(10); + } else { + printk("check cmdqueue empty\n"); + msleep(50); + } + } + } while (!empty); //wait for cmd queue empty + } else { + spin_lock_bh(&cmd_mgr->lock); + } if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) { - printk(KERN_CRIT"cmd queue crashed\n"); + printk(KERN_CRIT "cmd queue crashed\n"); cmd->result = -EPIPE; spin_unlock_bh(&cmd_mgr->lock); return -EPIPE; } - #ifndef CONFIG_RWNX_FHOST +#ifndef CONFIG_RWNX_FHOST if (!list_empty(&cmd_mgr->cmds)) { struct rwnx_cmd *last; if (cmd_mgr->queue_sz == cmd_mgr->max_queue_sz) { - printk(KERN_CRIT"Too many cmds (%d) already queued\n", - cmd_mgr->max_queue_sz); + printk(KERN_CRIT "Too many cmds (%d) already queued\n", + cmd_mgr->max_queue_sz); cmd->result = -ENOMEM; spin_unlock_bh(&cmd_mgr->lock); return -ENOMEM; } last = list_entry(cmd_mgr->cmds.prev, struct rwnx_cmd, list); - if (last->flags & (RWNX_CMD_FLAG_WAIT_ACK | RWNX_CMD_FLAG_WAIT_PUSH | RWNX_CMD_FLAG_WAIT_CFM)) { + if (last->flags & + (RWNX_CMD_FLAG_WAIT_ACK | RWNX_CMD_FLAG_WAIT_PUSH | + RWNX_CMD_FLAG_WAIT_CFM)) { #if 0 // queue even NONBLOCK command. if (cmd->flags & RWNX_CMD_FLAG_NONBLOCK) { printk(KERN_CRIT"cmd queue busy\n"); @@ -158,7 +201,7 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) defer_push = true; } } - #endif +#endif #if 0 cmd->flags |= RWNX_CMD_FLAG_WAIT_ACK; @@ -166,7 +209,7 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) if (cmd->flags & RWNX_CMD_FLAG_REQ_CFM) cmd->flags |= RWNX_CMD_FLAG_WAIT_CFM; - cmd->tkn = cmd_mgr->next_tkn++; + cmd->tkn = cmd_mgr->next_tkn++; cmd->result = -EINTR; if (!(cmd->flags & RWNX_CMD_FLAG_NONBLOCK)) @@ -176,9 +219,9 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) cmd_mgr->queue_sz++; if (cmd->a2e_msg->id == ME_TRAFFIC_IND_REQ - #ifdef AICWF_ARP_OFFLOAD - || cmd->a2e_msg->id == MM_SET_ARPOFFLOAD_REQ - #endif +#ifdef AICWF_ARP_OFFLOAD + || cmd->a2e_msg->id == MM_SET_ARPOFFLOAD_REQ +#endif ) { defer_push = true; cmd->flags |= RWNX_CMD_FLAG_WAIT_PUSH; @@ -187,24 +230,28 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) spin_unlock_bh(&cmd_mgr->lock); if (!defer_push) { - //printk("queue:id=%x, param_len=%u\n",cmd->a2e_msg->id, cmd->a2e_msg->param_len); - #ifdef AICWF_SDIO_SUPPORT - aicwf_set_cmd_tx((void *)(sdiodev), cmd->a2e_msg, sizeof(struct lmac_msg) + cmd->a2e_msg->param_len); - #else - aicwf_set_cmd_tx((void *)(usbdev), cmd->a2e_msg, sizeof(struct lmac_msg) + cmd->a2e_msg->param_len); - #endif +//printk("queue:id=%x, param_len=%u\n",cmd->a2e_msg->id, cmd->a2e_msg->param_len); +#ifdef AICWF_SDIO_SUPPORT + aicwf_set_cmd_tx((void *)(sdiodev), cmd->a2e_msg, + sizeof(struct lmac_msg) + + cmd->a2e_msg->param_len); +#else + aicwf_set_cmd_tx((void *)(usbdev), cmd->a2e_msg, + sizeof(struct lmac_msg) + + cmd->a2e_msg->param_len); +#endif //rwnx_ipc_msg_push(rwnx_hw, cmd, RWNX_CMD_A2EMSG_LEN(cmd->a2e_msg)); kfree(cmd->a2e_msg); } else { - if(cmd_mgr->queue_sz <= 1){ - WAKE_CMD_WORK(cmd_mgr); - } + if (cmd_mgr->queue_sz <= 1) { + WAKE_CMD_WORK(cmd_mgr); + } return 0; } if (!(cmd->flags & RWNX_CMD_FLAG_NONBLOCK)) { - #ifdef CONFIG_RWNX_FHOST +#ifdef CONFIG_RWNX_FHOST if (wait_for_completion_killable(&cmd->complete)) { cmd->result = -EINTR; spin_lock_bh(&cmd_mgr->lock); @@ -212,16 +259,21 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) spin_unlock_bh(&cmd_mgr->lock); /* TODO: kill the cmd at fw level */ } - #else - unsigned long tout = msecs_to_jiffies(RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); +#else + unsigned long tout = msecs_to_jiffies( + RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); if (!wait_for_completion_timeout(&cmd->complete, tout)) { - printk(KERN_CRIT"cmd timed-out\n"); - #ifdef AICWF_SDIO_SUPPORT - ret = aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, 2); + printk(KERN_CRIT "cmd timed-out\n"); +#ifdef AICWF_SDIO_SUPPORT + ret = aicwf_sdio_writeb( + sdiodev, sdiodev->sdio_reg.wakeup_reg, 2); if (ret < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.wakeup_reg); + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.wakeup_reg); } - #endif +#endif + + aic8800_start_system_reset_flow(sdiodev); cmd_dump(cmd); spin_lock_bh(&cmd_mgr->lock); @@ -232,11 +284,15 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) } spin_unlock_bh(&cmd_mgr->lock); } else { - rwnx_cmd_free(cmd);//kfree(cmd); + spin_lock_bh(&cmd_mgr->lock); + list_del(&cmd->list); + cmd_mgr->queue_sz--; + spin_unlock_bh(&cmd_mgr->lock); + rwnx_cmd_free(cmd); //kfree(cmd); if (!list_empty(&cmd_mgr->cmds)) WAKE_CMD_WORK(cmd_mgr); } - #endif +#endif } else { cmd->result = 0; } @@ -254,7 +310,7 @@ static int cmd_mgr_llind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) RWNX_DBG(RWNX_FN_ENTRY_STR); spin_lock_bh(&cmd_mgr->lock); - list_for_each_entry(cur, &cmd_mgr->cmds, list) { + list_for_each_entry (cur, &cmd_mgr->cmds, list) { if (!acked) { if (cur->tkn == cmd->tkn) { if (WARN_ON_ONCE(cur != cmd)) { @@ -265,8 +321,8 @@ static int cmd_mgr_llind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) } } if (cur->flags & RWNX_CMD_FLAG_WAIT_PUSH) { - next = cur; - break; + next = cur; + break; } } if (!acked) { @@ -278,12 +334,12 @@ static int cmd_mgr_llind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) } if (next) { - #if 0 //there is no ack +#if 0 //there is no ack struct rwnx_hw *rwnx_hw = container_of(cmd_mgr, struct rwnx_hw, cmd_mgr); next->flags &= ~RWNX_CMD_FLAG_WAIT_PUSH; rwnx_ipc_msg_push(rwnx_hw, next, RWNX_CMD_A2EMSG_LEN(next->a2e_msg)); kfree(next->a2e_msg); - #endif +#endif } spin_unlock(&cmd_mgr->lock); @@ -292,7 +348,8 @@ static int cmd_mgr_llind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) void cmd_mgr_task_process(struct work_struct *work) { - struct rwnx_cmd_mgr *cmd_mgr = container_of(work, struct rwnx_cmd_mgr, cmdWork); + struct rwnx_cmd_mgr *cmd_mgr = + container_of(work, struct rwnx_cmd_mgr, cmdWork); struct rwnx_cmd *cur, *next = NULL; unsigned long tout; @@ -302,9 +359,10 @@ void cmd_mgr_task_process(struct work_struct *work) next = NULL; spin_lock_bh(&cmd_mgr->lock); - list_for_each_entry(cur, &cmd_mgr->cmds, list) { - if (cur->flags & RWNX_CMD_FLAG_WAIT_PUSH) { //just judge the first - next = cur; + list_for_each_entry (cur, &cmd_mgr->cmds, list) { + if (cur->flags & + RWNX_CMD_FLAG_WAIT_PUSH) { //just judge the first + next = cur; } break; } @@ -315,30 +373,44 @@ void cmd_mgr_task_process(struct work_struct *work) if (next) { #ifdef AICWF_SDIO_SUPPORT - struct aic_sdio_dev *sdiodev = container_of(cmd_mgr, struct aic_sdio_dev, cmd_mgr); + struct aic_sdio_dev *sdiodev = container_of( + cmd_mgr, struct aic_sdio_dev, cmd_mgr); #endif #ifdef AICWF_USB_SUPPORT - struct aic_usb_dev *usbdev = container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); + struct aic_usb_dev *usbdev = container_of( + cmd_mgr, struct aic_usb_dev, cmd_mgr); #endif next->flags &= ~RWNX_CMD_FLAG_WAIT_PUSH; //printk("cmd_process, cmd->id=%d, tkn=%d\r\n",next->reqid, next->tkn); //rwnx_ipc_msg_push(rwnx_hw, next, RWNX_CMD_A2EMSG_LEN(next->a2e_msg)); #ifdef AICWF_SDIO_SUPPORT - aicwf_set_cmd_tx((void *)(sdiodev), next->a2e_msg, sizeof(struct lmac_msg) + next->a2e_msg->param_len); + aicwf_set_cmd_tx((void *)(sdiodev), next->a2e_msg, + sizeof(struct lmac_msg) + + next->a2e_msg->param_len); #else - aicwf_set_cmd_tx((void *)(usbdev), next->a2e_msg, sizeof(struct lmac_msg) + next->a2e_msg->param_len); + aicwf_set_cmd_tx((void *)(usbdev), next->a2e_msg, + sizeof(struct lmac_msg) + + next->a2e_msg->param_len); #endif kfree(next->a2e_msg); - tout = msecs_to_jiffies(RWNX_80211_CMD_TIMEOUT_MS * cmd_mgr->queue_sz); - if (!wait_for_completion_timeout(&next->complete, tout)) { - printk(KERN_CRIT"cmd timed-out\n"); + tout = msecs_to_jiffies(RWNX_80211_CMD_TIMEOUT_MS * + cmd_mgr->queue_sz); + if (!wait_for_completion_timeout(&next->complete, + tout)) { + printk(KERN_CRIT "cmd timed-out\n"); #ifdef AICWF_SDIO_SUPPORT - if (aicwf_sdio_writeb(sdiodev, sdiodev->sdio_reg.wakeup_reg, 2) < 0) { - sdio_err("reg:%d write failed!\n", sdiodev->sdio_reg.wakeup_reg); + if (aicwf_sdio_writeb( + sdiodev, + sdiodev->sdio_reg.wakeup_reg, + 2) < 0) { + sdio_err("reg:%d write failed!\n", + sdiodev->sdio_reg.wakeup_reg); } #endif + aic8800_start_system_reset_flow(sdiodev); + cmd_dump(next); spin_lock_bh(&cmd_mgr->lock); cmd_mgr->state = RWNX_CMD_MGR_STATE_CRASHED; @@ -347,16 +419,19 @@ void cmd_mgr_task_process(struct work_struct *work) cmd_complete(cmd_mgr, next); } spin_unlock_bh(&cmd_mgr->lock); - } else - rwnx_cmd_free(next);//kfree(next); + } else { + spin_lock_bh(&cmd_mgr->lock); + list_del(&next->list); + cmd_mgr->queue_sz--; + spin_unlock_bh(&cmd_mgr->lock); + rwnx_cmd_free(next); //kfree(next); + } } } - } - static int cmd_mgr_run_callback(struct rwnx_hw *rwnx_hw, struct rwnx_cmd *cmd, - struct rwnx_cmd_e2amsg *msg, msg_cb_fct cb) + struct rwnx_cmd_e2amsg *msg, msg_cb_fct cb) { int res; @@ -375,15 +450,17 @@ static int cmd_mgr_run_callback(struct rwnx_hw *rwnx_hw, struct rwnx_cmd *cmd, * */ -static int cmd_mgr_msgind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd_e2amsg *msg, - msg_cb_fct cb) +static int cmd_mgr_msgind(struct rwnx_cmd_mgr *cmd_mgr, + struct rwnx_cmd_e2amsg *msg, msg_cb_fct cb) { #ifdef AICWF_SDIO_SUPPORT - struct aic_sdio_dev *sdiodev = container_of(cmd_mgr, struct aic_sdio_dev, cmd_mgr); + struct aic_sdio_dev *sdiodev = + container_of(cmd_mgr, struct aic_sdio_dev, cmd_mgr); struct rwnx_hw *rwnx_hw = sdiodev->rwnx_hw; #endif #ifdef AICWF_USB_SUPPORT - struct aic_usb_dev *usbdev = container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); + struct aic_usb_dev *usbdev = + container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); struct rwnx_hw *rwnx_hw = usbdev->rwnx_hw; #endif struct rwnx_cmd *cmd, *pos; @@ -395,22 +472,25 @@ static int cmd_mgr_msgind(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd_e2amsg * #endif //printk("cmd->id=%x\n", msg->id); spin_lock_bh(&cmd_mgr->lock); - list_for_each_entry_safe(cmd, pos, &cmd_mgr->cmds, list) { + list_for_each_entry_safe (cmd, pos, &cmd_mgr->cmds, list) { if (cmd->reqid == msg->id && - (cmd->flags & RWNX_CMD_FLAG_WAIT_CFM)) { - + (cmd->flags & RWNX_CMD_FLAG_WAIT_CFM)) { if (!cmd_mgr_run_callback(rwnx_hw, cmd, msg, cb)) { found = true; cmd->flags &= ~RWNX_CMD_FLAG_WAIT_CFM; - if (WARN((msg->param_len > RWNX_CMD_E2AMSG_LEN_MAX), - "Unexpect E2A msg len %d > %d\n", msg->param_len, - RWNX_CMD_E2AMSG_LEN_MAX)) { - msg->param_len = RWNX_CMD_E2AMSG_LEN_MAX; + if (WARN((msg->param_len > + RWNX_CMD_E2AMSG_LEN_MAX), + "Unexpect E2A msg len %d > %d\n", + msg->param_len, + RWNX_CMD_E2AMSG_LEN_MAX)) { + msg->param_len = + RWNX_CMD_E2AMSG_LEN_MAX; } if (cmd->e2a_msg && msg->param_len) - memcpy(cmd->e2a_msg, &msg->param, msg->param_len); + memcpy(cmd->e2a_msg, &msg->param, + msg->param_len); if (RWNX_CMD_WAIT_COMPLETE(cmd->flags)) cmd_complete(cmd_mgr, cmd); @@ -435,10 +515,9 @@ static void cmd_mgr_print(struct rwnx_cmd_mgr *cmd_mgr) struct rwnx_cmd *cur; spin_lock_bh(&cmd_mgr->lock); - RWNX_DBG("q_sz/max: %2d / %2d - next tkn: %d\n", - cmd_mgr->queue_sz, cmd_mgr->max_queue_sz, - cmd_mgr->next_tkn); - list_for_each_entry(cur, &cmd_mgr->cmds, list) { + RWNX_DBG("q_sz/max: %2d / %2d - next tkn: %d\n", cmd_mgr->queue_sz, + cmd_mgr->max_queue_sz, cmd_mgr->next_tkn); + list_for_each_entry (cur, &cmd_mgr->cmds, list) { cmd_dump(cur); } spin_unlock_bh(&cmd_mgr->lock); @@ -451,7 +530,7 @@ static void cmd_mgr_drain(struct rwnx_cmd_mgr *cmd_mgr) RWNX_DBG(RWNX_FN_ENTRY_STR); spin_lock_bh(&cmd_mgr->lock); - list_for_each_entry_safe(cur, nxt, &cmd_mgr->cmds, list) { + list_for_each_entry_safe (cur, nxt, &cmd_mgr->cmds, list) { list_del(&cur->list); cmd_mgr->queue_sz--; if (!(cur->flags & RWNX_CMD_FLAG_NONBLOCK)) @@ -468,10 +547,10 @@ void rwnx_cmd_mgr_init(struct rwnx_cmd_mgr *cmd_mgr) cmd_mgr->state = RWNX_CMD_MGR_STATE_INITED; spin_lock_init(&cmd_mgr->lock); cmd_mgr->max_queue_sz = RWNX_CMD_MAX_QUEUED; - cmd_mgr->queue = &cmd_mgr_queue; - cmd_mgr->print = &cmd_mgr_print; - cmd_mgr->drain = &cmd_mgr_drain; - cmd_mgr->llind = &cmd_mgr_llind; + cmd_mgr->queue = &cmd_mgr_queue; + cmd_mgr->print = &cmd_mgr_print; + cmd_mgr->drain = &cmd_mgr_drain; + cmd_mgr->llind = &cmd_mgr_llind; cmd_mgr->msgind = &cmd_mgr_msgind; INIT_WORK(&cmd_mgr->cmdWork, cmd_mgr_task_process); @@ -511,14 +590,16 @@ void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) buffer = bus->cmd_buf; memset(buffer, 0, CMD_BUF_MAX); - buffer[0] = (len+4) & 0x00ff; - buffer[1] = ((len+4) >> 8) &0x0f; + buffer[0] = (len + 4) & 0x00ff; + buffer[1] = ((len + 4) >> 8) & 0x0f; buffer[2] = 0x11; - if (sdiodev->chipid == PRODUCT_ID_AIC8801 || sdiodev->chipid == PRODUCT_ID_AIC8800DC || - sdiodev->chipid == PRODUCT_ID_AIC8800DW) - buffer[3] = 0x0; - else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80) - buffer[3] = crc8_ponl_107(&buffer[0], 3); // crc8 + if (sdiodev->chipid == PRODUCT_ID_AIC8801 || + sdiodev->chipid == PRODUCT_ID_AIC8800DC || + sdiodev->chipid == PRODUCT_ID_AIC8800DW) + buffer[3] = 0x0; + else if (sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) + buffer[3] = crc8_ponl_107(&buffer[0], 3); // crc8 index += 4; //there is a dummy word index += 4; @@ -536,4 +617,3 @@ void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) aicwf_bus_txmsg(bus, buffer, len + 8); } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.h index b757a65cf..69724f9a4 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_cmds.h @@ -17,29 +17,29 @@ #include "lmac_msg.h" #ifdef CONFIG_RWNX_SDM -#define RWNX_80211_CMD_TIMEOUT_MS (20 * 300) +#define RWNX_80211_CMD_TIMEOUT_MS (20 * 300) #elif defined(CONFIG_RWNX_FHOST) -#define RWNX_80211_CMD_TIMEOUT_MS (10000) +#define RWNX_80211_CMD_TIMEOUT_MS (10000) #else #ifdef AICWF_USB_SUPPORT -#define RWNX_80211_CMD_TIMEOUT_MS 2000//300 +#define RWNX_80211_CMD_TIMEOUT_MS 2000 //300 #else -#define RWNX_80211_CMD_TIMEOUT_MS 3000//500//300 +#define RWNX_80211_CMD_TIMEOUT_MS 6000 //500//300 #endif #endif -#define RWNX_CMD_FLAG_NONBLOCK BIT(0) -#define RWNX_CMD_FLAG_REQ_CFM BIT(1) -#define RWNX_CMD_FLAG_WAIT_PUSH BIT(2) -#define RWNX_CMD_FLAG_WAIT_ACK BIT(3) -#define RWNX_CMD_FLAG_WAIT_CFM BIT(4) -#define RWNX_CMD_FLAG_DONE BIT(5) +#define RWNX_CMD_FLAG_NONBLOCK BIT(0) +#define RWNX_CMD_FLAG_REQ_CFM BIT(1) +#define RWNX_CMD_FLAG_WAIT_PUSH BIT(2) +#define RWNX_CMD_FLAG_WAIT_ACK BIT(3) +#define RWNX_CMD_FLAG_WAIT_CFM BIT(4) +#define RWNX_CMD_FLAG_DONE BIT(5) /* ATM IPC design makes it possible to get the CFM before the ACK, * otherwise this could have simply been a state enum */ -#define RWNX_CMD_WAIT_COMPLETE(flags) \ +#define RWNX_CMD_WAIT_COMPLETE(flags) \ (!(flags & (RWNX_CMD_FLAG_WAIT_ACK | RWNX_CMD_FLAG_WAIT_CFM))) -#define RWNX_CMD_MAX_QUEUED 16 +#define RWNX_CMD_MAX_QUEUED 16 #ifdef CONFIG_RWNX_FHOST #include "ipc_fhost.h" @@ -61,11 +61,11 @@ struct rwnx_term_stream; struct rwnx_hw; struct rwnx_cmd; typedef int (*msg_cb_fct)(struct rwnx_hw *rwnx_hw, struct rwnx_cmd *cmd, - struct rwnx_cmd_e2amsg *msg); + struct rwnx_cmd_e2amsg *msg); static inline void put_u16(u8 *buf, u16 data) { - buf[0] = (u8)(data&0x00ff); - buf[1] = (u8)((data >> 8)&0x00ff); + buf[0] = (u8)(data & 0x00ff); + buf[1] = (u8)((data >> 8) & 0x00ff); } enum rwnx_cmd_mgr_state { @@ -87,9 +87,9 @@ struct rwnx_cmd { u32 result; u8 used; int array_id; - #ifdef CONFIG_RWNX_FHOST +#ifdef CONFIG_RWNX_FHOST struct rwnx_term_stream *stream; - #endif +#endif }; struct rwnx_cmd_mgr { @@ -101,9 +101,10 @@ struct rwnx_cmd_mgr { struct list_head cmds; - int (*queue)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); - int (*llind)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); - int (*msgind)(struct rwnx_cmd_mgr *, struct rwnx_cmd_e2amsg *, msg_cb_fct); + int (*queue)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); + int (*llind)(struct rwnx_cmd_mgr *, struct rwnx_cmd *); + int (*msgind)(struct rwnx_cmd_mgr *, struct rwnx_cmd_e2amsg *, + msg_cb_fct); void (*print)(struct rwnx_cmd_mgr *); void (*drain)(struct rwnx_cmd_mgr *); @@ -111,14 +112,15 @@ struct rwnx_cmd_mgr { struct workqueue_struct *cmd_wq; }; -#define WAKE_CMD_WORK(cmd_mgr) \ - do { \ - queue_work((cmd_mgr)->cmd_wq, &cmd_mgr->cmdWork); \ +#define WAKE_CMD_WORK(cmd_mgr) \ + do { \ + queue_work((cmd_mgr)->cmd_wq, &cmd_mgr->cmdWork); \ } while (0) void rwnx_cmd_mgr_init(struct rwnx_cmd_mgr *cmd_mgr); void rwnx_cmd_mgr_deinit(struct rwnx_cmd_mgr *cmd_mgr); -int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd); +int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, + struct rwnx_cmd *cmd); void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len); #endif /* _RWNX_CMDS_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_compat.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_compat.h index 9287eca60..4b0ce1d2e 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_compat.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_compat.h @@ -30,7 +30,7 @@ /* Generic */ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) #define __bf_shf(x) (__builtin_ffsll(x) - 1) -#define FIELD_PREP(_mask, _val) \ +#define FIELD_PREP(_mask, _val) \ (((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask)) #else #include @@ -51,17 +51,19 @@ #define HIGH_KERNEL_VERSION4 KERNEL_VERSION(6, 3, 0) #endif - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 60) -#define IEEE80211_MAX_AMPDU_BUF IEEE80211_MAX_AMPDU_BUF_HE -#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB -#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB -#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU +#define IEEE80211_MAX_AMPDU_BUF IEEE80211_MAX_AMPDU_BUF_HE +#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB \ + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB +#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB \ + IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB +#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA \ + IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU #endif - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) -#define IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK IEEE80211_HE_MAC_CAP3_MAX_A_AMPDU_LEN_EXP_MASK +#define IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK \ + IEEE80211_HE_MAC_CAP3_MAX_A_AMPDU_LEN_EXP_MASK #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) @@ -73,87 +75,87 @@ struct ieee80211_radiotap_he { }; enum ieee80211_radiotap_he_bits { - IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MASK = 3, - IEEE80211_RADIOTAP_HE_DATA1_FORMAT_SU = 0, - IEEE80211_RADIOTAP_HE_DATA1_FORMAT_EXT_SU = 1, - IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MU = 2, - IEEE80211_RADIOTAP_HE_DATA1_FORMAT_TRIG = 3, + IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MASK = 3, + IEEE80211_RADIOTAP_HE_DATA1_FORMAT_SU = 0, + IEEE80211_RADIOTAP_HE_DATA1_FORMAT_EXT_SU = 1, + IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MU = 2, + IEEE80211_RADIOTAP_HE_DATA1_FORMAT_TRIG = 3, - IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN = 0x0004, - IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN = 0x0008, - IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN = 0x0010, - IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN = 0x0020, - IEEE80211_RADIOTAP_HE_DATA1_DATA_DCM_KNOWN = 0x0040, - IEEE80211_RADIOTAP_HE_DATA1_CODING_KNOWN = 0x0080, - IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN = 0x0100, - IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN = 0x0200, - IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN = 0x0400, - IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN = 0x0800, - IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN = 0x1000, - IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN = 0x2000, - IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN = 0x4000, - IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN = 0x8000, + IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN = 0x0004, + IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN = 0x0008, + IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN = 0x0010, + IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN = 0x0020, + IEEE80211_RADIOTAP_HE_DATA1_DATA_DCM_KNOWN = 0x0040, + IEEE80211_RADIOTAP_HE_DATA1_CODING_KNOWN = 0x0080, + IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN = 0x0100, + IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN = 0x0200, + IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN = 0x0400, + IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN = 0x0800, + IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN = 0x1000, + IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN = 0x2000, + IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN = 0x4000, + IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN = 0x8000, - IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN = 0x0001, - IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN = 0x0002, - IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN = 0x0004, - IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN = 0x0008, - IEEE80211_RADIOTAP_HE_DATA2_TXBF_KNOWN = 0x0010, - IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN = 0x0020, - IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN = 0x0040, - IEEE80211_RADIOTAP_HE_DATA2_MIDAMBLE_KNOWN = 0x0080, - IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET = 0x3f00, - IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET_KNOWN = 0x4000, - IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC = 0x8000, + IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN = 0x0001, + IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN = 0x0002, + IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN = 0x0004, + IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN = 0x0008, + IEEE80211_RADIOTAP_HE_DATA2_TXBF_KNOWN = 0x0010, + IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN = 0x0020, + IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN = 0x0040, + IEEE80211_RADIOTAP_HE_DATA2_MIDAMBLE_KNOWN = 0x0080, + IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET = 0x3f00, + IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET_KNOWN = 0x4000, + IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC = 0x8000, - IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR = 0x003f, - IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE = 0x0040, - IEEE80211_RADIOTAP_HE_DATA3_UL_DL = 0x0080, - IEEE80211_RADIOTAP_HE_DATA3_DATA_MCS = 0x0f00, - IEEE80211_RADIOTAP_HE_DATA3_DATA_DCM = 0x1000, - IEEE80211_RADIOTAP_HE_DATA3_CODING = 0x2000, - IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG = 0x4000, - IEEE80211_RADIOTAP_HE_DATA3_STBC = 0x8000, + IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR = 0x003f, + IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE = 0x0040, + IEEE80211_RADIOTAP_HE_DATA3_UL_DL = 0x0080, + IEEE80211_RADIOTAP_HE_DATA3_DATA_MCS = 0x0f00, + IEEE80211_RADIOTAP_HE_DATA3_DATA_DCM = 0x1000, + IEEE80211_RADIOTAP_HE_DATA3_CODING = 0x2000, + IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG = 0x4000, + IEEE80211_RADIOTAP_HE_DATA3_STBC = 0x8000, - IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE = 0x000f, - IEEE80211_RADIOTAP_HE_DATA4_MU_STA_ID = 0x7ff0, - IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1 = 0x000f, - IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2 = 0x00f0, - IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3 = 0x0f00, - IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4 = 0xf000, + IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE = 0x000f, + IEEE80211_RADIOTAP_HE_DATA4_MU_STA_ID = 0x7ff0, + IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1 = 0x000f, + IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2 = 0x00f0, + IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3 = 0x0f00, + IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4 = 0xf000, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC = 0x000f, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_20MHZ = 0, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_40MHZ = 1, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_80MHZ = 2, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_160MHZ = 3, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_26T = 4, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_52T = 5, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_106T = 6, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_242T = 7, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_484T = 8, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_996T = 9, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_2x996T = 10, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC = 0x000f, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_20MHZ = 0, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_40MHZ = 1, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_80MHZ = 2, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_160MHZ = 3, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_26T = 4, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_52T = 5, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_106T = 6, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_242T = 7, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_484T = 8, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_996T = 9, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_2x996T = 10, - IEEE80211_RADIOTAP_HE_DATA5_GI = 0x0030, - IEEE80211_RADIOTAP_HE_DATA5_GI_0_8 = 0, - IEEE80211_RADIOTAP_HE_DATA5_GI_1_6 = 1, - IEEE80211_RADIOTAP_HE_DATA5_GI_3_2 = 2, + IEEE80211_RADIOTAP_HE_DATA5_GI = 0x0030, + IEEE80211_RADIOTAP_HE_DATA5_GI_0_8 = 0, + IEEE80211_RADIOTAP_HE_DATA5_GI_1_6 = 1, + IEEE80211_RADIOTAP_HE_DATA5_GI_3_2 = 2, - IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE = 0x00c0, - IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_UNKNOWN = 0, - IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_1X = 1, - IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_2X = 2, - IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X = 3, - IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS = 0x0700, - IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD = 0x3000, - IEEE80211_RADIOTAP_HE_DATA5_TXBF = 0x4000, - IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG = 0x8000, + IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE = 0x00c0, + IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_UNKNOWN = 0, + IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_1X = 1, + IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_2X = 2, + IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X = 3, + IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS = 0x0700, + IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD = 0x3000, + IEEE80211_RADIOTAP_HE_DATA5_TXBF = 0x4000, + IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG = 0x8000, - IEEE80211_RADIOTAP_HE_DATA6_NSTS = 0x000f, - IEEE80211_RADIOTAP_HE_DATA6_DOPPLER = 0x0010, - IEEE80211_RADIOTAP_HE_DATA6_TXOP = 0x7f00, - IEEE80211_RADIOTAP_HE_DATA6_MIDAMBLE_PDCTY = 0x8000, + IEEE80211_RADIOTAP_HE_DATA6_NSTS = 0x000f, + IEEE80211_RADIOTAP_HE_DATA6_DOPPLER = 0x0010, + IEEE80211_RADIOTAP_HE_DATA6_TXOP = 0x7f00, + IEEE80211_RADIOTAP_HE_DATA6_MIDAMBLE_PDCTY = 0x8000, }; struct ieee80211_radiotap_he_mu { @@ -163,42 +165,43 @@ struct ieee80211_radiotap_he_mu { }; enum ieee80211_radiotap_he_mu_bits { - IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS = 0x000f, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS_KNOWN = 0x0010, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM = 0x0020, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM_KNOWN = 0x0040, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN = 0x0080, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN = 0x0100, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN = 0x0200, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU_KNOWN = 0x1000, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU = 0x2000, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_COMP_KNOWN = 0x4000, - IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_SYMS_USERS_KNOWN = 0x8000, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS = 0x000f, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS_KNOWN = 0x0010, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM = 0x0020, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM_KNOWN = 0x0040, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN = 0x0080, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN = 0x0100, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN = 0x0200, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU_KNOWN = 0x1000, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU = 0x2000, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_COMP_KNOWN = 0x4000, + IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_SYMS_USERS_KNOWN = 0x8000, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW = 0x0003, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_20MHZ = 0x0000, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_40MHZ = 0x0001, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_80MHZ = 0x0002, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_160MHZ = 0x0003, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_KNOWN = 0x0004, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP = 0x0008, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS = 0x00f0, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW = 0x0300, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW = 0x0003, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_20MHZ = 0x0000, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_40MHZ = 0x0001, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_80MHZ = 0x0002, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_160MHZ = 0x0003, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_KNOWN = 0x0004, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP = 0x0008, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS = 0x00f0, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW = 0x0300, IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW_KNOWN = 0x0400, - IEEE80211_RADIOTAP_HE_MU_FLAGS2_CH2_CTR_26T_RU = 0x0800, + IEEE80211_RADIOTAP_HE_MU_FLAGS2_CH2_CTR_26T_RU = 0x0800, }; #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0) -#define rwnx_cfg80211_add_iface(wiphy, name, name_assign_type, type, params) \ +#define rwnx_cfg80211_add_iface(wiphy, name, name_assign_type, type, params) \ rwnx_cfg80211_add_iface(wiphy, name, type, u32 *flags, params) #else -#define rwnx_cfg80211_add_iface(wiphy, name, name_assign_type, type, params) \ - rwnx_cfg80211_add_iface(wiphy, name, name_assign_type, type, u32 *flags, params) +#define rwnx_cfg80211_add_iface(wiphy, name, name_assign_type, type, params) \ + rwnx_cfg80211_add_iface(wiphy, name, name_assign_type, type, \ + u32 *flags, params) #endif -#define rwnx_cfg80211_change_iface(wiphy, dev, type, params) \ +#define rwnx_cfg80211_change_iface(wiphy, dev, type, params) \ rwnx_cfg80211_change_iface(wiphy, dev, type, u32 *flags, params) #define CCFS0(vht) vht->center_freq_seg1_idx @@ -211,34 +214,36 @@ enum ieee80211_radiotap_he_mu_bits { #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) -#define cfg80211_cqm_rssi_notify(dev, event, level, gfp) \ +#define cfg80211_cqm_rssi_notify(dev, event, level, gfp) \ cfg80211_cqm_rssi_notify(dev, event, gfp) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0) -#define ieee80211_amsdu_to_8023s(skb, list, addr, iftype, extra_headroom, check_da, check_sa) \ +#define ieee80211_amsdu_to_8023s(skb, list, addr, iftype, extra_headroom, \ + check_da, check_sa) \ ieee80211_amsdu_to_8023s(skb, list, addr, iftype, extra_headroom, false) #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) #define NUM_NL80211_BANDS IEEE80211_NUM_BANDS #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) -#define cfg80211_disconnected(dev, reason, ie, len, local, gfp) \ +#define cfg80211_disconnected(dev, reason, ie, len, local, gfp) \ cfg80211_disconnected(dev, reason, ie, len, gfp) #endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && !(defined CONFIG_VENDOR_RWNX) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && \ + !(defined CONFIG_VENDOR_RWNX) #define ieee80211_chandef_to_operating_class(chan_def, op_class) 0 #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) -#define SURVEY_INFO_TIME SURVEY_INFO_CHANNEL_TIME -#define SURVEY_INFO_TIME_BUSY SURVEY_INFO_CHANNEL_TIME_BUSY +#define SURVEY_INFO_TIME SURVEY_INFO_CHANNEL_TIME +#define SURVEY_INFO_TIME_BUSY SURVEY_INFO_CHANNEL_TIME_BUSY #define SURVEY_INFO_TIME_EXT_BUSY SURVEY_INFO_CHANNEL_TIME_EXT_BUSY -#define SURVEY_INFO_TIME_RX SURVEY_INFO_CHANNEL_TIME_RX -#define SURVEY_INFO_TIME_TX SURVEY_INFO_CHANNEL_TIME_TX +#define SURVEY_INFO_TIME_RX SURVEY_INFO_CHANNEL_TIME_RX +#define SURVEY_INFO_TIME_TX SURVEY_INFO_CHANNEL_TIME_TX #define SURVEY_TIME(s) s->channel_time #define SURVEY_TIME_BUSY(s) s->channel_time_busy @@ -250,37 +255,43 @@ enum ieee80211_radiotap_he_mu_bits { #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) #define cfg80211_ch_switch_started_notify(dev, chandef, count) -#define WLAN_BSS_COEX_INFORMATION_REQUEST BIT(0) -#define WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING BIT(2) -#define WLAN_EXT_CAPA4_TDLS_BUFFER_STA BIT(4) -#define WLAN_EXT_CAPA4_TDLS_PEER_PSM BIT(5) -#define WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH BIT(6) -#define WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED BIT(7) -#define NL80211_FEATURE_TDLS_CHANNEL_SWITCH 0 +#define WLAN_BSS_COEX_INFORMATION_REQUEST BIT(0) +#define WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING BIT(2) +#define WLAN_EXT_CAPA4_TDLS_BUFFER_STA BIT(4) +#define WLAN_EXT_CAPA4_TDLS_PEER_PSM BIT(5) +#define WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH BIT(6) +#define WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED BIT(7) +#define NL80211_FEATURE_TDLS_CHANNEL_SWITCH 0 #define STA_TDLS_INITIATOR(sta) 0 -#define REGULATORY_IGNORE_STALE_KICKOFF 0 #else #define STA_TDLS_INITIATOR(sta) sta->tdls_initiator #endif +#ifndef REGULATORY_IGNORE_STALE_KICKOFF +#define REGULATORY_IGNORE_STALE_KICKOFF 0 +#endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)) -#define cfg80211_rx_mgmt(wdev, freq, rssi, buf, len, flags) \ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)) +#define cfg80211_rx_mgmt(wdev, freq, rssi, buf, len, flags) \ cfg80211_rx_mgmt(wdev, freq, rssi, buf, len, flags, GFP_ATOMIC) #elif LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) -#define cfg80211_rx_mgmt(wdev, freq, rssi, buf, len, flags) \ +#define cfg80211_rx_mgmt(wdev, freq, rssi, buf, len, flags) \ cfg80211_rx_mgmt(wdev, freq, rssi, buf, len, GFP_ATOMIC) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) #if 0 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) -#define rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, peer_capability, initiator, buf, len) \ - rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, peer_capability, buf, len) +#define rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, \ + peer_capability, initiator, buf, len) \ + rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, \ + peer_capability, buf, len) #else -#define rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, peer_capability, initiator, buf, len) \ +#define rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, \ + peer_capability, initiator, buf, len) \ rwnx_cfg80211_tdls_mgmt(wiphy, dev, peer, act, tok, status, buf, len) #endif #endif @@ -310,16 +321,16 @@ struct ieee80211_wmm_param_ie { #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) enum { - IEEE80211_HE_MCS_SUPPORT_0_7 = 0, - IEEE80211_HE_MCS_SUPPORT_0_9 = 1, - IEEE80211_HE_MCS_SUPPORT_0_11 = 2, - IEEE80211_HE_MCS_NOT_SUPPORTED = 3, + IEEE80211_HE_MCS_SUPPORT_0_7 = 0, + IEEE80211_HE_MCS_SUPPORT_0_9 = 1, + IEEE80211_HE_MCS_SUPPORT_0_11 = 2, + IEEE80211_HE_MCS_NOT_SUPPORTED = 3, }; #endif /* MAC80211 */ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) -#define rwnx_ops_mgd_prepare_tx(hw, vif, duration) \ +#define rwnx_ops_mgd_prepare_tx(hw, vif, duration) \ rwnx_ops_mgd_prepare_tx(hw, vif) #endif @@ -339,8 +350,11 @@ enum { #else #define RX_ENC_HT(s) (s->encoding = RX_ENC_HT) -#define RX_ENC_HT_GF(s) { s->encoding = RX_ENC_HT; \ - s->enc_flags |= RX_ENC_FLAG_HT_GF; } +#define RX_ENC_HT_GF(s) \ + { \ + s->encoding = RX_ENC_HT; \ + s->enc_flags |= RX_ENC_FLAG_HT_GF; \ + } #define RX_ENC_VHT(s) (s->encoding = RX_ENC_VHT) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) #define RX_ENC_HE(s) (s->encoding = RX_ENC_VHT) @@ -358,62 +372,66 @@ enum { #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) -#define ieee80211_cqm_rssi_notify(vif, event, level, gfp) \ +#define ieee80211_cqm_rssi_notify(vif, event, level, gfp) \ ieee80211_cqm_rssi_notify(vif, event, gfp) #endif #ifndef CONFIG_VENDOR_RWNX_AMSDUS_TX #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)) -#define rwnx_ops_ampdu_action(hw, vif, params) \ - rwnx_ops_ampdu_action(hw, vif, enum ieee80211_ampdu_mlme_action action, \ - struct ieee80211_sta *sta, u16 tid, u16 *ssn, u8 buf_size) +#define rwnx_ops_ampdu_action(hw, vif, params) \ + rwnx_ops_ampdu_action(hw, vif, \ + enum ieee80211_ampdu_mlme_action action, \ + struct ieee80211_sta *sta, u16 tid, u16 *ssn, \ + u8 buf_size) #elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)) -#define rwnx_ops_ampdu_action(hw, vif, params) \ - rwnx_ops_ampdu_action(hw, vif, enum ieee80211_ampdu_mlme_action action, \ - struct ieee80211_sta *sta, u16 tid, u16 *ssn, u8 buf_size, \ - bool amsdu) +#define rwnx_ops_ampdu_action(hw, vif, params) \ + rwnx_ops_ampdu_action(hw, vif, \ + enum ieee80211_ampdu_mlme_action action, \ + struct ieee80211_sta *sta, u16 tid, u16 *ssn, \ + u8 buf_size, bool amsdu) #endif #endif /* CONFIG_VENDOR_RWNX_AMSDUS_TX */ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) #define IEEE80211_HW_SUPPORT_FAST_XMIT 0 #define ieee80211_hw_check(hw, feat) (hw->flags & IEEE80211_HW_##feat) -#define ieee80211_hw_set(hw, feat) {hw->flags |= IEEE80211_HW_##feat; } +#define ieee80211_hw_set(hw, feat) \ + { \ + hw->flags |= IEEE80211_HW_##feat; \ + } #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) -#define rwnx_ops_sw_scan_start(hw, vif, mac_addr) \ - rwnx_ops_sw_scan_start(hw) -#define rwnx_ops_sw_scan_complete(hw, vif) \ - rwnx_ops_sw_scan_complete(hw) +#define rwnx_ops_sw_scan_start(hw, vif, mac_addr) rwnx_ops_sw_scan_start(hw) +#define rwnx_ops_sw_scan_complete(hw, vif) rwnx_ops_sw_scan_complete(hw) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) -#define rwnx_ops_hw_scan(hw, vif, hw_req) \ +#define rwnx_ops_hw_scan(hw, vif, hw_req) \ rwnx_ops_hw_scan(hw, vif, struct cfg80211_scan_request *req) #endif /* NET */ #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) -#define rwnx_select_queue(dev, skb, sb_dev) \ - rwnx_select_queue(dev, skb) +#define rwnx_select_queue(dev, skb, sb_dev) rwnx_select_queue(dev, skb) #elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) -#define rwnx_select_queue(dev, skb, sb_dev) \ - rwnx_select_queue(dev, skb, void *accel_priv, select_queue_fallback_t fallback) +#define rwnx_select_queue(dev, skb, sb_dev) \ + rwnx_select_queue(dev, skb, void *accel_priv, \ + select_queue_fallback_t fallback) #elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) -#define rwnx_select_queue(dev, skb, sb_dev) \ +#define rwnx_select_queue(dev, skb, sb_dev) \ rwnx_select_queue(dev, skb, sb_dev, select_queue_fallback_t fallback) #else -#define rwnx_select_queue(dev, skb, sb_dev) \ - rwnx_select_queue(dev, skb, sb_dev) +#define rwnx_select_queue(dev, skb, sb_dev) rwnx_select_queue(dev, skb, sb_dev) #endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)) && !(defined CONFIG_VENDOR_RWNX) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)) && \ + !(defined CONFIG_VENDOR_RWNX) #define sk_pacing_shift_update(sk, shift) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) -#define alloc_netdev_mqs(size, name, assign, setup, txqs, rxqs) \ +#define alloc_netdev_mqs(size, name, assign, setup, txqs, rxqs) \ alloc_netdev_mqs(size, name, setup, txqs, rxqs) #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.c index f7e2dd2f6..968a1293c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.c @@ -10,7 +10,6 @@ ****************************************************************************** */ - #include #include #include @@ -25,17 +24,17 @@ #ifdef CONFIG_DEBUG_FS #ifdef CONFIG_RWNX_FULLMAC -static ssize_t rwnx_dbgfs_stats_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_stats_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char *buf; int ret; int i, skipped; ssize_t read; - int bufsz = (NX_TXQ_CNT) * 20 + (ARRAY_SIZE(priv->stats.amsdus_rx) + 1) * 40 - + (ARRAY_SIZE(priv->stats.ampdus_tx) * 30); + int bufsz = (NX_TXQ_CNT)*20 + + (ARRAY_SIZE(priv->stats.amsdus_rx) + 1) * 40 + + (ARRAY_SIZE(priv->stats.ampdus_tx) * 30); if (*ppos) return 0; @@ -46,19 +45,18 @@ static ssize_t rwnx_dbgfs_stats_read(struct file *file, ret = scnprintf(buf, bufsz, "TXQs CFM balances "); for (i = 0; i < NX_TXQ_CNT; i++) - ret += scnprintf(&buf[ret], bufsz - ret, - " [%1d]:%3d", i, - priv->stats.cfm_balance[i]); + ret += scnprintf(&buf[ret], bufsz - ret, " [%1d]:%3d", i, + priv->stats.cfm_balance[i]); ret += scnprintf(&buf[ret], bufsz - ret, "\n"); #ifdef CONFIG_RWNX_SPLIT_TX_BUF ret += scnprintf(&buf[ret], bufsz - ret, - "\nAMSDU[len] done failed received\n"); + "\nAMSDU[len] done failed received\n"); for (i = skipped = 0; i < NX_TX_PAYLOAD_MAX; i++) { if (priv->stats.amsdus[i].done) { - per = DIV_ROUND_UP((priv->stats.amsdus[i].failed) * - 100, priv->stats.amsdus[i].done); + per = DIV_ROUND_UP((priv->stats.amsdus[i].failed) * 100, + priv->stats.amsdus[i].done); } else if (priv->stats.amsdus_rx[i]) { per = 0; } else { @@ -72,10 +70,10 @@ static ssize_t rwnx_dbgfs_stats_read(struct file *file, } ret += scnprintf(&buf[ret], bufsz - ret, - " [%2d] %10d %8d(%3d%%) %10d\n", i ? i + 1 : i, - priv->stats.amsdus[i].done, - priv->stats.amsdus[i].failed, per, - priv->stats.amsdus_rx[i]); + " [%2d] %10d %8d(%3d%%) %10d\n", + i ? i + 1 : i, priv->stats.amsdus[i].done, + priv->stats.amsdus[i].failed, per, + priv->stats.amsdus_rx[i]); } for (; i < ARRAY_SIZE(priv->stats.amsdus_rx); i++) { @@ -89,51 +87,46 @@ static ssize_t rwnx_dbgfs_stats_read(struct file *file, } ret += scnprintf(&buf[ret], bufsz - ret, - " [%2d] %10d\n", - i + 1, priv->stats.amsdus_rx[i]); + " [%2d] %10d\n", + i + 1, priv->stats.amsdus_rx[i]); } #else - ret += scnprintf(&buf[ret], bufsz - ret, - "\nAMSDU[len] received\n"); + ret += scnprintf(&buf[ret], bufsz - ret, "\nAMSDU[len] received\n"); for (i = skipped = 0; i < ARRAY_SIZE(priv->stats.amsdus_rx); i++) { if (!priv->stats.amsdus_rx[i]) { skipped = 1; continue; } if (skipped) { - ret += scnprintf(&buf[ret], bufsz - ret, - " ...\n"); + ret += scnprintf(&buf[ret], bufsz - ret, " ...\n"); skipped = 0; } - ret += scnprintf(&buf[ret], bufsz - ret, - " [%2d] %10d\n", - i + 1, priv->stats.amsdus_rx[i]); + ret += scnprintf(&buf[ret], bufsz - ret, " [%2d] %10d\n", + i + 1, priv->stats.amsdus_rx[i]); } #endif /* CONFIG_RWNX_SPLIT_TX_BUF */ ret += scnprintf(&buf[ret], bufsz - ret, - "\nAMPDU[len] done received\n"); + "\nAMPDU[len] done received\n"); for (i = skipped = 0; i < ARRAY_SIZE(priv->stats.ampdus_tx); i++) { if (!priv->stats.ampdus_tx[i] && !priv->stats.ampdus_rx[i]) { skipped = 1; continue; } if (skipped) { - ret += scnprintf(&buf[ret], bufsz - ret, - " ...\n"); + ret += scnprintf(&buf[ret], bufsz - ret, " ...\n"); skipped = 0; } - ret += scnprintf(&buf[ret], bufsz - ret, - " [%2d] %9d %9d\n", i ? i + 1 : i, - priv->stats.ampdus_tx[i], priv->stats.ampdus_rx[i]); + ret += scnprintf(&buf[ret], bufsz - ret, " [%2d] %9d %9d\n", + i ? i + 1 : i, priv->stats.ampdus_tx[i], + priv->stats.ampdus_rx[i]); } - ret += scnprintf(&buf[ret], bufsz - ret, - "#mpdu missed %9d\n", - priv->stats.ampdus_rx_miss); + ret += scnprintf(&buf[ret], bufsz - ret, "#mpdu missed %9d\n", + priv->stats.ampdus_rx_miss); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); kfree(buf); @@ -143,8 +136,8 @@ static ssize_t rwnx_dbgfs_stats_read(struct file *file, #endif /* CONFIG_RWNX_FULLMAC */ static ssize_t rwnx_dbgfs_stats_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *priv = file->private_data; @@ -188,20 +181,23 @@ DEBUGFS_READ_WRITE_FILE_OPS(stats); #define TXQ_HDR_SUF_FMT "" #endif /* CONFIG_RWNX_AMSDUS_TX */ -#define TXQ_HDR_MAX_LEN (sizeof(TXQ_STA_PREF) + sizeof(TXQ_HDR) + sizeof(TXQ_HDR_SUFF) + 1) +#define TXQ_HDR_MAX_LEN \ + (sizeof(TXQ_STA_PREF) + sizeof(TXQ_HDR) + sizeof(TXQ_HDR_SUFF) + 1) #ifdef CONFIG_RWNX_FULLMAC -#define PS_HDR "Legacy PS: ready=%d, sp=%d / UAPSD: ready=%d, sp=%d" +#define PS_HDR "Legacy PS: ready=%d, sp=%d / UAPSD: ready=%d, sp=%d" #define PS_HDR_LEGACY "Legacy PS: ready=%d, sp=%d" -#define PS_HDR_UAPSD "UAPSD: ready=%d, sp=%d" -#define PS_HDR_MAX_LEN sizeof("Legacy PS: ready=xxx, sp=xxx / UAPSD: ready=xxx, sp=xxx\n") +#define PS_HDR_UAPSD "UAPSD: ready=%d, sp=%d" +#define PS_HDR_MAX_LEN \ + sizeof("Legacy PS: ready=xxx, sp=xxx / UAPSD: ready=xxx, sp=xxx\n") #else #define PS_HDR "" #define PS_HDR_MAX_LEN 0 #endif /* CONFIG_RWNX_FULLMAC */ #define STA_HDR "** STA %d (%pM)\n" -#define STA_HDR_MAX_LEN (sizeof("- STA xx (xx:xx:xx:xx:xx:xx)\n") + PS_HDR_MAX_LEN) +#define STA_HDR_MAX_LEN \ + (sizeof("- STA xx (xx:xx:xx:xx:xx:xx)\n") + PS_HDR_MAX_LEN) #ifdef CONFIG_RWNX_FULLMAC #define VIF_HDR "* VIF [%d] %s\n" @@ -211,7 +207,6 @@ DEBUGFS_READ_WRITE_FILE_OPS(stats); #define VIF_HDR_MAX_LEN sizeof(VIF_HDR) #endif - #ifdef CONFIG_RWNX_AMSDUS_TX #ifdef CONFIG_RWNX_FULLMAC @@ -226,13 +221,15 @@ DEBUGFS_READ_WRITE_FILE_OPS(stats); #define VIF_SEP_LEN sizeof(VIF_SEP) -#define CAPTION "status: L=in hwq list, F=stop full, P=stop sta PS, V=stop vif PS, C=stop channel, S=stop CSA, M=stop MU" +#define CAPTION \ + "status: L=in hwq list, F=stop full, P=stop sta PS, V=stop vif PS, C=stop channel, S=stop CSA, M=stop MU" #define CAPTION_LEN sizeof(CAPTION) #define STA_TXQ 0 #define VIF_TXQ 1 -static int rwnx_dbgfs_txq(char *buf, size_t size, struct rwnx_txq *txq, int type, int tid, char *name) +static int rwnx_dbgfs_txq(char *buf, size_t size, struct rwnx_txq *txq, + int type, int tid, char *name) { int res, idx = 0; @@ -247,15 +244,15 @@ static int rwnx_dbgfs_txq(char *buf, size_t size, struct rwnx_txq *txq, int type } res = scnprintf(&buf[idx], size, TXQ_HDR_FMT, txq->idx, - (txq->status & RWNX_TXQ_IN_HWQ_LIST) ? "L" : " ", - (txq->status & RWNX_TXQ_STOP_FULL) ? "F" : " ", - (txq->status & RWNX_TXQ_STOP_STA_PS) ? "P" : " ", - (txq->status & RWNX_TXQ_STOP_VIF_PS) ? "V" : " ", - (txq->status & RWNX_TXQ_STOP_CHAN) ? "C" : " ", - (txq->status & RWNX_TXQ_STOP_CSA) ? "S" : " ", - (txq->status & RWNX_TXQ_STOP_MU_POS) ? "M" : " ", - txq->credits, skb_queue_len(&txq->sk_list), - txq->nb_retry); + (txq->status & RWNX_TXQ_IN_HWQ_LIST) ? "L" : " ", + (txq->status & RWNX_TXQ_STOP_FULL) ? "F" : " ", + (txq->status & RWNX_TXQ_STOP_STA_PS) ? "P" : " ", + (txq->status & RWNX_TXQ_STOP_VIF_PS) ? "V" : " ", + (txq->status & RWNX_TXQ_STOP_CHAN) ? "C" : " ", + (txq->status & RWNX_TXQ_STOP_CSA) ? "S" : " ", + (txq->status & RWNX_TXQ_STOP_MU_POS) ? "M" : " ", + txq->credits, skb_queue_len(&txq->sk_list), + txq->nb_retry); idx += res; size -= res; @@ -263,11 +260,11 @@ static int rwnx_dbgfs_txq(char *buf, size_t size, struct rwnx_txq *txq, int type if (type == STA_TXQ) { res = scnprintf(&buf[idx], size, TXQ_HDR_SUFF_FMT, #ifdef CONFIG_RWNX_FULLMAC - txq->amsdu_len + txq->amsdu_len #else - txq->amsdu_ht_len_cap, txq->amsdu_vht_len_cap + txq->amsdu_ht_len_cap, txq->amsdu_vht_len_cap #endif /* CONFIG_RWNX_FULLMAC */ - ); + ); idx += res; size -= res; } @@ -281,37 +278,36 @@ static int rwnx_dbgfs_txq(char *buf, size_t size, struct rwnx_txq *txq, int type } static int rwnx_dbgfs_txq_sta(char *buf, size_t size, struct rwnx_sta *rwnx_sta, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { int tid, res, idx = 0; struct rwnx_txq *txq; - res = scnprintf(&buf[idx], size, "\n" STA_HDR, - rwnx_sta->sta_idx, + res = scnprintf(&buf[idx], size, "\n" STA_HDR, rwnx_sta->sta_idx, #ifdef CONFIG_RWNX_FULLMAC - rwnx_sta->mac_addr + rwnx_sta->mac_addr #endif /* CONFIG_RWNX_FULLMAC */ - ); + ); idx += res; size -= res; #ifdef CONFIG_RWNX_FULLMAC if (rwnx_sta->ps.active) { if (rwnx_sta->uapsd_tids && - (rwnx_sta->uapsd_tids == ((1 << NX_NB_TXQ_PER_STA) - 1))) + (rwnx_sta->uapsd_tids == ((1 << NX_NB_TXQ_PER_STA) - 1))) res = scnprintf(&buf[idx], size, PS_HDR_UAPSD "\n", - rwnx_sta->ps.pkt_ready[UAPSD_ID], - rwnx_sta->ps.sp_cnt[UAPSD_ID]); + rwnx_sta->ps.pkt_ready[UAPSD_ID], + rwnx_sta->ps.sp_cnt[UAPSD_ID]); else if (rwnx_sta->uapsd_tids) res = scnprintf(&buf[idx], size, PS_HDR "\n", - rwnx_sta->ps.pkt_ready[LEGACY_PS_ID], - rwnx_sta->ps.sp_cnt[LEGACY_PS_ID], - rwnx_sta->ps.pkt_ready[UAPSD_ID], - rwnx_sta->ps.sp_cnt[UAPSD_ID]); + rwnx_sta->ps.pkt_ready[LEGACY_PS_ID], + rwnx_sta->ps.sp_cnt[LEGACY_PS_ID], + rwnx_sta->ps.pkt_ready[UAPSD_ID], + rwnx_sta->ps.sp_cnt[UAPSD_ID]); else res = scnprintf(&buf[idx], size, PS_HDR_LEGACY "\n", - rwnx_sta->ps.pkt_ready[LEGACY_PS_ID], - rwnx_sta->ps.sp_cnt[LEGACY_PS_ID]); + rwnx_sta->ps.pkt_ready[LEGACY_PS_ID], + rwnx_sta->ps.sp_cnt[LEGACY_PS_ID]); idx += res; size -= res; } else { @@ -321,13 +317,13 @@ static int rwnx_dbgfs_txq_sta(char *buf, size_t size, struct rwnx_sta *rwnx_sta, } #endif /* CONFIG_RWNX_FULLMAC */ - - res = scnprintf(&buf[idx], size, TXQ_STA_PREF TXQ_HDR TXQ_HDR_SUFF "\n"); + res = scnprintf(&buf[idx], size, + TXQ_STA_PREF TXQ_HDR TXQ_HDR_SUFF "\n"); idx += res; size -= res; - - foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) { + foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) + { res = rwnx_dbgfs_txq(&buf[idx], size, txq, STA_TXQ, tid, NULL); idx += res; size -= res; @@ -337,14 +333,15 @@ static int rwnx_dbgfs_txq_sta(char *buf, size_t size, struct rwnx_sta *rwnx_sta, } static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { int res, idx = 0; struct rwnx_txq *txq; struct rwnx_sta *rwnx_sta; #ifdef CONFIG_RWNX_FULLMAC - res = scnprintf(&buf[idx], size, VIF_HDR, rwnx_vif->vif_index, rwnx_vif->ndev->name); + res = scnprintf(&buf[idx], size, VIF_HDR, rwnx_vif->vif_index, + rwnx_vif->ndev->name); idx += res; size -= res; if (!rwnx_vif->up || rwnx_vif->ndev == NULL) @@ -352,7 +349,7 @@ static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, #else int ac; - char ac_name[2] = {'0', '\0'}; + char ac_name[2] = { '0', '\0' }; res = scnprintf(&buf[idx], size, VIF_HDR, rwnx_vif->vif_index); idx += res; @@ -360,9 +357,9 @@ static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, #endif /* CONFIG_RWNX_FULLMAC */ #ifdef CONFIG_RWNX_FULLMAC - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP || - RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO || - RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MESH_POINT) { + if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP || + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO || + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MESH_POINT) { res = scnprintf(&buf[idx], size, TXQ_VIF_PREF TXQ_HDR "\n"); idx += res; size -= res; @@ -377,8 +374,8 @@ static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, rwnx_sta = &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index]; if (rwnx_sta->ps.active) { res = scnprintf(&buf[idx], size, PS_HDR_LEGACY "\n", - rwnx_sta->ps.sp_cnt[LEGACY_PS_ID], - rwnx_sta->ps.sp_cnt[LEGACY_PS_ID]); + rwnx_sta->ps.sp_cnt[LEGACY_PS_ID], + rwnx_sta->ps.sp_cnt[LEGACY_PS_ID]); idx += res; size -= res; } else { @@ -387,15 +384,17 @@ static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, size -= res; } - list_for_each_entry(rwnx_sta, &rwnx_vif->ap.sta_list, list) { - res = rwnx_dbgfs_txq_sta(&buf[idx], size, rwnx_sta, rwnx_hw); + list_for_each_entry (rwnx_sta, &rwnx_vif->ap.sta_list, list) { + res = rwnx_dbgfs_txq_sta(&buf[idx], size, rwnx_sta, + rwnx_hw); idx += res; size -= res; } - } else if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || - RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { + } else if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { if (rwnx_vif->sta.ap) { - res = rwnx_dbgfs_txq_sta(&buf[idx], size, rwnx_vif->sta.ap, rwnx_hw); + res = rwnx_dbgfs_txq_sta(&buf[idx], size, + rwnx_vif->sta.ap, rwnx_hw); idx += res; size -= res; } @@ -406,14 +405,15 @@ static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, idx += res; size -= res; - foreach_vif_txq(rwnx_vif, txq, ac) { + foreach_vif_txq(rwnx_vif, txq, ac) + { ac_name[0]++; res = rwnx_dbgfs_txq(&buf[idx], size, txq, VIF_TXQ, 0, ac_name); idx += res; size -= res; } - list_for_each_entry(rwnx_sta, &rwnx_vif->stations, list) { + list_for_each_entry (rwnx_sta, &rwnx_vif->stations, list) { res = rwnx_dbgfs_txq_sta(&buf[idx], size, rwnx_sta, rwnx_hw); idx += res; size -= res; @@ -422,19 +422,20 @@ static int rwnx_dbgfs_txq_vif(char *buf, size_t size, struct rwnx_vif *rwnx_vif, return idx; } -static ssize_t rwnx_dbgfs_txq_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_txq_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *rwnx_hw = file->private_data; struct rwnx_vif *vif; char *buf; int idx, res; ssize_t read; - size_t bufsz = ((NX_VIRT_DEV_MAX * (VIF_HDR_MAX_LEN + 2 * VIF_SEP_LEN)) + - (NX_REMOTE_STA_MAX * STA_HDR_MAX_LEN) + - ((NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX + NX_NB_TXQ) * - TXQ_HDR_MAX_LEN) + CAPTION_LEN); + size_t bufsz = + ((NX_VIRT_DEV_MAX * (VIF_HDR_MAX_LEN + 2 * VIF_SEP_LEN)) + + (NX_REMOTE_STA_MAX * STA_HDR_MAX_LEN) + + ((NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX + NX_NB_TXQ) * + TXQ_HDR_MAX_LEN) + + CAPTION_LEN); /* everything is read in one go */ if (*ppos) @@ -453,8 +454,8 @@ static ssize_t rwnx_dbgfs_txq_read(struct file *file, bufsz -= res; //spin_lock_bh(&rwnx_hw->tx_lock); - list_for_each_entry(vif, &rwnx_hw->vifs, list) { - res = scnprintf(&buf[idx], bufsz, "\n"VIF_SEP); + list_for_each_entry (vif, &rwnx_hw->vifs, list) { + res = scnprintf(&buf[idx], bufsz, "\n" VIF_SEP); idx += res; bufsz -= res; res = rwnx_dbgfs_txq_vif(&buf[idx], bufsz, vif, rwnx_hw); @@ -473,9 +474,8 @@ static ssize_t rwnx_dbgfs_txq_read(struct file *file, } DEBUGFS_READ_FILE_OPS(txq); -static ssize_t rwnx_dbgfs_acsinfo_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_acsinfo_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; #ifdef CONFIG_RWNX_FULLMAC @@ -497,24 +497,33 @@ static ssize_t rwnx_dbgfs_acsinfo_read(struct file *file, mutex_lock(&priv->dbgdump_elem.mutex); len += scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "FREQ TIME(ms) BUSY(ms) NOISE(dBm)\n"); + "FREQ TIME(ms) BUSY(ms) NOISE(dBm)\n"); for (band = NL80211_BAND_2GHZ; band < band_max; band++) { - for (chan_cnt = 0; chan_cnt < wiphy->bands[band]->n_channels; chan_cnt++) { - struct rwnx_survey_info *p_survey_info = &priv->survey[survey_cnt]; - struct ieee80211_channel *p_chan = &wiphy->bands[band]->channels[chan_cnt]; + for (chan_cnt = 0; chan_cnt < wiphy->bands[band]->n_channels; + chan_cnt++) { + struct rwnx_survey_info *p_survey_info = + &priv->survey[survey_cnt]; + struct ieee80211_channel *p_chan = + &wiphy->bands[band]->channels[chan_cnt]; if (p_survey_info->filled) { - len += scnprintf(&buf[len], min_t(size_t, sizeof(buf) - len - 1, count), - "%d %03d %03d %d\n", - p_chan->center_freq, - p_survey_info->chan_time_ms, - p_survey_info->chan_time_busy_ms, - p_survey_info->noise_dbm); + len += scnprintf( + &buf[len], + min_t(size_t, sizeof(buf) - len - 1, + count), + "%d %03d %03d %d\n", + p_chan->center_freq, + p_survey_info->chan_time_ms, + p_survey_info->chan_time_busy_ms, + p_survey_info->noise_dbm); } else { - len += scnprintf(&buf[len], min_t(size_t, sizeof(buf) -len -1, count), - "%d NOT AVAILABLE\n", - p_chan->center_freq); + len += scnprintf(&buf[len], + min_t(size_t, + sizeof(buf) - len - 1, + count), + "%d NOT AVAILABLE\n", + p_chan->center_freq); } survey_cnt++; @@ -531,20 +540,19 @@ static ssize_t rwnx_dbgfs_acsinfo_read(struct file *file, DEBUGFS_READ_FILE_OPS(acsinfo); -static ssize_t rwnx_dbgfs_fw_dbg_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_fw_dbg_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { char help[] = "usage: [MOD:]* " - "[DBG:]\n"; + "[DBG:]\n"; - return simple_read_from_buffer(user_buf, count, ppos, help, sizeof(help)); + return simple_read_from_buffer(user_buf, count, ppos, help, + sizeof(help)); } - static ssize_t rwnx_dbgfs_fw_dbg_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -556,49 +564,49 @@ static ssize_t rwnx_dbgfs_fw_dbg_write(struct file *file, return -EFAULT; buf[len] = '\0'; -#define RWNX_MOD_TOKEN(str, val) \ - do { \ - if (strncmp(&buf[idx], str, sizeof(str) - 1) == 0) { \ - idx += sizeof(str) - 1; \ - mod |= val; \ - continue; \ - } \ +#define RWNX_MOD_TOKEN(str, val) \ + do { \ + if (strncmp(&buf[idx], str, sizeof(str) - 1) == 0) { \ + idx += sizeof(str) - 1; \ + mod |= val; \ + continue; \ + } \ } while (0) -#define RWNX_DBG_TOKEN(str, val) \ - do { \ - if (strncmp(&buf[idx], str, sizeof(str) - 1) == 0) { \ - idx += sizeof(str) - 1; \ - dbg = val; \ - goto dbg_done; \ - } \ +#define RWNX_DBG_TOKEN(str, val) \ + do { \ + if (strncmp(&buf[idx], str, sizeof(str) - 1) == 0) { \ + idx += sizeof(str) - 1; \ + dbg = val; \ + goto dbg_done; \ + } \ } while (0) while ((idx + 4) < len) { if (strncmp(&buf[idx], "MOD:", 4) == 0) { idx += 4; RWNX_MOD_TOKEN("ALL", 0xffffffff); - RWNX_MOD_TOKEN("KE", BIT(0)); + RWNX_MOD_TOKEN("KE", BIT(0)); RWNX_MOD_TOKEN("DBG", BIT(1)); RWNX_MOD_TOKEN("IPC", BIT(2)); RWNX_MOD_TOKEN("DMA", BIT(3)); - RWNX_MOD_TOKEN("MM", BIT(4)); - RWNX_MOD_TOKEN("TX", BIT(5)); - RWNX_MOD_TOKEN("RX", BIT(6)); + RWNX_MOD_TOKEN("MM", BIT(4)); + RWNX_MOD_TOKEN("TX", BIT(5)); + RWNX_MOD_TOKEN("RX", BIT(6)); RWNX_MOD_TOKEN("PHY", BIT(7)); idx++; } else if (strncmp(&buf[idx], "DBG:", 4) == 0) { u32 dbg = 0; idx += 4; RWNX_DBG_TOKEN("NONE", 0); - RWNX_DBG_TOKEN("CRT", 1); - RWNX_DBG_TOKEN("ERR", 2); - RWNX_DBG_TOKEN("WRN", 3); - RWNX_DBG_TOKEN("INF", 4); - RWNX_DBG_TOKEN("VRB", 5); + RWNX_DBG_TOKEN("CRT", 1); + RWNX_DBG_TOKEN("ERR", 2); + RWNX_DBG_TOKEN("WRN", 3); + RWNX_DBG_TOKEN("INF", 4); + RWNX_DBG_TOKEN("VRB", 5); idx++; continue; - dbg_done: + dbg_done: rwnx_send_dbg_set_sev_filter_req(priv, dbg); } else { idx++; @@ -615,11 +623,11 @@ static ssize_t rwnx_dbgfs_fw_dbg_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(fw_dbg); static ssize_t rwnx_dbgfs_sys_stats_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) + char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *priv = file->private_data; - char buf[3*64]; + char buf[3 * 64]; int len = 0; ssize_t read; int error = 0; @@ -637,16 +645,18 @@ static ssize_t rwnx_dbgfs_sys_stats_read(struct file *file, return 0; sleep_int = ((cfm.cpu_sleep_time * 100) / cfm.stats_time); - sleep_frac = (((cfm.cpu_sleep_time * 100) % cfm.stats_time) * 10) / cfm.stats_time; + sleep_frac = (((cfm.cpu_sleep_time * 100) % cfm.stats_time) * 10) / + cfm.stats_time; doze_int = ((cfm.doze_time * 100) / cfm.stats_time); - doze_frac = (((cfm.doze_time * 100) % cfm.stats_time) * 10) / cfm.stats_time; + doze_frac = (((cfm.doze_time * 100) % cfm.stats_time) * 10) / + cfm.stats_time; len += scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "\nSystem statistics:\n"); + "\nSystem statistics:\n"); len += scnprintf(&buf[len], min_t(size_t, sizeof(buf) - 1, count), - " CPU sleep [%%]: %d.%d\n", sleep_int, sleep_frac); + " CPU sleep [%%]: %d.%d\n", sleep_int, sleep_frac); len += scnprintf(&buf[len], min_t(size_t, sizeof(buf) - 1, count), - " Doze [%%]: %d.%d\n", doze_int, doze_frac); + " Doze [%%]: %d.%d\n", doze_int, doze_frac); read = simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -657,13 +667,14 @@ DEBUGFS_READ_FILE_OPS(sys_stats); #ifdef CONFIG_RWNX_MUMIMO_TX static ssize_t rwnx_dbgfs_mu_group_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) + char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *rwnx_hw = file->private_data; struct rwnx_mu_info *mu = &rwnx_hw->mu; struct rwnx_mu_group *group; - size_t bufsz = NX_MU_GROUP_MAX * sizeof("xx = (xx - xx - xx - xx)\n") + 50; + size_t bufsz = + NX_MU_GROUP_MAX * sizeof("xx = (xx - xx - xx - xx)\n") + 50; char *buf; int j, res, idx = 0; @@ -674,22 +685,26 @@ static ssize_t rwnx_dbgfs_mu_group_read(struct file *file, if (buf == NULL) return 0; - res = scnprintf(&buf[idx], bufsz, "MU Group list (%d groups, %d users max)\n", - NX_MU_GROUP_MAX, CONFIG_USER_MAX); + res = scnprintf(&buf[idx], bufsz, + "MU Group list (%d groups, %d users max)\n", + NX_MU_GROUP_MAX, CONFIG_USER_MAX); idx += res; bufsz -= res; - list_for_each_entry(group, &mu->active_groups, list) { + list_for_each_entry (group, &mu->active_groups, list) { if (group->user_cnt) { - res = scnprintf(&buf[idx], bufsz, "%2d = (", group->group_id); + res = scnprintf(&buf[idx], bufsz, "%2d = (", + group->group_id); idx += res; bufsz -= res; - for (j = 0; j < (CONFIG_USER_MAX - 1) ; j++) { + for (j = 0; j < (CONFIG_USER_MAX - 1); j++) { if (group->users[j]) - res = scnprintf(&buf[idx], bufsz, "%2d - ", - group->users[j]->sta_idx); + res = scnprintf( + &buf[idx], bufsz, "%2d - ", + group->users[j]->sta_idx); else - res = scnprintf(&buf[idx], bufsz, ".. - "); + res = scnprintf(&buf[idx], bufsz, + ".. - "); idx += res; bufsz -= res; @@ -697,7 +712,7 @@ static ssize_t rwnx_dbgfs_mu_group_read(struct file *file, if (group->users[j]) res = scnprintf(&buf[idx], bufsz, "%2d)\n", - group->users[j]->sta_idx); + group->users[j]->sta_idx); else res = scnprintf(&buf[idx], bufsz, "..)\n"); @@ -717,8 +732,8 @@ DEBUGFS_READ_FILE_OPS(mu_group); #ifdef CONFIG_RWNX_P2P_DEBUGFS static ssize_t rwnx_dbgfs_oppps_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *rw_hw = file->private_data; struct rwnx_vif *rw_vif; @@ -733,14 +748,15 @@ static ssize_t rwnx_dbgfs_oppps_write(struct file *file, /* Read the written CT Window (provided in ms) value */ if (sscanf(buf, "ctw=%d", &ctw) > 0) { /* Check if at least one VIF is configured as P2P GO */ - list_for_each_entry(rw_vif, &rw_hw->vifs, list) { + list_for_each_entry (rw_vif, &rw_hw->vifs, list) { #ifdef CONFIG_RWNX_FULLMAC if (RWNX_VIF_TYPE(rw_vif) == NL80211_IFTYPE_P2P_GO) { #endif /* CONFIG_RWNX_FULLMAC */ struct mm_set_p2p_oppps_cfm cfm; /* Forward request to the embedded and wait for confirmation */ - rwnx_send_p2p_oppps_req(rw_hw, rw_vif, (u8)ctw, &cfm); + rwnx_send_p2p_oppps_req(rw_hw, rw_vif, (u8)ctw, + &cfm); break; } @@ -753,8 +769,8 @@ static ssize_t rwnx_dbgfs_oppps_write(struct file *file, DEBUGFS_WRITE_FILE_OPS(oppps); static ssize_t rwnx_dbgfs_noa_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *rw_hw = file->private_data; struct rwnx_vif *rw_vif; @@ -767,18 +783,19 @@ static ssize_t rwnx_dbgfs_noa_write(struct file *file, buf[len] = '\0'; /* Read the written NOA information */ - if (sscanf(buf, "count=%d interval=%d duration=%d dyn=%d", - &noa_count, &interval, &duration, &dyn_noa) > 0) { - /* Check if at least one VIF is configured as P2P GO */ - list_for_each_entry(rw_vif, &rw_hw->vifs, list) { + if (sscanf(buf, "count=%d interval=%d duration=%d dyn=%d", &noa_count, + &interval, &duration, &dyn_noa) > 0) { + /* Check if at least one VIF is configured as P2P GO */ + list_for_each_entry (rw_vif, &rw_hw->vifs, list) { #ifdef CONFIG_RWNX_FULLMAC - if (RWNX_VIF_TYPE(rw_vif) == NL80211_IFTYPE_P2P_GO) { + if (RWNX_VIF_TYPE(rw_vif) == NL80211_IFTYPE_P2P_GO) { #endif /* CONFIG_RWNX_FULLMAC */ - struct mm_set_p2p_noa_cfm cfm; + struct mm_set_p2p_noa_cfm cfm; /* Forward request to the embedded and wait for confirmation */ - rwnx_send_p2p_noa_req(rw_hw, rw_vif, noa_count, interval, - duration, (dyn_noa > 0), &cfm); + rwnx_send_p2p_noa_req(rw_hw, rw_vif, noa_count, + interval, duration, + (dyn_noa > 0), &cfm); break; } @@ -793,40 +810,53 @@ DEBUGFS_WRITE_FILE_OPS(noa); static char fw_log_buffer[FW_LOG_SIZE]; -static ssize_t rwnx_dbgfs_fw_log_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_fw_log_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; size_t not_cpy; size_t nb_cpy; char *log = fw_log_buffer; - printk("%s, %d, %p, %p\n", __func__, priv->debugfs.fw_log.buf.size, priv->debugfs.fw_log.buf.start, priv->debugfs.fw_log.buf.dataend); + printk("%s, %d, %p, %p\n", __func__, priv->debugfs.fw_log.buf.size, + priv->debugfs.fw_log.buf.start, + priv->debugfs.fw_log.buf.dataend); //spin_lock_bh(&priv->debugfs.fw_log.lock); - if ((priv->debugfs.fw_log.buf.start + priv->debugfs.fw_log.buf.size) >= priv->debugfs.fw_log.buf.dataend) { - memcpy(log, priv->debugfs.fw_log.buf.start, priv->debugfs.fw_log.buf.dataend - priv->debugfs.fw_log.buf.start); - not_cpy = copy_to_user(user_buf, log, priv->debugfs.fw_log.buf.dataend - priv->debugfs.fw_log.buf.start); - nb_cpy = priv->debugfs.fw_log.buf.dataend - priv->debugfs.fw_log.buf.start - not_cpy; + if ((priv->debugfs.fw_log.buf.start + priv->debugfs.fw_log.buf.size) >= + priv->debugfs.fw_log.buf.dataend) { + memcpy(log, priv->debugfs.fw_log.buf.start, + priv->debugfs.fw_log.buf.dataend - + priv->debugfs.fw_log.buf.start); + not_cpy = copy_to_user(user_buf, log, + priv->debugfs.fw_log.buf.dataend - + priv->debugfs.fw_log.buf.start); + nb_cpy = priv->debugfs.fw_log.buf.dataend - + priv->debugfs.fw_log.buf.start - not_cpy; priv->debugfs.fw_log.buf.start = priv->debugfs.fw_log.buf.data; } else { - memcpy(log, priv->debugfs.fw_log.buf.start, priv->debugfs.fw_log.buf.size); - not_cpy = copy_to_user(user_buf, log, priv->debugfs.fw_log.buf.size); + memcpy(log, priv->debugfs.fw_log.buf.start, + priv->debugfs.fw_log.buf.size); + not_cpy = copy_to_user(user_buf, log, + priv->debugfs.fw_log.buf.size); nb_cpy = priv->debugfs.fw_log.buf.size - not_cpy; - priv->debugfs.fw_log.buf.start = priv->debugfs.fw_log.buf.start + priv->debugfs.fw_log.buf.size - not_cpy; + priv->debugfs.fw_log.buf.start = + priv->debugfs.fw_log.buf.start + + priv->debugfs.fw_log.buf.size - not_cpy; } priv->debugfs.fw_log.buf.size -= nb_cpy; //spin_unlock_bh(&priv->debugfs.fw_log.lock); - printk("nb_cpy=%lu, not_cpy=%lu, start=%p, end=%p\n", (long unsigned int)nb_cpy, (long unsigned int)not_cpy, priv->debugfs.fw_log.buf.start, priv->debugfs.fw_log.buf.end); + printk("nb_cpy=%lu, not_cpy=%lu, start=%p, end=%p\n", + (long unsigned int)nb_cpy, (long unsigned int)not_cpy, + priv->debugfs.fw_log.buf.start, priv->debugfs.fw_log.buf.end); return nb_cpy; } static ssize_t rwnx_dbgfs_fw_log_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { //struct rwnx_hw *priv = file->private_data; @@ -836,10 +866,8 @@ static ssize_t rwnx_dbgfs_fw_log_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(fw_log); #ifdef CONFIG_RWNX_RADAR -static ssize_t rwnx_dbgfs_pulses_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos, - int rd_idx) +static ssize_t rwnx_dbgfs_pulses_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos, int rd_idx) { struct rwnx_hw *priv = file->private_data; char *buf; @@ -856,7 +884,8 @@ static ssize_t rwnx_dbgfs_pulses_read(struct file *file, /* Prevent from interrupt preemption */ spin_lock_bh(&priv->radar.lock); bufsz = p->count * 34 + 51; - bufsz += rwnx_radar_dump_pattern_detector(NULL, 0, &priv->radar, rd_idx); + bufsz += + rwnx_radar_dump_pattern_detector(NULL, 0, &priv->radar, rd_idx); buf = kmalloc(bufsz, GFP_ATOMIC); if (buf == NULL) { spin_unlock_bh(&priv->radar.lock); @@ -865,7 +894,7 @@ static ssize_t rwnx_dbgfs_pulses_read(struct file *file, if (p->count) { len += scnprintf(&buf[len], bufsz - len, - " PRI WIDTH FOM FREQ\n"); + " PRI WIDTH FOM FREQ\n"); index = p->index; for (i = 0; i < p->count; i++) { struct radar_pulse *pulse; @@ -875,16 +904,18 @@ static ssize_t rwnx_dbgfs_pulses_read(struct file *file, else index = RWNX_RADAR_PULSE_MAX - 1; - pulse = (struct radar_pulse *) &p->buffer[index]; + pulse = (struct radar_pulse *)&p->buffer[index]; - len += scnprintf(&buf[len], bufsz - len, - "%05dus %03dus %2d%% %+3dMHz\n", pulse->rep, - 2 * pulse->len, 6 * pulse->fom, 2*pulse->freq); + len += scnprintf( + &buf[len], bufsz - len, + "%05dus %03dus %2d%% %+3dMHz\n", + pulse->rep, 2 * pulse->len, 6 * pulse->fom, + 2 * pulse->freq); } } len += rwnx_radar_dump_pattern_detector(&buf[len], bufsz - len, - &priv->radar, rd_idx); + &priv->radar, rd_idx); spin_unlock_bh(&priv->radar.lock); @@ -896,8 +927,8 @@ static ssize_t rwnx_dbgfs_pulses_read(struct file *file, } static ssize_t rwnx_dbgfs_pulses_prim_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) + char __user *user_buf, size_t count, + loff_t *ppos) { return rwnx_dbgfs_pulses_read(file, user_buf, count, ppos, 0); } @@ -905,8 +936,8 @@ static ssize_t rwnx_dbgfs_pulses_prim_read(struct file *file, DEBUGFS_READ_FILE_OPS(pulses_prim); static ssize_t rwnx_dbgfs_pulses_sec_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) + char __user *user_buf, size_t count, + loff_t *ppos) { return rwnx_dbgfs_pulses_read(file, user_buf, count, ppos, 1); } @@ -914,8 +945,8 @@ static ssize_t rwnx_dbgfs_pulses_sec_read(struct file *file, DEBUGFS_READ_FILE_OPS(pulses_sec); static ssize_t rwnx_dbgfs_detected_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) + char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char *buf; @@ -927,12 +958,12 @@ static ssize_t rwnx_dbgfs_detected_read(struct file *file, bufsz = 5; // RIU:\n bufsz += rwnx_radar_dump_radar_detected(NULL, 0, &priv->radar, - RWNX_RADAR_RIU); + RWNX_RADAR_RIU); if (priv->phy.cnt > 1) { bufsz += 5; // FCU:\n bufsz += rwnx_radar_dump_radar_detected(NULL, 0, &priv->radar, - RWNX_RADAR_FCU); + RWNX_RADAR_FCU); } buf = kmalloc(bufsz, GFP_KERNEL); @@ -941,13 +972,13 @@ static ssize_t rwnx_dbgfs_detected_read(struct file *file, } len = scnprintf(&buf[len], bufsz, "RIU:\n"); - len += rwnx_radar_dump_radar_detected(&buf[len], bufsz - len, &priv->radar, - RWNX_RADAR_RIU); + len += rwnx_radar_dump_radar_detected(&buf[len], bufsz - len, + &priv->radar, RWNX_RADAR_RIU); if (priv->phy.cnt > 1) { len += scnprintf(&buf[len], bufsz - len, "FCU:\n"); - len += rwnx_radar_dump_radar_detected(&buf[len], bufsz - len, - &priv->radar, RWNX_RADAR_FCU); + len += rwnx_radar_dump_radar_detected( + &buf[len], bufsz - len, &priv->radar, RWNX_RADAR_FCU); } read = simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -959,9 +990,8 @@ static ssize_t rwnx_dbgfs_detected_read(struct file *file, DEBUGFS_READ_FILE_OPS(detected); -static ssize_t rwnx_dbgfs_enable_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_enable_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -969,8 +999,9 @@ static ssize_t rwnx_dbgfs_enable_read(struct file *file, ssize_t read; ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "RIU=%d FCU=%d\n", priv->radar.dpd[RWNX_RADAR_RIU]->enabled, - priv->radar.dpd[RWNX_RADAR_FCU]->enabled); + "RIU=%d FCU=%d\n", + priv->radar.dpd[RWNX_RADAR_RIU]->enabled, + priv->radar.dpd[RWNX_RADAR_FCU]->enabled); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); @@ -978,8 +1009,8 @@ static ssize_t rwnx_dbgfs_enable_read(struct file *file, } static ssize_t rwnx_dbgfs_enable_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1002,17 +1033,16 @@ static ssize_t rwnx_dbgfs_enable_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(enable); -static ssize_t rwnx_dbgfs_band_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_band_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; int ret; ssize_t read; - ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "BAND=%d\n", priv->phy.sec_chan.band); + ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), "BAND=%d\n", + priv->phy.sec_chan.band); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); @@ -1020,8 +1050,8 @@ static ssize_t rwnx_dbgfs_band_read(struct file *file, } static ssize_t rwnx_dbgfs_band_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1045,17 +1075,16 @@ static ssize_t rwnx_dbgfs_band_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(band); -static ssize_t rwnx_dbgfs_type_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_type_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; int ret; ssize_t read; - ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "TYPE=%d\n", priv->phy.sec_chan.type); + ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), "TYPE=%d\n", + priv->phy.sec_chan.type); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); @@ -1063,8 +1092,8 @@ static ssize_t rwnx_dbgfs_type_read(struct file *file, } static ssize_t rwnx_dbgfs_type_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1077,7 +1106,7 @@ static ssize_t rwnx_dbgfs_type_write(struct file *file, buf[len] = '\0'; if ((sscanf(buf, "%d", &val) > 0) && (val >= PHY_CHNL_BW_20) && - (val <= PHY_CHNL_BW_80P80)) + (val <= PHY_CHNL_BW_80P80)) priv->phy.sec_chan.type = val; return count; @@ -1085,9 +1114,8 @@ static ssize_t rwnx_dbgfs_type_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(type); -static ssize_t rwnx_dbgfs_prim20_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_prim20_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1095,7 +1123,7 @@ static ssize_t rwnx_dbgfs_prim20_read(struct file *file, ssize_t read; ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "PRIM20=%dMHz\n", priv->phy.sec_chan.prim20_freq); + "PRIM20=%dMHz\n", priv->phy.sec_chan.prim20_freq); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); @@ -1103,8 +1131,8 @@ static ssize_t rwnx_dbgfs_prim20_read(struct file *file, } static ssize_t rwnx_dbgfs_prim20_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1124,9 +1152,8 @@ static ssize_t rwnx_dbgfs_prim20_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(prim20); -static ssize_t rwnx_dbgfs_center1_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_center1_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1134,7 +1161,7 @@ static ssize_t rwnx_dbgfs_center1_read(struct file *file, ssize_t read; ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "CENTER1=%dMHz\n", priv->phy.sec_chan.center_freq1); + "CENTER1=%dMHz\n", priv->phy.sec_chan.center_freq1); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); @@ -1142,8 +1169,8 @@ static ssize_t rwnx_dbgfs_center1_read(struct file *file, } static ssize_t rwnx_dbgfs_center1_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1163,9 +1190,8 @@ static ssize_t rwnx_dbgfs_center1_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(center1); -static ssize_t rwnx_dbgfs_center2_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_center2_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1173,7 +1199,7 @@ static ssize_t rwnx_dbgfs_center2_read(struct file *file, ssize_t read; ret = scnprintf(buf, min_t(size_t, sizeof(buf) - 1, count), - "CENTER2=%dMHz\n", priv->phy.sec_chan.center_freq2); + "CENTER2=%dMHz\n", priv->phy.sec_chan.center_freq2); read = simple_read_from_buffer(user_buf, count, ppos, buf, ret); @@ -1181,8 +1207,8 @@ static ssize_t rwnx_dbgfs_center2_read(struct file *file, } static ssize_t rwnx_dbgfs_center2_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; @@ -1202,23 +1228,21 @@ static ssize_t rwnx_dbgfs_center2_write(struct file *file, DEBUGFS_READ_WRITE_FILE_OPS(center2); - -static ssize_t rwnx_dbgfs_set_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_set_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { return 0; } static ssize_t rwnx_dbgfs_set_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_hw *priv = file->private_data; rwnx_send_set_channel(priv, 1, NULL); rwnx_radar_detection_enable(&priv->radar, RWNX_RADAR_DETECT_ENABLE, - RWNX_RADAR_FCU); + RWNX_RADAR_FCU); return count; } @@ -1227,28 +1251,37 @@ DEBUGFS_READ_WRITE_FILE_OPS(set); #endif /* CONFIG_RWNX_RADAR */ static ssize_t rwnx_dbgfs_regdbg_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[32]; - u32 addr,val, oper; + u32 addr, val, oper; size_t len = min_t(size_t, count, sizeof(buf) - 1); - struct dbg_mem_read_cfm mem_read_cfm; - int ret; + struct dbg_mem_read_cfm mem_read_cfm; + int ret; if (copy_from_user(buf, user_buf, len)) return -EFAULT; - buf[len] = '\0'; + buf[len] = '\0'; - if (sscanf(buf, "%x %x %x" , &oper, &addr, &val ) > 0) + if (sscanf(buf, "%x %x %x", &oper, &addr, &val) > 0) printk("addr=%x, val=%x,oper=%d\n", addr, val, oper); - if(oper== 0) { + if (oper == 0) { ret = rwnx_send_dbg_mem_read_req(priv, addr, &mem_read_cfm); - printk("[0x%x] = [0x%x]\n", mem_read_cfm.memaddr, mem_read_cfm.memdata); - } + printk("[0x%x] = [0x%x]\n", mem_read_cfm.memaddr, + mem_read_cfm.memdata); + } else if (oper == 1) { + ret = rwnx_send_dbg_mem_read_req(priv, addr, &mem_read_cfm); + printk("before write : [0x%x] = [0x%x]\n", mem_read_cfm.memaddr, + mem_read_cfm.memdata); + ret = rwnx_send_dbg_mem_block_write_req(priv, addr, 4, &val); + ret = rwnx_send_dbg_mem_read_req(priv, addr, &mem_read_cfm); + printk("after write : [0x%x] = [0x%x]\n", mem_read_cfm.memaddr, + mem_read_cfm.memdata); + } return count; } @@ -1256,98 +1289,115 @@ static ssize_t rwnx_dbgfs_regdbg_write(struct file *file, DEBUGFS_WRITE_FILE_OPS(regdbg); static ssize_t rwnx_dbgfs_vendor_hwconfig_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_hw *priv = file->private_data; char buf[64]; - int32_t addr[13]; - int32_t addr_out[12]; + int32_t addr[14]; + int32_t addr_out[12]; u32_l hwconfig_id; - size_t len = min_t(size_t,count,sizeof(buf)-1); + size_t len = min_t(size_t, count, sizeof(buf) - 1); int ret; - printk("%s\n",__func__); + printk("%s\n", __func__); //choose the type of write info by struct //struct mm_set_vendor_trx_param_req trx_param; - if(copy_from_user(buf,user_buf,len)) { + if (copy_from_user(buf, user_buf, len)) { return -EFAULT; } buf[len] = '\0'; - ret = sscanf(buf, "%x %x %x %x %x %x %x %x %x %x %x %x %x %x", - &hwconfig_id, &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5], &addr[6], &addr[7], &addr[8], &addr[9], &addr[10], &addr[11], &addr[12]); - if(ret > 14) { - printk("param error > 14\n"); + ret = sscanf(buf, "%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", + &hwconfig_id, &addr[0], &addr[1], &addr[2], &addr[3], + &addr[4], &addr[5], &addr[6], &addr[7], &addr[8], &addr[9], + &addr[10], &addr[11], &addr[12], &addr[13]); + if (ret > 15) { + printk("param error > 15\n"); } else { - switch(hwconfig_id) - { - case 0: - if(ret != 5) { - printk("param error != 5\n"); - break;} - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); - printk("ACS_TXOP_REQ bk:0x%x be:0x%x vi:0x%x vo:0x%x\n",addr[0], addr[1], addr[2], addr[3]); + switch (hwconfig_id) { + case 0: + if (ret != 5) { + printk("param error != 5\n"); + break; + } + ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, + addr, NULL); + printk("ACS_TXOP_REQ bk:0x%x be:0x%x vi:0x%x vo:0x%x\n", + addr[0], addr[1], addr[2], addr[3]); break; - case 1: - if(ret != 14) { - printk("param error != 14\n"); - break;} + case 1: + if (ret != 15) { + printk("param error != 15\n"); + break; + } addr[12] = ~addr[12] + 1; - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); - printk("CHANNEL_ACCESS_REQ edca:%x,%x,%x,%x, vif:%x, retry_cnt:%x, rts:%x, long_nav:%x, cfe:%x, rc_retry_cnt:%x:%x:%x ccademod_th %x\n", - addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12]); + ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, + addr, NULL); + printk("CHANNEL_ACCESS_REQ edca:%x,%x,%x,%x, vif:%x, retry_cnt:%x, rts:%x, long_nav:%x, cfe:%x, rc_retry_cnt:%x:%x:%x ccademod_th %x, remove_1m2m %x\n", + addr[0], addr[1], addr[2], addr[3], addr[4], + addr[5], addr[6], addr[7], addr[8], addr[9], + addr[10], addr[11], addr[12], addr[13]); break; - case 2: - if(ret != 7) { - printk("param error != 7\n"); - break;} - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); + case 2: + if (ret != 7) { + printk("param error != 7\n"); + break; + } + ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, + addr, NULL); printk("MAC_TIMESCALE_REQ sifsA:%x,sifsB:%x,slot:%x,ofdm_delay:%x,long_delay:%x,short_delay:%x\n", - addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); + addr[0], addr[1], addr[2], addr[3], addr[4], + addr[5]); break; - case 3: - if(ret != 6) { - printk("param error != 6\n"); - break;} + case 3: + if (ret != 6) { + printk("param error != 6\n"); + break; + } addr[1] = ~addr[1] + 1; addr[2] = ~addr[2] + 1; addr[3] = ~addr[3] + 1; addr[4] = ~addr[4] + 1; - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); + ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, + addr, NULL); printk("CCA_THRESHOLD_REQ auto_cca:%d, cca20p_rise:%d cca20s_rise:%d cca20p_fail:%d cca20s_fail:%d\n", - addr[0], addr[1], addr[2], addr[3], addr[4]); + addr[0], addr[1], addr[2], addr[3], addr[4]); break; - case 4: // BWMODE_REQ - if (ret != 2) { - printk("param error != 2\n"); - } else { - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); - printk("BWMODE_REQ md=%d\n", addr[0]); - } - break; - case 5: // CHIP_TEMP_GET_REQ - if (ret != 1) { - printk("param error != 1\n"); - } else { - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, addr_out); - printk("CHIP_TEMP_GET_REQ degree=%d\n", addr_out[0]); - } - break; - case 6://AP_PS_LEVEL_SET_REQ - if (ret != 2) { - printk("param error != 2\n"); - } else { - ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); - printk("AP_PS_LEVEL_SET_REQ lvl=%d\n", addr[0]); - } + case 4: // BWMODE_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_hwconfig_req( + priv, hwconfig_id, addr, NULL); + printk("BWMODE_REQ md=%d\n", addr[0]); + } break; - default: + case 5: // CHIP_TEMP_GET_REQ + if (ret != 1) { + printk("param error != 1\n"); + } else { + ret = rwnx_send_vendor_hwconfig_req( + priv, hwconfig_id, addr, addr_out); + printk("CHIP_TEMP_GET_REQ degree=%d\n", + addr_out[0]); + } + break; + case 6: //AP_PS_LEVEL_SET_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_hwconfig_req( + priv, hwconfig_id, addr, NULL); + printk("AP_PS_LEVEL_SET_REQ lvl=%d\n", addr[0]); + } + break; + default: printk("param error\n"); break; } - if(ret) { - printk("rwnx_send_vendor_hwconfig_req fail: %x\n", ret); + if (ret) { + printk("rwnx_send_vendor_hwconfig_req fail: %x\n", ret); } } @@ -1357,197 +1407,213 @@ static ssize_t rwnx_dbgfs_vendor_hwconfig_write(struct file *file, DEBUGFS_WRITE_FILE_OPS(vendor_hwconfig); static ssize_t rwnx_dbgfs_vendor_swconfig_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { - struct rwnx_hw *priv = file->private_data; - char buf[64]; - int32_t addr[12]; - int32_t addr_out[12]; - u32_l swconfig_id; - size_t len = min_t(size_t, count, sizeof(buf) - 1); - int ret; - printk("%s\n", __func__); + struct rwnx_hw *priv = file->private_data; + char buf[64]; + int32_t addr[12]; + int32_t addr_out[12]; + u32_l swconfig_id; + size_t len = min_t(size_t, count, sizeof(buf) - 1); + int ret; + printk("%s\n", __func__); - if (copy_from_user(buf, user_buf, len)) { - return -EFAULT; - } + if (copy_from_user(buf, user_buf, len)) { + return -EFAULT; + } - buf[len] = '\0'; - ret = sscanf(buf, "%x %x %x", &swconfig_id, &addr[0], &addr[1]); - if (ret > 3) { - printk("param error > 3\n"); - } else { - switch (swconfig_id) - { - case 0: // BCN_CFG_REQ - if (ret != 2) { - printk("param error != 2\n"); - } else { - ret = rwnx_send_vendor_swconfig_req(priv, swconfig_id, addr, addr_out); - printk("BCN_CFG_REQ set_en=%d, get_en=%d\n", addr[0], addr_out[0]); - } - break; + buf[len] = '\0'; + ret = sscanf(buf, "%x %x %x", &swconfig_id, &addr[0], &addr[1]); + if (ret > 3) { + printk("param error > 3\n"); + } else { + switch (swconfig_id) { + case 0: // BCN_CFG_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_swconfig_req( + priv, swconfig_id, addr, addr_out); + printk("BCN_CFG_REQ set_en=%d, get_en=%d\n", + addr[0], addr_out[0]); + } + break; - case 1: // TEMP_COMP_SET_REQ - if (ret != 3) { - printk("param error != 3\n"); - } else { - ret = rwnx_send_vendor_swconfig_req(priv, swconfig_id, addr, addr_out); - printk("TEMP_COMP_SET_REQ set_en=%d, tmr=%dms, get_st=%d\n", - addr[0], addr[1], addr_out[0]); - } - break; + case 1: // TEMP_COMP_SET_REQ + if (ret != 3) { + printk("param error != 3\n"); + } else { + ret = rwnx_send_vendor_swconfig_req( + priv, swconfig_id, addr, addr_out); + printk("TEMP_COMP_SET_REQ set_en=%d, tmr=%dms, get_st=%d\n", + addr[0], addr[1], addr_out[0]); + } + break; - case 2: // TEMP_COMP_GET_REQ - if (ret != 1) { - printk("param error != 1\n"); - } else { - ret = rwnx_send_vendor_swconfig_req(priv, swconfig_id, addr, addr_out); - printk("TEMP_COMP_GET_REQ get_st=%d, degree=%d\n", addr_out[0], addr_out[1]); - } - break; + case 2: // TEMP_COMP_GET_REQ + if (ret != 1) { + printk("param error != 1\n"); + } else { + ret = rwnx_send_vendor_swconfig_req( + priv, swconfig_id, addr, addr_out); + printk("TEMP_COMP_GET_REQ get_st=%d, degree=%d\n", + addr_out[0], addr_out[1]); + } + break; - case 3: // EXT_FLAGS_SET_REQ - if (ret != 2) { - printk("param error != 2\n"); - } else { - ret = rwnx_send_vendor_swconfig_req(priv, swconfig_id, addr, addr_out); - printk("EXT_FLAGS_SET_REQ set ext_flags=0x%x, get ext_flags=0x%x\n", - addr[0], addr_out[0]); - } - break; + case 3: // EXT_FLAGS_SET_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_swconfig_req( + priv, swconfig_id, addr, addr_out); + printk("EXT_FLAGS_SET_REQ set ext_flags=0x%x, get ext_flags=0x%x\n", + addr[0], addr_out[0]); + } + break; - case 4: // EXT_FLAGS_GET_REQ - if (ret != 1) { - printk("param error != 1\n"); - } else { - ret = rwnx_send_vendor_swconfig_req(priv, swconfig_id, addr, addr_out); - printk("EXT_FLAGS_GET_REQ get ext_flags=0x%x\n", addr_out[0]); - } - break; + case 4: // EXT_FLAGS_GET_REQ + if (ret != 1) { + printk("param error != 1\n"); + } else { + ret = rwnx_send_vendor_swconfig_req( + priv, swconfig_id, addr, addr_out); + printk("EXT_FLAGS_GET_REQ get ext_flags=0x%x\n", + addr_out[0]); + } + break; - case 5: // EXT_FLAGS_MASK_SET_REQ - if (ret != 3) { - printk("param error != 3\n"); - } else { - ret = rwnx_send_vendor_swconfig_req(priv, swconfig_id, addr, addr_out); - printk("EXT_FLAGS_MASK_SET_REQ set ext_flags mask=0x%x, val=0x%x, get ext_flags=0x%x\n", - addr[0], addr[1], addr_out[0]); - } - break; + case 5: // EXT_FLAGS_MASK_SET_REQ + if (ret != 3) { + printk("param error != 3\n"); + } else { + ret = rwnx_send_vendor_swconfig_req( + priv, swconfig_id, addr, addr_out); + printk("EXT_FLAGS_MASK_SET_REQ set ext_flags mask=0x%x, val=0x%x, get ext_flags=0x%x\n", + addr[0], addr[1], addr_out[0]); + } + break; - default: - printk("param error\n"); - break; - } + default: + printk("param error\n"); + break; + } - if (ret) { - printk("rwnx_send_vendor_swconfig_req fail: %x\n", ret); - } - } + if (ret) { + printk("rwnx_send_vendor_swconfig_req fail: %x\n", ret); + } + } - return count; + return count; } DEBUGFS_WRITE_FILE_OPS(vendor_swconfig); static ssize_t rwnx_dbgfs_agg_disable_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { - struct rwnx_hw *priv = file->private_data; - char buf[64]; - int agg_disable, agg_disable_rx, sta_idx; - size_t len = min_t(size_t, count, sizeof(buf) - 1); - int ret; - printk("%s\n", __func__); + struct rwnx_hw *priv = file->private_data; + char buf[64]; + int agg_disable, agg_disable_rx, sta_idx; + size_t len = min_t(size_t, count, sizeof(buf) - 1); + int ret; + printk("%s\n", __func__); - if (copy_from_user(buf, user_buf, len)) { - return -EFAULT; - } + if (copy_from_user(buf, user_buf, len)) { + return -EFAULT; + } - buf[len] = '\0'; - ret = sscanf(buf, "%d %d %d", &agg_disable, &agg_disable_rx, &sta_idx); - if ((ret > 3) || (ret < 2)) { - printk("param error: cnt=%d\n", ret); - } else { - if (ret < 3) { - sta_idx = RWNX_INVALID_STA; - } - printk("disable_agg: T=%d, R=%d, staidx=%d\n", agg_disable, agg_disable_rx, sta_idx); - ret = rwnx_send_disable_agg_req(priv, (u8_l)agg_disable, (u8_l)agg_disable_rx, (u8_l)sta_idx); - if (ret) { - printk("rwnx_send_disable_agg_req fail: %d\n", ret); - } - } + buf[len] = '\0'; + ret = sscanf(buf, "%d %d %d", &agg_disable, &agg_disable_rx, &sta_idx); + if ((ret > 3) || (ret < 2)) { + printk("param error: cnt=%d\n", ret); + } else { + if (ret < 3) { + sta_idx = RWNX_INVALID_STA; + } + printk("disable_agg: T=%d, R=%d, staidx=%d\n", agg_disable, + agg_disable_rx, sta_idx); + ret = rwnx_send_disable_agg_req(priv, (u8_l)agg_disable, + (u8_l)agg_disable_rx, + (u8_l)sta_idx); + if (ret) { + printk("rwnx_send_disable_agg_req fail: %d\n", ret); + } + } - return count; + return count; } DEBUGFS_WRITE_FILE_OPS(agg_disable); static ssize_t rwnx_dbgfs_set_roc_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { - struct rwnx_hw *priv = file->private_data; - struct rwnx_vif *vif = NULL; - char buf[64]; - int roc_start, chan_freq, duration; - size_t len = min_t(size_t, count, sizeof(buf) - 1); - int ret; - int if_type = NL80211_IFTYPE_STATION; - printk("%s\n", __func__); + struct rwnx_hw *priv = file->private_data; + struct rwnx_vif *vif = NULL; + char buf[64]; + int roc_start, chan_freq, duration; + size_t len = min_t(size_t, count, sizeof(buf) - 1); + int ret; + int if_type = NL80211_IFTYPE_STATION; + printk("%s\n", __func__); - if (copy_from_user(buf, user_buf, len)) { - return -EFAULT; - } + if (copy_from_user(buf, user_buf, len)) { + return -EFAULT; + } - buf[len] = '\0'; - ret = sscanf(buf, "%d %d %d", &roc_start, &chan_freq, &duration); + buf[len] = '\0'; + ret = sscanf(buf, "%d %d %d", &roc_start, &chan_freq, &duration); - list_for_each_entry(vif, &priv->vifs, list) { - if (RWNX_VIF_TYPE(vif) == if_type) { - break; - } - } - if ((ret > 3) || (ret < 1)) { - printk("param error: cnt=%d\n", ret); - } else if (vif) { - struct ieee80211_channel chan_entry = {0,}; - struct ieee80211_channel *chan = &chan_entry; - struct mm_remain_on_channel_cfm roc_cfm; - if (ret < 3) { - duration = 2000; - if (ret < 2) { - chan_freq = 2412; - } - } - printk("set_roc: start=%d, freq=%d\n", roc_start, chan_freq); - if (roc_start) { - if (chan_freq <= 2484) { - chan->band = NL80211_BAND_2GHZ; - } else { - chan->band = NL80211_BAND_5GHZ; - } - chan->center_freq = chan_freq; - chan->max_power = 18; - ret = rwnx_send_roc(priv, vif, chan, duration, &roc_cfm); - if (ret) { - printk("rwnx_send_roc fail: %d\n", ret); - } else { - printk("roc_cfm: opcode=%x, st=%d, idx=%d\n", roc_cfm.op_code, roc_cfm.status, roc_cfm.chan_ctxt_index); - } - } else { - ret = rwnx_send_cancel_roc(priv); - if (ret) { - printk("rwnx_send_cancel_roc fail: %d\n", ret); - } - } - } + list_for_each_entry (vif, &priv->vifs, list) { + if (RWNX_VIF_TYPE(vif) == if_type) { + break; + } + } + if ((ret > 3) || (ret < 1)) { + printk("param error: cnt=%d\n", ret); + } else if (vif) { + struct ieee80211_channel chan_entry = { + 0, + }; + struct ieee80211_channel *chan = &chan_entry; + struct mm_remain_on_channel_cfm roc_cfm; + if (ret < 3) { + duration = 2000; + if (ret < 2) { + chan_freq = 2412; + } + } + printk("set_roc: start=%d, freq=%d\n", roc_start, chan_freq); + if (roc_start) { + if (chan_freq <= 2484) { + chan->band = NL80211_BAND_2GHZ; + } else { + chan->band = NL80211_BAND_5GHZ; + } + chan->center_freq = chan_freq; + chan->max_power = 18; + ret = rwnx_send_roc(priv, vif, chan, duration, + &roc_cfm); + if (ret) { + printk("rwnx_send_roc fail: %d\n", ret); + } else { + printk("roc_cfm: opcode=%x, st=%d, idx=%d\n", + roc_cfm.op_code, roc_cfm.status, + roc_cfm.chan_ctxt_index); + } + } else { + ret = rwnx_send_cancel_roc(priv); + if (ret) { + printk("rwnx_send_cancel_roc fail: %d\n", ret); + } + } + } - return count; + return count; } DEBUGFS_WRITE_FILE_OPS(set_roc); @@ -1574,83 +1640,89 @@ static int compare_idx(const void *st1, const void *st2) return 0; } -static const int ru_size[] = { - 26, - 52, - 106, - 242, - 484, - 996 -}; +static const int ru_size[] = { 26, 52, 106, 242, 484, 996 }; static int print_rate(char *buf, int size, int format, int nss, int mcs, int bw, - int sgi, int pre, int *r_idx) + int sgi, int pre, int *r_idx) { int res = 0; int bitrates_cck[4] = { 10, 20, 55, 110 }; - int bitrates_ofdm[8] = { 6, 9, 12, 18, 24, 36, 48, 54}; - char he_gi[3][4] = {"0.8", "1.6", "3.2"}; + int bitrates_ofdm[8] = { 6, 9, 12, 18, 24, 36, 48, 54 }; + char he_gi[3][4] = { "0.8", "1.6", "3.2" }; if (format < FORMATMOD_HT_MF) { if (mcs < 4) { if (r_idx) { *r_idx = (mcs * 2) + pre; - res = scnprintf(buf, size - res, "%3d ", *r_idx); + res = scnprintf(buf, size - res, "%3d ", + *r_idx); } - res += scnprintf(&buf[res], size - res, "L-CCK/%cP %2u.%1uM ", - pre > 0 ? 'L' : 'S', - bitrates_cck[mcs] / 10, - bitrates_cck[mcs] % 10); + res += scnprintf(&buf[res], size - res, + "L-CCK/%cP %2u.%1uM ", + pre > 0 ? 'L' : 'S', + bitrates_cck[mcs] / 10, + bitrates_cck[mcs] % 10); } else { mcs -= 4; if (r_idx) { *r_idx = N_CCK + mcs; - res = scnprintf(buf, size - res, "%3d ", *r_idx); + res = scnprintf(buf, size - res, "%3d ", + *r_idx); } - res += scnprintf(&buf[res], size - res, "L-OFDM %2u.0M ", - bitrates_ofdm[mcs]); + res += scnprintf(&buf[res], size - res, + "L-OFDM %2u.0M ", + bitrates_ofdm[mcs]); } } else if (format < FORMATMOD_VHT) { if (r_idx) { - *r_idx = N_CCK + N_OFDM + nss * 32 + mcs * 4 + bw * 2 + sgi; + *r_idx = N_CCK + N_OFDM + nss * 32 + mcs * 4 + bw * 2 + + sgi; res = scnprintf(buf, size - res, "%3d ", *r_idx); } mcs += nss * 8; - res += scnprintf(&buf[res], size - res, "HT%d/%cGI MCS%-2d ", - 20 * (1 << bw), sgi ? 'S' : 'L', mcs); + res += scnprintf(&buf[res], size - res, + "HT%d/%cGI MCS%-2d ", 20 * (1 << bw), + sgi ? 'S' : 'L', mcs); } else if (format == FORMATMOD_VHT) { if (r_idx) { - *r_idx = N_CCK + N_OFDM + N_HT + nss * 80 + mcs * 8 + bw * 2 + sgi; + *r_idx = N_CCK + N_OFDM + N_HT + nss * 80 + mcs * 8 + + bw * 2 + sgi; res = scnprintf(buf, size - res, "%3d ", *r_idx); } - res += scnprintf(&buf[res], size - res, "VHT%d/%cGI%*cMCS%d/%1d ", - 20 * (1 << bw), sgi ? 'S' : 'L', bw > 2 ? 5 : 6, ' ', - mcs, nss + 1); + res += scnprintf(&buf[res], size - res, + "VHT%d/%cGI%*cMCS%d/%1d ", 20 * (1 << bw), + sgi ? 'S' : 'L', bw > 2 ? 5 : 6, ' ', mcs, + nss + 1); } else if (format == FORMATMOD_HE_SU) { if (r_idx) { - *r_idx = N_CCK + N_OFDM + N_HT + N_VHT + nss * 144 + mcs * 12 + bw * 3 + sgi; + *r_idx = N_CCK + N_OFDM + N_HT + N_VHT + nss * 144 + + mcs * 12 + bw * 3 + sgi; res = scnprintf(buf, size - res, "%3d ", *r_idx); } - res += scnprintf(&buf[res], size - res, "HE%d/GI%s%*cMCS%d/%1d%*c", - 20 * (1 << bw), he_gi[sgi], bw > 2 ? 4 : 5, ' ', - mcs, nss + 1, mcs > 9 ? 1 : 2, ' '); + res += scnprintf(&buf[res], size - res, + "HE%d/GI%s%*cMCS%d/%1d%*c", 20 * (1 << bw), + he_gi[sgi], bw > 2 ? 4 : 5, ' ', mcs, nss + 1, + mcs > 9 ? 1 : 2, ' '); } else { if (r_idx) { - *r_idx = N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU + nss * 216 + mcs * 18 + bw * 3 + sgi; + *r_idx = N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU + + nss * 216 + mcs * 18 + bw * 3 + sgi; res = scnprintf(buf, size - res, "%3d ", *r_idx); } - res += scnprintf(&buf[res], size - res, "HEMU-%d/GI%s%*cMCS%d/%1d%*c", - ru_size[bw], he_gi[sgi], bw > 1 ? 1 : 2, ' ', - mcs, nss + 1, mcs > 9 ? 1 : 2, ' '); - + res += scnprintf(&buf[res], size - res, + "HEMU-%d/GI%s%*cMCS%d/%1d%*c", ru_size[bw], + he_gi[sgi], bw > 1 ? 1 : 2, ' ', mcs, nss + 1, + mcs > 9 ? 1 : 2, ' '); } return res; } -static int print_rate_from_cfg(char *buf, int size, u32 rate_config, int *r_idx, int ru_size) +static int print_rate_from_cfg(char *buf, int size, u32 rate_config, int *r_idx, + int ru_size) { - union rwnx_rate_ctrl_info *r_cfg = (union rwnx_rate_ctrl_info *)&rate_config; + union rwnx_rate_ctrl_info *r_cfg = + (union rwnx_rate_ctrl_info *)&rate_config; union rwnx_mcs_index *mcs_index = (union rwnx_mcs_index *)&rate_config; unsigned int ft, pre, gi, bw, nss, mcs, len; @@ -1680,7 +1752,8 @@ static int print_rate_from_cfg(char *buf, int size, u32 rate_config, int *r_idx, return len; } -static void idx_to_rate_cfg(int idx, union rwnx_rate_ctrl_info *r_cfg, int *ru_size) +static void idx_to_rate_cfg(int idx, union rwnx_rate_ctrl_info *r_cfg, + int *ru_size) { r_cfg->value = 0; if (idx < N_CCK) { @@ -1689,33 +1762,33 @@ static void idx_to_rate_cfg(int idx, union rwnx_rate_ctrl_info *r_cfg, int *ru_s r_cfg->mcsIndexTx = idx / 2; } else if (idx < (N_CCK + N_OFDM)) { r_cfg->formatModTx = FORMATMOD_NON_HT; - r_cfg->mcsIndexTx = idx - N_CCK + 4; + r_cfg->mcsIndexTx = idx - N_CCK + 4; } else if (idx < (N_CCK + N_OFDM + N_HT)) { union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; idx -= (N_CCK + N_OFDM); r_cfg->formatModTx = FORMATMOD_HT_MF; - r->ht.nss = idx / (8*2*2); - r->ht.mcs = (idx % (8*2*2)) / (2*2); - r_cfg->bwTx = ((idx % (8*2*2)) % (2*2)) / 2; + r->ht.nss = idx / (8 * 2 * 2); + r->ht.mcs = (idx % (8 * 2 * 2)) / (2 * 2); + r_cfg->bwTx = ((idx % (8 * 2 * 2)) % (2 * 2)) / 2; r_cfg->giAndPreTypeTx = idx & 1; } else if (idx < (N_CCK + N_OFDM + N_HT + N_VHT)) { union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; idx -= (N_CCK + N_OFDM + N_HT); r_cfg->formatModTx = FORMATMOD_VHT; - r->vht.nss = idx / (10*4*2); - r->vht.mcs = (idx % (10*4*2)) / (4*2); - r_cfg->bwTx = ((idx % (10*4*2)) % (4*2)) / 2; + r->vht.nss = idx / (10 * 4 * 2); + r->vht.mcs = (idx % (10 * 4 * 2)) / (4 * 2); + r_cfg->bwTx = ((idx % (10 * 4 * 2)) % (4 * 2)) / 2; r_cfg->giAndPreTypeTx = idx & 1; } else if (idx < (N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU)) { union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; idx -= (N_CCK + N_OFDM + N_HT + N_VHT); r_cfg->formatModTx = FORMATMOD_HE_SU; - r->vht.nss = idx / (12*4*3); - r->vht.mcs = (idx % (12*4*3)) / (4*3); - r_cfg->bwTx = ((idx % (12*4*3)) % (4*3)) / 3; + r->vht.nss = idx / (12 * 4 * 3); + r->vht.mcs = (idx % (12 * 4 * 3)) / (4 * 3); + r_cfg->bwTx = ((idx % (12 * 4 * 3)) % (4 * 3)) / 3; r_cfg->giAndPreTypeTx = idx % 3; } else { union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; @@ -1724,78 +1797,73 @@ static void idx_to_rate_cfg(int idx, union rwnx_rate_ctrl_info *r_cfg, int *ru_s idx -= (N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU); r_cfg->formatModTx = FORMATMOD_HE_MU; - r->vht.nss = idx / (12*6*3); - r->vht.mcs = (idx % (12*6*3)) / (6*3); - *ru_size = ((idx % (12*6*3)) % (6*3)) / 3; + r->vht.nss = idx / (12 * 6 * 3); + r->vht.mcs = (idx % (12 * 6 * 3)) / (6 * 3); + *ru_size = ((idx % (12 * 6 * 3)) % (6 * 3)) / 3; r_cfg->giAndPreTypeTx = idx % 3; r_cfg->bwTx = 0; } } -static void idx_to_rate_cfg1(unsigned int formatmod, - unsigned int mcs,unsigned int nss, - unsigned int bwTx,unsigned int gi, - union rwnx_rate_ctrl_info *r_cfg, int *ru_size) +static void idx_to_rate_cfg1(unsigned int formatmod, unsigned int mcs, + unsigned int nss, unsigned int bwTx, + unsigned int gi, union rwnx_rate_ctrl_info *r_cfg, + int *ru_size) { - r_cfg->value = 0; + r_cfg->value = 0; - switch(formatmod){ - case FORMATMOD_NON_HT: - { - r_cfg->formatModTx = formatmod; - r_cfg->giAndPreTypeTx = 1; - r_cfg->mcsIndexTx = mcs; - break; - } - case FORMATMOD_NON_HT_DUP_OFDM: - { - r_cfg->formatModTx = formatmod; - r_cfg->giAndPreTypeTx = gi; - r_cfg->mcsIndexTx = mcs; - break; - } - case FORMATMOD_HT_MF: - { - union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; + switch (formatmod) { + case FORMATMOD_NON_HT: { + r_cfg->formatModTx = formatmod; + r_cfg->giAndPreTypeTx = 1; + r_cfg->mcsIndexTx = mcs; + break; + } + case FORMATMOD_NON_HT_DUP_OFDM: { + r_cfg->formatModTx = formatmod; + r_cfg->giAndPreTypeTx = gi; + r_cfg->mcsIndexTx = mcs; + break; + } + case FORMATMOD_HT_MF: { + union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; - r_cfg->formatModTx = formatmod; - r->ht.nss = nss; - r->ht.mcs = mcs; - r_cfg->bwTx = bwTx; - r_cfg->giAndPreTypeTx = gi; - break; - } - case FORMATMOD_VHT: - case FORMATMOD_HE_SU: - { - union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; + r_cfg->formatModTx = formatmod; + r->ht.nss = nss; + r->ht.mcs = mcs; + r_cfg->bwTx = bwTx; + r_cfg->giAndPreTypeTx = gi; + break; + } + case FORMATMOD_VHT: + case FORMATMOD_HE_SU: { + union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; - r_cfg->formatModTx = formatmod; - r->vht.nss = nss; - r->vht.mcs = mcs; - r_cfg->bwTx = bwTx; - r_cfg->giAndPreTypeTx = gi; - break; - } - case FORMATMOD_HE_MU: - { - union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; + r_cfg->formatModTx = formatmod; + r->vht.nss = nss; + r->vht.mcs = mcs; + r_cfg->bwTx = bwTx; + r_cfg->giAndPreTypeTx = gi; + break; + } + case FORMATMOD_HE_MU: { + union rwnx_mcs_index *r = (union rwnx_mcs_index *)r_cfg; - r_cfg->formatModTx = formatmod; - r->he.nss = nss; - r->he.mcs = mcs; - r_cfg->bwTx = 0; - r_cfg->giAndPreTypeTx = gi; - break; - } - default: - printk("Don't have the formatmod"); - } + r_cfg->formatModTx = formatmod; + r->he.nss = nss; + r->he.mcs = mcs; + r_cfg->bwTx = 0; + r_cfg->giAndPreTypeTx = gi; + break; + } + default: + printk("Don't have the formatmod"); + } } static ssize_t rwnx_dbgfs_rc_stats_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) + char __user *user_buf, size_t count, + loff_t *ppos) { struct rwnx_sta *sta = NULL; struct rwnx_hw *priv = file->private_data; @@ -1816,8 +1884,9 @@ static ssize_t rwnx_dbgfs_rc_stats_read(struct file *file, return 0; /* Get the station index from MAC address */ - sscanf(file->f_path.dentry->d_parent->d_iname, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); + sscanf(file->f_path.dentry->d_parent->d_iname, + "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mac[0], &mac[1], &mac[2], + &mac[3], &mac[4], &mac[5]); //if (mac == NULL) // return 0; sta = rwnx_get_sta(priv, mac); @@ -1847,41 +1916,55 @@ static ssize_t rwnx_dbgfs_rc_stats_read(struct file *file, for (i = 0; i < no_samples; i++) { unsigned int tp, eprob; - len = print_rate_from_cfg(st[i].line, LINE_MAX_SZ, - me_rc_stats_cfm.rate_stats[i].rate_config, - &st[i].r_idx, 0); + len = print_rate_from_cfg( + st[i].line, LINE_MAX_SZ, + me_rc_stats_cfm.rate_stats[i].rate_config, &st[i].r_idx, + 0); if (me_rc_stats_cfm.sw_retry_step != 0) { - len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, "%c", - me_rc_stats_cfm.retry_step_idx[me_rc_stats_cfm.sw_retry_step] == i ? '*' : ' '); + len += scnprintf( + &st[i].line[len], LINE_MAX_SZ - len, "%c", + me_rc_stats_cfm.retry_step_idx + [me_rc_stats_cfm + .sw_retry_step] == + i ? + '*' : + ' '); } else { - len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, " "); + len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, + " "); } len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, "%c", - me_rc_stats_cfm.retry_step_idx[0] == i ? 'T' : ' '); + me_rc_stats_cfm.retry_step_idx[0] == i ? 'T' : + ' '); len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, "%c", - me_rc_stats_cfm.retry_step_idx[1] == i ? 't' : ' '); + me_rc_stats_cfm.retry_step_idx[1] == i ? 't' : + ' '); len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, "%c ", - me_rc_stats_cfm.retry_step_idx[2] == i ? 'P' : ' '); + me_rc_stats_cfm.retry_step_idx[2] == i ? 'P' : + ' '); tp = me_rc_stats_cfm.tp[i] / 10; - len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, " %4u.%1u", - tp / 10, tp % 10); - - eprob = ((me_rc_stats_cfm.rate_stats[i].probability * 1000) >> 16) + 1; len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, - " %4u.%1u %5u(%6u) %6u", - eprob / 10, eprob % 10, - me_rc_stats_cfm.rate_stats[i].success, - me_rc_stats_cfm.rate_stats[i].attempts, - me_rc_stats_cfm.rate_stats[i].sample_skipped); + " %4u.%1u", tp / 10, tp % 10); + + eprob = ((me_rc_stats_cfm.rate_stats[i].probability * 1000) >> + 16) + + 1; + len += scnprintf(&st[i].line[len], LINE_MAX_SZ - len, + " %4u.%1u %5u(%6u) %6u", eprob / 10, + eprob % 10, + me_rc_stats_cfm.rate_stats[i].success, + me_rc_stats_cfm.rate_stats[i].attempts, + me_rc_stats_cfm.rate_stats[i].sample_skipped); } len = scnprintf(buf, bufsz, - "\nTX rate info for %02X:%02X:%02X:%02X:%02X:%02X:\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + "\nTX rate info for %02X:%02X:%02X:%02X:%02X:%02X:\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - len += scnprintf(&buf[len], bufsz - len, - " # type rate tpt eprob ok( tot) skipped\n"); + len += scnprintf( + &buf[len], bufsz - len, + " # type rate tpt eprob ok( tot) skipped\n"); // add sorted statistics to the buffer sort(st, no_samples, sizeof(st[0]), compare_idx, NULL); @@ -1892,38 +1975,40 @@ static ssize_t rwnx_dbgfs_rc_stats_read(struct file *file, // display HE TB statistics if any if (me_rc_stats_cfm.rate_stats[RC_HE_STATS_IDX].rate_config != 0) { unsigned int tp, eprob; - struct rc_rate_stats *rate_stats = &me_rc_stats_cfm.rate_stats[RC_HE_STATS_IDX]; + struct rc_rate_stats *rate_stats = + &me_rc_stats_cfm.rate_stats[RC_HE_STATS_IDX]; int ru_index = rate_stats->ru_and_length & 0x07; int ul_length = rate_stats->ru_and_length >> 3; len += scnprintf(&buf[len], bufsz - len, - "\nHE TB rate info:\n"); + "\nHE TB rate info:\n"); - len += scnprintf(&buf[len], bufsz - len, - " type rate tpt eprob ok( tot) ul_length\n "); - len += print_rate_from_cfg(&buf[len], bufsz - len, rate_stats->rate_config, - NULL, ru_index); + len += scnprintf( + &buf[len], bufsz - len, + " type rate tpt eprob ok( tot) ul_length\n "); + len += print_rate_from_cfg(&buf[len], bufsz - len, + rate_stats->rate_config, NULL, + ru_index); tp = me_rc_stats_cfm.tp[RC_HE_STATS_IDX] / 10; len += scnprintf(&buf[len], bufsz - len, " %4u.%1u", - tp / 10, tp % 10); + tp / 10, tp % 10); eprob = ((rate_stats->probability * 1000) >> 16) + 1; len += scnprintf(&buf[len], bufsz - len, - " %4u.%1u %5u(%6u) %6u\n", - eprob / 10, eprob % 10, - rate_stats->success, - rate_stats->attempts, - ul_length); + " %4u.%1u %5u(%6u) %6u\n", eprob / 10, + eprob % 10, rate_stats->success, + rate_stats->attempts, ul_length); } - len += scnprintf(&buf[len], bufsz - len, "\n MPDUs AMPDUs AvLen trialP"); + len += scnprintf(&buf[len], bufsz - len, + "\n MPDUs AMPDUs AvLen trialP"); len += scnprintf(&buf[len], bufsz - len, "\n%6u %6u %3d.%1d %6u\n", - me_rc_stats_cfm.ampdu_len, - me_rc_stats_cfm.ampdu_packets, - me_rc_stats_cfm.avg_ampdu_len >> 16, - ((me_rc_stats_cfm.avg_ampdu_len * 10) >> 16) % 10, - me_rc_stats_cfm.sample_wait); + me_rc_stats_cfm.ampdu_len, + me_rc_stats_cfm.ampdu_packets, + me_rc_stats_cfm.avg_ampdu_len >> 16, + ((me_rc_stats_cfm.avg_ampdu_len * 10) >> 16) % 10, + me_rc_stats_cfm.sample_wait); read = simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -1936,75 +2021,75 @@ static ssize_t rwnx_dbgfs_rc_stats_read(struct file *file, DEBUGFS_READ_FILE_OPS(rc_stats); static ssize_t rwnx_dbgfs_rc_fixed_rate_idx_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { - struct rwnx_sta *sta = NULL; - struct rwnx_hw *priv = file->private_data; - u8 mac[6]; - char buf[20]; - int fixed_rate_idx = 1; + struct rwnx_sta *sta = NULL; + struct rwnx_hw *priv = file->private_data; + u8 mac[6]; + char buf[20]; + int fixed_rate_idx = 1; unsigned int formatmod, mcs, nss, bwTx, gi; - union rwnx_rate_ctrl_info rate_config; - union rwnx_rate_ctrl_info *r_cfg=&rate_config; - int error = 0; - size_t len = min_t(size_t, count, sizeof(buf) - 1); + union rwnx_rate_ctrl_info rate_config; + union rwnx_rate_ctrl_info *r_cfg = &rate_config; + int error = 0; + size_t len = min_t(size_t, count, sizeof(buf) - 1); - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Get the station index from MAC address */ - sscanf(file->f_path.dentry->d_parent->d_iname, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); - //if (mac == NULL) - // return 0; - sta = rwnx_get_sta(priv, mac); - if (sta == NULL) - return 0; + /* Get the station index from MAC address */ + sscanf(file->f_path.dentry->d_parent->d_iname, + "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mac[0], &mac[1], &mac[2], + &mac[3], &mac[4], &mac[5]); + //if (mac == NULL) + // return 0; + sta = rwnx_get_sta(priv, mac); + if (sta == NULL) + return 0; - /* Get the content of the file */ - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; - buf[len] = '\0'; - //sscanf(buf, "%i\n", &fixed_rate_idx); - sscanf(buf, "%u %u %u %u %u",&formatmod, &mcs, &nss, &bwTx, &gi); - printk("%u %u %u %u %u\n",formatmod, mcs, nss, bwTx, gi); + /* Get the content of the file */ + if (copy_from_user(buf, user_buf, len)) + return -EFAULT; + buf[len] = '\0'; + //sscanf(buf, "%i\n", &fixed_rate_idx); + sscanf(buf, "%u %u %u %u %u", &formatmod, &mcs, &nss, &bwTx, &gi); + printk("%u %u %u %u %u\n", formatmod, mcs, nss, bwTx, gi); - if((formatmod > 6) || (mcs > 11) || (nss > 8) || (bwTx > 6) || (gi > 3)){ - printk("error parameter"); - return len; - } + if ((formatmod > 6) || (mcs > 11) || (nss > 8) || (bwTx > 6) || + (gi > 3)) { + printk("error parameter"); + return len; + } - /* Convert rate index into rate configuration */ - if ((fixed_rate_idx < 0) || (fixed_rate_idx >= (N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU))) - { - // disable fixed rate - rate_config.value = (u32)-1; - } - else - { - //idx_to_rate_cfg(fixed_rate_idx, &rate_config, NULL); - idx_to_rate_cfg1(formatmod, mcs, nss, bwTx, gi, &rate_config, NULL); - } + /* Convert rate index into rate configuration */ + if ((fixed_rate_idx < 0) || + (fixed_rate_idx >= (N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU))) { + // disable fixed rate + rate_config.value = (u32)-1; + } else { + //idx_to_rate_cfg(fixed_rate_idx, &rate_config, NULL); + idx_to_rate_cfg1(formatmod, mcs, nss, bwTx, gi, &rate_config, + NULL); + } - printk("formatModTx=%u mcsIndexTx=%u bwTx=%u giAndPreTypeTx=%u\n",r_cfg->formatModTx,r_cfg->mcsIndexTx,r_cfg->bwTx,r_cfg->giAndPreTypeTx); + printk("formatModTx=%u mcsIndexTx=%u bwTx=%u giAndPreTypeTx=%u\n", + r_cfg->formatModTx, r_cfg->mcsIndexTx, r_cfg->bwTx, + r_cfg->giAndPreTypeTx); // Forward the request to the LMAC - if ((error = rwnx_send_me_rc_set_rate(priv, sta->sta_idx, - (u16)rate_config.value)) != 0) - { - return error; - } + if ((error = rwnx_send_me_rc_set_rate(priv, sta->sta_idx, + (u16)rate_config.value)) != 0) { + return error; + } printk("send success \n"); - priv->debugfs.rc_config[sta->sta_idx] = (int)rate_config.value; - return len; - + priv->debugfs.rc_config[sta->sta_idx] = (int)rate_config.value; + return len; } DEBUGFS_WRITE_FILE_OPS(rc_fixed_rate_idx); -static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_sta *sta = NULL; struct rwnx_hw *priv = file->private_data; @@ -2026,10 +2111,11 @@ static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, return 0; /* Get the station index from MAC address */ - sscanf(file->f_path.dentry->d_parent->d_iname, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); -// if (mac == NULL) -// return 0; + sscanf(file->f_path.dentry->d_parent->d_iname, + "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mac[0], &mac[1], &mac[2], + &mac[3], &mac[4], &mac[5]); + // if (mac == NULL) + // return 0; sta = rwnx_get_sta(priv, mac); if (sta == NULL) return 0; @@ -2044,33 +2130,38 @@ static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, nrx = (priv->version_cfm.version_phy_1 & MDM_NRX_MASK) >> MDM_NRX_LSB; len += scnprintf(buf, bufsz, - "\nRX rate info for %02X:%02X:%02X:%02X:%02X:%02X:\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + "\nRX rate info for %02X:%02X:%02X:%02X:%02X:%02X:\n", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); // Display Statistics for (i = 0; i < rate_stats->size; i++) { if (rate_stats->table[i]) { union rwnx_rate_ctrl_info rate_config; - int percent = (rate_stats->table[i] * 1000) / rate_stats->cpt; + int percent = + (rate_stats->table[i] * 1000) / rate_stats->cpt; int p = 0; int ru_size = 0; idx_to_rate_cfg(i, &rate_config, &ru_size); len += print_rate_from_cfg(&buf[len], bufsz - len, - rate_config.value, NULL, ru_size); + rate_config.value, NULL, + ru_size); p = (percent * hist_len) / 1000; - len += scnprintf(&buf[len], bufsz - len, ": %6d(%3d.%1d%%)%.*s\n", - rate_stats->table[i], - percent / 10, percent % 10, p, hist); + len += scnprintf(&buf[len], bufsz - len, + ": %6d(%3d.%1d%%)%.*s\n", + rate_stats->table[i], percent / 10, + percent % 10, p, hist); } } // Display detailed info of the last received rate last_rx = &sta->stats.last_rx.rx_vect1; - len += scnprintf(&buf[len], bufsz - len, "\nLast received rate\n" - " type rate LDPC STBC BEAMFM DCM DOPPLER %s\n", - (nrx > 1) ? "rssi1(dBm) rssi2(dBm)" : "rssi(dBm)"); + len += scnprintf( + &buf[len], bufsz - len, + "\nLast received rate\n" + " type rate LDPC STBC BEAMFM DCM DOPPLER %s\n", + (nrx > 1) ? "rssi1(dBm) rssi2(dBm)" : "rssi(dBm)"); fmt = last_rx->format_mod; bw = last_rx->ch_bw; @@ -2087,41 +2178,49 @@ static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, gi = last_rx->vht.short_gi; } else if (fmt >= FORMATMOD_HT_MF) { mcs = last_rx->ht.mcs % 8; - nss = last_rx->ht.mcs / 8;; + nss = last_rx->ht.mcs / 8; + ; gi = last_rx->ht.short_gi; } else { - BUG_ON((mcs = legrates_lut[last_rx->leg_rate]) == -1); + BUG_ON((mcs = legrates_lut[last_rx->leg_rate].idx) == -1); nss = 0; gi = 0; } - len += print_rate(&buf[len], bufsz - len, fmt, nss, mcs, bw, gi, pre, NULL); + len += print_rate(&buf[len], bufsz - len, fmt, nss, mcs, bw, gi, pre, + NULL); /* flags for HT/VHT/HE */ if (fmt >= FORMATMOD_HE_SU) { - len += scnprintf(&buf[len], bufsz - len, " %c %c %c %c %c", - last_rx->he.fec ? 'L' : ' ', - last_rx->he.stbc ? 'S' : ' ', - last_rx->he.beamformed ? 'B' : ' ', - last_rx->he.dcm ? 'D' : ' ', - last_rx->he.doppler ? 'D' : ' '); + len += scnprintf(&buf[len], bufsz - len, + " %c %c %c %c %c", + last_rx->he.fec ? 'L' : ' ', + last_rx->he.stbc ? 'S' : ' ', + last_rx->he.beamformed ? 'B' : ' ', + last_rx->he.dcm ? 'D' : ' ', + last_rx->he.doppler ? 'D' : ' '); } else if (fmt == FORMATMOD_VHT) { - len += scnprintf(&buf[len], bufsz - len, " %c %c %c ", - last_rx->vht.fec ? 'L' : ' ', - last_rx->vht.stbc ? 'S' : ' ', - last_rx->vht.beamformed ? 'B' : ' '); + len += scnprintf(&buf[len], bufsz - len, + " %c %c %c ", + last_rx->vht.fec ? 'L' : ' ', + last_rx->vht.stbc ? 'S' : ' ', + last_rx->vht.beamformed ? 'B' : ' '); } else if (fmt >= FORMATMOD_HT_MF) { - len += scnprintf(&buf[len], bufsz - len, " %c %c ", - last_rx->ht.fec ? 'L' : ' ', - last_rx->ht.stbc ? 'S' : ' '); + len += scnprintf(&buf[len], bufsz - len, + " %c %c ", + last_rx->ht.fec ? 'L' : ' ', + last_rx->ht.stbc ? 'S' : ' '); } else { - len += scnprintf(&buf[len], bufsz - len, " "); + len += scnprintf(&buf[len], bufsz - len, + " "); } if (nrx > 1) { - len += scnprintf(&buf[len], bufsz - len, " %-4d %d\n", - last_rx->rssi1, last_rx->rssi1); + len += scnprintf(&buf[len], bufsz - len, + " %-4d %d\n", last_rx->rssi1, + last_rx->rssi1); } else { - len += scnprintf(&buf[len], bufsz - len, " %d\n", last_rx->rssi1); + len += scnprintf(&buf[len], bufsz - len, " %d\n", + last_rx->rssi1); } read = simple_read_from_buffer(user_buf, count, ppos, buf, len); @@ -2131,18 +2230,19 @@ static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, } static ssize_t rwnx_dbgfs_last_rx_write(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) + const char __user *user_buf, + size_t count, loff_t *ppos) { struct rwnx_sta *sta = NULL; struct rwnx_hw *priv = file->private_data; u8 mac[6]; /* Get the station index from MAC address */ - sscanf(file->f_path.dentry->d_parent->d_iname, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", - &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); -// if (mac == NULL) -// return 0; + sscanf(file->f_path.dentry->d_parent->d_iname, + "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mac[0], &mac[1], &mac[2], + &mac[3], &mac[4], &mac[5]); + // if (mac == NULL) + // return 0; sta = rwnx_get_sta(priv, mac); if (sta == NULL) return 0; @@ -2151,7 +2251,7 @@ static ssize_t rwnx_dbgfs_last_rx_write(struct file *file, * interrupt */ spin_lock_bh(&priv->tx_lock); memset(sta->stats.rx_rate.table, 0, - sta->stats.rx_rate.size * sizeof(sta->stats.rx_rate.table[0])); + sta->stats.rx_rate.size * sizeof(sta->stats.rx_rate.table[0])); sta->stats.rx_rate.cpt = 0; sta->stats.rx_rate.rate_cnt = 0; spin_unlock_bh(&priv->tx_lock); @@ -2166,10 +2266,10 @@ DEBUGFS_READ_WRITE_FILE_OPS(last_rx); #ifdef CONFIG_RWNX_FULLMAC static void rwnx_rc_stat_work(struct work_struct *ws) { - struct rwnx_debugfs *rwnx_debugfs = container_of(ws, struct rwnx_debugfs, - rc_stat_work); - struct rwnx_hw *rwnx_hw = container_of(rwnx_debugfs, struct rwnx_hw, - debugfs); + struct rwnx_debugfs *rwnx_debugfs = + container_of(ws, struct rwnx_debugfs, rc_stat_work); + struct rwnx_hw *rwnx_hw = + container_of(rwnx_debugfs, struct rwnx_hw, debugfs); struct rwnx_sta *sta; uint8_t ridx, sta_idx; @@ -2202,7 +2302,8 @@ static void rwnx_rc_stat_work(struct work_struct *ws) if (sta->sta_idx >= NX_REMOTE_STA_MAX) { scnprintf(sta_name, sizeof(sta_name), "bc_mc"); } else { - scnprintf(sta_name, sizeof(sta_name), "%pM", sta->mac_addr); + scnprintf(sta_name, sizeof(sta_name), "%pM", + sta->mac_addr); } dir_sta = debugfs_create_dir(sta_name, dir_rc); @@ -2212,17 +2313,19 @@ static void rwnx_rc_stat_work(struct work_struct *ws) rwnx_debugfs->dir_sta[sta->sta_idx] = dir_sta; file = debugfs_create_file("stats", S_IRUSR, dir_sta, rwnx_hw, - &rwnx_dbgfs_rc_stats_ops); + &rwnx_dbgfs_rc_stats_ops); if (IS_ERR_OR_NULL(file)) goto error_after_dir; - file = debugfs_create_file("fixed_rate_idx", S_IWUSR, dir_sta, rwnx_hw, - &rwnx_dbgfs_rc_fixed_rate_idx_ops); + file = debugfs_create_file("fixed_rate_idx", S_IWUSR, dir_sta, + rwnx_hw, + &rwnx_dbgfs_rc_fixed_rate_idx_ops); if (IS_ERR_OR_NULL(file)) goto error_after_dir; - file = debugfs_create_file("rx_rate", S_IRUSR | S_IWUSR, dir_sta, rwnx_hw, - &rwnx_dbgfs_last_rx_ops); + file = debugfs_create_file("rx_rate", S_IRUSR | S_IWUSR, + dir_sta, rwnx_hw, + &rwnx_dbgfs_last_rx_ops); if (IS_ERR_OR_NULL(file)) goto error_after_dir; @@ -2235,8 +2338,8 @@ static void rwnx_rc_stat_work(struct work_struct *ws) if (rwnx_hw->mod_params->he_on) nb_rx_rate += N_HE_SU + N_HE_MU; - rate_stats->table = kzalloc(nb_rx_rate * sizeof(rate_stats->table[0]), - GFP_KERNEL); + rate_stats->table = kzalloc( + nb_rx_rate * sizeof(rate_stats->table[0]), GFP_KERNEL); if (!rate_stats->table) goto error_after_dir; @@ -2248,11 +2351,14 @@ static void rwnx_rc_stat_work(struct work_struct *ws) rwnx_debugfs->rc_config[sta_idx] = -1; /* Unless we already fix the rate for this station */ - list_for_each_entry_safe(rc_cfg, next, &rwnx_debugfs->rc_config_save, list) { - if (jiffies_to_msecs(jiffies - rc_cfg->timestamp) > RC_CONFIG_DUR) { + list_for_each_entry_safe (rc_cfg, next, + &rwnx_debugfs->rc_config_save, list) { + if (jiffies_to_msecs(jiffies - rc_cfg->timestamp) > + RC_CONFIG_DUR) { list_del(&rc_cfg->list); kfree(rc_cfg); - } else if (!memcmp(rc_cfg->mac_addr, sta->mac_addr, ETH_ALEN)) { + } else if (!memcmp(rc_cfg->mac_addr, sta->mac_addr, + ETH_ALEN)) { rwnx_debugfs->rc_config[sta_idx] = rc_cfg->rate; list_del(&rc_cfg->list); kfree(rc_cfg); @@ -2261,8 +2367,9 @@ static void rwnx_rc_stat_work(struct work_struct *ws) } if ((rwnx_debugfs->rc_config[sta_idx] >= 0) && - rwnx_send_me_rc_set_rate(rwnx_hw, sta_idx, - (u16)rwnx_debugfs->rc_config[sta_idx])) + rwnx_send_me_rc_set_rate( + rwnx_hw, sta_idx, + (u16)rwnx_debugfs->rc_config[sta_idx])) rwnx_debugfs->rc_config[sta_idx] = -1; } else { @@ -2272,7 +2379,7 @@ static void rwnx_rc_stat_work(struct work_struct *ws) sta->stats.rx_rate.table = NULL; } sta->stats.rx_rate.size = 0; - sta->stats.rx_rate.cpt = 0; + sta->stats.rx_rate.cpt = 0; sta->stats.rx_rate.rate_cnt = 0; /* If fix rate was set for this station, save the configuration in case @@ -2283,8 +2390,10 @@ static void rwnx_rc_stat_work(struct work_struct *ws) if (rc_cfg) { rc_cfg->rate = rwnx_debugfs->rc_config[sta_idx]; rc_cfg->timestamp = jiffies; - memcpy(rc_cfg->mac_addr, sta->mac_addr, ETH_ALEN); - list_add_tail(&rc_cfg->list, &rwnx_debugfs->rc_config_save); + memcpy(rc_cfg->mac_addr, sta->mac_addr, + ETH_ALEN); + list_add_tail(&rc_cfg->list, + &rwnx_debugfs->rc_config_save); } } @@ -2299,10 +2408,12 @@ error_after_dir: rwnx_debugfs->dir_sta[sta->sta_idx] = NULL; error: dev_err(rwnx_hw->dev, - "Error while (un)registering debug entry for sta %d\n", sta_idx); + "Error while (un)registering debug entry for sta %d\n", + sta_idx); } -void _rwnx_dbgfs_rc_stat_write(struct rwnx_debugfs *rwnx_debugfs, uint8_t sta_idx) +void _rwnx_dbgfs_rc_stat_write(struct rwnx_debugfs *rwnx_debugfs, + uint8_t sta_idx) { uint8_t widx = rwnx_debugfs->rc_write; if (rwnx_debugfs->rc_sta[widx] != 0XFF) { @@ -2324,7 +2435,8 @@ void rwnx_dbgfs_register_rc_stat(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) _rwnx_dbgfs_rc_stat_write(&rwnx_hw->debugfs, sta->sta_idx); } -void rwnx_dbgfs_unregister_rc_stat(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) +void rwnx_dbgfs_unregister_rc_stat(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta) { _rwnx_dbgfs_rc_stat_write(&rwnx_hw->debugfs, sta->sta_idx); } @@ -2366,17 +2478,17 @@ int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name) DEBUGFS_ADD_U32(tcp_pacing_shift, dir_drv, &rwnx_hw->tcp_pacing_shift, S_IWUSR | S_IRUSR); DEBUGFS_ADD_FILE(stats, dir_drv, S_IWUSR | S_IRUSR); - DEBUGFS_ADD_FILE(sys_stats, dir_drv, S_IRUSR); + DEBUGFS_ADD_FILE(sys_stats, dir_drv, S_IRUSR); DEBUGFS_ADD_FILE(txq, dir_drv, S_IRUSR); DEBUGFS_ADD_FILE(acsinfo, dir_drv, S_IRUSR); #ifdef CONFIG_RWNX_MUMIMO_TX DEBUGFS_ADD_FILE(mu_group, dir_drv, S_IRUSR); #endif DEBUGFS_ADD_FILE(regdbg, dir_drv, S_IWUSR); - DEBUGFS_ADD_FILE(vendor_hwconfig, dir_drv,S_IWUSR); - DEBUGFS_ADD_FILE(vendor_swconfig, dir_drv,S_IWUSR); - DEBUGFS_ADD_FILE(agg_disable, dir_drv,S_IWUSR); - DEBUGFS_ADD_FILE(set_roc, dir_drv,S_IWUSR); + DEBUGFS_ADD_FILE(vendor_hwconfig, dir_drv, S_IWUSR); + DEBUGFS_ADD_FILE(vendor_swconfig, dir_drv, S_IWUSR); + DEBUGFS_ADD_FILE(agg_disable, dir_drv, S_IWUSR); + DEBUGFS_ADD_FILE(set_roc, dir_drv, S_IWUSR); #ifdef CONFIG_RWNX_P2P_DEBUGFS { @@ -2405,8 +2517,8 @@ int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name) goto err; DEBUGFS_ADD_FILE(pulses_prim, dir_radar, S_IRUSR); - DEBUGFS_ADD_FILE(detected, dir_radar, S_IRUSR); - DEBUGFS_ADD_FILE(enable, dir_radar, S_IRUSR); + DEBUGFS_ADD_FILE(detected, dir_radar, S_IRUSR); + DEBUGFS_ADD_FILE(enable, dir_radar, S_IRUSR); if (rwnx_hw->phy.cnt == 2) { DEBUGFS_ADD_FILE(pulses_sec, dir_radar, S_IRUSR); @@ -2415,12 +2527,12 @@ int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name) if (!dir_sec) goto err; - DEBUGFS_ADD_FILE(band, dir_sec, S_IWUSR | S_IRUSR); - DEBUGFS_ADD_FILE(type, dir_sec, S_IWUSR | S_IRUSR); - DEBUGFS_ADD_FILE(prim20, dir_sec, S_IWUSR | S_IRUSR); + DEBUGFS_ADD_FILE(band, dir_sec, S_IWUSR | S_IRUSR); + DEBUGFS_ADD_FILE(type, dir_sec, S_IWUSR | S_IRUSR); + DEBUGFS_ADD_FILE(prim20, dir_sec, S_IWUSR | S_IRUSR); DEBUGFS_ADD_FILE(center1, dir_sec, S_IWUSR | S_IRUSR); DEBUGFS_ADD_FILE(center2, dir_sec, S_IWUSR | S_IRUSR); - DEBUGFS_ADD_FILE(set, dir_sec, S_IWUSR | S_IRUSR); + DEBUGFS_ADD_FILE(set, dir_sec, S_IWUSR | S_IRUSR); } } #endif /* CONFIG_RWNX_RADAR */ @@ -2439,7 +2551,8 @@ void rwnx_dbgfs_unregister(struct rwnx_hw *rwnx_hw) #endif #ifdef CONFIG_RWNX_FULLMAC - list_for_each_entry_safe(cfg, next, &rwnx_debugfs->rc_config_save, list) { + list_for_each_entry_safe (cfg, next, &rwnx_debugfs->rc_config_save, + list) { list_del(&cfg->list); kfree(cfg); } @@ -2460,4 +2573,3 @@ void rwnx_dbgfs_unregister(struct rwnx_hw *rwnx_hw) } #endif /* CONFIG_DEBUG_FS */ - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.h index 7f5c7c9c5..4889f2457 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_debugfs.h @@ -10,7 +10,6 @@ ****************************************************************************** */ - #ifndef _RWNX_DEBUGFS_H_ #define _RWNX_DEBUGFS_H_ #include @@ -25,119 +24,120 @@ struct rwnx_sta; /* some macros taken from iwlwifi */ /* TODO: replace with generic read and fill read buffer in open to avoid double * reads */ -#define DEBUGFS_ADD_FILE(name, parent, mode) do { \ - if (!debugfs_create_file(#name, mode, parent, rwnx_hw, \ - &rwnx_dbgfs_##name##_ops)) \ - goto err; \ -} while (0) +#define DEBUGFS_ADD_FILE(name, parent, mode) \ + do { \ + if (!debugfs_create_file(#name, mode, parent, rwnx_hw, \ + &rwnx_dbgfs_##name##_ops)) \ + goto err; \ + } while (0) -#define DEBUGFS_ADD_BOOL(name, parent, ptr) do { \ - struct dentry *__tmp; \ - __tmp = debugfs_create_bool(#name, S_IWUSR | S_IRUSR, \ - parent, ptr); \ - if (IS_ERR(__tmp) || !__tmp) \ - goto err; \ -} while (0) +#define DEBUGFS_ADD_BOOL(name, parent, ptr) \ + do { \ + struct dentry *__tmp; \ + __tmp = debugfs_create_bool(#name, S_IWUSR | S_IRUSR, parent, \ + ptr); \ + if (IS_ERR(__tmp) || !__tmp) \ + goto err; \ + } while (0) -#define DEBUGFS_ADD_X64(name, parent, ptr) do { \ - struct dentry *__tmp; \ - __tmp = debugfs_create_x64(#name, S_IWUSR | S_IRUSR, \ - parent, ptr); \ - if (IS_ERR(__tmp) || !__tmp) \ - goto err; \ -} while (0) +#define DEBUGFS_ADD_X64(name, parent, ptr) \ + do { \ + struct dentry *__tmp; \ + __tmp = debugfs_create_x64(#name, S_IWUSR | S_IRUSR, parent, \ + ptr); \ + if (IS_ERR(__tmp) || !__tmp) \ + goto err; \ + } while (0) -#define DEBUGFS_ADD_U64(name, parent, ptr, mode) do { \ - struct dentry *__tmp; \ - __tmp = debugfs_create_u64(#name, mode, \ - parent, ptr); \ - if (IS_ERR(__tmp) || !__tmp) \ - goto err; \ -} while (0) +#define DEBUGFS_ADD_U64(name, parent, ptr, mode) \ + do { \ + struct dentry *__tmp; \ + __tmp = debugfs_create_u64(#name, mode, parent, ptr); \ + if (IS_ERR(__tmp) || !__tmp) \ + goto err; \ + } while (0) -#define DEBUGFS_ADD_X32(name, parent, ptr) do { \ - struct dentry *__tmp; \ - __tmp = debugfs_create_x32(#name, S_IWUSR | S_IRUSR, \ - parent, ptr); \ - if (IS_ERR(__tmp) || !__tmp) \ - goto err; \ -} while (0) +#define DEBUGFS_ADD_X32(name, parent, ptr) \ + do { \ + struct dentry *__tmp; \ + __tmp = debugfs_create_x32(#name, S_IWUSR | S_IRUSR, parent, \ + ptr); \ + if (IS_ERR(__tmp) || !__tmp) \ + goto err; \ + } while (0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0) -#define DEBUGFS_ADD_U32(name, parent, ptr, mode) do { \ - debugfs_create_u32(#name, mode, \ - parent, ptr); \ -} while (0) +#define DEBUGFS_ADD_U32(name, parent, ptr, mode) \ + do { \ + debugfs_create_u32(#name, mode, parent, ptr); \ + } while (0) #else -#define DEBUGFS_ADD_U32(name, parent, ptr, mode) do { \ - struct dentry *__tmp; \ - __tmp = debugfs_create_u32(#name, mode, \ - parent, ptr); \ - if (IS_ERR(__tmp) || !__tmp) \ - goto err; \ - } while (0) +#define DEBUGFS_ADD_U32(name, parent, ptr, mode) \ + do { \ + struct dentry *__tmp; \ + __tmp = debugfs_create_u32(#name, mode, parent, ptr); \ + if (IS_ERR(__tmp) || !__tmp) \ + goto err; \ + } while (0) #endif - - /* file operation */ -#define DEBUGFS_READ_FUNC(name) \ - static ssize_t rwnx_dbgfs_##name##_read(struct file *file, \ - char __user *user_buf, \ - size_t count, loff_t *ppos); +#define DEBUGFS_READ_FUNC(name) \ + static ssize_t rwnx_dbgfs_##name##_read(struct file *file, \ + char __user *user_buf, \ + size_t count, loff_t *ppos); -#define DEBUGFS_WRITE_FUNC(name) \ - static ssize_t rwnx_dbgfs_##name##_write(struct file *file, \ - const char __user *user_buf,\ - size_t count, loff_t *ppos); +#define DEBUGFS_WRITE_FUNC(name) \ + static ssize_t rwnx_dbgfs_##name##_write(struct file *file, \ + const char __user *user_buf, \ + size_t count, loff_t *ppos); -#define DEBUGFS_OPEN_FUNC(name) \ - static int rwnx_dbgfs_##name##_open(struct inode *inode, \ - struct file *file); +#define DEBUGFS_OPEN_FUNC(name) \ + static int rwnx_dbgfs_##name##_open(struct inode *inode, \ + struct file *file); -#define DEBUGFS_RELEASE_FUNC(name) \ - static int rwnx_dbgfs_##name##_release(struct inode *inode, \ - struct file *file); +#define DEBUGFS_RELEASE_FUNC(name) \ + static int rwnx_dbgfs_##name##_release(struct inode *inode, \ + struct file *file); -#define DEBUGFS_READ_FILE_OPS(name) \ - DEBUGFS_READ_FUNC(name); \ -static const struct file_operations rwnx_dbgfs_##name##_ops = { \ - .read = rwnx_dbgfs_##name##_read, \ - .open = simple_open, \ - .llseek = generic_file_llseek, \ -}; +#define DEBUGFS_READ_FILE_OPS(name) \ + DEBUGFS_READ_FUNC(name); \ + static const struct file_operations rwnx_dbgfs_##name##_ops = { \ + .read = rwnx_dbgfs_##name##_read, \ + .open = simple_open, \ + .llseek = generic_file_llseek, \ + }; -#define DEBUGFS_WRITE_FILE_OPS(name) \ - DEBUGFS_WRITE_FUNC(name); \ -static const struct file_operations rwnx_dbgfs_##name##_ops = { \ - .write = rwnx_dbgfs_##name##_write, \ - .open = simple_open, \ - .llseek = generic_file_llseek, \ -}; +#define DEBUGFS_WRITE_FILE_OPS(name) \ + DEBUGFS_WRITE_FUNC(name); \ + static const struct file_operations rwnx_dbgfs_##name##_ops = { \ + .write = rwnx_dbgfs_##name##_write, \ + .open = simple_open, \ + .llseek = generic_file_llseek, \ + }; -#define DEBUGFS_READ_WRITE_FILE_OPS(name) \ - DEBUGFS_READ_FUNC(name); \ - DEBUGFS_WRITE_FUNC(name); \ -static const struct file_operations rwnx_dbgfs_##name##_ops = { \ - .write = rwnx_dbgfs_##name##_write, \ - .read = rwnx_dbgfs_##name##_read, \ - .open = simple_open, \ - .llseek = generic_file_llseek, \ -}; - -#define DEBUGFS_READ_WRITE_OPEN_RELEASE_FILE_OPS(name) \ - DEBUGFS_READ_FUNC(name); \ - DEBUGFS_WRITE_FUNC(name); \ - DEBUGFS_OPEN_FUNC(name); \ - DEBUGFS_RELEASE_FUNC(name); \ -static const struct file_operations rwnx_dbgfs_##name##_ops = { \ - .write = rwnx_dbgfs_##name##_write, \ - .read = rwnx_dbgfs_##name##_read, \ - .open = rwnx_dbgfs_##name##_open, \ - .release = rwnx_dbgfs_##name##_release, \ - .llseek = generic_file_llseek, \ -}; +#define DEBUGFS_READ_WRITE_FILE_OPS(name) \ + DEBUGFS_READ_FUNC(name); \ + DEBUGFS_WRITE_FUNC(name); \ + static const struct file_operations rwnx_dbgfs_##name##_ops = { \ + .write = rwnx_dbgfs_##name##_write, \ + .read = rwnx_dbgfs_##name##_read, \ + .open = simple_open, \ + .llseek = generic_file_llseek, \ + }; +#define DEBUGFS_READ_WRITE_OPEN_RELEASE_FILE_OPS(name) \ + DEBUGFS_READ_FUNC(name); \ + DEBUGFS_WRITE_FUNC(name); \ + DEBUGFS_OPEN_FUNC(name); \ + DEBUGFS_RELEASE_FUNC(name); \ + static const struct file_operations rwnx_dbgfs_##name##_ops = { \ + .write = rwnx_dbgfs_##name##_write, \ + .read = rwnx_dbgfs_##name##_read, \ + .open = rwnx_dbgfs_##name##_open, \ + .release = rwnx_dbgfs_##name##_release, \ + .llseek = generic_file_llseek, \ + }; #ifdef CONFIG_RWNX_DEBUGFS @@ -185,18 +185,28 @@ int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name); void rwnx_dbgfs_unregister(struct rwnx_hw *rwnx_hw); #ifdef CONFIG_RWNX_FULLMAC void rwnx_dbgfs_register_rc_stat(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta); -void rwnx_dbgfs_unregister_rc_stat(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta); +void rwnx_dbgfs_unregister_rc_stat(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta); #endif #else -struct rwnx_debugfs { -}; -static inline int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name) { return 0; } -static inline void rwnx_dbgfs_unregister(struct rwnx_hw *rwnx_hw) {} +struct rwnx_debugfs {}; +static inline int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name) +{ + return 0; +} +static inline void rwnx_dbgfs_unregister(struct rwnx_hw *rwnx_hw) +{ +} #ifdef CONFIG_RWNX_FULLMAC -static inline void rwnx_dbgfs_register_rc_stat(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) {} -static inline void rwnx_dbgfs_unregister_rc_stat(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) {} +static inline void rwnx_dbgfs_register_rc_stat(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta) +{ +} +static inline void rwnx_dbgfs_unregister_rc_stat(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta) +{ +} #endif #endif /* CONFIG_RWNX_DEBUGFS */ - #endif /* _RWNX_DEBUGFS_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_defs.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_defs.h index 4e966dee2..0a302771e 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_defs.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_defs.h @@ -50,117 +50,120 @@ #include "aic_br_ext.h" #endif /* CONFIG_BR_SUPPORT */ -#define WPI_HDR_LEN 18 -#define WPI_PN_LEN 16 -#define WPI_PN_OFST 2 -#define WPI_MIC_LEN 16 -#define WPI_KEY_LEN 32 +#define WPI_HDR_LEN 18 +#define WPI_PN_LEN 16 +#define WPI_PN_OFST 2 +#define WPI_MIC_LEN 16 +#define WPI_KEY_LEN 32 #define WPI_SUBKEY_LEN 16 // WPI key is actually two 16bytes key -#define LEGACY_PS_ID 0 -#define UAPSD_ID 1 +#define LEGACY_PS_ID 0 +#define UAPSD_ID 1 -#define PS_SP_INTERRUPTED 255 +#define PS_SP_INTERRUPTED 255 #define MAC_ADDR_LEN 6 -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 5, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 5, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) enum nl80211_ac { - NL80211_AC_VO, - NL80211_AC_VI, - NL80211_AC_BE, - NL80211_AC_BK, - NL80211_NUM_ACS + NL80211_AC_VO, + NL80211_AC_VI, + NL80211_AC_BE, + NL80211_AC_BK, + NL80211_NUM_ACS }; #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) struct ieee80211_vht_operation { - u8 vht_op_info_chwidth; - u8 vht_op_info_chan_center_freq_seg1_idx; - u8 vht_op_info_chan_center_freq_seg2_idx; - __le16 vht_basic_mcs_set; + u8 vht_op_info_chwidth; + u8 vht_op_info_chan_center_freq_seg1_idx; + u8 vht_op_info_chan_center_freq_seg2_idx; + __le16 vht_basic_mcs_set; } __packed; #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) -#define IEEE80211_RADIOTAP_VHT 21 -#define IEEE80211_RADIOTAP_VHT_KNOWN_GI 0x0004 -#define IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH 0x0040 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) +#define IEEE80211_RADIOTAP_VHT 21 +#define IEEE80211_RADIOTAP_VHT_KNOWN_GI 0x0004 +#define IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH 0x0040 -#define IEEE80211_RADIOTAP_VHT_FLAG_STBC 0x01 -#define IEEE80211_RADIOTAP_VHT_FLAG_SGI 0x04 +#define IEEE80211_RADIOTAP_VHT_FLAG_STBC 0x01 +#define IEEE80211_RADIOTAP_VHT_FLAG_SGI 0x04 -#define NL80211_FEATURE_CELL_BASE_REG_HINTS 1 << 3 -#define NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL 1 << 4 -#define NL80211_FEATURE_SAE 1 << 5 -#define NL80211_FEATURE_LOW_PRIORITY_SCAN 1 << 6 -#define NL80211_FEATURE_SCAN_FLUSH 1 << 7 -#define NL80211_FEATURE_AP_SCAN 1 << 8 -#define NL80211_FEATURE_VIF_TXPOWER 1 << 9 -#define NL80211_FEATURE_NEED_OBSS_SCAN 1 << 10 -#define NL80211_FEATURE_P2P_GO_CTWIN 1 << 11 -#define NL80211_FEATURE_P2P_GO_OPPPS 1 << 12 +#define NL80211_FEATURE_CELL_BASE_REG_HINTS 1 << 3 +#define NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL 1 << 4 +#define NL80211_FEATURE_SAE 1 << 5 +#define NL80211_FEATURE_LOW_PRIORITY_SCAN 1 << 6 +#define NL80211_FEATURE_SCAN_FLUSH 1 << 7 +#define NL80211_FEATURE_AP_SCAN 1 << 8 +#define NL80211_FEATURE_VIF_TXPOWER 1 << 9 +#define NL80211_FEATURE_NEED_OBSS_SCAN 1 << 10 +#define NL80211_FEATURE_P2P_GO_CTWIN 1 << 11 +#define NL80211_FEATURE_P2P_GO_OPPPS 1 << 12 /* 802.11ac VHT Capabilities */ -#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 0x00000000 -#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 0x00000001 -#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 0x00000002 -#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ 0x00000004 -#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ 0x00000008 -#define IEEE80211_VHT_CAP_RXLDPC 0x00000010 -#define IEEE80211_VHT_CAP_SHORT_GI_80 0x00000020 -#define IEEE80211_VHT_CAP_SHORT_GI_160 0x00000040 -#define IEEE80211_VHT_CAP_TXSTBC 0x00000080 -#define IEEE80211_VHT_CAP_RXSTBC_1 0x00000100 -#define IEEE80211_VHT_CAP_RXSTBC_2 0x00000200 -#define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 -#define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 -#define IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE 0x00000800 -#define IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE 0x00001000 -#define IEEE80211_VHT_CAP_BEAMFORMER_ANTENNAS_MAX 0x00006000 -#define IEEE80211_VHT_CAP_SOUNDING_DIMENTION_MAX 0x00030000 -#define IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE 0x00080000 -#define IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE 0x00100000 -#define IEEE80211_VHT_CAP_VHT_TXOP_PS 0x00200000 -#define IEEE80211_VHT_CAP_HTC_VHT 0x00400000 -#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT 23 -#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK \ - (7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT) -#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB 0x08000000 -#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB 0x0c000000 -#define IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN 0x10000000 -#define IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN 0x20000000 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 0x00000000 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 0x00000001 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 0x00000002 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ 0x00000004 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ 0x00000008 +#define IEEE80211_VHT_CAP_RXLDPC 0x00000010 +#define IEEE80211_VHT_CAP_SHORT_GI_80 0x00000020 +#define IEEE80211_VHT_CAP_SHORT_GI_160 0x00000040 +#define IEEE80211_VHT_CAP_TXSTBC 0x00000080 +#define IEEE80211_VHT_CAP_RXSTBC_1 0x00000100 +#define IEEE80211_VHT_CAP_RXSTBC_2 0x00000200 +#define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 +#define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 +#define IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE 0x00000800 +#define IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE 0x00001000 +#define IEEE80211_VHT_CAP_BEAMFORMER_ANTENNAS_MAX 0x00006000 +#define IEEE80211_VHT_CAP_SOUNDING_DIMENTION_MAX 0x00030000 +#define IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE 0x00080000 +#define IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE 0x00100000 +#define IEEE80211_VHT_CAP_VHT_TXOP_PS 0x00200000 +#define IEEE80211_VHT_CAP_HTC_VHT 0x00400000 +#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT 23 +#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK \ + (7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT) +#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB 0x08000000 +#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB 0x0c000000 +#define IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN 0x10000000 +#define IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN 0x20000000 enum ieee80211_vht_mcs_support { - IEEE80211_VHT_MCS_SUPPORT_0_7 = 0, - IEEE80211_VHT_MCS_SUPPORT_0_8 = 1, - IEEE80211_VHT_MCS_SUPPORT_0_9 = 2, - IEEE80211_VHT_MCS_NOT_SUPPORTED = 3, + IEEE80211_VHT_MCS_SUPPORT_0_7 = 0, + IEEE80211_VHT_MCS_SUPPORT_0_8 = 1, + IEEE80211_VHT_MCS_SUPPORT_0_9 = 2, + IEEE80211_VHT_MCS_NOT_SUPPORTED = 3, }; enum nl80211_chan_width { - NL80211_CHAN_WIDTH_20_NOHT, - NL80211_CHAN_WIDTH_20, - NL80211_CHAN_WIDTH_40, - NL80211_CHAN_WIDTH_80, - NL80211_CHAN_WIDTH_80P80, - NL80211_CHAN_WIDTH_160, + NL80211_CHAN_WIDTH_20_NOHT, + NL80211_CHAN_WIDTH_20, + NL80211_CHAN_WIDTH_40, + NL80211_CHAN_WIDTH_80, + NL80211_CHAN_WIDTH_80P80, + NL80211_CHAN_WIDTH_160, }; struct cfg80211_chan_def { - struct ieee80211_channel *chan; - enum nl80211_chan_width width; - u32 center_freq1; - u32 center_freq2; + struct ieee80211_channel *chan; + enum nl80211_chan_width width; + u32 center_freq1; + u32 center_freq2; }; enum nl80211_mesh_power_mode { - NL80211_MESH_POWER_UNKNOWN, - NL80211_MESH_POWER_ACTIVE, - NL80211_MESH_POWER_LIGHT_SLEEP, - NL80211_MESH_POWER_DEEP_SLEEP, - __NL80211_MESH_POWER_AFTER_LAST, - NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1 + NL80211_MESH_POWER_UNKNOWN, + NL80211_MESH_POWER_ACTIVE, + NL80211_MESH_POWER_LIGHT_SLEEP, + NL80211_MESH_POWER_DEEP_SLEEP, + __NL80211_MESH_POWER_AFTER_LAST, + NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1 }; #endif @@ -202,17 +205,17 @@ struct rwnx_key { * Structure containing information about a Mesh Path */ struct rwnx_mesh_path { - struct list_head list; /* For rwnx_vif.mesh_paths */ - u8 path_idx; /* Path Index */ - struct mac_addr tgt_mac_addr; /* Target MAC Address */ - struct rwnx_sta *p_nhop_sta; /* Pointer to the Next Hop STA */ + struct list_head list; /* For rwnx_vif.mesh_paths */ + u8 path_idx; /* Path Index */ + struct mac_addr tgt_mac_addr; /* Target MAC Address */ + struct rwnx_sta *p_nhop_sta; /* Pointer to the Next Hop STA */ }; struct rwnx_mesh_proxy { - struct list_head list; /* For rwnx_vif.mesh_proxy */ - struct mac_addr ext_sta_addr; /* Address of the External STA */ - struct mac_addr proxy_addr; /* Proxy MAC Address */ - bool local; /* Indicate if interface is a proxy for the device */ + struct list_head list; /* For rwnx_vif.mesh_proxy */ + struct mac_addr ext_sta_addr; /* Address of the External STA */ + struct mac_addr proxy_addr; /* Proxy MAC Address */ + bool local; /* Indicate if interface is a proxy for the device */ }; /** @@ -247,16 +250,16 @@ struct apm_probe_sta { }; /// Possible States of the TDLS link. enum tdls_status_tag { - /// TDLS link is not active (no TDLS peer connected) - TDLS_LINK_IDLE, - /// TDLS Setup Request transmitted - TDLS_SETUP_REQ_TX, - /// TDLS Setup Response transmitted - TDLS_SETUP_RSP_TX, - /// TDLS link is active (TDLS peer connected) - TDLS_LINK_ACTIVE, - /// TDLS Max Number of states. - TDLS_STATE_MAX + /// TDLS link is not active (no TDLS peer connected) + TDLS_LINK_IDLE, + /// TDLS Setup Request transmitted + TDLS_SETUP_REQ_TX, + /// TDLS Setup Response transmitted + TDLS_SETUP_RSP_TX, + /// TDLS link is active (TDLS peer connected) + TDLS_LINK_ACTIVE, + /// TDLS Max Number of states. + TDLS_STATE_MAX }; /* @@ -265,19 +268,18 @@ enum tdls_status_tag { * */ struct rwnx_tdls { - bool active; /* Indicate if TDLS link is active */ - bool initiator; /* Indicate if TDLS peer is the TDLS initiator */ - bool chsw_en; /* Indicate if channel switch is enabled */ - u8 last_tid; /* TID of the latest MPDU transmitted over the + bool active; /* Indicate if TDLS link is active */ + bool initiator; /* Indicate if TDLS peer is the TDLS initiator */ + bool chsw_en; /* Indicate if channel switch is enabled */ + u8 last_tid; /* TID of the latest MPDU transmitted over the TDLS direct link to the TDLS STA */ - u16 last_sn; /* Sequence number of the latest MPDU transmitted + u16 last_sn; /* Sequence number of the latest MPDU transmitted over the TDLS direct link to the TDLS STA */ - bool ps_on; /* Indicate if the power save is enabled on the + bool ps_on; /* Indicate if the power save is enabled on the TDLS STA */ - bool chsw_allowed; /* Indicate if TDLS channel switch is allowed */ + bool chsw_allowed; /* Indicate if TDLS channel switch is allowed */ }; - /** * enum rwnx_ap_flags - AP flags * @@ -300,34 +302,37 @@ struct rwnx_vif { struct net_device *ndev; struct net_device_stats net_stats; struct rwnx_key key[6]; - unsigned long drv_flags; + unsigned long drv_flags; atomic_t drv_conn_state; - u8 drv_vif_index; /* Identifier of the VIF in driver */ - u8 vif_index; /* Identifier of the station in FW */ - u8 ch_index; /* Channel context identifier */ - bool up; /* Indicate if associated netdev is up + u8 drv_vif_index; /* Identifier of the VIF in driver */ + u8 vif_index; /* Identifier of the station in FW */ + u8 ch_index; /* Channel context identifier */ + bool up; /* Indicate if associated netdev is up (i.e. Interface is created at fw level) */ - bool use_4addr; /* Should we use 4addresses mode */ - bool is_resending; /* Indicate if a frame is being resent on this interface */ - bool user_mpm; /* In case of Mesh Point VIF, indicate if MPM is handled by userspace */ - bool roc_tdls; /* Indicate if the ROC has been called by a + bool use_4addr; /* Should we use 4addresses mode */ + bool is_resending; /* Indicate if a frame is being resent on this interface */ + bool user_mpm; /* In case of Mesh Point VIF, indicate if MPM is handled by userspace */ + bool roc_tdls; /* Indicate if the ROC has been called by a TDLS station */ - u8 tdls_status; /* Status of the TDLS link */ - bool tdls_chsw_prohibited; /* Indicate if TDLS Channel Switch is prohibited */ - bool wep_enabled; /* 1 if WEP is enabled */ - bool wep_auth_err; /* 1 if auth status code is not supported auth alg when WEP enabled */ - enum nl80211_auth_type last_auth_type; /* Authentication type (algorithm) sent in the last connection + u8 tdls_status; /* Status of the TDLS link */ + bool tdls_chsw_prohibited; /* Indicate if TDLS Channel Switch is prohibited */ + bool wep_enabled; /* 1 if WEP is enabled */ + bool wep_auth_err; /* 1 if auth status code is not supported auth alg when WEP enabled */ + enum nl80211_auth_type + last_auth_type; /* Authentication type (algorithm) sent in the last connection when WEP enabled */ union { struct { - struct rwnx_sta *ap; /* Pointer to the peer STA entry allocated for + struct rwnx_sta * + ap; /* Pointer to the peer STA entry allocated for the AP */ - struct rwnx_sta *tdls_sta; /* Pointer to the TDLS station */ - bool external_auth; /* Indicate if external authentication is in progress */ + struct rwnx_sta + *tdls_sta; /* Pointer to the TDLS station */ + bool external_auth; /* Indicate if external authentication is in progress */ u32 group_cipher_type; u32 paired_cipher_type; //connected network info start - char ssid[33];//ssid max is 32, but this has one spare for '\0' + char ssid[33]; //ssid max is 32, but this has one spare for '\0' int ssid_len; u8 bssid[ETH_ALEN]; u32 conn_owner_nlportid; @@ -335,25 +340,30 @@ struct rwnx_vif { //connected network info end } sta; struct { - u16 flags; /* see rwnx_ap_flags */ - struct list_head sta_list; /* List of STA connected to the AP */ - struct rwnx_bcn bcn; /* beacon */ - u8 bcmc_index; /* Index of the BCMC sta to use */ + u16 flags; /* see rwnx_ap_flags */ + struct list_head + sta_list; /* List of STA connected to the AP */ + struct rwnx_bcn bcn; /* beacon */ + u8 bcmc_index; /* Index of the BCMC sta to use */ #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) u8 aic_index; #endif struct rwnx_csa *csa; - struct list_head mpath_list; /* List of Mesh Paths used on this interface */ - struct list_head proxy_list; /* List of Proxies Information used on this interface */ - bool create_path; /* Indicate if we are waiting for a MESH_CREATE_PATH_CFM + struct list_head + mpath_list; /* List of Mesh Paths used on this interface */ + struct list_head + proxy_list; /* List of Proxies Information used on this interface */ + bool create_path; /* Indicate if we are waiting for a MESH_CREATE_PATH_CFM message */ - int generation; /* Increased each time the list of Mesh Paths is updated */ - enum nl80211_mesh_power_mode mesh_pm; /* mesh power save mode currently set in firmware */ - enum nl80211_mesh_power_mode next_mesh_pm; /* mesh power save mode for next peer */ + int generation; /* Increased each time the list of Mesh Paths is updated */ + enum nl80211_mesh_power_mode + mesh_pm; /* mesh power save mode currently set in firmware */ + enum nl80211_mesh_power_mode + next_mesh_pm; /* mesh power save mode for next peer */ } ap; struct { - struct rwnx_vif *master; /* pointer on master interface */ + struct rwnx_vif *master; /* pointer on master interface */ struct rwnx_sta *sta_4a; } ap_vlan; }; @@ -362,20 +372,20 @@ struct rwnx_vif { u8_l is_p2p_vif; struct apm_probe_sta sta_probe; - #ifdef CONFIG_BR_SUPPORT - spinlock_t br_ext_lock; +#ifdef CONFIG_BR_SUPPORT + spinlock_t br_ext_lock; /* unsigned int macclone_completed; */ - struct nat25_network_db_entry *nethash[NAT25_HASH_SIZE]; - int pppoe_connection_in_progress; - unsigned char pppoe_addr[MACADDRLEN]; - unsigned char scdb_mac[MACADDRLEN]; - unsigned char scdb_ip[4]; - struct nat25_network_db_entry *scdb_entry; - unsigned char br_mac[MACADDRLEN]; - unsigned char br_ip[4]; + struct nat25_network_db_entry *nethash[NAT25_HASH_SIZE]; + int pppoe_connection_in_progress; + unsigned char pppoe_addr[MACADDRLEN]; + unsigned char scdb_mac[MACADDRLEN]; + unsigned char scdb_ip[4]; + struct nat25_network_db_entry *scdb_entry; + unsigned char br_mac[MACADDRLEN]; + unsigned char br_ip[4]; - struct br_ext_info ethBrExtInfo; - #endif /* CONFIG_BR_SUPPORT */ + struct br_ext_info ethBrExtInfo; +#endif /* CONFIG_BR_SUPPORT */ }; #define RWNX_VIF_TYPE(rwnx_vif) (rwnx_vif->wdev.iftype) @@ -425,9 +435,18 @@ struct rwnx_sta_stats { #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) struct aic_sta { - u8 sta_idx; /* Identifier of the station */ - bool he; /* Flag indicating if the station supports HE */ - bool vht; /* Flag indicating if the station supports VHT */ + u8 sta_idx; /* Identifier of the station */ + bool he; /* Flag indicating if the station supports HE */ + bool vht; /* Flag indicating if the station supports VHT */ + + struct ieee80211_he_cap_elem he_cap_elem; + struct ieee80211_he_mcs_nss_supp he_mcs_nss_supp; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) + __le32 vht_cap_info; + struct ieee80211_vht_mcs_info supp_mcs; +#endif }; #endif @@ -436,45 +455,47 @@ struct aic_sta { */ struct rwnx_sta { struct list_head list; - u16 aid; /* association ID */ - u8 sta_idx; /* Identifier of the station */ - u8 vif_idx; /* Identifier of the VIF (fw id) the station + u16 aid; /* association ID */ + u8 sta_idx; /* Identifier of the station */ + u8 vif_idx; /* Identifier of the VIF (fw id) the station belongs to */ - u8 vlan_idx; /* Identifier of the VLAN VIF (fw id) the station + u8 vlan_idx; /* Identifier of the VLAN VIF (fw id) the station belongs to (= vif_idx if no vlan in used) */ enum nl80211_band band; /* Band */ enum nl80211_chan_width width; /* Channel width */ - u16 center_freq; /* Center frequency */ - u32 center_freq1; /* Center frequency 1 */ - u32 center_freq2; /* Center frequency 2 */ - u8 ch_idx; /* Identifier of the channel + u16 center_freq; /* Center frequency */ + u32 center_freq1; /* Center frequency 1 */ + u32 center_freq2; /* Center frequency 2 */ + u8 ch_idx; /* Identifier of the channel context the station belongs to */ - bool qos; /* Flag indicating if the station + bool qos; /* Flag indicating if the station supports QoS */ - u8 acm; /* Bitfield indicating which queues + u8 acm; /* Bitfield indicating which queues have AC mandatory */ - u16 uapsd_tids; /* Bitfield indicating which tids are subject to + u16 uapsd_tids; /* Bitfield indicating which tids are subject to UAPSD */ - u8 mac_addr[ETH_ALEN]; /* MAC address of the station */ + u8 mac_addr[ETH_ALEN]; /* MAC address of the station */ struct rwnx_key key; - bool valid; /* Flag indicating if the entry is valid */ - struct rwnx_sta_ps ps; /* Information when STA is in PS (AP only) */ + bool valid; /* Flag indicating if the entry is valid */ + struct rwnx_sta_ps ps; /* Information when STA is in PS (AP only) */ #ifdef CONFIG_RWNX_BFMER - struct rwnx_bfmer_report *bfm_report; /* Beamforming report to be used for + struct rwnx_bfmer_report *bfm_report; /* Beamforming report to be used for VHT TX Beamforming */ #ifdef CONFIG_RWNX_MUMIMO_TX - struct rwnx_sta_group_info group_info; /* MU grouping information for the STA */ + struct rwnx_sta_group_info + group_info; /* MU grouping information for the STA */ #endif /* CONFIG_RWNX_MUMIMO_TX */ #endif /* CONFIG_RWNX_BFMER */ - bool ht; /* Flag indicating if the station + bool ht; /* Flag indicating if the station supports HT */ - bool vht; /* Flag indicating if the station + bool vht; /* Flag indicating if the station supports VHT */ - u32 ac_param[AC_MAX]; /* EDCA parameters */ + u32 ac_param[AC_MAX]; /* EDCA parameters */ struct rwnx_tdls tdls; /* TDLS station information */ struct rwnx_sta_stats stats; - enum nl80211_mesh_power_mode mesh_pm; /* link-specific mesh power save mode */ + enum nl80211_mesh_power_mode + mesh_pm; /* link-specific mesh power save mode */ }; static inline const u8 *rwnx_sta_addr(struct rwnx_sta *rwnx_sta) @@ -540,7 +561,7 @@ struct rwnx_survey_info { /* Structure containing channel context information */ struct rwnx_chanctx { struct cfg80211_chan_def chan_def; /* channel description */ - u8 count; /* number of vif using this ctxt */ + u8 count; /* number of vif using this ctxt */ }; /** @@ -559,35 +580,40 @@ struct rwnx_phy_info { bool limit_bw; }; - struct defrag_ctrl_info { - struct list_head list; - u8 sta_idx; - u8 tid; - u16 sn; - u8 next_fn; - u16 frm_len; - struct sk_buff *skb; - struct timer_list defrag_timer; - struct rwnx_hw *rwnx_hw; + struct list_head list; + u8 sta_idx; + u8 tid; + u16 sn; + u8 next_fn; + u16 frm_len; + struct sk_buff *skb; + struct timer_list defrag_timer; + struct rwnx_hw *rwnx_hw; }; struct amsdu_subframe_hdr { - u8 da[6]; - u8 sa[6]; - u16 sublen; + u8 da[6]; + u8 sa[6]; + u16 sublen; }; - /* rwnx driver status */ +void rwnx_set_conn_state(atomic_t *drv_conn_state, int state); -enum rwnx_drv_connect_status { +enum rwnx_drv_connect_status { RWNX_DRV_STATUS_DISCONNECTED = 0, - RWNX_DRV_STATUS_DISCONNECTING, - RWNX_DRV_STATUS_CONNECTING, - RWNX_DRV_STATUS_CONNECTED, + RWNX_DRV_STATUS_DISCONNECTING, + RWNX_DRV_STATUS_CONNECTING, + RWNX_DRV_STATUS_CONNECTED, + RWNX_DRV_STATUS_ROAMING, }; +static const char *const s_conn_state[] = { + "RWNX_DRV_STATUS_DISCONNECTED", "RWNX_DRV_STATUS_DISCONNECTING", + "RWNX_DRV_STATUS_CONNECTING", "RWNX_DRV_STATUS_CONNECTED", + "RWNX_DRV_STATUS_ROAMING", +}; struct rwnx_hw { struct rwnx_mod_params *mod_params; @@ -600,7 +626,8 @@ struct rwnx_hw { #endif struct wiphy *wiphy; struct list_head vifs; - struct rwnx_vif *vif_table[NX_VIRT_DEV_MAX + NX_REMOTE_STA_MAX]; /* indexed with fw id */ + struct rwnx_vif *vif_table[NX_VIRT_DEV_MAX + + NX_REMOTE_STA_MAX]; /* indexed with fw id */ struct rwnx_sta sta_table[NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX]; #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) struct aic_sta aic_table[NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX]; @@ -608,7 +635,7 @@ struct rwnx_hw { struct rwnx_survey_info survey[SCAN_CHANNEL_MAX]; struct cfg80211_scan_request *scan_request; #ifdef CONFIG_SCHED_SCAN - struct cfg80211_sched_scan_request *sched_scan_req; + struct cfg80211_sched_scan_request *sched_scan_req; #endif struct rwnx_chanctx chanctx_table[NX_CHAN_CTXT_CNT]; u8 cur_chanctx; @@ -621,8 +648,9 @@ struct rwnx_hw { #endif /* RoC Management */ - struct rwnx_roc_elem *roc_elem; /* Information provided by cfg80211 in its remain on channel request */ - u32 roc_cookie_cnt; /* Counter used to identify RoC request sent by cfg80211 */ + struct rwnx_roc_elem * + roc_elem; /* Information provided by cfg80211 in its remain on channel request */ + u32 roc_cookie_cnt; /* Counter used to identify RoC request sent by cfg80211 */ struct rwnx_cmd_mgr *cmd_mgr; @@ -630,10 +658,11 @@ struct rwnx_hw { spinlock_t tx_lock; spinlock_t cb_lock; - struct mutex mutex; /* per-device perimeter lock */ + struct mutex mutex; /* per-device perimeter lock */ struct tasklet_struct task; - struct mm_version_cfm version_cfm; /* Lower layers versions - obtained via MM_VERSION_REQ */ + struct mm_version_cfm + version_cfm; /* Lower layers versions - obtained via MM_VERSION_REQ */ u32 tcp_pacing_shift; @@ -656,15 +685,15 @@ struct rwnx_hw { //struct rwnx_ipc_rxbuf_elems rxbuf_elems; struct rwnx_ipc_elem_var scan_ie; - struct kmem_cache *sw_txhdr_cache; + struct kmem_cache *sw_txhdr_cache; - struct rwnx_debugfs debugfs; - struct rwnx_stats stats; + struct rwnx_debugfs debugfs; + struct rwnx_stats stats; #ifdef CONFIG_PREALLOC_TXQ - struct rwnx_txq *txq; + struct rwnx_txq *txq; #else - struct rwnx_txq txq[NX_NB_TXQ]; + struct rwnx_txq txq[NX_NB_TXQ]; #endif struct rwnx_hwq hwq[NX_TXQ_CNT]; @@ -690,44 +719,48 @@ struct rwnx_hw { bool band_5g_support; u8_l vendor_info; bool fwlog_en; - + struct list_head defrag_list; spinlock_t defrag_lock; - struct work_struct apmStalossWork; - struct workqueue_struct *apmStaloss_wq; - u8 apm_vif_idx; - u8 sta_mac_addr[6]; + struct work_struct apmStalossWork; + struct workqueue_struct *apmStaloss_wq; + u8 apm_vif_idx; + u8 sta_mac_addr[6]; - struct wakeup_source *ws_rx; - struct wakeup_source *ws_irqrx; - struct wakeup_source *ws_tx; - struct wakeup_source *ws_pwrctrl; + struct wakeup_source *ws_rx; + struct wakeup_source *ws_irqrx; + struct wakeup_source *ws_tx; + struct wakeup_source *ws_pwrctrl; #ifdef CONFIG_SCHED_SCAN - bool is_sched_scan; -#endif//CONFIG_SCHED_SCAN + bool is_sched_scan; +#endif //CONFIG_SCHED_SCAN +#ifdef CONFIG_TEMP_CONTROL + unsigned long started_jiffies; + s8_l temp; +#endif }; u8 *rwnx_build_bcn(struct rwnx_bcn *bcn, struct cfg80211_beacon_data *new); void rwnx_chanctx_link(struct rwnx_vif *vif, u8 idx, - struct cfg80211_chan_def *chandef); + struct cfg80211_chan_def *chandef); void rwnx_chanctx_unlink(struct rwnx_vif *vif); -int rwnx_chanctx_valid(struct rwnx_hw *rwnx_hw, u8 idx); +int rwnx_chanctx_valid(struct rwnx_hw *rwnx_hw, u8 idx); extern u8 chip_id; static inline bool is_multicast_sta(int sta_idx) { - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)) - { - return (sta_idx >= NX_REMOTE_STA_MAX_FOR_OLD_IC); - }else{ - return (sta_idx >= NX_REMOTE_STA_MAX); - } - + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + return (sta_idx >= NX_REMOTE_STA_MAX_FOR_OLD_IC); + } else { + return (sta_idx >= NX_REMOTE_STA_MAX); + } } struct rwnx_sta *rwnx_get_sta(struct rwnx_hw *rwnx_hw, const u8 *mac_addr); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.c index 17d55da11..fc2cbd5cb 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.c @@ -14,42 +14,40 @@ #include "reg_access.h" /* Config FPGA is accessed via bar0 */ -#define CFPGA_DMA0_CTRL_REG 0x02C -#define CFPGA_DMA1_CTRL_REG 0x04C -#define CFPGA_DMA2_CTRL_REG 0x06C -#define CFPGA_UINTR_SRC_REG 0x0E8 -#define CFPGA_UINTR_MASK_REG 0x0EC -#define CFPGA_BAR4_HIADDR_REG 0x100 -#define CFPGA_BAR4_LOADDR_REG 0x104 -#define CFPGA_BAR4_LOADDR_MASK_REG 0x110 -#define CFPGA_BAR_TOUT 0x120 +#define CFPGA_DMA0_CTRL_REG 0x02C +#define CFPGA_DMA1_CTRL_REG 0x04C +#define CFPGA_DMA2_CTRL_REG 0x06C +#define CFPGA_UINTR_SRC_REG 0x0E8 +#define CFPGA_UINTR_MASK_REG 0x0EC +#define CFPGA_BAR4_HIADDR_REG 0x100 +#define CFPGA_BAR4_LOADDR_REG 0x104 +#define CFPGA_BAR4_LOADDR_MASK_REG 0x110 +#define CFPGA_BAR_TOUT 0x120 -#define CFPGA_DMA_CTRL_ENABLE 0x00001400 -#define CFPGA_DMA_CTRL_DISABLE 0x00001000 -#define CFPGA_DMA_CTRL_CLEAR 0x00001800 +#define CFPGA_DMA_CTRL_ENABLE 0x00001400 +#define CFPGA_DMA_CTRL_DISABLE 0x00001000 +#define CFPGA_DMA_CTRL_CLEAR 0x00001800 #define CFPGA_DMA_CTRL_REREAD_TIME_MASK (BIT(10) - 1) -#define CFPGA_BAR4_LOADDR_MASK_MAX 0xFF000000 +#define CFPGA_BAR4_LOADDR_MASK_MAX 0xFF000000 -#define CFPGA_PCIEX_IT 0x00000001 -#define CFPGA_ALL_ITS 0x0000000F +#define CFPGA_PCIEX_IT 0x00000001 +#define CFPGA_ALL_ITS 0x0000000F /* Programmable BAR4 Window start address */ -#define CPU_RAM_WINDOW_HIGH 0x00000000 -#define CPU_RAM_WINDOW_LOW 0x00000000 -#define AHB_BRIDGE_WINDOW_HIGH 0x00000000 -#define AHB_BRIDGE_WINDOW_LOW 0x60000000 +#define CPU_RAM_WINDOW_HIGH 0x00000000 +#define CPU_RAM_WINDOW_LOW 0x00000000 +#define AHB_BRIDGE_WINDOW_HIGH 0x00000000 +#define AHB_BRIDGE_WINDOW_LOW 0x60000000 struct rwnx_dini { u8 *pci_bar0_vaddr; u8 *pci_bar4_vaddr; }; -static const u32 mv_cfg_fpga_dma_ctrl_regs[] = { - CFPGA_DMA0_CTRL_REG, - CFPGA_DMA1_CTRL_REG, - CFPGA_DMA2_CTRL_REG -}; +static const u32 mv_cfg_fpga_dma_ctrl_regs[] = { CFPGA_DMA0_CTRL_REG, + CFPGA_DMA1_CTRL_REG, + CFPGA_DMA2_CTRL_REG }; /* This also clears running transactions */ static void dini_dma_on(struct rwnx_dini *rwnx_dini) @@ -62,7 +60,7 @@ static void dini_dma_on(struct rwnx_dini *rwnx_dini) reg = rwnx_dini->pci_bar0_vaddr + mv_cfg_fpga_dma_ctrl_regs[i]; reread_time = readl(reg) & CFPGA_DMA_CTRL_REREAD_TIME_MASK; - writel(CFPGA_DMA_CTRL_CLEAR | reread_time, reg); + writel(CFPGA_DMA_CTRL_CLEAR | reread_time, reg); writel(CFPGA_DMA_CTRL_ENABLE | reread_time, reg); } } @@ -79,11 +77,10 @@ static void dini_dma_off(struct rwnx_dini *rwnx_dini) reread_time = readl(reg) & CFPGA_DMA_CTRL_REREAD_TIME_MASK; writel(CFPGA_DMA_CTRL_DISABLE | reread_time, reg); - writel(CFPGA_DMA_CTRL_CLEAR | reread_time, reg); + writel(CFPGA_DMA_CTRL_CLEAR | reread_time, reg); } } - /* Configure address range for BAR4. * By default BAR4_LOADDR_MASK value is 0xFF000000, then there is no need to * change it because the addresses we need to access are covered by this mask @@ -93,10 +90,9 @@ static void dini_set_bar4_win(u32 low, u32 high, struct rwnx_dini *rwnx_dini) writel(low, rwnx_dini->pci_bar0_vaddr + CFPGA_BAR4_LOADDR_REG); writel(high, rwnx_dini->pci_bar0_vaddr + CFPGA_BAR4_HIADDR_REG); writel(CFPGA_BAR4_LOADDR_MASK_MAX, - rwnx_dini->pci_bar0_vaddr + CFPGA_BAR4_LOADDR_MASK_REG); + rwnx_dini->pci_bar0_vaddr + CFPGA_BAR4_LOADDR_MASK_REG); } - /** * Enable User Interrupts of CFPGA that trigger PCIe IRQs on PCIE_10 * and request the corresponding IRQ line @@ -110,7 +106,8 @@ int rwnx_cfpga_irq_enable(struct rwnx_hw *rwnx_hw) int ret; /* sched_setscheduler on ONESHOT threaded irq handler for BCNs ? */ - ret = request_irq(rwnx_hw->plat->pci_dev->irq, rwnx_irq_hdlr, 0, "rwnx", rwnx_hw); + ret = request_irq(rwnx_hw->plat->pci_dev->irq, rwnx_irq_hdlr, 0, "rwnx", + rwnx_hw); if (ret) return ret; @@ -178,7 +175,7 @@ static void rwnx_dini_platform_deinit(struct rwnx_plat *rwnx_plat) } static u8 *rwnx_dini_get_address(struct rwnx_plat *rwnx_plat, int addr_name, - unsigned int offset) + unsigned int offset) { struct rwnx_dini *rwnx_dini = (struct rwnx_dini *)rwnx_plat->priv; @@ -186,9 +183,11 @@ static u8 *rwnx_dini_get_address(struct rwnx_plat *rwnx_plat, int addr_name, return NULL; if (addr_name == RWNX_ADDR_CPU) - dini_set_bar4_win(CPU_RAM_WINDOW_LOW, CPU_RAM_WINDOW_HIGH, rwnx_dini); + dini_set_bar4_win(CPU_RAM_WINDOW_LOW, CPU_RAM_WINDOW_HIGH, + rwnx_dini); else - dini_set_bar4_win(AHB_BRIDGE_WINDOW_LOW, AHB_BRIDGE_WINDOW_HIGH, rwnx_dini); + dini_set_bar4_win(AHB_BRIDGE_WINDOW_LOW, AHB_BRIDGE_WINDOW_HIGH, + rwnx_dini); return rwnx_dini->pci_bar4_vaddr + offset; } @@ -207,7 +206,8 @@ static const u32 rwnx_dini_config_reg[] = { RF_v6_PHYDIAG_CONF1_ADDR, }; -static int rwnx_dini_get_config_reg(struct rwnx_plat *rwnx_plat, const u32 **list) +static int rwnx_dini_get_config_reg(struct rwnx_plat *rwnx_plat, + const u32 **list) { if (!list) return 0; @@ -226,14 +226,16 @@ static int rwnx_dini_get_config_reg(struct rwnx_plat *rwnx_plat, const u32 **lis * * Allocate and initialize a rwnx_plat structure for the dini platform. */ -int rwnx_dini_platform_init(struct pci_dev *pci_dev, struct rwnx_plat **rwnx_plat) +int rwnx_dini_platform_init(struct pci_dev *pci_dev, + struct rwnx_plat **rwnx_plat) { struct rwnx_dini *rwnx_dini; u16 pci_cmd; int ret = 0; - *rwnx_plat = kzalloc(sizeof(struct rwnx_plat) + sizeof(struct rwnx_dini), - GFP_KERNEL); + *rwnx_plat = + kzalloc(sizeof(struct rwnx_plat) + sizeof(struct rwnx_dini), + GFP_KERNEL); if (!*rwnx_plat) return -ENOMEM; @@ -289,7 +291,7 @@ out_bar4: iounmap(rwnx_dini->pci_bar0_vaddr); out_bar0: pci_release_regions(pci_dev); -//out_request: + //out_request: pci_disable_device(pci_dev); out_enable: kfree(*rwnx_plat); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.h index d9f57c10e..fe2afd019 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_dini.h @@ -15,6 +15,6 @@ #include "rwnx_platform.h" int rwnx_dini_platform_init(struct pci_dev *pci_dev, - struct rwnx_plat **rwnx_plat); + struct rwnx_plat **rwnx_plat); #endif /* _RWNX_DINI_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_events.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_events.h index 3bd59807f..aed044574 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_events.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_events.h @@ -31,23 +31,24 @@ /* P2P Public Action Frames Definitions (see WiFi P2P Technical Specification, section 4.2.8) */ /* IEEE 802.11 Public Action Usage Category - Define P2P public action frames */ -#define MGMT_ACTION_PUBLIC_CAT (0x04) +#define MGMT_ACTION_PUBLIC_CAT (0x04) /* Offset of OUI Subtype field in P2P Action Frame format */ -#define MGMT_ACTION_OUI_SUBTYPE_OFFSET (6) +#define MGMT_ACTION_OUI_SUBTYPE_OFFSET (6) /* P2P Public Action Frame Types */ enum p2p_action_type { - P2P_ACTION_GO_NEG_REQ = 0, /* GO Negociation Request */ - P2P_ACTION_GO_NEG_RSP, /* GO Negociation Response */ - P2P_ACTION_GO_NEG_CFM, /* GO Negociation Confirmation */ - P2P_ACTION_INVIT_REQ, /* P2P Invitation Request */ - P2P_ACTION_INVIT_RSP, /* P2P Invitation Response */ - P2P_ACTION_DEV_DISC_REQ, /* Device Discoverability Request */ - P2P_ACTION_DEV_DISC_RSP, /* Device Discoverability Response */ - P2P_ACTION_PROV_DISC_REQ, /* Provision Discovery Request */ - P2P_ACTION_PROV_DISC_RSP, /* Provision Discovery Response */ + P2P_ACTION_GO_NEG_REQ = 0, /* GO Negociation Request */ + P2P_ACTION_GO_NEG_RSP, /* GO Negociation Response */ + P2P_ACTION_GO_NEG_CFM, /* GO Negociation Confirmation */ + P2P_ACTION_INVIT_REQ, /* P2P Invitation Request */ + P2P_ACTION_INVIT_RSP, /* P2P Invitation Response */ + P2P_ACTION_DEV_DISC_REQ, /* Device Discoverability Request */ + P2P_ACTION_DEV_DISC_RSP, /* Device Discoverability Response */ + P2P_ACTION_PROV_DISC_REQ, /* Provision Discovery Request */ + P2P_ACTION_PROV_DISC_RSP, /* Provision Discovery Response */ }; -const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, u8 cat, u8 type, u8 p2p) +const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, + u8 cat, u8 type, u8 p2p) { const char *ret = trace_seq_buffer_ptr(p); @@ -93,28 +94,35 @@ const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, u8 ca trace_seq_printf(p, ": GO Negociation Request"); break; case (P2P_ACTION_GO_NEG_RSP): - trace_seq_printf(p, ": GO Negociation Response"); + trace_seq_printf(p, + ": GO Negociation Response"); break; case (P2P_ACTION_GO_NEG_CFM): - trace_seq_printf(p, ": GO Negociation Confirmation"); + trace_seq_printf( + p, ": GO Negociation Confirmation"); break; case (P2P_ACTION_INVIT_REQ): trace_seq_printf(p, ": P2P Invitation Request"); break; case (P2P_ACTION_INVIT_RSP): - trace_seq_printf(p, ": P2P Invitation Response"); + trace_seq_printf(p, + ": P2P Invitation Response"); break; case (P2P_ACTION_DEV_DISC_REQ): - trace_seq_printf(p, ": Device Discoverability Request"); + trace_seq_printf( + p, ": Device Discoverability Request"); break; case (P2P_ACTION_DEV_DISC_RSP): - trace_seq_printf(p, ": Device Discoverability Response"); + trace_seq_printf( + p, ": Device Discoverability Response"); break; case (P2P_ACTION_PROV_DISC_REQ): - trace_seq_printf(p, ": Provision Discovery Request"); + trace_seq_printf( + p, ": Provision Discovery Request"); break; case (P2P_ACTION_PROV_DISC_RSP): - trace_seq_printf(p, ": Provision Discovery Response"); + trace_seq_printf( + p, ": Provision Discovery Response"); break; default: trace_seq_printf(p, "Unknown p2p %d", p2p); @@ -126,7 +134,8 @@ const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, u8 ca trace_seq_printf(p, ":Spectrum %d", type); break; case 1: - trace_seq_printf(p, ":QOS %d", type); break; + trace_seq_printf(p, ":QOS %d", type); + break; case 2: trace_seq_printf(p, ":DLS %d", type); break; @@ -149,13 +158,15 @@ const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, u8 ca trace_seq_printf(p, ":SA Query %d", type); break; case 9: - trace_seq_printf(p, ":Protected Public %d", type); + trace_seq_printf(p, ":Protected Public %d", + type); break; case 10: trace_seq_printf(p, ":WNM %d", type); break; case 11: - trace_seq_printf(p, ":Unprotected WNM %d", type); + trace_seq_printf(p, ":Unprotected WNM %d", + type); break; case 12: trace_seq_printf(p, ":TDLS %d", type); @@ -176,13 +187,15 @@ const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, u8 ca trace_seq_printf(p, ":Vendor"); break; default: - trace_seq_printf(p, ":Unknown category %d", cat); + trace_seq_printf(p, ":Unknown category %d", + cat); break; } } break; default: - trace_seq_printf(p, "Unknown subtype %d", frame_control & IEEE80211_FCTL_STYPE); + trace_seq_printf(p, "Unknown subtype %d", + frame_control & IEEE80211_FCTL_STYPE); break; } @@ -193,119 +206,73 @@ const char *ftrace_print_mgmt_info(struct trace_seq *p, u16 frame_control, u8 ca #endif /* defined(CONFIG_TRACEPOINTS) && defined(CREATE_TRACE_POINTS) */ #undef __print_mgmt_info -#define __print_mgmt_info(frame_control, cat, type, p2p) ftrace_print_mgmt_info(p, frame_control, cat, type, p2p) +#define __print_mgmt_info(frame_control, cat, type, p2p) \ + ftrace_print_mgmt_info(p, frame_control, cat, type, p2p) -TRACE_EVENT( - roc, - TP_PROTO(u8 vif_idx, u16 freq, unsigned int duration), - TP_ARGS(vif_idx, freq, duration), - TP_STRUCT__entry( - __field(u8, vif_idx) - __field(u16, freq) - __field(unsigned int, duration) - ), - TP_fast_assign( - __entry->vif_idx = vif_idx; - __entry->freq = freq; - __entry->duration = duration; - ), - TP_printk("f=%d vif=%d dur=%d", - __entry->freq, __entry->vif_idx, __entry->duration) -); +TRACE_EVENT(roc, TP_PROTO(u8 vif_idx, u16 freq, unsigned int duration), + TP_ARGS(vif_idx, freq, duration), + TP_STRUCT__entry(__field(u8, vif_idx) __field(u16, freq) + __field(unsigned int, duration)), + TP_fast_assign(__entry->vif_idx = vif_idx; __entry->freq = freq; + __entry->duration = duration;), + TP_printk("f=%d vif=%d dur=%d", __entry->freq, __entry->vif_idx, + __entry->duration)); -TRACE_EVENT( - cancel_roc, - TP_PROTO(u8 vif_idx), - TP_ARGS(vif_idx), - TP_STRUCT__entry( - __field(u8, vif_idx) - ), - TP_fast_assign( - __entry->vif_idx = vif_idx; - ), - TP_printk("vif=%d", __entry->vif_idx) -); +TRACE_EVENT(cancel_roc, TP_PROTO(u8 vif_idx), TP_ARGS(vif_idx), + TP_STRUCT__entry(__field(u8, vif_idx)), + TP_fast_assign(__entry->vif_idx = vif_idx;), + TP_printk("vif=%d", __entry->vif_idx)); -TRACE_EVENT( - roc_exp, - TP_PROTO(u8 vif_idx), - TP_ARGS(vif_idx), - TP_STRUCT__entry( - __field(u8, vif_idx) - ), - TP_fast_assign( - __entry->vif_idx = vif_idx; - ), - TP_printk("vif=%d", __entry->vif_idx) -); +TRACE_EVENT(roc_exp, TP_PROTO(u8 vif_idx), TP_ARGS(vif_idx), + TP_STRUCT__entry(__field(u8, vif_idx)), + TP_fast_assign(__entry->vif_idx = vif_idx;), + TP_printk("vif=%d", __entry->vif_idx)); -TRACE_EVENT( - switch_roc, - TP_PROTO(u8 vif_idx), - TP_ARGS(vif_idx), - TP_STRUCT__entry( - __field(u8, vif_idx) - ), - TP_fast_assign( - __entry->vif_idx = vif_idx; - ), - TP_printk("vif=%d", __entry->vif_idx) -); +TRACE_EVENT(switch_roc, TP_PROTO(u8 vif_idx), TP_ARGS(vif_idx), + TP_STRUCT__entry(__field(u8, vif_idx)), + TP_fast_assign(__entry->vif_idx = vif_idx;), + TP_printk("vif=%d", __entry->vif_idx)); DECLARE_EVENT_CLASS( mgmt_template, TP_PROTO(u16 freq, u8 vif_idx, u8 sta_idx, struct ieee80211_mgmt *mgmt), TP_ARGS(freq, vif_idx, sta_idx, mgmt), - TP_STRUCT__entry( - __field(u16, freq) - __field(u8, vif_idx) - __field(u8, sta_idx) - __field(u16, frame_control) - __field(u8, action_cat) - __field(u8, action_type) - __field(u8, action_p2p) - ), + TP_STRUCT__entry(__field(u16, freq) __field(u8, vif_idx) __field( + u8, sta_idx) __field(u16, frame_control) __field(u8, action_cat) + __field(u8, action_type) + __field(u8, action_p2p)), TP_fast_assign( - __entry->freq = freq; - __entry->vif_idx = vif_idx; + __entry->freq = freq; __entry->vif_idx = vif_idx; __entry->sta_idx = sta_idx; __entry->frame_control = mgmt->frame_control; __entry->action_cat = mgmt->u.action.category; __entry->action_type = mgmt->u.action.u.wme_action.action_code; - __entry->action_p2p = *((u8 *)&mgmt->u.action.category - + MGMT_ACTION_OUI_SUBTYPE_OFFSET); - ), - TP_printk("f=%d vif=%d sta=%d -> %s", - __entry->freq, __entry->vif_idx, __entry->sta_idx, - __print_mgmt_info(__entry->frame_control, __entry->action_cat, - __entry->action_type, __entry->action_p2p)) -); + __entry->action_p2p = *((u8 *)&mgmt->u.action.category + + MGMT_ACTION_OUI_SUBTYPE_OFFSET);), + TP_printk("f=%d vif=%d sta=%d -> %s", __entry->freq, __entry->vif_idx, + __entry->sta_idx, + __print_mgmt_info(__entry->frame_control, __entry->action_cat, + __entry->action_type, + __entry->action_p2p))); DEFINE_EVENT(mgmt_template, mgmt_tx, - TP_PROTO(u16 freq, u8 vif_idx, u8 sta_idx, struct ieee80211_mgmt *mgmt), - TP_ARGS(freq, vif_idx, sta_idx, mgmt)); + TP_PROTO(u16 freq, u8 vif_idx, u8 sta_idx, + struct ieee80211_mgmt *mgmt), + TP_ARGS(freq, vif_idx, sta_idx, mgmt)); DEFINE_EVENT(mgmt_template, mgmt_rx, - TP_PROTO(u16 freq, u8 vif_idx, u8 sta_idx, struct ieee80211_mgmt *mgmt), - TP_ARGS(freq, vif_idx, sta_idx, mgmt)); + TP_PROTO(u16 freq, u8 vif_idx, u8 sta_idx, + struct ieee80211_mgmt *mgmt), + TP_ARGS(freq, vif_idx, sta_idx, mgmt)); -TRACE_EVENT( - mgmt_cfm, - TP_PROTO(u8 vif_idx, u8 sta_idx, bool acked), - TP_ARGS(vif_idx, sta_idx, acked), - TP_STRUCT__entry( - __field(u8, vif_idx) - __field(u8, sta_idx) - __field(bool, acked) - ), - TP_fast_assign( - __entry->vif_idx = vif_idx; - __entry->sta_idx = sta_idx; - __entry->acked = acked; - ), - TP_printk("vif=%d sta=%d ack=%d", - __entry->vif_idx, __entry->sta_idx, __entry->acked) -); +TRACE_EVENT(mgmt_cfm, TP_PROTO(u8 vif_idx, u8 sta_idx, bool acked), + TP_ARGS(vif_idx, sta_idx, acked), + TP_STRUCT__entry(__field(u8, vif_idx) __field(u8, sta_idx) + __field(bool, acked)), + TP_fast_assign(__entry->vif_idx = vif_idx; + __entry->sta_idx = sta_idx; __entry->acked = acked;), + TP_printk("vif=%d sta=%d ack=%d", __entry->vif_idx, + __entry->sta_idx, __entry->acked)); #endif /* CONFIG_RWNX_FULLMAC */ /***************************************************************************** @@ -321,32 +288,29 @@ TRACE_EVENT( #include #endif -const char * -ftrace_print_txq(struct trace_seq *p, int txq_idx) +const char *ftrace_print_txq(struct trace_seq *p, int txq_idx) { const char *ret = trace_seq_buffer_ptr(p); if (txq_idx == TXQ_INACTIVE) { trace_seq_printf(p, "[INACTIVE]"); } else if (txq_idx < NX_FIRST_VIF_TXQ_IDX) { - trace_seq_printf(p, "[STA %d/%d]", - txq_idx / NX_NB_TXQ_PER_STA, - txq_idx % NX_NB_TXQ_PER_STA); + trace_seq_printf(p, "[STA %d/%d]", txq_idx / NX_NB_TXQ_PER_STA, + txq_idx % NX_NB_TXQ_PER_STA); #ifdef CONFIG_RWNX_FULLMAC } else if (txq_idx < NX_FIRST_UNK_TXQ_IDX) { trace_seq_printf(p, "[BC/MC %d]", - txq_idx - NX_FIRST_BCMC_TXQ_IDX); + txq_idx - NX_FIRST_BCMC_TXQ_IDX); } else if (txq_idx < NX_OFF_CHAN_TXQ_IDX) { trace_seq_printf(p, "[UNKNOWN %d]", - txq_idx - NX_FIRST_UNK_TXQ_IDX); + txq_idx - NX_FIRST_UNK_TXQ_IDX); } else if (txq_idx == NX_OFF_CHAN_TXQ_IDX) { trace_seq_printf(p, "[OFFCHAN]"); #else } else if (txq_idx < NX_NB_TXQ) { txq_idx -= NX_FIRST_VIF_TXQ_IDX; - trace_seq_printf(p, "[VIF %d/%d]", - txq_idx / NX_NB_TXQ_PER_VIF, - txq_idx % NX_NB_TXQ_PER_VIF); + trace_seq_printf(p, "[VIF %d/%d]", txq_idx / NX_NB_TXQ_PER_VIF, + txq_idx % NX_NB_TXQ_PER_VIF); #endif } else { trace_seq_printf(p, "[ERROR %d]", txq_idx); @@ -357,8 +321,7 @@ ftrace_print_txq(struct trace_seq *p, int txq_idx) return ret; } -const char * -ftrace_print_sta(struct trace_seq *p, int sta_idx) +const char *ftrace_print_sta(struct trace_seq *p, int sta_idx) { const char *ret = trace_seq_buffer_ptr(p); @@ -373,26 +336,24 @@ ftrace_print_sta(struct trace_seq *p, int sta_idx) return ret; } -const char * -ftrace_print_hwq(struct trace_seq *p, int hwq_idx) +const char *ftrace_print_hwq(struct trace_seq *p, int hwq_idx) { - static const struct trace_print_flags symbols[] = { - {RWNX_HWQ_BK, "BK"}, - {RWNX_HWQ_BE, "BE"}, - {RWNX_HWQ_VI, "VI"}, - {RWNX_HWQ_VO, "VO"}, + { RWNX_HWQ_BK, "BK" }, + { RWNX_HWQ_BE, "BE" }, + { RWNX_HWQ_VI, "VI" }, + { RWNX_HWQ_VO, "VO" }, #ifdef CONFIG_RWNX_FULLMAC - {RWNX_HWQ_BCMC, "BCMC"}, + { RWNX_HWQ_BCMC, "BCMC" }, #else - {RWNX_HWQ_BCN, "BCN"}, + { RWNX_HWQ_BCN, "BCN" }, #endif - { -1, NULL } }; + { -1, NULL } + }; return trace_print_symbols_seq(p, hwq_idx, symbols); } -const char * -ftrace_print_hwq_cred(struct trace_seq *p, u8 *cred) +const char *ftrace_print_hwq_cred(struct trace_seq *p, u8 *cred) { const char *ret = trace_seq_buffer_ptr(p); @@ -410,20 +371,19 @@ ftrace_print_hwq_cred(struct trace_seq *p, u8 *cred) return ret; } -const char * -ftrace_print_mu_info(struct trace_seq *p, u8 mu_info) +const char *ftrace_print_mu_info(struct trace_seq *p, u8 mu_info) { const char *ret = trace_seq_buffer_ptr(p); if (mu_info) - trace_seq_printf(p, "MU: %d-%d", (mu_info & 0x3f), (mu_info >> 6)); + trace_seq_printf(p, "MU: %d-%d", (mu_info & 0x3f), + (mu_info >> 6)); trace_seq_putc(p, 0); return ret; } -const char * -ftrace_print_mu_group(struct trace_seq *p, int nb_user, u8 *users) +const char *ftrace_print_mu_group(struct trace_seq *p, int nb_user, u8 *users) { const char *ret = trace_seq_buffer_ptr(p); int i; @@ -432,7 +392,7 @@ ftrace_print_mu_group(struct trace_seq *p, int nb_user, u8 *users) trace_seq_printf(p, "(%d", users[0]); else trace_seq_printf(p, "(-"); - for (i = 1; i < CONFIG_USER_MAX ; i++) { + for (i = 1; i < CONFIG_USER_MAX; i++) { if (users[i] != 0xff) trace_seq_printf(p, ",%d", users[i]); else @@ -444,8 +404,7 @@ ftrace_print_mu_group(struct trace_seq *p, int nb_user, u8 *users) return ret; } -const char * -ftrace_print_amsdu(struct trace_seq *p, u16 nb_pkt) +const char *ftrace_print_amsdu(struct trace_seq *p, u16 nb_pkt) { const char *ret = trace_seq_buffer_ptr(p); @@ -480,658 +439,467 @@ ftrace_print_amsdu(struct trace_seq *p, u16 nb_pkt) #ifdef CONFIG_RWNX_FULLMAC -TRACE_EVENT( - txq_select, - TP_PROTO(int txq_idx, u16 pkt_ready_up, struct sk_buff *skb), - TP_ARGS(txq_idx, pkt_ready_up, skb), - TP_STRUCT__entry( - __field(u16, txq_idx) - __field(u16, pkt_ready) - __field(struct sk_buff *, skb) - ), - TP_fast_assign( - __entry->txq_idx = txq_idx; - __entry->pkt_ready = pkt_ready_up; - __entry->skb = skb; - ), - TP_printk("%s pkt_ready_up=%d skb=%p", __print_txq(__entry->txq_idx), - __entry->pkt_ready, __entry->skb) -); +TRACE_EVENT(txq_select, + TP_PROTO(int txq_idx, u16 pkt_ready_up, struct sk_buff *skb), + TP_ARGS(txq_idx, pkt_ready_up, skb), + TP_STRUCT__entry(__field(u16, txq_idx) __field(u16, pkt_ready) + __field(struct sk_buff *, skb)), + TP_fast_assign(__entry->txq_idx = txq_idx; + __entry->pkt_ready = pkt_ready_up; + __entry->skb = skb;), + TP_printk("%s pkt_ready_up=%d skb=%p", + __print_txq(__entry->txq_idx), __entry->pkt_ready, + __entry->skb)); #endif /* CONFIG_RWNX_FULLMAC */ -DECLARE_EVENT_CLASS( - hwq_template, - TP_PROTO(u8 hwq_idx), - TP_ARGS(hwq_idx), - TP_STRUCT__entry( - __field(u8, hwq_idx) - ), - TP_fast_assign( - __entry->hwq_idx = hwq_idx; - ), - TP_printk("%s", __print_hwq(__entry->hwq_idx)) -); +DECLARE_EVENT_CLASS(hwq_template, TP_PROTO(u8 hwq_idx), TP_ARGS(hwq_idx), + TP_STRUCT__entry(__field(u8, hwq_idx)), + TP_fast_assign(__entry->hwq_idx = hwq_idx;), + TP_printk("%s", __print_hwq(__entry->hwq_idx))); -DEFINE_EVENT(hwq_template, hwq_flowctrl_stop, - TP_PROTO(u8 hwq_idx), - TP_ARGS(hwq_idx)); +DEFINE_EVENT(hwq_template, hwq_flowctrl_stop, TP_PROTO(u8 hwq_idx), + TP_ARGS(hwq_idx)); -DEFINE_EVENT(hwq_template, hwq_flowctrl_start, - TP_PROTO(u8 hwq_idx), - TP_ARGS(hwq_idx)); +DEFINE_EVENT(hwq_template, hwq_flowctrl_start, TP_PROTO(u8 hwq_idx), + TP_ARGS(hwq_idx)); +DECLARE_EVENT_CLASS(txq_template, TP_PROTO(struct rwnx_txq *txq), TP_ARGS(txq), + TP_STRUCT__entry(__field(u16, txq_idx)), + TP_fast_assign(__entry->txq_idx = txq->idx;), + TP_printk("%s", __print_txq(__entry->txq_idx))); -DECLARE_EVENT_CLASS( - txq_template, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq), - TP_STRUCT__entry( - __field(u16, txq_idx) - ), - TP_fast_assign( - __entry->txq_idx = txq->idx; - ), - TP_printk("%s", __print_txq(__entry->txq_idx)) -); +DEFINE_EVENT(txq_template, txq_add_to_hw, TP_PROTO(struct rwnx_txq *txq), + TP_ARGS(txq)); -DEFINE_EVENT(txq_template, txq_add_to_hw, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq)); - -DEFINE_EVENT(txq_template, txq_del_from_hw, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq)); +DEFINE_EVENT(txq_template, txq_del_from_hw, TP_PROTO(struct rwnx_txq *txq), + TP_ARGS(txq)); #ifdef CONFIG_RWNX_FULLMAC -DEFINE_EVENT(txq_template, txq_flowctrl_stop, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq)); +DEFINE_EVENT(txq_template, txq_flowctrl_stop, TP_PROTO(struct rwnx_txq *txq), + TP_ARGS(txq)); -DEFINE_EVENT(txq_template, txq_flowctrl_restart, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq)); +DEFINE_EVENT(txq_template, txq_flowctrl_restart, TP_PROTO(struct rwnx_txq *txq), + TP_ARGS(txq)); -#endif /* CONFIG_RWNX_FULLMAC */ +#endif /* CONFIG_RWNX_FULLMAC */ -TRACE_EVENT( - process_txq, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq), - TP_STRUCT__entry( - __field(u16, txq_idx) - __field(u16, len) - __field(u16, len_retry) - __field(s8, credit) - #ifdef CONFIG_RWNX_FULLMAC - __field(u16, limit) - #endif /* CONFIG_RWNX_FULLMAC*/ - ), - TP_fast_assign( - __entry->txq_idx = txq->idx; - __entry->len = skb_queue_len(&txq->sk_list); - #ifdef CONFIG_MAC80211_TXQ - __entry->len += txq->nb_ready_mac80211; - #endif - __entry->len_retry = txq->nb_retry; - __entry->credit = txq->credits; - #ifdef CONFIG_RWNX_FULLMAC - __entry->limit = txq->push_limit; - #endif /* CONFIG_RWNX_FULLMAC*/ - ), +TRACE_EVENT(process_txq, TP_PROTO(struct rwnx_txq *txq), TP_ARGS(txq), + TP_STRUCT__entry(__field(u16, txq_idx) __field(u16, len) + __field(u16, len_retry) __field(s8, credit) +#ifdef CONFIG_RWNX_FULLMAC + __field(u16, limit) +#endif /* CONFIG_RWNX_FULLMAC*/ + ), + TP_fast_assign(__entry->txq_idx = txq->idx; + __entry->len = skb_queue_len(&txq->sk_list); +#ifdef CONFIG_MAC80211_TXQ + __entry->len += txq->nb_ready_mac80211; +#endif + __entry->len_retry = txq->nb_retry; + __entry->credit = txq->credits; +#ifdef CONFIG_RWNX_FULLMAC + __entry->limit = txq->push_limit; +#endif /* CONFIG_RWNX_FULLMAC*/ + ), - #ifdef CONFIG_RWNX_FULLMAC - TP_printk("%s txq_credits=%d, len=%d, retry_len=%d, push_limit=%d", - __print_txq(__entry->txq_idx), __entry->credit, - __entry->len, __entry->len_retry, __entry->limit) - #else - TP_printk("%s txq_credits=%d, len=%d, retry_len=%d", - __print_txq(__entry->txq_idx), __entry->credit, - __entry->len, __entry->len_retry) - #endif /* CONFIG_RWNX_FULLMAC*/ +#ifdef CONFIG_RWNX_FULLMAC + TP_printk("%s txq_credits=%d, len=%d, retry_len=%d, push_limit=%d", + __print_txq(__entry->txq_idx), __entry->credit, + __entry->len, __entry->len_retry, __entry->limit) +#else + TP_printk("%s txq_credits=%d, len=%d, retry_len=%d", + __print_txq(__entry->txq_idx), __entry->credit, + __entry->len, __entry->len_retry) +#endif /* CONFIG_RWNX_FULLMAC*/ ); DECLARE_EVENT_CLASS( - txq_reason_template, - TP_PROTO(struct rwnx_txq *txq, u16 reason), + txq_reason_template, TP_PROTO(struct rwnx_txq *txq, u16 reason), TP_ARGS(txq, reason), - TP_STRUCT__entry( - __field(u16, txq_idx) - __field(u16, reason) - __field(u16, status) - ), - TP_fast_assign( - __entry->txq_idx = txq->idx; - __entry->reason = reason; - __entry->status = txq->status; - ), - TP_printk("%s reason=%s status=%s", - __print_txq(__entry->txq_idx), - __print_symbolic(__entry->reason, - {RWNX_TXQ_STOP_FULL, "FULL"}, - {RWNX_TXQ_STOP_CSA, "CSA"}, - {RWNX_TXQ_STOP_STA_PS, "PS"}, - {RWNX_TXQ_STOP_VIF_PS, "VPS"}, - {RWNX_TXQ_STOP_CHAN, "CHAN"}, - {RWNX_TXQ_STOP_MU_POS, "MU"}), - __print_flags(__entry->status, "|", - {RWNX_TXQ_IN_HWQ_LIST, "IN LIST"}, - {RWNX_TXQ_STOP_FULL, "FULL"}, - {RWNX_TXQ_STOP_CSA, "CSA"}, - {RWNX_TXQ_STOP_STA_PS, "PS"}, - {RWNX_TXQ_STOP_VIF_PS, "VPS"}, - {RWNX_TXQ_STOP_CHAN, "CHAN"}, - {RWNX_TXQ_STOP_MU_POS, "MU"}, - {RWNX_TXQ_NDEV_FLOW_CTRL, "FLW_CTRL"})) -); + TP_STRUCT__entry(__field(u16, txq_idx) __field(u16, reason) + __field(u16, status)), + TP_fast_assign(__entry->txq_idx = txq->idx; __entry->reason = reason; + __entry->status = txq->status;), + TP_printk("%s reason=%s status=%s", __print_txq(__entry->txq_idx), + __print_symbolic(__entry->reason, + { RWNX_TXQ_STOP_FULL, "FULL" }, + { RWNX_TXQ_STOP_CSA, "CSA" }, + { RWNX_TXQ_STOP_STA_PS, "PS" }, + { RWNX_TXQ_STOP_VIF_PS, "VPS" }, + { RWNX_TXQ_STOP_CHAN, "CHAN" }, + { RWNX_TXQ_STOP_MU_POS, "MU" }), + __print_flags(__entry->status, "|", + { RWNX_TXQ_IN_HWQ_LIST, "IN LIST" }, + { RWNX_TXQ_STOP_FULL, "FULL" }, + { RWNX_TXQ_STOP_CSA, "CSA" }, + { RWNX_TXQ_STOP_STA_PS, "PS" }, + { RWNX_TXQ_STOP_VIF_PS, "VPS" }, + { RWNX_TXQ_STOP_CHAN, "CHAN" }, + { RWNX_TXQ_STOP_MU_POS, "MU" }, + { RWNX_TXQ_NDEV_FLOW_CTRL, "FLW_CTRL" }))); DEFINE_EVENT(txq_reason_template, txq_start, - TP_PROTO(struct rwnx_txq *txq, u16 reason), - TP_ARGS(txq, reason)); + TP_PROTO(struct rwnx_txq *txq, u16 reason), TP_ARGS(txq, reason)); DEFINE_EVENT(txq_reason_template, txq_stop, - TP_PROTO(struct rwnx_txq *txq, u16 reason), - TP_ARGS(txq, reason)); - + TP_PROTO(struct rwnx_txq *txq, u16 reason), TP_ARGS(txq, reason)); TRACE_EVENT( push_desc, - TP_PROTO(struct sk_buff *skb, struct rwnx_sw_txhdr *sw_txhdr, int push_flags), + TP_PROTO(struct sk_buff *skb, struct rwnx_sw_txhdr *sw_txhdr, + int push_flags), TP_ARGS(skb, sw_txhdr, push_flags), - TP_STRUCT__entry( - __field(struct sk_buff *, skb) - __field(unsigned int, len) - __field(u16, tx_queue) - __field(u8, hw_queue) - __field(u8, push_flag) - __field(u32, flag) - __field(s8, txq_cred) - __field(u8, hwq_cred) - __field(u16, pkt_cnt) - __field(u8, mu_info) - ), - TP_fast_assign( - __entry->skb = skb; - __entry->tx_queue = sw_txhdr->txq->idx; - __entry->push_flag = push_flags; - __entry->hw_queue = sw_txhdr->txq->hwq->id; - __entry->txq_cred = sw_txhdr->txq->credits; + TP_STRUCT__entry(__field(struct sk_buff *, skb) __field( + unsigned int, len) __field(u16, tx_queue) __field(u8, hw_queue) + __field(u8, push_flag) __field(u32, flag) + __field(s8, txq_cred) __field(u8, + hwq_cred) + __field(u16, pkt_cnt) + __field(u8, mu_info)), + TP_fast_assign(__entry->skb = skb; + __entry->tx_queue = sw_txhdr->txq->idx; + __entry->push_flag = push_flags; + __entry->hw_queue = sw_txhdr->txq->hwq->id; + __entry->txq_cred = sw_txhdr->txq->credits; #ifdef CONFIG_RWNX_SPLIT_TX_BUF - __entry->pkt_cnt = sw_txhdr->desc.host.packet_cnt; + __entry->pkt_cnt = sw_txhdr->desc.host.packet_cnt; #endif #ifdef CONFIG_RWNX_FULLMAC - __entry->flag = sw_txhdr->desc.host.flags; + __entry->flag = sw_txhdr->desc.host.flags; #ifdef CONFIG_RWNX_SPLIT_TX_BUF #ifdef CONFIG_RWNX_AMSDUS_TX - if (sw_txhdr->amsdu.len) - __entry->len = sw_txhdr->amsdu.len; - else + if (sw_txhdr->amsdu.len) + __entry->len = sw_txhdr->amsdu.len; + else #endif /* CONFIG_RWNX_AMSDUS_TX */ - __entry->len = sw_txhdr->desc.host.packet_len[0]; + __entry->len = sw_txhdr->desc.host.packet_len[0]; #else - __entry->len = sw_txhdr->desc.host.packet_len; + __entry->len = sw_txhdr->desc.host.packet_len; #endif /* CONFIG_RWNX_SPLIT_TX_BUF */ #else /* !CONFIG_RWNX_FULLMAC */ - __entry->flag = sw_txhdr->desc.umac.flags; - __entry->len = sw_txhdr->frame_len; - __entry->sn = sw_txhdr->sn; + __entry->flag = sw_txhdr->desc.umac.flags; + __entry->len = sw_txhdr->frame_len; + __entry->sn = sw_txhdr->sn; #endif /* CONFIG_RWNX_FULLMAC */ #ifdef CONFIG_RWNX_MUMIMO_TX - __entry->mu_info = sw_txhdr->desc.host.mumimo_info; + __entry->mu_info = sw_txhdr->desc.host.mumimo_info; #else - __entry->mu_info = 0; + __entry->mu_info = 0; #endif - ), + ), #ifdef CONFIG_RWNX_FULLMAC - TP_printk("%s skb=%p (len=%d) hw_queue=%s cred_txq=%d cred_hwq=%d %s flag=%s %s%s%s", - __print_txq(__entry->tx_queue), __entry->skb, __entry->len, - __print_hwq(__entry->hw_queue), - __entry->txq_cred, __entry->hwq_cred, - __print_mu_info(__entry->mu_info), - __print_flags(__entry->flag, "|", - {TXU_CNTRL_RETRY, "RETRY"}, - {TXU_CNTRL_MORE_DATA, "MOREDATA"}, - {TXU_CNTRL_MGMT, "MGMT"}, - {TXU_CNTRL_MGMT_NO_CCK, "NO_CCK"}, - {TXU_CNTRL_MGMT_ROBUST, "ROBUST"}, - {TXU_CNTRL_AMSDU, "AMSDU"}, - {TXU_CNTRL_USE_4ADDR, "4ADDR"}, - {TXU_CNTRL_EOSP, "EOSP"}, - {TXU_CNTRL_MESH_FWD, "MESH_FWD"}, - {TXU_CNTRL_TDLS, "TDLS"}), - (__entry->push_flag & RWNX_PUSH_IMMEDIATE) ? "(IMMEDIATE)" : "", - (!(__entry->flag & TXU_CNTRL_RETRY) && - (__entry->push_flag & RWNX_PUSH_RETRY)) ? "(SW_RETRY)" : "", - __print_amsdu(__entry->pkt_cnt)) + TP_printk( + "%s skb=%p (len=%d) hw_queue=%s cred_txq=%d cred_hwq=%d %s flag=%s %s%s%s", + __print_txq(__entry->tx_queue), __entry->skb, __entry->len, + __print_hwq(__entry->hw_queue), __entry->txq_cred, + __entry->hwq_cred, __print_mu_info(__entry->mu_info), + __print_flags(__entry->flag, "|", { TXU_CNTRL_RETRY, "RETRY" }, + { TXU_CNTRL_MORE_DATA, "MOREDATA" }, + { TXU_CNTRL_MGMT, "MGMT" }, + { TXU_CNTRL_MGMT_NO_CCK, "NO_CCK" }, + { TXU_CNTRL_MGMT_ROBUST, "ROBUST" }, + { TXU_CNTRL_AMSDU, "AMSDU" }, + { TXU_CNTRL_USE_4ADDR, "4ADDR" }, + { TXU_CNTRL_EOSP, "EOSP" }, + { TXU_CNTRL_MESH_FWD, "MESH_FWD" }, + { TXU_CNTRL_TDLS, "TDLS" }), + (__entry->push_flag & RWNX_PUSH_IMMEDIATE) ? "(IMMEDIATE)" : "", + (!(__entry->flag & TXU_CNTRL_RETRY) && + (__entry->push_flag & RWNX_PUSH_RETRY)) ? + "(SW_RETRY)" : + "", + __print_amsdu(__entry->pkt_cnt)) #else - TP_printk("%s skb=%p (len=%d) hw_queue=%s cred_txq=%d cred_hwq=%d %s flag=%x (%s) sn=%d %s", - __print_txq(__entry->tx_queue), __entry->skb, __entry->len, - __print_hwq(__entry->hw_queue), __entry->txq_cred, __entry->hwq_cred, - __print_mu_info(__entry->mu_info), - __entry->flag, - __print_flags(__entry->push_flag, "|", - {RWNX_PUSH_RETRY, "RETRY"}, - {RWNX_PUSH_IMMEDIATE, "IMMEDIATE"}), - __entry->sn, __print_amsdu(__entry->pkt_cnt)) + TP_printk( + "%s skb=%p (len=%d) hw_queue=%s cred_txq=%d cred_hwq=%d %s flag=%x (%s) sn=%d %s", + __print_txq(__entry->tx_queue), __entry->skb, __entry->len, + __print_hwq(__entry->hw_queue), __entry->txq_cred, + __entry->hwq_cred, __print_mu_info(__entry->mu_info), + __entry->flag, + __print_flags(__entry->push_flag, "|", + { RWNX_PUSH_RETRY, "RETRY" }, + { RWNX_PUSH_IMMEDIATE, "IMMEDIATE" }), + __entry->sn, __print_amsdu(__entry->pkt_cnt)) #endif /* CONFIG_RWNX_FULLMAC */ ); - TRACE_EVENT( txq_queue_skb, TP_PROTO(struct sk_buff *skb, struct rwnx_txq *txq, bool retry), TP_ARGS(skb, txq, retry), - TP_STRUCT__entry( - __field(struct sk_buff *, skb) - __field(u16, txq_idx) - __field(s8, credit) - __field(u16, q_len) - __field(u16, q_len_retry) - __field(bool, retry) - ), - TP_fast_assign( - __entry->skb = skb; - __entry->txq_idx = txq->idx; - __entry->credit = txq->credits; - __entry->q_len = skb_queue_len(&txq->sk_list); - __entry->q_len_retry = txq->nb_retry; - __entry->retry = retry; - ), + TP_STRUCT__entry(__field(struct sk_buff *, skb) __field(u16, txq_idx) + __field(s8, credit) __field(u16, q_len) + __field(u16, q_len_retry) + __field(bool, retry)), + TP_fast_assign(__entry->skb = skb; __entry->txq_idx = txq->idx; + __entry->credit = txq->credits; + __entry->q_len = skb_queue_len(&txq->sk_list); + __entry->q_len_retry = txq->nb_retry; + __entry->retry = retry;), TP_printk("%s skb=%p retry=%d txq_credits=%d queue_len=%d (retry = %d)", - __print_txq(__entry->txq_idx), __entry->skb, __entry->retry, - __entry->credit, __entry->q_len, __entry->q_len_retry) -); + __print_txq(__entry->txq_idx), __entry->skb, __entry->retry, + __entry->credit, __entry->q_len, __entry->q_len_retry)); #ifdef CONFIG_MAC80211_TXQ -TRACE_EVENT( - txq_wake, - TP_PROTO(struct rwnx_txq *txq), - TP_ARGS(txq), - TP_STRUCT__entry( - __field(u16, txq_idx) - __field(u16, q_len) - ), - TP_fast_assign( - __entry->txq_idx = txq->idx; - __entry->q_len = txq->nb_ready_mac80211; - ), +TRACE_EVENT(txq_wake, TP_PROTO(struct rwnx_txq *txq), TP_ARGS(txq), + TP_STRUCT__entry(__field(u16, txq_idx) __field(u16, q_len)), + TP_fast_assign(__entry->txq_idx = txq->idx; + __entry->q_len = txq->nb_ready_mac80211;), - TP_printk("%s mac80211_queue_len=%d", __print_txq(__entry->txq_idx), __entry->q_len) -); + TP_printk("%s mac80211_queue_len=%d", __print_txq(__entry->txq_idx), + __entry->q_len)); -TRACE_EVENT( - txq_drop, - TP_PROTO(struct rwnx_txq *txq, unsigned long nb_drop), - TP_ARGS(txq, nb_drop), - TP_STRUCT__entry( - __field(u16, txq_idx) - __field(u16, nb_drop) - ), - TP_fast_assign( - __entry->txq_idx = txq->idx; - __entry->nb_drop = nb_drop; - ), +TRACE_EVENT(txq_drop, TP_PROTO(struct rwnx_txq *txq, unsigned long nb_drop), + TP_ARGS(txq, nb_drop), + TP_STRUCT__entry(__field(u16, txq_idx) __field(u16, nb_drop)), + TP_fast_assign(__entry->txq_idx = txq->idx; + __entry->nb_drop = nb_drop;), - TP_printk("%s %u pkt have been dropped by codel in mac80211 txq", - __print_txq(__entry->txq_idx), __entry->nb_drop) -); + TP_printk("%s %u pkt have been dropped by codel in mac80211 txq", + __print_txq(__entry->txq_idx), __entry->nb_drop)); #endif +DECLARE_EVENT_CLASS(idx_template, TP_PROTO(u16 idx), TP_ARGS(idx), + TP_STRUCT__entry(__field(u16, idx)), + TP_fast_assign(__entry->idx = idx;), + TP_printk("idx=%d", __entry->idx)); -DECLARE_EVENT_CLASS( - idx_template, - TP_PROTO(u16 idx), - TP_ARGS(idx), - TP_STRUCT__entry( - __field(u16, idx) - ), - TP_fast_assign( - __entry->idx = idx; - ), - TP_printk("idx=%d", __entry->idx) -); +DEFINE_EVENT(idx_template, txq_vif_start, TP_PROTO(u16 idx), TP_ARGS(idx)); +DEFINE_EVENT(idx_template, txq_vif_stop, TP_PROTO(u16 idx), TP_ARGS(idx)); -DEFINE_EVENT(idx_template, txq_vif_start, - TP_PROTO(u16 idx), - TP_ARGS(idx)); +TRACE_EVENT(process_hw_queue, TP_PROTO(struct rwnx_hwq *hwq), TP_ARGS(hwq), + TP_STRUCT__entry(__field(u16, hwq) + __array(u8, credits, CONFIG_USER_MAX)), + TP_fast_assign(__entry->hwq = hwq->id;), + TP_printk("hw_queue=%s hw_credits=%s", __print_hwq(__entry->hwq), + __print_hwq_cred(__entry->credits))); -DEFINE_EVENT(idx_template, txq_vif_stop, - TP_PROTO(u16 idx), - TP_ARGS(idx)); +DECLARE_EVENT_CLASS(sta_idx_template, TP_PROTO(u16 idx), TP_ARGS(idx), + TP_STRUCT__entry(__field(u16, idx)), + TP_fast_assign(__entry->idx = idx;), + TP_printk("%s", __print_sta(__entry->idx))); -TRACE_EVENT( - process_hw_queue, - TP_PROTO(struct rwnx_hwq *hwq), - TP_ARGS(hwq), - TP_STRUCT__entry( - __field(u16, hwq) - __array(u8, credits, CONFIG_USER_MAX) - ), - TP_fast_assign( - __entry->hwq = hwq->id; - ), - TP_printk("hw_queue=%s hw_credits=%s", - __print_hwq(__entry->hwq), __print_hwq_cred(__entry->credits)) -); +DEFINE_EVENT(sta_idx_template, txq_sta_start, TP_PROTO(u16 idx), TP_ARGS(idx)); -DECLARE_EVENT_CLASS( - sta_idx_template, - TP_PROTO(u16 idx), - TP_ARGS(idx), - TP_STRUCT__entry( - __field(u16, idx) - ), - TP_fast_assign( - __entry->idx = idx; - ), - TP_printk("%s", __print_sta(__entry->idx)) -); - -DEFINE_EVENT(sta_idx_template, txq_sta_start, - TP_PROTO(u16 idx), - TP_ARGS(idx)); - -DEFINE_EVENT(sta_idx_template, txq_sta_stop, - TP_PROTO(u16 idx), - TP_ARGS(idx)); +DEFINE_EVENT(sta_idx_template, txq_sta_stop, TP_PROTO(u16 idx), TP_ARGS(idx)); #ifdef CONFIG_RWNX_FULLMAC -DEFINE_EVENT(sta_idx_template, ps_disable, - TP_PROTO(u16 idx), - TP_ARGS(idx)); +DEFINE_EVENT(sta_idx_template, ps_disable, TP_PROTO(u16 idx), TP_ARGS(idx)); -#endif /* CONFIG_RWNX_FULLMAC */ +#endif /* CONFIG_RWNX_FULLMAC */ TRACE_EVENT( skb_confirm, - TP_PROTO(struct sk_buff *skb, struct rwnx_txq *txq, struct rwnx_hwq *hwq, + TP_PROTO(struct sk_buff *skb, struct rwnx_txq *txq, + struct rwnx_hwq *hwq, #ifdef CONFIG_RWNX_FULLMAC - struct tx_cfm_tag *cfm + struct tx_cfm_tag *cfm #else - u8 cfm + u8 cfm #endif - ), + ), TP_ARGS(skb, txq, hwq, cfm), TP_STRUCT__entry( - __field(struct sk_buff *, skb) - __field(u16, txq_idx) - __field(u8, hw_queue) - __array(u8, hw_credit, CONFIG_USER_MAX) - __field(s8, sw_credit) - __field(s8, sw_credit_up) + __field(struct sk_buff *, skb) __field(u16, txq_idx) + __field(u8, hw_queue) __array(u8, hw_credit, + CONFIG_USER_MAX) + __field(s8, sw_credit) __field(s8, sw_credit_up) #ifdef CONFIG_RWNX_FULLMAC - __field(u8, ampdu_size) + __field(u8, ampdu_size) #ifdef CONFIG_RWNX_SPLIT_TX_BUF - __field(u16, amsdu) + __field(u16, amsdu) #endif /* CONFIG_RWNX_SPLIT_TX_BUF */ - __field(u16, sn) + __field(u16, sn) #endif /* CONFIG_RWNX_FULLMAC*/ - ), + ), - TP_fast_assign( - __entry->skb = skb; - __entry->txq_idx = txq->idx; - __entry->hw_queue = hwq->id; - __entry->sw_credit = txq->credits; + TP_fast_assign(__entry->skb = skb; __entry->txq_idx = txq->idx; + __entry->hw_queue = hwq->id; + __entry->sw_credit = txq->credits; #if defined CONFIG_RWNX_FULLMAC - __entry->sw_credit_up = cfm->credits; - __entry->ampdu_size = cfm->ampdu_size; + __entry->sw_credit_up = cfm->credits; + __entry->ampdu_size = cfm->ampdu_size; #ifdef CONFIG_RWNX_SPLIT_TX_BUF - __entry->amsdu = cfm->amsdu_size; - __entry->sn = cfm->sn; + __entry->amsdu = cfm->amsdu_size; __entry->sn = cfm->sn; #endif #else - __entry->sw_credit_up = cfm + __entry->sw_credit_up = cfm #endif /* CONFIG_RWNX_FULLMAC */ - ), + ), TP_printk("%s skb=%p hw_queue=%s, hw_credits=%s, txq_credits=%d (+%d)" #ifdef CONFIG_RWNX_FULLMAC - " sn=%u ampdu=%d" + " sn=%u ampdu=%d" #ifdef CONFIG_RWNX_SPLIT_TX_BUF - " amsdu=%u" + " amsdu=%u" #endif #endif - , __print_txq(__entry->txq_idx), __entry->skb, - __print_hwq(__entry->hw_queue), - __print_hwq_cred(__entry->hw_credit), - __entry->sw_credit, __entry->sw_credit_up + , + __print_txq(__entry->txq_idx), __entry->skb, + __print_hwq(__entry->hw_queue), + __print_hwq_cred(__entry->hw_credit), __entry->sw_credit, + __entry->sw_credit_up #ifdef CONFIG_RWNX_FULLMAC - , __entry->sn, __entry->ampdu_size + , + __entry->sn, __entry->ampdu_size #ifdef CONFIG_RWNX_SPLIT_TX_BUF - , __entry->amsdu + , + __entry->amsdu #endif #endif - ) -); + )); -TRACE_EVENT( - credit_update, - TP_PROTO(struct rwnx_txq *txq, s8_l cred_up), +TRACE_EVENT(credit_update, TP_PROTO(struct rwnx_txq *txq, s8_l cred_up), - TP_ARGS(txq, cred_up), + TP_ARGS(txq, cred_up), - TP_STRUCT__entry( - __field(struct sk_buff *, skb) - __field(u16, txq_idx) - __field(s8, sw_credit) - __field(s8, sw_credit_up) - ), + TP_STRUCT__entry(__field(struct sk_buff *, skb) + __field(u16, txq_idx) + __field(s8, sw_credit) + __field(s8, sw_credit_up)), - TP_fast_assign( - __entry->txq_idx = txq->idx; - __entry->sw_credit = txq->credits; - __entry->sw_credit_up = cred_up; - ), + TP_fast_assign(__entry->txq_idx = txq->idx; + __entry->sw_credit = txq->credits; + __entry->sw_credit_up = cred_up;), - TP_printk("%s txq_credits=%d (%+d)", __print_txq(__entry->txq_idx), - __entry->sw_credit, __entry->sw_credit_up) -) + TP_printk("%s txq_credits=%d (%+d)", __print_txq(__entry->txq_idx), + __entry->sw_credit, __entry->sw_credit_up)) #ifdef CONFIG_RWNX_FULLMAC DECLARE_EVENT_CLASS( - ps_template, - TP_PROTO(struct rwnx_sta *sta), - TP_ARGS(sta), - TP_STRUCT__entry( - __field(u16, idx) - __field(u16, ready_ps) - __field(u16, sp_ps) - __field(u16, ready_uapsd) - __field(u16, sp_uapsd) - ), - TP_fast_assign( - __entry->idx = sta->sta_idx; - __entry->ready_ps = sta->ps.pkt_ready[LEGACY_PS_ID]; - __entry->sp_ps = sta->ps.sp_cnt[LEGACY_PS_ID]; - __entry->ready_uapsd = sta->ps.pkt_ready[UAPSD_ID]; - __entry->sp_uapsd = sta->ps.sp_cnt[UAPSD_ID]; - ), + ps_template, TP_PROTO(struct rwnx_sta *sta), TP_ARGS(sta), + TP_STRUCT__entry(__field(u16, idx) __field(u16, ready_ps) + __field(u16, sp_ps) __field(u16, ready_uapsd) + __field(u16, sp_uapsd)), + TP_fast_assign(__entry->idx = sta->sta_idx; + __entry->ready_ps = sta->ps.pkt_ready[LEGACY_PS_ID]; + __entry->sp_ps = sta->ps.sp_cnt[LEGACY_PS_ID]; + __entry->ready_uapsd = sta->ps.pkt_ready[UAPSD_ID]; + __entry->sp_uapsd = sta->ps.sp_cnt[UAPSD_ID];), TP_printk("%s [PS] ready=%d sp=%d [UAPSD] ready=%d sp=%d", - __print_sta(__entry->idx), __entry->ready_ps, __entry->sp_ps, - __entry->ready_uapsd, __entry->sp_uapsd) -); + __print_sta(__entry->idx), __entry->ready_ps, __entry->sp_ps, + __entry->ready_uapsd, __entry->sp_uapsd)); -DEFINE_EVENT(ps_template, ps_queue, - TP_PROTO(struct rwnx_sta *sta), - TP_ARGS(sta)); +DEFINE_EVENT(ps_template, ps_queue, TP_PROTO(struct rwnx_sta *sta), + TP_ARGS(sta)); -DEFINE_EVENT(ps_template, ps_push, - TP_PROTO(struct rwnx_sta *sta), - TP_ARGS(sta)); +DEFINE_EVENT(ps_template, ps_push, TP_PROTO(struct rwnx_sta *sta), + TP_ARGS(sta)); -DEFINE_EVENT(ps_template, ps_enable, - TP_PROTO(struct rwnx_sta *sta), - TP_ARGS(sta)); +DEFINE_EVENT(ps_template, ps_enable, TP_PROTO(struct rwnx_sta *sta), + TP_ARGS(sta)); -TRACE_EVENT( - ps_traffic_update, - TP_PROTO(u16 sta_idx, u8 traffic, bool uapsd), +TRACE_EVENT(ps_traffic_update, TP_PROTO(u16 sta_idx, u8 traffic, bool uapsd), - TP_ARGS(sta_idx, traffic, uapsd), + TP_ARGS(sta_idx, traffic, uapsd), - TP_STRUCT__entry( - __field(u16, sta_idx) - __field(u8, traffic) - __field(bool, uapsd) - ), + TP_STRUCT__entry(__field(u16, sta_idx) __field(u8, traffic) + __field(bool, uapsd)), - TP_fast_assign( - __entry->sta_idx = sta_idx; - __entry->traffic = traffic; - __entry->uapsd = uapsd; - ), + TP_fast_assign(__entry->sta_idx = sta_idx; + __entry->traffic = traffic; __entry->uapsd = uapsd;), - TP_printk("%s %s%s traffic available ", __print_sta(__entry->sta_idx), - __entry->traffic ? "" : "no more ", - __entry->uapsd ? "U-APSD" : "legacy PS") -); + TP_printk("%s %s%s traffic available ", + __print_sta(__entry->sta_idx), + __entry->traffic ? "" : "no more ", + __entry->uapsd ? "U-APSD" : "legacy PS")); -TRACE_EVENT( - ps_traffic_req, - TP_PROTO(struct rwnx_sta *sta, u16 pkt_req, u8 ps_id), - TP_ARGS(sta, pkt_req, ps_id), - TP_STRUCT__entry( - __field(u16, idx) - __field(u16, pkt_req) - __field(u8, ps_id) - __field(u16, ready) - __field(u16, sp) - ), - TP_fast_assign( - __entry->idx = sta->sta_idx; - __entry->pkt_req = pkt_req; - __entry->ps_id = ps_id; - __entry->ready = sta->ps.pkt_ready[ps_id]; - __entry->sp = sta->ps.sp_cnt[ps_id]; - ), - - TP_printk("%s %s traffic request %d pkt (ready=%d, sp=%d)", - __print_sta(__entry->idx), - __entry->ps_id == UAPSD_ID ? "U-APSD" : "legacy PS", - __entry->pkt_req, __entry->ready, __entry->sp) -); +TRACE_EVENT(ps_traffic_req, + TP_PROTO(struct rwnx_sta *sta, u16 pkt_req, u8 ps_id), + TP_ARGS(sta, pkt_req, ps_id), + TP_STRUCT__entry(__field(u16, idx) __field(u16, pkt_req) + __field(u8, ps_id) __field(u16, ready) + __field(u16, sp)), + TP_fast_assign(__entry->idx = sta->sta_idx; + __entry->pkt_req = pkt_req; __entry->ps_id = ps_id; + __entry->ready = sta->ps.pkt_ready[ps_id]; + __entry->sp = sta->ps.sp_cnt[ps_id];), + TP_printk("%s %s traffic request %d pkt (ready=%d, sp=%d)", + __print_sta(__entry->idx), + __entry->ps_id == UAPSD_ID ? "U-APSD" : "legacy PS", + __entry->pkt_req, __entry->ready, __entry->sp)); #ifdef CONFIG_RWNX_AMSDUS_TX -TRACE_EVENT( - amsdu_subframe, - TP_PROTO(struct rwnx_sw_txhdr *sw_txhdr), - TP_ARGS(sw_txhdr), - TP_STRUCT__entry( - __field(struct sk_buff *, skb) - __field(u16, txq_idx) - __field(u8, nb) - __field(u32, len) - ), - TP_fast_assign( - __entry->skb = sw_txhdr->skb; - __entry->nb = sw_txhdr->amsdu.nb; - __entry->len = sw_txhdr->amsdu.len; - __entry->txq_idx = sw_txhdr->txq->idx; - ), +TRACE_EVENT(amsdu_subframe, TP_PROTO(struct rwnx_sw_txhdr *sw_txhdr), + TP_ARGS(sw_txhdr), + TP_STRUCT__entry(__field(struct sk_buff *, skb) + __field(u16, txq_idx) __field(u8, nb) + __field(u32, len)), + TP_fast_assign(__entry->skb = sw_txhdr->skb; + __entry->nb = sw_txhdr->amsdu.nb; + __entry->len = sw_txhdr->amsdu.len; + __entry->txq_idx = sw_txhdr->txq->idx;), - TP_printk("%s skb=%p %s nb_subframe=%d, len=%u", - __print_txq(__entry->txq_idx), __entry->skb, - (__entry->nb == 2) ? "Start new AMSDU" : "Add subframe", - __entry->nb, __entry->len) -); + TP_printk("%s skb=%p %s nb_subframe=%d, len=%u", + __print_txq(__entry->txq_idx), __entry->skb, + (__entry->nb == 2) ? "Start new AMSDU" : "Add subframe", + __entry->nb, __entry->len)); #endif #endif /* CONFIG_RWNX_FULLMAC */ #ifdef CONFIG_RWNX_MUMIMO_TX -TRACE_EVENT( - mu_group_update, - TP_PROTO(struct rwnx_mu_group *group), - TP_ARGS(group), - TP_STRUCT__entry( - __field(u8, nb_user) - __field(u8, group_id) - __array(u8, users, CONFIG_USER_MAX) - ), - TP_fast_assign( - int i; - __entry->nb_user = group->user_cnt; - for (i = 0; i < CONFIG_USER_MAX ; i++) { - if (group->users[i]) { - __entry->users[i] = group->users[i]->sta_idx; - } else { - __entry->users[i] = 0xff; - } - } +TRACE_EVENT(mu_group_update, TP_PROTO(struct rwnx_mu_group *group), + TP_ARGS(group), + TP_STRUCT__entry(__field(u8, nb_user) __field(u8, group_id) + __array(u8, users, CONFIG_USER_MAX)), + TP_fast_assign(int i; __entry->nb_user = group->user_cnt; + for (i = 0; i < CONFIG_USER_MAX; i++) { + if (group->users[i]) { + __entry->users[i] = + group->users[i]->sta_idx; + } else { + __entry->users[i] = 0xff; + } + } - __entry->group_id = group->group_id; - ), + __entry->group_id = group->group_id;), - TP_printk("Group-id = %d, Users = %s", - __entry->group_id, - __print_mu_group(__entry->nb_user, __entry->users)) -); + TP_printk("Group-id = %d, Users = %s", __entry->group_id, + __print_mu_group(__entry->nb_user, __entry->users))); -TRACE_EVENT( - mu_group_delete, - TP_PROTO(int group_id), - TP_ARGS(group_id), - TP_STRUCT__entry( - __field(u8, group_id) - ), - TP_fast_assign( - __entry->group_id = group_id; - ), +TRACE_EVENT(mu_group_delete, TP_PROTO(int group_id), TP_ARGS(group_id), + TP_STRUCT__entry(__field(u8, group_id)), + TP_fast_assign(__entry->group_id = group_id;), - TP_printk("Group-id = %d", __entry->group_id) -); + TP_printk("Group-id = %d", __entry->group_id)); -TRACE_EVENT( - mu_group_selection, - TP_PROTO(struct rwnx_sta *sta, int group_id), - TP_ARGS(sta, group_id), - TP_STRUCT__entry( - __field(u8, sta_idx) - __field(u8, group_id) - ), - TP_fast_assign( - __entry->sta_idx = sta->sta_idx; - __entry->group_id = group_id; - ), +TRACE_EVENT(mu_group_selection, TP_PROTO(struct rwnx_sta *sta, int group_id), + TP_ARGS(sta, group_id), + TP_STRUCT__entry(__field(u8, sta_idx) __field(u8, group_id)), + TP_fast_assign(__entry->sta_idx = sta->sta_idx; + __entry->group_id = group_id;), - TP_printk("[Sta %d] Group-id = %d", __entry->sta_idx, __entry->group_id) -); + TP_printk("[Sta %d] Group-id = %d", __entry->sta_idx, + __entry->group_id)); -TRACE_EVENT( - txq_select_mu_group, - TP_PROTO(struct rwnx_txq *txq, int group_id, int pos), +TRACE_EVENT(txq_select_mu_group, + TP_PROTO(struct rwnx_txq *txq, int group_id, int pos), - TP_ARGS(txq, group_id, pos), + TP_ARGS(txq, group_id, pos), - TP_STRUCT__entry( - __field(u16, txq_idx) - __field(u8, group_id) - __field(u8, pos) - ), - TP_fast_assign( - __entry->txq_idx = txq->idx; - __entry->group_id = group_id; - __entry->pos = pos; - ), + TP_STRUCT__entry(__field(u16, txq_idx) __field(u8, group_id) + __field(u8, pos)), + TP_fast_assign(__entry->txq_idx = txq->idx; + __entry->group_id = group_id; __entry->pos = pos;), - TP_printk("%s: group=%d pos=%d", __print_txq(__entry->txq_idx), - __entry->group_id, __entry->pos) -); + TP_printk("%s: group=%d pos=%d", __print_txq(__entry->txq_idx), + __entry->group_id, __entry->pos)); #endif /* CONFIG_RWNX_MUMIMO_TX */ #endif /* ! CONFIG_RWNX_FHOST */ @@ -1141,39 +909,29 @@ TRACE_EVENT( ****************************************************************************/ #ifdef CONFIG_RWNX_FULLMAC DECLARE_EVENT_CLASS( - mesh_path_template, - TP_PROTO(struct rwnx_mesh_path *mesh_path), + mesh_path_template, TP_PROTO(struct rwnx_mesh_path *mesh_path), TP_ARGS(mesh_path), - TP_STRUCT__entry( - __field(u8, idx) - __field(u8, next_hop_sta) - __array(u8, tgt_mac, ETH_ALEN) - ), + TP_STRUCT__entry(__field(u8, idx) __field(u8, next_hop_sta) + __array(u8, tgt_mac, ETH_ALEN)), TP_fast_assign( __entry->idx = mesh_path->path_idx; memcpy(__entry->tgt_mac, &mesh_path->tgt_mac_addr, ETH_ALEN); if (mesh_path->p_nhop_sta) __entry->next_hop_sta = mesh_path->p_nhop_sta->sta_idx; - else - __entry->next_hop_sta = 0xff; - ), + else __entry->next_hop_sta = 0xff;), - TP_printk("Mpath(%d): target=%pM next_hop=STA-%d", - __entry->idx, __entry->tgt_mac, __entry->next_hop_sta) -); + TP_printk("Mpath(%d): target=%pM next_hop=STA-%d", __entry->idx, + __entry->tgt_mac, __entry->next_hop_sta)); DEFINE_EVENT(mesh_path_template, mesh_create_path, - TP_PROTO(struct rwnx_mesh_path *mesh_path), - TP_ARGS(mesh_path)); + TP_PROTO(struct rwnx_mesh_path *mesh_path), TP_ARGS(mesh_path)); DEFINE_EVENT(mesh_path_template, mesh_delete_path, - TP_PROTO(struct rwnx_mesh_path *mesh_path), - TP_ARGS(mesh_path)); + TP_PROTO(struct rwnx_mesh_path *mesh_path), TP_ARGS(mesh_path)); DEFINE_EVENT(mesh_path_template, mesh_update_path, - TP_PROTO(struct rwnx_mesh_path *mesh_path), - TP_ARGS(mesh_path)); + TP_PROTO(struct rwnx_mesh_path *mesh_path), TP_ARGS(mesh_path)); #endif /* CONFIG_RWNX_FULLMAC */ @@ -1181,109 +939,74 @@ DEFINE_EVENT(mesh_path_template, mesh_update_path, * TRACE functions for RADAR ****************************************************************************/ #ifdef CONFIG_RWNX_RADAR -TRACE_EVENT( - radar_pulse, - TP_PROTO(u8 chain, struct radar_pulse *pulse), - TP_ARGS(chain, pulse), - TP_STRUCT__entry( - __field(u8, chain) - __field(s16, freq) - __field(u16, pri) - __field(u8, len) - __field(u8, fom) - ), - TP_fast_assign( - __entry->freq = pulse->freq * 2; - __entry->len = pulse->len * 2; - __entry->fom = pulse->fom * 6; - __entry->pri = pulse->rep; - __entry->chain = chain; - ), +TRACE_EVENT(radar_pulse, TP_PROTO(u8 chain, struct radar_pulse *pulse), + TP_ARGS(chain, pulse), + TP_STRUCT__entry(__field(u8, chain) __field(s16, freq) + __field(u16, pri) __field(u8, len) + __field(u8, fom)), + TP_fast_assign(__entry->freq = pulse->freq * 2; + __entry->len = pulse->len * 2; + __entry->fom = pulse->fom * 6; + __entry->pri = pulse->rep; __entry->chain = chain;), - TP_printk("%s: PRI=%.5d LEN=%.3d FOM=%.2d%% freq=%dMHz ", - __print_symbolic(__entry->chain, - {RWNX_RADAR_RIU, "RIU"}, - {RWNX_RADAR_FCU, "FCU"}), - __entry->pri, __entry->len, __entry->fom, __entry->freq) - ); + TP_printk("%s: PRI=%.5d LEN=%.3d FOM=%.2d%% freq=%dMHz ", + __print_symbolic(__entry->chain, + { RWNX_RADAR_RIU, "RIU" }, + { RWNX_RADAR_FCU, "FCU" }), + __entry->pri, __entry->len, __entry->fom, __entry->freq)); -TRACE_EVENT( - radar_detected, - TP_PROTO(u8 chain, u8 region, s16 freq, u8 type, u16 pri), - TP_ARGS(chain, region, freq, type, pri), - TP_STRUCT__entry( - __field(u8, chain) - __field(u8, region) - __field(s16, freq) - __field(u8, type) - __field(u16, pri) - ), - TP_fast_assign( - __entry->chain = chain; - __entry->region = region; - __entry->freq = freq; - __entry->type = type; - __entry->pri = pri; - ), - TP_printk("%s: region=%s type=%d freq=%dMHz (pri=%dus)", - __print_symbolic(__entry->chain, - {RWNX_RADAR_RIU, "RIU"}, - {RWNX_RADAR_FCU, "FCU"}), - __print_symbolic(__entry->region, - {NL80211_DFS_UNSET, "UNSET"}, - {NL80211_DFS_FCC, "FCC"}, - {NL80211_DFS_ETSI, "ETSI"}, - {NL80211_DFS_JP, "JP"}), - __entry->type, __entry->freq, __entry->pri) -); +TRACE_EVENT(radar_detected, + TP_PROTO(u8 chain, u8 region, s16 freq, u8 type, u16 pri), + TP_ARGS(chain, region, freq, type, pri), + TP_STRUCT__entry(__field(u8, chain) __field(u8, region) + __field(s16, freq) __field(u8, type) + __field(u16, pri)), + TP_fast_assign(__entry->chain = chain; __entry->region = region; + __entry->freq = freq; __entry->type = type; + __entry->pri = pri;), + TP_printk("%s: region=%s type=%d freq=%dMHz (pri=%dus)", + __print_symbolic(__entry->chain, + { RWNX_RADAR_RIU, "RIU" }, + { RWNX_RADAR_FCU, "FCU" }), + __print_symbolic(__entry->region, + { NL80211_DFS_UNSET, "UNSET" }, + { NL80211_DFS_FCC, "FCC" }, + { NL80211_DFS_ETSI, "ETSI" }, + { NL80211_DFS_JP, "JP" }), + __entry->type, __entry->freq, __entry->pri)); -TRACE_EVENT( - radar_set_region, - TP_PROTO(u8 region), - TP_ARGS(region), - TP_STRUCT__entry( - __field(u8, region) - ), - TP_fast_assign( - __entry->region = region; - ), - TP_printk("region=%s", - __print_symbolic(__entry->region, - {NL80211_DFS_UNSET, "UNSET"}, - {NL80211_DFS_FCC, "FCC"}, - {NL80211_DFS_ETSI, "ETSI"}, - {NL80211_DFS_JP, "JP"})) -); +TRACE_EVENT(radar_set_region, TP_PROTO(u8 region), TP_ARGS(region), + TP_STRUCT__entry(__field(u8, region)), + TP_fast_assign(__entry->region = region;), + TP_printk("region=%s", + __print_symbolic(__entry->region, + { NL80211_DFS_UNSET, "UNSET" }, + { NL80211_DFS_FCC, "FCC" }, + { NL80211_DFS_ETSI, "ETSI" }, + { NL80211_DFS_JP, "JP" }))); -TRACE_EVENT( - radar_enable_detection, - TP_PROTO(u8 region, u8 enable, u8 chain), - TP_ARGS(region, enable, chain), - TP_STRUCT__entry( - __field(u8, region) - __field(u8, chain) - __field(u8, enable) - ), - TP_fast_assign( - __entry->chain = chain; - __entry->enable = enable; - __entry->region = region; - ), - TP_printk("%s: %s radar detection %s", - __print_symbolic(__entry->chain, - {RWNX_RADAR_RIU, "RIU"}, - {RWNX_RADAR_FCU, "FCU"}), - __print_symbolic(__entry->enable, - {RWNX_RADAR_DETECT_DISABLE, "Disable"}, - {RWNX_RADAR_DETECT_ENABLE, "Enable (no report)"}, - {RWNX_RADAR_DETECT_REPORT, "Enable"}), - __entry->enable == RWNX_RADAR_DETECT_DISABLE ? "" : - __print_symbolic(__entry->region, - {NL80211_DFS_UNSET, "UNSET"}, - {NL80211_DFS_FCC, "FCC"}, - {NL80211_DFS_ETSI, "ETSI"}, - {NL80211_DFS_JP, "JP"})) -); +TRACE_EVENT(radar_enable_detection, TP_PROTO(u8 region, u8 enable, u8 chain), + TP_ARGS(region, enable, chain), + TP_STRUCT__entry(__field(u8, region) __field(u8, chain) + __field(u8, enable)), + TP_fast_assign(__entry->chain = chain; __entry->enable = enable; + __entry->region = region;), + TP_printk("%s: %s radar detection %s", + __print_symbolic(__entry->chain, + { RWNX_RADAR_RIU, "RIU" }, + { RWNX_RADAR_FCU, "FCU" }), + __print_symbolic(__entry->enable, + { RWNX_RADAR_DETECT_DISABLE, "Disable" }, + { RWNX_RADAR_DETECT_ENABLE, + "Enable (no report)" }, + { RWNX_RADAR_DETECT_REPORT, "Enable" }), + __entry->enable == RWNX_RADAR_DETECT_DISABLE ? + "" : + __print_symbolic(__entry->region, + { NL80211_DFS_UNSET, "UNSET" }, + { NL80211_DFS_FCC, "FCC" }, + { NL80211_DFS_ETSI, "ETSI" }, + { NL80211_DFS_JP, "JP" }))); #endif /* CONFIG_RWNX_RADAR */ /***************************************************************************** @@ -1291,30 +1014,16 @@ TRACE_EVENT( ****************************************************************************/ #include "rwnx_strs.h" -DECLARE_EVENT_CLASS( - ipc_msg_template, - TP_PROTO(u16 id), - TP_ARGS(id), - TP_STRUCT__entry( - __field(u16, id) - ), - TP_fast_assign( - __entry->id = id; - ), +DECLARE_EVENT_CLASS(ipc_msg_template, TP_PROTO(u16 id), TP_ARGS(id), + TP_STRUCT__entry(__field(u16, id)), + TP_fast_assign(__entry->id = id;), - TP_printk("%s (%d - %d)", RWNX_ID2STR(__entry->id), - MSG_T(__entry->id), MSG_I(__entry->id)) -); - -DEFINE_EVENT(ipc_msg_template, msg_send, - TP_PROTO(u16 id), - TP_ARGS(id)); - -DEFINE_EVENT(ipc_msg_template, msg_recv, - TP_PROTO(u16 id), - TP_ARGS(id)); + TP_printk("%s (%d - %d)", RWNX_ID2STR(__entry->id), + MSG_T(__entry->id), MSG_I(__entry->id))); +DEFINE_EVENT(ipc_msg_template, msg_send, TP_PROTO(u16 id), TP_ARGS(id)); +DEFINE_EVENT(ipc_msg_template, msg_recv, TP_PROTO(u16 id), TP_ARGS(id)); #endif /* !defined(_RWNX_EVENTS_H) || defined(TRACE_HEADER_MULTI_READ) */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_fw_trace.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_fw_trace.c index 9151c8b81..2b7517be7 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_fw_trace.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_fw_trace.c @@ -25,12 +25,14 @@ int rwnx_fw_log_init(struct rwnx_fw_log *fw_log) fw_log->buf.data = buf; fw_log->buf.start = fw_log->buf.data; - fw_log->buf.size = 0; - fw_log->buf.end = fw_log->buf.data; + fw_log->buf.size = 0; + fw_log->buf.end = fw_log->buf.data; fw_log->buf.dataend = fw_log->buf.data + FW_LOG_SIZE; spin_lock_init(&fw_log->lock); - AICWFDBG(LOGINFO, "fw_log_init: %lx, %lx\n", (unsigned long)fw_log->buf.start, (unsigned long)(fw_log->buf.dataend)); + AICWFDBG(LOGINFO, "fw_log_init: %lx, %lx\n", + (unsigned long)fw_log->buf.start, + (unsigned long)(fw_log->buf.dataend)); return 0; } @@ -42,7 +44,6 @@ void rwnx_fw_log_deinit(struct rwnx_fw_log *fw_log) if (fw_log->buf.data) kfree(fw_log->buf.data); fw_log->buf.start = NULL; - fw_log->buf.end = NULL; + fw_log->buf.end = NULL; fw_log->buf.size = 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.c index 7f6333d91..44eaf3f75 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.c @@ -12,7 +12,7 @@ static struct genl_family rwnx_nl80211_fam; static bool __rwnx_cfg80211_unexpected_frame(struct net_device *dev, u8 cmd, - const u8 *addr, gfp_t gfp) + const u8 *addr, gfp_t gfp) { struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); @@ -42,13 +42,13 @@ static bool __rwnx_cfg80211_unexpected_frame(struct net_device *dev, u8 cmd, genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid); return true; - nla_put_failure: +nla_put_failure: nlmsg_free(msg); return true; } -bool rwnx_cfg80211_rx_spurious_frame(struct net_device *dev, - const u8 *addr, gfp_t gfp) +bool rwnx_cfg80211_rx_spurious_frame(struct net_device *dev, const u8 *addr, + gfp_t gfp) { struct wireless_dev *wdev = dev->ieee80211_ptr; bool ret; @@ -57,13 +57,13 @@ bool rwnx_cfg80211_rx_spurious_frame(struct net_device *dev, wdev->iftype != NL80211_IFTYPE_P2P_GO)) { return false; } - ret = __rwnx_cfg80211_unexpected_frame(dev, NL80211_CMD_UNEXPECTED_FRAME, - addr, gfp); + ret = __rwnx_cfg80211_unexpected_frame( + dev, NL80211_CMD_UNEXPECTED_FRAME, addr, gfp); return ret; } bool rwnx_cfg80211_rx_unexpected_4addr_frame(struct net_device *dev, - const u8 *addr, gfp_t gfp) + const u8 *addr, gfp_t gfp) { struct wireless_dev *wdev = dev->ieee80211_ptr; bool ret; @@ -73,16 +73,15 @@ bool rwnx_cfg80211_rx_unexpected_4addr_frame(struct net_device *dev, wdev->iftype != NL80211_IFTYPE_AP_VLAN)) { return false; } - ret = __rwnx_cfg80211_unexpected_frame(dev, - NL80211_CMD_UNEXPECTED_4ADDR_FRAME, - addr, gfp); + ret = __rwnx_cfg80211_unexpected_frame( + dev, NL80211_CMD_UNEXPECTED_4ADDR_FRAME, addr, gfp); return ret; } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) -void rwnx_cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr, - const u8 *ie, u8 ie_len, - int sig_dbm, gfp_t gfp) +void rwnx_cfg80211_notify_new_peer_candidate(struct net_device *dev, + const u8 *addr, const u8 *ie, + u8 ie_len, int sig_dbm, gfp_t gfp) { struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); @@ -96,7 +95,8 @@ void rwnx_cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *a if (!msg) return; - hdr = genlmsg_put(msg, 0, 0, &rwnx_nl80211_fam, 0, NL80211_CMD_NEW_PEER_CANDIDATE); + hdr = genlmsg_put(msg, 0, 0, &rwnx_nl80211_fam, 0, + NL80211_CMD_NEW_PEER_CANDIDATE); if (!hdr) { nlmsg_free(msg); return; @@ -105,27 +105,24 @@ void rwnx_cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *a if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || - (ie_len && ie && - nla_put(msg, NL80211_ATTR_IE, ie_len, ie)) || - (sig_dbm && - nla_put_u32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm))) + (ie_len && ie && nla_put(msg, NL80211_ATTR_IE, ie_len, ie)) || + (sig_dbm && nla_put_u32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm))) goto nla_put_failure; genlmsg_end(msg, hdr); #define NL80211_MCGRP_MLME 3 - genlmsg_multicast_netns(&rwnx_nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, - NL80211_MCGRP_MLME, gfp); + genlmsg_multicast_netns(&rwnx_nl80211_fam, wiphy_net(&rdev->wiphy), msg, + 0, NL80211_MCGRP_MLME, gfp); return; - nla_put_failure: +nla_put_failure: nlmsg_free(msg); } #endif -void rwnx_cfg80211_report_obss_beacon(struct wiphy *wiphy, - const u8 *frame, size_t len, - int freq, int sig_dbm) +void rwnx_cfg80211_report_obss_beacon(struct wiphy *wiphy, const u8 *frame, + size_t len, int freq, int sig_dbm) { struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy); struct sk_buff *msg; @@ -133,20 +130,20 @@ void rwnx_cfg80211_report_obss_beacon(struct wiphy *wiphy, struct cfg80211_beacon_registration *reg; spin_lock_bh(&rdev->beacon_registrations_lock); - list_for_each_entry(reg, &rdev->beacon_registrations, list) { + list_for_each_entry (reg, &rdev->beacon_registrations, list) { msg = nlmsg_new(len + 100, GFP_ATOMIC); if (!msg) { spin_unlock_bh(&rdev->beacon_registrations_lock); return; } - hdr = genlmsg_put(msg, 0, 0, &rwnx_nl80211_fam, 0, NL80211_CMD_FRAME); + hdr = genlmsg_put(msg, 0, 0, &rwnx_nl80211_fam, 0, + NL80211_CMD_FRAME); if (!hdr) goto nla_put_failure; if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || - (freq && - nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq)) || + (freq && nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq)) || (sig_dbm && nla_put_u32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm)) || nla_put(msg, NL80211_ATTR_FRAME, len, frame)) @@ -159,13 +156,13 @@ void rwnx_cfg80211_report_obss_beacon(struct wiphy *wiphy, spin_unlock_bh(&rdev->beacon_registrations_lock); return; - nla_put_failure: +nla_put_failure: spin_unlock_bh(&rdev->beacon_registrations_lock); nlmsg_free(msg); } static int rwnx_nl80211_send_chandef(struct sk_buff *msg, - const struct cfg80211_chan_def *chandef) + const struct cfg80211_chan_def *chandef) { if (WARN_ON(!cfg80211_chandef_valid(chandef))) return -EINVAL; @@ -195,11 +192,10 @@ static int rwnx_nl80211_send_chandef(struct sk_buff *msg, } void rwnx_cfg80211_ch_switch_notify(struct cfg80211_registered_device *rdev, - struct net_device *netdev, - struct cfg80211_chan_def *chandef, - gfp_t gfp, - enum nl80211_commands notif, - u8 count) + struct net_device *netdev, + struct cfg80211_chan_def *chandef, + gfp_t gfp, enum nl80211_commands notif, + u8 count) { struct sk_buff *msg; void *hdr; @@ -222,42 +218,45 @@ void rwnx_cfg80211_ch_switch_notify(struct cfg80211_registered_device *rdev, if ((notif == NL80211_CMD_CH_SWITCH_STARTED_NOTIFY) && (nla_put_u32(msg, NL80211_ATTR_CH_SWITCH_COUNT, count))) - goto nla_put_failure; + goto nla_put_failure; genlmsg_end(msg, hdr); - genlmsg_multicast_netns(&rwnx_nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, - NL80211_MCGRP_MLME, gfp); + genlmsg_multicast_netns(&rwnx_nl80211_fam, wiphy_net(&rdev->wiphy), msg, + 0, NL80211_MCGRP_MLME, gfp); return; - nla_put_failure: +nla_put_failure: nlmsg_free(msg); } void rwnx_cfg80211_ch_switch_started_notify(struct net_device *dev, - struct cfg80211_chan_def *chandef, - u8 count - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) - , bool quiet - #endif - ) + struct cfg80211_chan_def *chandef, + u8 count +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) + , + bool quiet +#endif +) { struct wireless_dev *wdev = dev->ieee80211_ptr; struct wiphy *wiphy = wdev->wiphy; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy); rwnx_cfg80211_ch_switch_notify(rdev, dev, chandef, GFP_KERNEL, - NL80211_CMD_CH_SWITCH_STARTED_NOTIFY, count); + NL80211_CMD_CH_SWITCH_STARTED_NOTIFY, + count); } int rwnx_regulatory_set_wiphy_regd_sync_rtnl(struct wiphy *wiphy, - struct ieee80211_regdomain *rd) + struct ieee80211_regdomain *rd) { wiphy_apply_custom_regulatory(wiphy, rd); return 0; } -void rwnx_skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list) +void rwnx_skb_append(struct sk_buff *old, struct sk_buff *newsk, + struct sk_buff_head *list) { unsigned long flags; struct sk_buff *prev = old; @@ -271,8 +270,8 @@ void rwnx_skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_ spin_unlock_irqrestore(&list->lock, flags); } -bool rwnx_ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef, - u8 *op_class) +bool rwnx_ieee80211_chandef_to_operating_class( + struct cfg80211_chan_def *chandef, u8 *op_class) { u8 vht_opclass; u32 freq = chandef->center_freq1; @@ -400,7 +399,8 @@ bool rwnx_ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef return false; } -int rwnx_call_usermodehelper(const char *path, char **argv, char **envp, int wait) +int rwnx_call_usermodehelper(const char *path, char **argv, char **envp, + int wait) { return -1; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.h index a41f57832..630ee0305 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_gki.h @@ -8,64 +8,68 @@ //#if IS_ENABLED(CONFIG_GKI_OPT_FEATURES) && IS_ENABLED(CONFIG_ANDROID) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) - -bool rwnx_cfg80211_rx_spurious_frame(struct net_device *dev, - const u8 *addr, gfp_t gfp); +bool rwnx_cfg80211_rx_spurious_frame(struct net_device *dev, const u8 *addr, + gfp_t gfp); bool rwnx_cfg80211_rx_unexpected_4addr_frame(struct net_device *dev, - const u8 *addr, gfp_t gfp); + const u8 *addr, gfp_t gfp); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) -void rwnx_cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr, - const u8 *ie, u8 ie_len, - int sig_dbm, gfp_t gfp); +void rwnx_cfg80211_notify_new_peer_candidate(struct net_device *dev, + const u8 *addr, const u8 *ie, + u8 ie_len, int sig_dbm, gfp_t gfp); #endif -void rwnx_cfg80211_report_obss_beacon(struct wiphy *wiphy, - const u8 *frame, size_t len, - int freq, int sig_dbm); +void rwnx_cfg80211_report_obss_beacon(struct wiphy *wiphy, const u8 *frame, + size_t len, int freq, int sig_dbm); void rwnx_cfg80211_ch_switch_notify(struct cfg80211_registered_device *rdev, - struct net_device *netdev, - struct cfg80211_chan_def *chandef, - gfp_t gfp, - enum nl80211_commands notif, - u8 count); + struct net_device *netdev, + struct cfg80211_chan_def *chandef, + gfp_t gfp, enum nl80211_commands notif, + u8 count); void rwnx_cfg80211_ch_switch_started_notify(struct net_device *dev, - struct cfg80211_chan_def *chandef, - u8 count - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) - , bool quiet - #endif - ); + struct cfg80211_chan_def *chandef, + u8 count +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) + , + bool quiet +#endif +); int rwnx_regulatory_set_wiphy_regd_sync_rtnl(struct wiphy *wiphy, - struct ieee80211_regdomain *rd); + struct ieee80211_regdomain *rd); -void rwnx_skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list); +void rwnx_skb_append(struct sk_buff *old, struct sk_buff *newsk, + struct sk_buff_head *list); -bool rwnx_ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef, - u8 *op_class); +bool rwnx_ieee80211_chandef_to_operating_class( + struct cfg80211_chan_def *chandef, u8 *op_class); -int rwnx_call_usermodehelper(const char *path, char **argv, char **envp, int wait); +int rwnx_call_usermodehelper(const char *path, char **argv, char **envp, + int wait); #else -#define rwnx_cfg80211_rx_spurious_frame cfg80211_rx_spurious_frame -#define rwnx_cfg80211_rx_unexpected_4addr_frame cfg80211_rx_unexpected_4addr_frame +#define rwnx_cfg80211_rx_spurious_frame cfg80211_rx_spurious_frame +#define rwnx_cfg80211_rx_unexpected_4addr_frame \ + cfg80211_rx_unexpected_4addr_frame #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) -#define rwnx_cfg80211_notify_new_peer_candidate cfg80211_notify_new_peer_candidate +#define rwnx_cfg80211_notify_new_peer_candidate \ + cfg80211_notify_new_peer_candidate #endif -#define rwnx_cfg80211_report_obss_beacon cfg80211_report_obss_beacon -#define rwnx_cfg80211_ch_switch_notify cfg80211_ch_switch_notify -#define rwnx_cfg80211_ch_switch_started_notify cfg80211_ch_switch_started_notify -#define rwnx_regulatory_set_wiphy_regd_sync_rtnl regulatory_set_wiphy_regd_sync_rtnl -#define rwnx_skb_append skb_append -#define rwnx_ieee80211_chandef_to_operating_class ieee80211_chandef_to_operating_class -#define rwnx_call_usermodehelper call_usermodehelper +#define rwnx_cfg80211_report_obss_beacon cfg80211_report_obss_beacon +#define rwnx_cfg80211_ch_switch_notify cfg80211_ch_switch_notify +#define rwnx_cfg80211_ch_switch_started_notify cfg80211_ch_switch_started_notify +#define rwnx_regulatory_set_wiphy_regd_sync_rtnl \ + regulatory_set_wiphy_regd_sync_rtnl +#define rwnx_skb_append skb_append +#define rwnx_ieee80211_chandef_to_operating_class \ + ieee80211_chandef_to_operating_class +#define rwnx_call_usermodehelper call_usermodehelper #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.c index 8bacc6b03..0684848a7 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.c @@ -57,16 +57,18 @@ #endif #include "aic_priv_cmd.h" -#define RW_DRV_DESCRIPTION "RivieraWaves 11nac driver for Linux cfg80211" -#define RW_DRV_COPYRIGHT "Copyright(c) 2015-2017 RivieraWaves" -#define RW_DRV_AUTHOR "RivieraWaves S.A.S" +#define RW_DRV_DESCRIPTION "RivieraWaves 11nac driver for Linux cfg80211" +#define RW_DRV_COPYRIGHT "Copyright(c) 2015-2017 RivieraWaves" +#define RW_DRV_AUTHOR "RivieraWaves S.A.S" -#define RWNX_PRINT_CFM_ERR(req) \ - printk(KERN_CRIT "%s: Status Error(%d)\n", #req, (&req##_cfm)->status) +#define RWNX_PRINT_CFM_ERR(req) \ + printk(KERN_CRIT "%s: Status Error(%d)\n", #req, (&req##_cfm)->status) -#define RWNX_HT_CAPABILITIES \ -{ \ - .ht_supported = true, \ +extern char country_code[]; + +#define RWNX_HT_CAPABILITIES \ + { \ + .ht_supported = true, \ .cap = 0, \ .ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K, \ .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16, \ @@ -74,40 +76,41 @@ .rx_mask = { 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, \ .rx_highest = cpu_to_le16(65), \ .tx_params = IEEE80211_HT_MCS_TX_DEFINED, \ - }, \ -} + }, \ + } -#define RWNX_VHT_CAPABILITIES \ -{ \ - .vht_supported = false, \ - .cap = \ - (7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT),\ - .vht_mcs = { \ - .rx_mcs_map = cpu_to_le16( \ - IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 2 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 14), \ - .tx_mcs_map = cpu_to_le16( \ - IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 2 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 | \ - IEEE80211_VHT_MCS_NOT_SUPPORTED << 14), \ - } \ -} +#define RWNX_VHT_CAPABILITIES \ + { \ + .vht_supported = false, \ + .cap = (7 \ + << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT), \ + .vht_mcs = { \ + .rx_mcs_map = cpu_to_le16( \ + IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 2 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 14), \ + .tx_mcs_map = cpu_to_le16( \ + IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 2 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 | \ + IEEE80211_VHT_MCS_NOT_SUPPORTED << 14), \ + } \ + } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) || defined(CONFIG_HE_FOR_OLD_KERNEL) -#define RWNX_HE_CAPABILITIES \ -{ \ - .has_he = false, \ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) || \ + defined(CONFIG_HE_FOR_OLD_KERNEL) +#define RWNX_HE_CAPABILITIES \ + { \ + .has_he = false, \ .he_cap_elem = { \ .mac_cap_info[0] = 0, \ .mac_cap_info[1] = 0, \ @@ -135,13 +138,13 @@ .rx_mcs_80p80 = cpu_to_le16(0xffff), \ .tx_mcs_80p80 = cpu_to_le16(0xffff), \ }, \ - .ppe_thres = {0x08, 0x1c, 0x07}, \ -} + .ppe_thres = {0x08, 0x1c, 0x07}, \ + } #else #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) -#define RWNX_HE_CAPABILITIES \ -{ \ - .has_he = false, \ +#define RWNX_HE_CAPABILITIES \ + { \ + .has_he = false, \ .he_cap_elem = { \ .mac_cap_info[0] = 0, \ .mac_cap_info[1] = 0, \ @@ -166,29 +169,29 @@ .rx_mcs_80p80 = cpu_to_le16(0xffff), \ .tx_mcs_80p80 = cpu_to_le16(0xffff), \ }, \ - .ppe_thres = {0x08, 0x1c, 0x07}, \ -} + .ppe_thres = {0x08, 0x1c, 0x07}, \ + } #endif #endif -#define RATE(_bitrate, _hw_rate, _flags) { \ - .bitrate = (_bitrate), \ - .flags = (_flags), \ - .hw_value = (_hw_rate), \ -} +#define RATE(_bitrate, _hw_rate, _flags) \ + { \ + .bitrate = (_bitrate), .flags = (_flags), \ + .hw_value = (_hw_rate), \ + } -#define CHAN(_freq) { \ - .center_freq = (_freq), \ - .max_power = 30, /* FIXME */ \ -} +#define CHAN(_freq) \ + { \ + .center_freq = (_freq), .max_power = 30, /* FIXME */ \ + } static struct ieee80211_rate rwnx_ratetable[] = { - RATE(10, 0x00, 0), - RATE(20, 0x01, IEEE80211_RATE_SHORT_PREAMBLE), - RATE(55, 0x02, IEEE80211_RATE_SHORT_PREAMBLE), + RATE(10, 0x00, 0), + RATE(20, 0x01, IEEE80211_RATE_SHORT_PREAMBLE), + RATE(55, 0x02, IEEE80211_RATE_SHORT_PREAMBLE), RATE(110, 0x03, IEEE80211_RATE_SHORT_PREAMBLE), - RATE(60, 0x04, 0), - RATE(90, 0x05, 0), + RATE(60, 0x04, 0), + RATE(90, 0x05, 0), RATE(120, 0x06, 0), RATE(180, 0x07, 0), RATE(240, 0x08, 0), @@ -231,31 +234,31 @@ static struct ieee80211_channel rwnx_2ghz_channels[] = { }; static struct ieee80211_channel rwnx_5ghz_channels[] = { - CHAN(5180), // 36 - 20MHz - CHAN(5200), // 40 - 20MHz - CHAN(5220), // 44 - 20MHz - CHAN(5240), // 48 - 20MHz - CHAN(5260), // 52 - 20MHz - CHAN(5280), // 56 - 20MHz - CHAN(5300), // 60 - 20MHz - CHAN(5320), // 64 - 20MHz - CHAN(5500), // 100 - 20MHz - CHAN(5520), // 104 - 20MHz - CHAN(5540), // 108 - 20MHz - CHAN(5560), // 112 - 20MHz - CHAN(5580), // 116 - 20MHz - CHAN(5600), // 120 - 20MHz - CHAN(5620), // 124 - 20MHz - CHAN(5640), // 128 - 20MHz - CHAN(5660), // 132 - 20MHz - CHAN(5680), // 136 - 20MHz - CHAN(5700), // 140 - 20MHz - CHAN(5720), // 144 - 20MHz - CHAN(5745), // 149 - 20MHz - CHAN(5765), // 153 - 20MHz - CHAN(5785), // 157 - 20MHz - CHAN(5805), // 161 - 20MHz - CHAN(5825), // 165 - 20MHz + CHAN(5180), // 36 - 20MHz + CHAN(5200), // 40 - 20MHz + CHAN(5220), // 44 - 20MHz + CHAN(5240), // 48 - 20MHz + CHAN(5260), // 52 - 20MHz + CHAN(5280), // 56 - 20MHz + CHAN(5300), // 60 - 20MHz + CHAN(5320), // 64 - 20MHz + CHAN(5500), // 100 - 20MHz + CHAN(5520), // 104 - 20MHz + CHAN(5540), // 108 - 20MHz + CHAN(5560), // 112 - 20MHz + CHAN(5580), // 116 - 20MHz + CHAN(5600), // 120 - 20MHz + CHAN(5620), // 124 - 20MHz + CHAN(5640), // 128 - 20MHz + CHAN(5660), // 132 - 20MHz + CHAN(5680), // 136 - 20MHz + CHAN(5700), // 140 - 20MHz + CHAN(5720), // 144 - 20MHz + CHAN(5745), // 149 - 20MHz + CHAN(5765), // 153 - 20MHz + CHAN(5785), // 157 - 20MHz + CHAN(5805), // 161 - 20MHz + CHAN(5825), // 165 - 20MHz // Extra channels defined only to be used for PHY measures. // Enabled only if custregd and custchan parameters are set CHAN(5190), @@ -319,20 +322,22 @@ static struct ieee80211_channel rwnx_5ghz_channels[] = { CHAN(5970), }; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) || defined(CONFIG_HE_FOR_OLD_KERNEL) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) || \ + defined(CONFIG_HE_FOR_OLD_KERNEL) struct ieee80211_sband_iftype_data rwnx_he_capa = { - .types_mask = BIT(NL80211_IFTYPE_STATION)|BIT(NL80211_IFTYPE_AP), + .types_mask = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_AP), .he_cap = RWNX_HE_CAPABILITIES, }; #endif static struct ieee80211_supported_band rwnx_band_2GHz = { - .channels = rwnx_2ghz_channels, - .n_channels = ARRAY_SIZE(rwnx_2ghz_channels) - 13, // -13 to exclude extra channels - .bitrates = rwnx_ratetable, + .channels = rwnx_2ghz_channels, + .n_channels = ARRAY_SIZE(rwnx_2ghz_channels) - + 13, // -13 to exclude extra channels + .bitrates = rwnx_ratetable, .n_bitrates = ARRAY_SIZE(rwnx_ratetable), - .ht_cap = RWNX_HT_CAPABILITIES, - .vht_cap = RWNX_VHT_CAPABILITIES, + .ht_cap = RWNX_HT_CAPABILITIES, + .vht_cap = RWNX_VHT_CAPABILITIES, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) .iftype_data = &rwnx_he_capa, .n_iftype_data = 1, @@ -340,12 +345,13 @@ static struct ieee80211_supported_band rwnx_band_2GHz = { }; static struct ieee80211_supported_band rwnx_band_5GHz = { - .channels = rwnx_5ghz_channels, - .n_channels = ARRAY_SIZE(rwnx_5ghz_channels) - 59, // -59 to exclude extra channels - .bitrates = &rwnx_ratetable[4], + .channels = rwnx_5ghz_channels, + .n_channels = ARRAY_SIZE(rwnx_5ghz_channels) - + 59, // -59 to exclude extra channels + .bitrates = &rwnx_ratetable[4], .n_bitrates = ARRAY_SIZE(rwnx_ratetable) - 4, - .ht_cap = RWNX_HT_CAPABILITIES, - .vht_cap = RWNX_VHT_CAPABILITIES, + .ht_cap = RWNX_HT_CAPABILITIES, + .vht_cap = RWNX_VHT_CAPABILITIES, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) .iftype_data = &rwnx_he_capa, .n_iftype_data = 1, @@ -353,48 +359,48 @@ static struct ieee80211_supported_band rwnx_band_5GHz = { }; static struct ieee80211_iface_limit rwnx_limits[] = { - { .max = 1, - .types = BIT(NL80211_IFTYPE_STATION)}, - { .max = 1, - .types = BIT(NL80211_IFTYPE_AP)}, + { .max = 1, .types = BIT(NL80211_IFTYPE_STATION) }, + { .max = 1, .types = BIT(NL80211_IFTYPE_AP) }, #ifdef CONFIG_USE_P2P0 { .max = 2, #else { .max = 1, #endif - .types = BIT(NL80211_IFTYPE_P2P_CLIENT) | BIT(NL80211_IFTYPE_P2P_GO)}, + .types = + BIT(NL80211_IFTYPE_P2P_CLIENT) | BIT(NL80211_IFTYPE_P2P_GO) }, #ifndef CONFIG_USE_P2P0 - { .max = 1, - .types = BIT(NL80211_IFTYPE_P2P_DEVICE), + { + .max = 1, + .types = BIT(NL80211_IFTYPE_P2P_DEVICE), } #endif }; static struct ieee80211_iface_limit rwnx_limits_dfs[] = { - { .max = NX_VIRT_DEV_MAX, .types = BIT(NL80211_IFTYPE_AP)} + { .max = NX_VIRT_DEV_MAX, .types = BIT(NL80211_IFTYPE_AP) } }; static const struct ieee80211_iface_combination rwnx_combinations[] = { { - .limits = rwnx_limits, - .n_limits = ARRAY_SIZE(rwnx_limits), + .limits = rwnx_limits, + .n_limits = ARRAY_SIZE(rwnx_limits), #ifdef CONFIG_MCC .num_different_channels = NX_CHAN_CTXT_CNT, #else .num_different_channels = 1, #endif - .max_interfaces = NX_VIRT_DEV_MAX, + .max_interfaces = NX_VIRT_DEV_MAX, }, /* Keep this combination as the last one */ { - .limits = rwnx_limits_dfs, - .n_limits = ARRAY_SIZE(rwnx_limits_dfs), + .limits = rwnx_limits_dfs, + .n_limits = ARRAY_SIZE(rwnx_limits_dfs), .num_different_channels = 1, - .max_interfaces = NX_VIRT_DEV_MAX, + .max_interfaces = NX_VIRT_DEV_MAX, .radar_detect_widths = (BIT(NL80211_CHAN_WIDTH_20_NOHT) | - BIT(NL80211_CHAN_WIDTH_20) | - BIT(NL80211_CHAN_WIDTH_40) | - BIT(NL80211_CHAN_WIDTH_80)), + BIT(NL80211_CHAN_WIDTH_20) | + BIT(NL80211_CHAN_WIDTH_40) | + BIT(NL80211_CHAN_WIDTH_80)), } }; @@ -456,25 +462,19 @@ rwnx_default_mgmt_stypes[NUM_NL80211_IFTYPES] = { }, }; - static u32 cipher_suites[] = { - WLAN_CIPHER_SUITE_WEP40, - WLAN_CIPHER_SUITE_WEP104, - WLAN_CIPHER_SUITE_TKIP, - WLAN_CIPHER_SUITE_CCMP, + WLAN_CIPHER_SUITE_WEP40, WLAN_CIPHER_SUITE_WEP104, + WLAN_CIPHER_SUITE_TKIP, WLAN_CIPHER_SUITE_CCMP, WLAN_CIPHER_SUITE_AES_CMAC, // reserved entries to enable AES-CMAC and/or SMS4 - WLAN_CIPHER_SUITE_SMS4, - 0, + WLAN_CIPHER_SUITE_SMS4, 0, }; #define NB_RESERVED_CIPHER 1; static const int rwnx_ac2hwq[1][NL80211_NUM_ACS] = { - { - [NL80211_TXQ_Q_VO] = RWNX_HWQ_VO, - [NL80211_TXQ_Q_VI] = RWNX_HWQ_VI, - [NL80211_TXQ_Q_BE] = RWNX_HWQ_BE, - [NL80211_TXQ_Q_BK] = RWNX_HWQ_BK - } + { [NL80211_TXQ_Q_VO] = RWNX_HWQ_VO, + [NL80211_TXQ_Q_VI] = RWNX_HWQ_VI, + [NL80211_TXQ_Q_BE] = RWNX_HWQ_BE, + [NL80211_TXQ_Q_BK] = RWNX_HWQ_BK } }; const int rwnx_tid2hwq[IEEE80211_NUM_TIDS] = { @@ -505,12 +505,11 @@ static const int rwnx_hwq2uapsd[NL80211_NUM_ACS] = { [RWNX_HWQ_BK] = IEEE80211_WMM_IE_STA_QOSINFO_AC_BK, }; -#define P2P_ALIVE_TIME_MS (1*1000) -#define P2P_ALIVE_TIME_COUNT 200 - +#define P2P_ALIVE_TIME_MS (1 * 1000) +#define P2P_ALIVE_TIME_COUNT 200 extern uint8_t scanning; -int aicwf_dbg_level = LOGERROR|LOGINFO|LOGDEBUG|LOGTRACE; +int aicwf_dbg_level = LOGERROR | LOGINFO | LOGDEBUG | LOGTRACE; module_param(aicwf_dbg_level, int, 0660); int testmode = 0; char aic_fw_path[200]; @@ -521,7 +520,6 @@ u8 chip_id = 0; int rwnx_init_cmd_array(void); void rwnx_free_cmd_array(void); - /********************************************************************* * helper *********************************************************************/ @@ -547,7 +545,8 @@ void rwnx_enable_wapi(struct rwnx_hw *rwnx_hw) void rwnx_enable_mfp(struct rwnx_hw *rwnx_hw) { - cipher_suites[rwnx_hw->wiphy->n_cipher_suites] = WLAN_CIPHER_SUITE_AES_CMAC; + cipher_suites[rwnx_hw->wiphy->n_cipher_suites] = + WLAN_CIPHER_SUITE_AES_CMAC; rwnx_hw->wiphy->n_cipher_suites++; } @@ -613,7 +612,6 @@ u8 *rwnx_build_bcn(struct rwnx_bcn *bcn, struct cfg80211_beacon_data *new) return buf; } - static void rwnx_del_bcn(struct rwnx_bcn *bcn) { if (bcn->head) { @@ -642,7 +640,7 @@ static void rwnx_del_bcn(struct rwnx_bcn *bcn) * Link channel ctxt to a vif and thus increments count for this context. */ void rwnx_chanctx_link(struct rwnx_vif *vif, u8 ch_idx, - struct cfg80211_chan_def *chandef) + struct cfg80211_chan_def *chandef) { struct rwnx_chanctx *ctxt; @@ -689,8 +687,8 @@ void rwnx_chanctx_unlink(struct rwnx_vif *vif) /* If current chan ctxt is no longer linked to a vif disable radar detection (no need to check if it was activated) */ rwnx_radar_detection_enable(&vif->rwnx_hw->radar, - RWNX_RADAR_DETECT_DISABLE, - RWNX_RADAR_RIU); + RWNX_RADAR_DETECT_DISABLE, + RWNX_RADAR_RIU); } /* set chan to null, so that if this ctxt is relinked to a vif that don't have channel information, don't use wrong information */ @@ -702,7 +700,7 @@ void rwnx_chanctx_unlink(struct rwnx_vif *vif) int rwnx_chanctx_valid(struct rwnx_hw *rwnx_hw, u8 ch_idx) { if (ch_idx >= NX_CHAN_CTXT_CNT || - rwnx_hw->chanctx_table[ch_idx].chan_def.chan == NULL) { + rwnx_hw->chanctx_table[ch_idx].chan_def.chan == NULL) { return 0; } @@ -733,45 +731,50 @@ static void rwnx_csa_finish(struct work_struct *ws) buf = kmalloc(csa->bcn.len, GFP_KERNEL); if (!buf) { - printk ("%s buf fail\n", __func__); + printk("%s buf fail\n", __func__); return; } pos = buf; memcpy(pos, csa->bcn.head, csa->bcn.head_len); pos += csa->bcn.head_len; - *pos++ = WLAN_EID_TIM; - *pos++ = 4; - *pos++ = 0; - *pos++ = csa->bcn.dtim; - *pos++ = 0; - *pos++ = 0; - if (csa->bcn.tail) { - memcpy(pos, csa->bcn.tail, csa->bcn.tail_len); - pos += csa->bcn.tail_len; - } - if (csa->bcn.ies) { - memcpy(pos, csa->bcn.ies, csa->bcn.ies_len); - } + *pos++ = WLAN_EID_TIM; + *pos++ = 4; + *pos++ = 0; + *pos++ = csa->bcn.dtim; + *pos++ = 0; + *pos++ = 0; + if (csa->bcn.tail) { + memcpy(pos, csa->bcn.tail, csa->bcn.tail_len); + pos += csa->bcn.tail_len; + } + if (csa->bcn.ies) { + memcpy(pos, csa->bcn.ies, csa->bcn.ies_len); + } if (!error) { - error = rwnx_send_bcn(rwnx_hw, buf, vif->vif_index, csa->bcn.len); + error = rwnx_send_bcn(rwnx_hw, buf, vif->vif_index, + csa->bcn.len); if (error) return; error = rwnx_send_bcn_change(rwnx_hw, vif->vif_index, 0, - csa->bcn.len, csa->bcn.head_len, - csa->bcn.tim_len, NULL); + csa->bcn.len, csa->bcn.head_len, + csa->bcn.tim_len, NULL); } if (error) { - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)) cfg80211_stop_iface(rwnx_hw->wiphy, &vif->wdev, GFP_KERNEL); - #else +#else cfg80211_disconnected(vif->ndev, 0, NULL, 0, 0, GFP_KERNEL); - #endif +#endif } else { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)) + wiphy_lock(rwnx_hw->wiphy); +#else mutex_lock(&vif->wdev.mtx); __acquire(&vif->wdev.mtx); +#endif spin_lock_bh(&rwnx_hw->cb_lock); rwnx_chanctx_unlink(vif); rwnx_chanctx_link(vif, csa->ch_idx, &csa->chandef); @@ -788,8 +791,12 @@ static void rwnx_csa_finish(struct work_struct *ws) #else cfg80211_ch_switch_notify(vif->ndev, &csa->chandef); #endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)) + wiphy_unlock(rwnx_hw->wiphy); +#else mutex_unlock(&vif->wdev.mtx); __release(&vif->wdev.mtx); +#endif } rwnx_del_csa(vif); } @@ -853,7 +860,7 @@ void rwnx_update_mesh_power_mode(struct rwnx_vif *vif) mesh_pm = vif->ap.next_mesh_pm; } else { mesh_pm = NL80211_MESH_POWER_DEEP_SLEEP; - list_for_each_entry(sta, &vif->ap.sta_list, list) { + list_for_each_entry (sta, &vif->ap.sta_list, list) { if (sta->valid && (sta->mesh_pm < mesh_pm)) { mesh_pm = sta->mesh_pm; } @@ -865,8 +872,9 @@ void rwnx_update_mesh_power_mode(struct rwnx_vif *vif) mask = BIT(NL80211_MESHCONF_POWER_MODE - 1); mesh_conf.power_mode = mesh_pm; - if (rwnx_send_mesh_update_req(vif->rwnx_hw, vif, mask, &mesh_conf, &cfm) || - cfm.status) + if (rwnx_send_mesh_update_req(vif->rwnx_hw, vif, mask, &mesh_conf, + &cfm) || + cfm.status) return; vif->ap.mesh_pm = mesh_pm; @@ -883,24 +891,32 @@ void netdev_br_init(struct net_device *netdev) /* if(check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) */ { - /* struct net_bridge *br = netdev->br_port->br; */ /* ->dev->dev_addr; */ - #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) +/* struct net_bridge *br = netdev->br_port->br; */ /* ->dev->dev_addr; */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) if (netdev->br_port) - #else +#else if (rcu_dereference(rwnx_vif->ndev->rx_handler_data)) - #endif +#endif { struct net_device *br_netdev; - br_netdev = dev_get_by_name(&init_net, CONFIG_BR_SUPPORT_BRNAME); + br_netdev = dev_get_by_name(&init_net, + CONFIG_BR_SUPPORT_BRNAME); if (br_netdev) { - memcpy(rwnx_vif->br_mac, br_netdev->dev_addr, ETH_ALEN); + memcpy(rwnx_vif->br_mac, br_netdev->dev_addr, + ETH_ALEN); dev_put(br_netdev); - printk(FUNC_NDEV_FMT" bind bridge dev "NDEV_FMT"("MAC_FMT")\n" - , FUNC_NDEV_ARG(netdev), NDEV_ARG(br_netdev), MAC_ARG(br_netdev->dev_addr)); + printk(FUNC_NDEV_FMT + " bind bridge dev " NDEV_FMT "(" MAC_FMT + ")\n", + FUNC_NDEV_ARG(netdev), + NDEV_ARG(br_netdev), + MAC_ARG(br_netdev->dev_addr)); } else { - printk(FUNC_NDEV_FMT" can't get bridge dev by name \"%s\"\n" - , FUNC_NDEV_ARG(netdev), CONFIG_BR_SUPPORT_BRNAME); + printk(FUNC_NDEV_FMT + " can't get bridge dev by name \"%s\"\n", + FUNC_NDEV_ARG(netdev), + CONFIG_BR_SUPPORT_BRNAME); } } @@ -913,6 +929,17 @@ void netdev_br_init(struct net_device *netdev) } #endif /* CONFIG_BR_SUPPORT */ +void rwnx_set_conn_state(atomic_t *drv_conn_state, int state) +{ + if ((int)atomic_read(drv_conn_state) != state) { + AICWFDBG(LOGDEBUG, "%s drv_conn_state:%p %s --> %s \r\n", + __func__, drv_conn_state, + s_conn_state[(int)atomic_read(drv_conn_state)], + s_conn_state[state]); + + atomic_set(drv_conn_state, state); + } +} /********************************************************************* * netdev callbacks @@ -937,63 +964,71 @@ static int rwnx_open(struct net_device *dev) RWNX_DBG(RWNX_FN_ENTRY_STR); - while(test_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags)){ + while (test_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags)) { msleep(100); AICWFDBG(LOGDEBUG, "%s waiting for rwnx_close \r\n", __func__); waiting_counter--; - if(waiting_counter == 0){ - AICWFDBG(LOGERROR, "%s error waiting for close time out \r\n", __func__); + if (waiting_counter == 0) { + AICWFDBG(LOGERROR, + "%s error waiting for close time out \r\n", + __func__); break; } } +#ifdef AICWF_LATENCY_MODE + if ((testmode == 0) && + (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT)) { + rwnx_send_me_set_lp_level(rwnx_hw, 1, 1); + } +#endif + #ifdef CONFIG_GPIO_WAKEUP //close lp mode // rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, 0); -#endif//CONFIG_GPIO_WAKEUP +#endif //CONFIG_GPIO_WAKEUP // Check if it is the first opened VIF if (rwnx_hw->vif_started == 0) { // Start the FW - error = rwnx_send_start(rwnx_hw); - if (error) - return error; + error = rwnx_send_start(rwnx_hw); + if (error) + return error; - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - error = rwnx_send_dbg_mem_mask_write_req(rwnx_hw, 0x4033b300, 0xFF, rwnx_rx_gain); - if(error){ - return error; - } - } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + error = rwnx_send_dbg_mem_mask_write_req( + rwnx_hw, 0x4033b300, 0xFF, rwnx_rx_gain); + if (error) { + return error; + } + } - #ifdef CONFIG_COEX - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || - ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC|| - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) && testmode == 0)){ - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { +#ifdef CONFIG_COEX + if (testmode == 0) { rwnx_send_coex_req(rwnx_hw, 0, 1); } - } - #endif +#endif - /* Device is now started */ + /* Device is now started */ } - #ifdef CONFIG_COEX - else if ((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO)) { - rwnx_send_coex_req(rwnx_hw, 1, 0); - } - #endif set_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags); - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); - AICWFDBG(LOGDEBUG, "%s rwnx_vif->drv_flags:%d\r\n", __func__, (int)rwnx_vif->drv_flags); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + RWNX_DRV_STATUS_DISCONNECTED); + AICWFDBG(LOGDEBUG, "%s rwnx_vif->drv_flags:%d\r\n", __func__, + (int)rwnx_vif->drv_flags); - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO) { + if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT || + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO) { if (!rwnx_hw->is_p2p_alive) { if (rwnx_hw->p2p_dev_vif && !rwnx_hw->p2p_dev_vif->up) { - err = rwnx_send_add_if (rwnx_hw, rwnx_hw->p2p_dev_vif->wdev.address, - RWNX_VIF_TYPE(rwnx_hw->p2p_dev_vif), false, &add_if_cfm); + err = rwnx_send_add_if( + rwnx_hw, + rwnx_hw->p2p_dev_vif->wdev.address, + RWNX_VIF_TYPE(rwnx_hw->p2p_dev_vif), + false, &add_if_cfm); if (err) { return -EIO; } @@ -1004,15 +1039,18 @@ static int rwnx_open(struct net_device *dev) /* Save the index retrieved from LMAC */ spin_lock_bh(&rwnx_hw->cb_lock); - rwnx_hw->p2p_dev_vif->vif_index = add_if_cfm.inst_nbr; + rwnx_hw->p2p_dev_vif->vif_index = + add_if_cfm.inst_nbr; rwnx_hw->p2p_dev_vif->up = true; rwnx_hw->vif_started++; - rwnx_hw->vif_table[add_if_cfm.inst_nbr] = rwnx_hw->p2p_dev_vif; + rwnx_hw->vif_table[add_if_cfm.inst_nbr] = + rwnx_hw->p2p_dev_vif; spin_unlock_bh(&rwnx_hw->cb_lock); } rwnx_hw->is_p2p_alive = 1; #ifndef CONFIG_USE_P2P0 - mod_timer(&rwnx_hw->p2p_alive_timer, jiffies + msecs_to_jiffies(1000)); + mod_timer(&rwnx_hw->p2p_alive_timer, + jiffies + msecs_to_jiffies(1000)); atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); #endif } @@ -1030,13 +1068,16 @@ static int rwnx_open(struct net_device *dev) rwnx_vif->up = true; rwnx_hw->vif_started++; rwnx_hw->vif_table[add_if_cfm.inst_nbr] = rwnx_vif; - AICWFDBG(LOGDEBUG, "%s ap create vif in rwnx_hw->vif_table[%d] \r\n", - __func__, rwnx_vif->vif_index); + AICWFDBG(LOGDEBUG, + "%s ap create vif in rwnx_hw->vif_table[%d] \r\n", + __func__, rwnx_vif->vif_index); spin_unlock_bh(&rwnx_hw->cb_lock); } else { /* Forward the information to the LMAC, * p2p value not used in FMAC configuration, iftype is sufficient */ - error = rwnx_send_add_if (rwnx_hw, rwnx_vif->wdev.address, RWNX_VIF_TYPE(rwnx_vif), false, &add_if_cfm); + error = rwnx_send_add_if(rwnx_hw, rwnx_vif->wdev.address, + RWNX_VIF_TYPE(rwnx_vif), false, + &add_if_cfm); if (error) { printk("add if fail\n"); return error; @@ -1053,15 +1094,16 @@ static int rwnx_open(struct net_device *dev) rwnx_vif->up = true; rwnx_hw->vif_started++; rwnx_hw->vif_table[add_if_cfm.inst_nbr] = rwnx_vif; - AICWFDBG(LOGDEBUG, "%s sta create vif in rwnx_hw->vif_table[%d] \r\n", - __func__, rwnx_vif->vif_index); + AICWFDBG(LOGDEBUG, + "%s sta create vif in rwnx_hw->vif_table[%d] \r\n", + __func__, rwnx_vif->vif_index); spin_unlock_bh(&rwnx_hw->cb_lock); #ifdef CONFIG_USE_P2P0 - if(rwnx_vif->is_p2p_vif){ - rwnx_hw->p2p_dev_vif = rwnx_vif; - rwnx_hw->is_p2p_alive = 1; - } + if (rwnx_vif->is_p2p_vif) { + rwnx_hw->p2p_dev_vif = rwnx_vif; + rwnx_hw->is_p2p_alive = 1; + } #endif } @@ -1069,13 +1111,30 @@ static int rwnx_open(struct net_device *dev) rwnx_hw->monitor_vif = rwnx_vif->vif_index; if (rwnx_vif->ch_index != RWNX_CH_NOT_SET) { //Configure the monitor channel - error = rwnx_send_config_monitor_req(rwnx_hw, &rwnx_hw->chanctx_table[rwnx_vif->ch_index].chan_def, NULL); + error = rwnx_send_config_monitor_req( + rwnx_hw, + &rwnx_hw->chanctx_table[rwnx_vif->ch_index] + .chan_def, + NULL); } +#if defined(CONFIG_RWNX_MON_XMIT) + rwnx_txq_unk_vif_init(rwnx_vif); +#endif +#if defined(CONFIG_RWNX_MON_RXFILTER) + rwnx_send_set_filter(rwnx_hw, + (FIF_BCN_PRBRESP_PROMISC | FIF_OTHER_BSS | + FIF_PSPOLL | FIF_PROBE_REQ)); +#endif } - #ifdef CONFIG_BR_SUPPORT - netdev_br_init(dev); - #endif /* CONFIG_BR_SUPPORT */ +#if defined(CONFIG_RWNX_MON_XMIT) + netif_carrier_on(dev); + AICWFDBG(LOGINFO, "monitor xmit: netif_carrier_on\n"); +#endif + +#ifdef CONFIG_BR_SUPPORT + netdev_br_init(dev); +#endif /* CONFIG_BR_SUPPORT */ //netif_carrier_off(dev); netif_start_queue(dev); @@ -1112,13 +1171,21 @@ static int rwnx_close(struct net_device *dev) RWNX_DBG(RWNX_FN_ENTRY_STR); test_counter = waiting_counter; - while(atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTING|| - atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTING){ - AICWFDBG(LOGDEBUG, "%s wifi is connecting or disconnecting, waiting 200ms for state to stable\r\n", __func__); + while (atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_DISCONNECTING || + atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_CONNECTING) { + AICWFDBG( + LOGDEBUG, + "%s wifi is connecting or disconnecting, waiting 200ms for state to stable\r\n", + __func__); msleep(200); test_counter--; - if(test_counter == 0){ - AICWFDBG(LOGERROR, "%s connecting or disconnecting, not finish\r\n", __func__); + if (test_counter == 0) { + AICWFDBG( + LOGERROR, + "%s connecting or disconnecting, not finish\r\n", + __func__); WARN_ON(1); break; } @@ -1136,7 +1203,7 @@ static int rwnx_close(struct net_device *dev) /* Abort scan request on the vif */ if (rwnx_hw->scan_request && - rwnx_hw->scan_request->wdev == &rwnx_vif->wdev) { + rwnx_hw->scan_request->wdev == &rwnx_vif->wdev) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) struct cfg80211_scan_info info = { .aborted = true, @@ -1149,7 +1216,7 @@ static int rwnx_close(struct net_device *dev) rwnx_hw->scan_request = NULL; ret = rwnx_send_scanu_cancel_req(rwnx_hw, NULL); - mdelay(35);//make sure firmware take affect + mdelay(35); //make sure firmware take affect if (ret) { printk("scanu_cancel fail\n"); return ret; @@ -1164,36 +1231,38 @@ static int rwnx_close(struct net_device *dev) } rwnx_vif->up = false; - AICWFDBG(LOGDEBUG, "%s rwnx_vif[%d] down \r\n", __func__, rwnx_vif->vif_index); + AICWFDBG(LOGDEBUG, "%s rwnx_vif[%d] down \r\n", __func__, + rwnx_vif->vif_index); if (netif_carrier_ok(dev)) { if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || - RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { cfg80211_disconnected(dev, WLAN_REASON_DEAUTH_LEAVING, - NULL, 0, true, GFP_ATOMIC); + NULL, 0, true, GFP_ATOMIC); netif_tx_stop_all_queues(dev); netif_carrier_off(dev); udelay(1000); } else if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP_VLAN) { netif_carrier_off(dev); } else { - netdev_warn(dev, "AP not stopped when disabling interface"); + netdev_warn(dev, + "AP not stopped when disabling interface"); } - #ifdef CONFIG_BR_SUPPORT - /* if (OPMODE & (WIFI_STATION_STATE | WIFI_ADHOC_STATE)) */ - { - /* void nat25_db_cleanup(_adapter *priv); */ - nat25_db_cleanup(rwnx_vif); - } - #endif /* CONFIG_BR_SUPPORT */ - +#ifdef CONFIG_BR_SUPPORT + /* if (OPMODE & (WIFI_STATION_STATE | WIFI_ADHOC_STATE)) */ + { + /* void nat25_db_cleanup(_adapter *priv); */ + nat25_db_cleanup(rwnx_vif); + } +#endif /* CONFIG_BR_SUPPORT */ } #if defined(AICWF_USB_SUPPORT) if (usbdev != NULL) { if (usbdev->state != USB_DOWN_ST) - rwnx_send_remove_if (rwnx_hw, rwnx_vif->vif_index, false); + rwnx_send_remove_if(rwnx_hw, rwnx_vif->vif_index, + false); } #endif #if defined(AICWF_SDIO_SUPPORT) @@ -1202,30 +1271,42 @@ static int rwnx_close(struct net_device *dev) sdiodev = bus_if->bus_priv.sdio; } if (sdiodev != NULL) { - if (sdiodev->bus_if->state != BUS_DOWN_ST){ - if(RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || - RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT){ + if (sdiodev->bus_if->state != BUS_DOWN_ST) { + if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || + RWNX_VIF_TYPE(rwnx_vif) == + NL80211_IFTYPE_P2P_CLIENT) { test_counter = waiting_counter; - if(atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED){ - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); - rwnx_send_sm_disconnect_req(rwnx_hw, rwnx_vif, 3); - while (atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTING) { - AICWFDBG(LOGDEBUG, "%s wifi is disconnecting, waiting 100ms for state to stable\r\n", __func__); + if (atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_CONNECTED) { + rwnx_set_conn_state( + &rwnx_vif->drv_conn_state, + RWNX_DRV_STATUS_DISCONNECTING); + rwnx_send_sm_disconnect_req( + rwnx_hw, rwnx_vif, 3); + while (atomic_read( + &rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_DISCONNECTING) { + AICWFDBG( + LOGDEBUG, + "%s wifi is disconnecting, waiting 100ms for state to stable\r\n", + __func__); msleep(100); test_counter--; - if (test_counter ==0) + if (test_counter == 0) break; } } } #ifdef CONFIG_USE_P2P0 - if(!rwnx_vif->is_p2p_vif || ( rwnx_vif->is_p2p_vif && rwnx_hw->is_p2p_alive)){ + if (!rwnx_vif->is_p2p_vif || + (rwnx_vif->is_p2p_vif && rwnx_hw->is_p2p_alive)) { if (rwnx_vif->is_p2p_vif) rwnx_hw->is_p2p_alive = 0; #endif - rwnx_send_remove_if (rwnx_hw, rwnx_vif->vif_index, false); + rwnx_send_remove_if(rwnx_hw, + rwnx_vif->vif_index, false); #ifdef CONFIG_USE_P2P0 - } + } #endif } } @@ -1244,7 +1325,7 @@ static int rwnx_close(struct net_device *dev) spin_unlock_bh(&rwnx_hw->cb_lock); if (rwnx_hw->vif_started == 0) { - /* This also lets both ipc sides remain in sync before resetting */ + /* This also lets both ipc sides remain in sync before resetting */ #if 0 rwnx_ipc_tx_drain(rwnx_hw); #else @@ -1253,51 +1334,41 @@ static int rwnx_close(struct net_device *dev) #else if (sdiodev->bus_if->state != BUS_DOWN_ST) { #endif -#ifdef CONFIG_COEX - if (testmode == 0) - rwnx_send_coex_req(rwnx_hw, 1, 0); -#endif - rwnx_send_reset(rwnx_hw); - // Set parameters to firmware + rwnx_send_reset(rwnx_hw); + // Set parameters to firmware if (testmode == 0) { rwnx_send_me_config_req(rwnx_hw); // Set channel parameters to firmware - rwnx_send_me_chan_config_req(rwnx_hw); + rwnx_send_me_chan_config_req(rwnx_hw, + country_code); } } #endif } -#ifdef CONFIG_COEX - else { - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO) - rwnx_send_coex_req(rwnx_hw, 0, 1); - } -#endif clear_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags); - AICWFDBG(LOGDEBUG, "%s rwnx_vif->drv_flags:%d\r\n", __func__, (int)rwnx_vif->drv_flags); - -#ifdef CONFIG_GPIO_WAKEUP - //open lp mode - //rwnx_send_me_set_lp_level(g_rwnx_plat->sdiodev->rwnx_hw, 1); -#if defined(CONFIG_SDIO_PWRCTRL) - aicwf_sdio_pwr_stctl(g_rwnx_plat->sdiodev, SDIO_SLEEP_ST); -#endif - ret = aicwf_sdio_writeb(g_rwnx_plat->sdiodev, g_rwnx_plat->sdiodev->sdio_reg.wakeup_reg, 2); - if (ret < 0) { - sdio_err("reg:%d write failed!\n", g_rwnx_plat->sdiodev->sdio_reg.wakeup_reg); - } -#endif//CONFIG_GPIO_WAKEUP + AICWFDBG(LOGDEBUG, "%s rwnx_vif->drv_flags:%d\r\n", __func__, + (int)rwnx_vif->drv_flags); return 0; } -#define IOCTL_HOSTAPD (SIOCIWFIRSTPRIV+28) -#define IOCTL_WPAS (SIOCIWFIRSTPRIV+30) +#if defined(CONFIG_PLATFORM_ROCKCHIP) || defined(CONFIG_PLATFORM_ROCKCHIP2) +#ifdef CONFIG_SHUTDOWN_CALLBACK +int rwnx_close_(struct net_device *dev) +{ + return rwnx_close(dev); +} +#endif +#endif + +#define IOCTL_HOSTAPD (SIOCIWFIRSTPRIV + 28) +#define IOCTL_WPAS (SIOCIWFIRSTPRIV + 30) #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) static int rwnx_do_ioctl(struct net_device *net, struct ifreq *req, int cmd) #else -static int rwnx_do_ioctl(struct net_device *net, struct ifreq *req, void __user *data, int cmd) +static int rwnx_do_ioctl(struct net_device *net, struct ifreq *req, + void __user *data, int cmd) #endif { int ret = 0; @@ -1312,15 +1383,15 @@ static int rwnx_do_ioctl(struct net_device *net, struct ifreq *req, void __user case SIOCDEVPRIVATE: AICWFDBG(LOGINFO, "IOCTL SIOCDEVPRIVATE\n"); break; - case (SIOCDEVPRIVATE+1): + case (SIOCDEVPRIVATE + 1): AICWFDBG(LOGINFO, "IOCTL PRIVATE\n"); ret = android_priv_cmd(net, req, cmd); break; - case (SIOCDEVPRIVATE+2): + case (SIOCDEVPRIVATE + 2): AICWFDBG(LOGINFO, "IOCTL PRIVATE+2\n"); - #ifdef CONFIG_MCU_MESSAGE +#ifdef CONFIG_MCU_MESSAGE devipc_cust_msg(net, req, cmd); - #endif +#endif break; default: ret = -EOPNOTSUPP; @@ -1355,7 +1426,7 @@ static struct net_device_stats *rwnx_get_stats(struct net_device *dev) * transmit queues. */ u16 rwnx_select_queue(struct net_device *dev, struct sk_buff *skb, - struct net_device *sb_dev) + struct net_device *sb_dev) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); return rwnx_select_txq(rwnx_vif, skb); @@ -1376,38 +1447,47 @@ static int rwnx_set_mac_address(struct net_device *dev, void *addr) ret = eth_mac_addr(dev, sa); AICWFDBG(LOGINFO, "%s set %02X:%02X:%02X:%02X:%02X:%02X\r\n", __func__, - dev->dev_addr[0],dev->dev_addr[1],dev->dev_addr[2], - dev->dev_addr[3],dev->dev_addr[4],dev->dev_addr[5]); + dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], + dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); memcpy(rwnx_vif->wdev.address, dev->dev_addr, 6); return ret; } static const struct net_device_ops rwnx_netdev_ops = { - .ndo_open = rwnx_open, - .ndo_stop = rwnx_close, -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) - .ndo_do_ioctl = rwnx_do_ioctl, + .ndo_open = rwnx_open, + .ndo_stop = rwnx_close, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) + .ndo_do_ioctl = rwnx_do_ioctl, #else - .ndo_siocdevprivate = rwnx_do_ioctl, + .ndo_siocdevprivate = rwnx_do_ioctl, #endif - .ndo_start_xmit = rwnx_start_xmit, - .ndo_get_stats = rwnx_get_stats, + .ndo_start_xmit = rwnx_start_xmit, + .ndo_get_stats = rwnx_get_stats, #ifndef CONFIG_ONE_TXQ - .ndo_select_queue = rwnx_select_queue, + .ndo_select_queue = rwnx_select_queue, #endif #ifdef CONFIG_SUPPORT_REALTIME_CHANGE_MAC - .ndo_set_mac_address = rwnx_set_mac_address + .ndo_set_mac_address = rwnx_set_mac_address #endif -// .ndo_set_features = rwnx_set_features, -// .ndo_set_rx_mode = rwnx_set_multicast_list, + // .ndo_set_features = rwnx_set_features, + // .ndo_set_rx_mode = rwnx_set_multicast_list, }; static const struct net_device_ops rwnx_netdev_monitor_ops = { - .ndo_open = rwnx_open, - .ndo_stop = rwnx_close, - .ndo_get_stats = rwnx_get_stats, - .ndo_set_mac_address = rwnx_set_mac_address, + .ndo_open = rwnx_open, + .ndo_stop = rwnx_close, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) + .ndo_siocdevprivate = rwnx_do_ioctl, +#else + .ndo_do_ioctl = rwnx_do_ioctl, +#endif +#ifdef CONFIG_RWNX_MON_XMIT + .ndo_start_xmit = rwnx_start_monitor_if_xmit, + .ndo_select_queue = rwnx_select_queue, +#endif + .ndo_get_stats = rwnx_get_stats, + .ndo_set_mac_address = rwnx_set_mac_address, }; static void rwnx_netdev_setup(struct net_device *dev) @@ -1415,19 +1495,21 @@ static void rwnx_netdev_setup(struct net_device *dev) ether_setup(dev); dev->priv_flags &= ~IFF_TX_SKB_SHARING; dev->netdev_ops = &rwnx_netdev_ops; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) dev->destructor = free_netdev; #else dev->needs_free_netdev = true; #endif dev->watchdog_timeo = RWNX_TX_LIFETIME_MS; - dev->needed_headroom = sizeof(struct rwnx_txhdr) + RWNX_SWTXHDR_ALIGN_SZ; + dev->needed_headroom = + sizeof(struct rwnx_txhdr) + RWNX_SWTXHDR_ALIGN_SZ; #ifdef CONFIG_RWNX_AMSDUS_TX - dev->needed_headroom = max(dev->needed_headroom, - (unsigned short)(sizeof(struct rwnx_amsdu_txhdr) - + sizeof(struct ethhdr) + 4 - + sizeof(rfc1042_header) + 2)); + dev->needed_headroom = + max(dev->needed_headroom, + (unsigned short)(sizeof(struct rwnx_amsdu_txhdr) + + sizeof(struct ethhdr) + 4 + + sizeof(rfc1042_header) + 2)); #endif /* CONFIG_RWNX_AMSDUS_TX */ dev->hw_features = 0; @@ -1437,25 +1519,27 @@ static void rwnx_netdev_setup(struct net_device *dev) * Cfg80211 callbacks (and helper) *********************************************************************/ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, - const char *name, - unsigned char name_assign_type, - enum nl80211_iftype type, - struct vif_params *params) + const char *name, + unsigned char name_assign_type, + enum nl80211_iftype type, + struct vif_params *params) { struct net_device *ndev; struct rwnx_vif *vif; int min_idx, max_idx; int vif_idx = -1; int i; - int nx_nb_ndev_txq = NX_NB_NDEV_TXQ; + int nx_nb_ndev_txq = NX_NB_NDEV_TXQ; - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_nb_ndev_txq = NX_NB_NDEV_TXQ_FOR_OLD_IC; - } + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_nb_ndev_txq = NX_NB_NDEV_TXQ_FOR_OLD_IC; + } - AICWFDBG(LOGINFO, "rwnx_interface_add: %s, %d, %d\r\n", name, type, NL80211_IFTYPE_P2P_DEVICE); + AICWFDBG(LOGINFO, "rwnx_interface_add: %s, %d, %d\r\n", name, type, + NL80211_IFTYPE_P2P_DEVICE); // Look for an available VIF if (type == NL80211_IFTYPE_AP_VLAN) { min_idx = NX_VIRT_DEV_MAX; @@ -1474,24 +1558,25 @@ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, if (vif_idx < 0) return NULL; - #ifndef CONFIG_RWNX_MON_DATA - list_for_each_entry(vif, &rwnx_hw->vifs, list) { +#ifndef CONFIG_RWNX_MON_DATA + list_for_each_entry (vif, &rwnx_hw->vifs, list) { // Check if monitor interface already exists or type is monitor if ((RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_MONITOR) || - (type == NL80211_IFTYPE_MONITOR)) { - wiphy_err(rwnx_hw->wiphy, - "Monitor+Data interface support (MON_DATA) disabled\n"); + (type == NL80211_IFTYPE_MONITOR)) { + wiphy_err( + rwnx_hw->wiphy, + "Monitor+Data interface support (MON_DATA) disabled\n"); return NULL; } } - #endif +#endif #ifndef CONFIG_ONE_TXQ - ndev = alloc_netdev_mqs(sizeof(*vif), name, name_assign_type, - rwnx_netdev_setup, nx_nb_ndev_txq, 1); + ndev = alloc_netdev_mqs(sizeof(*vif), name, name_assign_type, + rwnx_netdev_setup, nx_nb_ndev_txq, 1); #else - ndev = alloc_netdev_mqs(sizeof(*vif), name, name_assign_type, - rwnx_netdev_setup, 1, 1); + ndev = alloc_netdev_mqs(sizeof(*vif), name, name_assign_type, + rwnx_netdev_setup, 1, 1); #endif if (!ndev) @@ -1512,10 +1597,9 @@ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, memset(&vif->net_stats, 0, sizeof(vif->net_stats)); vif->is_p2p_vif = 0; - #ifdef CONFIG_BR_SUPPORT - spin_lock_init(&vif->br_ext_lock); - #endif /* CONFIG_BR_SUPPORT */ - +#ifdef CONFIG_BR_SUPPORT + spin_lock_init(&vif->br_ext_lock); +#endif /* CONFIG_BR_SUPPORT */ switch (type) { case NL80211_IFTYPE_STATION: @@ -1546,25 +1630,24 @@ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, memset(&vif->ap.bcn, 0, sizeof(vif->ap.bcn)); vif->is_p2p_vif = 1; break; - case NL80211_IFTYPE_AP_VLAN: - { + case NL80211_IFTYPE_AP_VLAN: { struct rwnx_vif *master_vif; bool found = false; - list_for_each_entry(master_vif, &rwnx_hw->vifs, list) { + list_for_each_entry (master_vif, &rwnx_hw->vifs, list) { if ((RWNX_VIF_TYPE(master_vif) == NL80211_IFTYPE_AP) && - !(!memcmp(master_vif->ndev->dev_addr, params->macaddr, - ETH_ALEN))) { - found = true; - break; + !(!memcmp(master_vif->ndev->dev_addr, + params->macaddr, ETH_ALEN))) { + found = true; + break; } } if (!found) goto err; - vif->ap_vlan.master = master_vif; - vif->ap_vlan.sta_4a = NULL; - break; + vif->ap_vlan.master = master_vif; + vif->ap_vlan.sta_4a = NULL; + break; } case NL80211_IFTYPE_MONITOR: ndev->type = ARPHRD_IEEE80211_RADIOTAP; @@ -1575,26 +1658,29 @@ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, } if (type == NL80211_IFTYPE_AP_VLAN) { - memcpy((void *)ndev->dev_addr, (const void *)params->macaddr, ETH_ALEN); - memcpy((void *)vif->wdev.address, (const void *)params->macaddr, ETH_ALEN); + memcpy((void *)ndev->dev_addr, (const void *)params->macaddr, + ETH_ALEN); + memcpy((void *)vif->wdev.address, (const void *)params->macaddr, + ETH_ALEN); } else { #if LINUX_VERSION_CODE > KERNEL_VERSION(5, 17, 0) - unsigned char mac_addr[6]; - memcpy(mac_addr, rwnx_hw->wiphy->perm_addr, ETH_ALEN); - mac_addr[5] ^= vif_idx; - //memcpy(ndev->dev_addr, mac_addr, ETH_ALEN); - eth_hw_addr_set(ndev, mac_addr); - memcpy(vif->wdev.address, mac_addr, ETH_ALEN); + unsigned char mac_addr[6]; + memcpy(mac_addr, rwnx_hw->wiphy->perm_addr, ETH_ALEN); + mac_addr[5] ^= vif_idx; + //memcpy(ndev->dev_addr, mac_addr, ETH_ALEN); + eth_hw_addr_set(ndev, mac_addr); + memcpy(vif->wdev.address, mac_addr, ETH_ALEN); #else - memcpy(ndev->dev_addr, rwnx_hw->wiphy->perm_addr, ETH_ALEN); - ndev->dev_addr[5] ^= vif_idx; - memcpy(vif->wdev.address, ndev->dev_addr, ETH_ALEN); + memcpy(ndev->dev_addr, rwnx_hw->wiphy->perm_addr, ETH_ALEN); + ndev->dev_addr[5] ^= vif_idx; + memcpy(vif->wdev.address, ndev->dev_addr, ETH_ALEN); #endif - } - AICWFDBG(LOGINFO, "interface add:%x %x %x %x %x %x\n", vif->wdev.address[0], vif->wdev.address[1], \ - vif->wdev.address[2], vif->wdev.address[3], vif->wdev.address[4], vif->wdev.address[5]); + AICWFDBG(LOGINFO, "interface add:%x %x %x %x %x %x\n", + vif->wdev.address[0], vif->wdev.address[1], + vif->wdev.address[2], vif->wdev.address[3], + vif->wdev.address[4], vif->wdev.address[5]); if (params) { vif->use_4addr = params->use_4addr; @@ -1602,12 +1688,12 @@ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, } else vif->use_4addr = false; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) - if (cfg80211_register_netdevice(ndev)) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) + if (cfg80211_register_netdevice(ndev)) #else - if (register_netdevice(ndev)) + if (register_netdevice(ndev)) #endif - goto err; + goto err; spin_lock_bh(&rwnx_hw->cb_lock); list_add_tail(&vif->list, &rwnx_hw->vifs); @@ -1621,7 +1707,6 @@ err: return NULL; } - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) void aicwf_p2p_alive_timeout(ulong data) #else @@ -1632,16 +1717,17 @@ void aicwf_p2p_alive_timeout(struct timer_list *t) struct rwnx_vif *rwnx_vif; struct rwnx_vif *rwnx_vif1, *tmp; u8_l p2p = 0; - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) rwnx_vif = (struct rwnx_vif *)data; rwnx_hw = rwnx_vif->rwnx_hw; - #else +#else rwnx_hw = from_timer(rwnx_hw, t, p2p_alive_timer); rwnx_vif = rwnx_hw->p2p_dev_vif; - #endif +#endif - list_for_each_entry_safe(rwnx_vif1, tmp, &rwnx_hw->vifs, list) { - if ((rwnx_hw->avail_idx_map & BIT(rwnx_vif1->drv_vif_index)) == 0) { + list_for_each_entry_safe (rwnx_vif1, tmp, &rwnx_hw->vifs, list) { + if ((rwnx_hw->avail_idx_map & BIT(rwnx_vif1->drv_vif_index)) == + 0) { switch (RWNX_VIF_TYPE(rwnx_vif1)) { case NL80211_IFTYPE_P2P_CLIENT: case NL80211_IFTYPE_P2P_GO: @@ -1651,7 +1737,7 @@ void aicwf_p2p_alive_timeout(struct timer_list *t) default: break; } - } + } } if (p2p) @@ -1659,37 +1745,37 @@ void aicwf_p2p_alive_timeout(struct timer_list *t) else atomic_inc(&rwnx_hw->p2p_alive_timer_count); - if (atomic_read(&rwnx_hw->p2p_alive_timer_count) < P2P_ALIVE_TIME_COUNT) { + if (atomic_read(&rwnx_hw->p2p_alive_timer_count) < + P2P_ALIVE_TIME_COUNT) { mod_timer(&rwnx_hw->p2p_alive_timer, - jiffies + msecs_to_jiffies(P2P_ALIVE_TIME_MS)); + jiffies + msecs_to_jiffies(P2P_ALIVE_TIME_MS)); return; } else atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); rwnx_hw->is_p2p_alive = 0; if (rwnx_vif->up) { - rwnx_send_remove_if (rwnx_hw, rwnx_vif->vif_index, true); + rwnx_send_remove_if(rwnx_hw, rwnx_vif->vif_index, true); /* Ensure that we won't process disconnect ind */ spin_lock_bh(&rwnx_hw->cb_lock); rwnx_vif->up = false; rwnx_hw->vif_table[rwnx_vif->vif_index] = NULL; - AICWFDBG(LOGDEBUG, "%s rwnx_vif[%d] down \r\n", __func__, rwnx_vif->vif_index); + AICWFDBG(LOGDEBUG, "%s rwnx_vif[%d] down \r\n", __func__, + rwnx_vif->vif_index); rwnx_hw->vif_started--; spin_unlock_bh(&rwnx_hw->cb_lock); } } - /********************************************************************* * Cfg80211 callbacks (and helper) *********************************************************************/ -static struct wireless_dev *rwnx_virtual_interface_add(struct rwnx_hw *rwnx_hw, - const char *name, - unsigned char name_assign_type, - enum nl80211_iftype type, - struct vif_params *params) +static struct wireless_dev * +rwnx_virtual_interface_add(struct rwnx_hw *rwnx_hw, const char *name, + unsigned char name_assign_type, + enum nl80211_iftype type, struct vif_params *params) { struct wireless_dev *wdev = NULL; struct rwnx_vif *vif; @@ -1728,9 +1814,10 @@ static struct wireless_dev *rwnx_virtual_interface_add(struct rwnx_hw *rwnx_hw, wdev->wiphy = rwnx_hw->wiphy; wdev->iftype = type; - printk("rwnx_virtual_interface_add, ifname=%s, wdev=%p, vif_idx=%d\n", name, wdev, vif_idx); + printk("rwnx_virtual_interface_add, ifname=%s, wdev=%p, vif_idx=%d\n", + name, wdev, vif_idx); - #ifndef CONFIG_USE_P2P0 +#ifndef CONFIG_USE_P2P0 vif->is_p2p_vif = 1; vif->rwnx_hw = rwnx_hw; vif->vif_index = vif_idx; @@ -1746,25 +1833,27 @@ static struct wireless_dev *rwnx_virtual_interface_add(struct rwnx_hw *rwnx_hw, spin_unlock_bh(&rwnx_hw->cb_lock); if (rwnx_hw->is_p2p_alive == 0) { - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) init_timer(&rwnx_hw->p2p_alive_timer); rwnx_hw->p2p_alive_timer.data = (unsigned long)vif; rwnx_hw->p2p_alive_timer.function = aicwf_p2p_alive_timeout; - #else - timer_setup(&rwnx_hw->p2p_alive_timer, aicwf_p2p_alive_timeout, 0); - #endif +#else + timer_setup(&rwnx_hw->p2p_alive_timer, aicwf_p2p_alive_timeout, + 0); +#endif rwnx_hw->is_p2p_alive = 0; rwnx_hw->is_p2p_connected = 0; rwnx_hw->p2p_dev_vif = vif; atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); } - #endif +#endif rwnx_hw->avail_idx_map &= ~BIT(vif_idx); memcpy(vif->wdev.address, rwnx_hw->wiphy->perm_addr, ETH_ALEN); vif->wdev.address[5] ^= vif_idx; - printk("p2p dev addr=%x %x %x %x %x %x\n", vif->wdev.address[0], vif->wdev.address[1], \ - vif->wdev.address[2], vif->wdev.address[3], vif->wdev.address[4], vif->wdev.address[5]); + printk("p2p dev addr=%x %x %x %x %x %x\n", vif->wdev.address[0], + vif->wdev.address[1], vif->wdev.address[2], vif->wdev.address[3], + vif->wdev.address[4], vif->wdev.address[5]); return wdev; } @@ -1774,21 +1863,24 @@ static struct wireless_dev *rwnx_virtual_interface_add(struct rwnx_hw *rwnx_hw, * and a given role. */ static struct rwnx_sta *rwnx_retrieve_sta(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, u8 *addr, - __le16 fc, bool ap) + struct rwnx_vif *rwnx_vif, u8 *addr, + __le16 fc, bool ap) { if (ap) { /* only deauth, disassoc and action are bufferable MMPDUs */ bool bufferable = ieee80211_is_deauth(fc) || - ieee80211_is_disassoc(fc) || - ieee80211_is_action(fc); + ieee80211_is_disassoc(fc) || + ieee80211_is_action(fc); /* Check if the packet is bufferable or not */ if (bufferable) { /* Check if address is a broadcast or a multicast address */ - if (is_broadcast_ether_addr(addr) || is_multicast_ether_addr(addr)) { + if (is_broadcast_ether_addr(addr) || + is_multicast_ether_addr(addr)) { /* Returned STA pointer */ - struct rwnx_sta *rwnx_sta = &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index]; + struct rwnx_sta *rwnx_sta = + &rwnx_hw->sta_table[rwnx_vif->ap + .bcmc_index]; if (rwnx_sta->valid) return rwnx_sta; @@ -1798,11 +1890,16 @@ static struct rwnx_sta *rwnx_retrieve_sta(struct rwnx_hw *rwnx_hw, /* Go through list of STAs linked with the provided VIF */ spin_lock_bh(&rwnx_vif->rwnx_hw->cb_lock); - list_for_each_entry(rwnx_sta, &rwnx_vif->ap.sta_list, list) { + list_for_each_entry (rwnx_sta, + &rwnx_vif->ap.sta_list, + list) { if (rwnx_sta->valid && - ether_addr_equal(rwnx_sta->mac_addr, addr)) { + ether_addr_equal(rwnx_sta->mac_addr, + addr)) { /* Return the found STA */ - spin_unlock_bh(&rwnx_vif->rwnx_hw->cb_lock); + spin_unlock_bh( + &rwnx_vif->rwnx_hw + ->cb_lock); return rwnx_sta; } } @@ -1823,11 +1920,10 @@ static struct rwnx_sta *rwnx_retrieve_sta(struct rwnx_hw *rwnx_hw, * wireless_dev, or an ERR_PTR. For P2P device wdevs, the driver must * also set the address member in the wdev. */ -static struct wireless_dev *rwnx_cfg80211_add_iface(struct wiphy *wiphy, - const char *name, - unsigned char name_assign_type, - enum nl80211_iftype type, - struct vif_params *params) +static struct wireless_dev * +rwnx_cfg80211_add_iface(struct wiphy *wiphy, const char *name, + unsigned char name_assign_type, + enum nl80211_iftype type, struct vif_params *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct wireless_dev *wdev; @@ -1836,13 +1932,15 @@ static struct wireless_dev *rwnx_cfg80211_add_iface(struct wiphy *wiphy, #endif if (type != NL80211_IFTYPE_P2P_DEVICE) { - struct rwnx_vif *vif = rwnx_interface_add(rwnx_hw, name, name_assign_type, type, params); + struct rwnx_vif *vif = rwnx_interface_add( + rwnx_hw, name, name_assign_type, type, params); if (!vif) return ERR_PTR(-EINVAL); return &vif->wdev; } else { - wdev = rwnx_virtual_interface_add(rwnx_hw, name, name_assign_type, type, params); + wdev = rwnx_virtual_interface_add( + rwnx_hw, name, name_assign_type, type, params); if (!wdev) return ERR_PTR(-EINVAL); return wdev; @@ -1852,7 +1950,8 @@ static struct wireless_dev *rwnx_cfg80211_add_iface(struct wiphy *wiphy, /** * @del_virtual_intf: remove the virtual interface */ -static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, struct wireless_dev *wdev) +static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, + struct wireless_dev *wdev) { struct net_device *dev = wdev->netdev; struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -1874,13 +1973,12 @@ static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, struct wireless_dev *wde netdev_info(dev, "Remove Interface"); if (dev->reg_state == NETREG_REGISTERED) { - /* Will call rwnx_close if interface is UP */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) - cfg80211_unregister_netdevice(dev); + /* Will call rwnx_close if interface is UP */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) + cfg80211_unregister_netdevice(dev); #else - unregister_netdevice(dev); + unregister_netdevice(dev); #endif - } spin_lock_bh(&rwnx_hw->cb_lock); @@ -1900,9 +1998,9 @@ static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, struct wireless_dev *wde * keep the struct wireless_dev's iftype updated. */ static int rwnx_cfg80211_change_iface(struct wiphy *wiphy, - struct net_device *dev, - enum nl80211_iftype type, - struct vif_params *params) + struct net_device *dev, + enum nl80211_iftype type, + struct vif_params *params) { #ifndef CONFIG_RWNX_MON_DATA struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -1913,24 +2011,20 @@ static int rwnx_cfg80211_change_iface(struct wiphy *wiphy, int ret; RWNX_DBG(RWNX_FN_ENTRY_STR); - printk("change_if: %d to %d, %d, %d", vif->wdev.iftype, type, NL80211_IFTYPE_P2P_CLIENT, NL80211_IFTYPE_STATION); + printk("change_if: %d to %d, %d, %d", vif->wdev.iftype, type, + NL80211_IFTYPE_P2P_CLIENT, NL80211_IFTYPE_STATION); -#ifdef CONFIG_COEX - if (type == NL80211_IFTYPE_AP || type == NL80211_IFTYPE_P2P_GO) - rwnx_send_coex_req(vif->rwnx_hw, 1, 0); - if (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_AP || RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_GO) - rwnx_send_coex_req(vif->rwnx_hw, 0, 1); -#endif #ifndef CONFIG_RWNX_MON_DATA if ((type == NL80211_IFTYPE_MONITOR) && - (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_MONITOR)) { + (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_MONITOR)) { struct rwnx_vif *vif_el; - list_for_each_entry(vif_el, &rwnx_hw->vifs, list) { + list_for_each_entry (vif_el, &rwnx_hw->vifs, list) { // Check if data interface already exists if ((vif_el != vif) && - (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_MONITOR)) { - wiphy_err(rwnx_hw->wiphy, - "Monitor+Data interface support (MON_DATA) disabled\n"); + (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_MONITOR)) { + wiphy_err( + rwnx_hw->wiphy, + "Monitor+Data interface support (MON_DATA) disabled\n"); return -EIO; } } @@ -1976,9 +2070,9 @@ static int rwnx_cfg80211_change_iface(struct wiphy *wiphy, p2p = true; if (vif->up) { - /* Abort scan request on the vif */ - if (vif->rwnx_hw->scan_request && - vif->rwnx_hw->scan_request->wdev == &vif->wdev) { + /* Abort scan request on the vif */ + if (vif->rwnx_hw->scan_request && + vif->rwnx_hw->scan_request->wdev == &vif->wdev) { #if 0 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) struct cfg80211_scan_info info = { @@ -1996,41 +2090,58 @@ static int rwnx_cfg80211_change_iface(struct wiphy *wiphy, } vif->rwnx_hw->scan_request = NULL; #else - if ((ret = rwnx_send_scanu_cancel_req(vif->rwnx_hw, NULL))) { - AICWFDBG(LOGERROR, "scanu_cancel fail\n"); - return ret; - } + if ((ret = rwnx_send_scanu_cancel_req(vif->rwnx_hw, + NULL))) { + AICWFDBG(LOGERROR, "scanu_cancel fail\n"); + return ret; + } #endif - } - ret = rwnx_send_remove_if(vif->rwnx_hw, vif->vif_index, false); - if (ret) { - printk("remove_if fail\n"); - return ret; - } - vif->rwnx_hw->vif_table[vif->vif_index] = NULL; - printk("change_if from %d \n", vif->vif_index); - ret = rwnx_send_add_if(vif->rwnx_hw, vif->wdev.address, RWNX_VIF_TYPE(vif), p2p, &add_if_cfm); - if (ret) { - printk("add if fail\n"); - return ret; - } - if (add_if_cfm.status != 0) { - printk("add if status fail\n"); - return -EIO; - } + } + ret = rwnx_send_remove_if(vif->rwnx_hw, vif->vif_index, false); + if (ret) { + printk("remove_if fail\n"); + return ret; + } + vif->rwnx_hw->vif_table[vif->vif_index] = NULL; + printk("change_if from %d \n", vif->vif_index); + ret = rwnx_send_add_if(vif->rwnx_hw, vif->wdev.address, + RWNX_VIF_TYPE(vif), p2p, &add_if_cfm); + if (ret) { + printk("add if fail\n"); + return ret; + } + if (add_if_cfm.status != 0) { + printk("add if status fail\n"); + return -EIO; + } - printk("change_if to %d \n", add_if_cfm.inst_nbr); - /* Save the index retrieved from LMAC */ - spin_lock_bh(&vif->rwnx_hw->cb_lock); - vif->vif_index = add_if_cfm.inst_nbr; - vif->rwnx_hw->vif_table[add_if_cfm.inst_nbr] = vif; - spin_unlock_bh(&vif->rwnx_hw->cb_lock); + printk("change_if to %d \n", add_if_cfm.inst_nbr); + /* Save the index retrieved from LMAC */ + spin_lock_bh(&vif->rwnx_hw->cb_lock); + vif->vif_index = add_if_cfm.inst_nbr; + vif->rwnx_hw->vif_table[add_if_cfm.inst_nbr] = vif; + spin_unlock_bh(&vif->rwnx_hw->cb_lock); + } + + if (type == NL80211_IFTYPE_MONITOR) { + vif->rwnx_hw->monitor_vif = vif->vif_index; +#if defined(CONFIG_RWNX_MON_XMIT) + rwnx_txq_unk_vif_init(vif); +#endif +#if defined(CONFIG_RWNX_MON_RXFILTER) + rwnx_send_set_filter(vif->rwnx_hw, + (FIF_BCN_PRBRESP_PROMISC | FIF_OTHER_BSS | + FIF_PSPOLL | FIF_PROBE_REQ)); +#endif + } else { + vif->rwnx_hw->monitor_vif = RWNX_INVALID_VIF; } return 0; } -static int rwnx_cfgp2p_start_p2p_device(struct wiphy *wiphy, struct wireless_dev *wdev) +static int rwnx_cfgp2p_start_p2p_device(struct wiphy *wiphy, + struct wireless_dev *wdev) { int ret = 0; @@ -2040,18 +2151,19 @@ static int rwnx_cfgp2p_start_p2p_device(struct wiphy *wiphy, struct wireless_dev return ret; } -static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, struct wireless_dev *wdev) +static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, + struct wireless_dev *wdev) { int ret = 0; struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = container_of(wdev, struct rwnx_vif, wdev); /* Abort scan request on the vif */ if (rwnx_hw->scan_request && - rwnx_hw->scan_request->wdev == &rwnx_vif->wdev) { + rwnx_hw->scan_request->wdev == &rwnx_vif->wdev) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) struct cfg80211_scan_info info = { - .aborted = true, - }; + .aborted = true, + }; cfg80211_scan_done(rwnx_hw->scan_request, &info); #else @@ -2075,11 +2187,11 @@ static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, struct wireless_dev spin_lock_bh(&rwnx_hw->cb_lock); rwnx_vif->up = false; rwnx_hw->vif_table[rwnx_vif->vif_index] = NULL; - AICWFDBG(LOGDEBUG, "%s rwnx_vif[%d] down \r\n", __func__, rwnx_vif->vif_index); + AICWFDBG(LOGDEBUG, "%s rwnx_vif[%d] down \r\n", + __func__, rwnx_vif->vif_index); rwnx_hw->vif_started--; spin_unlock_bh(&rwnx_hw->cb_lock); } - } printk("Exit. P2P interface stopped\n"); @@ -2087,7 +2199,6 @@ static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, struct wireless_dev return; } - /** * @scan: Request to do a scan. If returning zero, the scan request is given * the driver, and will be valid until passed to cfg80211_scan_done(). @@ -2095,37 +2206,40 @@ static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, struct wireless_dev * the scan/scan_done bracket too. */ static int rwnx_cfg80211_scan(struct wiphy *wiphy, - struct cfg80211_scan_request *request) + struct cfg80211_scan_request *request) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); - struct rwnx_vif *rwnx_vif = container_of(request->wdev, struct rwnx_vif, wdev); + struct rwnx_vif *rwnx_vif = + container_of(request->wdev, struct rwnx_vif, wdev); int error; RWNX_DBG(RWNX_FN_ENTRY_STR); - if(testmode){ + if (testmode) { return -EBUSY; } - if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTING){ - AICWFDBG(LOGERROR, "%s wifi is connecting, return it\r\n", __func__); + if ((int)atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_CONNECTING) { + AICWFDBG(LOGERROR, "%s wifi is connecting, return it\r\n", + __func__); return -EBUSY; } if (scanning) { AICWFDBG(LOGERROR, "%s is scanning, abort\n", __func__); - #if 0 +#if 0 error = rwnx_send_scanu_cancel_req(rwnx_hw, NULL); if (error) return error; msleep(150); - #endif - return -EBUSY; +#endif + return -EBUSY; } if ((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || - RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) && - rwnx_vif->sta.external_auth) { + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) && + rwnx_vif->sta.external_auth) { AICWFDBG(LOGERROR, "scan about: external auth\r\n"); return -EBUSY; } @@ -2143,12 +2257,12 @@ bool key_flag = false; * @add_key: add a key with the given parameters. @mac_addr will be %NULL * when adding a group key. */ - static int rwnx_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev, +static int rwnx_cfg80211_add_key(struct wiphy *wiphy, struct net_device *netdev, #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2) - int link_id, + int link_id, #endif - u8 key_index, bool pairwise, const u8 *mac_addr, - struct key_params *params) + u8 key_index, bool pairwise, + const u8 *mac_addr, struct key_params *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -2166,12 +2280,14 @@ bool key_flag = false; if (!sta) return -EINVAL; rwnx_key = &sta->key; - if (vif->wdev.iftype == NL80211_IFTYPE_STATION || vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) + if (vif->wdev.iftype == NL80211_IFTYPE_STATION || + vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) vif->sta.paired_cipher_type = params->cipher; } else { rwnx_key = &vif->key[key_index]; vif->key_has_add = 1; - if (vif->wdev.iftype == NL80211_IFTYPE_STATION || vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) + if (vif->wdev.iftype == NL80211_IFTYPE_STATION || + vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) vif->sta.group_cipher_type = params->cipher; } @@ -2192,17 +2308,16 @@ bool key_flag = false; case WLAN_CIPHER_SUITE_AES_CMAC: cipher = MAC_CIPHER_BIP_CMAC_128; break; - case WLAN_CIPHER_SUITE_SMS4: - { + case WLAN_CIPHER_SUITE_SMS4: { // Need to reverse key order u8 tmp, *key = (u8 *)params->key; cipher = MAC_CIPHER_WPI_SMS4; - for (i = 0; i < WPI_SUBKEY_LEN/2; i++) { + for (i = 0; i < WPI_SUBKEY_LEN / 2; i++) { tmp = key[i]; key[i] = key[WPI_SUBKEY_LEN - 1 - i]; key[WPI_SUBKEY_LEN - 1 - i] = tmp; } - for (i = 0; i < WPI_SUBKEY_LEN/2; i++) { + for (i = 0; i < WPI_SUBKEY_LEN / 2; i++) { tmp = key[i + WPI_SUBKEY_LEN]; key[i + WPI_SUBKEY_LEN] = key[WPI_KEY_LEN - 1 - i]; key[WPI_KEY_LEN - 1 - i] = tmp; @@ -2215,9 +2330,9 @@ bool key_flag = false; key_flag = false; error = rwnx_send_key_add(rwnx_hw, vif->vif_index, - (sta ? sta->sta_idx : 0xFF), pairwise, - (u8 *)params->key, params->key_len, - key_index, cipher, &key_add_cfm); + (sta ? sta->sta_idx : 0xFF), pairwise, + (u8 *)params->key, params->key_len, key_index, + cipher, &key_add_cfm); if (error) return error; @@ -2242,27 +2357,28 @@ bool key_flag = false; */ static int rwnx_cfg80211_get_key(struct wiphy *wiphy, struct net_device *netdev, #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2) - int link_id, + int link_id, #endif - u8 key_index, bool pairwise, const u8 *mac_addr, - void *cookie, - void (*callback)(void *cookie, struct key_params*)) + u8 key_index, bool pairwise, + const u8 *mac_addr, void *cookie, + void (*callback)(void *cookie, + struct key_params *)) { RWNX_DBG(RWNX_FN_ENTRY_STR); return -1; } - /** * @del_key: remove a key given the @mac_addr (%NULL for a group key) * and @key_index, return -ENOENT if the key doesn't exist. */ static int rwnx_cfg80211_del_key(struct wiphy *wiphy, struct net_device *netdev, #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2) - int link_id, + int link_id, #endif - u8 key_index, bool pairwise, const u8 *mac_addr) + u8 key_index, bool pairwise, + const u8 *mac_addr) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *vif = netdev_priv(netdev); @@ -2278,12 +2394,14 @@ static int rwnx_cfg80211_del_key(struct wiphy *wiphy, struct net_device *netdev, if (!sta) return -EINVAL; rwnx_key = &sta->key; - if (vif->wdev.iftype == NL80211_IFTYPE_STATION || vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) + if (vif->wdev.iftype == NL80211_IFTYPE_STATION || + vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) vif->sta.paired_cipher_type = 0xff; } else { rwnx_key = &vif->key[key_index]; vif->key_has_add = 0; - if (vif->wdev.iftype == NL80211_IFTYPE_STATION || vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) + if (vif->wdev.iftype == NL80211_IFTYPE_STATION || + vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) vif->sta.group_cipher_type = 0xff; } @@ -2297,11 +2415,12 @@ static int rwnx_cfg80211_del_key(struct wiphy *wiphy, struct net_device *netdev, * @set_default_key: set the default key on an interface */ static int rwnx_cfg80211_set_default_key(struct wiphy *wiphy, - struct net_device *netdev, + struct net_device *netdev, #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2) - int link_id, + int link_id, #endif - u8 key_index, bool unicast, bool multicast) + u8 key_index, bool unicast, + bool multicast) { RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -2312,11 +2431,11 @@ static int rwnx_cfg80211_set_default_key(struct wiphy *wiphy, * @set_default_mgmt_key: set the default management frame key on an interface */ static int rwnx_cfg80211_set_default_mgmt_key(struct wiphy *wiphy, - struct net_device *netdev, + struct net_device *netdev, #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2) - int link_id, + int link_id, #endif - u8 key_index) + u8 key_index) { return 0; } @@ -2329,86 +2448,109 @@ static int rwnx_cfg80211_set_default_mgmt_key(struct wiphy *wiphy, * (invoked with the wireless_dev mutex held) */ static int rwnx_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_connect_params *sme) + struct cfg80211_connect_params *sme) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct sm_connect_cfm sm_connect_cfm; int error = 0; - int is_wep = ((sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40) || - (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP104) || - (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP40) || - (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP104)); + int is_wep = + ((sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40) || + (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP104) || + (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP40) || + (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP104)); RWNX_DBG(RWNX_FN_ENTRY_STR); + #if 1 -#if 0 - if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED){ - AICWFDBG(LOGERROR, "%s driver was connected return it \r\n", __func__); - return -EALREADY; - } -#endif - if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED) { + if ((int)atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_CONNECTED) { AICWFDBG(LOGDEBUG, "%s this connection is roam \r\n", __func__); rwnx_vif->sta.is_roam = true; - }else{ - rwnx_vif->sta.is_roam = false; + } else { + rwnx_vif->sta.is_roam = false; } - if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTING|| - (int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTING) { - AICWFDBG(LOGERROR, "%s driver is disconnecting or connecting ,return it \r\n", __func__); - return -EALREADY; + if ((int)atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_DISCONNECTING || + (int)atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_CONNECTING) { + AICWFDBG( + LOGERROR, + "%s driver is disconnecting or connecting ,return it \r\n", + __func__); + return 0; } #endif - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTING); + if (rwnx_vif->sta.is_roam) { + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_ROAMING); + } else { + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_CONNECTING); + } - if (is_wep) { - if(sme->auth_type == NL80211_AUTHTYPE_AUTOMATIC) { - if(rwnx_vif->wep_enabled && rwnx_vif->wep_auth_err) { - if(rwnx_vif->last_auth_type == NL80211_AUTHTYPE_SHARED_KEY) - sme->auth_type = NL80211_AUTHTYPE_OPEN_SYSTEM; - else - sme->auth_type = NL80211_AUTHTYPE_SHARED_KEY; - } else { - if((rwnx_vif->wep_enabled && !rwnx_vif->wep_auth_err)) - sme->auth_type = rwnx_vif->last_auth_type; - else - sme->auth_type = NL80211_AUTHTYPE_SHARED_KEY; - } - printk("auto: use sme->auth_type = %d\r\n", sme->auth_type); - } else { - if (rwnx_vif->wep_enabled && rwnx_vif->wep_auth_err && (sme->auth_type == rwnx_vif->last_auth_type)) { - if(sme->auth_type == NL80211_AUTHTYPE_SHARED_KEY) { - sme->auth_type = NL80211_AUTHTYPE_OPEN_SYSTEM; - printk("start connect, auth_type changed, shared --> open\n"); - } else if(sme->auth_type == NL80211_AUTHTYPE_OPEN_SYSTEM) { - sme->auth_type = NL80211_AUTHTYPE_SHARED_KEY; - printk("start connect, auth_type changed, open --> shared\n"); - } - } - } - } + if (is_wep) { + if (sme->auth_type == NL80211_AUTHTYPE_AUTOMATIC) { + if (rwnx_vif->wep_enabled && rwnx_vif->wep_auth_err) { + if (rwnx_vif->last_auth_type == + NL80211_AUTHTYPE_SHARED_KEY) + sme->auth_type = + NL80211_AUTHTYPE_OPEN_SYSTEM; + else + sme->auth_type = + NL80211_AUTHTYPE_SHARED_KEY; + } else { + if ((rwnx_vif->wep_enabled && + !rwnx_vif->wep_auth_err)) + sme->auth_type = + rwnx_vif->last_auth_type; + else + sme->auth_type = + NL80211_AUTHTYPE_SHARED_KEY; + } + printk("auto: use sme->auth_type = %d\r\n", + sme->auth_type); + } else { + if (rwnx_vif->wep_enabled && rwnx_vif->wep_auth_err && + (sme->auth_type == rwnx_vif->last_auth_type)) { + if (sme->auth_type == + NL80211_AUTHTYPE_SHARED_KEY) { + sme->auth_type = + NL80211_AUTHTYPE_OPEN_SYSTEM; + printk("start connect, auth_type changed, shared --> open\n"); + } else if (sme->auth_type == + NL80211_AUTHTYPE_OPEN_SYSTEM) { + sme->auth_type = + NL80211_AUTHTYPE_SHARED_KEY; + printk("start connect, auth_type changed, open --> shared\n"); + } + } + } + } /* For SHARED-KEY authentication, must install key first */ if (sme->auth_type == NL80211_AUTHTYPE_SHARED_KEY && sme->key) { struct key_params key_params; - key_params.key = (u8*)sme->key; + key_params.key = (u8 *)sme->key; key_params.seq = NULL; key_params.key_len = sme->key_len; key_params.seq_len = 0; key_params.cipher = sme->crypto.cipher_group; - rwnx_cfg80211_add_key(wiphy, dev, + rwnx_cfg80211_add_key(wiphy, dev, #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2) - 0, + 0, #endif - sme->key_idx, false, NULL, &key_params); + sme->key_idx, false, NULL, &key_params); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || defined(CONFIG_WPA3_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || \ + defined(CONFIG_WPA3_FOR_OLD_KERNEL) else if ((sme->auth_type == NL80211_AUTHTYPE_SAE) && - !(sme->flags & CONNECT_REQ_EXTERNAL_AUTH_SUPPORT)) { - netdev_err(dev, "Doesn't support SAE without external authentication\n"); + !(sme->flags & CONNECT_REQ_EXTERNAL_AUTH_SUPPORT)) { + netdev_err( + dev, + "Doesn't support SAE without external authentication\n"); return -EINVAL; } #endif @@ -2417,13 +2559,15 @@ static int rwnx_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, rwnx_hw->is_p2p_connected = 1; } - if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION || rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) { + if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION || + rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) { rwnx_vif->sta.paired_cipher_type = 0xff; rwnx_vif->sta.group_cipher_type = 0xff; } /* Forward the information to the LMAC */ - error = rwnx_send_sm_connect_req(rwnx_hw, rwnx_vif, sme, &sm_connect_cfm); + error = rwnx_send_sm_connect_req(rwnx_hw, rwnx_vif, sme, + &sm_connect_cfm); if (error) return error; @@ -2451,7 +2595,7 @@ static int rwnx_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, * (invoked with the wireless_dev mutex held) */ static int rwnx_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, - u16 reason_code) + u16 reason_code) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -2460,160 +2604,175 @@ static int rwnx_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, RWNX_DBG(RWNX_FN_ENTRY_STR); AICWFDBG(LOGINFO, "%s drv_vif_index:%d disconnect reason:%d \r\n", - __func__, rwnx_vif->drv_vif_index, reason_code); + __func__, rwnx_vif->drv_vif_index, reason_code); -#if 0 - while(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTING){ - AICWFDBG(LOGERROR, "%s driver connecting waiting 100ms \r\n", __func__); - msleep(100); - - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTED){ - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); - } -#endif - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTING){ - AICWFDBG(LOGINFO, "%s call cfg80211_connect_result reason:%d \r\n", - __func__, reason_code); - msleep(500); - } - - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_DISCONNECTING) { - AICWFDBG(LOGERROR, "%s wifi is disconnecting, return it:%d \r\n", - __func__, reason_code); + if (atomic_read(&rwnx_vif->drv_conn_state) == + RWNX_DRV_STATUS_DISCONNECTED) { + AICWFDBG(LOGERROR, "%s this\r\n", __func__); + WARN_ON(1); return -EBUSY; } - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTED) { - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); + if (atomic_read(&rwnx_vif->drv_conn_state) == + RWNX_DRV_STATUS_DISCONNECTING) { + AICWFDBG(LOGERROR, + "%s wifi is disconnecting, return it:%d \r\n", + __func__, reason_code); + return -EBUSY; + } + + if (atomic_read(&rwnx_vif->drv_conn_state) == + RWNX_DRV_STATUS_CONNECTED || + atomic_read(&rwnx_vif->drv_conn_state) == + RWNX_DRV_STATUS_CONNECTING || + atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_ROAMING) { + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + RWNX_DRV_STATUS_DISCONNECTING); key_flag = true; - ret = rwnx_send_sm_disconnect_req(rwnx_hw, rwnx_vif, reason_code); + ret = rwnx_send_sm_disconnect_req(rwnx_hw, rwnx_vif, + reason_code); #ifdef AICWF_SDIO_SUPPORT if (rwnx_hw->sdiodev->bus_if->state == BUS_DOWN_ST) { AICWFDBG(LOGINFO, "%s bus is down %d\n", __func__, ret); - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + RWNX_DRV_STATUS_DISCONNECTED); } #endif return ret; - } else { + } +#if 0 + else { cfg80211_connect_result(dev, NULL, NULL, 0, NULL, 0, reason_code?reason_code:WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC); - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); rwnx_external_auth_disable(rwnx_vif); return 0; } - +#endif + return 0; } #ifdef CONFIG_SCHED_SCAN static int rwnx_cfg80211_sched_scan_stop(struct wiphy *wiphy, - struct net_device *ndev + struct net_device *ndev #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) - ,u64 reqid) + , + u64 reqid) #else - ) +) #endif { - struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); //struct rwnx_vif *rwnx_vif = netdev_priv(dev); AICWFDBG(LOGINFO, "%s enter wiphy:%p\r\n", __func__, wiphy); - if(rwnx_hw->scan_request){ - AICWFDBG(LOGINFO, "%s rwnx_send_scanu_cancel_req\r\n", __func__); - return rwnx_send_scanu_cancel_req(rwnx_hw, NULL); - }else{ - return 0; - } + if (rwnx_hw->scan_request) { + AICWFDBG(LOGINFO, "%s rwnx_send_scanu_cancel_req\r\n", + __func__); + return rwnx_send_scanu_cancel_req(rwnx_hw, NULL); + } else { + return 0; + } } - -static int rwnx_cfg80211_sched_scan_start(struct wiphy *wiphy, - struct net_device *dev, - struct cfg80211_sched_scan_request *request) +static int +rwnx_cfg80211_sched_scan_start(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_sched_scan_request *request) { - struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); - struct cfg80211_scan_request *scan_request = NULL; + struct cfg80211_scan_request *scan_request = NULL; - int ret = 0; - int index = 0; + int ret = 0; + int index = 0; - AICWFDBG(LOGINFO, "%s enter wiphy:%p\r\n", __func__, wiphy); + AICWFDBG(LOGINFO, "%s enter wiphy:%p\r\n", __func__, wiphy); - if(rwnx_hw->is_sched_scan || scanning){ - AICWFDBG(LOGERROR, "%s is_sched_scanning and scanning, busy", __func__); - return -EBUSY; - } + if (rwnx_hw->is_sched_scan || scanning) { + AICWFDBG(LOGERROR, "%s is_sched_scanning and scanning, busy", + __func__); + return -EBUSY; + } - scan_request = (struct cfg80211_scan_request *)kmalloc(sizeof(struct cfg80211_scan_request), GFP_KERNEL); + scan_request = (struct cfg80211_scan_request *)kmalloc( + sizeof(struct cfg80211_scan_request), GFP_KERNEL); - scan_request->ssids = request->ssids; - scan_request->n_channels = request->n_channels; - scan_request->n_ssids = request->n_match_sets; - scan_request->no_cck = false; + scan_request->ssids = request->ssids; + scan_request->n_channels = request->n_channels; + scan_request->n_ssids = request->n_match_sets; + scan_request->no_cck = false; scan_request->ie = request->ie; scan_request->ie_len = request->ie_len; - scan_request->flags = request->flags; + scan_request->flags = request->flags; - scan_request->wiphy = wiphy; - scan_request->scan_start = request->scan_start; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) - memcpy(scan_request->mac_addr, request->mac_addr, ETH_ALEN); - memcpy(scan_request->mac_addr_mask, request->mac_addr_mask, ETH_ALEN); + scan_request->wiphy = wiphy; + scan_request->scan_start = request->scan_start; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) + memcpy(scan_request->mac_addr, request->mac_addr, ETH_ALEN); + memcpy(scan_request->mac_addr_mask, request->mac_addr_mask, ETH_ALEN); #endif - rwnx_hw->sched_scan_req = request; - scan_request->wdev = &rwnx_vif->wdev; - AICWFDBG(LOGDEBUG, "%s scan_request->n_channels:%d \r\n", __func__, scan_request->n_channels); - AICWFDBG(LOGDEBUG, "%s scan_request->n_ssids:%d \r\n", __func__, scan_request->n_ssids); + rwnx_hw->sched_scan_req = request; + scan_request->wdev = &rwnx_vif->wdev; + AICWFDBG(LOGDEBUG, "%s scan_request->n_channels:%d \r\n", __func__, + scan_request->n_channels); + AICWFDBG(LOGDEBUG, "%s scan_request->n_ssids:%d \r\n", __func__, + scan_request->n_ssids); - for(index = 0; index < scan_request->n_ssids; index++){ - memset(scan_request->ssids[index].ssid, 0, IEEE80211_MAX_SSID_LEN); + for (index = 0; index < scan_request->n_ssids; index++) { + memset(scan_request->ssids[index].ssid, 0, + IEEE80211_MAX_SSID_LEN); - memcpy(scan_request->ssids[index].ssid, - request->match_sets[index].ssid.ssid, - IEEE80211_MAX_SSID_LEN); + memcpy(scan_request->ssids[index].ssid, + request->match_sets[index].ssid.ssid, + IEEE80211_MAX_SSID_LEN); - scan_request->ssids[index].ssid_len = request->match_sets[index].ssid.ssid_len; + scan_request->ssids[index].ssid_len = + request->match_sets[index].ssid.ssid_len; - AICWFDBG(LOGDEBUG, "%s request ssid:%s len:%d \r\n", __func__, - scan_request->ssids[index].ssid, scan_request->ssids[index].ssid_len); - } + AICWFDBG(LOGDEBUG, "%s request ssid:%s len:%d \r\n", __func__, + scan_request->ssids[index].ssid, + scan_request->ssids[index].ssid_len); + } - for(index = 0;index < scan_request->n_channels; index++){ + for (index = 0; index < scan_request->n_channels; index++) { scan_request->channels[index] = request->channels[index]; - AICWFDBG(LOGDEBUG, "%s scan_request->channels[%d]:%d \r\n", __func__, index, - scan_request->channels[index]->center_freq); + AICWFDBG(LOGDEBUG, "%s scan_request->channels[%d]:%d \r\n", + __func__, index, + scan_request->channels[index]->center_freq); - if(scan_request->channels[index] == NULL){ - AICWFDBG(LOGERROR, "%s ERROR!!! channels is NULL", __func__); + if (scan_request->channels[index] == NULL) { + AICWFDBG(LOGERROR, "%s ERROR!!! channels is NULL", + __func__); continue; } } - rwnx_hw->is_sched_scan = true; + rwnx_hw->is_sched_scan = true; - if(scanning){ - AICWFDBG(LOGERROR, "%s scanning, about it", __func__); - kfree(scan_request); - return -EBUSY; - }else{ - ret = rwnx_cfg80211_scan(wiphy, scan_request); - } + if (scanning) { + AICWFDBG(LOGERROR, "%s scanning, about it", __func__); + kfree(scan_request); + return -EBUSY; + } else { + ret = rwnx_cfg80211_scan(wiphy, scan_request); + } return ret; } #endif //CONFIG_SCHED_SCAN -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || defined(CONFIG_WPA3_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || \ + defined(CONFIG_WPA3_FOR_OLD_KERNEL) /** * @external_auth: indicates result of offloaded authentication processing from * user space */ -static int rwnx_cfg80211_external_auth(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_external_auth_params *params) +static int +rwnx_cfg80211_external_auth(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_external_auth_params *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -2623,7 +2782,7 @@ static int rwnx_cfg80211_external_auth(struct wiphy *wiphy, struct net_device *d rwnx_external_auth_disable(rwnx_vif); return rwnx_send_sm_external_auth_required_rsp(rwnx_hw, rwnx_vif, - params->status); + params->status); } #endif @@ -2631,13 +2790,13 @@ static int rwnx_cfg80211_external_auth(struct wiphy *wiphy, struct net_device *d * @add_station: Add a new station. */ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, - struct net_device *dev, + struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *mac, + u8 *mac, #else - const u8 *mac, + const u8 *mac, #endif - struct station_parameters *params) + struct station_parameters *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -2658,15 +2817,16 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, rwnx_hw->adding_sta = true; /* Forward the information to the LMAC */ - error = rwnx_send_me_sta_add(rwnx_hw, params, mac, rwnx_vif->vif_index, &me_sta_add_cfm); + error = rwnx_send_me_sta_add(rwnx_hw, params, mac, rwnx_vif->vif_index, + &me_sta_add_cfm); if (error) return error; // Check the status switch (me_sta_add_cfm.status) { - case CO_OK: - { - struct rwnx_sta *sta = &rwnx_hw->sta_table[me_sta_add_cfm.sta_idx]; + case CO_OK: { + struct rwnx_sta *sta = + &rwnx_hw->sta_table[me_sta_add_cfm.sta_idx]; int tid; sta->aid = params->aid; @@ -2674,13 +2834,14 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, sta->ch_idx = rwnx_vif->ch_index; sta->vif_idx = rwnx_vif->vif_index; sta->vlan_idx = sta->vif_idx; - sta->qos = (params->sta_flags_set & BIT(NL80211_STA_FLAG_WME)) != 0; + sta->qos = (params->sta_flags_set & + BIT(NL80211_STA_FLAG_WME)) != 0; #if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - sta->ht = params->link_sta_params.ht_capa ? 1 : 0; - sta->vht = params->link_sta_params.vht_capa ? 1 : 0; + sta->ht = params->link_sta_params.ht_capa ? 1 : 0; + sta->vht = params->link_sta_params.vht_capa ? 1 : 0; #else - sta->ht = params->ht_capa ? 1 : 0; - sta->vht = params->vht_capa ? 1 : 0; + sta->ht = params->ht_capa ? 1 : 0; + sta->vht = params->vht_capa ? 1 : 0; #endif sta->acm = 0; sta->key.hw_idx = 0; @@ -2705,23 +2866,27 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, /* Ensure that we won't process PS change or channel switch ind*/ spin_lock_bh(&rwnx_hw->cb_lock); - rwnx_txq_sta_init(rwnx_hw, sta, rwnx_txq_vif_get_status(rwnx_vif)); + rwnx_txq_sta_init(rwnx_hw, sta, + rwnx_txq_vif_get_status(rwnx_vif)); list_add_tail(&sta->list, &rwnx_vif->ap.sta_list); sta->valid = true; - rwnx_ps_bh_enable(rwnx_hw, sta, sta->ps.active || me_sta_add_cfm.pm_state); + rwnx_ps_bh_enable(rwnx_hw, sta, + sta->ps.active || me_sta_add_cfm.pm_state); spin_unlock_bh(&rwnx_hw->cb_lock); error = 0; - if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP || rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) { + if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP || + rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) { struct station_info sinfo; memset(&sinfo, 0, sizeof(struct station_info)); sinfo.assoc_req_ies = NULL; sinfo.assoc_req_ies_len = 0; - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) sinfo.filled |= STATION_INFO_ASSOC_REQ_IES; - #endif - cfg80211_new_sta(rwnx_vif->ndev, sta->mac_addr, &sinfo, GFP_KERNEL); +#endif + cfg80211_new_sta(rwnx_vif->ndev, sta->mac_addr, &sinfo, + GFP_KERNEL); } #ifdef CONFIG_RWNX_BFMER if (rwnx_hw->mod_params->bfmer) @@ -2730,19 +2895,16 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, rwnx_mu_group_sta_init(sta, params->vht_capa); #endif /* CONFIG_RWNX_BFMER */ - #define PRINT_STA_FLAG(f) \ - (params->sta_flags_set & BIT(NL80211_STA_FLAG_##f) ? "["#f"]" : "") +#define PRINT_STA_FLAG(f) \ + (params->sta_flags_set & BIT(NL80211_STA_FLAG_##f) ? "[" #f "]" : "") netdev_info(dev, "Add sta %d (%pM) flags=%s%s%s%s%s%s%s", - sta->sta_idx, mac, - PRINT_STA_FLAG(AUTHORIZED), - PRINT_STA_FLAG(SHORT_PREAMBLE), - PRINT_STA_FLAG(WME), - PRINT_STA_FLAG(MFP), - PRINT_STA_FLAG(AUTHENTICATED), - PRINT_STA_FLAG(TDLS_PEER), - PRINT_STA_FLAG(ASSOCIATED)); - #undef PRINT_STA_FLAG + sta->sta_idx, mac, PRINT_STA_FLAG(AUTHORIZED), + PRINT_STA_FLAG(SHORT_PREAMBLE), PRINT_STA_FLAG(WME), + PRINT_STA_FLAG(MFP), PRINT_STA_FLAG(AUTHENTICATED), + PRINT_STA_FLAG(TDLS_PEER), + PRINT_STA_FLAG(ASSOCIATED)); +#undef PRINT_STA_FLAG break; } default: @@ -2759,73 +2921,79 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, * @del_station: Remove a station */ static int rwnx_cfg80211_del_station_compat(struct wiphy *wiphy, - struct net_device *dev, + struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *mac + u8 *mac #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)) - const u8 *mac + const u8 *mac #else - struct station_del_parameters *params + struct station_del_parameters *params #endif ) { - struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); - struct rwnx_vif *rwnx_vif = netdev_priv(dev); - struct rwnx_sta *cur, *tmp; - int error = 0, found = 0; + struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + struct rwnx_vif *rwnx_vif = netdev_priv(dev); + struct rwnx_sta *cur, *tmp; + int error = 0, found = 0; #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) - const u8 *mac = NULL; + const u8 *mac = NULL; #endif #ifdef AICWF_RX_REORDER - struct reord_ctrl_info *reord_info, *reord_tmp; - u8 *macaddr; - struct aicwf_rx_priv *rx_priv; + struct reord_ctrl_info *reord_info, *reord_tmp; + u8 *macaddr; + struct aicwf_rx_priv *rx_priv; #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) - if (params) - mac = params->mac; + if (params) + mac = params->mac; #endif - printk("%s: %pM\n", __func__, mac); + printk("%s: %pM\n", __func__, mac); do { spin_lock_bh(&rwnx_hw->cb_lock); - if(list_empty(&rwnx_vif->ap.sta_list)) { + if (list_empty(&rwnx_vif->ap.sta_list)) { spin_unlock_bh(&rwnx_hw->cb_lock); break; } - list_for_each_entry_safe(cur, tmp, &rwnx_vif->ap.sta_list, list) { - if ((!mac) || (!memcmp(cur->mac_addr, mac, ETH_ALEN))) { + list_for_each_entry_safe (cur, tmp, &rwnx_vif->ap.sta_list, + list) { + if ((!mac) || (!memcmp(cur->mac_addr, mac, ETH_ALEN))) { found = 1; break; - } - } + } + } - if(found) { - cur->ps.active = false; - cur->valid = false; - list_del(&cur->list); - } + if (found) { + cur->ps.active = false; + cur->valid = false; + list_del(&cur->list); + } spin_unlock_bh(&rwnx_hw->cb_lock); - if(found) { - netdev_info(dev, "Del sta %d (%pM)", cur->sta_idx, cur->mac_addr); + if (found) { + netdev_info(dev, "Del sta %d (%pM)", cur->sta_idx, + cur->mac_addr); if (cur->vif_idx != cur->vlan_idx) { struct rwnx_vif *vlan_vif; vlan_vif = rwnx_hw->vif_table[cur->vlan_idx]; if (vlan_vif->up) { - if ((RWNX_VIF_TYPE(vlan_vif) == NL80211_IFTYPE_AP_VLAN) && - (vlan_vif->use_4addr)) { + if ((RWNX_VIF_TYPE(vlan_vif) == + NL80211_IFTYPE_AP_VLAN) && + (vlan_vif->use_4addr)) { vlan_vif->ap_vlan.sta_4a = NULL; } else { - WARN(1, "Deleting sta belonging to VLAN other than AP_VLAN 4A"); + WARN(1, + "Deleting sta belonging to VLAN other than AP_VLAN 4A"); } } } - if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP || rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) { - cfg80211_del_sta(rwnx_vif->ndev, cur->mac_addr, GFP_KERNEL); + if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP || + rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) { + cfg80211_del_sta(rwnx_vif->ndev, cur->mac_addr, + GFP_KERNEL); } #ifdef AICWF_RX_REORDER @@ -2834,29 +3002,41 @@ static int rwnx_cfg80211_del_station_compat(struct wiphy *wiphy, #else rx_priv = rwnx_hw->usbdev->rx_priv; #endif - if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) { - BUG();//should be other function - } - else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)){ + if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || + (rwnx_vif->wdev.iftype == + NL80211_IFTYPE_P2P_CLIENT)) { + BUG(); //should be other function + } else if ((rwnx_vif->wdev.iftype == + NL80211_IFTYPE_AP) || + (rwnx_vif->wdev.iftype == + NL80211_IFTYPE_P2P_GO)) { macaddr = cur->mac_addr; - printk("deinit:macaddr:%x,%x,%x,%x,%x,%x\r\n", macaddr[0],macaddr[1],macaddr[2], \ - macaddr[3],macaddr[4],macaddr[5]); - spin_lock_bh(&rx_priv->stas_reord_lock); - list_for_each_entry_safe(reord_info, reord_tmp, + printk("deinit:macaddr:%x,%x,%x,%x,%x,%x\r\n", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); + list_for_each_entry_safe ( + reord_info, reord_tmp, &rx_priv->stas_reord_list, list) { - printk("reord_mac:%x,%x,%x,%x,%x,%x\r\n", reord_info->mac_addr[0],reord_info->mac_addr[1],reord_info->mac_addr[2], \ - reord_info->mac_addr[3],reord_info->mac_addr[4],reord_info->mac_addr[5]); - if (!memcmp(reord_info->mac_addr, macaddr, 6)) { - reord_deinit_sta(rx_priv, reord_info); + printk("reord_mac:%x,%x,%x,%x,%x,%x\r\n", + reord_info->mac_addr[0], + reord_info->mac_addr[1], + reord_info->mac_addr[2], + reord_info->mac_addr[3], + reord_info->mac_addr[4], + reord_info->mac_addr[5]); + if (!memcmp(reord_info->mac_addr, + macaddr, 6)) { + reord_deinit_sta(rx_priv, + reord_info); break; } } - spin_unlock_bh(&rx_priv->stas_reord_lock); } #endif rwnx_txq_sta_deinit(rwnx_hw, cur); - error = rwnx_send_me_sta_del(rwnx_hw, cur->sta_idx, false); + error = rwnx_send_me_sta_del(rwnx_hw, cur->sta_idx, + false); if ((error != 0) && (error != -EPIPE)) return error; @@ -2871,22 +3051,22 @@ static int rwnx_cfg80211_del_station_compat(struct wiphy *wiphy, #endif } - if(mac) + if (mac) break; - } while (1); + } while (1); - rwnx_update_mesh_power_mode(rwnx_vif); + rwnx_update_mesh_power_mode(rwnx_vif); - if(!found && mac != NULL) + if (!found && mac != NULL) return -ENOENT; else - return 0; + return 0; } - void apm_staloss_work_process(struct work_struct *work) { - struct rwnx_hw *rwnx_hw = container_of(work, struct rwnx_hw, apmStalossWork); + struct rwnx_hw *rwnx_hw = + container_of(work, struct rwnx_hw, apmStalossWork); struct rwnx_sta *cur, *tmp; int error = 0; @@ -2896,51 +3076,56 @@ void apm_staloss_work_process(struct work_struct *work) struct aicwf_rx_priv *rx_priv; #endif struct rwnx_vif *rwnx_vif; - bool_l found = false; + bool_l found = false; const u8 *mac = rwnx_hw->sta_mac_addr; RWNX_DBG(RWNX_FN_ENTRY_STR); - // Look for VIF entry - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { - if (rwnx_vif->vif_index == rwnx_hw->apm_vif_idx) { - found = true; - break; - } - } + // Look for VIF entry + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { + if (rwnx_vif->vif_index == rwnx_hw->apm_vif_idx) { + found = true; + break; + } + } - printk("apm vif idx=%d, found=%d, mac addr=%pM\n", rwnx_hw->apm_vif_idx, found, mac); - if (!found || !rwnx_vif || (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_AP && RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_P2P_GO)) - { - return; - } + printk("apm vif idx=%d, found=%d, mac addr=%pM\n", rwnx_hw->apm_vif_idx, + found, mac); + if (!found || !rwnx_vif || + (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_AP && + RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_P2P_GO)) { + return; + } found = false; spin_lock_bh(&rwnx_hw->cb_lock); - list_for_each_entry_safe(cur, tmp, &rwnx_vif->ap.sta_list, list) { + list_for_each_entry_safe (cur, tmp, &rwnx_vif->ap.sta_list, list) { if ((mac) && (!memcmp(cur->mac_addr, mac, ETH_ALEN))) { found = true; break; } } - if(found) { - cur->ps.active = false; - cur->valid = false; - list_del(&cur->list); - } + if (found) { + cur->ps.active = false; + cur->valid = false; + list_del(&cur->list); + } spin_unlock_bh(&rwnx_hw->cb_lock); - if(found) { - netdev_info(rwnx_vif->ndev, "Del sta %d (%pM)", cur->sta_idx, cur->mac_addr); + if (found) { + netdev_info(rwnx_vif->ndev, "Del sta %d (%pM)", cur->sta_idx, + cur->mac_addr); if (cur->vif_idx != cur->vlan_idx) { struct rwnx_vif *vlan_vif; vlan_vif = rwnx_hw->vif_table[cur->vlan_idx]; if (vlan_vif->up) { - if ((RWNX_VIF_TYPE(vlan_vif) == NL80211_IFTYPE_AP_VLAN) && - (vlan_vif->use_4addr)) { + if ((RWNX_VIF_TYPE(vlan_vif) == + NL80211_IFTYPE_AP_VLAN) && + (vlan_vif->use_4addr)) { vlan_vif->ap_vlan.sta_4a = NULL; } else { - WARN(1, "Deleting sta belonging to VLAN other than AP_VLAN 4A"); + WARN(1, + "Deleting sta belonging to VLAN other than AP_VLAN 4A"); } } } @@ -2951,23 +3136,30 @@ void apm_staloss_work_process(struct work_struct *work) #else rx_priv = rwnx_hw->usbdev->rx_priv; #endif - if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) { - BUG();//should be other function - } else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) { + if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) { + BUG(); //should be other function + } else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) { macaddr = cur->mac_addr; - printk("deinit:macaddr:%x,%x,%x,%x,%x,%x\r\n", macaddr[0], macaddr[1], macaddr[2], \ - macaddr[3], macaddr[4], macaddr[5]); - spin_lock_bh(&rx_priv->stas_reord_lock); - list_for_each_entry_safe(reord_info, reord_tmp, - &rx_priv->stas_reord_list, list) { - printk("reord_mac:%x,%x,%x,%x,%x,%x\r\n", reord_info->mac_addr[0], reord_info->mac_addr[1], reord_info->mac_addr[2], \ - reord_info->mac_addr[3], reord_info->mac_addr[4], reord_info->mac_addr[5]); + printk("deinit:macaddr:%x,%x,%x,%x,%x,%x\r\n", + macaddr[0], macaddr[1], macaddr[2], macaddr[3], + macaddr[4], macaddr[5]); + list_for_each_entry_safe (reord_info, reord_tmp, + &rx_priv->stas_reord_list, + list) { + printk("reord_mac:%x,%x,%x,%x,%x,%x\r\n", + reord_info->mac_addr[0], + reord_info->mac_addr[1], + reord_info->mac_addr[2], + reord_info->mac_addr[3], + reord_info->mac_addr[4], + reord_info->mac_addr[5]); if (!memcmp(reord_info->mac_addr, macaddr, 6)) { reord_deinit_sta(rx_priv, reord_info); break; } } - spin_unlock_bh(&rx_priv->stas_reord_lock); } #endif @@ -2985,7 +3177,7 @@ void apm_staloss_work_process(struct work_struct *work) #ifdef CONFIG_DEBUG_FS_AIC rwnx_dbgfs_unregister_rc_stat(rwnx_hw, cur); #endif - }else { + } else { printk("sta not found: %pM\n", mac); return; } @@ -2993,41 +3185,50 @@ void apm_staloss_work_process(struct work_struct *work) rwnx_update_mesh_power_mode(rwnx_vif); } - void apm_probe_sta_work_process(struct work_struct *work) { - struct apm_probe_sta *probe_sta = container_of(work, struct apm_probe_sta, apmprobestaWork); - struct rwnx_vif *rwnx_vif = container_of(probe_sta, struct rwnx_vif, sta_probe); - bool found = false; - struct rwnx_sta *cur, *tmp; + struct apm_probe_sta *probe_sta = + container_of(work, struct apm_probe_sta, apmprobestaWork); + struct rwnx_vif *rwnx_vif = + container_of(probe_sta, struct rwnx_vif, sta_probe); + bool found = false; + struct rwnx_sta *cur, *tmp; - u8 *mac = rwnx_vif->sta_probe.sta_mac_addr; + u8 *mac = rwnx_vif->sta_probe.sta_mac_addr; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - spin_lock_bh(&rwnx_vif->rwnx_hw->cb_lock); - list_for_each_entry_safe(cur, tmp, &rwnx_vif->ap.sta_list, list) { - if (!memcmp(cur->mac_addr, mac, ETH_ALEN)) { - found = true; - break; - } - } - spin_unlock_bh(&rwnx_vif->rwnx_hw->cb_lock); + spin_lock_bh(&rwnx_vif->rwnx_hw->cb_lock); + list_for_each_entry_safe (cur, tmp, &rwnx_vif->ap.sta_list, list) { + if (!memcmp(cur->mac_addr, mac, ETH_ALEN)) { + found = true; + break; + } + } + spin_unlock_bh(&rwnx_vif->rwnx_hw->cb_lock); - printk("sta %pM found = %d\n", mac, found); + printk("sta %pM found = %d\n", mac, found); #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) - if(found) - cfg80211_probe_status(rwnx_vif->ndev, mac, (u64)rwnx_vif->sta_probe.probe_id, 1, 0, false, GFP_ATOMIC); - else - cfg80211_probe_status(rwnx_vif->ndev, mac, (u64)rwnx_vif->sta_probe.probe_id, 0, 0, false, GFP_ATOMIC); + if (found) + cfg80211_probe_status(rwnx_vif->ndev, mac, + (u64)rwnx_vif->sta_probe.probe_id, 1, 0, + false, GFP_ATOMIC); + else + cfg80211_probe_status(rwnx_vif->ndev, mac, + (u64)rwnx_vif->sta_probe.probe_id, 0, 0, + false, GFP_ATOMIC); #else - if(found) - cfg80211_probe_status(rwnx_vif->ndev, mac, (u64)rwnx_vif->sta_probe.probe_id, 1, GFP_ATOMIC); - else - cfg80211_probe_status(rwnx_vif->ndev, mac, (u64)rwnx_vif->sta_probe.probe_id, 0, GFP_ATOMIC); + if (found) + cfg80211_probe_status(rwnx_vif->ndev, mac, + (u64)rwnx_vif->sta_probe.probe_id, 1, + GFP_ATOMIC); + else + cfg80211_probe_status(rwnx_vif->ndev, mac, + (u64)rwnx_vif->sta_probe.probe_id, 0, + GFP_ATOMIC); #endif - rwnx_vif->sta_probe.probe_id ++; + rwnx_vif->sta_probe.probe_id++; } /** * @change_station: Modify a given station. Note that flags changes are not much @@ -3037,13 +3238,13 @@ void apm_probe_sta_work_process(struct work_struct *work) * cfg80211_check_station_change() to validate the information. */ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, - struct net_device *dev, + struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *mac, + u8 *mac, #else - const u8 *mac, + const u8 *mac, #endif - struct station_parameters *params) + struct station_parameters *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *vif = netdev_priv(dev); @@ -3063,14 +3264,15 @@ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, rwnx_hw->adding_sta = true; /* Forward the information to the LMAC */ - error = rwnx_send_me_sta_add(rwnx_hw, params, mac, rwnx_vif->vif_index, &me_sta_add_cfm); + error = rwnx_send_me_sta_add(rwnx_hw, params, mac, + rwnx_vif->vif_index, + &me_sta_add_cfm); if (error) return error; // Check the status switch (me_sta_add_cfm.status) { - case CO_OK: - { + case CO_OK: { int tid; sta = &rwnx_hw->sta_table[me_sta_add_cfm.sta_idx]; sta->aid = params->aid; @@ -3078,17 +3280,22 @@ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, sta->ch_idx = rwnx_vif->ch_index; sta->vif_idx = rwnx_vif->vif_index; sta->vlan_idx = sta->vif_idx; - sta->qos = (params->sta_flags_set & BIT(NL80211_STA_FLAG_WME)) != 0; + sta->qos = (params->sta_flags_set & + BIT(NL80211_STA_FLAG_WME)) != 0; #if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - sta->ht = params->link_sta_params.ht_capa ? 1 : 0; - sta->vht = params->link_sta_params.vht_capa ? 1 : 0; + sta->ht = + params->link_sta_params.ht_capa ? 1 : 0; + sta->vht = params->link_sta_params.vht_capa ? + 1 : + 0; #else - sta->ht = params->ht_capa ? 1 : 0; - sta->vht = params->vht_capa ? 1 : 0; + sta->ht = params->ht_capa ? 1 : 0; + sta->vht = params->vht_capa ? 1 : 0; #endif sta->acm = 0; for (tid = 0; tid < NX_NB_TXQ_PER_STA; tid++) { - int uapsd_bit = rwnx_hwq2uapsd[rwnx_tid2hwq[tid]]; + int uapsd_bit = + rwnx_hwq2uapsd[rwnx_tid2hwq[tid]]; if (params->uapsd_queues & uapsd_bit) sta->uapsd_tids |= 1 << tid; else @@ -3100,40 +3307,49 @@ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, #endif /* Ensure that we won't process PS change or channel switch ind*/ spin_lock_bh(&rwnx_hw->cb_lock); - rwnx_txq_sta_init(rwnx_hw, sta, rwnx_txq_vif_get_status(rwnx_vif)); - if (rwnx_vif->tdls_status == TDLS_SETUP_RSP_TX) { - rwnx_vif->tdls_status = TDLS_LINK_ACTIVE; + rwnx_txq_sta_init( + rwnx_hw, sta, + rwnx_txq_vif_get_status(rwnx_vif)); + if (rwnx_vif->tdls_status == + TDLS_SETUP_RSP_TX) { + rwnx_vif->tdls_status = + TDLS_LINK_ACTIVE; sta->tdls.initiator = true; sta->tdls.active = true; } /* Set TDLS channel switch capability */ - if ((params->ext_capab[3] & WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH) && - !rwnx_vif->tdls_chsw_prohibited) + if ((params->ext_capab[3] & + WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH) && + !rwnx_vif->tdls_chsw_prohibited) sta->tdls.chsw_allowed = true; rwnx_vif->sta.tdls_sta = sta; sta->valid = true; spin_unlock_bh(&rwnx_hw->cb_lock); #ifdef CONFIG_RWNX_BFMER if (rwnx_hw->mod_params->bfmer) - rwnx_send_bfmer_enable(rwnx_hw, sta, params->vht_capa); + rwnx_send_bfmer_enable( + rwnx_hw, sta, params->vht_capa); rwnx_mu_group_sta_init(sta, NULL); #endif /* CONFIG_RWNX_BFMER */ - #define PRINT_STA_FLAG(f) \ - (params->sta_flags_set & BIT(NL80211_STA_FLAG_##f) ? "["#f"]" : "") +#define PRINT_STA_FLAG(f) \ + (params->sta_flags_set & BIT(NL80211_STA_FLAG_##f) ? "[" #f "]" : "") - netdev_info(dev, "Add %s TDLS sta %d (%pM) flags=%s%s%s%s%s%s%s", - sta->tdls.initiator ? "initiator" : "responder", - sta->sta_idx, mac, - PRINT_STA_FLAG(AUTHORIZED), - PRINT_STA_FLAG(SHORT_PREAMBLE), - PRINT_STA_FLAG(WME), - PRINT_STA_FLAG(MFP), - PRINT_STA_FLAG(AUTHENTICATED), - PRINT_STA_FLAG(TDLS_PEER), - PRINT_STA_FLAG(ASSOCIATED)); - #undef PRINT_STA_FLAG + netdev_info( + dev, + "Add %s TDLS sta %d (%pM) flags=%s%s%s%s%s%s%s", + sta->tdls.initiator ? "initiator" : + "responder", + sta->sta_idx, mac, + PRINT_STA_FLAG(AUTHORIZED), + PRINT_STA_FLAG(SHORT_PREAMBLE), + PRINT_STA_FLAG(WME), + PRINT_STA_FLAG(MFP), + PRINT_STA_FLAG(AUTHENTICATED), + PRINT_STA_FLAG(TDLS_PEER), + PRINT_STA_FLAG(ASSOCIATED)); +#undef PRINT_STA_FLAG break; } @@ -3143,20 +3359,24 @@ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, } rwnx_hw->adding_sta = false; - } else { + } else { return -EINVAL; } } if (params->sta_flags_mask & BIT(NL80211_STA_FLAG_AUTHORIZED)) - rwnx_send_me_set_control_port_req(rwnx_hw, - (params->sta_flags_set & BIT(NL80211_STA_FLAG_AUTHORIZED)) != 0, - sta->sta_idx); + rwnx_send_me_set_control_port_req( + rwnx_hw, + (params->sta_flags_set & + BIT(NL80211_STA_FLAG_AUTHORIZED)) != 0, + sta->sta_idx); if (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_MESH_POINT) { if (params->sta_modify_mask & STATION_PARAM_APPLY_PLINK_STATE) { if (params->plink_state < NUM_NL80211_PLINK_STATES) { - rwnx_send_mesh_peer_update_ntf(rwnx_hw, vif, sta->sta_idx, params->plink_state); + rwnx_send_mesh_peer_update_ntf( + rwnx_hw, vif, sta->sta_idx, + params->plink_state); } } @@ -3179,14 +3399,15 @@ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, sta->vlan_idx = vlan_idx; if ((RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_AP_VLAN) && - (vif->use_4addr)) { + (vif->use_4addr)) { WARN((vif->ap_vlan.sta_4a), - "4A AP_VLAN interface with more than one sta"); + "4A AP_VLAN interface with more than one sta"); vif->ap_vlan.sta_4a = sta; } - if ((RWNX_VIF_TYPE(old_vif) == NL80211_IFTYPE_AP_VLAN) && - (old_vif->use_4addr)) { + if ((RWNX_VIF_TYPE(old_vif) == + NL80211_IFTYPE_AP_VLAN) && + (old_vif->use_4addr)) { old_vif->ap_vlan.sta_4a = NULL; } } @@ -3199,7 +3420,7 @@ static int rwnx_cfg80211_change_station(struct wiphy *wiphy, * @start_ap: Start acting in AP mode defined by the parameters. */ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_ap_settings *settings) + struct cfg80211_ap_settings *settings) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -3210,24 +3431,26 @@ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, RWNX_DBG(RWNX_FN_ENTRY_STR); - INIT_WORK(&rwnx_vif->sta_probe.apmprobestaWork, apm_probe_sta_work_process); - rwnx_vif->sta_probe.apmprobesta_wq = create_singlethread_workqueue("apmprobe_wq"); - if (!rwnx_vif->sta_probe.apmprobesta_wq) { - txrx_err("insufficient memory to create apmprobe_wq.\n"); - return -ENOBUFS; - } + INIT_WORK(&rwnx_vif->sta_probe.apmprobestaWork, + apm_probe_sta_work_process); + rwnx_vif->sta_probe.apmprobesta_wq = + create_singlethread_workqueue("apmprobe_wq"); + if (!rwnx_vif->sta_probe.apmprobesta_wq) { + txrx_err("insufficient memory to create apmprobe_wq.\n"); + return -ENOBUFS; + } if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) rwnx_hw->is_p2p_connected = 1; /* Forward the information to the LMAC */ - error = rwnx_send_apm_start_req(rwnx_hw, rwnx_vif, settings, &apm_start_cfm, &elem); + error = rwnx_send_apm_start_req(rwnx_hw, rwnx_vif, settings, + &apm_start_cfm, &elem); if (error) goto end; // Check the status switch (apm_start_cfm.status) { - case CO_OK: - { + case CO_OK: { u8 txq_status = 0; rwnx_vif->ap.bcmc_index = apm_start_cfm.bcmc_idx; rwnx_vif->ap.flags = 0; @@ -3247,7 +3470,7 @@ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, rwnx_mu_group_sta_init(sta, NULL); spin_lock_bh(&rwnx_hw->cb_lock); rwnx_chanctx_link(rwnx_vif, apm_start_cfm.ch_idx, - &settings->chandef); + &settings->chandef); if (rwnx_hw->cur_chanctx != apm_start_cfm.ch_idx) { txq_status = RWNX_TXQ_STOP_CHAN; } @@ -3280,10 +3503,11 @@ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, if (error) { netdev_info(dev, "Failed to start AP (%d)", error); } else { - netdev_info(dev, "AP started: ch=%d, bcmc_idx=%d channel=%d bw=%d", - rwnx_vif->ch_index, rwnx_vif->ap.bcmc_index, - ((settings->chandef).chan)->center_freq, - ((settings->chandef).width)); + netdev_info(dev, + "AP started: ch=%d, bcmc_idx=%d channel=%d bw=%d", + rwnx_vif->ch_index, rwnx_vif->ap.bcmc_index, + ((settings->chandef).chan)->center_freq, + ((settings->chandef).width)); } end: @@ -3292,13 +3516,13 @@ end: return error; } - /** * @change_beacon: Change the beacon parameters for an access point mode * interface. This should reject the call when AP mode wasn't started. */ -static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_beacon_data *info) +static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, + struct net_device *dev, + struct cfg80211_beacon_data *info) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *vif = netdev_priv(dev); @@ -3318,8 +3542,8 @@ static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, struct net_device *d rwnx_send_bcn(rwnx_hw, buf, vif->vif_index, bcn->len); // Forward the information to the LMAC - error = rwnx_send_bcn_change(rwnx_hw, vif->vif_index, 0, - bcn->len, bcn->head_len, bcn->tim_len, NULL); + error = rwnx_send_bcn_change(rwnx_hw, vif->vif_index, 0, bcn->len, + bcn->head_len, bcn->tim_len, NULL); return error; } @@ -3328,7 +3552,8 @@ static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, struct net_device *d * * @stop_ap: Stop being an AP, including stopping beaconing. */ #if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION) -static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id) +static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev, + unsigned int link_id) #else static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) #endif @@ -3342,6 +3567,11 @@ static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) netif_tx_stop_all_queues(dev); netif_carrier_off(dev); + /* delete any remaining STA*/ + while (!list_empty(&rwnx_vif->ap.sta_list)) { + rwnx_cfg80211_del_station_compat(wiphy, dev, NULL); + } + if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) rwnx_hw->is_p2p_connected = 0; rwnx_radar_cancel_cac(&rwnx_hw->radar); @@ -3350,11 +3580,6 @@ static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) rwnx_chanctx_unlink(rwnx_vif); spin_unlock_bh(&rwnx_hw->cb_lock); - /* delete any remaining STA*/ - while (!list_empty(&rwnx_vif->ap.sta_list)) { - rwnx_cfg80211_del_station_compat(wiphy, dev, NULL); - } - /* delete BC/MC STA */ sta = &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index]; rwnx_txq_vif_deinit(rwnx_hw, rwnx_vif); @@ -3379,7 +3604,7 @@ static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) * configured at firmware level. */ static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, - struct cfg80211_chan_def *chandef) + struct cfg80211_chan_def *chandef) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif; @@ -3395,7 +3620,8 @@ static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, if (rwnx_chanctx_valid(rwnx_hw, rwnx_vif->ch_index)) { struct rwnx_chanctx *ctxt; ctxt = &rwnx_vif->rwnx_hw->chanctx_table[rwnx_vif->ch_index]; - if (chandef && cfg80211_chandef_identical(&ctxt->chan_def, chandef)) + if (chandef && + cfg80211_chandef_identical(&ctxt->chan_def, chandef)) return 0; } @@ -3407,8 +3633,6 @@ static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, // Always re-set channel context info rwnx_chanctx_unlink(rwnx_vif); - - // If there is also a STA interface not yet connected then monitor interface // will only have a channel context after the connection of the STA interface. if (cfm.chan_index != RWNX_CH_NOT_SET) { @@ -3421,50 +3645,57 @@ static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, return -EBUSY; } - mon_chandef.chan = ieee80211_get_channel(wiphy, cfm.chan.prim20_freq); + mon_chandef.chan = + ieee80211_get_channel(wiphy, cfm.chan.prim20_freq); mon_chandef.center_freq1 = cfm.chan.center1_freq; mon_chandef.center_freq2 = cfm.chan.center2_freq; - mon_chandef.width = chnl2bw[cfm.chan.type]; + mon_chandef.width = chnl2bw[cfm.chan.type]; rwnx_chanctx_link(rwnx_vif, cfm.chan_index, &mon_chandef); } return 0; } +int rwnx_cfg80211_set_monitor_channel_(struct wiphy *wiphy, + struct cfg80211_chan_def *chandef) +{ + return rwnx_cfg80211_set_monitor_channel(wiphy, chandef); +} + /** * @probe_client: probe an associated client, must return a cookie that it * later passes to cfg80211_probe_status(). */ int rwnx_cfg80211_probe_client(struct wiphy *wiphy, struct net_device *dev, - const u8 *peer, u64 *cookie) + const u8 *peer, u64 *cookie) { -// struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); - struct rwnx_vif *vif = netdev_priv(dev); - struct rwnx_sta *sta = NULL; + // struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + struct rwnx_vif *vif = netdev_priv(dev); + struct rwnx_sta *sta = NULL; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - if((RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_AP) && (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_P2P_GO) && - (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_AP_VLAN)) - return -EINVAL; - spin_lock_bh(&vif->rwnx_hw->cb_lock); - list_for_each_entry(sta, &vif->ap.sta_list, list){ - if (sta->valid && ether_addr_equal(sta->mac_addr, peer)) - break; - } - spin_unlock_bh(&vif->rwnx_hw->cb_lock); + if ((RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_AP) && + (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_P2P_GO) && + (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_AP_VLAN)) + return -EINVAL; + spin_lock_bh(&vif->rwnx_hw->cb_lock); + list_for_each_entry (sta, &vif->ap.sta_list, list) { + if (sta->valid && ether_addr_equal(sta->mac_addr, peer)) + break; + } + spin_unlock_bh(&vif->rwnx_hw->cb_lock); - if (!sta) - return -ENOENT; + if (!sta) + return -ENOENT; + memcpy(vif->sta_probe.sta_mac_addr, peer, 6); + queue_work(vif->sta_probe.apmprobesta_wq, + &vif->sta_probe.apmprobestaWork); - memcpy(vif->sta_probe.sta_mac_addr, peer, 6); - queue_work(vif->sta_probe.apmprobesta_wq, &vif->sta_probe.apmprobestaWork); - - *cookie = vif->sta_probe.probe_id; - - return 0; + *cookie = vif->sta_probe.probe_id; + return 0; } /** @@ -3473,8 +3704,8 @@ int rwnx_cfg80211_probe_client(struct wiphy *wiphy, struct net_device *dev, * concurrently with itself. */ void rwnx_cfg80211_mgmt_frame_register(struct wiphy *wiphy, - struct wireless_dev *wdev, - u16 frame_type, bool reg) + struct wireless_dev *wdev, + u16 frame_type, bool reg) { } @@ -3489,7 +3720,6 @@ static int rwnx_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed) return 0; } - /** * @set_tx_power: set the transmit power according to the parameters, * the power passed is in mBm, to get dBm use MBM_TO_DBM(). The @@ -3497,8 +3727,10 @@ static int rwnx_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed) * always be %NULL unless the driver supports per-vif TX power * (as advertised by the nl80211 feature flag.) */ -static int rwnx_cfg80211_set_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, - enum nl80211_tx_power_setting type, int mbm) +static int rwnx_cfg80211_set_tx_power(struct wiphy *wiphy, + struct wireless_dev *wdev, + enum nl80211_tx_power_setting type, + int mbm) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *vif; @@ -3515,8 +3747,9 @@ static int rwnx_cfg80211_set_tx_power(struct wiphy *wiphy, struct wireless_dev * vif = container_of(wdev, struct rwnx_vif, wdev); res = rwnx_send_set_power(rwnx_hw, vif->vif_index, pwr, NULL); } else { - list_for_each_entry(vif, &rwnx_hw->vifs, list) { - res = rwnx_send_set_power(rwnx_hw, vif->vif_index, pwr, NULL); + list_for_each_entry (vif, &rwnx_hw->vifs, list) { + res = rwnx_send_set_power(rwnx_hw, vif->vif_index, pwr, + NULL); if (res) break; } @@ -3525,14 +3758,33 @@ static int rwnx_cfg80211_set_tx_power(struct wiphy *wiphy, struct wireless_dev * return res; } +static int rwnx_cfg80211_get_tx_power(struct wiphy *wiphy, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) + struct wireless_dev *wdev, +#endif + int *mbm) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) + struct wireless_dev *wdev = NULL; +#endif + //struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + //struct rwnx_vif *vif; + s8 pwr = 0; + int res = 0; + + *mbm = get_txpwr_max(pwr); + + return res; +} + /** * @set_power_mgmt: set the power save to one of those two modes: * Power-save off * Power-save on - Dynamic mode */ static int rwnx_cfg80211_set_power_mgmt(struct wiphy *wiphy, - struct net_device *dev, - bool enabled, int timeout) + struct net_device *dev, bool enabled, + int timeout) { #if 0 struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -3562,8 +3814,9 @@ static int rwnx_cfg80211_set_power_mgmt(struct wiphy *wiphy, #endif } -static int rwnx_cfg80211_set_txq_params(struct wiphy *wiphy, struct net_device *dev, - struct ieee80211_txq_params *params) +static int rwnx_cfg80211_set_txq_params(struct wiphy *wiphy, + struct net_device *dev, + struct ieee80211_txq_params *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -3574,21 +3827,21 @@ static int rwnx_cfg80211_set_txq_params(struct wiphy *wiphy, struct net_device * hw_queue = rwnx_ac2hwq[0][params->ac]; - aifs = params->aifs; + aifs = params->aifs; cwmin = fls(params->cwmin); cwmax = fls(params->cwmax); /* Store queue information in general structure */ - param = (u32) (aifs << 0); - param |= (u32) (cwmin << 4); - param |= (u32) (cwmax << 8); - param |= (u32) (params->txop) << 12; + param = (u32)(aifs << 0); + param |= (u32)(cwmin << 4); + param |= (u32)(cwmax << 8); + param |= (u32)(params->txop) << 12; /* Send the MM_SET_EDCA_REQ message to the FW */ - return rwnx_send_set_edca(rwnx_hw, hw_queue, param, false, rwnx_vif->vif_index); + return rwnx_send_set_edca(rwnx_hw, hw_queue, param, false, + rwnx_vif->vif_index); } - /** * @remain_on_channel: Request the driver to remain awake on the specified * channel for the specified duration to complete an off-channel @@ -3596,10 +3849,11 @@ static int rwnx_cfg80211_set_txq_params(struct wiphy *wiphy, struct net_device * * ready on the requested channel, it must indicate this with an event * notification by calling cfg80211_ready_on_channel(). */ -static int -rwnx_cfg80211_remain_on_channel_(struct wiphy *wiphy, struct wireless_dev *wdev, - struct ieee80211_channel *chan, - unsigned int duration, u64 *cookie, bool mgmt_roc_flag) +static int rwnx_cfg80211_remain_on_channel_(struct wiphy *wiphy, + struct wireless_dev *wdev, + struct ieee80211_channel *chan, + unsigned int duration, u64 *cookie, + bool mgmt_roc_flag) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); //struct rwnx_vif *rwnx_vif = netdev_priv(wdev->netdev); @@ -3624,15 +3878,18 @@ rwnx_cfg80211_remain_on_channel_(struct wiphy *wiphy, struct wireless_dev *wdev, } } - printk("remain:%d,%d,%d\n", rwnx_vif->vif_index, rwnx_vif->is_p2p_vif, rwnx_hw->is_p2p_alive); + printk("remain:%d,%d,%d\n", rwnx_vif->vif_index, rwnx_vif->is_p2p_vif, + rwnx_hw->is_p2p_alive); #ifdef CONFIG_USE_P2P0 if (rwnx_vif->is_p2p_vif) { #else if (rwnx_vif == rwnx_hw->p2p_dev_vif && !rwnx_vif->up) { #endif if (!rwnx_hw->is_p2p_alive) { - error = rwnx_send_add_if (rwnx_hw, rwnx_vif->wdev.address, //wdev->netdev->dev_addr, - RWNX_VIF_TYPE(rwnx_vif), false, &add_if_cfm); + error = rwnx_send_add_if( + rwnx_hw, + rwnx_vif->wdev.address, //wdev->netdev->dev_addr, + RWNX_VIF_TYPE(rwnx_vif), false, &add_if_cfm); if (error) return -EIO; @@ -3649,12 +3906,14 @@ rwnx_cfg80211_remain_on_channel_(struct wiphy *wiphy, struct wireless_dev *wdev, spin_unlock_bh(&rwnx_hw->cb_lock); rwnx_hw->is_p2p_alive = 1; #ifndef CONFIG_USE_P2P0 - mod_timer(&rwnx_hw->p2p_alive_timer, jiffies + msecs_to_jiffies(1000)); + mod_timer(&rwnx_hw->p2p_alive_timer, + jiffies + msecs_to_jiffies(1000)); atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); #endif } else { #ifndef CONFIG_USE_P2P0 - mod_timer(&rwnx_hw->p2p_alive_timer, jiffies + msecs_to_jiffies(1000)); + mod_timer(&rwnx_hw->p2p_alive_timer, + jiffies + msecs_to_jiffies(1000)); atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); #endif } @@ -3703,13 +3962,13 @@ rwnx_cfg80211_remain_on_channel_(struct wiphy *wiphy, struct wireless_dev *wdev, return error; } - -static int -rwnx_cfg80211_remain_on_channel(struct wiphy *wiphy, struct wireless_dev *wdev, - struct ieee80211_channel *chan, - unsigned int duration, u64 *cookie) +static int rwnx_cfg80211_remain_on_channel(struct wiphy *wiphy, + struct wireless_dev *wdev, + struct ieee80211_channel *chan, + unsigned int duration, u64 *cookie) { - return rwnx_cfg80211_remain_on_channel_(wiphy, wdev, chan, duration, cookie, false); + return rwnx_cfg80211_remain_on_channel_(wiphy, wdev, chan, duration, + cookie, false); } /** @@ -3718,12 +3977,13 @@ rwnx_cfg80211_remain_on_channel(struct wiphy *wiphy, struct wireless_dev *wdev, * the duration value. */ static int rwnx_cfg80211_cancel_remain_on_channel(struct wiphy *wiphy, - struct wireless_dev *wdev, - u64 cookie) + struct wireless_dev *wdev, + u64 cookie) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); #ifdef CREATE_TRACE_POINTS - struct rwnx_vif *rwnx_vif = container_of(wdev, struct rwnx_vif, wdev);//netdev_priv(wdev->netdev); + struct rwnx_vif *rwnx_vif = container_of( + wdev, struct rwnx_vif, wdev); //netdev_priv(wdev->netdev); #endif RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -3748,8 +4008,9 @@ static int rwnx_cfg80211_cancel_remain_on_channel(struct wiphy *wiphy, /** * @dump_survey: get site survey information. */ -static int rwnx_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *netdev, - int idx, struct survey_info *info) +static int rwnx_cfg80211_dump_survey(struct wiphy *wiphy, + struct net_device *netdev, int idx, + struct survey_info *info) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct ieee80211_supported_band *sband; @@ -3790,16 +4051,18 @@ static int rwnx_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *net SURVEY_TIME(info) = (u64)rwnx_survey->chan_time_ms; SURVEY_TIME_BUSY(info) = (u64)rwnx_survey->chan_time_busy_ms; //info->noise = rwnx_survey->noise_dbm; - info->noise = ((IS_2P4GHZ(info->channel->center_freq)) ? DEFAULT_NOISE_FLOOR_2GHZ : - (IS_5GHZ(info->channel->center_freq)) ? DEFAULT_NOISE_FLOOR_5GHZ : DEFAULT_NOISE_FLOOR_5GHZ); + info->noise = ((IS_2P4GHZ(info->channel->center_freq)) ? + DEFAULT_NOISE_FLOOR_2GHZ : + (IS_5GHZ(info->channel->center_freq)) ? + DEFAULT_NOISE_FLOOR_5GHZ : + DEFAULT_NOISE_FLOOR_5GHZ); // Set the survey report as not used - if(info->noise == 0){ - rwnx_survey->filled = 0; - }else{ - rwnx_survey->filled |= SURVEY_INFO_NOISE_DBM; - } - + if (info->noise == 0) { + rwnx_survey->filled = 0; + } else { + rwnx_survey->filled |= SURVEY_INFO_NOISE_DBM; + } } return 0; @@ -3811,11 +4074,11 @@ static int rwnx_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *net * current monitoring channel. */ static int rwnx_cfg80211_get_channel(struct wiphy *wiphy, - struct wireless_dev *wdev, + struct wireless_dev *wdev, #if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - unsigned int link_id, + unsigned int link_id, #endif - struct cfg80211_chan_def *chandef) + struct cfg80211_chan_def *chandef) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = container_of(wdev, struct rwnx_vif, wdev); @@ -3846,34 +4109,36 @@ static int rwnx_cfg80211_get_channel(struct wiphy *wiphy, */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, - struct cfg80211_mgmt_tx_params *params, - u64 *cookie) + struct cfg80211_mgmt_tx_params *params, + u64 *cookie) #else static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, - struct ieee80211_channel *channel, bool offchan, - unsigned int wait, const u8 *buf, size_t len, - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) - bool no_cck, - #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)) - bool dont_wait_for_ack, - #endif - u64 *cookie) + struct ieee80211_channel *channel, + bool offchan, unsigned int wait, const u8 *buf, + size_t len, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) + bool no_cck, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)) + bool dont_wait_for_ack, +#endif + u64 *cookie) #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); - struct rwnx_vif *rwnx_vif = container_of(wdev, struct rwnx_vif, wdev);//netdev_priv(wdev->netdev); + struct rwnx_vif *rwnx_vif = container_of( + wdev, struct rwnx_vif, wdev); //netdev_priv(wdev->netdev); struct rwnx_sta *rwnx_sta; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) struct ieee80211_channel *channel = params->chan; const u8 *buf = params->buf; - //size_t len = params->len; - #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ +//size_t len = params->len; +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ struct ieee80211_mgmt *mgmt = (void *)buf; bool ap = false; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) bool offchan = false; - #endif +#endif /* Check if provided VIF is an AP or a STA one */ switch (RWNX_VIF_TYPE(rwnx_vif)) { @@ -3892,18 +4157,18 @@ static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, /* Get STA on which management frame has to be sent */ rwnx_sta = rwnx_retrieve_sta(rwnx_hw, rwnx_vif, mgmt->da, - mgmt->frame_control, ap); + mgmt->frame_control, ap); #ifdef CREATE_TRACE_POINTS - trace_mgmt_tx((channel) ? channel->center_freq : 0, - rwnx_vif->vif_index, (rwnx_sta) ? rwnx_sta->sta_idx : 0xFF, - mgmt); + trace_mgmt_tx((channel) ? channel->center_freq : 0, rwnx_vif->vif_index, + (rwnx_sta) ? rwnx_sta->sta_idx : 0xFF, mgmt); #endif if (ap || rwnx_sta) goto send_frame; /* Not an AP interface sending frame to unknown STA: * This is allowed for external authetication */ - if (rwnx_vif->sta.external_auth && ieee80211_is_auth(mgmt->frame_control)) + if (rwnx_vif->sta.external_auth && + ieee80211_is_auth(mgmt->frame_control)) goto send_frame; /* Otherwise ROC is needed */ @@ -3915,12 +4180,17 @@ static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, /* Check that a RoC is already pending */ if (rwnx_hw->roc_elem) { /* Get VIF used for current ROC */ - struct rwnx_vif *rwnx_roc_vif = container_of(rwnx_hw->roc_elem->wdev, struct rwnx_vif, wdev);//netdev_priv(rwnx_hw->roc_elem->wdev->netdev); + struct rwnx_vif *rwnx_roc_vif = container_of( + rwnx_hw->roc_elem->wdev, struct rwnx_vif, + wdev); //netdev_priv(rwnx_hw->roc_elem->wdev->netdev); /* Check if RoC channel is the same than the required one */ - if ((rwnx_hw->roc_elem->chan->center_freq != channel->center_freq) - || (rwnx_vif->vif_index != rwnx_roc_vif->vif_index)) { - printk("mgmt rx chan invalid: %d, %d", rwnx_hw->roc_elem->chan->center_freq, channel->center_freq); + if ((rwnx_hw->roc_elem->chan->center_freq != + channel->center_freq) || + (rwnx_vif->vif_index != rwnx_roc_vif->vif_index)) { + printk("mgmt rx chan invalid: %d, %d", + rwnx_hw->roc_elem->chan->center_freq, + channel->center_freq); return -EINVAL; } } else { @@ -3931,7 +4201,7 @@ static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, /* Start a ROC procedure for 30ms */ error = rwnx_cfg80211_remain_on_channel_(wiphy, wdev, channel, - 30, &cookie, true); + 30, &cookie, true); if (error) { printk("mgmt rx chan err\n"); return error; @@ -3941,37 +4211,42 @@ static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, //rwnx_hw->roc_elem->mgmt_roc = true; } - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) offchan = true; - #endif +#endif send_frame: - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) - return rwnx_start_mgmt_xmit(rwnx_vif, rwnx_sta, params, offchan, cookie); - #else - return rwnx_start_mgmt_xmit(rwnx_vif, rwnx_sta, channel, offchan, wait, buf, len, no_cck, dont_wait_for_ack, cookie); - #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) + return rwnx_start_mgmt_xmit(rwnx_vif, rwnx_sta, params, offchan, + cookie); +#else + return rwnx_start_mgmt_xmit(rwnx_vif, rwnx_sta, channel, offchan, wait, + buf, len, no_cck, dont_wait_for_ack, + cookie); +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ } /** * @start_radar_detection: Start radar detection in the driver. */ -static -int rwnx_cfg80211_start_radar_detection(struct wiphy *wiphy, - struct net_device *dev, - struct cfg80211_chan_def *chandef - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) - , u32 cac_time_ms - #endif - ) +static int rwnx_cfg80211_start_radar_detection(struct wiphy *wiphy, + struct net_device *dev, + struct cfg80211_chan_def *chandef +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) + , + u32 cac_time_ms +#endif +) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct apm_start_cac_cfm cfm; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) + RWNX_DBG(RWNX_FN_ENTRY_STR); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) rwnx_radar_start_cac(&rwnx_hw->radar, cac_time_ms, rwnx_vif); - #endif +#endif rwnx_send_apm_start_cac_req(rwnx_hw, rwnx_vif, chandef, &cfm); if (cfm.status == CO_OK) { @@ -3979,8 +4254,8 @@ int rwnx_cfg80211_start_radar_detection(struct wiphy *wiphy, rwnx_chanctx_link(rwnx_vif, cfm.ch_idx, chandef); if (rwnx_hw->cur_chanctx == rwnx_vif->ch_index) rwnx_radar_detection_enable(&rwnx_hw->radar, - RWNX_RADAR_DETECT_REPORT, - RWNX_RADAR_RIU); + RWNX_RADAR_DETECT_REPORT, + RWNX_RADAR_RIU); spin_unlock_bh(&rwnx_hw->cb_lock); } else { return -EIO; @@ -3994,10 +4269,9 @@ int rwnx_cfg80211_start_radar_detection(struct wiphy *wiphy, * driver. If the SME is in the driver/firmware, this information can be * used in building Authentication and Reassociation Request frames. */ -static -int rwnx_cfg80211_update_ft_ies(struct wiphy *wiphy, - struct net_device *dev, - struct cfg80211_update_ft_ies_params *ftie) +static int +rwnx_cfg80211_update_ft_ies(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_update_ft_ies_params *ftie) { printk("%s\n", __func__); return 0; @@ -4006,15 +4280,16 @@ int rwnx_cfg80211_update_ft_ies(struct wiphy *wiphy, /** * @set_cqm_rssi_config: Configure connection quality monitor RSSI threshold. */ -static -int rwnx_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy, - struct net_device *dev, - int32_t rssi_thold, uint32_t rssi_hyst) +static int rwnx_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy, + struct net_device *dev, + int32_t rssi_thold, + uint32_t rssi_hyst) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); - return rwnx_send_cfg_rssi_req(rwnx_hw, rwnx_vif->vif_index, rssi_thold, rssi_hyst); + return rwnx_send_cfg_rssi_req(rwnx_hw, rwnx_vif->vif_index, rssi_thold, + rssi_hyst); } #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) @@ -4027,9 +4302,8 @@ int rwnx_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy, * everything. It should do it's best to verify requests and reject them * as soon as possible. */ -int rwnx_cfg80211_channel_switch (struct wiphy *wiphy, - struct net_device *dev, - struct cfg80211_csa_settings *params) +int rwnx_cfg80211_channel_switch(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_csa_settings *params) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *vif = netdev_priv(dev); @@ -4039,7 +4313,6 @@ int rwnx_cfg80211_channel_switch (struct wiphy *wiphy, u8 *buf; int i, error = 0; - if (vif->ap.csa) return -EBUSY; @@ -4055,7 +4328,7 @@ int rwnx_cfg80211_channel_switch (struct wiphy *wiphy, memset(csa_oft, 0, sizeof(csa_oft)); for (i = 0; i < params->n_counter_offsets_beacon; i++) { csa_oft[i] = params->counter_offsets_beacon[i] + bcn->head_len + - bcn->tim_len; + bcn->tim_len; } /* If count is set to 0 (i.e anytime after this beacon) force it to 2 */ @@ -4093,8 +4366,8 @@ int rwnx_cfg80211_channel_switch (struct wiphy *wiphy, csa->chandef = params->chandef; /* Send new Beacon. FW will extract channel and count from the beacon */ - error = rwnx_send_bcn_change(rwnx_hw, vif->vif_index, 0, - bcn->len, bcn->head_len, bcn->tim_len, csa_oft); + error = rwnx_send_bcn_change(rwnx_hw, vif->vif_index, 0, bcn->len, + bcn->head_len, bcn->tim_len, csa_oft); if (error) { rwnx_del_csa(vif); @@ -4102,15 +4375,18 @@ int rwnx_cfg80211_channel_switch (struct wiphy *wiphy, } else { INIT_WORK(&csa->work, rwnx_csa_finish); #if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION4 - cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false, 0); + cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, + params->count, false, 0); #elif LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2 - cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false); + cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, + params->count, false); #elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) - cfg80211_ch_switch_started_notify(dev, &csa->chandef, params->count, params->block_tx); + cfg80211_ch_switch_started_notify( + dev, &csa->chandef, params->count, params->block_tx); #else - cfg80211_ch_switch_started_notify(dev, &csa->chandef, params->count); + cfg80211_ch_switch_started_notify(dev, &csa->chandef, + params->count); #endif - } end: @@ -4118,37 +4394,32 @@ end: } #endif - /* * @tdls_mgmt: prepare TDLS action frame packets and forward them to FW */ -static int -rwnx_cfg80211_tdls_mgmt(struct wiphy *wiphy, - struct net_device *dev, +static int rwnx_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev, #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) - const u8 *peer, + const u8 *peer, #else - u8 *peer, + u8 *peer, #endif - u8 action_code, - u8 dialog_token, - u16 status_code, + u8 action_code, u8 dialog_token, + u16 status_code, #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) - u32 peer_capability, + u32 peer_capability, #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0) - bool initiator, + bool initiator, #endif - const u8 *buf, - size_t len) + const u8 *buf, size_t len) { - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) u32 peer_capability = 0; - #endif - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) bool initiator = false; - #endif +#endif struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); int ret = 0; @@ -4159,31 +4430,32 @@ rwnx_cfg80211_tdls_mgmt(struct wiphy *wiphy, /* make sure we are in station mode (and connected) */ if ((RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_STATION) || - (!rwnx_vif->up) || (!rwnx_vif->sta.ap)) + (!rwnx_vif->up) || (!rwnx_vif->sta.ap)) return -ENOTSUPP; /* only one TDLS link is supported */ if ((action_code == WLAN_TDLS_SETUP_REQUEST) && - (rwnx_vif->sta.tdls_sta) && - (rwnx_vif->tdls_status == TDLS_LINK_ACTIVE)) { + (rwnx_vif->sta.tdls_sta) && + (rwnx_vif->tdls_status == TDLS_LINK_ACTIVE)) { printk("%s: only one TDLS link is supported!\n", __func__); return -ENOTSUPP; } if ((action_code == WLAN_TDLS_DISCOVERY_REQUEST) && - (rwnx_hw->mod_params->ps_on)) { + (rwnx_hw->mod_params->ps_on)) { printk("%s: discovery request is not supported when " - "power-save is enabled!\n", __func__); + "power-save is enabled!\n", + __func__); return -ENOTSUPP; } switch (action_code) { case WLAN_TDLS_SETUP_RESPONSE: /* only one TDLS link is supported */ - if ((status_code == 0) && - (rwnx_vif->sta.tdls_sta) && - (rwnx_vif->tdls_status == TDLS_LINK_ACTIVE)) { - printk("%s: only one TDLS link is supported!\n", __func__); + if ((status_code == 0) && (rwnx_vif->sta.tdls_sta) && + (rwnx_vif->tdls_status == TDLS_LINK_ACTIVE)) { + printk("%s: only one TDLS link is supported!\n", + __func__); status_code = WLAN_STATUS_REQUEST_DECLINED; } /* fall-through */ @@ -4192,13 +4464,15 @@ rwnx_cfg80211_tdls_mgmt(struct wiphy *wiphy, case WLAN_TDLS_DISCOVERY_REQUEST: case WLAN_TDLS_SETUP_CONFIRM: case WLAN_PUB_ACTION_TDLS_DISCOVER_RES: - ret = rwnx_tdls_send_mgmt_packet_data(rwnx_hw, rwnx_vif, peer, action_code, - dialog_token, status_code, peer_capability, initiator, buf, len, 0, NULL); + ret = rwnx_tdls_send_mgmt_packet_data( + rwnx_hw, rwnx_vif, peer, action_code, dialog_token, + status_code, peer_capability, initiator, buf, len, 0, + NULL); break; default: - printk("%s: Unknown TDLS mgmt/action frame %pM\n", - __func__, peer); + printk("%s: Unknown TDLS mgmt/action frame %pM\n", __func__, + peer); ret = -EOPNOTSUPP; break; } @@ -4219,15 +4493,13 @@ rwnx_cfg80211_tdls_mgmt(struct wiphy *wiphy, /* * @tdls_oper: execute TDLS operation */ -static int -rwnx_cfg80211_tdls_oper(struct wiphy *wiphy, - struct net_device *dev, +static int rwnx_cfg80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev, #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) - const u8 *peer, + const u8 *peer, #else - u8 *peer, + u8 *peer, #endif - enum nl80211_tdls_operation oper) + enum nl80211_tdls_operation oper) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -4243,28 +4515,28 @@ rwnx_cfg80211_tdls_oper(struct wiphy *wiphy, if (memcmp(rwnx_vif->sta.tdls_sta->mac_addr, peer, ETH_ALEN) == 0) { /* Disable Channel Switch */ - if (!rwnx_send_tdls_cancel_chan_switch_req(rwnx_hw, rwnx_vif, - rwnx_vif->sta.tdls_sta, - NULL)) + if (!rwnx_send_tdls_cancel_chan_switch_req( + rwnx_hw, rwnx_vif, rwnx_vif->sta.tdls_sta, NULL)) rwnx_vif->sta.tdls_sta->tdls.chsw_en = false; netdev_info(dev, "Del TDLS sta %d (%pM)", - rwnx_vif->sta.tdls_sta->sta_idx, - rwnx_vif->sta.tdls_sta->mac_addr); + rwnx_vif->sta.tdls_sta->sta_idx, + rwnx_vif->sta.tdls_sta->mac_addr); /* Ensure that we won't process PS change ind */ spin_lock_bh(&rwnx_hw->cb_lock); rwnx_vif->sta.tdls_sta->ps.active = false; rwnx_vif->sta.tdls_sta->valid = false; spin_unlock_bh(&rwnx_hw->cb_lock); rwnx_txq_sta_deinit(rwnx_hw, rwnx_vif->sta.tdls_sta); - error = rwnx_send_me_sta_del(rwnx_hw, rwnx_vif->sta.tdls_sta->sta_idx, true); + error = rwnx_send_me_sta_del( + rwnx_hw, rwnx_vif->sta.tdls_sta->sta_idx, true); if ((error != 0) && (error != -EPIPE)) return error; #ifdef CONFIG_RWNX_BFMER - // Disable Beamformer if supported - rwnx_bfmer_report_del(rwnx_hw, rwnx_vif->sta.tdls_sta); - rwnx_mu_group_sta_del(rwnx_hw, rwnx_vif->sta.tdls_sta); + // Disable Beamformer if supported + rwnx_bfmer_report_del(rwnx_hw, rwnx_vif->sta.tdls_sta); + rwnx_mu_group_sta_del(rwnx_hw, rwnx_vif->sta.tdls_sta); #endif /* CONFIG_RWNX_BFMER */ /* Set TDLS not active */ @@ -4284,11 +4556,10 @@ rwnx_cfg80211_tdls_oper(struct wiphy *wiphy, /* * @tdls_channel_switch: enable TDLS channel switch */ -static int -rwnx_cfg80211_tdls_channel_switch (struct wiphy *wiphy, - struct net_device *dev, - const u8 *addr, u8 oper_class, - struct cfg80211_chan_def *chandef) +static int rwnx_cfg80211_tdls_channel_switch(struct wiphy *wiphy, + struct net_device *dev, + const u8 *addr, u8 oper_class, + struct cfg80211_chan_def *chandef) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -4302,13 +4573,14 @@ rwnx_cfg80211_tdls_channel_switch (struct wiphy *wiphy, } if (!rwnx_sta->tdls.chsw_allowed) { - printk("%s: TDLS station %pM does not support TDLS channel switch\n", __func__, addr); + printk("%s: TDLS station %pM does not support TDLS channel switch\n", + __func__, addr); return -ENOTSUPP; } error = rwnx_send_tdls_chan_switch_req(rwnx_hw, rwnx_vif, rwnx_sta, - rwnx_sta->tdls.initiator, - oper_class, chandef, &cfm); + rwnx_sta->tdls.initiator, + oper_class, chandef, &cfm); if (error) return error; @@ -4316,7 +4588,8 @@ rwnx_cfg80211_tdls_channel_switch (struct wiphy *wiphy, rwnx_sta->tdls.chsw_en = true; return 0; } else { - printk("%s: TDLS channel switch already enabled and only one is supported\n", __func__); + printk("%s: TDLS channel switch already enabled and only one is supported\n", + __func__); return -EALREADY; } } @@ -4324,10 +4597,9 @@ rwnx_cfg80211_tdls_channel_switch (struct wiphy *wiphy, /* * @tdls_cancel_channel_switch: disable TDLS channel switch */ -static void -rwnx_cfg80211_tdls_cancel_channel_switch (struct wiphy *wiphy, - struct net_device *dev, - const u8 *addr) +static void rwnx_cfg80211_tdls_cancel_channel_switch(struct wiphy *wiphy, + struct net_device *dev, + const u8 *addr) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -4337,8 +4609,8 @@ rwnx_cfg80211_tdls_cancel_channel_switch (struct wiphy *wiphy, if (!rwnx_sta) return; - if (!rwnx_send_tdls_cancel_chan_switch_req(rwnx_hw, rwnx_vif, - rwnx_sta, &cfm)) + if (!rwnx_send_tdls_cancel_chan_switch_req(rwnx_hw, rwnx_vif, rwnx_sta, + &cfm)) rwnx_sta->tdls.chsw_en = false; } #endif /* version >= 3.19 */ @@ -4347,15 +4619,14 @@ rwnx_cfg80211_tdls_cancel_channel_switch (struct wiphy *wiphy, * @change_bss: Modify parameters for a given BSS (mainly for AP mode). */ int rwnx_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev, - struct bss_parameters *params) + struct bss_parameters *params) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); - int res = -EOPNOTSUPP; + int res = -EOPNOTSUPP; if (((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP) || - (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO)) && - (params->ap_isolate > -1)) { - + (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO)) && + (params->ap_isolate > -1)) { if (params->ap_isolate) rwnx_vif->ap.flags |= RWNX_AP_ISOLATE; else @@ -4368,7 +4639,7 @@ int rwnx_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev, } static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, - struct station_info *sinfo) + struct station_info *sinfo) { struct rwnx_sta_stats *stats = &sta->stats; struct rx_vector_1 *rx_vect1 = &stats->last_rx.rx_vect1; @@ -4379,51 +4650,52 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, sinfo->tx_failed = cfm.txfailed; rate_info = (union rwnx_rate_ctrl_info *)&cfm.rate_info; - AICWFDBG(LOGDEBUG, "%s ModTx(%d):%d TxIndex:%d ModRx(%d):%d RxHTIndex:%d RxVHTIndex:%d RxHEIndex:%d RSSI:%d \r\n", __func__, - rate_info->bwTx, - rate_info->formatModTx, - rate_info->mcsIndexTx, - rx_vect1->ch_bw, - rx_vect1->format_mod, - rx_vect1->ht.mcs, - rx_vect1->vht.mcs, - rx_vect1->he.mcs, + AICWFDBG( + LOGDEBUG, + "%s ModTx(%d):%d TxIndex:%d ModRx(%d):%d RxHTIndex:%d RxVHTIndex:%d RxHEIndex:%d RSSI:%d \r\n", + __func__, rate_info->bwTx, rate_info->formatModTx, + rate_info->mcsIndexTx, rx_vect1->ch_bw, rx_vect1->format_mod, + rx_vect1->ht.mcs, rx_vect1->vht.mcs, rx_vect1->he.mcs, (s8)cfm.rssi); - - switch (rate_info->formatModTx) { case FORMATMOD_NON_HT: case FORMATMOD_NON_HT_DUP_OFDM: sinfo->txrate.flags = 0; - sinfo->txrate.legacy = tx_legrates_lut_rate[rate_info->mcsIndexTx]; + sinfo->txrate.legacy = + tx_legrates_lut_rate[rate_info->mcsIndexTx]; + sinfo->txrate.nss = 1; break; case FORMATMOD_HT_MF: case FORMATMOD_HT_GF: sinfo->txrate.flags = RATE_INFO_FLAGS_MCS; - sinfo->txrate.mcs = rate_info->mcsIndexTx; + sinfo->txrate.mcs = rate_info->mcsIndexTx & 0x7; + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 3) & 0x7) + 1; + if (rate_info->giAndPreTypeTx) + sinfo->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; break; case FORMATMOD_VHT: sinfo->txrate.flags = RATE_INFO_FLAGS_VHT_MCS; - sinfo->txrate.mcs = rate_info->mcsIndexTx; + sinfo->txrate.mcs = rate_info->mcsIndexTx & 0xF; + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 4) & 0x7) + 1; break; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) case FORMATMOD_HE_MU: case FORMATMOD_HE_SU: case FORMATMOD_HE_ER: sinfo->txrate.flags = RATE_INFO_FLAGS_HE_MCS; - sinfo->txrate.mcs = rate_info->mcsIndexTx; + sinfo->txrate.mcs = rate_info->mcsIndexTx & 0xF; + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 4) & 0x7) + 1; break; #else case FORMATMOD_HE_MU: case FORMATMOD_HE_SU: case FORMATMOD_HE_ER: sinfo->txrate.flags = RATE_INFO_FLAGS_VHT_MCS; - if(rate_info->mcsIndexTx > 9){ - sinfo->txrate.mcs = 9; - }else{ - sinfo->txrate.mcs = rate_info->mcsIndexTx; - } + sinfo->txrate.mcs = ((rate_info->mcsIndexTx & 0xF) > 9 ? + 9 : + (rate_info->mcsIndexTx & 0xF)); + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 4) & 0x7) + 1; break; #endif default: @@ -4454,18 +4726,18 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, } #endif - sinfo->txrate.nss = 1; - sinfo->filled |= (BIT(NL80211_STA_INFO_TX_BITRATE) | BIT(NL80211_STA_INFO_TX_FAILED)); + sinfo->filled |= (BIT(NL80211_STA_INFO_TX_BITRATE) | + BIT(NL80211_STA_INFO_TX_FAILED)); - sinfo->inactive_time = jiffies_to_msecs(jiffies - vif->rwnx_hw->stats.last_tx); + sinfo->inactive_time = + jiffies_to_msecs(jiffies - vif->rwnx_hw->stats.last_tx); sinfo->rx_bytes = vif->net_stats.rx_bytes; sinfo->tx_bytes = vif->net_stats.tx_bytes; sinfo->tx_packets = vif->net_stats.tx_packets; sinfo->rx_packets = vif->net_stats.rx_packets; sinfo->signal = (s8)cfm.rssi; - sinfo->rxrate.nss = 1; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) switch (rx_vect1->ch_bw) { case PHY_CHNL_BW_20: sinfo->rxrate.bw = RATE_INFO_BW_20; @@ -4480,20 +4752,21 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, sinfo->rxrate.bw = RATE_INFO_BW_160; break; default: - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) sinfo->rxrate.bw = RATE_INFO_BW_HE_RU; - #else +#else sinfo->rxrate.bw = RATE_INFO_BW_20; - #endif +#endif break; } - #endif +#endif switch (rx_vect1->format_mod) { case FORMATMOD_NON_HT: case FORMATMOD_NON_HT_DUP_OFDM: sinfo->rxrate.flags = 0; - sinfo->rxrate.legacy = legrates_lut_rate[legrates_lut[rx_vect1->leg_rate]]; + sinfo->rxrate.legacy = legrates_lut[rx_vect1->leg_rate].rate; + sinfo->rxrate.nss = 1; break; case FORMATMOD_HT_MF: case FORMATMOD_HT_GF: @@ -4501,12 +4774,14 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, if (rx_vect1->ht.short_gi) sinfo->rxrate.flags |= RATE_INFO_FLAGS_SHORT_GI; sinfo->rxrate.mcs = rx_vect1->ht.mcs; + sinfo->rxrate.nss = rx_vect1->ht.num_extn_ss + 1; break; case FORMATMOD_VHT: sinfo->rxrate.flags = RATE_INFO_FLAGS_VHT_MCS; if (rx_vect1->vht.short_gi) sinfo->rxrate.flags |= RATE_INFO_FLAGS_SHORT_GI; sinfo->rxrate.mcs = rx_vect1->vht.mcs; + sinfo->rxrate.nss = rx_vect1->vht.nss + 1; break; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) case FORMATMOD_HE_MU: @@ -4517,6 +4792,7 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, sinfo->rxrate.mcs = rx_vect1->he.mcs; sinfo->rxrate.he_gi = rx_vect1->he.gi_type; sinfo->rxrate.he_dcm = rx_vect1->he.dcm; + sinfo->rxrate.nss = rx_vect1->he.nss + 1; break; #else //kernel not support he @@ -4524,11 +4800,14 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, case FORMATMOD_HE_SU: case FORMATMOD_HE_ER: sinfo->rxrate.flags = RATE_INFO_FLAGS_VHT_MCS; - if(rx_vect1->he.mcs > 9){ - sinfo->rxrate.mcs = 9; - }else{ - sinfo->rxrate.mcs = rx_vect1->he.mcs; - } + if (rx_vect1->he.mcs > 9) { + sinfo->rxrate.mcs = 9; + } else { + sinfo->rxrate.mcs = rx_vect1->he.mcs; + } + sinfo->rxrate.mcs = + (rx_vect1->he.mcs > 9 ? 9 : rx_vect1->he.mcs); + sinfo->rxrate.nss = rx_vect1->he.nss + 1; break; #endif default: @@ -4536,38 +4815,34 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, } #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) - sinfo->filled |= (STATION_INFO_INACTIVE_TIME | - STATION_INFO_RX_BYTES64 | - STATION_INFO_TX_BYTES64 | - STATION_INFO_RX_PACKETS | - STATION_INFO_TX_PACKETS | - STATION_INFO_SIGNAL | - STATION_INFO_RX_BITRATE); + sinfo->filled |= (STATION_INFO_INACTIVE_TIME | STATION_INFO_RX_BYTES64 | + STATION_INFO_TX_BYTES64 | STATION_INFO_RX_PACKETS | + STATION_INFO_TX_PACKETS | STATION_INFO_SIGNAL | + STATION_INFO_RX_BITRATE); #else sinfo->filled |= (BIT(NL80211_STA_INFO_INACTIVE_TIME) | - BIT(NL80211_STA_INFO_RX_BYTES64) | - BIT(NL80211_STA_INFO_TX_BYTES64) | - BIT(NL80211_STA_INFO_RX_PACKETS) | - BIT(NL80211_STA_INFO_TX_PACKETS) | - BIT(NL80211_STA_INFO_SIGNAL) | - BIT(NL80211_STA_INFO_RX_BITRATE)); + BIT(NL80211_STA_INFO_RX_BYTES64) | + BIT(NL80211_STA_INFO_TX_BYTES64) | + BIT(NL80211_STA_INFO_RX_PACKETS) | + BIT(NL80211_STA_INFO_TX_PACKETS) | + BIT(NL80211_STA_INFO_SIGNAL) | + BIT(NL80211_STA_INFO_RX_BITRATE)); #endif return 0; } - /** * @get_station: get station information for the station identified by @mac */ static int rwnx_cfg80211_get_station(struct wiphy *wiphy, - struct net_device *dev, + struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *mac, + u8 *mac, #else - const u8 *mac, + const u8 *mac, #endif - struct station_info *sinfo) + struct station_info *sinfo) { struct rwnx_vif *vif = netdev_priv(dev); struct rwnx_sta *sta = NULL; @@ -4575,14 +4850,15 @@ static int rwnx_cfg80211_get_station(struct wiphy *wiphy, if (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_MONITOR) return -EINVAL; else if ((RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_STATION) || - (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_CLIENT)) { + (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_CLIENT)) { if (vif->sta.ap && ether_addr_equal(vif->sta.ap->mac_addr, mac)) sta = vif->sta.ap; } else { struct rwnx_sta *sta_iter; spin_lock_bh(&vif->rwnx_hw->cb_lock); - list_for_each_entry(sta_iter, &vif->ap.sta_list, list) { - if (sta_iter->valid && ether_addr_equal(sta_iter->mac_addr, mac)) { + list_for_each_entry (sta_iter, &vif->ap.sta_list, list) { + if (sta_iter->valid && + ether_addr_equal(sta_iter->mac_addr, mac)) { sta = sta_iter; break; } @@ -4591,28 +4867,30 @@ static int rwnx_cfg80211_get_station(struct wiphy *wiphy, } if (sta) - return rwnx_fill_station_info(sta, vif, sinfo); + return rwnx_fill_station_info(sta, vif, sinfo); return -ENOENT; } - /** * @dump_station: dump station callback -- resume dump at index @idx */ -static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *dev, - int idx, u8 *mac, struct station_info *sinfo) +static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, + struct net_device *dev, int idx, u8 *mac, + struct station_info *sinfo) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); - struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + //struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_sta *sta_iter, *sta = NULL; - struct mesh_peer_info_cfm peer_info_cfm; + //struct mesh_peer_info_cfm peer_info_cfm; int i = 0; +#if 0 if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; +#endif - list_for_each_entry(sta_iter, &rwnx_vif->ap.sta_list, list) { + list_for_each_entry (sta_iter, &rwnx_vif->ap.sta_list, list) { if (i < idx) { i++; continue; @@ -4625,6 +4903,10 @@ static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *de if (sta == NULL) return -ENOENT; + /* Copy peer MAC address */ + memcpy(mac, &sta->mac_addr, ETH_ALEN); + +#if 0 /* Forward the information to the UMAC */ if (rwnx_send_mesh_peer_info_req(rwnx_hw, rwnx_vif, sta->sta_idx, &peer_info_cfm)) @@ -4656,6 +4938,11 @@ static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *de BIT(NL80211_STA_INFO_PEER_PM) | BIT(NL80211_STA_INFO_NONPEER_PM)); #endif +#endif + + if (sta) { + rwnx_fill_station_info(sta, rwnx_vif, sinfo); + } return 0; } @@ -4665,11 +4952,9 @@ static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *de */ static int rwnx_cfg80211_add_mpath(struct wiphy *wiphy, struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *dst, - u8 *next_hop + u8 *dst, u8 *next_hop #else - const u8 *dst, - const u8 *next_hop + const u8 *dst, const u8 *next_hop #endif ) { @@ -4680,7 +4965,8 @@ static int rwnx_cfg80211_add_mpath(struct wiphy *wiphy, struct net_device *dev, if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - return rwnx_send_mesh_path_update_req(rwnx_hw, rwnx_vif, dst, next_hop, &cfm); + return rwnx_send_mesh_path_update_req(rwnx_hw, rwnx_vif, dst, next_hop, + &cfm); } /** @@ -4688,9 +4974,9 @@ static int rwnx_cfg80211_add_mpath(struct wiphy *wiphy, struct net_device *dev, */ static int rwnx_cfg80211_del_mpath(struct wiphy *wiphy, struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *dst + u8 *dst #else - const u8 *dst + const u8 *dst #endif ) { @@ -4701,19 +4987,19 @@ static int rwnx_cfg80211_del_mpath(struct wiphy *wiphy, struct net_device *dev, if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - return rwnx_send_mesh_path_update_req(rwnx_hw, rwnx_vif, dst, NULL, &cfm); + return rwnx_send_mesh_path_update_req(rwnx_hw, rwnx_vif, dst, NULL, + &cfm); } /** * @change_mpath: change a given mesh path */ -static int rwnx_cfg80211_change_mpath(struct wiphy *wiphy, struct net_device *dev, +static int rwnx_cfg80211_change_mpath(struct wiphy *wiphy, + struct net_device *dev, #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) - u8 *dst, - u8 *next_hop + u8 *dst, u8 *next_hop #else - const u8 *dst, - const u8 *next_hop + const u8 *dst, const u8 *next_hop #endif ) { @@ -4724,14 +5010,16 @@ static int rwnx_cfg80211_change_mpath(struct wiphy *wiphy, struct net_device *de if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - return rwnx_send_mesh_path_update_req(rwnx_hw, rwnx_vif, dst, next_hop, &cfm); + return rwnx_send_mesh_path_update_req(rwnx_hw, rwnx_vif, dst, next_hop, + &cfm); } /** * @get_mpath: get a mesh path for the given parameters */ static int rwnx_cfg80211_get_mpath(struct wiphy *wiphy, struct net_device *dev, - u8 *dst, u8 *next_hop, struct mpath_info *pinfo) + u8 *dst, u8 *next_hop, + struct mpath_info *pinfo) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_mesh_path *mesh_path = NULL; @@ -4740,7 +5028,7 @@ static int rwnx_cfg80211_get_mpath(struct wiphy *wiphy, struct net_device *dev, if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - list_for_each_entry(cur, &rwnx_vif->ap.mpath_list, list) { + list_for_each_entry (cur, &rwnx_vif->ap.mpath_list, list) { /* Compare the path target address and the provided destination address */ if (memcmp(dst, &cur->tgt_mac_addr, ETH_ALEN)) { continue; @@ -4768,8 +5056,8 @@ static int rwnx_cfg80211_get_mpath(struct wiphy *wiphy, struct net_device *dev, * @dump_mpath: dump mesh path callback -- resume dump at index @idx */ static int rwnx_cfg80211_dump_mpath(struct wiphy *wiphy, struct net_device *dev, - int idx, u8 *dst, u8 *next_hop, - struct mpath_info *pinfo) + int idx, u8 *dst, u8 *next_hop, + struct mpath_info *pinfo) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_mesh_path *mesh_path = NULL; @@ -4779,7 +5067,7 @@ static int rwnx_cfg80211_dump_mpath(struct wiphy *wiphy, struct net_device *dev, if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - list_for_each_entry(cur, &rwnx_vif->ap.mpath_list, list) { + list_for_each_entry (cur, &rwnx_vif->ap.mpath_list, list) { if (i < idx) { i++; continue; @@ -4809,7 +5097,7 @@ static int rwnx_cfg80211_dump_mpath(struct wiphy *wiphy, struct net_device *dev, * @get_mpp: get a mesh proxy path for the given parameters */ static int rwnx_cfg80211_get_mpp(struct wiphy *wiphy, struct net_device *dev, - u8 *dst, u8 *mpp, struct mpath_info *pinfo) + u8 *dst, u8 *mpp, struct mpath_info *pinfo) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_mesh_proxy *mesh_proxy = NULL; @@ -4818,7 +5106,7 @@ static int rwnx_cfg80211_get_mpp(struct wiphy *wiphy, struct net_device *dev, if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - list_for_each_entry(cur, &rwnx_vif->ap.proxy_list, list) { + list_for_each_entry (cur, &rwnx_vif->ap.proxy_list, list) { if (cur->local) { continue; } @@ -4848,7 +5136,8 @@ static int rwnx_cfg80211_get_mpp(struct wiphy *wiphy, struct net_device *dev, * @dump_mpp: dump mesh proxy path callback -- resume dump at index @idx */ static int rwnx_cfg80211_dump_mpp(struct wiphy *wiphy, struct net_device *dev, - int idx, u8 *dst, u8 *mpp, struct mpath_info *pinfo) + int idx, u8 *dst, u8 *mpp, + struct mpath_info *pinfo) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_mesh_proxy *mesh_proxy = NULL; @@ -4858,7 +5147,7 @@ static int rwnx_cfg80211_dump_mpp(struct wiphy *wiphy, struct net_device *dev, if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) return -ENOTSUPP; - list_for_each_entry(cur, &rwnx_vif->ap.proxy_list, list) { + list_for_each_entry (cur, &rwnx_vif->ap.proxy_list, list) { if (cur->local) { continue; } @@ -4890,8 +5179,9 @@ static int rwnx_cfg80211_dump_mpp(struct wiphy *wiphy, struct net_device *dev, /** * @get_mesh_config: Get the current mesh configuration */ -static int rwnx_cfg80211_get_mesh_config(struct wiphy *wiphy, struct net_device *dev, - struct mesh_config *conf) +static int rwnx_cfg80211_get_mesh_config(struct wiphy *wiphy, + struct net_device *dev, + struct mesh_config *conf) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -4904,8 +5194,9 @@ static int rwnx_cfg80211_get_mesh_config(struct wiphy *wiphy, struct net_device /** * @update_mesh_config: Update mesh parameters on a running mesh. */ -static int rwnx_cfg80211_update_mesh_config(struct wiphy *wiphy, struct net_device *dev, - u32 mask, const struct mesh_config *nconf) +static int rwnx_cfg80211_update_mesh_config(struct wiphy *wiphy, + struct net_device *dev, u32 mask, + const struct mesh_config *nconf) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); @@ -4929,7 +5220,8 @@ static int rwnx_cfg80211_update_mesh_config(struct wiphy *wiphy, struct net_devi } } - status = rwnx_send_mesh_update_req(rwnx_hw, rwnx_vif, mask, nconf, &cfm); + status = + rwnx_send_mesh_update_req(rwnx_hw, rwnx_vif, mask, nconf, &cfm); if (!status && (cfm.status != 0)) status = -EINVAL; @@ -4942,7 +5234,8 @@ static int rwnx_cfg80211_update_mesh_config(struct wiphy *wiphy, struct net_devi * (invoked with the wireless_dev mutex held) */ static int rwnx_cfg80211_join_mesh(struct wiphy *wiphy, struct net_device *dev, - const struct mesh_config *conf, const struct mesh_setup *setup) + const struct mesh_config *conf, + const struct mesh_setup *setup) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); @@ -4958,7 +5251,8 @@ static int rwnx_cfg80211_join_mesh(struct wiphy *wiphy, struct net_device *dev, return -ENOTSUPP; /* Forward the information to the UMAC */ - error = rwnx_send_mesh_start_req(rwnx_hw, rwnx_vif, conf, setup, &mesh_start_cfm); + error = rwnx_send_mesh_start_req(rwnx_hw, rwnx_vif, conf, setup, + &mesh_start_cfm); if (error) { return error; } @@ -4982,8 +5276,9 @@ static int rwnx_cfg80211_join_mesh(struct wiphy *wiphy, struct net_device *dev, sta->ps.active = false; rwnx_mu_group_sta_init(sta, NULL); spin_lock_bh(&rwnx_hw->cb_lock); - rwnx_chanctx_link(rwnx_vif, mesh_start_cfm.ch_idx, - (struct cfg80211_chan_def *)(&setup->chandef)); + rwnx_chanctx_link( + rwnx_vif, mesh_start_cfm.ch_idx, + (struct cfg80211_chan_def *)(&setup->chandef)); if (rwnx_hw->cur_chanctx != mesh_start_cfm.ch_idx) { txq_status = RWNX_TXQ_STOP_CHAN; } @@ -5016,7 +5311,7 @@ static int rwnx_cfg80211_join_mesh(struct wiphy *wiphy, struct net_device *dev, netdev_info(dev, "Failed to start MP (%d)", error); } else { netdev_info(dev, "MP started: ch=%d, bcmc_idx=%d", - rwnx_vif->ch_index, rwnx_vif->ap.bcmc_index); + rwnx_vif->ch_index, rwnx_vif->ap.bcmc_index); } return error; @@ -5090,11 +5385,11 @@ static struct cfg80211_ops rwnx_cfg80211_ops = { .stop_ap = rwnx_cfg80211_stop_ap, .set_monitor_channel = rwnx_cfg80211_set_monitor_channel, .probe_client = rwnx_cfg80211_probe_client, -// .mgmt_frame_register = rwnx_cfg80211_mgmt_frame_register, + // .mgmt_frame_register = rwnx_cfg80211_mgmt_frame_register, .set_wiphy_params = rwnx_cfg80211_set_wiphy_params, .set_txq_params = rwnx_cfg80211_set_txq_params, .set_tx_power = rwnx_cfg80211_set_tx_power, -// .get_tx_power = rwnx_cfg80211_get_tx_power, + .get_tx_power = rwnx_cfg80211_get_tx_power, .set_power_mgmt = rwnx_cfg80211_set_power_mgmt, .get_station = rwnx_cfg80211_get_station, .remain_on_channel = rwnx_cfg80211_remain_on_channel, @@ -5114,16 +5409,16 @@ static struct cfg80211_ops rwnx_cfg80211_ops = { .tdls_mgmt = rwnx_cfg80211_tdls_mgmt, .tdls_oper = rwnx_cfg80211_tdls_oper, .change_bss = rwnx_cfg80211_change_bss, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || defined(CONFIG_WPA3_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || \ + defined(CONFIG_WPA3_FOR_OLD_KERNEL) .external_auth = rwnx_cfg80211_external_auth, #endif #ifdef CONFIG_SCHED_SCAN - .sched_scan_start = rwnx_cfg80211_sched_scan_start, - .sched_scan_stop = rwnx_cfg80211_sched_scan_stop, + .sched_scan_start = rwnx_cfg80211_sched_scan_start, + .sched_scan_stop = rwnx_cfg80211_sched_scan_stop, #endif }; - /********************************************************************* * Init/Exit functions *********************************************************************/ @@ -5132,7 +5427,7 @@ static void rwnx_wdev_unregister(struct rwnx_hw *rwnx_hw) struct rwnx_vif *rwnx_vif, *tmp; rtnl_lock(); - list_for_each_entry_safe(rwnx_vif, tmp, &rwnx_hw->vifs, list) { + list_for_each_entry_safe (rwnx_vif, tmp, &rwnx_hw->vifs, list) { rwnx_cfg80211_del_iface(rwnx_hw->wiphy, &rwnx_vif->wdev); } rtnl_unlock(); @@ -5144,25 +5439,32 @@ static void rwnx_set_vers(struct rwnx_hw *rwnx_hw) RWNX_DBG(RWNX_FN_ENTRY_STR); - snprintf(rwnx_hw->wiphy->fw_version, - sizeof(rwnx_hw->wiphy->fw_version), "%d.%d.%d.%d", - (vers & (0xff << 24)) >> 24, (vers & (0xff << 16)) >> 16, - (vers & (0xff << 8)) >> 8, (vers & (0xff << 0)) >> 0); + snprintf(rwnx_hw->wiphy->fw_version, sizeof(rwnx_hw->wiphy->fw_version), + "%d.%d.%d.%d", (vers & (0xff << 24)) >> 24, + (vers & (0xff << 16)) >> 16, (vers & (0xff << 8)) >> 8, + (vers & (0xff << 0)) >> 0); } static void rwnx_reg_notifier(struct wiphy *wiphy, - struct regulatory_request *request) + struct regulatory_request *request) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); // For now trust all initiator +#ifdef CONFIG_RADAR_OR_IR_DETECT + if (request->dfs_region != 0) + rwnx_radar_set_domain(&rwnx_hw->radar, request->dfs_region); +#else rwnx_radar_set_domain(&rwnx_hw->radar, request->dfs_region); +#endif if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || - ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC|| - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) && testmode == 0)){ - rwnx_send_me_chan_config_req(rwnx_hw); - } + ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) && + testmode == 0)) { + rwnx_send_me_chan_config_req(rwnx_hw, &request->alpha2[0]); + } } static void rwnx_enable_mesh(struct rwnx_hw *rwnx_hw) @@ -5216,63 +5518,70 @@ static const struct wiphy_wowlan_support aic_wowlan_support = { extern int aicwf_vendor_init(struct wiphy *wiphy); extern txpwr_idx_conf_t nvram_txpwr_idx; - -int rwnx_ic_system_init(struct rwnx_hw *rwnx_hw){ +int rwnx_ic_system_init(struct rwnx_hw *rwnx_hw) +{ u32 mem_addr; struct dbg_mem_read_cfm rd_mem_addr_cfm; mem_addr = 0x40500000; -// if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || -// rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - if (rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, &rd_mem_addr_cfm)){ + // if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + // rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + if (rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, &rd_mem_addr_cfm)) { return -1; - } + } chip_id = (u8)(rd_mem_addr_cfm.memdata >> 16); - if (rwnx_send_dbg_mem_read_req(rwnx_hw, 0x00000020, &rd_mem_addr_cfm)) { + if (rwnx_send_dbg_mem_read_req(rwnx_hw, 0x00000020, &rd_mem_addr_cfm)) { AICWFDBG(LOGERROR, "[0x00000020] rd fail\n"); - return -1; - } - chip_sub_id = (u8)(rd_mem_addr_cfm.memdata); + return -1; + } + chip_sub_id = (u8)(rd_mem_addr_cfm.memdata); - AICWFDBG(LOGINFO, "FDRV chip_id=%x, chip_sub_id=%x!!\n", chip_id, chip_sub_id); + AICWFDBG(LOGINFO, "FDRV chip_id=%x, chip_sub_id=%x!!\n", chip_id, + chip_sub_id); #ifdef CONFIG_OOB - if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - u32 memdata_temp = 0x00000006; - int ret; - ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, 0x40504084, 4, &memdata_temp); - if (ret) { - AICWFDBG(LOGERROR, "[0x40504084] write fail: %d\n", ret); - return -1; - } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + u32 memdata_temp = 0x00000006; + int ret; + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, 0x40504084, 4, + &memdata_temp); + if (ret) { + AICWFDBG(LOGERROR, "[0x40504084] write fail: %d\n", + ret); + return -1; + } - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40504084, &rd_mem_addr_cfm); - if (ret) { - AICWFDBG(LOGERROR, "[0x40504084] rd fail\n"); - return -1; - } - AICWFDBG(LOGINFO, "rd [0x40504084] = %x\n", rd_mem_addr_cfm.memdata); - } + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x40504084, + &rd_mem_addr_cfm); + if (ret) { + AICWFDBG(LOGERROR, "[0x40504084] rd fail\n"); + return -1; + } + AICWFDBG(LOGINFO, "rd [0x40504084] = %x\n", + rd_mem_addr_cfm.memdata); + } #endif if (rwnx_platform_on(rwnx_hw, NULL)) - return -1; + return -1; #if defined(CONFIG_START_FROM_BOOTROM) //if (start_from_bootrom(rwnx_hw)) // return -1; #endif -// } + // } return 0; } -int rwnx_ic_rf_init(struct rwnx_hw *rwnx_hw){ +int rwnx_ic_rf_init(struct rwnx_hw *rwnx_hw) +{ struct mm_set_rf_calib_cfm cfm; int ret = 0; - if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801){ + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { if ((ret = rwnx_send_txpwr_idx_req(rwnx_hw))) { return -1; } @@ -5286,21 +5595,19 @@ int rwnx_ic_rf_init(struct rwnx_hw *rwnx_hw){ return -1; } - }else if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { if ((ret = aicwf_set_rf_config_8800dc(rwnx_hw, &cfm))) return -1; - - }else if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { if ((ret = aicwf_set_rf_config_8800d80(rwnx_hw, &cfm))) return -1; } return 0; } - #ifdef CONFIG_PLATFORM_ALLWINNER #ifdef CONFIG_USE_CUSTOMER_MAC #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) @@ -5308,8 +5615,8 @@ extern int get_custom_mac_address(int fmt, char *name, char *addr); #else extern int get_wifi_custom_mac_address(char *addr_str); #endif -#endif//CONFIG_USE_CUSTOMER_MAC -#endif//CONFIG_PLATFORM_ALLWINNER +#endif //CONFIG_USE_CUSTOMER_MAC +#endif //CONFIG_PLATFORM_ALLWINNER #ifdef CONFIG_PLATFORM_ROCKCHIP #include @@ -5319,41 +5626,75 @@ extern int get_wifi_custom_mac_address(char *addr_str); #endif #ifdef CONFIG_USE_CUSTOMER_MAC -int rwnx_get_custom_mac_addr(u8_l *mac_addr_efuse){ - int ret = 0; +int rwnx_get_custom_mac_addr(u8_l *mac_addr_efuse) +{ + int ret = 0; #ifdef CONFIG_PLATFORM_ALLWINNER #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) - ret = get_custom_mac_address(1, "wifi", mac_addr_efuse); + ret = get_custom_mac_address(1, "wifi", mac_addr_efuse); #else - ret = get_wifi_custom_mac_address(addr_str); - if (ret >= 0) { - sscanf(addr_str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx", - &mac_addr_efuse[0], &mac_addr_efuse[1], &mac_addr_efuse[2], - &mac_addr_efuse[3], &mac_addr_efuse[4], &mac_addr_efuse[5]); - } + ret = get_wifi_custom_mac_address(addr_str); + if (ret >= 0) { + sscanf(addr_str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx", + &mac_addr_efuse[0], &mac_addr_efuse[1], + &mac_addr_efuse[2], &mac_addr_efuse[3], + &mac_addr_efuse[4], &mac_addr_efuse[5]); + } #endif -#endif//CONFIG_PLATFORM_ALLWINNER +#endif //CONFIG_PLATFORM_ALLWINNER #ifdef CONFIG_PLATFORM_ROCKCHIP - ret = rockchip_wifi_mac_addr(mac_addr_efuse); -#endif//CONFIG_PLATFORM_ROCKCHIP + ret = rockchip_wifi_mac_addr(mac_addr_efuse); +#endif //CONFIG_PLATFORM_ROCKCHIP #ifdef CONFIG_PLATFORM_ROCKCHIP2 - ret = rockchip_wifi_mac_addr(mac_addr_efuse); -#endif//CONFIG_PLATFORM_ROCKCHIP + ret = rockchip_wifi_mac_addr(mac_addr_efuse); +#endif //CONFIG_PLATFORM_ROCKCHIP - if(ret == 0){ - AICWFDBG(LOGINFO, "%s %02x:%02x:%02x:%02x:%02x:%02x", __func__, - mac_addr_efuse[0], mac_addr_efuse[1], mac_addr_efuse[2], - mac_addr_efuse[3], mac_addr_efuse[4], mac_addr_efuse[5]); - } + if (ret == 0) { + AICWFDBG(LOGINFO, "%s %02x:%02x:%02x:%02x:%02x:%02x", __func__, + mac_addr_efuse[0], mac_addr_efuse[1], + mac_addr_efuse[2], mac_addr_efuse[3], + mac_addr_efuse[4], mac_addr_efuse[5]); + } - return ret; + return ret; +} +#endif + +#ifdef CONFIG_FOR_IPCAM +void aic_ipc_setting(struct rwnx_vif *rwnx_vif) +{ + struct rwnx_hw *rwnx_hw = rwnx_vif->rwnx_hw; + uint32_t hw_edca = 1; + uint32_t hw_cca = 3; + int32_t param[14]; + int32_t cca[5] = { 0x10, 0, 0, 0, 0 }; + + param[0] = 0xFA522; + param[1] = 0xFA522; + param[2] = 0xFA522; + param[3] = 0xFA522; + param[4] = rwnx_vif->vif_index; + param[5] = 0x1e; + param[6] = 0; + param[7] = 0; + param[8] = 0; + param[9] = 0x2; + param[10] = 0x2; + param[11] = 0x7; + param[12] = 0; + param[13] = 1; + rwnx_send_vendor_hwconfig_req(rwnx_hw, hw_edca, param, NULL); + rwnx_send_vendor_hwconfig_req(rwnx_hw, hw_cca, cca, NULL); } #endif extern void *aicwf_prealloc_txq_alloc(size_t size); +#ifdef CONFIG_POWER_LIMIT +extern char default_ccode[]; +#endif int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) { struct rwnx_hw *rwnx_hw; @@ -5362,7 +5703,7 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) struct wiphy *wiphy; struct rwnx_vif *vif; int i; - u8 dflt_mac[ETH_ALEN] = { 0x88, 0x00, 0x33, 0x77, 0x10, 0x99}; + u8 dflt_mac[ETH_ALEN] = { 0x88, 0x00, 0x33, 0x77, 0x10, 0x99 }; u8 addr_str[20]; //struct mm_set_rf_calib_cfm cfm; struct mm_get_fw_version_cfm fw_version; @@ -5381,13 +5722,18 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) aicbsp_get_feature(&feature, fw_path); get_random_bytes(&dflt_mac[4], 2); +#ifdef CONFIG_POWER_LIMIT + memcpy(country_code, default_ccode, 4); +#endif /* create a new wiphy for use with cfg80211 */ - AICWFDBG(LOGINFO, "%s sizeof(struct rwnx_hw):%d \r\n", __func__, (int)sizeof(struct rwnx_hw)); + AICWFDBG(LOGINFO, "%s sizeof(struct rwnx_hw):%d \r\n", __func__, + (int)sizeof(struct rwnx_hw)); wiphy = wiphy_new(&rwnx_cfg80211_ops, sizeof(struct rwnx_hw)); if (!wiphy) { - dev_err(rwnx_platform_get_dev(rwnx_plat), "Failed to create new wiphy\n"); + dev_err(rwnx_platform_get_dev(rwnx_plat), + "Failed to create new wiphy\n"); ret = -ENOMEM; goto err_out; } @@ -5409,10 +5755,10 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) rwnx_hw->tcp_pacing_shift = 7; #ifdef CONFIG_SCHED_SCAN - rwnx_hw->is_sched_scan = false; -#endif//CONFIG_SCHED_SCAN + rwnx_hw->is_sched_scan = false; +#endif //CONFIG_SCHED_SCAN - aicwf_wakeup_lock_init(rwnx_hw); + aicwf_wakeup_lock_init(rwnx_hw); rwnx_init_aic(rwnx_hw); /* set device pointer for wiphy */ set_wiphy_dev(wiphy, rwnx_hw->dev); @@ -5451,7 +5797,8 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) rwnx_hwq_init(rwnx_hw); #ifdef CONFIG_PREALLOC_TXQ - rwnx_hw->txq = (struct rwnx_txq*)aicwf_prealloc_txq_alloc(sizeof(struct rwnx_txq)*NX_NB_TXQ); + rwnx_hw->txq = (struct rwnx_txq *)aicwf_prealloc_txq_alloc( + sizeof(struct rwnx_txq) * NX_NB_TXQ); #endif for (i = 0; i < NX_NB_TXQ; i++) { @@ -5476,46 +5823,54 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) INIT_WORK(&rwnx_hw->apmStalossWork, apm_staloss_work_process); rwnx_hw->apmStaloss_wq = create_singlethread_workqueue("apmStaloss_wq"); if (!rwnx_hw->apmStaloss_wq) { - txrx_err("insufficient memory to create apmStaloss workqueue.\n"); + txrx_err( + "insufficient memory to create apmStaloss workqueue.\n"); goto err_cache; } wiphy->mgmt_stypes = rwnx_default_mgmt_stypes; rwnx_hw->fwlog_en = feature.fwlog_en; - //init ic system - if((ret = rwnx_ic_system_init(rwnx_hw))){ + if ((ret = rwnx_ic_system_init(rwnx_hw))) { goto err_lmac_reqs; } - //ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, feature.hwinfo < 0, feature.hwinfo, 0, &set_start_cfm); + //ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, feature.hwinfo < 0, feature.hwinfo, 0, &set_start_cfm); #ifdef USE_5G - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { - ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, CO_BIT(5), 0, &set_start_cfm); + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { + ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, CO_BIT(5), 0, + &set_start_cfm); } #else - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { - ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, 0, 0, &set_start_cfm); + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { + ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, 0, 0, + &set_start_cfm); } #endif - else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, 0, 0, &set_start_cfm); - set_start_cfm.is_5g_support = false; + else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, 0, 0, + &set_start_cfm); + set_start_cfm.is_5g_support = false; } else { - ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, CO_BIT(5), 0, &set_start_cfm); + ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, CO_BIT(5), 0, + &set_start_cfm); } if (ret) goto err_lmac_reqs; - AICWFDBG(LOGINFO, "is 5g support = %d, vendor_info = 0x%02X\n", set_start_cfm.is_5g_support, set_start_cfm.vendor_info); + AICWFDBG(LOGINFO, "is 5g support = %d, vendor_info = 0x%02X\n", + set_start_cfm.is_5g_support, set_start_cfm.vendor_info); rwnx_hw->band_5g_support = set_start_cfm.is_5g_support; - rwnx_hw->vendor_info = (feature.hwinfo < 0) ? set_start_cfm.vendor_info : feature.hwinfo; + rwnx_hw->vendor_info = (feature.hwinfo < 0) ? + set_start_cfm.vendor_info : + feature.hwinfo; ret = rwnx_send_get_fw_version_req(rwnx_hw, &fw_version); - memcpy(wiphy->fw_version, fw_version.fw_version, fw_version.fw_version_len>32? 32 : fw_version.fw_version_len); + memcpy(wiphy->fw_version, fw_version.fw_version, + fw_version.fw_version_len > 32 ? 32 : fw_version.fw_version_len); AICWFDBG(LOGINFO, "Firmware Version: %s\r\n", fw_version.fw_version); wiphy->bands[NL80211_BAND_2GHZ] = &rwnx_band_2GHz; @@ -5523,15 +5878,13 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) wiphy->bands[NL80211_BAND_5GHZ] = &rwnx_band_5GHz; wiphy->interface_modes = - BIT(NL80211_IFTYPE_STATION) | - BIT(NL80211_IFTYPE_AP) | - BIT(NL80211_IFTYPE_AP_VLAN) | - BIT(NL80211_IFTYPE_P2P_CLIENT) | - BIT(NL80211_IFTYPE_P2P_GO) | + BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_AP_VLAN) | BIT(NL80211_IFTYPE_P2P_CLIENT) | + BIT(NL80211_IFTYPE_P2P_GO) | #ifndef CONFIG_USE_P2P0 - BIT(NL80211_IFTYPE_P2P_DEVICE) | + BIT(NL80211_IFTYPE_P2P_DEVICE) | #endif - BIT(NL80211_IFTYPE_MONITOR); + BIT(NL80211_IFTYPE_MONITOR); #if IS_ENABLED(CONFIG_PM) /* Set WoWLAN flags */ @@ -5542,30 +5895,31 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) #endif #endif wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL | - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)) - WIPHY_FLAG_HAS_CHANNEL_SWITCH | - #endif - WIPHY_FLAG_4ADDR_STATION | - WIPHY_FLAG_4ADDR_AP; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)) + WIPHY_FLAG_HAS_CHANNEL_SWITCH | +#endif + WIPHY_FLAG_4ADDR_STATION | WIPHY_FLAG_4ADDR_AP; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) wiphy->max_num_csa_counters = BCN_MAX_CSA_CPT; - #endif +#endif - wiphy->max_remain_on_channel_duration = rwnx_hw->mod_params->roc_dur_max; + wiphy->max_remain_on_channel_duration = + rwnx_hw->mod_params->roc_dur_max; wiphy->features |= NL80211_FEATURE_NEED_OBSS_SCAN | - NL80211_FEATURE_SK_TX_STATUS | - NL80211_FEATURE_VIF_TXPOWER | - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) - NL80211_FEATURE_ACTIVE_MONITOR | - #endif - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) - NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE | - #endif - 0; + NL80211_FEATURE_SK_TX_STATUS | + NL80211_FEATURE_VIF_TXPOWER | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) + NL80211_FEATURE_ACTIVE_MONITOR | +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) + NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE | +#endif + 0; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || defined(CONFIG_WPA3_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || \ + defined(CONFIG_WPA3_FOR_OLD_KERNEL) wiphy->features |= NL80211_FEATURE_SAE; #endif @@ -5573,7 +5927,7 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) /* TDLS support */ wiphy->features |= NL80211_FEATURE_TDLS_CHANNEL_SWITCH; - wiphy->iface_combinations = rwnx_combinations; + wiphy->iface_combinations = rwnx_combinations; /* -1 not to include combination with radar detection, will be re-added in rwnx_handle_dynparams if supported */ wiphy->n_iface_combinations = ARRAY_SIZE(rwnx_combinations) - 1; @@ -5595,43 +5949,44 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) #ifdef CONFIG_SCHED_SCAN #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) - wiphy->max_sched_scan_reqs = 1; + wiphy->max_sched_scan_reqs = 1; #endif - wiphy->max_sched_scan_ssids = SCAN_SSID_MAX;//16; - wiphy->max_match_sets = SCAN_SSID_MAX;//16; - wiphy->max_sched_scan_ie_len = 2048; -#endif//CONFIG_SCHED_SCAN + wiphy->max_sched_scan_ssids = SCAN_SSID_MAX; //16; + wiphy->max_match_sets = SCAN_SSID_MAX; //16; + wiphy->max_sched_scan_ie_len = 2048; +#endif //CONFIG_SCHED_SCAN tasklet_init(&rwnx_hw->task, rwnx_task, (unsigned long)rwnx_hw); //init ic rf - if((ret = rwnx_ic_rf_init(rwnx_hw))){ + if ((ret = rwnx_ic_rf_init(rwnx_hw))) { goto err_lmac_reqs; } - #ifdef CONFIG_USE_CUSTOMER_MAC - ret = rwnx_get_custom_mac_addr(mac_addr_efuse); - if (ret){ - AICWFDBG(LOGERROR, "%s read mac fail use default mac\r\n", __func__); - memcpy(init_conf.mac_addr, dflt_mac, ETH_ALEN); - } + ret = rwnx_get_custom_mac_addr(mac_addr_efuse); + if (ret) { + AICWFDBG(LOGERROR, "%s read mac fail use default mac\r\n", + __func__); + memcpy(init_conf.mac_addr, dflt_mac, ETH_ALEN); + } #else - ret = rwnx_send_get_macaddr_req(rwnx_hw, (struct mm_get_mac_addr_cfm *)mac_addr_efuse); + ret = rwnx_send_get_macaddr_req( + rwnx_hw, (struct mm_get_mac_addr_cfm *)mac_addr_efuse); if (ret) goto err_lmac_reqs; #endif - if (mac_addr_efuse[0] | mac_addr_efuse[1] | mac_addr_efuse[2] | mac_addr_efuse[3]) { + if (mac_addr_efuse[0] | mac_addr_efuse[1] | mac_addr_efuse[2] | + mac_addr_efuse[3]) { memcpy(init_conf.mac_addr, mac_addr_efuse, ETH_ALEN); - }else{ - memcpy(init_conf.mac_addr, dflt_mac, ETH_ALEN); - } - + } else { + memcpy(init_conf.mac_addr, dflt_mac, ETH_ALEN); + } AICWFDBG(LOGINFO, "get macaddr: %02x:%02x:%02x:%02x:%02x:%02x\r\n", - mac_addr_efuse[0], mac_addr_efuse[1], mac_addr_efuse[2], - mac_addr_efuse[3], mac_addr_efuse[4], mac_addr_efuse[5]); + mac_addr_efuse[0], mac_addr_efuse[1], mac_addr_efuse[2], + mac_addr_efuse[3], mac_addr_efuse[4], mac_addr_efuse[5]); memcpy(wiphy->perm_addr, init_conf.mac_addr, ETH_ALEN); /* Reset FW */ @@ -5655,11 +6010,17 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) rwnx_enable_mesh(rwnx_hw); rwnx_radar_detection_init(&rwnx_hw->radar); +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_radar_set_domain(&rwnx_hw->radar, NL80211_DFS_FCC); +#endif + /* Set parameters to firmware */ if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || - ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC|| - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) && testmode == 0)){ + ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) && + testmode == 0)) { rwnx_send_me_config_req(rwnx_hw); } @@ -5682,10 +6043,12 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) rwnx_custregd(rwnx_hw, wiphy); if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || - ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) && testmode == 0)) { - rwnx_send_me_chan_config_req(rwnx_hw); + ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) && + testmode == 0)) { + rwnx_send_me_chan_config_req(rwnx_hw, "00"); } *platform_data = rwnx_hw; @@ -5701,7 +6064,13 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) /* Add an initial station interface */ vif = rwnx_interface_add(rwnx_hw, "wlan%d", NET_NAME_UNKNOWN, - NL80211_IFTYPE_STATION, NULL); + NL80211_IFTYPE_STATION, NULL); + +#ifdef CONFIG_RWNX_MON_DATA + /* Add an initial station interface */ + vif = rwnx_interface_add(rwnx_hw, "wlan%d", 1, NL80211_IFTYPE_MONITOR, + NULL); +#endif rtnl_unlock(); @@ -5715,16 +6084,20 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) AICWFDBG(LOGINFO, "New interface create %s \r\n", vif->ndev->name); #ifdef CONFIG_SDIO_BT +#if CONFIG_BLUEDROID btchr_init(); hdev_init(); +#else + btsdio_init(); +#endif #endif -#ifdef CONFIG_USE_P2P0 +#ifdef CONFIG_USE_P2P0 rtnl_lock(); /* Add an initial p2p0 interface */ vif = rwnx_interface_add(rwnx_hw, "p2p%d", NET_NAME_UNKNOWN, - NL80211_IFTYPE_STATION, NULL); + NL80211_IFTYPE_STATION, NULL); vif->is_p2p_vif = 1; rtnl_unlock(); @@ -5749,6 +6122,11 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); #endif +#ifdef CONFIG_FOR_IPCAM + if (!testmode && !adap_test) { + aic_ipc_setting(vif); + } +#endif return 0; @@ -5762,11 +6140,11 @@ err_register_wiphy: err_lmac_reqs: printk("err_lmac_reqs\n"); rwnx_platform_off(rwnx_hw, NULL); -//err_platon: -//err_config: + //err_platon: + //err_config: kmem_cache_destroy(rwnx_hw->sw_txhdr_cache); err_cache: - aicwf_wakeup_lock_deinit(rwnx_hw); + aicwf_wakeup_lock_deinit(rwnx_hw); wiphy_free(wiphy); err_out: return ret; @@ -5787,12 +6165,13 @@ void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw) #else if (rwnx_hw->sdiodev->bus_if->state != BUS_DOWN_ST) #endif - rwnx_send_set_stack_start_req(rwnx_hw, 0, 0, 0, 0, &set_start_cfm); + rwnx_send_set_stack_start_req(rwnx_hw, 0, 0, 0, 0, + &set_start_cfm); rwnx_hw->fwlog_en = 0; spin_lock_bh(&rwnx_hw->defrag_lock); if (!list_empty(&rwnx_hw->defrag_list)) { - list_for_each_entry(defrag_ctrl, &rwnx_hw->defrag_list, list) { + list_for_each_entry (defrag_ctrl, &rwnx_hw->defrag_list, list) { list_del_init(&defrag_ctrl->list); if (timer_pending(&defrag_ctrl->defrag_timer)) del_timer_sync(&defrag_ctrl->defrag_timer); @@ -5806,8 +6185,12 @@ void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw) #endif #ifdef CONFIG_SDIO_BT +#if CONFIG_BLUEDROID btchr_exit(); hdev_exit(); +#else + btsdio_remove(); +#endif #endif flush_workqueue(rwnx_hw->apmStaloss_wq); @@ -5821,7 +6204,7 @@ void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw) #ifdef CONFIG_FILTER_TCP_ACK tcp_ack_deinit(rwnx_hw); #endif - aicwf_wakeup_lock_deinit(rwnx_hw); + aicwf_wakeup_lock_deinit(rwnx_hw); wiphy_free(rwnx_hw->wiphy); } @@ -5843,7 +6226,7 @@ static void aicsmac_driver_register(void) struct completion hostif_register_done; static int rwnx_driver_err = -1; -#define REGISTRATION_TIMEOUT 9000 +#define REGISTRATION_TIMEOUT 9000 void aicwf_hostif_ready(void) { @@ -5862,21 +6245,24 @@ static int __init rwnx_mod_init(void) { RWNX_DBG(RWNX_FN_ENTRY_STR); rwnx_print_version(); - rwnx_init_cmd_array(); + rwnx_init_cmd_array(); -//#ifndef CONFIG_PLATFORM_ROCKCHIP + //#ifndef CONFIG_PLATFORM_ROCKCHIP if (aicbsp_set_subsys(AIC_WIFI, AIC_PWR_ON) < 0) { AICWFDBG(LOGERROR, "%s, set power on fail!\n", __func__); - if(!aicbsp_get_load_fw_in_fdrv()){ + if (!aicbsp_get_load_fw_in_fdrv()) { return -ENODEV; } } -//#endif + //#endif init_completion(&hostif_register_done); aicsmac_driver_register(); - if ((wait_for_completion_timeout(&hostif_register_done, msecs_to_jiffies(REGISTRATION_TIMEOUT)) == 0) || rwnx_driver_err) { + if ((wait_for_completion_timeout( + &hostif_register_done, + msecs_to_jiffies(REGISTRATION_TIMEOUT)) == 0) || + rwnx_driver_err) { AICWFDBG(LOGERROR, "register_driver timeout or error\n"); #ifdef AICWF_SDIO_SUPPORT aicwf_sdio_exit(); @@ -5884,7 +6270,7 @@ static int __init rwnx_mod_init(void) #ifdef AICWF_USB_SUPPORT aicwf_usb_exit(); #endif /*AICWF_USB_SUPPORT */ - aicbsp_set_subsys(AIC_WIFI, AIC_PWR_OFF); + aicbsp_set_subsys(AIC_WIFI, AIC_PWR_OFF); return -ENODEV; } @@ -5913,14 +6299,12 @@ static void __exit rwnx_mod_exit(void) #ifdef AICWF_USB_SUPPORT aicwf_usb_exit(); #endif -//#ifndef CONFIG_PLATFORM_ROCKCHIP + //#ifndef CONFIG_PLATFORM_ROCKCHIP aicbsp_set_subsys(AIC_WIFI, AIC_PWR_OFF); -//#endif - rwnx_free_cmd_array(); - + //#endif + rwnx_free_cmd_array(); } - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); #endif @@ -5934,4 +6318,3 @@ MODULE_DESCRIPTION(RW_DRV_DESCRIPTION); MODULE_VERSION(RWNX_VERS_MOD); MODULE_AUTHOR(RW_DRV_COPYRIGHT " " RW_DRV_AUTHOR); MODULE_LICENSE("GPL"); - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.h index dfa890347..78dd422ba 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_main.h @@ -20,7 +20,7 @@ extern u8 chip_sub_id; extern u8 chip_mcu_id; extern u8 chip_id; -#define CHIP_ID_H_MASK 0xC0 -#define IS_CHIP_ID_H() ((chip_id & CHIP_ID_H_MASK) == CHIP_ID_H_MASK) +#define CHIP_ID_H_MASK 0xC0 +#define IS_CHIP_ID_H() ((chip_id & CHIP_ID_H_MASK) == CHIP_ID_H_MASK) #endif /* _RWNX_MAIN_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.c index 8773db61a..96d5ee270 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.c @@ -20,13 +20,14 @@ **************************************************************************************** */ -struct rwnx_mesh_proxy *rwnx_get_mesh_proxy_info(struct rwnx_vif *p_rwnx_vif, u8 *p_sta_addr, bool local) +struct rwnx_mesh_proxy *rwnx_get_mesh_proxy_info(struct rwnx_vif *p_rwnx_vif, + u8 *p_sta_addr, bool local) { struct rwnx_mesh_proxy *p_mesh_proxy = NULL; struct rwnx_mesh_proxy *p_cur_proxy; /* Look for proxied devices with provided address */ - list_for_each_entry(p_cur_proxy, &p_rwnx_vif->ap.proxy_list, list) { + list_for_each_entry (p_cur_proxy, &p_rwnx_vif->ap.proxy_list, list) { if (p_cur_proxy->local != local) { continue; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.h index db8950f16..73cff04a5 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mesh.h @@ -40,6 +40,7 @@ * @brief TODO [LT] **************************************************************************************** */ -struct rwnx_mesh_proxy *rwnx_get_mesh_proxy_info(struct rwnx_vif *p_rwnx_vif, u8 *p_sta_addr, bool local); +struct rwnx_mesh_proxy *rwnx_get_mesh_proxy_info(struct rwnx_vif *p_rwnx_vif, + u8 *p_sta_addr, bool local); #endif /* _RWNX_MESH_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.c index 1fdced3ef..ad7e68b05 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.c @@ -21,7 +21,7 @@ #include "rwnx_compat.h" #ifdef CONFIG_RWNX_FULLMAC -#define COMMON_PARAM(name, default_softmac, default_fullmac) \ +#define COMMON_PARAM(name, default_softmac, default_fullmac) \ .name = default_fullmac, #define SOFTMAC_PARAM(name, default) #define FULLMAC_PARAM(name, default) .name = default, @@ -29,59 +29,75 @@ struct rwnx_mod_params rwnx_mod_params = { /* common parameters */ - COMMON_PARAM(ht_on, true, true) - COMMON_PARAM(vht_on, true, true) - COMMON_PARAM(he_on, true, true) - COMMON_PARAM(mcs_map, IEEE80211_VHT_MCS_SUPPORT_0_9, IEEE80211_VHT_MCS_SUPPORT_0_9) - COMMON_PARAM(he_mcs_map, IEEE80211_HE_MCS_SUPPORT_0_11, IEEE80211_HE_MCS_SUPPORT_0_11) - COMMON_PARAM(he_ul_on, false, false) - COMMON_PARAM(ldpc_on, true, true) - COMMON_PARAM(stbc_on, true, true) - COMMON_PARAM(gf_rx_on, false, false) - COMMON_PARAM(phy_cfg, 2, 2) - COMMON_PARAM(uapsd_timeout, 300, 300) - COMMON_PARAM(ap_uapsd_on, true, true) - COMMON_PARAM(sgi, true, true) - COMMON_PARAM(sgi80, false, false) - COMMON_PARAM(use_2040, 1, 1) - COMMON_PARAM(nss, 1, 1) - COMMON_PARAM(amsdu_rx_max, 2, 2) - COMMON_PARAM(bfmee, true, true) - COMMON_PARAM(bfmer, false, false) - COMMON_PARAM(mesh, true, true) - COMMON_PARAM(murx, true, true) - COMMON_PARAM(mutx, true, true) - COMMON_PARAM(mutx_on, true, true) - COMMON_PARAM(use_80, false, false) - COMMON_PARAM(custregd, true, true) - COMMON_PARAM(custchan, false, false) - COMMON_PARAM(roc_dur_max, 500, 500) - COMMON_PARAM(listen_itv, 0, 0) - COMMON_PARAM(listen_bcmc, true, true) - COMMON_PARAM(lp_clk_ppm, 20, 20) - COMMON_PARAM(ps_on, true, true) - COMMON_PARAM(tx_lft, RWNX_TX_LIFETIME_MS, RWNX_TX_LIFETIME_MS) - COMMON_PARAM(amsdu_maxnb, NX_TX_PAYLOAD_MAX, NX_TX_PAYLOAD_MAX) + COMMON_PARAM(ht_on, true, true) COMMON_PARAM(vht_on, true, true) COMMON_PARAM( + he_on, true, + true) COMMON_PARAM(mcs_map, IEEE80211_VHT_MCS_SUPPORT_0_9, + IEEE80211_VHT_MCS_SUPPORT_0_9) COMMON_PARAM(he_mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_11, + IEEE80211_HE_MCS_SUPPORT_0_11) + COMMON_PARAM(he_ul_on, false, false) COMMON_PARAM( + ldpc_on, true, + true) COMMON_PARAM(stbc_on, true, + true) COMMON_PARAM(gf_rx_on, false, + false) COMMON_PARAM(phy_cfg, + 2, + 2) + COMMON_PARAM(uapsd_timeout, 300, 300) COMMON_PARAM( + ap_uapsd_on, true, + true) COMMON_PARAM(sgi, true, + true) COMMON_PARAM(sgi80, + false, + false) + COMMON_PARAM(use_2040, 1, 1) COMMON_PARAM(nss, 2, 2) COMMON_PARAM( + amsdu_rx_max, + 1, 1) COMMON_PARAM(bfmee, + true, true) COMMON_PARAM(bfmer, false, false) + COMMON_PARAM(mesh, true, true) COMMON_PARAM( + murx, true, + true) COMMON_PARAM(mutx, + true, true) + COMMON_PARAM(mutx_on, true, true) COMMON_PARAM( + use_80, + false, + false) COMMON_PARAM(custregd, + true, + true) + COMMON_PARAM(custchan, false, false) COMMON_PARAM( + roc_dur_max, + 500, + 500) COMMON_PARAM(listen_itv, + 0, + 0) + COMMON_PARAM(listen_bcmc, true, true) COMMON_PARAM( + lp_clk_ppm, + 20, + 20) COMMON_PARAM(ps_on, + true, + true) + COMMON_PARAM( + tx_lft, + RWNX_TX_LIFETIME_MS, + RWNX_TX_LIFETIME_MS) + COMMON_PARAM( + amsdu_maxnb, + NX_TX_PAYLOAD_MAX, + NX_TX_PAYLOAD_MAX) // By default, only enable UAPSD for Voice queue (see IEEE80211_DEFAULT_UAPSD_QUEUE comment) - COMMON_PARAM(uapsd_queues, IEEE80211_WMM_IE_STA_QOSINFO_AC_VO, IEEE80211_WMM_IE_STA_QOSINFO_AC_VO) - COMMON_PARAM(tdls, false, false) - COMMON_PARAM(uf, false, false) - COMMON_PARAM(auto_reply, false, false) - COMMON_PARAM(ftl, "", "") - COMMON_PARAM(dpsm, false, false) + COMMON_PARAM(uapsd_queues, IEEE80211_WMM_IE_STA_QOSINFO_AC_VO, + IEEE80211_WMM_IE_STA_QOSINFO_AC_VO) + COMMON_PARAM(tdls, false, false) COMMON_PARAM(uf, false, false) + COMMON_PARAM(auto_reply, false, false) + COMMON_PARAM(ftl, "", "") + COMMON_PARAM(dpsm, false, false) /* SOFTMAC only parameters */ - SOFTMAC_PARAM(mfp_on, false) - SOFTMAC_PARAM(gf_on, false) - SOFTMAC_PARAM(bwsig_on, true) - SOFTMAC_PARAM(dynbw_on, true) - SOFTMAC_PARAM(agg_tx, true) - SOFTMAC_PARAM(amsdu_force, 2) - SOFTMAC_PARAM(rc_probes_on, false) - SOFTMAC_PARAM(cmon, true) - SOFTMAC_PARAM(hwscan, true) - SOFTMAC_PARAM(autobcn, true) - SOFTMAC_PARAM(dpsm, true) + SOFTMAC_PARAM(mfp_on, false) SOFTMAC_PARAM(gf_on, false) SOFTMAC_PARAM( + bwsig_on, true) SOFTMAC_PARAM(dynbw_on, + true) SOFTMAC_PARAM(agg_tx, true) + SOFTMAC_PARAM(amsdu_force, 2) SOFTMAC_PARAM(rc_probes_on, false) + SOFTMAC_PARAM(cmon, true) SOFTMAC_PARAM(hwscan, true) + SOFTMAC_PARAM(autobcn, true) + SOFTMAC_PARAM(dpsm, true) /* FULLMAC only parameters */ FULLMAC_PARAM(ant_div, true) @@ -103,25 +119,29 @@ module_param_named(he_on, rwnx_mod_params.he_on, bool, S_IRUGO); MODULE_PARM_DESC(he_on, "Enable HE (Default: 1)"); module_param_named(mcs_map, rwnx_mod_params.mcs_map, int, S_IRUGO); -MODULE_PARM_DESC(mcs_map, "VHT MCS map value 0: MCS0_7, 1: MCS0_8, 2: MCS0_9" - " (Default: 2)"); +MODULE_PARM_DESC(mcs_map, "VHT MCS map value 0: MCS0_7, 1: MCS0_8, 2: MCS0_9" + " (Default: 2)"); module_param_named(he_mcs_map, rwnx_mod_params.he_mcs_map, int, S_IRUGO); -MODULE_PARM_DESC(he_mcs_map, "HE MCS map value 0: MCS0_7, 1: MCS0_9, 2: MCS0_11" - " (Default: 2)"); +MODULE_PARM_DESC(he_mcs_map, + "HE MCS map value 0: MCS0_7, 1: MCS0_9, 2: MCS0_11" + " (Default: 2)"); module_param_named(he_ul_on, rwnx_mod_params.he_ul_on, bool, S_IRUGO); MODULE_PARM_DESC(he_ul_on, "Enable HE OFDMA UL (Default: 0)"); -module_param_named(amsdu_maxnb, rwnx_mod_params.amsdu_maxnb, int, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(amsdu_maxnb, "Maximum number of MSDUs inside an A-MSDU in TX: (Default: NX_TX_PAYLOAD_MAX)"); +module_param_named(amsdu_maxnb, rwnx_mod_params.amsdu_maxnb, int, + S_IRUGO | S_IWUSR); +MODULE_PARM_DESC( + amsdu_maxnb, + "Maximum number of MSDUs inside an A-MSDU in TX: (Default: NX_TX_PAYLOAD_MAX)"); module_param_named(ps_on, rwnx_mod_params.ps_on, bool, S_IRUGO); MODULE_PARM_DESC(ps_on, "Enable PowerSaving (Default: 1-Enabled)"); module_param_named(tx_lft, rwnx_mod_params.tx_lft, int, 0644); MODULE_PARM_DESC(tx_lft, "Tx lifetime (ms) - setting it to 0 disables retries " - "(Default: "__stringify(RWNX_TX_LIFETIME_MS)")"); + "(Default: " __stringify(RWNX_TX_LIFETIME_MS) ")"); module_param_named(ldpc_on, rwnx_mod_params.ldpc_on, bool, S_IRUGO); MODULE_PARM_DESC(ldpc_on, "Enable LDPC (Default: 1)"); @@ -134,19 +154,24 @@ MODULE_PARM_DESC(gf_rx_on, "Enable HT greenfield in reception (Default: 1)"); module_param_named(phycfg, rwnx_mod_params.phy_cfg, int, S_IRUGO); MODULE_PARM_DESC(phycfg, - "0 <= phycfg <= 5 : RF Channel Conf (Default: 2(C0-A1-B2))"); + "0 <= phycfg <= 5 : RF Channel Conf (Default: 2(C0-A1-B2))"); -module_param_named(uapsd_timeout, rwnx_mod_params.uapsd_timeout, int, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(uapsd_timeout, - "UAPSD Timer timeout, in ms (Default: 300). If 0, UAPSD is disabled"); +module_param_named(uapsd_timeout, rwnx_mod_params.uapsd_timeout, int, + S_IRUGO | S_IWUSR); +MODULE_PARM_DESC( + uapsd_timeout, + "UAPSD Timer timeout, in ms (Default: 300). If 0, UAPSD is disabled"); -module_param_named(uapsd_queues, rwnx_mod_params.uapsd_queues, int, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(uapsd_queues, "UAPSD Queues, integer value, must be seen as a bitfield\n" - " Bit 0 = VO\n" - " Bit 1 = VI\n" - " Bit 2 = BK\n" - " Bit 3 = BE\n" - " -> uapsd_queues=7 will enable uapsd for VO, VI and BK queues"); +module_param_named(uapsd_queues, rwnx_mod_params.uapsd_queues, int, + S_IRUGO | S_IWUSR); +MODULE_PARM_DESC( + uapsd_queues, + "UAPSD Queues, integer value, must be seen as a bitfield\n" + " Bit 0 = VO\n" + " Bit 1 = VI\n" + " Bit 2 = BK\n" + " Bit 3 = BE\n" + " -> uapsd_queues=7 will enable uapsd for VO, VI and BK queues"); module_param_named(ap_uapsd_on, rwnx_mod_params.ap_uapsd_on, bool, S_IRUGO); MODULE_PARM_DESC(ap_uapsd_on, "Enable UAPSD in AP mode (Default: 1)"); @@ -155,7 +180,8 @@ module_param_named(sgi, rwnx_mod_params.sgi, bool, S_IRUGO); MODULE_PARM_DESC(sgi, "Advertise Short Guard Interval support (Default: 1)"); module_param_named(sgi80, rwnx_mod_params.sgi80, bool, S_IRUGO); -MODULE_PARM_DESC(sgi80, "Advertise Short Guard Interval support for 80MHz (Default: 1)"); +MODULE_PARM_DESC( + sgi80, "Advertise Short Guard Interval support for 80MHz (Default: 1)"); module_param_named(use_2040, rwnx_mod_params.use_2040, bool, S_IRUGO); MODULE_PARM_DESC(use_2040, "Use tweaked 20-40MHz mode (Default: 1)"); @@ -164,23 +190,29 @@ module_param_named(use_80, rwnx_mod_params.use_80, bool, S_IRUGO); MODULE_PARM_DESC(use_80, "Enable 80MHz (Default: 1)"); module_param_named(custregd, rwnx_mod_params.custregd, bool, S_IRUGO); -MODULE_PARM_DESC(custregd, - "Use permissive custom regulatory rules (for testing ONLY) (Default: 0)"); +MODULE_PARM_DESC( + custregd, + "Use permissive custom regulatory rules (for testing ONLY) (Default: 0)"); module_param_named(custchan, rwnx_mod_params.custchan, bool, S_IRUGO); -MODULE_PARM_DESC(custchan, - "Extend channel set to non-standard channels (for testing ONLY) (Default: 0)"); +MODULE_PARM_DESC( + custchan, + "Extend channel set to non-standard channels (for testing ONLY) (Default: 0)"); module_param_named(nss, rwnx_mod_params.nss, int, S_IRUGO); -MODULE_PARM_DESC(nss, "1 <= nss <= 2 : Supported number of Spatial Streams (Default: 1)"); +MODULE_PARM_DESC( + nss, + "1 <= nss <= 2 : Supported number of Spatial Streams (Default: 1)"); module_param_named(amsdu_rx_max, rwnx_mod_params.amsdu_rx_max, int, S_IRUGO); -MODULE_PARM_DESC(amsdu_rx_max, "0 <= amsdu_rx_max <= 2 : Maximum A-MSDU size supported in RX\n" - " 0: 3895 bytes\n" - " 1: 7991 bytes\n" - " 2: 11454 bytes\n" - " This value might be reduced according to the FW capabilities.\n" - " Default: 2"); +MODULE_PARM_DESC( + amsdu_rx_max, + "0 <= amsdu_rx_max <= 2 : Maximum A-MSDU size supported in RX\n" + " 0: 3895 bytes\n" + " 1: 7991 bytes\n" + " 2: 11454 bytes\n" + " This value might be reduced according to the FW capabilities.\n" + " Default: 2"); module_param_named(bfmee, rwnx_mod_params.bfmee, bool, S_IRUGO); MODULE_PARM_DESC(bfmee, "Enable Beamformee Capability (Default: 1-Enabled)"); @@ -216,10 +248,13 @@ module_param_named(tdls, rwnx_mod_params.tdls, bool, S_IRUGO); MODULE_PARM_DESC(tdls, "Enable TDLS (Default: 1-Enabled)"); module_param_named(uf, rwnx_mod_params.uf, bool, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(uf, "Enable Unsupported HT Frame Logging (Default: 0-Disabled)"); +MODULE_PARM_DESC(uf, + "Enable Unsupported HT Frame Logging (Default: 0-Disabled)"); -module_param_named(auto_reply, rwnx_mod_params.auto_reply, bool, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(auto_reply, "Enable Monitor MacAddr Auto-Reply (Default: 0-Disabled)"); +module_param_named(auto_reply, rwnx_mod_params.auto_reply, bool, + S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(auto_reply, + "Enable Monitor MacAddr Auto-Reply (Default: 0-Disabled)"); module_param_named(ftl, rwnx_mod_params.ftl, charp, S_IRUGO); MODULE_PARM_DESC(ftl, "Firmware trace level (Default: \"\")"); @@ -227,7 +262,6 @@ MODULE_PARM_DESC(ftl, "Firmware trace level (Default: \"\")"); module_param_named(dpsm, rwnx_mod_params.dpsm, bool, S_IRUGO); MODULE_PARM_DESC(dpsm, "Enable Dynamic PowerSaving (Default: 1-Enabled)"); - #ifdef DEFAULT_COUNTRY_CODE char default_ccode[4] = DEFAULT_COUNTRY_CODE; #else @@ -276,7 +310,8 @@ int index_for_channel_list = 0; module_param_string(ccode_channels, ccode_channels, 200, 0600); void rwnx_get_countrycode_channels(struct wiphy *wiphy, - struct ieee80211_regdomain *regdomain){ + struct ieee80211_regdomain *regdomain) +{ enum nl80211_band band; struct ieee80211_supported_band *sband; int channel_index; @@ -294,32 +329,48 @@ void rwnx_get_countrycode_channels(struct wiphy *wiphy, index_for_channel_list = 0; for (band = 0; band < band_num; band++) { - sband = wiphy->bands[band];// bands: 0:2.4G 1:5G 2:60G + sband = wiphy->bands[band]; // bands: 0:2.4G 1:5G 2:60G if (!sband) continue; - for (channel_index = 0; channel_index < sband->n_channels; channel_index++) { - for(rule_index = 0; rule_index < rule_num; rule_index++){ - start_freq = regdomain->reg_rules[rule_index].freq_range.start_freq_khz/1000; - end_freq = regdomain->reg_rules[rule_index].freq_range.end_freq_khz/1000; - center_freq = sband->channels[channel_index].center_freq; - if((center_freq - 10) >= start_freq && (center_freq + 10) <= end_freq){ - sprintf(channel, "%d",ieee80211_frequency_to_channel(center_freq)); - memcpy(ccode_channels + index_for_channel_list, channel, strlen(channel)); - index_for_channel_list += strlen(channel); - memcpy(ccode_channels + index_for_channel_list, " ", 1); + for (channel_index = 0; channel_index < sband->n_channels; + channel_index++) { + for (rule_index = 0; rule_index < rule_num; + rule_index++) { + start_freq = + regdomain->reg_rules[rule_index] + .freq_range.start_freq_khz / + 1000; + end_freq = regdomain->reg_rules[rule_index] + .freq_range.end_freq_khz / + 1000; + center_freq = sband->channels[channel_index] + .center_freq; + if ((center_freq - 10) >= start_freq && + (center_freq + 10) <= end_freq) { + sprintf(channel, "%d", + ieee80211_frequency_to_channel( + center_freq)); + memcpy(ccode_channels + + index_for_channel_list, + channel, strlen(channel)); + index_for_channel_list += + strlen(channel); + memcpy(ccode_channels + + index_for_channel_list, + " ", 1); index_for_channel_list += 1; break; } } } } - AICWFDBG(LOGINFO, "%s support channel:%s\r\n", __func__, ccode_channels); + AICWFDBG(LOGINFO, "%s support channel:%s\r\n", __func__, + ccode_channels); } - struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy *wiphy, - int index) + int index) { u8 idx; @@ -336,9 +387,8 @@ struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy *wiphy, return reg_regdb[idx]; } - struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, - char *alpha2) + char *alpha2) { u8 idx; @@ -347,9 +397,9 @@ struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, AICWFDBG(LOGINFO, "%s set ccode:%s \r\n", __func__, alpha2); idx = 0; - while (reg_regdb[idx]){ - if((reg_regdb[idx]->alpha2[0] == alpha2[0]) && - (reg_regdb[idx]->alpha2[1] == alpha2[1])){ + while (reg_regdb[idx]) { + if ((reg_regdb[idx]->alpha2[0] == alpha2[0]) && + (reg_regdb[idx]->alpha2[1] == alpha2[1])) { memcpy(country_code, alpha2, 2); rwnx_get_countrycode_channels(wiphy, reg_regdb[idx]); return reg_regdb[idx]; @@ -357,8 +407,8 @@ struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, idx++; } - AICWFDBG(LOGERROR, "%s(): Error, wrong country = %s\n", - __func__, alpha2); + AICWFDBG(LOGERROR, "%s(): Error, wrong country = %s\n", __func__, + alpha2); AICWFDBG(LOGINFO, "Set as default 00\n"); memcpy(country_code, default_ccode, sizeof(default_ccode)); rwnx_get_countrycode_channels(wiphy, reg_regdb[0]); @@ -366,8 +416,6 @@ struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, return reg_regdb[0]; } - - /** * Do some sanity check * @@ -638,8 +686,8 @@ static int rwnx_check_fw_hw_feature(struct rwnx_hw *rwnx_hw, rwnx_hw->mod_params->ldpc_on ? "[LDPC]" : "", rwnx_hw->mod_params->he_on ? "[HE]" : ""); -#define PRINT_RWNX_FEAT(feat) \ - (sys_feat & BIT(MM_FEAT_##feat##_BIT) ? "["#feat"]" : "") +#define PRINT_RWNX_FEAT(feat) \ + (sys_feat & BIT(MM_FEAT_##feat##_BIT) ? "[" #feat "]" : "") wiphy_info(wiphy, "FW features: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", PRINT_RWNX_FEAT(BCN), @@ -687,61 +735,72 @@ static int rwnx_check_fw_hw_feature(struct rwnx_hw *rwnx_hw, } #endif - static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) { #ifdef CONFIG_VHT_FOR_OLD_KERNEL - #ifdef USE_5G - struct ieee80211_supported_band *band_5GHz = wiphy->bands[NL80211_BAND_5GHZ]; - #endif - struct ieee80211_supported_band *band_2GHz = wiphy->bands[NL80211_BAND_2GHZ]; +#ifdef USE_5G + struct ieee80211_supported_band *band_5GHz = + wiphy->bands[NL80211_BAND_5GHZ]; +#endif + struct ieee80211_supported_band *band_2GHz = + wiphy->bands[NL80211_BAND_2GHZ]; - int i; - int nss = rwnx_hw->mod_params->nss; - int mcs_map; - int mcs_map_max; - int bw_max; + int i; + int nss = rwnx_hw->mod_params->nss; + int mcs_map; + int mcs_map_max; + int bw_max; - if (!rwnx_hw->mod_params->vht_on) { - return; - } + if (!rwnx_hw->mod_params->vht_on) { + return; + } + + if (rwnx_hw->sdiodev->chipid <= PRODUCT_ID_AIC8800D80) + nss = 1; rwnx_hw->vht_cap_2G.vht_supported = true; - if (rwnx_hw->mod_params->sgi80) - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_SHORT_GI_80; - if (rwnx_hw->mod_params->stbc_on) - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_RXSTBC_1; - if (rwnx_hw->mod_params->ldpc_on) - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_RXLDPC; - if (rwnx_hw->mod_params->bfmee) { - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - rwnx_hw->vht_cap_2G.cap |= 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; - #else - rwnx_hw->vht_cap_2G.cap |= 3 << 13; - #endif - } - if (nss > 1) - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_TXSTBC; + if (rwnx_hw->mod_params->sgi80) + rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_SHORT_GI_80; + if (rwnx_hw->mod_params->stbc_on) + rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_RXSTBC_1; + if (rwnx_hw->mod_params->ldpc_on) + rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_RXLDPC; + if (rwnx_hw->mod_params->bfmee) { + rwnx_hw->vht_cap_2G.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + rwnx_hw->vht_cap_2G.cap |= + 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; +#else + rwnx_hw->vht_cap_2G.cap |= 3 << 13; +#endif + } + if (nss > 1) + rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_TXSTBC; - // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) - rwnx_hw->vht_cap_2G.cap |= rwnx_hw->mod_params->amsdu_rx_max; + // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) + rwnx_hw->vht_cap_2G.cap |= rwnx_hw->mod_params->amsdu_rx_max; - if (rwnx_hw->mod_params->bfmer) { - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; - /* Set number of sounding dimensions */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - rwnx_hw->vht_cap_2G.cap |= (nss - 1) << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; - #else - rwnx_hw->vht_cap_2G.cap |= (nss - 1) << 16; - #endif - } - if (rwnx_hw->mod_params->murx) - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; - if (rwnx_hw->mod_params->mutx) - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; + if (rwnx_hw->mod_params->bfmer) { + rwnx_hw->vht_cap_2G.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; + /* Set number of sounding dimensions */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + rwnx_hw->vht_cap_2G.cap |= + (nss - 1) + << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; +#else + rwnx_hw->vht_cap_2G.cap |= (nss - 1) << 16; +#endif + } + if (rwnx_hw->mod_params->murx) + rwnx_hw->vht_cap_2G.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; + if (rwnx_hw->mod_params->mutx) + rwnx_hw->vht_cap_2G.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; - /* + /* * MCS map: * This capabilities are filled according to the mcs_map module parameter. * However currently we have some limitations due to FPGA clock constraints @@ -750,6 +809,114 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) * - in RX, 2SS, we support up to MCS7 * - in TX, 2SS, we support up to MCS8 */ + // Get max supported BW + if (rwnx_hw->mod_params->use_80) + bw_max = PHY_CHNL_BW_80; + else if (rwnx_hw->mod_params->use_2040) + bw_max = PHY_CHNL_BW_40; + else + bw_max = PHY_CHNL_BW_20; + + // Check if MCS map should be limited to MCS0_8 due to the standard. Indeed in BW20, + // MCS9 is not supported in 1 and 2 SS + if (rwnx_hw->mod_params->use_2040) + mcs_map_max = IEEE80211_VHT_MCS_SUPPORT_0_9; + else + mcs_map_max = IEEE80211_VHT_MCS_SUPPORT_0_8; + + mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); + rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map = cpu_to_le16(0); + for (i = 0; i < nss; i++) { + rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + rwnx_hw->vht_cap_2G.vht_mcs.rx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + } + for (; i < 8; i++) { + rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map |= + cpu_to_le16(IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); + } + + mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); + rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map = cpu_to_le16(0); + for (i = 0; i < nss; i++) { + rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + rwnx_hw->vht_cap_2G.vht_mcs.tx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_8); + } + for (; i < 8; i++) { + rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map |= + cpu_to_le16(IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); + } + + if (!rwnx_hw->mod_params->use_80) { +#ifdef CONFIG_VENDOR_RWNX_VHT_NO80 + rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_NOT_SUP_WIDTH_80; +#endif //CONFIG_VENDOR_RWNX_VHT_NO80 + rwnx_hw->vht_cap_2G.cap &= ~IEEE80211_VHT_CAP_SHORT_GI_80; + } + + rwnx_hw->vht_cap_2G.cap |= + IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK; + printk("%s, vht_capa_info=0x%x\n", __func__, rwnx_hw->vht_cap_2G.cap); +#ifdef USE_5G + if (rwnx_hw->band_5g_support) { + rwnx_hw->vht_cap_5G.vht_supported = true; + if (rwnx_hw->mod_params->sgi80) + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_SHORT_GI_80; + if (rwnx_hw->mod_params->stbc_on) + rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_RXSTBC_1; + if (rwnx_hw->mod_params->ldpc_on) + rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_RXLDPC; + if (rwnx_hw->mod_params->bfmee) { + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + rwnx_hw->vht_cap_5G.cap |= + 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; +#else + rwnx_hw->vht_cap_5G.cap |= 3 << 13; +#endif + } + if (nss > 1) + rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_TXSTBC; + + // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) + rwnx_hw->vht_cap_5G.cap |= rwnx_hw->mod_params->amsdu_rx_max; + + if (rwnx_hw->mod_params->bfmer) { + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; +/* Set number of sounding dimensions */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + rwnx_hw->vht_cap_5G.cap |= + (nss - 1) + << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; +#else + rwnx_hw->vht_cap_5G.cap |= (nss - 1) << 16; +#endif + } + if (rwnx_hw->mod_params->murx) + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; + if (rwnx_hw->mod_params->mutx) + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; + + /* + * MCS map: + * This capabilities are filled according to the mcs_map module parameter. + * However currently we have some limitations due to FPGA clock constraints + * that prevent always using the range of MCS that is defined by the + * parameter: + * - in RX, 2SS, we support up to MCS7 + * - in TX, 2SS, we support up to MCS8 + */ // Get max supported BW if (rwnx_hw->mod_params->use_80) bw_max = PHY_CHNL_BW_80; @@ -766,151 +933,67 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) mcs_map_max = IEEE80211_VHT_MCS_SUPPORT_0_8; mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); - rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map = cpu_to_le16(0); + rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map = cpu_to_le16(0); for (i = 0; i < nss; i++) { - rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - rwnx_hw->vht_cap_2G.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + rwnx_hw->vht_cap_5G.vht_mcs.rx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; } for (; i < 8; i++) { - rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); + rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map |= cpu_to_le16( + IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); } mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); - rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map = cpu_to_le16(0); + rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map = cpu_to_le16(0); for (i = 0; i < nss; i++) { - rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - rwnx_hw->vht_cap_2G.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + rwnx_hw->vht_cap_5G.vht_mcs.tx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_8); } for (; i < 8; i++) { - rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); + rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map |= cpu_to_le16( + IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); } if (!rwnx_hw->mod_params->use_80) { #ifdef CONFIG_VENDOR_RWNX_VHT_NO80 - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_NOT_SUP_WIDTH_80; -#endif//CONFIG_VENDOR_RWNX_VHT_NO80 - rwnx_hw->vht_cap_2G.cap &= ~IEEE80211_VHT_CAP_SHORT_GI_80; + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_NOT_SUP_WIDTH_80; +#endif //CONFIG_VENDOR_RWNX_VHT_NO80 + rwnx_hw->vht_cap_5G.cap &= + ~IEEE80211_VHT_CAP_SHORT_GI_80; } - rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK; - printk("%s, vht_capa_info=0x%x\n", __func__, rwnx_hw->vht_cap_2G.cap); -#ifdef USE_5G - if (rwnx_hw->band_5g_support) { - rwnx_hw->vht_cap_5G.vht_supported = true; - if (rwnx_hw->mod_params->sgi80) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_SHORT_GI_80; - if (rwnx_hw->mod_params->stbc_on) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_RXSTBC_1; - if (rwnx_hw->mod_params->ldpc_on) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_RXLDPC; - if (rwnx_hw->mod_params->bfmee) { - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - rwnx_hw->vht_cap_5G.cap |= 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; - #else - rwnx_hw->vht_cap_5G.cap |= 3 << 13; - #endif - } - if (nss > 1) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_TXSTBC; - - // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) - rwnx_hw->vht_cap_5G.cap |= rwnx_hw->mod_params->amsdu_rx_max; - - if (rwnx_hw->mod_params->bfmer) { - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; - /* Set number of sounding dimensions */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - rwnx_hw->vht_cap_5G.cap |= (nss - 1) << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; - #else - rwnx_hw->vht_cap_5G.cap |= (nss - 1) << 16; - #endif - } - if (rwnx_hw->mod_params->murx) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; - if (rwnx_hw->mod_params->mutx) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; - - /* - * MCS map: - * This capabilities are filled according to the mcs_map module parameter. - * However currently we have some limitations due to FPGA clock constraints - * that prevent always using the range of MCS that is defined by the - * parameter: - * - in RX, 2SS, we support up to MCS7 - * - in TX, 2SS, we support up to MCS8 - */ - // Get max supported BW - if (rwnx_hw->mod_params->use_80) - bw_max = PHY_CHNL_BW_80; - else if (rwnx_hw->mod_params->use_2040) - bw_max = PHY_CHNL_BW_40; - else - bw_max = PHY_CHNL_BW_20; - - // Check if MCS map should be limited to MCS0_8 due to the standard. Indeed in BW20, - // MCS9 is not supported in 1 and 2 SS - if (rwnx_hw->mod_params->use_2040) - mcs_map_max = IEEE80211_VHT_MCS_SUPPORT_0_9; - else - mcs_map_max = IEEE80211_VHT_MCS_SUPPORT_0_8; - - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); - rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map = cpu_to_le16(0); - for (i = 0; i < nss; i++) { - rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - rwnx_hw->vht_cap_5G.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; - } - for (; i < 8; i++) { - rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); - } - - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); - rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map = cpu_to_le16(0); - for (i = 0; i < nss; i++) { - rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - rwnx_hw->vht_cap_5G.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); - } - for (; i < 8; i++) { - rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); - } - - if (!rwnx_hw->mod_params->use_80) { -#ifdef CONFIG_VENDOR_RWNX_VHT_NO80 - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_NOT_SUP_WIDTH_80; -#endif//CONFIG_VENDOR_RWNX_VHT_NO80 - rwnx_hw->vht_cap_5G.cap &= ~IEEE80211_VHT_CAP_SHORT_GI_80; - } - - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK; - } -#endif//USE_5G + rwnx_hw->vht_cap_5G.cap |= + IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK; + } +#endif //USE_5G return; #else - struct ieee80211_supported_band *band_5GHz = wiphy->bands[NL80211_BAND_5GHZ]; - struct ieee80211_supported_band *band_2GHz = wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *band_5GHz = + wiphy->bands[NL80211_BAND_5GHZ]; + struct ieee80211_supported_band *band_2GHz = + wiphy->bands[NL80211_BAND_2GHZ]; - int i; - int nss = rwnx_hw->mod_params->nss; - int mcs_map; - int mcs_map_max; - int bw_max; -#endif//CONFIG_VHT_FOR_OLD_KERNEL + int i; + int nss = rwnx_hw->mod_params->nss; + int mcs_map; + int mcs_map_max; + int bw_max; +#endif //CONFIG_VHT_FOR_OLD_KERNEL if (!rwnx_hw->mod_params->vht_on) { return; } - + + if (rwnx_hw->sdiodev->chipid <= PRODUCT_ID_AIC8800D80) + nss = 1; band_2GHz->vht_cap.vht_supported = true; if (rwnx_hw->mod_params->sgi80) @@ -920,12 +1003,14 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) if (rwnx_hw->mod_params->ldpc_on) band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_RXLDPC; if (rwnx_hw->mod_params->bfmee) { - band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - band_2GHz->vht_cap.cap |= 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; - #else + band_2GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + band_2GHz->vht_cap.cap |= + 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; +#else band_2GHz->vht_cap.cap |= 3 << 13; - #endif +#endif } if (nss > 1) band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC; @@ -934,18 +1019,23 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) band_2GHz->vht_cap.cap |= rwnx_hw->mod_params->amsdu_rx_max; if (rwnx_hw->mod_params->bfmer) { - band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; + band_2GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; /* Set number of sounding dimensions */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - band_2GHz->vht_cap.cap |= (nss - 1) << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; - #else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + band_2GHz->vht_cap.cap |= + (nss - 1) + << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; +#else band_2GHz->vht_cap.cap |= (nss - 1) << 16; - #endif +#endif } if (rwnx_hw->mod_params->murx) - band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; + band_2GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; if (rwnx_hw->mod_params->mutx) - band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; + band_2GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; /* * MCS map: @@ -974,26 +1064,30 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); band_2GHz->vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(0); for (i = 0; i < nss; i++) { - band_2GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - band_2GHz->vht_cap.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + band_2GHz->vht_cap.vht_mcs.rx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + band_2GHz->vht_cap.vht_mcs.rx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; } for (; i < 8; i++) { - band_2GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); + band_2GHz->vht_cap.vht_mcs.rx_mcs_map |= + cpu_to_le16(IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); } mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); band_2GHz->vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(0); for (i = 0; i < nss; i++) { - band_2GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - band_2GHz->vht_cap.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + band_2GHz->vht_cap.vht_mcs.tx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + band_2GHz->vht_cap.vht_mcs.tx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_8); } for (; i < 8; i++) { - band_2GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); + band_2GHz->vht_cap.vht_mcs.tx_mcs_map |= + cpu_to_le16(IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); } if (!rwnx_hw->mod_params->use_80) { @@ -1012,12 +1106,14 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) if (rwnx_hw->mod_params->ldpc_on) band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_RXLDPC; if (rwnx_hw->mod_params->bfmee) { - band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - band_5GHz->vht_cap.cap |= 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; - #else + band_5GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + band_5GHz->vht_cap.cap |= + 3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; +#else band_5GHz->vht_cap.cap |= 3 << 13; - #endif +#endif } if (nss > 1) band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC; @@ -1026,18 +1122,23 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) band_5GHz->vht_cap.cap |= rwnx_hw->mod_params->amsdu_rx_max; if (rwnx_hw->mod_params->bfmer) { - band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; - /* Set number of sounding dimensions */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - band_5GHz->vht_cap.cap |= (nss - 1) << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; - #else + band_5GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; +/* Set number of sounding dimensions */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + band_5GHz->vht_cap.cap |= + (nss - 1) + << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; +#else band_5GHz->vht_cap.cap |= (nss - 1) << 16; - #endif +#endif } if (rwnx_hw->mod_params->murx) - band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; + band_5GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; if (rwnx_hw->mod_params->mutx) - band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; + band_5GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; /* * MCS map: @@ -1066,41 +1167,49 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); band_5GHz->vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(0); for (i = 0; i < nss; i++) { - band_5GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - band_5GHz->vht_cap.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + band_5GHz->vht_cap.vht_mcs.rx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + band_5GHz->vht_cap.vht_mcs.rx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; } for (; i < 8; i++) { band_5GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); + IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); } mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, mcs_map_max); band_5GHz->vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(0); for (i = 0; i < nss; i++) { - band_5GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); - band_5GHz->vht_cap.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + band_5GHz->vht_cap.vht_mcs.tx_mcs_map |= + cpu_to_le16(mcs_map << (i * 2)); + band_5GHz->vht_cap.vht_mcs.tx_highest = + MAX_VHT_RATE(mcs_map, nss, bw_max); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_8); } for (; i < 8; i++) { band_5GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16( - IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2)); + IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2)); } if (!rwnx_hw->mod_params->use_80) { #ifdef CONFIG_VENDOR_RWNX_VHT_NO80 - band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_NOT_SUP_WIDTH_80; + band_5GHz->vht_cap.cap |= + IEEE80211_VHT_CAP_NOT_SUP_WIDTH_80; #endif - band_5GHz->vht_cap.cap &= ~IEEE80211_VHT_CAP_SHORT_GI_80; + band_5GHz->vht_cap.cap &= + ~IEEE80211_VHT_CAP_SHORT_GI_80; } } } static void rwnx_set_ht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) { - struct ieee80211_supported_band *band_5GHz = wiphy->bands[NL80211_BAND_5GHZ]; - struct ieee80211_supported_band *band_2GHz = wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *band_5GHz = + wiphy->bands[NL80211_BAND_5GHZ]; + struct ieee80211_supported_band *band_2GHz = + wiphy->bands[NL80211_BAND_2GHZ]; int i; int nss = rwnx_hw->mod_params->nss; @@ -1111,6 +1220,9 @@ static void rwnx_set_ht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) return; } + if (rwnx_hw->sdiodev->chipid <= PRODUCT_ID_AIC8800D80) + nss = 1; + if (rwnx_hw->mod_params->stbc_on) band_2GHz->ht_cap.cap |= 1 << IEEE80211_HT_CAP_RX_STBC_SHIFT; if (rwnx_hw->mod_params->ldpc_on) @@ -1133,9 +1245,11 @@ static void rwnx_set_ht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) band_2GHz->ht_cap.cap |= IEEE80211_HT_CAP_SGI_20; if (rwnx_hw->mod_params->use_2040) { band_2GHz->ht_cap.cap |= IEEE80211_HT_CAP_SGI_40; - band_2GHz->ht_cap.mcs.rx_highest = cpu_to_le16(150 * nss); + band_2GHz->ht_cap.mcs.rx_highest = + cpu_to_le16(150 * nss); } else - band_2GHz->ht_cap.mcs.rx_highest = cpu_to_le16(72 * nss); + band_2GHz->ht_cap.mcs.rx_highest = + cpu_to_le16(72 * nss); } if (rwnx_hw->mod_params->gf_rx_on) band_2GHz->ht_cap.cap |= IEEE80211_HT_CAP_GRN_FLD; @@ -1159,111 +1273,148 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) int nss = rwnx_hw->mod_params->nss; int mcs_map; - he_cap = (struct ieee80211_sta_he_cap *) &rwnx_he_capa.he_cap; + if (rwnx_hw->sdiodev->chipid <= PRODUCT_ID_AIC8800D80) + nss = 1; + + he_cap = (struct ieee80211_sta_he_cap *)&rwnx_he_capa.he_cap; he_cap->has_he = true; he_cap->he_cap_elem.mac_cap_info[2] |= IEEE80211_HE_MAC_CAP2_ALL_ACK; if (rwnx_hw->mod_params->use_2040) { he_cap->he_cap_elem.phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G; + IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G; he_cap->ppe_thres[0] |= 0x10; } if (rwnx_hw->mod_params->use_80) { he_cap->ppe_thres[0] |= 0x20; he_cap->ppe_thres[2] |= 0xc0; - he_cap->ppe_thres[3] |= 0x07; + he_cap->ppe_thres[3] |= 0x01; + } + if (nss == 2) { + he_cap->ppe_thres[0] |= 0x01; + he_cap->ppe_thres[3] |= 0x70; + he_cap->ppe_thres[4] |= 0x1c; + he_cap->ppe_thres[5] |= 0x07; } //if (rwnx_hw->mod_params->use_80) { he_cap->he_cap_elem.phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G; + IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G; } if (rwnx_hw->mod_params->ldpc_on) { - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD; + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD; } else { // If no LDPC is supported, we have to limit to MCS0_9, as LDPC is mandatory // for MCS 10 and 11 - rwnx_hw->mod_params->he_mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_9); + rwnx_hw->mod_params->he_mcs_map = + min_t(int, rwnx_hw->mod_params->mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_9); } - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US - | IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US | + IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS; - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS | - IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | - IEEE80211_HE_PHY_CAP2_DOPPLER_RX; - #else - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US; - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | - IEEE80211_HE_PHY_CAP2_DOPPLER_RX; - #endif + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS | + IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | + IEEE80211_HE_PHY_CAP2_DOPPLER_RX; +#else + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US; + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | + IEEE80211_HE_PHY_CAP2_DOPPLER_RX; +#endif if (rwnx_hw->mod_params->stbc_on) - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; - he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | - IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | - IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA; + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; + he_cap->he_cap_elem.phy_cap_info[3] |= + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | + IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | + IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA; if (rwnx_hw->mod_params->bfmee) { - he_cap->he_cap_elem.phy_cap_info[4] |= IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE; he_cap->he_cap_elem.phy_cap_info[4] |= - IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4; + IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE; + he_cap->he_cap_elem.phy_cap_info[4] |= + IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4; } - he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | - IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; - he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | - IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | - IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB | - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | - IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | - IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; - he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; - he_cap->he_cap_elem.phy_cap_info[8] |= IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; - he_cap->he_cap_elem.phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | - IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) - mcs_map = rwnx_hw->mod_params->he_mcs_map; - else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, IEEE80211_HE_MCS_SUPPORT_0_9); + he_cap->he_cap_elem.phy_cap_info[5] |= + IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | + IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; + he_cap->he_cap_elem.phy_cap_info[6] |= + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | + IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | + IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; + //he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; + he_cap->he_cap_elem.phy_cap_info[8] |= + IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; + he_cap->he_cap_elem.phy_cap_info[9] |= + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) + mcs_map = rwnx_hw->mod_params->he_mcs_map; + else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) + mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_9); memset(&he_cap->he_mcs_nss_supp, 0, sizeof(he_cap->he_mcs_nss_supp)); for (i = 0; i < nss; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); - he_cap->he_mcs_nss_supp.rx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); + he_cap->he_mcs_nss_supp.rx_mcs_80 |= + cpu_to_le16(mcs_map << (i * 2)); he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; - } + //mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; + } for (; i < 8; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); he_cap->he_mcs_nss_supp.rx_mcs_80 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - } + } mcs_map = rwnx_hw->mod_params->he_mcs_map; for (i = 0; i < nss; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); - he_cap->he_mcs_nss_supp.tx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); + he_cap->he_mcs_nss_supp.tx_mcs_80 |= + cpu_to_le16(mcs_map << (i * 2)); he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_7); + //mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + // IEEE80211_HE_MCS_SUPPORT_0_7); } for (; i < 8; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); he_cap->he_mcs_nss_supp.tx_mcs_80 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; } - return ; - #endif + return; +#endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) - struct ieee80211_supported_band *band_5GHz = wiphy->bands[NL80211_BAND_5GHZ]; - struct ieee80211_supported_band *band_2GHz = wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *band_5GHz = + wiphy->bands[NL80211_BAND_5GHZ]; + struct ieee80211_supported_band *band_2GHz = + wiphy->bands[NL80211_BAND_2GHZ]; int i; int nss = rwnx_hw->mod_params->nss; struct ieee80211_sta_he_cap *he_cap; int mcs_map; + + if (rwnx_hw->sdiodev->chipid <= PRODUCT_ID_AIC8800D80) + nss = 1; + if (!rwnx_hw->mod_params->he_on) { band_2GHz->iftype_data = NULL; band_2GHz->n_iftype_data = 0; @@ -1273,233 +1424,294 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) } return; } - he_cap = (struct ieee80211_sta_he_cap *) &band_2GHz->iftype_data->he_cap; + he_cap = (struct ieee80211_sta_he_cap *)&band_2GHz->iftype_data->he_cap; he_cap->has_he = true; he_cap->he_cap_elem.mac_cap_info[2] |= IEEE80211_HE_MAC_CAP2_ALL_ACK; if (rwnx_hw->mod_params->use_2040) { he_cap->he_cap_elem.phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G; + IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G; he_cap->ppe_thres[0] |= 0x10; } if (rwnx_hw->mod_params->use_80) { - he_cap->ppe_thres[0] |= 0x20; - he_cap->ppe_thres[2] |= 0xc0; - he_cap->ppe_thres[3] |= 0x07; + he_cap->ppe_thres[0] |= 0x20; + he_cap->ppe_thres[2] |= 0xc0; + he_cap->ppe_thres[3] |= 0x01; + } + if (nss == 2) { + he_cap->ppe_thres[0] |= 0x01; + he_cap->ppe_thres[3] |= 0x70; + he_cap->ppe_thres[4] |= 0x1c; + he_cap->ppe_thres[5] |= 0x07; } //if (rwnx_hw->mod_params->use_80) { he_cap->he_cap_elem.phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G; + IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G; } if (rwnx_hw->mod_params->ldpc_on) { - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD; + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD; } else { // If no LDPC is supported, we have to limit to MCS0_9, as LDPC is mandatory // for MCS 10 and 11 - rwnx_hw->mod_params->he_mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_9); + rwnx_hw->mod_params->he_mcs_map = + min_t(int, rwnx_hw->mod_params->mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_9); } - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US - | IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US | + IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS; - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS | - IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | - IEEE80211_HE_PHY_CAP2_DOPPLER_RX; - #else - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US; - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | - IEEE80211_HE_PHY_CAP2_DOPPLER_RX; - #endif + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS | + IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | + IEEE80211_HE_PHY_CAP2_DOPPLER_RX; +#else + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US; + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | + IEEE80211_HE_PHY_CAP2_DOPPLER_RX; +#endif if (rwnx_hw->mod_params->stbc_on) - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) - he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + he_cap->he_cap_elem.phy_cap_info[3] |= + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; - #else - he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | +#else + he_cap->he_cap_elem.phy_cap_info[3] |= + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA; - #endif - +#endif if (rwnx_hw->mod_params->bfmee) { - he_cap->he_cap_elem.phy_cap_info[4] |= IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE; he_cap->he_cap_elem.phy_cap_info[4] |= - IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4; + IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE; + he_cap->he_cap_elem.phy_cap_info[4] |= + IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4; } - he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | - IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) - he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | - IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | - IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB | - IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | - IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; - #else - he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | - IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | - IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB | - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | - IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | - IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; - #endif + he_cap->he_cap_elem.phy_cap_info[5] |= + IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | + IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + he_cap->he_cap_elem.phy_cap_info[6] |= + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | + IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB | + IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | + IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; +#else + he_cap->he_cap_elem.phy_cap_info[6] |= + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | + IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | + IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; +#endif - he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; - he_cap->he_cap_elem.phy_cap_info[8] |= IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) - he_cap->he_cap_elem.phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | - IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; - #endif - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - mcs_map = rwnx_hw->mod_params->he_mcs_map; - } - else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, IEEE80211_HE_MCS_SUPPORT_0_9); - } + //he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; + he_cap->he_cap_elem.phy_cap_info[8] |= + IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) + he_cap->he_cap_elem.phy_cap_info[9] |= + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; +#endif + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + mcs_map = rwnx_hw->mod_params->he_mcs_map; + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_9); + } memset(&he_cap->he_mcs_nss_supp, 0, sizeof(he_cap->he_mcs_nss_supp)); for (i = 0; i < nss; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); - he_cap->he_mcs_nss_supp.rx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); + he_cap->he_mcs_nss_supp.rx_mcs_80 |= + cpu_to_le16(mcs_map << (i * 2)); he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; - } + //mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; + } for (; i < 8; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); he_cap->he_mcs_nss_supp.rx_mcs_80 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - } + } mcs_map = rwnx_hw->mod_params->he_mcs_map; for (i = 0; i < nss; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); - he_cap->he_mcs_nss_supp.tx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); + he_cap->he_mcs_nss_supp.tx_mcs_80 |= + cpu_to_le16(mcs_map << (i * 2)); he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_7); + //mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + // IEEE80211_HE_MCS_SUPPORT_0_7); } for (; i < 8; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); + __le16 unsup_for_ss = + cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); he_cap->he_mcs_nss_supp.tx_mcs_80 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; } if (rwnx_hw->band_5g_support) { - he_cap = (struct ieee80211_sta_he_cap *) &band_5GHz->iftype_data->he_cap; + he_cap = (struct ieee80211_sta_he_cap *)&band_5GHz->iftype_data + ->he_cap; he_cap->has_he = true; - he_cap->he_cap_elem.mac_cap_info[2] |= IEEE80211_HE_MAC_CAP2_ALL_ACK; + he_cap->he_cap_elem.mac_cap_info[2] |= + IEEE80211_HE_MAC_CAP2_ALL_ACK; if (rwnx_hw->mod_params->use_2040) { he_cap->he_cap_elem.phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G; + IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G; he_cap->ppe_thres[0] |= 0x10; } - if (rwnx_hw->mod_params->use_80) { - he_cap->ppe_thres[0] |= 0x20; - he_cap->ppe_thres[2] |= 0xc0; - he_cap->ppe_thres[3] |= 0x07; + if (rwnx_hw->mod_params->use_80) { + he_cap->ppe_thres[0] |= 0x20; + he_cap->ppe_thres[2] |= 0xc0; + he_cap->ppe_thres[3] |= 0x01; + } + if (nss == 2) { + he_cap->ppe_thres[0] |= 0x01; + he_cap->ppe_thres[3] |= 0x70; + he_cap->ppe_thres[4] |= 0x1c; + he_cap->ppe_thres[5] |= 0x07; } //if (rwnx_hw->mod_params->use_80) { he_cap->he_cap_elem.phy_cap_info[0] |= - IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G; + IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G; } if (rwnx_hw->mod_params->ldpc_on) { - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD; + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD; } else { // If no LDPC is supported, we have to limit to MCS0_9, as LDPC is mandatory // for MCS 10 and 11 - rwnx_hw->mod_params->he_mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_9); + rwnx_hw->mod_params->he_mcs_map = + min_t(int, rwnx_hw->mod_params->mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_9); } - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US | - IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS; - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS | - IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | - IEEE80211_HE_PHY_CAP2_DOPPLER_RX; - #else - he_cap->he_cap_elem.phy_cap_info[1] |= IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US; - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | - IEEE80211_HE_PHY_CAP2_DOPPLER_RX; - #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US | + IEEE80211_HE_PHY_CAP1_MIDAMBLE_RX_TX_MAX_NSTS; + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS | + IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | + IEEE80211_HE_PHY_CAP2_DOPPLER_RX; +#else + he_cap->he_cap_elem.phy_cap_info[1] |= + IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US; + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US | + IEEE80211_HE_PHY_CAP2_DOPPLER_RX; +#endif if (rwnx_hw->mod_params->stbc_on) - he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) - he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | - IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | - IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; - #else - he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | - IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | - IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA; - #endif + he_cap->he_cap_elem.phy_cap_info[2] |= + IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + he_cap->he_cap_elem.phy_cap_info[3] |= + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | + IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | + IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; +#else + he_cap->he_cap_elem.phy_cap_info[3] |= + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | + IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | + IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA; +#endif if (rwnx_hw->mod_params->bfmee) { - he_cap->he_cap_elem.phy_cap_info[4] |= IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE; he_cap->he_cap_elem.phy_cap_info[4] |= - IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4; + IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE; + he_cap->he_cap_elem.phy_cap_info[4] |= + IEEE80211_HE_PHY_CAP4_BEAMFORMEE_MAX_STS_UNDER_80MHZ_4; } - he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | - IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) - he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | - IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | - IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB | - IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | - IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; - #else - he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | - IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | - IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB | - IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | - IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | - IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; - #endif + he_cap->he_cap_elem.phy_cap_info[5] |= + IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | + IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + he_cap->he_cap_elem.phy_cap_info[6] |= + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | + IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB | + IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | + IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; +#else + he_cap->he_cap_elem.phy_cap_info[6] |= + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | + IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | + IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | + IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; +#endif - he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; - he_cap->he_cap_elem.phy_cap_info[8] |= IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) - he_cap->he_cap_elem.phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | - IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; - #endif - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) - mcs_map = rwnx_hw->mod_params->he_mcs_map; - else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, IEEE80211_HE_MCS_SUPPORT_0_9); - memset(&he_cap->he_mcs_nss_supp, 0, sizeof(he_cap->he_mcs_nss_supp)); + //he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; + he_cap->he_cap_elem.phy_cap_info[8] |= + IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) + he_cap->he_cap_elem.phy_cap_info[9] |= + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; +#endif + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) + mcs_map = rwnx_hw->mod_params->he_mcs_map; + else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) + mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + IEEE80211_HE_MCS_SUPPORT_0_9); + memset(&he_cap->he_mcs_nss_supp, 0, + sizeof(he_cap->he_mcs_nss_supp)); for (i = 0; i < nss; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); - he_cap->he_mcs_nss_supp.rx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); + __le16 unsup_for_ss = cpu_to_le16( + IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); + he_cap->he_mcs_nss_supp.rx_mcs_80 |= + cpu_to_le16(mcs_map << (i * 2)); he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; } for (; i < 8; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); + __le16 unsup_for_ss = cpu_to_le16( + IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); he_cap->he_mcs_nss_supp.rx_mcs_80 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; } mcs_map = rwnx_hw->mod_params->he_mcs_map; for (i = 0; i < nss; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); - he_cap->he_mcs_nss_supp.tx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); + __le16 unsup_for_ss = cpu_to_le16( + IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); + he_cap->he_mcs_nss_supp.tx_mcs_80 |= + cpu_to_le16(mcs_map << (i * 2)); he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_7); + //mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + // IEEE80211_HE_MCS_SUPPORT_0_7); } for (; i < 8; i++) { - __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); + __le16 unsup_for_ss = cpu_to_le16( + IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2)); he_cap->he_mcs_nss_supp.tx_mcs_80 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; @@ -1511,7 +1723,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) static void rwnx_set_wiphy_params(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) { #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) - struct ieee80211_regdomain *regdomain; + struct ieee80211_regdomain *regdomain; #endif #ifdef CONFIG_RWNX_FULLMAC @@ -1540,45 +1752,48 @@ static void rwnx_set_wiphy_params(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; #endif -if (rwnx_hw->mod_params->custregd) { - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) - // Apply custom regulatory. Note that for recent kernel versions we use instead the - // REGULATORY_WIPHY_SELF_MANAGED flag, along with the regulatory_set_wiphy_regd() - // function, that needs to be called after wiphy registration - memcpy(country_code, default_ccode, sizeof(default_ccode)); + if (rwnx_hw->mod_params->custregd) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) + // Apply custom regulatory. Note that for recent kernel versions we use instead the + // REGULATORY_WIPHY_SELF_MANAGED flag, along with the regulatory_set_wiphy_regd() + // function, that needs to be called after wiphy registration + memcpy(country_code, default_ccode, sizeof(default_ccode)); regdomain = getRegdomainFromRwnxDB(wiphy, default_ccode); - printk(KERN_CRIT - "\n\n%s: CAUTION: USING PERMISSIVE CUSTOM REGULATORY RULES\n\n", - __func__); - wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; - wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; - wiphy_apply_custom_regulatory(wiphy, regdomain); + printk(KERN_CRIT + "\n\n%s: CAUTION: USING PERMISSIVE CUSTOM REGULATORY RULES\n\n", + __func__); + wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; + wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; + wiphy_apply_custom_regulatory(wiphy, regdomain); #elif (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) - memcpy(country_code, default_ccode, sizeof(default_ccode)); + memcpy(country_code, default_ccode, sizeof(default_ccode)); regdomain = getRegdomainFromRwnxDB(wiphy, default_ccode); - printk(KERN_CRIT"%s: Registering custom regulatory\n", __func__); + printk(KERN_CRIT "%s: Registering custom regulatory\n", + __func__); wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; wiphy_apply_custom_regulatory(wiphy, regdomain); #endif - // Check if custom channel set shall be enabled. In such case only monitor mode is - // supported - if (rwnx_hw->mod_params->custchan) { - wiphy->interface_modes = BIT(NL80211_IFTYPE_MONITOR); + // Check if custom channel set shall be enabled. In such case only monitor mode is + // supported + if (rwnx_hw->mod_params->custchan) { + wiphy->interface_modes = BIT(NL80211_IFTYPE_MONITOR); - // Enable "extra" channels - wiphy->bands[NL80211_BAND_2GHZ]->n_channels += 13; + // Enable "extra" channels + wiphy->bands[NL80211_BAND_2GHZ]->n_channels += 13; //#ifdef USE_5G - if(rwnx_hw->band_5g_support){ - wiphy->bands[NL80211_BAND_5GHZ]->n_channels += 59; + if (rwnx_hw->band_5g_support) { + wiphy->bands[NL80211_BAND_5GHZ]->n_channels += + 59; } //#endif - } - } + } + } #if 0 if (rwnx_hw->mod_params->custregd) { -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && \ + (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) // Apply custom regulatory. Note that for recent kernel versions we use instead the // REGULATORY_WIPHY_SELF_MANAGED flag, along with the regulatory_set_wiphy_regd() // function, that needs to be called after wiphy registration @@ -1691,20 +1906,24 @@ int rwnx_handle_dynparams(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) } #endif - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - rwnx_hw->mod_params->sgi80 = true; - rwnx_hw->mod_params->use_80 = true; - } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + rwnx_hw->mod_params->sgi80 = true; + rwnx_hw->mod_params->use_80 = true; + } - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - rwnx_hw->mod_params->use_80 = true; - } - - if (rwnx_hw->sdiodev->chipid != PRODUCT_ID_AIC8800D80 && - rwnx_hw->mod_params->he_mcs_map == IEEE80211_HE_MCS_SUPPORT_0_11) { - AICWFDBG(LOGINFO,"%s unsupport mcs11 change to mcs9", __func__); - rwnx_hw->mod_params->he_mcs_map = IEEE80211_HE_MCS_SUPPORT_0_9; - } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + rwnx_hw->mod_params->use_80 = true; + } + + if (rwnx_hw->sdiodev->chipid != PRODUCT_ID_AIC8800D80 && + rwnx_hw->sdiodev->chipid != PRODUCT_ID_AIC8800D80X2 && + rwnx_hw->mod_params->he_mcs_map == IEEE80211_HE_MCS_SUPPORT_0_11) { + AICWFDBG(LOGINFO, "%s unsupport mcs11 change to mcs9", + __func__); + rwnx_hw->mod_params->he_mcs_map = IEEE80211_HE_MCS_SUPPORT_0_9; + } /* Set wiphy parameters */ rwnx_set_wiphy_params(rwnx_hw, wiphy); @@ -1727,30 +1946,33 @@ void rwnx_custregd(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) // For older kernel version, the custom regulatory is applied before the wiphy // registration (in rwnx_set_wiphy_params()), so nothing has to be done here #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) - if (!rwnx_hw->mod_params->custregd) - return; + if (!rwnx_hw->mod_params->custregd) + return; - wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; - wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; + wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; + wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; - rtnl_lock(); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) - if (regulatory_set_wiphy_regd_sync(wiphy, getRegdomainFromRwnxDB(wiphy, default_ccode))){ - wiphy_err(wiphy, "Failed to set custom regdomain\n"); - } - #else - if (regulatory_set_wiphy_regd_sync_rtnl(wiphy, getRegdomainFromRwnxDB(wiphy, default_ccode))){ - wiphy_err(wiphy, "Failed to set custom regdomain\n"); - } - #endif - - else{ - wiphy_err(wiphy,"\n" - "*******************************************************\n" - "** CAUTION: USING PERMISSIVE CUSTOM REGULATORY RULES **\n" - "*******************************************************\n"); - } - rtnl_unlock(); + rtnl_lock(); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) + if (regulatory_set_wiphy_regd_sync( + wiphy, getRegdomainFromRwnxDB(wiphy, default_ccode))) { + wiphy_err(wiphy, "Failed to set custom regdomain\n"); + } +#else + if (regulatory_set_wiphy_regd_sync_rtnl( + wiphy, getRegdomainFromRwnxDB(wiphy, default_ccode))) { + wiphy_err(wiphy, "Failed to set custom regdomain\n"); + } #endif + else { + wiphy_err( + wiphy, + "\n" + "*******************************************************\n" + "** CAUTION: USING PERMISSIVE CUSTOM REGULATORY RULES **\n" + "*******************************************************\n"); + } + rtnl_unlock(); +#endif } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.h index fb407746d..35652ab94 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mod_params.h @@ -66,5 +66,10 @@ int rwnx_handle_dynparams(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy); void rwnx_custregd(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy); void rwnx_enable_wapi(struct rwnx_hw *rwnx_hw); void rwnx_enable_mfp(struct rwnx_hw *rwnx_hw); +struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, + char *alpha2); + +struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy *wiphy, + int index); #endif /* _RWNX_MOD_PARAM_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_rx.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_rx.c index c6e76b8a9..94abe2897 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_rx.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_rx.c @@ -28,7 +28,8 @@ #ifdef CONFIG_SDIO_BT #include "aic_btsdio.h" #endif -void rwnx_cfg80211_unlink_bss(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif); +void rwnx_cfg80211_unlink_bss(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif); static int rwnx_freq_to_idx(struct rwnx_hw *rwnx_hw, int freq) { @@ -61,18 +62,20 @@ exit: * Messages from MM task **************************************************************************/ static inline int rwnx_rx_chan_pre_switch_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct rwnx_vif *rwnx_vif; - int chan_idx = ((struct mm_channel_pre_switch_ind *)msg->param)->chan_index; + int chan_idx = + ((struct mm_channel_pre_switch_ind *)msg->param)->chan_index; REG_SW_SET_PROFILING_CHAN(rwnx_hw, SW_PROF_CHAN_CTXT_PSWTCH_BIT); #ifdef CONFIG_RWNX_FULLMAC - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { if (rwnx_vif->up && rwnx_vif->ch_index == chan_idx) { - rwnx_txq_vif_stop(rwnx_vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); + rwnx_txq_vif_stop(rwnx_vif, RWNX_TXQ_STOP_CHAN, + rwnx_hw); } } #endif /* CONFIG_RWNX_FULLMAC */ @@ -83,29 +86,32 @@ static inline int rwnx_rx_chan_pre_switch_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_chan_switch_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct rwnx_vif *rwnx_vif; int chan_idx = ((struct mm_channel_switch_ind *)msg->param)->chan_index; - bool roc = ((struct mm_channel_switch_ind *)msg->param)->roc; + bool roc = ((struct mm_channel_switch_ind *)msg->param)->roc; bool roc_tdls = ((struct mm_channel_switch_ind *)msg->param)->roc_tdls; REG_SW_SET_PROFILING_CHAN(rwnx_hw, SW_PROF_CHAN_CTXT_SWTCH_BIT); #ifdef CONFIG_RWNX_FULLMAC if (roc_tdls) { - u8 vif_index = ((struct mm_channel_switch_ind *)msg->param)->vif_index; - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { + u8 vif_index = + ((struct mm_channel_switch_ind *)msg->param)->vif_index; + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { if (rwnx_vif->vif_index == vif_index) { rwnx_vif->roc_tdls = true; - rwnx_txq_tdls_sta_start(rwnx_vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); + rwnx_txq_tdls_sta_start( + rwnx_vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); } } } else if (!roc) { - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { if (rwnx_vif->up && rwnx_vif->ch_index == chan_idx) { - rwnx_txq_vif_start(rwnx_vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); + rwnx_txq_vif_start(rwnx_vif, RWNX_TXQ_STOP_CHAN, + rwnx_hw); } } } else { @@ -117,12 +123,15 @@ static inline int rwnx_rx_chan_switch_ind(struct rwnx_hw *rwnx_hw, /* For debug purpose (use ftrace kernel option) */ //trace_switch_roc(rwnx_vif->vif_index); - if(roc_elem) { + if (roc_elem) { /* If mgmt_roc is true, remain on channel has been started by ourself */ if (!roc_elem->mgmt_roc) { /* Inform the host that we have switch on the indicated off-channel */ - cfg80211_ready_on_channel(roc_elem->wdev, (u64)(rwnx_hw->roc_cookie_cnt), - roc_elem->chan, roc_elem->duration, GFP_ATOMIC); + cfg80211_ready_on_channel( + roc_elem->wdev, + (u64)(rwnx_hw->roc_cookie_cnt), + roc_elem->chan, roc_elem->duration, + GFP_ATOMIC); } /* Keep in mind that we have switched on the channel */ @@ -147,15 +156,15 @@ static inline int rwnx_rx_chan_switch_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_tdls_chan_switch_cfm(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { return 0; } static inline int rwnx_rx_tdls_chan_switch_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { #ifdef CONFIG_RWNX_FULLMAC // Enable traffic on OFF channel queue @@ -166,19 +175,21 @@ static inline int rwnx_rx_tdls_chan_switch_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_tdls_chan_switch_base_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct rwnx_vif *rwnx_vif; - u8 vif_index = ((struct tdls_chan_switch_base_ind *)msg->param)->vif_index; + u8 vif_index = + ((struct tdls_chan_switch_base_ind *)msg->param)->vif_index; RWNX_DBG(RWNX_FN_ENTRY_STR); #ifdef CONFIG_RWNX_FULLMAC - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { if (rwnx_vif->vif_index == vif_index) { rwnx_vif->roc_tdls = false; - rwnx_txq_tdls_sta_stop(rwnx_vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); + rwnx_txq_tdls_sta_stop(rwnx_vif, RWNX_TXQ_STOP_CHAN, + rwnx_hw); } } return 0; @@ -186,19 +197,20 @@ static inline int rwnx_rx_tdls_chan_switch_base_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_tdls_peer_ps_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct rwnx_vif *rwnx_vif; u8 vif_index = ((struct tdls_peer_ps_ind *)msg->param)->vif_index; bool ps_on = ((struct tdls_peer_ps_ind *)msg->param)->ps_on; #ifdef CONFIG_RWNX_FULLMAC -list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { - if (rwnx_vif->vif_index == vif_index) { - rwnx_vif->sta.tdls_sta->tdls.ps_on = ps_on; - // Update PS status for the TDLS station - rwnx_ps_bh_enable(rwnx_hw, rwnx_vif->sta.tdls_sta, ps_on); + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { + if (rwnx_vif->vif_index == vif_index) { + rwnx_vif->sta.tdls_sta->tdls.ps_on = ps_on; + // Update PS status for the TDLS station + rwnx_ps_bh_enable(rwnx_hw, rwnx_vif->sta.tdls_sta, + ps_on); } } @@ -207,8 +219,8 @@ list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { } static inline int rwnx_rx_remain_on_channel_exp_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { #ifdef CONFIG_RWNX_FULLMAC /* Retrieve the allocated RoC element */ @@ -230,8 +242,9 @@ static inline int rwnx_rx_remain_on_channel_exp_ind(struct rwnx_hw *rwnx_hw, /* If RoC has been cancelled before we switched on channel, do not call cfg80211 */ if (!roc_elem->mgmt_roc && roc_elem->on_chan) { /* Inform the host that off-channel period has expired */ - cfg80211_remain_on_channel_expired(roc_elem->wdev, (u64)(rwnx_hw->roc_cookie_cnt), - roc_elem->chan, GFP_ATOMIC); + cfg80211_remain_on_channel_expired( + roc_elem->wdev, (u64)(rwnx_hw->roc_cookie_cnt), + roc_elem->chan, GFP_ATOMIC); } /* De-init offchannel TX queue */ @@ -253,11 +266,13 @@ static inline int rwnx_rx_remain_on_channel_exp_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_p2p_vif_ps_change_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - int vif_idx = ((struct mm_p2p_vif_ps_change_ind *)msg->param)->vif_index; - int ps_state = ((struct mm_p2p_vif_ps_change_ind *)msg->param)->ps_state; + int vif_idx = + ((struct mm_p2p_vif_ps_change_ind *)msg->param)->vif_index; + int ps_state = + ((struct mm_p2p_vif_ps_change_ind *)msg->param)->ps_state; struct rwnx_vif *vif_entry; RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -278,7 +293,7 @@ found_vif: if (ps_state == MM_PS_MODE_OFF) { // Start TX queues for provided VIF rwnx_txq_vif_start(vif_entry, RWNX_TXQ_STOP_VIF_PS, rwnx_hw); - tasklet_schedule(&rwnx_hw->task); + tasklet_schedule(&rwnx_hw->task); } else { // Stop TX queues for provided VIF rwnx_txq_vif_stop(vif_entry, RWNX_TXQ_STOP_VIF_PS, rwnx_hw); @@ -290,16 +305,17 @@ exit: } static inline int rwnx_rx_channel_survey_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mm_channel_survey_ind *ind = (struct mm_channel_survey_ind *)msg->param; + struct mm_channel_survey_ind *ind = + (struct mm_channel_survey_ind *)msg->param; // Get the channel index int idx = rwnx_freq_to_idx(rwnx_hw, ind->freq); // Get the survey struct rwnx_survey_info *rwnx_survey; - if (idx > ARRAY_SIZE(rwnx_hw->survey)) + if (idx > ARRAY_SIZE(rwnx_hw->survey)) return 0; rwnx_survey = &rwnx_hw->survey[idx]; @@ -308,8 +324,7 @@ static inline int rwnx_rx_channel_survey_ind(struct rwnx_hw *rwnx_hw, rwnx_survey->chan_time_ms = ind->chan_time_ms; rwnx_survey->chan_time_busy_ms = ind->chan_time_busy_ms; rwnx_survey->noise_dbm = ind->noise_dbm; - rwnx_survey->filled = (SURVEY_INFO_TIME | - SURVEY_INFO_TIME_BUSY); + rwnx_survey->filled = (SURVEY_INFO_TIME | SURVEY_INFO_TIME_BUSY); if (ind->noise_dbm != 0) { rwnx_survey->filled |= SURVEY_INFO_NOISE_DBM; @@ -319,18 +334,19 @@ static inline int rwnx_rx_channel_survey_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_p2p_noa_upd_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { return 0; } static inline int rwnx_rx_rssi_status_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mm_rssi_status_ind *ind = (struct mm_rssi_status_ind *)msg->param; - int vif_idx = ind->vif_index; + struct mm_rssi_status_ind *ind = + (struct mm_rssi_status_ind *)msg->param; + int vif_idx = ind->vif_index; bool rssi_status = ind->rssi_status; struct rwnx_vif *vif_entry; @@ -338,11 +354,12 @@ static inline int rwnx_rx_rssi_status_ind(struct rwnx_hw *rwnx_hw, RWNX_DBG(RWNX_FN_ENTRY_STR); #ifdef CONFIG_RWNX_FULLMAC -vif_entry = rwnx_hw->vif_table[vif_idx]; + vif_entry = rwnx_hw->vif_table[vif_idx]; if (vif_entry) { - cfg80211_cqm_rssi_notify(vif_entry->ndev, + cfg80211_cqm_rssi_notify( + vif_entry->ndev, rssi_status ? NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW : - NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH, + NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH, ind->rssi, GFP_ATOMIC); } #endif /* CONFIG_RWNX_FULLMAC */ @@ -351,66 +368,105 @@ vif_entry = rwnx_hw->vif_table[vif_idx]; } static inline int rwnx_rx_pktloss_notify_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { #ifdef CONFIG_RWNX_FULLMAC struct mm_pktloss_ind *ind = (struct mm_pktloss_ind *)msg->param; struct rwnx_vif *vif_entry; - int vif_idx = ind->vif_index; + int vif_idx = ind->vif_index; RWNX_DBG(RWNX_FN_ENTRY_STR); vif_entry = rwnx_hw->vif_table[vif_idx]; if (vif_entry) { - cfg80211_cqm_pktloss_notify(vif_entry->ndev, (const u8 *)ind->mac_addr.array, - ind->num_packets, GFP_ATOMIC); + cfg80211_cqm_pktloss_notify(vif_entry->ndev, + (const u8 *)ind->mac_addr.array, + ind->num_packets, GFP_ATOMIC); } #endif /* CONFIG_RWNX_FULLMAC */ return 0; } -static inline int rwnx_apm_staloss_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) +static inline int rwnx_radar_detect_ind(struct rwnx_hw *rwnx_hw, + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mm_apm_staloss_ind *ind = (struct mm_apm_staloss_ind *)msg->param; + struct radar_pulse_array_desc *pulses = + (struct radar_pulse_array_desc *)msg->param; + int i; - RWNX_DBG(RWNX_FN_ENTRY_STR); + //RWNX_DBG(RWNX_FN_ENTRY_STR); + //printk("%s\n", __func__); - memcpy(rwnx_hw->sta_mac_addr, ind->mac_addr, 6); - rwnx_hw->apm_vif_idx = ind->vif_idx; + if (pulses->cnt == 0) { + printk("cnt error\n"); + return -1; + } - queue_work(rwnx_hw->apmStaloss_wq, &rwnx_hw->apmStalossWork); + if (rwnx_radar_detection_is_enable(&rwnx_hw->radar, pulses->idx)) { + for (i = 0; i < pulses->cnt; i++) { + struct rwnx_radar_pulses *p = + &rwnx_hw->radar.pulses[pulses->idx]; - return 0; + p->buffer[p->index] = pulses->pulse[i]; + p->index = (p->index + 1) % RWNX_RADAR_PULSE_MAX; + if (p->count < RWNX_RADAR_PULSE_MAX) + p->count++; + //printk("pulse=%x\n", pulses->pulse[i]); + } + + if (!work_pending(&rwnx_hw->radar.detection_work)) + schedule_work(&rwnx_hw->radar.detection_work); + } else + printk("not enable\n"); + + return 0; +} + +static inline int rwnx_apm_staloss_ind(struct rwnx_hw *rwnx_hw, + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) +{ + struct mm_apm_staloss_ind *ind = + (struct mm_apm_staloss_ind *)msg->param; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + memcpy(rwnx_hw->sta_mac_addr, ind->mac_addr, 6); + rwnx_hw->apm_vif_idx = ind->vif_idx; + + queue_work(rwnx_hw->apmStaloss_wq, &rwnx_hw->apmStalossWork); + + return 0; } #ifdef CONFIG_SDIO_BT static inline int rwnx_bt_recv_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct mm_bt_recv_ind *ind = (struct mm_bt_recv_ind *)msg->param; - bt_sdio_recv(ind->bt_data,ind->data_len); + bt_sdio_recv(ind->bt_data, ind->data_len); return 0; } #endif static inline int rwnx_rx_csa_counter_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mm_csa_counter_ind *ind = (struct mm_csa_counter_ind *)msg->param; + struct mm_csa_counter_ind *ind = + (struct mm_csa_counter_ind *)msg->param; struct rwnx_vif *vif; bool found = false; RWNX_DBG(RWNX_FN_ENTRY_STR); // Look for VIF entry - list_for_each_entry(vif, &rwnx_hw->vifs, list) { + list_for_each_entry (vif, &rwnx_hw->vifs, list) { if (vif->vif_index == ind->vif_index) { found = true; break; @@ -419,10 +475,11 @@ static inline int rwnx_rx_csa_counter_ind(struct rwnx_hw *rwnx_hw, if (found) { #ifdef CONFIG_RWNX_FULLMAC - if (vif->ap.csa) - vif->ap.csa->count = ind->csa_count; - else - netdev_err(vif->ndev, "CSA counter update but no active CSA"); + if (vif->ap.csa) + vif->ap.csa->count = ind->csa_count; + else + netdev_err(vif->ndev, + "CSA counter update but no active CSA"); #endif } @@ -432,8 +489,8 @@ static inline int rwnx_rx_csa_counter_ind(struct rwnx_hw *rwnx_hw, #ifdef CONFIG_RWNX_FULLMAC static inline int rwnx_rx_csa_finish_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct mm_csa_finish_ind *ind = (struct mm_csa_finish_ind *)msg->param; struct rwnx_vif *vif; @@ -442,7 +499,7 @@ static inline int rwnx_rx_csa_finish_ind(struct rwnx_hw *rwnx_hw, RWNX_DBG(RWNX_FN_ENTRY_STR); // Look for VIF entry - list_for_each_entry(vif, &rwnx_hw->vifs, list) { + list_for_each_entry (vif, &rwnx_hw->vifs, list) { if (vif->vif_index == ind->vif_index) { found = true; break; @@ -451,22 +508,29 @@ static inline int rwnx_rx_csa_finish_ind(struct rwnx_hw *rwnx_hw, if (found) { if (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_AP || - RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_GO) { + RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_GO) { if (vif->ap.csa) { vif->ap.csa->status = ind->status; vif->ap.csa->ch_idx = ind->chan_idx; schedule_work(&vif->ap.csa->work); } else - netdev_err(vif->ndev, "CSA finish indication but no active CSA"); + netdev_err( + vif->ndev, + "CSA finish indication but no active CSA"); } else { if (ind->status == 0) { rwnx_chanctx_unlink(vif); rwnx_chanctx_link(vif, ind->chan_idx, NULL); if (rwnx_hw->cur_chanctx == ind->chan_idx) { - rwnx_radar_detection_enable_on_cur_channel(rwnx_hw); - rwnx_txq_vif_start(vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); + rwnx_radar_detection_enable_on_cur_channel( + rwnx_hw); + rwnx_txq_vif_start(vif, + RWNX_TXQ_STOP_CHAN, + rwnx_hw); } else - rwnx_txq_vif_stop(vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); + rwnx_txq_vif_stop(vif, + RWNX_TXQ_STOP_CHAN, + rwnx_hw); } } } @@ -475,17 +539,18 @@ static inline int rwnx_rx_csa_finish_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_csa_traffic_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mm_csa_traffic_ind *ind = (struct mm_csa_traffic_ind *)msg->param; + struct mm_csa_traffic_ind *ind = + (struct mm_csa_traffic_ind *)msg->param; struct rwnx_vif *vif; bool found = false; RWNX_DBG(RWNX_FN_ENTRY_STR); // Look for VIF entry - list_for_each_entry(vif, &rwnx_hw->vifs, list) { + list_for_each_entry (vif, &rwnx_hw->vifs, list) { if (vif->vif_index == ind->vif_index) { found = true; break; @@ -503,28 +568,30 @@ static inline int rwnx_rx_csa_traffic_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_ps_change_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct mm_ps_change_ind *ind = (struct mm_ps_change_ind *)msg->param; struct rwnx_sta *sta = &rwnx_hw->sta_table[ind->sta_idx]; if (ind->sta_idx >= (NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX)) { - wiphy_err(rwnx_hw->wiphy, "Invalid sta index reported by fw %d\n", - ind->sta_idx); + wiphy_err(rwnx_hw->wiphy, + "Invalid sta index reported by fw %d\n", + ind->sta_idx); return 1; } netdev_dbg(rwnx_hw->vif_table[sta->vif_idx]->ndev, - "Sta %d, change PS mode to %s", sta->sta_idx, - ind->ps_state ? "ON" : "OFF"); + "Sta %d, change PS mode to %s", sta->sta_idx, + ind->ps_state ? "ON" : "OFF"); if (sta->valid) { rwnx_ps_bh_enable(rwnx_hw, sta, ind->ps_state); } else if (rwnx_hw->adding_sta) { sta->ps.active = ind->ps_state ? true : false; } else { - if (rwnx_hw->vif_table[sta->vif_idx] && rwnx_hw->vif_table[sta->vif_idx]->ndev) + if (rwnx_hw->vif_table[sta->vif_idx] && + rwnx_hw->vif_table[sta->vif_idx]->ndev) netdev_err(rwnx_hw->vif_table[sta->vif_idx]->ndev, "Ignore PS mode change on invalid sta\n"); } @@ -532,21 +599,21 @@ static inline int rwnx_rx_ps_change_ind(struct rwnx_hw *rwnx_hw, return 0; } - static inline int rwnx_rx_traffic_req_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mm_traffic_req_ind *ind = (struct mm_traffic_req_ind *)msg->param; + struct mm_traffic_req_ind *ind = + (struct mm_traffic_req_ind *)msg->param; struct rwnx_sta *sta = &rwnx_hw->sta_table[ind->sta_idx]; RWNX_DBG(RWNX_FN_ENTRY_STR); netdev_dbg(rwnx_hw->vif_table[sta->vif_idx]->ndev, - "Sta %d, asked for %d pkt", sta->sta_idx, ind->pkt_cnt); + "Sta %d, asked for %d pkt", sta->sta_idx, ind->pkt_cnt); rwnx_ps_bh_traffic_req(rwnx_hw, sta, ind->pkt_cnt, - ind->uapsd ? UAPSD_ID : LEGACY_PS_ID); + ind->uapsd ? UAPSD_ID : LEGACY_PS_ID); return 0; } @@ -585,16 +652,16 @@ static inline int rwnx_rx_scan_done_ind(struct rwnx_hw *rwnx_hw, #ifdef CONFIG_RWNX_FULLMAC extern uint8_t scanning; static inline int rwnx_rx_scanu_start_cfm(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { RWNX_DBG(RWNX_FN_ENTRY_STR); if (rwnx_hw->scan_request #ifdef CONFIG_SCHED_SCAN - && !rwnx_hw->is_sched_scan -#endif//CONFIG_SCHED_SCAN - ) { + && !rwnx_hw->is_sched_scan +#endif //CONFIG_SCHED_SCAN + ) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) struct cfg80211_scan_info info = { .aborted = false, @@ -607,19 +674,19 @@ static inline int rwnx_rx_scanu_start_cfm(struct rwnx_hw *rwnx_hw, } #ifdef CONFIG_SCHED_SCAN - if(rwnx_hw->is_sched_scan){ - + if (rwnx_hw->is_sched_scan) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) - AICWFDBG(LOGINFO, "%s cfg80211_sched_scan_results \r\n", __func__); - cfg80211_sched_scan_results(rwnx_hw->scan_request->wiphy, - rwnx_hw->sched_scan_req->reqid); + AICWFDBG(LOGINFO, "%s cfg80211_sched_scan_results \r\n", + __func__); + cfg80211_sched_scan_results(rwnx_hw->scan_request->wiphy, + rwnx_hw->sched_scan_req->reqid); #else - cfg80211_sched_scan_results(rwnx_hw->sched_scan_req->wiphy); -#endif - kfree(rwnx_hw->scan_request); - rwnx_hw->is_sched_scan = false; - } -#endif//CONFIG_SCHED_SCAN + cfg80211_sched_scan_results(rwnx_hw->sched_scan_req->wiphy); +#endif + kfree(rwnx_hw->scan_request); + rwnx_hw->is_sched_scan = false; + } +#endif //CONFIG_SCHED_SCAN rwnx_hw->scan_request = NULL; scanning = 0; @@ -628,8 +695,8 @@ static inline int rwnx_rx_scanu_start_cfm(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct cfg80211_bss *bss = NULL; struct ieee80211_channel *chan; @@ -645,10 +712,11 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, if (chan != NULL) { #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) - struct timespec ts; + struct timespec ts; get_monotonic_boottime(&ts); tsf = (u64)ts.tv_sec * 1000000 + div_u64(ts.tv_nsec, 1000); - mgmt->u.probe_resp.timestamp = ((u64)ts.tv_sec*1000000) + ts.tv_nsec/1000; + mgmt->u.probe_resp.timestamp = + ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; #elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) struct timespec ts; ts = ktime_to_timespec(ktime_get_boottime()); @@ -660,17 +728,19 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, tsf = (u64)ts.tv_sec * 1000000 + div_u64(ts.tv_nsec, 1000); mgmt->u.probe_resp.timestamp = tsf; #endif - ie = mgmt->u.probe_resp.variable; - ielen = len - offsetof(struct ieee80211_mgmt, u.probe_resp.variable); - beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int); - capability = le16_to_cpu(mgmt->u.probe_resp.capab_info); - /* framework use system bootup time */ - bss = cfg80211_inform_bss(rwnx_hw->wiphy, chan, + ie = mgmt->u.probe_resp.variable; + ielen = len - + offsetof(struct ieee80211_mgmt, u.probe_resp.variable); + beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int); + capability = le16_to_cpu(mgmt->u.probe_resp.capab_info); + /* framework use system bootup time */ + bss = cfg80211_inform_bss(rwnx_hw->wiphy, chan, #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0)) - CFG80211_BSS_FTYPE_UNKNOWN, + CFG80211_BSS_FTYPE_UNKNOWN, #endif - mgmt->bssid, tsf, capability, beacon_interval, - ie, ielen, ind->rssi * 100, GFP_ATOMIC); + mgmt->bssid, tsf, capability, + beacon_interval, ie, ielen, + ind->rssi * 100, GFP_ATOMIC); } if (bss != NULL) @@ -685,27 +755,30 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, **************************************************************************/ #ifdef CONFIG_RWNX_FULLMAC static inline int rwnx_rx_me_tkip_mic_failure_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct me_tkip_mic_failure_ind *ind = (struct me_tkip_mic_failure_ind *)msg->param; + struct me_tkip_mic_failure_ind *ind = + (struct me_tkip_mic_failure_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; struct net_device *dev = rwnx_vif->ndev; RWNX_DBG(RWNX_FN_ENTRY_STR); - cfg80211_michael_mic_failure(dev, (u8 *)&ind->addr, (ind->ga ? NL80211_KEYTYPE_GROUP : - NL80211_KEYTYPE_PAIRWISE), ind->keyid, - (u8 *)&ind->tsc, GFP_ATOMIC); + cfg80211_michael_mic_failure(dev, (u8 *)&ind->addr, + (ind->ga ? NL80211_KEYTYPE_GROUP : + NL80211_KEYTYPE_PAIRWISE), + ind->keyid, (u8 *)&ind->tsc, GFP_ATOMIC); return 0; } static inline int rwnx_rx_me_tx_credits_update_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct me_tx_credits_update_ind *ind = (struct me_tx_credits_update_ind *)msg->param; + struct me_tx_credits_update_ind *ind = + (struct me_tx_credits_update_ind *)msg->param; RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -720,8 +793,8 @@ static inline int rwnx_rx_me_tx_credits_update_ind(struct rwnx_hw *rwnx_hw, **************************************************************************/ #ifdef CONFIG_RWNX_FULLMAC static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct sm_connect_ind *ind = (struct sm_connect_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; @@ -730,9 +803,9 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, const u8 *extcap_ie; const struct ieee_types_extcap *extcap; struct ieee80211_channel *chan; - struct cfg80211_bss *bss = NULL; - struct wireless_dev *wdev = NULL; - int retry_counter = 10; + //struct cfg80211_bss *bss = NULL; + struct wireless_dev *wdev = NULL; + //int retry_counter = 10; RWNX_DBG(RWNX_FN_ENTRY_STR); wdev = dev->ieee80211_ptr; @@ -741,8 +814,9 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, req_ie = (const u8 *)ind->assoc_ie_buf; rsp_ie = req_ie + ind->assoc_req_ie_len; - // Fill-in the AP information - AICWFDBG(LOGINFO, "%s ind->status_code:%d \r\n", __func__, ind->status_code); + // Fill-in the AP information + AICWFDBG(LOGINFO, "%s ind->status_code:%d \r\n", __func__, + ind->status_code); if (ind->status_code == 0) { struct rwnx_sta *sta = &rwnx_hw->sta_table[ind->ap_idx]; @@ -758,20 +832,24 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, sta->acm = ind->acm; sta->ps.active = false; sta->aid = ind->aid; - sta->band = ind->band;//ind->chan.band; - sta->width = ind->width;//ind->chan.type; - sta->center_freq = ind->center_freq;//ind->chan.prim20_freq; - sta->center_freq1 = ind->center_freq1;//ind->chan.center1_freq; - sta->center_freq2 = ind->center_freq2;//ind->chan.center2_freq; + sta->band = ind->band; //ind->chan.band; + sta->width = ind->width; //ind->chan.type; + sta->center_freq = ind->center_freq; //ind->chan.prim20_freq; + sta->center_freq1 = ind->center_freq1; //ind->chan.center1_freq; + sta->center_freq2 = ind->center_freq2; //ind->chan.center2_freq; rwnx_vif->sta.ap = sta; - chan = ieee80211_get_channel(rwnx_hw->wiphy, ind->center_freq);//ind->chan.prim20_freq); + chan = ieee80211_get_channel( + rwnx_hw->wiphy, + ind->center_freq); //ind->chan.prim20_freq); cfg80211_chandef_create(&chandef, chan, NL80211_CHAN_NO_HT); if (!rwnx_hw->mod_params->ht_on) chandef.width = NL80211_CHAN_WIDTH_20_NOHT; else - chandef.width = chnl2bw[ind->width];//[ind->chan.type]; - chandef.center_freq1 = ind->center_freq1;//ind->chan.center1_freq; - chandef.center_freq2 = ind->center_freq2;//ind->chan.center2_freq; + chandef.width = chnl2bw[ind->width]; //[ind->chan.type]; + chandef.center_freq1 = + ind->center_freq1; //ind->chan.center1_freq; + chandef.center_freq2 = + ind->center_freq2; //ind->chan.center2_freq; rwnx_chanctx_link(rwnx_vif, ind->ch_idx, &chandef); memcpy(sta->mac_addr, ind->bssid.array, ETH_ALEN); if (ind->ch_idx == rwnx_hw->cur_chanctx) { @@ -788,12 +866,22 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, rwnx_mu_group_sta_init(sta, NULL); /* Look for TDLS Channel Switch Prohibited flag in the Extended Capability * Information Element*/ - extcap_ie = cfg80211_find_ie(WLAN_EID_EXT_CAPABILITY, rsp_ie, ind->assoc_rsp_ie_len); + extcap_ie = cfg80211_find_ie(WLAN_EID_EXT_CAPABILITY, rsp_ie, + ind->assoc_rsp_ie_len); if (extcap_ie && extcap_ie[1] >= 5) { extcap = (void *)(extcap_ie); - rwnx_vif->tdls_chsw_prohibited = extcap->ext_capab[4] & WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED; + rwnx_vif->tdls_chsw_prohibited = + extcap->ext_capab[4] & + WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED; } +#ifdef CONFIG_RADAR_OR_IR_DETECT + if (chan->flags & IEEE80211_CHAN_RADAR) + rwnx_radar_detection_enable(&rwnx_hw->radar, + RWNX_RADAR_DETECT_REPORT, + RWNX_RADAR_RIU); +#endif + if (rwnx_vif->wep_enabled) rwnx_vif->wep_auth_err = false; @@ -807,15 +895,17 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, do { /* Look for VHT Capability Information Element */ - vht_capa_ie = cfg80211_find_ie(WLAN_EID_VHT_CAPABILITY, rsp_ie, - ind->assoc_rsp_ie_len); + vht_capa_ie = cfg80211_find_ie( + WLAN_EID_VHT_CAPABILITY, rsp_ie, + ind->assoc_rsp_ie_len); /* Stop here if peer device does not support VHT */ if (!vht_capa_ie) { break; } - vht_cap = (const struct ieee80211_vht_cap *)(vht_capa_ie + 2); + vht_cap = (const struct ieee80211_vht_cap + *)(vht_capa_ie + 2); /* Send MM_BFMER_ENABLE_REQ message if needed */ rwnx_send_bfmer_enable(rwnx_hw, sta, vht_cap); @@ -828,7 +918,8 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, // monitor interface channel context is always the same as the STA interface. // This doesn't work with 2 STA interfaces but we don't want to support it. if (rwnx_hw->monitor_vif != RWNX_INVALID_VIF) { - struct rwnx_vif *rwnx_mon_vif = rwnx_hw->vif_table[rwnx_hw->monitor_vif]; + struct rwnx_vif *rwnx_mon_vif = + rwnx_hw->vif_table[rwnx_hw->monitor_vif]; rwnx_chanctx_unlink(rwnx_mon_vif); rwnx_chanctx_link(rwnx_mon_vif, ind->ch_idx, NULL); } @@ -837,183 +928,150 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, } else if (ind->status_code == WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG) { if (rwnx_vif->wep_enabled) { rwnx_vif->wep_auth_err = true; - AICWFDBG(LOGINFO, "con ind wep_auth_err %d\n", rwnx_vif->wep_auth_err); + AICWFDBG(LOGINFO, "con ind wep_auth_err %d\n", + rwnx_vif->wep_auth_err); } - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); - }else{ - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_DISCONNECTED); + } else { + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_DISCONNECTED); } - AICWFDBG(LOGINFO, "%s ind->roamed:%d ind->status_code:%d rwnx_vif->drv_conn_state:%d\r\n", - __func__, - ind->roamed, - ind->status_code, - (int)atomic_read(&rwnx_vif->drv_conn_state)); + AICWFDBG( + LOGINFO, + "%s ind->roamed:%d ind->status_code:%d rwnx_vif->drv_conn_state:%d\r\n", + __func__, ind->roamed, ind->status_code, + (int)atomic_read(&rwnx_vif->drv_conn_state)); - do { - bss = cfg80211_get_bss(wdev->wiphy, NULL, rwnx_vif->sta.bssid, -#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - wdev->u.client.ssid, wdev->u.client.ssid_len, -#else - wdev->ssid, wdev->ssid_len, -#endif + if (ind->status_code == 0 && + (int)atomic_read(&rwnx_vif->drv_conn_state) == + RWNX_DRV_STATUS_DISCONNECTING) { + AICWFDBG( + LOGINFO, + "%s the disconnection has been requested, return it\r\n", + __func__); + goto exit; + } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) - wdev->conn_bss_type, - IEEE80211_PRIVACY_ANY); -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS, - IEEE80211_PRIVACY_ANY); -#else - WLAN_CAPABILITY_ESS, - WLAN_CAPABILITY_PRIVACY); -#endif - - - if (!bss) { - printk("%s bss is NULL \r\n", __func__); - - printk("%s bss ssid(%d):%s conn_bss_type:%d bss2 ssid(%d):%s conn_bss_type:%d\r\n", - __func__, - (int)rwnx_vif->sta.ssid_len, - rwnx_vif->sta.ssid, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS, -#else - WLAN_CAPABILITY_ESS, -#endif -#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - (int)wdev->u.client.ssid_len, - wdev->u.client.ssid, -#else - (int)wdev->ssid_len, - wdev->ssid, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) - wdev->conn_bss_type -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS -#else - WLAN_CAPABILITY_ESS -#endif - ); - - - printk("%s rwnx_vif->sta.bssid %02x %02x %02x %02x %02x %02x \r\n", __func__, - rwnx_vif->sta.bssid[0], rwnx_vif->sta.bssid[1], rwnx_vif->sta.bssid[2], - rwnx_vif->sta.bssid[3], rwnx_vif->sta.bssid[4], rwnx_vif->sta.bssid[5]); - -#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - wdev->u.client.ssid_len = (int)rwnx_vif->sta.ssid_len; - memcpy(wdev->u.client.ssid, rwnx_vif->sta.ssid, wdev->u.client.ssid_len); -#else - wdev->ssid_len = (int)rwnx_vif->sta.ssid_len; - memcpy(wdev->ssid, rwnx_vif->sta.ssid, wdev->ssid_len); -#endif - msleep(100); - retry_counter--; - if(retry_counter == 0){ - printk("%s bss recover fail \r\n", __func__); - break; - } - } - } while (!bss); - - if (!ind->roamed){//not roaming - cfg80211_connect_result(dev, (const u8 *)ind->bssid.array, req_ie, - ind->assoc_req_ie_len, rsp_ie, - ind->assoc_rsp_ie_len, ind->status_code, - GFP_ATOMIC); + if (!ind->roamed) { //not roaming + cfg80211_connect_result(dev, (const u8 *)ind->bssid.array, + req_ie, ind->assoc_req_ie_len, rsp_ie, + ind->assoc_rsp_ie_len, ind->status_code, + GFP_ATOMIC); if (ind->status_code == 0) { - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_CONNECTED); + AICWFDBG( + LOGINFO, + "%s cfg80211_connect_result pass, rwnx_vif->drv_conn_state:%d\r\n", + __func__, + (int)atomic_read(&rwnx_vif->drv_conn_state)); } else { - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_DISCONNECTED); rwnx_external_auth_disable(rwnx_vif); } - AICWFDBG(LOGINFO, "%s cfg80211_connect_result pass, rwnx_vif->drv_conn_state:%d\r\n", - __func__, - (int)atomic_read(&rwnx_vif->drv_conn_state)); - }else {//roaming - if(ind->status_code != 0){ - AICWFDBG(LOGINFO, "%s roaming fail to notify disconnect \r\n", __func__); - cfg80211_disconnected(dev, 0, NULL, 0,1, GFP_ATOMIC); - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); - rwnx_external_auth_disable(rwnx_vif); - }else{ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) - struct cfg80211_roam_info info; - memset(&info, 0, sizeof(info)); -#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - if (rwnx_vif->ch_index < NX_CHAN_CTXT_CNT) - info.links[0].channel = rwnx_hw->chanctx_table[rwnx_vif->ch_index].chan_def.chan; - info.links[0].bssid = (const u8 *)ind->bssid.array; -#else - if (rwnx_vif->ch_index < NX_CHAN_CTXT_CNT) - info.channel = rwnx_hw->chanctx_table[rwnx_vif->ch_index].chan_def.chan; - info.bssid = (const u8 *)ind->bssid.array; -#endif - info.req_ie = req_ie; - info.req_ie_len = ind->assoc_req_ie_len; - info.resp_ie = rsp_ie; - info.resp_ie_len = ind->assoc_rsp_ie_len; - cfg80211_roamed(dev, &info, GFP_ATOMIC); - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); -#else - chan = ieee80211_get_channel(rwnx_hw->wiphy, ind->center_freq); - cfg80211_roamed(dev -#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) - , chan -#endif - , (const u8 *)ind->bssid.array - , req_ie - , ind->assoc_req_ie_len - , rsp_ie - , ind->assoc_rsp_ie_len - , GFP_ATOMIC); -#endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)*/ - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); - } - } - netif_tx_start_all_queues(dev); - netif_carrier_on(dev); + } else { //roaming + if (ind->status_code != 0) { + AICWFDBG(LOGINFO, + "%s roaming fail to notify disconnect \r\n", + __func__); + cfg80211_disconnected(dev, 0, NULL, 0, 1, GFP_ATOMIC); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_external_auth_disable(rwnx_vif); + } else { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) + struct cfg80211_roam_info info; + memset(&info, 0, sizeof(info)); +#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION + if (rwnx_vif->ch_index < NX_CHAN_CTXT_CNT) + info.links[0].channel = + rwnx_hw->chanctx_table[rwnx_vif->ch_index] + .chan_def.chan; + info.links[0].bssid = (const u8 *)ind->bssid.array; +#else + if (rwnx_vif->ch_index < NX_CHAN_CTXT_CNT) + info.channel = + rwnx_hw->chanctx_table[rwnx_vif->ch_index] + .chan_def.chan; + info.bssid = (const u8 *)ind->bssid.array; +#endif + info.req_ie = req_ie; + info.req_ie_len = ind->assoc_req_ie_len; + info.resp_ie = rsp_ie; + info.resp_ie_len = ind->assoc_rsp_ie_len; + cfg80211_roamed(dev, &info, GFP_ATOMIC); +#else + chan = ieee80211_get_channel(rwnx_hw->wiphy, + ind->center_freq); + cfg80211_roamed(dev +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || \ + defined(COMPAT_KERNEL_RELEASE) + , + chan +#endif + , + (const u8 *)ind->bssid.array, req_ie, + ind->assoc_req_ie_len, rsp_ie, + ind->assoc_rsp_ie_len, GFP_ATOMIC); + +#endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)*/ + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_CONNECTED); + } + rwnx_vif->sta.is_roam = false; + } + + if (ind->status_code == 0) { + netif_tx_start_all_queues(dev); + netif_carrier_on(dev); + } + +exit: + rwnx_vif->sta.is_roam = false; return 0; } -void rwnx_cfg80211_unlink_bss(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif){ +void rwnx_cfg80211_unlink_bss(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif) +{ struct wiphy *wiphy = rwnx_hw->wiphy; struct cfg80211_bss *bss = NULL; RWNX_DBG(RWNX_FN_ENTRY_STR); - bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/, - rwnx_vif->sta.bssid, rwnx_vif->sta.ssid, - rwnx_vif->sta.ssid_len, + bss = cfg80211_get_bss(wiphy, NULL /*notify_channel*/, + rwnx_vif->sta.bssid, rwnx_vif->sta.ssid, + rwnx_vif->sta.ssid_len, #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS, - IEEE80211_PRIVACY(true));//temp set true + IEEE80211_BSS_TYPE_ESS, + IEEE80211_PRIVACY(true)); //temp set true #else - WLAN_CAPABILITY_ESS, - WLAN_CAPABILITY_ESS); + WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); #endif if (bss) { cfg80211_unlink_bss(wiphy, bss); - AICWFDBG(LOGINFO, "%s(): cfg80211_unlink %s!!\n", __func__, rwnx_vif->sta.ssid); + AICWFDBG(LOGINFO, "%s(): cfg80211_unlink %s!!\n", __func__, + rwnx_vif->sta.ssid); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) cfg80211_put_bss(wiphy, bss); #else cfg80211_put_bss(bss); #endif - }else{ - AICWFDBG(LOGINFO, "%s(): cfg80211_unlink error %s!!\n", __func__, rwnx_vif->sta.ssid); + } else { + AICWFDBG(LOGINFO, "%s(): cfg80211_unlink error %s!!\n", + __func__, rwnx_vif->sta.ssid); } } extern u8 dhcped; static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct sm_disconnect_ind *ind = (struct sm_disconnect_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; @@ -1024,29 +1082,39 @@ static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, struct aicwf_rx_priv *rx_priv; #endif - RWNX_DBG(RWNX_FN_ENTRY_STR); - if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTED){ - AICWFDBG(LOGINFO, "%s, is already disconnected, drop disconnect ind", __func__); + //RWNX_DBG(RWNX_FN_ENTRY_STR); + AICWFDBG(LOGINFO, "%s reason code:%d \r\n", __func__, ind->reason_code); + + if ((int)atomic_read(&rwnx_vif->drv_conn_state) == + (int)RWNX_DRV_STATUS_DISCONNECTED) { + AICWFDBG(LOGINFO, + "%s, is already disconnected, drop disconnect ind", + __func__); return 0; } dhcped = 0; - if(!rwnx_vif) + if (!rwnx_vif) return 0; dev = rwnx_vif->ndev; if (rwnx_vif->sta.is_roam == false) { rwnx_cfg80211_unlink_bss(rwnx_hw, rwnx_vif); } else { - AICWFDBG(LOGINFO, "%s roaming no rwnx_cfg80211_unlink_bss \r\n", __func__); + AICWFDBG(LOGINFO, "%s roaming no rwnx_cfg80211_unlink_bss \r\n", + __func__); } - #ifdef CONFIG_BR_SUPPORT - struct rwnx_vif *vif = netdev_priv(dev); - /* clear bridge database */ - nat25_db_cleanup(rwnx_vif); - #endif /* CONFIG_BR_SUPPORT */ +#ifdef CONFIG_DEBUG_FS + rwnx_dbgfs_unregister_rc_stat(rwnx_hw, rwnx_vif->sta.ap); +#endif + +#ifdef CONFIG_BR_SUPPORT + struct rwnx_vif *vif = netdev_priv(dev); + /* clear bridge database */ + nat25_db_cleanup(rwnx_vif); +#endif /* CONFIG_BR_SUPPORT */ if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) rwnx_hw->is_p2p_connected = 0; @@ -1054,7 +1122,8 @@ static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, if (rwnx_vif->up) { if (!ind->ft_over_ds && !ind->reassoc) { cfg80211_disconnected(dev, ind->reason_code, NULL, 0, - (ind->reason_code < 1), GFP_ATOMIC); + (ind->reason_code < 1), + GFP_ATOMIC); } netif_tx_stop_all_queues(dev); netif_carrier_off(dev); @@ -1071,50 +1140,62 @@ static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, #else rx_priv = rwnx_hw->usbdev->rx_priv; #endif - if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) { - macaddr = (u8*)rwnx_vif->ndev->dev_addr; - printk("deinit:macaddr:%x,%x,%x,%x,%x,%x\r\n", macaddr[0], macaddr[1], macaddr[2], \ - macaddr[3], macaddr[4], macaddr[5]); + if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) { + macaddr = (u8 *)rwnx_vif->ndev->dev_addr; + printk("deinit:macaddr:%x,%x,%x,%x,%x,%x\r\n", macaddr[0], + macaddr[1], macaddr[2], macaddr[3], macaddr[4], + macaddr[5]); //spin_lock_bh(&rx_priv->stas_reord_lock); - list_for_each_entry_safe(reord_info, tmp, &rx_priv->stas_reord_list, list) { - macaddr = (u8*)rwnx_vif->ndev->dev_addr; - printk("reord_mac:%x,%x,%x,%x,%x,%x\r\n", reord_info->mac_addr[0], reord_info->mac_addr[1], reord_info->mac_addr[2], \ - reord_info->mac_addr[3], reord_info->mac_addr[4], reord_info->mac_addr[5]); + list_for_each_entry_safe (reord_info, tmp, + &rx_priv->stas_reord_list, list) { + macaddr = (u8 *)rwnx_vif->ndev->dev_addr; + printk("reord_mac:%x,%x,%x,%x,%x,%x\r\n", + reord_info->mac_addr[0], reord_info->mac_addr[1], + reord_info->mac_addr[2], reord_info->mac_addr[3], + reord_info->mac_addr[4], + reord_info->mac_addr[5]); if (!memcmp(reord_info->mac_addr, macaddr, 6)) { reord_deinit_sta(rx_priv, reord_info); break; } } //spin_unlock_bh(&rx_priv->stas_reord_lock); - } else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) { - BUG();//should be not here: del_sta function + } else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) { + BUG(); //should be not here: del_sta function } #endif rwnx_txq_sta_deinit(rwnx_hw, rwnx_vif->sta.ap); rwnx_txq_tdls_vif_deinit(rwnx_vif); - #if 0 +#if 0 rwnx_dbgfs_unregister_rc_stat(rwnx_hw, rwnx_vif->sta.ap); - #endif +#endif rwnx_vif->sta.ap->valid = false; rwnx_vif->sta.ap = NULL; rwnx_external_auth_disable(rwnx_vif); rwnx_chanctx_unlink(rwnx_vif); - + //msleep(200); - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + if (rwnx_vif->sta.is_roam == false) { + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, + (int)RWNX_DRV_STATUS_DISCONNECTED); + } + return 0; } static inline int rwnx_rx_sm_external_auth_required_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { struct sm_external_auth_required_ind *ind = (struct sm_external_auth_required_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || defined(CONFIG_WPA3_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) || \ + defined(CONFIG_WPA3_FOR_OLD_KERNEL) struct net_device *dev = rwnx_vif->ndev; struct cfg80211_external_auth_params params; int ret = 0; @@ -1123,60 +1204,64 @@ static inline int rwnx_rx_sm_external_auth_required_ind(struct rwnx_hw *rwnx_hw, RWNX_DBG(RWNX_FN_ENTRY_STR); + memset((void *)¶ms, 0, + sizeof(struct cfg80211_external_auth_params)); + params.action = NL80211_EXTERNAL_AUTH_START; memcpy(params.bssid, ind->bssid.array, ETH_ALEN); params.ssid.ssid_len = ind->ssid.length; memcpy(params.ssid.ssid, ind->ssid.array, - min_t(size_t, ind->ssid.length, sizeof(params.ssid.ssid))); + min_t(size_t, ind->ssid.length, sizeof(params.ssid.ssid))); params.key_mgmt_suite = ind->akm; while (wdev->conn_owner_nlportid == 0) { - AICWFDBG(LOGINFO, "%s WARNING conn_owner_nlportid = 0, msleep 100ms.\r\n", __func__); + AICWFDBG( + LOGINFO, + "%s WARNING conn_owner_nlportid = 0, msleep 100ms.\r\n", + __func__); msleep(100); retry_counter--; if (retry_counter == 0) { break; } } - AICWFDBG(LOGINFO, "%s wdev->conn_owner_nlportid:%d \r\n", __func__, (int)wdev->conn_owner_nlportid); - - if (wdev->conn_owner_nlportid != 0) { - rwnx_vif->sta.conn_owner_nlportid = wdev->conn_owner_nlportid; - } else { - AICWFDBG(LOGINFO, "%s try to recover conn_owner_nlportid\r\n", __func__); - wdev->conn_owner_nlportid = rwnx_vif->sta.conn_owner_nlportid; - } + AICWFDBG(LOGINFO, "%s wdev->conn_owner_nlportid:%d \r\n", __func__, + (int)wdev->conn_owner_nlportid); if ((ind->vif_idx > NX_VIRT_DEV_MAX) || !rwnx_vif->up || - (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_STATION) || - (ret = cfg80211_external_auth_request(dev, ¶ms, GFP_ATOMIC))) { - wiphy_err(rwnx_hw->wiphy, "Failed to start external auth on vif %d, rwnx_vif->up %d, iftype:%d, ret %d", - ind->vif_idx, rwnx_vif->up, RWNX_VIF_TYPE(rwnx_vif), ret); - rwnx_send_sm_external_auth_required_rsp(rwnx_hw, rwnx_vif, - WLAN_STATUS_UNSPECIFIED_FAILURE); + (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_STATION) || + (ret = cfg80211_external_auth_request(dev, ¶ms, GFP_ATOMIC))) { + wiphy_err( + rwnx_hw->wiphy, + "Failed to start external auth on vif %d, rwnx_vif->up %d, iftype:%d, ret %d", + ind->vif_idx, rwnx_vif->up, RWNX_VIF_TYPE(rwnx_vif), + ret); + rwnx_send_sm_external_auth_required_rsp( + rwnx_hw, rwnx_vif, WLAN_STATUS_UNSPECIFIED_FAILURE); return 0; } rwnx_external_auth_enable(rwnx_vif); #else - rwnx_send_sm_external_auth_required_rsp(rwnx_hw, rwnx_vif, - WLAN_STATUS_UNSPECIFIED_FAILURE); + rwnx_send_sm_external_auth_required_rsp( + rwnx_hw, rwnx_vif, WLAN_STATUS_UNSPECIFIED_FAILURE); #endif return 0; } - static inline int rwnx_rx_mesh_path_create_cfm(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mesh_path_create_cfm *cfm = (struct mesh_path_create_cfm *)msg->param; + struct mesh_path_create_cfm *cfm = + (struct mesh_path_create_cfm *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[cfm->vif_idx]; RWNX_DBG(RWNX_FN_ENTRY_STR); /* Check we well have a Mesh Point Interface */ - if (rwnx_vif && (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MESH_POINT)) { + if (rwnx_vif && + (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MESH_POINT)) { rwnx_vif->ap.create_path = false; } @@ -1184,18 +1269,20 @@ static inline int rwnx_rx_mesh_path_create_cfm(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_mesh_peer_update_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mesh_peer_update_ind *ind = (struct mesh_peer_update_ind *)msg->param; + struct mesh_peer_update_ind *ind = + (struct mesh_peer_update_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; struct rwnx_sta *rwnx_sta = &rwnx_hw->sta_table[ind->sta_idx]; RWNX_DBG(RWNX_FN_ENTRY_STR); if ((ind->vif_idx >= (NX_VIRT_DEV_MAX + NX_REMOTE_STA_MAX)) || - (rwnx_vif && (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT)) || - (ind->sta_idx >= NX_REMOTE_STA_MAX)) + (rwnx_vif && + (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT)) || + (ind->sta_idx >= NX_REMOTE_STA_MAX)) return 1; /* Check we well have a Mesh Point Interface */ @@ -1214,13 +1301,16 @@ static inline int rwnx_rx_mesh_peer_update_ind(struct rwnx_hw *rwnx_hw, rwnx_sta->qos = true; rwnx_sta->aid = ind->sta_idx + 1; //rwnx_sta->acm = ind->acm; - memcpy(rwnx_sta->mac_addr, ind->peer_addr.array, ETH_ALEN); + memcpy(rwnx_sta->mac_addr, ind->peer_addr.array, + ETH_ALEN); - rwnx_chanctx_link(rwnx_vif, rwnx_sta->ch_idx, NULL); + rwnx_chanctx_link(rwnx_vif, rwnx_sta->ch_idx, + NULL); /* Add the station in the list of VIF's stations */ INIT_LIST_HEAD(&rwnx_sta->list); - list_add_tail(&rwnx_sta->list, &rwnx_vif->ap.sta_list); + list_add_tail(&rwnx_sta->list, + &rwnx_vif->ap.sta_list); /* Initialize the TX queues */ if (rwnx_sta->ch_idx == rwnx_hw->cur_chanctx) { @@ -1229,14 +1319,16 @@ static inline int rwnx_rx_mesh_peer_update_ind(struct rwnx_hw *rwnx_hw, txq_status = RWNX_TXQ_STOP_CHAN; } - rwnx_txq_sta_init(rwnx_hw, rwnx_sta, txq_status); + rwnx_txq_sta_init(rwnx_hw, rwnx_sta, + txq_status); #ifdef CONFIG_DEBUG_FS rwnx_dbgfs_register_rc_stat(rwnx_hw, rwnx_sta); #endif #ifdef CONFIG_RWNX_BFMER // TODO: update indication to contains vht capabilties if (rwnx_hw->mod_params->bfmer) - rwnx_send_bfmer_enable(rwnx_hw, rwnx_sta, NULL); + rwnx_send_bfmer_enable(rwnx_hw, + rwnx_sta, NULL); rwnx_mu_group_sta_init(rwnx_sta, NULL); #endif /* CONFIG_RWNX_BFMER */ @@ -1254,7 +1346,8 @@ static inline int rwnx_rx_mesh_peer_update_ind(struct rwnx_hw *rwnx_hw, rwnx_txq_sta_deinit(rwnx_hw, rwnx_sta); #ifdef CONFIG_DEBUG_FS - rwnx_dbgfs_unregister_rc_stat(rwnx_hw, rwnx_sta); + rwnx_dbgfs_unregister_rc_stat(rwnx_hw, + rwnx_sta); #endif } else { WARN_ON(0); @@ -1283,10 +1376,11 @@ static inline int rwnx_rx_mesh_peer_update_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_mesh_path_update_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mesh_path_update_ind *ind = (struct mesh_path_update_ind *)msg->param; + struct mesh_path_update_ind *ind = + (struct mesh_path_update_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; struct rwnx_mesh_path *mesh_path; bool found = false; @@ -1300,7 +1394,7 @@ static inline int rwnx_rx_mesh_path_update_ind(struct rwnx_hw *rwnx_hw, return 0; /* Look for path with provided target address */ - list_for_each_entry(mesh_path, &rwnx_vif->ap.mpath_list, list) { + list_for_each_entry (mesh_path, &rwnx_vif->ap.mpath_list, list) { if (mesh_path->path_idx == ind->path_idx) { found = true; break; @@ -1321,23 +1415,28 @@ static inline int rwnx_rx_mesh_path_update_ind(struct rwnx_hw *rwnx_hw, } else { if (found) { // Update the Next Hop STA - mesh_path->p_nhop_sta = &rwnx_hw->sta_table[ind->nhop_sta_idx]; + mesh_path->p_nhop_sta = + &rwnx_hw->sta_table[ind->nhop_sta_idx]; #ifdef CREATE_TRACE_POINTS trace_mesh_update_path(mesh_path); #endif } else { // Allocate a Mesh Path structure - mesh_path = (struct rwnx_mesh_path *)kmalloc(sizeof(struct rwnx_mesh_path), GFP_ATOMIC); + mesh_path = (struct rwnx_mesh_path *)kmalloc( + sizeof(struct rwnx_mesh_path), GFP_ATOMIC); if (mesh_path) { INIT_LIST_HEAD(&mesh_path->list); mesh_path->path_idx = ind->path_idx; - mesh_path->p_nhop_sta = &rwnx_hw->sta_table[ind->nhop_sta_idx]; - memcpy(&mesh_path->tgt_mac_addr, &ind->tgt_mac_addr, MAC_ADDR_LEN); + mesh_path->p_nhop_sta = + &rwnx_hw->sta_table[ind->nhop_sta_idx]; + memcpy(&mesh_path->tgt_mac_addr, + &ind->tgt_mac_addr, MAC_ADDR_LEN); // Insert the path in the list of path - list_add_tail(&mesh_path->list, &rwnx_vif->ap.mpath_list); + list_add_tail(&mesh_path->list, + &rwnx_vif->ap.mpath_list); #ifdef CREATE_TRACE_POINTS trace_mesh_create_path(mesh_path); #endif @@ -1349,10 +1448,11 @@ static inline int rwnx_rx_mesh_path_update_ind(struct rwnx_hw *rwnx_hw, } static inline int rwnx_rx_mesh_proxy_update_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - struct mesh_proxy_update_ind *ind = (struct mesh_proxy_update_ind *)msg->param; + struct mesh_proxy_update_ind *ind = + (struct mesh_proxy_update_ind *)msg->param; struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[ind->vif_idx]; struct rwnx_mesh_proxy *mesh_proxy; bool found = false; @@ -1366,34 +1466,38 @@ static inline int rwnx_rx_mesh_proxy_update_ind(struct rwnx_hw *rwnx_hw, return 0; /* Look for path with provided external STA address */ - list_for_each_entry(mesh_proxy, &rwnx_vif->ap.proxy_list, list) { - if (!memcmp(&ind->ext_sta_addr, &mesh_proxy->ext_sta_addr, ETH_ALEN)) { + list_for_each_entry (mesh_proxy, &rwnx_vif->ap.proxy_list, list) { + if (!memcmp(&ind->ext_sta_addr, &mesh_proxy->ext_sta_addr, + ETH_ALEN)) { found = true; break; } } - if (ind->delete && found) { + if (ind->delete &&found) { /* Delete mesh path */ list_del_init(&mesh_proxy->list); kfree(mesh_proxy); - } else if (!ind->delete && !found) { + } else if (!ind->delete &&!found) { /* Allocate a Mesh Path structure */ - mesh_proxy = (struct rwnx_mesh_proxy *)kmalloc(sizeof(*mesh_proxy), - GFP_ATOMIC); + mesh_proxy = (struct rwnx_mesh_proxy *)kmalloc( + sizeof(*mesh_proxy), GFP_ATOMIC); if (mesh_proxy) { INIT_LIST_HEAD(&mesh_proxy->list); - memcpy(&mesh_proxy->ext_sta_addr, &ind->ext_sta_addr, MAC_ADDR_LEN); + memcpy(&mesh_proxy->ext_sta_addr, &ind->ext_sta_addr, + MAC_ADDR_LEN); mesh_proxy->local = ind->local; if (!ind->local) { - memcpy(&mesh_proxy->proxy_addr, &ind->proxy_mac_addr, MAC_ADDR_LEN); + memcpy(&mesh_proxy->proxy_addr, + &ind->proxy_mac_addr, MAC_ADDR_LEN); } /* Insert the path in the list of path */ - list_add_tail(&mesh_proxy->list, &rwnx_vif->ap.proxy_list); + list_add_tail(&mesh_proxy->list, + &rwnx_vif->ap.proxy_list); } } @@ -1405,13 +1509,12 @@ static inline int rwnx_rx_mesh_proxy_update_ind(struct rwnx_hw *rwnx_hw, * Messages from APM task **************************************************************************/ - /*************************************************************************** * Messages from DEBUG task **************************************************************************/ static inline int rwnx_rx_dbg_error_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -1420,46 +1523,49 @@ static inline int rwnx_rx_dbg_error_ind(struct rwnx_hw *rwnx_hw, #ifdef CONFIG_MCU_MESSAGE static inline int rwnx_rx_dbg_custmsg_ind(struct rwnx_hw *rwnx_hw, - struct rwnx_cmd *cmd, - struct ipc_e2a_msg *msg) + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) { - dbg_custom_msg_ind_t * ind; - char str_msg[32 + 1]; - int str_len; - RWNX_DBG(RWNX_FN_ENTRY_STR); + dbg_custom_msg_ind_t *ind; + char str_msg[32 + 1]; + int str_len; + RWNX_DBG(RWNX_FN_ENTRY_STR); - ind = (dbg_custom_msg_ind_t *)msg->param; - str_len = (ind->len < 32) ? ind->len : 32; - memcpy(str_msg, (char *)ind->buf, str_len); - str_msg[str_len] = '\0'; - printk("CustMsgInd: cmd=0x%x, len=%d, str=%s\r\n", ind->cmd, ind->len, str_msg); + ind = (dbg_custom_msg_ind_t *)msg->param; + str_len = (ind->len < 32) ? ind->len : 32; + memcpy(str_msg, (char *)ind->buf, str_len); + str_msg[str_len] = '\0'; + printk("CustMsgInd: cmd=0x%x, len=%d, str=%s\r\n", ind->cmd, ind->len, + str_msg); - return 0; + return 0; } #endif #ifdef CONFIG_RWNX_FULLMAC static msg_cb_fct mm_hdlrs[MSG_I(MM_MAX)] = { - [MSG_I(MM_CHANNEL_SWITCH_IND)] = rwnx_rx_chan_switch_ind, + [MSG_I(MM_CHANNEL_SWITCH_IND)] = rwnx_rx_chan_switch_ind, [MSG_I(MM_CHANNEL_PRE_SWITCH_IND)] = rwnx_rx_chan_pre_switch_ind, - [MSG_I(MM_REMAIN_ON_CHANNEL_EXP_IND)] = rwnx_rx_remain_on_channel_exp_ind, - [MSG_I(MM_PS_CHANGE_IND)] = rwnx_rx_ps_change_ind, - [MSG_I(MM_TRAFFIC_REQ_IND)] = rwnx_rx_traffic_req_ind, - [MSG_I(MM_P2P_VIF_PS_CHANGE_IND)] = rwnx_rx_p2p_vif_ps_change_ind, - [MSG_I(MM_CSA_COUNTER_IND)] = rwnx_rx_csa_counter_ind, - [MSG_I(MM_CSA_FINISH_IND)] = rwnx_rx_csa_finish_ind, - [MSG_I(MM_CSA_TRAFFIC_IND)] = rwnx_rx_csa_traffic_ind, - [MSG_I(MM_CHANNEL_SURVEY_IND)] = rwnx_rx_channel_survey_ind, - [MSG_I(MM_P2P_NOA_UPD_IND)] = rwnx_rx_p2p_noa_upd_ind, - [MSG_I(MM_RSSI_STATUS_IND)] = rwnx_rx_rssi_status_ind, - [MSG_I(MM_PKTLOSS_IND)] = rwnx_rx_pktloss_notify_ind, - [MSG_I(MM_APM_STALOSS_IND)] = rwnx_apm_staloss_ind, + [MSG_I(MM_REMAIN_ON_CHANNEL_EXP_IND)] = + rwnx_rx_remain_on_channel_exp_ind, + [MSG_I(MM_PS_CHANGE_IND)] = rwnx_rx_ps_change_ind, + [MSG_I(MM_TRAFFIC_REQ_IND)] = rwnx_rx_traffic_req_ind, + [MSG_I(MM_P2P_VIF_PS_CHANGE_IND)] = rwnx_rx_p2p_vif_ps_change_ind, + [MSG_I(MM_CSA_COUNTER_IND)] = rwnx_rx_csa_counter_ind, + [MSG_I(MM_CSA_FINISH_IND)] = rwnx_rx_csa_finish_ind, + [MSG_I(MM_CSA_TRAFFIC_IND)] = rwnx_rx_csa_traffic_ind, + [MSG_I(MM_CHANNEL_SURVEY_IND)] = rwnx_rx_channel_survey_ind, + [MSG_I(MM_P2P_NOA_UPD_IND)] = rwnx_rx_p2p_noa_upd_ind, + [MSG_I(MM_RSSI_STATUS_IND)] = rwnx_rx_rssi_status_ind, + [MSG_I(MM_PKTLOSS_IND)] = rwnx_rx_pktloss_notify_ind, + [MSG_I(MM_APM_STALOSS_IND)] = rwnx_apm_staloss_ind, + [MSG_I(MM_RADAR_DETECT_IND)] = rwnx_radar_detect_ind, }; static msg_cb_fct scan_hdlrs[MSG_I(SCANU_MAX)] = { - [MSG_I(SCANU_START_CFM)] = rwnx_rx_scanu_start_cfm, - [MSG_I(SCANU_RESULT_IND)] = rwnx_rx_scanu_result_ind, + [MSG_I(SCANU_START_CFM)] = rwnx_rx_scanu_start_cfm, + [MSG_I(SCANU_RESULT_IND)] = rwnx_rx_scanu_result_ind, }; static msg_cb_fct me_hdlrs[MSG_I(ME_MAX)] = { @@ -1468,27 +1574,27 @@ static msg_cb_fct me_hdlrs[MSG_I(ME_MAX)] = { }; static msg_cb_fct sm_hdlrs[MSG_I(SM_MAX)] = { - [MSG_I(SM_CONNECT_IND)] = rwnx_rx_sm_connect_ind, + [MSG_I(SM_CONNECT_IND)] = rwnx_rx_sm_connect_ind, [MSG_I(SM_DISCONNECT_IND)] = rwnx_rx_sm_disconnect_ind, - [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_IND)] = rwnx_rx_sm_external_auth_required_ind, + [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_IND)] = + rwnx_rx_sm_external_auth_required_ind, }; -static msg_cb_fct apm_hdlrs[MSG_I(APM_MAX)] = { -}; +static msg_cb_fct apm_hdlrs[MSG_I(APM_MAX)] = {}; static msg_cb_fct mesh_hdlrs[MSG_I(MESH_MAX)] = { - [MSG_I(MESH_PATH_CREATE_CFM)] = rwnx_rx_mesh_path_create_cfm, - [MSG_I(MESH_PEER_UPDATE_IND)] = rwnx_rx_mesh_peer_update_ind, - [MSG_I(MESH_PATH_UPDATE_IND)] = rwnx_rx_mesh_path_update_ind, + [MSG_I(MESH_PATH_CREATE_CFM)] = rwnx_rx_mesh_path_create_cfm, + [MSG_I(MESH_PEER_UPDATE_IND)] = rwnx_rx_mesh_peer_update_ind, + [MSG_I(MESH_PATH_UPDATE_IND)] = rwnx_rx_mesh_path_update_ind, [MSG_I(MESH_PROXY_UPDATE_IND)] = rwnx_rx_mesh_proxy_update_ind, }; #endif /* CONFIG_RWNX_FULLMAC */ static msg_cb_fct dbg_hdlrs[MSG_I(DBG_MAX)] = { - [MSG_I(DBG_ERROR_IND)] = rwnx_rx_dbg_error_ind, + [MSG_I(DBG_ERROR_IND)] = rwnx_rx_dbg_error_ind, #ifdef CONFIG_MCU_MESSAGE - [MSG_I(DBG_CUSTOM_MSG_IND)] = rwnx_rx_dbg_custmsg_ind, + [MSG_I(DBG_CUSTOM_MSG_IND)] = rwnx_rx_dbg_custmsg_ind, #endif }; @@ -1498,20 +1604,16 @@ static msg_cb_fct tdls_hdlrs[MSG_I(TDLS_MAX)] = { [MSG_I(TDLS_CHAN_SWITCH_BASE_IND)] = rwnx_rx_tdls_chan_switch_base_ind, [MSG_I(TDLS_PEER_PS_IND)] = rwnx_rx_tdls_peer_ps_ind, #ifdef CONFIG_SDIO_BT - [MSG_I(TDLS_SDIO_BT_RECV_IND)] = rwnx_bt_recv_ind, + [MSG_I(TDLS_SDIO_BT_RECV_IND)] = rwnx_bt_recv_ind, #endif }; static msg_cb_fct *msg_hdlrs[] = { - [TASK_MM] = mm_hdlrs, - [TASK_DBG] = dbg_hdlrs, + [TASK_MM] = mm_hdlrs, [TASK_DBG] = dbg_hdlrs, #ifdef CONFIG_RWNX_FULLMAC - [TASK_TDLS] = tdls_hdlrs, - [TASK_SCANU] = scan_hdlrs, - [TASK_ME] = me_hdlrs, - [TASK_SM] = sm_hdlrs, - [TASK_APM] = apm_hdlrs, - [TASK_MESH] = mesh_hdlrs, + [TASK_TDLS] = tdls_hdlrs, [TASK_SCANU] = scan_hdlrs, + [TASK_ME] = me_hdlrs, [TASK_SM] = sm_hdlrs, + [TASK_APM] = apm_hdlrs, [TASK_MESH] = mesh_hdlrs, #endif /* CONFIG_RWNX_FULLMAC */ }; @@ -1523,7 +1625,7 @@ void rwnx_rx_handle_msg(struct rwnx_hw *rwnx_hw, struct ipc_e2a_msg *msg) AICWFDBG(LOGDEBUG, "%s msg->id:0x%x \r\n", __func__, msg->id); rwnx_hw->cmd_mgr->msgind(rwnx_hw->cmd_mgr, msg, - msg_hdlrs[MSG_T(msg->id)][MSG_I(msg->id)]); + msg_hdlrs[MSG_T(msg->id)][MSG_I(msg->id)]); } void rwnx_rx_handle_print(struct rwnx_hw *rwnx_hw, u8 *msg, u32 len) @@ -1542,7 +1644,7 @@ void rwnx_rx_handle_print(struct rwnx_hw *rwnx_hw, u8 *msg, u32 len) data_end = rwnx_hw->debugfs.fw_log.buf.dataend; if (!rwnx_hw->debugfs.fw_log.buf.data) - return ; + return; //printk("end=%lx, len=%d\n", (unsigned long)rwnx_hw->debugfs.fw_log.buf.end, len); @@ -1552,7 +1654,8 @@ void rwnx_rx_handle_print(struct rwnx_hw *rwnx_hw, u8 *msg, u32 len) int rem = data_end - rwnx_hw->debugfs.fw_log.buf.end; memcpy(rwnx_hw->debugfs.fw_log.buf.end, msg, rem); memcpy(rwnx_hw->debugfs.fw_log.buf.data, &msg[rem], len - rem); - rwnx_hw->debugfs.fw_log.buf.end = rwnx_hw->debugfs.fw_log.buf.data + (len - rem); + rwnx_hw->debugfs.fw_log.buf.end = + rwnx_hw->debugfs.fw_log.buf.data + (len - rem); } else { memcpy(rwnx_hw->debugfs.fw_log.buf.end, msg, len); rwnx_hw->debugfs.fw_log.buf.end += len; @@ -1565,4 +1668,3 @@ void rwnx_rx_handle_print(struct rwnx_hw *rwnx_hw, u8 *msg, u32 len) spin_unlock_bh(&rwnx_hw->debugfs.fw_log.lock); #endif } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.c index f62475b4e..1b318b2f7 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.c @@ -23,59 +23,50 @@ #include "rwnx_main.h" #include "rwnx_wakelock.h" -const struct mac_addr mac_addr_bcst = {{0xFFFF, 0xFFFF, 0xFFFF}}; +const struct mac_addr mac_addr_bcst = { { 0xFFFF, 0xFFFF, 0xFFFF } }; /* Default MAC Rx filters that can be changed by mac80211 * (via the configure_filter() callback) */ -#define RWNX_MAC80211_CHANGEABLE ( \ - NXMAC_ACCEPT_BA_BIT | \ - NXMAC_ACCEPT_BAR_BIT | \ - NXMAC_ACCEPT_OTHER_DATA_FRAMES_BIT | \ - NXMAC_ACCEPT_PROBE_REQ_BIT | \ - NXMAC_ACCEPT_PS_POLL_BIT \ - ) +#define RWNX_MAC80211_CHANGEABLE \ + (NXMAC_ACCEPT_BA_BIT | NXMAC_ACCEPT_BAR_BIT | \ + NXMAC_ACCEPT_OTHER_DATA_FRAMES_BIT | NXMAC_ACCEPT_PROBE_REQ_BIT | \ + NXMAC_ACCEPT_PS_POLL_BIT) /* Default MAC Rx filters that cannot be changed by mac80211 */ -#define RWNX_MAC80211_NOT_CHANGEABLE ( \ - NXMAC_ACCEPT_QO_S_NULL_BIT | \ - NXMAC_ACCEPT_Q_DATA_BIT | \ - NXMAC_ACCEPT_DATA_BIT | \ - NXMAC_ACCEPT_OTHER_MGMT_FRAMES_BIT | \ - NXMAC_ACCEPT_MY_UNICAST_BIT | \ - NXMAC_ACCEPT_BROADCAST_BIT | \ - NXMAC_ACCEPT_BEACON_BIT | \ - NXMAC_ACCEPT_PROBE_RESP_BIT \ - ) +#define RWNX_MAC80211_NOT_CHANGEABLE \ + (NXMAC_ACCEPT_QO_S_NULL_BIT | NXMAC_ACCEPT_Q_DATA_BIT | \ + NXMAC_ACCEPT_DATA_BIT | NXMAC_ACCEPT_OTHER_MGMT_FRAMES_BIT | \ + NXMAC_ACCEPT_MY_UNICAST_BIT | NXMAC_ACCEPT_BROADCAST_BIT | \ + NXMAC_ACCEPT_BEACON_BIT | NXMAC_ACCEPT_PROBE_RESP_BIT) /* Default MAC Rx filter */ -#define RWNX_DEFAULT_RX_FILTER (RWNX_MAC80211_CHANGEABLE | RWNX_MAC80211_NOT_CHANGEABLE) +#define RWNX_DEFAULT_RX_FILTER \ + (RWNX_MAC80211_CHANGEABLE | RWNX_MAC80211_NOT_CHANGEABLE) const int bw2chnl[] = { [NL80211_CHAN_WIDTH_20_NOHT] = PHY_CHNL_BW_20, - [NL80211_CHAN_WIDTH_20] = PHY_CHNL_BW_20, - [NL80211_CHAN_WIDTH_40] = PHY_CHNL_BW_40, - [NL80211_CHAN_WIDTH_80] = PHY_CHNL_BW_80, - [NL80211_CHAN_WIDTH_160] = PHY_CHNL_BW_160, - [NL80211_CHAN_WIDTH_80P80] = PHY_CHNL_BW_80P80, + [NL80211_CHAN_WIDTH_20] = PHY_CHNL_BW_20, + [NL80211_CHAN_WIDTH_40] = PHY_CHNL_BW_40, + [NL80211_CHAN_WIDTH_80] = PHY_CHNL_BW_80, + [NL80211_CHAN_WIDTH_160] = PHY_CHNL_BW_160, + [NL80211_CHAN_WIDTH_80P80] = PHY_CHNL_BW_80P80, }; const int chnl2bw[] = { - [PHY_CHNL_BW_20] = NL80211_CHAN_WIDTH_20, - [PHY_CHNL_BW_40] = NL80211_CHAN_WIDTH_40, - [PHY_CHNL_BW_80] = NL80211_CHAN_WIDTH_80, - [PHY_CHNL_BW_160] = NL80211_CHAN_WIDTH_160, - [PHY_CHNL_BW_80P80] = NL80211_CHAN_WIDTH_80P80, + [PHY_CHNL_BW_20] = NL80211_CHAN_WIDTH_20, + [PHY_CHNL_BW_40] = NL80211_CHAN_WIDTH_40, + [PHY_CHNL_BW_80] = NL80211_CHAN_WIDTH_80, + [PHY_CHNL_BW_160] = NL80211_CHAN_WIDTH_160, + [PHY_CHNL_BW_80P80] = NL80211_CHAN_WIDTH_80P80, }; -#define RWNX_CMD_ARRAY_SIZE 20 -#define RWNX_CMD_HIGH_WATER_SIZE RWNX_CMD_ARRAY_SIZE/2 +#define RWNX_CMD_ARRAY_SIZE 40 +#define RWNX_CMD_HIGH_WATER_SIZE RWNX_CMD_ARRAY_SIZE / 2 struct rwnx_cmd cmd_array[RWNX_CMD_ARRAY_SIZE]; static spinlock_t cmd_array_lock; int cmd_array_index = 0; - - /*****************************************************************************/ /* * Parse the ampdu density to retrieve the value in usec, according to the @@ -106,8 +97,8 @@ static inline u8 rwnx_ampdudensity2usec(u8 ampdudensity) static inline bool use_pairwise_key(struct cfg80211_crypto_settings *crypto) { - if ((crypto->cipher_group == WLAN_CIPHER_SUITE_WEP40) || - (crypto->cipher_group == WLAN_CIPHER_SUITE_WEP104)) + if ((crypto->cipher_group == WLAN_CIPHER_SUITE_WEP40) || + (crypto->cipher_group == WLAN_CIPHER_SUITE_WEP104)) return false; return true; @@ -116,21 +107,21 @@ static inline bool use_pairwise_key(struct cfg80211_crypto_settings *crypto) static inline bool is_non_blocking_msg(int id) { return ((id == MM_TIM_UPDATE_REQ) || (id == ME_RC_SET_RATE_REQ) || - (id == MM_BFMER_ENABLE_REQ) || (id == ME_TRAFFIC_IND_REQ) || - (id == TDLS_PEER_TRAFFIC_IND_REQ) || - (id == MESH_PATH_CREATE_REQ) || (id == MESH_PROXY_ADD_REQ) || - (id == SM_EXTERNAL_AUTH_REQUIRED_RSP)); + (id == MM_BFMER_ENABLE_REQ) || (id == ME_TRAFFIC_IND_REQ) || + (id == TDLS_PEER_TRAFFIC_IND_REQ) || + (id == MESH_PATH_CREATE_REQ) || (id == MESH_PROXY_ADD_REQ) || + (id == SM_EXTERNAL_AUTH_REQUIRED_RSP)); } static inline u8_l get_chan_flags(uint32_t flags) { u8_l chan_flags = 0; -#ifdef RADAR_OR_IR_DETECT - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) +#ifdef CONFIG_RADAR_OR_IR_DETECT +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) if (flags & IEEE80211_CHAN_PASSIVE_SCAN) - #else +#else if (flags & IEEE80211_CHAN_NO_IR) - #endif +#endif chan_flags |= CHAN_NO_IR; if (flags & IEEE80211_CHAN_RADAR) chan_flags |= CHAN_RADAR; @@ -161,27 +152,32 @@ static inline void limit_chan_bw(u8_l *bw, u16_l primary, u16_l *center1) *center1 = primary + new_oft; } -struct rwnx_cmd *rwnx_cmd_malloc(void){ +struct rwnx_cmd *rwnx_cmd_malloc(void) +{ struct rwnx_cmd *cmd = NULL; unsigned long flags = 0; spin_lock_irqsave(&cmd_array_lock, flags); - for(cmd_array_index = 0; cmd_array_index < RWNX_CMD_ARRAY_SIZE; cmd_array_index++){ - if(cmd_array[cmd_array_index].used == 0){ - AICWFDBG(LOGTRACE, "%s get cmd_array[%d]:%p \r\n", __func__, cmd_array_index,&cmd_array[cmd_array_index]); + for (cmd_array_index = 0; cmd_array_index < RWNX_CMD_ARRAY_SIZE; + cmd_array_index++) { + if (cmd_array[cmd_array_index].used == 0) { + AICWFDBG(LOGTRACE, "%s get cmd_array[%d]:%p \r\n", + __func__, cmd_array_index, + &cmd_array[cmd_array_index]); cmd = &cmd_array[cmd_array_index]; cmd_array[cmd_array_index].used = 1; break; } } - if(cmd_array_index >= RWNX_CMD_HIGH_WATER_SIZE){ - AICWFDBG(LOGERROR, "%s cmd(%d) was pending...\r\n", __func__, cmd_array_index); + if (cmd_array_index >= RWNX_CMD_HIGH_WATER_SIZE) { + AICWFDBG(LOGERROR, "%s cmd(%d) was pending...\r\n", __func__, + cmd_array_index); mdelay(100); } - if(!cmd){ + if (!cmd) { AICWFDBG(LOGERROR, "%s array is empty...\r\n", __func__); } @@ -190,23 +186,26 @@ struct rwnx_cmd *rwnx_cmd_malloc(void){ return cmd; } -void rwnx_cmd_free(struct rwnx_cmd *cmd){ +void rwnx_cmd_free(struct rwnx_cmd *cmd) +{ unsigned long flags = 0; spin_lock_irqsave(&cmd_array_lock, flags); cmd->used = 0; - AICWFDBG(LOGTRACE, "%s cmd_array[%d]:%p \r\n", __func__, cmd->array_id, cmd); + AICWFDBG(LOGTRACE, "%s cmd_array[%d]:%p \r\n", __func__, cmd->array_id, + cmd); spin_unlock_irqrestore(&cmd_array_lock, flags); } - -int rwnx_init_cmd_array(void){ - +int rwnx_init_cmd_array(void) +{ AICWFDBG(LOGTRACE, "%s Enter \r\n", __func__); spin_lock_init(&cmd_array_lock); - for(cmd_array_index = 0; cmd_array_index < RWNX_CMD_ARRAY_SIZE; cmd_array_index++){ - AICWFDBG(LOGTRACE, "%s cmd_queue[%d]:%p \r\n", __func__, cmd_array_index, &cmd_array[cmd_array_index]); + for (cmd_array_index = 0; cmd_array_index < RWNX_CMD_ARRAY_SIZE; + cmd_array_index++) { + AICWFDBG(LOGTRACE, "%s cmd_queue[%d]:%p \r\n", __func__, + cmd_array_index, &cmd_array[cmd_array_index]); cmd_array[cmd_array_index].used = 0; cmd_array[cmd_array_index].array_id = cmd_array_index; } @@ -215,18 +214,18 @@ int rwnx_init_cmd_array(void){ return 0; } -void rwnx_free_cmd_array(void){ - +void rwnx_free_cmd_array(void) +{ AICWFDBG(LOGTRACE, "%s Enter \r\n", __func__); - for(cmd_array_index = 0; cmd_array_index < RWNX_CMD_ARRAY_SIZE; cmd_array_index++){ + for (cmd_array_index = 0; cmd_array_index < RWNX_CMD_ARRAY_SIZE; + cmd_array_index++) { cmd_array[cmd_array_index].used = 0; } AICWFDBG(LOGTRACE, "%s Exit \r\n", __func__); } - /** ****************************************************************************** * @brief Allocate memory for a message @@ -256,20 +255,20 @@ void rwnx_free_cmd_array(void){ ****************************************************************************** */ static inline void *rwnx_msg_zalloc(lmac_msg_id_t const id, - lmac_task_id_t const dest_id, - lmac_task_id_t const src_id, - uint16_t const param_len) + lmac_task_id_t const dest_id, + lmac_task_id_t const src_id, + uint16_t const param_len) { struct lmac_msg *msg; gfp_t flags; -// if (is_non_blocking_msg(id) && (in_softirq()||in_atomic())) - flags = GFP_ATOMIC; -// else -// flags = GFP_KERNEL; + // if (is_non_blocking_msg(id) && (in_softirq()||in_atomic())) + flags = GFP_ATOMIC; + // else + // flags = GFP_KERNEL; msg = (struct lmac_msg *)kzalloc(sizeof(struct lmac_msg) + param_len, - flags); + flags); if (msg == NULL) { AICWFDBG(LOGERROR, "%s: msg allocation failed\n", __func__); return NULL; @@ -285,8 +284,8 @@ static inline void *rwnx_msg_zalloc(lmac_msg_id_t const id, static void rwnx_msg_free(struct rwnx_hw *rwnx_hw, const void *msg_params) { - struct lmac_msg *msg = container_of((void *)msg_params, - struct lmac_msg, param); + struct lmac_msg *msg = + container_of((void *)msg_params, struct lmac_msg, param); RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -298,18 +297,18 @@ static void rwnx_msg_free(struct rwnx_hw *rwnx_hw, const void *msg_params) //void rwnx_pm_stay_awake(struct aic_sdio_dev *sdiodev); static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, - int reqcfm, lmac_msg_id_t reqid, void *cfm) + int reqcfm, lmac_msg_id_t reqid, void *cfm) { struct lmac_msg *msg; struct rwnx_cmd *cmd; bool nonblock; int ret = 0; - u8_l empty = 0; //RWNX_DBG(RWNX_FN_ENTRY_STR); - AICWFDBG(LOGTRACE, "%s (%d)%s reqcfm:%d in_irq:%d in_softirq:%d in_atomic:%d\r\n", - __func__, reqid, RWNX_ID2STR(reqid), reqcfm, (int)in_irq(), (int)in_softirq(), (int)in_atomic()); - + AICWFDBG(LOGTRACE, + "%s (%d)%s reqcfm:%d in_irq:%d in_softirq:%d in_atomic:%d\r\n", + __func__, reqid, RWNX_ID2STR(reqid), reqcfm, (int)in_irq(), + (int)in_softirq(), (int)in_atomic()); #ifdef AICWF_USB_SUPPORT if (rwnx_hw->usbdev->state == USB_DOWN_ST) { @@ -330,7 +329,7 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, msg = container_of((void *)msg_params, struct lmac_msg, param); - #if 0 +#if 0 if (!test_bit(RWNX_DEV_STARTED, &rwnx_hw->drv_flags) && reqid != DBG_MEM_READ_CFM && reqid != DBG_MEM_WRITE_CFM && reqid != DBG_MEM_BLOCK_WRITE_CFM && reqid != DBG_START_APP_CFM && @@ -344,7 +343,7 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, kfree(msg); return -EBUSY; } - #endif +#endif #if 0 else if (!rwnx_hw->ipc_env) { printk(KERN_CRIT "%s: bypassing (restart must have failed)\n", __func__); @@ -355,10 +354,10 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, //nonblock = is_non_blocking_msg(msg->id); nonblock = 0; - cmd = rwnx_cmd_malloc();//kzalloc(sizeof(struct rwnx_cmd), nonblock ? GFP_ATOMIC : GFP_KERNEL); - cmd->result = -EINTR; - cmd->id = msg->id; - cmd->reqid = reqid; + cmd = rwnx_cmd_malloc(); //kzalloc(sizeof(struct rwnx_cmd), nonblock ? GFP_ATOMIC : GFP_KERNEL); + cmd->result = -EINTR; + cmd->id = msg->id; + cmd->reqid = reqid; cmd->a2e_msg = msg; cmd->e2a_msg = cfm; if (nonblock) @@ -366,6 +365,7 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, if (reqcfm) cmd->flags |= RWNX_CMD_FLAG_REQ_CFM; +#if 0 if (cfm != NULL) { do { if(rwnx_hw->cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) @@ -385,47 +385,53 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, } } while (!empty);//wait for cmd queue empty } - +#endif if (reqcfm) { - cmd->flags &= ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more + cmd->flags &= + ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more ret = rwnx_hw->cmd_mgr->queue(rwnx_hw->cmd_mgr, cmd); } else { #ifdef AICWF_SDIO_SUPPORT - aicwf_set_cmd_tx((void *)(rwnx_hw->sdiodev), cmd->a2e_msg, sizeof(struct lmac_msg) + cmd->a2e_msg->param_len); + aicwf_set_cmd_tx((void *)(rwnx_hw->sdiodev), cmd->a2e_msg, + sizeof(struct lmac_msg) + + cmd->a2e_msg->param_len); #else - aicwf_set_cmd_tx((void *)(rwnx_hw->usbdev), cmd->a2e_msg, sizeof(struct lmac_msg) + cmd->a2e_msg->param_len); + aicwf_set_cmd_tx((void *)(rwnx_hw->usbdev), cmd->a2e_msg, + sizeof(struct lmac_msg) + + cmd->a2e_msg->param_len); #endif } if (!reqcfm || ret) - rwnx_cmd_free(cmd);//kfree(cmd); + rwnx_cmd_free(cmd); //kfree(cmd); rwnx_wakeup_unlock(rwnx_hw->ws_tx); return 0; } - static int rwnx_send_msg1(struct rwnx_hw *rwnx_hw, const void *msg_params, - int reqcfm, lmac_msg_id_t reqid, void *cfm, bool defer) + int reqcfm, lmac_msg_id_t reqid, void *cfm, + bool defer) { struct lmac_msg *msg; struct rwnx_cmd *cmd; bool nonblock; int ret = 0; -// RWNX_DBG(RWNX_FN_ENTRY_STR); - printk("%s (%d)%s reqcfm:%d in_irq:%d in_softirq:%d in_atomic:%d\r\n", - __func__, reqid, RWNX_ID2STR(reqid), reqcfm, (int)in_irq(), (int)in_softirq(), (int)in_atomic()); + // RWNX_DBG(RWNX_FN_ENTRY_STR); + printk("%s (%d)%s reqcfm:%d in_irq:%d in_softirq:%d in_atomic:%d\r\n", + __func__, reqid, RWNX_ID2STR(reqid), reqcfm, (int)in_irq(), + (int)in_softirq(), (int)in_atomic()); rwnx_wakeup_lock(rwnx_hw->ws_tx); msg = container_of((void *)msg_params, struct lmac_msg, param); //nonblock = is_non_blocking_msg(msg->id); nonblock = 0; - cmd = rwnx_cmd_malloc();//kzalloc(sizeof(struct rwnx_cmd), nonblock ? GFP_ATOMIC : GFP_KERNEL); - cmd->result = -EINTR; - cmd->id = msg->id; - cmd->reqid = reqid; + cmd = rwnx_cmd_malloc(); //kzalloc(sizeof(struct rwnx_cmd), nonblock ? GFP_ATOMIC : GFP_KERNEL); + cmd->result = -EINTR; + cmd->id = msg->id; + cmd->reqid = reqid; cmd->a2e_msg = msg; cmd->e2a_msg = cfm; if (nonblock) @@ -434,7 +440,8 @@ static int rwnx_send_msg1(struct rwnx_hw *rwnx_hw, const void *msg_params, cmd->flags |= RWNX_CMD_FLAG_REQ_CFM; if (reqcfm) { - cmd->flags &= ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more + cmd->flags &= + ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more if (!defer) ret = rwnx_hw->cmd_mgr->queue(rwnx_hw->cmd_mgr, cmd); else @@ -442,7 +449,7 @@ static int rwnx_send_msg1(struct rwnx_hw *rwnx_hw, const void *msg_params, } if (!reqcfm || ret) - rwnx_cmd_free(cmd);//kfree(cmd); + rwnx_cmd_free(cmd); //kfree(cmd); if (!ret) ret = cmd->result; @@ -477,14 +484,17 @@ int rwnx_send_start(struct rwnx_hw *rwnx_hw) /* Build the START REQ message */ start_req_param = rwnx_msg_zalloc(MM_START_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_start_req)); + sizeof(struct mm_start_req)); if (!start_req_param) return -ENOMEM; /* Set parameters for the START message */ - memcpy(&start_req_param->phy_cfg, &rwnx_hw->phy.cfg, sizeof(rwnx_hw->phy.cfg)); - start_req_param->uapsd_timeout = (u32_l)rwnx_hw->mod_params->uapsd_timeout; - start_req_param->lp_clk_accuracy = (u16_l)rwnx_hw->mod_params->lp_clk_ppm; + memcpy(&start_req_param->phy_cfg, &rwnx_hw->phy.cfg, + sizeof(rwnx_hw->phy.cfg)); + start_req_param->uapsd_timeout = + (u32_l)rwnx_hw->mod_params->uapsd_timeout; + start_req_param->lp_clk_accuracy = + (u16_l)rwnx_hw->mod_params->lp_clk_ppm; /* Send the START REQ message to LMAC FW */ return rwnx_send_msg(rwnx_hw, start_req_param, 1, MM_START_CFM, NULL); @@ -504,8 +514,9 @@ int rwnx_send_version_req(struct rwnx_hw *rwnx_hw, struct mm_version_cfm *cfm) return rwnx_send_msg(rwnx_hw, void_param, 1, MM_VERSION_CFM, cfm); } -int rwnx_send_add_if (struct rwnx_hw *rwnx_hw, const unsigned char *mac, - enum nl80211_iftype iftype, bool p2p, struct mm_add_if_cfm *cfm) +int rwnx_send_add_if(struct rwnx_hw *rwnx_hw, const unsigned char *mac, + enum nl80211_iftype iftype, bool p2p, + struct mm_add_if_cfm *cfm) { struct mm_add_if_req *add_if_req_param; @@ -513,19 +524,19 @@ int rwnx_send_add_if (struct rwnx_hw *rwnx_hw, const unsigned char *mac, /* Build the ADD_IF_REQ message */ add_if_req_param = rwnx_msg_zalloc(MM_ADD_IF_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_add_if_req)); + sizeof(struct mm_add_if_req)); if (!add_if_req_param) return -ENOMEM; /* Set parameters for the ADD_IF_REQ message */ memcpy(&(add_if_req_param->addr.array[0]), mac, ETH_ALEN); switch (iftype) { - #ifdef CONFIG_RWNX_FULLMAC +#ifdef CONFIG_RWNX_FULLMAC //case NL80211_IFTYPE_P2P_DEVICE: case NL80211_IFTYPE_P2P_CLIENT: add_if_req_param->p2p = true; // no break - #endif /* CONFIG_RWNX_FULLMAC */ +#endif /* CONFIG_RWNX_FULLMAC */ case NL80211_IFTYPE_STATION: add_if_req_param->type = MM_STA; break; @@ -534,11 +545,11 @@ int rwnx_send_add_if (struct rwnx_hw *rwnx_hw, const unsigned char *mac, add_if_req_param->type = MM_IBSS; break; - #ifdef CONFIG_RWNX_FULLMAC +#ifdef CONFIG_RWNX_FULLMAC case NL80211_IFTYPE_P2P_GO: add_if_req_param->p2p = true; // no break - #endif /* CONFIG_RWNX_FULLMAC */ +#endif /* CONFIG_RWNX_FULLMAC */ case NL80211_IFTYPE_AP: add_if_req_param->type = MM_AP; break; @@ -555,12 +566,11 @@ int rwnx_send_add_if (struct rwnx_hw *rwnx_hw, const unsigned char *mac, break; } - /* Send the ADD_IF_REQ message to LMAC FW */ return rwnx_send_msg(rwnx_hw, add_if_req_param, 1, MM_ADD_IF_CFM, cfm); } -int rwnx_send_remove_if (struct rwnx_hw *rwnx_hw, u8 vif_index, bool defer) +int rwnx_send_remove_if(struct rwnx_hw *rwnx_hw, u8 vif_index, bool defer) { struct mm_remove_if_req *remove_if_req; @@ -568,7 +578,7 @@ int rwnx_send_remove_if (struct rwnx_hw *rwnx_hw, u8 vif_index, bool defer) /* Build the MM_REMOVE_IF_REQ message */ remove_if_req = rwnx_msg_zalloc(MM_REMOVE_IF_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_remove_if_req)); + sizeof(struct mm_remove_if_req)); if (!remove_if_req) return -ENOMEM; @@ -576,11 +586,12 @@ int rwnx_send_remove_if (struct rwnx_hw *rwnx_hw, u8 vif_index, bool defer) remove_if_req->inst_nbr = vif_index; /* Send the MM_REMOVE_IF_REQ message to LMAC FW */ - return rwnx_send_msg1(rwnx_hw, remove_if_req, 1, MM_REMOVE_IF_CFM, NULL, defer); + return rwnx_send_msg1(rwnx_hw, remove_if_req, 1, MM_REMOVE_IF_CFM, NULL, + defer); } int rwnx_send_set_channel(struct rwnx_hw *rwnx_hw, int phy_idx, - struct mm_set_channel_cfm *cfm) + struct mm_set_channel_cfm *cfm) { struct mm_set_channel_req *req; enum nl80211_chan_width width = NL80211_CHAN_WIDTH_20_NOHT; @@ -595,21 +606,22 @@ int rwnx_send_set_channel(struct rwnx_hw *rwnx_hw, int phy_idx, return -ENOTSUPP; req = rwnx_msg_zalloc(MM_SET_CHANNEL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_channel_req)); + sizeof(struct mm_set_channel_req)); if (!req) return -ENOMEM; if (phy_idx == 0) { #ifdef CONFIG_RWNX_FULLMAC /* On FULLMAC only setting channel of secondary chain */ - wiphy_err(rwnx_hw->wiphy, "Trying to set channel of primary chain"); + wiphy_err(rwnx_hw->wiphy, + "Trying to set channel of primary chain"); return 0; #endif /* CONFIG_RWNX_FULLMAC */ } else { struct rwnx_sec_phy_chan *chan = &rwnx_hw->phy.sec_chan; width = chnl2bw[chan->type]; - band = chan->band; - center_freq = chan->prim20_freq; + band = chan->band; + center_freq = chan->prim20_freq; center_freq1 = chan->center_freq1; center_freq2 = chan->center_freq2; flags = 0; @@ -617,7 +629,7 @@ int rwnx_send_set_channel(struct rwnx_hw *rwnx_hw, int phy_idx, req->chan.band = band; req->chan.type = bw2chnl[width]; - req->chan.prim20_freq = center_freq; + req->chan.prim20_freq = center_freq; req->chan.center1_freq = center_freq1; req->chan.center2_freq = center_freq2; req->chan.tx_power = tx_power; @@ -625,21 +637,22 @@ int rwnx_send_set_channel(struct rwnx_hw *rwnx_hw, int phy_idx, req->index = phy_idx; if (rwnx_hw->phy.limit_bw) - limit_chan_bw(&req->chan.type, req->chan.prim20_freq, &req->chan.center1_freq); + limit_chan_bw(&req->chan.type, req->chan.prim20_freq, + &req->chan.center1_freq); RWNX_DBG("mac80211: freq=%d(c1:%d - c2:%d)/width=%d - band=%d\n" - " hw(%d): prim20=%d(c1:%d - c2:%d)/ type=%d - band=%d\n", - center_freq, center_freq1, center_freq2, width, band, - phy_idx, req->chan.prim20_freq, req->chan.center1_freq, - req->chan.center2_freq, req->chan.type, req->chan.band); + " hw(%d): prim20=%d(c1:%d - c2:%d)/ type=%d - band=%d\n", + center_freq, center_freq1, center_freq2, width, band, phy_idx, + req->chan.prim20_freq, req->chan.center1_freq, + req->chan.center2_freq, req->chan.type, req->chan.band); /* Send the MM_SET_CHANNEL_REQ REQ message to LMAC FW */ return rwnx_send_msg(rwnx_hw, req, 1, MM_SET_CHANNEL_CFM, cfm); } -int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, bool pairwise, - u8 *key, u8 key_len, u8 key_idx, u8 cipher_suite, - struct mm_key_add_cfm *cfm) +int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, + bool pairwise, u8 *key, u8 key_len, u8 key_idx, + u8 cipher_suite, struct mm_key_add_cfm *cfm) { struct mm_key_add_req *key_add_req; @@ -647,7 +660,7 @@ int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, bool pair /* Build the MM_KEY_ADD_REQ message */ key_add_req = rwnx_msg_zalloc(MM_KEY_ADD_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_key_add_req)); + sizeof(struct mm_key_add_req)); if (!key_add_req) return -ENOMEM; @@ -658,7 +671,8 @@ int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, bool pair } else { /* Default key */ key_add_req->sta_idx = sta_idx; - key_add_req->key_idx = (u8_l)key_idx; /* only useful for default keys */ + key_add_req->key_idx = + (u8_l)key_idx; /* only useful for default keys */ } key_add_req->pairwise = pairwise; key_add_req->inst_nbr = vif_idx; @@ -667,11 +681,13 @@ int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, bool pair key_add_req->cipher_suite = cipher_suite; - RWNX_DBG("%s: sta_idx:%d key_idx:%d inst_nbr:%d cipher:%d key_len:%d\n", __func__, - key_add_req->sta_idx, key_add_req->key_idx, key_add_req->inst_nbr, - key_add_req->cipher_suite, key_add_req->key.length); + RWNX_DBG("%s: sta_idx:%d key_idx:%d inst_nbr:%d cipher:%d key_len:%d\n", + __func__, key_add_req->sta_idx, key_add_req->key_idx, + key_add_req->inst_nbr, key_add_req->cipher_suite, + key_add_req->key.length); #if defined(CONFIG_RWNX_DBG) || defined(CONFIG_DYNAMIC_DEBUG) - print_hex_dump_bytes("key: ", DUMP_PREFIX_OFFSET, key_add_req->key.array, key_add_req->key.length); + print_hex_dump_bytes("key: ", DUMP_PREFIX_OFFSET, + key_add_req->key.array, key_add_req->key.length); #endif /* Send the MM_KEY_ADD_REQ message to LMAC FW */ @@ -686,7 +702,7 @@ int rwnx_send_key_del(struct rwnx_hw *rwnx_hw, uint8_t hw_key_idx) /* Build the MM_KEY_DEL_REQ message */ key_del_req = rwnx_msg_zalloc(MM_KEY_DEL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_key_del_req)); + sizeof(struct mm_key_del_req)); if (!key_del_req) return -ENOMEM; @@ -700,8 +716,9 @@ int rwnx_send_key_del(struct rwnx_hw *rwnx_hw, uint8_t hw_key_idx) int rwnx_send_bcn(struct rwnx_hw *rwnx_hw, u8 *buf, u8 vif_idx, u16 bcn_len) { struct apm_set_bcn_ie_req *bcn_ie_req; - bcn_ie_req = rwnx_msg_zalloc(APM_SET_BEACON_IE_REQ, TASK_APM, DRV_TASK_ID, - sizeof(struct apm_set_bcn_ie_req)); + bcn_ie_req = + rwnx_msg_zalloc(APM_SET_BEACON_IE_REQ, TASK_APM, DRV_TASK_ID, + sizeof(struct apm_set_bcn_ie_req)); if (!bcn_ie_req) return -ENOMEM; @@ -710,11 +727,12 @@ int rwnx_send_bcn(struct rwnx_hw *rwnx_hw, u8 *buf, u8 vif_idx, u16 bcn_len) memcpy(bcn_ie_req->bcn_ie, (u8 *)buf, bcn_len); kfree(buf); - return rwnx_send_msg(rwnx_hw, bcn_ie_req, 1, APM_SET_BEACON_IE_CFM, NULL); + return rwnx_send_msg(rwnx_hw, bcn_ie_req, 1, APM_SET_BEACON_IE_CFM, + NULL); } int rwnx_send_bcn_change(struct rwnx_hw *rwnx_hw, u8 vif_idx, u32 bcn_addr, - u16 bcn_len, u16 tim_oft, u16 tim_len, u16 *csa_oft) + u16 bcn_len, u16 tim_oft, u16 tim_len, u16 *csa_oft) { struct mm_bcn_change_req *req; @@ -722,7 +740,7 @@ int rwnx_send_bcn_change(struct rwnx_hw *rwnx_hw, u8 vif_idx, u32 bcn_addr, /* Build the MM_BCN_CHANGE_REQ message */ req = rwnx_msg_zalloc(MM_BCN_CHANGE_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_bcn_change_req)); + sizeof(struct mm_bcn_change_req)); if (!req) return -ENOMEM; @@ -736,7 +754,7 @@ int rwnx_send_bcn_change(struct rwnx_hw *rwnx_hw, u8 vif_idx, u32 bcn_addr, if (csa_oft) { int i; for (i = 0; i < BCN_MAX_CSA_CPT; i++) { - req->csa_oft[i] = csa_oft[i]; + req->csa_oft[i] = csa_oft[i]; } } @@ -745,8 +763,8 @@ int rwnx_send_bcn_change(struct rwnx_hw *rwnx_hw, u8 vif_idx, u32 bcn_addr, } int rwnx_send_roc(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct ieee80211_channel *chan, unsigned int duration, - struct mm_remain_on_channel_cfm *roc_cfm) + struct ieee80211_channel *chan, unsigned int duration, + struct mm_remain_on_channel_cfm *roc_cfm) { struct mm_remain_on_channel_req *req; struct cfg80211_chan_def chandef; @@ -758,23 +776,24 @@ int rwnx_send_roc(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, /* Build the MM_REMAIN_ON_CHANNEL_REQ message */ req = rwnx_msg_zalloc(MM_REMAIN_ON_CHANNEL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_remain_on_channel_req)); + sizeof(struct mm_remain_on_channel_req)); if (!req) return -ENOMEM; /* Set parameters for the MM_REMAIN_ON_CHANNEL_REQ message */ - req->op_code = MM_ROC_OP_START; - req->vif_index = vif->vif_index; - req->duration_ms = duration; - req->band = chan->band; - req->type = bw2chnl[chandef.width]; - req->prim20_freq = chan->center_freq; + req->op_code = MM_ROC_OP_START; + req->vif_index = vif->vif_index; + req->duration_ms = duration; + req->band = chan->band; + req->type = bw2chnl[chandef.width]; + req->prim20_freq = chan->center_freq; req->center1_freq = chandef.center_freq1; req->center2_freq = chandef.center_freq2; - req->tx_power = chan_to_fw_pwr(chan->max_power); + req->tx_power = chan_to_fw_pwr(chan->max_power); /* Send the MM_REMAIN_ON_CHANNEL_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MM_REMAIN_ON_CHANNEL_CFM, roc_cfm); + return rwnx_send_msg(rwnx_hw, req, 1, MM_REMAIN_ON_CHANNEL_CFM, + roc_cfm); } int rwnx_send_cancel_roc(struct rwnx_hw *rwnx_hw) @@ -785,7 +804,7 @@ int rwnx_send_cancel_roc(struct rwnx_hw *rwnx_hw) /* Build the MM_REMAIN_ON_CHANNEL_REQ message */ req = rwnx_msg_zalloc(MM_REMAIN_ON_CHANNEL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_remain_on_channel_req)); + sizeof(struct mm_remain_on_channel_req)); if (!req) return -ENOMEM; @@ -797,7 +816,7 @@ int rwnx_send_cancel_roc(struct rwnx_hw *rwnx_hw) } int rwnx_send_set_power(struct rwnx_hw *rwnx_hw, u8 vif_idx, s8 pwr, - struct mm_set_power_cfm *cfm) + struct mm_set_power_cfm *cfm) { struct mm_set_power_req *req; @@ -805,7 +824,7 @@ int rwnx_send_set_power(struct rwnx_hw *rwnx_hw, u8 vif_idx, s8 pwr, /* Build the MM_SET_POWER_REQ message */ req = rwnx_msg_zalloc(MM_SET_POWER_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_power_req)); + sizeof(struct mm_set_power_req)); if (!req) return -ENOMEM; @@ -818,7 +837,7 @@ int rwnx_send_set_power(struct rwnx_hw *rwnx_hw, u8 vif_idx, s8 pwr, } int rwnx_send_set_edca(struct rwnx_hw *rwnx_hw, u8 hw_queue, u32 param, - bool uapsd, u8 inst_nbr) + bool uapsd, u8 inst_nbr) { struct mm_set_edca_req *set_edca_req; @@ -826,7 +845,7 @@ int rwnx_send_set_edca(struct rwnx_hw *rwnx_hw, u8 hw_queue, u32 param, /* Build the MM_SET_EDCA_REQ message */ set_edca_req = rwnx_msg_zalloc(MM_SET_EDCA_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_edca_req)); + sizeof(struct mm_set_edca_req)); if (!set_edca_req) return -ENOMEM; @@ -842,7 +861,7 @@ int rwnx_send_set_edca(struct rwnx_hw *rwnx_hw, u8 hw_queue, u32 param, #ifdef CONFIG_RWNX_P2P_DEBUGFS int rwnx_send_p2p_oppps_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u8 ctw, struct mm_set_p2p_oppps_cfm *cfm) + u8 ctw, struct mm_set_p2p_oppps_cfm *cfm) { struct mm_set_p2p_oppps_req *p2p_oppps_req; int error; @@ -850,8 +869,9 @@ int rwnx_send_p2p_oppps_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the MM_SET_P2P_OPPPS_REQ message */ - p2p_oppps_req = rwnx_msg_zalloc(MM_SET_P2P_OPPPS_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_p2p_oppps_req)); + p2p_oppps_req = + rwnx_msg_zalloc(MM_SET_P2P_OPPPS_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_p2p_oppps_req)); if (!p2p_oppps_req) { return -ENOMEM; @@ -862,14 +882,15 @@ int rwnx_send_p2p_oppps_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, p2p_oppps_req->ctwindow = ctw; /* Send the MM_P2P_OPPPS_REQ message to LMAC FW */ - error = rwnx_send_msg(rwnx_hw, p2p_oppps_req, 1, MM_SET_P2P_OPPPS_CFM, cfm); + error = rwnx_send_msg(rwnx_hw, p2p_oppps_req, 1, MM_SET_P2P_OPPPS_CFM, + cfm); return error; } int rwnx_send_p2p_noa_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - int count, int interval, int duration, bool dyn_noa, - struct mm_set_p2p_noa_cfm *cfm) + int count, int interval, int duration, bool dyn_noa, + struct mm_set_p2p_noa_cfm *cfm) { struct mm_set_p2p_noa_req *p2p_noa_req; int error; @@ -881,14 +902,15 @@ int rwnx_send_p2p_noa_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, count = 255; if (duration >= interval) { - dev_err(rwnx_hw->dev, "Invalid p2p NOA config: interval=%d <= duration=%d\n", - interval, duration); + dev_err(rwnx_hw->dev, + "Invalid p2p NOA config: interval=%d <= duration=%d\n", + interval, duration); return -EINVAL; } /* Build the MM_SET_P2P_NOA_REQ message */ p2p_noa_req = rwnx_msg_zalloc(MM_SET_P2P_NOA_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_p2p_noa_req)); + sizeof(struct mm_set_p2p_noa_req)); if (!p2p_noa_req) { return -ENOMEM; @@ -914,8 +936,9 @@ int rwnx_send_p2p_noa_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, #endif /* CONFIG_RWNX_P2P_DEBUGFS */ #ifdef AICWF_ARP_OFFLOAD -int rwnx_send_arpoffload_en_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u32_l ipaddr, u8_l enable) +int rwnx_send_arpoffload_en_req(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, u32_l ipaddr, + u8_l enable) { struct mm_set_arpoffload_en_req *arp_offload_req; int error; @@ -923,8 +946,9 @@ int rwnx_send_arpoffload_en_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_v RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the MM_SET_P2P_NOA_REQ message */ - arp_offload_req = rwnx_msg_zalloc(MM_SET_ARPOFFLOAD_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_arpoffload_en_req)); + arp_offload_req = + rwnx_msg_zalloc(MM_SET_ARPOFFLOAD_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_arpoffload_en_req)); if (!arp_offload_req) { return -ENOMEM; @@ -936,38 +960,41 @@ int rwnx_send_arpoffload_en_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_v arp_offload_req->ipaddr = ipaddr; /* Send the MM_ARPOFFLOAD_EN_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, arp_offload_req, 1, MM_SET_ARPOFFLOAD_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, arp_offload_req, 1, + MM_SET_ARPOFFLOAD_CFM, NULL); return error; } #endif -int rwnx_send_disable_agg_req(struct rwnx_hw *rwnx_hw, u8_l agg_disable, u8_l agg_disable_rx, u8_l sta_idx) +int rwnx_send_disable_agg_req(struct rwnx_hw *rwnx_hw, u8_l agg_disable, + u8_l agg_disable_rx, u8_l sta_idx) { - struct mm_set_agg_disable_req *req; - int error; + struct mm_set_agg_disable_req *req; + int error; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_SET_AGG_DISABLE_REQ message */ - req = rwnx_msg_zalloc(MM_SET_AGG_DISABLE_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_agg_disable_req)); + /* Build the MM_SET_AGG_DISABLE_REQ message */ + req = rwnx_msg_zalloc(MM_SET_AGG_DISABLE_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_agg_disable_req)); - if (!req) { - return -ENOMEM; - } + if (!req) { + return -ENOMEM; + } - req->disable = agg_disable; - req->staidx = sta_idx; - req->disable_rx = agg_disable_rx; + req->disable = agg_disable; + req->staidx = sta_idx; + req->disable_rx = agg_disable_rx; - /* Send the MM_SET_AGG_DISABLE_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_AGG_DISABLE_CFM, NULL); + /* Send the MM_SET_AGG_DISABLE_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_AGG_DISABLE_CFM, NULL); - return (error); + return (error); }; -int rwnx_send_coex_req(struct rwnx_hw *rwnx_hw, u8_l disable_coexnull, u8_l enable_nullcts) +int rwnx_send_coex_req(struct rwnx_hw *rwnx_hw, u8_l disable_coexnull, + u8_l enable_nullcts) { struct mm_set_coex_req *coex_req; int error; @@ -976,7 +1003,7 @@ int rwnx_send_coex_req(struct rwnx_hw *rwnx_hw, u8_l disable_coexnull, u8_l enab /* Build the MM_SET_COEX_REQ message */ coex_req = rwnx_msg_zalloc(MM_SET_COEX_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_coex_req)); + sizeof(struct mm_set_coex_req)); if (!coex_req) { return -ENOMEM; @@ -994,62 +1021,69 @@ int rwnx_send_coex_req(struct rwnx_hw *rwnx_hw, u8_l disable_coexnull, u8_l enab return error; }; - -int rwnx_send_rf_config_req(struct rwnx_hw *rwnx_hw, u8_l ofst, u8_l sel, u8_l *tbl, u16_l len) +int rwnx_send_rf_config_req(struct rwnx_hw *rwnx_hw, u8_l ofst, u8_l sel, + u8_l *tbl, u16_l len) { - struct mm_set_rf_config_req *rf_config_req; - int error; + struct mm_set_rf_config_req *rf_config_req; + int error; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_SET_RF_CONFIG_REQ message */ - rf_config_req = rwnx_msg_zalloc(MM_SET_RF_CONFIG_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_rf_config_req)); + /* Build the MM_SET_RF_CONFIG_REQ message */ + rf_config_req = + rwnx_msg_zalloc(MM_SET_RF_CONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_rf_config_req)); - if (!rf_config_req) { - return -ENOMEM; - } + if (!rf_config_req) { + return -ENOMEM; + } - rf_config_req->table_sel = sel; - rf_config_req->table_ofst = ofst; - rf_config_req->table_num = 16; - rf_config_req->deft_page = 0; + rf_config_req->table_sel = sel; + rf_config_req->table_ofst = ofst; + rf_config_req->table_num = 16; + rf_config_req->deft_page = 0; memcpy(rf_config_req->data, tbl, len); - /* Send the MM_SET_RF_CONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, rf_config_req, 1, MM_SET_RF_CONFIG_CFM, NULL); - - return (error); + /* Send the MM_SET_RF_CONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, rf_config_req, 1, MM_SET_RF_CONFIG_CFM, + NULL); + return (error); } -int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm) +int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, + struct mm_set_rf_calib_cfm *cfm) { struct mm_set_rf_calib_req *rf_calib_req; - xtal_cap_conf_t xtal_cap = {0,}; + xtal_cap_conf_t xtal_cap = { + 0, + }; int error; RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the MM_SET_P2P_NOA_REQ message */ - rf_calib_req = rwnx_msg_zalloc(MM_SET_RF_CALIB_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_rf_calib_req)); + rf_calib_req = + rwnx_msg_zalloc(MM_SET_RF_CALIB_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_rf_calib_req)); if (!rf_calib_req) { return -ENOMEM; } - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801){ - rf_calib_req->cal_cfg_24g = 0xbf; - rf_calib_req->cal_cfg_5g = 0x3f; - } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { - rf_calib_req->cal_cfg_24g = 0x0f8f; - rf_calib_req->cal_cfg_5g = 0; - } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - rf_calib_req->cal_cfg_24g = 0x0f8f; - rf_calib_req->cal_cfg_5g = 0x0f0f; - } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { + rf_calib_req->cal_cfg_24g = 0xbf; + rf_calib_req->cal_cfg_5g = 0x3f; + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0; + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0x0f0f; + } rf_calib_req->param_alpha = 0x0c34c008; rf_calib_req->bt_calib_en = 0; @@ -1058,7 +1092,8 @@ int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm * get_userconfig_xtal_cap(&xtal_cap); if (xtal_cap.enable) { - printk("user xtal cap: %d, cap_fine: %d\n", xtal_cap.xtal_cap, xtal_cap.xtal_cap_fine); + printk("user xtal cap: %d, cap_fine: %d\n", xtal_cap.xtal_cap, + xtal_cap.xtal_cap_fine); rf_calib_req->xtal_cap = xtal_cap.xtal_cap; rf_calib_req->xtal_cap_fine = xtal_cap.xtal_cap_fine; } else { @@ -1066,14 +1101,15 @@ int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm * rf_calib_req->xtal_cap_fine = 0; } - /* Send the MM_SET_RF_CALIB_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, rf_calib_req, 1, MM_SET_RF_CALIB_CFM, cfm); + error = rwnx_send_msg(rwnx_hw, rf_calib_req, 1, MM_SET_RF_CALIB_CFM, + cfm); return error; }; -int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, struct mm_get_mac_addr_cfm *cfm) +int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, + struct mm_get_mac_addr_cfm *cfm) { struct mm_get_mac_addr_req *get_macaddr_req; int error; @@ -1081,8 +1117,9 @@ int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, struct mm_get_mac_addr_cf RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the MM_GET_MAC_ADDR_REQ message */ - get_macaddr_req = rwnx_msg_zalloc(MM_GET_MAC_ADDR_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_get_mac_addr_req)); + get_macaddr_req = + rwnx_msg_zalloc(MM_GET_MAC_ADDR_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_get_mac_addr_req)); if (!get_macaddr_req) { return -ENOMEM; @@ -1091,20 +1128,22 @@ int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, struct mm_get_mac_addr_cf get_macaddr_req->get = 1; /* Send the MM_GET_MAC_ADDR_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, get_macaddr_req, 1, MM_GET_MAC_ADDR_CFM, cfm); + error = rwnx_send_msg(rwnx_hw, get_macaddr_req, 1, MM_GET_MAC_ADDR_CFM, + cfm); return error; }; -int rwnx_send_get_sta_info_req(struct rwnx_hw *rwnx_hw, u8_l sta_idx, struct mm_get_sta_info_cfm *cfm) +int rwnx_send_get_sta_info_req(struct rwnx_hw *rwnx_hw, u8_l sta_idx, + struct mm_get_sta_info_cfm *cfm) { struct mm_get_sta_info_req *get_info_req; int error; - /* Build the MM_GET_STA_INFO_REQ message */ - get_info_req = rwnx_msg_zalloc(MM_GET_STA_INFO_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_get_sta_info_req)); + get_info_req = + rwnx_msg_zalloc(MM_GET_STA_INFO_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_get_sta_info_req)); if (!get_info_req) { return -ENOMEM; @@ -1113,19 +1152,23 @@ int rwnx_send_get_sta_info_req(struct rwnx_hw *rwnx_hw, u8_l sta_idx, struct mm_ get_info_req->sta_idx = sta_idx; /* Send the MM_GET_STA_INFO_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, get_info_req, 1, MM_GET_STA_INFO_CFM, cfm); + error = rwnx_send_msg(rwnx_hw, get_info_req, 1, MM_GET_STA_INFO_CFM, + cfm); return error; }; -int rwnx_send_set_stack_start_req(struct rwnx_hw *rwnx_hw, u8_l on, u8_l efuse_valid, u8_l set_vendor_info, - u8_l fwtrace_redir_en, struct mm_set_stack_start_cfm *cfm) +int rwnx_send_set_stack_start_req(struct rwnx_hw *rwnx_hw, u8_l on, + u8_l efuse_valid, u8_l set_vendor_info, + u8_l fwtrace_redir_en, + struct mm_set_stack_start_cfm *cfm) { struct mm_set_stack_start_req *req; int error; /* Build the MM_SET_STACK_START_REQ message */ - req = rwnx_msg_zalloc(MM_SET_STACK_START_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_stack_start_req)); + req = rwnx_msg_zalloc(MM_SET_STACK_START_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_stack_start_req)); if (!req) { return -ENOMEM; @@ -1141,14 +1184,50 @@ int rwnx_send_set_stack_start_req(struct rwnx_hw *rwnx_hw, u8_l on, u8_l efuse_v return error; } -int rwnx_send_set_temp_comp_req(struct rwnx_hw *rwnx_hw, struct mm_set_vendor_swconfig_cfm *cfm) +#ifdef CONFIG_TEMP_COMP + +int rwnx_send_get_temp_req(struct rwnx_hw *rwnx_hw, + struct mm_set_vendor_swconfig_cfm *cfm) +{ + struct mm_set_vendor_swconfig_req *req; + int ret; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the TEMP_COMP_GET_REQ message */ + req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_vendor_swconfig_req)); + if (!req) { + AICWFDBG(LOGINFO, "%s msg_alloc fail\n", __func__); + return -ENOMEM; + } + req->swconfig_id = TEMP_COMP_GET_REQ; + + ret = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, cfm); + if (!ret) + AICWFDBG(LOGINFO, "status=%d, temp=%d\n", + cfm->temp_comp_get_cfm.status, + cfm->temp_comp_get_cfm.degree); + else { + AICWFDBG(LOGINFO, "%s msg_fail\n", __func__); + return ret; + } + //rwnx_hw->started_jiffies = jiffies; + rwnx_hw->temp = cfm->temp_comp_get_cfm.degree; + + return ret; +} + +int rwnx_send_set_temp_comp_req(struct rwnx_hw *rwnx_hw, + struct mm_set_vendor_swconfig_cfm *cfm) { struct mm_set_vendor_swconfig_req *req; int ret; RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the TEMP_COMP_SET_REQ message */ - req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_vendor_swconfig_req)); + req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_vendor_swconfig_req)); if (!req) { printk("%s msg_alloc fail\n", __func__); return -ENOMEM; @@ -1166,8 +1245,10 @@ int rwnx_send_set_temp_comp_req(struct rwnx_hw *rwnx_hw, struct mm_set_vendor_sw } return ret; } +#endif -int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, int32_t *param, int32_t *param_out) +int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, + int32_t *param, int32_t *param_out) { struct mm_set_acs_txop_req *req0; struct mm_set_channel_access_req *req1; @@ -1180,33 +1261,38 @@ int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, int error = 0; int i; - switch (hwconfig_id) - { - case ACS_TXOP_REQ: + switch (hwconfig_id) { + case ACS_TXOP_REQ: /* Build the ACS_TXOP_REQ message */ - req0= rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_acs_txop_req) ); + req0 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_set_acs_txop_req)); if (!req0) - return -ENOMEM; + return -ENOMEM; req0->hwconfig_id = hwconfig_id; req0->txop_be = param[0]; req0->txop_bk = param[1]; req0->txop_vi = param[2]; req0->txop_vo = param[3]; printk("set_acs_txop_req: be: %x,bk: %x,vi: %x,vo: %x\n", - req0->txop_be, req0->txop_bk, req0->txop_vi, req0->txop_vo); + req0->txop_be, req0->txop_bk, req0->txop_vi, + req0->txop_vo); /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req0, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, req0, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); break; - case CHANNEL_ACCESS_REQ: + case CHANNEL_ACCESS_REQ: /* Build the CHANNEL_ACCESS_REQ message */ - req1 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_channel_access_req)); + req1 = rwnx_msg_zalloc( + MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_channel_access_req)); if (!req1) - return -ENOMEM; + return -ENOMEM; req1->hwconfig_id = hwconfig_id; req1->edca[0] = param[0]; req1->edca[1] = param[1]; - req1->edca[2] = param[2]; + req1->edca[2] = param[2]; req1->edca[3] = param[3]; req1->vif_idx = param[4]; req1->retry_cnt = param[5]; @@ -1217,17 +1303,26 @@ int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, req1->rc_retry_cnt[1] = param[10]; req1->rc_retry_cnt[2] = param[11]; req1->ccademod_th = param[12]; - printk("set_channel_access_req:edca[]= %x %x %x %x\nvif_idx: %x, retry_cnt: %x, rts_en: %x, long_nav_en: %x, cfe_en: %x, rc_retry_cnt: %x:%x:%x, ccademod_th = %d\n", - req1->edca[0], req1->edca[1], req1->edca[2], req1->edca[3], req1->vif_idx, req1->retry_cnt, req1->rts_en, req1->long_nav_en, req1->cfe_en, req1->rc_retry_cnt[0],req1->rc_retry_cnt[1], req1->rc_retry_cnt[2], req1->ccademod_th); + req1->remove_1m2m = param[13]; + printk("set_channel_access_req:edca[]= %x %x %x %x\nvif_idx: %x, retry_cnt: %x, rts_en: %x, long_nav_en: %x, cfe_en: %x, rc_retry_cnt: %x:%x:%x, ccademod_th = %d remove_1m2m = %x\n", + req1->edca[0], req1->edca[1], req1->edca[2], + req1->edca[3], req1->vif_idx, req1->retry_cnt, + req1->rts_en, req1->long_nav_en, req1->cfe_en, + req1->rc_retry_cnt[0], req1->rc_retry_cnt[1], + req1->rc_retry_cnt[2], req1->ccademod_th, + req1->remove_1m2m); /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req1, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, req1, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); break; - case MAC_TIMESCALE_REQ: + case MAC_TIMESCALE_REQ: /* Build the MAC_TIMESCALE_REQ message */ - req2 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_mac_timescale_req)); + req2 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_set_mac_timescale_req)); if (!req2) - return -ENOMEM; + return -ENOMEM; req2->hwconfig_id = hwconfig_id; req2->sifsA_time = param[0]; req2->sifsB_time = param[1]; @@ -1236,249 +1331,306 @@ int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, req2->rx_startdelay_long = param[4]; req2->rx_startdelay_short = param[5]; printk("set_mac_timescale_req:sifsA_time: %x, sifsB_time: %x, slot_time: %x, rx_startdelay ofdm:%x long %x short %x\n", - req2->sifsA_time, req2->sifsB_time, req2->slot_time, req2->rx_startdelay_ofdm, req2->rx_startdelay_long, req2->rx_startdelay_short); + req2->sifsA_time, req2->sifsB_time, req2->slot_time, + req2->rx_startdelay_ofdm, req2->rx_startdelay_long, + req2->rx_startdelay_short); /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req2, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, req2, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); break; - case CCA_THRESHOLD_REQ: + case CCA_THRESHOLD_REQ: /* Build the CCA_THRESHOLD_REQ message */ - req3 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_cca_threshold_req)); + req3 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_set_cca_threshold_req)); if (!req3) - return -ENOMEM; + return -ENOMEM; req3->hwconfig_id = hwconfig_id; - req3->auto_cca_en = param[0]; + req3->auto_cca_en = param[0]; req3->cca20p_rise_th = param[1]; req3->cca20s_rise_th = param[2]; req3->cca20p_fall_th = param[3]; req3->cca20s_fall_th = param[4]; printk("cca_threshold_req: auto_cca_en:%d\ncca20p_rise_th = %d\ncca20s_rise_th = %d\ncca20p_fall_th = %d\ncca20s_fall_th = %d\n", - req3->auto_cca_en, req3->cca20p_rise_th, req3->cca20s_rise_th, req3->cca20p_fall_th, req3->cca20s_fall_th); + req3->auto_cca_en, req3->cca20p_rise_th, + req3->cca20s_rise_th, req3->cca20p_fall_th, + req3->cca20s_fall_th); /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req3, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, req3, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); break; - case BWMODE_REQ: + case BWMODE_REQ: /* Build the SET_BWMODE_REQ message */ - req4 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_bwmode_req)); + req4 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_set_bwmode_req)); if (!req4) - return -ENOMEM; + return -ENOMEM; req4->hwconfig_id = hwconfig_id; req4->bwmode = param[0]; printk("bwmode :%d\n", req4->bwmode); - /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req4, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req4, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); break; case CHIP_TEMP_GET_REQ: - if ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC) || - (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW)) - { - struct mm_get_chip_temp_req *req; - struct mm_set_vendor_hwconfig_cfm cfm = {0,}; - /* Build the CHIP_TEMP_GET_REQ message */ - req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_get_chip_temp_req)); - if (!req) - return -ENOMEM; - req->hwconfig_id = hwconfig_id; - /* Send the MM_SET_VENDOR_HWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, &cfm); - if (!error) { - if (param_out) { - param_out[0] = (int32_t)cfm.chip_temp_cfm.degree; - } - printk("get_chip_temp degree=%d\n", cfm.chip_temp_cfm.degree); - } else { - printk("get_chip_temp err=%d\n", error); - } - } + if ((rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC) || + (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW)) { + struct mm_get_chip_temp_req *req; + struct mm_set_vendor_hwconfig_cfm cfm = { + 0, + }; + /* Build the CHIP_TEMP_GET_REQ message */ + req = rwnx_msg_zalloc( + MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_get_chip_temp_req)); + if (!req) + return -ENOMEM; + req->hwconfig_id = hwconfig_id; + /* Send the MM_SET_VENDOR_HWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_HWCONFIG_CFM, &cfm); + if (!error) { + if (param_out) { + param_out[0] = + (int32_t)cfm.chip_temp_cfm + .degree; + } + printk("get_chip_temp degree=%d\n", + cfm.chip_temp_cfm.degree); + } else { + printk("get_chip_temp err=%d\n", error); + } + } break; - case AP_PS_LEVEL_SET_REQ: - /* + case AP_PS_LEVEL_SET_REQ: + /* AP_PS_CLK_1 = 1, // 3:7 -> active 3, doze 7 AP_PS_CLK_2, // 5:5 -> active 5, doze 5 AP_PS_CLK_3, // 7:3 -> active 7, doze 3 AP_PS_CLK_4, // 8:2 -> active 8, doze 2 AP_PS_CLK_5, // 9:1 -> active 9, doze 1 */ - /* Build the MM_SET_VENDOR_HWCONFIG_REQ message */ - req5 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_ap_ps_level_req)); - if (!req5) { - return -ENOMEM; - } - req5->hwconfig_id = hwconfig_id; - req5->ap_ps_level = param[0]; + /* Build the MM_SET_VENDOR_HWCONFIG_REQ message */ + req5 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_set_ap_ps_level_req)); + if (!req5) { + return -ENOMEM; + } + req5->hwconfig_id = hwconfig_id; + req5->ap_ps_level = param[0]; - /* Send the MM_GET_MAC_ADDR_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req5, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); - if(!error) - printk("set ap_ps_level=%d \n",param[0]); - break; + /* Send the MM_GET_MAC_ADDR_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req5, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (!error) + printk("set ap_ps_level=%d \n", param[0]); + break; - case CUSTOMIZED_FREQ_REQ: - /* Build the CUSTOMIZED_FREQ_REQ message */ - req6 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_customized_freq_req)); - if (!req6) - return -ENOMEM; - req5->hwconfig_id = hwconfig_id; - for (i = 0; i < 4; i++) { - req6->raw_freq[i] = param [i]; - req6->map_freq[i] = param [i + 4]; - } - printk("customized_freq_req: raw_freq[ %d %d %d %d ], map_freq[ %d %d %d %d]\n", - param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7]); - /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req5, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + case CUSTOMIZED_FREQ_REQ: + /* Build the CUSTOMIZED_FREQ_REQ message */ + req6 = rwnx_msg_zalloc( + MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_customized_freq_req)); + if (!req6) + return -ENOMEM; + req5->hwconfig_id = hwconfig_id; + for (i = 0; i < 4; i++) { + req6->raw_freq[i] = param[i]; + req6->map_freq[i] = param[i + 4]; + } + printk("customized_freq_req: raw_freq[ %d %d %d %d ], map_freq[ %d %d %d %d]\n", + param[0], param[1], param[2], param[3], param[4], + param[5], param[6], param[7]); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req5, 1, + MM_SET_VENDOR_HWCONFIG_CFM, NULL); - break; - default: + break; + default: return -ENOMEM; } - return error; + return error; } -int rwnx_send_vendor_swconfig_req(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, int32_t *param_in, int32_t *param_out) +int rwnx_send_vendor_swconfig_req(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, + int32_t *param_in, int32_t *param_out) { - struct mm_set_vendor_swconfig_req *req; - struct mm_set_vendor_swconfig_cfm cfm = {0,}; - int error; + struct mm_set_vendor_swconfig_req *req; + struct mm_set_vendor_swconfig_cfm cfm = { + 0, + }; + int error; - req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_vendor_swconfig_req)); - if (!req) { - return -ENOMEM; - } - req->swconfig_id = swconfig_id; + req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_vendor_swconfig_req)); + if (!req) { + return -ENOMEM; + } + req->swconfig_id = swconfig_id; - switch (swconfig_id) - { - case BCN_CFG_REQ: - /* Build the BCN_CFG_REQ message */ - req->bcn_cfg_req.tim_bcmc_ignored_enable = (bool_l)param_in[0]; - printk("bcn_cfg_req: tim_bcmc_ignd=%d\n", req->bcn_cfg_req.tim_bcmc_ignored_enable); - /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); - if (!error) { - param_out[0] = (int32_t)cfm.bcn_cfg_cfm.tim_bcmc_ignored_status; - printk("status=%d\n", cfm.bcn_cfg_cfm.tim_bcmc_ignored_status); - } - break; + switch (swconfig_id) { + case BCN_CFG_REQ: + /* Build the BCN_CFG_REQ message */ + req->bcn_cfg_req.tim_bcmc_ignored_enable = (bool_l)param_in[0]; + printk("bcn_cfg_req: tim_bcmc_ignd=%d\n", + req->bcn_cfg_req.tim_bcmc_ignored_enable); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = + (int32_t)cfm.bcn_cfg_cfm.tim_bcmc_ignored_status; + printk("status=%d\n", + cfm.bcn_cfg_cfm.tim_bcmc_ignored_status); + } + break; - case TEMP_COMP_SET_REQ: - /* Build the TEMP_COMP_SET_REQ message */ - req->temp_comp_set_req.enable = (u8_l)param_in[0]; - req->temp_comp_set_req.tmr_period_ms = (u32_l)param_in[1]; - printk("temp_comp_set_req: en=%d, tmr=%x\n", - req->temp_comp_set_req.enable, req->temp_comp_set_req.tmr_period_ms); - /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); - if (!error) { - param_out[0] = (int32_t)cfm.temp_comp_set_cfm.status; - printk("status=%d\n", cfm.temp_comp_set_cfm.status); - } - break; + case TEMP_COMP_SET_REQ: + /* Build the TEMP_COMP_SET_REQ message */ + req->temp_comp_set_req.enable = (u8_l)param_in[0]; + req->temp_comp_set_req.tmr_period_ms = (u32_l)param_in[1]; + printk("temp_comp_set_req: en=%d, tmr=%x\n", + req->temp_comp_set_req.enable, + req->temp_comp_set_req.tmr_period_ms); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (int32_t)cfm.temp_comp_set_cfm.status; + printk("status=%d\n", cfm.temp_comp_set_cfm.status); + } + break; - case TEMP_COMP_GET_REQ: - printk("temp_comp_get_req\n"); - /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); - if (!error) { - param_out[0] = (int32_t)cfm.temp_comp_get_cfm.status; - param_out[1] = (int32_t)cfm.temp_comp_get_cfm.degree; - printk("status=%d, degree=%d\n", - cfm.temp_comp_get_cfm.status, cfm.temp_comp_get_cfm.degree); - } - break; + case TEMP_COMP_GET_REQ: + printk("temp_comp_get_req\n"); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (int32_t)cfm.temp_comp_get_cfm.status; + param_out[1] = (int32_t)cfm.temp_comp_get_cfm.degree; + printk("status=%d, degree=%d\n", + cfm.temp_comp_get_cfm.status, + cfm.temp_comp_get_cfm.degree); + } + break; - case EXT_FLAGS_SET_REQ: - /* Build the EXT_FLAGS_SET_REQ message */ - req->ext_flags_set_req.user_flags = (u32_l)param_in[0]; - printk("ext_flags_set_req: flags=%x\n", - req->ext_flags_set_req.user_flags); - /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); - if (!error) { - param_out[0] = (uint32_t)cfm.ext_flags_set_cfm.user_flags; - printk("cfm flags=%x\n", cfm.ext_flags_set_cfm.user_flags); - } - break; + case EXT_FLAGS_SET_REQ: + /* Build the EXT_FLAGS_SET_REQ message */ + req->ext_flags_set_req.user_flags = (u32_l)param_in[0]; + printk("ext_flags_set_req: flags=%x\n", + req->ext_flags_set_req.user_flags); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = + (uint32_t)cfm.ext_flags_set_cfm.user_flags; + printk("cfm flags=%x\n", + cfm.ext_flags_set_cfm.user_flags); + } + break; - case EXT_FLAGS_GET_REQ: - /* Build the EXT_FLAGS_GET_REQ message */ - printk("ext_flags_get_req\n"); - /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); - if (!error) { - param_out[0] = (uint32_t)cfm.ext_flags_get_cfm.user_flags; - printk("cfm flags=%x\n", cfm.ext_flags_get_cfm.user_flags); - } - break; + case EXT_FLAGS_GET_REQ: + /* Build the EXT_FLAGS_GET_REQ message */ + printk("ext_flags_get_req\n"); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = + (uint32_t)cfm.ext_flags_get_cfm.user_flags; + printk("cfm flags=%x\n", + cfm.ext_flags_get_cfm.user_flags); + } + break; - case EXT_FLAGS_MASK_SET_REQ: - /* Build the EXT_FLAGS_MASK_SET_REQ message */ - req->ext_flags_mask_set_req.user_flags_mask = (u32_l)param_in[0]; - req->ext_flags_mask_set_req.user_flags_val = (u32_l)param_in[1]; - printk("ext_flags_mask_set_req: flags mask=0x%x, val=0x%x\n", - req->ext_flags_mask_set_req.user_flags_mask, req->ext_flags_mask_set_req.user_flags_val); - /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); - if (!error) { - param_out[0] = (uint32_t)cfm.ext_flags_mask_set_cfm.user_flags; - printk("cfm flags=%x\n", cfm.ext_flags_mask_set_cfm.user_flags); - } - break; + case EXT_FLAGS_MASK_SET_REQ: + /* Build the EXT_FLAGS_MASK_SET_REQ message */ + req->ext_flags_mask_set_req.user_flags_mask = + (u32_l)param_in[0]; + req->ext_flags_mask_set_req.user_flags_val = (u32_l)param_in[1]; + printk("ext_flags_mask_set_req: flags mask=0x%x, val=0x%x\n", + req->ext_flags_mask_set_req.user_flags_mask, + req->ext_flags_mask_set_req.user_flags_val); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, + MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = + (uint32_t)cfm.ext_flags_mask_set_cfm.user_flags; + printk("cfm flags=%x\n", + cfm.ext_flags_mask_set_cfm.user_flags); + } + break; - default: - error = -ENOMEM; - break; - } + default: + error = -ENOMEM; + break; + } - return error; + return error; } -int rwnx_send_mask_set_ext_flags_req(struct rwnx_hw *rwnx_hw, uint32_t flags_mask, uint32_t flags_val, struct mm_set_vendor_swconfig_cfm *cfm) +int rwnx_send_mask_set_ext_flags_req(struct rwnx_hw *rwnx_hw, + uint32_t flags_mask, uint32_t flags_val, + struct mm_set_vendor_swconfig_cfm *cfm) { - struct mm_set_vendor_swconfig_req *req; - int ret; + struct mm_set_vendor_swconfig_req *req; + int ret; - RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the REQ message */ - req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_vendor_swconfig_req)); - if (!req) { - AICWFDBG(LOGERROR, "%s msg_alloc fail\n", __func__); - return -ENOMEM; - } - req->swconfig_id = EXT_FLAGS_MASK_SET_REQ; - req->ext_flags_mask_set_req.user_flags_mask = (u32_l)flags_mask; - req->ext_flags_mask_set_req.user_flags_val = (u32_l)flags_val; + RWNX_DBG(RWNX_FN_ENTRY_STR); + /* Build the REQ message */ + req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_vendor_swconfig_req)); + if (!req) { + AICWFDBG(LOGERROR, "%s msg_alloc fail\n", __func__); + return -ENOMEM; + } + req->swconfig_id = EXT_FLAGS_MASK_SET_REQ; + req->ext_flags_mask_set_req.user_flags_mask = (u32_l)flags_mask; + req->ext_flags_mask_set_req.user_flags_val = (u32_l)flags_val; - ret = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, cfm); - if (!ret) { - AICWFDBG(LOGINFO, "curr ext_flags=%x\n", cfm->ext_flags_mask_set_cfm.user_flags); - } else { - AICWFDBG(LOGERROR, "%s send_msg_fail\n", __func__); - return ret; - } - return ret; + ret = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, cfm); + if (!ret) { + AICWFDBG(LOGINFO, "curr ext_flags=%x\n", + cfm->ext_flags_mask_set_cfm.user_flags); + } else { + AICWFDBG(LOGERROR, "%s send_msg_fail\n", __func__); + return ret; + } + return ret; } #ifdef CONFIG_SDIO_BT -int rwnx_sdio_bt_send_req(struct rwnx_hw *rwnx_hw,uint32_t len, struct sk_buff *skb) +int rwnx_sdio_bt_send_req(struct rwnx_hw *rwnx_hw, uint32_t len, + struct sk_buff *skb) { struct mm_bt_send_req *req; struct mm_bt_send_cfm cfm; int error; + if (testmode) { + AICWFDBG(LOGERROR, "%s testmode can not send\n", __func__); + return 0; + } cfm.status = 0; - req = rwnx_msg_zalloc(TDLS_SDIO_BT_SEND_REQ, TASK_TDLS, DRV_TASK_ID, sizeof(struct mm_bt_send_req)); + req = rwnx_msg_zalloc(TDLS_SDIO_BT_SEND_REQ, TASK_TDLS, DRV_TASK_ID, + sizeof(struct mm_bt_send_req)); - if (!req) { + if (!req) { return -ENOMEM; - } + } req->data_len = len; - memcpy(req->bt_data,skb->data,len); + memcpy(req->bt_data, skb->data, len); error = rwnx_send_msg(rwnx_hw, req, 1, TDLS_SDIO_BT_SEND_CFM, &cfm); - if(!cfm.status){ + if (!cfm.status) { printk("bt send no cfm"); } @@ -1486,280 +1638,625 @@ int rwnx_sdio_bt_send_req(struct rwnx_hw *rwnx_hw,uint32_t len, struct sk_buff * } #endif -int rwnx_send_get_fw_version_req(struct rwnx_hw *rwnx_hw, struct mm_get_fw_version_cfm *cfm) +int rwnx_send_get_fw_version_req(struct rwnx_hw *rwnx_hw, + struct mm_get_fw_version_cfm *cfm) { - void *req; - int error; + void *req; + int error; - /* Build the MM_GET_FW_VERSION_REQ message */ - req = rwnx_msg_zalloc(MM_GET_FW_VERSION_REQ, TASK_MM, DRV_TASK_ID, sizeof(u8)); + /* Build the MM_GET_FW_VERSION_REQ message */ + req = rwnx_msg_zalloc(MM_GET_FW_VERSION_REQ, TASK_MM, DRV_TASK_ID, + sizeof(u8)); - if (!req) { - return -ENOMEM; - } + if (!req) { + return -ENOMEM; + } - /* Send the MM_GET_FW_VERSION_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, req, 1, MM_GET_FW_VERSION_CFM, cfm); + /* Send the MM_GET_FW_VERSION_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_GET_FW_VERSION_CFM, cfm); - return error; + return error; } int rwnx_send_txpwr_lvl_req(struct rwnx_hw *rwnx_hw) { - struct mm_set_txpwr_lvl_req *txpwr_lvl_req; - txpwr_lvl_conf_v2_t txpwr_lvl_v2_tmp; - txpwr_lvl_conf_v2_t *txpwr_lvl_v2; - int error; + struct mm_set_txpwr_lvl_req *txpwr_lvl_req; + txpwr_lvl_conf_v2_t txpwr_lvl_v2_tmp; + txpwr_lvl_conf_v2_t *txpwr_lvl_v2; + int error; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_SET_TXPWR_LVL_REQ message */ - txpwr_lvl_req = rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_txpwr_lvl_req)); + /* Build the MM_SET_TXPWR_LVL_REQ message */ + txpwr_lvl_req = + rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_lvl_req)); - if (!txpwr_lvl_req) { - return -ENOMEM; - } + if (!txpwr_lvl_req) { + return -ENOMEM; + } - txpwr_lvl_v2 = &txpwr_lvl_v2_tmp; + txpwr_lvl_v2 = &txpwr_lvl_v2_tmp; - get_userconfig_txpwr_lvl_v2_in_fdrv(txpwr_lvl_v2); + get_userconfig_txpwr_lvl_v2_in_fdrv(txpwr_lvl_v2); - if (txpwr_lvl_v2->enable == 0) { - rwnx_msg_free(rwnx_hw, txpwr_lvl_req); - return 0; - } else { - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v2->enable); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[11]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[11]); + if (txpwr_lvl_v2->enable == 0) { + rwnx_msg_free(rwnx_hw, txpwr_lvl_req); + return 0; + } else { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, + txpwr_lvl_v2->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[11]); - if ((testmode == 0) && (chip_sub_id == 0)) { - txpwr_lvl_req->txpwr_lvl.enable = txpwr_lvl_v2->enable; - txpwr_lvl_req->txpwr_lvl.dsss = txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]; // 11M - txpwr_lvl_req->txpwr_lvl.ofdmlowrate_2g4= txpwr_lvl_v2->pwrlvl_11ax_2g4[4]; // MCS4 - txpwr_lvl_req->txpwr_lvl.ofdm64qam_2g4 = txpwr_lvl_v2->pwrlvl_11ax_2g4[7]; // MCS7 - txpwr_lvl_req->txpwr_lvl.ofdm256qam_2g4 = txpwr_lvl_v2->pwrlvl_11ax_2g4[9]; // MCS9 - txpwr_lvl_req->txpwr_lvl.ofdm1024qam_2g4= txpwr_lvl_v2->pwrlvl_11ax_2g4[11]; // MCS11 - txpwr_lvl_req->txpwr_lvl.ofdmlowrate_5g = 13; // unused - txpwr_lvl_req->txpwr_lvl.ofdm64qam_5g = 13; // unused - txpwr_lvl_req->txpwr_lvl.ofdm256qam_5g = 13; // unused - txpwr_lvl_req->txpwr_lvl.ofdm1024qam_5g = 13; // unused - } else { - txpwr_lvl_req->txpwr_lvl_v2 = *txpwr_lvl_v2; - } + if ((testmode == 0) && (chip_sub_id == 0)) { + txpwr_lvl_req->txpwr_lvl.enable = txpwr_lvl_v2->enable; + txpwr_lvl_req->txpwr_lvl.dsss = + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]; // 11M + txpwr_lvl_req->txpwr_lvl.ofdmlowrate_2g4 = + txpwr_lvl_v2->pwrlvl_11ax_2g4[4]; // MCS4 + txpwr_lvl_req->txpwr_lvl.ofdm64qam_2g4 = + txpwr_lvl_v2->pwrlvl_11ax_2g4[7]; // MCS7 + txpwr_lvl_req->txpwr_lvl.ofdm256qam_2g4 = + txpwr_lvl_v2->pwrlvl_11ax_2g4[9]; // MCS9 + txpwr_lvl_req->txpwr_lvl.ofdm1024qam_2g4 = + txpwr_lvl_v2->pwrlvl_11ax_2g4[11]; // MCS11 + txpwr_lvl_req->txpwr_lvl.ofdmlowrate_5g = 13; // unused + txpwr_lvl_req->txpwr_lvl.ofdm64qam_5g = 13; // unused + txpwr_lvl_req->txpwr_lvl.ofdm256qam_5g = 13; // unused + txpwr_lvl_req->txpwr_lvl.ofdm1024qam_5g = 13; // unused + } else { + txpwr_lvl_req->txpwr_lvl_v2 = *txpwr_lvl_v2; + } - /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, txpwr_lvl_req, 1, MM_SET_TXPWR_IDX_LVL_CFM, NULL); + /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_lvl_req, 1, + MM_SET_TXPWR_IDX_LVL_CFM, NULL); - return (error); - } + return (error); + } } int rwnx_send_txpwr_lvl_v3_req(struct rwnx_hw *rwnx_hw) { - struct mm_set_txpwr_lvl_req *txpwr_lvl_req; - txpwr_lvl_conf_v3_t txpwr_lvl_v3_tmp; - txpwr_lvl_conf_v3_t *txpwr_lvl_v3; + struct mm_set_txpwr_lvl_req *txpwr_lvl_req; + txpwr_lvl_conf_v3_t txpwr_lvl_v3_tmp; + txpwr_lvl_conf_v3_t *txpwr_lvl_v3; txpwr_loss_conf_t txpwr_loss_tmp; - txpwr_loss_conf_t *txpwr_loss; - int error; + txpwr_loss_conf_t *txpwr_loss; + int error; int i; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_SET_TXPWR_LVL_REQ message */ - txpwr_lvl_req = rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_txpwr_lvl_req)); + /* Build the MM_SET_TXPWR_LVL_REQ message */ + txpwr_lvl_req = + rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_lvl_req)); - if (!txpwr_lvl_req) { - return -ENOMEM; - } + if (!txpwr_lvl_req) { + return -ENOMEM; + } - txpwr_lvl_v3 = &txpwr_lvl_v3_tmp; - txpwr_loss = &txpwr_loss_tmp; - txpwr_loss->loss_enable = 0; + txpwr_lvl_v3 = &txpwr_lvl_v3_tmp; + txpwr_loss = &txpwr_loss_tmp; + txpwr_loss->loss_enable_2g4 = 0; + txpwr_loss->loss_enable_5g = 0; - get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_v3); - get_userconfig_txpwr_loss(txpwr_loss); + get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_v3); + get_userconfig_txpwr_loss(txpwr_loss); - if (txpwr_loss->loss_enable == 1) { - AICWFDBG(LOGINFO, "%s:loss_value:%d\r\n", __func__, txpwr_loss->loss_value); - - for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[i] += txpwr_loss->loss_value; - for (i = 0; i <= 9; i++) - txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[i] += txpwr_loss->loss_value; - for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11ax_2g4[i] += txpwr_loss->loss_value; + if (txpwr_loss->loss_enable_2g4 == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11a_5g[i] += txpwr_loss->loss_value; - for (i = 0; i <= 9; i++) - txpwr_lvl_v3->pwrlvl_11n_11ac_5g[i] += txpwr_loss->loss_value; - for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11ax_5g[i] += txpwr_loss->loss_value; - } + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[i] -= + txpwr_loss->loss_value_2g4; + for (i = 0; i <= 9; i++) + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[i] -= + txpwr_loss->loss_value_2g4; + for (i = 0; i <= 11; i++) + txpwr_lvl_v3->pwrlvl_11ax_2g4[i] -= + txpwr_loss->loss_value_2g4; + } - if (txpwr_lvl_v3->enable == 0) { - rwnx_msg_free(rwnx_hw, txpwr_lvl_req); - return 0; - } else { - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v3->enable); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[11]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[11]); + if (txpwr_loss->loss_enable_5g == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); - AICWFDBG(LOGINFO, "%s:lvl_11a_1m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_11a_2m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_11a_5m5_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_11a_11m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[5]); - AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[6]); - AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[7]); - AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[8]); - AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[9]); - AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[10]); - AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[11]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[5]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[6]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[7]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[8]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[5]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[6]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[7]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[8]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[10]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[11]); + for (i = 0; i <= 11; i++) + txpwr_lvl_v3->pwrlvl_11a_5g[i] -= + txpwr_loss->loss_value_5g; + for (i = 0; i <= 9; i++) + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[i] -= + txpwr_loss->loss_value_5g; + for (i = 0; i <= 11; i++) + txpwr_lvl_v3->pwrlvl_11ax_5g[i] -= + txpwr_loss->loss_value_5g; + } - txpwr_lvl_req->txpwr_lvl_v3 = *txpwr_lvl_v3; + if (txpwr_lvl_v3->enable == 0) { + rwnx_msg_free(rwnx_hw, txpwr_lvl_req); + return 0; + } else { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, + txpwr_lvl_v3->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[11]); - /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, txpwr_lvl_req, 1, MM_SET_TXPWR_IDX_LVL_CFM, NULL); + AICWFDBG(LOGINFO, "%s:lvl_11a_1m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11a_2m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11a_5m5_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11a_11m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[11]); - return (error); - } + txpwr_lvl_req->txpwr_lvl_v3 = *txpwr_lvl_v3; + + /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_lvl_req, 1, + MM_SET_TXPWR_IDX_LVL_CFM, NULL); + + return (error); + } +} + +int rwnx_send_txpwr_lvl_v4_req(struct rwnx_hw *rwnx_hw) +{ + struct mm_set_txpwr_lvl_req *txpwr_lvl_req; + txpwr_lvl_conf_v4_t txpwr_lvl_v4_tmp; + txpwr_lvl_conf_v4_t *txpwr_lvl_v4; + txpwr_loss_conf_t txpwr_loss_tmp; + txpwr_loss_conf_t *txpwr_loss; + int error; + int i; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MM_SET_TXPWR_LVL_REQ message */ + txpwr_lvl_req = + rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_lvl_req)); + + if (!txpwr_lvl_req) { + return -ENOMEM; + } + + txpwr_lvl_v4 = &txpwr_lvl_v4_tmp; + txpwr_loss = &txpwr_loss_tmp; + txpwr_loss->loss_enable_2g4 = 0; + txpwr_loss->loss_enable_5g = 0; + + get_userconfig_txpwr_lvl_v4_in_fdrv(txpwr_lvl_v4); + get_userconfig_txpwr_loss(txpwr_loss); + + if (txpwr_loss->loss_enable_2g4 == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + + for (i = 0; i <= 11; i++) + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[i] -= + txpwr_loss->loss_value_2g4; + for (i = 0; i <= 9; i++) + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[i] -= + txpwr_loss->loss_value_2g4; + for (i = 0; i <= 11; i++) + txpwr_lvl_v4->pwrlvl_11ax_2g4[i] -= + txpwr_loss->loss_value_2g4; + } + + if (txpwr_loss->loss_enable_5g == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + + for (i = 0; i <= 7; i++) + txpwr_lvl_v4->pwrlvl_11a_5g[i] -= + txpwr_loss->loss_value_5g; + for (i = 0; i <= 9; i++) + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[i] -= + txpwr_loss->loss_value_5g; + for (i = 0; i <= 11; i++) + txpwr_lvl_v4->pwrlvl_11ax_5g[i] -= + txpwr_loss->loss_value_5g; + } + + if (txpwr_lvl_v4->enable == 0) { + rwnx_msg_free(rwnx_hw, txpwr_lvl_req); + return 0; + } else { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, + txpwr_lvl_v4->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[11]); + + AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[11]); + + txpwr_lvl_req->txpwr_lvl_v4 = *txpwr_lvl_v4; + + /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_lvl_req, 1, + MM_SET_TXPWR_IDX_LVL_CFM, NULL); + + return (error); + } } int rwnx_send_txpwr_lvl_adj_req(struct rwnx_hw *rwnx_hw) { - struct mm_set_txpwr_lvl_adj_req *txpwr_lvl_adj_req; - txpwr_lvl_adj_conf_t txpwr_lvl_adj_tmp; - txpwr_lvl_adj_conf_t *txpwr_lvl_adj; - int error; + struct mm_set_txpwr_lvl_adj_req *txpwr_lvl_adj_req; + txpwr_lvl_adj_conf_t txpwr_lvl_adj_tmp; + txpwr_lvl_adj_conf_t *txpwr_lvl_adj; + int error; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_SET_TXPWR_LVL_REQ message */ - txpwr_lvl_adj_req = rwnx_msg_zalloc(MM_SET_TXPWR_LVL_ADJ_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_txpwr_lvl_adj_req)); + /* Build the MM_SET_TXPWR_LVL_REQ message */ + txpwr_lvl_adj_req = + rwnx_msg_zalloc(MM_SET_TXPWR_LVL_ADJ_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_lvl_adj_req)); - if (!txpwr_lvl_adj_req) { - return -ENOMEM; - } + if (!txpwr_lvl_adj_req) { + return -ENOMEM; + } - txpwr_lvl_adj = &txpwr_lvl_adj_tmp; + txpwr_lvl_adj = &txpwr_lvl_adj_tmp; - get_userconfig_txpwr_lvl_adj_in_fdrv(txpwr_lvl_adj); + get_userconfig_txpwr_lvl_adj_in_fdrv(txpwr_lvl_adj); - if (txpwr_lvl_adj->enable == 0) { - rwnx_msg_free(rwnx_hw, txpwr_lvl_adj_req); - return 0; - } else { - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_adj->enable); - AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_1_4:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_5_9:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_10_13:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[2]); + if (txpwr_lvl_adj->enable == 0) { + rwnx_msg_free(rwnx_hw, txpwr_lvl_adj_req); + return 0; + } else { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, + txpwr_lvl_adj->enable); + AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_1_4:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_5_9:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_10_13:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_42:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_58:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_106:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_122:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_138:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_155:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_42:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_58:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_106:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_122:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_138:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_155:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[5]); - txpwr_lvl_adj_req->txpwr_lvl_adj = *txpwr_lvl_adj; + txpwr_lvl_adj_req->txpwr_lvl_adj = *txpwr_lvl_adj; - /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, txpwr_lvl_adj_req, 1, MM_SET_TXPWR_LVL_ADJ_CFM, NULL); + /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_lvl_adj_req, 1, + MM_SET_TXPWR_LVL_ADJ_CFM, NULL); - return (error); - } + return (error); + } } int rwnx_send_txpwr_idx_req(struct rwnx_hw *rwnx_hw) @@ -1771,8 +2268,9 @@ int rwnx_send_txpwr_idx_req(struct rwnx_hw *rwnx_hw) RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the MM_SET_TXPWR_IDX_LVL_REQ message */ - txpwr_idx_req = rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_txpwr_idx_req)); + txpwr_idx_req = + rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_idx_req)); if (!txpwr_idx_req) { return -ENOMEM; @@ -1797,7 +2295,8 @@ int rwnx_send_txpwr_idx_req(struct rwnx_hw *rwnx_hw) return 0; } else { /* Send the MM_SET_TXPWR_IDX_LVL_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, txpwr_idx_req, 1, MM_SET_TXPWR_IDX_LVL_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, txpwr_idx_req, 1, + MM_SET_TXPWR_IDX_LVL_CFM, NULL); return error; } @@ -1812,27 +2311,28 @@ int rwnx_send_txpwr_ofst_req(struct rwnx_hw *rwnx_hw) RWNX_DBG(RWNX_FN_ENTRY_STR); /* Build the MM_SET_TXPWR_OFST_REQ message */ - txpwr_ofst_req = rwnx_msg_zalloc(MM_SET_TXPWR_OFST_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_txpwr_ofst_req)); + txpwr_ofst_req = + rwnx_msg_zalloc(MM_SET_TXPWR_OFST_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_ofst_req)); if (!txpwr_ofst_req) { return -ENOMEM; } txpwr_ofst = &txpwr_ofst_req->txpwr_ofst; - txpwr_ofst->enable = 1; - txpwr_ofst->chan_1_4 = 0; - txpwr_ofst->chan_5_9 = 0; - txpwr_ofst->chan_10_13 = 0; - txpwr_ofst->chan_36_64 = 0; + txpwr_ofst->enable = 1; + txpwr_ofst->chan_1_4 = 0; + txpwr_ofst->chan_5_9 = 0; + txpwr_ofst->chan_10_13 = 0; + txpwr_ofst->chan_36_64 = 0; txpwr_ofst->chan_100_120 = 0; txpwr_ofst->chan_122_140 = 0; txpwr_ofst->chan_142_165 = 0; - if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801){ + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { get_userconfig_txpwr_ofst(txpwr_ofst); - }else if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { get_userconfig_txpwr_ofst_in_fdrv(txpwr_ofst); } @@ -1841,7 +2341,8 @@ int rwnx_send_txpwr_ofst_req(struct rwnx_hw *rwnx_hw) return 0; } else { /* Send the MM_SET_TXPWR_OFST_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, txpwr_ofst_req, 1, MM_SET_TXPWR_OFST_CFM, NULL); + error = rwnx_send_msg(rwnx_hw, txpwr_ofst_req, 1, + MM_SET_TXPWR_OFST_CFM, NULL); return error; } @@ -1849,62 +2350,317 @@ int rwnx_send_txpwr_ofst_req(struct rwnx_hw *rwnx_hw) int rwnx_send_txpwr_ofst2x_req(struct rwnx_hw *rwnx_hw) { - struct mm_set_txpwr_ofst_req *txpwr_ofst_req; - txpwr_ofst2x_conf_t *txpwr_ofst2x; - int error = 0; - int type, ch_grp; + struct mm_set_txpwr_ofst_req *txpwr_ofst_req; + txpwr_ofst2x_conf_t *txpwr_ofst2x; + int error = 0; + int type, ch_grp; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_SET_TXPWR_OFST_REQ message */ - txpwr_ofst_req = rwnx_msg_zalloc(MM_SET_TXPWR_OFST_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_txpwr_ofst_req)); + /* Build the MM_SET_TXPWR_OFST_REQ message */ + txpwr_ofst_req = + rwnx_msg_zalloc(MM_SET_TXPWR_OFST_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_ofst_req)); - if (!txpwr_ofst_req) { - return -ENOMEM; - } + if (!txpwr_ofst_req) { + return -ENOMEM; + } - txpwr_ofst2x = &txpwr_ofst_req->txpwr_ofst2x; - txpwr_ofst2x->enable = 0; - for (type = 0; type < 3; type++) { - for (ch_grp = 0; ch_grp < 6; ch_grp++) { - if (ch_grp < 3) { - txpwr_ofst2x->pwrofst2x_tbl_2g4[type][ch_grp] = 0; - } - txpwr_ofst2x->pwrofst2x_tbl_5g[type][ch_grp] = 0; - } - } - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80){ - get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x); - } - if (txpwr_ofst2x->enable){ - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_ofst2x->enable); - AICWFDBG(LOGINFO, "pwrofst2x 2.4g: [0]:11b, [1]:ofdm_highrate, [2]:ofdm_lowrate\n" - " chan=" "\t1-4" "\t5-9" "\t10-13"); - for (type = 0; type < 3; type++) { - AICWFDBG(LOGINFO, "\n [%d] =", type); - for (ch_grp = 0; ch_grp < 3; ch_grp++) { - AICWFDBG(LOGINFO, "\t%d", txpwr_ofst2x->pwrofst2x_tbl_2g4[type][ch_grp]); - } - } - AICWFDBG(LOGINFO, "\npwrofst2x 5g: [0]:ofdm_lowrate, [1]:ofdm_highrate, [2]:ofdm_midrate\n" - " chan=" "\t36-50" "\t51-64" "\t98-114" "\t115-130" "\t131-146" "\t147-166"); - for (type = 0; type < 3; type++) { - AICWFDBG(LOGINFO, "\n [%d] =", type); - for (ch_grp = 0; ch_grp < 6; ch_grp++) { - AICWFDBG(LOGINFO, "\t%d", txpwr_ofst2x->pwrofst2x_tbl_5g[type][ch_grp]); - } - } - AICWFDBG(LOGINFO, "\n"); + txpwr_ofst2x = &txpwr_ofst_req->txpwr_ofst2x; + txpwr_ofst2x->enable = 0; + for (type = 0; type < 3; type++) { + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + if (ch_grp < 3) { + txpwr_ofst2x->pwrofst2x_tbl_2g4[type][ch_grp] = + 0; + } + txpwr_ofst2x->pwrofst2x_tbl_5g[type][ch_grp] = 0; + } + } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x); + } + if (txpwr_ofst2x->enable) { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, + txpwr_ofst2x->enable); + AICWFDBG( + LOGINFO, + "pwrofst2x 2.4g: [0]:11b, [1]:ofdm_highrate, [2]:ofdm_lowrate\n" + " chan=" + "\t1-4" + "\t5-9" + "\t10-13"); + for (type = 0; type < 3; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 3; ch_grp++) { + AICWFDBG( + LOGINFO, "\t%d", + txpwr_ofst2x->pwrofst2x_tbl_2g4[type] + [ch_grp]); + } + } + AICWFDBG( + LOGINFO, + "\npwrofst2x 5g: [0]:ofdm_lowrate, [1]:ofdm_highrate, [2]:ofdm_midrate\n" + " chan=" + "\t36-50" + "\t51-64" + "\t98-114" + "\t115-130" + "\t131-146" + "\t147-166"); + for (type = 0; type < 3; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + AICWFDBG( + LOGINFO, "\t%d", + txpwr_ofst2x->pwrofst2x_tbl_5g[type] + [ch_grp]); + } + } + AICWFDBG(LOGINFO, "\n"); - /* Send the MM_SET_TXPWR_OFST_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, txpwr_ofst_req, 1, MM_SET_TXPWR_OFST_CFM, NULL); - }else{ - AICWFDBG(LOGINFO, "%s:Do not use txpwr_ofst2x\r\n", __func__); - rwnx_msg_free(rwnx_hw, txpwr_ofst_req); - } + /* Send the MM_SET_TXPWR_OFST_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_ofst_req, 1, + MM_SET_TXPWR_OFST_CFM, NULL); + } else { + AICWFDBG(LOGINFO, "%s:Do not use txpwr_ofst2x\r\n", __func__); + rwnx_msg_free(rwnx_hw, txpwr_ofst_req); + } - return (error); + return (error); +} + +int rwnx_send_txpwr_ofst2x_v2_req(struct rwnx_hw *rwnx_hw) +{ + struct mm_set_txpwr_ofst_req *txpwr_ofst_req; + txpwr_ofst2x_conf_v2_t *txpwr_ofst2x_v2; + int error = 0; + int type, ch_grp; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MM_SET_TXPWR_OFST_REQ message */ + txpwr_ofst_req = + rwnx_msg_zalloc(MM_SET_TXPWR_OFST_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_ofst_req)); + + if (!txpwr_ofst_req) { + return -ENOMEM; + } + + txpwr_ofst2x_v2 = &txpwr_ofst_req->txpwr_ofst2x_v2; + txpwr_ofst2x_v2->enable = 0; + + get_userconfig_txpwr_ofst2x_v2_in_fdrv(txpwr_ofst2x_v2); + + if (txpwr_ofst2x_v2->enable) { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, + txpwr_ofst2x_v2->enable); + AICWFDBG( + LOGINFO, + "pwrofst2x 2.4g(ant0/ant1): [0]:11b, [1]:ofdm_highrate\n" + " chan=" + "\t1-4" + "\t5-9" + "\t10-13"); + for (type = 0; type < 2; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 3; ch_grp++) { + AICWFDBG( + LOGINFO, "\t%d/%d", + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_2g4_ant0[ch_grp] + [type], + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_2g4_ant1[ch_grp] + [type]); + } + } + AICWFDBG(LOGINFO, + "\npwrofst2x 5g(ant0/ant1): [0]:ofdm_highrate\n" + " chan=" + "\t36-50" + "\t51-64" + "\t98-114" + "\t115-130" + "\t131-146" + "\t147-166"); + for (type = 0; type < 1; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_5g_ant0[ch_grp] + [type], + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_5g_ant1[ch_grp] + [type]); + } + } + AICWFDBG(LOGINFO, "\n"); + + /* Send the MM_SET_TXPWR_OFST_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_ofst_req, 1, + MM_SET_TXPWR_OFST_CFM, NULL); + } else { + AICWFDBG(LOGINFO, "%s:Do not use txpwr_ofst2x_v2\r\n", + __func__); + rwnx_msg_free(rwnx_hw, txpwr_ofst_req); + } + + return (error); +} + +#ifdef CONFIG_APF +int rwnx_send_set_apf_prog_req(struct rwnx_hw *rwnx_hw, u8_l *program, + u32_l program_len) +{ + struct mm_set_apf_prog_req *req; + int error = 0; + int buffer_len, buffer_start = 0, buffer_end, page; + + /* current only 8800d80 support apf */ + if (rwnx_hw->sdiodev->chipid != PRODUCT_ID_AIC8800D80) { + return 0; + } + + if (!program) + return -ENOMEM; + + for (page = 0; buffer_start < program_len; page++) { + buffer_end = buffer_start + LMAC_MSG_MAX_LEN; + if (buffer_end > program_len) + buffer_end = program_len; + buffer_len = buffer_end - buffer_start; + + /* Build the MM_SET_TXOP_REQ message */ + req = rwnx_msg_zalloc(MM_SET_APF_PROG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_apf_prog_req)); + if (!req) + return -ENOMEM; + + req->program_len = buffer_len; + req->offset = page; + memcpy(req->program, program + buffer_start, buffer_len); + buffer_start = buffer_end; + + /* Send the MM_SET_TXOP_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_APF_PROG_CFM, + NULL); + if (error) + break; + } + return error; +} + +int rwnx_send_get_apf_prog_req(struct rwnx_hw *rwnx_hw, u8_l *program, + u32_l program_len) +{ + struct mm_get_apf_prog_req *req; + int error = 0; + struct mm_get_apf_prog_cfm cfm; + int buffer_len, buffer_start = 0, buffer_end, page; + + /* current only 8800d80 support apf */ + if (rwnx_hw->sdiodev->chipid != PRODUCT_ID_AIC8800D80) { + return 0; + } + + if (!program) + return -ENOMEM; + + for (page = 0; buffer_start < program_len; page++) { + buffer_end = buffer_start + LMAC_MSG_MAX_LEN; + if (buffer_end > program_len) + buffer_end = program_len; + buffer_len = buffer_end - buffer_start; + + /* Build the MM_SET_TXOP_REQ message */ + req = rwnx_msg_zalloc(MM_GET_APF_PROG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_get_apf_prog_req)); + if (!req) + return -ENOMEM; + + req->offset = page; + /* Send the MM_GET_APF_PROG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_GET_APF_PROG_CFM, + &cfm); + if (error) + break; + + memcpy(program + buffer_start, cfm.program, buffer_len); + buffer_start = buffer_end; + } + + return error; +} +#endif + +int rwnx_send_set_filter(struct rwnx_hw *rwnx_hw, uint32_t filter) +{ + struct mm_set_filter_req *set_filter_req_param; + uint32_t rx_filter = 0; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MM_SET_FILTER_REQ message */ + set_filter_req_param = + rwnx_msg_zalloc(MM_SET_FILTER_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_filter_req)); + if (!set_filter_req_param) + return -ENOMEM; + + /* Set parameters for the MM_SET_FILTER_REQ message */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) + if (filter & FIF_PROMISC_IN_BSS) + rx_filter |= NXMAC_ACCEPT_UNICAST_BIT; +#endif + if (filter & FIF_ALLMULTI) + rx_filter |= NXMAC_ACCEPT_MULTICAST_BIT; + + if (filter & (FIF_FCSFAIL | FIF_PLCPFAIL)) + rx_filter |= NXMAC_ACCEPT_ERROR_FRAMES_BIT; + + if (filter & FIF_BCN_PRBRESP_PROMISC) + rx_filter |= NXMAC_ACCEPT_OTHER_BSSID_BIT; + + if (filter & FIF_CONTROL) + rx_filter |= NXMAC_ACCEPT_OTHER_CNTRL_FRAMES_BIT | + NXMAC_ACCEPT_CF_END_BIT | NXMAC_ACCEPT_ACK_BIT | + NXMAC_ACCEPT_CTS_BIT | NXMAC_ACCEPT_RTS_BIT | + NXMAC_ACCEPT_BA_BIT | NXMAC_ACCEPT_BAR_BIT; + + if (filter & FIF_OTHER_BSS) + rx_filter |= NXMAC_ACCEPT_OTHER_BSSID_BIT; + + if (filter & FIF_PSPOLL) { + /* TODO: check if the MAC filters apply to our BSSID or is general */ + rx_filter |= NXMAC_ACCEPT_PS_POLL_BIT; + } + + if (filter & FIF_PROBE_REQ) { + rx_filter |= NXMAC_ACCEPT_PROBE_REQ_BIT; + rx_filter |= NXMAC_ACCEPT_ALL_BEACON_BIT; + } + + /* Add the filter flags that are set by default and cannot be changed here */ + rx_filter |= RWNX_MAC80211_NOT_CHANGEABLE; + + /* XXX */ + //if (ieee80211_hw_check(rwnx_hw->hw, AMPDU_AGGREGATION)) + rx_filter |= NXMAC_ACCEPT_BA_BIT; + + /* Now copy all the flags into the message parameter */ + set_filter_req_param->filter = rx_filter; + + RWNX_DBG("new total_flags = 0x%08x rx filter set to 0x%08x\r\n", filter, + rx_filter); + + /* Send the MM_SET_FILTER_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, set_filter_req_param, 1, + MM_SET_FILTER_CFM, NULL); } /****************************************************************************** @@ -1915,7 +2671,7 @@ int rwnx_send_txpwr_ofst2x_req(struct rwnx_hw *rwnx_hw) extern struct ieee80211_sband_iftype_data rwnx_he_capa; #endif #ifdef CONFIG_VHT_FOR_OLD_KERNEL -static struct ieee80211_sta_vht_cap* rwnx_vht_capa; +static struct ieee80211_sta_vht_cap *rwnx_vht_capa; #endif int rwnx_send_me_config_req(struct rwnx_hw *rwnx_hw) { @@ -1923,38 +2679,42 @@ int rwnx_send_me_config_req(struct rwnx_hw *rwnx_hw) struct wiphy *wiphy = rwnx_hw->wiphy; struct ieee80211_sta_ht_cap *ht_cap; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) struct ieee80211_sta_vht_cap *vht_cap; #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) struct ieee80211_sta_he_cap const *he_cap = NULL; #else - #ifdef CONFIG_HE_FOR_OLD_KERNEL +#ifdef CONFIG_HE_FOR_OLD_KERNEL struct ieee80211_sta_he_cap const *he_cap; - #endif +#endif #endif uint8_t *ht_mcs; int i; - if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { - rwnx_hw->mod_params->use_80 = true; - } + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + rwnx_hw->mod_params->use_80 = true; + } if (rwnx_hw->band_5g_support) { ht_cap = &wiphy->bands[NL80211_BAND_5GHZ]->ht_cap; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) vht_cap = &wiphy->bands[NL80211_BAND_5GHZ]->vht_cap; - #endif +#endif } else { ht_cap = &wiphy->bands[NL80211_BAND_2GHZ]->ht_cap; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) vht_cap = &wiphy->bands[NL80211_BAND_2GHZ]->vht_cap; - #endif +#endif } - #ifdef CONFIG_VHT_FOR_OLD_KERNEL - rwnx_vht_capa = vht_cap; - #endif +#ifdef CONFIG_VHT_FOR_OLD_KERNEL + rwnx_vht_capa = vht_cap; +#endif ht_mcs = (uint8_t *)&ht_cap->mcs; @@ -1962,664 +2722,832 @@ int rwnx_send_me_config_req(struct rwnx_hw *rwnx_hw) /* Build the ME_CONFIG_REQ message */ req = rwnx_msg_zalloc(ME_CONFIG_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_config_req)); + sizeof(struct me_config_req)); if (!req) return -ENOMEM; /* Set parameters for the ME_CONFIG_REQ message */ req->ht_supp = ht_cap->ht_supported; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) req->vht_supp = vht_cap->vht_supported; - #endif - req->ht_cap.ht_capa_info = cpu_to_le16(ht_cap->cap | IEEE80211_HT_CAP_LDPC_CODING); +#endif + req->ht_cap.ht_capa_info = + cpu_to_le16(ht_cap->cap | IEEE80211_HT_CAP_LDPC_CODING); req->ht_cap.a_mpdu_param = ht_cap->ampdu_factor | - (ht_cap->ampdu_density << - IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT); + (ht_cap->ampdu_density + << IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT); for (i = 0; i < sizeof(ht_cap->mcs); i++) req->ht_cap.mcs_rate[i] = ht_mcs[i]; req->ht_cap.ht_extended_capa = 0; req->ht_cap.tx_beamforming_capa = 0; req->ht_cap.asel_capa = 0; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) || \ + defined(CONFIG_VHT_FOR_OLD_KERNEL) if (req->vht_supp) { req->vht_cap.vht_capa_info = cpu_to_le32(vht_cap->cap); - req->vht_cap.rx_highest = cpu_to_le16(vht_cap->vht_mcs.rx_highest); - req->vht_cap.rx_mcs_map = cpu_to_le16(vht_cap->vht_mcs.rx_mcs_map); - req->vht_cap.tx_highest = cpu_to_le16(vht_cap->vht_mcs.tx_highest); - req->vht_cap.tx_mcs_map = cpu_to_le16(vht_cap->vht_mcs.tx_mcs_map); + req->vht_cap.rx_highest = + cpu_to_le16(vht_cap->vht_mcs.rx_highest); + req->vht_cap.rx_mcs_map = + cpu_to_le16(vht_cap->vht_mcs.rx_mcs_map); + req->vht_cap.tx_highest = + cpu_to_le16(vht_cap->vht_mcs.tx_highest); + req->vht_cap.tx_mcs_map = + cpu_to_le16(vht_cap->vht_mcs.tx_mcs_map); } - #endif +#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) || defined(CONFIG_HE_FOR_OLD_KERNEL) - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) || \ + defined(CONFIG_HE_FOR_OLD_KERNEL) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) if (wiphy->bands[NL80211_BAND_2GHZ]->iftype_data != NULL) { he_cap = &wiphy->bands[NL80211_BAND_2GHZ]->iftype_data->he_cap; - //} - #endif - #if defined(CONFIG_HE_FOR_OLD_KERNEL) - if (1) { - he_cap = &rwnx_he_capa.he_cap; - #endif - req->he_supp = he_cap->has_he; - for (i = 0; i < ARRAY_SIZE(he_cap->he_cap_elem.mac_cap_info); i++) { - req->he_cap.mac_cap_info[i] = he_cap->he_cap_elem.mac_cap_info[i]; +//} +#endif +#if defined(CONFIG_HE_FOR_OLD_KERNEL) + if (1) { + he_cap = &rwnx_he_capa.he_cap; +#endif + req->he_supp = he_cap->has_he; + for (i = 0; + i < ARRAY_SIZE(he_cap->he_cap_elem.mac_cap_info); + i++) { + req->he_cap.mac_cap_info[i] = + he_cap->he_cap_elem.mac_cap_info[i]; + } + for (i = 0; + i < ARRAY_SIZE(he_cap->he_cap_elem.phy_cap_info); + i++) { + req->he_cap.phy_cap_info[i] = + he_cap->he_cap_elem.phy_cap_info[i]; + } + req->he_cap.mcs_supp.rx_mcs_80 = + cpu_to_le16(he_cap->he_mcs_nss_supp.rx_mcs_80); + req->he_cap.mcs_supp.tx_mcs_80 = + cpu_to_le16(he_cap->he_mcs_nss_supp.tx_mcs_80); + req->he_cap.mcs_supp.rx_mcs_160 = + cpu_to_le16(he_cap->he_mcs_nss_supp.rx_mcs_160); + req->he_cap.mcs_supp.tx_mcs_160 = + cpu_to_le16(he_cap->he_mcs_nss_supp.tx_mcs_160); + req->he_cap.mcs_supp.rx_mcs_80p80 = cpu_to_le16( + he_cap->he_mcs_nss_supp.rx_mcs_80p80); + req->he_cap.mcs_supp.tx_mcs_80p80 = cpu_to_le16( + he_cap->he_mcs_nss_supp.tx_mcs_80p80); + for (i = 0; i < MAC_HE_PPE_THRES_MAX_LEN; i++) { + req->he_cap.ppe_thres[i] = he_cap->ppe_thres[i]; + } + req->he_ul_on = rwnx_hw->mod_params->he_ul_on; } - for (i = 0; i < ARRAY_SIZE(he_cap->he_cap_elem.phy_cap_info); i++) { - req->he_cap.phy_cap_info[i] = he_cap->he_cap_elem.phy_cap_info[i]; - } - req->he_cap.mcs_supp.rx_mcs_80 = cpu_to_le16(he_cap->he_mcs_nss_supp.rx_mcs_80); - req->he_cap.mcs_supp.tx_mcs_80 = cpu_to_le16(he_cap->he_mcs_nss_supp.tx_mcs_80); - req->he_cap.mcs_supp.rx_mcs_160 = cpu_to_le16(he_cap->he_mcs_nss_supp.rx_mcs_160); - req->he_cap.mcs_supp.tx_mcs_160 = cpu_to_le16(he_cap->he_mcs_nss_supp.tx_mcs_160); - req->he_cap.mcs_supp.rx_mcs_80p80 = cpu_to_le16(he_cap->he_mcs_nss_supp.rx_mcs_80p80); - req->he_cap.mcs_supp.tx_mcs_80p80 = cpu_to_le16(he_cap->he_mcs_nss_supp.tx_mcs_80p80); - for (i = 0; i < MAC_HE_PPE_THRES_MAX_LEN; i++) { - req->he_cap.ppe_thres[i] = he_cap->ppe_thres[i]; - } - req->he_ul_on = rwnx_hw->mod_params->he_ul_on; - } #else req->he_supp = false; req->he_ul_on = false; #endif - req->ps_on = rwnx_hw->mod_params->ps_on; - req->dpsm = rwnx_hw->mod_params->dpsm; - req->tx_lft = rwnx_hw->mod_params->tx_lft; - req->ant_div_on = rwnx_hw->mod_params->ant_div; - if (rwnx_hw->mod_params->use_80) - req->phy_bw_max = PHY_CHNL_BW_80; - else if (rwnx_hw->mod_params->use_2040) - req->phy_bw_max = PHY_CHNL_BW_40; - else - req->phy_bw_max = PHY_CHNL_BW_20; + req->ps_on = rwnx_hw->mod_params->ps_on; + req->dpsm = rwnx_hw->mod_params->dpsm; + req->tx_lft = rwnx_hw->mod_params->tx_lft; + req->ant_div_on = rwnx_hw->mod_params->ant_div; + if (rwnx_hw->mod_params->use_80) + req->phy_bw_max = PHY_CHNL_BW_80; + else if (rwnx_hw->mod_params->use_2040) + req->phy_bw_max = PHY_CHNL_BW_40; + else + req->phy_bw_max = PHY_CHNL_BW_20; - wiphy_info(wiphy, "HT supp %d, VHT supp %d, HE supp %d\n", req->ht_supp, - req->vht_supp, - req->he_supp); - /* Send the ME_CONFIG_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_CONFIG_CFM, NULL); -} - -int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw) -{ - struct me_chan_config_req *req; - struct wiphy *wiphy = rwnx_hw->wiphy; - int i; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_CHAN_CONFIG_REQ message */ - req = rwnx_msg_zalloc(ME_CHAN_CONFIG_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_chan_config_req)); - if (!req) - return -ENOMEM; - - req->chan2G4_cnt = 0; - if (wiphy->bands[NL80211_BAND_2GHZ] != NULL) { - struct ieee80211_supported_band *b = wiphy->bands[NL80211_BAND_2GHZ]; - for (i = 0; i < b->n_channels; i++) { - req->chan2G4[req->chan2G4_cnt].flags = 0; - if (b->channels[i].flags & IEEE80211_CHAN_DISABLED) - req->chan2G4[req->chan2G4_cnt].flags |= CHAN_DISABLED; - req->chan2G4[req->chan2G4_cnt].flags |= get_chan_flags(b->channels[i].flags); - req->chan2G4[req->chan2G4_cnt].band = NL80211_BAND_2GHZ; - req->chan2G4[req->chan2G4_cnt].freq = b->channels[i].center_freq; - req->chan2G4[req->chan2G4_cnt].tx_power = chan_to_fw_pwr(b->channels[i].max_power); - req->chan2G4_cnt++; - if (req->chan2G4_cnt == MAC_DOMAINCHANNEL_24G_MAX) - break; - } + wiphy_info(wiphy, "HT supp %d, VHT supp %d, HE supp %d\n", + req->ht_supp, req->vht_supp, req->he_supp); + /* Send the ME_CONFIG_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_CONFIG_CFM, NULL); } - req->chan5G_cnt = 0; - if (wiphy->bands[NL80211_BAND_5GHZ] != NULL) { - struct ieee80211_supported_band *b = wiphy->bands[NL80211_BAND_5GHZ]; - for (i = 0; i < b->n_channels; i++) { - req->chan5G[req->chan5G_cnt].flags = 0; - if (b->channels[i].flags & IEEE80211_CHAN_DISABLED) - req->chan5G[req->chan5G_cnt].flags |= CHAN_DISABLED; - req->chan5G[req->chan5G_cnt].flags |= get_chan_flags(b->channels[i].flags); - req->chan5G[req->chan5G_cnt].band = NL80211_BAND_5GHZ; - req->chan5G[req->chan5G_cnt].freq = b->channels[i].center_freq; - req->chan5G[req->chan5G_cnt].tx_power = chan_to_fw_pwr(b->channels[i].max_power); - req->chan5G_cnt++; - if (req->chan5G_cnt == MAC_DOMAINCHANNEL_5G_MAX) - break; - } - } - - /* Send the ME_CHAN_CONFIG_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_CHAN_CONFIG_CFM, NULL); -} - -int rwnx_send_me_set_control_port_req(struct rwnx_hw *rwnx_hw, bool opened, u8 sta_idx) -{ - struct me_set_control_port_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_SET_CONTROL_PORT_REQ message */ - req = rwnx_msg_zalloc(ME_SET_CONTROL_PORT_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_set_control_port_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the ME_SET_CONTROL_PORT_REQ message */ - req->sta_idx = sta_idx; - req->control_port_open = opened; - - /* Send the ME_SET_CONTROL_PORT_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_SET_CONTROL_PORT_CFM, NULL); -} - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0)) -struct ieee80211_he_cap_elem_4_19 { - u8 mac_cap_info[6]; - u8 phy_cap_info[11]; -} __packed; + int rwnx_send_me_chan_config_req(struct rwnx_hw * rwnx_hw, char *ccode) + { + struct me_chan_config_req *req; + struct wiphy *wiphy = rwnx_hw->wiphy; + int i; +#ifdef CONFIG_POWER_LIMIT + int8_t max_pwr; + uint8_t r_idx; + txpwr_loss_conf_t txpwr_loss_tmp; + txpwr_loss_conf_t *txpwr_loss; #endif -int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *params, - const u8 *mac, u8 inst_nbr, struct me_sta_add_cfm *cfm) -{ - struct me_sta_add_req *req; + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the ME_CHAN_CONFIG_REQ message */ + req = rwnx_msg_zalloc(ME_CHAN_CONFIG_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_chan_config_req)); + if (!req) + return -ENOMEM; + +#ifdef CONFIG_POWER_LIMIT + txpwr_loss = &txpwr_loss_tmp; + get_userconfig_txpwr_loss(txpwr_loss); + + if (txpwr_loss->loss_enable_2g4 == 1) + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + if (txpwr_loss->loss_enable_5g == 1) + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + r_idx = get_ccode_region(ccode); +#endif + + req->chan2G4_cnt = 0; + if (wiphy->bands[NL80211_BAND_2GHZ] != NULL) { + struct ieee80211_supported_band *b = + wiphy->bands[NL80211_BAND_2GHZ]; + for (i = 0; i < b->n_channels; i++) { + req->chan2G4[req->chan2G4_cnt].flags = 0; + if (b->channels[i].flags & + IEEE80211_CHAN_DISABLED) + req->chan2G4[req->chan2G4_cnt].flags |= + CHAN_DISABLED; + req->chan2G4[req->chan2G4_cnt].flags |= + get_chan_flags(b->channels[i].flags); + req->chan2G4[req->chan2G4_cnt].band = + NL80211_BAND_2GHZ; + req->chan2G4[req->chan2G4_cnt].freq = + b->channels[i].center_freq; + req->chan2G4[req->chan2G4_cnt].tx_power = + chan_to_fw_pwr( + b->channels[i].max_power); +#ifdef CONFIG_POWER_LIMIT + { + max_pwr = get_powerlimit_by_freq( + PHY_BAND_2G4, + req->chan2G4[req->chan2G4_cnt] + .freq, + r_idx); + if (txpwr_loss->loss_enable_2g4 == 1) + max_pwr -= + txpwr_loss + ->loss_value_2g4; + if (req->chan2G4[req->chan2G4_cnt] + .tx_power > max_pwr) + req->chan2G4[req->chan2G4_cnt] + .tx_power = max_pwr; + } +#endif + req->chan2G4_cnt++; + if (req->chan2G4_cnt == + MAC_DOMAINCHANNEL_24G_MAX) + break; + } + } + + req->chan5G_cnt = 0; + if (wiphy->bands[NL80211_BAND_5GHZ] != NULL) { + struct ieee80211_supported_band *b = + wiphy->bands[NL80211_BAND_5GHZ]; + for (i = 0; i < b->n_channels; i++) { + req->chan5G[req->chan5G_cnt].flags = 0; + if (b->channels[i].flags & + IEEE80211_CHAN_DISABLED) + req->chan5G[req->chan5G_cnt].flags |= + CHAN_DISABLED; + req->chan5G[req->chan5G_cnt].flags |= + get_chan_flags(b->channels[i].flags); + req->chan5G[req->chan5G_cnt].band = + NL80211_BAND_5GHZ; + req->chan5G[req->chan5G_cnt].freq = + b->channels[i].center_freq; + req->chan5G[req->chan5G_cnt].tx_power = + chan_to_fw_pwr( + b->channels[i].max_power); +#ifdef CONFIG_POWER_LIMIT + { + max_pwr = get_powerlimit_by_freq( + PHY_BAND_5G, + req->chan5G[req->chan5G_cnt] + .freq, + r_idx); + if (txpwr_loss->loss_enable_5g == 1) + max_pwr -= + txpwr_loss + ->loss_value_5g; + if (req->chan5G[req->chan5G_cnt] + .tx_power > max_pwr) + req->chan5G[req->chan5G_cnt] + .tx_power = max_pwr; + } +#endif + req->chan5G_cnt++; + if (req->chan5G_cnt == MAC_DOMAINCHANNEL_5G_MAX) + break; + } + } + + /* Send the ME_CHAN_CONFIG_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_CHAN_CONFIG_CFM, NULL); + } + + int rwnx_send_me_set_control_port_req(struct rwnx_hw * rwnx_hw, + bool opened, u8 sta_idx) + { + struct me_set_control_port_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the ME_SET_CONTROL_PORT_REQ message */ + req = rwnx_msg_zalloc(ME_SET_CONTROL_PORT_REQ, TASK_ME, + DRV_TASK_ID, + sizeof(struct me_set_control_port_req)); + if (!req) + return -ENOMEM; + + /* Set parameters for the ME_SET_CONTROL_PORT_REQ message */ + req->sta_idx = sta_idx; + req->control_port_open = opened; + + /* Send the ME_SET_CONTROL_PORT_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_SET_CONTROL_PORT_CFM, + NULL); + } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) && \ + LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0)) + struct ieee80211_he_cap_elem_4_19 { + u8 mac_cap_info[6]; + u8 phy_cap_info[11]; + } __packed; +#endif + + int rwnx_send_me_sta_add(struct rwnx_hw * rwnx_hw, + struct station_parameters * params, + const u8 *mac, u8 inst_nbr, + struct me_sta_add_cfm *cfm) + { + struct me_sta_add_req *req; #if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION - struct link_station_parameters *link_sta_params = ¶ms->link_sta_params; + struct link_station_parameters *link_sta_params = + ¶ms->link_sta_params; #else - struct station_parameters *link_sta_params = params; + struct station_parameters *link_sta_params = params; #endif - u8 *ht_mcs = (u8 *)&link_sta_params->ht_capa->mcs; + u8 *ht_mcs = (u8 *)&link_sta_params->ht_capa->mcs; - int i; - struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[inst_nbr]; - #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) - struct aic_sta *sta = &rwnx_hw->aic_table[rwnx_vif->ap.aic_index]; + int i; + struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[inst_nbr]; +#if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) + struct aic_sta *sta = + &rwnx_hw->aic_table[rwnx_vif->ap.aic_index]; - RWNX_DBG(RWNX_FN_ENTRY_STR); - printk("assoc_req idx %d, he: %d, vht: %d\n ", rwnx_vif->ap.aic_index, sta->he, sta->vht); - if (rwnx_vif->ap.aic_index < NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX) - rwnx_vif->ap.aic_index++; - else - rwnx_vif->ap.aic_index = 0; - #endif + RWNX_DBG(RWNX_FN_ENTRY_STR); + printk("assoc_req idx %d, he: %d, vht: %d\n ", + rwnx_vif->ap.aic_index, sta->he, sta->vht); + if (rwnx_vif->ap.aic_index < + NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX) + rwnx_vif->ap.aic_index++; + else + rwnx_vif->ap.aic_index = 0; +#endif - /* Build the MM_STA_ADD_REQ message */ - req = rwnx_msg_zalloc(ME_STA_ADD_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_sta_add_req)); - if (!req){ - return -ENOMEM; - } + /* Build the MM_STA_ADD_REQ message */ + req = rwnx_msg_zalloc(ME_STA_ADD_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_sta_add_req)); + if (!req) { + return -ENOMEM; + } - /* Set parameters for the MM_STA_ADD_REQ message */ - memcpy(&(req->mac_addr.array[0]), mac, ETH_ALEN); + /* Set parameters for the MM_STA_ADD_REQ message */ + memcpy(&(req->mac_addr.array[0]), mac, ETH_ALEN); - req->rate_set.length = link_sta_params->supported_rates_len; - for (i = 0; i < link_sta_params->supported_rates_len; i++) - req->rate_set.array[i] = link_sta_params->supported_rates[i]; + req->rate_set.length = link_sta_params->supported_rates_len; + for (i = 0; i < link_sta_params->supported_rates_len; i++) + req->rate_set.array[i] = + link_sta_params->supported_rates[i]; - req->flags = 0; - if (link_sta_params->ht_capa) { - const struct ieee80211_ht_cap *ht_capa = link_sta_params->ht_capa; + req->flags = 0; + if (link_sta_params->ht_capa) { + const struct ieee80211_ht_cap *ht_capa = + link_sta_params->ht_capa; - req->flags |= STA_HT_CAPA; - req->ht_cap.ht_capa_info = cpu_to_le16(ht_capa->cap_info); - req->ht_cap.a_mpdu_param = ht_capa->ampdu_params_info; - for (i = 0; i < sizeof(ht_capa->mcs); i++) - req->ht_cap.mcs_rate[i] = ht_mcs[i]; - req->ht_cap.ht_extended_capa = cpu_to_le16(ht_capa->extended_ht_cap_info); - req->ht_cap.tx_beamforming_capa = cpu_to_le32(ht_capa->tx_BF_cap_info); - req->ht_cap.asel_capa = ht_capa->antenna_selection_info; - } + req->flags |= STA_HT_CAPA; + req->ht_cap.ht_capa_info = + cpu_to_le16(ht_capa->cap_info); + req->ht_cap.a_mpdu_param = ht_capa->ampdu_params_info; + for (i = 0; i < sizeof(ht_capa->mcs); i++) + req->ht_cap.mcs_rate[i] = ht_mcs[i]; + req->ht_cap.ht_extended_capa = + cpu_to_le16(ht_capa->extended_ht_cap_info); + req->ht_cap.tx_beamforming_capa = + cpu_to_le32(ht_capa->tx_BF_cap_info); + req->ht_cap.asel_capa = ht_capa->antenna_selection_info; + } #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) - if (link_sta_params->vht_capa) { - const struct ieee80211_vht_cap *vht_capa = link_sta_params->vht_capa; + if (link_sta_params->vht_capa) { + const struct ieee80211_vht_cap *vht_capa = + link_sta_params->vht_capa; - req->flags |= STA_VHT_CAPA; - req->vht_cap.vht_capa_info = cpu_to_le32(vht_capa->vht_cap_info); - req->vht_cap.rx_highest = cpu_to_le16(vht_capa->supp_mcs.rx_highest); - req->vht_cap.rx_mcs_map = cpu_to_le16(vht_capa->supp_mcs.rx_mcs_map); - req->vht_cap.tx_highest = cpu_to_le16(vht_capa->supp_mcs.tx_highest); - req->vht_cap.tx_mcs_map = cpu_to_le16(vht_capa->supp_mcs.tx_mcs_map); - } + req->flags |= STA_VHT_CAPA; + req->vht_cap.vht_capa_info = + cpu_to_le32(vht_capa->vht_cap_info); + req->vht_cap.rx_highest = + cpu_to_le16(vht_capa->supp_mcs.rx_highest); + req->vht_cap.rx_mcs_map = + cpu_to_le16(vht_capa->supp_mcs.rx_mcs_map); + req->vht_cap.tx_highest = + cpu_to_le16(vht_capa->supp_mcs.tx_highest); + req->vht_cap.tx_mcs_map = + cpu_to_le16(vht_capa->supp_mcs.tx_mcs_map); + } #elif defined(CONFIG_VHT_FOR_OLD_KERNEL) - if (sta->vht) { - //const struct ieee80211_vht_cap *vht_capa = rwnx_vht_capa; + if (sta->vht) { + //const struct ieee80211_vht_cap *vht_capa = rwnx_vht_capa; - req->flags |= STA_VHT_CAPA; - req->vht_cap.vht_capa_info = cpu_to_le32(rwnx_vht_capa->cap); - req->vht_cap.rx_highest = cpu_to_le16(rwnx_vht_capa->vht_mcs.rx_highest); - req->vht_cap.rx_mcs_map = cpu_to_le16(rwnx_vht_capa->vht_mcs.rx_mcs_map); - req->vht_cap.tx_highest = cpu_to_le16(rwnx_vht_capa->vht_mcs.tx_highest); - req->vht_cap.tx_mcs_map = cpu_to_le16(rwnx_vht_capa->vht_mcs.tx_mcs_map); - } + req->flags |= STA_VHT_CAPA; + req->vht_cap.vht_capa_info = cpu_to_le32(rwnx_vht_capa->cap); + req->vht_cap.rx_highest = + sta->supp_mcs + .rx_highest; //cpu_to_le16(rwnx_vht_capa->vht_mcs.rx_highest); + req->vht_cap.rx_mcs_map = + sta->supp_mcs + .rx_mcs_map; //cpu_to_le16(rwnx_vht_capa->vht_mcs.rx_mcs_map); + req->vht_cap.tx_highest = + sta->supp_mcs + .tx_highest; //cpu_to_le16(rwnx_vht_capa->vht_mcs.tx_highest); + req->vht_cap.tx_mcs_map = + sta->supp_mcs + .tx_mcs_map; //cpu_to_le16(rwnx_vht_capa->vht_mcs.tx_mcs_map); + } #endif + AICWFDBG(LOGDEBUG, + "rx map %x rx high %x tx map %x tx high %x \n", + req->vht_cap.rx_mcs_map, req->vht_cap.rx_highest, + req->vht_cap.tx_mcs_map, req->vht_cap.tx_highest); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) - if (link_sta_params->he_capa) { - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) - const struct ieee80211_he_cap_elem_4_19 *he_capa = (const struct ieee80211_he_cap_elem_4_19 *) link_sta_params->he_capa; - #else - const struct ieee80211_he_cap_elem *he_capa = link_sta_params->he_capa; - #endif - struct ieee80211_he_mcs_nss_supp *mcs_nss_supp = - (struct ieee80211_he_mcs_nss_supp *)(he_capa + 1); + if (link_sta_params->he_capa) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) + const struct ieee80211_he_cap_elem_4_19 *he_capa = + (const struct ieee80211_he_cap_elem_4_19 *) + link_sta_params->he_capa; +#else + const struct ieee80211_he_cap_elem *he_capa = + link_sta_params->he_capa; +#endif + struct ieee80211_he_mcs_nss_supp *mcs_nss_supp = + (struct ieee80211_he_mcs_nss_supp *)(he_capa + + 1); + req->flags |= STA_HE_CAPA; + for (i = 0; i < ARRAY_SIZE(he_capa->mac_cap_info); + i++) { + req->he_cap.mac_cap_info[i] = + he_capa->mac_cap_info[i]; + } + for (i = 0; i < ARRAY_SIZE(he_capa->phy_cap_info); + i++) { + req->he_cap.phy_cap_info[i] = + he_capa->phy_cap_info[i]; + } + req->he_cap.mcs_supp.rx_mcs_80 = + mcs_nss_supp->rx_mcs_80; + req->he_cap.mcs_supp.tx_mcs_80 = + mcs_nss_supp->tx_mcs_80; + req->he_cap.mcs_supp.rx_mcs_160 = + mcs_nss_supp->rx_mcs_160; + req->he_cap.mcs_supp.tx_mcs_160 = + mcs_nss_supp->tx_mcs_160; + req->he_cap.mcs_supp.rx_mcs_80p80 = + mcs_nss_supp->rx_mcs_80p80; + req->he_cap.mcs_supp.tx_mcs_80p80 = + mcs_nss_supp->tx_mcs_80p80; + } +#else +#ifdef CONFIG_HE_FOR_OLD_KERNEL + if (sta->he) { + const struct ieee80211_he_cap_elem *he_capa = + &rwnx_he_capa.he_cap.he_cap_elem; + struct ieee80211_he_mcs_nss_supp *mcs_nss_supp = + (struct ieee80211_he_mcs_nss_supp *)(he_capa + 1); req->flags |= STA_HE_CAPA; for (i = 0; i < ARRAY_SIZE(he_capa->mac_cap_info); i++) { - req->he_cap.mac_cap_info[i] = he_capa->mac_cap_info[i]; + req->he_cap.mac_cap_info[i] = + sta->he_cap_elem.mac_cap_info + [i]; //he_capa->mac_cap_info[i]; } for (i = 0; i < ARRAY_SIZE(he_capa->phy_cap_info); i++) { - req->he_cap.phy_cap_info[i] = he_capa->phy_cap_info[i]; + req->he_cap.phy_cap_info[i] = + sta->he_cap_elem.phy_cap_info + [i]; //he_capa->phy_cap_info[i]; } - req->he_cap.mcs_supp.rx_mcs_80 = mcs_nss_supp->rx_mcs_80; - req->he_cap.mcs_supp.tx_mcs_80 = mcs_nss_supp->tx_mcs_80; + req->he_cap.mcs_supp.rx_mcs_80 = + sta->he_mcs_nss_supp + .rx_mcs_80; //mcs_nss_supp->rx_mcs_80; + req->he_cap.mcs_supp.tx_mcs_80 = + sta->he_mcs_nss_supp + .tx_mcs_80; //mcs_nss_supp->tx_mcs_80; req->he_cap.mcs_supp.rx_mcs_160 = mcs_nss_supp->rx_mcs_160; req->he_cap.mcs_supp.tx_mcs_160 = mcs_nss_supp->tx_mcs_160; req->he_cap.mcs_supp.rx_mcs_80p80 = mcs_nss_supp->rx_mcs_80p80; req->he_cap.mcs_supp.tx_mcs_80p80 = mcs_nss_supp->tx_mcs_80p80; } -#else - #ifdef CONFIG_HE_FOR_OLD_KERNEL - if (sta->he) { - const struct ieee80211_he_cap_elem *he_capa = &rwnx_he_capa.he_cap.he_cap_elem; - struct ieee80211_he_mcs_nss_supp *mcs_nss_supp = - (struct ieee80211_he_mcs_nss_supp *)(he_capa + 1); - req->flags |= STA_HE_CAPA; - for (i = 0; i < ARRAY_SIZE(he_capa->mac_cap_info); i++) { - req->he_cap.mac_cap_info[i] = he_capa->mac_cap_info[i]; - } - for (i = 0; i < ARRAY_SIZE(he_capa->phy_cap_info); i++) { - req->he_cap.phy_cap_info[i] = he_capa->phy_cap_info[i]; - } - req->he_cap.mcs_supp.rx_mcs_80 = mcs_nss_supp->rx_mcs_80; - req->he_cap.mcs_supp.tx_mcs_80 = mcs_nss_supp->tx_mcs_80; - req->he_cap.mcs_supp.rx_mcs_160 = mcs_nss_supp->rx_mcs_160; - req->he_cap.mcs_supp.tx_mcs_160 = mcs_nss_supp->tx_mcs_160; - req->he_cap.mcs_supp.rx_mcs_80p80 = mcs_nss_supp->rx_mcs_80p80; - req->he_cap.mcs_supp.tx_mcs_80p80 = mcs_nss_supp->tx_mcs_80p80; - } - #endif +#endif #endif - if (params->sta_flags_set & BIT(NL80211_STA_FLAG_WME)) - req->flags |= STA_QOS_CAPA; + AICWFDBG(LOGDEBUG, + "rwnx sta add he mcs/nss rx mcs 80 0x%04x \n", + le16_to_cpu(req->he_cap.mcs_supp.rx_mcs_80)); + AICWFDBG(LOGDEBUG, + "rwnx sta add he mcs/nss tx mcs 80 0x%04x \n", + le16_to_cpu(req->he_cap.mcs_supp.tx_mcs_80)); - if (params->sta_flags_set & BIT(NL80211_STA_FLAG_MFP)) - req->flags |= STA_MFP_CAPA; + if (params->sta_flags_set & BIT(NL80211_STA_FLAG_WME)) + req->flags |= STA_QOS_CAPA; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - if (link_sta_params->opmode_notif_used) { - req->flags |= STA_OPMOD_NOTIF; - req->opmode = link_sta_params->opmode_notif_used; - } - #endif + if (params->sta_flags_set & BIT(NL80211_STA_FLAG_MFP)) + req->flags |= STA_MFP_CAPA; - req->aid = cpu_to_le16(params->aid); - req->uapsd_queues = params->uapsd_queues; - req->max_sp_len = params->max_sp * 2; - req->vif_idx = inst_nbr; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + if (link_sta_params->opmode_notif_used) { + req->flags |= STA_OPMOD_NOTIF; + req->opmode = link_sta_params->opmode_notif_used; + } +#endif - if (params->sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) { - //struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[inst_nbr]; - req->tdls_sta = true; - if ((params->ext_capab[3] & WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH) && - !rwnx_vif->tdls_chsw_prohibited) - req->tdls_chsw_allowed = true; - if (rwnx_vif->tdls_status == TDLS_SETUP_RSP_TX) - req->tdls_sta_initiator = true; + req->aid = cpu_to_le16(params->aid); + req->uapsd_queues = params->uapsd_queues; + req->max_sp_len = params->max_sp * 2; + req->vif_idx = inst_nbr; + + if (params->sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) { + //struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[inst_nbr]; + req->tdls_sta = true; + if ((params->ext_capab[3] & + WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH) && + !rwnx_vif->tdls_chsw_prohibited) + req->tdls_chsw_allowed = true; + if (rwnx_vif->tdls_status == TDLS_SETUP_RSP_TX) + req->tdls_sta_initiator = true; + } + + /* Send the ME_STA_ADD_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_STA_ADD_CFM, cfm); } - /* Send the ME_STA_ADD_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_STA_ADD_CFM, cfm); -} + int rwnx_send_me_sta_del(struct rwnx_hw * rwnx_hw, u8 sta_idx, + bool tdls_sta) + { + struct me_sta_del_req *req; -int rwnx_send_me_sta_del(struct rwnx_hw *rwnx_hw, u8 sta_idx, bool tdls_sta) -{ - struct me_sta_del_req *req; + RWNX_DBG(RWNX_FN_ENTRY_STR); - RWNX_DBG(RWNX_FN_ENTRY_STR); + /* Build the MM_STA_DEL_REQ message */ + req = rwnx_msg_zalloc(ME_STA_DEL_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_sta_del_req)); + if (!req) + return -ENOMEM; - /* Build the MM_STA_DEL_REQ message */ - req = rwnx_msg_zalloc(ME_STA_DEL_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_sta_del_req)); - if (!req) - return -ENOMEM; + /* Set parameters for the MM_STA_DEL_REQ message */ + req->sta_idx = sta_idx; + req->tdls_sta = tdls_sta; - /* Set parameters for the MM_STA_DEL_REQ message */ - req->sta_idx = sta_idx; - req->tdls_sta = tdls_sta; - - /* Send the ME_STA_DEL_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_STA_DEL_CFM, NULL); -} - -int rwnx_send_me_traffic_ind(struct rwnx_hw *rwnx_hw, u8 sta_idx, bool uapsd, u8 tx_status) -{ - struct me_traffic_ind_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_UTRAFFIC_IND_REQ message */ - req = rwnx_msg_zalloc(ME_TRAFFIC_IND_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_traffic_ind_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the ME_TRAFFIC_IND_REQ message */ - req->sta_idx = sta_idx; - req->tx_avail = tx_status; - req->uapsd = uapsd; - - /* Send the ME_TRAFFIC_IND_REQ to UMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_TRAFFIC_IND_CFM, NULL); -} - -int rwnx_send_me_rc_stats(struct rwnx_hw *rwnx_hw, - u8 sta_idx, - struct me_rc_stats_cfm *cfm) -{ - struct me_rc_stats_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_RC_STATS_REQ message */ - req = rwnx_msg_zalloc(ME_RC_STATS_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_rc_stats_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the ME_RC_STATS_REQ message */ - req->sta_idx = sta_idx; - - /* Send the ME_RC_STATS_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_RC_STATS_CFM, cfm); -} - -int rwnx_send_me_rc_set_rate(struct rwnx_hw *rwnx_hw, - u8 sta_idx, - u16 rate_cfg) -{ - struct me_rc_set_rate_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_RC_SET_RATE_REQ message */ - req = rwnx_msg_zalloc(ME_RC_SET_RATE_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_rc_set_rate_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the ME_RC_SET_RATE_REQ message */ - req->sta_idx = sta_idx; - req->fixed_rate_cfg = rate_cfg; - - /* Send the ME_RC_SET_RATE_REQ message to FW */ - return rwnx_send_msg(rwnx_hw, req, 0, 0, NULL); -} - -int rwnx_send_me_set_ps_mode(struct rwnx_hw *rwnx_hw, u8 ps_mode) -{ - struct me_set_ps_mode_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_SET_PS_MODE_REQ message */ - req = rwnx_msg_zalloc(ME_SET_PS_MODE_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_set_ps_mode_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the ME_SET_PS_MODE_REQ message */ - req->ps_state = ps_mode; - - /* Send the ME_SET_PS_MODE_REQ message to FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_SET_PS_MODE_CFM, NULL); -} - -int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level) -{ - struct me_set_lp_level_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_SET_LP_LEVEL_REQ message */ - req = rwnx_msg_zalloc(ME_SET_LP_LEVEL_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_set_lp_level_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the ME_SET_LP_LEVEL_REQ message */ - req->lp_level = lp_level; - - /* Send the ME_SET_LP_LEVEL_REQ message to FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_SET_LP_LEVEL_CFM, NULL); -} - -int rwnx_send_sm_connect_req(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - struct cfg80211_connect_params *sme, - struct sm_connect_cfm *cfm) -{ - struct sm_connect_req *req; - int i; - u32_l flags = 0; - bool gval = false; - bool pval = false; - rwnx_vif->wep_enabled = false; - rwnx_vif->wep_auth_err = false; - rwnx_vif->last_auth_type = 0; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the SM_CONNECT_REQ message */ - req = rwnx_msg_zalloc(SM_CONNECT_REQ, TASK_SM, DRV_TASK_ID, - sizeof(struct sm_connect_req)); - if (!req) - return -ENOMEM; - - if ((sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40) || - (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP104)) { - gval = true; + /* Send the ME_STA_DEL_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_STA_DEL_CFM, NULL); } - if (sme->crypto.n_ciphers_pairwise && - ((sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP40) || - (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP104))) { - pval = true; + int rwnx_send_me_traffic_ind(struct rwnx_hw * rwnx_hw, u8 sta_idx, + bool uapsd, u8 tx_status) + { + struct me_traffic_ind_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the ME_UTRAFFIC_IND_REQ message */ + req = rwnx_msg_zalloc(ME_TRAFFIC_IND_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_traffic_ind_req)); + if (!req) + return -ENOMEM; + + /* Set parameters for the ME_TRAFFIC_IND_REQ message */ + req->sta_idx = sta_idx; + req->tx_avail = tx_status; + req->uapsd = uapsd; + + /* Send the ME_TRAFFIC_IND_REQ to UMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_TRAFFIC_IND_CFM, NULL); } - /* Set parameters for the SM_CONNECT_REQ message */ - if (sme->crypto.n_ciphers_pairwise && - ((sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP40) || - (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_TKIP) || - (sme->crypto.ciphers_pairwise[0] == WLAN_CIPHER_SUITE_WEP104))) - flags |= DISABLE_HT; + int rwnx_send_me_rc_stats(struct rwnx_hw * rwnx_hw, u8 sta_idx, + struct me_rc_stats_cfm * cfm) + { + struct me_rc_stats_req *req; - if (sme->crypto.control_port) - flags |= CONTROL_PORT_HOST; + RWNX_DBG(RWNX_FN_ENTRY_STR); - if (sme->crypto.control_port_no_encrypt) - flags |= CONTROL_PORT_NO_ENC; + /* Build the ME_RC_STATS_REQ message */ + req = rwnx_msg_zalloc(ME_RC_STATS_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_rc_stats_req)); + if (!req) + return -ENOMEM; - if (use_pairwise_key(&sme->crypto)) - flags |= WPA_WPA2_IN_USE; + /* Set parameters for the ME_RC_STATS_REQ message */ + req->sta_idx = sta_idx; - if (sme->mfp == NL80211_MFP_REQUIRED) - flags |= MFP_IN_USE; - - if (rwnx_vif->sta.ap) - flags |= REASSOCIATION; - - req->ctrl_port_ethertype = sme->crypto.control_port_ethertype; - - if (sme->bssid) - memcpy(&req->bssid, sme->bssid, ETH_ALEN); - else - req->bssid = mac_addr_bcst; - req->vif_idx = rwnx_vif->vif_index; - if (sme->channel) { - req->chan.band = sme->channel->band; - req->chan.freq = sme->channel->center_freq; - req->chan.flags = get_chan_flags(sme->channel->flags); - } else { - req->chan.freq = (u16_l)-1; - } - for (i = 0; i < sme->ssid_len; i++) - req->ssid.array[i] = sme->ssid[i]; - req->ssid.length = sme->ssid_len; - req->flags = flags; - if (WARN_ON(sme->ie_len > sizeof(req->ie_buf))) - goto invalid_param; - if (sme->ie_len) - memcpy(req->ie_buf, sme->ie, sme->ie_len); - req->ie_len = sme->ie_len; - req->listen_interval = rwnx_mod_params.listen_itv; - req->dont_wait_bcmc = !rwnx_mod_params.listen_bcmc; - - /* Set auth_type */ - if (sme->auth_type == NL80211_AUTHTYPE_AUTOMATIC) - req->auth_type = WLAN_AUTH_OPEN; - else if (sme->auth_type == NL80211_AUTHTYPE_OPEN_SYSTEM) - req->auth_type = WLAN_AUTH_OPEN; - else if (sme->auth_type == NL80211_AUTHTYPE_SHARED_KEY) - req->auth_type = WLAN_AUTH_SHARED_KEY; - else if (sme->auth_type == NL80211_AUTHTYPE_FT) { - req->auth_type = WLAN_AUTH_FT; - } else if (sme->auth_type == NL80211_AUTHTYPE_SAE) - req->auth_type = WLAN_AUTH_SAE; - else - goto invalid_param; - - /* Set UAPSD queues */ - req->uapsd_queues = rwnx_mod_params.uapsd_queues; - - rwnx_vif->wep_enabled = pval & gval; - - if (rwnx_vif->wep_enabled) { - rwnx_vif->last_auth_type = sme->auth_type; + /* Send the ME_RC_STATS_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_RC_STATS_CFM, cfm); } - rwnx_vif->sta.ssid_len = (int)sme->ssid_len; - memset(rwnx_vif->sta.ssid, 0, rwnx_vif->sta.ssid_len + 1); - memcpy(rwnx_vif->sta.ssid, sme->ssid, rwnx_vif->sta.ssid_len); - if (sme->bssid) - memcpy(rwnx_vif->sta.bssid, sme->bssid, ETH_ALEN); + int rwnx_send_me_rc_set_rate(struct rwnx_hw * rwnx_hw, u8 sta_idx, + u16 rate_cfg) + { + struct me_rc_set_rate_req *req; - printk("%s drv_vif_index:%d connect to %s(%d) channel:%d auth_type:%d\r\n", - __func__, - rwnx_vif->drv_vif_index, - rwnx_vif->sta.ssid, - rwnx_vif->sta.ssid_len, - req->chan.freq, - req->auth_type); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Send the SM_CONNECT_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, SM_CONNECT_CFM, cfm); + /* Build the ME_RC_SET_RATE_REQ message */ + req = rwnx_msg_zalloc(ME_RC_SET_RATE_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_rc_set_rate_req)); + if (!req) + return -ENOMEM; -invalid_param: - rwnx_msg_free(rwnx_hw, req); - return -EINVAL; -} + /* Set parameters for the ME_RC_SET_RATE_REQ message */ + req->sta_idx = sta_idx; + req->fixed_rate_cfg = rate_cfg; -int rwnx_send_sm_disconnect_req(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - u16 reason) -{ - struct sm_disconnect_req *req; + /* Send the ME_RC_SET_RATE_REQ message to FW */ + return rwnx_send_msg(rwnx_hw, req, 0, 0, NULL); + } - RWNX_DBG(RWNX_FN_ENTRY_STR); + int rwnx_send_me_set_ps_mode(struct rwnx_hw * rwnx_hw, u8 ps_mode) + { + struct me_set_ps_mode_req *req; - /* Build the SM_DISCONNECT_REQ message */ - req = rwnx_msg_zalloc(SM_DISCONNECT_REQ, TASK_SM, DRV_TASK_ID, - sizeof(struct sm_disconnect_req)); - if (!req) - return -ENOMEM; + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Set parameters for the SM_DISCONNECT_REQ message */ - req->reason_code = reason; - req->vif_idx = rwnx_vif->vif_index; + /* Build the ME_SET_PS_MODE_REQ message */ + req = rwnx_msg_zalloc(ME_SET_PS_MODE_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_set_ps_mode_req)); + if (!req) + return -ENOMEM; - /* Send the SM_DISCONNECT_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, SM_DISCONNECT_CFM, NULL); -} + /* Set parameters for the ME_SET_PS_MODE_REQ message */ + req->ps_state = ps_mode; -int rwnx_send_sm_external_auth_required_rsp(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - u16 status) -{ - struct sm_external_auth_required_rsp *rsp; + /* Send the ME_SET_PS_MODE_REQ message to FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_SET_PS_MODE_CFM, NULL); + } - /* Build the SM_EXTERNAL_AUTH_CFM message */ - rsp = rwnx_msg_zalloc(SM_EXTERNAL_AUTH_REQUIRED_RSP, TASK_SM, DRV_TASK_ID, - sizeof(struct sm_external_auth_required_rsp)); - if (!rsp) - return -ENOMEM; + int rwnx_send_me_set_lp_level(struct rwnx_hw * rwnx_hw, u8 lp_level, + u8 disable_filter) + { + struct me_set_lp_level_req *req; - rsp->status = status; - rsp->vif_idx = rwnx_vif->vif_index; + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* send the SM_EXTERNAL_AUTH_REQUIRED_RSP message UMAC FW */ - return rwnx_send_msg(rwnx_hw, rsp, 1, SM_EXTERNAL_AUTH_REQUIRED_RSP_CFM, NULL); -} + printk("%s %d %d \n", __func__, lp_level, disable_filter); + /* Build the ME_SET_LP_LEVEL_REQ message */ + req = rwnx_msg_zalloc(ME_SET_LP_LEVEL_REQ, TASK_ME, DRV_TASK_ID, + sizeof(struct me_set_lp_level_req)); + if (!req) + return -ENOMEM; -int rwnx_send_apm_start_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct cfg80211_ap_settings *settings, - struct apm_start_cfm *cfm, - struct rwnx_ipc_elem_var *elem) -{ - struct apm_start_req *req; - struct rwnx_bcn *bcn = &vif->ap.bcn; - u8 *buf; - u32 flags = 0; - const u8 *rate_ie; - u8 rate_len = 0; - int var_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); - const u8 *var_pos; - int len, i; + /* Set parameters for the ME_SET_LP_LEVEL_REQ message */ + req->lp_level = lp_level; + req->disable_filter = disable_filter; + /* Send the ME_SET_LP_LEVEL_REQ message to FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_SET_LP_LEVEL_CFM, + NULL); + } - RWNX_DBG(RWNX_FN_ENTRY_STR); + int rwnx_send_sm_connect_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * rwnx_vif, + struct cfg80211_connect_params * sme, + struct sm_connect_cfm * cfm) + { + struct sm_connect_req *req; + int i; + u32_l flags = 0; + bool gval = false; + bool pval = false; + rwnx_vif->wep_enabled = false; + rwnx_vif->wep_auth_err = false; + rwnx_vif->last_auth_type = 0; - /* Build the APM_START_REQ message */ - req = rwnx_msg_zalloc(APM_START_REQ, TASK_APM, DRV_TASK_ID, - sizeof(struct apm_start_req)); - if (!req) - return -ENOMEM; + RWNX_DBG(RWNX_FN_ENTRY_STR); - // Build the beacon - bcn->dtim = (u8)settings->dtim_period; - buf = rwnx_build_bcn(bcn, &settings->beacon); - if (!buf) { + /* Build the SM_CONNECT_REQ message */ + req = rwnx_msg_zalloc(SM_CONNECT_REQ, TASK_SM, DRV_TASK_ID, + sizeof(struct sm_connect_req)); + if (!req) + return -ENOMEM; + + if ((sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP40) || + (sme->crypto.cipher_group == WLAN_CIPHER_SUITE_WEP104)) { + gval = true; + } + + if (sme->crypto.n_ciphers_pairwise && + ((sme->crypto.ciphers_pairwise[0] == + WLAN_CIPHER_SUITE_WEP40) || + (sme->crypto.ciphers_pairwise[0] == + WLAN_CIPHER_SUITE_WEP104))) { + pval = true; + } + + /* Set parameters for the SM_CONNECT_REQ message */ + if (sme->crypto.n_ciphers_pairwise && + ((sme->crypto.ciphers_pairwise[0] == + WLAN_CIPHER_SUITE_WEP40) || + (sme->crypto.ciphers_pairwise[0] == + WLAN_CIPHER_SUITE_TKIP) || + (sme->crypto.ciphers_pairwise[0] == + WLAN_CIPHER_SUITE_WEP104))) + flags |= DISABLE_HT; + + if (sme->crypto.control_port) + flags |= CONTROL_PORT_HOST; + + if (sme->crypto.control_port_no_encrypt) + flags |= CONTROL_PORT_NO_ENC; + + if (use_pairwise_key(&sme->crypto)) + flags |= WPA_WPA2_IN_USE; + + if (sme->mfp == NL80211_MFP_REQUIRED) + flags |= MFP_IN_USE; + + if (rwnx_vif->sta.ap) + flags |= REASSOCIATION; + + req->ctrl_port_ethertype = sme->crypto.control_port_ethertype; + + if (sme->bssid) + memcpy(&req->bssid, sme->bssid, ETH_ALEN); + else + req->bssid = mac_addr_bcst; + req->vif_idx = rwnx_vif->vif_index; + if (sme->channel) { + req->chan.band = sme->channel->band; + req->chan.freq = sme->channel->center_freq; + req->chan.flags = get_chan_flags(sme->channel->flags); + } else { + req->chan.freq = (u16_l)-1; + } + for (i = 0; i < sme->ssid_len; i++) + req->ssid.array[i] = sme->ssid[i]; + req->ssid.length = sme->ssid_len; + req->flags = flags; + if (WARN_ON(sme->ie_len > sizeof(req->ie_buf))) + goto invalid_param; + if (sme->ie_len) + memcpy(req->ie_buf, sme->ie, sme->ie_len); + req->ie_len = sme->ie_len; + req->listen_interval = rwnx_mod_params.listen_itv; + req->dont_wait_bcmc = !rwnx_mod_params.listen_bcmc; + + /* Set auth_type */ + if (sme->auth_type == NL80211_AUTHTYPE_AUTOMATIC) + req->auth_type = WLAN_AUTH_OPEN; + else if (sme->auth_type == NL80211_AUTHTYPE_OPEN_SYSTEM) + req->auth_type = WLAN_AUTH_OPEN; + else if (sme->auth_type == NL80211_AUTHTYPE_SHARED_KEY) + req->auth_type = WLAN_AUTH_SHARED_KEY; + else if (sme->auth_type == NL80211_AUTHTYPE_FT) { + req->auth_type = WLAN_AUTH_FT; + } else if (sme->auth_type == NL80211_AUTHTYPE_SAE) + req->auth_type = WLAN_AUTH_SAE; + else + goto invalid_param; + + /* Set UAPSD queues */ + req->uapsd_queues = rwnx_mod_params.uapsd_queues; + + rwnx_vif->wep_enabled = pval & gval; + + if (rwnx_vif->wep_enabled) { + rwnx_vif->last_auth_type = sme->auth_type; + } + + rwnx_vif->sta.ssid_len = (int)sme->ssid_len; + memset(rwnx_vif->sta.ssid, 0, rwnx_vif->sta.ssid_len + 1); + memcpy(rwnx_vif->sta.ssid, sme->ssid, rwnx_vif->sta.ssid_len); + if (sme->bssid) + memcpy(rwnx_vif->sta.bssid, sme->bssid, ETH_ALEN); + + printk("%s drv_vif_index:%d connect to %s(%d) channel:%d auth_type:%d\r\n", + __func__, rwnx_vif->drv_vif_index, rwnx_vif->sta.ssid, + rwnx_vif->sta.ssid_len, req->chan.freq, req->auth_type); + + /* Send the SM_CONNECT_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, SM_CONNECT_CFM, cfm); + + invalid_param: rwnx_msg_free(rwnx_hw, req); - return -ENOMEM; + return -EINVAL; } - // Retrieve the basic rate set from the beacon buffer - len = bcn->len - var_offset; - var_pos = buf + var_offset; + int rwnx_send_sm_disconnect_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * rwnx_vif, u16 reason) + { + struct sm_disconnect_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the SM_DISCONNECT_REQ message */ + req = rwnx_msg_zalloc(SM_DISCONNECT_REQ, TASK_SM, DRV_TASK_ID, + sizeof(struct sm_disconnect_req)); + if (!req) + return -ENOMEM; + + /* Set parameters for the SM_DISCONNECT_REQ message */ + req->reason_code = reason; + req->vif_idx = rwnx_vif->vif_index; + + /* Send the SM_DISCONNECT_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, SM_DISCONNECT_CFM, NULL); + } + + int rwnx_send_sm_external_auth_required_rsp(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * rwnx_vif, + u16 status) + { + struct sm_external_auth_required_rsp *rsp; + + /* Build the SM_EXTERNAL_AUTH_CFM message */ + rsp = rwnx_msg_zalloc( + SM_EXTERNAL_AUTH_REQUIRED_RSP, TASK_SM, DRV_TASK_ID, + sizeof(struct sm_external_auth_required_rsp)); + if (!rsp) + return -ENOMEM; + + rsp->status = status; + rsp->vif_idx = rwnx_vif->vif_index; + + /* send the SM_EXTERNAL_AUTH_REQUIRED_RSP message UMAC FW */ + return rwnx_send_msg(rwnx_hw, rsp, 1, + SM_EXTERNAL_AUTH_REQUIRED_RSP_CFM, NULL); + } + + int rwnx_send_apm_start_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, + struct cfg80211_ap_settings * settings, + struct apm_start_cfm * cfm, + struct rwnx_ipc_elem_var * elem) + { + struct apm_start_req *req; + struct rwnx_bcn *bcn = &vif->ap.bcn; + u8 *buf; + u32 flags = 0; + const u8 *rate_ie; + u8 rate_len = 0; + int var_offset = + offsetof(struct ieee80211_mgmt, u.beacon.variable); + const u8 *var_pos; + int len, i; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the APM_START_REQ message */ + req = rwnx_msg_zalloc(APM_START_REQ, TASK_APM, DRV_TASK_ID, + sizeof(struct apm_start_req)); + if (!req) + return -ENOMEM; + + // Build the beacon + bcn->dtim = (u8)settings->dtim_period; + buf = rwnx_build_bcn(bcn, &settings->beacon); + if (!buf) { + rwnx_msg_free(rwnx_hw, req); + return -ENOMEM; + } + + // Retrieve the basic rate set from the beacon buffer + len = bcn->len - var_offset; + var_pos = buf + var_offset; // Assume that rate higher that 54 Mbps are BSS membership #define IS_BASIC_RATE(r) ((r & 0x80) && ((r & ~0x80) <= (54 * 2))) - rate_ie = cfg80211_find_ie(WLAN_EID_SUPP_RATES, var_pos, len); - if (rate_ie) { - const u8 *rates = rate_ie + 2; - for (i = 0; (i < rate_ie[1]) && (rate_len < MAC_RATESET_LEN); i++) { - if (IS_BASIC_RATE(rates[i])) - req->basic_rates.array[rate_len++] = rates[i]; + rate_ie = cfg80211_find_ie(WLAN_EID_SUPP_RATES, var_pos, len); + if (rate_ie) { + const u8 *rates = rate_ie + 2; + for (i = 0; + (i < rate_ie[1]) && (rate_len < MAC_RATESET_LEN); + i++) { + if (IS_BASIC_RATE(rates[i])) + req->basic_rates.array[rate_len++] = + rates[i]; + } } - } - rate_ie = cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, var_pos, len); - if (rate_ie) { - const u8 *rates = rate_ie + 2; - for (i = 0; (i < rate_ie[1]) && (rate_len < MAC_RATESET_LEN); i++) { - if (IS_BASIC_RATE(rates[i])) - req->basic_rates.array[rate_len++] = rates[i]; + rate_ie = + cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, var_pos, len); + if (rate_ie) { + const u8 *rates = rate_ie + 2; + for (i = 0; + (i < rate_ie[1]) && (rate_len < MAC_RATESET_LEN); + i++) { + if (IS_BASIC_RATE(rates[i])) + req->basic_rates.array[rate_len++] = + rates[i]; + } } - } - req->basic_rates.length = rate_len; + req->basic_rates.length = rate_len; #undef IS_BASIC_RATE #if 0 @@ -2632,66 +3560,74 @@ int rwnx_send_apm_start_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, rwnx_send_bcn(rwnx_hw, buf, vif->vif_index, bcn->len); #endif - /* Set parameters for the APM_START_REQ message */ - req->vif_idx = vif->vif_index; - req->bcn_addr = elem->dma_addr; - req->bcn_len = bcn->len; - req->tim_oft = bcn->head_len; - req->tim_len = bcn->tim_len; - req->chan.band = settings->chandef.chan->band; - req->chan.freq = settings->chandef.chan->center_freq; + /* Set parameters for the APM_START_REQ message */ + req->vif_idx = vif->vif_index; + req->bcn_addr = elem->dma_addr; + req->bcn_len = bcn->len; + req->tim_oft = bcn->head_len; + req->tim_len = bcn->tim_len; + req->chan.band = settings->chandef.chan->band; + req->chan.freq = settings->chandef.chan->center_freq; +#ifdef CONFIG_RADAR_OR_IR_DETECT + req->chan.flags = get_chan_flags(settings->chandef.chan->flags); +#else req->chan.flags = 0; - req->chan.tx_power = chan_to_fw_pwr(settings->chandef.chan->max_power); - req->center_freq1 = settings->chandef.center_freq1; - req->center_freq2 = settings->chandef.center_freq2; - req->ch_width = bw2chnl[settings->chandef.width]; - req->bcn_int = settings->beacon_interval; - if (settings->crypto.control_port) - flags |= CONTROL_PORT_HOST; +#endif + printk("chan.flags %u \n", req->chan.flags); + req->chan.tx_power = + chan_to_fw_pwr(settings->chandef.chan->max_power); + req->center_freq1 = settings->chandef.center_freq1; + req->center_freq2 = settings->chandef.center_freq2; + req->ch_width = bw2chnl[settings->chandef.width]; + req->bcn_int = settings->beacon_interval; + if (settings->crypto.control_port) + flags |= CONTROL_PORT_HOST; - if (settings->crypto.control_port_no_encrypt) - flags |= CONTROL_PORT_NO_ENC; + if (settings->crypto.control_port_no_encrypt) + flags |= CONTROL_PORT_NO_ENC; - if (use_pairwise_key(&settings->crypto)) - flags |= WPA_WPA2_IN_USE; + if (use_pairwise_key(&settings->crypto)) + flags |= WPA_WPA2_IN_USE; - if (settings->crypto.control_port_ethertype) - req->ctrl_port_ethertype = settings->crypto.control_port_ethertype; - else - req->ctrl_port_ethertype = ETH_P_PAE; - req->flags = flags; + if (settings->crypto.control_port_ethertype) + req->ctrl_port_ethertype = + settings->crypto.control_port_ethertype; + else + req->ctrl_port_ethertype = ETH_P_PAE; + req->flags = flags; - /* Send the APM_START_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, APM_START_CFM, cfm); -} + /* Send the APM_START_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, APM_START_CFM, cfm); + } -int rwnx_send_apm_stop_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif) -{ - struct apm_stop_req *req; + int rwnx_send_apm_stop_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif) + { + struct apm_stop_req *req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the APM_STOP_REQ message */ - req = rwnx_msg_zalloc(APM_STOP_REQ, TASK_APM, DRV_TASK_ID, - sizeof(struct apm_stop_req)); - if (!req) - return -ENOMEM; + /* Build the APM_STOP_REQ message */ + req = rwnx_msg_zalloc(APM_STOP_REQ, TASK_APM, DRV_TASK_ID, + sizeof(struct apm_stop_req)); + if (!req) + return -ENOMEM; - /* Set parameters for the APM_STOP_REQ message */ - req->vif_idx = vif->vif_index; + /* Set parameters for the APM_STOP_REQ message */ + req->vif_idx = vif->vif_index; - /* Send the APM_STOP_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, APM_STOP_CFM, NULL); -} + /* Send the APM_STOP_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, APM_STOP_CFM, NULL); + } -uint8_t scanning;// = 0; + uint8_t scanning; // = 0; -#define P2P_WILDCARD_SSID "DIRECT-" -#define P2P_WILDCARD_SSID_LEN (sizeof(P2P_WILDCARD_SSID) - 1) +#define P2P_WILDCARD_SSID "DIRECT-" +#define P2P_WILDCARD_SSID_LEN (sizeof(P2P_WILDCARD_SSID) - 1) #ifdef CONFIG_SET_VENDOR_EXTENSION_IE -u8_l vendor_extension_data[256]; -u8_l vendor_extension_len = 0; + u8_l vendor_extension_data[256]; + u8_l vendor_extension_len = 0; #if 0 u8_l vendor_extension_data[]={ 0x10,0x49,0x00,0x17,0x00,0x01,0x37,0x10, @@ -2704,127 +3640,156 @@ u8_l vendor_extension_data[]={ 0x36,0x38,0x2e,0x31,0x35,0x34,0x2e,0x31}; #endif -void rwnx_insert_vendor_extension_data(struct scanu_vendor_ie_req *ie_req){ - u8_l temp_ie[256]; - u8_l vendor_extension_subelement[3] = {0x00,0x37,0x2A}; - u8_l vendor_extension_id[2] = {0x10,0x49}; - int index = 0; - int vendor_extension_subelement_len = 0; + void rwnx_insert_vendor_extension_data(struct scanu_vendor_ie_req * + ie_req) + { + u8_l temp_ie[256]; + u8_l vendor_extension_subelement[3] = { 0x00, 0x37, 0x2A }; + u8_l vendor_extension_id[2] = { 0x10, 0x49 }; + int index = 0; + int vendor_extension_subelement_len = 0; - memset(temp_ie, 0, 256); + memset(temp_ie, 0, 256); - //find vendor_extension_subelement - for(index = 0; index < ie_req->add_ie_len; index++){ - if(ie_req->ie[index] == vendor_extension_id[0]){ - index++; - if(index == ie_req->add_ie_len){ - return; - } - if(ie_req->ie[index] == vendor_extension_id[1] && - ie_req->ie[index + 3] == vendor_extension_subelement[0]&& - ie_req->ie[index + 4] == vendor_extension_subelement[1]&& - ie_req->ie[index + 5] == vendor_extension_subelement[2]){ - index = index + 2; - vendor_extension_subelement_len = ie_req->ie[index]; - printk("%s find vendor_extension_subelement,index:%d len:%d\r\n", __func__, index, ie_req->ie[index]); - break; + //find vendor_extension_subelement + for (index = 0; index < ie_req->add_ie_len; index++) { + if (ie_req->ie[index] == vendor_extension_id[0]) { + index++; + if (index == ie_req->add_ie_len) { + return; + } + if (ie_req->ie[index] == + vendor_extension_id[1] && + ie_req->ie[index + 3] == + vendor_extension_subelement[0] && + ie_req->ie[index + 4] == + vendor_extension_subelement[1] && + ie_req->ie[index + 5] == + vendor_extension_subelement[2]) { + index = index + 2; + vendor_extension_subelement_len = + ie_req->ie[index]; + printk("%s find vendor_extension_subelement,index:%d len:%d\r\n", + __func__, index, + ie_req->ie[index]); + break; + } } } + index = index + vendor_extension_subelement_len; + + //insert vendor extension + memcpy(&temp_ie[0], ie_req->ie, index + 1); + memcpy(&temp_ie[index + 1], vendor_extension_data, + vendor_extension_len /*sizeof(vendor_extension_data)*/); //insert vendor extension data + memcpy(&temp_ie[index + 1 + + vendor_extension_len /*sizeof(vendor_extension_data)*/ + ], + &ie_req->ie[index + 1], ie_req->add_ie_len - index); + + memcpy(ie_req->ie, temp_ie, + ie_req->add_ie_len + + vendor_extension_len /*sizeof(vendor_extension_data)*/); + ie_req->add_ie_len = + ie_req->add_ie_len + + vendor_extension_len /*sizeof(vendor_extension_data)*/; + ie_req->ie[1] = + ie_req->ie[1] + + vendor_extension_len /*sizeof(vendor_extension_data)*/; + + //rwnx_data_dump((char*)__func__, (void*)ie_req->ie, ie_req->add_ie_len); } - index = index + vendor_extension_subelement_len; +#endif //CONFIG_SET_VENDOR_EXTENSION_IE - //insert vendor extension - memcpy(&temp_ie[0], ie_req->ie, index + 1); - memcpy(&temp_ie[index + 1], vendor_extension_data, vendor_extension_len/*sizeof(vendor_extension_data)*/);//insert vendor extension data - memcpy(&temp_ie[index + 1 + vendor_extension_len/*sizeof(vendor_extension_data)*/], &ie_req->ie[index + 1], ie_req->add_ie_len - index); + int rwnx_send_scanu_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * rwnx_vif, + struct cfg80211_scan_request * param) + { + struct scanu_start_req *req = NULL; + struct scanu_vendor_ie_req *ie_req = NULL; + struct mm_add_if_cfm add_if_cfm; + int i; + uint8_t chan_flags = 0; + int err; - memcpy(ie_req->ie, temp_ie, ie_req->add_ie_len + vendor_extension_len/*sizeof(vendor_extension_data)*/); - ie_req->add_ie_len = ie_req->add_ie_len + vendor_extension_len/*sizeof(vendor_extension_data)*/; - ie_req->ie[1] = ie_req->ie[1] + vendor_extension_len/*sizeof(vendor_extension_data)*/; + RWNX_DBG(RWNX_FN_ENTRY_STR); - //rwnx_data_dump((char*)__func__, (void*)ie_req->ie, ie_req->add_ie_len); -} -#endif//CONFIG_SET_VENDOR_EXTENSION_IE + /* Build the SCANU_START_REQ message */ + req = rwnx_msg_zalloc(SCANU_START_REQ, TASK_SCANU, DRV_TASK_ID, + sizeof(struct scanu_start_req)); + if (!req) + return -ENOMEM; - -int rwnx_send_scanu_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct cfg80211_scan_request *param) -{ - struct scanu_start_req *req = NULL; - struct scanu_vendor_ie_req *ie_req = NULL; - struct mm_add_if_cfm add_if_cfm; - int i; - uint8_t chan_flags = 0; - int err; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the SCANU_START_REQ message */ - req = rwnx_msg_zalloc(SCANU_START_REQ, TASK_SCANU, DRV_TASK_ID, - sizeof(struct scanu_start_req)); - if (!req) - return -ENOMEM; - - scanning = 1; - /* Set parameters */ - req->vif_idx = rwnx_vif->vif_index; - req->chan_cnt = (u8)min_t(int, SCAN_CHANNEL_MAX, param->n_channels); - req->ssid_cnt = (u8)min_t(int, SCAN_SSID_MAX, param->n_ssids); - req->bssid = mac_addr_bcst; - req->no_cck = param->no_cck; + scanning = 1; + /* Set parameters */ + req->vif_idx = rwnx_vif->vif_index; + req->chan_cnt = + (u8)min_t(int, SCAN_CHANNEL_MAX, param->n_channels); + req->ssid_cnt = (u8)min_t(int, SCAN_SSID_MAX, param->n_ssids); + req->bssid = mac_addr_bcst; + req->no_cck = param->no_cck; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) - if (param->duration_mandatory) - //req->duration = ieee80211_tu_to_usec(param->duration); - req->duration = 0; + if (param->duration_mandatory) + //req->duration = ieee80211_tu_to_usec(param->duration); + req->duration = 0; #endif -#ifdef RADAR_OR_IR_DETECT - if (req->ssid_cnt == 0) - chan_flags |= CHAN_NO_IR; +#ifdef CONFIG_RADAR_OR_IR_DETECT + if (req->ssid_cnt == 0) + chan_flags |= CHAN_NO_IR; #endif - for (i = 0; i < req->ssid_cnt; i++) { - int j; - for (j = 0; j < param->ssids[i].ssid_len; j++) - req->ssid[i].array[j] = param->ssids[i].ssid[j]; - req->ssid[i].length = param->ssids[i].ssid_len; + for (i = 0; i < req->ssid_cnt; i++) { + int j; + for (j = 0; j < param->ssids[i].ssid_len; j++) + req->ssid[i].array[j] = param->ssids[i].ssid[j]; + req->ssid[i].length = param->ssids[i].ssid_len; - if (!memcmp(P2P_WILDCARD_SSID, param->ssids[i].ssid, - P2P_WILDCARD_SSID_LEN)) { - AICWFDBG(LOGINFO, "p2p scanu:%d,%d,%d\n", rwnx_vif->vif_index, rwnx_vif->is_p2p_vif, rwnx_hw->is_p2p_alive); + if (!memcmp(P2P_WILDCARD_SSID, param->ssids[i].ssid, + P2P_WILDCARD_SSID_LEN)) { + AICWFDBG(LOGINFO, "p2p scanu:%d,%d,%d\n", + rwnx_vif->vif_index, + rwnx_vif->is_p2p_vif, + rwnx_hw->is_p2p_alive); #ifdef CONFIG_USE_P2P0 - if (rwnx_vif->is_p2p_vif && !rwnx_hw->is_p2p_alive) { + if (rwnx_vif->is_p2p_vif && + !rwnx_hw->is_p2p_alive) { #else if (rwnx_vif == rwnx_hw->p2p_dev_vif && !rwnx_vif->up) { #endif - err = rwnx_send_add_if (rwnx_hw, rwnx_vif->wdev.address, - RWNX_VIF_TYPE(rwnx_vif), false, &add_if_cfm); - if (err) - goto error; + err = rwnx_send_add_if( + rwnx_hw, rwnx_vif->wdev.address, + RWNX_VIF_TYPE(rwnx_vif), false, + &add_if_cfm); + if (err) + goto error; - if (add_if_cfm.status != 0) { - return -EIO; + if (add_if_cfm.status != 0) { + return -EIO; + } + + /* Save the index retrieved from LMAC */ + spin_lock_bh(&rwnx_hw->cb_lock); + rwnx_vif->vif_index = + add_if_cfm.inst_nbr; + rwnx_vif->up = true; + rwnx_hw->vif_started++; + rwnx_hw->vif_table[add_if_cfm.inst_nbr] = + rwnx_vif; + spin_unlock_bh(&rwnx_hw->cb_lock); } - - /* Save the index retrieved from LMAC */ - spin_lock_bh(&rwnx_hw->cb_lock); - rwnx_vif->vif_index = add_if_cfm.inst_nbr; - rwnx_vif->up = true; - rwnx_hw->vif_started++; - rwnx_hw->vif_table[add_if_cfm.inst_nbr] = rwnx_vif; - spin_unlock_bh(&rwnx_hw->cb_lock); - } - rwnx_hw->is_p2p_alive = 1; + rwnx_hw->is_p2p_alive = 1; #ifndef CONFIG_USE_P2P0 - mod_timer(&rwnx_hw->p2p_alive_timer, jiffies + msecs_to_jiffies(1000)); - atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); + mod_timer(&rwnx_hw->p2p_alive_timer, + jiffies + msecs_to_jiffies(1000)); + atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); #endif - AICWFDBG(LOGINFO, "p2p scan start\n"); + AICWFDBG(LOGINFO, "p2p scan start\n"); + } } - } #if 1 - if (param->ie) { - #if 0 + if (param->ie) { +#if 0 if (rwnx_ipc_elem_var_allocs(rwnx_hw, &rwnx_hw->scan_ie, param->ie_len, DMA_TO_DEVICE, NULL, param->ie, NULL)) @@ -2832,9 +3797,10 @@ int rwnx_send_scanu_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, req->add_ie_len = param->ie_len; req->add_ies = rwnx_hw->scan_ie.dma_addr; - #else - ie_req = rwnx_msg_zalloc(SCANU_VENDOR_IE_REQ, TASK_SCANU, DRV_TASK_ID, - sizeof(struct scanu_vendor_ie_req)); +#else + ie_req = rwnx_msg_zalloc(SCANU_VENDOR_IE_REQ, TASK_SCANU, + DRV_TASK_ID, + sizeof(struct scanu_vendor_ie_req)); if (!ie_req) return -ENOMEM; @@ -2847,884 +3813,1005 @@ int rwnx_send_scanu_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, req->add_ie_len = 0; req->add_ies = 0; - err = rwnx_send_msg(rwnx_hw, ie_req, 1, SCANU_VENDOR_IE_CFM, NULL); + err = rwnx_send_msg(rwnx_hw, ie_req, 1, SCANU_VENDOR_IE_CFM, + NULL); if (err) goto error; - #endif +#endif + } else { + req->add_ie_len = 0; + req->add_ies = 0; } - else { - req->add_ie_len = 0; - req->add_ies = 0; - } #else - req->add_ie_len = 0; - req->add_ies = 0; + req->add_ie_len = 0; + req->add_ies = 0; #endif - for (i = 0; i < req->chan_cnt; i++) { - struct ieee80211_channel *chan = param->channels[i]; - AICWFDBG(LOGDEBUG, "scan channel:%d(%d) \r\n", ieee80211_frequency_to_channel(chan->center_freq), chan->center_freq); - req->chan[i].band = chan->band; - req->chan[i].freq = chan->center_freq; - req->chan[i].flags = chan_flags | get_chan_flags(chan->flags); - req->chan[i].tx_power = chan_to_fw_pwr(chan->max_reg_power); - } - - /* Send the SCANU_START_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, SCANU_START_CFM_ADDTIONAL, NULL); -error: - if (req != NULL) - rwnx_msg_free(rwnx_hw, req); - if (ie_req != NULL) - rwnx_msg_free(rwnx_hw, ie_req); - return -ENOMEM; -} - -int rwnx_send_scanu_cancel_req(struct rwnx_hw *rwnx_hw, struct scan_cancel_cfm *cfm) -{ - struct scan_cancel_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the SCAN_CANCEL_REQ message */ - req = rwnx_msg_zalloc(SCANU_CANCEL_REQ, TASK_SCANU, DRV_TASK_ID, - sizeof(struct scan_cancel_req)); - if (!req) - return -ENOMEM; - - /* Send the SCAN_CANCEL_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, SCANU_CANCEL_CFM, cfm); -} - -int rwnx_send_apm_start_cac_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct cfg80211_chan_def *chandef, - struct apm_start_cac_cfm *cfm) -{ - struct apm_start_cac_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the APM_START_CAC_REQ message */ - req = rwnx_msg_zalloc(APM_START_CAC_REQ, TASK_APM, DRV_TASK_ID, - sizeof(struct apm_start_cac_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the APM_START_CAC_REQ message */ - req->vif_idx = vif->vif_index; - req->chan.band = chandef->chan->band; - req->chan.freq = chandef->chan->center_freq; - req->chan.flags = 0; - req->center_freq1 = chandef->center_freq1; - req->center_freq2 = chandef->center_freq2; - req->ch_width = bw2chnl[chandef->width]; - - /* Send the APM_START_CAC_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, APM_START_CAC_CFM, cfm); -} - -int rwnx_send_apm_stop_cac_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif) -{ - struct apm_stop_cac_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the APM_STOP_CAC_REQ message */ - req = rwnx_msg_zalloc(APM_STOP_CAC_REQ, TASK_APM, DRV_TASK_ID, - sizeof(struct apm_stop_cac_req)); - if (!req) - return -ENOMEM; - - /* Set parameters for the APM_STOP_CAC_REQ message */ - req->vif_idx = vif->vif_index; - - /* Send the APM_STOP_CAC_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, APM_STOP_CAC_CFM, NULL); -} - -int rwnx_send_mesh_start_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - const struct mesh_config *conf, const struct mesh_setup *setup, - struct mesh_start_cfm *cfm) -{ - // Message to send - struct mesh_start_req *req; - // Supported basic rates - struct ieee80211_supported_band *band_2GHz = rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; - /* Counter */ - int i; - /* Return status */ - int status; - /* DMA Address to be unmapped after confirmation reception */ - u32 dma_addr = 0; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the MESH_START_REQ message */ - req = rwnx_msg_zalloc(MESH_START_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_start_req)); - if (!req) { - return -ENOMEM; - } - - req->vif_index = vif->vif_index; - req->bcn_int = setup->beacon_interval; - req->dtim_period = setup->dtim_period; - req->mesh_id_len = setup->mesh_id_len; - - for (i = 0; i < setup->mesh_id_len; i++) { - req->mesh_id[i] = *(setup->mesh_id + i); - } - - req->user_mpm = setup->user_mpm; - req->is_auth = setup->is_authenticated; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) - req->auth_id = setup->auth_id; - #endif - req->ie_len = setup->ie_len; - - if (setup->ie_len) { - /* - * Need to provide a Virtual Address to the MAC so that it can download the - * additional information elements. - */ - req->ie_addr = dma_map_single(rwnx_hw->dev, (void *)setup->ie, - setup->ie_len, DMA_FROM_DEVICE); - - /* Check DMA mapping result */ - if (dma_mapping_error(rwnx_hw->dev, req->ie_addr)) { - printk(KERN_CRIT "%s - DMA Mapping error on additional IEs\n", __func__); - - /* Consider there is no Additional IEs */ - req->ie_len = 0; - } else { - /* Store DMA Address so that we can unmap the memory section once MESH_START_CFM is received */ - dma_addr = req->ie_addr; + for (i = 0; i < req->chan_cnt; i++) { + struct ieee80211_channel *chan = param->channels[i]; + AICWFDBG(LOGDEBUG, "scan channel:%d(%d) \r\n", + ieee80211_frequency_to_channel( + chan->center_freq), + chan->center_freq); + req->chan[i].band = chan->band; + req->chan[i].freq = chan->center_freq; + req->chan[i].flags = + chan_flags | get_chan_flags(chan->flags); + req->chan[i].tx_power = + chan_to_fw_pwr(chan->max_reg_power); } - } - /* Provide rate information */ - req->basic_rates.length = 0; - for (i = 0; i < band_2GHz->n_bitrates; i++) { - u16 rate = band_2GHz->bitrates[i].bitrate; - - /* Read value is in in units of 100 Kbps, provided value is in units - * of 1Mbps, and multiplied by 2 so that 5.5 becomes 11 */ - rate = (rate << 1) / 10; - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) // TODO: check basic rates - if (setup->basic_rates & CO_BIT(i)) { - rate |= 0x80; - } - #endif - - req->basic_rates.array[i] = (u8)rate; - req->basic_rates.length++; - } - - /* Provide channel information */ - req->chan.band = setup->chandef.chan->band; - req->chan.freq = setup->chandef.chan->center_freq; - req->chan.flags = 0; - req->chan.tx_power = chan_to_fw_pwr(setup->chandef.chan->max_power); - req->center_freq1 = setup->chandef.center_freq1; - req->center_freq2 = setup->chandef.center_freq2; - req->ch_width = bw2chnl[setup->chandef.width]; - - /* Send the MESH_START_REQ message to UMAC FW */ - status = rwnx_send_msg(rwnx_hw, req, 1, MESH_START_CFM, cfm); - - /* Unmap DMA area */ - if (setup->ie_len) { - dma_unmap_single(rwnx_hw->dev, dma_addr, setup->ie_len, DMA_TO_DEVICE); - } - - /* Return the status */ - return status; -} - -int rwnx_send_mesh_stop_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct mesh_stop_cfm *cfm) -{ - // Message to send - struct mesh_stop_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the MESH_STOP_REQ message */ - req = rwnx_msg_zalloc(MESH_STOP_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_stop_req)); - if (!req) { + /* Send the SCANU_START_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, SCANU_START_CFM_ADDTIONAL, + NULL); + error: + if (req != NULL) + rwnx_msg_free(rwnx_hw, req); + if (ie_req != NULL) + rwnx_msg_free(rwnx_hw, ie_req); return -ENOMEM; } - req->vif_idx = vif->vif_index; + int rwnx_send_scanu_cancel_req(struct rwnx_hw * rwnx_hw, + struct scan_cancel_cfm * cfm) + { + struct scan_cancel_req *req; - /* Send the MESH_STOP_REQ message to UMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MESH_STOP_CFM, cfm); -} + RWNX_DBG(RWNX_FN_ENTRY_STR); -int rwnx_send_mesh_update_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u32 mask, const struct mesh_config *p_mconf, struct mesh_update_cfm *cfm) -{ - // Message to send - struct mesh_update_req *req; - // Keep only bit for fields which can be updated - u32 supp_mask = (mask << 1) & (CO_BIT(NL80211_MESHCONF_GATE_ANNOUNCEMENTS) - | CO_BIT(NL80211_MESHCONF_HWMP_ROOTMODE) - | CO_BIT(NL80211_MESHCONF_FORWARDING) - | CO_BIT(NL80211_MESHCONF_POWER_MODE)); + /* Build the SCAN_CANCEL_REQ message */ + req = rwnx_msg_zalloc(SCANU_CANCEL_REQ, TASK_SCANU, DRV_TASK_ID, + sizeof(struct scan_cancel_req)); + if (!req) + return -ENOMEM; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - if (!supp_mask) { - return -ENOENT; + /* Send the SCAN_CANCEL_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, SCANU_CANCEL_CFM, cfm); } - /* Build the MESH_UPDATE_REQ message */ - req = rwnx_msg_zalloc(MESH_UPDATE_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_update_req)); + int rwnx_send_apm_start_cac_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, + struct cfg80211_chan_def * chandef, + struct apm_start_cac_cfm * cfm) + { + struct apm_start_cac_req *req; - if (!req) { - return -ENOMEM; - } + RWNX_DBG(RWNX_FN_ENTRY_STR); - req->vif_idx = vif->vif_index; + /* Build the APM_START_CAC_REQ message */ + req = rwnx_msg_zalloc(APM_START_CAC_REQ, TASK_APM, DRV_TASK_ID, + sizeof(struct apm_start_cac_req)); + if (!req) + return -ENOMEM; - if (supp_mask & CO_BIT(NL80211_MESHCONF_GATE_ANNOUNCEMENTS)) { - req->flags |= CO_BIT(MESH_UPDATE_FLAGS_GATE_MODE_BIT); - req->gate_announ = p_mconf->dot11MeshGateAnnouncementProtocol; - } - - if (supp_mask & CO_BIT(NL80211_MESHCONF_HWMP_ROOTMODE)) { - req->flags |= CO_BIT(MESH_UPDATE_FLAGS_ROOT_MODE_BIT); - req->root_mode = p_mconf->dot11MeshHWMPRootMode; - } - - if (supp_mask & CO_BIT(NL80211_MESHCONF_FORWARDING)) { - req->flags |= CO_BIT(MESH_UPDATE_FLAGS_MESH_FWD_BIT); - req->mesh_forward = p_mconf->dot11MeshForwarding; - } - - if (supp_mask & CO_BIT(NL80211_MESHCONF_POWER_MODE)) { - req->flags |= CO_BIT(MESH_UPDATE_FLAGS_LOCAL_PSM_BIT); - req->local_ps_mode = p_mconf->power_mode; - } - - /* Send the MESH_UPDATE_REQ message to UMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MESH_UPDATE_CFM, cfm); -} - -int rwnx_send_mesh_peer_info_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u8 sta_idx, struct mesh_peer_info_cfm *cfm) -{ - // Message to send - struct mesh_peer_info_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the MESH_PEER_INFO_REQ message */ - req = rwnx_msg_zalloc(MESH_PEER_INFO_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_peer_info_req)); - if (!req) { - return -ENOMEM; - } - - req->sta_idx = sta_idx; - - /* Send the MESH_PEER_INFO_REQ message to UMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MESH_PEER_INFO_CFM, cfm); -} - -void rwnx_send_mesh_peer_update_ntf(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u8 sta_idx, u8 mlink_state) -{ - // Message to send - struct mesh_peer_update_ntf *ntf; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the MESH_PEER_UPDATE_NTF message */ - ntf = rwnx_msg_zalloc(MESH_PEER_UPDATE_NTF, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_peer_update_ntf)); - - if (ntf) { - ntf->vif_idx = vif->vif_index; - ntf->sta_idx = sta_idx; - ntf->state = mlink_state; - - /* Send the MESH_PEER_INFO_REQ message to UMAC FW */ - rwnx_send_msg(rwnx_hw, ntf, 0, 0, NULL); - } -} - -void rwnx_send_mesh_path_create_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, u8 *tgt_addr) -{ - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Check if we are already waiting for a confirmation */ - if (!vif->ap.create_path) { - // Message to send - struct mesh_path_create_req *req; - - /* Build the MESH_PATH_CREATE_REQ message */ - req = rwnx_msg_zalloc(MESH_PATH_CREATE_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_path_create_req)); - - if (req) { - req->vif_idx = vif->vif_index; - memcpy(&req->tgt_mac_addr, tgt_addr, ETH_ALEN); - - vif->ap.create_path = true; - - /* Send the MESH_PATH_CREATE_REQ message to UMAC FW */ - rwnx_send_msg(rwnx_hw, req, 0, 0, NULL); - } - } -} - -int rwnx_send_mesh_path_update_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, const u8 *tgt_addr, - const u8 *p_nhop_addr, struct mesh_path_update_cfm *cfm) -{ - // Message to send - struct mesh_path_update_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the MESH_PATH_UPDATE_REQ message */ - req = rwnx_msg_zalloc(MESH_PATH_UPDATE_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_path_update_req)); - if (!req) { - return -ENOMEM; - } - - req->delete = (p_nhop_addr == NULL); - req->vif_idx = vif->vif_index; - memcpy(&req->tgt_mac_addr, tgt_addr, ETH_ALEN); - - if (p_nhop_addr) { - memcpy(&req->nhop_mac_addr, p_nhop_addr, ETH_ALEN); - } - - /* Send the MESH_PATH_UPDATE_REQ message to UMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MESH_PATH_UPDATE_CFM, cfm); -} - -void rwnx_send_mesh_proxy_add_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, u8 *ext_addr) -{ - // Message to send - struct mesh_proxy_add_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the MESH_PROXY_ADD_REQ message */ - req = rwnx_msg_zalloc(MESH_PROXY_ADD_REQ, TASK_MESH, DRV_TASK_ID, - sizeof(struct mesh_proxy_add_req)); - - if (req) { + /* Set parameters for the APM_START_CAC_REQ message */ req->vif_idx = vif->vif_index; - memcpy(&req->ext_sta_addr, ext_addr, ETH_ALEN); - - /* Send the MESH_PROXY_ADD_REQ message to UMAC FW */ - rwnx_send_msg(rwnx_hw, req, 0, 0, NULL); - } -} - -int rwnx_send_tdls_peer_traffic_ind_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif) -{ - struct tdls_peer_traffic_ind_req *tdls_peer_traffic_ind_req; - - if (!rwnx_vif->sta.tdls_sta) - return -ENOLINK; - - /* Build the TDLS_PEER_TRAFFIC_IND_REQ message */ - tdls_peer_traffic_ind_req = rwnx_msg_zalloc(TDLS_PEER_TRAFFIC_IND_REQ, TASK_TDLS, DRV_TASK_ID, - sizeof(struct tdls_peer_traffic_ind_req)); - - if (!tdls_peer_traffic_ind_req) - return -ENOMEM; - - /* Set parameters for the TDLS_PEER_TRAFFIC_IND_REQ message */ - tdls_peer_traffic_ind_req->vif_index = rwnx_vif->vif_index; - tdls_peer_traffic_ind_req->sta_idx = rwnx_vif->sta.tdls_sta->sta_idx; - memcpy(&(tdls_peer_traffic_ind_req->peer_mac_addr.array[0]), - rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN); - tdls_peer_traffic_ind_req->dialog_token = 0; // check dialog token value - tdls_peer_traffic_ind_req->last_tid = rwnx_vif->sta.tdls_sta->tdls.last_tid; - tdls_peer_traffic_ind_req->last_sn = rwnx_vif->sta.tdls_sta->tdls.last_sn; - - /* Send the TDLS_PEER_TRAFFIC_IND_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, tdls_peer_traffic_ind_req, 0, 0, NULL); -} - -int rwnx_send_config_monitor_req(struct rwnx_hw *rwnx_hw, - struct cfg80211_chan_def *chandef, - struct me_config_monitor_cfm *cfm) -{ - struct me_config_monitor_req *req; - - RWNX_DBG(RWNX_FN_ENTRY_STR); - - /* Build the ME_CONFIG_MONITOR_REQ message */ - req = rwnx_msg_zalloc(ME_CONFIG_MONITOR_REQ, TASK_ME, DRV_TASK_ID, - sizeof(struct me_config_monitor_req)); - if (!req) - return -ENOMEM; - - if (chandef) { - req->chan_set = true; - req->chan.band = chandef->chan->band; req->chan.type = bw2chnl[chandef->width]; req->chan.prim20_freq = chandef->chan->center_freq; req->chan.center1_freq = chandef->center_freq1; req->chan.center2_freq = chandef->center_freq2; - req->chan.tx_power = chan_to_fw_pwr(chandef->chan->max_power); + req->chan.tx_power = 20; + req->chan.flags = get_chan_flags(chandef->chan->flags); - if (rwnx_hw->phy.limit_bw) - limit_chan_bw(&req->chan.type, req->chan.prim20_freq, &req->chan.center1_freq); - } else { - req->chan_set = false; + /* Send the APM_START_CAC_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, APM_START_CAC_CFM, cfm); } - req->uf = rwnx_hw->mod_params->uf; - req->auto_reply = rwnx_hw->mod_params->auto_reply; + int rwnx_send_apm_stop_cac_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif) + { + struct apm_stop_cac_req *req; - /* Send the ME_CONFIG_MONITOR_REQ message to FW */ - return rwnx_send_msg(rwnx_hw, req, 1, ME_CONFIG_MONITOR_CFM, cfm); -} + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the APM_STOP_CAC_REQ message */ + req = rwnx_msg_zalloc(APM_STOP_CAC_REQ, TASK_APM, DRV_TASK_ID, + sizeof(struct apm_stop_cac_req)); + if (!req) + return -ENOMEM; + + /* Set parameters for the APM_STOP_CAC_REQ message */ + req->vif_idx = vif->vif_index; + + /* Send the APM_STOP_CAC_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, APM_STOP_CAC_CFM, NULL); + } + + int rwnx_send_mesh_start_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, + const struct mesh_config *conf, + const struct mesh_setup *setup, + struct mesh_start_cfm *cfm) + { + // Message to send + struct mesh_start_req *req; + // Supported basic rates + struct ieee80211_supported_band *band_2GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; + /* Counter */ + int i; + /* Return status */ + int status; + /* DMA Address to be unmapped after confirmation reception */ + u32 dma_addr = 0; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MESH_START_REQ message */ + req = rwnx_msg_zalloc(MESH_START_REQ, TASK_MESH, DRV_TASK_ID, + sizeof(struct mesh_start_req)); + if (!req) { + return -ENOMEM; + } + + req->vif_index = vif->vif_index; + req->bcn_int = setup->beacon_interval; + req->dtim_period = setup->dtim_period; + req->mesh_id_len = setup->mesh_id_len; + + for (i = 0; i < setup->mesh_id_len; i++) { + req->mesh_id[i] = *(setup->mesh_id + i); + } + + req->user_mpm = setup->user_mpm; + req->is_auth = setup->is_authenticated; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + req->auth_id = setup->auth_id; +#endif + req->ie_len = setup->ie_len; + + if (setup->ie_len) { + /* + * Need to provide a Virtual Address to the MAC so that it can download the + * additional information elements. + */ + req->ie_addr = + dma_map_single(rwnx_hw->dev, (void *)setup->ie, + setup->ie_len, DMA_FROM_DEVICE); + + /* Check DMA mapping result */ + if (dma_mapping_error(rwnx_hw->dev, req->ie_addr)) { + printk(KERN_CRIT + "%s - DMA Mapping error on additional IEs\n", + __func__); + + /* Consider there is no Additional IEs */ + req->ie_len = 0; + } else { + /* Store DMA Address so that we can unmap the memory section once MESH_START_CFM is received */ + dma_addr = req->ie_addr; + } + } + + /* Provide rate information */ + req->basic_rates.length = 0; + for (i = 0; i < band_2GHz->n_bitrates; i++) { + u16 rate = band_2GHz->bitrates[i].bitrate; + + /* Read value is in in units of 100 Kbps, provided value is in units + * of 1Mbps, and multiplied by 2 so that 5.5 becomes 11 */ + rate = (rate << 1) / 10; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) // TODO: check basic rates + if (setup->basic_rates & CO_BIT(i)) { + rate |= 0x80; + } +#endif + + req->basic_rates.array[i] = (u8)rate; + req->basic_rates.length++; + } + + /* Provide channel information */ + req->chan.band = setup->chandef.chan->band; + req->chan.freq = setup->chandef.chan->center_freq; + req->chan.flags = 0; + req->chan.tx_power = + chan_to_fw_pwr(setup->chandef.chan->max_power); + req->center_freq1 = setup->chandef.center_freq1; + req->center_freq2 = setup->chandef.center_freq2; + req->ch_width = bw2chnl[setup->chandef.width]; + + /* Send the MESH_START_REQ message to UMAC FW */ + status = rwnx_send_msg(rwnx_hw, req, 1, MESH_START_CFM, cfm); + + /* Unmap DMA area */ + if (setup->ie_len) { + dma_unmap_single(rwnx_hw->dev, dma_addr, setup->ie_len, + DMA_TO_DEVICE); + } + + /* Return the status */ + return status; + } + + int rwnx_send_mesh_stop_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, + struct mesh_stop_cfm * cfm) + { + // Message to send + struct mesh_stop_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MESH_STOP_REQ message */ + req = rwnx_msg_zalloc(MESH_STOP_REQ, TASK_MESH, DRV_TASK_ID, + sizeof(struct mesh_stop_req)); + if (!req) { + return -ENOMEM; + } + + req->vif_idx = vif->vif_index; + + /* Send the MESH_STOP_REQ message to UMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, MESH_STOP_CFM, cfm); + } + + int rwnx_send_mesh_update_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, u32 mask, + const struct mesh_config *p_mconf, + struct mesh_update_cfm *cfm) + { + // Message to send + struct mesh_update_req *req; + // Keep only bit for fields which can be updated + u32 supp_mask = (mask << 1) & + (CO_BIT(NL80211_MESHCONF_GATE_ANNOUNCEMENTS) | + CO_BIT(NL80211_MESHCONF_HWMP_ROOTMODE) | + CO_BIT(NL80211_MESHCONF_FORWARDING) | + CO_BIT(NL80211_MESHCONF_POWER_MODE)); + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + if (!supp_mask) { + return -ENOENT; + } + + /* Build the MESH_UPDATE_REQ message */ + req = rwnx_msg_zalloc(MESH_UPDATE_REQ, TASK_MESH, DRV_TASK_ID, + sizeof(struct mesh_update_req)); + + if (!req) { + return -ENOMEM; + } + + req->vif_idx = vif->vif_index; + + if (supp_mask & CO_BIT(NL80211_MESHCONF_GATE_ANNOUNCEMENTS)) { + req->flags |= CO_BIT(MESH_UPDATE_FLAGS_GATE_MODE_BIT); + req->gate_announ = + p_mconf->dot11MeshGateAnnouncementProtocol; + } + + if (supp_mask & CO_BIT(NL80211_MESHCONF_HWMP_ROOTMODE)) { + req->flags |= CO_BIT(MESH_UPDATE_FLAGS_ROOT_MODE_BIT); + req->root_mode = p_mconf->dot11MeshHWMPRootMode; + } + + if (supp_mask & CO_BIT(NL80211_MESHCONF_FORWARDING)) { + req->flags |= CO_BIT(MESH_UPDATE_FLAGS_MESH_FWD_BIT); + req->mesh_forward = p_mconf->dot11MeshForwarding; + } + + if (supp_mask & CO_BIT(NL80211_MESHCONF_POWER_MODE)) { + req->flags |= CO_BIT(MESH_UPDATE_FLAGS_LOCAL_PSM_BIT); + req->local_ps_mode = p_mconf->power_mode; + } + + /* Send the MESH_UPDATE_REQ message to UMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, MESH_UPDATE_CFM, cfm); + } + + int rwnx_send_mesh_peer_info_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, u8 sta_idx, + struct mesh_peer_info_cfm * cfm) + { + // Message to send + struct mesh_peer_info_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MESH_PEER_INFO_REQ message */ + req = rwnx_msg_zalloc(MESH_PEER_INFO_REQ, TASK_MESH, + DRV_TASK_ID, + sizeof(struct mesh_peer_info_req)); + if (!req) { + return -ENOMEM; + } + + req->sta_idx = sta_idx; + + /* Send the MESH_PEER_INFO_REQ message to UMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, MESH_PEER_INFO_CFM, cfm); + } + + void rwnx_send_mesh_peer_update_ntf(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, u8 sta_idx, + u8 mlink_state) + { + // Message to send + struct mesh_peer_update_ntf *ntf; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MESH_PEER_UPDATE_NTF message */ + ntf = rwnx_msg_zalloc(MESH_PEER_UPDATE_NTF, TASK_MESH, + DRV_TASK_ID, + sizeof(struct mesh_peer_update_ntf)); + + if (ntf) { + ntf->vif_idx = vif->vif_index; + ntf->sta_idx = sta_idx; + ntf->state = mlink_state; + + /* Send the MESH_PEER_INFO_REQ message to UMAC FW */ + rwnx_send_msg(rwnx_hw, ntf, 0, 0, NULL); + } + } + + void rwnx_send_mesh_path_create_req( + struct rwnx_hw * rwnx_hw, struct rwnx_vif * vif, u8 * tgt_addr) + { + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Check if we are already waiting for a confirmation */ + if (!vif->ap.create_path) { + // Message to send + struct mesh_path_create_req *req; + + /* Build the MESH_PATH_CREATE_REQ message */ + req = rwnx_msg_zalloc( + MESH_PATH_CREATE_REQ, TASK_MESH, DRV_TASK_ID, + sizeof(struct mesh_path_create_req)); + + if (req) { + req->vif_idx = vif->vif_index; + memcpy(&req->tgt_mac_addr, tgt_addr, ETH_ALEN); + + vif->ap.create_path = true; + + /* Send the MESH_PATH_CREATE_REQ message to UMAC FW */ + rwnx_send_msg(rwnx_hw, req, 0, 0, NULL); + } + } + } + + int rwnx_send_mesh_path_update_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, + const u8 *tgt_addr, + const u8 *p_nhop_addr, + struct mesh_path_update_cfm *cfm) + { + // Message to send + struct mesh_path_update_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MESH_PATH_UPDATE_REQ message */ + req = rwnx_msg_zalloc(MESH_PATH_UPDATE_REQ, TASK_MESH, + DRV_TASK_ID, + sizeof(struct mesh_path_update_req)); + if (!req) { + return -ENOMEM; + } + + req->delete = (p_nhop_addr == NULL); + req->vif_idx = vif->vif_index; + memcpy(&req->tgt_mac_addr, tgt_addr, ETH_ALEN); + + if (p_nhop_addr) { + memcpy(&req->nhop_mac_addr, p_nhop_addr, ETH_ALEN); + } + + /* Send the MESH_PATH_UPDATE_REQ message to UMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, MESH_PATH_UPDATE_CFM, + cfm); + } + + void rwnx_send_mesh_proxy_add_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * vif, u8 * ext_addr) + { + // Message to send + struct mesh_proxy_add_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MESH_PROXY_ADD_REQ message */ + req = rwnx_msg_zalloc(MESH_PROXY_ADD_REQ, TASK_MESH, + DRV_TASK_ID, + sizeof(struct mesh_proxy_add_req)); + + if (req) { + req->vif_idx = vif->vif_index; + memcpy(&req->ext_sta_addr, ext_addr, ETH_ALEN); + + /* Send the MESH_PROXY_ADD_REQ message to UMAC FW */ + rwnx_send_msg(rwnx_hw, req, 0, 0, NULL); + } + } + + int rwnx_send_tdls_peer_traffic_ind_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * rwnx_vif) + { + struct tdls_peer_traffic_ind_req *tdls_peer_traffic_ind_req; + + if (!rwnx_vif->sta.tdls_sta) + return -ENOLINK; + + /* Build the TDLS_PEER_TRAFFIC_IND_REQ message */ + tdls_peer_traffic_ind_req = rwnx_msg_zalloc( + TDLS_PEER_TRAFFIC_IND_REQ, TASK_TDLS, DRV_TASK_ID, + sizeof(struct tdls_peer_traffic_ind_req)); + + if (!tdls_peer_traffic_ind_req) + return -ENOMEM; + + /* Set parameters for the TDLS_PEER_TRAFFIC_IND_REQ message */ + tdls_peer_traffic_ind_req->vif_index = rwnx_vif->vif_index; + tdls_peer_traffic_ind_req->sta_idx = + rwnx_vif->sta.tdls_sta->sta_idx; + memcpy(&(tdls_peer_traffic_ind_req->peer_mac_addr.array[0]), + rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN); + tdls_peer_traffic_ind_req->dialog_token = + 0; // check dialog token value + tdls_peer_traffic_ind_req->last_tid = + rwnx_vif->sta.tdls_sta->tdls.last_tid; + tdls_peer_traffic_ind_req->last_sn = + rwnx_vif->sta.tdls_sta->tdls.last_sn; + + /* Send the TDLS_PEER_TRAFFIC_IND_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, tdls_peer_traffic_ind_req, 0, 0, + NULL); + } + + int rwnx_send_config_monitor_req(struct rwnx_hw * rwnx_hw, + struct cfg80211_chan_def * chandef, + struct me_config_monitor_cfm * cfm) + { + struct me_config_monitor_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the ME_CONFIG_MONITOR_REQ message */ + req = rwnx_msg_zalloc(ME_CONFIG_MONITOR_REQ, TASK_ME, + DRV_TASK_ID, + sizeof(struct me_config_monitor_req)); + if (!req) + return -ENOMEM; + + if (chandef) { + req->chan_set = true; + + req->chan.band = chandef->chan->band; + req->chan.type = bw2chnl[chandef->width]; + req->chan.prim20_freq = chandef->chan->center_freq; + req->chan.center1_freq = chandef->center_freq1; + req->chan.center2_freq = chandef->center_freq2; + req->chan.tx_power = + chan_to_fw_pwr(chandef->chan->max_power); + + if (rwnx_hw->phy.limit_bw) + limit_chan_bw(&req->chan.type, + req->chan.prim20_freq, + &req->chan.center1_freq); + } else { + req->chan_set = false; + } + + req->uf = rwnx_hw->mod_params->uf; + req->auto_reply = rwnx_hw->mod_params->auto_reply; + + /* Send the ME_CONFIG_MONITOR_REQ message to FW */ + return rwnx_send_msg(rwnx_hw, req, 1, ME_CONFIG_MONITOR_CFM, + cfm); + } #endif /* CONFIG_RWNX_FULLMAC */ -int rwnx_send_tdls_chan_switch_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct rwnx_sta *rwnx_sta, bool sta_initiator, - u8 oper_class, struct cfg80211_chan_def *chandef, - struct tdls_chan_switch_cfm *cfm) -{ - struct tdls_chan_switch_req *tdls_chan_switch_req; + int rwnx_send_tdls_chan_switch_req(struct rwnx_hw * rwnx_hw, + struct rwnx_vif * rwnx_vif, + struct rwnx_sta * rwnx_sta, + bool sta_initiator, u8 oper_class, + struct cfg80211_chan_def *chandef, + struct tdls_chan_switch_cfm *cfm) + { + struct tdls_chan_switch_req *tdls_chan_switch_req; + /* Build the TDLS_CHAN_SWITCH_REQ message */ + tdls_chan_switch_req = + rwnx_msg_zalloc(TDLS_CHAN_SWITCH_REQ, TASK_TDLS, + DRV_TASK_ID, + sizeof(struct tdls_chan_switch_req)); - /* Build the TDLS_CHAN_SWITCH_REQ message */ - tdls_chan_switch_req = rwnx_msg_zalloc(TDLS_CHAN_SWITCH_REQ, TASK_TDLS, DRV_TASK_ID, - sizeof(struct tdls_chan_switch_req)); + if (!tdls_chan_switch_req) + return -ENOMEM; - if (!tdls_chan_switch_req) - return -ENOMEM; + /* Set parameters for the TDLS_CHAN_SWITCH_REQ message */ + tdls_chan_switch_req->vif_index = rwnx_vif->vif_index; + tdls_chan_switch_req->sta_idx = rwnx_sta->sta_idx; + memcpy(&(tdls_chan_switch_req->peer_mac_addr.array[0]), + rwnx_sta_addr(rwnx_sta), ETH_ALEN); + tdls_chan_switch_req->initiator = sta_initiator; + tdls_chan_switch_req->band = chandef->chan->band; + tdls_chan_switch_req->type = bw2chnl[chandef->width]; + tdls_chan_switch_req->prim20_freq = chandef->chan->center_freq; + tdls_chan_switch_req->center1_freq = chandef->center_freq1; + tdls_chan_switch_req->center2_freq = chandef->center_freq2; + tdls_chan_switch_req->tx_power = + chan_to_fw_pwr(chandef->chan->max_power); + tdls_chan_switch_req->op_class = oper_class; - /* Set parameters for the TDLS_CHAN_SWITCH_REQ message */ - tdls_chan_switch_req->vif_index = rwnx_vif->vif_index; - tdls_chan_switch_req->sta_idx = rwnx_sta->sta_idx; - memcpy(&(tdls_chan_switch_req->peer_mac_addr.array[0]), - rwnx_sta_addr(rwnx_sta), ETH_ALEN); - tdls_chan_switch_req->initiator = sta_initiator; - tdls_chan_switch_req->band = chandef->chan->band; - tdls_chan_switch_req->type = bw2chnl[chandef->width]; - tdls_chan_switch_req->prim20_freq = chandef->chan->center_freq; - tdls_chan_switch_req->center1_freq = chandef->center_freq1; - tdls_chan_switch_req->center2_freq = chandef->center_freq2; - tdls_chan_switch_req->tx_power = chan_to_fw_pwr(chandef->chan->max_power); - tdls_chan_switch_req->op_class = oper_class; + /* Send the TDLS_CHAN_SWITCH_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, tdls_chan_switch_req, 1, + TDLS_CHAN_SWITCH_CFM, cfm); + } - /* Send the TDLS_CHAN_SWITCH_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, tdls_chan_switch_req, 1, TDLS_CHAN_SWITCH_CFM, cfm); -} + int rwnx_send_tdls_cancel_chan_switch_req( + struct rwnx_hw * rwnx_hw, struct rwnx_vif * rwnx_vif, + struct rwnx_sta * rwnx_sta, + struct tdls_cancel_chan_switch_cfm * cfm) + { + struct tdls_cancel_chan_switch_req *tdls_cancel_chan_switch_req; -int rwnx_send_tdls_cancel_chan_switch_req(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - struct rwnx_sta *rwnx_sta, - struct tdls_cancel_chan_switch_cfm *cfm) -{ - struct tdls_cancel_chan_switch_req *tdls_cancel_chan_switch_req; + /* Build the TDLS_CHAN_SWITCH_REQ message */ + tdls_cancel_chan_switch_req = rwnx_msg_zalloc( + TDLS_CANCEL_CHAN_SWITCH_REQ, TASK_TDLS, DRV_TASK_ID, + sizeof(struct tdls_cancel_chan_switch_req)); + if (!tdls_cancel_chan_switch_req) + return -ENOMEM; - /* Build the TDLS_CHAN_SWITCH_REQ message */ - tdls_cancel_chan_switch_req = rwnx_msg_zalloc(TDLS_CANCEL_CHAN_SWITCH_REQ, TASK_TDLS, DRV_TASK_ID, - sizeof(struct tdls_cancel_chan_switch_req)); - if (!tdls_cancel_chan_switch_req) - return -ENOMEM; + /* Set parameters for the TDLS_CHAN_SWITCH_REQ message */ + tdls_cancel_chan_switch_req->vif_index = rwnx_vif->vif_index; + tdls_cancel_chan_switch_req->sta_idx = rwnx_sta->sta_idx; + memcpy(&(tdls_cancel_chan_switch_req->peer_mac_addr.array[0]), + rwnx_sta_addr(rwnx_sta), ETH_ALEN); - /* Set parameters for the TDLS_CHAN_SWITCH_REQ message */ - tdls_cancel_chan_switch_req->vif_index = rwnx_vif->vif_index; - tdls_cancel_chan_switch_req->sta_idx = rwnx_sta->sta_idx; - memcpy(&(tdls_cancel_chan_switch_req->peer_mac_addr.array[0]), - rwnx_sta_addr(rwnx_sta), ETH_ALEN); - - /* Send the TDLS_CHAN_SWITCH_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, tdls_cancel_chan_switch_req, 1, TDLS_CANCEL_CHAN_SWITCH_CFM, cfm); -} + /* Send the TDLS_CHAN_SWITCH_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, tdls_cancel_chan_switch_req, 1, + TDLS_CANCEL_CHAN_SWITCH_CFM, cfm); + } #ifdef CONFIG_RWNX_BFMER #ifdef CONFIG_RWNX_FULLMAC -void rwnx_send_bfmer_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, - const struct ieee80211_vht_cap *vht_cap) + void rwnx_send_bfmer_enable(struct rwnx_hw * rwnx_hw, + struct rwnx_sta * rwnx_sta, + const struct ieee80211_vht_cap *vht_cap) #endif /* CONFIG_RWNX_FULLMAC*/ -{ - struct mm_bfmer_enable_req *bfmer_en_req; + { + struct mm_bfmer_enable_req *bfmer_en_req; #ifdef CONFIG_RWNX_FULLMAC - __le32 vht_capability; - u8 rx_nss = 0; + __le32 vht_capability; + u8 rx_nss = 0; #endif /* CONFIG_RWNX_FULLMAC */ - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); #ifdef CONFIG_RWNX_FULLMAC - if (!vht_cap) { + if (!vht_cap) { #endif /* CONFIG_RWNX_FULLMAC */ - goto end; - } + goto end; + } #ifdef CONFIG_RWNX_FULLMAC - vht_capability = vht_cap->vht_cap_info; + vht_capability = vht_cap->vht_cap_info; #endif /* CONFIG_RWNX_FULLMAC */ - if (!(vht_capability & IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { - goto end; - } + if (!(vht_capability & + IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { + goto end; + } #ifdef CONFIG_RWNX_FULLMAC - rx_nss = rwnx_bfmer_get_rx_nss(vht_cap); + rx_nss = rwnx_bfmer_get_rx_nss(vht_cap); #endif /* CONFIG_RWNX_FULLMAC */ - /* Allocate a structure that will contain the beamforming report */ - if (rwnx_bfmer_report_add(rwnx_hw, rwnx_sta, RWNX_BFMER_REPORT_SPACE_SIZE)) { - goto end; - } + /* Allocate a structure that will contain the beamforming report */ + if (rwnx_bfmer_report_add(rwnx_hw, rwnx_sta, + RWNX_BFMER_REPORT_SPACE_SIZE)) { + goto end; + } - /* Build the MM_BFMER_ENABLE_REQ message */ - bfmer_en_req = rwnx_msg_zalloc(MM_BFMER_ENABLE_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_bfmer_enable_req)); + /* Build the MM_BFMER_ENABLE_REQ message */ + bfmer_en_req = + rwnx_msg_zalloc(MM_BFMER_ENABLE_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_bfmer_enable_req)); - /* Check message allocation */ - if (!bfmer_en_req) { - /* Free memory allocated for the report */ - rwnx_bfmer_report_del(rwnx_hw, rwnx_sta); + /* Check message allocation */ + if (!bfmer_en_req) { + /* Free memory allocated for the report */ + rwnx_bfmer_report_del(rwnx_hw, rwnx_sta); - /* Do not use beamforming */ - goto end; - } + /* Do not use beamforming */ + goto end; + } - /* Provide DMA address to the MAC */ - bfmer_en_req->host_bfr_addr = rwnx_sta->bfm_report->dma_addr; - bfmer_en_req->host_bfr_size = RWNX_BFMER_REPORT_SPACE_SIZE; - bfmer_en_req->sta_idx = rwnx_sta->sta_idx; + /* Provide DMA address to the MAC */ + bfmer_en_req->host_bfr_addr = rwnx_sta->bfm_report->dma_addr; + bfmer_en_req->host_bfr_size = RWNX_BFMER_REPORT_SPACE_SIZE; + bfmer_en_req->sta_idx = rwnx_sta->sta_idx; #ifdef CONFIG_RWNX_FULLMAC - bfmer_en_req->aid = rwnx_sta->aid; - bfmer_en_req->rx_nss = rx_nss; + bfmer_en_req->aid = rwnx_sta->aid; + bfmer_en_req->rx_nss = rx_nss; #endif /* CONFIG_RWNX_FULLMAC */ - if (vht_capability & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE) { - bfmer_en_req->vht_mu_bfmee = true; - } else { - bfmer_en_req->vht_mu_bfmee = false; + if (vht_capability & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE) { + bfmer_en_req->vht_mu_bfmee = true; + } else { + bfmer_en_req->vht_mu_bfmee = false; + } + + /* Send the MM_BFMER_EN_REQ message to LMAC FW */ + rwnx_send_msg(rwnx_hw, bfmer_en_req, 0, 0, NULL); + + end: + return; } - /* Send the MM_BFMER_EN_REQ message to LMAC FW */ - rwnx_send_msg(rwnx_hw, bfmer_en_req, 0, 0, NULL); - -end: - return; -} - #ifdef CONFIG_RWNX_MUMIMO_TX -int rwnx_send_mu_group_update_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta) -{ - struct mm_mu_group_update_req *req; - int group_id, i = 0; - u64 map; + int rwnx_send_mu_group_update_req(struct rwnx_hw * rwnx_hw, + struct rwnx_sta * rwnx_sta) + { + struct mm_mu_group_update_req *req; + int group_id, i = 0; + u64 map; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_MU_GROUP_UPDATE_REQ message */ - req = rwnx_msg_zalloc(MM_MU_GROUP_UPDATE_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_mu_group_update_req) + - rwnx_sta->group_info.cnt * sizeof(req->groups[0])); + /* Build the MM_MU_GROUP_UPDATE_REQ message */ + req = rwnx_msg_zalloc(MM_MU_GROUP_UPDATE_REQ, TASK_MM, + DRV_TASK_ID, + sizeof(struct mm_mu_group_update_req) + + rwnx_sta->group_info.cnt * + sizeof(req->groups[0])); - /* Check message allocation */ - if (!req) - return -ENOMEM; + /* Check message allocation */ + if (!req) + return -ENOMEM; - /* Go through the groups the STA belongs to */ - group_sta_for_each(rwnx_sta, group_id, map) { - int user_pos = rwnx_mu_group_sta_get_pos(rwnx_hw, rwnx_sta, group_id); + /* Go through the groups the STA belongs to */ + group_sta_for_each(rwnx_sta, group_id, map) + { + int user_pos = rwnx_mu_group_sta_get_pos( + rwnx_hw, rwnx_sta, group_id); - if (WARN((i >= rwnx_sta->group_info.cnt), + if (WARN((i >= rwnx_sta->group_info.cnt), "STA%d: Too much group (%d)\n", rwnx_sta->sta_idx, i + 1)) - break; + break; - req->groups[i].group_id = group_id; - req->groups[i].user_pos = user_pos; + req->groups[i].group_id = group_id; + req->groups[i].user_pos = user_pos; - i++; + i++; + } + + req->group_cnt = rwnx_sta->group_info.cnt; + req->sta_idx = rwnx_sta->sta_idx; + + /* Send the MM_MU_GROUP_UPDATE_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, MM_MU_GROUP_UPDATE_CFM, + NULL); } - - req->group_cnt = rwnx_sta->group_info.cnt; - req->sta_idx = rwnx_sta->sta_idx; - - /* Send the MM_MU_GROUP_UPDATE_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MM_MU_GROUP_UPDATE_CFM, NULL); -} #endif /* CONFIG_RWNX_MUMIMO_TX */ #endif /* CONFIG_RWNX_BFMER */ -/********************************************************************** + /********************************************************************** * Debug Messages *********************************************************************/ -int rwnx_send_dbg_trigger_req(struct rwnx_hw *rwnx_hw, char *msg) -{ - struct mm_dbg_trigger_req *req; + int rwnx_send_dbg_trigger_req(struct rwnx_hw * rwnx_hw, char *msg) + { + struct mm_dbg_trigger_req *req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_DBG_TRIGGER_REQ message */ - req = rwnx_msg_zalloc(MM_DBG_TRIGGER_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_dbg_trigger_req)); - if (!req) - return -ENOMEM; + /* Build the MM_DBG_TRIGGER_REQ message */ + req = rwnx_msg_zalloc(MM_DBG_TRIGGER_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_dbg_trigger_req)); + if (!req) + return -ENOMEM; - /* Set parameters for the MM_DBG_TRIGGER_REQ message */ - strncpy(req->error, msg, sizeof(req->error)); + /* Set parameters for the MM_DBG_TRIGGER_REQ message */ + strncpy(req->error, msg, sizeof(req->error)); - /* Send the MM_DBG_TRIGGER_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 0, -1, NULL); -} + /* Send the MM_DBG_TRIGGER_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 0, -1, NULL); + } -int rwnx_send_dbg_mem_read_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - struct dbg_mem_read_cfm *cfm) -{ - struct dbg_mem_read_req *mem_read_req; + int rwnx_send_dbg_mem_read_req(struct rwnx_hw * rwnx_hw, u32 mem_addr, + struct dbg_mem_read_cfm * cfm) + { + struct dbg_mem_read_req *mem_read_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_MEM_READ_REQ message */ - mem_read_req = rwnx_msg_zalloc(DBG_MEM_READ_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_read_req)); - if (!mem_read_req) - return -ENOMEM; + /* Build the DBG_MEM_READ_REQ message */ + mem_read_req = + rwnx_msg_zalloc(DBG_MEM_READ_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_mem_read_req)); + if (!mem_read_req) + return -ENOMEM; - /* Set parameters for the DBG_MEM_READ_REQ message */ - mem_read_req->memaddr = mem_addr; + /* Set parameters for the DBG_MEM_READ_REQ message */ + mem_read_req->memaddr = mem_addr; - /* Send the DBG_MEM_READ_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, mem_read_req, 1, DBG_MEM_READ_CFM, cfm); -} + /* Send the DBG_MEM_READ_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_read_req, 1, DBG_MEM_READ_CFM, + cfm); + } -int rwnx_send_dbg_mem_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - u32 mem_data) -{ - struct dbg_mem_write_req *mem_write_req; + int rwnx_send_dbg_mem_write_req(struct rwnx_hw * rwnx_hw, u32 mem_addr, + u32 mem_data) + { + struct dbg_mem_write_req *mem_write_req; - //RWNX_DBG(RWNX_FN_ENTRY_STR); + //RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_MEM_WRITE_REQ message */ - mem_write_req = rwnx_msg_zalloc(DBG_MEM_WRITE_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_write_req)); - if (!mem_write_req) - return -ENOMEM; + /* Build the DBG_MEM_WRITE_REQ message */ + mem_write_req = + rwnx_msg_zalloc(DBG_MEM_WRITE_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_mem_write_req)); + if (!mem_write_req) + return -ENOMEM; - /* Set parameters for the DBG_MEM_WRITE_REQ message */ - mem_write_req->memaddr = mem_addr; - mem_write_req->memdata = mem_data; + /* Set parameters for the DBG_MEM_WRITE_REQ message */ + mem_write_req->memaddr = mem_addr; + mem_write_req->memdata = mem_data; - /* Send the DBG_MEM_WRITE_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, mem_write_req, 1, DBG_MEM_WRITE_CFM, NULL); -} + /* Send the DBG_MEM_WRITE_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_write_req, 1, + DBG_MEM_WRITE_CFM, NULL); + } -int rwnx_send_dbg_mem_mask_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - u32 mem_mask, u32 mem_data) -{ - struct dbg_mem_mask_write_req *mem_mask_write_req; + int rwnx_send_dbg_mem_mask_write_req(struct rwnx_hw * rwnx_hw, + u32 mem_addr, u32 mem_mask, + u32 mem_data) + { + struct dbg_mem_mask_write_req *mem_mask_write_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_MEM_MASK_WRITE_REQ message */ - mem_mask_write_req = rwnx_msg_zalloc(DBG_MEM_MASK_WRITE_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_mask_write_req)); - if (!mem_mask_write_req) - return -ENOMEM; + /* Build the DBG_MEM_MASK_WRITE_REQ message */ + mem_mask_write_req = + rwnx_msg_zalloc(DBG_MEM_MASK_WRITE_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_mem_mask_write_req)); + if (!mem_mask_write_req) + return -ENOMEM; - /* Set parameters for the DBG_MEM_MASK_WRITE_REQ message */ - mem_mask_write_req->memaddr = mem_addr; - mem_mask_write_req->memmask = mem_mask; - mem_mask_write_req->memdata = mem_data; + /* Set parameters for the DBG_MEM_MASK_WRITE_REQ message */ + mem_mask_write_req->memaddr = mem_addr; + mem_mask_write_req->memmask = mem_mask; + mem_mask_write_req->memdata = mem_data; - /* Send the DBG_MEM_MASK_WRITE_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, mem_mask_write_req, 1, DBG_MEM_MASK_WRITE_CFM, NULL); -} + /* Send the DBG_MEM_MASK_WRITE_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_mask_write_req, 1, + DBG_MEM_MASK_WRITE_CFM, NULL); + } #ifdef CONFIG_RFTEST -int rwnx_send_rftest_req(struct rwnx_hw *rwnx_hw, u32_l cmd, u32_l argc, u8_l *argv, struct dbg_rftest_cmd_cfm *cfm) -{ - struct dbg_rftest_cmd_req *mem_rftest_cmd_req; + int rwnx_send_rftest_req(struct rwnx_hw * rwnx_hw, u32_l cmd, + u32_l argc, u8_l * argv, + struct dbg_rftest_cmd_cfm * cfm) + { + struct dbg_rftest_cmd_req *mem_rftest_cmd_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_RFTEST_CMD_REQ message */ - mem_rftest_cmd_req = rwnx_msg_zalloc(DBG_RFTEST_CMD_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_rftest_cmd_req)); - if (!mem_rftest_cmd_req) - return -ENOMEM; + /* Build the DBG_RFTEST_CMD_REQ message */ + mem_rftest_cmd_req = + rwnx_msg_zalloc(DBG_RFTEST_CMD_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_rftest_cmd_req)); + if (!mem_rftest_cmd_req) + return -ENOMEM; - if (argc > 10) - return -ENOMEM; + if (argc > 10) + return -ENOMEM; - /* Set parameters for the DBG_MEM_MASK_WRITE_REQ message */ - mem_rftest_cmd_req->cmd = cmd; - mem_rftest_cmd_req->argc = argc; - if (argc != 0) - memcpy(mem_rftest_cmd_req->argv, argv, argc); + /* Set parameters for the DBG_MEM_MASK_WRITE_REQ message */ + mem_rftest_cmd_req->cmd = cmd; + mem_rftest_cmd_req->argc = argc; + if (argc != 0) + memcpy(mem_rftest_cmd_req->argv, argv, argc); - /* Send the DBG_RFTEST_CMD_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, mem_rftest_cmd_req, 1, DBG_RFTEST_CMD_CFM, cfm); -} + /* Send the DBG_RFTEST_CMD_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_rftest_cmd_req, 1, + DBG_RFTEST_CMD_CFM, cfm); + } #endif #ifdef CONFIG_MCU_MESSAGE -int rwnx_send_dbg_custom_msg_req(struct rwnx_hw *rwnx_hw, - u32 cmd, void *buf, u32 len, u32 action, - struct dbg_custom_msg_cfm *cfm) -{ - struct dbg_custom_msg_req *cust_msg_req; + int rwnx_send_dbg_custom_msg_req(struct rwnx_hw * rwnx_hw, u32 cmd, + void *buf, u32 len, u32 action, + struct dbg_custom_msg_cfm *cfm) + { + struct dbg_custom_msg_req *cust_msg_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_CUSTOM_MSG_REQ message */ - cust_msg_req = - rwnx_msg_zalloc(DBG_CUSTOM_MSG_REQ, TASK_DBG, DRV_TASK_ID, - offsetof(struct dbg_custom_msg_req, buf) + len); - if (!cust_msg_req) - return -ENOMEM; + /* Build the DBG_CUSTOM_MSG_REQ message */ + cust_msg_req = rwnx_msg_zalloc( + DBG_CUSTOM_MSG_REQ, TASK_DBG, DRV_TASK_ID, + offsetof(struct dbg_custom_msg_req, buf) + len); + if (!cust_msg_req) + return -ENOMEM; - /* Set parameters for the DBG_CUSTOM_MSG_REQ message */ - cust_msg_req->cmd = cmd; - cust_msg_req->len = len; - cust_msg_req->flags = action; - if (buf) { - memcpy(cust_msg_req->buf, buf, len); - } + /* Set parameters for the DBG_CUSTOM_MSG_REQ message */ + cust_msg_req->cmd = cmd; + cust_msg_req->len = len; + cust_msg_req->flags = action; + if (buf) { + memcpy(cust_msg_req->buf, buf, len); + } - /* Send the DBG_CUSTOM_MSG_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, cust_msg_req, 1, DBG_CUSTOM_MSG_CFM, cfm); -} + /* Send the DBG_CUSTOM_MSG_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, cust_msg_req, 1, + DBG_CUSTOM_MSG_CFM, cfm); + } #endif -int rwnx_send_dbg_set_mod_filter_req(struct rwnx_hw *rwnx_hw, u32 filter) -{ - struct dbg_set_mod_filter_req *set_mod_filter_req; + int rwnx_send_dbg_set_mod_filter_req(struct rwnx_hw * rwnx_hw, + u32 filter) + { + struct dbg_set_mod_filter_req *set_mod_filter_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_SET_MOD_FILTER_REQ message */ - set_mod_filter_req = - rwnx_msg_zalloc(DBG_SET_MOD_FILTER_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_set_mod_filter_req)); - if (!set_mod_filter_req) - return -ENOMEM; + /* Build the DBG_SET_MOD_FILTER_REQ message */ + set_mod_filter_req = + rwnx_msg_zalloc(DBG_SET_MOD_FILTER_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_set_mod_filter_req)); + if (!set_mod_filter_req) + return -ENOMEM; - /* Set parameters for the DBG_SET_MOD_FILTER_REQ message */ - set_mod_filter_req->mod_filter = filter; + /* Set parameters for the DBG_SET_MOD_FILTER_REQ message */ + set_mod_filter_req->mod_filter = filter; - /* Send the DBG_SET_MOD_FILTER_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, set_mod_filter_req, 1, DBG_SET_MOD_FILTER_CFM, NULL); -} + /* Send the DBG_SET_MOD_FILTER_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, set_mod_filter_req, 1, + DBG_SET_MOD_FILTER_CFM, NULL); + } -int rwnx_send_dbg_set_sev_filter_req(struct rwnx_hw *rwnx_hw, u32 filter) -{ - struct dbg_set_sev_filter_req *set_sev_filter_req; + int rwnx_send_dbg_set_sev_filter_req(struct rwnx_hw * rwnx_hw, + u32 filter) + { + struct dbg_set_sev_filter_req *set_sev_filter_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_SET_SEV_FILTER_REQ message */ - set_sev_filter_req = - rwnx_msg_zalloc(DBG_SET_SEV_FILTER_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_set_sev_filter_req)); - if (!set_sev_filter_req) - return -ENOMEM; + /* Build the DBG_SET_SEV_FILTER_REQ message */ + set_sev_filter_req = + rwnx_msg_zalloc(DBG_SET_SEV_FILTER_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_set_sev_filter_req)); + if (!set_sev_filter_req) + return -ENOMEM; - /* Set parameters for the DBG_SET_SEV_FILTER_REQ message */ - set_sev_filter_req->sev_filter = filter; + /* Set parameters for the DBG_SET_SEV_FILTER_REQ message */ + set_sev_filter_req->sev_filter = filter; - /* Send the DBG_SET_SEV_FILTER_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, set_sev_filter_req, 1, DBG_SET_SEV_FILTER_CFM, NULL); -} + /* Send the DBG_SET_SEV_FILTER_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, set_sev_filter_req, 1, + DBG_SET_SEV_FILTER_CFM, NULL); + } -int rwnx_send_dbg_get_sys_stat_req(struct rwnx_hw *rwnx_hw, - struct dbg_get_sys_stat_cfm *cfm) -{ - void *req; + int rwnx_send_dbg_get_sys_stat_req(struct rwnx_hw * rwnx_hw, + struct dbg_get_sys_stat_cfm * cfm) + { + void *req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Allocate the message */ - req = rwnx_msg_zalloc(DBG_GET_SYS_STAT_REQ, TASK_DBG, DRV_TASK_ID, 0); - if (!req) - return -ENOMEM; + /* Allocate the message */ + req = rwnx_msg_zalloc(DBG_GET_SYS_STAT_REQ, TASK_DBG, + DRV_TASK_ID, 0); + if (!req) + return -ENOMEM; - /* Send the DBG_MEM_READ_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, DBG_GET_SYS_STAT_CFM, cfm); -} + /* Send the DBG_MEM_READ_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, DBG_GET_SYS_STAT_CFM, + cfm); + } -int rwnx_send_dbg_mem_block_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - u32 mem_size, u32 *mem_data) -{ - struct dbg_mem_block_write_req *mem_blk_write_req; + int rwnx_send_dbg_mem_block_write_req(struct rwnx_hw * rwnx_hw, + u32 mem_addr, u32 mem_size, + u32 * mem_data) + { + struct dbg_mem_block_write_req *mem_blk_write_req; - //RWNX_DBG(RWNX_FN_ENTRY_STR); + //RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_MEM_BLOCK_WRITE_REQ message */ - mem_blk_write_req = rwnx_msg_zalloc(DBG_MEM_BLOCK_WRITE_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_mem_block_write_req)); - if (!mem_blk_write_req) - return -ENOMEM; + /* Build the DBG_MEM_BLOCK_WRITE_REQ message */ + mem_blk_write_req = + rwnx_msg_zalloc(DBG_MEM_BLOCK_WRITE_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_mem_block_write_req)); + if (!mem_blk_write_req) + return -ENOMEM; - /* Set parameters for the DBG_MEM_BLOCK_WRITE_REQ message */ - mem_blk_write_req->memaddr = mem_addr; - mem_blk_write_req->memsize = mem_size; - memcpy(mem_blk_write_req->memdata, mem_data, mem_size); + /* Set parameters for the DBG_MEM_BLOCK_WRITE_REQ message */ + mem_blk_write_req->memaddr = mem_addr; + mem_blk_write_req->memsize = mem_size; + memcpy(mem_blk_write_req->memdata, mem_data, mem_size); - /* Send the DBG_MEM_BLOCK_WRITE_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, mem_blk_write_req, 1, DBG_MEM_BLOCK_WRITE_CFM, NULL); -} + /* Send the DBG_MEM_BLOCK_WRITE_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_blk_write_req, 1, + DBG_MEM_BLOCK_WRITE_CFM, NULL); + } -int rwnx_send_dbg_start_app_req(struct rwnx_hw *rwnx_hw, u32 boot_addr, - u32 boot_type) -{ - struct dbg_start_app_req *start_app_req; + int rwnx_send_dbg_mem_block_read_req( + struct rwnx_hw * rwnx_hw, u32 mem_addr, u32 mem_size, + struct dbg_mem_block_read_cfm * cfm) + { + struct dbg_mem_block_read_req *mem_blk_read_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + //RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the DBG_START_APP_REQ message */ - start_app_req = rwnx_msg_zalloc(DBG_START_APP_REQ, TASK_DBG, DRV_TASK_ID, - sizeof(struct dbg_start_app_req)); - if (!start_app_req) - return -ENOMEM; + /* Build the DBG_MEM_BLOCK_READ_REQ message */ + mem_blk_read_req = + rwnx_msg_zalloc(DBG_MEM_BLOCK_READ_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_mem_block_read_req)); + if (!mem_blk_read_req) + return -ENOMEM; - /* Set parameters for the DBG_START_APP_REQ message */ - start_app_req->bootaddr = boot_addr; - start_app_req->boottype = boot_type; + /* Set parameters for the DBG_MEM_BLOCK_READ_REQ message */ + mem_blk_read_req->memaddr = mem_addr; + mem_blk_read_req->memsize = mem_size; - /* Send the DBG_START_APP_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, start_app_req, 1, DBG_START_APP_CFM, NULL); -} + /* Send the DBG_MEM_BLOCK_READ_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_blk_read_req, 1, + DBG_MEM_BLOCK_READ_CFM, cfm); + } -int rwnx_send_cfg_rssi_req(struct rwnx_hw *rwnx_hw, u8 vif_index, int rssi_thold, u32 rssi_hyst) -{ - struct mm_cfg_rssi_req *req; + int rwnx_send_dbg_start_app_req(struct rwnx_hw * rwnx_hw, u32 boot_addr, + u32 boot_type) + { + struct dbg_start_app_req *start_app_req; - RWNX_DBG(RWNX_FN_ENTRY_STR); + RWNX_DBG(RWNX_FN_ENTRY_STR); - /* Build the MM_CFG_RSSI_REQ message */ - req = rwnx_msg_zalloc(MM_CFG_RSSI_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_cfg_rssi_req)); - if (!req) - return -ENOMEM; + /* Build the DBG_START_APP_REQ message */ + start_app_req = + rwnx_msg_zalloc(DBG_START_APP_REQ, TASK_DBG, + DRV_TASK_ID, + sizeof(struct dbg_start_app_req)); + if (!start_app_req) + return -ENOMEM; - if (rwnx_hw->vif_table[vif_index] == NULL) - return 0; + /* Set parameters for the DBG_START_APP_REQ message */ + start_app_req->bootaddr = boot_addr; + start_app_req->boottype = boot_type; - /* Set parameters for the MM_CFG_RSSI_REQ message */ - req->vif_index = vif_index; - req->rssi_thold = (s8)rssi_thold; - req->rssi_hyst = (u8)rssi_hyst; + /* Send the DBG_START_APP_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, start_app_req, 1, + DBG_START_APP_CFM, NULL); + } - /* Send the MM_CFG_RSSI_REQ message to LMAC FW */ - return rwnx_send_msg(rwnx_hw, req, 1, MM_CFG_RSSI_CFM, NULL); -} + int rwnx_send_cfg_rssi_req(struct rwnx_hw * rwnx_hw, u8 vif_index, + int rssi_thold, u32 rssi_hyst) + { + struct mm_cfg_rssi_req *req; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MM_CFG_RSSI_REQ message */ + req = rwnx_msg_zalloc(MM_CFG_RSSI_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_cfg_rssi_req)); + if (!req) + return -ENOMEM; + + if (rwnx_hw->vif_table[vif_index] == NULL) + return 0; + + /* Set parameters for the MM_CFG_RSSI_REQ message */ + req->vif_index = vif_index; + req->rssi_thold = (s8)rssi_thold; + req->rssi_hyst = (u8)rssi_hyst; + + /* Send the MM_CFG_RSSI_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, req, 1, MM_CFG_RSSI_CFM, NULL); + } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.h index 836f43b91..3ae8feec5 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_msg_tx.h @@ -18,169 +18,213 @@ int rwnx_send_reset(struct rwnx_hw *rwnx_hw); int rwnx_send_start(struct rwnx_hw *rwnx_hw); int rwnx_send_version_req(struct rwnx_hw *rwnx_hw, struct mm_version_cfm *cfm); -int rwnx_send_add_if (struct rwnx_hw *rwnx_hw, const unsigned char *mac, - enum nl80211_iftype iftype, bool p2p, struct mm_add_if_cfm *cfm); -int rwnx_send_remove_if (struct rwnx_hw *rwnx_hw, u8 vif_index, bool defer); +int rwnx_send_add_if(struct rwnx_hw *rwnx_hw, const unsigned char *mac, + enum nl80211_iftype iftype, bool p2p, + struct mm_add_if_cfm *cfm); +int rwnx_send_remove_if(struct rwnx_hw *rwnx_hw, u8 vif_index, bool defer); int rwnx_send_set_channel(struct rwnx_hw *rwnx_hw, int phy_idx, - struct mm_set_channel_cfm *cfm); -int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, bool pairwise, - u8 *key, u8 key_len, u8 key_idx, u8 cipher_suite, - struct mm_key_add_cfm *cfm); + struct mm_set_channel_cfm *cfm); +int rwnx_send_key_add(struct rwnx_hw *rwnx_hw, u8 vif_idx, u8 sta_idx, + bool pairwise, u8 *key, u8 key_len, u8 key_idx, + u8 cipher_suite, struct mm_key_add_cfm *cfm); int rwnx_send_key_del(struct rwnx_hw *rwnx_hw, uint8_t hw_key_idx); int rwnx_send_bcn(struct rwnx_hw *rwnx_hw, u8 *buf, u8 vif_idx, u16 bcn_len); int rwnx_send_bcn_change(struct rwnx_hw *rwnx_hw, u8 vif_idx, u32 bcn_addr, - u16 bcn_len, u16 tim_oft, u16 tim_len, u16 *csa_oft); + u16 bcn_len, u16 tim_oft, u16 tim_len, u16 *csa_oft); int rwnx_send_tim_update(struct rwnx_hw *rwnx_hw, u8 vif_idx, u16 aid, - u8 tx_status); + u8 tx_status); int rwnx_send_roc(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct ieee80211_channel *chan, unsigned int duration, struct mm_remain_on_channel_cfm *roc_cfm); + struct ieee80211_channel *chan, unsigned int duration, + struct mm_remain_on_channel_cfm *roc_cfm); int rwnx_send_cancel_roc(struct rwnx_hw *rwnx_hw); -int rwnx_send_set_power(struct rwnx_hw *rwnx_hw, u8 vif_idx, s8 pwr, - struct mm_set_power_cfm *cfm); +int rwnx_send_set_power(struct rwnx_hw *rwnx_hw, u8 vif_idx, s8 pwr, + struct mm_set_power_cfm *cfm); int rwnx_send_set_edca(struct rwnx_hw *rwnx_hw, u8 hw_queue, u32 param, - bool uapsd, u8 inst_nbr); -int rwnx_send_tdls_chan_switch_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct rwnx_sta *rwnx_sta, bool sta_initiator, - u8 oper_class, struct cfg80211_chan_def *chandef, - struct tdls_chan_switch_cfm *cfm); -int rwnx_send_tdls_cancel_chan_switch_req(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - struct rwnx_sta *rwnx_sta, - struct tdls_cancel_chan_switch_cfm *cfm); + bool uapsd, u8 inst_nbr); +int rwnx_send_tdls_chan_switch_req(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, + struct rwnx_sta *rwnx_sta, + bool sta_initiator, u8 oper_class, + struct cfg80211_chan_def *chandef, + struct tdls_chan_switch_cfm *cfm); +int rwnx_send_tdls_cancel_chan_switch_req( + struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, + struct rwnx_sta *rwnx_sta, struct tdls_cancel_chan_switch_cfm *cfm); #ifdef CONFIG_RWNX_P2P_DEBUGFS int rwnx_send_p2p_oppps_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u8 ctw, struct mm_set_p2p_oppps_cfm *cfm); + u8 ctw, struct mm_set_p2p_oppps_cfm *cfm); int rwnx_send_p2p_noa_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - int count, int interval, int duration, - bool dyn_noa, struct mm_set_p2p_noa_cfm *cfm); + int count, int interval, int duration, bool dyn_noa, + struct mm_set_p2p_noa_cfm *cfm); #endif /* CONFIG_RWNX_P2P_DEBUGFS */ #ifdef AICWF_ARP_OFFLOAD -int rwnx_send_arpoffload_en_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u32_l ipaddr, u8_l enable); +int rwnx_send_arpoffload_en_req(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, u32_l ipaddr, + u8_l enable); #endif -int rwnx_send_rf_config_req(struct rwnx_hw *rwnx_hw, u8_l ofst, u8_l sel, u8_l *tbl, u16_l len); -int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm); -int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, struct mm_get_mac_addr_cfm *cfm); +int rwnx_send_rf_config_req(struct rwnx_hw *rwnx_hw, u8_l ofst, u8_l sel, + u8_l *tbl, u16_l len); +int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, + struct mm_set_rf_calib_cfm *cfm); +int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, + struct mm_get_mac_addr_cfm *cfm); #ifdef CONFIG_RWNX_FULLMAC int rwnx_send_me_config_req(struct rwnx_hw *rwnx_hw); -int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw, char *ccode); int rwnx_send_me_set_control_port_req(struct rwnx_hw *rwnx_hw, bool opened, - u8 sta_idx); -int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *params, - const u8 *mac, u8 inst_nbr, struct me_sta_add_cfm *cfm); + u8 sta_idx); +int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, + struct station_parameters *params, const u8 *mac, + u8 inst_nbr, struct me_sta_add_cfm *cfm); int rwnx_send_me_sta_del(struct rwnx_hw *rwnx_hw, u8 sta_idx, bool tdls_sta); -int rwnx_send_me_traffic_ind(struct rwnx_hw *rwnx_hw, u8 sta_idx, bool uapsd, u8 tx_status); +int rwnx_send_me_traffic_ind(struct rwnx_hw *rwnx_hw, u8 sta_idx, bool uapsd, + u8 tx_status); int rwnx_send_me_rc_stats(struct rwnx_hw *rwnx_hw, u8 sta_idx, - struct me_rc_stats_cfm *cfm); -int rwnx_send_me_rc_set_rate(struct rwnx_hw *rwnx_hw, - u8 sta_idx, - u16 rate_idx); + struct me_rc_stats_cfm *cfm); +int rwnx_send_me_rc_set_rate(struct rwnx_hw *rwnx_hw, u8 sta_idx, u16 rate_idx); int rwnx_send_me_set_ps_mode(struct rwnx_hw *rwnx_hw, u8 ps_mode); -int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level); -int rwnx_send_sm_connect_req(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - struct cfg80211_connect_params *sme, - struct sm_connect_cfm *cfm); +int rwnx_send_me_set_lp_level(struct rwnx_hw *rwnx_hw, u8 lp_level, + u8 disable_filter); +int rwnx_send_sm_connect_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, + struct cfg80211_connect_params *sme, + struct sm_connect_cfm *cfm); int rwnx_send_sm_disconnect_req(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - u16 reason); + struct rwnx_vif *rwnx_vif, u16 reason); int rwnx_send_sm_external_auth_required_rsp(struct rwnx_hw *rwnx_hw, - struct rwnx_vif *rwnx_vif, - u16 status); + struct rwnx_vif *rwnx_vif, + u16 status); int rwnx_send_apm_start_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct cfg80211_ap_settings *settings, - struct apm_start_cfm *cfm, - struct rwnx_ipc_elem_var *elem); + struct cfg80211_ap_settings *settings, + struct apm_start_cfm *cfm, + struct rwnx_ipc_elem_var *elem); int rwnx_send_apm_stop_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif); int rwnx_send_scanu_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct cfg80211_scan_request *param); + struct cfg80211_scan_request *param); int rwnx_send_scanu_cancel_req(struct rwnx_hw *rwnx_hw, - struct scan_cancel_cfm *cfm); + struct scan_cancel_cfm *cfm); int rwnx_send_apm_start_cac_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct cfg80211_chan_def *chandef, - struct apm_start_cac_cfm *cfm); + struct cfg80211_chan_def *chandef, + struct apm_start_cac_cfm *cfm); int rwnx_send_apm_stop_cac_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif); -int rwnx_send_tdls_peer_traffic_ind_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif); +int rwnx_send_tdls_peer_traffic_ind_req(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif); int rwnx_send_config_monitor_req(struct rwnx_hw *rwnx_hw, - struct cfg80211_chan_def *chandef, - struct me_config_monitor_cfm *cfm); + struct cfg80211_chan_def *chandef, + struct me_config_monitor_cfm *cfm); int rwnx_send_mesh_start_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - const struct mesh_config *conf, const struct mesh_setup *setup, - struct mesh_start_cfm *cfm); + const struct mesh_config *conf, + const struct mesh_setup *setup, + struct mesh_start_cfm *cfm); int rwnx_send_mesh_stop_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - struct mesh_stop_cfm *cfm); + struct mesh_stop_cfm *cfm); int rwnx_send_mesh_update_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u32 mask, const struct mesh_config *p_mconf, struct mesh_update_cfm *cfm); + u32 mask, const struct mesh_config *p_mconf, + struct mesh_update_cfm *cfm); int rwnx_send_mesh_peer_info_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u8 sta_idx, struct mesh_peer_info_cfm *cfm); -void rwnx_send_mesh_peer_update_ntf(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u8 sta_idx, u8 mlink_state); -void rwnx_send_mesh_path_create_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, u8 *tgt_addr); -int rwnx_send_mesh_path_update_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, const u8 *tgt_addr, - const u8 *p_nhop_addr, struct mesh_path_update_cfm *cfm); -void rwnx_send_mesh_proxy_add_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, u8 *ext_addr); + u8 sta_idx, struct mesh_peer_info_cfm *cfm); +void rwnx_send_mesh_peer_update_ntf(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *vif, u8 sta_idx, + u8 mlink_state); +void rwnx_send_mesh_path_create_req(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *vif, u8 *tgt_addr); +int rwnx_send_mesh_path_update_req(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *vif, const u8 *tgt_addr, + const u8 *p_nhop_addr, + struct mesh_path_update_cfm *cfm); +void rwnx_send_mesh_proxy_add_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, + u8 *ext_addr); #endif /* CONFIG_RWNX_FULLMAC */ #ifdef CONFIG_RWNX_BFMER #ifdef CONFIG_RWNX_FULLMAC void rwnx_send_bfmer_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, - const struct ieee80211_vht_cap *vht_cap); + const struct ieee80211_vht_cap *vht_cap); #endif /* CONFIG_RWNX_FULLMAC */ #ifdef CONFIG_RWNX_MUMIMO_TX -int rwnx_send_mu_group_update_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta); +int rwnx_send_mu_group_update_req(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *rwnx_sta); #endif /* CONFIG_RWNX_MUMIMO_TX */ #endif /* CONFIG_RWNX_BFMER */ /* Debug messages */ int rwnx_send_dbg_trigger_req(struct rwnx_hw *rwnx_hw, char *msg); int rwnx_send_dbg_mem_read_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - struct dbg_mem_read_cfm *cfm); + struct dbg_mem_read_cfm *cfm); int rwnx_send_dbg_mem_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - u32 mem_data); + u32 mem_data); int rwnx_send_dbg_mem_mask_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - u32 mem_mask, u32 mem_data); + u32 mem_mask, u32 mem_data); int rwnx_send_dbg_set_mod_filter_req(struct rwnx_hw *rwnx_hw, u32 filter); #ifdef CONFIG_RFTEST -int rwnx_send_rftest_req(struct rwnx_hw *rwnx_hw, u32_l cmd, u32_l argc, u8_l *argv, struct dbg_rftest_cmd_cfm *cfm); +int rwnx_send_rftest_req(struct rwnx_hw *rwnx_hw, u32_l cmd, u32_l argc, + u8_l *argv, struct dbg_rftest_cmd_cfm *cfm); #endif #ifdef CONFIG_MCU_MESSAGE -int rwnx_send_dbg_custom_msg_req(struct rwnx_hw *rwnx_hw, - u32 cmd, void *buf, u32 len, u32 action, - struct dbg_custom_msg_cfm *cfm); +int rwnx_send_dbg_custom_msg_req(struct rwnx_hw *rwnx_hw, u32 cmd, void *buf, + u32 len, u32 action, + struct dbg_custom_msg_cfm *cfm); #endif int rwnx_send_dbg_set_sev_filter_req(struct rwnx_hw *rwnx_hw, u32 filter); int rwnx_send_dbg_get_sys_stat_req(struct rwnx_hw *rwnx_hw, - struct dbg_get_sys_stat_cfm *cfm); + struct dbg_get_sys_stat_cfm *cfm); int rwnx_send_dbg_mem_block_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, - u32 mem_size, u32 *mem_data); + u32 mem_size, u32 *mem_data); +int rwnx_send_dbg_mem_block_read_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, + u32 mem_size, + struct dbg_mem_block_read_cfm *cfm); int rwnx_send_dbg_start_app_req(struct rwnx_hw *rwnx_hw, u32 boot_addr, - u32 boot_type); -int rwnx_send_cfg_rssi_req(struct rwnx_hw *rwnx_hw, u8 vif_index, int rssi_thold, u32 rssi_hyst); -int rwnx_send_disable_agg_req(struct rwnx_hw *rwnx_hw, u8_l agg_disable, u8_l agg_disable_rx, u8_l sta_idx); -int rwnx_send_coex_req(struct rwnx_hw *rwnx_hw, u8_l disable_coexnull, u8_l enable_nullcts); -int rwnx_send_get_sta_info_req(struct rwnx_hw *rwnx_hw, u8_l sta_idx, struct mm_get_sta_info_cfm *cfm); -int rwnx_send_set_stack_start_req(struct rwnx_hw *rwnx_hw, u8_l on, u8_l efuse_valid, u8_l set_vendor_info, - u8_l fwtrace_redir_en, struct mm_set_stack_start_cfm *cfm); -int rwnx_send_txop_req(struct rwnx_hw *rwnx_hw, uint16_t *txop, u8_l long_nav_en, u8_l cfe_en); -int rwnx_send_set_temp_comp_req(struct rwnx_hw *rwnx_hw, struct mm_set_vendor_swconfig_cfm *cfm); -int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, int32_t *param, int32_t *param_out); -int rwnx_send_vendor_swconfig_req(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, int32_t *param_in, int32_t *param_out); -int rwnx_send_mask_set_ext_flags_req(struct rwnx_hw *rwnx_hw, uint32_t flags_mask, uint32_t flags_val, struct mm_set_vendor_swconfig_cfm *cfm); -int rwnx_send_get_fw_version_req(struct rwnx_hw *rwnx_hw, struct mm_get_fw_version_cfm *cfm); + u32 boot_type); +int rwnx_send_cfg_rssi_req(struct rwnx_hw *rwnx_hw, u8 vif_index, + int rssi_thold, u32 rssi_hyst); +int rwnx_send_disable_agg_req(struct rwnx_hw *rwnx_hw, u8_l agg_disable, + u8_l agg_disable_rx, u8_l sta_idx); +int rwnx_send_coex_req(struct rwnx_hw *rwnx_hw, u8_l disable_coexnull, + u8_l enable_nullcts); +int rwnx_send_get_sta_info_req(struct rwnx_hw *rwnx_hw, u8_l sta_idx, + struct mm_get_sta_info_cfm *cfm); +int rwnx_send_set_stack_start_req(struct rwnx_hw *rwnx_hw, u8_l on, + u8_l efuse_valid, u8_l set_vendor_info, + u8_l fwtrace_redir_en, + struct mm_set_stack_start_cfm *cfm); +int rwnx_send_txop_req(struct rwnx_hw *rwnx_hw, uint16_t *txop, + u8_l long_nav_en, u8_l cfe_en); +int rwnx_send_get_temp_req(struct rwnx_hw *rwnx_hw, + struct mm_set_vendor_swconfig_cfm *cfm); +int rwnx_send_set_temp_comp_req(struct rwnx_hw *rwnx_hw, + struct mm_set_vendor_swconfig_cfm *cfm); +int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, + int32_t *param, int32_t *param_out); +int rwnx_send_vendor_swconfig_req(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, + int32_t *param_in, int32_t *param_out); +int rwnx_send_mask_set_ext_flags_req(struct rwnx_hw *rwnx_hw, + uint32_t flags_mask, uint32_t flags_val, + struct mm_set_vendor_swconfig_cfm *cfm); +int rwnx_send_get_fw_version_req(struct rwnx_hw *rwnx_hw, + struct mm_get_fw_version_cfm *cfm); int rwnx_send_txpwr_idx_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_ofst_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_ofst2x_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_txpwr_ofst2x_v2_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_set_filter(struct rwnx_hw *rwnx_hw, uint32_t filter); int rwnx_send_txpwr_lvl_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_lvl_v3_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_txpwr_lvl_v4_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_lvl_adj_req(struct rwnx_hw *rwnx_hw); +#ifdef CONFIG_APF +int rwnx_send_set_apf_prog_req(struct rwnx_hw *rwnx_hw, u8_l *program, + u32_l program_len); +int rwnx_send_get_apf_prog_req(struct rwnx_hw *rwnx_hw, u8_l *program, + u32_l program_len); +#endif #ifdef CONFIG_SDIO_BT -int rwnx_sdio_bt_send_req(struct rwnx_hw *rwnx_hw,uint32_t len, struct sk_buff *skb); +int rwnx_sdio_bt_send_req(struct rwnx_hw *rwnx_hw, uint32_t len, + struct sk_buff *skb); #endif #endif /* _RWNX_MSG_TX_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.c index 538f14306..100237a44 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.c @@ -12,14 +12,13 @@ #include "rwnx_msg_tx.h" #include "rwnx_events.h" - /** * rwnx_mu_group_sta_init - Initialize group information for a STA * * @sta: Sta to initialize */ void rwnx_mu_group_sta_init(struct rwnx_sta *sta, - const struct ieee80211_vht_cap *vht_cap) + const struct ieee80211_vht_cap *vht_cap) { sta->group_info.map = 0; sta->group_info.cnt = 0; @@ -29,9 +28,9 @@ void rwnx_mu_group_sta_init(struct rwnx_sta *sta, sta->group_info.traffic = 0; sta->group_info.group = 0; - if (!vht_cap || - !(vht_cap->vht_cap_info & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)) { - sta->group_info.map = RWNX_SU_GROUP; + if (!vht_cap || !(vht_cap->vht_cap_info & + IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)) { + sta->group_info.map = RWNX_SU_GROUP; } } @@ -52,8 +51,10 @@ void rwnx_mu_group_sta_del(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) lock_taken = (down_interruptible(&mu->lock) == 0); - group_sta_for_each(sta, group_id, map) { - struct rwnx_mu_group *group = rwnx_mu_group_from_id(mu, group_id); + group_sta_for_each(sta, group_id, map) + { + struct rwnx_mu_group *group = + rwnx_mu_group_from_id(mu, group_id); for (i = 0; i < CONFIG_USER_MAX; i++) { if (group->users[i] == sta) { @@ -63,10 +64,21 @@ void rwnx_mu_group_sta_del(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) if (group->user_cnt == 1) { for (j = 0; j < CONFIG_USER_MAX; j++) { if (group->users[j]) { - group->users[j]->group_info.cnt--; - group->users[j]->group_info.map &= ~BIT_ULL(group->group_id); - if (group->users[j]->group_info.group == group_id) - group->users[j]->group_info.group = 0; + group->users[j] + ->group_info + .cnt--; + group->users[j] + ->group_info + .map &= ~BIT_ULL( + group->group_id); + if (group->users[j] + ->group_info + .group == + group_id) + group->users[j] + ->group_info + .group = + 0; group->user_cnt--; break; } @@ -80,8 +92,9 @@ void rwnx_mu_group_sta_del(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) } } - WARN((i == CONFIG_USER_MAX), "sta %d doesn't belongs to group %d", - sta->sta_idx, group_id); + WARN((i == CONFIG_USER_MAX), + "sta %d doesn't belongs to group %d", sta->sta_idx, + group_id); } sta->group_info.map = 0; @@ -123,7 +136,7 @@ u64 rwnx_mu_group_sta_get_map(struct rwnx_sta *sta) * doesn't belongs to the group (or group id is invalid) */ int rwnx_mu_group_sta_get_pos(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - int group_id) + int group_id) { struct rwnx_mu_group *group; int i; @@ -137,8 +150,7 @@ int rwnx_mu_group_sta_get_pos(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, return i; } - WARN(1, "sta %d doesn't belongs to group %d", - sta->sta_idx, group_id); + WARN(1, "sta %d doesn't belongs to group %d", sta->sta_idx, group_id); return -1; } @@ -149,8 +161,8 @@ int rwnx_mu_group_sta_get_pos(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, * @elem: element to move (or add) at the top of @list * */ -static inline -void rwnx_mu_group_move_head(struct list_head *list, struct list_head *elem) +static inline void rwnx_mu_group_move_head(struct list_head *list, + struct list_head *elem) { if (elem->next != LIST_POISON1) { __list_del_entry(elem); @@ -169,9 +181,8 @@ void rwnx_mu_group_move_head(struct list_head *list, struct list_head *elem) * Each users is also added to the update_sta list, so that group info * will be resent to fw for this user. */ -static inline -void rwnx_mu_group_remove_users(struct rwnx_mu_info *mu, - struct rwnx_mu_group *group) +static inline void rwnx_mu_group_remove_users(struct rwnx_mu_info *mu, + struct rwnx_mu_group *group) { struct rwnx_sta *sta; int i, group_id = group->group_id; @@ -183,7 +194,7 @@ void rwnx_mu_group_remove_users(struct rwnx_mu_info *mu, sta->group_info.cnt--; sta->group_info.map &= ~BIT_ULL(group_id); rwnx_mu_group_move_head(&mu->update_sta, - &sta->group_info.update); + &sta->group_info.update); } } @@ -208,10 +219,9 @@ void rwnx_mu_group_remove_users(struct rwnx_mu_info *mu, * Each users (effectively added to @group) is also added to the update_sta * list, so that group info will be resent to fw for this user. */ -static inline -void rwnx_mu_group_add_users(struct rwnx_mu_info *mu, - struct rwnx_mu_group *group, - int nb_user, struct rwnx_sta **users) +static inline void rwnx_mu_group_add_users(struct rwnx_mu_info *mu, + struct rwnx_mu_group *group, + int nb_user, struct rwnx_sta **users) { int i, j, group_id = group->group_id; @@ -219,30 +229,30 @@ void rwnx_mu_group_add_users(struct rwnx_mu_info *mu, mu->group_cnt++; j = 0; - for (i = 0; i < nb_user ; i++) { - for (; j < CONFIG_USER_MAX ; j++) { + for (i = 0; i < nb_user; i++) { + for (; j < CONFIG_USER_MAX; j++) { if (group->users[j] == NULL) { group->users[j] = users[i]; users[i]->group_info.cnt++; users[i]->group_info.map |= BIT_ULL(group_id); - rwnx_mu_group_move_head(&(mu->update_sta), - &(users[i]->group_info.update)); + rwnx_mu_group_move_head( + &(mu->update_sta), + &(users[i]->group_info.update)); group->user_cnt++; j++; break; } WARN(j == (CONFIG_USER_MAX - 1), - "Too many user for group %d (nb_user=%d)", - group_id, group->user_cnt + nb_user - i); + "Too many user for group %d (nb_user=%d)", + group_id, group->user_cnt + nb_user - i); } } trace_mu_group_update(group); } - /** * rwnx_mu_group_create_one - create on group with a specific group of user * @@ -264,9 +274,8 @@ void rwnx_mu_group_add_users(struct rwnx_mu_info *mu, * * @return 1 if a new group has been created and 0 otherwise */ -static -int rwnx_mu_group_create_one(struct rwnx_mu_info *mu, int nb_user, - struct rwnx_sta **users, int *nb_group_left) +static int rwnx_mu_group_create_one(struct rwnx_mu_info *mu, int nb_user, + struct rwnx_sta **users, int *nb_group_left) { int i, group_id; struct rwnx_mu_group *group; @@ -275,10 +284,9 @@ int rwnx_mu_group_create_one(struct rwnx_mu_info *mu, int nb_user, group_match = users[0]->group_info.map; group_avail = users[0]->group_info.map; - for (i = 1; i < nb_user ; i++) { + for (i = 1; i < nb_user; i++) { group_match &= users[i]->group_info.map; group_avail |= users[i]->group_info.map; - } if (group_match) { @@ -295,22 +303,26 @@ int rwnx_mu_group_create_one(struct rwnx_mu_info *mu, int nb_user, struct rwnx_sta *users2[CONFIG_USER_MAX]; int nb_user2; - group_for_each(group_id, group_avail) { + group_for_each(group_id, group_avail) + { group = rwnx_mu_group_from_id(mu, group_id); if (group->user_cnt == CONFIG_USER_MAX) continue; nb_user2 = 0; - for (i = 0; i < nb_user ; i++) { - if (!(users[i]->group_info.map & BIT_ULL(group_id))) { + for (i = 0; i < nb_user; i++) { + if (!(users[i]->group_info.map & + BIT_ULL(group_id))) { users2[nb_user2] = users[i]; nb_user2++; } } if ((group->user_cnt + nb_user2) <= CONFIG_USER_MAX) { - rwnx_mu_group_add_users(mu, group, nb_user2, users2); - rwnx_mu_group_move_head(&mu->active_groups, &group->list); + rwnx_mu_group_add_users(mu, group, nb_user2, + users2); + rwnx_mu_group_move_head(&mu->active_groups, + &group->list); return 0; } } @@ -342,9 +354,8 @@ int rwnx_mu_group_create_one(struct rwnx_mu_info *mu, int nb_user, * Loops end when there is no more users, or no more new group is allowed * */ -static -void rwnx_mu_group_create(struct rwnx_mu_info *mu, struct rwnx_sta *sta, - int *nb_group_left) +static void rwnx_mu_group_create(struct rwnx_mu_info *mu, struct rwnx_sta *sta, + int *nb_group_left) { struct rwnx_sta *user_sta = sta; struct rwnx_sta *users[CONFIG_USER_MAX]; @@ -352,8 +363,8 @@ void rwnx_mu_group_create(struct rwnx_mu_info *mu, struct rwnx_sta *sta, users[0] = sta; while (*nb_group_left) { - - list_for_each_entry_continue(user_sta, &mu->active_sta, group_info.active) { + list_for_each_entry_continue (user_sta, &mu->active_sta, + group_info.active) { users[nb_user] = user_sta; if (++nb_user == CONFIG_USER_MAX) { break; @@ -361,7 +372,8 @@ void rwnx_mu_group_create(struct rwnx_mu_info *mu, struct rwnx_sta *sta, } if (nb_user > 1) { - if (rwnx_mu_group_create_one(mu, nb_user, users, nb_group_left)) + if (rwnx_mu_group_create_one(mu, nb_user, users, + nb_group_left)) (*nb_group_left)--; if (nb_user < CONFIG_USER_MAX) @@ -413,13 +425,14 @@ void rwnx_mu_group_create(struct rwnx_mu_info *mu, struct rwnx_sta *sta, void rwnx_mu_group_work(struct work_struct *ws) { struct delayed_work *dw = container_of(ws, struct delayed_work, work); - struct rwnx_mu_info *mu = container_of(dw, struct rwnx_mu_info, group_work); + struct rwnx_mu_info *mu = + container_of(dw, struct rwnx_mu_info, group_work); struct rwnx_hw *rwnx_hw = container_of(mu, struct rwnx_hw, mu); struct rwnx_sta *sta, *next; int nb_group_left = NX_MU_GROUP_MAX; if (WARN(!rwnx_hw->mod_params->mutx, - "In group formation work, but mutx disabled")) + "In group formation work, but mutx disabled")) return; if (down_interruptible(&mu->lock) != 0) @@ -429,7 +442,8 @@ void rwnx_mu_group_work(struct work_struct *ws) if (!mu->update_count) mu->update_count++; - list_for_each_entry_safe(sta, next, &mu->active_sta, group_info.active) { + list_for_each_entry_safe (sta, next, &mu->active_sta, + group_info.active) { if (nb_group_left) rwnx_mu_group_create(mu, sta, &nb_group_left); @@ -438,7 +452,8 @@ void rwnx_mu_group_work(struct work_struct *ws) } if (!list_empty(&mu->update_sta)) { - list_for_each_entry_safe(sta, next, &mu->update_sta, group_info.update) { + list_for_each_entry_safe (sta, next, &mu->update_sta, + group_info.update) { rwnx_send_mu_group_update_req(rwnx_hw, sta); list_del(&sta->group_info.update); } @@ -505,7 +520,7 @@ void rwnx_mu_group_init(struct rwnx_hw *rwnx_hw) * It is called with mu->lock taken. */ void rwnx_mu_set_active_sta(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - int traffic) + int traffic) { struct rwnx_mu_info *mu = &rwnx_hw->mu; @@ -515,14 +530,15 @@ void rwnx_mu_set_active_sta(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, sta->group_info.traffic += traffic; if ((sta->group_info.last_update != mu->update_count) || - !list_empty(&mu->active_sta)) { - - rwnx_mu_group_move_head(&mu->active_sta, &sta->group_info.active); + !list_empty(&mu->active_sta)) { + rwnx_mu_group_move_head(&mu->active_sta, + &sta->group_info.active); if (!delayed_work_pending(&mu->group_work) && - !list_is_singular(&mu->active_sta)) { - schedule_delayed_work(&mu->group_work, - msecs_to_jiffies(RWNX_MU_GROUP_INTERVAL)); + !list_is_singular(&mu->active_sta)) { + schedule_delayed_work( + &mu->group_work, + msecs_to_jiffies(RWNX_MU_GROUP_INTERVAL)); } } } @@ -543,7 +559,6 @@ void rwnx_mu_set_active_group(struct rwnx_hw *rwnx_hw, int group_id) rwnx_mu_group_move_head(&mu->active_groups, &group->list); } - /** * rwnx_mu_group_sta_select - Select the best group for MU stas * @@ -580,8 +595,7 @@ void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) if (!mu->group_cnt || time_before(jiffies, mu->next_group_select)) return; - list_for_each_entry(vif, &rwnx_hw->vifs, list) { - + list_for_each_entry (vif, &rwnx_hw->vifs, list) { if (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_AP) continue; @@ -593,7 +607,7 @@ void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) memset(nb_users, 0, sizeof(nb_users)); memset(traffic, 0, sizeof(traffic)); - list_for_each_entry(sta, head, list) { + list_for_each_entry (sta, head, list) { int sta_traffic = sta->group_info.traffic; /* reset statistics for next selection */ @@ -603,10 +617,11 @@ void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) sta->group_info.group = 0; if (sta->group_info.cnt == 0 || - sta_traffic < RWNX_MU_GROUP_MIN_TRAFFIC) + sta_traffic < RWNX_MU_GROUP_MIN_TRAFFIC) continue; - group_sta_for_each(sta, group_id, map) { + group_sta_for_each(sta, group_id, map) + { nb_users[group_id]++; traffic[group_id] += sta_traffic; @@ -641,10 +656,14 @@ void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) group = rwnx_mu_group_from_id(mu, group_id); for (j = 0; j < CONFIG_USER_MAX; j++) { if (group->users[j]) { - trace_mu_group_selection(group->users[j], group_id); - group->users[j]->group_info.group = group_id; + trace_mu_group_selection( + group->users[j], group_id); + group->users[j]->group_info.group = + group_id; - group_sta_for_each(group->users[j], tmp, map) { + group_sta_for_each(group->users[j], tmp, + map) + { if (group_id != tmp) nb_users[tmp]--; } @@ -653,7 +672,7 @@ void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) } } - mu->next_group_select = jiffies + - msecs_to_jiffies(RWNX_MU_GROUP_SELECT_INTERVAL); + mu->next_group_select = + jiffies + msecs_to_jiffies(RWNX_MU_GROUP_SELECT_INTERVAL); mu->next_group_select |= 1; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.h index c24bb0396..afb0f2b8c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_mu_group.h @@ -36,7 +36,7 @@ struct rwnx_sta_group_info { int cnt; u64 map; int traffic; - u8 group; + u8 group; }; /** @@ -92,25 +92,24 @@ struct rwnx_mu_info { // minimum traffic in a RWNX_MU_GROUP_SELECT_INTERVAL to consider the sta #define RWNX_MU_GROUP_MIN_TRAFFIC 50 /* in number of packet */ - #define RWNX_GET_FIRST_GROUP_ID(map) (fls64(map) - 1) -#define group_sta_for_each(sta, id, map) \ - do { \ - map = sta->group_info.map & RWNX_MU_GROUP_MASK; \ - for (id = (fls64(map) - 1) ; id > 0 ; \ - map &= ~(u64)BIT_ULL(id), id = (fls64(map) - 1)) \ +#define group_sta_for_each(sta, id, map) \ + do { \ + map = sta->group_info.map & RWNX_MU_GROUP_MASK; \ + for (id = (fls64(map) - 1); id > 0; \ + map &= ~(u64)BIT_ULL(id), id = (fls64(map) - 1)) \ } while (0) -#define group_for_each(id, map) \ - for (id = (fls64(map) - 1) ; id > 0 ; \ - map &= ~(u64)BIT_ULL(id), id = (fls64(map) - 1)) +#define group_for_each(id, map) \ + for (id = (fls64(map) - 1); id > 0; \ + map &= ~(u64)BIT_ULL(id), id = (fls64(map) - 1)) #define RWNX_MUMIMO_INFO_POS_ID(info) (((info) >> 6) & 0x3) -#define RWNX_MUMIMO_INFO_GROUP_ID(info) ((info) & 0x3f) +#define RWNX_MUMIMO_INFO_GROUP_ID(info) ((info)&0x3f) -static inline -struct rwnx_mu_group *rwnx_mu_group_from_id(struct rwnx_mu_info *mu, int id) +static inline struct rwnx_mu_group * +rwnx_mu_group_from_id(struct rwnx_mu_info *mu, int id) { if (id > NX_MU_GROUP_MAX) return NULL; @@ -118,64 +117,62 @@ struct rwnx_mu_group *rwnx_mu_group_from_id(struct rwnx_mu_info *mu, int id) return &mu->groups[id - 1]; } - void rwnx_mu_group_sta_init(struct rwnx_sta *sta, - const struct ieee80211_vht_cap *vht_cap); + const struct ieee80211_vht_cap *vht_cap); void rwnx_mu_group_sta_del(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta); u64 rwnx_mu_group_sta_get_map(struct rwnx_sta *sta); int rwnx_mu_group_sta_get_pos(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - int group_id); + int group_id); void rwnx_mu_group_init(struct rwnx_hw *rwnx_hw); void rwnx_mu_set_active_sta(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - int traffic); + int traffic); void rwnx_mu_set_active_group(struct rwnx_hw *rwnx_hw, int group_id); void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw); - #else /* ! CONFIG_RWNX_MUMIMO_TX */ -static inline -void rwnx_mu_group_sta_init(struct rwnx_sta *sta, - const struct ieee80211_vht_cap *vht_cap) -{} +static inline void +rwnx_mu_group_sta_init(struct rwnx_sta *sta, + const struct ieee80211_vht_cap *vht_cap) +{ +} -static inline -void rwnx_mu_group_sta_del(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) -{} +static inline void rwnx_mu_group_sta_del(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta) +{ +} -static inline -u64 rwnx_mu_group_sta_get_map(struct rwnx_sta *sta) +static inline u64 rwnx_mu_group_sta_get_map(struct rwnx_sta *sta) { return 0; } -static inline -int rwnx_mu_group_sta_get_pos(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - int group_id) +static inline int rwnx_mu_group_sta_get_pos(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta, int group_id) { return 0; } -static inline -void rwnx_mu_group_init(struct rwnx_hw *rwnx_hw) -{} +static inline void rwnx_mu_group_init(struct rwnx_hw *rwnx_hw) +{ +} -static inline -void rwnx_mu_set_active_sta(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - int traffic) -{} +static inline void rwnx_mu_set_active_sta(struct rwnx_hw *rwnx_hw, + struct rwnx_sta *sta, int traffic) +{ +} -static inline -void rwnx_mu_set_active_group(struct rwnx_hw *rwnx_hw, int group_id) -{} +static inline void rwnx_mu_set_active_group(struct rwnx_hw *rwnx_hw, + int group_id) +{ +} -static inline -void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) -{} +static inline void rwnx_mu_group_sta_select(struct rwnx_hw *rwnx_hw) +{ +} #endif /* CONFIG_RWNX_MUMIMO_TX */ #endif /* _RWNX_MU_GROUP_H_ */ - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_pci.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_pci.c index 40dac9465..65e90be42 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_pci.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_pci.c @@ -14,24 +14,26 @@ #include "rwnx_dini.h" #include "rwnx_v7.h" -#define PCI_VENDOR_ID_DINIGROUP 0x17DF -#define PCI_DEVICE_ID_DINIGROUP_DNV6_F2PCIE 0x1907 +#define PCI_VENDOR_ID_DINIGROUP 0x17DF +#define PCI_DEVICE_ID_DINIGROUP_DNV6_F2PCIE 0x1907 -#define PCI_DEVICE_ID_XILINX_CEVA_VIRTEX7 0x7011 +#define PCI_DEVICE_ID_XILINX_CEVA_VIRTEX7 0x7011 static const struct pci_device_id rwnx_pci_ids[] = { - {PCI_DEVICE(PCI_VENDOR_ID_DINIGROUP, PCI_DEVICE_ID_DINIGROUP_DNV6_F2PCIE)}, - {PCI_DEVICE(PCI_VENDOR_ID_XILINX, PCI_DEVICE_ID_XILINX_CEVA_VIRTEX7)}, - {0,} + { PCI_DEVICE(PCI_VENDOR_ID_DINIGROUP, + PCI_DEVICE_ID_DINIGROUP_DNV6_F2PCIE) }, + { PCI_DEVICE(PCI_VENDOR_ID_XILINX, PCI_DEVICE_ID_XILINX_CEVA_VIRTEX7) }, + { + 0, + } }; - /* Uncomment this for depmod to create module alias */ /* We don't want this on development platform */ //MODULE_DEVICE_TABLE(pci, rwnx_pci_ids); static int rwnx_pci_probe(struct pci_dev *pci_dev, - const struct pci_device_id *pci_id) + const struct pci_device_id *pci_id) { struct rwnx_plat *rwnx_plat = NULL; void *drvdata; @@ -75,12 +77,10 @@ static void rwnx_pci_remove(struct pci_dev *pci_dev) pci_set_drvdata(pci_dev, NULL); } -static struct pci_driver rwnx_pci_drv = { - .name = KBUILD_MODNAME, - .id_table = rwnx_pci_ids, - .probe = rwnx_pci_probe, - .remove = rwnx_pci_remove -}; +static struct pci_driver rwnx_pci_drv = { .name = KBUILD_MODNAME, + .id_table = rwnx_pci_ids, + .probe = rwnx_pci_probe, + .remove = rwnx_pci_remove }; int rwnx_pci_register_drv(void) { @@ -91,4 +91,3 @@ void rwnx_pci_unregister_drv(void) { pci_unregister_driver(&rwnx_pci_drv); } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.c index b826b4b02..818479256 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.c @@ -47,19 +47,19 @@ extern char aic_fw_path[FW_PATH_MAX_LEN]; #define PRINT 2 #define GET_VALUE 3 - struct rwnx_plat *g_rwnx_plat; -typedef struct -{ - txpwr_lvl_conf_t txpwr_lvl; - txpwr_lvl_conf_v2_t txpwr_lvl_v2; - txpwr_lvl_conf_v3_t txpwr_lvl_v3; - txpwr_lvl_adj_conf_t txpwr_lvl_adj; +typedef struct { + txpwr_lvl_conf_t txpwr_lvl; + txpwr_lvl_conf_v2_t txpwr_lvl_v2; + txpwr_lvl_conf_v3_t txpwr_lvl_v3; + txpwr_lvl_conf_v4_t txpwr_lvl_v4; + txpwr_lvl_adj_conf_t txpwr_lvl_adj; txpwr_loss_conf_t txpwr_loss; - txpwr_ofst_conf_t txpwr_ofst; + txpwr_ofst_conf_t txpwr_ofst; txpwr_ofst2x_conf_t txpwr_ofst2x; - xtal_cap_conf_t xtal_cap; + txpwr_ofst2x_conf_v2_t txpwr_ofst2x_v2; + xtal_cap_conf_t xtal_cap; } userconfig_info_t; userconfig_info_t userconfig_info = { @@ -107,10 +107,33 @@ userconfig_info_t userconfig_info = { .pwrlvl_11ax_5g = //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9, MCS10,MCS11 { 20, 20, 20, 20, 18, 18, 16, 16, 16, 15, 14, 14}, + }, + .txpwr_lvl_v4 = { + .enable = 1, + .pwrlvl_11b_11ag_2g4 = + //1M, 2M, 5M5, 11M, 6M, 9M, 12M, 18M, 24M, 36M, 48M, 54M + { 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 16, 16}, + .pwrlvl_11n_11ac_2g4 = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 16}, + .pwrlvl_11ax_2g4 = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9, MCS10,MCS11 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 16, 15, 15}, + .pwrlvl_11a_5g = + //6M, 9M, 12M, 18M, 24M, 36M, 48M, 54M + { 20, 20, 20, 20, 18, 18, 16, 16}, + .pwrlvl_11n_11ac_5g = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 15}, + .pwrlvl_11ax_5g = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9, MCS10,MCS11 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 15, 14, 14}, }, .txpwr_loss = { - .loss_enable = 1, - .loss_value = 0, + .loss_enable_2g4 = 0, + .loss_value_2g4 = 0, + .loss_enable_5g = 0, + .loss_value_5g = 0, }, .txpwr_ofst = { .enable = 1, @@ -137,6 +160,42 @@ userconfig_info_t userconfig_info = { { 0, 0, 0, 0, 0, 0 }, // ofdm_midrate }, }, + .txpwr_ofst2x_v2 = { + .enable = 0, + .pwrofst_flags = 0, + .pwrofst2x_tbl_2g4_ant0 = + { // 11b, ofdm_highrate, ofdm_lowrate + { 0, 0, 0 }, // ch1-4 + { 0, 0, 0 }, // ch5-9 + { 0, 0, 0 }, // ch10-13 + }, + .pwrofst2x_tbl_2g4_ant1 = + { // 11b, ofdm_highrate, ofdm_lowrate + { 0, 0, 0 }, // ch1-4 + { 0, 0, 0 }, // ch5-9 + { 0, 0, 0 }, // ch10-13 + }, + .pwrofst2x_tbl_5g_ant0 = + { // ofdm_highrate, ofdm_lowrate, ofdm_midrate + { 0, 0, 0 }, // ch42 + { 0, 0, 0 }, // ch58 + { 0, 0, 0 }, // ch106 + { 0, 0, 0 }, // ch122 + { 0, 0, 0 }, // ch138 + { 0, 0, 0 }, // ch155 + }, + .pwrofst2x_tbl_5g_ant1 = + { // ofdm_highrate, ofdm_lowrate, ofdm_midrate + { 0, 0, 0 }, // ch42 + { 0, 0, 0 }, // ch58 + { 0, 0, 0 }, // ch106 + { 0, 0, 0 }, // ch122 + { 0, 0, 0 }, // ch138 + { 0, 0, 0 }, // ch155 + }, + .pwrofst2x_tbl_6g_ant0 = { 0, }, // ofdm_highrate: 6e_ch7 ~ 6e_ch229 + .pwrofst2x_tbl_6g_ant1 = { 0, }, // ofdm_highrate: 6e_ch7 ~ 6e_ch229 + }, .xtal_cap = { .enable = 0, .xtal_cap = 24, @@ -144,6 +203,260 @@ userconfig_info_t userconfig_info = { }, }; +typedef struct { + char ccode[3]; + Regions_code region; +} reg_table; + +/* If the region conflicts with the kernel, the actual authentication standard prevails */ +reg_table reg_tables[] = { + { .ccode = "CN", .region = REGIONS_SRRC }, + { .ccode = "US", .region = REGIONS_FCC }, + { .ccode = "DE", .region = REGIONS_ETSI }, + { .ccode = "00", .region = REGIONS_DEFAULT }, + { .ccode = "WW", .region = REGIONS_DEFAULT }, + { .ccode = "XX", .region = REGIONS_DEFAULT }, + { .ccode = "JP", .region = REGIONS_JP }, + { .ccode = "AD", .region = REGIONS_ETSI }, + { .ccode = "AE", .region = REGIONS_ETSI }, + { .ccode = "AF", .region = REGIONS_ETSI }, + { .ccode = "AI", .region = REGIONS_ETSI }, + { .ccode = "AL", .region = REGIONS_ETSI }, + { .ccode = "AM", .region = REGIONS_ETSI }, + { .ccode = "AN", .region = REGIONS_ETSI }, + { .ccode = "AR", .region = REGIONS_FCC }, + { .ccode = "AS", .region = REGIONS_FCC }, + { .ccode = "AT", .region = REGIONS_ETSI }, + { .ccode = "AU", .region = REGIONS_ETSI }, + { .ccode = "AW", .region = REGIONS_ETSI }, + { .ccode = "AZ", .region = REGIONS_ETSI }, + { .ccode = "BA", .region = REGIONS_ETSI }, + { .ccode = "BB", .region = REGIONS_FCC }, + { .ccode = "BD", .region = REGIONS_JP }, + { .ccode = "BE", .region = REGIONS_ETSI }, + { .ccode = "BF", .region = REGIONS_FCC }, + { .ccode = "BG", .region = REGIONS_ETSI }, + { .ccode = "BH", .region = REGIONS_ETSI }, + { .ccode = "BL", .region = REGIONS_ETSI }, + { .ccode = "BM", .region = REGIONS_FCC }, + { .ccode = "BN", .region = REGIONS_JP }, + { .ccode = "BO", .region = REGIONS_JP }, + { .ccode = "BR", .region = REGIONS_FCC }, + { .ccode = "BS", .region = REGIONS_FCC }, + { .ccode = "BT", .region = REGIONS_ETSI }, + { .ccode = "BW", .region = REGIONS_ETSI }, + { .ccode = "BY", .region = REGIONS_ETSI }, + { .ccode = "BZ", .region = REGIONS_JP }, + { .ccode = "CA", .region = REGIONS_FCC }, + { .ccode = "CF", .region = REGIONS_FCC }, + { .ccode = "CH", .region = REGIONS_ETSI }, + { .ccode = "CI", .region = REGIONS_FCC }, + { .ccode = "CL", .region = REGIONS_ETSI }, + { .ccode = "CO", .region = REGIONS_FCC }, + { .ccode = "CR", .region = REGIONS_FCC }, + { .ccode = "CX", .region = REGIONS_FCC }, + { .ccode = "CY", .region = REGIONS_ETSI }, + { .ccode = "CZ", .region = REGIONS_ETSI }, + { .ccode = "DK", .region = REGIONS_ETSI }, + { .ccode = "DM", .region = REGIONS_FCC }, + { .ccode = "DO", .region = REGIONS_FCC }, + { .ccode = "DZ", .region = REGIONS_JP }, + { .ccode = "EC", .region = REGIONS_FCC }, + { .ccode = "EE", .region = REGIONS_ETSI }, + { .ccode = "EG", .region = REGIONS_ETSI }, + { .ccode = "ES", .region = REGIONS_ETSI }, + { .ccode = "ET", .region = REGIONS_ETSI }, + { .ccode = "FI", .region = REGIONS_ETSI }, + { .ccode = "FM", .region = REGIONS_FCC }, + { .ccode = "FR", .region = REGIONS_ETSI }, + { .ccode = "GB", .region = REGIONS_ETSI }, + { .ccode = "GD", .region = REGIONS_FCC }, + { .ccode = "GE", .region = REGIONS_ETSI }, + { .ccode = "GF", .region = REGIONS_ETSI }, + { .ccode = "GH", .region = REGIONS_FCC }, + { .ccode = "GI", .region = REGIONS_ETSI }, + { .ccode = "GL", .region = REGIONS_ETSI }, + { .ccode = "GP", .region = REGIONS_ETSI }, + { .ccode = "GR", .region = REGIONS_ETSI }, + { .ccode = "GT", .region = REGIONS_FCC }, + { .ccode = "GU", .region = REGIONS_FCC }, + { .ccode = "GY", .region = REGIONS_DEFAULT }, + { .ccode = "HK", .region = REGIONS_ETSI }, + { .ccode = "HN", .region = REGIONS_FCC }, + { .ccode = "HR", .region = REGIONS_ETSI }, + { .ccode = "HT", .region = REGIONS_FCC }, + { .ccode = "HU", .region = REGIONS_ETSI }, + { .ccode = "ID", .region = REGIONS_ETSI }, + { .ccode = "IE", .region = REGIONS_ETSI }, + { .ccode = "IL", .region = REGIONS_ETSI }, + { .ccode = "IN", .region = REGIONS_ETSI }, + { .ccode = "IQ", .region = REGIONS_ETSI }, + { .ccode = "IR", .region = REGIONS_JP }, + { .ccode = "IS", .region = REGIONS_ETSI }, + { .ccode = "IT", .region = REGIONS_ETSI }, + { .ccode = "JM", .region = REGIONS_FCC }, + { .ccode = "JO", .region = REGIONS_ETSI }, + { .ccode = "KE", .region = REGIONS_ETSI }, + { .ccode = "KG", .region = REGIONS_ETSI }, + { .ccode = "KH", .region = REGIONS_ETSI }, + { .ccode = "KN", .region = REGIONS_ETSI }, + { .ccode = "KP", .region = REGIONS_JP }, + { .ccode = "KR", .region = REGIONS_ETSI }, + { .ccode = "KW", .region = REGIONS_ETSI }, + { .ccode = "KY", .region = REGIONS_FCC }, + { .ccode = "KZ", .region = REGIONS_DEFAULT }, + { .ccode = "LB", .region = REGIONS_ETSI }, + { .ccode = "LC", .region = REGIONS_ETSI }, + { .ccode = "LI", .region = REGIONS_ETSI }, + { .ccode = "LK", .region = REGIONS_FCC }, + { .ccode = "LS", .region = REGIONS_ETSI }, + { .ccode = "LT", .region = REGIONS_ETSI }, + { .ccode = "LU", .region = REGIONS_ETSI }, + { .ccode = "LV", .region = REGIONS_ETSI }, + { .ccode = "LY", .region = REGIONS_ETSI }, + { .ccode = "MA", .region = REGIONS_ETSI }, + { .ccode = "MC", .region = REGIONS_ETSI }, + { .ccode = "MD", .region = REGIONS_ETSI }, + { .ccode = "ME", .region = REGIONS_ETSI }, + { .ccode = "MF", .region = REGIONS_ETSI }, + { .ccode = "MH", .region = REGIONS_FCC }, + { .ccode = "MK", .region = REGIONS_ETSI }, + { .ccode = "MN", .region = REGIONS_ETSI }, + { .ccode = "MO", .region = REGIONS_ETSI }, + { .ccode = "MP", .region = REGIONS_FCC }, + { .ccode = "MQ", .region = REGIONS_ETSI }, + { .ccode = "MR", .region = REGIONS_ETSI }, + { .ccode = "MT", .region = REGIONS_ETSI }, + { .ccode = "MU", .region = REGIONS_FCC }, + { .ccode = "MV", .region = REGIONS_ETSI }, + { .ccode = "MW", .region = REGIONS_ETSI }, + { .ccode = "MX", .region = REGIONS_FCC }, + { .ccode = "MY", .region = REGIONS_FCC }, + { .ccode = "NA", .region = REGIONS_ETSI }, + { .ccode = "NG", .region = REGIONS_ETSI }, + { .ccode = "NI", .region = REGIONS_FCC }, + { .ccode = "NL", .region = REGIONS_ETSI }, + { .ccode = "NO", .region = REGIONS_ETSI }, + { .ccode = "NP", .region = REGIONS_JP }, + { .ccode = "NZ", .region = REGIONS_ETSI }, + { .ccode = "OM", .region = REGIONS_ETSI }, + { .ccode = "PA", .region = REGIONS_FCC }, + { .ccode = "PE", .region = REGIONS_FCC }, + { .ccode = "PF", .region = REGIONS_ETSI }, + { .ccode = "PG", .region = REGIONS_FCC }, + { .ccode = "PH", .region = REGIONS_FCC }, + { .ccode = "PK", .region = REGIONS_ETSI }, + { .ccode = "PL", .region = REGIONS_ETSI }, + { .ccode = "PM", .region = REGIONS_ETSI }, + { .ccode = "PR", .region = REGIONS_FCC }, + { .ccode = "PT", .region = REGIONS_ETSI }, + { .ccode = "PW", .region = REGIONS_FCC }, + { .ccode = "PY", .region = REGIONS_FCC }, + { .ccode = "QA", .region = REGIONS_ETSI }, + { .ccode = "RE", .region = REGIONS_ETSI }, + { .ccode = "RO", .region = REGIONS_ETSI }, + { .ccode = "RS", .region = REGIONS_ETSI }, + { .ccode = "RU", .region = REGIONS_ETSI }, + { .ccode = "RW", .region = REGIONS_FCC }, + { .ccode = "SA", .region = REGIONS_ETSI }, + { .ccode = "SE", .region = REGIONS_ETSI }, + { .ccode = "SG", .region = REGIONS_ETSI }, + { .ccode = "SI", .region = REGIONS_ETSI }, + { .ccode = "SK", .region = REGIONS_ETSI }, + { .ccode = "SM", .region = REGIONS_ETSI }, + { .ccode = "SN", .region = REGIONS_FCC }, + { .ccode = "SR", .region = REGIONS_ETSI }, + { .ccode = "SV", .region = REGIONS_FCC }, + { .ccode = "SY", .region = REGIONS_DEFAULT }, + { .ccode = "TC", .region = REGIONS_FCC }, + { .ccode = "TD", .region = REGIONS_ETSI }, + { .ccode = "TG", .region = REGIONS_ETSI }, + { .ccode = "TH", .region = REGIONS_FCC }, + { .ccode = "TJ", .region = REGIONS_ETSI }, + { .ccode = "TM", .region = REGIONS_ETSI }, + { .ccode = "TN", .region = REGIONS_ETSI }, + { .ccode = "TR", .region = REGIONS_ETSI }, + { .ccode = "TT", .region = REGIONS_FCC }, + { .ccode = "TW", .region = REGIONS_FCC }, + { .ccode = "UA", .region = REGIONS_ETSI }, + { .ccode = "UG", .region = REGIONS_FCC }, + { .ccode = "UY", .region = REGIONS_FCC }, + { .ccode = "UZ", .region = REGIONS_ETSI }, + { .ccode = "VC", .region = REGIONS_ETSI }, + { .ccode = "VE", .region = REGIONS_FCC }, + { .ccode = "VI", .region = REGIONS_FCC }, + { .ccode = "VN", .region = REGIONS_JP }, + { .ccode = "VU", .region = REGIONS_FCC }, + { .ccode = "WF", .region = REGIONS_ETSI }, + { .ccode = "YE", .region = REGIONS_DEFAULT }, + { .ccode = "YT", .region = REGIONS_ETSI }, + { .ccode = "ZA", .region = REGIONS_ETSI }, + { .ccode = "ZM", .region = REGIONS_ETSI }, + { .ccode = "ZW", .region = REGIONS_ETSI }, +}; + +uint8_t get_ccode_region(char *ccode) +{ + int i, cnt; + AICWFDBG(LOGDEBUG, "%s ccode:%s\r\n", __func__, ccode); + + cnt = sizeof(reg_tables) / sizeof(reg_tables[0]); + + for (i = 0; i < cnt; i++) { + if (reg_tables[i].ccode[0] == ccode[0] && + reg_tables[i].ccode[1] == ccode[1]) { + AICWFDBG(LOGDEBUG, "region: %d\r\n", + reg_tables[i].region); + return reg_tables[i].region; + } + } + AICWFDBG(LOGDEBUG, "use default region\r\n"); + return REGIONS_DEFAULT; +} + +u8 get_region_index(char *name) +{ + if (strncmp(name, "SRRC", 4) == 0) + return REGIONS_SRRC; + else if (strncmp(name, "FCC", 3) == 0) + return REGIONS_FCC; + else if (strncmp(name, "ETSI", 4) == 0) + return REGIONS_ETSI; + else if (strncmp(name, "JP", 2) == 0) + return REGIONS_JP; + else if (strncmp(name, "UNSET", 5) == 0) + return REGIONS_DEFAULT; + + return REGIONS_DEFAULT; +} + +#ifdef CONFIG_POWER_LIMIT +#define POWER_LIMIT_INVALID_VAL POWER_LEVEL_INVALID_VAL + +#define POWER_LIMIT_CC_MATCHED_BIT (0x1U << 0) + +#define MAX_2_4G_BW_NUM 2 +#define MAX_5G_BW_NUM 3 +#define MAX_REGION_NUM 5 + +typedef struct { + u8_l ch_cnt_2g4[MAX_2_4G_BW_NUM]; + u8_l ch_cnt_5g[MAX_5G_BW_NUM]; + u8_l ch_num_2g4[MAX_2_4G_BW_NUM][MAC_DOMAINCHANNEL_24G_MAX]; + u8_l ch_num_5g[MAX_5G_BW_NUM][MAC_DOMAINCHANNEL_5G_MAX]; + s8_l max_pwr_2g4[MAX_2_4G_BW_NUM][MAC_DOMAINCHANNEL_24G_MAX]; + s8_l max_pwr_5g[MAX_5G_BW_NUM][MAC_DOMAINCHANNEL_5G_MAX]; +} txpwr_lmt_info_t; + +typedef struct { + u32_l flags; + txpwr_lmt_info_t txpwr_lmt[MAX_REGION_NUM]; +} powerlimit_info_t; + +powerlimit_info_t powerlimit_info = { + 0, +}; +#endif #ifdef CONFIG_RWNX_TL4 /** @@ -156,7 +469,7 @@ userconfig_info_t userconfig_info = { * Load a fw, stored as a hex file, into the specified address */ static int rwnx_plat_tl4_fw_upload(struct rwnx_plat *rwnx_plat, u8 *fw_addr, - char *filename) + char *filename) { struct device *dev = rwnx_platform_get_dev(rwnx_plat); const struct firmware *fw; @@ -182,7 +495,8 @@ static int rwnx_plat_tl4_fw_upload(struct rwnx_plat *rwnx_plat, u8 *fw_addr, while (remain >= 16) { u32 data, offset; - if (sscanf(file_data, "%c:%08X %04X", &typ0, &addr0, &dat0) != 3) + if (sscanf(file_data, "%c:%08X %04X", &typ0, &addr0, &dat0) != + 3) break; if ((addr0 & 0x01) != 0) { addr0 = addr0 - 1; @@ -192,8 +506,9 @@ static int rwnx_plat_tl4_fw_upload(struct rwnx_plat *rwnx_plat, u8 *fw_addr, remain -= 16; } if ((remain < 16) || - (sscanf(file_data, "%c:%08X %04X", &typ1, &addr1, &dat1) != 3) || - (typ1 != typ0) || (addr1 != (addr0 + 1))) { + (sscanf(file_data, "%c:%08X %04X", &typ1, &addr1, &dat1) != + 3) || + (typ1 != typ0) || (addr1 != (addr0 + 1))) { typ1 = typ0; addr1 = addr0 + 1; dat1 = 0; @@ -205,13 +520,13 @@ static int rwnx_plat_tl4_fw_upload(struct rwnx_plat *rwnx_plat, u8 *fw_addr, if (typ0 == 'C') { offset = 0x00200000; if ((addr1 % 4) == 3) - offset += 2*(addr1 - 3); + offset += 2 * (addr1 - 3); else - offset += 2*(addr1 + 1); + offset += 2 * (addr1 + 1); data = dat1 | (dat0 << 16); } else { - offset = 2*(addr1 - 1); + offset = 2 * (addr1 - 1); data = dat0 | (dat1 << 16); } dst = (u32 *)(fw_addr + offset); @@ -270,21 +585,25 @@ static int rwnx_plat_bin_fw_upload(struct rwnx_plat *rwnx_plat, u8 *fw_addr, } #endif -#define MD5(x) x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15] -#define MD5PINRT "file md5:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\r\n" +#define MD5(x) \ + x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], \ + x[11], x[12], x[13], x[14], x[15] +#define MD5PINRT \ + "file md5:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\r\n" -static int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *device) +static int rwnx_load_firmware(u32 **fw_buf, const char *name, + struct device *device) { #ifdef CONFIG_USE_FW_REQUEST const struct firmware *fw = NULL; u32 *dst = NULL; - void *buffer=NULL; + void *buffer = NULL; MD5_CTX md5; unsigned char decrypt[16]; int size = 0; int ret = 0; - printk("%s: request firmware = %s \n", __func__ ,name); + printk("%s: request firmware = %s \n", __func__, name); ret = request_firmware(&fw, name, NULL); @@ -303,7 +622,6 @@ static int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *dev return -1; } - buffer = vmalloc(size); memset(buffer, 0, size); memcpy(buffer, dst, size); @@ -319,83 +637,87 @@ static int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *dev return size; #else - void *buffer = NULL; - char *path = NULL; - struct file *fp = NULL; - int size = 0, len = 0;// i = 0; - ssize_t rdlen = 0; - //u32 *src = NULL, *dst = NULL; + void *buffer = NULL; + char *path = NULL; + struct file *fp = NULL; + int size = 0, len = 0; // i = 0; + ssize_t rdlen = 0; + //u32 *src = NULL, *dst = NULL; MD5_CTX md5; unsigned char decrypt[16]; - /* get the firmware path */ - path = __getname(); - if (!path) { - *fw_buf = NULL; - return -1; - } - + /* get the firmware path */ + path = __getname(); + if (!path) { + *fw_buf = NULL; + return -1; + } + len = snprintf(path, FW_PATH_MAX_LEN, "%s/%s", aic_fw_path, name); - //len = snprintf(path, FW_PATH_MAX_LEN, "%s", name); - if (len >= FW_PATH_MAX_LEN) { - AICWFDBG(LOGERROR, "%s: %s file's path too long\n", __func__, name); - *fw_buf = NULL; - __putname(path); - return -1; - } + //len = snprintf(path, FW_PATH_MAX_LEN, "%s", name); + if (len >= FW_PATH_MAX_LEN) { + AICWFDBG(LOGERROR, "%s: %s file's path too long\n", __func__, + name); + *fw_buf = NULL; + __putname(path); + return -1; + } - AICWFDBG(LOGINFO, "%s :firmware path = %s \n", __func__, path); + AICWFDBG(LOGINFO, "%s :firmware path = %s \n", __func__, path); - /* open the firmware file */ - fp = filp_open(path, O_RDONLY, 0); - if (IS_ERR_OR_NULL(fp)) { - AICWFDBG(LOGERROR, "%s: %s file failed to open\n", __func__, name); - *fw_buf = NULL; - __putname(path); - fp = NULL; - return -1; - } + /* open the firmware file */ + fp = filp_open(path, O_RDONLY, 0); + if (IS_ERR_OR_NULL(fp)) { + AICWFDBG(LOGERROR, "%s: %s file failed to open\n", __func__, + name); + *fw_buf = NULL; + __putname(path); + fp = NULL; + return -1; + } - size = i_size_read(file_inode(fp)); - if (size <= 0) { - AICWFDBG(LOGERROR, "%s: %s file size invalid %d\n", __func__, name, size); - *fw_buf = NULL; - __putname(path); - filp_close(fp, NULL); - fp = NULL; - return -1; - } + size = i_size_read(file_inode(fp)); + if (size <= 0) { + AICWFDBG(LOGERROR, "%s: %s file size invalid %d\n", __func__, + name, size); + *fw_buf = NULL; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return -1; + } - /* start to read from firmware file */ - buffer = kzalloc(size, GFP_KERNEL); - if (!buffer) { - *fw_buf = NULL; - __putname(path); - filp_close(fp, NULL); - fp = NULL; - return -1; - } + /* start to read from firmware file */ + buffer = kzalloc(size, GFP_KERNEL); + if (!buffer) { + *fw_buf = NULL; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return -1; + } - #if LINUX_VERSION_CODE > KERNEL_VERSION(4, 13, 16) - rdlen = kernel_read(fp, buffer, size, &fp->f_pos); - #else - rdlen = kernel_read(fp, fp->f_pos, buffer, size); - #endif +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 13, 16) + rdlen = kernel_read(fp, buffer, size, &fp->f_pos); +#else + rdlen = kernel_read(fp, fp->f_pos, buffer, size); +#endif - if (size != rdlen) { - AICWFDBG(LOGERROR, "%s: %s file rdlen invalid %d\n", __func__, name, (int)rdlen); - *fw_buf = NULL; - __putname(path); - filp_close(fp, NULL); - fp = NULL; - kfree(buffer); - buffer = NULL; - return -1; - } - if (rdlen > 0) { - fp->f_pos += rdlen; - } + if (size != rdlen) { + AICWFDBG(LOGERROR, "%s: %s file rdlen invalid %d\n", __func__, + name, (int)rdlen); + *fw_buf = NULL; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + kfree(buffer); + buffer = NULL; + return -1; + } + if (rdlen > 0) { + fp->f_pos += rdlen; + } #if 0 /*start to transform the data format*/ @@ -417,12 +739,12 @@ static int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *dev } #endif - __putname(path); - filp_close(fp, NULL); - fp = NULL; - //kfree(buffer); - //buffer = NULL; - *fw_buf = (u32*)buffer; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + //kfree(buffer); + //buffer = NULL; + *fw_buf = (u32 *)buffer; MD5Init(&md5); MD5Update(&md5, (unsigned char *)buffer, size); @@ -430,22 +752,21 @@ static int rwnx_load_firmware(u32 **fw_buf, const char *name, struct device *dev AICWFDBG(LOGINFO, MD5PINRT, MD5(decrypt)); - return size; + return size; #endif } - - /* buffer is allocated by kzalloc */ -int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, u32** buffer, const char *filename) +int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, u32 **buffer, + const char *filename) { - int size; + int size; - AICWFDBG(LOGINFO, "### Load file %s\n", filename); + AICWFDBG(LOGINFO, "### Load file %s\n", filename); - size = rwnx_load_firmware(buffer, filename, NULL); + size = rwnx_load_firmware(buffer, filename, NULL); - return size; + return size; } static void rwnx_restore_firmware(u32 **fw_buf) @@ -455,16 +776,14 @@ static void rwnx_restore_firmware(u32 **fw_buf) #else kfree(*fw_buf); #endif - *fw_buf = NULL; + *fw_buf = NULL; } - -void rwnx_release_firmware_common(u32** buffer) +void rwnx_release_firmware_common(u32 **buffer) { - rwnx_restore_firmware(buffer); + rwnx_restore_firmware(buffer); } - /** * rwnx_plat_bin_fw_upload_2() - Load the requested binary FW into embedded side. * @@ -475,15 +794,16 @@ void rwnx_release_firmware_common(u32** buffer) * Load a fw, stored as a binary file, into the specified address */ int rwnx_plat_bin_fw_upload_2(struct rwnx_hw *rwnx_hw, u32 fw_addr, - char *filename) + char *filename) { int err = 0; unsigned int i = 0, size; -// u32 *src; - u32 *dst=NULL; + // u32 *src; + u32 *dst = NULL; /* Copy the file on the Embedded side */ - AICWFDBG(LOGINFO, "### Upload %s firmware, @ = %x\n", filename, fw_addr); + AICWFDBG(LOGINFO, "### Upload %s firmware, @ = %x\n", filename, + fw_addr); size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); if (!dst) { @@ -491,27 +811,32 @@ int rwnx_plat_bin_fw_upload_2(struct rwnx_hw *rwnx_hw, u32 fw_addr, return -1; } if (size <= 0) { - AICWFDBG(LOGERROR, "wrong size of firmware file\n"); - dst = NULL; - err = -1; + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + err = -1; } AICWFDBG(LOGINFO, "size=%d, dst[0]=%x\n", size, dst[0]); if (size > 512) { for (; i < (size - 512); i += 512) { //printk("wr blk 0: %p -> %x\r\n", dst + i / 4, fw_addr + i); - err = rwnx_send_dbg_mem_block_write_req(rwnx_hw, fw_addr + i, 512, dst + i / 4); + err = rwnx_send_dbg_mem_block_write_req( + rwnx_hw, fw_addr + i, 512, dst + i / 4); if (err) { - AICWFDBG(LOGERROR, "bin upload fail: %x, err:%d\r\n", fw_addr + i, err); + AICWFDBG(LOGERROR, + "bin upload fail: %x, err:%d\r\n", + fw_addr + i, err); break; } } } if (!err && (i < size)) { //printk("wr blk 1: %p -> %x\r\n", dst + i / 4, fw_addr + i); - err = rwnx_send_dbg_mem_block_write_req(rwnx_hw, fw_addr + i, size - i, dst + i / 4); + err = rwnx_send_dbg_mem_block_write_req(rwnx_hw, fw_addr + i, + size - i, dst + i / 4); if (err) { - AICWFDBG(LOGERROR, "bin upload fail: %x, err:%d\r\n", fw_addr + i, err); + AICWFDBG(LOGERROR, "bin upload fail: %x, err:%d\r\n", + fw_addr + i, err); } } @@ -522,8 +847,6 @@ int rwnx_plat_bin_fw_upload_2(struct rwnx_hw *rwnx_hw, u32 fw_addr, return err; } - - typedef struct { txpwr_idx_conf_t txpwr_idx; txpwr_ofst_conf_t txpwr_ofst; @@ -562,47 +885,115 @@ nvram_info_t nvram_info = { void get_userconfig_txpwr_ofst_in_fdrv(txpwr_ofst_conf_t *txpwr_ofst) { - txpwr_ofst->enable = userconfig_info.txpwr_ofst.enable; - txpwr_ofst->chan_1_4 = userconfig_info.txpwr_ofst.chan_1_4; - txpwr_ofst->chan_5_9 = userconfig_info.txpwr_ofst.chan_5_9; - txpwr_ofst->chan_10_13 = userconfig_info.txpwr_ofst.chan_10_13; - txpwr_ofst->chan_36_64 = userconfig_info.txpwr_ofst.chan_36_64; - txpwr_ofst->chan_100_120 = userconfig_info.txpwr_ofst.chan_100_120; - txpwr_ofst->chan_122_140 = userconfig_info.txpwr_ofst.chan_122_140; - txpwr_ofst->chan_142_165 = userconfig_info.txpwr_ofst.chan_142_165; + txpwr_ofst->enable = userconfig_info.txpwr_ofst.enable; + txpwr_ofst->chan_1_4 = userconfig_info.txpwr_ofst.chan_1_4; + txpwr_ofst->chan_5_9 = userconfig_info.txpwr_ofst.chan_5_9; + txpwr_ofst->chan_10_13 = userconfig_info.txpwr_ofst.chan_10_13; + txpwr_ofst->chan_36_64 = userconfig_info.txpwr_ofst.chan_36_64; + txpwr_ofst->chan_100_120 = userconfig_info.txpwr_ofst.chan_100_120; + txpwr_ofst->chan_122_140 = userconfig_info.txpwr_ofst.chan_122_140; + txpwr_ofst->chan_142_165 = userconfig_info.txpwr_ofst.chan_142_165; - AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, txpwr_ofst->enable); - AICWFDBG(LOGINFO, "%s:chan_1_4 :%d\r\n", __func__, txpwr_ofst->chan_1_4); - AICWFDBG(LOGINFO, "%s:chan_5_9 :%d\r\n", __func__, txpwr_ofst->chan_5_9); - AICWFDBG(LOGINFO, "%s:chan_10_13 :%d\r\n", __func__, txpwr_ofst->chan_10_13); - AICWFDBG(LOGINFO, "%s:chan_36_64 :%d\r\n", __func__, txpwr_ofst->chan_36_64); - AICWFDBG(LOGINFO, "%s:chan_100_120:%d\r\n", __func__, txpwr_ofst->chan_100_120); - AICWFDBG(LOGINFO, "%s:chan_122_140:%d\r\n", __func__, txpwr_ofst->chan_122_140); - AICWFDBG(LOGINFO, "%s:chan_142_165:%d\r\n", __func__, txpwr_ofst->chan_142_165); + AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, + txpwr_ofst->enable); + AICWFDBG(LOGINFO, "%s:chan_1_4 :%d\r\n", __func__, + txpwr_ofst->chan_1_4); + AICWFDBG(LOGINFO, "%s:chan_5_9 :%d\r\n", __func__, + txpwr_ofst->chan_5_9); + AICWFDBG(LOGINFO, "%s:chan_10_13 :%d\r\n", __func__, + txpwr_ofst->chan_10_13); + AICWFDBG(LOGINFO, "%s:chan_36_64 :%d\r\n", __func__, + txpwr_ofst->chan_36_64); + AICWFDBG(LOGINFO, "%s:chan_100_120:%d\r\n", __func__, + txpwr_ofst->chan_100_120); + AICWFDBG(LOGINFO, "%s:chan_122_140:%d\r\n", __func__, + txpwr_ofst->chan_122_140); + AICWFDBG(LOGINFO, "%s:chan_142_165:%d\r\n", __func__, + txpwr_ofst->chan_142_165); } void get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x_conf_t *txpwr_ofst2x) { - int type, ch_grp; - *txpwr_ofst2x = userconfig_info.txpwr_ofst2x; - AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, txpwr_ofst2x->enable); - AICWFDBG(LOGINFO, "pwrofst2x 2.4g: [0]:11b, [1]:ofdm_highrate, [2]:ofdm_lowrate\n" - " chan=" "\t1-4" "\t5-9" "\t10-13"); - for (type = 0; type < 3; type++) { - AICWFDBG(LOGINFO, "\n [%d] =", type); - for (ch_grp = 0; ch_grp < 3; ch_grp++) { - AICWFDBG(LOGINFO, "\t%d", txpwr_ofst2x->pwrofst2x_tbl_2g4[type][ch_grp]); - } - } - AICWFDBG(LOGINFO, "\npwrofst2x 5g: [0]:ofdm_lowrate, [1]:ofdm_highrate, [2]:ofdm_midrate\n" - " chan=" "\t36-50" "\t51-64" "\t98-114" "\t115-130" "\t131-146" "\t147-166"); - for (type = 0; type < 3; type++) { - AICWFDBG(LOGINFO, "\n [%d] =", type); - for (ch_grp = 0; ch_grp < 6; ch_grp++) { - AICWFDBG(LOGINFO, "\t%d", txpwr_ofst2x->pwrofst2x_tbl_5g[type][ch_grp]); - } - } - AICWFDBG(LOGINFO, "\n"); + int type, ch_grp; + *txpwr_ofst2x = userconfig_info.txpwr_ofst2x; + AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, + txpwr_ofst2x->enable); + AICWFDBG( + LOGINFO, + "pwrofst2x 2.4g: [0]:11b, [1]:ofdm_highrate, [2]:ofdm_lowrate\n" + " chan=" + "\t1-4" + "\t5-9" + "\t10-13"); + for (type = 0; type < 3; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 3; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d", + txpwr_ofst2x->pwrofst2x_tbl_2g4[type][ch_grp]); + } + } + AICWFDBG( + LOGINFO, + "\npwrofst2x 5g: [0]:ofdm_lowrate, [1]:ofdm_highrate, [2]:ofdm_midrate\n" + " chan=" + "\t36-50" + "\t51-64" + "\t98-114" + "\t115-130" + "\t131-146" + "\t147-166"); + for (type = 0; type < 3; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d", + txpwr_ofst2x->pwrofst2x_tbl_5g[type][ch_grp]); + } + } + AICWFDBG(LOGINFO, "\n"); +} + +void get_userconfig_txpwr_ofst2x_v2_in_fdrv( + txpwr_ofst2x_conf_v2_t *txpwr_ofst2x_v2) +{ + int type, ch_grp; + *txpwr_ofst2x_v2 = userconfig_info.txpwr_ofst2x_v2; + AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, + txpwr_ofst2x_v2->enable); + AICWFDBG(LOGINFO, + "pwrofst2x 2.4g(ant0/ant1): [0]:11b, [1]:ofdm_highrate\n" + " chan=" + "\t1-4" + "\t5-9" + "\t10-13"); + for (type = 0; type < 2; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 3; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_2g4_ant0[ch_grp][type], + txpwr_ofst2x_v2->pwrofst2x_tbl_2g4_ant1[ch_grp] + [type]); + } + } + AICWFDBG(LOGINFO, "\npwrofst2x 5g: [0]:ofdm_highrate\n" + " chan=" + "\t36-50" + "\t51-64" + "\t98-114" + "\t115-130" + "\t131-146" + "\t147-166"); + for (type = 0; type < 1; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_5g_ant0[ch_grp][type], + txpwr_ofst2x_v2 + ->pwrofst2x_tbl_5g_ant1[ch_grp][type]); + } + } + AICWFDBG(LOGINFO, "\n"); } void get_userconfig_txpwr_idx(txpwr_idx_conf_t *txpwr_idx) @@ -617,86 +1008,177 @@ void get_userconfig_txpwr_ofst(txpwr_ofst_conf_t *txpwr_ofst) void get_userconfig_xtal_cap(xtal_cap_conf_t *xtal_cap) { - if(nvram_info.xtal_cap.enable){ - *xtal_cap = nvram_info.xtal_cap; - } - - if(userconfig_info.xtal_cap.enable){ - *xtal_cap = userconfig_info.xtal_cap; - } - - AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, xtal_cap->enable); - AICWFDBG(LOGINFO, "%s:xtal_cap :%d\r\n", __func__, xtal_cap->xtal_cap); - AICWFDBG(LOGINFO, "%s:xtal_cap_fine:%d\r\n", __func__, xtal_cap->xtal_cap_fine); + if (nvram_info.xtal_cap.enable) { + *xtal_cap = nvram_info.xtal_cap; + } + + if (userconfig_info.xtal_cap.enable) { + *xtal_cap = userconfig_info.xtal_cap; + } + + AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, + xtal_cap->enable); + AICWFDBG(LOGINFO, "%s:xtal_cap :%d\r\n", __func__, + xtal_cap->xtal_cap); + AICWFDBG(LOGINFO, "%s:xtal_cap_fine:%d\r\n", __func__, + xtal_cap->xtal_cap_fine); } s8_l get_txpwr_max(s8_l power) { - int i=0; + int i = 0; - for (i = 0; i <= 11; i++){ - if(power < userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[i]) - power = userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[i]; - } - for (i = 0; i <= 9; i++){ - if(power < userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[i]) - power = userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[i]; - } - for (i = 0; i <= 11; i++){ - if(power < userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[i]) - power = userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[i]; - } - for (i = 4; i <= 11; i++){ - if(power < userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[i]) - power = userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[i]; - } - for (i = 0; i <= 9; i++){ - if(power < userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[i]) - power = userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[i]; - } - for (i = 0; i <= 11; i++){ - if(power < userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[i]) - power = userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[i]; + if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800D80 || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + for (i = 0; i <= 11; i++) { + if (power < + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[i]) + power = userconfig_info.txpwr_lvl_v3 + .pwrlvl_11b_11ag_2g4[i]; + } + for (i = 0; i <= 9; i++) { + if (power < + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[i]) + power = userconfig_info.txpwr_lvl_v3 + .pwrlvl_11n_11ac_2g4[i]; + } + for (i = 0; i <= 11; i++) { + if (power < + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[i]) + power = userconfig_info.txpwr_lvl_v3 + .pwrlvl_11ax_2g4[i]; + } + for (i = 4; i <= 11; i++) { + if (power < + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[i]) + power = userconfig_info.txpwr_lvl_v3 + .pwrlvl_11a_5g[i]; + } + for (i = 0; i <= 9; i++) { + if (power < + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[i]) + power = userconfig_info.txpwr_lvl_v3 + .pwrlvl_11n_11ac_5g[i]; + } + for (i = 0; i <= 11; i++) { + if (power < + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[i]) + power = userconfig_info.txpwr_lvl_v3 + .pwrlvl_11ax_5g[i]; + } + + if ((userconfig_info.txpwr_loss.loss_enable_2g4 == 1) || + (userconfig_info.txpwr_loss.loss_enable_5g == 1)) { + if (userconfig_info.txpwr_loss.loss_value_2g4 < + userconfig_info.txpwr_loss.loss_value_5g) + power += + userconfig_info.txpwr_loss.loss_value_5g; + else + power += userconfig_info.txpwr_loss + .loss_value_2g4; + } + + } else if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + for (i = 0; i <= 11; i++) { + if (power < + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[i]) + power = userconfig_info.txpwr_lvl_v2 + .pwrlvl_11b_11ag_2g4[i]; + } + for (i = 0; i <= 9; i++) { + if (power < + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[i]) + power = userconfig_info.txpwr_lvl_v2 + .pwrlvl_11n_11ac_2g4[i]; + } + for (i = 0; i <= 11; i++) { + if (power < + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[i]) + power = userconfig_info.txpwr_lvl_v2 + .pwrlvl_11ax_2g4[i]; + } } - if(userconfig_info.txpwr_loss.loss_enable == 1) - power += userconfig_info.txpwr_loss.loss_value; - - printk("%s:txpwr_max:%d \r\n",__func__,power); + printk("%s:txpwr_max:%d \r\n", __func__, power); return power; } void set_txpwr_loss_ofst(s8_l value) { - int i=0; - - for (i = 0; i <= 11; i++){ - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[i] += value; + int i = 0; + if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[i] += + value; + } + for (i = 0; i <= 9; i++) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[i] += + value; + } + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[i] += + value; + } + for (i = 4; i <= 11; i++) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[i] += value; + } + for (i = 0; i <= 9; i++) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[i] += + value; + } + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[i] += value; + } + } else if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[i] += + value; + } + for (i = 0; i <= 9; i++) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[i] += + value; + } + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[i] += + value; + } + for (i = 0; i <= 7; i++) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[i] += value; + } + for (i = 0; i <= 9; i++) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[i] += + value; + } + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[i] += value; + } + } else if (g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[i] += + value; + } + for (i = 0; i <= 9; i++) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[i] += + value; + } + for (i = 0; i <= 11; i++) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[i] += + value; + } } - for (i = 0; i <= 9; i++){ - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[i] += value; - } - for (i = 0; i <= 11; i++){ - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[i] += value; - } - for (i = 4; i <= 11; i++){ - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[i] += value; - } - for (i = 0; i <= 9; i++){ - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[i] += value; - } - for (i = 0; i <= 11; i++){ - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[i] += value; - } - printk("%s:value:%d\r\n", __func__, value); } -#define MATCH_NODE(type, node, cfg_key) {cfg_key, offsetof(type, node)} +#define MATCH_NODE(type, node, cfg_key) \ + { \ + cfg_key, offsetof(type, node) \ + } struct parse_match_t { char keyname[64]; - int offset; + int offset; }; static const char *parse_key_prefix[] = { @@ -705,29 +1187,29 @@ static const char *parse_key_prefix[] = { }; static const struct parse_match_t parse_match_tab[] = { - MATCH_NODE(nvram_info_t, txpwr_idx.enable, "enable"), - MATCH_NODE(nvram_info_t, txpwr_idx.dsss, "dsss"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdmlowrate_2g4, "ofdmlowrate_2g4"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdm64qam_2g4, "ofdm64qam_2g4"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdm256qam_2g4, "ofdm256qam_2g4"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdm1024qam_2g4, "ofdm1024qam_2g4"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdmlowrate_5g, "ofdmlowrate_5g"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdm64qam_5g, "ofdm64qam_5g"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdm256qam_5g, "ofdm256qam_5g"), - MATCH_NODE(nvram_info_t, txpwr_idx.ofdm1024qam_5g, "ofdm1024qam_5g"), + MATCH_NODE(nvram_info_t, txpwr_idx.enable, "enable"), + MATCH_NODE(nvram_info_t, txpwr_idx.dsss, "dsss"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdmlowrate_2g4, "ofdmlowrate_2g4"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdm64qam_2g4, "ofdm64qam_2g4"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdm256qam_2g4, "ofdm256qam_2g4"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdm1024qam_2g4, "ofdm1024qam_2g4"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdmlowrate_5g, "ofdmlowrate_5g"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdm64qam_5g, "ofdm64qam_5g"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdm256qam_5g, "ofdm256qam_5g"), + MATCH_NODE(nvram_info_t, txpwr_idx.ofdm1024qam_5g, "ofdm1024qam_5g"), - MATCH_NODE(nvram_info_t, txpwr_ofst.enable, "ofst_enable"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_1_4, "ofst_chan_1_4"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_5_9, "ofst_chan_5_9"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_10_13, "ofst_chan_10_13"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_36_64, "ofst_chan_36_64"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_100_120, "ofst_chan_100_120"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_122_140, "ofst_chan_122_140"), - MATCH_NODE(nvram_info_t, txpwr_ofst.chan_142_165, "ofst_chan_142_165"), + MATCH_NODE(nvram_info_t, txpwr_ofst.enable, "ofst_enable"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_1_4, "ofst_chan_1_4"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_5_9, "ofst_chan_5_9"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_10_13, "ofst_chan_10_13"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_36_64, "ofst_chan_36_64"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_100_120, "ofst_chan_100_120"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_122_140, "ofst_chan_122_140"), + MATCH_NODE(nvram_info_t, txpwr_ofst.chan_142_165, "ofst_chan_142_165"), - MATCH_NODE(nvram_info_t, xtal_cap.enable, "xtal_enable"), - MATCH_NODE(nvram_info_t, xtal_cap.xtal_cap, "xtal_cap"), - MATCH_NODE(nvram_info_t, xtal_cap.xtal_cap_fine, "xtal_cap_fine"), + MATCH_NODE(nvram_info_t, xtal_cap.enable, "xtal_enable"), + MATCH_NODE(nvram_info_t, xtal_cap.xtal_cap, "xtal_cap"), + MATCH_NODE(nvram_info_t, xtal_cap.xtal_cap_fine, "xtal_cap_fine"), }; static int parse_key_val(const char *str, const char *key, char *val) @@ -788,569 +1270,743 @@ static int parse_key_val(const char *str, const char *key, char *val) p--; p++; - strncpy(val, dst, p -dst); + strncpy(val, dst, p - dst); val[p - dst] = 0; return 0; } +int rwnx_atoi2(char *value, int c_len) +{ + int len = 0; + int i = 0; + int result = 0; + int flag = 1; + + if (value[0] == '-') { + flag = -1; + value++; + } + len = c_len; + + for (i = 0; i < len; i++) { + result = result * 10; + if (value[i] >= 48 && value[i] <= 57) { + result += value[i] - 48; + } else { + result = 0; + break; + } + } + + return result * flag; +} int rwnx_atoi(char *value) { - int len = 0; - int i = 0; - int result = 0; - int flag = 1; + int len = 0; + int i = 0; + int result = 0; + int flag = 1; - if (value[0] == '-') { - flag = -1; - value++; - } - len = strlen(value); + if (value[0] == '-') { + flag = -1; + value++; + } + len = strlen(value); - for (i = 0;i < len ;i++) { - result = result * 10; - if (value[i] >= 48 && value[i] <= 57) { - result += value[i] - 48; - } else { - result = 0; - break; - } - } + for (i = 0; i < len; i++) { + result = result * 10; + if (value[i] >= 48 && value[i] <= 57) { + result += value[i] - 48; + } else { + result = 0; + break; + } + } - return result * flag; + return result * flag; } - void rwnx_plat_nvram_set_value(char *command, char *value) { - //TODO send command - AICWFDBG(LOGINFO, "%s:command=%s value=%s\n", __func__, command, value); - if (!strcmp(command, "enable")) { - userconfig_info.txpwr_lvl.enable = rwnx_atoi(value); - userconfig_info.txpwr_lvl_v2.enable = rwnx_atoi(value); - } else if (!strcmp(command, "dsss")) { - userconfig_info.txpwr_lvl.dsss = rwnx_atoi(value); - } else if (!strcmp(command, "ofdmlowrate_2g4")) { - userconfig_info.txpwr_lvl.ofdmlowrate_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm64qam_2g4")) { - userconfig_info.txpwr_lvl.ofdm64qam_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm256qam_2g4")) { - userconfig_info.txpwr_lvl.ofdm256qam_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm1024qam_2g4")) { - userconfig_info.txpwr_lvl.ofdm1024qam_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdmlowrate_5g")) { - userconfig_info.txpwr_lvl.ofdmlowrate_5g = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm64qam_5g")) { - userconfig_info.txpwr_lvl.ofdm64qam_5g = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm256qam_5g")) { - userconfig_info.txpwr_lvl.ofdm256qam_5g = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm1024qam_5g")) { - userconfig_info.txpwr_lvl.ofdm1024qam_5g = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_1m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_2m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_5m5_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_11m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_6m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_9m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_12m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_18m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_24m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_36m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_48m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[10] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_54m_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[11] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs0_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs1_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs2_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs3_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs4_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs5_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs6_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs7_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs8_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs9_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs0_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs1_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs2_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs3_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs4_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs5_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs6_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs7_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs8_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs9_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs10_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[10] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs11_2g4")) { - userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[11] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_enable")) { - userconfig_info.txpwr_ofst.enable = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_1_4")) { - userconfig_info.txpwr_ofst.chan_1_4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_5_9")) { - userconfig_info.txpwr_ofst.chan_5_9 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_10_13")) { - userconfig_info.txpwr_ofst.chan_10_13 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_36_64")) { - userconfig_info.txpwr_ofst.chan_36_64 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_100_120")) { - userconfig_info.txpwr_ofst.chan_100_120 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_122_140")) { - userconfig_info.txpwr_ofst.chan_122_140 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_142_165")) { - userconfig_info.txpwr_ofst.chan_142_165 = rwnx_atoi(value); - } else if (!strcmp(command, "xtal_enable")) { - userconfig_info.xtal_cap.enable = rwnx_atoi(value); - } else if (!strcmp(command, "xtal_cap")) { - userconfig_info.xtal_cap.xtal_cap = rwnx_atoi(value); - } else if (!strcmp(command, "xtal_cap_fine")) { - userconfig_info.xtal_cap.xtal_cap_fine = rwnx_atoi(value); - } else { - AICWFDBG(LOGERROR, "invalid cmd: %s\n", command); - } + //TODO send command + AICWFDBG(LOGINFO, "%s:command=%s value=%s\n", __func__, command, value); + if (!strcmp(command, "enable")) { + userconfig_info.txpwr_lvl.enable = rwnx_atoi(value); + userconfig_info.txpwr_lvl_v2.enable = rwnx_atoi(value); + } else if (!strcmp(command, "dsss")) { + userconfig_info.txpwr_lvl.dsss = rwnx_atoi(value); + } else if (!strcmp(command, "ofdmlowrate_2g4")) { + userconfig_info.txpwr_lvl.ofdmlowrate_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm64qam_2g4")) { + userconfig_info.txpwr_lvl.ofdm64qam_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm256qam_2g4")) { + userconfig_info.txpwr_lvl.ofdm256qam_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm1024qam_2g4")) { + userconfig_info.txpwr_lvl.ofdm1024qam_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdmlowrate_5g")) { + userconfig_info.txpwr_lvl.ofdmlowrate_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm64qam_5g")) { + userconfig_info.txpwr_lvl.ofdm64qam_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm256qam_5g")) { + userconfig_info.txpwr_lvl.ofdm256qam_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm1024qam_5g")) { + userconfig_info.txpwr_lvl.ofdm1024qam_5g = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_1m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_2m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_5m5_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_11m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_6m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_9m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_12m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_18m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_24m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_36m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_48m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_54m_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11b_11ag_2g4[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11n_11ac_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_2g4")) { + userconfig_info.txpwr_lvl_v2.pwrlvl_11ax_2g4[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_enable")) { + userconfig_info.txpwr_ofst.enable = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_1_4")) { + userconfig_info.txpwr_ofst.chan_1_4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_5_9")) { + userconfig_info.txpwr_ofst.chan_5_9 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_10_13")) { + userconfig_info.txpwr_ofst.chan_10_13 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_36_64")) { + userconfig_info.txpwr_ofst.chan_36_64 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_100_120")) { + userconfig_info.txpwr_ofst.chan_100_120 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_122_140")) { + userconfig_info.txpwr_ofst.chan_122_140 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_142_165")) { + userconfig_info.txpwr_ofst.chan_142_165 = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_enable")) { + userconfig_info.xtal_cap.enable = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap")) { + userconfig_info.xtal_cap.xtal_cap = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap_fine")) { + userconfig_info.xtal_cap.xtal_cap_fine = rwnx_atoi(value); + } else { + AICWFDBG(LOGERROR, "invalid cmd: %s\n", command); + } } void rwnx_plat_nvram_set_value_v3(char *command, char *value) { - //TODO send command - AICWFDBG(LOGINFO, "%s:command=%s value=%s\n", __func__, command, value); - if (!strcmp(command, "enable")) { - userconfig_info.txpwr_lvl.enable = rwnx_atoi(value); - userconfig_info.txpwr_lvl_v3.enable = rwnx_atoi(value); - } else if (!strcmp(command, "dsss")) { - userconfig_info.txpwr_lvl.dsss = rwnx_atoi(value); - } else if (!strcmp(command, "ofdmlowrate_2g4")) { - userconfig_info.txpwr_lvl.ofdmlowrate_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm64qam_2g4")) { - userconfig_info.txpwr_lvl.ofdm64qam_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm256qam_2g4")) { - userconfig_info.txpwr_lvl.ofdm256qam_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm1024qam_2g4")) { - userconfig_info.txpwr_lvl.ofdm1024qam_2g4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofdmlowrate_5g")) { - userconfig_info.txpwr_lvl.ofdmlowrate_5g = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm64qam_5g")) { - userconfig_info.txpwr_lvl.ofdm64qam_5g = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm256qam_5g")) { - userconfig_info.txpwr_lvl.ofdm256qam_5g = rwnx_atoi(value); - } else if (!strcmp(command, "ofdm1024qam_5g")) { - userconfig_info.txpwr_lvl.ofdm1024qam_5g = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_1m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_2m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_5m5_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_11m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_6m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_9m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_12m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_18m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_24m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_36m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_48m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[10] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11b_11ag_54m_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[11] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs0_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs1_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs2_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs3_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs4_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs5_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs6_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs7_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs8_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs9_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs0_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs1_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs2_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs3_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs4_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs5_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs6_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs7_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs8_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs9_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs10_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[10] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs11_2g4")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[11] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_1m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_2m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_5m5_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_11m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_6m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_9m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_12m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_18m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_24m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_36m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_48m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[10] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11a_54m_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[11] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs0_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs1_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs2_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs3_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs4_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs5_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs6_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs7_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs8_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11n_11ac_mcs9_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs0_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs1_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs2_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs3_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs4_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs5_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[5] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs6_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[6] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs7_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[7] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs8_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[8] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs9_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[9] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs10_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[10] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_11ax_mcs11_5g")) { - userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[11] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_enable")) { - userconfig_info.txpwr_lvl_adj.enable = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_2g4_chan_1_4")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_2g4_chan_5_9")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_2g4_chan_10_13")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_5g_chan_42")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[0] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_5g_chan_58")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[1] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_5g_chan_106")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[2] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_5g_chan_122")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[3] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_5g_chan_138")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[4] = rwnx_atoi(value); - } else if (!strcmp(command, "lvl_adj_5g_chan_155")) { - userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[5] = rwnx_atoi(value); - } else if (!strcmp(command, "loss_enable")) { - userconfig_info.txpwr_loss.loss_enable = rwnx_atoi(value); - } else if (!strcmp(command, "loss_value")) { - userconfig_info.txpwr_loss.loss_value = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_enable")) { - userconfig_info.txpwr_ofst.enable = rwnx_atoi(value); + //TODO send command + AICWFDBG(LOGINFO, "%s:command=%s value=%s\n", __func__, command, value); + if (!strcmp(command, "enable")) { + userconfig_info.txpwr_lvl.enable = rwnx_atoi(value); + userconfig_info.txpwr_lvl_v3.enable = rwnx_atoi(value); + } else if (!strcmp(command, "dsss")) { + userconfig_info.txpwr_lvl.dsss = rwnx_atoi(value); + } else if (!strcmp(command, "ofdmlowrate_2g4")) { + userconfig_info.txpwr_lvl.ofdmlowrate_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm64qam_2g4")) { + userconfig_info.txpwr_lvl.ofdm64qam_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm256qam_2g4")) { + userconfig_info.txpwr_lvl.ofdm256qam_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm1024qam_2g4")) { + userconfig_info.txpwr_lvl.ofdm1024qam_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofdmlowrate_5g")) { + userconfig_info.txpwr_lvl.ofdmlowrate_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm64qam_5g")) { + userconfig_info.txpwr_lvl.ofdm64qam_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm256qam_5g")) { + userconfig_info.txpwr_lvl.ofdm256qam_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofdm1024qam_5g")) { + userconfig_info.txpwr_lvl.ofdm1024qam_5g = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_1m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_2m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_5m5_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_11m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_6m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_9m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_12m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_18m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_24m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_36m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_48m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_54m_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11b_11ag_2g4[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_2g4")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_2g4[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_1m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_2m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_5m5_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_11m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_6m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_9m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_12m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_18m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_24m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_36m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_48m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_54m_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11a_5g[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11n_11ac_5g[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_5g")) { + userconfig_info.txpwr_lvl_v3.pwrlvl_11ax_5g[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_enable")) { + userconfig_info.txpwr_lvl_adj.enable = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_1_4")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_5_9")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_10_13")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_42")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_58")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_106")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_122")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_138")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_155")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_2g4")) { + userconfig_info.txpwr_loss.loss_enable_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_2g4")) { + userconfig_info.txpwr_loss.loss_value_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_5g")) { + userconfig_info.txpwr_loss.loss_enable_5g = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_5g")) { + userconfig_info.txpwr_loss.loss_value_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_enable")) { + userconfig_info.txpwr_ofst.enable = rwnx_atoi(value); userconfig_info.txpwr_ofst2x.enable = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_1_4")) { - userconfig_info.txpwr_ofst.chan_1_4 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_5_9")) { - userconfig_info.txpwr_ofst.chan_5_9 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_10_13")) { - userconfig_info.txpwr_ofst.chan_10_13 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_36_64")) { - userconfig_info.txpwr_ofst.chan_36_64 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_100_120")) { - userconfig_info.txpwr_ofst.chan_100_120 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_122_140")) { - userconfig_info.txpwr_ofst.chan_122_140 = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_chan_142_165")) { - userconfig_info.txpwr_ofst.chan_142_165 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_1_4")) { + userconfig_info.txpwr_ofst.chan_1_4 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_5_9")) { + userconfig_info.txpwr_ofst.chan_5_9 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_10_13")) { + userconfig_info.txpwr_ofst.chan_10_13 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_36_64")) { + userconfig_info.txpwr_ofst.chan_36_64 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_100_120")) { + userconfig_info.txpwr_ofst.chan_100_120 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_122_140")) { + userconfig_info.txpwr_ofst.chan_122_140 = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_chan_142_165")) { + userconfig_info.txpwr_ofst.chan_142_165 = rwnx_atoi(value); } else if (!strcmp(command, "ofst_2g4_11b_chan_1_4")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[0][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_11b_chan_5_9")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[0][1] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_11b_chan_10_13")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[0][2] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_ofdm_highrate_chan_1_4")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[1][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_ofdm_highrate_chan_5_9")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[1][1] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_ofdm_highrate_chan_10_13")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[1][2] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_1_4")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_5_9")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][1] = rwnx_atoi(value); + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[0][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_11b_chan_5_9")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[0][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_11b_chan_10_13")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[0][2] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ofdm_highrate_chan_1_4")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[1][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ofdm_highrate_chan_5_9")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[1][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ofdm_highrate_chan_10_13")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[1][2] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_1_4")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_5_9")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][1] = + rwnx_atoi(value); } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_10_13")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_42")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_58")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][1] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_106")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][2] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_122")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][3] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_138")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][4] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_155")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][5] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_42")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_58")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][1] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_106")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][2] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_122")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][3] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_138")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][4] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_155")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][5] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_42")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][0] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_58")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][1] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_106")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][2] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_122")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][3] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_138")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][4] = rwnx_atoi(value); - } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_155")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][5] = rwnx_atoi(value); - } else if (!strcmp(command, "xtal_enable")) { - userconfig_info.xtal_cap.enable = rwnx_atoi(value); - } else if (!strcmp(command, "xtal_cap")) { - userconfig_info.xtal_cap.xtal_cap = rwnx_atoi(value); - } else if (!strcmp(command, "xtal_cap_fine")) { - userconfig_info.xtal_cap.xtal_cap_fine = rwnx_atoi(value); - } else { - AICWFDBG(LOGERROR, "invalid cmd: %s\n", command); - } + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][2] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_42")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_58")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_106")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][2] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_122")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][3] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_138")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][4] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_155")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][5] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_42")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_58")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_106")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][2] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_122")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][3] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_138")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][4] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_highrate_chan_155")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[1][5] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_42")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_58")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_106")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][2] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_122")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][3] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_138")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][4] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ofdm_midrate_chan_155")) { + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[2][5] = + rwnx_atoi(value); + } else if (!strcmp(command, "xtal_enable")) { + userconfig_info.xtal_cap.enable = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap")) { + userconfig_info.xtal_cap.xtal_cap = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap_fine")) { + userconfig_info.xtal_cap.xtal_cap_fine = rwnx_atoi(value); + } else { + AICWFDBG(LOGERROR, "invalid cmd: %s\n", command); + } } void rwnx_plat_userconfig_parsing2(char *buffer, int size) { - int i = 0; - int parse_state = 0; - char command[30]; - char value[100]; - int char_counter = 0; + int i = 0; + int parse_state = 0; + char command[30]; + char value[100]; + int char_counter = 0; - memset(command, 0, 30); - memset(value, 0, 100); + memset(command, 0, 30); + memset(value, 0, 100); - for (i = 0; i < size; i++) { - //Send command or print nvram log when char is \r or \n - if (buffer[i] == 0x0a || buffer[i] == 0x0d) { - if (command[0] != 0 && value[0] != 0) { - if (parse_state == PRINT) { - AICWFDBG(LOGINFO, "%s:%s\r\n", __func__, value); - } else if (parse_state == GET_VALUE) { - rwnx_plat_nvram_set_value(command, value); - } - } - //Reset command value and char_counter - memset(command, 0, 30); - memset(value, 0, 100); - char_counter = 0; - parse_state = INIT; - continue; - } + for (i = 0; i < size; i++) { + //Send command or print nvram log when char is \r or \n + if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + if (command[0] != 0 && value[0] != 0) { + if (parse_state == PRINT) { + AICWFDBG(LOGINFO, "%s:%s\r\n", __func__, + value); + } else if (parse_state == GET_VALUE) { + rwnx_plat_nvram_set_value(command, + value); + } + } + //Reset command value and char_counter + memset(command, 0, 30); + memset(value, 0, 100); + char_counter = 0; + parse_state = INIT; + continue; + } - //Switch parser state - if (parse_state == INIT) { - if (buffer[i] == '#') { - parse_state = PRINT; - continue; - } else if (buffer[i] == 0x0a || buffer[i] == 0x0d) { - parse_state = INIT; - continue; - } else { - parse_state = CMD; - } - } + //Switch parser state + if (parse_state == INIT) { + if (buffer[i] == '#') { + parse_state = PRINT; + continue; + } else if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + parse_state = INIT; + continue; + } else { + parse_state = CMD; + } + } - //Fill data to command and value - if (parse_state == PRINT) { - command[0] = 0x01; - value[char_counter] = buffer[i]; - char_counter++; - } else if (parse_state == CMD) { - if (command[0] != 0 && buffer[i] == '=') { - parse_state = GET_VALUE; - char_counter = 0; - continue; - } - command[char_counter] = buffer[i]; - char_counter++; - } else if (parse_state == GET_VALUE) { - value[char_counter] = buffer[i]; - char_counter++; - } - } + //Fill data to command and value + if (parse_state == PRINT) { + command[0] = 0x01; + value[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == CMD) { + if (command[0] != 0 && buffer[i] == '=') { + parse_state = GET_VALUE; + char_counter = 0; + continue; + } + command[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == GET_VALUE) { + value[char_counter] = buffer[i]; + char_counter++; + } + } } void rwnx_plat_userconfig_parsing3(char *buffer, int size) { - int i = 0; - int parse_state = 0; - char command[64]; - char value[100]; - int char_counter = 0; + int i = 0; + int parse_state = 0; + char command[64]; + char value[100]; + int char_counter = 0; - memset(command, 0, 64); - memset(value, 0, 100); + memset(command, 0, 64); + memset(value, 0, 100); - for (i = 0; i < size; i++) { - //Send command or print nvram log when char is \r or \n - if (buffer[i] == 0x0a || buffer[i] == 0x0d) { - if (command[0] != 0 && value[0] != 0) { - if (parse_state == PRINT) { - AICWFDBG(LOGINFO, "%s:%s\r\n", __func__, value); - } else if (parse_state == GET_VALUE) { - rwnx_plat_nvram_set_value_v3(command, value); - } - } - //Reset command value and char_counter - memset(command, 0, 64); - memset(value, 0, 100); - char_counter = 0; - parse_state = INIT; - continue; - } + for (i = 0; i < size; i++) { + //Send command or print nvram log when char is \r or \n + if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + if (command[0] != 0 && value[0] != 0) { + if (parse_state == PRINT) { + AICWFDBG(LOGINFO, "%s:%s\r\n", __func__, + value); + } else if (parse_state == GET_VALUE) { + rwnx_plat_nvram_set_value_v3(command, + value); + } + } + //Reset command value and char_counter + memset(command, 0, 64); + memset(value, 0, 100); + char_counter = 0; + parse_state = INIT; + continue; + } - //Switch parser state - if (parse_state == INIT) { - if (buffer[i] == '#') { - parse_state = PRINT; - continue; - } else if (buffer[i] == 0x0a || buffer[i] == 0x0d) { - parse_state = INIT; - continue; - } else { - parse_state = CMD; - } - } + //Switch parser state + if (parse_state == INIT) { + if (buffer[i] == '#') { + parse_state = PRINT; + continue; + } else if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + parse_state = INIT; + continue; + } else { + parse_state = CMD; + } + } - //Fill data to command and value - if (parse_state == PRINT) { - command[0] = 0x01; - value[char_counter] = buffer[i]; - char_counter++; - } else if (parse_state == CMD) { - if (command[0] != 0 && buffer[i] == '=') { - parse_state = GET_VALUE; - char_counter = 0; - continue; - } - command[char_counter] = buffer[i]; - char_counter++; - } else if (parse_state == GET_VALUE) { - if(buffer[i] != 0x2D && (buffer[i] < 0x30 || buffer[i] > 0x39)) { - continue; - } - value[char_counter] = buffer[i]; - char_counter++; - } - } + //Fill data to command and value + if (parse_state == PRINT) { + command[0] = 0x01; + value[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == CMD) { + if (command[0] != 0 && buffer[i] == '=') { + parse_state = GET_VALUE; + char_counter = 0; + continue; + } + command[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == GET_VALUE) { + if (buffer[i] != 0x2D && + (buffer[i] < 0x30 || buffer[i] > 0x39)) { + continue; + } + value[char_counter] = buffer[i]; + char_counter++; + } + } } -void rwnx_plat_userconfig_parsing(struct rwnx_hw *rwnx_hw, char *buffer, int size) +void rwnx_plat_userconfig_parsing(struct rwnx_hw *rwnx_hw, char *buffer, + int size) { char conf[100], keyname[64]; char *line; - char *data; - int i = 0, err, len = 0; + char *data; + int i = 0, err, len = 0; long val; - if (size <= 0) { - pr_err("Config buffer size %d error\n", size); - return; - } + if (size <= 0) { + pr_err("Config buffer size %d error\n", size); + return; + } - printk("%s rwnx_hw->vendor_info:0x%02X \r\n", __func__, rwnx_hw->vendor_info); + printk("%s rwnx_hw->vendor_info:0x%02X \r\n", __func__, + rwnx_hw->vendor_info); if (rwnx_hw->vendor_info == 0x00 || - (rwnx_hw->vendor_info > (sizeof(parse_key_prefix) / sizeof(parse_key_prefix[0]) - 1))) { + (rwnx_hw->vendor_info > + (sizeof(parse_key_prefix) / sizeof(parse_key_prefix[0]) - 1))) { printk("Unsuppor vendor info config\n"); printk("Using module0 config\n"); rwnx_hw->vendor_info = 0x01; @@ -1358,165 +2014,560 @@ void rwnx_plat_userconfig_parsing(struct rwnx_hw *rwnx_hw, char *buffer, int siz } data = vmalloc(size + 1); - if (!data) { - pr_err("vmalloc fail\n"); - return; - } + if (!data) { + pr_err("vmalloc fail\n"); + return; + } - memcpy(data, buffer, size); - buffer = data; + memcpy(data, buffer, size); + buffer = data; while (1) { line = buffer; - if (*line == 0) - break; + if (*line == 0) + break; - while (*buffer != '\r' && *buffer != '\n' && *buffer != 0 && len++ < size) - buffer++; + while (*buffer != '\r' && *buffer != '\n' && *buffer != 0 && + len++ < size) + buffer++; - while ((*buffer == '\r' || *buffer == '\n') && len++ < size) - *buffer++ = 0; + while ((*buffer == '\r' || *buffer == '\n') && len++ < size) + *buffer++ = 0; - if (len >= size) - *buffer = 0; + if (len >= size) + *buffer = 0; // store value to data struct - for (i = 0; i < sizeof(parse_match_tab) / sizeof(parse_match_tab[0]); i++) { - sprintf(&keyname[0], "%s%s", parse_key_prefix[rwnx_hw->vendor_info], parse_match_tab[i].keyname); + for (i = 0; + i < sizeof(parse_match_tab) / sizeof(parse_match_tab[0]); + i++) { + sprintf(&keyname[0], "%s%s", + parse_key_prefix[rwnx_hw->vendor_info], + parse_match_tab[i].keyname); if (parse_key_val(line, keyname, conf) == 0) { err = kstrtol(conf, 0, &val); - *(unsigned long *)((unsigned long)&nvram_info + parse_match_tab[i].offset) = val; - printk("%s, %s = %ld\n", __func__, parse_match_tab[i].keyname, val); + *(unsigned long *)((unsigned long)&nvram_info + + parse_match_tab[i].offset) = + val; + printk("%s, %s = %ld\n", __func__, + parse_match_tab[i].keyname, val); break; } } - } vfree(data); } -static int aic_load_firmware(u32 ** fw_buf, char *fw_path,const char *name, struct device *device) +void rwnx_plat_nvram_set_value_8800d80x2(char *command, char *value) +{ + //TODO send command + AICWFDBG(LOGINFO, "%s:command=%s value=%s\n", __func__, command, value); + if (!strcmp(command, "enable")) { + userconfig_info.txpwr_lvl_v4.enable = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_1m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_2m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_5m5_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_11m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_6m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_9m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_12m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_18m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_24m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_36m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_48m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_54m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_6m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_9m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_12m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_18m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_24m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_36m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_48m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_54m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[6] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[7] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[8] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[9] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[10] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[11] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_enable")) { + userconfig_info.txpwr_lvl_adj.enable = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_1_4")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_5_9")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_10_13")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_42")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[0] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_58")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[1] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_106")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[2] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_122")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[3] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_138")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[4] = + rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_155")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[5] = + rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_2g4")) { + userconfig_info.txpwr_loss.loss_enable_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_2g4")) { + userconfig_info.txpwr_loss.loss_value_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_5g")) { + userconfig_info.txpwr_loss.loss_enable_5g = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_5g")) { + userconfig_info.txpwr_loss.loss_value_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_enable")) { + userconfig_info.txpwr_ofst2x_v2.enable = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_11b_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[0][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_11b_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[1][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_11b_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[2][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_ofdm_highrate_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[0][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_ofdm_highrate_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[1][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_ofdm_highrate_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[2][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_11b_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[0][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_11b_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[1][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_11b_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[2][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_ofdm_highrate_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[0][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_ofdm_highrate_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[1][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_ofdm_highrate_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[2][1] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_42")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[0][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_58")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[1][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_106")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[2][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_122")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[3][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_138")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[4][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_155")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[5][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_42")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[0][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_58")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[1][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_106")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[2][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_122")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[3][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_138")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[4][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_155")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[5][0] = + rwnx_atoi(value); + } else if (!strcmp(command, "xtal_enable")) { + userconfig_info.xtal_cap.enable = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap")) { + userconfig_info.xtal_cap.xtal_cap = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap_fine")) { + userconfig_info.xtal_cap.xtal_cap_fine = rwnx_atoi(value); + } else { + AICWFDBG(LOGERROR, "invalid cmd: %s\n", command); + } +} + +void rwnx_plat_userconfig_parsing_8800d80x2(char *buffer, int size) +{ + int i = 0; + int parse_state = 0; + char command[100]; + char value[100]; + int char_counter = 0; + + memset(command, 0, 64); + memset(value, 0, 100); + + for (i = 0; i < size; i++) { + //Send command or print nvram log when char is \r or \n + if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + if (command[0] != 0 && value[0] != 0) { + if (parse_state == PRINT) { + AICWFDBG(LOGINFO, "%s:%s\r\n", __func__, + value); + } else if (parse_state == GET_VALUE) { + rwnx_plat_nvram_set_value_8800d80x2( + command, value); + } + } + //Reset command value and char_counter + memset(command, 0, 64); + memset(value, 0, 100); + char_counter = 0; + parse_state = INIT; + continue; + } + + //Switch parser state + if (parse_state == INIT) { + if (buffer[i] == '#') { + parse_state = PRINT; + continue; + } else if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + parse_state = INIT; + continue; + } else { + parse_state = CMD; + } + } + + //Fill data to command and value + if (parse_state == PRINT) { + command[0] = 0x01; + value[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == CMD) { + if (command[0] != 0 && buffer[i] == '=') { + parse_state = GET_VALUE; + char_counter = 0; + continue; + } + command[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == GET_VALUE) { + if (buffer[i] != 0x2D && + (buffer[i] < 0x30 || buffer[i] > 0x39)) { + continue; + } + value[char_counter] = buffer[i]; + char_counter++; + } + } +} + +static int aic_load_firmware(u32 **fw_buf, char *fw_path, const char *name, + struct device *device) { #ifdef CONFIG_USE_FW_REQUEST const struct firmware *fw = NULL; u32 *dst = NULL; - void *buffer=NULL; + void *buffer = NULL; MD5_CTX md5; unsigned char decrypt[16]; int size = 0; int ret = 0; - - AICWFDBG(LOGINFO, "%s: request firmware = %s \n", __func__ ,name); - + + AICWFDBG(LOGINFO, "%s: request firmware = %s \n", __func__, name); + ret = request_firmware(&fw, name, NULL); - + if (ret < 0) { AICWFDBG(LOGERROR, "Load %s fail\n", name); release_firmware(fw); return -1; } - + size = fw->size; dst = (u32 *)fw->data; - + if (size <= 0) { AICWFDBG(LOGERROR, "wrong size of firmware file\n"); release_firmware(fw); return -1; } - + buffer = vmalloc(size); memset(buffer, 0, size); memcpy(buffer, dst, size); - + *fw_buf = buffer; - + MD5Init(&md5); MD5Update(&md5, (unsigned char *)buffer, size); MD5Final(&md5, decrypt); AICWFDBG(LOGINFO, MD5PINRT, MD5(decrypt)); - + release_firmware(fw); - + return size; #else - void *buffer=NULL; - char *path=NULL; - struct file *fp=NULL; - int size = 0, len=0;//, i=0; - ssize_t rdlen=0; - //u32 *src=NULL, *dst = NULL; + void *buffer = NULL; + char *path = NULL; + struct file *fp = NULL; + int size = 0, len = 0; //, i=0; + ssize_t rdlen = 0; + //u32 *src=NULL, *dst = NULL; - /* get the firmware path */ - path = __getname(); - if (!path){ - *fw_buf=NULL; - return -1; - } - - len = sprintf(path, "%s/%s",fw_path, name); - - AICWFDBG(LOGINFO, "%s :firmware path = %s \n", __func__ ,path); - - - /* open the firmware file */ - fp=filp_open(path, O_RDONLY, 0); - if(IS_ERR(fp) || (!fp)){ - printk("%s: %s file failed to open\n", __func__, name); - if(IS_ERR(fp)){ - printk("is_Err\n"); - } - if((!fp)){ - printk("null\n"); - } - *fw_buf=NULL; - __putname(path); - fp=NULL; + /* get the firmware path */ + path = __getname(); + if (!path) { + *fw_buf = NULL; return -1; - } - - size = i_size_read(file_inode(fp)); - if(size<=0){ - printk("%s: %s file size invalid %d\n", __func__, name, size); - *fw_buf=NULL; - __putname(path); - filp_close(fp,NULL); - fp=NULL; - return -1; } - /* start to read from firmware file */ - buffer = vmalloc(size); - memset(buffer, 0, size); - if(!buffer){ - *fw_buf=NULL; - __putname(path); - filp_close(fp,NULL); - fp=NULL; - return -1; - } + len = sprintf(path, "%s/%s", fw_path, name); + AICWFDBG(LOGINFO, "%s :firmware path = %s \n", __func__, path); - #if LINUX_VERSION_CODE > KERNEL_VERSION(4, 13, 16) - rdlen = kernel_read(fp, buffer, size, &fp->f_pos); - #else - rdlen = kernel_read(fp, fp->f_pos, buffer, size); - #endif + /* open the firmware file */ + fp = filp_open(path, O_RDONLY, 0); + if (IS_ERR(fp) || (!fp)) { + printk("%s: %s file failed to open\n", __func__, name); + if (IS_ERR(fp)) { + printk("is_Err\n"); + } + if ((!fp)) { + printk("null\n"); + } + *fw_buf = NULL; + __putname(path); + fp = NULL; + return -1; + } - if(size != rdlen){ - printk("%s: %s file rdlen invalid %d %d\n", __func__, name, (int)rdlen, size); - *fw_buf=NULL; - __putname(path); - filp_close(fp,NULL); - fp=NULL; - vfree(buffer); - buffer=NULL; - return -1; - } - if(rdlen > 0){ - fp->f_pos += rdlen; - //printk("f_pos=%d\n", (int)fp->f_pos); - } + size = i_size_read(file_inode(fp)); + if (size <= 0) { + printk("%s: %s file size invalid %d\n", __func__, name, size); + *fw_buf = NULL; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return -1; + } + + /* start to read from firmware file */ + buffer = vmalloc(size); + memset(buffer, 0, size); + if (!buffer) { + *fw_buf = NULL; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return -1; + } + +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 13, 16) + rdlen = kernel_read(fp, buffer, size, &fp->f_pos); +#else + rdlen = kernel_read(fp, fp->f_pos, buffer, size); +#endif + + if (size != rdlen) { + printk("%s: %s file rdlen invalid %d %d\n", __func__, name, + (int)rdlen, size); + *fw_buf = NULL; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + vfree(buffer); + buffer = NULL; + return -1; + } + if (rdlen > 0) { + fp->f_pos += rdlen; + //printk("f_pos=%d\n", (int)fp->f_pos); + } #if 0 /*start to transform the data format*/ @@ -1540,51 +2591,49 @@ static int aic_load_firmware(u32 ** fw_buf, char *fw_path,const char *name, stru } #endif - __putname(path); - filp_close(fp,NULL); - fp=NULL; - //vfree(buffer); - //buffer=NULL; - *fw_buf = (u32 *)buffer; + __putname(path); + filp_close(fp, NULL); + fp = NULL; + //vfree(buffer); + //buffer=NULL; + *fw_buf = (u32 *)buffer; - return size; + return size; #endif } +#define FW_USERCONFIG_NAME "aic_userconfig.txt" - -#define FW_USERCONFIG_NAME "aic_userconfig.txt" - -int rwnx_plat_userconfig_upload_android(struct rwnx_hw *rwnx_hw, char *fw_path, char *filename) +int rwnx_plat_userconfig_upload_android(struct rwnx_hw *rwnx_hw, char *fw_path, + char *filename) { - int size; - u32 *dst=NULL; + int size; + u32 *dst = NULL; printk("userconfig file path:%s \r\n", filename); - /* load aic firmware */ - size = aic_load_firmware(&dst, fw_path ,filename, NULL); - if(size <= 0){ - printk("wrong size of firmware file\n"); - vfree(dst); - dst = NULL; - return 0; - } + /* load aic firmware */ + size = aic_load_firmware(&dst, fw_path, filename, NULL); + if (size <= 0) { + printk("wrong size of firmware file\n"); + vfree(dst); + dst = NULL; + return 0; + } /* Copy the file on the Embedded side */ - printk("### Upload %s userconfig, size=%d\n", filename, size); + printk("### Upload %s userconfig, size=%d\n", filename, size); rwnx_plat_userconfig_parsing(rwnx_hw, (char *)dst, size); if (dst) { - vfree(dst); - dst = NULL; - } + vfree(dst); + dst = NULL; + } printk("userconfig download complete\n\n"); return 0; - } /** @@ -1592,7 +2641,7 @@ int rwnx_plat_userconfig_upload_android(struct rwnx_hw *rwnx_hw, char *fw_path, * * @rwnx_hw: Main driver data */ - #if 0 +#if 0 static int rwnx_plat_fmac_load(struct rwnx_hw *rwnx_hw, char *fw_path) { int ret = 0; @@ -1601,7 +2650,7 @@ static int rwnx_plat_fmac_load(struct rwnx_hw *rwnx_hw, char *fw_path) ret = rwnx_plat_userconfig_upload_android(rwnx_hw, fw_path, FW_USERCONFIG_NAME); return ret; } - #endif +#endif /** * rwnx_platform_reset() - Reset the platform @@ -1618,19 +2667,20 @@ static int rwnx_platform_reset(struct rwnx_plat *rwnx_plat) /* the doc states that SOFT implies FPGA_B_RESET * adding FPGA_B_RESET is clearer */ - RWNX_REG_WRITE(SOFT_RESET | FPGA_B_RESET, rwnx_plat, - RWNX_ADDR_SYSTEM, SYSCTRL_MISC_CNTL_ADDR); + RWNX_REG_WRITE(SOFT_RESET | FPGA_B_RESET, rwnx_plat, RWNX_ADDR_SYSTEM, + SYSCTRL_MISC_CNTL_ADDR); msleep(100); - regval = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, SYSCTRL_MISC_CNTL_ADDR); + regval = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, + SYSCTRL_MISC_CNTL_ADDR); if (regval & SOFT_RESET) { dev_err(rwnx_platform_get_dev(rwnx_plat), "reset: failed\n"); return -EIO; } - RWNX_REG_WRITE(regval & ~FPGA_B_RESET, rwnx_plat, - RWNX_ADDR_SYSTEM, SYSCTRL_MISC_CNTL_ADDR); + RWNX_REG_WRITE(regval & ~FPGA_B_RESET, rwnx_plat, RWNX_ADDR_SYSTEM, + SYSCTRL_MISC_CNTL_ADDR); msleep(100); return 0; } @@ -1661,8 +2711,8 @@ static void *rwnx_term_save_config(struct rwnx_plat *rwnx_plat) reg_value = res; for (i = 0; i < size; i++) { - *reg_value++ = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, - *reg_list++); + *reg_value++ = + RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, *reg_list++); } return res; @@ -1701,14 +2751,14 @@ static void rwnx_term_restore_config(struct rwnx_plat *rwnx_plat, static int rwnx_check_fw_compatibility(struct rwnx_hw *rwnx_hw) { struct ipc_shared_env_tag *shared = rwnx_hw->ipc_env->shared; - #ifdef CONFIG_RWNX_FULLMAC +#ifdef CONFIG_RWNX_FULLMAC struct wiphy *wiphy = rwnx_hw->wiphy; - #endif //CONFIG_RWNX_FULLMAC - #ifdef CONFIG_RWNX_OLD_IPC +#endif //CONFIG_RWNX_FULLMAC +#ifdef CONFIG_RWNX_OLD_IPC int ipc_shared_version = 10; - #else //CONFIG_RWNX_OLD_IPC +#else //CONFIG_RWNX_OLD_IPC int ipc_shared_version = 11; - #endif //CONFIG_RWNX_OLD_IPC +#endif //CONFIG_RWNX_OLD_IPC int res = 0; if (shared->comp_info.ipc_shared_version != ipc_shared_version) { @@ -1731,14 +2781,14 @@ static int rwnx_check_fw_compatibility(struct rwnx_hw *rwnx_hw) res = -1; } - #ifdef CONFIG_RWNX_FULLMAC +#ifdef CONFIG_RWNX_FULLMAC if (shared->comp_info.rxdesc_cnt != IPC_RXDESC_CNT) { wiphy_err(wiphy, "Different number of shared descriptors available for Data RX handling "\ "between driver and FW (%d != %d)\n", IPC_RXDESC_CNT, shared->comp_info.rxdesc_cnt); res = -1; } - #endif /* CONFIG_RWNX_FULLMAC */ +#endif /* CONFIG_RWNX_FULLMAC */ if (shared->comp_info.rxbuf_cnt != IPC_RXBUF_CNT) { wiphy_err(wiphy, "Different number of host buffers available for Data Rx handling "\ @@ -1785,18 +2835,18 @@ static int rwnx_check_fw_compatibility(struct rwnx_hw *rwnx_hw) res = -1; } - #if NX_TXQ_CNT == 5 +#if NX_TXQ_CNT == 5 if (shared->comp_info.bcn_txq != NX_TXDESC_CNT4) { wiphy_err(wiphy, "Driver and FW have different sizes of BCN TX queue (%d != %d)\n", NX_TXDESC_CNT4, shared->comp_info.bcn_txq); res = -1; } - #else +#else if (shared->comp_info.bcn_txq > 0) { wiphy_err(wiphy, "BCMC enabled in firmware but disabled in driver\n"); res = -1; } - #endif /* NX_TXQ_CNT == 5 */ +#endif /* NX_TXQ_CNT == 5 */ if (shared->comp_info.ipc_shared_size != sizeof(ipc_shared_env)) { wiphy_err(wiphy, "Different sizes of IPC shared between driver and FW (%zd != %d)\n", @@ -1814,192 +2864,994 @@ static int rwnx_check_fw_compatibility(struct rwnx_hw *rwnx_hw) #endif #endif /* !CONFIG_RWNX_FHOST */ - void get_userconfig_txpwr_lvl_in_fdrv(txpwr_lvl_conf_t *txpwr_lvl) { - txpwr_lvl->enable = userconfig_info.txpwr_lvl.enable; - txpwr_lvl->dsss = userconfig_info.txpwr_lvl.dsss; - txpwr_lvl->ofdmlowrate_2g4 = userconfig_info.txpwr_lvl.ofdmlowrate_2g4; - txpwr_lvl->ofdm64qam_2g4 = userconfig_info.txpwr_lvl.ofdm64qam_2g4; - txpwr_lvl->ofdm256qam_2g4 = userconfig_info.txpwr_lvl.ofdm256qam_2g4; - txpwr_lvl->ofdm1024qam_2g4 = userconfig_info.txpwr_lvl.ofdm1024qam_2g4; - txpwr_lvl->ofdmlowrate_5g = userconfig_info.txpwr_lvl.ofdmlowrate_5g; - txpwr_lvl->ofdm64qam_5g = userconfig_info.txpwr_lvl.ofdm64qam_5g; - txpwr_lvl->ofdm256qam_5g = userconfig_info.txpwr_lvl.ofdm256qam_5g; - txpwr_lvl->ofdm1024qam_5g = userconfig_info.txpwr_lvl.ofdm1024qam_5g; + txpwr_lvl->enable = userconfig_info.txpwr_lvl.enable; + txpwr_lvl->dsss = userconfig_info.txpwr_lvl.dsss; + txpwr_lvl->ofdmlowrate_2g4 = userconfig_info.txpwr_lvl.ofdmlowrate_2g4; + txpwr_lvl->ofdm64qam_2g4 = userconfig_info.txpwr_lvl.ofdm64qam_2g4; + txpwr_lvl->ofdm256qam_2g4 = userconfig_info.txpwr_lvl.ofdm256qam_2g4; + txpwr_lvl->ofdm1024qam_2g4 = userconfig_info.txpwr_lvl.ofdm1024qam_2g4; + txpwr_lvl->ofdmlowrate_5g = userconfig_info.txpwr_lvl.ofdmlowrate_5g; + txpwr_lvl->ofdm64qam_5g = userconfig_info.txpwr_lvl.ofdm64qam_5g; + txpwr_lvl->ofdm256qam_5g = userconfig_info.txpwr_lvl.ofdm256qam_5g; + txpwr_lvl->ofdm1024qam_5g = userconfig_info.txpwr_lvl.ofdm1024qam_5g; - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl->enable); - AICWFDBG(LOGINFO, "%s:dsss:%d\r\n", __func__, txpwr_lvl->dsss); - AICWFDBG(LOGINFO, "%s:ofdmlowrate_2g4:%d\r\n", __func__, txpwr_lvl->ofdmlowrate_2g4); - AICWFDBG(LOGINFO, "%s:ofdm64qam_2g4:%d\r\n", __func__, txpwr_lvl->ofdm64qam_2g4); - AICWFDBG(LOGINFO, "%s:ofdm256qam_2g4:%d\r\n", __func__, txpwr_lvl->ofdm256qam_2g4); - AICWFDBG(LOGINFO, "%s:ofdm1024qam_2g4:%d\r\n", __func__, txpwr_lvl->ofdm1024qam_2g4); - AICWFDBG(LOGINFO, "%s:ofdmlowrate_5g:%d\r\n", __func__, txpwr_lvl->ofdmlowrate_5g); - AICWFDBG(LOGINFO, "%s:ofdm64qam_5g:%d\r\n", __func__, txpwr_lvl->ofdm64qam_5g); - AICWFDBG(LOGINFO, "%s:ofdm256qam_5g:%d\r\n", __func__, txpwr_lvl->ofdm256qam_5g); - AICWFDBG(LOGINFO, "%s:ofdm1024qam_5g:%d\r\n", __func__, txpwr_lvl->ofdm1024qam_5g); + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl->enable); + AICWFDBG(LOGINFO, "%s:dsss:%d\r\n", __func__, txpwr_lvl->dsss); + AICWFDBG(LOGINFO, "%s:ofdmlowrate_2g4:%d\r\n", __func__, + txpwr_lvl->ofdmlowrate_2g4); + AICWFDBG(LOGINFO, "%s:ofdm64qam_2g4:%d\r\n", __func__, + txpwr_lvl->ofdm64qam_2g4); + AICWFDBG(LOGINFO, "%s:ofdm256qam_2g4:%d\r\n", __func__, + txpwr_lvl->ofdm256qam_2g4); + AICWFDBG(LOGINFO, "%s:ofdm1024qam_2g4:%d\r\n", __func__, + txpwr_lvl->ofdm1024qam_2g4); + AICWFDBG(LOGINFO, "%s:ofdmlowrate_5g:%d\r\n", __func__, + txpwr_lvl->ofdmlowrate_5g); + AICWFDBG(LOGINFO, "%s:ofdm64qam_5g:%d\r\n", __func__, + txpwr_lvl->ofdm64qam_5g); + AICWFDBG(LOGINFO, "%s:ofdm256qam_5g:%d\r\n", __func__, + txpwr_lvl->ofdm256qam_5g); + AICWFDBG(LOGINFO, "%s:ofdm1024qam_5g:%d\r\n", __func__, + txpwr_lvl->ofdm1024qam_5g); } void get_userconfig_txpwr_lvl_v2_in_fdrv(txpwr_lvl_conf_v2_t *txpwr_lvl_v2) { - *txpwr_lvl_v2 = userconfig_info.txpwr_lvl_v2; + *txpwr_lvl_v2 = userconfig_info.txpwr_lvl_v2; - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v2->enable); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[11]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n",__func__, txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[11]); + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v2->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, + txpwr_lvl_v2->pwrlvl_11ax_2g4[11]); } void get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_conf_v3_t *txpwr_lvl_v3) { - *txpwr_lvl_v3 = userconfig_info.txpwr_lvl_v3; + *txpwr_lvl_v3 = userconfig_info.txpwr_lvl_v3; - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v3->enable); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[11]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n",__func__, txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[3]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[4]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[5]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[6]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[7]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[8]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[10]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_2g4[11]); + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v3->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_2g4[11]); - AICWFDBG(LOGINFO, "%s:lvl_11a_1m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_11a_2m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_11a_5m5_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_11a_11m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[5]); - AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[6]); - AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[7]); - AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[8]); - AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[9]); - AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[10]); - AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11a_5g[11]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[5]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[6]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[7]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[8]); - AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11n_11ac_5g[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[5]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[6]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[7]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[8]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[9]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[10]); - AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[11]); + AICWFDBG(LOGINFO, "%s:lvl_11a_1m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11a_2m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11a_5m5_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11a_11m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11a_5g[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, + txpwr_lvl_v3->pwrlvl_11ax_5g[11]); +} + +void get_userconfig_txpwr_lvl_v4_in_fdrv(txpwr_lvl_conf_v4_t *txpwr_lvl_v4) +{ + *txpwr_lvl_v4 = userconfig_info.txpwr_lvl_v4; + + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v4->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_2g4[11]); + + AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11a_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, + txpwr_lvl_v4->pwrlvl_11ax_5g[11]); } void get_userconfig_txpwr_lvl_adj_in_fdrv(txpwr_lvl_adj_conf_t *txpwr_lvl_adj) { - *txpwr_lvl_adj = userconfig_info.txpwr_lvl_adj; + *txpwr_lvl_adj = userconfig_info.txpwr_lvl_adj; - AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_adj->enable); - AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_1_4:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[0]); - AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_5_9:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[1]); - AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_10_13:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[2]); + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_adj->enable); + AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_1_4:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_5_9:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_adj_2g4_chan_10_13:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_2g4[2]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_42:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[0]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_58:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[1]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_106:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[2]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_122:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[3]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_138:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[4]); - AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_155:%d\r\n", __func__, txpwr_lvl_adj->pwrlvl_adj_tbl_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_42:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_58:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_106:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_122:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_138:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_adj_5g_chan_155:%d\r\n", __func__, + txpwr_lvl_adj->pwrlvl_adj_tbl_5g[5]); } +#ifdef CONFIG_POWER_LIMIT +#define GetLineFromBuffer(buffer) strsep(&buffer, "\n") + +int isAllSpaceOrTab(uint8_t *data, uint8_t size) +{ + uint8_t cnt = 0, NumOfSpaceAndTab = 0; + while (size > cnt) { + if (data[cnt] == ' ' || data[cnt] == '\t' || data[cnt] == '\0') + ++NumOfSpaceAndTab; + ++cnt; + } + return size == NumOfSpaceAndTab; +} + +int IsCommentString(char *szStr) +{ + if (*szStr == '#' && *(szStr + 1) == ' ') + return 1; + else + return 0; +} + +int ParseQualifiedString(char *In, u32 *Start, char *Out, char LeftQualifier, + char RightQualifier) +{ + u32 i = 0, j = 0; + char c = In[(*Start)++]; + if (c != LeftQualifier) + return 0; + i = (*Start); + c = In[(*Start)++]; + while (c != RightQualifier && c != '\0') + c = In[(*Start)++]; + if (c == '\0') + return 0; + j = (*Start) - 2; + strncpy((char *)Out, (const char *)(In + i), j - i + 1); + return 1; +} + +int GetU1ByteIntegerFromStringInDecimal(char *Str, u8 *pInt) +{ + u16 i = 0; + *pInt = 0; + while (Str[i] != '\0') { + if (Str[i] >= '0' && Str[i] <= '9') { + *pInt *= 10; + *pInt += (Str[i] - '0'); + } else + return 0; + ++i; + } + return 1; +} +int GetS1ByteIntegerFromStringInDecimal(char *str, s8 *val) +{ + u8 negative = 0; + u16 i = 0; + *val = 0; + while (str[i] != '\0') { + if (i == 0 && (str[i] == '+' || str[i] == '-')) { + if (str[i] == '-') + negative = 1; + } else if (str[i] >= '0' && str[i] <= '9') { + *val *= 10; + *val += (str[i] - '0'); + } else + return 0; + ++i; + } + if (negative) + *val = -*val; + return 1; +} + +int8_t rwnx_plat_powerlimit_save(u8_l band, char *channel, u8_l bw, char *limit, + char *name) +{ + u8 channel_num, powerLimit_val, reg_idx; + + if (GetU1ByteIntegerFromStringInDecimal((char *)channel, + &channel_num) == 0 || + GetS1ByteIntegerFromStringInDecimal((char *)limit, + &powerLimit_val) == 0) { + AICWFDBG(LOGERROR, + "Illegal index of power limit table [ch %s][val %s]\n", + channel, limit); + return -1; + } + + reg_idx = get_region_index(name); + + if (band == PHY_BAND_2G4) { + uint8_t cur_idx = + powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_2g4[bw]; + AICWFDBG( + LOGINFO, + "reg_idx=%d, band=%d, bw=%d, cur_idx=%d, ch=%s, pwr=%s\n", + reg_idx, band, bw, cur_idx, channel, limit); + if (cur_idx < MAC_DOMAINCHANNEL_24G_MAX) { + powerlimit_info.txpwr_lmt[reg_idx] + .ch_num_2g4[bw][cur_idx] = channel_num; + powerlimit_info.txpwr_lmt[reg_idx] + .max_pwr_2g4[bw][cur_idx] = powerLimit_val; + powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_2g4[bw]++; + } else { + AICWFDBG(LOGERROR, "band %d chan_cnt reached %d\n", + band, MAC_DOMAINCHANNEL_24G_MAX); + AICWFDBG(LOGERROR, "channel=%s(%d) powerLimit=%s(%d)\n", + channel, channel_num, limit, powerLimit_val); + } + } else if (band == PHY_BAND_5G) { + uint8_t cur_idx = + powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_5g[bw]; + AICWFDBG( + LOGINFO, + "reg_idx=%d, band=%d, bw=%d, cur_idx=%d, ch=%s, pwr=%s\n", + reg_idx, band, bw, cur_idx, channel, limit); + if (cur_idx < MAC_DOMAINCHANNEL_5G_MAX) { + powerlimit_info.txpwr_lmt[reg_idx] + .ch_num_5g[bw][cur_idx] = channel_num; + powerlimit_info.txpwr_lmt[reg_idx] + .max_pwr_5g[bw][cur_idx] = powerLimit_val; + powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_5g[bw]++; + } else { + AICWFDBG(LOGERROR, "band %d chan_cnt reached %d\n", + band, MAC_DOMAINCHANNEL_5G_MAX); + AICWFDBG(LOGERROR, "channel=%s(%d) powerLimit=%s(%d)\n", + channel, channel_num, limit, powerLimit_val); + } + } + + return 0; +} + +void rwnx_plat_powerlimit_parsing(char *buffer, int size, char *cc) +{ +#define LD_STAGE_EXC_MAPPING 0 +#define LD_STAGE_TAB_DEFINE 1 +#define LD_STAGE_TAB_START 2 +#define LD_STAGE_COLUMN_DEFINE 3 +#define LD_STAGE_CH_ROW 4 + + uint8_t loadingStage = LD_STAGE_EXC_MAPPING; + uint32_t i = 0, forCnt = 0; + uint32_t i_cc; + char *szLine, *ptmp; + char band[10], colNumBuf[10], bandwidth[10]; + uint8_t colNum = 0, band_cc = 0, bw_cc = 0; + char **reg_name = NULL; + // clear powerlimit info at first + memset((void *)&powerlimit_info, 0, sizeof(powerlimit_info_t)); + ptmp = buffer; + for (szLine = GetLineFromBuffer(ptmp); szLine != NULL; + szLine = GetLineFromBuffer(ptmp)) { + if (isAllSpaceOrTab(szLine, sizeof(*szLine))) + continue; + if (IsCommentString(szLine)) + continue; + + if (loadingStage == LD_STAGE_EXC_MAPPING) { + if (szLine[0] == '#' || szLine[1] == '#') { + loadingStage = LD_STAGE_TAB_DEFINE; + } else { + continue; + } + } + + if (loadingStage == LD_STAGE_TAB_DEFINE) { + /* read "## 2.4G" */ + if (szLine[0] != '#' || szLine[1] != '#') + continue; + + /* skip the space */ + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; + + szLine[--i] = + ' '; /* return the space in front of the regulation info */ + + /* Parse the label of the table */ + memset((void *)band, 0, 10); + memset((void *)bandwidth, 0, 10); + memset((void *)colNumBuf, 0, 10); + + if (!ParseQualifiedString(szLine, &i, band, ' ', ',')) { + AICWFDBG(LOGERROR, "Fail to parse band!\n"); + goto exit; + } + if (strncmp(band, "2.4G", 4) == 0) { + band_cc = PHY_BAND_2G4; + } else if (strncmp(band, "5G", 2) == 0) { + band_cc = PHY_BAND_5G; + } + + if (!ParseQualifiedString(szLine, &i, bandwidth, ' ', + ',')) { + AICWFDBG(LOGERROR, + "Fail to parse bandwidth!\n"); + goto exit; + } + if (strncmp(bandwidth, "20M", 3) == 0) + bw_cc = PHY_CHNL_BW_20; + else if (strncmp(bandwidth, "40M", 3) == 0) + bw_cc = PHY_CHNL_BW_40; + else if (strncmp(bandwidth, "80M", 3) == 0) + bw_cc = PHY_CHNL_BW_80; + + if (!ParseQualifiedString(szLine, &i, colNumBuf, '#', + '#')) { + AICWFDBG(LOGERROR, + "Fail to parse column number!\n"); + goto exit; + } + if (!GetU1ByteIntegerFromStringInDecimal(colNumBuf, + &colNum)) { + AICWFDBG( + LOGERROR, + "Column number \"%s\" is not unsigned decimal\n", + colNumBuf); + goto exit; + } + if (colNum == 0) { + AICWFDBG(LOGERROR, "Column number is 0\n"); + goto exit; + } + + AICWFDBG(LOGINFO, "band=%s, bandwidth=%s, colnum=%d\n", + band, bandwidth, colNum); + loadingStage = LD_STAGE_TAB_START; + } else if (loadingStage == LD_STAGE_TAB_START) { + /* read "## START" */ + if (szLine[0] != '#' || szLine[1] != '#') + continue; + + /* skip the space */ + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; + + if (strncmp((u8 *)(szLine + i), "START", 5)) { + AICWFDBG(LOGERROR, + "Missing \"## START\" label\n"); + goto exit; + } + + loadingStage = LD_STAGE_COLUMN_DEFINE; + } else if (loadingStage == LD_STAGE_COLUMN_DEFINE) { + /* read "## FCC ETSI" */ + if (szLine[0] != '#' || szLine[1] != '#') + continue; + + /* skip the space */ + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; + + reg_name = (char **)kmalloc(sizeof(char *) * colNum, + GFP_KERNEL); + if (!reg_name) { + AICWFDBG(LOGERROR, "reg_name alloc fail\n"); + goto exit; + } + + for (forCnt = 0; forCnt < colNum; ++forCnt) { + /* skip the space */ + while (szLine[i] == ' ' || szLine[i] == '\t') + i++; + i_cc = i; + + while (szLine[i] != ' ' && szLine[i] != '\t' && + szLine[i] != '\0') + i++; + + reg_name[forCnt] = (char *)kmalloc(i - i_cc + 1, + GFP_KERNEL); + if (!reg_name[forCnt]) { + AICWFDBG( + LOGERROR, + "reg_name element alloc fail\n"); + goto exit; + } + + strncpy(reg_name[forCnt], szLine + i_cc, + i - i_cc); + reg_name[forCnt][i - i_cc] = '\0'; + AICWFDBG(LOGINFO, "reg_name: %s\n", + reg_name[forCnt]); + } + + loadingStage = LD_STAGE_CH_ROW; + } else if (loadingStage == LD_STAGE_CH_ROW) { + char channel[10] = { 0 }, powerLimit[10] = { 0 }; + u8 cnt = 0; + + /* the table ends */ + if (szLine[0] == '#' && szLine[1] == '#') { + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; + + if (strncmp((u8 *)(szLine + i), "END", 3) == + 0) { + loadingStage = LD_STAGE_TAB_DEFINE; + if (reg_name) { + for (forCnt = 0; + forCnt < colNum; + ++forCnt) { + if (reg_name[forCnt]) { + kfree(reg_name[forCnt]); + reg_name[forCnt] = + NULL; + } + } + kfree(reg_name); + reg_name = NULL; + } + colNum = 0; + continue; + } else { + AICWFDBG( + LOGERROR, + "Missing \"## END\" label\n"); + goto exit; + } + } + + if ((szLine[0] != 'c' && szLine[0] != 'C') || + (szLine[1] != 'h' && szLine[1] != 'H')) { + AICWFDBG( + LOGERROR, + "Wrong channel prefix: '%c','%c'(%d,%d)\n", + szLine[0], szLine[1], szLine[0], + szLine[1]); + continue; + } + i = 2; /* move to the location behind 'h' */ + + /* load the channel number */ + cnt = 0; + while (szLine[i] >= '0' && szLine[i] <= '9') { + channel[cnt] = szLine[i]; + ++cnt; + ++i; + } + + for (forCnt = 0; forCnt < colNum; ++forCnt) { + /* skip the space between channel number and the power limit value */ + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; + + /* load the power limit value */ + memset((void *)powerLimit, 0, 10); + + if (szLine[i] == 'N' && szLine[i + 1] == 'A') { + /* + * means channel not available + */ + sprintf(powerLimit, "%d", + POWER_LIMIT_INVALID_VAL); + i += 2; + } else if ((szLine[i] >= '0' && + szLine[i] <= '9') || + szLine[i] == '+' || + szLine[i] == '-') { + /* case of dBm value */ + cnt = 0; + while ((szLine[i] >= '0' && + szLine[i] <= '9') || + szLine[i] == '+' || + szLine[i] == '-') { + powerLimit[cnt] = szLine[i]; + ++cnt; + ++i; + } + } else { + AICWFDBG( + LOGERROR, + "Wrong limit expression \"%c%c\"(%d, %d)\n", + szLine[i], szLine[i + 1], + szLine[i], szLine[i + 1]); + goto exit; + } + + if (rwnx_plat_powerlimit_save( + band_cc, channel, bw_cc, powerLimit, + reg_name[forCnt]) < 0) + goto exit; + } + } + } + + powerlimit_info.flags |= POWER_LIMIT_CC_MATCHED_BIT; +exit: + if (reg_name) { + for (forCnt = 0; forCnt < colNum; ++forCnt) { + if (reg_name[forCnt]) { + kfree(reg_name[forCnt]); + reg_name[forCnt] = NULL; + } + } + kfree(reg_name); + reg_name = NULL; + } + + return; +} + +/// 5G lower bound freq +#define PHY_FREQ_5G 5000 + +uint16_t phy_channel_to_freq(uint8_t band, int channel) +{ + if ((band == PHY_BAND_2G4) && (channel >= 1) && (channel <= 14)) { + if (channel == 14) + return 2484; + else + return 2407 + channel * 5; + } else if ((band == PHY_BAND_5G) && (channel >= 1) && + (channel <= 165)) { + return PHY_FREQ_5G + channel * 5; + } + return 0; +} + +int8_t get_powerlimit_by_freq(uint8_t band, uint16_t freq, uint8_t r_idx) +{ + int8_t ret = POWER_LIMIT_INVALID_VAL; + uint8_t idx; + if (!(powerlimit_info.flags & POWER_LIMIT_CC_MATCHED_BIT)) { + AICWFDBG(LOGERROR, "powerlimit flag not set\n"); + return ret; + } + + if (band == PHY_BAND_2G4) { + uint8_t idx_cnt = + powerlimit_info.txpwr_lmt[r_idx].ch_cnt_2g4[0]; + for (idx = 0; idx < idx_cnt; idx++) { + int ch_num = powerlimit_info.txpwr_lmt[r_idx] + .ch_num_2g4[0][idx]; + uint16_t freq_tmp = + phy_channel_to_freq(PHY_BAND_2G4, ch_num); + if (freq == freq_tmp) { + ret = powerlimit_info.txpwr_lmt[r_idx] + .max_pwr_2g4[0][idx]; + AICWFDBG(LOGINFO, + "[%d]: ch=%d(freq=%d), pwr=%d\n", idx, + ch_num, freq, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG(LOGERROR, + "powerlimit search failed: band=%d freq=%d\n", + band, freq); + } else if (band == PHY_BAND_5G) { + uint8_t idx_cnt = powerlimit_info.txpwr_lmt[r_idx].ch_cnt_5g[0]; + for (idx = 0; idx < idx_cnt; idx++) { + int ch_num = powerlimit_info.txpwr_lmt[r_idx] + .ch_num_5g[0][idx]; + uint16_t freq_tmp = + phy_channel_to_freq(PHY_BAND_5G, ch_num); + if (freq == freq_tmp) { + ret = powerlimit_info.txpwr_lmt[r_idx] + .max_pwr_5g[0][idx]; + AICWFDBG(LOGINFO, + "[%d]: ch=%d(freq=%d), pwr=%d\n", idx, + ch_num, freq, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG(LOGERROR, + "powerlimit search failed: band=%d freq=%d\n", + band, freq); + } + return ret; +} + +int8_t get_powerlimit_by_chnum(uint8_t chnum, uint8_t r_idx, uint8_t bw) +{ + int8_t ret = POWER_LIMIT_INVALID_VAL; + uint8_t idx; + if (!(powerlimit_info.flags & POWER_LIMIT_CC_MATCHED_BIT)) { + AICWFDBG(LOGERROR, "powerlimit flag not set\n"); + return ret; + } + + if (chnum <= 14) { + uint8_t idx_cnt = + powerlimit_info.txpwr_lmt[r_idx].ch_cnt_2g4[bw]; + for (idx = 0; idx < idx_cnt; idx++) { + uint8_t ch_num = powerlimit_info.txpwr_lmt[r_idx] + .ch_num_2g4[bw][idx]; + if (chnum == ch_num) { + ret = powerlimit_info.txpwr_lmt[r_idx] + .max_pwr_2g4[bw][idx]; + AICWFDBG(LOGINFO, "[%d]: ch=%d, pwr=%d\n", idx, + ch_num, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG( + LOGERROR, + "%s powerlimit search failed: chnum=%d, please confirm the center frequency\n", + __func__, chnum); + } else if (chnum <= 165) { + uint8_t idx_cnt = + powerlimit_info.txpwr_lmt[r_idx].ch_cnt_5g[bw]; + for (idx = 0; idx < idx_cnt; idx++) { + uint8_t ch_num = powerlimit_info.txpwr_lmt[r_idx] + .ch_num_5g[bw][idx]; + if (chnum == ch_num) { + ret = powerlimit_info.txpwr_lmt[r_idx] + .max_pwr_5g[bw][idx]; + AICWFDBG(LOGINFO, "[%d]: ch=%d, pwr=%d\n", idx, + ch_num, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG( + LOGERROR, + "%s powerlimit search failed: chnum=%d, please confirm the center frequency\n", + __func__, chnum); + } + + return ret; +} +#endif + /** * rwnx_plat_userconfig_load ---Load aic_userconfig.txt *@filename name of config */ -static int rwnx_plat_userconfig_load(struct rwnx_hw *rwnx_hw) { - - if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801){ - - rwnx_plat_userconfig_upload_android(rwnx_hw, aic_fw_path, FW_USERCONFIG_NAME); - }else if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC){ +static int rwnx_plat_userconfig_load(struct rwnx_hw *rwnx_hw) +{ + if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8801) { + rwnx_plat_userconfig_upload_android(rwnx_hw, aic_fw_path, + FW_USERCONFIG_NAME); + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DC) { rwnx_plat_userconfig_load_8800dc(rwnx_hw); - }else if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW){ - rwnx_plat_userconfig_load_8800dw(rwnx_hw); - }else if(rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80){ + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800DW) { + rwnx_plat_userconfig_load_8800dw(rwnx_hw); + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80) { rwnx_plat_userconfig_load_8800d80(rwnx_hw); +#ifdef CONFIG_POWER_LIMIT + rwnx_plat_powerlimit_load_8800d80(rwnx_hw); +#endif + } else if (rwnx_hw->sdiodev->chipid == PRODUCT_ID_AIC8800D80X2) { + rwnx_plat_userconfig_load_8800d80x2(rwnx_hw); +#ifdef CONFIG_POWER_LIMIT + rwnx_plat_powerlimit_load_8800d80x2(rwnx_hw); +#endif } return 0; } void get_userconfig_txpwr_loss(txpwr_loss_conf_t *txpwr_loss) { - txpwr_loss->loss_enable = userconfig_info.txpwr_loss.loss_enable; - txpwr_loss->loss_value = userconfig_info.txpwr_loss.loss_value; + txpwr_loss->loss_enable_2g4 = + userconfig_info.txpwr_loss.loss_enable_2g4; + txpwr_loss->loss_value_2g4 = userconfig_info.txpwr_loss.loss_value_2g4; + txpwr_loss->loss_enable_5g = userconfig_info.txpwr_loss.loss_enable_5g; + txpwr_loss->loss_value_5g = userconfig_info.txpwr_loss.loss_value_5g; - AICWFDBG(LOGINFO, "%s:loss_enable:%d\r\n", __func__, txpwr_loss->loss_enable); - AICWFDBG(LOGINFO, "%s:loss_value:%d\r\n", __func__, txpwr_loss->loss_value); + AICWFDBG( + LOGDEBUG, + "%s:loss_enable_2g4: %d, val_2g4: %d, loss_enable_5g: %d, val_5g: %d\r\n", + __func__, txpwr_loss->loss_enable_2g4, + txpwr_loss->loss_value_2g4, txpwr_loss->loss_enable_5g, + txpwr_loss->loss_value_5g); } /** @@ -2027,13 +3879,13 @@ int rwnx_platform_on(struct rwnx_hw *rwnx_hw, void *config) if (rwnx_plat->enabled) return 0; - #ifndef CONFIG_ROM_PATCH_EN - #ifdef CONFIG_DOWNLOAD_FW - ret = rwnx_plat_fmac_load(rwnx_hw, (char*)config); +#ifndef CONFIG_ROM_PATCH_EN +#ifdef CONFIG_DOWNLOAD_FW + ret = rwnx_plat_fmac_load(rwnx_hw, (char *)config); if (ret) return ret; - #endif /* !CONFIG_ROM_PATCH_EN */ - #endif +#endif /* !CONFIG_ROM_PATCH_EN */ +#endif #if 0 ret = rwnx_plat_patch_load(rwnx_hw); @@ -2042,7 +3894,6 @@ int rwnx_platform_on(struct rwnx_hw *rwnx_hw, void *config) } #endif - rwnx_plat_userconfig_load(rwnx_hw); //rwnx_plat->enabled = true; @@ -2065,7 +3916,7 @@ void rwnx_platform_off(struct rwnx_hw *rwnx_hw, void **config) #if defined(AICWF_USB_SUPPORT) || defined(AICWF_SDIO_SUPPORT) tasklet_kill(&rwnx_hw->task); rwnx_hw->plat->enabled = false; - return ; + return; #endif if (!rwnx_hw->plat->enabled) { @@ -2135,7 +3986,6 @@ int rwnx_platform_register_drv(void) return rwnx_pci_register_drv(); } - /** * rwnx_platform_unregister_drv() - Unegister all platform drivers */ @@ -2155,7 +4005,6 @@ struct device *rwnx_platform_get_dev(struct rwnx_plat *rwnx_plat) return &(rwnx_plat->pci_dev->dev); } - #ifndef CONFIG_RWNX_SDM MODULE_FIRMWARE(RWNX_AGC_FW_NAME); MODULE_FIRMWARE(RWNX_FCU_FW_NAME); @@ -2165,5 +4014,3 @@ MODULE_FIRMWARE(RWNX_MAC_FW_NAME); #ifndef CONFIG_RWNX_TL4 MODULE_FIRMWARE(RWNX_MAC_FW_NAME2); #endif - - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.h index 32d88e188..f9412fcbc 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_platform.h @@ -14,27 +14,27 @@ #include #include "lmac_msg.h" -#define RWNX_CONFIG_FW_NAME "rwnx_settings.ini" -#define RWNX_PHY_CONFIG_TRD_NAME "rwnx_trident.ini" -#define RWNX_PHY_CONFIG_KARST_NAME "rwnx_karst.ini" -#define RWNX_AGC_FW_NAME "agcram.bin" -#define RWNX_LDPC_RAM_NAME "ldpcram.bin" +#define RWNX_CONFIG_FW_NAME "rwnx_settings.ini" +#define RWNX_PHY_CONFIG_TRD_NAME "rwnx_trident.ini" +#define RWNX_PHY_CONFIG_KARST_NAME "rwnx_karst.ini" +#define RWNX_AGC_FW_NAME "agcram.bin" +#define RWNX_LDPC_RAM_NAME "ldpcram.bin" #ifdef CONFIG_RWNX_FULLMAC -#define RWNX_MAC_FW_BASE_NAME "fmacfw" +#define RWNX_MAC_FW_BASE_NAME "fmacfw" #elif defined CONFIG_RWNX_FHOST -#define RWNX_MAC_FW_BASE_NAME "fhostfw" +#define RWNX_MAC_FW_BASE_NAME "fhostfw" #endif /* CONFIG_RWNX_FULLMAC */ #ifdef CONFIG_RWNX_TL4 -#define RWNX_MAC_FW_NAME RWNX_MAC_FW_BASE_NAME".hex" +#define RWNX_MAC_FW_NAME RWNX_MAC_FW_BASE_NAME ".hex" #else -#define RWNX_MAC_FW_NAME RWNX_MAC_FW_BASE_NAME".ihex" -#define RWNX_MAC_FW_NAME2 RWNX_MAC_FW_BASE_NAME".bin" +#define RWNX_MAC_FW_NAME RWNX_MAC_FW_BASE_NAME ".ihex" +#define RWNX_MAC_FW_NAME2 RWNX_MAC_FW_BASE_NAME ".bin" #endif -#define RWNX_FCU_FW_NAME "fcuram.bin" +#define RWNX_FCU_FW_NAME "fcuram.bin" #if (defined(CONFIG_DPD) && !defined(CONFIG_FORCE_DPD_CALIB)) -#define FW_DPDRESULT_NAME_8800DC "aic_dpdresult_lite_8800dc.bin" +#define FW_DPDRESULT_NAME_8800DC "aic_dpdresult_lite_8800dc.bin" #endif /** @@ -51,6 +51,16 @@ enum rwnx_platform_addr { RWNX_ADDR_MAX, }; +#define POWER_LEVEL_INVALID_VAL (127) + +typedef enum { + REGIONS_SRRC, + REGIONS_FCC, + REGIONS_ETSI, + REGIONS_JP, + REGIONS_DEFAULT, +} Regions_code; + struct rwnx_hw; /** @@ -86,21 +96,20 @@ struct rwnx_plat { int (*enable)(struct rwnx_hw *rwnx_hw); int (*disable)(struct rwnx_hw *rwnx_hw); void (*deinit)(struct rwnx_plat *rwnx_plat); - u8* (*get_address)(struct rwnx_plat *rwnx_plat, int addr_name, - unsigned int offset); + u8 *(*get_address)(struct rwnx_plat *rwnx_plat, int addr_name, + unsigned int offset); void (*ack_irq)(struct rwnx_plat *rwnx_plat); int (*get_config_reg)(struct rwnx_plat *rwnx_plat, const u32 **list); u8 priv[0] __aligned(sizeof(void *)); }; -#define RWNX_ADDR(plat, base, offset) \ - plat->get_address(plat, base, offset) +#define RWNX_ADDR(plat, base, offset) plat->get_address(plat, base, offset) -#define RWNX_REG_READ(plat, base, offset) \ +#define RWNX_REG_READ(plat, base, offset) \ readl(plat->get_address(plat, base, offset)) -#define RWNX_REG_WRITE(val, plat, base, offset) \ +#define RWNX_REG_WRITE(val, plat, base, offset) \ writel(val, plat->get_address(plat, base, offset)) extern struct rwnx_plat *g_rwnx_plat; @@ -123,10 +132,23 @@ void set_txpwr_loss_ofst(s8_l value); void get_userconfig_txpwr_lvl_in_fdrv(txpwr_lvl_conf_t *txpwr_lvl); void get_userconfig_txpwr_lvl_v2_in_fdrv(txpwr_lvl_conf_v2_t *txpwr_lvl_v2); void get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_conf_v3_t *txpwr_lvl_v3); +void get_userconfig_txpwr_lvl_v4_in_fdrv(txpwr_lvl_conf_v4_t *txpwr_lvl_v4); void get_userconfig_txpwr_lvl_adj_in_fdrv(txpwr_lvl_adj_conf_t *txpwr_lvl_adj); +uint8_t get_ccode_region(char *ccode); +u8 get_region_index(char *name); + +#ifdef CONFIG_POWER_LIMIT +int8_t rwnx_plat_powerlimit_save(u8_l band, char *channel, u8_l bw, char *limit, + char *name); +void rwnx_plat_powerlimit_parsing(char *buffer, int size, char *cc); +int8_t get_powerlimit_by_freq(uint8_t band, uint16_t freq, uint8_t r_idx); +int8_t get_powerlimit_by_chnum(uint8_t chnum, uint8_t r_idx, uint8_t bw); +#endif void get_userconfig_txpwr_ofst_in_fdrv(txpwr_ofst_conf_t *txpwr_ofst); void get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x_conf_t *txpwr_ofst2x); +void get_userconfig_txpwr_ofst2x_v2_in_fdrv( + txpwr_ofst2x_conf_v2_t *txpwr_ofst2x_v2); void get_userconfig_txpwr_loss(txpwr_loss_conf_t *txpwr_loss); extern struct device *rwnx_platform_get_dev(struct rwnx_plat *rwnx_plat); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_prof.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_prof.h index 5442f5882..3ff82e43b 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_prof.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_prof.h @@ -17,13 +17,15 @@ static inline void rwnx_prof_set(struct rwnx_hw *rwnx_hw, int val) { struct rwnx_plat *rwnx_plat = rwnx_hw->plat; - RWNX_REG_WRITE(val, rwnx_plat, RWNX_ADDR_SYSTEM, NXMAC_SW_SET_PROFILING_ADDR); + RWNX_REG_WRITE(val, rwnx_plat, RWNX_ADDR_SYSTEM, + NXMAC_SW_SET_PROFILING_ADDR); } static inline void rwnx_prof_clear(struct rwnx_hw *rwnx_hw, int val) { struct rwnx_plat *rwnx_plat = rwnx_hw->plat; - RWNX_REG_WRITE(val, rwnx_plat, RWNX_ADDR_SYSTEM, NXMAC_SW_CLEAR_PROFILING_ADDR); + RWNX_REG_WRITE(val, rwnx_plat, RWNX_ADDR_SYSTEM, + NXMAC_SW_CLEAR_PROFILING_ADDR); } #if 0 @@ -51,7 +53,8 @@ enum { SW_PROF_HOSTBUF_IDX = 12, /****** IPC IRQs related signals ******/ /* E2A direction */ - SW_PROF_IRQ_E2A_RXDESC = 16, // to make sure we let 16 bits available for LMAC FW + SW_PROF_IRQ_E2A_RXDESC = + 16, // to make sure we let 16 bits available for LMAC FW SW_PROF_IRQ_E2A_TXCFM, SW_PROF_IRQ_E2A_DBG, SW_PROF_IRQ_E2A_MSG, @@ -76,58 +79,70 @@ enum { // [LT]For debug purpose only #if (0) -#define SW_PROF_CHAN_CTXT_CFM_HDL_BIT (21) -#define SW_PROF_CHAN_CTXT_CFM_BIT (22) -#define SW_PROF_CHAN_CTXT_CFM_SWDONE_BIT (23) -#define SW_PROF_CHAN_CTXT_PUSH_BIT (24) -#define SW_PROF_CHAN_CTXT_QUEUE_BIT (25) -#define SW_PROF_CHAN_CTXT_TX_BIT (26) -#define SW_PROF_CHAN_CTXT_TX_PAUSE_BIT (27) -#define SW_PROF_CHAN_CTXT_PSWTCH_BIT (28) -#define SW_PROF_CHAN_CTXT_SWTCH_BIT (29) +#define SW_PROF_CHAN_CTXT_CFM_HDL_BIT (21) +#define SW_PROF_CHAN_CTXT_CFM_BIT (22) +#define SW_PROF_CHAN_CTXT_CFM_SWDONE_BIT (23) +#define SW_PROF_CHAN_CTXT_PUSH_BIT (24) +#define SW_PROF_CHAN_CTXT_QUEUE_BIT (25) +#define SW_PROF_CHAN_CTXT_TX_BIT (26) +#define SW_PROF_CHAN_CTXT_TX_PAUSE_BIT (27) +#define SW_PROF_CHAN_CTXT_PSWTCH_BIT (28) +#define SW_PROF_CHAN_CTXT_SWTCH_BIT (29) // TO DO: update this -#define REG_SW_SET_PROFILING_CHAN(env, bit) \ +#define REG_SW_SET_PROFILING_CHAN(env, bit) \ rwnx_prof_set((struct rwnx_hw *)env, BIT(bit)) -#define REG_SW_CLEAR_PROFILING_CHAN(env, bit) \ +#define REG_SW_CLEAR_PROFILING_CHAN(env, bit) \ rwnx_prof_clear((struct rwnx_hw *)env, BIT(bit)) #else -#define SW_PROF_CHAN_CTXT_CFM_HDL_BIT (0) -#define SW_PROF_CHAN_CTXT_CFM_BIT (0) -#define SW_PROF_CHAN_CTXT_CFM_SWDONE_BIT (0) -#define SW_PROF_CHAN_CTXT_PUSH_BIT (0) -#define SW_PROF_CHAN_CTXT_QUEUE_BIT (0) -#define SW_PROF_CHAN_CTXT_TX_BIT (0) -#define SW_PROF_CHAN_CTXT_TX_PAUSE_BIT (0) -#define SW_PROF_CHAN_CTXT_PSWTCH_BIT (0) -#define SW_PROF_CHAN_CTXT_SWTCH_BIT (0) +#define SW_PROF_CHAN_CTXT_CFM_HDL_BIT (0) +#define SW_PROF_CHAN_CTXT_CFM_BIT (0) +#define SW_PROF_CHAN_CTXT_CFM_SWDONE_BIT (0) +#define SW_PROF_CHAN_CTXT_PUSH_BIT (0) +#define SW_PROF_CHAN_CTXT_QUEUE_BIT (0) +#define SW_PROF_CHAN_CTXT_TX_BIT (0) +#define SW_PROF_CHAN_CTXT_TX_PAUSE_BIT (0) +#define SW_PROF_CHAN_CTXT_PSWTCH_BIT (0) +#define SW_PROF_CHAN_CTXT_SWTCH_BIT (0) -#define REG_SW_SET_PROFILING_CHAN(env, bit) do {} while (0) -#define REG_SW_CLEAR_PROFILING_CHAN(env, bit) do {} while (0) +#define REG_SW_SET_PROFILING_CHAN(env, bit) \ + do { \ + } while (0) +#define REG_SW_CLEAR_PROFILING_CHAN(env, bit) \ + do { \ + } while (0) #endif #ifdef CONFIG_RWNX_SW_PROFILING /* Macros for SW PRofiling registers access */ -#define REG_SW_SET_PROFILING(env, bit) \ +#define REG_SW_SET_PROFILING(env, bit) \ rwnx_prof_set((struct rwnx_hw *)env, BIT(bit)) -#define REG_SW_SET_HOSTBUF_IDX_PROFILING(env, val) \ +#define REG_SW_SET_HOSTBUF_IDX_PROFILING(env, val) \ rwnx_prof_set((struct rwnx_hw *)env, val << (SW_PROF_HOSTBUF_IDX)) -#define REG_SW_CLEAR_PROFILING(env, bit) \ +#define REG_SW_CLEAR_PROFILING(env, bit) \ rwnx_prof_clear((struct rwnx_hw *)env, BIT(bit)) -#define REG_SW_CLEAR_HOSTBUF_IDX_PROFILING(env) \ +#define REG_SW_CLEAR_HOSTBUF_IDX_PROFILING(env) \ rwnx_prof_clear((struct rwnx_hw *)env, 0x0F << (SW_PROF_HOSTBUF_IDX)) #else -#define REG_SW_SET_PROFILING(env, value) do {} while (0) -#define REG_SW_CLEAR_PROFILING(env, value) do {} while (0) -#define REG_SW_SET_HOSTBUF_IDX_PROFILING(env, val) do {} while (0) -#define REG_SW_CLEAR_HOSTBUF_IDX_PROFILING(env) do {} while (0) +#define REG_SW_SET_PROFILING(env, value) \ + do { \ + } while (0) +#define REG_SW_CLEAR_PROFILING(env, value) \ + do { \ + } while (0) +#define REG_SW_SET_HOSTBUF_IDX_PROFILING(env, val) \ + do { \ + } while (0) +#define REG_SW_CLEAR_HOSTBUF_IDX_PROFILING(env) \ + do { \ + } while (0) #endif #endif /* _RWNX_PROF_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.c index c50f2d2b1..e5fdaae8f 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.c @@ -26,7 +26,7 @@ * tolerated deviation of radar time stamp in usecs on both sides * TODO: this might need to be HW-dependent */ -#define PRI_TOLERANCE 16 +#define PRI_TOLERANCE 16 /** * struct radar_types - contains array of patterns defined for one DFS domain @@ -90,9 +90,8 @@ struct radar_detector_specs { enum radar_waveform_type type; }; - /* percentage on ppb threshold to trigger detection */ -#define MIN_PPB_THRESH 50 +#define MIN_PPB_THRESH 50 #define PPB_THRESH(PPB) ((PPB * MIN_PPB_THRESH + 50) / 100) #define PRF2PRI(PRF) ((1000000 + PRF / 2) / PRF) @@ -101,116 +100,116 @@ struct radar_detector_specs { #define WIDTH_LOWER(X) (X) #define WIDTH_UPPER(X) (X) -#define ETSI_PATTERN_SHORT(ID, WMIN, WMAX, PMIN, PMAX, PPB) \ - { \ - ID, WIDTH_LOWER(WMIN), WIDTH_UPPER(WMAX), \ - (PRF2PRI(PMAX) - PRI_TOLERANCE), \ - (PRF2PRI(PMIN) + PRI_TOLERANCE), 1, PPB, \ - PPB_THRESH(PPB), PRI_TOLERANCE, RADAR_WAVEFORM_SHORT \ - } +#define ETSI_PATTERN_SHORT(ID, WMIN, WMAX, PMIN, PMAX, PPB) \ + { \ + ID, WIDTH_LOWER(WMIN), WIDTH_UPPER(WMAX), \ + (PRF2PRI(PMAX) - PRI_TOLERANCE), \ + (PRF2PRI(PMIN) + PRI_TOLERANCE), 1, PPB, \ + PPB_THRESH(PPB), PRI_TOLERANCE, RADAR_WAVEFORM_SHORT \ + } -#define ETSI_PATTERN_INTERLEAVED(ID, WMIN, WMAX, PMIN, PMAX, PRFMIN, PRFMAX, PPB) \ - { \ - ID, WIDTH_LOWER(WMIN), WIDTH_UPPER(WMAX), \ - (PRF2PRI(PMAX) * PRFMIN- PRI_TOLERANCE), \ - (PRF2PRI(PMIN) * PRFMAX + PRI_TOLERANCE), \ - PRFMAX, PPB * PRFMAX, \ - PPB_THRESH(PPB), PRI_TOLERANCE, RADAR_WAVEFORM_INTERLEAVED \ - } +#define ETSI_PATTERN_INTERLEAVED(ID, WMIN, WMAX, PMIN, PMAX, PRFMIN, PRFMAX, \ + PPB) \ + { \ + ID, WIDTH_LOWER(WMIN), WIDTH_UPPER(WMAX), \ + (PRF2PRI(PMAX) * PRFMIN - PRI_TOLERANCE), \ + (PRF2PRI(PMIN) * PRFMAX + PRI_TOLERANCE), PRFMAX, \ + PPB *PRFMAX, PPB_THRESH(PPB), PRI_TOLERANCE, \ + RADAR_WAVEFORM_INTERLEAVED \ + } /* radar types as defined by ETSI EN-301-893 v1.7.1 */ static const struct radar_detector_specs etsi_radar_ref_types_v17_riu[] = { - ETSI_PATTERN_SHORT(0, 0, 8, 700, 700, 18), - ETSI_PATTERN_SHORT(1, 0, 10, 200, 1000, 10), - ETSI_PATTERN_SHORT(2, 0, 22, 200, 1600, 15), - ETSI_PATTERN_SHORT(3, 0, 22, 2300, 4000, 25), + ETSI_PATTERN_SHORT(0, 0, 8, 700, 700, 18), + ETSI_PATTERN_SHORT(1, 0, 10, 200, 1000, 10), + ETSI_PATTERN_SHORT(2, 0, 22, 200, 1600, 15), + ETSI_PATTERN_SHORT(3, 0, 22, 2300, 4000, 25), ETSI_PATTERN_SHORT(4, 20, 38, 2000, 4000, 20), - ETSI_PATTERN_INTERLEAVED(5, 0, 8, 300, 400, 2, 3, 10), - ETSI_PATTERN_INTERLEAVED(6, 0, 8, 400, 1200, 2, 3, 15), + ETSI_PATTERN_INTERLEAVED(5, 0, 8, 300, 400, 2, 3, 10), + ETSI_PATTERN_INTERLEAVED(6, 0, 8, 400, 1200, 2, 3, 15), }; static const struct radar_detector_specs etsi_radar_ref_types_v17_fcu[] = { - ETSI_PATTERN_SHORT(0, 0, 8, 700, 700, 18), - ETSI_PATTERN_SHORT(1, 0, 8, 200, 1000, 10), - ETSI_PATTERN_SHORT(2, 0, 16, 200, 1600, 15), - ETSI_PATTERN_SHORT(3, 0, 16, 2300, 4000, 25), + ETSI_PATTERN_SHORT(0, 0, 8, 700, 700, 18), + ETSI_PATTERN_SHORT(1, 0, 8, 200, 1000, 10), + ETSI_PATTERN_SHORT(2, 0, 16, 200, 1600, 15), + ETSI_PATTERN_SHORT(3, 0, 16, 2300, 4000, 25), ETSI_PATTERN_SHORT(4, 20, 34, 2000, 4000, 20), - ETSI_PATTERN_INTERLEAVED(5, 0, 8, 300, 400, 2, 3, 10), - ETSI_PATTERN_INTERLEAVED(6, 0, 8, 400, 1200, 2, 3, 15), + ETSI_PATTERN_INTERLEAVED(5, 0, 8, 300, 400, 2, 3, 10), + ETSI_PATTERN_INTERLEAVED(6, 0, 8, 400, 1200, 2, 3, 15), }; static const struct radar_types etsi_radar_types_v17 = { - .region = NL80211_DFS_ETSI, + .region = NL80211_DFS_ETSI, .num_radar_types = ARRAY_SIZE(etsi_radar_ref_types_v17_riu), - .spec_riu = etsi_radar_ref_types_v17_riu, - .spec_fcu = etsi_radar_ref_types_v17_fcu, + .spec_riu = etsi_radar_ref_types_v17_riu, + .spec_fcu = etsi_radar_ref_types_v17_fcu, }; -#define FCC_PATTERN(ID, WMIN, WMAX, PMIN, PMAX, PRF, PPB, TYPE) \ - { \ - ID, WIDTH_LOWER(WMIN), WIDTH_UPPER(WMAX), \ - PMIN - PRI_TOLERANCE, \ - PMAX * PRF + PRI_TOLERANCE, PRF, PPB * PRF, \ - PPB_THRESH(PPB), PRI_TOLERANCE, TYPE \ - } +#define FCC_PATTERN(ID, WMIN, WMAX, PMIN, PMAX, PRF, PPB, TYPE) \ + { \ + ID, WIDTH_LOWER(WMIN), WIDTH_UPPER(WMAX), \ + PMIN - PRI_TOLERANCE, PMAX *PRF + PRI_TOLERANCE, PRF, \ + PPB *PRF, PPB_THRESH(PPB), PRI_TOLERANCE, TYPE \ + } static const struct radar_detector_specs fcc_radar_ref_types_riu[] = { - FCC_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(1, 0, 8, 518, 3066, 1, 102, RADAR_WAVEFORM_WEATHER), - FCC_PATTERN(2, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(3, 6, 20, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(4, 10, 28, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(5, 50, 110, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), - FCC_PATTERN(6, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(1, 0, 8, 518, 3066, 1, 102, RADAR_WAVEFORM_WEATHER), + FCC_PATTERN(2, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(3, 6, 20, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(4, 10, 28, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(5, 50, 110, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), + FCC_PATTERN(6, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), }; static const struct radar_detector_specs fcc_radar_ref_types_fcu[] = { - FCC_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(1, 0, 8, 518, 3066, 1, 102, RADAR_WAVEFORM_WEATHER), - FCC_PATTERN(2, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(3, 6, 12, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(4, 10, 22, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), - FCC_PATTERN(5, 50, 104, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), - FCC_PATTERN(6, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(1, 0, 8, 518, 3066, 1, 102, RADAR_WAVEFORM_WEATHER), + FCC_PATTERN(2, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(3, 6, 12, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(4, 10, 22, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), + FCC_PATTERN(5, 50, 104, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), + FCC_PATTERN(6, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), }; static const struct radar_types fcc_radar_types = { - .region = NL80211_DFS_FCC, + .region = NL80211_DFS_FCC, .num_radar_types = ARRAY_SIZE(fcc_radar_ref_types_riu), - .spec_riu = fcc_radar_ref_types_riu, - .spec_fcu = fcc_radar_ref_types_fcu, + .spec_riu = fcc_radar_ref_types_riu, + .spec_fcu = fcc_radar_ref_types_fcu, }; #define JP_PATTERN FCC_PATTERN static const struct radar_detector_specs jp_radar_ref_types_riu[] = { - JP_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(1, 2, 8, 3846, 3846, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(2, 0, 8, 1388, 1388, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(3, 0, 8, 4000, 4000, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(4, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), - JP_PATTERN(5, 6, 20, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), - JP_PATTERN(6, 10, 28, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), - JP_PATTERN(7, 50, 110, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), - JP_PATTERN(8, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), + JP_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(1, 2, 8, 3846, 3846, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(2, 0, 8, 1388, 1388, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(3, 0, 8, 4000, 4000, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(4, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), + JP_PATTERN(5, 6, 20, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), + JP_PATTERN(6, 10, 28, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), + JP_PATTERN(7, 50, 110, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), + JP_PATTERN(8, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), }; static const struct radar_detector_specs jp_radar_ref_types_fcu[] = { - JP_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(1, 2, 6, 3846, 3846, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(2, 0, 8, 1388, 1388, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(3, 2, 2, 4000, 4000, 1, 18, RADAR_WAVEFORM_SHORT), - JP_PATTERN(4, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), - JP_PATTERN(5, 6, 12, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), - JP_PATTERN(6, 10, 22, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), - JP_PATTERN(7, 50, 104, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), - JP_PATTERN(8, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), + JP_PATTERN(0, 0, 8, 1428, 1428, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(1, 2, 6, 3846, 3846, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(2, 0, 8, 1388, 1388, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(3, 2, 2, 4000, 4000, 1, 18, RADAR_WAVEFORM_SHORT), + JP_PATTERN(4, 0, 8, 150, 230, 1, 23, RADAR_WAVEFORM_SHORT), + JP_PATTERN(5, 6, 12, 200, 500, 1, 16, RADAR_WAVEFORM_SHORT), + JP_PATTERN(6, 10, 22, 200, 500, 1, 12, RADAR_WAVEFORM_SHORT), + JP_PATTERN(7, 50, 104, 1000, 2000, 1, 8, RADAR_WAVEFORM_LONG), + JP_PATTERN(8, 0, 8, 333, 333, 1, 9, RADAR_WAVEFORM_SHORT), }; static const struct radar_types jp_radar_types = { - .region = NL80211_DFS_JP, + .region = NL80211_DFS_JP, .num_radar_types = ARRAY_SIZE(jp_radar_ref_types_riu), - .spec_riu = jp_radar_ref_types_riu, - .spec_fcu = jp_radar_ref_types_fcu, + .spec_riu = jp_radar_ref_types_riu, + .spec_fcu = jp_radar_ref_types_fcu, }; static const struct radar_types *dfs_domains[] = { @@ -219,7 +218,6 @@ static const struct radar_types *dfs_domains[] = { &jp_radar_types, }; - /** * struct pri_sequence - sequence of pulses matching one PRI * @head: list_head @@ -245,7 +243,6 @@ struct pri_sequence { u8 ppb_thresh; }; - /** * struct pulse_elem - elements in pulse queue * @ts: time stamp in usecs @@ -288,11 +285,11 @@ struct pri_detector { */ struct pri_detector_ops { void (*init)(struct pri_detector *pde); - struct pri_sequence * (*add_pulse)(struct pri_detector *pde, u16 len, u64 ts, u16 pri); + struct pri_sequence *(*add_pulse)(struct pri_detector *pde, u16 len, + u64 ts, u16 pri); int reset_on_pri_overflow; }; - /****************************************************************************** * PRI (pulse repetition interval) sequence detection *****************************************************************************/ @@ -326,11 +323,11 @@ static void pool_deregister_ref(void) struct pri_sequence *ps, *ps0; struct pulse_elem *p, *p0; - list_for_each_entry_safe(p, p0, &pulse_pool, head) { + list_for_each_entry_safe (p, p0, &pulse_pool, head) { list_del(&p->head); kfree(p); } - list_for_each_entry_safe(ps, ps0, &pseq_pool, head) { + list_for_each_entry_safe (ps, ps0, &pseq_pool, head) { list_del(&ps->head); kfree(ps); } @@ -407,8 +404,7 @@ static bool pulse_queue_dequeue(struct pri_detector *pde) * * dequeue pulse that are too old. */ -static -void pulse_queue_check_window(struct pri_detector *pde) +static void pulse_queue_check_window(struct pri_detector *pde) { u64 min_valid_ts; struct pulse_elem *p; @@ -435,14 +431,13 @@ void pulse_queue_check_window(struct pri_detector *pde) * Add one pulse to the list. If the maximum number of pulses * if reached, remove oldest one. */ -static -bool pulse_queue_enqueue(struct pri_detector *pde, u64 ts) +static bool pulse_queue_enqueue(struct pri_detector *pde, u64 ts) { struct pulse_elem *p = pool_get_pulse_elem(); if (p == NULL) { p = kmalloc(sizeof(*p), GFP_ATOMIC); if (p == NULL) { - return false; + return false; } } INIT_LIST_HEAD(&p->head); @@ -457,7 +452,6 @@ bool pulse_queue_enqueue(struct pri_detector *pde, u64 ts) return true; } - /*************************************************************************** * Short waveform **************************************************************************/ @@ -465,8 +459,7 @@ bool pulse_queue_enqueue(struct pri_detector *pde, u64 ts) * pde_get_multiple() - get number of multiples considering a given tolerance * @return factor if abs(val - factor*fraction) <= tolerance, 0 otherwise */ -static -u32 pde_get_multiple(u32 val, u32 fraction, u32 tolerance) +static u32 pde_get_multiple(u32 val, u32 fraction, u32 tolerance) { u32 remainder; u32 factor; @@ -509,14 +502,13 @@ u32 pde_get_multiple(u32 val, u32 fraction, u32 tolerance) * pri = (ts - pulse_queued.ts) which contains more than @min_count pulses. * */ -static -bool pde_short_create_sequences(struct pri_detector *pde, - u64 ts, u32 min_count) +static bool pde_short_create_sequences(struct pri_detector *pde, u64 ts, + u32 min_count) { struct pulse_elem *p; u16 pulse_idx = 0; - list_for_each_entry(p, &pde->pulses, head) { + list_for_each_entry (p, &pde->pulses, head) { struct pri_sequence ps, *new_ps; struct pulse_elem *p2; u32 tmp_false_count; @@ -538,8 +530,8 @@ bool pde_short_create_sequences(struct pri_detector *pde, ps.first_ts = p->ts; ps.last_ts = ts; ps.pri = ts - p->ts; - ps.dur = ps.pri * (pde->rs->ppb - 1) - + 2 * pde->rs->max_pri_tolerance; + ps.dur = ps.pri * (pde->rs->ppb - 1) + + 2 * pde->rs->max_pri_tolerance; p2 = p; tmp_false_count = 0; @@ -548,14 +540,14 @@ bool pde_short_create_sequences(struct pri_detector *pde, else min_valid_ts = ts - ps.dur; /* check which past pulses are candidates for new sequence */ - list_for_each_entry_continue(p2, &pde->pulses, head) { + list_for_each_entry_continue (p2, &pde->pulses, head) { u32 factor; if (p2->ts < min_valid_ts) /* stop on crossing window border */ break; /* check if pulse match (multi)PRI */ factor = pde_get_multiple(ps.last_ts - p2->ts, ps.pri, - pde->rs->max_pri_tolerance); + pde->rs->max_pri_tolerance); if (factor > 0) { ps.count++; ps.first_ts = p2->ts; @@ -608,12 +600,11 @@ bool pde_short_create_sequences(struct pri_detector *pde, * * @return the length of the longest sequence in which the pulse has been added */ -static -u32 pde_short_add_to_existing_seqs(struct pri_detector *pde, u64 ts) +static u32 pde_short_add_to_existing_seqs(struct pri_detector *pde, u64 ts) { u32 max_count = 0; struct pri_sequence *ps, *ps2; - list_for_each_entry_safe(ps, ps2, &pde->sequences, head) { + list_for_each_entry_safe (ps, ps2, &pde->sequences, head) { u32 delta_ts; u32 factor; @@ -626,7 +617,7 @@ u32 pde_short_add_to_existing_seqs(struct pri_detector *pde, u64 ts) delta_ts = ts - ps->last_ts; factor = pde_get_multiple(delta_ts, ps->pri, - pde->rs->max_pri_tolerance); + pde->rs->max_pri_tolerance); if (factor > 0) { ps->last_ts = ts; @@ -641,7 +632,6 @@ u32 pde_short_add_to_existing_seqs(struct pri_detector *pde, u64 ts) return max_count; } - /** * pde_short_check_detection - check_detection function for * SHORT/WEATHER/INTERLEAVED radar waveform @@ -653,22 +643,21 @@ u32 pde_short_add_to_existing_seqs(struct pri_detector *pde, u64 ts) * * @return The first complete sequence, and NULL if no sequence is complete. */ -static -struct pri_sequence *pde_short_check_detection(struct pri_detector *pde) +static struct pri_sequence *pde_short_check_detection(struct pri_detector *pde) { struct pri_sequence *ps; if (list_empty(&pde->sequences)) return NULL; - list_for_each_entry(ps, &pde->sequences, head) { + list_for_each_entry (ps, &pde->sequences, head) { /* * we assume to have enough matching confidence if we * 1) have enough pulses * 2) have more matching than false pulses */ if ((ps->count >= ps->ppb_thresh) && - (ps->count * pde->rs->num_pri > ps->count_falses)) { + (ps->count * pde->rs->num_pri > ps->count_falses)) { return ps; } } @@ -683,8 +672,7 @@ struct pri_sequence *pde_short_check_detection(struct pri_detector *pde) * Initialize pri_detector window size to the maximun size of one burst * for the radar specification associated. */ -static -void pde_short_init(struct pri_detector *pde) +static void pde_short_init(struct pri_detector *pde) { pde->window_size = pde->rs->pri_max * pde->rs->ppb * pde->rs->num_pri; pde->max_count = pde->rs->ppb * 2; @@ -707,9 +695,8 @@ static void pri_detector_reset(struct pri_detector *pde, u64 ts); * - Check if this pulse complete a sequence * - If not save this pulse in the list */ -static -struct pri_sequence *pde_short_add_pulse(struct pri_detector *pde, - u16 len, u64 ts, u16 pri) +static struct pri_sequence *pde_short_add_pulse(struct pri_detector *pde, + u16 len, u64 ts, u16 pri) { u32 max_updated_seq; struct pri_sequence *ps; @@ -741,8 +728,6 @@ struct pri_sequence *pde_short_add_pulse(struct pri_detector *pde, return ps; } - - /** * pri detector ops to detect short radar waveform * A Short waveform is defined by : @@ -757,7 +742,6 @@ static struct pri_detector_ops pri_detector_short = { .reset_on_pri_overflow = 1, }; - /*************************************************************************** * Long waveform **************************************************************************/ @@ -772,14 +756,12 @@ static struct pri_detector_ops pri_detector_short = { * Initialize pri_detector window size to the long waveform radar * waveform (ie. 12s) and max_count */ -static -void pde_long_init(struct pri_detector *pde) +static void pde_long_init(struct pri_detector *pde) { pde->window_size = LONG_RADAR_DURATION; pde->max_count = LONG_RADAR_MAX_BURST; /* only count burst not pulses */ } - /** * pde_long_add_pulse - Add pulse to a pri_detector for * LONG radar waveform @@ -797,9 +779,8 @@ void pde_long_init(struct pri_detector *pde) * We only queue one pulse per burst and valid the radar when enough burst * has been detected. */ -static -struct pri_sequence *pde_long_add_pulse(struct pri_detector *pde, - u16 len, u64 ts, u16 pri) +static struct pri_sequence *pde_long_add_pulse(struct pri_detector *pde, + u16 len, u64 ts, u16 pri) { struct pri_sequence *ps; const struct radar_detector_specs *rs = pde->rs; @@ -832,13 +813,14 @@ struct pri_sequence *pde_long_add_pulse(struct pri_detector *pde, if (delta_ts < rs->pri_max) { /* ignore pulse too close from previous one */ - } else if ((delta_ts >= rs->pri_min) && - (delta_ts <= rs->pri_max)) { + } else if ((delta_ts >= rs->pri_min) && + (delta_ts <= rs->pri_max)) { /* this is a new pulse in the current burst, ignore it (i.e don't queue it) */ ps->count_falses++; } else if ((ps->count > 2) && - (ps->dur + delta_ts) < LONG_RADAR_BURST_MIN_DURATION) { + (ps->dur + delta_ts) < + LONG_RADAR_BURST_MIN_DURATION) { /* not enough time between burst, ignore pulse */ } else { /* a new burst */ @@ -851,10 +833,13 @@ struct pri_sequence *pde_long_add_pulse(struct pri_detector *pde, u64 min_valid_ts; min_valid_ts = ts - pde->window_size; - while ((p = pulse_queue_get_tail(pde)) != NULL) { + while ((p = pulse_queue_get_tail(pde)) != + NULL) { if (p->ts >= min_valid_ts) { ps->first_ts = p->ts; - ps->deadline_ts = p->ts + pde->window_size; + ps->deadline_ts = + p->ts + + pde->window_size; break; } pulse_queue_dequeue(pde); @@ -865,7 +850,7 @@ struct pri_sequence *pde_long_add_pulse(struct pri_detector *pde, /* valid radar if enough burst detected and delta with first burst is at least duration/2 */ if (ps->count > pde->rs->ppb_thresh && - (ts - ps->first_ts) > (pde->window_size / 2)) { + (ts - ps->first_ts) > (pde->window_size / 2)) { return ps; } else { pulse_queue_enqueue(pde, ts); @@ -886,7 +871,6 @@ static struct pri_detector_ops pri_detector_long = { .reset_on_pri_overflow = 0, }; - /*************************************************************************** * PRI detector init/reset/exit/get **************************************************************************/ @@ -898,7 +882,7 @@ static struct pri_detector_ops pri_detector_long = { * @freq: Frequency of the pri detector */ struct pri_detector *pri_detector_init(struct dfs_pattern_detector *dpd, - u16 radar_type, u16 freq) + u16 radar_type, u16 freq) { struct pri_detector *pde; @@ -937,16 +921,15 @@ struct pri_detector *pri_detector_init(struct dfs_pattern_detector *dpd, * * free pulse queue and sequences list and give objects back to pools */ -static -void pri_detector_reset(struct pri_detector *pde, u64 ts) +static void pri_detector_reset(struct pri_detector *pde, u64 ts) { struct pri_sequence *ps, *ps0; struct pulse_elem *p, *p0; - list_for_each_entry_safe(ps, ps0, &pde->sequences, head) { + list_for_each_entry_safe (ps, ps0, &pde->sequences, head) { list_del_init(&ps->head); pool_put_pseq_elem(ps); } - list_for_each_entry_safe(p, p0, &pde->pulses, head) { + list_for_each_entry_safe (p, p0, &pde->pulses, head) { list_del_init(&p->head); pool_put_pulse_elem(p); } @@ -959,8 +942,7 @@ void pri_detector_reset(struct pri_detector *pde, u64 ts) * * @pde: pointer on pri_detector */ -static -void pri_detector_exit(struct pri_detector *pde) +static void pri_detector_exit(struct pri_detector *pde) { pri_detector_reset(pde, 0); pool_deregister_ref(); @@ -982,11 +964,11 @@ void pri_detector_exit(struct pri_detector *pde) * * Maybe will need to adapt frequency merge for pattern with chirp. */ -static struct pri_detector * -pri_detector_get(struct dfs_pattern_detector *dpd, u16 freq, u16 radar_type) +static struct pri_detector *pri_detector_get(struct dfs_pattern_detector *dpd, + u16 freq, u16 radar_type) { struct pri_detector *pde, *cur = NULL; - list_for_each_entry(pde, &dpd->detectors[radar_type], head) { + list_for_each_entry (pde, &dpd->detectors[radar_type], head) { if (pde->freq == freq) { if (pde->count) return pde; @@ -1005,7 +987,6 @@ pri_detector_get(struct dfs_pattern_detector *dpd, u16 freq, u16 radar_type) return pri_detector_init(dpd, radar_type, freq); } - /****************************************************************************** * DFS Pattern Detector *****************************************************************************/ @@ -1021,7 +1002,7 @@ static void dfs_pattern_detector_reset(struct dfs_pattern_detector *dpd) for (i = 0; i < dpd->num_radar_types; i++) { if (!list_empty(&dpd->detectors[i])) - list_for_each_entry(pde, &dpd->detectors[i], head) + list_for_each_entry (pde, &dpd->detectors[i], head) pri_detector_reset(pde, dpd->last_pulse_ts); } @@ -1041,7 +1022,8 @@ static void dfs_pattern_detector_exit(struct dfs_pattern_detector *dpd) for (i = 0; i < dpd->num_radar_types; i++) { if (!list_empty(&dpd->detectors[i])) - list_for_each_entry_safe(pde, pde0, &dpd->detectors[i], head) + list_for_each_entry_safe (pde, pde0, &dpd->detectors[i], + head) pri_detector_exit(pde); } @@ -1060,9 +1042,10 @@ static void dfs_pattern_detector_pri_overflow(struct dfs_pattern_detector *dpd) for (i = 0; i < dpd->num_radar_types; i++) { if (!list_empty(&dpd->detectors[i])) - list_for_each_entry(pde, &dpd->detectors[i], head) + list_for_each_entry (pde, &dpd->detectors[i], head) if (pde->ops->reset_on_pri_overflow) - pri_detector_reset(pde, dpd->last_pulse_ts); + pri_detector_reset(pde, + dpd->last_pulse_ts); } } @@ -1083,8 +1066,8 @@ static void dfs_pattern_detector_pri_overflow(struct dfs_pattern_detector *dpd) * @return True is the pulse complete a radar pattern, false otherwise */ static bool dfs_pattern_detector_add_pulse(struct dfs_pattern_detector *dpd, - enum rwnx_radar_chain chain, - u16 freq, u16 pri, u16 len, u32 now) + enum rwnx_radar_chain chain, + u16 freq, u16 pri, u16 len, u32 now) { u32 i; @@ -1116,8 +1099,7 @@ static bool dfs_pattern_detector_add_pulse(struct dfs_pattern_detector *dpd, const struct radar_detector_specs *rs = &dpd->radar_spec[i]; /* no need to look up for pde if len is not within range */ - if ((rs->width_min > len) || - (rs->width_max < len)) { + if ((rs->width_min > len) || (rs->width_max < len)) { continue; } @@ -1126,7 +1108,8 @@ static bool dfs_pattern_detector_add_pulse(struct dfs_pattern_detector *dpd, if (ps != NULL) { #ifdef CREATE_TRACE_POINTS - trace_radar_detected(chain, dpd->region, pde->freq, i, ps->pri); + trace_radar_detected(chain, dpd->region, pde->freq, i, + ps->pri); #endif // reset everything instead of just the channel detector dfs_pattern_detector_reset(dpd); @@ -1176,9 +1159,9 @@ static u16 get_dfs_max_radar_types(void) * * set DFS domain, resets detector lines upon domain changes */ -static -bool dfs_pattern_detector_set_domain(struct dfs_pattern_detector *dpd, - enum nl80211_dfs_regions region, u8 chain) +static bool dfs_pattern_detector_set_domain(struct dfs_pattern_detector *dpd, + enum nl80211_dfs_regions region, + u8 chain) { const struct radar_types *rt; struct pri_detector *pde, *pde0; @@ -1196,7 +1179,8 @@ bool dfs_pattern_detector_set_domain(struct dfs_pattern_detector *dpd, /* delete all pri detectors for previous DFS domain */ for (i = 0; i < dpd->num_radar_types; i++) { if (!list_empty(&dpd->detectors[i])) - list_for_each_entry_safe(pde, pde0, &dpd->detectors[i], head) + list_for_each_entry_safe (pde, pde0, &dpd->detectors[i], + head) pri_detector_exit(pde); } @@ -1207,6 +1191,8 @@ bool dfs_pattern_detector_set_domain(struct dfs_pattern_detector *dpd, dpd->num_radar_types = rt->num_radar_types; dpd->region = region; + + AICWFDBG(LOGINFO, "set_region %d \n", region); return true; } @@ -1224,7 +1210,7 @@ dfs_pattern_detector_init(enum nl80211_dfs_regions region, u8 chain) u16 i, max_radar_type = get_dfs_max_radar_types(); dpd = kmalloc(sizeof(*dpd) + max_radar_type * sizeof(dpd->detectors[0]), - GFP_KERNEL); + GFP_KERNEL); if (dpd == NULL) return NULL; @@ -1243,7 +1229,6 @@ dfs_pattern_detector_init(enum nl80211_dfs_regions region, u8 chain) return NULL; } - /****************************************************************************** * driver interface *****************************************************************************/ @@ -1257,7 +1242,8 @@ static u16 rwnx_radar_get_center_freq(struct rwnx_hw *rwnx_hw, u8 chain) if (!rwnx_chanctx_valid(rwnx_hw, rwnx_hw->cur_chanctx)) { WARN(1, "Radar pulse without channel information"); } else - return rwnx_hw->chanctx_table[rwnx_hw->cur_chanctx].chan_def.center_freq1; + return rwnx_hw->chanctx_table[rwnx_hw->cur_chanctx] + .chan_def.center_freq1; #endif /* CONFIG_RWNX_FULLMAC */ } @@ -1269,6 +1255,8 @@ static void rwnx_radar_detected(struct rwnx_hw *rwnx_hw) #ifdef CONFIG_RWNX_FULLMAC struct cfg80211_chan_def chan_def; + RWNX_DBG(RWNX_FN_ENTRY_STR); + if (!rwnx_chanctx_valid(rwnx_hw, rwnx_hw->cur_chanctx)) { WARN(1, "Radar detected without channel information"); return; @@ -1289,13 +1277,14 @@ static void rwnx_radar_detected(struct rwnx_hw *rwnx_hw) static void rwnx_radar_process_pulse(struct work_struct *ws) { - struct rwnx_radar *radar = container_of(ws, struct rwnx_radar, - detection_work); + struct rwnx_radar *radar = + container_of(ws, struct rwnx_radar, detection_work); struct rwnx_hw *rwnx_hw = container_of(radar, struct rwnx_hw, radar); int chain; u32 pulses[RWNX_RADAR_LAST][RWNX_RADAR_PULSE_MAX]; u16 pulses_count[RWNX_RADAR_LAST]; - u32 now = jiffies; /* would be better to store jiffies value in IT handler */ + u32 now = + jiffies; /* would be better to store jiffies value in IT handler */ /* recopy pulses locally to avoid too long spin_lock */ spin_lock_bh(&radar->lock); @@ -1314,21 +1303,20 @@ static void rwnx_radar_process_pulse(struct work_struct *ws) if ((start + count) > RWNX_RADAR_PULSE_MAX) { u16 count1 = (RWNX_RADAR_PULSE_MAX - start); memcpy(&(pulses[chain][0]), - &(radar->pulses[chain].buffer[start]), - count1 * sizeof(struct radar_pulse)); + &(radar->pulses[chain].buffer[start]), + count1 * sizeof(struct radar_pulse)); memcpy(&(pulses[chain][count1]), - &(radar->pulses[chain].buffer[0]), - (count - count1) * sizeof(struct radar_pulse)); + &(radar->pulses[chain].buffer[0]), + (count - count1) * sizeof(struct radar_pulse)); } else { memcpy(&(pulses[chain][0]), - &(radar->pulses[chain].buffer[start]), - count * sizeof(struct radar_pulse)); + &(radar->pulses[chain].buffer[start]), + count * sizeof(struct radar_pulse)); } radar->pulses[chain].count = 0; } spin_unlock_bh(&radar->lock); - /* now process pulses */ for (chain = RWNX_RADAR_RIU; chain < RWNX_RADAR_LAST; chain++) { int i; @@ -1339,26 +1327,30 @@ static void rwnx_radar_process_pulse(struct work_struct *ws) freq = rwnx_radar_get_center_freq(rwnx_hw, chain); - for (i = 0; i < pulses_count[chain] ; i++) { - struct radar_pulse *p = (struct radar_pulse *)&pulses[chain][i]; + for (i = 0; i < pulses_count[chain]; i++) { + struct radar_pulse *p = + (struct radar_pulse *)&pulses[chain][i]; #ifdef CREATE_TRACE_POINTS trace_radar_pulse(chain, p); #endif - if (dfs_pattern_detector_add_pulse(radar->dpd[chain], chain, - (s16)freq + (2 * p->freq), - p->rep, (p->len * 2), now)) { + if (dfs_pattern_detector_add_pulse( + radar->dpd[chain], chain, + (s16)freq + (2 * p->freq), p->rep, + (p->len * 2), now)) { u16 idx = radar->detected[chain].index; if (chain == RWNX_RADAR_RIU) { /* operating chain, inform upper layer to change channel */ - if (radar->dpd[chain]->enabled == RWNX_RADAR_DETECT_REPORT) { + if (radar->dpd[chain]->enabled == + RWNX_RADAR_DETECT_REPORT) { rwnx_radar_detected(rwnx_hw); /* no need to report new radar until upper layer set a new channel. This prevent warning if a new radar is detected while mac80211 is changing channel */ - rwnx_radar_detection_enable(radar, - RWNX_RADAR_DETECT_DISABLE, - chain); + rwnx_radar_detection_enable( + radar, + RWNX_RADAR_DETECT_DISABLE, + chain); /* purge any event received since the beginning of the function (we are sure not to interfer with tasklet as we disable detection just before) */ @@ -1369,14 +1361,16 @@ static void rwnx_radar_process_pulse(struct work_struct *ws) debugfs for now */ } - radar->detected[chain].freq[idx] = (s16)freq + (2 * p->freq); - radar->detected[chain].time[idx] = ktime_get_real_seconds(); - radar->detected[chain].index = ((idx + 1) % - NX_NB_RADAR_DETECTED); + radar->detected[chain].freq[idx] = + (s16)freq + (2 * p->freq); + radar->detected[chain].time[idx] = + ktime_get_real_seconds(); + radar->detected[chain].index = + ((idx + 1) % NX_NB_RADAR_DETECTED); radar->detected[chain].count++; /* no need to process next pulses for this chain */ break; - } + } } } } @@ -1385,7 +1379,8 @@ static void rwnx_radar_process_pulse(struct work_struct *ws) static void rwnx_radar_cac_work(struct work_struct *ws) { struct delayed_work *dw = container_of(ws, struct delayed_work, work); - struct rwnx_radar *radar = container_of(dw, struct rwnx_radar, cac_work); + struct rwnx_radar *radar = + container_of(dw, struct rwnx_radar, cac_work); struct rwnx_hw *rwnx_hw = container_of(radar, struct rwnx_hw, radar); struct rwnx_chanctx *ctxt; @@ -1396,10 +1391,10 @@ static void rwnx_radar_cac_work(struct work_struct *ws) ctxt = &rwnx_hw->chanctx_table[radar->cac_vif->ch_index]; cfg80211_cac_event(radar->cac_vif->ndev, - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - &ctxt->chan_def, - #endif - NL80211_RADAR_CAC_FINISHED, GFP_KERNEL); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + &ctxt->chan_def, +#endif + NL80211_RADAR_CAC_FINISHED, GFP_KERNEL); rwnx_send_apm_stop_cac_req(rwnx_hw, radar->cac_vif); rwnx_chanctx_unlink(radar->cac_vif); @@ -1411,13 +1406,13 @@ bool rwnx_radar_detection_init(struct rwnx_radar *radar) { spin_lock_init(&radar->lock); - radar->dpd[RWNX_RADAR_RIU] = dfs_pattern_detector_init(NL80211_DFS_UNSET, - RWNX_RADAR_RIU); + radar->dpd[RWNX_RADAR_RIU] = + dfs_pattern_detector_init(NL80211_DFS_UNSET, RWNX_RADAR_RIU); if (radar->dpd[RWNX_RADAR_RIU] == NULL) return false; - radar->dpd[RWNX_RADAR_FCU] = dfs_pattern_detector_init(NL80211_DFS_UNSET, - RWNX_RADAR_FCU); + radar->dpd[RWNX_RADAR_FCU] = + dfs_pattern_detector_init(NL80211_DFS_UNSET, RWNX_RADAR_FCU); if (radar->dpd[RWNX_RADAR_FCU] == NULL) { rwnx_radar_detection_deinit(radar); return false; @@ -1444,7 +1439,7 @@ void rwnx_radar_detection_deinit(struct rwnx_radar *radar) } bool rwnx_radar_set_domain(struct rwnx_radar *radar, - enum nl80211_dfs_regions region) + enum nl80211_dfs_regions region) { if (radar->dpd[0] == NULL) return false; @@ -1452,16 +1447,17 @@ bool rwnx_radar_set_domain(struct rwnx_radar *radar, trace_radar_set_region(region); #endif return (dfs_pattern_detector_set_domain(radar->dpd[RWNX_RADAR_RIU], - region, RWNX_RADAR_RIU) && - dfs_pattern_detector_set_domain(radar->dpd[RWNX_RADAR_FCU], - region, RWNX_RADAR_FCU)); + region, RWNX_RADAR_RIU) && + dfs_pattern_detector_set_domain(radar->dpd[RWNX_RADAR_FCU], + region, RWNX_RADAR_FCU)); } void rwnx_radar_detection_enable(struct rwnx_radar *radar, u8 enable, u8 chain) { if (chain < RWNX_RADAR_LAST) { #ifdef CREATE_TRACE_POINTS - trace_radar_enable_detection(radar->dpd[chain]->region, enable, chain); + trace_radar_enable_detection(radar->dpd[chain]->region, enable, + chain); #endif spin_lock_bh(&radar->lock); radar->dpd[chain]->enabled = enable; @@ -1476,7 +1472,7 @@ bool rwnx_radar_detection_is_enable(struct rwnx_radar *radar, u8 chain) #ifdef CONFIG_RWNX_FULLMAC void rwnx_radar_start_cac(struct rwnx_radar *radar, u32 cac_time_ms, - struct rwnx_vif *vif) + struct rwnx_vif *vif) { WARN(radar->cac_vif != NULL, "CAC already in progress"); radar->cac_vif = vif; @@ -1496,10 +1492,10 @@ void rwnx_radar_cancel_cac(struct rwnx_radar *radar) ctxt = &rwnx_hw->chanctx_table[radar->cac_vif->ch_index]; rwnx_send_apm_stop_cac_req(rwnx_hw, radar->cac_vif); cfg80211_cac_event(radar->cac_vif->ndev, - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) - &ctxt->chan_def, - #endif - NL80211_RADAR_CAC_ABORTED, GFP_KERNEL); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + &ctxt->chan_def, +#endif + NL80211_RADAR_CAC_ABORTED, GFP_KERNEL); rwnx_chanctx_unlink(radar->cac_vif); } @@ -1517,12 +1513,12 @@ void rwnx_radar_detection_enable_on_cur_channel(struct rwnx_hw *rwnx_hw) ctxt = &rwnx_hw->chanctx_table[rwnx_hw->cur_chanctx]; if (ctxt->chan_def.chan->flags & IEEE80211_CHAN_RADAR) { rwnx_radar_detection_enable(&rwnx_hw->radar, - RWNX_RADAR_DETECT_REPORT, - RWNX_RADAR_RIU); + RWNX_RADAR_DETECT_REPORT, + RWNX_RADAR_RIU); } else { rwnx_radar_detection_enable(&rwnx_hw->radar, - RWNX_RADAR_DETECT_DISABLE, - RWNX_RADAR_RIU); + RWNX_RADAR_DETECT_DISABLE, + RWNX_RADAR_RIU); } } #endif /* CONFIG_RWNX_FULLMAC */ @@ -1530,9 +1526,8 @@ void rwnx_radar_detection_enable_on_cur_channel(struct rwnx_hw *rwnx_hw) /***************************************************************************** * Debug functions *****************************************************************************/ -static -int rwnx_radar_dump_pri_detector(char *buf, size_t len, - struct pri_detector *pde) +static int rwnx_radar_dump_pri_detector(char *buf, size_t len, + struct pri_detector *pde) { char freq_info[] = "Freq = %3.dMhz\n"; char seq_info[] = " pri | count | false \n"; @@ -1545,7 +1540,7 @@ int rwnx_radar_dump_pri_detector(char *buf, size_t len, if (buf == NULL) { int nb_seq = 1; - list_for_each_entry(seq, &pde->sequences, head) { + list_for_each_entry (seq, &pde->sequences, head) { nb_seq++; } @@ -1560,9 +1555,10 @@ int rwnx_radar_dump_pri_detector(char *buf, size_t len, write += res; len -= res; - list_for_each_entry(seq, &pde->sequences, head) { - res = scnprintf(&buf[write], len, " %6.d | %2.d | %.2d \n", - seq->pri, seq->count, seq->count_falses); + list_for_each_entry (seq, &pde->sequences, head) { + res = scnprintf(&buf[write], len, + " %6.d | %2.d | %.2d \n", seq->pri, + seq->count, seq->count_falses); write += res; len -= res; } @@ -1571,7 +1567,7 @@ int rwnx_radar_dump_pri_detector(char *buf, size_t len, } int rwnx_radar_dump_pattern_detector(char *buf, size_t len, - struct rwnx_radar *radar, u8 chain) + struct rwnx_radar *radar, u8 chain) { struct dfs_pattern_detector *dpd = radar->dpd[chain]; char info[] = "Type = %3.d\n"; @@ -1583,12 +1579,13 @@ int rwnx_radar_dump_pattern_detector(char *buf, size_t len, int size_needed = 0; for (i = 0; i < dpd->num_radar_types; i++) { - list_for_each_entry(pde, &dpd->detectors[i], head) { - size_needed += rwnx_radar_dump_pri_detector(NULL, 0, pde); + list_for_each_entry (pde, &dpd->detectors[i], head) { + size_needed += rwnx_radar_dump_pri_detector( + NULL, 0, pde); } size_needed += sizeof(info); - return size_needed; + return size_needed; } } @@ -1598,8 +1595,9 @@ int rwnx_radar_dump_pattern_detector(char *buf, size_t len, write += res; len -= res; - list_for_each_entry(pde, &dpd->detectors[i], head) { - res = rwnx_radar_dump_pri_detector(&buf[write], len, pde); + list_for_each_entry (pde, &dpd->detectors[i], head) { + res = rwnx_radar_dump_pri_detector(&buf[write], len, + pde); write += res; len -= res; } @@ -1608,9 +1606,8 @@ int rwnx_radar_dump_pattern_detector(char *buf, size_t len, return write; } - int rwnx_radar_dump_radar_detected(char *buf, size_t len, - struct rwnx_radar *radar, u8 chain) + struct rwnx_radar *radar, u8 chain) { struct rwnx_radar_detected *detect = &(radar->detected[chain]); char info[] = "2001/02/02 - 02:20 5126MHz\n"; @@ -1622,7 +1619,7 @@ int rwnx_radar_dump_radar_detected(char *buf, size_t len, if (buf == NULL) { return (count * sizeof(info)) + 1; - } + } idx = (detect->index - detect->count) % NX_NB_RADAR_DETECTED; @@ -1631,9 +1628,10 @@ int rwnx_radar_dump_radar_detected(char *buf, size_t len, time64_to_tm(detect->time[idx], 0, &tm); res = scnprintf(&buf[write], len, - "%.4d/%.2d/%.2d - %.2d:%.2d %4.4dMHz\n", - (int)tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, - tm.tm_hour, tm.tm_min, detect->freq[idx]); + "%.4d/%.2d/%.2d - %.2d:%.2d %4.4dMHz\n", + (int)tm.tm_year + 1900, tm.tm_mon + 1, + tm.tm_mday, tm.tm_hour, tm.tm_min, + detect->freq[idx]); write += res; len -= res; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.h index 8bc36f527..13632af52 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_radar.h @@ -18,17 +18,13 @@ struct rwnx_vif; struct rwnx_hw; -enum rwnx_radar_chain { - RWNX_RADAR_RIU = 0, - RWNX_RADAR_FCU, - RWNX_RADAR_LAST -}; +enum rwnx_radar_chain { RWNX_RADAR_RIU = 0, RWNX_RADAR_FCU, RWNX_RADAR_LAST }; enum rwnx_radar_detector { RWNX_RADAR_DETECT_DISABLE = 0, /* Ignore radar pulses */ - RWNX_RADAR_DETECT_ENABLE = 1, /* Process pattern detection but do not + RWNX_RADAR_DETECT_ENABLE = 1, /* Process pattern detection but do not report radar to upper layer (for test) */ - RWNX_RADAR_DETECT_REPORT = 2 /* Process pattern detection and report + RWNX_RADAR_DETECT_REPORT = 2 /* Process pattern detection and report radar to upper layer. */ }; @@ -36,7 +32,7 @@ enum rwnx_radar_detector { #include #include -#define RWNX_RADAR_PULSE_MAX 32 +#define RWNX_RADAR_PULSE_MAX 32 /** * struct rwnx_radar_pulses - List of pulses reported by HW @@ -82,78 +78,92 @@ struct rwnx_radar_detected { s16 freq[NX_NB_RADAR_DETECTED]; }; - struct rwnx_radar { struct rwnx_radar_pulses pulses[RWNX_RADAR_LAST]; struct dfs_pattern_detector *dpd[RWNX_RADAR_LAST]; struct rwnx_radar_detected detected[RWNX_RADAR_LAST]; - struct work_struct detection_work; /* Work used to process radar pulses */ - spinlock_t lock; /* lock for pulses processing */ + struct work_struct detection_work; /* Work used to process radar pulses */ + spinlock_t lock; /* lock for pulses processing */ /* In softmac cac is handled by mac80211 */ #ifdef CONFIG_RWNX_FULLMAC - struct delayed_work cac_work; /* Work used to handle CAC */ - struct rwnx_vif *cac_vif; /* vif on which we started CAC */ + struct delayed_work cac_work; /* Work used to handle CAC */ + struct rwnx_vif *cac_vif; /* vif on which we started CAC */ #endif }; bool rwnx_radar_detection_init(struct rwnx_radar *radar); void rwnx_radar_detection_deinit(struct rwnx_radar *radar); bool rwnx_radar_set_domain(struct rwnx_radar *radar, - enum nl80211_dfs_regions region); + enum nl80211_dfs_regions region); void rwnx_radar_detection_enable(struct rwnx_radar *radar, u8 enable, u8 chain); bool rwnx_radar_detection_is_enable(struct rwnx_radar *radar, u8 chain); void rwnx_radar_start_cac(struct rwnx_radar *radar, u32 cac_time_ms, - struct rwnx_vif *vif); + struct rwnx_vif *vif); void rwnx_radar_cancel_cac(struct rwnx_radar *radar); void rwnx_radar_detection_enable_on_cur_channel(struct rwnx_hw *rwnx_hw); -int rwnx_radar_dump_pattern_detector(char *buf, size_t len, - struct rwnx_radar *radar, u8 chain); -int rwnx_radar_dump_radar_detected(char *buf, size_t len, - struct rwnx_radar *radar, u8 chain); +int rwnx_radar_dump_pattern_detector(char *buf, size_t len, + struct rwnx_radar *radar, u8 chain); +int rwnx_radar_dump_radar_detected(char *buf, size_t len, + struct rwnx_radar *radar, u8 chain); #else -struct rwnx_radar { -}; +struct rwnx_radar {}; static inline bool rwnx_radar_detection_init(struct rwnx_radar *radar) -{return true; } +{ + return true; +} static inline void rwnx_radar_detection_deinit(struct rwnx_radar *radar) -{} +{ +} static inline bool rwnx_radar_set_domain(struct rwnx_radar *radar, - enum nl80211_dfs_regions region) -{return true; } + enum nl80211_dfs_regions region) +{ + return true; +} static inline void rwnx_radar_detection_enable(struct rwnx_radar *radar, - u8 enable, u8 chain) -{} + u8 enable, u8 chain) +{ +} static inline bool rwnx_radar_detection_is_enable(struct rwnx_radar *radar, - u8 chain) -{return false; } + u8 chain) +{ + return false; +} static inline void rwnx_radar_start_cac(struct rwnx_radar *radar, - u32 cac_time_ms, struct rwnx_vif *vif) -{} + u32 cac_time_ms, struct rwnx_vif *vif) +{ +} static inline void rwnx_radar_cancel_cac(struct rwnx_radar *radar) -{} +{ +} -static inline void rwnx_radar_detection_enable_on_cur_channel(struct rwnx_hw *rwnx_hw) -{} +static inline void +rwnx_radar_detection_enable_on_cur_channel(struct rwnx_hw *rwnx_hw) +{ +} static inline int rwnx_radar_dump_pattern_detector(char *buf, size_t len, - struct rwnx_radar *radar, - u8 chain) -{return 0; } + struct rwnx_radar *radar, + u8 chain) +{ + return 0; +} static inline int rwnx_radar_dump_radar_detected(char *buf, size_t len, - struct rwnx_radar *radar, - u8 chain) -{return 0; } + struct rwnx_radar *radar, + u8 chain) +{ + return 0; +} #endif /* CONFIG_RWNX_RADAR */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.c index d740f146a..69a834687 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.c @@ -32,59 +32,18 @@ u8 dhcped; // = 0; -u16 tx_legrates_lut_rate[] = { - 10, - 20, - 55, - 110, - 60, - 90, - 120, - 180, - 240, - 360, - 480, - 540 -}; +u16 tx_legrates_lut_rate[] = { 10, 20, 55, 110, 60, 90, + 120, 180, 240, 360, 480, 540 }; - -u16 legrates_lut_rate[] = { - 10, - 20, - 55, - 110, - 0, - 0, - 0, - 0, - 480, - 240, - 120, - 60, - 540, - 360, - 180, - 90 -}; - - -const u8 legrates_lut[] = { - 0, /* 0 */ - 1, /* 1 */ - 2, /* 2 */ - 3, /* 3 */ - -1, /* 4 */ - -1, /* 5 */ - -1, /* 6 */ - -1, /* 7 */ - 10, /* 8 */ - 8, /* 9 */ - 6, /* 10 */ - 4, /* 11 */ - 11, /* 12 */ - 9, /* 13 */ - 7, /* 14 */ - 5 /* 15 */ +struct rwnx_legrate legrates_lut[] = { + [0] = { .idx = 0, .rate = 10 }, [1] = { .idx = 1, .rate = 20 }, + [2] = { .idx = 2, .rate = 55 }, [3] = { .idx = 3, .rate = 110 }, + [4] = { .idx = -1, .rate = 0 }, [5] = { .idx = -1, .rate = 0 }, + [6] = { .idx = -1, .rate = 0 }, [7] = { .idx = -1, .rate = 0 }, + [8] = { .idx = 10, .rate = 480 }, [9] = { .idx = 8, .rate = 240 }, + [10] = { .idx = 6, .rate = 120 }, [11] = { .idx = 4, .rate = 60 }, + [12] = { .idx = 11, .rate = 540 }, [13] = { .idx = 9, .rate = 360 }, + [14] = { .idx = 7, .rate = 180 }, [15] = { .idx = 5, .rate = 90 }, }; struct vendor_radiotap_hdr { @@ -103,21 +62,24 @@ struct vendor_radiotap_hdr { * Select the vif that should receive this frame. Returns NULL if the destination * vif is not active or vif is not specified in the descriptor. */ -static inline -struct rwnx_vif *rwnx_rx_get_vif(struct rwnx_hw *rwnx_hw, int vif_idx) +static inline struct rwnx_vif *rwnx_rx_get_vif(struct rwnx_hw *rwnx_hw, + int vif_idx) { struct rwnx_vif *rwnx_vif = NULL; if (vif_idx < NX_VIRT_DEV_MAX) { rwnx_vif = rwnx_hw->vif_table[vif_idx]; - - if(!rwnx_vif){ - AICWFDBG(LOGERROR, "%s rwnx_hw->vif_table[%d] NULL\r\n", __func__, vif_idx); - return NULL; - }else if(!rwnx_vif->up){ - AICWFDBG(LOGERROR, "%s rwnx_hw->vif_table[%d] is down\r\n", __func__, vif_idx); - return NULL; - } + + if (!rwnx_vif) { + AICWFDBG(LOGERROR, "%s rwnx_hw->vif_table[%d] NULL\r\n", + __func__, vif_idx); + return NULL; + } else if (!rwnx_vif->up) { + AICWFDBG(LOGERROR, + "%s rwnx_hw->vif_table[%d] is down\r\n", + __func__, vif_idx); + return NULL; + } } return rwnx_vif; @@ -131,8 +93,8 @@ struct rwnx_vif *rwnx_rx_get_vif(struct rwnx_hw *rwnx_hw, int vif_idx) * @rx_vect2: Rx vector 2 descriptor of the received frame. */ static void rwnx_rx_vector_convert(struct rwnx_hw *rwnx_hw, - struct rx_vector_1 *rx_vect1, - struct rx_vector_2 *rx_vect2) + struct rx_vector_1 *rx_vect1, + struct rx_vector_2 *rx_vect2) { struct rx_vector_1_old rx_vect1_leg; struct rx_vector_2_old rx_vect2_leg; @@ -181,9 +143,11 @@ static void rwnx_rx_vector_convert(struct rwnx_hw *rwnx_hw, case FORMATMOD_VHT: rx_vect1->vht.beamformed = !rx_vect1_leg.smoothing; rx_vect1->vht.fec = rx_vect1_leg.fec_coding; - rx_vect1->vht.length = rx_vect1_leg.ht_length | rx_vect1_leg._ht_length << 8; + rx_vect1->vht.length = + rx_vect1_leg.ht_length | rx_vect1_leg._ht_length << 8; rx_vect1->vht.mcs = rx_vect1_leg.mcs & 0x0F; - rx_vect1->vht.nss = rx_vect1_leg.stbc ? rx_vect1_leg.n_sts/2 : rx_vect1_leg.n_sts; + rx_vect1->vht.nss = rx_vect1_leg.stbc ? rx_vect1_leg.n_sts / 2 : + rx_vect1_leg.n_sts; rx_vect1->vht.doze_not_allowed = rx_vect1_leg.doze_not_allowed; rx_vect1->vht.short_gi = rx_vect1_leg.short_gi; rx_vect1->vht.sounding = rx_vect1_leg.sounding; @@ -221,10 +185,10 @@ static void rwnx_rx_vector_convert(struct rwnx_hw *rwnx_hw, * @hw_rxhdr: Rx Hardware descriptor of the received frame. * @sta: STA that sent the frame. */ -static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, struct hw_rxhdr *hw_rxhdr, - struct rwnx_sta *sta) +static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, + struct hw_rxhdr *hw_rxhdr, struct rwnx_sta *sta) { -#if 1//def CONFIG_RWNX_DEBUGFS +#if 1 //def CONFIG_RWNX_DEBUGFS struct rwnx_stats *stats = &rwnx_hw->stats; struct rwnx_rx_rate_stats *rate_stats = &sta->stats.rx_rate; struct rx_vector_1 *rxvect = &hw_rxhdr->hwvect.rx_vect1; @@ -260,30 +224,34 @@ static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, struct hw_rxhdr *hw_rxhdr mcs = rxvect->ht.mcs % 8; nss = rxvect->ht.mcs / 8; sgi = rxvect->ht.short_gi; - rate_idx = N_CCK + N_OFDM + nss * 32 + mcs * 4 + bw * 2 + sgi; + rate_idx = N_CCK + N_OFDM + nss * 32 + mcs * 4 + + bw * 2 + sgi; break; case FORMATMOD_VHT: mcs = rxvect->vht.mcs; nss = rxvect->vht.nss; sgi = rxvect->vht.short_gi; - rate_idx = N_CCK + N_OFDM + N_HT + nss * 80 + mcs * 8 + bw * 2 + sgi; + rate_idx = N_CCK + N_OFDM + N_HT + nss * 80 + mcs * 8 + + bw * 2 + sgi; break; case FORMATMOD_HE_SU: mcs = rxvect->he.mcs; nss = rxvect->he.nss; sgi = rxvect->he.gi_type; - rate_idx = N_CCK + N_OFDM + N_HT + N_VHT + nss * 144 + mcs * 12 + bw * 3 + sgi; + rate_idx = N_CCK + N_OFDM + N_HT + N_VHT + nss * 144 + + mcs * 12 + bw * 3 + sgi; break; default: mcs = rxvect->he.mcs; nss = rxvect->he.nss; sgi = rxvect->he.gi_type; - rate_idx = N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU - + nss * 216 + mcs * 18 + rxvect->he.ru_size * 3 + sgi; + rate_idx = N_CCK + N_OFDM + N_HT + N_VHT + N_HE_SU + + nss * 216 + mcs * 18 + + rxvect->he.ru_size * 3 + sgi; break; } } else { - int idx = legrates_lut[rxvect->leg_rate]; + int idx = legrates_lut[rxvect->leg_rate].idx; if (idx < 4) { rate_idx = idx * 2 + rxvect->pre_type; } else { @@ -296,8 +264,9 @@ static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, struct hw_rxhdr *hw_rxhdr rate_stats->table[rate_idx]++; rate_stats->cpt++; } else { - wiphy_err(rwnx_hw->wiphy, "RX: Invalid index conversion => %d/%d\n", - rate_idx, rate_stats->size); + wiphy_err(rwnx_hw->wiphy, + "RX: Invalid index conversion => %d/%d\n", rate_idx, + rate_stats->size); } #endif } @@ -321,12 +290,11 @@ static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, struct hw_rxhdr *hw_rxhdr * skb for other BSS's STA are only resent. */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)) -#define RAISE_RX_SOFTIRQ() \ - cpu_raise_softirq(smp_processor_id(), NET_RX_SOFTIRQ) +#define RAISE_RX_SOFTIRQ() cpu_raise_softirq(smp_processor_id(), NET_RX_SOFTIRQ) #endif /* LINUX_VERSION_CODE */ void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *rxhdr) + struct sk_buff *skb, struct hw_rxhdr *rxhdr) { struct sk_buff *rx_skb = skb; const struct ethhdr *eth; @@ -339,8 +307,10 @@ void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, //printk("resend\n"); /* resend pkt on wireless interface */ /* always need to copy buffer when forward=0 to get enough headrom for tsdesc */ - skb_copy = skb_copy_expand(rx_skb, sizeof(struct rwnx_txhdr) + - RWNX_SWTXHDR_ALIGN_SZ + 3 + 24 + 8, 0, GFP_ATOMIC); + skb_copy = skb_copy_expand(rx_skb, + sizeof(struct rwnx_txhdr) + + RWNX_SWTXHDR_ALIGN_SZ + 3 + 24 + 8, + 0, GFP_ATOMIC); if (skb_copy) { int res; @@ -356,9 +326,10 @@ void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, rwnx_vif->net_stats.rx_dropped++; rwnx_vif->net_stats.tx_dropped++; } else if (res != NET_XMIT_SUCCESS) { - netdev_err(rwnx_vif->ndev, - "Failed to re-send buffer to driver (res=%d)", - res); + netdev_err( + rwnx_vif->ndev, + "Failed to re-send buffer to driver (res=%d)", + res); rwnx_vif->net_stats.tx_errors++; } } else { @@ -366,8 +337,10 @@ void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, } } -static void rwnx_rx_data_skb_forward(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *rxhdr) +static void rwnx_rx_data_skb_forward(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, + struct sk_buff *skb, + struct hw_rxhdr *rxhdr) { struct sk_buff *rx_skb; @@ -375,31 +348,31 @@ static void rwnx_rx_data_skb_forward(struct rwnx_hw *rwnx_hw, struct rwnx_vif *r rx_skb->dev = rwnx_vif->ndev; skb_reset_mac_header(rx_skb); - #ifdef CONFIG_BR_SUPPORT - void *br_port = NULL; +#ifdef CONFIG_BR_SUPPORT + void *br_port = NULL; - if (1) {//(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { - /* Insert NAT2.5 RX here! */ - #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) - br_port = rwnx_vif->ndev->br_port; - #else - rcu_read_lock(); - br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); - rcu_read_unlock(); - #endif + if (1) { //(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { + /* Insert NAT2.5 RX here! */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = rwnx_vif->ndev->br_port; +#else + rcu_read_lock(); + br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); + rcu_read_unlock(); +#endif - if (br_port) { - int nat25_handle_frame(struct rwnx_vif *vif, struct sk_buff *skb); + if (br_port) { + int nat25_handle_frame(struct rwnx_vif * vif, + struct sk_buff * skb); - if (nat25_handle_frame(rwnx_vif, rx_skb) == -1) { - /* priv->ext_stats.rx_data_drops++; */ - /* DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); */ - /* return FAIL; */ - - } - } - } - #endif /* CONFIG_BR_SUPPORT */ + if (nat25_handle_frame(rwnx_vif, rx_skb) == -1) { + /* priv->ext_stats.rx_data_drops++; */ + /* DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); */ + /* return FAIL; */ + } + } + } +#endif /* CONFIG_BR_SUPPORT */ /* Update statistics */ rwnx_vif->net_stats.rx_packets++; @@ -411,41 +384,40 @@ static void rwnx_rx_data_skb_forward(struct rwnx_hw *rwnx_hw, struct rwnx_vif *r memset(rx_skb->cb, 0, sizeof(rx_skb->cb)); REG_SW_SET_PROFILING(rwnx_hw, SW_PROF_IEEE80211RX); - #ifdef CONFIG_FILTER_TCP_ACK - filter_rx_tcp_ack(rwnx_hw,rx_skb->data, cpu_to_le16(rx_skb->len)); - #endif +#ifdef CONFIG_FILTER_TCP_ACK + filter_rx_tcp_ack(rwnx_hw, rx_skb->data, cpu_to_le16(rx_skb->len)); +#endif - #ifdef CONFIG_RX_NETIF_RECV_SKB //modify by aic +#ifdef CONFIG_RX_NETIF_RECV_SKB //modify by aic local_bh_disable(); netif_receive_skb(rx_skb); local_bh_enable(); - #else +#else if (in_interrupt()) { netif_rx(rx_skb); } else { - /* +/* * If the receive is not processed inside an ISR, the softirqd must be woken explicitly to service the NET_RX_SOFTIRQ. * * In 2.6 kernels, this is handledby netif_rx_ni(), but in earlier kernels, we need to do it manually. */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) netif_rx_ni(rx_skb); - #else +#else ulong flags; netif_rx(rx_skb); local_irq_save(flags); RAISE_RX_SOFTIRQ(); local_irq_restore(flags); - #endif +#endif } - #endif +#endif REG_SW_CLEAR_PROFILING(rwnx_hw, SW_PROF_IEEE80211RX); rwnx_hw->stats.last_rx = jiffies; } - static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *rxhdr) + struct sk_buff *skb, struct hw_rxhdr *rxhdr) { struct sk_buff_head list; struct sk_buff *rx_skb; @@ -458,27 +430,30 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, __skb_queue_head_init(&list); if (amsdu) { - #if 1 - rwnx_rxdata_process_amsdu(rwnx_hw, skb, rxhdr->flags_vif_idx, &list); //rxhdr not used below since skb free! - #else +#if 1 + rwnx_rxdata_process_amsdu( + rwnx_hw, skb, rxhdr->flags_vif_idx, + &list); //rxhdr not used below since skb free! +#else int count; ieee80211_amsdu_to_8023s(skb, &list, rwnx_vif->ndev->dev_addr, - RWNX_VIF_TYPE(rwnx_vif), 0, NULL, NULL); + RWNX_VIF_TYPE(rwnx_vif), 0, NULL, + NULL); count = skb_queue_len(&list); if (count > ARRAY_SIZE(rwnx_hw->stats.amsdus_rx)) count = ARRAY_SIZE(rwnx_hw->stats.amsdus_rx); rwnx_hw->stats.amsdus_rx[count - 1]++; - #endif +#endif } else { rwnx_hw->stats.amsdus_rx[0]++; __skb_queue_head(&list, skb); } if (((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP) || - (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP_VLAN) || - (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO)) && - !(rwnx_vif->ap.flags & RWNX_AP_ISOLATE)) { + (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP_VLAN) || + (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO)) && + !(rwnx_vif->ap.flags & RWNX_AP_ISOLATE)) { const struct ethhdr *eth; rx_skb = skb_peek(&list); skb_reset_mac_header(rx_skb); @@ -492,8 +467,10 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, /* unicast pkt for STA inside the BSS, no need to forward to upper layer simply resend on wireless interface */ if (flags_dst_idx != RWNX_INVALID_STA) { - struct rwnx_sta *sta = &rwnx_hw->sta_table[flags_dst_idx]; - if (sta->valid && (sta->vlan_idx == rwnx_vif->vif_index)) { + struct rwnx_sta *sta = + &rwnx_hw->sta_table[flags_dst_idx]; + if (sta->valid && + (sta->vlan_idx == rwnx_vif->vif_index)) { forward = false; resend = true; } @@ -522,8 +499,11 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, if (resend) { struct sk_buff *skb_copy; /* always need to copy buffer when forward=0 to get enough headrom for tsdesc */ - skb_copy = skb_copy_expand(rx_skb, sizeof(struct rwnx_txhdr) + - RWNX_SWTXHDR_ALIGN_SZ + 3 + 24 + 8, 0, GFP_ATOMIC); + skb_copy = skb_copy_expand( + rx_skb, + sizeof(struct rwnx_txhdr) + + RWNX_SWTXHDR_ALIGN_SZ + 3 + 24 + 8, + 0, GFP_ATOMIC); if (skb_copy) { int res; @@ -539,83 +519,93 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, rwnx_vif->net_stats.rx_dropped++; rwnx_vif->net_stats.tx_dropped++; } else if (res != NET_XMIT_SUCCESS) { - netdev_err(rwnx_vif->ndev, - "Failed to re-send buffer to driver (res=%d)", - res); + netdev_err( + rwnx_vif->ndev, + "Failed to re-send buffer to driver (res=%d)", + res); rwnx_vif->net_stats.tx_errors++; } } else { - netdev_err(rwnx_vif->ndev, "Failed to copy skb"); + netdev_err(rwnx_vif->ndev, + "Failed to copy skb"); } } /* forward pkt to upper layer */ if (forward) { - #ifdef CONFIG_BR_SUPPORT - void *br_port = NULL; +#ifdef CONFIG_BR_SUPPORT + void *br_port = NULL; - if (1) {//(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { - /* Insert NAT2.5 RX here! */ - #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) - br_port = rwnx_vif->ndev->br_port; - #else - rcu_read_lock(); - br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); - rcu_read_unlock(); - #endif + if (1) { //(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { + /* Insert NAT2.5 RX here! */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = rwnx_vif->ndev->br_port; +#else + rcu_read_lock(); + br_port = rcu_dereference( + rwnx_vif->ndev->rx_handler_data); + rcu_read_unlock(); +#endif - if (br_port) { - int nat25_handle_frame(struct rwnx_vif *vif, struct sk_buff *skb); + if (br_port) { + int nat25_handle_frame( + struct rwnx_vif * vif, + struct sk_buff * skb); - if (nat25_handle_frame(rwnx_vif, rx_skb) == -1) { - /* priv->ext_stats.rx_data_drops++; */ - /* DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); */ - /* return FAIL; */ - } - } - } - #endif /* CONFIG_BR_SUPPORT */ + if (nat25_handle_frame(rwnx_vif, + rx_skb) == -1) { + /* priv->ext_stats.rx_data_drops++; */ + /* DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); */ + /* return FAIL; */ + } + } + } +#endif /* CONFIG_BR_SUPPORT */ /* Update statistics */ rwnx_vif->net_stats.rx_packets++; rwnx_vif->net_stats.rx_bytes += rx_skb->len; - rx_skb->protocol = eth_type_trans(rx_skb, rwnx_vif->ndev); + rx_skb->protocol = + eth_type_trans(rx_skb, rwnx_vif->ndev); #ifdef AICWF_ARP_OFFLOAD - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) + if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || + RWNX_VIF_TYPE(rwnx_vif) == + NL80211_IFTYPE_P2P_CLIENT) arpoffload_proc(rx_skb, rwnx_vif); #endif memset(rx_skb->cb, 0, sizeof(rx_skb->cb)); - REG_SW_SET_PROFILING(rwnx_hw, SW_PROF_IEEE80211RX); + REG_SW_SET_PROFILING(rwnx_hw, SW_PROF_IEEE80211RX); #ifdef CONFIG_FILTER_TCP_ACK - filter_rx_tcp_ack(rwnx_hw,rx_skb->data, cpu_to_le16(rx_skb->len)); + filter_rx_tcp_ack(rwnx_hw, rx_skb->data, + cpu_to_le16(rx_skb->len)); #endif - #ifdef CONFIG_RX_NETIF_RECV_SKB //modify by aic - local_bh_disable(); +#ifdef CONFIG_RX_NETIF_RECV_SKB //modify by aic + local_bh_disable(); netif_receive_skb(rx_skb); - local_bh_enable(); - #else + local_bh_enable(); +#else if (in_interrupt()) { netif_rx(rx_skb); } else { - /* +/* * If the receive is not processed inside an ISR, the softirqd must be woken explicitly to service the NET_RX_SOFTIRQ. * * In 2.6 kernels, this is handledby netif_rx_ni(), but in earlier kernels, we need to do it manually. */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) netif_rx_ni(rx_skb); - #else +#else ulong flags; netif_rx(rx_skb); local_irq_save(flags); RAISE_RX_SOFTIRQ(); local_irq_restore(flags); - #endif +#endif } - #endif - REG_SW_CLEAR_PROFILING(rwnx_hw, SW_PROF_IEEE80211RX); +#endif + REG_SW_CLEAR_PROFILING(rwnx_hw, SW_PROF_IEEE80211RX); rwnx_hw->stats.last_rx = jiffies; } @@ -639,7 +629,7 @@ const u8 *cfg80211_find_ie_match(u8 eid, const u8 *ies, int len, (!match_len && match_offset))) return NULL; - for_each_element_id(elem, eid, ies, len) { + for_each_element_id (elem, eid, ies, len) { if (elem->datalen >= match_offset - 2 + match_len && !memcmp(elem->data + match_offset - 2, match, match_len)) return (void *)elem; @@ -649,15 +639,14 @@ const u8 *cfg80211_find_ie_match(u8 eid, const u8 *ies, int len, } #endif #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)) -static inline const u8 *cfg80211_find_ext_ie(u8 ext_eid, const u8* ies, int len) +static inline const u8 *cfg80211_find_ext_ie(u8 ext_eid, const u8 *ies, int len) { - return cfg80211_find_ie_match(WLAN_EID_EXTENSION, ies, len, - &ext_eid, 1, 2); + return cfg80211_find_ie_match(WLAN_EID_EXTENSION, ies, len, &ext_eid, 1, + 2); } #endif #endif - /** * rwnx_rx_mgmt - Process one 802.11 management frame * @@ -669,7 +658,7 @@ static inline const u8 *cfg80211_find_ext_ie(u8 ext_eid, const u8* ies, int len) * Forward the management frame to a given interface. */ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *hw_rxhdr) + struct sk_buff *skb, struct hw_rxhdr *hw_rxhdr) { struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)skb->data; struct rx_vector_1 *rxvect = &hw_rxhdr->hwvect.rx_vect1; @@ -678,106 +667,131 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) struct aic_sta *sta = &rwnx_hw->aic_table[rwnx_vif->ap.aic_index]; - const u8* ie; + const u8 *ie; u32 len; - if(skb->data[0]!=0x80) - AICWFDBG(LOGDEBUG,"rxmgmt:%x,%x\n", skb->data[0], skb->data[1]); + if (skb->data[0] != 0x80) + AICWFDBG(LOGDEBUG, "rxmgmt:%x,%x\n", skb->data[0], + skb->data[1]); - if (ieee80211_is_assoc_req(mgmt->frame_control) && rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) { - printk("ASSOC_REQ: sta_idx %d MAC %pM\n", rwnx_vif->ap.aic_index, mgmt->sa); - sta->sta_idx = rwnx_vif->ap.aic_index; - len = skb->len - (mgmt->u.assoc_req.variable - skb->data); + if (ieee80211_is_assoc_req(mgmt->frame_control) && + rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) { + printk("ASSOC_REQ: sta_idx %d MAC %pM\n", + rwnx_vif->ap.aic_index, mgmt->sa); + sta->sta_idx = rwnx_vif->ap.aic_index; + len = skb->len - (mgmt->u.assoc_req.variable - skb->data); - #ifdef CONFIG_HE_FOR_OLD_KERNEL - struct ieee80211_he_cap_elem *he; - ie = cfg80211_find_ext_ie(WLAN_EID_EXT_HE_CAPABILITY, mgmt->u.assoc_req.variable, len); - if (ie && ie[1] >= sizeof(*he) + 1) { - printk("assoc_req: find he\n"); - sta->he = true; - } - else { - printk("assoc_req: no find he\n"); - sta->he = false; - } - #endif +#ifdef CONFIG_HE_FOR_OLD_KERNEL + struct ieee80211_he_cap_elem *he; + struct ieee80211_he_mcs_nss_supp *he_mcs; + ie = cfg80211_find_ext_ie(WLAN_EID_EXT_HE_CAPABILITY, + mgmt->u.assoc_req.variable, len); + if (ie && ie[1] >= sizeof(*he) + 1) { + printk("assoc_req: find he\n"); + he = (struct ieee80211_he_cap_elem *)(ie + 3); + he_mcs = (struct ieee80211_he_mcs_nss_supp + *)((u8 *)he + sizeof(*he)); + memcpy(&sta->he_cap_elem, ie + 3, + sizeof(struct ieee80211_he_cap_elem)); - #ifdef CONFIG_VHT_FOR_OLD_KERNEL - struct ieee80211_vht_cap *vht; - ie = cfg80211_find_ie(WLAN_EID_VHT_CAPABILITY, mgmt->u.assoc_req.variable, len); - if (ie && ie[1] >= sizeof(*vht)) { - printk("assoc_req: find vht\n"); - sta->vht = true; - } else { - printk("assoc_req: no find vht\n"); - sta->vht = false; - } - #endif - } + sta->he_mcs_nss_supp.rx_mcs_80 = he_mcs->rx_mcs_80; + sta->he_mcs_nss_supp.tx_mcs_80 = he_mcs->tx_mcs_80; + sta->he = true; + } else { + printk("assoc_req: no find he\n"); + sta->he = false; + } #endif - if (ieee80211_is_mgmt(mgmt->frame_control) && +#ifdef CONFIG_VHT_FOR_OLD_KERNEL + struct ieee80211_vht_cap *vht; + ie = cfg80211_find_ie(WLAN_EID_VHT_CAPABILITY, + mgmt->u.assoc_req.variable, len); + if (ie && ie[1] >= sizeof(*vht)) { + printk("assoc_req: find vht\n"); + memcpy(&sta->vht_cap_info, ie + 2, 4); + memcpy(&sta->supp_mcs, ie + 2 + 4, + sizeof(struct ieee80211_vht_mcs_info)); + sta->vht = true; + } else { + printk("assoc_req: no find vht\n"); + sta->vht = false; + } +#endif + } +#endif + + /*if (ieee80211_is_mgmt(mgmt->frame_control) && (skb->len <= 24 || skb->len > 768)) { printk("mgmt err\n"); return; - } + }*/ if (ieee80211_is_beacon(mgmt->frame_control)) { if ((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MESH_POINT) && - hw_rxhdr->flags_new_peer) { + hw_rxhdr->flags_new_peer) { #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) #ifdef CONFIG_GKI - rwnx_cfg80211_notify_new_peer_candidate(rwnx_vif->ndev, mgmt->sa, - mgmt->u.beacon.variable, - skb->len - offsetof(struct ieee80211_mgmt, - u.beacon.variable), - GFP_ATOMIC); + rwnx_cfg80211_notify_new_peer_candidate( + rwnx_vif->ndev, mgmt->sa, + mgmt->u.beacon.variable, + skb->len - offsetof(struct ieee80211_mgmt, + u.beacon.variable), + GFP_ATOMIC); #else - cfg80211_notify_new_peer_candidate(rwnx_vif->ndev, mgmt->sa, - mgmt->u.beacon.variable, - skb->len - offsetof(struct ieee80211_mgmt, - u.beacon.variable), - GFP_ATOMIC); + cfg80211_notify_new_peer_candidate( + rwnx_vif->ndev, mgmt->sa, + mgmt->u.beacon.variable, + skb->len - offsetof(struct ieee80211_mgmt, + u.beacon.variable), + GFP_ATOMIC); #endif #else #ifdef CONFIG_GKI /* TODO: the value of parameter sig_dbm need to be confirmed */ - rwnx_cfg80211_notify_new_peer_candidate(rwnx_vif->ndev, mgmt->sa, - mgmt->u.beacon.variable, - skb->len - offsetof(struct ieee80211_mgmt, - u.beacon.variable), - rxvect->rssi1, GFP_ATOMIC); + rwnx_cfg80211_notify_new_peer_candidate( + rwnx_vif->ndev, mgmt->sa, + mgmt->u.beacon.variable, + skb->len - offsetof(struct ieee80211_mgmt, + u.beacon.variable), + rxvect->rssi1, GFP_ATOMIC); #else - /* TODO: the value of parameter sig_dbm need to be confirmed */ - cfg80211_notify_new_peer_candidate(rwnx_vif->ndev, mgmt->sa, - mgmt->u.beacon.variable, - skb->len - offsetof(struct ieee80211_mgmt, - u.beacon.variable), - rxvect->rssi1, GFP_ATOMIC); + /* TODO: the value of parameter sig_dbm need to be confirmed */ + cfg80211_notify_new_peer_candidate( + rwnx_vif->ndev, mgmt->sa, + mgmt->u.beacon.variable, + skb->len - offsetof(struct ieee80211_mgmt, + u.beacon.variable), + rxvect->rssi1, GFP_ATOMIC); #endif #endif } else { #ifdef CONFIG_GKI - rwnx_cfg80211_report_obss_beacon(rwnx_hw->wiphy, skb->data, skb->len, - hw_rxhdr->phy_info.phy_prim20_freq, - rxvect->rssi1); + rwnx_cfg80211_report_obss_beacon( + rwnx_hw->wiphy, skb->data, skb->len, + hw_rxhdr->phy_info.phy_prim20_freq, + rxvect->rssi1); #else - cfg80211_report_obss_beacon(rwnx_hw->wiphy, skb->data, skb->len, - hw_rxhdr->phy_info.phy_prim20_freq, - rxvect->rssi1); + cfg80211_report_obss_beacon( + rwnx_hw->wiphy, skb->data, skb->len, + hw_rxhdr->phy_info.phy_prim20_freq, + rxvect->rssi1); #endif } } else if ((ieee80211_is_deauth(mgmt->frame_control) || - ieee80211_is_disassoc(mgmt->frame_control)) && - (mgmt->u.deauth.reason_code == WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA || - mgmt->u.deauth.reason_code == WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA)) { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) // TODO: process unprot mgmt - cfg80211_rx_unprot_mlme_mgmt(rwnx_vif->ndev, skb->data, skb->len); - #endif + ieee80211_is_disassoc(mgmt->frame_control)) && + (mgmt->u.deauth.reason_code == + WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA || + mgmt->u.deauth.reason_code == + WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA)) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) // TODO: process unprot mgmt + cfg80211_rx_unprot_mlme_mgmt(rwnx_vif->ndev, skb->data, + skb->len); +#endif } else if ((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION) && - (ieee80211_is_action(mgmt->frame_control) && - (mgmt->u.action.category == 6))) { + (ieee80211_is_action(mgmt->frame_control) && + (mgmt->u.action.category == 6))) { struct cfg80211_ft_event_params ft_event; ft_event.target_ap = (uint8_t *)&mgmt->u.action + ETH_ALEN + 2; ft_event.ies = (uint8_t *)&mgmt->u.action + ETH_ALEN * 2 + 2; @@ -786,8 +800,9 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, ft_event.ric_ies_len = 0; cfg80211_ft_event(rwnx_vif->ndev, &ft_event); } else { - cfg80211_rx_mgmt(&rwnx_vif->wdev, hw_rxhdr->phy_info.phy_prim20_freq, - rxvect->rssi1, skb->data, skb->len, 0); + cfg80211_rx_mgmt(&rwnx_vif->wdev, + hw_rxhdr->phy_info.phy_prim20_freq, + rxvect->rssi1, skb->data, skb->len, 0); } } @@ -803,16 +818,17 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, * on all active vifs. */ static void rwnx_rx_mgmt_any(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, - struct hw_rxhdr *hw_rxhdr) + struct hw_rxhdr *hw_rxhdr) { struct rwnx_vif *rwnx_vif; int vif_idx = hw_rxhdr->flags_vif_idx; #ifdef CREATE_TRACE_POINTS trace_mgmt_rx(hw_rxhdr->phy_info.phy_prim20_freq, vif_idx, - hw_rxhdr->flags_sta_idx, (struct ieee80211_mgmt *)skb->data); + hw_rxhdr->flags_sta_idx, + (struct ieee80211_mgmt *)skb->data); #endif if (vif_idx == RWNX_INVALID_VIF) { - list_for_each_entry(rwnx_vif, &rwnx_hw->vifs, list) { + list_for_each_entry (rwnx_vif, &rwnx_hw->vifs, list) { if (!rwnx_vif->up) continue; rwnx_rx_mgmt(rwnx_hw, rwnx_vif, skb, hw_rxhdr); @@ -835,8 +851,7 @@ static void rwnx_rx_mgmt_any(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, * Compute the length of the radiotap header based on @rxvect and vendor * specific data (if any). */ -static u8 rwnx_rx_rtap_hdrlen(struct rx_vector_1 *rxvect, - bool has_vend_rtap) +static u8 rwnx_rx_rtap_hdrlen(struct rx_vector_1 *rxvect, bool has_vend_rtap) { u8 rtap_len; @@ -866,13 +881,14 @@ static u8 rwnx_rx_rtap_hdrlen(struct rx_vector_1 *rxvect, // Check for HT frames if ((rxvect->format_mod == FORMATMOD_HT_MF) || - (rxvect->format_mod == FORMATMOD_HT_GF)) + (rxvect->format_mod == FORMATMOD_HT_GF)) rtap_len += 3; // Check for AMPDU - if (!(has_vend_rtap) && ((rxvect->format_mod >= FORMATMOD_VHT) || - ((rxvect->format_mod > FORMATMOD_NON_HT_DUP_OFDM) && - (rxvect->ht.aggregation)))) { + if (!(has_vend_rtap) && + ((rxvect->format_mod >= FORMATMOD_VHT) || + ((rxvect->format_mod > FORMATMOD_NON_HT_DUP_OFDM) && + (rxvect->ht.aggregation)))) { rtap_len = ALIGN(rtap_len, 4); rtap_len += 8; } @@ -920,14 +936,11 @@ static u8 rwnx_rx_rtap_hdrlen(struct rx_vector_1 *rxvect, * * Builds a radiotap header and add it to @skb. */ -static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, - struct sk_buff *skb, - struct rx_vector_1 *rxvect, - struct phy_channel_info_desc *phy_info, - struct hw_vect *hwvect, - int rtap_len, - u8 vend_rtap_len, - u32 vend_it_present) +static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, + struct rx_vector_1 *rxvect, + struct phy_channel_info_desc *phy_info, + struct hw_vect *hwvect, int rtap_len, + u8 vend_rtap_len, u32 vend_it_present) { struct ieee80211_radiotap_header *rtap; u8 *pos, rate_idx; @@ -939,7 +952,7 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, bool aggregation = false; rtap = (struct ieee80211_radiotap_header *)skb_push(skb, rtap_len); - memset((u8 *) rtap, 0, rtap_len); + memset((u8 *)rtap, 0, rtap_len); rtap->it_version = 0; rtap->it_pad = 0; @@ -952,21 +965,21 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, int chain; unsigned long chains = rxvect->antenna_set; - for_each_set_bit(chain, &chains, IEEE80211_MAX_CHAINS) { + for_each_set_bit (chain, &chains, IEEE80211_MAX_CHAINS) { it_present_val |= BIT(IEEE80211_RADIOTAP_EXT) | BIT(IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE); put_unaligned_le32(it_present_val, it_present); it_present++; it_present_val = BIT(IEEE80211_RADIOTAP_ANTENNA) | - BIT(IEEE80211_RADIOTAP_DBM_ANTSIGNAL); + BIT(IEEE80211_RADIOTAP_DBM_ANTSIGNAL); } } // Check if vendor specific data is present if (vend_rtap_len) { it_present_val |= BIT(IEEE80211_RADIOTAP_VENDOR_NAMESPACE) | - BIT(IEEE80211_RADIOTAP_EXT); + BIT(IEEE80211_RADIOTAP_EXT); put_unaligned_le32(it_present_val, it_present); it_present++; it_present_val = vend_it_present; @@ -982,7 +995,8 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, while ((pos - (u8 *)rtap) & 7) *pos++ = 0; put_unaligned_le64((((u64)le32_to_cpu(hwvect->tsf_hi) << 32) + - (u64)le32_to_cpu(hwvect->tsf_lo)), pos); + (u64)le32_to_cpu(hwvect->tsf_lo)), + pos); pos += 8; } @@ -990,8 +1004,8 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_FLAGS); if (hwvect && (!hwvect->frm_successful_rx)) *pos |= IEEE80211_RADIOTAP_F_BADFCS; - if (!rxvect->pre_type - && (rxvect->format_mod <= FORMATMOD_NON_HT_DUP_OFDM)) + if (!rxvect->pre_type && + (rxvect->format_mod <= FORMATMOD_NON_HT_DUP_OFDM)) *pos |= IEEE80211_RADIOTAP_F_SHORTPRE; pos++; @@ -1019,11 +1033,12 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, *pos = 0; } else { struct ieee80211_supported_band *band = - rwnx_hw->wiphy->bands[phy_info->phy_band]; + rwnx_hw->wiphy->bands[phy_info->phy_band]; rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_RATE); - BUG_ON((rate_idx = legrates_lut[rxvect->leg_rate]) == -1); + BUG_ON((rate_idx = legrates_lut[rxvect->leg_rate].idx) == -1); if (phy_info->phy_band == NL80211_BAND_5GHZ) - rate_idx -= 4; /* rwnx_ratetable_5ghz[0].hw_value == 4 */ + rate_idx -= + 4; /* rwnx_ratetable_5ghz[0].hw_value == 4 */ *pos = DIV_ROUND_UP(band->bitrates[rate_idx].bitrate, 5); } pos++; @@ -1034,20 +1049,25 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, pos += 2; if (phy_info->phy_band == NL80211_BAND_5GHZ) - put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ, pos); + put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ, + pos); else if (rxvect->format_mod > FORMATMOD_NON_HT_DUP_OFDM) - put_unaligned_le16(IEEE80211_CHAN_DYN | IEEE80211_CHAN_2GHZ, pos); + put_unaligned_le16(IEEE80211_CHAN_DYN | IEEE80211_CHAN_2GHZ, + pos); else - put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ, pos); + put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ, + pos); pos += 2; if (hweight32(rxvect->antenna_set) == 1) { // IEEE80211_RADIOTAP_DBM_ANTSIGNAL - rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL); + rtap->it_present |= + cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL); *pos++ = rxvect->rssi1; // IEEE80211_RADIOTAP_ANTENNA - rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_ANTENNA); + rtap->it_present |= + cpu_to_le32(1 << IEEE80211_RADIOTAP_ANTENNA); *pos++ = rxvect->antenna_set; } @@ -1064,26 +1084,26 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, pos += 2; // Check if HT - if ((rxvect->format_mod == FORMATMOD_HT_MF) - || (rxvect->format_mod == FORMATMOD_HT_GF)) { + if ((rxvect->format_mod == FORMATMOD_HT_MF) || + (rxvect->format_mod == FORMATMOD_HT_GF)) { rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_MCS); *pos++ = IEEE80211_RADIOTAP_MCS_HAVE_MCS | - IEEE80211_RADIOTAP_MCS_HAVE_GI | - IEEE80211_RADIOTAP_MCS_HAVE_BW; + IEEE80211_RADIOTAP_MCS_HAVE_GI | + IEEE80211_RADIOTAP_MCS_HAVE_BW; *pos = 0; if (short_gi) *pos |= IEEE80211_RADIOTAP_MCS_SGI; - if (rxvect->ch_bw == PHY_CHNL_BW_40) + if (rxvect->ch_bw == PHY_CHNL_BW_40) *pos |= IEEE80211_RADIOTAP_MCS_BW_40; if (rxvect->format_mod == FORMATMOD_HT_GF) *pos |= IEEE80211_RADIOTAP_MCS_FMT_GF; if (fec_coding) *pos |= IEEE80211_RADIOTAP_MCS_FEC_LDPC; - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) *pos++ |= stbc << 5; - #else +#else *pos++ |= stbc << IEEE80211_RADIOTAP_MCS_STBC_SHIFT; - #endif +#endif *pos++ = rate_idx; } @@ -1092,7 +1112,8 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, // 4 byte alignment while ((pos - (u8 *)rtap) & 3) pos++; - rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_AMPDU_STATUS); + rtap->it_present |= + cpu_to_le32(1 << IEEE80211_RADIOTAP_AMPDU_STATUS); put_unaligned_le32(hwvect->ampdu_cnt, pos); pos += 4; put_unaligned_le32(0, pos); @@ -1102,13 +1123,13 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, // Check for VHT frames if (rxvect->format_mod == FORMATMOD_VHT) { u16 vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI | - IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; + IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; u8 vht_nss = rxvect->vht.nss + 1; rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_VHT); - if ((rxvect->ch_bw == PHY_CHNL_BW_160) - && phy_info->phy_center2_freq) + if ((rxvect->ch_bw == PHY_CHNL_BW_160) && + phy_info->phy_center2_freq) vht_details &= ~IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; put_unaligned_le16(vht_details, pos); pos += 2; @@ -1125,10 +1146,10 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, *pos++ = 1; if (rxvect->ch_bw == PHY_CHNL_BW_80) *pos++ = 4; - else if ((rxvect->ch_bw == PHY_CHNL_BW_160) - && phy_info->phy_center2_freq) + else if ((rxvect->ch_bw == PHY_CHNL_BW_160) && + phy_info->phy_center2_freq) *pos++ = 0; //80P80 - else if (rxvect->ch_bw == PHY_CHNL_BW_160) + else if (rxvect->ch_bw == PHY_CHNL_BW_160) *pos++ = 11; else // 20 MHz *pos++ = 0; @@ -1137,11 +1158,11 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, *pos = (rate_idx << 4) | vht_nss; pos += 4; if (fec_coding) - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) *pos |= 0x01; - #else +#else *pos |= IEEE80211_RADIOTAP_CODING_LDPC_USER0; - #endif +#endif pos++; // group ID pos++; @@ -1152,13 +1173,15 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, // Check for HE frames if (rxvect->format_mod == FORMATMOD_HE_SU) { struct ieee80211_radiotap_he he; - #define HE_PREP(f, val) cpu_to_le16(FIELD_PREP(IEEE80211_RADIOTAP_HE_##f, val)) - #define D1_KNOWN(f) cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_##f##_KNOWN) - #define D2_KNOWN(f) cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_##f##_KNOWN) +#define HE_PREP(f, val) cpu_to_le16(FIELD_PREP(IEEE80211_RADIOTAP_HE_##f, val)) +#define D1_KNOWN(f) cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_##f##_KNOWN) +#define D2_KNOWN(f) cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_##f##_KNOWN) - he.data1 = D1_KNOWN(DATA_MCS) | D1_KNOWN(BSS_COLOR) | D1_KNOWN(BEAM_CHANGE) | - D1_KNOWN(UL_DL) | D1_KNOWN(CODING) | D1_KNOWN(STBC) | - D1_KNOWN(BW_RU_ALLOC) | D1_KNOWN(DOPPLER) | D1_KNOWN(DATA_DCM); + he.data1 = D1_KNOWN(DATA_MCS) | D1_KNOWN(BSS_COLOR) | + D1_KNOWN(BEAM_CHANGE) | D1_KNOWN(UL_DL) | + D1_KNOWN(CODING) | D1_KNOWN(STBC) | + D1_KNOWN(BW_RU_ALLOC) | D1_KNOWN(DOPPLER) | + D1_KNOWN(DATA_DCM); he.data2 = D2_KNOWN(GI) | D2_KNOWN(TXBF); if (stbc) { @@ -1182,20 +1205,24 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, switch (rxvect->ch_bw) { case PHY_CHNL_BW_20: - he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_20MHZ); + he.data5 |= HE_PREP( + DATA5_DATA_BW_RU_ALLOC, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_20MHZ); break; case PHY_CHNL_BW_40: - he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_40MHZ); + he.data5 |= HE_PREP( + DATA5_DATA_BW_RU_ALLOC, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_40MHZ); break; case PHY_CHNL_BW_80: - he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_80MHZ); + he.data5 |= HE_PREP( + DATA5_DATA_BW_RU_ALLOC, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_80MHZ); break; case PHY_CHNL_BW_160: - he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC, - IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_160MHZ); + he.data5 |= HE_PREP( + DATA5_DATA_BW_RU_ALLOC, + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_160MHZ); break; default: WARN_ONCE(1, "Invalid SU BW %d\n", rxvect->ch_bw); @@ -1215,9 +1242,10 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, if (hweight32(rxvect->antenna_set) > 1) { int chain; unsigned long chains = rxvect->antenna_set; - u8 rssis[4] = {rxvect->rssi1, rxvect->rssi1, rxvect->rssi1, rxvect->rssi1}; + u8 rssis[4] = { rxvect->rssi1, rxvect->rssi1, rxvect->rssi1, + rxvect->rssi1 }; - for_each_set_bit(chain, &chains, IEEE80211_MAX_CHAINS) { + for_each_set_bit (chain, &chains, IEEE80211_MAX_CHAINS) { *pos++ = rssis[chain]; *pos++ = chain; } @@ -1236,8 +1264,8 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw *rwnx_hw, * Add radiotap header to the receved skb and send it to netdev */ static int rwnx_rx_monitor(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *hw_rxhdr_ptr, - u8 rtap_len) + struct sk_buff *skb, struct hw_rxhdr *hw_rxhdr_ptr, + u8 rtap_len) { skb->dev = rwnx_vif->ndev; @@ -1248,8 +1276,8 @@ static int rwnx_rx_monitor(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, /* Add RadioTap Header */ rwnx_rx_add_rtap_hdr(rwnx_hw, skb, &hw_rxhdr_ptr->hwvect.rx_vect1, - &hw_rxhdr_ptr->phy_info, &hw_rxhdr_ptr->hwvect, - rtap_len, 0, 0); + &hw_rxhdr_ptr->phy_info, &hw_rxhdr_ptr->hwvect, + rtap_len, 0, 0); skb_reset_mac_header(skb); skb->ip_summed = CHECKSUM_UNNECESSARY; @@ -1257,12 +1285,12 @@ static int rwnx_rx_monitor(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, skb->protocol = htons(ETH_P_802_2); #ifdef CONFIG_FILTER_TCP_ACK - filter_rx_tcp_ack(rwnx_hw,skb->data, cpu_to_le16(skb->len)); + filter_rx_tcp_ack(rwnx_hw, skb->data, cpu_to_le16(skb->len)); #endif - local_bh_disable(); + local_bh_disable(); netif_receive_skb(skb); - local_bh_enable(); + local_bh_enable(); return 0; } @@ -1276,30 +1304,64 @@ void arpoffload_proc(struct sk_buff *skb, struct rwnx_vif *rwnx_vif) if (skb->protocol == htons(ETH_P_IP)) { // IP if (iphead->protocol == IPPROTO_UDP) { // UDP - udph = (struct udphdr *)((u8 *)iphead + (iphead->ihl << 2)); - if ((udph->source == __constant_htons(SERVER_PORT)) - && (udph->dest == __constant_htons(CLIENT_PORT))) { // DHCP offset/ack - dhcph = (struct DHCPInfo *)((u8 *)udph + sizeof(struct udphdr)); - if (dhcph->cookie == htonl(DHCP_MAGIC) && dhcph->op == 2 && - !memcmp(dhcph->chaddr, rwnx_vif->ndev->dev_addr, 6)) { // match magic word - u32 length = ntohs(udph->len) - sizeof(struct udphdr) - offsetof(struct DHCPInfo, options); + udph = (struct udphdr *)((u8 *)iphead + + (iphead->ihl << 2)); + if ((udph->source == __constant_htons(SERVER_PORT)) && + (udph->dest == + __constant_htons(CLIENT_PORT))) { // DHCP offset/ack + dhcph = (struct DHCPInfo + *)((u8 *)udph + + sizeof(struct udphdr)); + if (dhcph->cookie == htonl(DHCP_MAGIC) && + dhcph->op == 2 && + !memcmp(dhcph->chaddr, + rwnx_vif->ndev->dev_addr, + 6)) { // match magic word + u32 length = ntohs(udph->len) - + sizeof(struct udphdr) - + offsetof(struct DHCPInfo, + options); u16 offset = 0; u8 *option = dhcph->options; - while (option[offset] != DHCP_OPTION_END && offset < length) { - if (option[offset] == DHCP_OPTION_MESSAGE_TYPE) { - if (option[offset+2] == DHCP_ACK) { + while (option[offset] != + DHCP_OPTION_END && + offset < length) { + if (option[offset] == + DHCP_OPTION_MESSAGE_TYPE) { + if (option[offset + 2] == + DHCP_ACK) { dhcped = 1; - AICWFDBG(LOGINFO, "paired=%x, should=%x\n", rwnx_vif->sta.paired_cipher_type, WLAN_CIPHER_SUITE_CCMP); - if (rwnx_vif->sta.paired_cipher_type == WLAN_CIPHER_SUITE_CCMP || \ - rwnx_vif->sta.paired_cipher_type == WLAN_CIPHER_SUITE_AES_CMAC || \ - ((rwnx_vif->sta.group_cipher_type == 0xff) && \ - (rwnx_vif->sta.paired_cipher_type == 0xff))) - rwnx_send_arpoffload_en_req(rwnx_vif->rwnx_hw, rwnx_vif, dhcph->yiaddr, 1); + AICWFDBG( + LOGINFO, + "paired=%x, should=%x\n", + rwnx_vif->sta + .paired_cipher_type, + WLAN_CIPHER_SUITE_CCMP); + if (rwnx_vif->sta.paired_cipher_type == + WLAN_CIPHER_SUITE_CCMP || + rwnx_vif->sta.paired_cipher_type == + WLAN_CIPHER_SUITE_AES_CMAC || + ((rwnx_vif->sta + .group_cipher_type == + 0xff) && + (rwnx_vif->sta + .paired_cipher_type == + 0xff))) + rwnx_send_arpoffload_en_req( + rwnx_vif->rwnx_hw, + rwnx_vif, + dhcph->yiaddr, + 1); else - rwnx_send_arpoffload_en_req(rwnx_vif->rwnx_hw, rwnx_vif, dhcph->yiaddr, 0); - } + rwnx_send_arpoffload_en_req( + rwnx_vif->rwnx_hw, + rwnx_vif, + dhcph->yiaddr, + 0); + } } - offset += 2 + option[offset+1]; + offset += + 2 + option[offset + 1]; } } } @@ -1309,7 +1371,8 @@ void arpoffload_proc(struct sk_buff *skb, struct rwnx_vif *rwnx_vif) #endif #ifdef AICWF_RX_REORDER -void reord_rxframe_free(spinlock_t *lock, struct list_head *q, struct list_head *list) +void reord_rxframe_free(spinlock_t *lock, struct list_head *q, + struct list_head *list) { spin_lock_bh(lock); list_add(list, q); @@ -1331,7 +1394,8 @@ struct recv_msdu *reord_rxframe_alloc(spinlock_t *lock, struct list_head *q) return rxframe; } -struct reord_ctrl_info *reord_init_sta(struct aicwf_rx_priv *rx_priv, const u8 *mac_addr) +struct reord_ctrl_info *reord_init_sta(struct aicwf_rx_priv *rx_priv, + const u8 *mac_addr) { u8 i = 0; struct reord_ctrl *preorder_ctrl = NULL; @@ -1363,12 +1427,14 @@ struct reord_ctrl_info *reord_init_sta(struct aicwf_rx_priv *rx_priv, const u8 * spin_lock_init(&preorder_ctrl->reord_list_lock); #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) init_timer(&preorder_ctrl->reord_timer); - preorder_ctrl->reord_timer.data = (ulong) preorder_ctrl; + preorder_ctrl->reord_timer.data = (ulong)preorder_ctrl; preorder_ctrl->reord_timer.function = reord_timeout_handler; #else - timer_setup(&preorder_ctrl->reord_timer, reord_timeout_handler, 0); + timer_setup(&preorder_ctrl->reord_timer, reord_timeout_handler, + 0); #endif - INIT_WORK(&preorder_ctrl->reord_timer_work, reord_timeout_worker); + INIT_WORK(&preorder_ctrl->reord_timer_work, + reord_timeout_worker); } return reord_info; @@ -1387,9 +1453,11 @@ int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8 tid) struct recv_msdu *prframe; int ret; - if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) + if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) mac = eh->h_dest; - else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) + else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) mac = eh->h_source; else { AICWFDBG(LOGERROR, "error mode:%d!\n", rwnx_vif->wdev.iftype); @@ -1398,7 +1466,7 @@ int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8 tid) } spin_lock_bh(&rx_priv->stas_reord_lock); - list_for_each_entry(reord_info, &rx_priv->stas_reord_list, list) { + list_for_each_entry (reord_info, &rx_priv->stas_reord_list, list) { if (!memcmp(mac, reord_info->mac_addr, ETH_ALEN)) { found = 1; preorder_ctrl = &reord_info->preorder_ctrl[tid]; @@ -1420,7 +1488,8 @@ int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8 tid) break; } plist = phead->next; - prframe = list_entry(plist, struct recv_msdu, reord_pending_list); + prframe = + list_entry(plist, struct recv_msdu, reord_pending_list); reord_single_frame_ind(rx_priv, prframe); list_del_init(&(prframe->reord_pending_list)); } @@ -1435,7 +1504,8 @@ int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8 tid) return 0; } -void reord_deinit_sta(struct aicwf_rx_priv *rx_priv, struct reord_ctrl_info *reord_info) +void reord_deinit_sta(struct aicwf_rx_priv *rx_priv, + struct reord_ctrl_info *reord_info) { u8 i = 0; unsigned long flags; @@ -1450,25 +1520,35 @@ void reord_deinit_sta(struct aicwf_rx_priv *rx_priv, struct reord_ctrl_info *reo for (i = 0; i < 8; i++) { struct recv_msdu *req, *next; preorder_ctrl = &reord_info->preorder_ctrl[i]; + if (preorder_ctrl->enable) { + preorder_ctrl->enable = false; + if (timer_pending(&preorder_ctrl->reord_timer)) { + ret = del_timer_sync( + &preorder_ctrl->reord_timer); + } + cancel_work_sync(&preorder_ctrl->reord_timer_work); + } spin_lock_irqsave(&preorder_ctrl->reord_list_lock, flags); - list_for_each_entry_safe(req, next, &preorder_ctrl->reord_list, reord_pending_list) { + list_for_each_entry_safe (req, next, &preorder_ctrl->reord_list, + reord_pending_list) { list_del_init(&req->reord_pending_list); if (req->pkt != NULL) dev_kfree_skb(req->pkt); req->pkt = NULL; - reord_rxframe_free(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue, &req->rxframe_list); + reord_rxframe_free(&rx_priv->freeq_lock, + &rx_priv->rxframes_freequeue, + &req->rxframe_list); } spin_unlock_irqrestore(&preorder_ctrl->reord_list_lock, flags); - if (timer_pending(&preorder_ctrl->reord_timer)) { - ret = del_timer_sync(&preorder_ctrl->reord_timer); - } - cancel_work_sync(&preorder_ctrl->reord_timer_work); } + spin_lock_bh(&rx_priv->stas_reord_lock); list_del(&reord_info->list); + spin_unlock_bh(&rx_priv->stas_reord_lock); kfree(reord_info); } -int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, struct recv_msdu *prframe) +int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, + struct recv_msdu *prframe) { struct list_head *rxframes_freequeue = NULL; struct sk_buff *skb = NULL; @@ -1478,110 +1558,117 @@ int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, struct recv_msdu *prfr rxframes_freequeue = &rx_priv->rxframes_freequeue; skb = prframe->pkt; - - #ifdef CONFIG_BR_SUPPORT - void *br_port = NULL; - if (1) {//(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { - /* Insert NAT2.5 RX here! */ - #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) - br_port = rwnx_vif->ndev->br_port; - #else - rcu_read_lock(); - br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); - rcu_read_unlock(); - #endif +#ifdef CONFIG_BR_SUPPORT + void *br_port = NULL; - if (br_port) { - int nat25_handle_frame(struct rwnx_vif *vif, struct sk_buff *skb); + if (1) { //(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { + /* Insert NAT2.5 RX here! */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = rwnx_vif->ndev->br_port; +#else + rcu_read_lock(); + br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); + rcu_read_unlock(); +#endif - if (nat25_handle_frame(rwnx_vif, skb) == -1) { - /* priv->ext_stats.rx_data_drops++; */ - /* DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); */ - /* return FAIL; */ - } - } - } - #endif /* CONFIG_BR_SUPPORT */ + if (br_port) { + int nat25_handle_frame(struct rwnx_vif * vif, + struct sk_buff * skb); + + if (nat25_handle_frame(rwnx_vif, skb) == -1) { + /* priv->ext_stats.rx_data_drops++; */ + /* DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); */ + /* return FAIL; */ + } + } + } +#endif /* CONFIG_BR_SUPPORT */ if (skb == NULL) { txrx_err("skb is NULL\n"); return -1; } - - if(!prframe->forward) { + + if (!prframe->forward) { //printk("single: %d not forward: drop\n", prframe->seq_num); dev_kfree_skb(skb); prframe->pkt = NULL; - reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, &prframe->rxframe_list); + reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, + &prframe->rxframe_list); return 0; } //skb->data = prframe->rx_data; //skb_set_tail_pointer(skb, prframe->len); //skb->len = prframe->len; - __skb_queue_head_init(&list); - //printk("sg:%d\n", prframe->is_amsdu); - if(prframe->is_amsdu) { - rwnx_rxdata_process_amsdu(rwnx_vif->rwnx_hw, skb, rwnx_vif->vif_index, &list); //rxhdr not used below since skb free! - } else { - __skb_queue_head(&list, skb); - } + __skb_queue_head_init(&list); + //printk("sg:%d\n", prframe->is_amsdu); + if (prframe->is_amsdu) { + rwnx_rxdata_process_amsdu( + rwnx_vif->rwnx_hw, skb, rwnx_vif->vif_index, + &list); //rxhdr not used below since skb free! + } else { + __skb_queue_head(&list, skb); + } + while (!skb_queue_empty(&list)) { + rx_skb = __skb_dequeue(&list); - while (!skb_queue_empty(&list)) { - rx_skb = __skb_dequeue(&list); + rwnx_vif->net_stats.rx_packets++; + rwnx_vif->net_stats.rx_bytes += rx_skb->len; + //printk("netif sn=%d, len=%d\n", precv_frame->attrib.seq_num, skb->len); - rwnx_vif->net_stats.rx_packets++; - rwnx_vif->net_stats.rx_bytes += rx_skb->len; - //printk("netif sn=%d, len=%d\n", precv_frame->attrib.seq_num, skb->len); - - rx_skb->dev = rwnx_vif->ndev; - rx_skb->protocol = eth_type_trans(rx_skb, rwnx_vif->ndev); + rx_skb->dev = rwnx_vif->ndev; + rx_skb->protocol = eth_type_trans(rx_skb, rwnx_vif->ndev); #ifdef AICWF_ARP_OFFLOAD - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { - arpoffload_proc(rx_skb, rwnx_vif); - } + if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || + RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { + arpoffload_proc(rx_skb, rwnx_vif); + } #endif - memset(rx_skb->cb, 0, sizeof(rx_skb->cb)); + memset(rx_skb->cb, 0, sizeof(rx_skb->cb)); #ifdef CONFIG_FILTER_TCP_ACK - filter_rx_tcp_ack(rwnx_vif->rwnx_hw,rx_skb->data, cpu_to_le16(skb->len)); + filter_rx_tcp_ack(rwnx_vif->rwnx_hw, rx_skb->data, + cpu_to_le16(rx_skb->len)); #endif -#ifdef CONFIG_RX_NETIF_RECV_SKB//AIDEN test - local_bh_disable(); - netif_receive_skb(rx_skb); - local_bh_enable(); +#ifdef CONFIG_RX_NETIF_RECV_SKB //AIDEN test + local_bh_disable(); + netif_receive_skb(rx_skb); + local_bh_enable(); #else - if (in_interrupt()) { - netif_rx(rx_skb); - } else { - /* + if (in_interrupt()) { + netif_rx(rx_skb); + } else { + /* * If the receive is not processed inside an ISR, the softirqd must be woken explicitly to service the NET_RX_SOFTIRQ. * * In 2.6 kernels, this is handledby netif_rx_ni(), but in earlier kernels, we need to do it manually. */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - netif_rx_ni(rx_skb); + netif_rx_ni(rx_skb); #else - ulong flags; - netif_rx(rx_skb); - local_irq_save(flags); - RAISE_RX_SOFTIRQ(); - local_irq_restore(flags); + ulong flags; + netif_rx(rx_skb); + local_irq_save(flags); + RAISE_RX_SOFTIRQ(); + local_irq_restore(flags); #endif - } + } #endif /* CONFIG_RX_NETIF_RECV_SKB */ - } + } - prframe->pkt = NULL; - reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, &prframe->rxframe_list); + prframe->pkt = NULL; + reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, + &prframe->rxframe_list); return 0; } -bool reord_rxframes_process(struct aicwf_rx_priv *rx_priv, struct reord_ctrl *preorder_ctrl, int bforced) +bool reord_rxframes_process(struct aicwf_rx_priv *rx_priv, + struct reord_ctrl *preorder_ctrl, int bforced) { struct list_head *phead, *plist; struct recv_msdu *prframe; @@ -1594,7 +1681,8 @@ bool reord_rxframes_process(struct aicwf_rx_priv *rx_priv, struct reord_ctrl *pr } plist = phead->next; - prframe = list_entry(plist, struct recv_msdu, reord_pending_list); + prframe = + list_entry(plist, struct recv_msdu, reord_pending_list); preorder_ctrl->ind_sn = prframe->seq_num; } @@ -1603,10 +1691,11 @@ bool reord_rxframes_process(struct aicwf_rx_priv *rx_priv, struct reord_ctrl *pr return bPktInBuf; } - list_for_each_entry(prframe, phead, reord_pending_list) { + list_for_each_entry (prframe, phead, reord_pending_list) { if (!SN_LESS(preorder_ctrl->ind_sn, prframe->seq_num)) { if (SN_EQUAL(preorder_ctrl->ind_sn, prframe->seq_num)) { - preorder_ctrl->ind_sn = (preorder_ctrl->ind_sn + 1) & 0xFFF; + preorder_ctrl->ind_sn = + (preorder_ctrl->ind_sn + 1) & 0xFFF; } } else { bPktInBuf = true; @@ -1618,7 +1707,7 @@ bool reord_rxframes_process(struct aicwf_rx_priv *rx_priv, struct reord_ctrl *pr } void reord_rxframes_ind(struct aicwf_rx_priv *rx_priv, - struct reord_ctrl *preorder_ctrl) + struct reord_ctrl *preorder_ctrl) { struct list_head *phead, *plist; struct recv_msdu *prframe; @@ -1627,19 +1716,20 @@ void reord_rxframes_ind(struct aicwf_rx_priv *rx_priv, while (1) { //spin_lock_bh(&preorder_ctrl->reord_list_lock); if (list_empty(phead)) { - // spin_unlock_bh(&preorder_ctrl->reord_list_lock); + // spin_unlock_bh(&preorder_ctrl->reord_list_lock); break; } plist = phead->next; - prframe = list_entry(plist, struct recv_msdu, reord_pending_list); + prframe = + list_entry(plist, struct recv_msdu, reord_pending_list); if (!SN_LESS(preorder_ctrl->ind_sn, prframe->seq_num)) { list_del_init(&(prframe->reord_pending_list)); - // spin_unlock_bh(&preorder_ctrl->reord_list_lock); + // spin_unlock_bh(&preorder_ctrl->reord_list_lock); reord_single_frame_ind(rx_priv, prframe); } else { - // spin_unlock_bh(&preorder_ctrl->reord_list_lock); + // spin_unlock_bh(&preorder_ctrl->reord_list_lock); break; } } @@ -1648,17 +1738,17 @@ void reord_rxframes_ind(struct aicwf_rx_priv *rx_priv, int reorder_timeout = REORDER_UPDATE_TIME; module_param(reorder_timeout, int, 0660); - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) -void reord_timeout_handler (ulong data) +void reord_timeout_handler(ulong data) #else -void reord_timeout_handler (struct timer_list *t) +void reord_timeout_handler(struct timer_list *t) #endif { #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) struct reord_ctrl *preorder_ctrl = (struct reord_ctrl *)data; #else - struct reord_ctrl *preorder_ctrl = from_timer(preorder_ctrl, t, reord_timer); + struct reord_ctrl *preorder_ctrl = + from_timer(preorder_ctrl, t, reord_timer); #endif #if 0 //AIDEN @@ -1675,23 +1765,29 @@ void reord_timeout_handler (struct timer_list *t) void reord_timeout_worker(struct work_struct *work) { - struct reord_ctrl *preorder_ctrl = container_of(work, struct reord_ctrl, reord_timer_work); + struct reord_ctrl *preorder_ctrl = + container_of(work, struct reord_ctrl, reord_timer_work); struct aicwf_rx_priv *rx_priv = preorder_ctrl->rx_priv; spin_lock_bh(&preorder_ctrl->reord_list_lock); -#if 1//AIDEN - if (reord_rxframes_process(rx_priv, preorder_ctrl, true)==true) { - mod_timer(&preorder_ctrl->reord_timer, jiffies + msecs_to_jiffies(reorder_timeout/*REORDER_UPDATE_TIME*/)); +#if 1 //AIDEN + if (reord_rxframes_process(rx_priv, preorder_ctrl, true) == true) { + mod_timer( + &preorder_ctrl->reord_timer, + jiffies + + msecs_to_jiffies( + reorder_timeout /*REORDER_UPDATE_TIME*/)); } #endif - reord_rxframes_ind(rx_priv, preorder_ctrl); + reord_rxframes_ind(rx_priv, preorder_ctrl); spin_unlock_bh(&preorder_ctrl->reord_list_lock); - return ; + return; } -int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 seq_num, u8 tid, u8 forward, u8 is_amsdu) +int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, + u16 seq_num, u8 tid, u8 forward, u8 is_amsdu) { int ret = 0; u8 *mac; @@ -1708,7 +1804,8 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s return -1; } - pframe = reord_rxframe_alloc(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue); + pframe = reord_rxframe_alloc(&rx_priv->freeq_lock, + &rx_priv->rxframes_freequeue); if (!pframe) { dev_kfree_skb(skb); return -1; @@ -1727,9 +1824,11 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s if ((ntohs(eh->h_proto) == ETH_P_PAE) || is_mcast) return reord_single_frame_ind(rx_priv, pframe); - if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) + if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) mac = eh->h_dest; - else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) + else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || + (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) mac = eh->h_source; else { dev_kfree_skb(skb); @@ -1737,7 +1836,7 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s } spin_lock_bh(&rx_priv->stas_reord_lock); - list_for_each_entry(reord_info, &rx_priv->stas_reord_list, list) { + list_for_each_entry (reord_info, &rx_priv->stas_reord_list, list) { if (!memcmp(mac, reord_info->mac_addr, ETH_ALEN)) { preorder_ctrl = &reord_info->preorder_ctrl[pframe->tid]; break; @@ -1764,39 +1863,45 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s spin_unlock_bh(&rx_priv->stas_reord_lock); if (preorder_ctrl->enable == false) { - spin_lock_bh(&preorder_ctrl->reord_list_lock); + spin_lock_bh(&preorder_ctrl->reord_list_lock); preorder_ctrl->ind_sn = pframe->seq_num; reord_single_frame_ind(rx_priv, pframe); - preorder_ctrl->ind_sn = (preorder_ctrl->ind_sn + 1)%4096; - spin_unlock_bh(&rx_priv->stas_reord_lock); + preorder_ctrl->ind_sn = (preorder_ctrl->ind_sn + 1) % 4096; + spin_unlock_bh(&rx_priv->stas_reord_lock); return 0; } - spin_lock_bh(&preorder_ctrl->reord_list_lock); - if (reord_need_check(preorder_ctrl, pframe->seq_num)) { + spin_lock_bh(&preorder_ctrl->reord_list_lock); + if (reord_need_check(preorder_ctrl, pframe->seq_num)) { #if 1 - if(pframe->rx_data[42] == 0x80){//this is rtp package - if(pframe->seq_num == preorder_ctrl->ind_sn){ - printk("%s pframe->seq_num1:%d \r\n", __func__, pframe->seq_num); - reord_single_frame_ind(rx_priv, pframe);//not need to reorder - }else{ - printk("%s free pframe->seq_num:%d \r\n", __func__, pframe->seq_num); - if (pframe->pkt){ - dev_kfree_skb(pframe->pkt); - pframe->pkt = NULL; - } - reord_rxframe_free(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue, &pframe->rxframe_list); - } - }else{ - //printk("%s pframe->seq_num2:%d \r\n", __func__, pframe->seq_num); - reord_single_frame_ind(rx_priv, pframe);//not need to reorder - } + if (pframe->rx_data[42] == 0x80) { //this is rtp package + if (pframe->seq_num == preorder_ctrl->ind_sn) { + printk("%s pframe->seq_num1:%d \r\n", __func__, + pframe->seq_num); + reord_single_frame_ind( + rx_priv, pframe); //not need to reorder + } else { + printk("%s free pframe->seq_num:%d \r\n", + __func__, pframe->seq_num); + if (pframe->pkt) { + dev_kfree_skb(pframe->pkt); + pframe->pkt = NULL; + } + reord_rxframe_free(&rx_priv->freeq_lock, + &rx_priv->rxframes_freequeue, + &pframe->rxframe_list); + } + } else { + //printk("%s pframe->seq_num2:%d \r\n", __func__, pframe->seq_num); + reord_single_frame_ind(rx_priv, + pframe); //not need to reorder + } #else - reord_single_frame_ind(rx_priv, pframe);//not need to reor + reord_single_frame_ind(rx_priv, pframe); //not need to reor #endif - spin_unlock_bh(&preorder_ctrl->reord_list_lock); + spin_unlock_bh(&preorder_ctrl->reord_list_lock); return 0; - } + } if (reord_rxframe_enqueue(preorder_ctrl, pframe)) { spin_unlock_bh(&preorder_ctrl->reord_list_lock); @@ -1805,14 +1910,18 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s if (reord_rxframes_process(rx_priv, preorder_ctrl, false) == true) { if (!timer_pending(&preorder_ctrl->reord_timer)) { - ret = mod_timer(&preorder_ctrl->reord_timer, jiffies + msecs_to_jiffies(reorder_timeout/*REORDER_UPDATE_TIME*/)); + ret = mod_timer( + &preorder_ctrl->reord_timer, + jiffies + + msecs_to_jiffies( + reorder_timeout /*REORDER_UPDATE_TIME*/)); } } else { - if (timer_pending(&preorder_ctrl->reord_timer)) { + if (timer_pending(&preorder_ctrl->reord_timer)) { ret = del_timer(&preorder_ctrl->reord_timer); + } } - } - + reord_rxframes_ind(rx_priv, preorder_ctrl); spin_unlock_bh(&preorder_ctrl->reord_list_lock); @@ -1823,14 +1932,15 @@ fail: dev_kfree_skb(pframe->pkt); pframe->pkt = NULL; } - reord_rxframe_free(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue, &pframe->rxframe_list); + reord_rxframe_free(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue, + &pframe->rxframe_list); return ret; } int reord_need_check(struct reord_ctrl *preorder_ctrl, u16 seq_num) { u8 wsize = preorder_ctrl->wsize_b; - u16 wend = (preorder_ctrl->ind_sn + wsize -1) & 0xFFF; + u16 wend = (preorder_ctrl->ind_sn + wsize - 1) & 0xFFF; if (preorder_ctrl->ind_sn == 0xFFFF) { preorder_ctrl->ind_sn = seq_num; @@ -1843,16 +1953,18 @@ int reord_need_check(struct reord_ctrl *preorder_ctrl, u16 seq_num) if (SN_EQUAL(seq_num, preorder_ctrl->ind_sn)) { preorder_ctrl->ind_sn = (preorder_ctrl->ind_sn + 1) & 0xFFF; } else if (SN_LESS(wend, seq_num)) { - if (seq_num >= (wsize-1)) - preorder_ctrl->ind_sn = seq_num-(wsize-1); + if (seq_num >= (wsize - 1)) + preorder_ctrl->ind_sn = seq_num - (wsize - 1); else - preorder_ctrl->ind_sn = 0xFFF - (wsize - (seq_num + 1)) + 1; + preorder_ctrl->ind_sn = + 0xFFF - (wsize - (seq_num + 1)) + 1; } return 0; } -int reord_rxframe_enqueue(struct reord_ctrl *preorder_ctrl, struct recv_msdu *prframe) +int reord_rxframe_enqueue(struct reord_ctrl *preorder_ctrl, + struct recv_msdu *prframe) { struct list_head *preord_list = &preorder_ctrl->reord_list; struct list_head *phead, *plist; @@ -1862,8 +1974,9 @@ int reord_rxframe_enqueue(struct reord_ctrl *preorder_ctrl, struct recv_msdu *pr plist = phead->next; while (phead != plist) { - pnextrframe = list_entry(plist, struct recv_msdu, reord_pending_list); - if (SN_LESS(pnextrframe->seq_num, prframe->seq_num)) { + pnextrframe = + list_entry(plist, struct recv_msdu, reord_pending_list); + if (SN_LESS(pnextrframe->seq_num, prframe->seq_num)) { plist = plist->next; continue; } else if (SN_EQUAL(pnextrframe->seq_num, prframe->seq_num)) { @@ -1881,18 +1994,21 @@ int reord_rxframe_enqueue(struct reord_ctrl *preorder_ctrl, struct recv_msdu *pr void remove_sec_hdr_mgmt_frame(struct hw_rxhdr *hw_rxhdr, struct sk_buff *skb) { u8 hdr_len = 24; - u8 mgmt_header[24] = {0}; + u8 mgmt_header[24] = { 0 }; if (!hw_rxhdr->hwvect.ga_frame) { - if (((skb->data[0] & 0x0C) == 0) && (skb->data[1] & 0x40) == 0x40) { //protect management frame + if (((skb->data[0] & 0x0C) == 0) && + (skb->data[1] & 0x40) == 0x40) { //protect management frame printk("frame type %x\n", skb->data[0]); - if (hw_rxhdr->hwvect.decr_status == RWNX_RX_HD_DECR_CCMP128) { + if (hw_rxhdr->hwvect.decr_status == + RWNX_RX_HD_DECR_CCMP128) { memcpy(mgmt_header, skb->data, hdr_len); skb_pull(skb, 8); memcpy(skb->data, mgmt_header, hdr_len); hw_rxhdr->hwvect.len -= 8; } else { - printk("unsupport decr_status:%d\n", hw_rxhdr->hwvect.decr_status); + printk("unsupport decr_status:%d\n", + hw_rxhdr->hwvect.decr_status); } } } @@ -1919,63 +2035,65 @@ void defrag_timeout_cb(struct timer_list *t) spin_unlock_bh(&defrag_ctrl->rwnx_hw->defrag_lock); } -void rwnx_rxdata_process_amsdu(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, u8 vif_idx, - struct sk_buff_head *list) +void rwnx_rxdata_process_amsdu(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, + u8 vif_idx, struct sk_buff_head *list) { u16 len_alligned = 0; u16 sublen = 0; struct sk_buff *sub_skb = NULL; - struct rwnx_vif *rwnx_vif; + struct rwnx_vif *rwnx_vif; - //if (is_amsdu) - { - //skb_pull(skb, pull_len-8); - /* |amsdu sub1 | amsdu sub2 | ... */ - len_alligned = 0; - sublen = 0; - sub_skb = NULL; - while (skb->len > 16) { - sublen = (skb->data[12]<<8)|(skb->data[13]); - if (skb->len > (sublen+14)) - len_alligned = roundup(sublen + 14, 4); - else if (skb->len == (sublen+14)) - len_alligned = sublen+14; - else { - printk("accroding to amsdu: this will not happen\n"); - break; - } - //printk("sublen = %d, %x, %x, %x, %x\r\n", sublen,skb->data[0], skb->data[1], skb->data[12], skb->data[13]); + //if (is_amsdu) + { + //skb_pull(skb, pull_len-8); + /* |amsdu sub1 | amsdu sub2 | ... */ + len_alligned = 0; + sublen = 0; + sub_skb = NULL; + while (skb->len > 16) { + sublen = (skb->data[12] << 8) | (skb->data[13]); + if (skb->len > (sublen + 14)) + len_alligned = roundup(sublen + 14, 4); + else if (skb->len == (sublen + 14)) + len_alligned = sublen + 14; + else { + printk("accroding to amsdu: this will not happen\n"); + break; + } + //printk("sublen = %d, %x, %x, %x, %x\r\n", sublen,skb->data[0], skb->data[1], skb->data[12], skb->data[13]); #if 1 - sub_skb = __dev_alloc_skb(sublen - 6 + 12, GFP_ATOMIC); - if(!sub_skb){ - printk("sub_skb alloc fail:%d\n", sublen); - break; - } - skb_put(sub_skb, sublen - 6 + 12); - memcpy(sub_skb->data, skb->data, MAC_ADDR_LEN); - memcpy(&sub_skb->data[6], &skb->data[6], MAC_ADDR_LEN); - memcpy(&sub_skb->data[12], &skb->data[14 + 6], sublen - 6); + sub_skb = __dev_alloc_skb(sublen - 6 + 12, GFP_ATOMIC); + if (!sub_skb) { + printk("sub_skb alloc fail:%d\n", sublen); + break; + } + skb_put(sub_skb, sublen - 6 + 12); + memcpy(sub_skb->data, skb->data, MAC_ADDR_LEN); + memcpy(&sub_skb->data[6], &skb->data[6], MAC_ADDR_LEN); + memcpy(&sub_skb->data[12], &skb->data[14 + 6], + sublen - 6); - rwnx_vif = rwnx_rx_get_vif(rwnx_hw, vif_idx); - if (!rwnx_vif) { - printk("Frame received but no active vif (%d)", vif_idx); - //dev_kfree_skb(sub_skb); - break; - } + rwnx_vif = rwnx_rx_get_vif(rwnx_hw, vif_idx); + if (!rwnx_vif) { + printk("Frame received but no active vif (%d)", + vif_idx); + //dev_kfree_skb(sub_skb); + break; + } - __skb_queue_tail(list, sub_skb); + __skb_queue_tail(list, sub_skb); - //printk("a:%p\n", sub_skb); - //if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, sub_skb, hw_rxhdr)) - // dev_kfree_skb(sub_skb); + //printk("a:%p\n", sub_skb); + //if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, sub_skb, hw_rxhdr)) + // dev_kfree_skb(sub_skb); #endif - skb_pull(skb, len_alligned); - } - //printk("af:%p\n", skb); + skb_pull(skb, len_alligned); + } + //printk("af:%p\n", skb); - dev_kfree_skb(skb); - //return 0; - } + dev_kfree_skb(skb); + //return 0; + } } u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) @@ -1983,14 +2101,14 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) struct hw_rxhdr *hw_rxhdr; struct rxdesc_tag *rxdesc = NULL; struct rwnx_vif *rwnx_vif; - struct sk_buff *skb = hostid; + struct sk_buff *skb = hostid; int msdu_offset = sizeof(struct hw_rxhdr) + 2; u16_l status = 0; struct aicwf_rx_priv *rx_priv_tmp; u8 hdr_len = 24; - u8 ra[MAC_ADDR_LEN] = {0}; - u8 ta[MAC_ADDR_LEN] = {0}; - u8 ether_type[2] = {0}; + u8 ra[MAC_ADDR_LEN] = { 0 }; + u8 ta[MAC_ADDR_LEN] = { 0 }; + u8 ether_type[2] = { 0 }; u8 pull_len = 0; u16 seq_num = 0; u8_l frag_num = 0; @@ -2009,10 +2127,12 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) hw_rxhdr = (struct hw_rxhdr *)skb->data; +#ifdef AICWF_RX_REORDER if (hw_rxhdr->is_monitor_vif) { status = RX_STAT_MONITOR; - printk("monitor rx\n"); + //printk("monitor rx\n"); } +#endif if (hw_rxhdr->flags_upload) status |= RX_STAT_FORWARD; @@ -2020,9 +2140,9 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) /* Check if we need to delete the buffer */ if (status & RX_STAT_DELETE) { /* Remove the SK buffer from the rxbuf_elems table */ - #if 0 +#if 0 rwnx_ipc_rxbuf_elem_pull(rwnx_hw, skb); - #endif +#endif /* Free the buffer */ dev_kfree_skb(skb); goto end; @@ -2030,70 +2150,74 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) /* Check if we need to forward the buffer coming from a monitor interface */ if (status & RX_STAT_MONITOR) { - struct sk_buff *skb_monitor; + struct sk_buff *skb_monitor = NULL; struct hw_rxhdr hw_rxhdr_copy; u8 rtap_len; - u16 frm_len; + u16 frm_len = 0; //Check if monitor interface exists and is open rwnx_vif = rwnx_rx_get_vif(rwnx_hw, rwnx_hw->monitor_vif); if (!rwnx_vif) { - dev_err(rwnx_hw->dev, "Received monitor frame but there is no monitor interface open\n"); + dev_err(rwnx_hw->dev, + "Received monitor frame but there is no monitor interface open\n"); goto check_len_update; } - rwnx_rx_vector_convert(rwnx_hw, - &hw_rxhdr->hwvect.rx_vect1, - &hw_rxhdr->hwvect.rx_vect2); - rtap_len = rwnx_rx_rtap_hdrlen(&hw_rxhdr->hwvect.rx_vect1, false); - - // Move skb->data pointer to MAC Header or Ethernet header - skb->data += (msdu_offset + 2); //sdio/usb word allign - - //Save frame length - frm_len = le32_to_cpu(hw_rxhdr->hwvect.len); - - // Reserve space for frame - skb->len = frm_len; + rwnx_rx_vector_convert(rwnx_hw, &hw_rxhdr->hwvect.rx_vect1, + &hw_rxhdr->hwvect.rx_vect2); + rtap_len = + rwnx_rx_rtap_hdrlen(&hw_rxhdr->hwvect.rx_vect1, false); if (status == RX_STAT_MONITOR) { /* Remove the SK buffer from the rxbuf_elems table. It will also - unmap the buffer and then sync the buffer for the cpu */ + unmap the buffer and then sync the buffer for the cpu */ //rwnx_ipc_rxbuf_elem_pull(rwnx_hw, skb); + skb->data += (msdu_offset + 2); //sdio/usb word allign + + //Save frame length + frm_len = le32_to_cpu(hw_rxhdr->hwvect.len); + + // Reserve space for frame + skb->len = frm_len; //Check if there is enough space to add the radiotap header if (skb_headroom(skb) > rtap_len) { skb_monitor = skb; //Duplicate the HW Rx Header to override with the radiotap header - memcpy(&hw_rxhdr_copy, hw_rxhdr, sizeof(hw_rxhdr_copy)); + memcpy(&hw_rxhdr_copy, hw_rxhdr, + sizeof(hw_rxhdr_copy)); hw_rxhdr = &hw_rxhdr_copy; } else { //Duplicate the skb and extend the headroom - skb_monitor = skb_copy_expand(skb, rtap_len, 0, GFP_ATOMIC); + skb_monitor = skb_copy_expand(skb, rtap_len, 0, + GFP_ATOMIC); //Reset original skb->data pointer skb->data = (void *)hw_rxhdr; } } else { - skb->data = (void *)hw_rxhdr; +#ifdef CONFIG_RWNX_MON_DATA + skb_monitor = + skb_copy_expand(skb, rtap_len, 0, GFP_ATOMIC); + skb_monitor->data += + (msdu_offset + 2); //sdio/usb word allign - wiphy_err(rwnx_hw->wiphy, "RX status %d is invalid when MON_DATA is disabled\n", status); - goto check_len_update; + //Save frame length + frm_len = le32_to_cpu(hw_rxhdr->hwvect.len); +#endif } - skb_reset_tail_pointer(skb); - skb->len = 0; skb_reset_tail_pointer(skb_monitor); skb_monitor->len = 0; - skb_put(skb_monitor, frm_len); - if (rwnx_rx_monitor(rwnx_hw, rwnx_vif, skb_monitor, hw_rxhdr, rtap_len)) + + if (rwnx_rx_monitor(rwnx_hw, rwnx_vif, skb_monitor, hw_rxhdr, + rtap_len)) dev_kfree_skb(skb_monitor); if (status == RX_STAT_MONITOR) { - status |= RX_STAT_ALLOC; if (skb_monitor != skb) { dev_kfree_skb(skb); } @@ -2108,10 +2232,12 @@ check_len_update: if (status & RX_STAT_ETH_LEN_UPDATE) { /* Update Length Field inside the Ethernet Header */ - struct ethhdr *hdr = (struct ethhdr *)((u8 *)hw_rxhdr + msdu_offset); + struct ethhdr *hdr = + (struct ethhdr *)((u8 *)hw_rxhdr + msdu_offset); if (rxdesc) - hdr->h_proto = htons(rxdesc->frame_len - sizeof(struct ethhdr)); + hdr->h_proto = htons(rxdesc->frame_len - + sizeof(struct ethhdr)); } goto end; @@ -2125,9 +2251,11 @@ check_len_update: rwnx_vif = rwnx_rx_get_vif(rwnx_hw, hw_rxhdr->flags_vif_idx); if (rwnx_vif) { #ifdef CONFIG_GKI - rwnx_cfg80211_rx_spurious_frame(rwnx_vif->ndev, hdr->addr2, GFP_ATOMIC); + rwnx_cfg80211_rx_spurious_frame(rwnx_vif->ndev, + hdr->addr2, GFP_ATOMIC); #else - cfg80211_rx_spurious_frame(rwnx_vif->ndev, hdr->addr2, GFP_ATOMIC); + cfg80211_rx_spurious_frame(rwnx_vif->ndev, hdr->addr2, + GFP_ATOMIC); #endif } goto end; @@ -2135,9 +2263,8 @@ check_len_update: /* Check if we need to forward the buffer */ if (status & RX_STAT_FORWARD) { - rwnx_rx_vector_convert(rwnx_hw, - &hw_rxhdr->hwvect.rx_vect1, - &hw_rxhdr->hwvect.rx_vect2); + rwnx_rx_vector_convert(rwnx_hw, &hw_rxhdr->hwvect.rx_vect1, + &hw_rxhdr->hwvect.rx_vect2); skb_pull(skb, msdu_offset + 2); //+2 since sdio allign 58->60 #define MAC_FCTRL_MOREFRAG 0x0400 @@ -2147,7 +2274,7 @@ check_len_update: is_amsdu = 0; if ((skb->data[0] & 0x0f) == 0x08) { - if ((skb->data[0] & 0x80) == 0x80) {//qos data + if ((skb->data[0] & 0x80) == 0x80) { //qos data hdr_len = 26; tid = skb->data[24] & 0x0F; is_qos = 1; @@ -2155,10 +2282,10 @@ check_len_update: is_amsdu = 1; } - if(skb->data[1] & 0x80)// htc + if (skb->data[1] & 0x80) // htc hdr_len += 4; - if ((skb->data[1] & 0x3) == 0x1) {// to ds + if ((skb->data[1] & 0x3) == 0x1) { // to ds memcpy(ra, &skb->data[16], MAC_ADDR_LEN); memcpy(ta, &skb->data[10], MAC_ADDR_LEN); } else if ((skb->data[1] & 0x3) == 0x2) { //from ds @@ -2170,89 +2297,118 @@ check_len_update: switch (hw_rxhdr->hwvect.decr_status) { case RWNX_RX_HD_DECR_CCMP128: - pull_len += 8;//ccmp_header + pull_len += 8; //ccmp_header //skb_pull(&skb->data[skb->len-8], 8); //ccmp_mic_len - memcpy(ether_type, &skb->data[hdr_len + 6 + 8], 2); + memcpy(ether_type, &skb->data[hdr_len + 6 + 8], + 2); break; case RWNX_RX_HD_DECR_TKIP: - pull_len += 8;//tkip_header - memcpy(ether_type, &skb->data[hdr_len + 6 + 8], 2); + pull_len += 8; //tkip_header + memcpy(ether_type, &skb->data[hdr_len + 6 + 8], + 2); break; case RWNX_RX_HD_DECR_WEP: - pull_len += 4;//wep_header - memcpy(ether_type, &skb->data[hdr_len + 6 + 4], 2); + pull_len += 4; //wep_header + memcpy(ether_type, &skb->data[hdr_len + 6 + 4], + 2); break; case RWNX_RX_HD_DECR_WAPI: - pull_len += 18;//wapi_header - memcpy(ether_type, &skb->data[hdr_len + 6 + 18], 2); - break; + pull_len += 18; //wapi_header + memcpy(ether_type, &skb->data[hdr_len + 6 + 18], + 2); + break; default: memcpy(ether_type, &skb->data[hdr_len + 6], 2); break; } - if(is_amsdu) - hw_rxhdr->flags_is_amsdu = 1; - else - hw_rxhdr->flags_is_amsdu = 0; + if (is_amsdu) + hw_rxhdr->flags_is_amsdu = 1; + else + hw_rxhdr->flags_is_amsdu = 0; if (is_amsdu) { - #if 1 - skb_pull(skb, pull_len-8); - #else - skb_pull(skb, pull_len-8); +#if 1 + skb_pull(skb, pull_len - 8); +#else + skb_pull(skb, pull_len - 8); /* |amsdu sub1 | amsdu sub2 | ... */ len_alligned = 0; sublen = 0; sub_skb = NULL; //printk("is_len:%d, pull:%d\n", skb->len, pull_len); while (skb->len > 16) { - sublen = (skb->data[12]<<8)|(skb->data[13]); - if (skb->len > (sublen+14)) - len_alligned = roundup(sublen + 14, 4); - else if (skb->len == (sublen+14)) - len_alligned = sublen+14; + sublen = (skb->data[12] << 8) | + (skb->data[13]); + if (skb->len > (sublen + 14)) + len_alligned = + roundup(sublen + 14, 4); + else if (skb->len == (sublen + 14)) + len_alligned = sublen + 14; else { printk("accroding to amsdu: this will not happen\n"); break; } //printk("sublen = %d, %x, %x, %x, %x\r\n", sublen,skb->data[0], skb->data[1], skb->data[12], skb->data[13]); #if 1 - sub_skb = __dev_alloc_skb(sublen - 6 + 12, GFP_KERNEL); + sub_skb = __dev_alloc_skb( + sublen - 6 + 12, GFP_KERNEL); skb_put(sub_skb, sublen - 6 + 12); - memcpy(sub_skb->data, skb->data, MAC_ADDR_LEN); - memcpy(&sub_skb->data[6], &skb->data[6], MAC_ADDR_LEN); - memcpy(&sub_skb->data[12], &skb->data[14 + 6], sublen - 6); + memcpy(sub_skb->data, skb->data, + MAC_ADDR_LEN); + memcpy(&sub_skb->data[6], &skb->data[6], + MAC_ADDR_LEN); + memcpy(&sub_skb->data[12], + &skb->data[14 + 6], sublen - 6); - rwnx_vif = rwnx_rx_get_vif(rwnx_hw, hw_rxhdr->flags_vif_idx); + rwnx_vif = rwnx_rx_get_vif( + rwnx_hw, + hw_rxhdr->flags_vif_idx); if (!rwnx_vif) { - printk("Frame received but no active vif (%d)", hw_rxhdr->flags_vif_idx); + printk("Frame received but no active vif (%d)", + hw_rxhdr->flags_vif_idx); dev_kfree_skb(sub_skb); break; } - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, sub_skb, hw_rxhdr)) + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, + sub_skb, + hw_rxhdr)) dev_kfree_skb(sub_skb); #endif skb_pull(skb, len_alligned); } dev_kfree_skb(skb); return 0; - #endif +#endif } if (hw_rxhdr->flags_dst_idx != RWNX_INVALID_STA) sta_idx = hw_rxhdr->flags_dst_idx; - if (!hw_rxhdr->flags_need_reord && ((frame_ctrl & MAC_FCTRL_MOREFRAG) || frag_num)) { - printk("rxfrag:%d,%d,%d,sn=%d,%d\r\n", (frame_ctrl & MAC_FCTRL_MOREFRAG), frag_num, skb->len, seq_num,pull_len); + if (!hw_rxhdr->flags_need_reord && + ((frame_ctrl & MAC_FCTRL_MOREFRAG) || frag_num)) { + printk("rxfrag:%d,%d,%d,sn=%d,%d\r\n", + (frame_ctrl & MAC_FCTRL_MOREFRAG), + frag_num, skb->len, seq_num, pull_len); if (frame_ctrl & MAC_FCTRL_MOREFRAG) { spin_lock_bh(&rwnx_hw->defrag_lock); - if (!list_empty(&rwnx_hw->defrag_list)) { - list_for_each_entry(defrag_info_tmp, &rwnx_hw->defrag_list, list) { - if ((defrag_info_tmp->sn == seq_num) && (defrag_info_tmp->tid == tid) && \ - defrag_info_tmp->sta_idx == sta_idx) { - defrag_info = defrag_info_tmp; + if (!list_empty( + &rwnx_hw->defrag_list)) { + list_for_each_entry ( + defrag_info_tmp, + &rwnx_hw->defrag_list, + list) { + if ((defrag_info_tmp + ->sn == + seq_num) && + (defrag_info_tmp + ->tid == + tid) && + defrag_info_tmp->sta_idx == + sta_idx) { + defrag_info = + defrag_info_tmp; break; } } @@ -2261,115 +2417,208 @@ check_len_update: //printk("rx frag: sn=%d, fn=%d, skb->len=%d\r\n", seq_num, frag_num, skb->len); if (defrag_info) { is_frag = 1; - if (defrag_info->next_fn != frag_num) { - printk("discard:%d:%d\n", defrag_info->next_fn, frag_num); + if (defrag_info->next_fn != + frag_num) { + printk("discard:%d:%d\n", + defrag_info + ->next_fn, + frag_num); dev_kfree_skb(skb); - spin_unlock_bh(&rwnx_hw->defrag_lock); + spin_unlock_bh( + &rwnx_hw->defrag_lock); return 0; } - skb_put(defrag_info->skb, skb->len-(pull_len-8)); - memcpy(&defrag_info->skb->data[defrag_info->frm_len], \ - &skb->data[pull_len-8], skb->len - (pull_len-8)); + skb_put(defrag_info->skb, + skb->len - + (pull_len - 8)); + memcpy(&defrag_info->skb->data + [defrag_info + ->frm_len], + &skb->data[pull_len - 8], + skb->len - + (pull_len - 8)); //printk("middle:%d,%d\n", skb->len-(pull_len-8), skb->len); - defrag_info->frm_len += (skb->len - (pull_len - 8)); + defrag_info->frm_len += + (skb->len - + (pull_len - 8)); defrag_info->next_fn++; dev_kfree_skb(skb); - spin_unlock_bh(&rwnx_hw->defrag_lock); + spin_unlock_bh( + &rwnx_hw->defrag_lock); return 0; } else { - defrag_info = kzalloc(sizeof(struct defrag_ctrl_info), GFP_KERNEL); + defrag_info = kzalloc( + sizeof(struct defrag_ctrl_info), + GFP_KERNEL); if (defrag_info == NULL) { printk("no defrag_ctrl_info\r\n"); dev_kfree_skb(skb); - spin_unlock_bh(&rwnx_hw->defrag_lock); + spin_unlock_bh( + &rwnx_hw->defrag_lock); return 0; } - defrag_info->skb = __dev_alloc_skb(2000, GFP_KERNEL); + defrag_info->skb = + __dev_alloc_skb( + 2000, + GFP_KERNEL); if (defrag_info->skb == NULL) { printk("no fragment skb\r\n"); dev_kfree_skb(skb); kfree(defrag_info); - spin_unlock_bh(&rwnx_hw->defrag_lock); + spin_unlock_bh( + &rwnx_hw->defrag_lock); return 0; } is_frag = 1; skb_pull(skb, pull_len); skb_push(skb, 14); - memcpy(skb->data, ra, MAC_ADDR_LEN); - memcpy(&skb->data[6], ta, MAC_ADDR_LEN); - memcpy(&skb->data[12], ether_type, 2); + memcpy(skb->data, ra, + MAC_ADDR_LEN); + memcpy(&skb->data[6], ta, + MAC_ADDR_LEN); + memcpy(&skb->data[12], + ether_type, 2); defrag_info->sn = seq_num; defrag_info->next_fn = 1; defrag_info->tid = tid; defrag_info->sta_idx = sta_idx; - skb_put(defrag_info->skb, skb->len); - memcpy(defrag_info->skb->data, skb->data, skb->len); + skb_put(defrag_info->skb, + skb->len); + memcpy(defrag_info->skb->data, + skb->data, skb->len); defrag_info->frm_len = skb->len; defrag_info->rwnx_hw = rwnx_hw; //printk("first:%p,%p,%p,%p,%p, %d,%d\r\n", defrag_info, defrag_info->skb, defrag_info->skb->head, defrag_info->skb->tail, defrag_info->skb->end, defrag_info->frm_len, skb->len); - list_add_tail(&defrag_info->list, &rwnx_hw->defrag_list); - spin_unlock_bh(&rwnx_hw->defrag_lock); + list_add_tail( + &defrag_info->list, + &rwnx_hw->defrag_list); + spin_unlock_bh( + &rwnx_hw->defrag_lock); #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) - init_timer(&defrag_info->defrag_timer); - defrag_info->defrag_timer.data = (unsigned long)defrag_info; - defrag_info->defrag_timer.function = defrag_timeout_cb; + init_timer( + &defrag_info + ->defrag_timer); + defrag_info->defrag_timer.data = + (unsigned long) + defrag_info; + defrag_info->defrag_timer + .function = + defrag_timeout_cb; #else - timer_setup(&defrag_info->defrag_timer, defrag_timeout_cb, 0); + timer_setup( + &defrag_info + ->defrag_timer, + defrag_timeout_cb, 0); #endif - ret = mod_timer(&defrag_info->defrag_timer, jiffies + msecs_to_jiffies(DEFRAG_MAX_WAIT)); + ret = mod_timer( + &defrag_info + ->defrag_timer, + jiffies + + msecs_to_jiffies( + DEFRAG_MAX_WAIT)); dev_kfree_skb(skb); return 0; } } else { //check whether the last fragment - if (!list_empty(&rwnx_hw->defrag_list)) { - spin_lock_bh(&rwnx_hw->defrag_lock); - list_for_each_entry(defrag_info_tmp, &rwnx_hw->defrag_list, list) { - if (((defrag_info_tmp->sn == seq_num) && (defrag_info_tmp->tid == tid) && \ - defrag_info_tmp->sta_idx == sta_idx)) { - defrag_info = defrag_info_tmp; + if (!list_empty( + &rwnx_hw->defrag_list)) { + spin_lock_bh( + &rwnx_hw->defrag_lock); + list_for_each_entry ( + defrag_info_tmp, + &rwnx_hw->defrag_list, + list) { + if (((defrag_info_tmp + ->sn == + seq_num) && + (defrag_info_tmp + ->tid == + tid) && + defrag_info_tmp->sta_idx == + sta_idx)) { + defrag_info = + defrag_info_tmp; break; } } - if (!defrag_info) - spin_unlock_bh(&rwnx_hw->defrag_lock); + if (!defrag_info) + spin_unlock_bh( + &rwnx_hw->defrag_lock); else { - if (defrag_info->next_fn != frag_num) { - printk("discard:%d:%d\n", defrag_info->next_fn, frag_num); - dev_kfree_skb(skb); - spin_unlock_bh(&rwnx_hw->defrag_lock); + if (defrag_info + ->next_fn != + frag_num) { + printk("discard:%d:%d\n", + defrag_info + ->next_fn, + frag_num); + dev_kfree_skb( + skb); + spin_unlock_bh( + &rwnx_hw->defrag_lock); return 0; } - skb_put(defrag_info->skb, skb->len - (pull_len-8)); - memcpy(&defrag_info->skb->data[defrag_info->frm_len], \ - &skb->data[pull_len-8], skb->len - (pull_len-8)); - defrag_info->frm_len += (skb->len - (pull_len-8)); + skb_put(defrag_info->skb, + skb->len - + (pull_len - + 8)); + memcpy(&defrag_info->skb->data + [defrag_info + ->frm_len], + &skb->data[pull_len - + 8], + skb->len - + (pull_len - + 8)); + defrag_info->frm_len += + (skb->len - + (pull_len - + 8)); is_frag = 1; //printk("last: sn=%d, fn=%d, %d, %d\r\n", seq_num, frag_num, defrag_info->frm_len, skb->len); - rwnx_vif = rwnx_rx_get_vif(rwnx_hw, hw_rxhdr->flags_vif_idx); + rwnx_vif = rwnx_rx_get_vif( + rwnx_hw, + hw_rxhdr->flags_vif_idx); if (!rwnx_vif) { - printk("Frame received but no active vif (%d)", hw_rxhdr->flags_vif_idx); - dev_kfree_skb(skb); - spin_unlock_bh(&rwnx_hw->defrag_lock); + printk("Frame received but no active vif (%d)", + hw_rxhdr->flags_vif_idx); + dev_kfree_skb( + skb); + spin_unlock_bh( + &rwnx_hw->defrag_lock); return 0; } dev_kfree_skb(skb); - skb_tmp = defrag_info->skb; - list_del_init(&defrag_info->list); - if (timer_pending(&defrag_info->defrag_timer)) { - ret = del_timer(&defrag_info->defrag_timer); + skb_tmp = + defrag_info->skb; + list_del_init( + &defrag_info + ->list); + if (timer_pending( + &defrag_info + ->defrag_timer)) { + ret = del_timer( + &defrag_info + ->defrag_timer); } kfree(defrag_info); - spin_unlock_bh(&rwnx_hw->defrag_lock); + spin_unlock_bh( + &rwnx_hw->defrag_lock); - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb_tmp, hw_rxhdr)) - dev_kfree_skb(skb_tmp); + if (!rwnx_rx_data_skb( + rwnx_hw, + rwnx_vif, + skb_tmp, + hw_rxhdr)) + dev_kfree_skb( + skb_tmp); return 0; } @@ -2390,11 +2639,13 @@ check_len_update: remove_sec_hdr_mgmt_frame(hw_rxhdr, skb); rwnx_rx_mgmt_any(rwnx_hw, skb, hw_rxhdr); } else { - rwnx_vif = rwnx_rx_get_vif(rwnx_hw, hw_rxhdr->flags_vif_idx); + rwnx_vif = rwnx_rx_get_vif(rwnx_hw, + hw_rxhdr->flags_vif_idx); if (!rwnx_vif) { - dev_err(rwnx_hw->dev, "Frame received but no active vif(%d)", - hw_rxhdr->flags_vif_idx); + dev_err(rwnx_hw->dev, + "Frame received but no active vif(%d)", + hw_rxhdr->flags_vif_idx); dev_kfree_skb(skb); goto end; } @@ -2402,61 +2653,87 @@ check_len_update: if (hw_rxhdr->flags_sta_idx != RWNX_INVALID_STA) { struct rwnx_sta *sta; - sta = &rwnx_hw->sta_table[hw_rxhdr->flags_sta_idx]; + sta = &rwnx_hw->sta_table + [hw_rxhdr->flags_sta_idx]; rwnx_rx_statistic(rwnx_hw, hw_rxhdr, sta); if (sta->vlan_idx != rwnx_vif->vif_index) { - rwnx_vif = rwnx_hw->vif_table[sta->vlan_idx]; + rwnx_vif = + rwnx_hw->vif_table[sta->vlan_idx]; if (!rwnx_vif) { dev_kfree_skb(skb); goto end; } } - if (hw_rxhdr->flags_is_4addr && !rwnx_vif->use_4addr) { + if (hw_rxhdr->flags_is_4addr && + !rwnx_vif->use_4addr) { #ifdef CONFIG_GKI - rwnx_cfg80211_rx_unexpected_4addr_frame(rwnx_vif->ndev, - sta->mac_addr, GFP_ATOMIC); + rwnx_cfg80211_rx_unexpected_4addr_frame( + rwnx_vif->ndev, sta->mac_addr, + GFP_ATOMIC); #else - cfg80211_rx_unexpected_4addr_frame(rwnx_vif->ndev, - sta->mac_addr, GFP_ATOMIC); + cfg80211_rx_unexpected_4addr_frame( + rwnx_vif->ndev, sta->mac_addr, + GFP_ATOMIC); #endif } } - skb->priority = 256 + tid;//hw_rxhdr->flags_user_prio; + skb->priority = 256 + tid; //hw_rxhdr->flags_user_prio; #ifdef AICWF_RX_REORDER rx_priv_tmp = rx_priv; rx_priv_tmp->rwnx_vif = (void *)rwnx_vif; - if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) { + if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || + (rwnx_vif->wdev.iftype == + NL80211_IFTYPE_P2P_CLIENT)) { if (is_qos && hw_rxhdr->flags_need_reord) - reord_process_unit((struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 1, hw_rxhdr->flags_is_amsdu); - else if (is_qos && !hw_rxhdr->flags_need_reord) { - reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr) && !hw_rxhdr->flags_is_amsdu) + reord_process_unit( + (struct aicwf_rx_priv *)rx_priv, + skb, seq_num, tid, 1, + hw_rxhdr->flags_is_amsdu); + else if (is_qos && + !hw_rxhdr->flags_need_reord) { + reord_flush_tid( + (struct aicwf_rx_priv *)rx_priv, + skb, tid); + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, + skb, hw_rxhdr) && + !hw_rxhdr->flags_is_amsdu) dev_kfree_skb(skb); } else { - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr) && !hw_rxhdr->flags_is_amsdu) + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, + skb, hw_rxhdr) && + !hw_rxhdr->flags_is_amsdu) dev_kfree_skb(skb); } - } else if ((rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO)) { + } else if ((rwnx_vif->wdev.iftype == + NL80211_IFTYPE_AP) || + (rwnx_vif->wdev.iftype == + NL80211_IFTYPE_P2P_GO)) { #if 1 skb_reset_mac_header(skb); eth = eth_hdr(skb); //printk("da:%pM, %x,%x, len=%d\n", eth->h_dest, skb->data[12], skb->data[13], skb->len); - if (unlikely(is_multicast_ether_addr(eth->h_dest))) { + if (unlikely(is_multicast_ether_addr( + eth->h_dest))) { /* broadcast pkt need to be forwared to upper layer and resent on wireless interface */ resend = true; } else { /* unicast pkt for STA inside the BSS, no need to forward to upper layer simply resend on wireless interface */ - if (hw_rxhdr->flags_dst_idx != RWNX_INVALID_STA) { - struct rwnx_sta *sta = &rwnx_hw->sta_table[hw_rxhdr->flags_dst_idx]; - if (sta->valid && (sta->vlan_idx == rwnx_vif->vif_index)) { + if (hw_rxhdr->flags_dst_idx != + RWNX_INVALID_STA) { + struct rwnx_sta *sta = + &rwnx_hw->sta_table + [hw_rxhdr->flags_dst_idx]; + if (sta->valid && + (sta->vlan_idx == + rwnx_vif->vif_index)) { resend = true; forward = false; } @@ -2464,27 +2741,52 @@ check_len_update: } if (resend) - rwnx_rx_data_skb_resend(rwnx_hw, rwnx_vif, skb, hw_rxhdr); + rwnx_rx_data_skb_resend(rwnx_hw, + rwnx_vif, skb, + hw_rxhdr); if (forward) { - if (is_qos && hw_rxhdr->flags_need_reord) - reord_process_unit((struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 1, hw_rxhdr->flags_is_amsdu); - else if (is_qos && !hw_rxhdr->flags_need_reord) { - reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); - rwnx_rx_data_skb_forward(rwnx_hw, rwnx_vif, skb, hw_rxhdr); + if (is_qos && + hw_rxhdr->flags_need_reord) + reord_process_unit( + (struct aicwf_rx_priv *) + rx_priv, + skb, seq_num, tid, 1, + hw_rxhdr->flags_is_amsdu); + else if (is_qos && + !hw_rxhdr->flags_need_reord) { + reord_flush_tid( + (struct aicwf_rx_priv *) + rx_priv, + skb, tid); + rwnx_rx_data_skb_forward( + rwnx_hw, rwnx_vif, skb, + hw_rxhdr); } else - rwnx_rx_data_skb_forward(rwnx_hw, rwnx_vif, skb, hw_rxhdr); - } else if(resend) { - if (is_qos && hw_rxhdr->flags_need_reord) - reord_process_unit((struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 0, hw_rxhdr->flags_is_amsdu); - else if (is_qos && !hw_rxhdr->flags_need_reord) { - reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); + rwnx_rx_data_skb_forward( + rwnx_hw, rwnx_vif, skb, + hw_rxhdr); + } else if (resend) { + if (is_qos && + hw_rxhdr->flags_need_reord) + reord_process_unit( + (struct aicwf_rx_priv *) + rx_priv, + skb, seq_num, tid, 0, + hw_rxhdr->flags_is_amsdu); + else if (is_qos && + !hw_rxhdr->flags_need_reord) { + reord_flush_tid( + (struct aicwf_rx_priv *) + rx_priv, + skb, tid); dev_kfree_skb(skb); - } - }else + } + } else dev_kfree_skb(skb); #else - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr)) + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, + hw_rxhdr)) dev_kfree_skb(skb); #endif } @@ -2498,4 +2800,3 @@ check_len_update: end: return 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.h index 366353503..2bafe2071 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_rx.h @@ -12,10 +12,10 @@ #include "aicwf_txrxif.h" -#define SERVER_PORT 67 -#define CLIENT_PORT 68 -#define DHCP_MAGIC 0x63825363 -#define DHCP_ACK 5 +#define SERVER_PORT 67 +#define CLIENT_PORT 68 +#define DHCP_MAGIC 0x63825363 +#define DHCP_ACK 5 #define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */ #define DHCP_OPTION_END 255 @@ -38,147 +38,146 @@ enum rx_status_bits { RX_STAT_MONITOR = 1 << 7, }; - /* * Decryption status subfields. * { */ -#define RWNX_RX_HD_DECR_UNENC 0 // ENCRYPTION TYPE NONE -#define RWNX_RX_HD_DECR_WEP 1 // ENCRYPTION TYPE WEP -#define RWNX_RX_HD_DECR_TKIP 2 // ENCRYPTION TYPE TKIP -#define RWNX_RX_HD_DECR_CCMP128 3 // ENCRYPTION TYPE CCMP128 -#define RWNX_RX_HD_DECR_CCMP256 4 // ENCRYPTION TYPE CCMP256 -#define RWNX_RX_HD_DECR_GCMP128 5 // ENCRYPTION TYPE GCMP128 -#define RWNX_RX_HD_DECR_GCMP256 6 // ENCRYPTION TYPE GCMP256 -#define RWNX_RX_HD_DECR_WAPI 7 // ENCRYPTION TYPE WAPI +#define RWNX_RX_HD_DECR_UNENC 0 // ENCRYPTION TYPE NONE +#define RWNX_RX_HD_DECR_WEP 1 // ENCRYPTION TYPE WEP +#define RWNX_RX_HD_DECR_TKIP 2 // ENCRYPTION TYPE TKIP +#define RWNX_RX_HD_DECR_CCMP128 3 // ENCRYPTION TYPE CCMP128 +#define RWNX_RX_HD_DECR_CCMP256 4 // ENCRYPTION TYPE CCMP256 +#define RWNX_RX_HD_DECR_GCMP128 5 // ENCRYPTION TYPE GCMP128 +#define RWNX_RX_HD_DECR_GCMP256 6 // ENCRYPTION TYPE GCMP256 +#define RWNX_RX_HD_DECR_WAPI 7 // ENCRYPTION TYPE WAPI // @} //#ifdef CONFIG_RWNX_MON_DATA #if 0 -#define RX_MACHDR_BACKUP_LEN 64 +#define RX_MACHDR_BACKUP_LEN 64 #endif struct rx_vector_1_old { /** Receive Vector 1a */ - u32 leg_length :12; - u32 leg_rate : 4; - u32 ht_length :16; + u32 leg_length : 12; + u32 leg_rate : 4; + u32 ht_length : 16; /** Receive Vector 1b */ - u32 _ht_length : 4; // FIXME - u32 short_gi : 1; - u32 stbc : 2; - u32 smoothing : 1; - u32 mcs : 7; - u32 pre_type : 1; - u32 format_mod : 3; - u32 ch_bw : 2; - u32 n_sts : 3; - u32 lsig_valid : 1; - u32 sounding : 1; - u32 num_extn_ss : 2; - u32 aggregation : 1; - u32 fec_coding : 1; - u32 dyn_bw : 1; - u32 doze_not_allowed : 1; + u32 _ht_length : 4; // FIXME + u32 short_gi : 1; + u32 stbc : 2; + u32 smoothing : 1; + u32 mcs : 7; + u32 pre_type : 1; + u32 format_mod : 3; + u32 ch_bw : 2; + u32 n_sts : 3; + u32 lsig_valid : 1; + u32 sounding : 1; + u32 num_extn_ss : 2; + u32 aggregation : 1; + u32 fec_coding : 1; + u32 dyn_bw : 1; + u32 doze_not_allowed : 1; /** Receive Vector 1c */ - u32 antenna_set : 8; - u32 partial_aid : 9; - u32 group_id : 6; - u32 first_user : 1; - s32 rssi1 : 8; + u32 antenna_set : 8; + u32 partial_aid : 9; + u32 group_id : 6; + u32 first_user : 1; + s32 rssi1 : 8; /** Receive Vector 1d */ - s32 rssi2 : 8; - s32 rssi3 : 8; - s32 rssi4 : 8; - u32 reserved_1d : 8; + s32 rssi2 : 8; + s32 rssi3 : 8; + s32 rssi4 : 8; + u32 reserved_1d : 8; }; struct rx_leg_vect { - u8 dyn_bw_in_non_ht : 1; - u8 chn_bw_in_non_ht : 2; - u8 rsvd_nht : 4; - u8 lsig_valid : 1; + u8 dyn_bw_in_non_ht : 1; + u8 chn_bw_in_non_ht : 2; + u8 rsvd_nht : 4; + u8 lsig_valid : 1; } __packed; struct rx_ht_vect { - u16 sounding : 1; - u16 smoothing : 1; - u16 short_gi : 1; - u16 aggregation : 1; - u16 stbc : 1; - u16 num_extn_ss : 2; - u16 lsig_valid : 1; - u16 mcs : 7; - u16 fec : 1; - u16 length :16; + u16 sounding : 1; + u16 smoothing : 1; + u16 short_gi : 1; + u16 aggregation : 1; + u16 stbc : 1; + u16 num_extn_ss : 2; + u16 lsig_valid : 1; + u16 mcs : 7; + u16 fec : 1; + u16 length : 16; } __packed; struct rx_vht_vect { - u8 sounding : 1; - u8 beamformed : 1; - u8 short_gi : 1; - u8 rsvd_vht1 : 1; - u8 stbc : 1; - u8 doze_not_allowed : 1; - u8 first_user : 1; - u8 rsvd_vht2 : 1; - u16 partial_aid : 9; - u16 group_id : 6; - u16 rsvd_vht3 : 1; - u32 mcs : 4; - u32 nss : 3; - u32 fec : 1; - u32 length :20; - u32 rsvd_vht4 : 4; + u8 sounding : 1; + u8 beamformed : 1; + u8 short_gi : 1; + u8 rsvd_vht1 : 1; + u8 stbc : 1; + u8 doze_not_allowed : 1; + u8 first_user : 1; + u8 rsvd_vht2 : 1; + u16 partial_aid : 9; + u16 group_id : 6; + u16 rsvd_vht3 : 1; + u32 mcs : 4; + u32 nss : 3; + u32 fec : 1; + u32 length : 20; + u32 rsvd_vht4 : 4; } __packed; struct rx_he_vect { - u8 sounding : 1; - u8 beamformed : 1; - u8 gi_type : 2; - u8 stbc : 1; - u8 rsvd_he1 : 3; + u8 sounding : 1; + u8 beamformed : 1; + u8 gi_type : 2; + u8 stbc : 1; + u8 rsvd_he1 : 3; - u8 uplink_flag : 1; - u8 beam_change : 1; - u8 dcm : 1; - u8 he_ltf_type : 2; - u8 doppler : 1; - u8 rsvd_he2 : 2; + u8 uplink_flag : 1; + u8 beam_change : 1; + u8 dcm : 1; + u8 he_ltf_type : 2; + u8 doppler : 1; + u8 rsvd_he2 : 2; - u8 bss_color : 6; - u8 rsvd_he3 : 2; + u8 bss_color : 6; + u8 rsvd_he3 : 2; - u8 txop_duration : 7; - u8 rsvd_he4 : 1; + u8 txop_duration : 7; + u8 rsvd_he4 : 1; - u8 pe_duration : 4; - u8 spatial_reuse : 4; + u8 pe_duration : 4; + u8 spatial_reuse : 4; - u8 sig_b_comp_mode : 1; - u8 dcm_sig_b : 1; - u8 mcs_sig_b : 3; - u8 ru_size : 3; + u8 sig_b_comp_mode : 1; + u8 dcm_sig_b : 1; + u8 mcs_sig_b : 3; + u8 ru_size : 3; - u32 mcs : 4; - u32 nss : 3; - u32 fec : 1; - u32 length :20; - u32 rsvd_he6 : 4; + u32 mcs : 4; + u32 nss : 3; + u32 fec : 1; + u32 length : 20; + u32 rsvd_he6 : 4; } __packed; struct rx_vector_1 { - u8 format_mod : 4; - u8 ch_bw : 3; - u8 pre_type : 1; - u8 antenna_set : 8; - s32 rssi_leg : 8; - u32 leg_length :12; - u32 leg_rate : 4; - s32 rssi1 : 8; + u8 format_mod : 4; + u8 ch_bw : 3; + u8 pre_type : 1; + u8 antenna_set : 8; + s32 rssi_leg : 8; + u32 leg_length : 12; + u32 leg_rate : 4; + s32 rssi1 : 8; union { struct rx_leg_vect leg; @@ -190,51 +189,50 @@ struct rx_vector_1 { struct rx_vector_2_old { /** Receive Vector 2a */ - u32 rcpi : 8; - u32 evm1 : 8; - u32 evm2 : 8; - u32 evm3 : 8; + u32 rcpi : 8; + u32 evm1 : 8; + u32 evm2 : 8; + u32 evm3 : 8; /** Receive Vector 2b */ - u32 evm4 : 8; - u32 reserved2b_1 : 8; - u32 reserved2b_2 : 8; - u32 reserved2b_3 : 8; - + u32 evm4 : 8; + u32 reserved2b_1 : 8; + u32 reserved2b_2 : 8; + u32 reserved2b_3 : 8; }; struct rx_vector_2 { /** Receive Vector 2a */ - u32 rcpi1 : 8; - u32 rcpi2 : 8; - u32 rcpi3 : 8; - u32 rcpi4 : 8; + u32 rcpi1 : 8; + u32 rcpi2 : 8; + u32 rcpi3 : 8; + u32 rcpi4 : 8; /** Receive Vector 2b */ - u32 evm1 : 8; - u32 evm2 : 8; - u32 evm3 : 8; - u32 evm4 : 8; + u32 evm1 : 8; + u32 evm2 : 8; + u32 evm3 : 8; + u32 evm4 : 8; }; struct phy_channel_info_desc { /** PHY channel information 1 */ - u32 phy_band : 8; - u32 phy_channel_type : 8; - u32 phy_prim20_freq : 16; + u32 phy_band : 8; + u32 phy_channel_type : 8; + u32 phy_prim20_freq : 16; /** PHY channel information 2 */ - u32 phy_center1_freq : 16; - u32 phy_center2_freq : 16; + u32 phy_center1_freq : 16; + u32 phy_center2_freq : 16; }; struct hw_vect { /** Total length for the MPDU transfer */ - u32 len :16; + u32 len : 16; - u32 reserved : 8;//data type is included + u32 reserved : 8; //data type is included /** AMPDU Status Information */ - u32 mpdu_cnt : 6; - u32 ampdu_cnt : 2; + u32 mpdu_cnt : 6; + u32 ampdu_cnt : 2; /** TSF Low */ __le32 tsf_lo; @@ -247,29 +245,29 @@ struct hw_vect { struct rx_vector_2 rx_vect2; /** Status **/ - u32 rx_vect2_valid : 1; - u32 resp_frame : 1; + u32 rx_vect2_valid : 1; + u32 resp_frame : 1; /** Decryption Status */ - u32 decr_status : 3; - u32 rx_fifo_oflow : 1; + u32 decr_status : 3; + u32 rx_fifo_oflow : 1; /** Frame Unsuccessful */ - u32 undef_err : 1; - u32 phy_err : 1; - u32 fcs_err : 1; - u32 addr_mismatch : 1; - u32 ga_frame : 1; - u32 current_ac : 2; + u32 undef_err : 1; + u32 phy_err : 1; + u32 fcs_err : 1; + u32 addr_mismatch : 1; + u32 ga_frame : 1; + u32 current_ac : 2; - u32 frm_successful_rx : 1; + u32 frm_successful_rx : 1; /** Descriptor Done */ - u32 desc_done_rx : 1; + u32 desc_done_rx : 1; /** Key Storage RAM Index */ - u32 key_sram_index : 10; + u32 key_sram_index : 10; /** Key Storage RAM Index Valid */ - u32 key_sram_v : 1; - u32 type : 2; - u32 subtype : 4; + u32 key_sram_v : 1; + u32 type : 2; + u32 subtype : 4; }; //#ifdef CONFIG_RWNX_MON_DATA @@ -291,36 +289,40 @@ struct hw_rxhdr { struct phy_channel_info_desc phy_info; /** RX flags */ - u32 flags_is_amsdu : 1; - u32 flags_is_80211_mpdu: 1; - u32 flags_is_4addr : 1; - u32 flags_new_peer : 1; + u32 flags_is_amsdu : 1; + u32 flags_is_80211_mpdu : 1; + u32 flags_is_4addr : 1; + u32 flags_new_peer : 1; #if defined(AICWF_SDIO_SUPPORT) || defined(AICWF_USB_SUPPORT) - u32 flags_user_prio : 1; // aic: fw not fill any more - u32 flags_need_reord : 1; - u32 flags_upload : 1; + u32 flags_user_prio : 1; // aic: fw not fill any more + u32 flags_need_reord : 1; + u32 flags_upload : 1; #else - u32 flags_user_prio : 3; + u32 flags_user_prio : 3; #endif #ifndef AICWF_RX_REORDER - u32 flags_rsvd0 : 1; + u32 flags_rsvd0 : 1; #else - u32 is_monitor_vif : 1; + u32 is_monitor_vif : 1; #endif - u32 flags_vif_idx : 8; // 0xFF if invalid VIF index - u32 flags_sta_idx : 8; // 0xFF if invalid STA index - u32 flags_dst_idx : 8; // 0xFF if unknown destination STA + u32 flags_vif_idx : 8; // 0xFF if invalid VIF index + u32 flags_sta_idx : 8; // 0xFF if invalid STA index + u32 flags_dst_idx : 8; // 0xFF if unknown destination STA //#ifdef CONFIG_RWNX_MON_DATA #if 0 /// MAC header backup descriptor (used only for MSDU when there is a monitor and a data interface) struct mon_machdrdesc mac_hdr_backup; #endif /** Pattern indicating if the buffer is available for the driver */ - u32 pattern; + u32 pattern; }; -extern const u8 legrates_lut[]; -extern u16 legrates_lut_rate[]; +struct rwnx_legrate { + int idx; + int rate; +}; + +extern struct rwnx_legrate legrates_lut[]; extern u16 tx_legrates_lut_rate[]; struct DHCPInfo { @@ -350,41 +352,46 @@ void arpoffload_proc(struct sk_buff *skb, struct rwnx_vif *rwnx_vif); #endif #ifdef AICWF_RX_REORDER struct recv_msdu *reord_rxframe_alloc(spinlock_t *lock, struct list_head *q); -void reord_rxframe_free(spinlock_t *lock, struct list_head *q, struct list_head *list); -struct reord_ctrl_info *reord_init_sta(struct aicwf_rx_priv *rx_priv, const u8 *mac_addr); -void reord_deinit_sta(struct aicwf_rx_priv *rx_priv, struct reord_ctrl_info *reord_info); +void reord_rxframe_free(spinlock_t *lock, struct list_head *q, + struct list_head *list); +struct reord_ctrl_info *reord_init_sta(struct aicwf_rx_priv *rx_priv, + const u8 *mac_addr); +void reord_deinit_sta(struct aicwf_rx_priv *rx_priv, + struct reord_ctrl_info *reord_info); int reord_need_check(struct reord_ctrl *preorder_ctrl, u16 seq_num); -int reord_rxframe_enqueue(struct reord_ctrl *preorder_ctrl, struct recv_msdu *prframe); +int reord_rxframe_enqueue(struct reord_ctrl *preorder_ctrl, + struct recv_msdu *prframe); void reord_timeout_worker(struct work_struct *work); -int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, struct recv_msdu *prframe); +int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, + struct recv_msdu *prframe); #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) -void reord_timeout_handler (ulong data); +void reord_timeout_handler(ulong data); #else -void reord_timeout_handler (struct timer_list *t); +void reord_timeout_handler(struct timer_list *t); #endif #endif -void rwnx_rxdata_process_amsdu(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, u8 vif_idx, - struct sk_buff_head *list); +void rwnx_rxdata_process_amsdu(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, + u8 vif_idx, struct sk_buff_head *list); #ifdef CONFIG_HE_FOR_OLD_KERNEL #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 197) struct element { - u8 id; - u8 datalen; - u8 data[]; + u8 id; + u8 datalen; + u8 data[]; }; /* element iteration helpers */ -#define for_each_element(_elem, _data, _datalen) \ - for (_elem = (const struct element *)(_data); \ - (const u8 *)(_data) + (_datalen) - (const u8 *)_elem >= \ - (int)sizeof(*_elem) && \ - (const u8 *)(_data) + (_datalen) - (const u8 *)_elem >= \ - (int)sizeof(*_elem) + _elem->datalen; \ +#define for_each_element(_elem, _data, _datalen) \ + for (_elem = (const struct element *)(_data); \ + (const u8 *)(_data) + (_datalen) - (const u8 *)_elem >= \ + (int)sizeof(*_elem) && \ + (const u8 *)(_data) + (_datalen) - (const u8 *)_elem >= \ + (int)sizeof(*_elem) + _elem->datalen; \ _elem = (const struct element *)(_elem->data + _elem->datalen)) -#define for_each_element_id(element, _id, data, datalen) \ - for_each_element(element, data, datalen) \ +#define for_each_element_id(element, _id, data, datalen) \ + for_each_element (element, data, datalen) \ if (element->id == (_id)) #endif #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.c index 52ffbf64c..818995b1f 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.c @@ -12,255 +12,254 @@ #include "lmac_msg.h" static const char *const rwnx_mmid2str[MSG_I(MM_MAX)] = { - [MSG_I(MM_RESET_REQ)] = "MM_RESET_REQ", - [MSG_I(MM_RESET_CFM)] = "MM_RESET_CFM", - [MSG_I(MM_START_REQ)] = "MM_START_REQ", - [MSG_I(MM_START_CFM)] = "MM_START_CFM", - [MSG_I(MM_VERSION_REQ)] = "MM_VERSION_REQ", - [MSG_I(MM_VERSION_CFM)] = "MM_VERSION_CFM", - [MSG_I(MM_ADD_IF_REQ)] = "MM_ADD_IF_REQ", - [MSG_I(MM_ADD_IF_CFM)] = "MM_ADD_IF_CFM", - [MSG_I(MM_REMOVE_IF_REQ)] = "MM_REMOVE_IF_REQ", - [MSG_I(MM_REMOVE_IF_CFM)] = "MM_REMOVE_IF_CFM", - [MSG_I(MM_STA_ADD_REQ)] = "MM_STA_ADD_REQ", - [MSG_I(MM_STA_ADD_CFM)] = "MM_STA_ADD_CFM", - [MSG_I(MM_STA_DEL_REQ)] = "MM_STA_DEL_REQ", - [MSG_I(MM_STA_DEL_CFM)] = "MM_STA_DEL_CFM", - [MSG_I(MM_SET_FILTER_REQ)] = "MM_SET_FILTER_REQ", - [MSG_I(MM_SET_FILTER_CFM)] = "MM_SET_FILTER_CFM", - [MSG_I(MM_SET_CHANNEL_REQ)] = "MM_SET_CHANNEL_REQ", - [MSG_I(MM_SET_CHANNEL_CFM)] = "MM_SET_CHANNEL_CFM", - [MSG_I(MM_SET_DTIM_REQ)] = "MM_SET_DTIM_REQ", - [MSG_I(MM_SET_DTIM_CFM)] = "MM_SET_DTIM_CFM", - [MSG_I(MM_SET_BEACON_INT_REQ)] = "MM_SET_BEACON_INT_REQ", - [MSG_I(MM_SET_BEACON_INT_CFM)] = "MM_SET_BEACON_INT_CFM", - [MSG_I(MM_SET_BASIC_RATES_REQ)] = "MM_SET_BASIC_RATES_REQ", - [MSG_I(MM_SET_BASIC_RATES_CFM)] = "MM_SET_BASIC_RATES_CFM", - [MSG_I(MM_SET_BSSID_REQ)] = "MM_SET_BSSID_REQ", - [MSG_I(MM_SET_BSSID_CFM)] = "MM_SET_BSSID_CFM", - [MSG_I(MM_SET_EDCA_REQ)] = "MM_SET_EDCA_REQ", - [MSG_I(MM_SET_EDCA_CFM)] = "MM_SET_EDCA_CFM", - [MSG_I(MM_SET_MODE_REQ)] = "MM_SET_MODE_REQ", - [MSG_I(MM_SET_MODE_CFM)] = "MM_SET_MODE_CFM", - [MSG_I(MM_SET_VIF_STATE_REQ)] = "MM_SET_VIF_STATE_REQ", - [MSG_I(MM_SET_VIF_STATE_CFM)] = "MM_SET_VIF_STATE_CFM", - [MSG_I(MM_SET_SLOTTIME_REQ)] = "MM_SET_SLOTTIME_REQ", - [MSG_I(MM_SET_SLOTTIME_CFM)] = "MM_SET_SLOTTIME_CFM", - [MSG_I(MM_SET_IDLE_REQ)] = "MM_SET_IDLE_REQ", - [MSG_I(MM_SET_IDLE_CFM)] = "MM_SET_IDLE_CFM", - [MSG_I(MM_KEY_ADD_REQ)] = "MM_KEY_ADD_REQ", - [MSG_I(MM_KEY_ADD_CFM)] = "MM_KEY_ADD_CFM", - [MSG_I(MM_KEY_DEL_REQ)] = "MM_KEY_DEL_REQ", - [MSG_I(MM_KEY_DEL_CFM)] = "MM_KEY_DEL_CFM", - [MSG_I(MM_BA_ADD_REQ)] = "MM_BA_ADD_REQ", - [MSG_I(MM_BA_ADD_CFM)] = "MM_BA_ADD_CFM", - [MSG_I(MM_BA_DEL_REQ)] = "MM_BA_DEL_REQ", - [MSG_I(MM_BA_DEL_CFM)] = "MM_BA_DEL_CFM", - [MSG_I(MM_PRIMARY_TBTT_IND)] = "MM_PRIMARY_TBTT_IND", - [MSG_I(MM_SECONDARY_TBTT_IND)] = "MM_SECONDARY_TBTT_IND", - [MSG_I(MM_SET_POWER_REQ)] = "MM_SET_POWER_REQ", - [MSG_I(MM_SET_POWER_CFM)] = "MM_SET_POWER_CFM", - [MSG_I(MM_DBG_TRIGGER_REQ)] = "MM_DBG_TRIGGER_REQ", - [MSG_I(MM_SET_PS_MODE_REQ)] = "MM_SET_PS_MODE_REQ", - [MSG_I(MM_SET_PS_MODE_CFM)] = "MM_SET_PS_MODE_CFM", - [MSG_I(MM_CHAN_CTXT_ADD_REQ)] = "MM_CHAN_CTXT_ADD_REQ", - [MSG_I(MM_CHAN_CTXT_ADD_CFM)] = "MM_CHAN_CTXT_ADD_CFM", - [MSG_I(MM_CHAN_CTXT_DEL_REQ)] = "MM_CHAN_CTXT_DEL_REQ", - [MSG_I(MM_CHAN_CTXT_DEL_CFM)] = "MM_CHAN_CTXT_DEL_CFM", - [MSG_I(MM_CHAN_CTXT_LINK_REQ)] = "MM_CHAN_CTXT_LINK_REQ", - [MSG_I(MM_CHAN_CTXT_LINK_CFM)] = "MM_CHAN_CTXT_LINK_CFM", - [MSG_I(MM_CHAN_CTXT_UNLINK_REQ)] = "MM_CHAN_CTXT_UNLINK_REQ", - [MSG_I(MM_CHAN_CTXT_UNLINK_CFM)] = "MM_CHAN_CTXT_UNLINK_CFM", - [MSG_I(MM_CHAN_CTXT_UPDATE_REQ)] = "MM_CHAN_CTXT_UPDATE_REQ", - [MSG_I(MM_CHAN_CTXT_UPDATE_CFM)] = "MM_CHAN_CTXT_UPDATE_CFM", - [MSG_I(MM_CHAN_CTXT_SCHED_REQ)] = "MM_CHAN_CTXT_SCHED_REQ", - [MSG_I(MM_CHAN_CTXT_SCHED_CFM)] = "MM_CHAN_CTXT_SCHED_CFM", - [MSG_I(MM_BCN_CHANGE_REQ)] = "MM_BCN_CHANGE_REQ", - [MSG_I(MM_BCN_CHANGE_CFM)] = "MM_BCN_CHANGE_CFM", - [MSG_I(MM_TIM_UPDATE_REQ)] = "MM_TIM_UPDATE_REQ", - [MSG_I(MM_TIM_UPDATE_CFM)] = "MM_TIM_UPDATE_CFM", - [MSG_I(MM_CONNECTION_LOSS_IND)] = "MM_CONNECTION_LOSS_IND", - [MSG_I(MM_CHANNEL_SWITCH_IND)] = "MM_CHANNEL_SWITCH_IND", - [MSG_I(MM_CHANNEL_PRE_SWITCH_IND)] = "MM_CHANNEL_PRE_SWITCH_IND", - [MSG_I(MM_REMAIN_ON_CHANNEL_REQ)] = "MM_REMAIN_ON_CHANNEL_REQ", - [MSG_I(MM_REMAIN_ON_CHANNEL_CFM)] = "MM_REMAIN_ON_CHANNEL_CFM", - [MSG_I(MM_REMAIN_ON_CHANNEL_EXP_IND)] = "MM_REMAIN_ON_CHANNEL_EXP_IND", - [MSG_I(MM_PS_CHANGE_IND)] = "MM_PS_CHANGE_IND", - [MSG_I(MM_TRAFFIC_REQ_IND)] = "MM_TRAFFIC_REQ_IND", - [MSG_I(MM_SET_PS_OPTIONS_REQ)] = "MM_SET_PS_OPTIONS_REQ", - [MSG_I(MM_SET_PS_OPTIONS_CFM)] = "MM_SET_PS_OPTIONS_CFM", - [MSG_I(MM_P2P_VIF_PS_CHANGE_IND)] = "MM_P2P_VIF_PS_CHANGE_IND", - [MSG_I(MM_CSA_COUNTER_IND)] = "MM_CSA_COUNTER_IND", - [MSG_I(MM_CHANNEL_SURVEY_IND)] = "MM_CHANNEL_SURVEY_IND", - [MSG_I(MM_SET_P2P_NOA_REQ)] = "MM_SET_P2P_NOA_REQ", - [MSG_I(MM_SET_P2P_OPPPS_REQ)] = "MM_SET_P2P_OPPPS_REQ", - [MSG_I(MM_SET_P2P_NOA_CFM)] = "MM_SET_P2P_NOA_CFM", - [MSG_I(MM_SET_P2P_OPPPS_CFM)] = "MM_SET_P2P_OPPPS_CFM", - [MSG_I(MM_CFG_RSSI_REQ)] = "MM_CFG_RSSI_REQ", - [MSG_I(MM_RSSI_STATUS_IND)] = "MM_RSSI_STATUS_IND", - [MSG_I(MM_CSA_FINISH_IND)] = "MM_CSA_FINISH_IND", - [MSG_I(MM_CSA_TRAFFIC_IND)] = "MM_CSA_TRAFFIC_IND", - [MSG_I(MM_MU_GROUP_UPDATE_REQ)] = "MM_MU_GROUP_UPDATE_REQ", - [MSG_I(MM_MU_GROUP_UPDATE_CFM)] = "MM_MU_GROUP_UPDATE_CFM", + [MSG_I(MM_RESET_REQ)] = "MM_RESET_REQ", + [MSG_I(MM_RESET_CFM)] = "MM_RESET_CFM", + [MSG_I(MM_START_REQ)] = "MM_START_REQ", + [MSG_I(MM_START_CFM)] = "MM_START_CFM", + [MSG_I(MM_VERSION_REQ)] = "MM_VERSION_REQ", + [MSG_I(MM_VERSION_CFM)] = "MM_VERSION_CFM", + [MSG_I(MM_ADD_IF_REQ)] = "MM_ADD_IF_REQ", + [MSG_I(MM_ADD_IF_CFM)] = "MM_ADD_IF_CFM", + [MSG_I(MM_REMOVE_IF_REQ)] = "MM_REMOVE_IF_REQ", + [MSG_I(MM_REMOVE_IF_CFM)] = "MM_REMOVE_IF_CFM", + [MSG_I(MM_STA_ADD_REQ)] = "MM_STA_ADD_REQ", + [MSG_I(MM_STA_ADD_CFM)] = "MM_STA_ADD_CFM", + [MSG_I(MM_STA_DEL_REQ)] = "MM_STA_DEL_REQ", + [MSG_I(MM_STA_DEL_CFM)] = "MM_STA_DEL_CFM", + [MSG_I(MM_SET_FILTER_REQ)] = "MM_SET_FILTER_REQ", + [MSG_I(MM_SET_FILTER_CFM)] = "MM_SET_FILTER_CFM", + [MSG_I(MM_SET_CHANNEL_REQ)] = "MM_SET_CHANNEL_REQ", + [MSG_I(MM_SET_CHANNEL_CFM)] = "MM_SET_CHANNEL_CFM", + [MSG_I(MM_SET_DTIM_REQ)] = "MM_SET_DTIM_REQ", + [MSG_I(MM_SET_DTIM_CFM)] = "MM_SET_DTIM_CFM", + [MSG_I(MM_SET_BEACON_INT_REQ)] = "MM_SET_BEACON_INT_REQ", + [MSG_I(MM_SET_BEACON_INT_CFM)] = "MM_SET_BEACON_INT_CFM", + [MSG_I(MM_SET_BASIC_RATES_REQ)] = "MM_SET_BASIC_RATES_REQ", + [MSG_I(MM_SET_BASIC_RATES_CFM)] = "MM_SET_BASIC_RATES_CFM", + [MSG_I(MM_SET_BSSID_REQ)] = "MM_SET_BSSID_REQ", + [MSG_I(MM_SET_BSSID_CFM)] = "MM_SET_BSSID_CFM", + [MSG_I(MM_SET_EDCA_REQ)] = "MM_SET_EDCA_REQ", + [MSG_I(MM_SET_EDCA_CFM)] = "MM_SET_EDCA_CFM", + [MSG_I(MM_SET_MODE_REQ)] = "MM_SET_MODE_REQ", + [MSG_I(MM_SET_MODE_CFM)] = "MM_SET_MODE_CFM", + [MSG_I(MM_SET_VIF_STATE_REQ)] = "MM_SET_VIF_STATE_REQ", + [MSG_I(MM_SET_VIF_STATE_CFM)] = "MM_SET_VIF_STATE_CFM", + [MSG_I(MM_SET_SLOTTIME_REQ)] = "MM_SET_SLOTTIME_REQ", + [MSG_I(MM_SET_SLOTTIME_CFM)] = "MM_SET_SLOTTIME_CFM", + [MSG_I(MM_SET_IDLE_REQ)] = "MM_SET_IDLE_REQ", + [MSG_I(MM_SET_IDLE_CFM)] = "MM_SET_IDLE_CFM", + [MSG_I(MM_KEY_ADD_REQ)] = "MM_KEY_ADD_REQ", + [MSG_I(MM_KEY_ADD_CFM)] = "MM_KEY_ADD_CFM", + [MSG_I(MM_KEY_DEL_REQ)] = "MM_KEY_DEL_REQ", + [MSG_I(MM_KEY_DEL_CFM)] = "MM_KEY_DEL_CFM", + [MSG_I(MM_BA_ADD_REQ)] = "MM_BA_ADD_REQ", + [MSG_I(MM_BA_ADD_CFM)] = "MM_BA_ADD_CFM", + [MSG_I(MM_BA_DEL_REQ)] = "MM_BA_DEL_REQ", + [MSG_I(MM_BA_DEL_CFM)] = "MM_BA_DEL_CFM", + [MSG_I(MM_PRIMARY_TBTT_IND)] = "MM_PRIMARY_TBTT_IND", + [MSG_I(MM_SECONDARY_TBTT_IND)] = "MM_SECONDARY_TBTT_IND", + [MSG_I(MM_SET_POWER_REQ)] = "MM_SET_POWER_REQ", + [MSG_I(MM_SET_POWER_CFM)] = "MM_SET_POWER_CFM", + [MSG_I(MM_DBG_TRIGGER_REQ)] = "MM_DBG_TRIGGER_REQ", + [MSG_I(MM_SET_PS_MODE_REQ)] = "MM_SET_PS_MODE_REQ", + [MSG_I(MM_SET_PS_MODE_CFM)] = "MM_SET_PS_MODE_CFM", + [MSG_I(MM_CHAN_CTXT_ADD_REQ)] = "MM_CHAN_CTXT_ADD_REQ", + [MSG_I(MM_CHAN_CTXT_ADD_CFM)] = "MM_CHAN_CTXT_ADD_CFM", + [MSG_I(MM_CHAN_CTXT_DEL_REQ)] = "MM_CHAN_CTXT_DEL_REQ", + [MSG_I(MM_CHAN_CTXT_DEL_CFM)] = "MM_CHAN_CTXT_DEL_CFM", + [MSG_I(MM_CHAN_CTXT_LINK_REQ)] = "MM_CHAN_CTXT_LINK_REQ", + [MSG_I(MM_CHAN_CTXT_LINK_CFM)] = "MM_CHAN_CTXT_LINK_CFM", + [MSG_I(MM_CHAN_CTXT_UNLINK_REQ)] = "MM_CHAN_CTXT_UNLINK_REQ", + [MSG_I(MM_CHAN_CTXT_UNLINK_CFM)] = "MM_CHAN_CTXT_UNLINK_CFM", + [MSG_I(MM_CHAN_CTXT_UPDATE_REQ)] = "MM_CHAN_CTXT_UPDATE_REQ", + [MSG_I(MM_CHAN_CTXT_UPDATE_CFM)] = "MM_CHAN_CTXT_UPDATE_CFM", + [MSG_I(MM_CHAN_CTXT_SCHED_REQ)] = "MM_CHAN_CTXT_SCHED_REQ", + [MSG_I(MM_CHAN_CTXT_SCHED_CFM)] = "MM_CHAN_CTXT_SCHED_CFM", + [MSG_I(MM_BCN_CHANGE_REQ)] = "MM_BCN_CHANGE_REQ", + [MSG_I(MM_BCN_CHANGE_CFM)] = "MM_BCN_CHANGE_CFM", + [MSG_I(MM_TIM_UPDATE_REQ)] = "MM_TIM_UPDATE_REQ", + [MSG_I(MM_TIM_UPDATE_CFM)] = "MM_TIM_UPDATE_CFM", + [MSG_I(MM_CONNECTION_LOSS_IND)] = "MM_CONNECTION_LOSS_IND", + [MSG_I(MM_CHANNEL_SWITCH_IND)] = "MM_CHANNEL_SWITCH_IND", + [MSG_I(MM_CHANNEL_PRE_SWITCH_IND)] = "MM_CHANNEL_PRE_SWITCH_IND", + [MSG_I(MM_REMAIN_ON_CHANNEL_REQ)] = "MM_REMAIN_ON_CHANNEL_REQ", + [MSG_I(MM_REMAIN_ON_CHANNEL_CFM)] = "MM_REMAIN_ON_CHANNEL_CFM", + [MSG_I(MM_REMAIN_ON_CHANNEL_EXP_IND)] = "MM_REMAIN_ON_CHANNEL_EXP_IND", + [MSG_I(MM_PS_CHANGE_IND)] = "MM_PS_CHANGE_IND", + [MSG_I(MM_TRAFFIC_REQ_IND)] = "MM_TRAFFIC_REQ_IND", + [MSG_I(MM_SET_PS_OPTIONS_REQ)] = "MM_SET_PS_OPTIONS_REQ", + [MSG_I(MM_SET_PS_OPTIONS_CFM)] = "MM_SET_PS_OPTIONS_CFM", + [MSG_I(MM_P2P_VIF_PS_CHANGE_IND)] = "MM_P2P_VIF_PS_CHANGE_IND", + [MSG_I(MM_CSA_COUNTER_IND)] = "MM_CSA_COUNTER_IND", + [MSG_I(MM_CHANNEL_SURVEY_IND)] = "MM_CHANNEL_SURVEY_IND", + [MSG_I(MM_SET_P2P_NOA_REQ)] = "MM_SET_P2P_NOA_REQ", + [MSG_I(MM_SET_P2P_OPPPS_REQ)] = "MM_SET_P2P_OPPPS_REQ", + [MSG_I(MM_SET_P2P_NOA_CFM)] = "MM_SET_P2P_NOA_CFM", + [MSG_I(MM_SET_P2P_OPPPS_CFM)] = "MM_SET_P2P_OPPPS_CFM", + [MSG_I(MM_CFG_RSSI_REQ)] = "MM_CFG_RSSI_REQ", + [MSG_I(MM_RSSI_STATUS_IND)] = "MM_RSSI_STATUS_IND", + [MSG_I(MM_CSA_FINISH_IND)] = "MM_CSA_FINISH_IND", + [MSG_I(MM_CSA_TRAFFIC_IND)] = "MM_CSA_TRAFFIC_IND", + [MSG_I(MM_MU_GROUP_UPDATE_REQ)] = "MM_MU_GROUP_UPDATE_REQ", + [MSG_I(MM_MU_GROUP_UPDATE_CFM)] = "MM_MU_GROUP_UPDATE_CFM", - [MSG_I(MM_SET_ARPOFFLOAD_REQ)] = "MM_SET_ARPOFFLOAD_REQ", - [MSG_I(MM_SET_ARPOFFLOAD_CFM)] = "MM_SET_ARPOFFLOAD_CFM", - [MSG_I(MM_SET_AGG_DISABLE_REQ)] = "MM_SET_AGG_DISABLE_REQ", - [MSG_I(MM_SET_AGG_DISABLE_CFM)] = "MM_SET_AGG_DISABLE_CFM", - [MSG_I(MM_SET_COEX_REQ)] = "MM_SET_COEX_REQ", - [MSG_I(MM_SET_COEX_CFM)] = "MM_SET_COEX_CFM", - [MSG_I(MM_SET_RF_CONFIG_REQ)] = "MM_SET_RF_CONFIG_REQ", - [MSG_I(MM_SET_RF_CONFIG_CFM)] = "MM_SET_RF_CONFIG_CFM", - [MSG_I(MM_SET_RF_CALIB_REQ)] = "MM_SET_RF_CALIB_REQ", - [MSG_I(MM_SET_RF_CALIB_CFM)] = "MM_SET_RF_CALIB_CFM", + [MSG_I(MM_SET_ARPOFFLOAD_REQ)] = "MM_SET_ARPOFFLOAD_REQ", + [MSG_I(MM_SET_ARPOFFLOAD_CFM)] = "MM_SET_ARPOFFLOAD_CFM", + [MSG_I(MM_SET_AGG_DISABLE_REQ)] = "MM_SET_AGG_DISABLE_REQ", + [MSG_I(MM_SET_AGG_DISABLE_CFM)] = "MM_SET_AGG_DISABLE_CFM", + [MSG_I(MM_SET_COEX_REQ)] = "MM_SET_COEX_REQ", + [MSG_I(MM_SET_COEX_CFM)] = "MM_SET_COEX_CFM", + [MSG_I(MM_SET_RF_CONFIG_REQ)] = "MM_SET_RF_CONFIG_REQ", + [MSG_I(MM_SET_RF_CONFIG_CFM)] = "MM_SET_RF_CONFIG_CFM", + [MSG_I(MM_SET_RF_CALIB_REQ)] = "MM_SET_RF_CALIB_REQ", + [MSG_I(MM_SET_RF_CALIB_CFM)] = "MM_SET_RF_CALIB_CFM", - [MSG_I(MM_GET_MAC_ADDR_REQ)] = "MM_GET_MAC_ADDR_REQ", - [MSG_I(MM_GET_MAC_ADDR_CFM)] = "MM_GET_MAC_ADDR_CFM", - [MSG_I(MM_GET_STA_INFO_REQ)] = "MM_GET_STA_INFO_REQ", - [MSG_I(MM_GET_STA_INFO_CFM)] = "MM_GET_STA_INFO_CFM", - [MSG_I(MM_SET_TXPWR_IDX_LVL_REQ)] = "MM_SET_TXPWR_IDX_LVL_REQ", - [MSG_I(MM_SET_TXPWR_IDX_LVL_CFM)] = "MM_SET_TXPWR_IDX_LVL_CFM", - [MSG_I(MM_SET_TXPWR_OFST_REQ)] = "MM_SET_TXPWR_OFST_REQ", - [MSG_I(MM_SET_TXPWR_OFST_CFM)] = "MM_SET_TXPWR_OFST_CFM", - [MSG_I(MM_SET_STACK_START_REQ)] = "MM_SET_STACK_START_REQ", - [MSG_I(MM_SET_STACK_START_CFM)] = "MM_SET_STACK_START_CFM", - [MSG_I(MM_APM_STALOSS_IND)] = "MM_APM_STALOSS_IND", - [MSG_I(MM_SET_VENDOR_HWCONFIG_REQ)] = "MM_SET_VENDOR_HWCONFIG_REQ", - [MSG_I(MM_SET_VENDOR_HWCONFIG_CFM)] = "MM_SET_VENDOR_HWCONFIG_CFM", - [MSG_I(MM_GET_FW_VERSION_REQ)] = "MM_GET_FW_VERSION_REQ", - [MSG_I(MM_GET_FW_VERSION_CFM)] = "MM_GET_FW_VERSION_CFM", - [MSG_I(MM_SET_RESUME_RESTORE_REQ)] = "MM_SET_RESUME_RESTORE_REQ", - [MSG_I(MM_SET_RESUME_RESTORE_CFM)] = "MM_SET_RESUME_RESTORE_CFM", - [MSG_I(MM_GET_WIFI_DISABLE_REQ)] = "MM_GET_WIFI_DISABLE_REQ", - [MSG_I(MM_GET_WIFI_DISABLE_CFM)] = "MM_GET_WIFI_DISABLE_CFM", - [MSG_I(MM_CFG_RSSI_CFM)] = "MM_CFG_RSSI_CFM", + [MSG_I(MM_GET_MAC_ADDR_REQ)] = "MM_GET_MAC_ADDR_REQ", + [MSG_I(MM_GET_MAC_ADDR_CFM)] = "MM_GET_MAC_ADDR_CFM", + [MSG_I(MM_GET_STA_INFO_REQ)] = "MM_GET_STA_INFO_REQ", + [MSG_I(MM_GET_STA_INFO_CFM)] = "MM_GET_STA_INFO_CFM", + [MSG_I(MM_SET_TXPWR_IDX_LVL_REQ)] = "MM_SET_TXPWR_IDX_LVL_REQ", + [MSG_I(MM_SET_TXPWR_IDX_LVL_CFM)] = "MM_SET_TXPWR_IDX_LVL_CFM", + [MSG_I(MM_SET_TXPWR_OFST_REQ)] = "MM_SET_TXPWR_OFST_REQ", + [MSG_I(MM_SET_TXPWR_OFST_CFM)] = "MM_SET_TXPWR_OFST_CFM", + [MSG_I(MM_SET_STACK_START_REQ)] = "MM_SET_STACK_START_REQ", + [MSG_I(MM_SET_STACK_START_CFM)] = "MM_SET_STACK_START_CFM", + [MSG_I(MM_APM_STALOSS_IND)] = "MM_APM_STALOSS_IND", + [MSG_I(MM_SET_VENDOR_HWCONFIG_REQ)] = "MM_SET_VENDOR_HWCONFIG_REQ", + [MSG_I(MM_SET_VENDOR_HWCONFIG_CFM)] = "MM_SET_VENDOR_HWCONFIG_CFM", + [MSG_I(MM_GET_FW_VERSION_REQ)] = "MM_GET_FW_VERSION_REQ", + [MSG_I(MM_GET_FW_VERSION_CFM)] = "MM_GET_FW_VERSION_CFM", + [MSG_I(MM_SET_RESUME_RESTORE_REQ)] = "MM_SET_RESUME_RESTORE_REQ", + [MSG_I(MM_SET_RESUME_RESTORE_CFM)] = "MM_SET_RESUME_RESTORE_CFM", + [MSG_I(MM_GET_WIFI_DISABLE_REQ)] = "MM_GET_WIFI_DISABLE_REQ", + [MSG_I(MM_GET_WIFI_DISABLE_CFM)] = "MM_GET_WIFI_DISABLE_CFM", + [MSG_I(MM_CFG_RSSI_CFM)] = "MM_CFG_RSSI_CFM", }; static const char *const rwnx_dbgid2str[MSG_I(DBG_MAX)] = { - [MSG_I(DBG_MEM_READ_REQ)] = "DBG_MEM_READ_REQ", - [MSG_I(DBG_MEM_READ_CFM)] = "DBG_MEM_READ_CFM", - [MSG_I(DBG_MEM_WRITE_REQ)] = "DBG_MEM_WRITE_REQ", - [MSG_I(DBG_MEM_WRITE_CFM)] = "DBG_MEM_WRITE_CFM", - [MSG_I(DBG_SET_MOD_FILTER_REQ)] = "DBG_SET_MOD_FILTER_REQ", - [MSG_I(DBG_SET_MOD_FILTER_CFM)] = "DBG_SET_MOD_FILTER_CFM", - [MSG_I(DBG_SET_SEV_FILTER_REQ)] = "DBG_SET_SEV_FILTER_REQ", - [MSG_I(DBG_SET_SEV_FILTER_CFM)] = "DBG_SET_SEV_FILTER_CFM", - [MSG_I(DBG_ERROR_IND)] = "DBG_ERROR_IND", - [MSG_I(DBG_GET_SYS_STAT_REQ)] = "DBG_GET_SYS_STAT_REQ", - [MSG_I(DBG_GET_SYS_STAT_CFM)] = "DBG_GET_SYS_STAT_CFM", + [MSG_I(DBG_MEM_READ_REQ)] = "DBG_MEM_READ_REQ", + [MSG_I(DBG_MEM_READ_CFM)] = "DBG_MEM_READ_CFM", + [MSG_I(DBG_MEM_WRITE_REQ)] = "DBG_MEM_WRITE_REQ", + [MSG_I(DBG_MEM_WRITE_CFM)] = "DBG_MEM_WRITE_CFM", + [MSG_I(DBG_SET_MOD_FILTER_REQ)] = "DBG_SET_MOD_FILTER_REQ", + [MSG_I(DBG_SET_MOD_FILTER_CFM)] = "DBG_SET_MOD_FILTER_CFM", + [MSG_I(DBG_SET_SEV_FILTER_REQ)] = "DBG_SET_SEV_FILTER_REQ", + [MSG_I(DBG_SET_SEV_FILTER_CFM)] = "DBG_SET_SEV_FILTER_CFM", + [MSG_I(DBG_ERROR_IND)] = "DBG_ERROR_IND", + [MSG_I(DBG_GET_SYS_STAT_REQ)] = "DBG_GET_SYS_STAT_REQ", + [MSG_I(DBG_GET_SYS_STAT_CFM)] = "DBG_GET_SYS_STAT_CFM", }; static const char *const rwnx_scanid2str[MSG_I(SCAN_MAX)] = { - [MSG_I(SCAN_START_REQ)] = "SCAN_START_REQ", - [MSG_I(SCAN_START_CFM)] = "SCAN_START_CFM", - [MSG_I(SCAN_DONE_IND)] = "SCAN_DONE_IND", + [MSG_I(SCAN_START_REQ)] = "SCAN_START_REQ", + [MSG_I(SCAN_START_CFM)] = "SCAN_START_CFM", + [MSG_I(SCAN_DONE_IND)] = "SCAN_DONE_IND", }; static const char *const rwnx_tdlsid2str[MSG_I(TDLS_MAX)] = { - [MSG_I(TDLS_CHAN_SWITCH_CFM)] = "TDLS_CHAN_SWITCH_CFM", - [MSG_I(TDLS_CHAN_SWITCH_REQ)] = "TDLS_CHAN_SWITCH_REQ", - [MSG_I(TDLS_CHAN_SWITCH_IND)] = "TDLS_CHAN_SWITCH_IND", - [MSG_I(TDLS_CHAN_SWITCH_BASE_IND)] = "TDLS_CHAN_SWITCH_BASE_IND", - [MSG_I(TDLS_CANCEL_CHAN_SWITCH_REQ)] = "TDLS_CANCEL_CHAN_SWITCH_REQ", - [MSG_I(TDLS_CANCEL_CHAN_SWITCH_CFM)] = "TDLS_CANCEL_CHAN_SWITCH_CFM", - [MSG_I(TDLS_PEER_PS_IND)] = "TDLS_PEER_PS_IND", - [MSG_I(TDLS_PEER_TRAFFIC_IND_REQ)] = "TDLS_PEER_TRAFFIC_IND_REQ", - [MSG_I(TDLS_PEER_TRAFFIC_IND_CFM)] = "TDLS_PEER_TRAFFIC_IND_CFM", + [MSG_I(TDLS_CHAN_SWITCH_CFM)] = "TDLS_CHAN_SWITCH_CFM", + [MSG_I(TDLS_CHAN_SWITCH_REQ)] = "TDLS_CHAN_SWITCH_REQ", + [MSG_I(TDLS_CHAN_SWITCH_IND)] = "TDLS_CHAN_SWITCH_IND", + [MSG_I(TDLS_CHAN_SWITCH_BASE_IND)] = "TDLS_CHAN_SWITCH_BASE_IND", + [MSG_I(TDLS_CANCEL_CHAN_SWITCH_REQ)] = "TDLS_CANCEL_CHAN_SWITCH_REQ", + [MSG_I(TDLS_CANCEL_CHAN_SWITCH_CFM)] = "TDLS_CANCEL_CHAN_SWITCH_CFM", + [MSG_I(TDLS_PEER_PS_IND)] = "TDLS_PEER_PS_IND", + [MSG_I(TDLS_PEER_TRAFFIC_IND_REQ)] = "TDLS_PEER_TRAFFIC_IND_REQ", + [MSG_I(TDLS_PEER_TRAFFIC_IND_CFM)] = "TDLS_PEER_TRAFFIC_IND_CFM", }; #ifdef CONFIG_RWNX_FULLMAC static const char *const rwnx_scanuid2str[MSG_I(SCANU_MAX)] = { - [MSG_I(SCANU_START_REQ)] = "SCANU_START_REQ", - [MSG_I(SCANU_START_CFM)] = "SCANU_START_CFM", - [MSG_I(SCANU_JOIN_REQ)] = "SCANU_JOIN_REQ", - [MSG_I(SCANU_JOIN_CFM)] = "SCANU_JOIN_CFM", - [MSG_I(SCANU_RESULT_IND)] = "SCANU_RESULT_IND", - [MSG_I(SCANU_FAST_REQ)] = "SCANU_FAST_REQ", - [MSG_I(SCANU_FAST_CFM)] = "SCANU_FAST_CFM", - [MSG_I(SCANU_VENDOR_IE_REQ)] = "SCANU_VENDOR_IE_REQ", - [MSG_I(SCANU_VENDOR_IE_CFM)] = "SCANU_VENDOR_IE_CFM", - [MSG_I(SCANU_START_CFM_ADDTIONAL)] = "SCANU_START_CFM_ADDTIONAL", - [MSG_I(SCANU_CANCEL_REQ)] = "SCANU_CANCEL_REQ", - [MSG_I(SCANU_CANCEL_CFM)] = "SCANU_CANCEL_CFM", + [MSG_I(SCANU_START_REQ)] = "SCANU_START_REQ", + [MSG_I(SCANU_START_CFM)] = "SCANU_START_CFM", + [MSG_I(SCANU_JOIN_REQ)] = "SCANU_JOIN_REQ", + [MSG_I(SCANU_JOIN_CFM)] = "SCANU_JOIN_CFM", + [MSG_I(SCANU_RESULT_IND)] = "SCANU_RESULT_IND", + [MSG_I(SCANU_FAST_REQ)] = "SCANU_FAST_REQ", + [MSG_I(SCANU_FAST_CFM)] = "SCANU_FAST_CFM", + [MSG_I(SCANU_VENDOR_IE_REQ)] = "SCANU_VENDOR_IE_REQ", + [MSG_I(SCANU_VENDOR_IE_CFM)] = "SCANU_VENDOR_IE_CFM", + [MSG_I(SCANU_START_CFM_ADDTIONAL)] = "SCANU_START_CFM_ADDTIONAL", + [MSG_I(SCANU_CANCEL_REQ)] = "SCANU_CANCEL_REQ", + [MSG_I(SCANU_CANCEL_CFM)] = "SCANU_CANCEL_CFM", }; static const char *const rwnx_meid2str[MSG_I(ME_MAX)] = { - [MSG_I(ME_CONFIG_REQ)] = "ME_CONFIG_REQ", - [MSG_I(ME_CONFIG_CFM)] = "ME_CONFIG_CFM", - [MSG_I(ME_CHAN_CONFIG_REQ)] = "ME_CHAN_CONFIG_REQ", - [MSG_I(ME_CHAN_CONFIG_CFM)] = "ME_CHAN_CONFIG_CFM", - [MSG_I(ME_SET_CONTROL_PORT_REQ)] = "ME_SET_CONTROL_PORT_REQ", - [MSG_I(ME_SET_CONTROL_PORT_CFM)] = "ME_SET_CONTROL_PORT_CFM", - [MSG_I(ME_TKIP_MIC_FAILURE_IND)] = "ME_TKIP_MIC_FAILURE_IND", - [MSG_I(ME_STA_ADD_REQ)] = "ME_STA_ADD_REQ", - [MSG_I(ME_STA_ADD_CFM)] = "ME_STA_ADD_CFM", - [MSG_I(ME_STA_DEL_REQ)] = "ME_STA_DEL_REQ", - [MSG_I(ME_STA_DEL_CFM)] = "ME_STA_DEL_CFM", - [MSG_I(ME_TX_CREDITS_UPDATE_IND)]= "ME_TX_CREDITS_UPDATE_IND", - [MSG_I(ME_RC_STATS_REQ)] = "ME_RC_STATS_REQ", - [MSG_I(ME_RC_STATS_CFM)] = "ME_RC_STATS_CFM", - [MSG_I(ME_RC_SET_RATE_REQ)] = "ME_RC_SET_RATE_REQ", - [MSG_I(ME_TRAFFIC_IND_REQ)] = "ME_TRAFFIC_IND_REQ", - [MSG_I(ME_TRAFFIC_IND_CFM)] = "ME_TRAFFIC_IND_CFM", - [MSG_I(ME_SET_PS_MODE_REQ)] = "ME_SET_PS_MODE_REQ", - [MSG_I(ME_SET_PS_MODE_CFM)] = "ME_SET_PS_MODE_CFM", + [MSG_I(ME_CONFIG_REQ)] = "ME_CONFIG_REQ", + [MSG_I(ME_CONFIG_CFM)] = "ME_CONFIG_CFM", + [MSG_I(ME_CHAN_CONFIG_REQ)] = "ME_CHAN_CONFIG_REQ", + [MSG_I(ME_CHAN_CONFIG_CFM)] = "ME_CHAN_CONFIG_CFM", + [MSG_I(ME_SET_CONTROL_PORT_REQ)] = "ME_SET_CONTROL_PORT_REQ", + [MSG_I(ME_SET_CONTROL_PORT_CFM)] = "ME_SET_CONTROL_PORT_CFM", + [MSG_I(ME_TKIP_MIC_FAILURE_IND)] = "ME_TKIP_MIC_FAILURE_IND", + [MSG_I(ME_STA_ADD_REQ)] = "ME_STA_ADD_REQ", + [MSG_I(ME_STA_ADD_CFM)] = "ME_STA_ADD_CFM", + [MSG_I(ME_STA_DEL_REQ)] = "ME_STA_DEL_REQ", + [MSG_I(ME_STA_DEL_CFM)] = "ME_STA_DEL_CFM", + [MSG_I(ME_TX_CREDITS_UPDATE_IND)] = "ME_TX_CREDITS_UPDATE_IND", + [MSG_I(ME_RC_STATS_REQ)] = "ME_RC_STATS_REQ", + [MSG_I(ME_RC_STATS_CFM)] = "ME_RC_STATS_CFM", + [MSG_I(ME_RC_SET_RATE_REQ)] = "ME_RC_SET_RATE_REQ", + [MSG_I(ME_TRAFFIC_IND_REQ)] = "ME_TRAFFIC_IND_REQ", + [MSG_I(ME_TRAFFIC_IND_CFM)] = "ME_TRAFFIC_IND_CFM", + [MSG_I(ME_SET_PS_MODE_REQ)] = "ME_SET_PS_MODE_REQ", + [MSG_I(ME_SET_PS_MODE_CFM)] = "ME_SET_PS_MODE_CFM", }; static const char *const rwnx_smid2str[MSG_I(SM_MAX)] = { - [MSG_I(SM_CONNECT_REQ)] = "SM_CONNECT_REQ", - [MSG_I(SM_CONNECT_CFM)] = "SM_CONNECT_CFM", - [MSG_I(SM_CONNECT_IND)] = "SM_CONNECT_IND", - [MSG_I(SM_DISCONNECT_REQ)] = "SM_DISCONNECT_REQ", - [MSG_I(SM_DISCONNECT_CFM)] = "SM_DISCONNECT_CFM", - [MSG_I(SM_DISCONNECT_IND)] = "SM_DISCONNECT_IND", - [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_IND)] = "SM_EXTERNAL_AUTH_REQUIRED_IND", - [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_RSP)] = "SM_EXTERNAL_AUTH_REQUIRED_RSP", - [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_RSP_CFM)] = "SM_EXTERNAL_AUTH_REQUIRED_RSP_CFM", + [MSG_I(SM_CONNECT_REQ)] = "SM_CONNECT_REQ", + [MSG_I(SM_CONNECT_CFM)] = "SM_CONNECT_CFM", + [MSG_I(SM_CONNECT_IND)] = "SM_CONNECT_IND", + [MSG_I(SM_DISCONNECT_REQ)] = "SM_DISCONNECT_REQ", + [MSG_I(SM_DISCONNECT_CFM)] = "SM_DISCONNECT_CFM", + [MSG_I(SM_DISCONNECT_IND)] = "SM_DISCONNECT_IND", + [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_IND)] = + "SM_EXTERNAL_AUTH_REQUIRED_IND", + [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_RSP)] = + "SM_EXTERNAL_AUTH_REQUIRED_RSP", + [MSG_I(SM_EXTERNAL_AUTH_REQUIRED_RSP_CFM)] = + "SM_EXTERNAL_AUTH_REQUIRED_RSP_CFM", }; static const char *const rwnx_apmid2str[MSG_I(APM_MAX)] = { - [MSG_I(APM_START_REQ)] = "APM_START_REQ", - [MSG_I(APM_START_CFM)] = "APM_START_CFM", - [MSG_I(APM_STOP_REQ)] = "APM_STOP_REQ", - [MSG_I(APM_STOP_CFM)] = "APM_STOP_CFM", - [MSG_I(APM_START_CAC_REQ)] = "APM_START_CAC_REQ", - [MSG_I(APM_START_CAC_CFM)] = "APM_START_CAC_CFM", - [MSG_I(APM_STOP_CAC_REQ)] = "APM_STOP_CAC_REQ", - [MSG_I(APM_STOP_CAC_CFM)] = "APM_STOP_CAC_CFM", - [MSG_I(APM_SET_BEACON_IE_REQ)] = "APM_SET_BEACON_IE_REQ", - [MSG_I(APM_SET_BEACON_IE_CFM)] = "APM_SET_BEACON_IE_CFM", + [MSG_I(APM_START_REQ)] = "APM_START_REQ", + [MSG_I(APM_START_CFM)] = "APM_START_CFM", + [MSG_I(APM_STOP_REQ)] = "APM_STOP_REQ", + [MSG_I(APM_STOP_CFM)] = "APM_STOP_CFM", + [MSG_I(APM_START_CAC_REQ)] = "APM_START_CAC_REQ", + [MSG_I(APM_START_CAC_CFM)] = "APM_START_CAC_CFM", + [MSG_I(APM_STOP_CAC_REQ)] = "APM_STOP_CAC_REQ", + [MSG_I(APM_STOP_CAC_CFM)] = "APM_STOP_CAC_CFM", + [MSG_I(APM_SET_BEACON_IE_REQ)] = "APM_SET_BEACON_IE_REQ", + [MSG_I(APM_SET_BEACON_IE_CFM)] = "APM_SET_BEACON_IE_CFM", }; static const char *const rwnx_meshid2str[MSG_I(MESH_MAX)] = { - [MSG_I(MESH_START_REQ)] = "MESH_START_REQ", - [MSG_I(MESH_START_CFM)] = "MESH_START_CFM", - [MSG_I(MESH_STOP_REQ)] = "MESH_STOP_REQ", - [MSG_I(MESH_STOP_CFM)] = "MESH_STOP_CFM", - [MSG_I(MESH_UPDATE_REQ)] = "MESH_UPDATE_REQ", - [MSG_I(MESH_UPDATE_CFM)] = "MESH_UPDATE_CFM", - [MSG_I(MESH_PATH_CREATE_REQ)] = "MESH_PATH_CREATE_REQ", - [MSG_I(MESH_PATH_CREATE_CFM)] = "MESH_PATH_CREATE_CFM", - [MSG_I(MESH_PATH_UPDATE_REQ)] = "MESH_PATH_UPDATE_REQ", - [MSG_I(MESH_PATH_UPDATE_CFM)] = "MESH_PATH_UPDATE_CFM", - [MSG_I(MESH_PROXY_ADD_REQ)] = "MESH_PROXY_ADD_REQ", - [MSG_I(MESH_PEER_UPDATE_IND)] = "MESH_PEER_UPDATE_IND", - [MSG_I(MESH_PATH_UPDATE_IND)] = "MESH_PATH_UPDATE_IND", - [MSG_I(MESH_PROXY_UPDATE_IND)] = "MESH_PROXY_UPDATE_IND", + [MSG_I(MESH_START_REQ)] = "MESH_START_REQ", + [MSG_I(MESH_START_CFM)] = "MESH_START_CFM", + [MSG_I(MESH_STOP_REQ)] = "MESH_STOP_REQ", + [MSG_I(MESH_STOP_CFM)] = "MESH_STOP_CFM", + [MSG_I(MESH_UPDATE_REQ)] = "MESH_UPDATE_REQ", + [MSG_I(MESH_UPDATE_CFM)] = "MESH_UPDATE_CFM", + [MSG_I(MESH_PATH_CREATE_REQ)] = "MESH_PATH_CREATE_REQ", + [MSG_I(MESH_PATH_CREATE_CFM)] = "MESH_PATH_CREATE_CFM", + [MSG_I(MESH_PATH_UPDATE_REQ)] = "MESH_PATH_UPDATE_REQ", + [MSG_I(MESH_PATH_UPDATE_CFM)] = "MESH_PATH_UPDATE_CFM", + [MSG_I(MESH_PROXY_ADD_REQ)] = "MESH_PROXY_ADD_REQ", + [MSG_I(MESH_PEER_UPDATE_IND)] = "MESH_PEER_UPDATE_IND", + [MSG_I(MESH_PATH_UPDATE_IND)] = "MESH_PATH_UPDATE_IND", + [MSG_I(MESH_PROXY_UPDATE_IND)] = "MESH_PROXY_UPDATE_IND", }; #endif /* CONFIG_RWNX_FULLMAC */ const char *const *rwnx_id2str[TASK_LAST_EMB + 1] = { - [TASK_MM] = rwnx_mmid2str, - [TASK_DBG] = rwnx_dbgid2str, - [TASK_SCAN] = rwnx_scanid2str, - [TASK_TDLS] = rwnx_tdlsid2str, + [TASK_MM] = rwnx_mmid2str, [TASK_DBG] = rwnx_dbgid2str, + [TASK_SCAN] = rwnx_scanid2str, [TASK_TDLS] = rwnx_tdlsid2str, #ifdef CONFIG_RWNX_FULLMAC - [TASK_SCANU] = rwnx_scanuid2str, - [TASK_ME] = rwnx_meid2str, - [TASK_SM] = rwnx_smid2str, - [TASK_APM] = rwnx_apmid2str, - [TASK_MESH] = rwnx_meshid2str, + [TASK_SCANU] = rwnx_scanuid2str, [TASK_ME] = rwnx_meid2str, + [TASK_SM] = rwnx_smid2str, [TASK_APM] = rwnx_apmid2str, + [TASK_MESH] = rwnx_meshid2str, #endif }; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.h index 7dc83aba8..6aec43dbc 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_strs.h @@ -20,10 +20,12 @@ #else #include "lmac_msg.h" -#define RWNX_ID2STR(tag) (((MSG_T(tag) < ARRAY_SIZE(rwnx_id2str)) && \ - (rwnx_id2str[MSG_T(tag)]) && \ - ((rwnx_id2str[MSG_T(tag)])[MSG_I(tag)])) ? \ - (rwnx_id2str[MSG_T(tag)])[MSG_I(tag)] : "unknown") +#define RWNX_ID2STR(tag) \ + (((MSG_T(tag) < ARRAY_SIZE(rwnx_id2str)) && \ + (rwnx_id2str[MSG_T(tag)]) && \ + ((rwnx_id2str[MSG_T(tag)])[MSG_I(tag)])) ? \ + (rwnx_id2str[MSG_T(tag)])[MSG_I(tag)] : \ + "unknown") extern const char *const *rwnx_id2str[TASK_LAST_EMB + 1]; #endif /* CONFIG_RWNX_FHOST */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.c index 34196edac..905213e9a 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.c @@ -21,8 +21,7 @@ ****************************************************************************** */ -static u16 -rwnx_get_tdls_sta_capab(struct rwnx_vif *rwnx_vif, u16 status_code) +static u16 rwnx_get_tdls_sta_capab(struct rwnx_vif *rwnx_vif, u16 status_code) { u16 capab = 0; @@ -39,13 +38,15 @@ rwnx_get_tdls_sta_capab(struct rwnx_vif *rwnx_vif, u16 status_code) return capab; } -static int -rwnx_tdls_prepare_encap_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - const u8 *peer, u8 action_code, u8 dialog_token, - u16 status_code, struct sk_buff *skb) +static int rwnx_tdls_prepare_encap_data(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, + const u8 *peer, u8 action_code, + u8 dialog_token, u16 status_code, + struct sk_buff *skb) { struct ieee80211_tdls_data *tf; - tf = (void *)skb_put(skb, sizeof(struct ieee80211_tdls_data) - sizeof(tf->u)); + tf = (void *)skb_put(skb, sizeof(struct ieee80211_tdls_data) - + sizeof(tf->u)); // set eth header memcpy(tf->da, peer, ETH_ALEN); @@ -62,16 +63,16 @@ rwnx_tdls_prepare_encap_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, case WLAN_TDLS_SETUP_REQUEST: skb_put(skb, sizeof(tf->u.setup_req)); tf->u.setup_req.dialog_token = dialog_token; - tf->u.setup_req.capability = - cpu_to_le16(rwnx_get_tdls_sta_capab(rwnx_vif, status_code)); + tf->u.setup_req.capability = cpu_to_le16( + rwnx_get_tdls_sta_capab(rwnx_vif, status_code)); break; case WLAN_TDLS_SETUP_RESPONSE: skb_put(skb, sizeof(tf->u.setup_resp)); tf->u.setup_resp.status_code = cpu_to_le16(status_code); tf->u.setup_resp.dialog_token = dialog_token; - tf->u.setup_resp.capability = - cpu_to_le16(rwnx_get_tdls_sta_capab(rwnx_vif, status_code)); + tf->u.setup_resp.capability = cpu_to_le16( + rwnx_get_tdls_sta_capab(rwnx_vif, status_code)); break; case WLAN_TDLS_SETUP_CONFIRM: @@ -97,10 +98,10 @@ rwnx_tdls_prepare_encap_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, return 0; } -static int -rwnx_prep_tdls_direct(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - const u8 *peer, u8 action_code, u8 dialog_token, - u16 status_code, struct sk_buff *skb) +static int rwnx_prep_tdls_direct(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, const u8 *peer, + u8 action_code, u8 dialog_token, + u16 status_code, struct sk_buff *skb) { struct ieee80211_mgmt *mgmt; @@ -110,17 +111,18 @@ rwnx_prep_tdls_direct(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, memcpy(mgmt->sa, rwnx_hw->wiphy->perm_addr, ETH_ALEN); memcpy(mgmt->bssid, rwnx_vif->sta.ap->mac_addr, ETH_ALEN); - mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | - IEEE80211_STYPE_ACTION); + mgmt->frame_control = + cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); switch (action_code) { case WLAN_PUB_ACTION_TDLS_DISCOVER_RES: skb_put(skb, 1 + sizeof(mgmt->u.action.u.tdls_discover_resp)); mgmt->u.action.category = WLAN_CATEGORY_PUBLIC; - mgmt->u.action.u.tdls_discover_resp.action_code = WLAN_PUB_ACTION_TDLS_DISCOVER_RES; + mgmt->u.action.u.tdls_discover_resp.action_code = + WLAN_PUB_ACTION_TDLS_DISCOVER_RES; mgmt->u.action.u.tdls_discover_resp.dialog_token = dialog_token; - mgmt->u.action.u.tdls_discover_resp.capability = - cpu_to_le16(rwnx_get_tdls_sta_capab(rwnx_vif, status_code)); + mgmt->u.action.u.tdls_discover_resp.capability = cpu_to_le16( + rwnx_get_tdls_sta_capab(rwnx_vif, status_code)); break; default: return -EINVAL; @@ -129,12 +131,12 @@ rwnx_prep_tdls_direct(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, return 0; } -static int -rwnx_add_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) +static int rwnx_add_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) { u8 i, rates, *pos; int rate; - struct ieee80211_supported_band *rwnx_band_2GHz = rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *rwnx_band_2GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; rates = 8; @@ -153,12 +155,12 @@ rwnx_add_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) return 0; } -static int -rwnx_add_ext_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) +static int rwnx_add_ext_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) { u8 i, exrates, *pos; int rate; - struct ieee80211_supported_band *rwnx_band_2GHz = rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *rwnx_band_2GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; exrates = rwnx_band_2GHz->n_bitrates - 8; @@ -168,7 +170,7 @@ rwnx_add_ext_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) pos = skb_put(skb, exrates + 2); *pos++ = WLAN_EID_EXT_SUPP_RATES; *pos++ = exrates; - for (i = 8; i < (8+exrates); i++) { + for (i = 8; i < (8 + exrates); i++) { rate = rwnx_band_2GHz->bitrates[i].bitrate; rate = DIV_ROUND_UP(rate, 5); *pos++ = (u8)rate; @@ -177,8 +179,8 @@ rwnx_add_ext_srates_ie(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) return 0; } -static void -rwnx_tdls_add_supp_channels(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) +static void rwnx_tdls_add_supp_channels(struct rwnx_hw *rwnx_hw, + struct sk_buff *skb) { /* * Add possible channels for TDLS. These are channels that are allowed @@ -187,8 +189,10 @@ rwnx_tdls_add_supp_channels(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) u8 subband_cnt = 0; u8 *pos_subband; u8 *pos = skb_put(skb, 2); - struct ieee80211_supported_band *rwnx_band_2GHz = rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; - struct ieee80211_supported_band *rwnx_band_5GHz = rwnx_hw->wiphy->bands[NL80211_BAND_5GHZ]; + struct ieee80211_supported_band *rwnx_band_2GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *rwnx_band_5GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_5GHZ]; *pos++ = WLAN_EID_SUPPORTED_CHANNELS; @@ -200,7 +204,8 @@ rwnx_tdls_add_supp_channels(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) /* 2GHz, with 5MHz spacing */ pos_subband = skb_put(skb, 2); if (rwnx_band_2GHz->n_channels > 0) { - *pos_subband++ = ieee80211_frequency_to_channel(rwnx_band_2GHz->channels[0].center_freq); + *pos_subband++ = ieee80211_frequency_to_channel( + rwnx_band_2GHz->channels[0].center_freq); *pos_subband++ = rwnx_band_2GHz->n_channels; subband_cnt++; } @@ -209,7 +214,8 @@ rwnx_tdls_add_supp_channels(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) pos_subband = skb_put(skb, 2); if (rwnx_hw->band_5g_support) { if (rwnx_band_5GHz->n_channels > 0) { - *pos_subband++ = ieee80211_frequency_to_channel(rwnx_band_5GHz->channels[0].center_freq); + *pos_subband++ = ieee80211_frequency_to_channel( + rwnx_band_5GHz->channels[0].center_freq); *pos_subband++ = rwnx_band_5GHz->n_channels; subband_cnt++; } @@ -218,12 +224,12 @@ rwnx_tdls_add_supp_channels(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) *pos = 2 * subband_cnt; } -static void -rwnx_tdls_add_ext_capab(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) +static void rwnx_tdls_add_ext_capab(struct rwnx_hw *rwnx_hw, + struct sk_buff *skb) { u8 *pos = (void *)skb_put(skb, 7); - bool chan_switch = rwnx_hw->wiphy->features & - NL80211_FEATURE_TDLS_CHANNEL_SWITCH; + bool chan_switch = + rwnx_hw->wiphy->features & NL80211_FEATURE_TDLS_CHANNEL_SWITCH; *pos++ = WLAN_EID_EXT_CAPABILITY; *pos++ = 5; /* len */ @@ -231,12 +237,11 @@ rwnx_tdls_add_ext_capab(struct rwnx_hw *rwnx_hw, struct sk_buff *skb) *pos++ = 0x0; *pos++ = 0x0; *pos++ = WLAN_EXT_CAPA4_TDLS_BUFFER_STA | - (chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0); + (chan_switch ? WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH : 0); *pos++ = WLAN_EXT_CAPA5_TDLS_ENABLED; } -static void -rwnx_add_wmm_info_ie(struct sk_buff *skb, u8 qosinfo) +static void rwnx_add_wmm_info_ie(struct sk_buff *skb, u8 qosinfo) { u8 *pos = (void *)skb_put(skb, 9); @@ -268,8 +273,8 @@ static u8 rwnx_ac_from_wmm(int ac) } } -static void -rwnx_add_wmm_param_ie(struct sk_buff *skb, u8 acm_bits, u32 *ac_params) +static void rwnx_add_wmm_param_ie(struct sk_buff *skb, u8 acm_bits, + u32 *ac_params) { struct ieee80211_wmm_param_ie *wmm; int i, j; @@ -300,14 +305,15 @@ rwnx_add_wmm_param_ie(struct sk_buff *skb, u8 acm_bits, u32 *ac_params) cw_max = (ac_params[j] & 0xF00) >> 8; acm = (acm_bits & (1 << j)) != 0; - wmm->ac[i].aci_aifsn = (i << 5) | (acm << 4) | (ac_params[j] & 0xF); + wmm->ac[i].aci_aifsn = + (i << 5) | (acm << 4) | (ac_params[j] & 0xF); wmm->ac[i].cw = (cw_max << 4) | cw_min; wmm->ac[i].txop_limit = (ac_params[j] & 0x0FFFF000) >> 12; } } -static void -rwnx_tdls_add_oper_classes(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) +static void rwnx_tdls_add_oper_classes(struct rwnx_vif *rwnx_vif, + struct sk_buff *skb) { u8 *pos; u8 op_class; @@ -323,7 +329,7 @@ rwnx_tdls_add_oper_classes(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) #ifdef CONFIG_GKI if (!rwnx_ieee80211_chandef_to_operating_class(&chan_def, &op_class)) #else - if (!ieee80211_chandef_to_operating_class(&chan_def, &op_class)) + if (!ieee80211_chandef_to_operating_class(&chan_def, &op_class)) #endif return; @@ -338,9 +344,8 @@ rwnx_tdls_add_oper_classes(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) // need to add 5GHz classes? } -static void -rwnx_ie_build_ht_cap(struct sk_buff *skb, struct ieee80211_sta_ht_cap *ht_cap, - u16 cap) +static void rwnx_ie_build_ht_cap(struct sk_buff *skb, + struct ieee80211_sta_ht_cap *ht_cap, u16 cap) { u8 *pos; __le16 tmp; @@ -357,8 +362,8 @@ rwnx_ie_build_ht_cap(struct sk_buff *skb, struct ieee80211_sta_ht_cap *ht_cap, /* AMPDU parameters */ *pos++ = ht_cap->ampdu_factor | - (ht_cap->ampdu_density << - IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT); + (ht_cap->ampdu_density + << IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT); /* MCS set */ memcpy(pos, &ht_cap->mcs, sizeof(ht_cap->mcs)); @@ -374,9 +379,9 @@ rwnx_ie_build_ht_cap(struct sk_buff *skb, struct ieee80211_sta_ht_cap *ht_cap, pos += sizeof(u8); } -static void -rwnx_ie_build_vht_cap(struct sk_buff *skb, struct ieee80211_sta_vht_cap *vht_cap, - u32 cap) +static void rwnx_ie_build_vht_cap(struct sk_buff *skb, + struct ieee80211_sta_vht_cap *vht_cap, + u32 cap) { u8 *pos; __le32 tmp; @@ -397,8 +402,7 @@ rwnx_ie_build_vht_cap(struct sk_buff *skb, struct ieee80211_sta_vht_cap *vht_cap pos += sizeof(vht_cap->vht_mcs); } -static void -rwnx_tdls_add_bss_coex_ie(struct sk_buff *skb) +static void rwnx_tdls_add_bss_coex_ie(struct sk_buff *skb) { u8 *pos = (void *)skb_put(skb, 3); @@ -408,10 +412,10 @@ rwnx_tdls_add_bss_coex_ie(struct sk_buff *skb) *pos++ = WLAN_BSS_COEX_INFORMATION_REQUEST; } -static void -rwnx_tdls_add_link_ie(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, const u8 *peer, - bool initiator) +static void rwnx_tdls_add_link_ie(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, + struct sk_buff *skb, const u8 *peer, + bool initiator) { struct ieee80211_tdls_lnkie *lnkid; const u8 *init_addr, *rsp_addr; @@ -434,38 +438,38 @@ rwnx_tdls_add_link_ie(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, memcpy(lnkid->resp_sta, rsp_addr, ETH_ALEN); } -static void -rwnx_tdls_add_aid_ie(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) +static void rwnx_tdls_add_aid_ie(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) { u8 *pos = (void *)skb_put(skb, 4); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) *pos++ = WLAN_EID_AID; - #else +#else *pos++ = 197; - #endif +#endif *pos++ = 2; /* len */ *pos++ = rwnx_vif->sta.ap->aid; } -static u8 * -rwnx_ie_build_ht_oper(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u8 *pos, struct ieee80211_sta_ht_cap *ht_cap, - u16 prot_mode) +static u8 *rwnx_ie_build_ht_oper(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, u8 *pos, + struct ieee80211_sta_ht_cap *ht_cap, + u16 prot_mode) { struct ieee80211_ht_operation *ht_oper; /* Build HT Information */ *pos++ = WLAN_EID_HT_OPERATION; *pos++ = sizeof(struct ieee80211_ht_operation); ht_oper = (struct ieee80211_ht_operation *)pos; - ht_oper->primary_chan = ieee80211_frequency_to_channel( - rwnx_vif->sta.ap->center_freq); + ht_oper->primary_chan = + ieee80211_frequency_to_channel(rwnx_vif->sta.ap->center_freq); switch (rwnx_vif->sta.ap->width) { case NL80211_CHAN_WIDTH_160: case NL80211_CHAN_WIDTH_80P80: case NL80211_CHAN_WIDTH_80: case NL80211_CHAN_WIDTH_40: - if (rwnx_vif->sta.ap->center_freq1 > rwnx_vif->sta.ap->center_freq) + if (rwnx_vif->sta.ap->center_freq1 > + rwnx_vif->sta.ap->center_freq) ht_oper->ht_param = IEEE80211_HT_PARAM_CHA_SEC_ABOVE; else ht_oper->ht_param = IEEE80211_HT_PARAM_CHA_SEC_BELOW; @@ -475,8 +479,8 @@ rwnx_ie_build_ht_oper(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, break; } if (ht_cap->cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 && - rwnx_vif->sta.ap->width != NL80211_CHAN_WIDTH_20_NOHT && - rwnx_vif->sta.ap->width != NL80211_CHAN_WIDTH_20) + rwnx_vif->sta.ap->width != NL80211_CHAN_WIDTH_20_NOHT && + rwnx_vif->sta.ap->width != NL80211_CHAN_WIDTH_20) ht_oper->ht_param |= IEEE80211_HT_PARAM_CHAN_WIDTH_ANY; ht_oper->operation_mode = cpu_to_le16(prot_mode); @@ -490,10 +494,10 @@ rwnx_ie_build_ht_oper(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, return pos + sizeof(struct ieee80211_ht_operation); } -static u8 * -rwnx_ie_build_vht_oper(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u8 *pos, struct ieee80211_sta_ht_cap *ht_cap, - u16 prot_mode) +static u8 *rwnx_ie_build_vht_oper(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, u8 *pos, + struct ieee80211_sta_ht_cap *ht_cap, + u16 prot_mode) { struct ieee80211_vht_operation *vht_oper; /* Build HT Information */ @@ -503,23 +507,32 @@ rwnx_ie_build_vht_oper(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, switch (rwnx_vif->sta.ap->width) { case NL80211_CHAN_WIDTH_80: - vht_oper->chan_width = IEEE80211_VHT_CHANWIDTH_80MHZ; // Channel Width - CCFS0(vht_oper) = - ieee80211_frequency_to_channel(rwnx_vif->sta.ap->center_freq); // Channel Center Frequency Segment 0 - CCFS1(vht_oper) = 0; // Channel Center Frequency Segment 1 (N.A.) + vht_oper->chan_width = + IEEE80211_VHT_CHANWIDTH_80MHZ; // Channel Width + CCFS0(vht_oper) = ieee80211_frequency_to_channel( + rwnx_vif->sta.ap + ->center_freq); // Channel Center Frequency Segment 0 + CCFS1(vht_oper) = + 0; // Channel Center Frequency Segment 1 (N.A.) break; case NL80211_CHAN_WIDTH_160: - vht_oper->chan_width = IEEE80211_VHT_CHANWIDTH_160MHZ; // Channel Width - CCFS0(vht_oper) = - ieee80211_frequency_to_channel(rwnx_vif->sta.ap->center_freq); // Channel Center Frequency Segment 0 - CCFS1(vht_oper) = 0; // Channel Center Frequency Segment 1 (N.A.) + vht_oper->chan_width = + IEEE80211_VHT_CHANWIDTH_160MHZ; // Channel Width + CCFS0(vht_oper) = ieee80211_frequency_to_channel( + rwnx_vif->sta.ap + ->center_freq); // Channel Center Frequency Segment 0 + CCFS1(vht_oper) = + 0; // Channel Center Frequency Segment 1 (N.A.) break; case NL80211_CHAN_WIDTH_80P80: - vht_oper->chan_width = IEEE80211_VHT_CHANWIDTH_80P80MHZ; // Channel Width - CCFS0(vht_oper) = - ieee80211_frequency_to_channel(rwnx_vif->sta.ap->center_freq1); // Channel Center Frequency Segment 0 - CCFS1(vht_oper) = - ieee80211_frequency_to_channel(rwnx_vif->sta.ap->center_freq2); // Channel Center Frequency Segment 1 + vht_oper->chan_width = + IEEE80211_VHT_CHANWIDTH_80P80MHZ; // Channel Width + CCFS0(vht_oper) = ieee80211_frequency_to_channel( + rwnx_vif->sta.ap + ->center_freq1); // Channel Center Frequency Segment 0 + CCFS1(vht_oper) = ieee80211_frequency_to_channel( + rwnx_vif->sta.ap + ->center_freq2); // Channel Center Frequency Segment 1 break; default: vht_oper->chan_width = IEEE80211_VHT_CHANWIDTH_USE_HT; @@ -531,14 +544,14 @@ rwnx_ie_build_vht_oper(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, vht_oper->basic_mcs_set = cpu_to_le16(rwnx_hw->mod_params->mcs_map); return pos + sizeof(struct ieee80211_vht_operation); - } -static void -rwnx_tdls_add_setup_start_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, const u8 *peer, - u8 action_code, bool initiator, - const u8 *extra_ies, size_t extra_ies_len) +static void rwnx_tdls_add_setup_start_ies(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, + struct sk_buff *skb, const u8 *peer, + u8 action_code, bool initiator, + const u8 *extra_ies, + size_t extra_ies_len) { enum nl80211_band band = rwnx_vif->sta.ap->band; struct ieee80211_supported_band *sband; @@ -556,7 +569,7 @@ rwnx_tdls_add_setup_start_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif /* add the QoS element if we support it */ if (/*local->hw.queues >= IEEE80211_NUM_ACS &&*/ - action_code != WLAN_PUB_ACTION_TDLS_DISCOVER_RES) + action_code != WLAN_PUB_ACTION_TDLS_DISCOVER_RES) rwnx_add_wmm_info_ie(skb, 0); /* no U-APSD */ rwnx_tdls_add_oper_classes(rwnx_vif, skb); @@ -569,14 +582,14 @@ rwnx_tdls_add_setup_start_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif sband = rwnx_hw->wiphy->bands[band]; memcpy(&ht_cap, &sband->ht_cap, sizeof(ht_cap)); if (((action_code == WLAN_TDLS_SETUP_REQUEST) || - (action_code == WLAN_TDLS_SETUP_RESPONSE) || - (action_code == WLAN_PUB_ACTION_TDLS_DISCOVER_RES)) && - ht_cap.ht_supported /* (!sta || sta->sta.ht_cap.ht_supported)*/) { + (action_code == WLAN_TDLS_SETUP_RESPONSE) || + (action_code == WLAN_PUB_ACTION_TDLS_DISCOVER_RES)) && + ht_cap.ht_supported /* (!sta || sta->sta.ht_cap.ht_supported)*/) { rwnx_ie_build_ht_cap(skb, &ht_cap, ht_cap.cap); } if (ht_cap.ht_supported && - (ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)) + (ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)) rwnx_tdls_add_bss_coex_ie(skb); rwnx_tdls_add_link_ie(rwnx_hw, rwnx_vif, skb, peer, initiator); @@ -598,11 +611,11 @@ rwnx_tdls_add_setup_start_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif rcu_read_unlock(); } - -static void -rwnx_tdls_add_setup_cfm_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, const u8 *peer, bool initiator, - const u8 *extra_ies, size_t extra_ies_len) +static void rwnx_tdls_add_setup_cfm_ies(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, + struct sk_buff *skb, const u8 *peer, + bool initiator, const u8 *extra_ies, + size_t extra_ies_len) { struct ieee80211_supported_band *sband; enum nl80211_band band = rwnx_vif->sta.ap->band; @@ -654,70 +667,76 @@ rwnx_tdls_add_setup_cfm_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, rcu_read_unlock(); } -static void -rwnx_tdls_add_ies(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, const u8 *peer, - u8 action_code, u16 status_code, - bool initiator, const u8 *extra_ies, - size_t extra_ies_len, u8 oper_class, - struct cfg80211_chan_def *chandef) +static void rwnx_tdls_add_ies(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, struct sk_buff *skb, + const u8 *peer, u8 action_code, u16 status_code, + bool initiator, const u8 *extra_ies, + size_t extra_ies_len, u8 oper_class, + struct cfg80211_chan_def *chandef) { switch (action_code) { case WLAN_TDLS_SETUP_REQUEST: case WLAN_TDLS_SETUP_RESPONSE: case WLAN_PUB_ACTION_TDLS_DISCOVER_RES: if (status_code == 0) - rwnx_tdls_add_setup_start_ies(rwnx_hw, rwnx_vif, skb, peer, action_code, - initiator, extra_ies, extra_ies_len); + rwnx_tdls_add_setup_start_ies(rwnx_hw, rwnx_vif, skb, + peer, action_code, + initiator, extra_ies, + extra_ies_len); break; case WLAN_TDLS_SETUP_CONFIRM: if (status_code == 0) - rwnx_tdls_add_setup_cfm_ies(rwnx_hw, rwnx_vif, skb, peer, initiator, - extra_ies, extra_ies_len); + rwnx_tdls_add_setup_cfm_ies(rwnx_hw, rwnx_vif, skb, + peer, initiator, extra_ies, + extra_ies_len); break; case WLAN_TDLS_TEARDOWN: case WLAN_TDLS_DISCOVERY_REQUEST: if (extra_ies_len) memcpy(skb_put(skb, extra_ies_len), extra_ies, - extra_ies_len); + extra_ies_len); if (status_code == 0 || action_code == WLAN_TDLS_TEARDOWN) - rwnx_tdls_add_link_ie(rwnx_hw, rwnx_vif, skb, peer, initiator); + rwnx_tdls_add_link_ie(rwnx_hw, rwnx_vif, skb, peer, + initiator); break; } } -int -rwnx_tdls_send_mgmt_packet_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - const u8 *peer, u8 action_code, u8 dialog_token, - u16 status_code, u32 peer_capability, bool initiator, - const u8 *extra_ies, size_t extra_ies_len, u8 oper_class, - struct cfg80211_chan_def *chandef) +int rwnx_tdls_send_mgmt_packet_data(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, const u8 *peer, + u8 action_code, u8 dialog_token, + u16 status_code, u32 peer_capability, + bool initiator, const u8 *extra_ies, + size_t extra_ies_len, u8 oper_class, + struct cfg80211_chan_def *chandef) { struct sk_buff *skb; int ret = 0; - struct ieee80211_supported_band *rwnx_band_2GHz = rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; - struct ieee80211_supported_band *rwnx_band_5GHz = rwnx_hw->wiphy->bands[NL80211_BAND_5GHZ]; + struct ieee80211_supported_band *rwnx_band_2GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_2GHZ]; + struct ieee80211_supported_band *rwnx_band_5GHz = + rwnx_hw->wiphy->bands[NL80211_BAND_5GHZ]; int channels = rwnx_band_2GHz->n_channels; if (rwnx_hw->band_5g_support) channels += rwnx_band_5GHz->n_channels; - skb = netdev_alloc_skb(rwnx_vif->ndev, - sizeof(struct ieee80211_tdls_data) + // ethhdr + TDLS info - 10 + /* supported rates */ - 6 + /* extended supported rates */ - (2 + channels) + /* supported channels */ - sizeof(struct ieee_types_extcap) + - sizeof(struct ieee80211_wmm_param_ie) + - 4 + /* oper classes */ - 28 + //sizeof(struct ieee80211_ht_cap) + - sizeof(struct ieee_types_bss_co_2040) + - sizeof(struct ieee80211_tdls_lnkie) + - (2 + sizeof(struct ieee80211_vht_cap)) + - 4 + /*AID*/ - (2 + sizeof(struct ieee80211_ht_operation)) + - extra_ies_len); + skb = netdev_alloc_skb( + rwnx_vif->ndev, + sizeof(struct ieee80211_tdls_data) + // ethhdr + TDLS info + 10 + /* supported rates */ + 6 + /* extended supported rates */ + (2 + channels) + /* supported channels */ + sizeof(struct ieee_types_extcap) + + sizeof(struct ieee80211_wmm_param_ie) + + 4 + /* oper classes */ + 28 + //sizeof(struct ieee80211_ht_cap) + + sizeof(struct ieee_types_bss_co_2040) + + sizeof(struct ieee80211_tdls_lnkie) + + (2 + sizeof(struct ieee80211_vht_cap)) + 4 + /*AID*/ + (2 + sizeof(struct ieee80211_ht_operation)) + + extra_ies_len); if (!skb) return 0; @@ -728,13 +747,15 @@ rwnx_tdls_send_mgmt_packet_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_v case WLAN_TDLS_SETUP_CONFIRM: case WLAN_TDLS_TEARDOWN: case WLAN_TDLS_DISCOVERY_REQUEST: - ret = rwnx_tdls_prepare_encap_data(rwnx_hw, rwnx_vif, peer, action_code, - dialog_token, status_code, skb); + ret = rwnx_tdls_prepare_encap_data(rwnx_hw, rwnx_vif, peer, + action_code, dialog_token, + status_code, skb); break; case WLAN_PUB_ACTION_TDLS_DISCOVER_RES: - ret = rwnx_prep_tdls_direct(rwnx_hw, rwnx_vif, peer, action_code, - dialog_token, status_code, skb); + ret = rwnx_prep_tdls_direct(rwnx_hw, rwnx_vif, peer, + action_code, dialog_token, + status_code, skb); break; default: @@ -745,20 +766,24 @@ rwnx_tdls_send_mgmt_packet_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_v if (ret < 0) goto fail; - rwnx_tdls_add_ies(rwnx_hw, rwnx_vif, skb, peer, action_code, status_code, - initiator, extra_ies, extra_ies_len, oper_class, chandef); + rwnx_tdls_add_ies(rwnx_hw, rwnx_vif, skb, peer, action_code, + status_code, initiator, extra_ies, extra_ies_len, + oper_class, chandef); if (action_code == WLAN_PUB_ACTION_TDLS_DISCOVER_RES) { u64 cookie; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) struct cfg80211_mgmt_tx_params params; params.len = skb->len; params.buf = skb->data; - ret = rwnx_start_mgmt_xmit(rwnx_vif, NULL, ¶ms, false, &cookie); - #else - ret = rwnx_start_mgmt_xmit(rwnx_vif, NULL, NULL, false, 0, skb->data, skb->len, false, false, &cookie); - #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ + ret = rwnx_start_mgmt_xmit(rwnx_vif, NULL, ¶ms, false, + &cookie); +#else + ret = rwnx_start_mgmt_xmit(rwnx_vif, NULL, NULL, false, 0, + skb->data, skb->len, false, false, + &cookie); +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ return ret; } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.h index 590b420f6..d41f0a99c 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tdls.h @@ -45,10 +45,12 @@ struct ieee_types_aid { u16 aid; } __packed; -int rwnx_tdls_send_mgmt_packet_data(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - const u8 *peer, u8 action_code, u8 dialog_token, - u16 status_code, u32 peer_capability, bool initiator, - const u8 *extra_ies, size_t extra_ies_len, u8 oper_class, - struct cfg80211_chan_def *chandef); +int rwnx_tdls_send_mgmt_packet_data(struct rwnx_hw *rwnx_hw, + struct rwnx_vif *rwnx_vif, const u8 *peer, + u8 action_code, u8 dialog_token, + u16 status_code, u32 peer_capability, + bool initiator, const u8 *extra_ies, + size_t extra_ies_len, u8 oper_class, + struct cfg80211_chan_def *chandef); #endif /* RWNX_TDLS_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_testmode.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_testmode.c index ef97354d0..4e8526f58 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_testmode.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_testmode.c @@ -50,47 +50,45 @@ int rwnx_testmode_reg(struct ieee80211_hw *hw, struct nlattr **tb) mem_addr = nla_get_u32(tb[RWNX_TM_ATTR_REG_OFFSET]); switch (nla_get_u32(tb[RWNX_TM_ATTR_COMMAND])) { - case RWNX_TM_CMD_APP2DEV_REG_READ: - { - struct dbg_mem_read_cfm mem_read_cfm; + case RWNX_TM_CMD_APP2DEV_REG_READ: { + struct dbg_mem_read_cfm mem_read_cfm; - /*** Send the command to the LMAC ***/ - status = rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, &mem_read_cfm); + /*** Send the command to the LMAC ***/ + status = rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, + &mem_read_cfm); + if (status) + return status; + + /* Allocate the answer message */ + skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, 20); + if (!skb) { + printk("Error allocating memory\n"); + return -ENOMEM; + } + + val32 = mem_read_cfm.memdata; + if (nla_put_u32(skb, RWNX_TM_ATTR_REG_VALUE32, val32)) + goto nla_put_failure; + + /* Send the answer to upper layer */ + status = cfg80211_testmode_reply(skb); + if (status < 0) + printk("Error sending msg : %d\n", status); + } break; + + case RWNX_TM_CMD_APP2DEV_REG_WRITE: { + if (!tb[RWNX_TM_ATTR_REG_VALUE32]) { + printk("Error finding value to write\n"); + return -ENOMSG; + } else { + val32 = nla_get_u32(tb[RWNX_TM_ATTR_REG_VALUE32]); + /* Send the command to the LMAC */ + status = rwnx_send_dbg_mem_write_req(rwnx_hw, mem_addr, + val32); if (status) return status; - - /* Allocate the answer message */ - skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, 20); - if (!skb) { - printk("Error allocating memory\n"); - return -ENOMEM; - } - - val32 = mem_read_cfm.memdata; - if (nla_put_u32(skb, RWNX_TM_ATTR_REG_VALUE32, val32)) - goto nla_put_failure; - - /* Send the answer to upper layer */ - status = cfg80211_testmode_reply(skb); - if (status < 0) - printk("Error sending msg : %d\n", status); } - break; - - case RWNX_TM_CMD_APP2DEV_REG_WRITE: - { - if (!tb[RWNX_TM_ATTR_REG_VALUE32]) { - printk("Error finding value to write\n"); - return -ENOMSG; - } else { - val32 = nla_get_u32(tb[RWNX_TM_ATTR_REG_VALUE32]); - /* Send the command to the LMAC */ - status = rwnx_send_dbg_mem_write_req(rwnx_hw, mem_addr, val32); - if (status) - return status; - } - } - break; + } break; default: printk("Unknown testmode register command ID\n"); @@ -126,22 +124,18 @@ int rwnx_testmode_dbg_filter(struct ieee80211_hw *hw, struct nlattr **tb) RWNX_DBG("testmode debug filter, setting: 0x%x\n", filter); switch (nla_get_u32(tb[RWNX_TM_ATTR_COMMAND])) { - case RWNX_TM_CMD_APP2DEV_SET_DBGMODFILTER: - { - /* Send the command to the LMAC */ - status = rwnx_send_dbg_set_mod_filter_req(rwnx_hw, filter); - if (status) - return status; - } - break; - case RWNX_TM_CMD_APP2DEV_SET_DBGSEVFILTER: - { - /* Send the command to the LMAC */ - status = rwnx_send_dbg_set_sev_filter_req(rwnx_hw, filter); - if (status) - return status; - } - break; + case RWNX_TM_CMD_APP2DEV_SET_DBGMODFILTER: { + /* Send the command to the LMAC */ + status = rwnx_send_dbg_set_mod_filter_req(rwnx_hw, filter); + if (status) + return status; + } break; + case RWNX_TM_CMD_APP2DEV_SET_DBGSEVFILTER: { + /* Send the command to the LMAC */ + status = rwnx_send_dbg_set_sev_filter_req(rwnx_hw, filter); + if (status) + return status; + } break; default: printk("Unknown testmode register command ID\n"); @@ -180,42 +174,38 @@ int rwnx_testmode_reg_dbg(struct ieee80211_hw *hw, struct nlattr **tb) offset = mem_addr & 0x00FFFFFF; switch (nla_get_u32(tb[RWNX_TM_ATTR_COMMAND])) { - case RWNX_TM_CMD_APP2DEV_REG_READ_DBG: - { - /*** Send the command to the LMAC ***/ - reg_value = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, offset); + case RWNX_TM_CMD_APP2DEV_REG_READ_DBG: { + /*** Send the command to the LMAC ***/ + reg_value = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, offset); - /* Allocate the answer message */ - skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, 20); - if (!skb) { - printk("Error allocating memory\n"); - return -ENOMEM; - } - - if (nla_put_u32(skb, RWNX_TM_ATTR_REG_VALUE32, reg_value)) - goto nla_put_failure; - - /* Send the answer to upper layer */ - status = cfg80211_testmode_reply(skb); - if (status < 0) - printk("Error sending msg : %d\n", status); + /* Allocate the answer message */ + skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, 20); + if (!skb) { + printk("Error allocating memory\n"); + return -ENOMEM; } - break; - case RWNX_TM_CMD_APP2DEV_REG_WRITE_DBG: - { - if (!tb[RWNX_TM_ATTR_REG_VALUE32]) { - printk("Error finding value to write\n"); - return -ENOMSG; - } else { - reg_value = nla_get_u32(tb[RWNX_TM_ATTR_REG_VALUE32]); + if (nla_put_u32(skb, RWNX_TM_ATTR_REG_VALUE32, reg_value)) + goto nla_put_failure; - /* Send the command to the LMAC */ - RWNX_REG_WRITE(reg_value, rwnx_plat, RWNX_ADDR_SYSTEM, - offset); - } + /* Send the answer to upper layer */ + status = cfg80211_testmode_reply(skb); + if (status < 0) + printk("Error sending msg : %d\n", status); + } break; + + case RWNX_TM_CMD_APP2DEV_REG_WRITE_DBG: { + if (!tb[RWNX_TM_ATTR_REG_VALUE32]) { + printk("Error finding value to write\n"); + return -ENOMSG; + } else { + reg_value = nla_get_u32(tb[RWNX_TM_ATTR_REG_VALUE32]); + + /* Send the command to the LMAC */ + RWNX_REG_WRITE(reg_value, rwnx_plat, RWNX_ADDR_SYSTEM, + offset); } - break; + } break; default: printk("Unknown testmode register command ID\n"); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.c index dc9d2ccd5..c10acd535 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.c @@ -18,6 +18,9 @@ #include "rwnx_events.h" #include "rwnx_compat.h" #include "aicwf_txrxif.h" +#ifdef CONFIG_RWNX_MON_XMIT +#include +#endif /****************************************************************************** * Power Save functions @@ -30,17 +33,16 @@ * @available: whether traffic is buffered for the STA * @ps_id: type of PS data requested (@LEGACY_PS_ID or @UAPSD_ID) */ -void rwnx_set_traffic_status(struct rwnx_hw *rwnx_hw, - struct rwnx_sta *sta, - bool available, - u8 ps_id) +void rwnx_set_traffic_status(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, + bool available, u8 ps_id) { if (sta->tdls.active) { - rwnx_send_tdls_peer_traffic_ind_req(rwnx_hw, - rwnx_hw->vif_table[sta->vif_idx]); + rwnx_send_tdls_peer_traffic_ind_req( + rwnx_hw, rwnx_hw->vif_table[sta->vif_idx]); } else { bool uapsd = (ps_id != LEGACY_PS_ID); - rwnx_send_me_traffic_ind(rwnx_hw, sta->sta_idx, uapsd, available); + rwnx_send_me_traffic_ind(rwnx_hw, sta->sta_idx, uapsd, + available); #ifdef CREATE_TRACE_POINTS trace_ps_traffic_update(sta->sta_idx, available, uapsd); #endif @@ -73,14 +75,14 @@ void rwnx_set_traffic_status(struct rwnx_hw *rwnx_hw, * from a bottom_half tasklet. */ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - bool enable) + bool enable) { struct rwnx_txq *txq; if (enable) { #ifdef CREATE_TRACE_POINTS trace_ps_enable(sta); -#endif +#endif spin_lock_bh(&rwnx_hw->tx_lock); sta->ps.active = true; sta->ps.sp_cnt[LEGACY_PS_ID] = 0; @@ -89,22 +91,25 @@ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, if (is_multicast_sta(sta->sta_idx)) { txq = rwnx_txq_sta_get(sta, 0, rwnx_hw); - sta->ps.pkt_ready[LEGACY_PS_ID] = skb_queue_len(&txq->sk_list); + sta->ps.pkt_ready[LEGACY_PS_ID] = + skb_queue_len(&txq->sk_list); sta->ps.pkt_ready[UAPSD_ID] = 0; //txq->hwq = &rwnx_hw->hwq[RWNX_HWQ_BCMC]; } else { int i; sta->ps.pkt_ready[LEGACY_PS_ID] = 0; sta->ps.pkt_ready[UAPSD_ID] = 0; - foreach_sta_txq(sta, txq, i, rwnx_hw) { - sta->ps.pkt_ready[txq->ps_id] += skb_queue_len(&txq->sk_list); + foreach_sta_txq(sta, txq, i, rwnx_hw) + { + sta->ps.pkt_ready[txq->ps_id] += + skb_queue_len(&txq->sk_list); } } spin_unlock_bh(&rwnx_hw->tx_lock); //if (sta->ps.pkt_ready[LEGACY_PS_ID]) - // rwnx_set_traffic_status(rwnx_hw, sta, true, LEGACY_PS_ID); + //srwnx_set_traffic_status(rwnx_hw, sta, true, LEGACY_PS_ID); //if (sta->ps.pkt_ready[UAPSD_ID]) // rwnx_set_traffic_status(rwnx_hw, sta, true, UAPSD_ID); @@ -121,7 +126,8 @@ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, txq->push_limit = 0; } else { int i; - foreach_sta_txq(sta, txq, i, rwnx_hw) { + foreach_sta_txq(sta, txq, i, rwnx_hw) + { txq->push_limit = 0; } } @@ -129,8 +135,9 @@ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, rwnx_txq_sta_start(sta, RWNX_TXQ_STOP_STA_PS, rwnx_hw); spin_unlock_bh(&rwnx_hw->tx_lock); - //if (sta->ps.pkt_ready[LEGACY_PS_ID]) - // rwnx_set_traffic_status(rwnx_hw, sta, false, LEGACY_PS_ID); + if (sta->ps.pkt_ready[LEGACY_PS_ID]) + rwnx_set_traffic_status(rwnx_hw, sta, false, + LEGACY_PS_ID); //if (sta->ps.pkt_ready[UAPSD_ID]) // rwnx_set_traffic_status(rwnx_hw, sta, false, UAPSD_ID); @@ -159,7 +166,7 @@ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, * from the bottom_half tasklet. */ void rwnx_ps_bh_traffic_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - u16 pkt_req, u8 ps_id) + u16 pkt_req, u8 ps_id) { int pkt_ready_all; struct rwnx_txq *txq; @@ -169,7 +176,8 @@ void rwnx_ps_bh_traffic_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, // sta->mac_addr)) // return; if (!sta->ps.active) { - AICWFDBG(LOGTRACE,"sta %pM is not in Power Save mode", sta->mac_addr); + AICWFDBG(LOGTRACE, "sta %pM is not in Power Save mode", + sta->mac_addr); return; } #ifdef CREATE_TRACE_POINTS @@ -182,7 +190,8 @@ void rwnx_ps_bh_traffic_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, if ((pkt_req == PS_SP_INTERRUPTED) && (ps_id == UAPSD_ID)) { int tid; sta->ps.sp_cnt[ps_id] = 0; - foreach_sta_txq(sta, txq, tid, rwnx_hw) { + foreach_sta_txq(sta, txq, tid, rwnx_hw) + { txq->push_limit = 0; } goto done; @@ -218,8 +227,12 @@ void rwnx_ps_bh_traffic_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, } else { int i, tid; - foreach_sta_txq_prio(sta, txq, tid, i, rwnx_hw) { - u16 txq_len = skb_queue_len(&txq->sk_list); + //foreach_sta_txq_prio(sta, txq, tid, i, rwnx_hw) { + for (i = 0; i < NX_NB_TID_PER_STA; i++) { + u16 txq_len; + tid = nx_tid_prio[i]; + txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); + txq_len = skb_queue_len(&txq->sk_list); if (txq->ps_id != ps_id) continue; @@ -270,7 +283,7 @@ static void rwnx_downgrade_ac(struct rwnx_sta *sta, struct sk_buff *skb) int8_t ac = rwnx_tid2hwq[skb->priority]; if (WARN((ac > RWNX_HWQ_VO), - "Unexepcted ac %d for skb before downgrade", ac)) + "Unexepcted ac %d for skb before downgrade", ac)) ac = RWNX_HWQ_VO; while (sta->acm & BIT(ac)) { @@ -291,26 +304,27 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) struct rwnx_txq *txq; u16 netdev_queue; bool tdls_mgmgt_frame = false; - int nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX; + int nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX; - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC; - } + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC; + } switch (wdev->iftype) { case NL80211_IFTYPE_STATION: - case NL80211_IFTYPE_P2P_CLIENT: - { + case NL80211_IFTYPE_P2P_CLIENT: { struct ethhdr *eth; eth = (struct ethhdr *)skb->data; if (eth->h_proto == cpu_to_be16(ETH_P_TDLS)) { tdls_mgmgt_frame = true; } if ((rwnx_vif->tdls_status == TDLS_LINK_ACTIVE) && - (rwnx_vif->sta.tdls_sta != NULL) && - (memcmp(eth->h_dest, rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN) == 0)) + (rwnx_vif->sta.tdls_sta != NULL) && + (memcmp(eth->h_dest, rwnx_vif->sta.tdls_sta->mac_addr, + ETH_ALEN) == 0)) sta = rwnx_vif->sta.tdls_sta; else sta = rwnx_vif->sta.ap; @@ -326,8 +340,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) fallback searching sta amongs all AP's clients */ rwnx_vif = rwnx_vif->ap_vlan.master; case NL80211_IFTYPE_AP: - case NL80211_IFTYPE_P2P_GO: - { + case NL80211_IFTYPE_P2P_GO: { struct rwnx_sta *cur; struct ethhdr *eth = (struct ethhdr *)skb->data; @@ -335,8 +348,10 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) sta = &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index]; } else { spin_lock_bh(&rwnx_vif->rwnx_hw->cb_lock); - list_for_each_entry(cur, &rwnx_vif->ap.sta_list, list) { - if (!memcmp(cur->mac_addr, eth->h_dest, ETH_ALEN)) { + list_for_each_entry (cur, &rwnx_vif->ap.sta_list, + list) { + if (!memcmp(cur->mac_addr, eth->h_dest, + ETH_ALEN)) { sta = cur; break; } @@ -346,8 +361,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) break; } - case NL80211_IFTYPE_MESH_POINT: - { + case NL80211_IFTYPE_MESH_POINT: { struct ethhdr *eth = (struct ethhdr *)skb->data; if (!rwnx_vif->is_resending) { @@ -355,10 +369,15 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) * If ethernet source address is not the address of a mesh wireless interface, we are proxy for * this address and have to inform the HW */ - if (memcmp(ð->h_source[0], &rwnx_vif->ndev->perm_addr[0], ETH_ALEN)) { + if (memcmp(ð->h_source[0], + &rwnx_vif->ndev->perm_addr[0], ETH_ALEN)) { /* Check if LMAC is already informed */ - if (!rwnx_get_mesh_proxy_info(rwnx_vif, (u8 *)ð->h_source, true)) { - rwnx_send_mesh_proxy_add_req(rwnx_hw, rwnx_vif, (u8 *)ð->h_source); + if (!rwnx_get_mesh_proxy_info( + rwnx_vif, (u8 *)ð->h_source, + true)) { + rwnx_send_mesh_proxy_add_req( + rwnx_hw, rwnx_vif, + (u8 *)ð->h_source); } } } @@ -370,19 +389,24 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) struct rwnx_mesh_path *p_mesh_path = NULL; struct rwnx_mesh_path *p_cur_path; /* Check if destination is proxied by a peer Mesh STA */ - struct rwnx_mesh_proxy *p_mesh_proxy = rwnx_get_mesh_proxy_info(rwnx_vif, (u8 *)ð->h_dest, false); + struct rwnx_mesh_proxy *p_mesh_proxy = + rwnx_get_mesh_proxy_info( + rwnx_vif, (u8 *)ð->h_dest, false); /* Mesh Target address */ struct mac_addr *p_tgt_mac_addr; if (p_mesh_proxy) { p_tgt_mac_addr = &p_mesh_proxy->proxy_addr; } else { - p_tgt_mac_addr = (struct mac_addr *)ð->h_dest; + p_tgt_mac_addr = + (struct mac_addr *)ð->h_dest; } /* Look for path with provided target address */ - list_for_each_entry(p_cur_path, &rwnx_vif->ap.mpath_list, list) { - if (!memcmp(&p_cur_path->tgt_mac_addr, p_tgt_mac_addr, ETH_ALEN)) { + list_for_each_entry (p_cur_path, + &rwnx_vif->ap.mpath_list, list) { + if (!memcmp(&p_cur_path->tgt_mac_addr, + p_tgt_mac_addr, ETH_ALEN)) { p_mesh_path = p_cur_path; break; } @@ -391,7 +415,9 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) if (p_mesh_path) { sta = p_mesh_path->p_nhop_sta; } else { - rwnx_send_mesh_path_create_req(rwnx_hw, rwnx_vif, (u8 *)p_tgt_mac_addr); + rwnx_send_mesh_path_create_req( + rwnx_hw, rwnx_vif, + (u8 *)p_tgt_mac_addr); } } @@ -403,15 +429,19 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) if (sta && sta->qos) { if (tdls_mgmgt_frame) { - skb_set_queue_mapping(skb, NX_STA_NDEV_IDX(skb->priority, sta->sta_idx)); + skb_set_queue_mapping(skb, + NX_STA_NDEV_IDX(skb->priority, + sta->sta_idx)); } else { - /* use the data classifier to determine what 802.1d tag the +/* use the data classifier to determine what 802.1d tag the * data frame has */ - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) - skb->priority = cfg80211_classify8021d(skb) & IEEE80211_QOS_CTL_TAG1D_MASK; - #else - skb->priority = cfg80211_classify8021d(skb, NULL) & IEEE80211_QOS_CTL_TAG1D_MASK; - #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) + skb->priority = cfg80211_classify8021d(skb) & + IEEE80211_QOS_CTL_TAG1D_MASK; +#else + skb->priority = cfg80211_classify8021d(skb, NULL) & + IEEE80211_QOS_CTL_TAG1D_MASK; +#endif } if (sta->acm) rwnx_downgrade_ac(sta, skb); @@ -452,7 +482,7 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb) * note: tx_lock already taken. */ static inline void rwnx_set_more_data_flag(struct rwnx_hw *rwnx_hw, - struct rwnx_sw_txhdr *sw_txhdr) + struct rwnx_sw_txhdr *sw_txhdr) { struct rwnx_sta *sta = sw_txhdr->rwnx_sta; struct rwnx_vif *vif = sw_txhdr->rwnx_vif; @@ -464,15 +494,18 @@ static inline void rwnx_set_more_data_flag(struct rwnx_hw *rwnx_hw, #ifdef CREATE_TRACE_POINTS trace_ps_push(sta); #endif - if (((txq->ps_id == UAPSD_ID) || (vif->wdev.iftype == NL80211_IFTYPE_MESH_POINT) || (sta->tdls.active)) - && !sta->ps.sp_cnt[txq->ps_id]) { + if (((txq->ps_id == UAPSD_ID) || + (vif->wdev.iftype == NL80211_IFTYPE_MESH_POINT) || + (sta->tdls.active)) && + !sta->ps.sp_cnt[txq->ps_id]) { sw_txhdr->desc.host.flags |= TXU_CNTRL_EOSP; } if (sta->ps.pkt_ready[txq->ps_id]) { sw_txhdr->desc.host.flags |= TXU_CNTRL_MORE_DATA; } else { - rwnx_set_traffic_status(rwnx_hw, sta, false, txq->ps_id); + rwnx_set_traffic_status(rwnx_hw, sta, false, + txq->ps_id); } } } @@ -490,23 +523,21 @@ static inline void rwnx_set_more_data_flag(struct rwnx_hw *rwnx_hw, * simply re-read information form skb. */ static struct rwnx_sta *rwnx_get_tx_priv(struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, - u8 *tid) + struct sk_buff *skb, u8 *tid) { static struct rwnx_hw *rwnx_hw; struct rwnx_sta *sta; int sta_idx; int nx_remote_sta_max = NX_REMOTE_STA_MAX; - int nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX; - - - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_remote_sta_max = NX_REMOTE_STA_MAX_FOR_OLD_IC; - nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC; - } + int nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX; + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_remote_sta_max = NX_REMOTE_STA_MAX_FOR_OLD_IC; + nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC; + } rwnx_hw = rwnx_vif->rwnx_hw; *tid = skb->priority; @@ -582,7 +613,7 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) txq->nb_retry--; if (txq->nb_retry == 0) { WARN(skb != txq->last_retry_skb, - "last retry buffer is not the expected one"); + "last retry buffer is not the expected one"); txq->last_retry_skb = NULL; } } else if (!(flags & RWNX_PUSH_RETRY)) { @@ -595,7 +626,7 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) rwnx_hw->stats.amsdus[sw_txhdr->amsdu.nb - 1].done++; txq->amsdu = NULL; } else if (!(flags & RWNX_PUSH_RETRY) && - !(sw_txhdr->desc.host.flags & TXU_CNTRL_AMSDU)) { + !(sw_txhdr->desc.host.flags & TXU_CNTRL_AMSDU)) { rwnx_hw->stats.amsdus[0].done++; } #endif /* CONFIG_RWNX_AMSDUS_TX */ @@ -619,15 +650,15 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) #ifdef CREATE_TRACE_POINTS trace_push_desc(skb, sw_txhdr, flags); #endif - #if 0 +#if 0 txq->credits--; - #endif +#endif txq->pkt_pushed[user]++; - //printk("txq->credits=%d\n",txq->credits); - #if 0 +//printk("txq->credits=%d\n",txq->credits); +#if 0 if (txq->credits <= 0) rwnx_txq_stop(txq, RWNX_TXQ_STOP_FULL); - #endif +#endif if (txq->push_limit) txq->push_limit--; @@ -635,19 +666,44 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) rwnx_ipc_txdesc_push(rwnx_hw, &sw_txhdr->desc, skb, hw_queue, user); #else #ifdef AICWF_SDIO_SUPPORT - if (((sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT) && \ - ((*(skb->data+sw_txhdr->headroom) == 0xd0) || (*(skb->data+sw_txhdr->headroom) == 0x10) || (*(skb->data+sw_txhdr->headroom) == 0x30))) || \ - (sw_txhdr->desc.host.ethertype == 0x8e88) || (sw_txhdr->desc.host.ethertype == 0xb488)) { + if (((sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT) && + ((*(skb->data + sw_txhdr->headroom) == 0xd0) || + (*(skb->data + sw_txhdr->headroom) == 0x10) || + (*(skb->data + sw_txhdr->headroom) == 0x30))) || + (sw_txhdr->desc.host.ethertype == 0x8e88) || + (sw_txhdr->desc.host.ethertype == 0xb488)) { sw_txhdr->need_cfm = 1; - sw_txhdr->desc.host.hostid = ((1<<31) | rwnx_hw->sdio_env.txdesc_free_idx[0]); + sw_txhdr->desc.host.hostid = + ((1 << 31) | rwnx_hw->sdio_env.txdesc_free_idx[0]); aicwf_sdio_host_txdesc_push(&(rwnx_hw->sdio_env), 0, (long)skb); - if((sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT)) - AICWFDBG(LOGINFO, "need cfm mgmt:%x,user_idx=%d, skb=%p\n", *(skb->data+sw_txhdr->headroom), rwnx_hw->sdio_env.txdesc_free_idx[0], skb); + if ((sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT)) + AICWFDBG(LOGINFO, + "need cfm mgmt:%x,user_idx=%d, skb=%p\n", + *(skb->data + sw_txhdr->headroom), + rwnx_hw->sdio_env.txdesc_free_idx[0], skb); else - AICWFDBG(LOGINFO, "need cfm ethertype:%8x,user_idx=%d, skb=%p\n", sw_txhdr->desc.host.ethertype, rwnx_hw->sdio_env.txdesc_free_idx[0], skb); + AICWFDBG(LOGINFO, + "need cfm ethertype:%8x,user_idx=%d, skb=%p\n", + sw_txhdr->desc.host.ethertype, + rwnx_hw->sdio_env.txdesc_free_idx[0], skb); } else { sw_txhdr->need_cfm = 0; sw_txhdr->desc.host.hostid = 0; + if (sw_txhdr->raw_frame) { + sw_txhdr->desc.host.flags |= TXU_CNTRL_MGMT; + AICWFDBG( + LOGDEBUG, + "%s TXU_CNTRL_MGMT sw_txhdr->desc.host.flags:%x\r\n", + __func__, sw_txhdr->desc.host.flags); + } + if (sw_txhdr->fixed_rate) { + sw_txhdr->desc.host.hostid = + (0x01UL << 30) | sw_txhdr->rate_config; + AICWFDBG(LOGDEBUG, "%s TXU_CNTRL_MGMT hostid:%x\r\n", + __func__, sw_txhdr->desc.host.hostid); + } else { + sw_txhdr->desc.host.hostid = 0; + } sw_txhdr->rwnx_vif->net_stats.tx_packets++; sw_txhdr->rwnx_vif->net_stats.tx_bytes += sw_txhdr->frame_len; @@ -656,12 +712,15 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) aicwf_frame_tx((void *)(rwnx_hw->sdiodev), skb); #endif #ifdef AICWF_USB_SUPPORT - if (((sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT) && \ - ((*(skb->data+sw_txhdr->headroom) == 0xd0) || (*(skb->data+sw_txhdr->headroom) == 0x10) || (*(skb->data+sw_txhdr->headroom) == 0x30))) || \ - (sw_txhdr->desc.host.ethertype == 0x8e88)) { + if (((sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT) && + ((*(skb->data + sw_txhdr->headroom) == 0xd0) || + (*(skb->data + sw_txhdr->headroom) == 0x10) || + (*(skb->data + sw_txhdr->headroom) == 0x30))) || + (sw_txhdr->desc.host.ethertype == 0x8e88)) { printk("push need cfm flags 0x%x\n", sw_txhdr->desc.host.flags); sw_txhdr->need_cfm = 1; - sw_txhdr->desc.host.hostid = ((1<<31) | rwnx_hw->usb_env.txdesc_free_idx[0]); + sw_txhdr->desc.host.hostid = + ((1 << 31) | rwnx_hw->usb_env.txdesc_free_idx[0]); aicwf_usb_host_txdesc_push(&(rwnx_hw->usb_env), 0, (long)(skb)); } else { sw_txhdr->need_cfm = 0; @@ -680,8 +739,6 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) rwnx_hw->stats.cfm_balance[hw_queue]++; } - - /** * rwnx_tx_retry - Push an AMPDU pkt that need to be retried * @@ -695,7 +752,7 @@ void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags) * First update sw descriptor and then queue it in the retry list. */ static void rwnx_tx_retry(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, - struct rwnx_txhdr *txhdr, bool sw_retry) + struct rwnx_txhdr *txhdr, bool sw_retry) { struct rwnx_sw_txhdr *sw_txhdr = txhdr->sw_hdr; struct tx_cfm_tag *cfm = &txhdr->hw_hdr.cfm; @@ -704,21 +761,21 @@ static void rwnx_tx_retry(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, int peek_len = sizeof(((struct rwnx_hw_txhdr *)0)->cfm); if (!sw_retry) { - /* update sw desc */ - #if 0 +/* update sw desc */ +#if 0 sw_txhdr->desc.host.sn = cfm->sn; sw_txhdr->desc.host.pn[0] = cfm->pn[0]; sw_txhdr->desc.host.pn[1] = cfm->pn[1]; sw_txhdr->desc.host.pn[2] = cfm->pn[2]; sw_txhdr->desc.host.pn[3] = cfm->pn[3]; sw_txhdr->desc.host.timestamp = cfm->timestamp; - #endif +#endif sw_txhdr->desc.host.flags |= TXU_CNTRL_RETRY; - #ifdef CONFIG_RWNX_AMSDUS_TX +#ifdef CONFIG_RWNX_AMSDUS_TX if (sw_txhdr->desc.host.flags & TXU_CNTRL_AMSDU) rwnx_hw->stats.amsdus[sw_txhdr->amsdu.nb - 1].failed++; - #endif +#endif } /* MORE_DATA will be re-set if needed when pkt will be repushed */ @@ -726,7 +783,7 @@ static void rwnx_tx_retry(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, cfm->status.value = 0; dma_sync_single_for_device(rwnx_hw->dev, sw_txhdr->dma_addr + peek_off, - peek_len, DMA_BIDIRECTIONAL); + peek_len, DMA_BIDIRECTIONAL); txq->credits++; if (txq->credits > 0) @@ -736,7 +793,6 @@ static void rwnx_tx_retry(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, rwnx_txq_queue_skb(skb, txq, rwnx_hw, true); } - #ifdef CONFIG_RWNX_AMSDUS_TX /* return size of subframe (including header) */ static inline int rwnx_amsdu_subframe_length(struct ethhdr *eth, int eth_len) @@ -758,7 +814,6 @@ static inline bool rwnx_amsdu_is_aggregable(struct sk_buff *skb) return true; } - /** * rwnx_amsdu_del_subframe_header - remove AMSDU header * @@ -823,8 +878,8 @@ static void rwnx_amsdu_del_subframe_header(struct rwnx_amsdu_txhdr *amsdu_txhdr) * Called with tx_lock hold */ static int rwnx_amsdu_add_subframe_header(struct rwnx_hw *rwnx_hw, - struct sk_buff *skb, - struct rwnx_sw_txhdr *sw_txhdr) + struct sk_buff *skb, + struct rwnx_sw_txhdr *sw_txhdr) { struct rwnx_amsdu *amsdu = &sw_txhdr->amsdu; struct rwnx_amsdu_txhdr *amsdu_txhdr; @@ -834,8 +889,7 @@ static int rwnx_amsdu_add_subframe_header(struct rwnx_hw *rwnx_hw, u8 *pos, *map_start; msdu_len = skb->len - sizeof(*eth); - headroom_need = sizeof(*amsdu_txhdr) + amsdu->pad + - sizeof(*amsdu_hdr); + headroom_need = sizeof(*amsdu_txhdr) + amsdu->pad + sizeof(*amsdu_hdr); if (ntohs(eth->h_proto) >= ETH_P_802_3_MIN) { headroom_need += sizeof(rfc1042_header) + 2; msdu_len += sizeof(rfc1042_header) + 2; @@ -876,7 +930,7 @@ static int rwnx_amsdu_add_subframe_header(struct rwnx_hw *rwnx_hw, /* MAP (and sync) memory for DMA */ map_len = msdu_len + amsdu->pad + sizeof(*amsdu_hdr); dma_addr = dma_map_single(rwnx_hw->dev, map_start, map_len, - DMA_BIDIRECTIONAL); + DMA_BIDIRECTIONAL); if (WARN_ON(dma_mapping_error(rwnx_hw->dev, dma_addr))) { pos -= sizeof(*eth); memmove(pos, eth, sizeof(*eth)); @@ -927,16 +981,16 @@ static int rwnx_amsdu_add_subframe_header(struct rwnx_hw *rwnx_hw, * returns true if buffer has been added as A-MDSP subframe, false otherwise * */ -static bool rwnx_amsdu_add_subframe(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, - struct rwnx_sta *sta, struct rwnx_txq *txq) +static bool rwnx_amsdu_add_subframe(struct rwnx_hw *rwnx_hw, + struct sk_buff *skb, struct rwnx_sta *sta, + struct rwnx_txq *txq) { bool res = false; struct ethhdr *eth; /* immediately return if amsdu are not allowed for this sta */ if (!txq->amsdu_len || rwnx_hw->mod_params->amsdu_maxnb < 2 || - !rwnx_amsdu_is_aggregable(skb) - ) + !rwnx_amsdu_is_aggregable(skb)) return false; spin_lock_bh(&rwnx_hw->tx_lock); @@ -947,8 +1001,9 @@ static bool rwnx_amsdu_add_subframe(struct rwnx_hw *rwnx_hw, struct sk_buff *skb eth = (struct ethhdr *)(skb->data); if (((sw_txhdr->amsdu.len + sw_txhdr->amsdu.pad + - rwnx_amsdu_subframe_length(eth, skb->len)) > txq->amsdu_len) || - rwnx_amsdu_add_subframe_header(rwnx_hw, skb, sw_txhdr)) { + rwnx_amsdu_subframe_length(eth, skb->len)) > + txq->amsdu_len) || + rwnx_amsdu_add_subframe_header(rwnx_hw, skb, sw_txhdr)) { txq->amsdu = NULL; goto end; } @@ -972,13 +1027,13 @@ static bool rwnx_amsdu_add_subframe(struct rwnx_hw *rwnx_hw, struct sk_buff *skb txhdr = (struct rwnx_txhdr *)skb_prev->data; sw_txhdr = txhdr->sw_hdr; if ((sw_txhdr->amsdu.len) || - (sw_txhdr->desc.host.flags & TXU_CNTRL_RETRY)) + (sw_txhdr->desc.host.flags & TXU_CNTRL_RETRY)) /* previous buffer is already a complete amsdu or a retry */ goto end; eth = (struct ethhdr *)(skb_prev->data + sw_txhdr->headroom); - len1 = rwnx_amsdu_subframe_length(eth, (sw_txhdr->frame_len + - sizeof(struct ethhdr))); + len1 = rwnx_amsdu_subframe_length( + eth, (sw_txhdr->frame_len + sizeof(struct ethhdr))); eth = (struct ethhdr *)(skb->data); len2 = rwnx_amsdu_subframe_length(eth, skb->len); @@ -1020,7 +1075,8 @@ int aic_br_client_tx(struct rwnx_vif *vif, struct sk_buff **pskb) /* if(check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) */ { - void dhcp_flag_bcast(struct rwnx_vif *vif, struct sk_buff *skb); + void dhcp_flag_bcast(struct rwnx_vif * vif, + struct sk_buff * skb); int res, is_vlan_tag = 0, i, do_nat25 = 1; unsigned short vlan_hdr = 0; void *br_port = NULL; @@ -1029,63 +1085,103 @@ int aic_br_client_tx(struct rwnx_vif *vif, struct sk_buff **pskb) #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) br_port = vif->ndev->br_port; -#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */ +#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */ rcu_read_lock(); br_port = rcu_dereference(vif->ndev->rx_handler_data); rcu_read_unlock(); #endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */ #ifdef BR_SUPPORT_DEBUG - printk("SA=%pM, br_mac=%pM, type=0x%x, da[0]=%x, scdb=%pM, vif_type=%d\n", skb->data + MACADDRLEN, vif->br_mac, *((unsigned short *)(skb->data + MACADDRLEN * 2)), - skb->data[0], vif->scdb_mac,RWNX_VIF_TYPE(vif)); + printk("SA=%pM, br_mac=%pM, type=0x%x, da[0]=%x, scdb=%pM, vif_type=%d\n", + skb->data + MACADDRLEN, vif->br_mac, + *((unsigned short *)(skb->data + MACADDRLEN * 2)), + skb->data[0], vif->scdb_mac, RWNX_VIF_TYPE(vif)); #endif - spin_lock_bh(&vif->br_ext_lock); - if (!(skb->data[0] & 1) && - br_port && + spin_lock_bh(&vif->br_ext_lock); + if (!(skb->data[0] & 1) && br_port && memcmp(skb->data + MACADDRLEN, vif->br_mac, MACADDRLEN) && - *((unsigned short *)(skb->data + MACADDRLEN * 2)) != __constant_htons(ETH_P_8021Q) && - *((unsigned short *)(skb->data + MACADDRLEN * 2)) == __constant_htons(ETH_P_IP) && - !memcmp(vif->scdb_mac, skb->data + MACADDRLEN, MACADDRLEN) && vif->scdb_entry) { - memcpy(skb->data + MACADDRLEN, vif->ndev->dev_addr, MACADDRLEN); + *((unsigned short *)(skb->data + MACADDRLEN * 2)) != + __constant_htons(ETH_P_8021Q) && + *((unsigned short *)(skb->data + MACADDRLEN * 2)) == + __constant_htons(ETH_P_IP) && + !memcmp(vif->scdb_mac, skb->data + MACADDRLEN, + MACADDRLEN) && + vif->scdb_entry) { + memcpy(skb->data + MACADDRLEN, vif->ndev->dev_addr, + MACADDRLEN); vif->scdb_entry->ageing_timer = jiffies; - spin_unlock_bh(&vif->br_ext_lock); + spin_unlock_bh(&vif->br_ext_lock); } else - /* if (!priv->pmib->ethBrExtInfo.nat25_disable) */ + /* if (!priv->pmib->ethBrExtInfo.nat25_disable) */ { /* if (priv->dev->br_port && * !memcmp(skb->data+MACADDRLEN, priv->br_mac, MACADDRLEN)) { */ #if 1 - if (*((unsigned short *)(skb->data + MACADDRLEN * 2)) == __constant_htons(ETH_P_8021Q)) { + if (*((unsigned short *)(skb->data + MACADDRLEN * 2)) == + __constant_htons(ETH_P_8021Q)) { is_vlan_tag = 1; - vlan_hdr = *((unsigned short *)(skb->data + MACADDRLEN * 2 + 2)); + vlan_hdr = *((unsigned short *)(skb->data + + MACADDRLEN * 2 + + 2)); for (i = 0; i < 6; i++) - *((unsigned short *)(skb->data + MACADDRLEN * 2 + 2 - i * 2)) = *((unsigned short *)(skb->data + MACADDRLEN * 2 - 2 - i * 2)); + *((unsigned short *)(skb->data + + MACADDRLEN * 2 + + 2 - i * 2)) = + *((unsigned short *)(skb->data + + MACADDRLEN * + 2 - + 2 - + i * 2)); skb_pull(skb, 4); } /* if SA == br_mac && skb== IP => copy SIP to br_ip ?? why */ - if (!memcmp(skb->data + MACADDRLEN, vif->br_mac, MACADDRLEN) && - (*((unsigned short *)(skb->data + MACADDRLEN * 2)) == __constant_htons(ETH_P_IP))) - memcpy(vif->br_ip, skb->data + WLAN_ETHHDR_LEN + 12, 4); + if (!memcmp(skb->data + MACADDRLEN, vif->br_mac, + MACADDRLEN) && + (*((unsigned short *)(skb->data + MACADDRLEN * 2)) == + __constant_htons(ETH_P_IP))) + memcpy(vif->br_ip, + skb->data + WLAN_ETHHDR_LEN + 12, 4); - if (*((unsigned short *)(skb->data + MACADDRLEN * 2)) == __constant_htons(ETH_P_IP)) { - if (memcmp(vif->scdb_mac, skb->data + MACADDRLEN, MACADDRLEN)) { - #if 1 - void *scdb_findEntry(struct rwnx_vif *vif, unsigned char *macAddr, unsigned char *ipAddr); + if (*((unsigned short *)(skb->data + MACADDRLEN * 2)) == + __constant_htons(ETH_P_IP)) { + if (memcmp(vif->scdb_mac, + skb->data + MACADDRLEN, + MACADDRLEN)) { +#if 1 + void *scdb_findEntry( + struct rwnx_vif * vif, + unsigned char *macAddr, + unsigned char *ipAddr); - vif->scdb_entry = (struct nat25_network_db_entry *)scdb_findEntry(vif, - skb->data + MACADDRLEN, skb->data + WLAN_ETHHDR_LEN + 12); + vif->scdb_entry = (struct nat25_network_db_entry + *) + scdb_findEntry( + vif, + skb->data + MACADDRLEN, + skb->data + + WLAN_ETHHDR_LEN + + 12); if (vif->scdb_entry != NULL) { - memcpy(vif->scdb_mac, skb->data + MACADDRLEN, MACADDRLEN); - memcpy(vif->scdb_ip, skb->data + WLAN_ETHHDR_LEN + 12, 4); - vif->scdb_entry->ageing_timer = jiffies; + memcpy(vif->scdb_mac, + skb->data + MACADDRLEN, + MACADDRLEN); + memcpy(vif->scdb_ip, + skb->data + + WLAN_ETHHDR_LEN + + 12, + 4); + vif->scdb_entry->ageing_timer = + jiffies; do_nat25 = 0; } - #endif +#endif } else { if (vif->scdb_entry) { - vif->scdb_entry->ageing_timer = jiffies; + vif->scdb_entry->ageing_timer = + jiffies; do_nat25 = 0; } else { - memset(vif->scdb_mac, 0, MACADDRLEN); + memset(vif->scdb_mac, 0, + MACADDRLEN); memset(vif->scdb_ip, 0, 4); } } @@ -1093,20 +1189,40 @@ int aic_br_client_tx(struct rwnx_vif *vif, struct sk_buff **pskb) spin_unlock_bh(&vif->br_ext_lock); #endif /* 1 */ if (do_nat25) { - #if 1 - int nat25_db_handle(struct rwnx_vif *vif, struct sk_buff *skb, int method); - if (nat25_db_handle(vif, skb, NAT25_CHECK) == 0) { +#if 1 + int nat25_db_handle(struct rwnx_vif * vif, + struct sk_buff * skb, + int method); + if (nat25_db_handle(vif, skb, NAT25_CHECK) == + 0) { struct sk_buff *newskb; if (is_vlan_tag) { skb_push(skb, 4); for (i = 0; i < 6; i++) - *((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2)); - *((unsigned short *)(skb->data + MACADDRLEN * 2)) = __constant_htons(ETH_P_8021Q); - *((unsigned short *)(skb->data + MACADDRLEN * 2 + 2)) = vlan_hdr; + *((unsigned short + *)(skb->data + + i * 2)) = + *((unsigned short + *)(skb->data + + 4 + + i * 2)); + *((unsigned short + *)(skb->data + + MACADDRLEN * 2)) = + __constant_htons( + ETH_P_8021Q); + *((unsigned short *)(skb->data + + MACADDRLEN * + 2 + + 2)) = + vlan_hdr; } - newskb = skb_copy(skb, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); + newskb = skb_copy(skb, + in_interrupt() ? + GFP_ATOMIC : + GFP_KERNEL); if (newskb == NULL) { /* priv->ext_stats.tx_drops++; */ printk("TX DROP: skb_copy fail!\n"); @@ -1117,20 +1233,36 @@ int aic_br_client_tx(struct rwnx_vif *vif, struct sk_buff **pskb) *pskb = skb = newskb; if (is_vlan_tag) { - vlan_hdr = *((unsigned short *)(skb->data + MACADDRLEN * 2 + 2)); + vlan_hdr = *( + (unsigned short + *)(skb->data + + MACADDRLEN * + 2 + + 2)); for (i = 0; i < 6; i++) - *((unsigned short *)(skb->data + MACADDRLEN * 2 + 2 - i * 2)) = *((unsigned short *)(skb->data + MACADDRLEN * 2 - 2 - i * 2)); + *((unsigned short + *)(skb->data + + MACADDRLEN * + 2 + + 2 - + i * 2)) = + *((unsigned short + *)(skb->data + + MACADDRLEN * + 2 - + 2 - + i * 2)); skb_pull(skb, 4); } } if (skb_is_nonlinear(skb)) - printk("%s(): skb_is_nonlinear!!\n", __FUNCTION__); - + printk("%s(): skb_is_nonlinear!!\n", + __FUNCTION__); #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) res = skb_linearize(skb, GFP_ATOMIC); -#else /* (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) */ +#else /* (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) */ res = skb_linearize(skb); #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) */ if (res < 0) { @@ -1146,26 +1278,34 @@ int aic_br_client_tx(struct rwnx_vif *vif, struct sk_buff **pskb) printk("TX DROP: nat25_db_handle fail!\n"); /* goto free_and_stop; */ return -1; - } /* we just print warning message and let it go */ /* DEBUG_WARN("%s()-%d: nat25_db_handle INSERT Warning!\n", __FUNCTION__, __LINE__); */ /* return -1; */ /* return -1 will cause system crash on 2011/08/30! */ return 0; } - #endif +#endif } - memcpy(skb->data + MACADDRLEN, vif->ndev->dev_addr, MACADDRLEN); + memcpy(skb->data + MACADDRLEN, vif->ndev->dev_addr, + MACADDRLEN); dhcp_flag_bcast(vif, skb); if (is_vlan_tag) { skb_push(skb, 4); for (i = 0; i < 6; i++) - *((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2)); - *((unsigned short *)(skb->data + MACADDRLEN * 2)) = __constant_htons(ETH_P_8021Q); - *((unsigned short *)(skb->data + MACADDRLEN * 2 + 2)) = vlan_hdr; + *((unsigned short *)(skb->data + + i * 2)) = + *((unsigned short *)(skb->data + + 4 + + i * 2)); + *((unsigned short *)(skb->data + + MACADDRLEN * 2)) = + __constant_htons(ETH_P_8021Q); + *((unsigned short *)(skb->data + + MACADDRLEN * 2 + 2)) = + vlan_hdr; } } #if 0 @@ -1184,27 +1324,28 @@ int aic_br_client_tx(struct rwnx_vif *vif, struct sk_buff **pskb) #endif /* 0 */ /* check if SA is equal to our MAC */ - if (memcmp(skb->data + MACADDRLEN, vif->ndev->dev_addr, MACADDRLEN)) { + if (memcmp(skb->data + MACADDRLEN, vif->ndev->dev_addr, + MACADDRLEN)) { /* priv->ext_stats.tx_drops++; */ printk("TX DROP: untransformed frame SA:%02X%02X%02X%02X%02X%02X!\n", - skb->data[6], skb->data[7], skb->data[8], skb->data[9], skb->data[10], skb->data[11]); + skb->data[6], skb->data[7], skb->data[8], + skb->data[9], skb->data[10], skb->data[11]); /* goto free_and_stop; */ return -1; } } - printk("%s:exit\n",__func__); + printk("%s:exit\n", __func__); return 0; } #endif /* CONFIG_BR_SUPPORT */ - #ifdef CONFIG_FILTER_TCP_ACK /* return: * 0, msg buf freed by the real driver * others, skb need free by the caller,remember not use msg->skb! */ -int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) +int intf_tx(struct rwnx_hw *priv, struct msg_buf *msg) { struct rwnx_vif *rwnx_vif = msg->rwnx_vif; struct rwnx_hw *rwnx_hw = rwnx_vif->rwnx_hw; @@ -1220,10 +1361,10 @@ int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) u16 frame_len; u16 frame_oft; u8 tid; - struct sk_buff *skb=msg->skb; + struct sk_buff *skb = msg->skb; struct ethhdr eth_t; - move_tcpack_msg(rwnx_hw,msg); + move_tcpack_msg(rwnx_hw, msg); kfree(msg); memcpy(ð_t, skb->data, sizeof(struct ethhdr)); @@ -1243,34 +1384,33 @@ int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) #endif #ifdef CONFIG_BR_SUPPORT - if (1) {//(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { - void *br_port = NULL; + if (1) { //(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { + void *br_port = NULL; - #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) - br_port = rwnx_vif->ndev->br_port; - #else - rcu_read_lock(); - br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); - rcu_read_unlock(); - #endif +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = rwnx_vif->ndev->br_port; +#else + rcu_read_lock(); + br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); + rcu_read_unlock(); +#endif - if (br_port) { - s32 res = aic_br_client_tx(rwnx_vif, &skb); - if (res == -1) { - goto free; - } - } - } + if (br_port) { + s32 res = aic_br_client_tx(rwnx_vif, &skb); + if (res == -1) { + goto free; + } + } + } #endif /* CONFIG_BR_SUPPORT */ - /* Retrieve the pointer to the Ethernet data */ // eth = (struct ethhdr *)skb->data; skb_pull(skb, 14); //hdr_pads = RWNX_SWTXHDR_ALIGN_PADS((long)eth); - hdr_pads = RWNX_SWTXHDR_ALIGN_PADS((long)skb->data); - headroom = sizeof(struct rwnx_txhdr) + hdr_pads; + hdr_pads = RWNX_SWTXHDR_ALIGN_PADS((long)skb->data); + headroom = sizeof(struct rwnx_txhdr) + hdr_pads; skb_push(skb, headroom); @@ -1281,20 +1421,23 @@ int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) txhdr->sw_hdr = sw_txhdr; desc = &sw_txhdr->desc; - frame_len = (u16)skb->len - headroom;// - sizeof(*eth); + frame_len = (u16)skb->len - headroom; // - sizeof(*eth); - sw_txhdr->txq = txq; + sw_txhdr->txq = txq; sw_txhdr->frame_len = frame_len; - sw_txhdr->rwnx_sta = sta; - sw_txhdr->rwnx_vif = rwnx_vif; - sw_txhdr->skb = skb; - sw_txhdr->headroom = headroom; - sw_txhdr->map_len = skb->len - offsetof(struct rwnx_txhdr, hw_hdr); + sw_txhdr->rwnx_sta = sta; + sw_txhdr->rwnx_vif = rwnx_vif; + sw_txhdr->skb = skb; + sw_txhdr->headroom = headroom; + sw_txhdr->map_len = skb->len - offsetof(struct rwnx_txhdr, hw_hdr); #ifdef CONFIG_RWNX_AMSDUS_TX sw_txhdr->amsdu.len = 0; sw_txhdr->amsdu.nb = 0; #endif + sw_txhdr->raw_frame = 0; + sw_txhdr->fixed_rate = 0; + // Fill-in the descriptor memcpy(&desc->host.eth_dest_addr, eth_t.h_dest, ETH_ALEN); memcpy(&desc->host.eth_src_addr, eth_t.h_source, ETH_ALEN); @@ -1312,8 +1455,9 @@ int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) desc->host.flags = 0; if ((rwnx_vif->tdls_status == TDLS_LINK_ACTIVE) && - rwnx_vif->sta.tdls_sta && - (memcmp(desc->host.eth_dest_addr.array, rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN) == 0)) { + rwnx_vif->sta.tdls_sta && + (memcmp(desc->host.eth_dest_addr.array, + rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN) == 0)) { desc->host.flags |= TXU_CNTRL_TDLS; rwnx_vif->sta.tdls_sta->tdls.last_tid = desc->host.tid; //rwnx_vif->sta.tdls_sta->tdls.last_sn = desc->host.sn; @@ -1341,8 +1485,9 @@ int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) } /* Fill-in TX descriptor */ - frame_oft = sizeof(struct rwnx_txhdr) - offsetof(struct rwnx_txhdr, hw_hdr) - + hdr_pads;// + sizeof(*eth); + frame_oft = sizeof(struct rwnx_txhdr) - + offsetof(struct rwnx_txhdr, hw_hdr) + + hdr_pads; // + sizeof(*eth); #if 0 #ifdef CONFIG_RWNX_SPLIT_TX_BUF desc->host.packet_addr[0] = sw_txhdr->dma_addr + frame_oft; @@ -1358,12 +1503,12 @@ int intf_tx(struct rwnx_hw *priv,struct msg_buf *msg) rwnx_hwq_process(rwnx_hw, txq->hwq); spin_unlock_bh(&rwnx_hw->tx_lock); - return 0;//NETDEV_TX_OK + return 0; //NETDEV_TX_OK free: dev_kfree_skb_any(skb); - return 0;//NETDEV_TX_OK + return 0; //NETDEV_TX_OK } #endif @@ -1398,11 +1543,11 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) struct ethhdr eth_t; #ifdef CONFIG_FILTER_TCP_ACK - struct msg_buf *msgbuf; + struct msg_buf *msgbuf = NULL; #endif #ifdef CONFIG_ONE_TXQ - skb->queue_mapping = rwnx_select_txq(rwnx_vif, skb); + skb->queue_mapping = rwnx_select_txq(rwnx_vif, skb); #endif sk_pacing_shift_update(skb->sk, rwnx_hw->tcp_pacing_shift); @@ -1410,9 +1555,9 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) /* check whether the current skb can be used */ if (skb_shared(skb) || (skb_headroom(skb) < max_headroom) || - (skb_cloned(skb) && (dev->priv_flags & IFF_BRIDGE_PORT))) { - struct sk_buff *newskb = skb_copy_expand(skb, max_headroom, 0, - GFP_ATOMIC); + (skb_cloned(skb) && (dev->priv_flags & IFF_BRIDGE_PORT))) { + struct sk_buff *newskb = + skb_copy_expand(skb, max_headroom, 0, GFP_ATOMIC); if (unlikely(newskb == NULL)) goto free; @@ -1421,19 +1566,22 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) skb = newskb; } - if(skb->priority < 3) + if (skb->priority < 3) skb->priority = 0; #ifdef CONFIG_FILTER_TCP_ACK - msgbuf=intf_tcp_alloc_msg(msgbuf); - msgbuf->rwnx_vif=rwnx_vif; - msgbuf->skb=skb; - if(filter_send_tcp_ack(rwnx_hw,msgbuf,skb->data,cpu_to_le16(skb->len))){ + if (cpu_to_le16(skb->len) <= MAX_TCP_ACK) { + msgbuf = intf_tcp_alloc_msg(msgbuf); + msgbuf->rwnx_vif = rwnx_vif; + msgbuf->skb = skb; + if (filter_send_tcp_ack(rwnx_hw, msgbuf, skb->data, + cpu_to_le16(skb->len))) { return NETDEV_TX_OK; - }else{ - move_tcpack_msg(rwnx_hw,msgbuf); + } else { + move_tcpack_msg(rwnx_hw, msgbuf); kfree(msgbuf); } + } #endif memcpy(ð_t, skb->data, sizeof(struct ethhdr)); @@ -1452,35 +1600,34 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; #endif - #ifdef CONFIG_BR_SUPPORT - if (1) {//(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { - void *br_port = NULL; +#ifdef CONFIG_BR_SUPPORT + if (1) { //(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { + void *br_port = NULL; - #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) - br_port = rwnx_vif->ndev->br_port; - #else - rcu_read_lock(); - br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); - rcu_read_unlock(); - #endif - - if (br_port) { - s32 res = aic_br_client_tx(rwnx_vif, &skb); - if (res == -1) { - goto free; - } - } - } - #endif /* CONFIG_BR_SUPPORT */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = rwnx_vif->ndev->br_port; +#else + rcu_read_lock(); + br_port = rcu_dereference(rwnx_vif->ndev->rx_handler_data); + rcu_read_unlock(); +#endif + if (br_port) { + s32 res = aic_br_client_tx(rwnx_vif, &skb); + if (res == -1) { + goto free; + } + } + } +#endif /* CONFIG_BR_SUPPORT */ /* Retrieve the pointer to the Ethernet data */ // eth = (struct ethhdr *)skb->data; skb_pull(skb, 14); //hdr_pads = RWNX_SWTXHDR_ALIGN_PADS((long)eth); - hdr_pads = RWNX_SWTXHDR_ALIGN_PADS((long)skb->data); - headroom = sizeof(struct rwnx_txhdr) + hdr_pads; + hdr_pads = RWNX_SWTXHDR_ALIGN_PADS((long)skb->data); + headroom = sizeof(struct rwnx_txhdr) + hdr_pads; skb_push(skb, headroom); @@ -1491,20 +1638,23 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) txhdr->sw_hdr = sw_txhdr; desc = &sw_txhdr->desc; - frame_len = (u16)skb->len - headroom;// - sizeof(*eth); + frame_len = (u16)skb->len - headroom; // - sizeof(*eth); - sw_txhdr->txq = txq; + sw_txhdr->txq = txq; sw_txhdr->frame_len = frame_len; - sw_txhdr->rwnx_sta = sta; - sw_txhdr->rwnx_vif = rwnx_vif; - sw_txhdr->skb = skb; - sw_txhdr->headroom = headroom; - sw_txhdr->map_len = skb->len - offsetof(struct rwnx_txhdr, hw_hdr); + sw_txhdr->rwnx_sta = sta; + sw_txhdr->rwnx_vif = rwnx_vif; + sw_txhdr->skb = skb; + sw_txhdr->headroom = headroom; + sw_txhdr->map_len = skb->len - offsetof(struct rwnx_txhdr, hw_hdr); #ifdef CONFIG_RWNX_AMSDUS_TX sw_txhdr->amsdu.len = 0; sw_txhdr->amsdu.nb = 0; #endif + sw_txhdr->raw_frame = 0; + sw_txhdr->fixed_rate = 0; + // Fill-in the descriptor memcpy(&desc->host.eth_dest_addr, eth_t.h_dest, ETH_ALEN); memcpy(&desc->host.eth_src_addr, eth_t.h_source, ETH_ALEN); @@ -1522,8 +1672,9 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) desc->host.flags = 0; if ((rwnx_vif->tdls_status == TDLS_LINK_ACTIVE) && - rwnx_vif->sta.tdls_sta && - (memcmp(desc->host.eth_dest_addr.array, rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN) == 0)) { + rwnx_vif->sta.tdls_sta && + (memcmp(desc->host.eth_dest_addr.array, + rwnx_vif->sta.tdls_sta->mac_addr, ETH_ALEN) == 0)) { desc->host.flags |= TXU_CNTRL_TDLS; rwnx_vif->sta.tdls_sta->tdls.last_tid = desc->host.tid; //rwnx_vif->sta.tdls_sta->tdls.last_sn = desc->host.sn; @@ -1551,8 +1702,9 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) } /* Fill-in TX descriptor */ - frame_oft = sizeof(struct rwnx_txhdr) - offsetof(struct rwnx_txhdr, hw_hdr) - + hdr_pads;// + sizeof(*eth); + frame_oft = sizeof(struct rwnx_txhdr) - + offsetof(struct rwnx_txhdr, hw_hdr) + + hdr_pads; // + sizeof(*eth); #if 0 #ifdef CONFIG_RWNX_SPLIT_TX_BUF desc->host.packet_addr[0] = sw_txhdr->dma_addr + frame_oft; @@ -1576,6 +1728,415 @@ free: return NETDEV_TX_OK; } +#ifdef CONFIG_RWNX_MON_XMIT +/** + * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, + * struct net_device *dev); + * Called when a packet needs to be transmitted. + * Must return NETDEV_TX_OK , NETDEV_TX_BUSY. + * (can also return NETDEV_TX_LOCKED if NETIF_F_LLTX) + * + * - Initialize the desciptor for this pkt (stored in skb before data) + * - Push the pkt in the corresponding Txq + * - If possible (i.e. credit available and not in PS) the pkt is pushed + * to fw + */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) +#define IEEE80211_RADIOTAP_MCS_HAVE_STBC 0x20 +#define IEEE80211_RADIOTAP_MCS_STBC_MASK 0x60 +#define IEEE80211_RADIOTAP_MCS_STBC_SHIFT 5 +#endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0)) +#define IEEE80211_RADIOTAP_CODING_LDPC_USER0 0x01 +#endif + +char bcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, + struct net_device *dev) +{ + int rtap_len, ret, idx; + struct ieee80211_radiotap_header *rtap_hdr; // net/ieee80211_radiotap.h + struct ieee80211_radiotap_iterator iterator; // net/cfg80211.h + u8_l *rtap_buf = (u8_l *)skb->data; + u8_l rate; + + struct rwnx_vif *vif = netdev_priv(dev); + struct rwnx_hw *rwnx_hw = vif->rwnx_hw; + struct rwnx_txhdr *txhdr; + struct rwnx_sw_txhdr *sw_txhdr; + struct txdesc_api *desc; + struct rwnx_sta *sta; + struct rwnx_txq *txq; + u16_l frame_len, headroom, frame_oft; + u8_l tid, rate_fmt = FORMATMOD_NON_HT, rate_idx = 0, + txsig_bw = PHY_CHNL_BW_20; + u8_l *pframe, *data; + bool robust; + struct sk_buff *skb_mgmt; + bool offchan = false; + int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; + + rtap_hdr = (struct ieee80211_radiotap_header *)(rtap_buf); + rtap_len = ieee80211_get_radiotap_len(rtap_buf); //max_length + frame_len = skb->len; + + AICWFDBG(LOGINFO, + "rwnx_start_monitor_if_xmit, skb_len=%d, rtap_len=%d\n", + skb->len, rtap_len); + //rwnx_data_dump((char*)__func__, skb->data, skb->len); + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; + } + + if (unlikely(rtap_hdr->it_version)) { + AICWFDBG(LOGERROR, "%s itv \r\n", __func__); + goto free_tag; + } + + if (unlikely(skb->len < rtap_len)) { + AICWFDBG(LOGERROR, "%s skb->len < rtap_len \r\n", __func__); + goto free_tag; + } + + if (unlikely(rtap_len < sizeof(struct ieee80211_radiotap_header))) { + AICWFDBG( + LOGERROR, + "%s rtap_len < sizeof(struct ieee80211_radiotap_header) \r\n", + __func__); + goto free_tag; + } + + frame_len -= rtap_len; + pframe = rtap_buf + rtap_len; + + // Parse radiotap for injection items and overwrite attribs as needed + ret = ieee80211_radiotap_iterator_init(&iterator, rtap_hdr, rtap_len, + NULL); + while (!ret) { + ret = ieee80211_radiotap_iterator_next(&iterator); + if (ret) { + continue; + } + AICWFDBG( + LOGDEBUG, + "%s iterator.this_arg_index:%d iterator.this_arg:%x\r\n", + __func__, iterator.this_arg_index, *iterator.this_arg); + switch (iterator.this_arg_index) { + case IEEE80211_RADIOTAP_RATE: + // This is basic 802.11b/g rate; use MCS/VHT for higher rates + rate = *iterator.this_arg; + AICWFDBG(LOGDEBUG, "rate=0x%x\n", rate); + for (idx = 0; idx < HW_RATE_MAX; idx++) { + if ((rate * 5) == tx_legrates_lut_rate[idx]) { + AICWFDBG(LOGDEBUG, + "%s datarate:%d \r\n", + __func__, + tx_legrates_lut_rate[idx]); + break; + } + } + + if (idx < HW_RATE_MAX) { + rate_idx = idx; + AICWFDBG(LOGDEBUG, "rate_idx = %d \r\n", + rate_idx); + } else { + AICWFDBG(LOGERROR, + "invalid radiotap rate: %d\n", rate); + } + break; + + case IEEE80211_RADIOTAP_TX_FLAGS: { + u16_l txflags = get_unaligned_le16(iterator.this_arg); + AICWFDBG(LOGDEBUG, "txflags=0x%x\n", txflags); + if ((txflags & IEEE80211_RADIOTAP_F_TX_NOACK) == 0) { + AICWFDBG(LOGDEBUG, " TX_NOACK\n"); + } + if (txflags & 0x0010) { // Use preconfigured seq num + // NOTE: this is currently ignored due to qos_en=_FALSE and HW seq num override + AICWFDBG(LOGDEBUG, " GetSequence\n"); + } + } break; + + case IEEE80211_RADIOTAP_MCS: { + u8_l mcs_have = iterator.this_arg[0]; + AICWFDBG(LOGDEBUG, "mcs_have=0x%x\n", mcs_have); + rate_fmt = FORMATMOD_HT_MF; + if (mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_BW) { + u8_l bw = (iterator.this_arg[1] & + IEEE80211_RADIOTAP_MCS_BW_MASK); + u8_l ch_offset = 0; + if (bw == IEEE80211_RADIOTAP_MCS_BW_40) { + txsig_bw = PHY_CHNL_BW_40; + } else if (bw == + IEEE80211_RADIOTAP_MCS_BW_20L) { + bw = IEEE80211_RADIOTAP_MCS_BW_20; + ch_offset = 1; // CHNL_OFFSET_LOWER; + } else if (bw == + IEEE80211_RADIOTAP_MCS_BW_20U) { + bw = IEEE80211_RADIOTAP_MCS_BW_20; + ch_offset = 2; // CHNL_OFFSET_UPPER; + } + AICWFDBG(LOGDEBUG, " bw=%d, ch_offset=%d\n", + bw, ch_offset); + } + if (mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_MCS) { + u8_l fixed_rate = iterator.this_arg[2] & 0x7f; + if (fixed_rate > 31) { + fixed_rate = 0; + } + rate_idx = fixed_rate; + AICWFDBG(LOGDEBUG, " fixed_rate=0x%x\n", + fixed_rate); + } + if ((mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_GI) && + (iterator.this_arg[1] & + IEEE80211_RADIOTAP_MCS_SGI)) { + AICWFDBG(LOGDEBUG, " sgi\n"); + } + if ((mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_FEC) && + (iterator.this_arg[1] & + IEEE80211_RADIOTAP_MCS_FEC_LDPC)) { + AICWFDBG(LOGDEBUG, " ldpc\n"); + } + if (mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_STBC) { + u8 stbc = (iterator.this_arg[1] & + IEEE80211_RADIOTAP_MCS_STBC_MASK) >> + IEEE80211_RADIOTAP_MCS_STBC_SHIFT; + AICWFDBG(LOGDEBUG, " stbc=0x%x\n", stbc); + } + } break; + + case IEEE80211_RADIOTAP_VHT: { + unsigned int mcs, nss; + u8 known = iterator.this_arg[0]; + u8 flags = iterator.this_arg[2]; + rate_fmt = FORMATMOD_VHT; + AICWFDBG(LOGDEBUG, "known=0x%x, flags=0x%x\n", known, + flags); + // NOTE: this code currently only supports 1SS for radiotap defined rates + if ((known & IEEE80211_RADIOTAP_VHT_KNOWN_STBC) && + (flags & IEEE80211_RADIOTAP_VHT_FLAG_STBC)) { + AICWFDBG(LOGDEBUG, " stbc\n"); + } + if ((known & IEEE80211_RADIOTAP_VHT_KNOWN_GI) && + (flags & IEEE80211_RADIOTAP_VHT_FLAG_SGI)) { + AICWFDBG(LOGDEBUG, " sgi\n"); + } + if (known & IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH) { + u8_l bw = iterator.this_arg[3] & 0x1F; + AICWFDBG(LOGDEBUG, " bw=0x%x\n", bw); + // NOTE: there are various L and U, but we just use straight 20/40/80 + // since it's not clear how to set CHNL_OFFSET_LOWER/_UPPER with different + // sideband sizes/configurations. TODO. + // Also, any 160 is treated as 80 due to lack of WIDTH_160. + txsig_bw = PHY_CHNL_BW_40; + if (bw == 0) { + txsig_bw = PHY_CHNL_BW_20; + AICWFDBG(LOGDEBUG, " 20M\n"); + } else if (bw >= 1 && bw <= 3) { + AICWFDBG(LOGDEBUG, " 40M\n"); + } else if (bw >= 4 && bw <= 10) { + AICWFDBG(LOGDEBUG, " 80M\n"); + } else if (bw >= 11 && bw <= 25) { + AICWFDBG(LOGDEBUG, " 160M\n"); + } + } + // User 0 + nss = iterator.this_arg[4] & + 0x0F; // Number of spatial streams + AICWFDBG(LOGDEBUG, " nss=0x%x\n", nss); + if (nss > 0) { + if (nss > 4) + nss = 4; + mcs = (iterator.this_arg[4] >> 4) & + 0x0F; // MCS rate index + if (mcs > 8) + mcs = 9; + rate_idx = mcs; + AICWFDBG(LOGDEBUG, " mcs=0x%x\n", mcs); + if (iterator.this_arg[8] & + IEEE80211_RADIOTAP_CODING_LDPC_USER0) { + AICWFDBG(LOGDEBUG, " ldpc\n"); + } + } + } break; + + case IEEE80211_RADIOTAP_HE: { + u16 data1 = ((u16)iterator.this_arg[1] << 8) | + iterator.this_arg[0]; + u16 data2 = ((u16)iterator.this_arg[3] << 8) | + iterator.this_arg[2]; + u16 data3 = ((u16)iterator.this_arg[5] << 8) | + iterator.this_arg[4]; + u16 data5 = ((u16)iterator.this_arg[9] << 8) | + iterator.this_arg[8]; + u8 fmt_he = + data1 & IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MASK; + if (fmt_he == IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MU) { + rate_fmt = FORMATMOD_HE_MU; + } else if (fmt_he == + IEEE80211_RADIOTAP_HE_DATA1_FORMAT_EXT_SU) { + rate_fmt = FORMATMOD_HE_ER; + } else { + rate_fmt = FORMATMOD_HE_SU; + } + if (data1 & + IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN) { + u8 mcs = + (data3 & + IEEE80211_RADIOTAP_HE_DATA3_DATA_MCS) >> + 8; + if (mcs > 11) + mcs = 11; + rate_idx = mcs; + } + if (data1 & + IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN) { + u8 bw = data5 & + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC; + txsig_bw = + (bw == + IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_20MHZ) ? + PHY_CHNL_BW_20 : + PHY_CHNL_BW_40; + } + if (data2 & IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN) { + u8 gi = (data5 & + IEEE80211_RADIOTAP_HE_DATA5_GI) >> + 4; + AICWFDBG(LOGDEBUG, " gi: %d\n", gi); + } + } break; + + default: + AICWFDBG(LOGERROR, "unparsed arg: 0x%x\n", + iterator.this_arg_index); + break; + } + } + +#if 0 + // dump buffer + tmp_len = 128; + if (skb->len < 128) { + tmp_len = skb->len; + } + for (idx = 0; idx < tmp_len; idx+=16) { + printk("[%04X] %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n", idx, + rtap_buf[idx+0],rtap_buf[idx+1],rtap_buf[idx+2],rtap_buf[idx+3], + rtap_buf[idx+4],rtap_buf[idx+5],rtap_buf[idx+6],rtap_buf[idx+7], + rtap_buf[idx+8],rtap_buf[idx+9],rtap_buf[idx+10],rtap_buf[idx+11], + rtap_buf[idx+12],rtap_buf[idx+13],rtap_buf[idx+14],rtap_buf[idx+15]); + } +#endif + //rwnx_data_dump((char*)__func__, pframe, frame_len); + + /* Get the STA id and TID information */ + sta = rwnx_get_tx_priv(vif, skb, &tid); + //if (!sta) { + // printk("sta=null, tid=0x%x\n", tid); + //} + /* Set TID and Queues indexes */ + if (sta) { + txq = rwnx_txq_sta_get(sta, 8, rwnx_hw); + } else { + if (offchan) + txq = &rwnx_hw->txq[nx_off_chan_txq_idx]; + else + txq = rwnx_txq_vif_get(vif, NX_UNK_TXQ_TYPE); + } + if (txq->idx == TXQ_INACTIVE) { + AICWFDBG(LOGERROR, "TXQ_INACTIVE\n"); + goto free_tag; + } + // prepare to xmit + headroom = sizeof(struct rwnx_txhdr); + skb_mgmt = dev_alloc_skb(headroom + frame_len); + if (!skb_mgmt) { + AICWFDBG(LOGERROR, "skb_mgmt alloc fail\n"); + goto free_tag; + } + skb_reserve(skb_mgmt, headroom); + data = skb_put(skb_mgmt, frame_len); + /* Copy the provided data */ + memcpy(data, pframe, frame_len); + robust = ieee80211_is_robust_mgmt_frame( +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0)) + (void *)skb_mgmt +#else + skb_mgmt +#endif + ); + skb_push(skb_mgmt, headroom); + /* Fill the TX Header */ + txhdr = (struct rwnx_txhdr *)skb_mgmt->data; + txhdr->hw_hdr.cfm.status.value = 0; + /* Fill the SW TX Header */ + sw_txhdr = kmem_cache_alloc(rwnx_hw->sw_txhdr_cache, GFP_ATOMIC); + if (unlikely(sw_txhdr == NULL)) { + dev_kfree_skb(skb_mgmt); + AICWFDBG(LOGERROR, "sw_txhdr alloc fail\n"); + goto free_tag; + } + txhdr->sw_hdr = sw_txhdr; + sw_txhdr->txq = txq; + sw_txhdr->frame_len = frame_len; + sw_txhdr->rwnx_sta = sta; + sw_txhdr->rwnx_vif = vif; + sw_txhdr->skb = skb_mgmt; + sw_txhdr->headroom = headroom; + sw_txhdr->map_len = skb_mgmt->len - offsetof(struct rwnx_txhdr, hw_hdr); + sw_txhdr->raw_frame = 1; + sw_txhdr->fixed_rate = 1; + sw_txhdr->rate_config = + ((rate_fmt << FORMAT_MOD_TX_RCX_OFT) & FORMAT_MOD_TX_RCX_MASK) | + ((txsig_bw << BW_TX_RCX_OFT) & BW_TX_RCX_MASK) | + ((rate_idx << MCS_INDEX_TX_RCX_OFT) & + MCS_INDEX_TX_RCX_MASK); // from radiotap + /* Fill the Descriptor to be provided to the MAC SW */ + desc = &sw_txhdr->desc; + desc->host.staid = (sta) ? sta->sta_idx : 0xFF; + desc->host.vif_idx = vif->vif_index; + desc->host.tid = 0xFF; + desc->host.flags = TXU_CNTRL_MGMT; + if (robust) { + desc->host.flags |= TXU_CNTRL_MGMT_ROBUST; + } + frame_oft = + sizeof(struct rwnx_txhdr) - offsetof(struct rwnx_txhdr, hw_hdr); +#if 0 +#ifdef CONFIG_RWNX_SPLIT_TX_BUF + desc->host.packet_addr[0] = sw_txhdr->dma_addr + frame_oft; + desc->host.packet_len[0] = frame_len; + desc->host.packet_cnt = 1; +#else + desc->host.packet_addr = sw_txhdr->dma_addr + frame_oft; + desc->host.packet_len = frame_len; +#endif +#else + desc->host.packet_len = frame_len; +#endif + + desc->host.hostid = sw_txhdr->dma_addr; + + memcpy(desc->host.eth_dest_addr.array, bcast, ETH_ALEN); + + spin_lock_bh(&rwnx_hw->tx_lock); + AICWFDBG(LOGTRACE, "%s send data\r\n", __func__); + if (rwnx_txq_queue_skb(skb_mgmt, txq, rwnx_hw, false)) + rwnx_hwq_process(rwnx_hw, txq->hwq); + spin_unlock_bh(&rwnx_hw->tx_lock); + +free_tag: + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; +} +#endif + /** * rwnx_start_mgmt_xmit - Transmit a management frame * @@ -1590,19 +2151,19 @@ free: */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, - struct cfg80211_mgmt_tx_params *params, bool offchan, - u64 *cookie) + struct cfg80211_mgmt_tx_params *params, bool offchan, + u64 *cookie) #else int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, - struct ieee80211_channel *channel, bool offchan, - unsigned int wait, const u8 *buf, size_t len, - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) - bool no_cck, - #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)) - bool dont_wait_for_ack, - #endif - u64 *cookie) + struct ieee80211_channel *channel, bool offchan, + unsigned int wait, const u8 *buf, size_t len, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) + bool no_cck, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)) + bool dont_wait_for_ack, +#endif + u64 *cookie) #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ { struct rwnx_hw *rwnx_hw = vif->rwnx_hw; @@ -1615,20 +2176,20 @@ int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; struct rwnx_txq *txq; bool robust; - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) const u8 *buf = params->buf; size_t len = params->len; bool no_cck = params->no_cck; - #endif +#endif - AICWFDBG(LOGDEBUG,"mgmt xmit %x %x ",buf[0],buf[1]); - - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; - } + AICWFDBG(LOGDEBUG, "mgmt xmit %x %x ", buf[0], buf[1]); + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; + } headroom = sizeof(struct rwnx_txhdr); frame_len = len; @@ -1677,27 +2238,26 @@ int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, memcpy(data, buf, frame_len); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) - robust = ieee80211_is_robust_mgmt_frame(skb); + robust = ieee80211_is_robust_mgmt_frame(skb); #else - if (skb->len < 25){ - robust = false; - } - robust = ieee80211_is_robust_mgmt_frame((void *)skb->data); + if (skb->len < 25) { + robust = false; + } + robust = ieee80211_is_robust_mgmt_frame((void *)skb->data); #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)) /* Update CSA counter if present */ if (unlikely(params->n_csa_offsets) && - vif->wdev.iftype == NL80211_IFTYPE_AP && - vif->ap.csa) { + vif->wdev.iftype == NL80211_IFTYPE_AP && vif->ap.csa) { int i; data = skb->data; - for (i = 0; i < params->n_csa_offsets ; i++) { + for (i = 0; i < params->n_csa_offsets; i++) { data[params->csa_offsets[i]] = vif->ap.csa->count; } } - #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ /* * Go back to the beginning of the allocated data area @@ -1733,6 +2293,9 @@ int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, sw_txhdr->amsdu.len = 0; sw_txhdr->amsdu.nb = 0; #endif + sw_txhdr->raw_frame = 0; + sw_txhdr->fixed_rate = 0; + //---------------------------------------------------------------------- /* Fill the Descriptor to be provided to the MAC SW */ @@ -1763,7 +2326,8 @@ int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, return -EBUSY; } - frame_oft = sizeof(struct rwnx_txhdr) - offsetof(struct rwnx_txhdr, hw_hdr); + frame_oft = + sizeof(struct rwnx_txhdr) - offsetof(struct rwnx_txhdr, hw_hdr); #if 0 #ifdef CONFIG_RWNX_SPLIT_TX_BUF desc->host.packet_addr[0] = sw_txhdr->dma_addr + frame_oft; @@ -1815,22 +2379,22 @@ int rwnx_txdatacfm(void *pthis, void *host_id) } #ifdef AICWF_USB_SUPPORT - if (rwnx_hw->usbdev->state == USB_DOWN_ST) { - headroom = sw_txhdr->headroom; - kmem_cache_free(rwnx_hw->sw_txhdr_cache, sw_txhdr); - skb_pull(skb, headroom); - consume_skb(skb); - return 0; - } + if (rwnx_hw->usbdev->state == USB_DOWN_ST) { + headroom = sw_txhdr->headroom; + kmem_cache_free(rwnx_hw->sw_txhdr_cache, sw_txhdr); + skb_pull(skb, headroom); + consume_skb(skb); + return 0; + } #endif #ifdef AICWF_SDIO_SUPPORT - if(rwnx_hw->sdiodev->bus_if->state == BUS_DOWN_ST) { - headroom = sw_txhdr->headroom; - kmem_cache_free(rwnx_hw->sw_txhdr_cache, sw_txhdr); - skb_pull(skb, headroom); - consume_skb(skb); - return 0; - } + if (rwnx_hw->sdiodev->bus_if->state == BUS_DOWN_ST) { + headroom = sw_txhdr->headroom; + kmem_cache_free(rwnx_hw->sw_txhdr_cache, sw_txhdr); + skb_pull(skb, headroom); + consume_skb(skb); + return 0; + } #endif txq = sw_txhdr->txq; @@ -1841,22 +2405,23 @@ int rwnx_txdatacfm(void *pthis, void *host_id) /* Update txq and HW queue credits */ if (sw_txhdr->desc.host.flags & TXU_CNTRL_MGMT) { printk("done=%d retry_required=%d sw_retry_required=%d acknowledged=%d\n", - rwnx_txst.tx_done, rwnx_txst.retry_required, - rwnx_txst.sw_retry_required, rwnx_txst.acknowledged); + rwnx_txst.tx_done, rwnx_txst.retry_required, + rwnx_txst.sw_retry_required, rwnx_txst.acknowledged); #ifdef CREATE_TRACE_POINTS trace_mgmt_cfm(sw_txhdr->rwnx_vif->vif_index, - (sw_txhdr->rwnx_sta) ? sw_txhdr->rwnx_sta->sta_idx : 0xFF, - rwnx_txst.acknowledged); + (sw_txhdr->rwnx_sta) ? + sw_txhdr->rwnx_sta->sta_idx : + 0xFF, + rwnx_txst.acknowledged); #endif /* Confirm transmission to CFG80211 */ cfg80211_mgmt_tx_status(&sw_txhdr->rwnx_vif->wdev, - (unsigned long)skb, - (skb->data + sw_txhdr->headroom), - sw_txhdr->frame_len, - rwnx_txst.acknowledged, - GFP_ATOMIC); + (unsigned long)skb, + (skb->data + sw_txhdr->headroom), + sw_txhdr->frame_len, + rwnx_txst.acknowledged, GFP_ATOMIC); } else if ((txq->idx != TXQ_INACTIVE) && - (rwnx_txst.retry_required || rwnx_txst.sw_retry_required)) { + (rwnx_txst.retry_required || rwnx_txst.sw_retry_required)) { bool sw_retry = (rwnx_txst.sw_retry_required) ? true : false; /* Reset the status */ @@ -1873,7 +2438,7 @@ int rwnx_txdatacfm(void *pthis, void *host_id) /* STA may have disconnect (and txq stopped) when buffers were stored in fw. In this case do nothing when they're returned */ if (txq->idx != TXQ_INACTIVE) { - #if 0 +#if 0 if (txhdr->hw_hdr.cfm.credits) { txq->credits += txhdr->hw_hdr.cfm.credits; if (txq->credits <= 0) @@ -1881,7 +2446,7 @@ int rwnx_txdatacfm(void *pthis, void *host_id) else if (txq->credits > 0) rwnx_txq_start(txq, RWNX_TXQ_STOP_FULL); } - #endif +#endif /* continue service period */ if (unlikely(txq->push_limit && !rwnx_txq_is_full(txq))) { @@ -1890,7 +2455,7 @@ int rwnx_txdatacfm(void *pthis, void *host_id) } if (txhdr->hw_hdr.cfm.ampdu_size && - txhdr->hw_hdr.cfm.ampdu_size < IEEE80211_MAX_AMPDU_BUF) + txhdr->hw_hdr.cfm.ampdu_size < IEEE80211_MAX_AMPDU_BUF) rwnx_hw->stats.ampdus_tx[txhdr->hw_hdr.cfm.ampdu_size - 1]++; #ifdef CONFIG_RWNX_AMSDUS_TX @@ -1905,7 +2470,7 @@ int rwnx_txdatacfm(void *pthis, void *host_id) #ifdef CONFIG_RWNX_AMSDUS_TX if (sw_txhdr->desc.host.flags & TXU_CNTRL_AMSDU) { struct rwnx_amsdu_txhdr *amsdu_txhdr; - list_for_each_entry(amsdu_txhdr, &sw_txhdr->amsdu.hdrs, list) { + list_for_each_entry (amsdu_txhdr, &sw_txhdr->amsdu.hdrs, list) { rwnx_amsdu_del_subframe_header(amsdu_txhdr); consume_skb(amsdu_txhdr->skb); } @@ -1932,7 +2497,7 @@ int rwnx_txdatacfm(void *pthis, void *host_id) * Apply @update to txq credits, and stop/start the txq if needed */ void rwnx_txq_credit_update(struct rwnx_hw *rwnx_hw, int sta_idx, u8 tid, - s8 update) + s8 update) { struct rwnx_sta *sta = &rwnx_hw->sta_table[sta_idx]; struct rwnx_txq *txq; diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.h index a4036dc0c..f77f1f9f1 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_tx.h @@ -18,40 +18,41 @@ #include "rwnx_txq.h" #include "hal_desc.h" -#define RWNX_HWQ_BK 0 -#define RWNX_HWQ_BE 1 -#define RWNX_HWQ_VI 2 -#define RWNX_HWQ_VO 3 -#define RWNX_HWQ_BCMC 4 -#define RWNX_HWQ_NB NX_TXQ_CNT +#define RWNX_HWQ_BK 0 +#define RWNX_HWQ_BE 1 +#define RWNX_HWQ_VI 2 +#define RWNX_HWQ_VO 3 +#define RWNX_HWQ_BCMC 4 +#define RWNX_HWQ_NB NX_TXQ_CNT #define RWNX_HWQ_ALL_ACS (RWNX_HWQ_BK | RWNX_HWQ_BE | RWNX_HWQ_VI | RWNX_HWQ_VO) -#define RWNX_HWQ_ALL_ACS_BIT (BIT(RWNX_HWQ_BK) | BIT(RWNX_HWQ_BE) | \ - BIT(RWNX_HWQ_VI) | BIT(RWNX_HWQ_VO)) +#define RWNX_HWQ_ALL_ACS_BIT \ + (BIT(RWNX_HWQ_BK) | BIT(RWNX_HWQ_BE) | BIT(RWNX_HWQ_VI) | \ + BIT(RWNX_HWQ_VO)) -#define RWNX_TX_LIFETIME_MS 1000 -#define RWNX_TX_MAX_RATES NX_TX_MAX_RATES +#define RWNX_TX_LIFETIME_MS 1000 +#define RWNX_TX_MAX_RATES NX_TX_MAX_RATES -#define RWNX_SWTXHDR_ALIGN_SZ 4 +#define RWNX_SWTXHDR_ALIGN_SZ 4 #define RWNX_SWTXHDR_ALIGN_MSK (RWNX_SWTXHDR_ALIGN_SZ - 1) -#define RWNX_SWTXHDR_ALIGN_PADS(x) \ - ((RWNX_SWTXHDR_ALIGN_SZ - ((x) & RWNX_SWTXHDR_ALIGN_MSK)) \ - & RWNX_SWTXHDR_ALIGN_MSK) +#define RWNX_SWTXHDR_ALIGN_PADS(x) \ + ((RWNX_SWTXHDR_ALIGN_SZ - ((x)&RWNX_SWTXHDR_ALIGN_MSK)) & \ + RWNX_SWTXHDR_ALIGN_MSK) #if RWNX_SWTXHDR_ALIGN_SZ & RWNX_SWTXHDR_ALIGN_MSK #error bad RWNX_SWTXHDR_ALIGN_SZ #endif -#define AMSDU_PADDING(x) ((4 - ((x) & 0x3)) & 0x3) +#define AMSDU_PADDING(x) ((4 - ((x)&0x3)) & 0x3) -#define TXU_CNTRL_RETRY BIT(0) -#define TXU_CNTRL_MORE_DATA BIT(2) -#define TXU_CNTRL_MGMT BIT(3) -#define TXU_CNTRL_MGMT_NO_CCK BIT(4) -#define TXU_CNTRL_AMSDU BIT(6) -#define TXU_CNTRL_MGMT_ROBUST BIT(7) -#define TXU_CNTRL_USE_4ADDR BIT(8) -#define TXU_CNTRL_EOSP BIT(9) -#define TXU_CNTRL_MESH_FWD BIT(10) -#define TXU_CNTRL_TDLS BIT(11) +#define TXU_CNTRL_RETRY BIT(0) +#define TXU_CNTRL_MORE_DATA BIT(2) +#define TXU_CNTRL_MGMT BIT(3) +#define TXU_CNTRL_MGMT_NO_CCK BIT(4) +#define TXU_CNTRL_AMSDU BIT(6) +#define TXU_CNTRL_MGMT_ROBUST BIT(7) +#define TXU_CNTRL_USE_4ADDR BIT(8) +#define TXU_CNTRL_EOSP BIT(9) +#define TXU_CNTRL_MESH_FWD BIT(10) +#define TXU_CNTRL_TDLS BIT(11) extern const int rwnx_tid2hwq[IEEE80211_NUM_TIDS]; @@ -129,6 +130,10 @@ struct rwnx_sw_txhdr { size_t map_len; dma_addr_t dma_addr; struct txdesc_api desc; + + u8 raw_frame; + u8 fixed_rate; + u16 rate_config; }; /** @@ -149,40 +154,42 @@ u16 rwnx_select_txq(struct rwnx_vif *rwnx_vif, struct sk_buff *skb); netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, - struct cfg80211_mgmt_tx_params *params, bool offchan, - u64 *cookie); + struct cfg80211_mgmt_tx_params *params, bool offchan, + u64 *cookie); #else int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, - struct ieee80211_channel *channel, bool offchan, - unsigned int wait, const u8 *buf, size_t len, - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) - bool no_cck, - #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)) - bool dont_wait_for_ack, - #endif - u64 *cookie); + struct ieee80211_channel *channel, bool offchan, + unsigned int wait, const u8 *buf, size_t len, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)) + bool no_cck, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)) + bool dont_wait_for_ack, +#endif + u64 *cookie); #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) */ + +#ifdef CONFIG_RWNX_MON_XMIT +int rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *dev); +#endif int rwnx_txdatacfm(void *pthis, void *host_id); struct rwnx_hw; struct rwnx_sta; -void rwnx_set_traffic_status(struct rwnx_hw *rwnx_hw, - struct rwnx_sta *sta, - bool available, - u8 ps_id); +void rwnx_set_traffic_status(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, + bool available, u8 ps_id); void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - bool enable); + bool enable); void rwnx_ps_bh_traffic_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, - u16 pkt_req, u8 ps_id); + u16 pkt_req, u8 ps_id); void rwnx_switch_vif_sta_txq(struct rwnx_sta *sta, struct rwnx_vif *old_vif, - struct rwnx_vif *new_vif); + struct rwnx_vif *new_vif); int rwnx_dbgfs_print_sta(char *buf, size_t size, struct rwnx_sta *sta, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); void rwnx_txq_credit_update(struct rwnx_hw *rwnx_hw, int sta_idx, u8 tid, - s8 update); + s8 update); void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags); #endif /* _RWNX_TX_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.c index 5468c3a5e..9ec9e9cef 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.c @@ -17,7 +17,7 @@ * Utils functions *****************************************************************************/ #ifdef CONFIG_RWNX_FULLMAC -const int nx_tid_prio[NX_NB_TID_PER_STA] = {7, 6, 5, 4, 3, 0, 2, 1}; +const int nx_tid_prio[NX_NB_TID_PER_STA] = { 7, 6, 5, 4, 3, 0, 2, 1 }; #ifdef CONFIG_TX_NETIF_FLOWCTRL extern int tx_fc_low_water; @@ -26,34 +26,36 @@ extern int tx_fc_high_water; static inline int rwnx_txq_sta_idx(struct rwnx_sta *sta, u8 tid) { - if (is_multicast_sta(sta->sta_idx)){ - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - return NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC + sta->vif_idx; - }else{ - return NX_FIRST_VIF_TXQ_IDX + sta->vif_idx; - } - }else{ + if (is_multicast_sta(sta->sta_idx)) { + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + return NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC + sta->vif_idx; + } else { + return NX_FIRST_VIF_TXQ_IDX + sta->vif_idx; + } + } else { return (sta->sta_idx * NX_NB_TXQ_PER_STA) + tid; } } static inline int rwnx_txq_vif_idx(struct rwnx_vif *vif, u8 type) { - - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - return NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC + master_vif_idx(vif) + (type * NX_VIRT_DEV_MAX); - }else{ - return NX_FIRST_VIF_TXQ_IDX + master_vif_idx(vif) + (type * NX_VIRT_DEV_MAX); + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + return NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC + master_vif_idx(vif) + + (type * NX_VIRT_DEV_MAX); + } else { + return NX_FIRST_VIF_TXQ_IDX + master_vif_idx(vif) + + (type * NX_VIRT_DEV_MAX); } - } struct rwnx_txq *rwnx_txq_sta_get(struct rwnx_sta *sta, u8 tid, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { if (tid >= NX_NB_TXQ_PER_STA) tid = 0; @@ -76,7 +78,6 @@ static inline struct rwnx_sta *rwnx_txq_2_sta(struct rwnx_txq *txq) #endif /* CONFIG_RWNX_FULLMAC */ - /****************************************************************************** * Init/Deinit functions *****************************************************************************/ @@ -93,26 +94,25 @@ static inline struct rwnx_sta *rwnx_txq_2_sta(struct rwnx_txq *txq) * Each queue is initialized with the credit of @NX_TXQ_INITIAL_CREDITS. */ static void rwnx_txq_init(struct rwnx_txq *txq, int idx, u8 status, - struct rwnx_hwq *hwq, int tid, + struct rwnx_hwq *hwq, int tid, #ifdef CONFIG_RWNX_FULLMAC - struct rwnx_sta *sta, struct net_device *ndev + struct rwnx_sta *sta, struct net_device *ndev #endif - ) +) { int i; - int nx_first_unk_txq_idx = NX_FIRST_UNK_TXQ_IDX; - int nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX; - int nx_first_vif_txq_idx = NX_FIRST_VIF_TXQ_IDX; - - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_first_unk_txq_idx = NX_FIRST_UNK_TXQ_IDX_FOR_OLD_IC; - nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC; - nx_first_vif_txq_idx = NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC; - } - + int nx_first_unk_txq_idx = NX_FIRST_UNK_TXQ_IDX; + int nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX; + int nx_first_vif_txq_idx = NX_FIRST_VIF_TXQ_IDX; + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_first_unk_txq_idx = NX_FIRST_UNK_TXQ_IDX_FOR_OLD_IC; + nx_bcmc_txq_ndev_idx = NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC; + nx_first_vif_txq_idx = NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC; + } txq->idx = idx; txq->status = status; @@ -123,7 +123,7 @@ static void rwnx_txq_init(struct rwnx_txq *txq, int idx, u8 status, txq->nb_retry = 0; txq->hwq = hwq; txq->sta = sta; - for (i = 0; i < CONFIG_USER_MAX ; i++) + for (i = 0; i < CONFIG_USER_MAX; i++) txq->pkt_pushed[i] = 0; txq->push_limit = 0; txq->tid = tid; @@ -135,19 +135,19 @@ static void rwnx_txq_init(struct rwnx_txq *txq, int idx, u8 status, if (idx < nx_first_vif_txq_idx) { int sta_idx = sta->sta_idx; int tid = idx - (sta_idx * NX_NB_TXQ_PER_STA); - if (tid < NX_NB_TID_PER_STA) - txq->ndev_idx = NX_STA_NDEV_IDX(tid, sta_idx); - else - txq->ndev_idx = NDEV_NO_TXQ; + if (tid < NX_NB_TID_PER_STA) + txq->ndev_idx = NX_STA_NDEV_IDX(tid, sta_idx); + else + txq->ndev_idx = NDEV_NO_TXQ; } else if (idx < nx_first_unk_txq_idx) { txq->ndev_idx = nx_bcmc_txq_ndev_idx; } else { txq->ndev_idx = NDEV_NO_TXQ; } - txq->ndev = ndev; + txq->ndev = ndev; #ifdef CONFIG_RWNX_AMSDUS_TX - txq->amsdu = NULL; - txq->amsdu_len = 0; + txq->amsdu = NULL; + txq->amsdu_len = 0; #endif /* CONFIG_RWNX_AMSDUS_TX */ #endif /* CONFIG_RWNX_FULLMAC */ } @@ -162,14 +162,15 @@ void rwnx_txq_flush(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq) { struct sk_buff *skb; - while ((skb = skb_dequeue(&txq->sk_list)) != NULL) { - struct rwnx_sw_txhdr *sw_txhdr = ((struct rwnx_txhdr *)skb->data)->sw_hdr; + struct rwnx_sw_txhdr *sw_txhdr = + ((struct rwnx_txhdr *)skb->data)->sw_hdr; #ifdef CONFIG_RWNX_AMSDUS_TX if (sw_txhdr->desc.host.packet_cnt > 1) { struct rwnx_amsdu_txhdr *amsdu_txhdr; - list_for_each_entry(amsdu_txhdr, &sw_txhdr->amsdu.hdrs, list) { + list_for_each_entry (amsdu_txhdr, &sw_txhdr->amsdu.hdrs, + list) { //dma_unmap_single(rwnx_hw->dev, amsdu_txhdr->dma_addr, // amsdu_txhdr->map_len, DMA_TO_DEVICE); dev_kfree_skb_any(amsdu_txhdr->skb); @@ -181,7 +182,7 @@ void rwnx_txq_flush(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq) // DMA_TO_DEVICE); #ifdef CONFIG_RWNX_FULLMAC - dev_kfree_skb_any(skb); + dev_kfree_skb_any(skb); #endif /* CONFIG_RWNX_FULLMAC */ } } @@ -219,7 +220,7 @@ static void rwnx_txq_deinit(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq) * 1 VIF TXQ for MGMT to unknown STA */ void rwnx_txq_vif_init(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - u8 status) + u8 status) { struct rwnx_txq *txq; int idx; @@ -228,12 +229,13 @@ void rwnx_txq_vif_init(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, txq = rwnx_txq_vif_get(rwnx_vif, NX_BCMC_TXQ_TYPE); idx = rwnx_txq_vif_idx(rwnx_vif, NX_BCMC_TXQ_TYPE); rwnx_txq_init(txq, idx, status, &rwnx_hw->hwq[RWNX_HWQ_BE], 0, - &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index], rwnx_vif->ndev); + &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index], + rwnx_vif->ndev); txq = rwnx_txq_vif_get(rwnx_vif, NX_UNK_TXQ_TYPE); idx = rwnx_txq_vif_idx(rwnx_vif, NX_UNK_TXQ_TYPE); rwnx_txq_init(txq, idx, status, &rwnx_hw->hwq[RWNX_HWQ_VO], TID_MGT, - NULL, rwnx_vif->ndev); + NULL, rwnx_vif->ndev); #endif /* CONFIG_RWNX_FULLMAC */ } @@ -258,7 +260,6 @@ void rwnx_txq_vif_deinit(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif) #endif /* CONFIG_RWNX_FULLMAC */ } - /** * rwnx_txq_sta_init - Initialize TX queues for a STA * @@ -273,7 +274,7 @@ void rwnx_txq_vif_deinit(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif) * 1 TXQ for MGMT */ void rwnx_txq_sta_init(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, - u8 status) + u8 status) { struct rwnx_txq *txq; int tid, idx; @@ -282,10 +283,13 @@ void rwnx_txq_sta_init(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, struct rwnx_vif *rwnx_vif = rwnx_hw->vif_table[rwnx_sta->vif_idx]; idx = rwnx_txq_sta_idx(rwnx_sta, 0); - foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) { - rwnx_txq_init(txq, idx, status, &rwnx_hw->hwq[rwnx_tid2hwq[tid]], tid, - rwnx_sta, rwnx_vif->ndev); - txq->ps_id = rwnx_sta->uapsd_tids & (1 << tid) ? UAPSD_ID : LEGACY_PS_ID; + foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) + { + rwnx_txq_init(txq, idx, status, + &rwnx_hw->hwq[rwnx_tid2hwq[tid]], tid, rwnx_sta, + rwnx_vif->ndev); + txq->ps_id = rwnx_sta->uapsd_tids & (1 << tid) ? UAPSD_ID : + LEGACY_PS_ID; idx++; } @@ -303,7 +307,8 @@ void rwnx_txq_sta_deinit(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta) struct rwnx_txq *txq; int tid; - foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) { + foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) + { rwnx_txq_deinit(rwnx_hw, txq); } } @@ -322,7 +327,8 @@ void rwnx_txq_unk_vif_init(struct rwnx_vif *rwnx_vif) txq = rwnx_txq_vif_get(rwnx_vif, NX_UNK_TXQ_TYPE); idx = rwnx_txq_vif_idx(rwnx_vif, NX_UNK_TXQ_TYPE); - rwnx_txq_init(txq, idx, 0, &rwnx_hw->hwq[RWNX_HWQ_VO], TID_MGT, NULL, rwnx_vif->ndev); + rwnx_txq_init(txq, idx, 0, &rwnx_hw->hwq[RWNX_HWQ_VO], TID_MGT, NULL, + rwnx_vif->ndev); } /** @@ -349,17 +355,19 @@ void rwnx_txq_offchan_init(struct rwnx_vif *rwnx_vif) { struct rwnx_hw *rwnx_hw = rwnx_vif->rwnx_hw; struct rwnx_txq *txq; - int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; + int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; - } + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; + } txq = &rwnx_hw->txq[nx_off_chan_txq_idx]; rwnx_txq_init(txq, nx_off_chan_txq_idx, RWNX_TXQ_STOP_CHAN, - &rwnx_hw->hwq[RWNX_HWQ_VO], TID_MGT, NULL, rwnx_vif->ndev); + &rwnx_hw->hwq[RWNX_HWQ_VO], TID_MGT, NULL, + rwnx_vif->ndev); } /** @@ -374,19 +382,19 @@ void rwnx_txq_offchan_deinit(struct rwnx_vif *rwnx_vif) { struct rwnx_txq *txq; - int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; + int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; - } + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; + } txq = &rwnx_vif->rwnx_hw->txq[nx_off_chan_txq_idx]; rwnx_txq_deinit(rwnx_vif->rwnx_hw, txq); } - /** * rwnx_txq_tdls_vif_init - Initialize TXQ vif for TDLS * @@ -471,10 +479,11 @@ static inline bool rwnx_txq_skb_ready(struct rwnx_txq *txq) { #ifdef CONFIG_MAC80211_TXQ if (txq->nb_ready_mac80211 != NOT_MAC80211_TXQ) - return ((txq->nb_ready_mac80211 > 0) || !skb_queue_empty(&txq->sk_list)); + return ((txq->nb_ready_mac80211 > 0) || + !skb_queue_empty(&txq->sk_list)); else #endif - return !skb_queue_empty(&txq->sk_list); + return !skb_queue_empty(&txq->sk_list); } /** @@ -522,7 +531,6 @@ void rwnx_txq_stop(struct rwnx_txq *txq, u16 reason) } } - /** * rwnx_txq_sta_start - Start all the TX queue linked to a STA * @@ -542,21 +550,22 @@ void rwnx_txq_stop(struct rwnx_txq *txq, u16 reason) */ void rwnx_txq_sta_start(struct rwnx_sta *rwnx_sta, u16 reason #ifdef CONFIG_RWNX_FULLMAC - , struct rwnx_hw *rwnx_hw + , + struct rwnx_hw *rwnx_hw #endif - ) +) { struct rwnx_txq *txq; int tid; #ifdef CREATE_TRACE_POINTS trace_txq_sta_start(rwnx_sta->sta_idx); #endif - foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) { + foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) + { rwnx_txq_start(txq, reason); } } - /** * rwnx_stop_sta_txq - Stop all the TX queue linked to a STA * @@ -575,9 +584,10 @@ void rwnx_txq_sta_start(struct rwnx_sta *rwnx_sta, u16 reason */ void rwnx_txq_sta_stop(struct rwnx_sta *rwnx_sta, u16 reason #ifdef CONFIG_RWNX_FULLMAC - , struct rwnx_hw *rwnx_hw + , + struct rwnx_hw *rwnx_hw #endif - ) +) { struct rwnx_txq *txq; int tid; @@ -587,14 +597,15 @@ void rwnx_txq_sta_stop(struct rwnx_sta *rwnx_sta, u16 reason #ifdef CREATE_TRACE_POINTS trace_txq_sta_stop(rwnx_sta->sta_idx); #endif - foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) { + foreach_sta_txq(rwnx_sta, txq, tid, rwnx_hw) + { rwnx_txq_stop(txq, reason); } } #ifdef CONFIG_RWNX_FULLMAC void rwnx_txq_tdls_sta_start(struct rwnx_vif *rwnx_vif, u16 reason, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { #ifdef CREATE_TRACE_POINTS trace_txq_vif_start(rwnx_vif->vif_index); @@ -610,7 +621,7 @@ void rwnx_txq_tdls_sta_start(struct rwnx_vif *rwnx_vif, u16 reason, #ifdef CONFIG_RWNX_FULLMAC void rwnx_txq_tdls_sta_stop(struct rwnx_vif *rwnx_vif, u16 reason, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { #ifdef CREATE_TRACE_POINTS trace_txq_vif_stop(rwnx_vif->vif_index); @@ -625,13 +636,14 @@ void rwnx_txq_tdls_sta_stop(struct rwnx_vif *rwnx_vif, u16 reason, #endif #ifdef CONFIG_RWNX_FULLMAC -static inline void rwnx_txq_vif_for_each_sta(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - void (*f)(struct rwnx_sta *, u16, struct rwnx_hw *), u16 reason) { - +static inline void +rwnx_txq_vif_for_each_sta(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, + void (*f)(struct rwnx_sta *, u16, struct rwnx_hw *), + u16 reason) +{ switch (RWNX_VIF_TYPE(rwnx_vif)) { case NL80211_IFTYPE_STATION: - case NL80211_IFTYPE_P2P_CLIENT: - { + case NL80211_IFTYPE_P2P_CLIENT: { if (rwnx_vif->tdls_status == TDLS_LINK_ACTIVE) f(rwnx_vif->sta.tdls_sta, reason, rwnx_hw); if (!WARN_ON(rwnx_vif->sta.ap == NULL)) @@ -642,10 +654,9 @@ static inline void rwnx_txq_vif_for_each_sta(struct rwnx_hw *rwnx_hw, struct rwn rwnx_vif = rwnx_vif->ap_vlan.master; case NL80211_IFTYPE_AP: case NL80211_IFTYPE_MESH_POINT: - case NL80211_IFTYPE_P2P_GO: - { + case NL80211_IFTYPE_P2P_GO: { struct rwnx_sta *sta; - list_for_each_entry(sta, &rwnx_vif->ap.sta_list, list) { + list_for_each_entry (sta, &rwnx_vif->ap.sta_list, list) { f(sta, reason, rwnx_hw); } break; @@ -670,7 +681,7 @@ static inline void rwnx_txq_vif_for_each_sta(struct rwnx_hw *rwnx_hw, struct rwn * Take tx_lock */ void rwnx_txq_vif_start(struct rwnx_vif *rwnx_vif, u16 reason, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { struct rwnx_txq *txq; #ifdef CREATE_TRACE_POINTS @@ -683,11 +694,13 @@ void rwnx_txq_vif_start(struct rwnx_vif *rwnx_vif, u16 reason, if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_MONITOR) goto end; - if (rwnx_vif->roc_tdls && rwnx_vif->sta.tdls_sta && rwnx_vif->sta.tdls_sta->tdls.chsw_en) { + if (rwnx_vif->roc_tdls && rwnx_vif->sta.tdls_sta && + rwnx_vif->sta.tdls_sta->tdls.chsw_en) { rwnx_txq_sta_start(rwnx_vif->sta.tdls_sta, reason, rwnx_hw); } if (!rwnx_vif->roc_tdls) { - rwnx_txq_vif_for_each_sta(rwnx_hw, rwnx_vif, rwnx_txq_sta_start, reason); + rwnx_txq_vif_for_each_sta(rwnx_hw, rwnx_vif, rwnx_txq_sta_start, + reason); } txq = rwnx_txq_vif_get(rwnx_vif, NX_BCMC_TXQ_TYPE); @@ -701,7 +714,6 @@ end: spin_unlock_bh(&rwnx_hw->tx_lock); } - /** * rwnx_txq_vif_stop - STOP TX queues of all STA associated to the vif * @@ -714,7 +726,7 @@ end: * Take tx_lock */ void rwnx_txq_vif_stop(struct rwnx_vif *rwnx_vif, u16 reason, - struct rwnx_hw *rwnx_hw) + struct rwnx_hw *rwnx_hw) { struct rwnx_txq *txq; #ifdef CREATE_TRACE_POINTS @@ -750,14 +762,14 @@ end: void rwnx_txq_offchan_start(struct rwnx_hw *rwnx_hw) { struct rwnx_txq *txq; - int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; - - if((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || - ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || - g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ - nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; - } + int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; + if ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8801) || + ((g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DC || + g_rwnx_plat->sdiodev->chipid == PRODUCT_ID_AIC8800DW) && + chip_id < 3)) { + nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC; + } txq = &rwnx_hw->txq[nx_off_chan_txq_idx]; spin_lock_bh(&rwnx_hw->tx_lock); @@ -780,7 +792,7 @@ void rwnx_txq_offchan_start(struct rwnx_hw *rwnx_hw) * */ void rwnx_txq_sta_switch_vif(struct rwnx_sta *sta, struct rwnx_vif *old_vif, - struct rwnx_vif *new_vif) + struct rwnx_vif *new_vif) { struct rwnx_hw *rwnx_hw = new_vif->rwnx_hw; struct rwnx_txq *txq; @@ -821,9 +833,8 @@ void rwnx_txq_sta_switch_vif(struct rwnx_sta *sta, struct rwnx_vif *old_vif, * To be called with tx_lock hold */ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, - struct rwnx_hw *rwnx_hw, bool retry) + struct rwnx_hw *rwnx_hw, bool retry) { - #ifdef CONFIG_RWNX_FULLMAC if (unlikely(txq->sta && txq->sta->ps.active)) { txq->sta->ps.pkt_ready[txq->ps_id]++; @@ -831,7 +842,8 @@ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, trace_ps_queue(txq->sta); #endif if (txq->sta->ps.pkt_ready[txq->ps_id] == 1) { - rwnx_set_traffic_status(rwnx_hw, txq->sta, true, txq->ps_id); + rwnx_set_traffic_status(rwnx_hw, txq->sta, true, + txq->ps_id); } } #endif @@ -842,9 +854,10 @@ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, } else { if (txq->last_retry_skb) #ifdef CONFIG_GKI - rwnx_skb_append(txq->last_retry_skb, skb, &txq->sk_list); + rwnx_skb_append(txq->last_retry_skb, skb, + &txq->sk_list); #else - skb_append(txq->last_retry_skb, skb, &txq->sk_list); + skb_append(txq->last_retry_skb, skb, &txq->sk_list); #endif else skb_queue_head(&txq->sk_list, skb); @@ -860,13 +873,14 @@ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, #ifndef CONFIG_ONE_TXQ #ifdef CONFIG_TX_NETIF_FLOWCTRL - if ((txq->ndev_idx != NDEV_NO_TXQ) && ((skb_queue_len(&txq->sk_list) > RWNX_NDEV_FLOW_CTRL_STOP) && - !rwnx_hw->sdiodev->flowctrl)) { + if ((txq->ndev_idx != NDEV_NO_TXQ) && + ((skb_queue_len(&txq->sk_list) > RWNX_NDEV_FLOW_CTRL_STOP) && + !rwnx_hw->sdiodev->flowctrl)) { // (atomic_read(&rwnx_hw->sdiodev->tx_priv->tx_pktcnt) >= tx_fc_high_water))) { #else /* If too many buffer are queued for this TXQ stop netdev queue */ if ((txq->ndev_idx != NDEV_NO_TXQ) && - (skb_queue_len(&txq->sk_list) > RWNX_NDEV_FLOW_CTRL_STOP)) { + (skb_queue_len(&txq->sk_list) > RWNX_NDEV_FLOW_CTRL_STOP)) { #endif txq->status |= RWNX_TXQ_NDEV_FLOW_CTRL; @@ -879,10 +893,10 @@ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, #else /* ! CONFIG_RWNX_FULLMAC */ if (!retry && ++txq->hwq->len == txq->hwq->len_stop) { - trace_hwq_flowctrl_stop(txq->hwq->id); - ieee80211_stop_queue(rwnx_hw->hw, txq->hwq->id); - rwnx_hw->stats.queues_stops++; - } + trace_hwq_flowctrl_stop(txq->hwq->id); + ieee80211_stop_queue(rwnx_hw->hw, txq->hwq->id); + rwnx_hw->stats.queues_stops++; + } #endif /* CONFIG_RWNX_FULLMAC */ /* add it in the hwq list if not stopped and not yet present */ @@ -910,7 +924,7 @@ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, * To be called with tx_lock hold */ void rwnx_txq_confirm_any(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq, - struct rwnx_hwq *hwq, struct rwnx_sw_txhdr *sw_txhdr) + struct rwnx_hwq *hwq, struct rwnx_sw_txhdr *sw_txhdr) { int user = 0; @@ -920,9 +934,8 @@ void rwnx_txq_confirm_any(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq, user = RWNX_MUMIMO_INFO_POS_ID(sw_txhdr->desc.host.mumimo_info); group_id = RWNX_MUMIMO_INFO_GROUP_ID(sw_txhdr->desc.host.mumimo_info); - if ((txq->idx != TXQ_INACTIVE) && - (txq->pkt_pushed[user] == 1) && - (txq->status & RWNX_TXQ_STOP_MU_POS)) + if ((txq->idx != TXQ_INACTIVE) && (txq->pkt_pushed[user] == 1) && + (txq->status & RWNX_TXQ_STOP_MU_POS)) rwnx_txq_start(txq, RWNX_TXQ_STOP_MU_POS); #endif /* CONFIG_RWNX_MUMIMO_TX */ @@ -937,8 +950,7 @@ void rwnx_txq_confirm_any(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq, /****************************************************************************** * HWQ processing *****************************************************************************/ -static inline -bool rwnx_txq_take_mu_lock(struct rwnx_hw *rwnx_hw) +static inline bool rwnx_txq_take_mu_lock(struct rwnx_hw *rwnx_hw) { bool res = false; #ifdef CONFIG_RWNX_MUMIMO_TX @@ -948,17 +960,16 @@ bool rwnx_txq_take_mu_lock(struct rwnx_hw *rwnx_hw) return res; } -static inline -void rwnx_txq_release_mu_lock(struct rwnx_hw *rwnx_hw) +static inline void rwnx_txq_release_mu_lock(struct rwnx_hw *rwnx_hw) { #ifdef CONFIG_RWNX_MUMIMO_TX up(&rwnx_hw->mu.lock); #endif /* CONFIG_RWNX_MUMIMO_TX */ } -static inline -void rwnx_txq_set_mu_info(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq, - int group_id, int pos) +static inline void rwnx_txq_set_mu_info(struct rwnx_hw *rwnx_hw, + struct rwnx_txq *txq, int group_id, + int pos) { #ifdef CONFIG_RWNX_MUMIMO_TX trace_txq_select_mu_group(txq, group_id, pos); @@ -970,8 +981,7 @@ void rwnx_txq_set_mu_info(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq, #endif /* CONFIG_RWNX_MUMIMO_TX */ } -static inline -s8 rwnx_txq_get_credits(struct rwnx_txq *txq) +static inline s8 rwnx_txq_get_credits(struct rwnx_txq *txq) { s8 cred = txq->credits; /* if destination is in PS mode, push_limit indicates the maximum @@ -995,7 +1005,7 @@ s8 rwnx_txq_get_credits(struct rwnx_txq *txq) * - There is no need to take @list nor @head lock to modify them */ static inline void skb_queue_extract(struct sk_buff_head *list, - struct sk_buff_head *head, int nb_elt) + struct sk_buff_head *head, int nb_elt) { int i; struct sk_buff *first, *last, *ptr; @@ -1019,7 +1029,6 @@ static inline void skb_queue_extract(struct sk_buff_head *list, head->prev = last; } - #ifdef CONFIG_MAC80211_TXQ /** * rwnx_txq_mac80211_dequeue - Dequeue buffer from mac80211 txq and @@ -1036,8 +1045,8 @@ static inline void skb_queue_extract(struct sk_buff_head *list, * @return true if no more buffer are queued in mac80211 txq and false otherwise. */ static bool rwnx_txq_mac80211_dequeue(struct rwnx_hw *rwnx_hw, - struct sk_buff_head *sk_list, - struct rwnx_txq *txq, int max) + struct sk_buff_head *sk_list, + struct rwnx_txq *txq, int max) { struct ieee80211_txq *mac_txq; struct sk_buff *skb; @@ -1090,10 +1099,10 @@ static bool rwnx_txq_mac80211_dequeue(struct rwnx_hw *rwnx_hw, * @return true if txq no longer have buffer ready after the ones returned. * false otherwise */ -static -bool rwnx_txq_get_skb_to_push(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq, - struct rwnx_txq *txq, int user, - struct sk_buff_head *sk_list_push) +static bool rwnx_txq_get_skb_to_push(struct rwnx_hw *rwnx_hw, + struct rwnx_hwq *hwq, struct rwnx_txq *txq, + int user, + struct sk_buff_head *sk_list_push) { int nb_ready = skb_queue_len(&txq->sk_list); int credits = rwnx_txq_get_credits(txq); @@ -1104,7 +1113,8 @@ bool rwnx_txq_get_skb_to_push(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq, if (credits >= nb_ready) { skb_queue_splice_init(&txq->sk_list, sk_list_push); #ifdef CONFIG_MAC80211_TXQ - res = rwnx_txq_mac80211_dequeue(rwnx_hw, sk_list_push, txq, credits - nb_ready); + res = rwnx_txq_mac80211_dequeue(rwnx_hw, sk_list_push, txq, + credits - nb_ready); credits = skb_queue_len(sk_list_push); #else res = true; @@ -1154,9 +1164,9 @@ bool rwnx_txq_get_skb_to_push(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq, * the txq (RWNX_TXQ_STOP_MU_POS) and return false. * */ -static -bool rwnx_txq_select_user(struct rwnx_hw *rwnx_hw, bool mu_lock, - struct rwnx_txq *txq, struct rwnx_hwq *hwq, int *user) +static bool rwnx_txq_select_user(struct rwnx_hw *rwnx_hw, bool mu_lock, + struct rwnx_txq *txq, struct rwnx_hwq *hwq, + int *user) { int pos = 0; #ifdef CONFIG_RWNX_MUMIMO_TX @@ -1187,7 +1197,7 @@ check_user: } #else - for (id = 0 ; id < CONFIG_USER_MAX ; id++) { + for (id = 0; id < CONFIG_USER_MAX; id++) { if (id != pos && txq->pkt_pushed[id]) { rwnx_txq_stop(txq, RWNX_TXQ_STOP_MU_POS); return false; @@ -1203,7 +1213,6 @@ end: return true; } - /** * rwnx_hwq_process - Process one HW queue list * @@ -1229,7 +1238,7 @@ end: * * To be called with tx_lock hold */ -#define ALL_HWQ_MASK ((1 << CONFIG_USER_MAX) - 1) +#define ALL_HWQ_MASK ((1 << CONFIG_USER_MAX) - 1) void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq) { @@ -1245,7 +1254,7 @@ void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq) if (!mu_enable) credit_map = ALL_HWQ_MASK - 1; - list_for_each_entry_safe(txq, next, &hwq->list, sched_list) { + list_for_each_entry_safe (txq, next, &hwq->list, sched_list) { struct rwnx_txhdr *txhdr = NULL; struct sk_buff_head sk_list_push; struct sk_buff *skb; @@ -1255,23 +1264,24 @@ void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq) #endif /* sanity check for debug */ BUG_ON(!(txq->status & RWNX_TXQ_IN_HWQ_LIST)); - if(txq->idx == TXQ_INACTIVE){ + if (txq->idx == TXQ_INACTIVE) { printk("%s txq->idx == TXQ_INACTIVE \r\n", __func__); - rwnx_txq_del_from_hw_list(txq); - rwnx_txq_flush(rwnx_hw, txq); + rwnx_txq_del_from_hw_list(txq); + rwnx_txq_flush(rwnx_hw, txq); continue; } BUG_ON(txq->idx == TXQ_INACTIVE); BUG_ON(txq->credits <= 0); BUG_ON(!rwnx_txq_skb_ready(txq)); - if (!rwnx_txq_select_user(rwnx_hw, mu_enable, txq, hwq, &user)) { + if (!rwnx_txq_select_user(rwnx_hw, mu_enable, txq, hwq, + &user)) { printk("select user:%d\n", user); continue; } txq_empty = rwnx_txq_get_skb_to_push(rwnx_hw, hwq, txq, user, - &sk_list_push); + &sk_list_push); while ((skb = __skb_dequeue(&sk_list_push)) != NULL) { txhdr = (struct rwnx_txhdr *)skb->data; rwnx_tx_push(rwnx_hw, txhdr, 0); @@ -1298,7 +1308,8 @@ void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq) if (txq->push_limit && txq->sta) { if (txq->ps_id == LEGACY_PS_ID) { /* for legacy PS abort SP and wait next ps-poll */ - txq->sta->ps.sp_cnt[txq->ps_id] -= txq->push_limit; + txq->sta->ps.sp_cnt[txq->ps_id] -= + txq->push_limit; txq->push_limit = 0; } /* for u-apsd need to complete the SP to send EOSP frame */ @@ -1307,10 +1318,12 @@ void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq) /* restart netdev queue if number of queued buffer is below threshold */ #ifdef CONFIG_TX_NETIF_FLOWCTRL if (unlikely(txq->status & RWNX_TXQ_NDEV_FLOW_CTRL) && - (skb_queue_len(&txq->sk_list) < RWNX_NDEV_FLOW_CTRL_RESTART)) { + (skb_queue_len(&txq->sk_list) < + RWNX_NDEV_FLOW_CTRL_RESTART)) { #else if (unlikely(txq->status & RWNX_TXQ_NDEV_FLOW_CTRL) && - skb_queue_len(&txq->sk_list) < RWNX_NDEV_FLOW_CTRL_RESTART) { + skb_queue_len(&txq->sk_list) < + RWNX_NDEV_FLOW_CTRL_RESTART) { #endif txq->status &= ~RWNX_TXQ_NDEV_FLOW_CTRL; @@ -1323,7 +1336,6 @@ void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq) #endif /* CONFIG_RWNX_FULLMAC */ } - if (mu_enable) rwnx_txq_release_mu_lock(rwnx_hw); } @@ -1342,7 +1354,7 @@ void rwnx_hwq_process_all(struct rwnx_hw *rwnx_hw) rwnx_mu_group_sta_select(rwnx_hw); - for (id = ARRAY_SIZE(rwnx_hw->hwq) - 1; id >= 0 ; id--) { + for (id = ARRAY_SIZE(rwnx_hw->hwq) - 1; id >= 0; id--) { if (rwnx_hw->hwq[id].need_processing) { rwnx_hwq_process(rwnx_hw, &rwnx_hw->hwq[id]); } @@ -1365,6 +1377,5 @@ void rwnx_hwq_init(struct rwnx_hw *rwnx_hw) hwq->id = i; hwq->size = nx_txdesc_cnt[i]; INIT_LIST_HEAD(&hwq->list); - } } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.h index 47de68f8b..6f311037d 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_txq.h @@ -14,6 +14,8 @@ #include #include +#include + #ifdef CONFIG_RWNX_FULLMAC /** * Fullmac TXQ configuration: @@ -54,26 +56,29 @@ #define NX_NB_TID_PER_STA 8 #define NX_NB_TXQ_PER_STA (NX_NB_TID_PER_STA + 1) #define NX_NB_TXQ_PER_VIF 2 -#define NX_NB_TXQ ((NX_NB_TXQ_PER_STA * NX_REMOTE_STA_MAX) + \ - (NX_NB_TXQ_PER_VIF * NX_VIRT_DEV_MAX) + 1) +#define NX_NB_TXQ \ + ((NX_NB_TXQ_PER_STA * NX_REMOTE_STA_MAX) + \ + (NX_NB_TXQ_PER_VIF * NX_VIRT_DEV_MAX) + 1) #define NX_FIRST_VIF_TXQ_IDX (NX_REMOTE_STA_MAX * NX_NB_TXQ_PER_STA) -#define NX_FIRST_BCMC_TXQ_IDX NX_FIRST_VIF_TXQ_IDX -#define NX_FIRST_UNK_TXQ_IDX (NX_FIRST_BCMC_TXQ_IDX + NX_VIRT_DEV_MAX) +#define NX_FIRST_BCMC_TXQ_IDX NX_FIRST_VIF_TXQ_IDX +#define NX_FIRST_UNK_TXQ_IDX (NX_FIRST_BCMC_TXQ_IDX + NX_VIRT_DEV_MAX) -#define NX_OFF_CHAN_TXQ_IDX (NX_FIRST_VIF_TXQ_IDX + \ - (NX_VIRT_DEV_MAX * NX_NB_TXQ_PER_VIF)) +#define NX_OFF_CHAN_TXQ_IDX \ + (NX_FIRST_VIF_TXQ_IDX + (NX_VIRT_DEV_MAX * NX_NB_TXQ_PER_VIF)) -#define NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC (NX_REMOTE_STA_MAX_FOR_OLD_IC * NX_NB_TXQ_PER_STA) -#define NX_FIRST_BCMC_TXQ_IDX_FOR_OLD_IC NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC -#define NX_FIRST_UNK_TXQ_IDX_FOR_OLD_IC (NX_FIRST_BCMC_TXQ_IDX_FOR_OLD_IC + NX_VIRT_DEV_MAX) - -#define NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC (NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC + \ - (NX_VIRT_DEV_MAX * NX_NB_TXQ_PER_VIF)) +#define NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC \ + (NX_REMOTE_STA_MAX_FOR_OLD_IC * NX_NB_TXQ_PER_STA) +#define NX_FIRST_BCMC_TXQ_IDX_FOR_OLD_IC NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC +#define NX_FIRST_UNK_TXQ_IDX_FOR_OLD_IC \ + (NX_FIRST_BCMC_TXQ_IDX_FOR_OLD_IC + NX_VIRT_DEV_MAX) +#define NX_OFF_CHAN_TXQ_IDX_FOR_OLD_IC \ + (NX_FIRST_VIF_TXQ_IDX_FOR_OLD_IC + \ + (NX_VIRT_DEV_MAX * NX_NB_TXQ_PER_VIF)) #define NX_BCMC_TXQ_TYPE 0 -#define NX_UNK_TXQ_TYPE 1 +#define NX_UNK_TXQ_TYPE 1 /** * Each data TXQ is a netdev queue. TXQ to send MGT are not data TXQ as @@ -82,18 +87,20 @@ * AP : all STAs + 1 BC/MC */ #define NX_NB_NDEV_TXQ ((NX_NB_TID_PER_STA * NX_REMOTE_STA_MAX) + 1) -#define NX_NB_NDEV_TXQ_FOR_OLD_IC ((NX_NB_TID_PER_STA * NX_REMOTE_STA_MAX_FOR_OLD_IC) + 1) +#define NX_NB_NDEV_TXQ_FOR_OLD_IC \ + ((NX_NB_TID_PER_STA * NX_REMOTE_STA_MAX_FOR_OLD_IC) + 1) #define NX_BCMC_TXQ_NDEV_IDX (NX_NB_TID_PER_STA * NX_REMOTE_STA_MAX) -#define NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC (NX_NB_TID_PER_STA * NX_REMOTE_STA_MAX_FOR_OLD_IC) -#define NX_STA_NDEV_IDX(tid, sta_idx) ((tid) + (sta_idx) * NX_NB_TID_PER_STA) +#define NX_BCMC_TXQ_NDEV_IDX_FOR_OLD_IC \ + (NX_NB_TID_PER_STA * NX_REMOTE_STA_MAX_FOR_OLD_IC) +#define NX_STA_NDEV_IDX(tid, sta_idx) ((tid) + (sta_idx)*NX_NB_TID_PER_STA) #define NDEV_NO_TXQ 0xffff #if (NX_NB_NDEV_TXQ >= NDEV_NO_TXQ) #error("Need to increase struct rwnx_txq->ndev_idx size") #endif /* stop netdev queue when number of queued buffers if greater than this */ -#define RWNX_NDEV_FLOW_CTRL_STOP 64 +#define RWNX_NDEV_FLOW_CTRL_STOP 64 /* restart netdev queue when number of queued buffers is lower than this */ #define RWNX_NDEV_FLOW_CTRL_RESTART 64 @@ -140,7 +147,7 @@ struct rwnx_hwq { * @RWNX_PUSH_IMMEDIATE Pushing a buffer without queuing it first */ enum rwnx_push_flags { - RWNX_PUSH_RETRY = BIT(0), + RWNX_PUSH_RETRY = BIT(0), RWNX_PUSH_IMMEDIATE = BIT(1), }; @@ -160,20 +167,19 @@ enum rwnx_push_flags { * Note: when a TXQ is flowctrl it is NOT stopped */ enum rwnx_txq_flags { - RWNX_TXQ_IN_HWQ_LIST = BIT(0), - RWNX_TXQ_STOP_FULL = BIT(1), - RWNX_TXQ_STOP_CSA = BIT(2), - RWNX_TXQ_STOP_STA_PS = BIT(3), - RWNX_TXQ_STOP_VIF_PS = BIT(4), - RWNX_TXQ_STOP_CHAN = BIT(5), - RWNX_TXQ_STOP_MU_POS = BIT(6), - RWNX_TXQ_STOP = (RWNX_TXQ_STOP_FULL | RWNX_TXQ_STOP_CSA | - RWNX_TXQ_STOP_STA_PS | RWNX_TXQ_STOP_VIF_PS | - RWNX_TXQ_STOP_CHAN), + RWNX_TXQ_IN_HWQ_LIST = BIT(0), + RWNX_TXQ_STOP_FULL = BIT(1), + RWNX_TXQ_STOP_CSA = BIT(2), + RWNX_TXQ_STOP_STA_PS = BIT(3), + RWNX_TXQ_STOP_VIF_PS = BIT(4), + RWNX_TXQ_STOP_CHAN = BIT(5), + RWNX_TXQ_STOP_MU_POS = BIT(6), + RWNX_TXQ_STOP = + (RWNX_TXQ_STOP_FULL | RWNX_TXQ_STOP_CSA | RWNX_TXQ_STOP_STA_PS | + RWNX_TXQ_STOP_VIF_PS | RWNX_TXQ_STOP_CHAN), RWNX_TXQ_NDEV_FLOW_CTRL = BIT(7), }; - /** * struct rwnx_txq - Structure used to save information relative to * a RA/TID TX queue @@ -249,10 +255,10 @@ struct rwnx_sw_txhdr; #ifdef CONFIG_RWNX_MUMIMO_TX #define RWNX_TXQ_GROUP_ID(txq) ((txq)->mumimo_info & 0x3f) -#define RWNX_TXQ_POS_ID(txq) (((txq)->mumimo_info >> 6) & 0x3) +#define RWNX_TXQ_POS_ID(txq) (((txq)->mumimo_info >> 6) & 0x3) #else #define RWNX_TXQ_GROUP_ID(txq) 0 -#define RWNX_TXQ_POS_ID(txq) 0 +#define RWNX_TXQ_POS_ID(txq) 0 #endif /* CONFIG_RWNX_MUMIMO_TX */ static inline bool rwnx_txq_is_stopped(struct rwnx_txq *txq) @@ -280,16 +286,15 @@ static inline bool rwnx_txq_is_scheduled(struct rwnx_txq *txq) * @rwnx_hw: main driver data */ #ifdef CONFIG_MAC80211_TXQ -#define foreach_sta_txq(sta, txq, tid, rwnx_hw) \ - for (tid = 0, txq = rwnx_txq_sta_get(sta, 0); \ - tid < NX_NB_TXQ_PER_STA; \ - tid++, txq = rwnx_txq_sta_get(sta, tid)) +#define foreach_sta_txq(sta, txq, tid, rwnx_hw) \ + for (tid = 0, txq = rwnx_txq_sta_get(sta, 0); tid < NX_NB_TXQ_PER_STA; \ + tid++, txq = rwnx_txq_sta_get(sta, tid)) #elif defined(CONFIG_RWNX_FULLMAC) /* CONFIG_RWNX_FULLMAC */ -#define foreach_sta_txq(sta, txq, tid, rwnx_hw) \ - for (tid = 0, txq = rwnx_txq_sta_get(sta, 0, rwnx_hw); \ - tid < (is_multicast_sta(sta->sta_idx) ? 1 : NX_NB_TXQ_PER_STA); \ - tid++, txq++) +#define foreach_sta_txq(sta, txq, tid, rwnx_hw) \ + for (tid = 0, txq = rwnx_txq_sta_get(sta, 0, rwnx_hw); \ + tid < (is_multicast_sta(sta->sta_idx) ? 1 : NX_NB_TXQ_PER_STA); \ + tid++, txq++) #endif @@ -306,10 +311,11 @@ static inline bool rwnx_txq_is_scheduled(struct rwnx_txq *txq) * Note: For fullmac txq for mgmt frame is skipped */ #ifdef CONFIG_RWNX_FULLMAC -#define foreach_sta_txq_prio(sta, txq, tid, i, rwnx_hw) \ - for (i = 0, tid = nx_tid_prio[0], txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); \ - i < NX_NB_TID_PER_STA; \ - i++, tid = nx_tid_prio[i], txq = rwnx_txq_sta_get(sta, tid, rwnx_hw)) +#define foreach_sta_txq_prio(sta, txq, tid, i, rwnx_hw) \ + for (i = 0, tid = nx_tid_prio[0], \ + txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); \ + i < NX_NB_TID_PER_STA; i++, tid = nx_tid_prio[i], \ + txq = rwnx_txq_sta_get(sta, tid, rwnx_hw)) #endif /** @@ -320,21 +326,19 @@ static inline bool rwnx_txq_is_scheduled(struct rwnx_txq *txq) * @ac: int updated with the TXQ ac at each iteration */ #ifdef CONFIG_MAC80211_TXQ -#define foreach_vif_txq(vif, txq, ac) \ - for (ac = RWNX_HWQ_BK, txq = rwnx_txq_vif_get(vif, ac); \ - ac < NX_NB_TXQ_PER_VIF; \ - ac++, txq = rwnx_txq_vif_get(vif, ac)) +#define foreach_vif_txq(vif, txq, ac) \ + for (ac = RWNX_HWQ_BK, txq = rwnx_txq_vif_get(vif, ac); \ + ac < NX_NB_TXQ_PER_VIF; ac++, txq = rwnx_txq_vif_get(vif, ac)) #else -#define foreach_vif_txq(vif, txq, ac) \ - for (ac = RWNX_HWQ_BK, txq = &vif->txqs[0]; \ - ac < NX_NB_TXQ_PER_VIF; \ - ac++, txq++) +#define foreach_vif_txq(vif, txq, ac) \ + for (ac = RWNX_HWQ_BK, txq = &vif->txqs[0]; ac < NX_NB_TXQ_PER_VIF; \ + ac++, txq++) #endif #ifdef CONFIG_RWNX_FULLMAC struct rwnx_txq *rwnx_txq_sta_get(struct rwnx_sta *sta, u8 tid, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); struct rwnx_txq *rwnx_txq_vif_get(struct rwnx_vif *vif, u8 type); #endif /* CONFIG_RWNX_FULLMAC */ @@ -350,10 +354,10 @@ static inline u8 rwnx_txq_vif_get_status(struct rwnx_vif *rwnx_vif) } void rwnx_txq_vif_init(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, - u8 status); + u8 status); void rwnx_txq_vif_deinit(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif); void rwnx_txq_sta_init(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta, - u8 status); + u8 status); void rwnx_txq_sta_deinit(struct rwnx_hw *rwnx_hw, struct rwnx_sta *rwnx_sta); #ifdef CONFIG_RWNX_FULLMAC void rwnx_txq_unk_vif_init(struct rwnx_vif *rwnx_vif); @@ -363,37 +367,35 @@ void rwnx_txq_offchan_deinit(struct rwnx_vif *rwnx_vif); void rwnx_txq_tdls_vif_init(struct rwnx_vif *rwnx_vif); void rwnx_txq_tdls_vif_deinit(struct rwnx_vif *vif); void rwnx_txq_tdls_sta_start(struct rwnx_vif *rwnx_vif, u16 reason, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); void rwnx_txq_tdls_sta_stop(struct rwnx_vif *rwnx_vif, u16 reason, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); #endif - void rwnx_txq_add_to_hw_list(struct rwnx_txq *txq); void rwnx_txq_del_from_hw_list(struct rwnx_txq *txq); void rwnx_txq_stop(struct rwnx_txq *txq, u16 reason); void rwnx_txq_start(struct rwnx_txq *txq, u16 reason); void rwnx_txq_vif_start(struct rwnx_vif *vif, u16 reason, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); void rwnx_txq_vif_stop(struct rwnx_vif *vif, u16 reason, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); #ifdef CONFIG_RWNX_FULLMAC void rwnx_txq_sta_start(struct rwnx_sta *sta, u16 reason, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); void rwnx_txq_sta_stop(struct rwnx_sta *sta, u16 reason, - struct rwnx_hw *rwnx_hw); + struct rwnx_hw *rwnx_hw); void rwnx_txq_offchan_start(struct rwnx_hw *rwnx_hw); void rwnx_txq_sta_switch_vif(struct rwnx_sta *sta, struct rwnx_vif *old_vif, - struct rwnx_vif *new_vif); + struct rwnx_vif *new_vif); #endif /* CONFIG_RWNX_FULLMAC */ int rwnx_txq_queue_skb(struct sk_buff *skb, struct rwnx_txq *txq, - struct rwnx_hw *rwnx_hw, bool retry); + struct rwnx_hw *rwnx_hw, bool retry); void rwnx_txq_confirm_any(struct rwnx_hw *rwnx_hw, struct rwnx_txq *txq, - struct rwnx_hwq *hwq, struct rwnx_sw_txhdr *sw_txhdr); - + struct rwnx_hwq *hwq, struct rwnx_sw_txhdr *sw_txhdr); void rwnx_hwq_init(struct rwnx_hw *rwnx_hw); void rwnx_hwq_process(struct rwnx_hw *rwnx_hw, struct rwnx_hwq *hwq); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.c index 6b3c6f29b..bf33cf980 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.c @@ -15,11 +15,10 @@ #include "ipc_host.h" extern int get_testmode(void); -extern void get_fw_path(char* fw_path); +extern void get_fw_path(char *fw_path); extern int testmode; extern char aic_fw_path[200]; - int rwnx_init_aic(struct rwnx_hw *rwnx_hw) { RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -36,4 +35,3 @@ int rwnx_init_aic(struct rwnx_hw *rwnx_hw) return 0; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.h index f71a601c2..a157ec57e 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_utils.h @@ -13,14 +13,15 @@ #include #include "aicwf_debug.h" - #include "lmac_msg.h" #if 0 #ifdef CONFIG_RWNX_DBG /* #define RWNX_DBG(format, arg...) pr_warn(format, ## arg) */ #define RWNX_DBG printk #else -#define RWNX_DBG(a...) do {} while (0) +#define RWNX_DBG(a...) \ + do { \ + } while (0) #endif #define RWNX_FN_ENTRY_STR ">>> %s()\n", __func__ @@ -87,17 +88,17 @@ static const u32 rwnx_rxbuff_pattern = 0xCAFEFADE; /* * Maximum Length of Radiotap header vendor specific data(in bytes) */ -#define RADIOTAP_HDR_VEND_MAX_LEN 16 +#define RADIOTAP_HDR_VEND_MAX_LEN 16 /* * Maximum Radiotap Header Length without vendor specific data (in bytes) */ -#define RADIOTAP_HDR_MAX_LEN 80 +#define RADIOTAP_HDR_MAX_LEN 80 /* * Unsupported HT Frame data length (in bytes) */ -#define UNSUP_RX_VEC_DATA_LEN 2 +#define UNSUP_RX_VEC_DATA_LEN 2 /** * struct rwnx_ipc_skb_elem - IPC buffer for SKB element diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.c index 72e3c850b..af00bd8c2 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.c @@ -24,8 +24,8 @@ static int rwnx_v7_platform_enable(struct rwnx_hw *rwnx_hw) int ret; /* sched_setscheduler on ONESHOT threaded irq handler for BCNs ? */ - ret = request_irq(rwnx_hw->plat->pci_dev->irq, rwnx_irq_hdlr, 0, - "rwnx", rwnx_hw); + ret = request_irq(rwnx_hw->plat->pci_dev->irq, rwnx_irq_hdlr, 0, "rwnx", + rwnx_hw); return ret; } @@ -37,7 +37,7 @@ static int rwnx_v7_platform_disable(struct rwnx_hw *rwnx_hw) static void rwnx_v7_platform_deinit(struct rwnx_plat *rwnx_plat) { - #ifdef CONFIG_PCI +#ifdef CONFIG_PCI struct rwnx_v7 *rwnx_v7 = (struct rwnx_v7 *)rwnx_plat->priv; pci_disable_device(rwnx_plat->pci_dev); @@ -46,12 +46,12 @@ static void rwnx_v7_platform_deinit(struct rwnx_plat *rwnx_plat) pci_release_regions(rwnx_plat->pci_dev); pci_clear_master(rwnx_plat->pci_dev); pci_disable_msi(rwnx_plat->pci_dev); - #endif +#endif kfree(rwnx_plat); } static u8 *rwnx_v7_get_address(struct rwnx_plat *rwnx_plat, int addr_name, - unsigned int offset) + unsigned int offset) { struct rwnx_v7 *rwnx_v7 = (struct rwnx_v7 *)rwnx_plat->priv; @@ -66,14 +66,11 @@ static u8 *rwnx_v7_get_address(struct rwnx_plat *rwnx_plat, int addr_name, static void rwnx_v7_ack_irq(struct rwnx_plat *rwnx_plat) { - } static const u32 rwnx_v7_config_reg[] = { - NXMAC_DEBUG_PORT_SEL_ADDR, - SYSCTRL_DIAG_CONF_ADDR, - SYSCTRL_PHYDIAG_CONF_ADDR, - SYSCTRL_RIUDIAG_CONF_ADDR, + NXMAC_DEBUG_PORT_SEL_ADDR, SYSCTRL_DIAG_CONF_ADDR, + SYSCTRL_PHYDIAG_CONF_ADDR, SYSCTRL_RIUDIAG_CONF_ADDR, RF_V7_DIAGPORT_CONF1_ADDR, }; @@ -91,7 +88,8 @@ static int rwnx_v7_get_config_reg(struct rwnx_plat *rwnx_plat, const u32 **list) if (!list) return 0; - fpga_sign = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, SYSCTRL_SIGNATURE_ADDR); + fpga_sign = RWNX_REG_READ(rwnx_plat, RWNX_ADDR_SYSTEM, + SYSCTRL_SIGNATURE_ADDR); if (__FPGA_TYPE(fpga_sign) == 0xc0ca) { *list = rwnx_v7_he_config_reg; return ARRAY_SIZE(rwnx_v7_he_config_reg); @@ -101,7 +99,6 @@ static int rwnx_v7_get_config_reg(struct rwnx_plat *rwnx_plat, const u32 **list) } } - /** * rwnx_v7_platform_init - Initialize the DINI platform * @@ -119,7 +116,7 @@ int rwnx_v7_platform_init(struct pci_dev *pci_dev, struct rwnx_plat **rwnx_plat) int ret = 0; *rwnx_plat = kzalloc(sizeof(struct rwnx_plat) + sizeof(struct rwnx_v7), - GFP_KERNEL); + GFP_KERNEL); if (!*rwnx_plat) return -ENOMEM; @@ -146,13 +143,12 @@ int rwnx_v7_platform_init(struct pci_dev *pci_dev, struct rwnx_plat **rwnx_plat) goto out_request; } #endif - #ifdef CONFIG_PCI +#ifdef CONFIG_PCI if (pci_enable_msi(pci_dev)) { dev_err(&(pci_dev->dev), "pci_enable_msi failed\n"); goto out_msi; - } - #endif +#endif rwnx_v7->pci_bar0_vaddr = (u8 *)pci_ioremap_bar(pci_dev, 0); if (!rwnx_v7->pci_bar0_vaddr) { diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.h index c2e39765a..412c273db 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_v7.h @@ -15,6 +15,6 @@ #include "rwnx_platform.h" int rwnx_v7_platform_init(struct pci_dev *pci_dev, - struct rwnx_plat **rwnx_plat); + struct rwnx_plat **rwnx_plat); #endif /* _RWNX_V7_H_ */ diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version.h index 46ecb5de1..cfe5e6378 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version.h @@ -5,7 +5,7 @@ static inline void rwnx_print_version(void) { - AICWFDBG(LOGINFO, RWNX_VERS_BANNER"\n"); + AICWFDBG(LOGINFO, RWNX_VERS_BANNER "\n"); AICWFDBG(LOGINFO, "RELEASE_DATE:%s \r\n", RELEASE_DATE); } diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version_gen.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version_gen.h index 6ce7186ae..6fcb679c8 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version_gen.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_version_gen.h @@ -1,4 +1,4 @@ #define RWNX_VERS_REV "241c091M (master)" #define RWNX_VERS_MOD "6.4.3.0" #define RWNX_VERS_BANNER "rwnx v6.4.3.0 - - 241c091M (master)" -#define RELEASE_DATE "2024_0615_c3cb37b3" +#define RELEASE_DATE "2025_0410_b99ca8b6" diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.c index 1d1529627..56c4add0e 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.c @@ -27,23 +27,22 @@ void rwnx_wakeup_deinit(struct wakeup_source *ws) struct wakeup_source *rwnx_wakeup_register(struct device *dev, const char *name) { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) return wakeup_source_register(dev, name); #else #if defined(CONFIG_PLATFORM_ROCKCHIP2) || defined(CONFIG_PLATFORM_ROCKCHIP) #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) - return wakeup_source_register(dev, name); + return wakeup_source_register(dev, name); #else - return wakeup_source_register(name); + return wakeup_source_register(name); #endif #else return wakeup_source_register(name); -#endif//#if defined(CONFIG_PLATFORM_ROCKCHIP2) || defined(CONFIG_PLATFORM_ROCKCHIP) +#endif //#if defined(CONFIG_PLATFORM_ROCKCHIP2) || defined(CONFIG_PLATFORM_ROCKCHIP) -#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) +#endif //LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) } void rwnx_wakeup_unregister(struct wakeup_source *ws) @@ -72,7 +71,7 @@ void aicwf_wakeup_lock_init(struct rwnx_hw *rwnx_hw) { rwnx_hw->ws_tx = rwnx_wakeup_init("rwnx_tx_wakelock"); rwnx_hw->ws_rx = rwnx_wakeup_init("rwnx_rx_wakelock"); - rwnx_hw->ws_irqrx = rwnx_wakeup_init("rwnx_irqrx_wakelock"); + rwnx_hw->ws_irqrx = rwnx_wakeup_init("rwnx_irqrx_wakelock"); rwnx_hw->ws_pwrctrl = rwnx_wakeup_init("rwnx_pwrcrl_wakelock"); } @@ -87,4 +86,3 @@ void aicwf_wakeup_lock_deinit(struct rwnx_hw *rwnx_hw) rwnx_hw->ws_irqrx = NULL; rwnx_hw->ws_pwrctrl = NULL; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.h index 9c9655a46..694509bd3 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/rwnx_wakelock.h @@ -8,7 +8,8 @@ struct wakeup_source *rwnx_wakeup_init(const char *name); void rwnx_wakeup_deinit(struct wakeup_source *ws); -struct wakeup_source *rwnx_wakeup_register(struct device *dev, const char *name); +struct wakeup_source *rwnx_wakeup_register(struct device *dev, + const char *name); void rwnx_wakeup_unregister(struct wakeup_source *ws); void rwnx_wakeup_lock(struct wakeup_source *ws); diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.c index f59409946..ce6a96173 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.c @@ -6,7 +6,6 @@ * Copyright (C) AICSemi 2018-2020 */ - #include "sdio_host.h" //#include "ipc_compat.h" #include "rwnx_tx.h" @@ -16,10 +15,8 @@ /** **************************************************************************************** */ -void aicwf_sdio_host_init(struct sdio_host_env_tag *env, - void *cb, - void *shared_env_ptr, - void *pthis) +void aicwf_sdio_host_init(struct sdio_host_env_tag *env, void *cb, + void *shared_env_ptr, void *pthis) { // Reset the environments @@ -32,7 +29,8 @@ void aicwf_sdio_host_init(struct sdio_host_env_tag *env, /** **************************************************************************************** */ -volatile struct txdesc_host *aicwf_sdio_host_txdesc_get(struct sdio_host_env_tag *env, const int queue_idx) +volatile struct txdesc_host * +aicwf_sdio_host_txdesc_get(struct sdio_host_env_tag *env, const int queue_idx) { // struct ipc_shared_env_tag *shared_env_ptr = env->shared; volatile struct txdesc_host *txdesc_free = NULL; @@ -56,11 +54,13 @@ volatile struct txdesc_host *aicwf_sdio_host_txdesc_get(struct sdio_host_env_tag /** **************************************************************************************** */ -void aicwf_sdio_host_txdesc_push(struct sdio_host_env_tag *env, const int queue_idx, const uint64_t host_id) +void aicwf_sdio_host_txdesc_push(struct sdio_host_env_tag *env, + const int queue_idx, const uint64_t host_id) { //printk("push, %d, %d, 0x%llx \r\n", queue_idx, env->txdesc_free_idx[queue_idx], host_id); // Save the host id in the environment - env->tx_host_id[queue_idx][env->txdesc_free_idx[queue_idx] % SDIO_TXDESC_CNT] = host_id; + env->tx_host_id[queue_idx][env->txdesc_free_idx[queue_idx] % + SDIO_TXDESC_CNT] = host_id; // Increment the index env->txdesc_free_idx[queue_idx]++; @@ -73,7 +73,7 @@ void aicwf_sdio_host_txdesc_push(struct sdio_host_env_tag *env, const int queue_ */ void aicwf_sdio_host_tx_cfm_handler(struct sdio_host_env_tag *env, u32 *data) { - u32 queue_idx = 0;// data[0]; + u32 queue_idx = 0; // data[0]; //struct rwnx_hw *rwnx_hw = (struct rwnx_hw *)env->pthis; struct sk_buff *skb = NULL; struct rwnx_txhdr *txhdr; @@ -88,7 +88,8 @@ void aicwf_sdio_host_tx_cfm_handler(struct sdio_host_env_tag *env, u32 *data) // already at the good value to ensure that the test of FIFO full is correct //uint32_t used_idx = env->txdesc_used_idx[queue_idx]++; uint32_t used_idx = data[1]; - unsigned long host_id = env->tx_host_id[queue_idx][used_idx % SDIO_TXDESC_CNT]; + unsigned long host_id = + env->tx_host_id[queue_idx][used_idx % SDIO_TXDESC_CNT]; // Reset the host id in the array env->tx_host_id[queue_idx][used_idx % SDIO_TXDESC_CNT] = 0; @@ -104,12 +105,16 @@ void aicwf_sdio_host_tx_cfm_handler(struct sdio_host_env_tag *env, u32 *data) skb = (struct sk_buff *)host_id; txhdr = (struct rwnx_txhdr *)skb->data; txhdr->hw_hdr.cfm.status = (union rwnx_hw_txstatus)data[0]; - AICWFDBG(LOGINFO, "sdio_host_tx_cfm_handler:used_idx=%d, 0x%p, status=%x\r\n", used_idx, env->pthis, txhdr->hw_hdr.cfm.status.value); + AICWFDBG( + LOGINFO, + "sdio_host_tx_cfm_handler:used_idx=%d, 0x%p, status=%x\r\n", + used_idx, env->pthis, txhdr->hw_hdr.cfm.status.value); //if (env->cb.send_data_cfm(env->pthis, host_id) != 0) if (rwnx_txdatacfm(env->pthis, (void *)host_id) != 0) { // No more confirmations, so put back the used index at its initial value env->txdesc_used_idx[queue_idx] = used_idx; - env->tx_host_id[queue_idx][used_idx % SDIO_TXDESC_CNT] = host_id; + env->tx_host_id[queue_idx][used_idx % SDIO_TXDESC_CNT] = + host_id; // and exit the loop AICWFDBG(LOGERROR, "ERROR:rwnx_txdatacfm,\r\n"); // break; @@ -134,4 +139,3 @@ int aicwf_rwnx_sdio_platform_init(struct aic_sdio_dev *sdiodev) return ret; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.h index 670e9e086..e0b62e5fd 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/sdio_host.h @@ -6,16 +6,14 @@ * Copyright (C) AICSemi 2018-2020 */ - #ifndef _SDIO_HOST_H_ #define _SDIO_HOST_H_ #include "lmac_types.h" #include "aicwf_sdio.h" -#define SDIO_TXQUEUE_CNT NX_TXQ_CNT -#define SDIO_TXDESC_CNT NX_TXDESC_CNT - +#define SDIO_TXQUEUE_CNT NX_TXQ_CNT +#define SDIO_TXDESC_CNT NX_TXDESC_CNT /// Definition of the IPC Host environment structure. struct sdio_host_env_tag { @@ -30,12 +28,15 @@ struct sdio_host_env_tag { void *pthis; }; -extern void aicwf_sdio_host_init(struct sdio_host_env_tag *env, - void *cb, void *shared_env_ptr, void *pthis); +extern void aicwf_sdio_host_init(struct sdio_host_env_tag *env, void *cb, + void *shared_env_ptr, void *pthis); -extern void aicwf_sdio_host_txdesc_push(struct sdio_host_env_tag *env, const int queue_idx, const uint64_t host_id); +extern void aicwf_sdio_host_txdesc_push(struct sdio_host_env_tag *env, + const int queue_idx, + const uint64_t host_id); -extern void aicwf_sdio_host_tx_cfm_handler(struct sdio_host_env_tag *env, u32 *data); +extern void aicwf_sdio_host_tx_cfm_handler(struct sdio_host_env_tag *env, + u32 *data); extern int aicwf_rwnx_sdio_platform_init(struct aic_sdio_dev *sdiodev); #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.c b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.c index c5c86d0de..83a102f79 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.c +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.c @@ -6,7 +6,6 @@ * Copyright (C) AICSemi 2018-2020 */ - #include "usb_host.h" //#include "ipc_compat.h" #include "rwnx_tx.h" @@ -15,10 +14,8 @@ /** **************************************************************************************** */ -void aicwf_usb_host_init(struct usb_host_env_tag *env, - void *cb, - void *shared_env_ptr, - void *pthis) +void aicwf_usb_host_init(struct usb_host_env_tag *env, void *cb, + void *shared_env_ptr, void *pthis) { // Reset the environments @@ -32,7 +29,8 @@ void aicwf_usb_host_init(struct usb_host_env_tag *env, /** **************************************************************************************** */ -volatile struct txdesc_host *aicwf_usb_host_txdesc_get(struct usb_host_env_tag *env, const int queue_idx) +volatile struct txdesc_host * +aicwf_usb_host_txdesc_get(struct usb_host_env_tag *env, const int queue_idx) { // struct ipc_shared_env_tag *shared_env_ptr = env->shared; volatile struct txdesc_host *txdesc_free = NULL; @@ -56,11 +54,13 @@ volatile struct txdesc_host *aicwf_usb_host_txdesc_get(struct usb_host_env_tag * /** **************************************************************************************** */ -void aicwf_usb_host_txdesc_push(struct usb_host_env_tag *env, const int queue_idx, const uint64_t host_id) +void aicwf_usb_host_txdesc_push(struct usb_host_env_tag *env, + const int queue_idx, const uint64_t host_id) { //printk("push, %d, %d, 0x%llx \r\n", queue_idx, env->txdesc_free_idx[queue_idx], host_id); // Save the host id in the environment - env->tx_host_id[queue_idx][env->txdesc_free_idx[queue_idx] % USB_TXDESC_CNT] = host_id; + env->tx_host_id[queue_idx][env->txdesc_free_idx[queue_idx] % + USB_TXDESC_CNT] = host_id; // Increment the index env->txdesc_free_idx[queue_idx]++; @@ -73,7 +73,7 @@ void aicwf_usb_host_txdesc_push(struct usb_host_env_tag *env, const int queue_id */ void aicwf_usb_host_tx_cfm_handler(struct usb_host_env_tag *env, u32 *data) { - u32 queue_idx = 0;//data[0]; + u32 queue_idx = 0; //data[0]; //struct rwnx_hw *rwnx_hw = (struct rwnx_hw *)env->pthis; struct sk_buff *skb = NULL; struct rwnx_txhdr *txhdr; @@ -89,7 +89,8 @@ void aicwf_usb_host_tx_cfm_handler(struct usb_host_env_tag *env, u32 *data) // already at the good value to ensure that the test of FIFO full is correct //uint32_t used_idx = env->txdesc_used_idx[queue_idx]++; uint32_t used_idx = data[1]; - uint64_t host_id = env->tx_host_id[queue_idx][used_idx % USB_TXDESC_CNT]; + uint64_t host_id = + env->tx_host_id[queue_idx][used_idx % USB_TXDESC_CNT]; // Reset the host id in the array env->tx_host_id[queue_idx][used_idx % USB_TXDESC_CNT] = 0; @@ -112,10 +113,11 @@ void aicwf_usb_host_tx_cfm_handler(struct usb_host_env_tag *env, u32 *data) if (rwnx_txdatacfm(env->pthis, (void *)host_id) != 0) { // No more confirmations, so put back the used index at its initial value env->txdesc_used_idx[queue_idx] = used_idx; - env->tx_host_id[queue_idx][used_idx % USB_TXDESC_CNT] = host_id; + env->tx_host_id[queue_idx][used_idx % USB_TXDESC_CNT] = + host_id; // and exit the loop printk("ERROR:rwnx_txdatacfm,\r\n"); - // break; + // break; } } } @@ -131,7 +133,7 @@ int aicwf_rwnx_usb_platform_init(struct aic_usb_dev *usbdev) if (!rwnx_plat) return -ENOMEM; -// rwnx_plat->pci_dev = pci_dev; + // rwnx_plat->pci_dev = pci_dev; rwnx_plat->usbdev = usbdev; ret = rwnx_platform_init(rwnx_plat, &drvdata); @@ -143,4 +145,3 @@ int aicwf_rwnx_usb_platform_init(struct aic_usb_dev *usbdev) #endif return ret; } - diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.h b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.h index 012b90c97..c062225c5 100755 --- a/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.h +++ b/sysdrv/drv_ko/wifi/aic8800dc/aic8800_fdrv/usb_host.h @@ -6,16 +6,14 @@ * Copyright (C) AICSemi 2018-2020 */ - #ifndef _USB_HOST_H_ #define _USB_HOST_H_ #include "lmac_types.h" #include "aicwf_usb.h" -#define USB_TXQUEUE_CNT NX_TXQ_CNT -#define USB_TXDESC_CNT NX_TXDESC_CNT - +#define USB_TXQUEUE_CNT NX_TXQ_CNT +#define USB_TXDESC_CNT NX_TXDESC_CNT /// Definition of the IPC Host environment structure. struct usb_host_env_tag { @@ -30,12 +28,15 @@ struct usb_host_env_tag { void *pthis; }; -extern void aicwf_usb_host_init(struct usb_host_env_tag *env, - void *cb, void *shared_env_ptr, void *pthis); +extern void aicwf_usb_host_init(struct usb_host_env_tag *env, void *cb, + void *shared_env_ptr, void *pthis); -extern void aicwf_usb_host_txdesc_push(struct usb_host_env_tag *env, const int queue_idx, const uint64_t host_id); +extern void aicwf_usb_host_txdesc_push(struct usb_host_env_tag *env, + const int queue_idx, + const uint64_t host_id); -extern void aicwf_usb_host_tx_cfm_handler(struct usb_host_env_tag *env, u32 *data); +extern void aicwf_usb_host_tx_cfm_handler(struct usb_host_env_tag *env, + u32 *data); extern int aicwf_rwnx_usb_platform_init(struct aic_usb_dev *usbdev); #endif diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fmacfw_calib_8800dc_h_u02.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fmacfw_calib_8800dc_h_u02.bin index c395f04b25a79573d6a5619f8a516d03cbf84606..236bb7fd617986fbe5e3e5f0bf833691273b3617 100755 GIT binary patch delta 8964 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 EKZBq8k^lez delta 12383 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 delta 21 dcmcb!i|NiTrU_b1EB;Q@nZ}g!YvYj_a{zRZ3ibd1 diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fmacfw_patch_8800dc_h_u02.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fmacfw_patch_8800dc_h_u02.bin index cea05b9e95389f78b96de2f4a8801a66260cd987..7893a055dc5d593e08bf7e63d33a4a0933b81bed 100755 GIT binary patch delta 16113 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 CJPsWI diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fmacfw_patch_tbl_8800dc_h_u02.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fmacfw_patch_tbl_8800dc_h_u02.bin index 72cdf58db081cfd2f89752e847855134454503e8..bc6eb39879c16c1b59bf7b0155d10e8b7a9aed9b 100755 GIT binary patch literal 840 zcmcJO%}Z2a6viKOEGx7wICZ3%xI|W9)_fU_7>tW(tcIGH>5HtH7_rF-A`%o_%+Le{ z1qQh@Fld5V1T6~!6LJx_n4lIyf{Ox!f`k?=TJ*d0H*_~Y&N-t(T9t4UL#=%(_w z+;Gf|gd)9eIMNr1_C*i7J?_Y%P&^(A=k?#dsa8in+DyM-C2pF8sdm$s4UU$#nZ{cj z1y7n1{_!TC-zUR0v^j|RDgZD3*X7C3OvM1&W!vOK{u<2*BqZaO6AZ{wM7r1ua z)B&@jrWpEfumHPC^o6}}9H!~B0_*TQ%)@v3H-83t=f}1<`ZQqj!O9@-)yBS{ubudW zsRaG-5G3Jek9JOcn@@IN$$UyxZkvjzP^X|+30A1easSv*owaPhPDxck@`) X({x80GcY-)xia-TxB}Xm@P3ZJ=ckG@ literal 600 zcmcJN&r4Kc6oy}#TS{5_K|?1{xKXW4ny$a6M#eNI7qc^%#SDx#m5T%i6f|Zr!3ZuC z4B861FlZq-3n3Q+ZrmB%MVp|7LP0Kr*$6ItF8vMO#rN=@^PcaV^Kn%%eVFmHQ%im@ z!&5j`^0}t~L-O0t=}-I&&J!=g9E^{d)?tHwP3GBoU=sSU)AWnF{c-xD z|G*je@rCIn@f}!%^^9o+KAd1q{nvf%PXBsM9?U-FJ#IS9Lhlxu_jnIao|$&9<3}Hn zFQbpCUxPo;XY7&3*GMwY4W~DcO@HyHm}?UrvR8@xFnd(#^NRUaZ#!+UPYr)GUrn)e kwL(4o_T`E^82*LbLgB&OP_ubMJjeL#EbFH`dbU zhRWPE7-fwfX z)^CbuIV!IvPdrZSG9J2XS|@%;U4(h7drd!lj%r-fB;Gnk9X>x`O5v-6rX=%v3#n(` z+)>kE)}0+RHQ*xkGvxD+voCcmC8ja*e=v!wVN)6T4-L%6msdLTvHx(B={I%n za08p$ObPPU)CDng(e#A;VzX%(r>>cD$bTlkgq;!cn011_ynQN67w9K;)AW{j3ge8| zoHiNrYdSeU4)0@}y8HCKlIiFv`DN-yZ_^j!F?>NBxWs2Wsii3|Ak6z3&BitE%DW0HIk=bXg-?VOkK2PZkl4*KT(69Gp*%bAbOytjWh z_rp5}886@-3e(1M{1D%G+OD+yX@}CL(w;-_Jr}k+a?a8x4zSNNT*Cy;cJp0%=ipwe z*te;V{^@fLEst^TbxfJj5&m1kj&7fPm>S$7Kl%ec?Zm=JhH|hK^RNRAKVlF+;pQ4g yN>|2M%b)0}OJauGQ&hU+yyy%~S|K7+Z$k2Yhsc7%0)(M3=>QP5w>GpQZ` literal 816 zcmcJOziU%r6oy~YsPRYITo62Bgex{8NHI-Q8%xDjK@Bv}p-8Q%Bqh}Z+FGR|krq1J1QMB{W#!g z7q;N>6Q&gLWw;u2^eS$0Vdk`{4olsp8hPOuKK$wPrty7_{@{DgxjaBU;?H_bRrGCG zgP;0LN%Y-u@?i6(X_k9-CQN(8Gq+4_*esZG=y~E%SQ<0EM&Fz=ZNT+ArU?2M>U{Kk zL+G9_WjgECy<{4rj}J4ZEc(n9laaSpWIh->Y5Golhd#GDAo>P*oAdNT`~{4_H}|On zM;6!{bHAg`SA35innq!Inz{9Fe_5Y5ptr9YTxYI!CwsVUYQXTY>1Eha4{X3+BlL@2 zhAsRtSVK>9&nld|OW(wwUN*fy?C6wB-a+%!UIE4QyeZeqw-oh!EgWGewcka)#k0I_`c|gDP^$prl_Rn6b>KLx@Z41^P2NZUq!gZPnoCO8i>gJGUqID)_pn5>;f_`xE>Hkz0o! diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_8800dc_u02.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_8800dc_u02.bin index 7e59a4e35cbaa387d8cc5d0e983f374a46ca07a9..359b05eb129cd2c354aede4acf6f5cda06b730e1 100755 GIT binary patch delta 11183 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 literal 0 HcmV?d00001 diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_8800dc_u02h.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_8800dc_u02h.bin index 4bc2f2b741770716ae11bc5f0ddd441498e14979..b403ff956009fdd49c9c85a846d663dbaf9aa067 100755 GIT binary patch delta 11598 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 G{{9C%n|%TR delta 9375 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 diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_table_8800dc_u02.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/fw_patch_table_8800dc_u02.bin index 6a6b5d3a986a56318f3b3cfb2ef5a67c7ef056c1..a7a33b783e45b31d95eb32838f4d4583ce231614 100755 GIT binary patch literal 960 zcmZ{jPe@cz6vn^NF`sF62qRx8Jh6p=(u~ZgN#T1sKHub@dCH^O$mlAAiYNoyNf;Hl zkg!k+terxUK~l3QByy1uWhJ<%7&D`wg)PcOX?@q3f)-u4{N}so&zy7aeO9!g-iy0l z+_Rd%WuNTzAdYA~pM%_B{_HaKRNk%@?oa&qtUZ1~B`D}z7$^!HP1%CEHav_}19JqH1$ z86Vo!9Pv}4TPB5%E z!8o2@dM${M7V~K2#GJq+XXXXtMS{iKf=ROdjUYg7w{>)p^LGRT%%gu0JRp7if0uF3 zZV9flp3giFQMWUHfc8#HM<3(9Ht8s&o_{6iqTkyCI$CxL)|Oer#ye__MH*B0pUK{H zxCfX=t&3^)lfS4>lIo2dBh{>Wm0j}Dr^q#!<`B6j_IJLqLyaBrSR3G{kBW2Pnm`uH z)9>@2d$4R;fPC)hY{Bj+&Sfj-bYHMQeUp8?$YcGBd?WdSaHEbJw1<~CM~(O8=t$D9 zlRTU&sEF#Q*~a@|zXAFmCzD&$d*ocGM?dm@N~l>_s*Z!KmY){uSKpMzU179#pE82g iMrEKfYy^X~mDRPuDx<dA5d delta 487 zcmZ{g!AsL|7{;HeV;dXpK^VH2_>&DPXz<&b)CS6?9ok_qYsmEAj7HW$sPxdS4qkSf zOrb*)yX_ESfgsUgK|u$h4z9W+gOM7xw4%sE; ze-od(i4WqFXT&*6Iv$sw7A;~TIWnBdWv(UCxr`)Qo^xU5?D;>t#D%{^^t}ys(c<^d z+Swlee(b=!2zif0cPVA*dw51|S9=KWI%#(g|a%%{M1L{ia4%!?5+AOA}$s_5fz{MUJz?OUdP}zVagc&Mofvp zePUh@d43QZ;#cXk8fTts4;rX;Kt!ZH3NUql^o4k!zGjWcN-s4^V{OY5F8!-&Bi1#4 z#jW{YYMs*MhF0p5ze7CkB<}4IE4mLgHJ@E^imj{8s+g>k7&z2_y5#>RD3PKg6%;glg@&L6-wVrxpdT2#p(2S^3xaTyaA^o@YYCqJKwCek zA)}=R$)P}kz-Y+H5(x?-8X8)Hj+P>PMc5?;axfMC8S{OJYwf+z?mdwe*ST7Ks7PZ5EJ!_-Yx$z z(b32&5mVyb3sKSk#}P3S;4qf7;75(^GVv=G9yO@NsVebGVqg4J|Du}vI>@%^+_Xis zoGZ?+^YX+_I}ulWRC-tRe8fYI80?p?6_|EsXO@#I@kG*Hm|FxI89r6W%&%=4d)zo- fCt_?n=Gd{(hzXgERK|?0N9}NQLbm4D*(~r6(zZ;` delta 222 zcmcb?GJ$1+23Nvu0fq#A0fv;@6ODqhco`TNE&zGFs{|Md1O*rZfwTmWt~?~bZ~!R& z@sa?;2N3~=wdVvFHUR0n8wD6TfOPC$0frSo`X!K-0jlR+D!_08$j>|`z`z6KYaSI~ z_yXiBo)KX90i+$zPS#_br_Bnqu7E{=L3Et}g9DcULoblF0MaLq2r#Hf3NSD-F)-+W zjJqr_`9Gtyl4C)Uf|03$k%5tkf{~$>vALD0g@Ud^dS;1&se!qfWvcmPM<(&f0Zgm_ DqewH< diff --git a/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/lmacfw_rf_8800dc.bin b/sysdrv/drv_ko/wifi/aic8800dc/aic8800dc_fw/lmacfw_rf_8800dc.bin index 1f5ba9b51094bb7401cd513bc1ddac7a8013c761..04a9d6eea304f050fd74d4cfa20f361dc5a41ad7 100755 GIT binary patch delta 25083 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 diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi new file mode 100755 index 000000000..e8b7028ae --- /dev/null +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-86panel-ipc.dtsi @@ -0,0 +1,308 @@ + +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Rockchip Electronics Co., Ltd. + */ + +#include "rv1106-evb.dtsi" +#include +#include + +/ { + chosen { + bootargs = "earlycon=uart8250,mmio32,0xff4c0000 console=ttyFIQ0 root=/dev/mmcblk0p7 rootwait snd_soc_core.prealloc_buffer_size_kbytes=16 coherent_pool=0"; + }; + + backlight: backlight { + status = "okay"; + compatible = "pwm-backlight"; + pwms = <&pwm1 0 100000 50000>; + brightness-levels = < + 0 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 + 24 25 26 27 28 29 30 31 + 32 33 34 35 36 37 38 39 + 40 41 42 43 44 45 46 47 + 48 49 50 51 52 53 54 55 + 56 57 58 59 60 61 62 63 + 64 65 66 67 68 69 70 71 + 72 73 74 75 76 77 78 79 + 80 81 82 83 84 85 86 87 + 88 89 90 91 92 93 94 95 + 96 97 98 99 100 101 102 103 + 104 105 106 107 108 109 110 111 + 112 113 114 115 116 117 118 119 + 120 121 122 123 124 125 126 127 + 128 129 130 131 132 133 134 135 + 136 137 138 139 140 141 142 143 + 144 145 146 147 148 149 150 151 + 152 153 154 155 156 157 158 159 + 160 161 162 163 164 165 166 167 + 168 169 170 171 172 173 174 175 + 176 177 178 179 180 181 182 183 + 184 185 186 187 188 189 190 191 + 192 193 194 195 196 197 198 199 + 200 201 202 203 204 205 206 207 + 208 209 210 211 212 213 214 215 + 216 217 218 219 220 221 222 223 + 224 225 226 227 228 229 230 231 + 232 233 234 235 236 237 238 239 + 240 241 242 243 244 245 246 247 + 248 249 250 251 252 253 254 255>; + default-brightness-level = <255>; + }; + + panel: panel { + compatible = "simple-panel"; + backlight = <&backlight>; + + reset-gpios = <&gpio0 RK_PA1 GPIO_ACTIVE_LOW>; + reset-delay-ms = <200>; + status = "okay"; + + bus-format = ; + width-mm = <85>; + height-mm = <85>; + + display-timings { + native-mode = <&timing0>; + + timing0: timing0 { + clock-frequency = <30000000>; + hactive = <720>; + vactive = <720>; + hback-porch = <44>; + hfront-porch = <46>; + vback-porch = <18>; + vfront-porch = <16>; + hsync-len = <2>; + vsync-len = <2>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <0>; + pixelclk-active = <0>; + }; + }; + + port { + panel_in_rgb: endpoint { + remote-endpoint = <&rgb_out_panel>; + }; + }; + }; + + reserved_memory: reserved-memory { + status = "okay"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + drm_logo: drm-logo@00000000 { + compatible = "rockchip,drm-logo"; + reg = <0x0 0x0>; + }; + linux,cma { + status = "okay"; + compatible = "shared-dma-pool"; + inactive; + reusable; + size = <0xA00000>; //10M + linux,cma-default; + }; + mmc_ecsd: mmc@3f000 { + reg = <0x3f000 0x00001000>; + }; + }; + + acodec_sound: acodec-sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "rv1106-acodec"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,cpu { + sound-dai = <&i2s0_8ch>; + }; + simple-audio-card,codec { + sound-dai = <&acodec>; + }; + }; + + dsm_sound: dsm-sound { + status = "disabled"; + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,name = "rockchip,dsm-sound"; + simple-audio-card,bitclock-master = <&sndcodec>; + simple-audio-card,frame-master = <&sndcodec>; + sndcpu: simple-audio-card,cpu { + sound-dai = <&i2s0_8ch>; + }; + sndcodec: simple-audio-card,codec { + sound-dai = <&dsm>; + }; + }; + + vcc_1v8: vcc-1v8 { + compatible = "regulator-fixed"; + regulator-name = "vcc_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + vcc_3v3: vcc-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc_3v3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + vdd_arm: vdd-arm { + compatible = "regulator-fixed"; + regulator-name = "vdd_arm"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1000000>; + regulator-init-microvolt = <900000>; + regulator-always-on; + regulator-boot-on; + }; + + leds: leds { + compatible = "gpio-leds"; + work_led: work{ + gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "activity"; + default-state = "on"; + }; + }; +}; + +/***************************** audio ********************************/ +&i2s0_8ch { + #sound-dai-cells = <0>; + status = "okay"; +}; + +&acodec { + #sound-dai-cells = <0>; + status = "okay"; +}; + +/************************* FIQ_DUBUGGER ****************************/ +&fiq_debugger { + rockchip,irq-mode-enable = <1>; + status = "okay"; +}; + +/***************************** USB *********************************/ +&u2phy { + status = "okay"; +}; + +&u2phy_otg { + status = "okay"; +}; + +&usbdrd { + status = "okay"; +}; + +&usbdrd_dwc3 { + extcon = <&u2phy>; + status = "okay"; +}; + +/***************************** DSM *********************************/ +&dsm { + status = "disabled"; +}; + +&cpu0 { + cpu-supply = <&vdd_arm>; +}; + +/***************************** ADC ********************************/ +&saradc { + status = "okay"; + vref-supply = <&vcc_1v8>; +}; + +&tsadc { + status = "okay"; +}; + +/**************************** LCD/TP ******************************/ +&pwm1 { + status = "okay"; + pinctrl-names = "active"; + pinctrl-0 = <&pwm1m2_pins>; +}; + +&display_subsystem { + status = "okay"; + logo-memory-region = <&drm_logo>; +}; + +&rgb { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&lcd_pins>; + + ports { + rgb_out: port@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + rgb_out_panel: endpoint@0 { + reg = <0>; + remote-endpoint = <&panel_in_rgb>; + }; + }; + }; +}; + +&rgb_in_vop { + status = "okay"; +}; + +&route_rgb { + status = "disabled"; +}; + +&vop { + status = "okay"; +}; + +&i2c3 { + status = "okay"; + pinctrl-0 = <&i2c3m2_xfer &tp_rst &tp_irq>; + clock-frequency = <100000>; + GT911:touchscreen { + compatible = "goodix,gt911"; + reg = <0x14>; + + interrupt-parent = <&gpio0>; + interrupts = ; + + reset-gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>; + pinctrl-names = "default"; + }; +}; + +/**************************** PINCTRL ******************************/ +&pinctrl { + touchscreen { + tp_rst:tp-rst { + rockchip,pins = <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; + }; + + tp_irq:tp-irq { + rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-pi-ipc.dtsi b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-pi-ipc.dtsi index 3b4f75307..28621e0df 100755 --- a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-pi-ipc.dtsi +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-pi-ipc.dtsi @@ -333,7 +333,9 @@ pinctrl-0 = <&i2c3m0_xfer &i2c3m1_xfer &i2c3m2_xfer>; }; &i2c4 { - pinctrl-0 = <&i2c4m0_xfer &i2c4m1_xfer &i2c4m2_xfer>; + pinctrl-names = "default", "config"; + pinctrl-0 = <&i2c4m2_xfer>; + pinctrl-1 = <&i2c4m0_xfer &i2c4m1_xfer>; }; // UART @@ -359,7 +361,7 @@ pinctrl-0 = <&pwm0m1_pins>; }; &pwm1 { - pinctrl-0 = <&pwm1m1_pins &pwm1m2_pins>; + pinctrl-0 = <&pwm1m1_pins &pwm1m2_pins>; }; &pwm2 { pinctrl-0 = <&pwm2m0_pins &pwm2m1_pins &pwm2m2_pins>; diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-ultra-ipc.dtsi b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-ultra-ipc.dtsi index ac1f1a528..30ba9cdef 100755 --- a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-ultra-ipc.dtsi +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106-luckfox-pico-ultra-ipc.dtsi @@ -479,10 +479,14 @@ pinctrl-0 = <&i2c2m0_xfer>; }; &i2c3 { - pinctrl-0 = <&i2c3m0_xfer &i2c3m1_xfer &i2c3m2_xfer &tp_rst &tp_irq>; + pinctrl-names = "default", "config"; + pinctrl-0 = <&i2c3m2_xfer &tp_rst &tp_irq>; + pinctrl-1 = <&i2c3m0_xfer &i2c3m1_xfer>; }; &i2c4 { - pinctrl-0 = <&i2c4m0_xfer &i2c4m1_xfer &i2c4m2_xfer>; + pinctrl-names = "default", "config"; + pinctrl-0 = <&i2c4m2_xfer>; + pinctrl-1 = <&i2c4m0_xfer &i2c4m1_xfer>; }; // UART @@ -510,7 +514,7 @@ pinctrl-0 = <&pwm2m1_pins &pwm2m2_pins>; }; &pwm3 { - pinctrl-0 = <&pwm3m2_pins>; + pinctrl-0 = <&pwm3m1_pins &pwm3m2_pins>; }; &pwm4 { pinctrl-0 = <&pwm4m0_pins &pwm4m1_pins &pwm4m2_pins>; diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel-w.dts b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel-w.dts new file mode 100755 index 000000000..9fcb0458c --- /dev/null +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel-w.dts @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Rockchip Electronics Co., Ltd. + */ + +/dts-v1/; +#include "rv1106.dtsi" +#include "rv1106-luckfox-pico-86panel-ipc.dtsi" +#include +#include + +/ { + model = "Luckfox Pico 86Panel W"; + compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106g3"; + + restart-poweroff { + compatible = "restart-poweroff"; + }; + + sdio_pwrseq: sdio-pwrseq { + compatible = "mmc-pwrseq-simple"; + pinctrl-names = "default"; + reset-gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>; + }; + + wireless_bluetooth: wireless-bluetooth { + compatible = "bluetooth-platdata"; + uart_rts_gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; + pinctrl-names = "default", "rts_gpio"; + pinctrl-0 = <&uart1m0_rtsn>; + pinctrl-1 = <&uart1_gpios>; + BT,wake_gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; + BT,wake_host_irq = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; + status = "okay"; + }; + + adc-keys { + status = "disabled"; + }; +}; + +/**********CRU**********/ +//&cru { +// assigned-clocks = +// <&cru PLL_GPLL>, <&cru PLL_CPLL>, +// <&cru ARMCLK>, +// <&cru ACLK_PERI_ROOT>, <&cru HCLK_PERI_ROOT>, +// <&cru PCLK_PERI_ROOT>, <&cru ACLK_BUS_ROOT>, +// <&cru PCLK_TOP_ROOT>, <&cru PCLK_PMU_ROOT>, +// <&cru HCLK_PMU_ROOT>, <&cru CLK_500M_SRC>; +// assigned-clock-rates = +// <1188000000>, <700000000>, +// <1104000000>, +// <400000000>, <200000000>, +// <100000000>, <300000000>, +// <100000000>, <100000000>, +// <200000000>, <700000000>; +//}; + +/**********NPU**********/ +//&npu { +// assigned-clock-rates = <700000000>; +//}; + +/**********EMMC**********/ +&emmc { + bus-width = <8>; + cap-mmc-highspeed; + non-removable; + // mmc-hs200-1_8v; + rockchip,default-sample-phase = <90>; + no-sdio; + no-sd; + memory-region-ecsd = <&mmc_ecsd>; + post-power-on-delay-ms = <0>; + status = "okay"; +}; + +&fiq_debugger { + rockchip,irq-mode-enable = <1>; + status = "okay"; +}; + +/**********SDIO-WIFI**********/ +&sdmmc { + max-frequency = <50000000>; + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + keep-power-in-suspend; + non-removable; + rockchip,default-sample-phase = <90>; + // no-sd; + // no-mmc; + supports-sdio; + mmc-pwrseq = <&sdio_pwrseq>; + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_bus4 &sdmmc0_det>; + status = "okay"; +}; + +&pinctrl{ + sdmmc0{ + sdmmc0_det: sdmmc0-det { + rockchip,pins = + /* sdmmc0_det */ + <3 RK_PA1 1 &pcfg_pull_down>; + }; + }; +}; + + +/**********ETH**********/ +&gmac { + status = "okay"; +}; + +/**********USB**********/ +&usbdrd_dwc3 { + status = "okay"; + dr_mode = "peripheral"; + //dr_mode = "host"; +}; + +/**********RTC**********/ +&rtc { + status = "okay"; +}; + +/**********BT**********/ +&uart1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>; +}; + +&pinctrl { + wireless-bluetooth { + uart1_gpios: uart1-gpios { + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +/**********RS485**********/ +&uart4 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart4m0_xfer>; +}; diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel.dts b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel.dts new file mode 100755 index 000000000..d6487e089 --- /dev/null +++ b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-86panel.dts @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Rockchip Electronics Co., Ltd. + */ + +/dts-v1/; +#include "rv1106.dtsi" +#include "rv1106-luckfox-pico-86panel-ipc.dtsi" +#include +#include + +/ { + model = "Luckfox Pico 86Panel"; + compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106g3"; + + restart-poweroff { + compatible = "restart-poweroff"; + }; + + adc-keys { + status = "disabled"; + }; +}; + +/**********CRU**********/ +//&cru { +// assigned-clocks = +// <&cru PLL_GPLL>, <&cru PLL_CPLL>, +// <&cru ARMCLK>, +// <&cru ACLK_PERI_ROOT>, <&cru HCLK_PERI_ROOT>, +// <&cru PCLK_PERI_ROOT>, <&cru ACLK_BUS_ROOT>, +// <&cru PCLK_TOP_ROOT>, <&cru PCLK_PMU_ROOT>, +// <&cru HCLK_PMU_ROOT>, <&cru CLK_500M_SRC>; +// assigned-clock-rates = +// <1188000000>, <700000000>, +// <1104000000>, +// <400000000>, <200000000>, +// <100000000>, <300000000>, +// <100000000>, <100000000>, +// <200000000>, <700000000>; +//}; + +/**********NPU**********/ +//&npu { +// assigned-clock-rates = <700000000>; +//}; + +/**********EMMC**********/ +&emmc { + bus-width = <8>; + cap-mmc-highspeed; + non-removable; + // mmc-hs200-1_8v; + rockchip,default-sample-phase = <90>; + no-sdio; + no-sd; + memory-region-ecsd = <&mmc_ecsd>; + post-power-on-delay-ms = <0>; + status = "okay"; +}; + +&fiq_debugger { + rockchip,irq-mode-enable = <1>; + status = "okay"; +}; + +/**********ETH**********/ +&gmac { + status = "okay"; +}; + +/**********USB**********/ +&usbdrd_dwc3 { + status = "okay"; + dr_mode = "peripheral"; + //dr_mode = "host"; +}; + +/**********RTC**********/ +&rtc { + status = "okay"; +}; + +/**********BT**********/ +&uart1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>; +}; + +&pinctrl { + wireless-bluetooth { + uart1_gpios: uart1-gpios { + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +/**********RS485**********/ +&uart4 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&uart4m0_xfer>; +}; diff --git a/sysdrv/source/kernel/arch/arm/configs/rv1106-gt911-module.config b/sysdrv/source/kernel/arch/arm/configs/rv1106-gt911-module.config new file mode 100644 index 000000000..ad45d6831 --- /dev/null +++ b/sysdrv/source/kernel/arch/arm/configs/rv1106-gt911-module.config @@ -0,0 +1 @@ +CONFIG_TOUCHSCREEN_GOODIX=m diff --git a/sysdrv/source/kernel/arch/arm/kernel/setup.c b/sysdrv/source/kernel/arch/arm/kernel/setup.c index b0e2e31c9..92f144a96 100644 --- a/sysdrv/source/kernel/arch/arm/kernel/setup.c +++ b/sysdrv/source/kernel/arch/arm/kernel/setup.c @@ -963,7 +963,7 @@ static int __init init_machine_late(void) system_serial = NULL; } - if (!system_serial) + //if (!system_serial) system_serial = kasprintf(GFP_KERNEL, "%08x%08x", system_serial_high, system_serial_low); diff --git a/sysdrv/source/uboot/u-boot/common/spl/spl_mmc.c b/sysdrv/source/uboot/u-boot/common/spl/spl_mmc.c index d1be98b8a..3652ebe89 100644 --- a/sysdrv/source/uboot/u-boot/common/spl/spl_mmc.c +++ b/sysdrv/source/uboot/u-boot/common/spl/spl_mmc.c @@ -292,6 +292,10 @@ int spl_mmc_load_image(struct spl_image_info *spl_image, return err; err = mmc_init(mmc); + + if (err) + err = mmc_init(mmc); + if (err) { #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT printf("spl: mmc init failed with error: %d\n", err); diff --git a/sysdrv/source/uboot/u-boot/drivers/mmc/mmc.c b/sysdrv/source/uboot/u-boot/drivers/mmc/mmc.c index d352b00a3..f17159936 100644 --- a/sysdrv/source/uboot/u-boot/drivers/mmc/mmc.c +++ b/sysdrv/source/uboot/u-boot/drivers/mmc/mmc.c @@ -2218,7 +2218,7 @@ int mmc_start_init(struct mmc *mmc) * We use the MMC config set by the bootrom. * So it is no need to reset the eMMC device. */ - mmc_set_bus_width(mmc, 8); + mmc_set_bus_width(mmc, 1); mmc_set_clock(mmc, 1); mmc_set_timing(mmc, MMC_TIMING_LEGACY); /* Send cmd7 to return stand-by state*/ diff --git a/sysdrv/tools/board/buildroot/busybox_patch/0009-busybox-support-chinese-display-in-terminal.patch b/sysdrv/tools/board/buildroot/busybox_patch/0009-busybox-support-chinese-display-in-terminal.patch new file mode 100755 index 000000000..02c57b5f1 --- /dev/null +++ b/sysdrv/tools/board/buildroot/busybox_patch/0009-busybox-support-chinese-display-in-terminal.patch @@ -0,0 +1,58 @@ +From 095248c1d232c147f53d4c8666b80b4c1cbb2d2a Mon Sep 17 00:00:00 2001 +From: "hero.huang" +Date: Wed, 23 Aug 2017 11:33:47 +0800 +Subject: [PATCH] busybox: support chinese display in terminal + +Signed-off-by: hero.huang +--- + libbb/printable_string.c | 4 +--- + libbb/unicode.c | 4 ++-- + 2 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/libbb/printable_string.c b/libbb/printable_string.c +index 077d58d..e7399ae 100644 +--- a/libbb/printable_string.c ++++ b/libbb/printable_string.c +@@ -28,8 +28,6 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str) + } + if (c < ' ') + break; +- if (c >= 0x7f) +- break; + s++; + } + +@@ -42,7 +40,7 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str) + unsigned char c = *d; + if (c == '\0') + break; +- if (c < ' ' || c >= 0x7f) ++ if (c < ' ') + *d = '?'; + d++; + } +diff --git a/libbb/unicode.c b/libbb/unicode.c +index 9c4da50..c7eba06 100644 +--- a/libbb/unicode.c ++++ b/libbb/unicode.c +@@ -1019,7 +1019,7 @@ static char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t *stats, const char + while ((int)--width >= 0); + break; + } +- *d++ = (c >= ' ' && c < 0x7f) ? c : '?'; ++ *d++ = (c >= ' ') ? c : '?'; + src++; + } + *d = '\0'; +@@ -1027,7 +1027,7 @@ static char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t *stats, const char + d = dst = xstrndup(src, width); + while (*d) { + unsigned char c = *d; +- if (c < ' ' || c >= 0x7f) ++ if (c < ' ') + *d = '?'; + d++; + } +-- +1.9.1 + diff --git a/sysdrv/tools/board/buildroot/busybox_patch/0010-halt-Support-rebooting-with-arg.patch b/sysdrv/tools/board/buildroot/busybox_patch/0010-halt-Support-rebooting-with-arg.patch new file mode 100755 index 000000000..a7f85d93c --- /dev/null +++ b/sysdrv/tools/board/buildroot/busybox_patch/0010-halt-Support-rebooting-with-arg.patch @@ -0,0 +1,73 @@ +--- a/init/halt.c ++++ b/init/halt.c +@@ -93,6 +93,8 @@ + + #include "libbb.h" + #include "reboot.h" ++#include ++#include + + #if ENABLE_FEATURE_WTMP + #include +@@ -119,6 +121,49 @@ + #define write_wtmp() ((void)0) + #endif + ++ ++static volatile int caught_sigterm = FALSE; ++static void signal_handler(int sig) ++{ ++ bb_error_msg("Caught signal %d", sig); ++ ++ if (sig == SIGTERM) ++ caught_sigterm = TRUE; ++} ++ ++static int reboot_with_arg(const char *arg) ++{ ++ struct sigaction sa; ++ int pid; ++ ++ /* Fork new thread to handle reboot */ ++ if ((pid = fork())) ++ return pid < 0 ? pid : 0; ++ ++ /* Handle signal and reboot in child thread */ ++ sigemptyset(&sa.sa_mask); ++ sa.sa_flags = 0; ++ sa.sa_handler = signal_handler; ++ sigaction_set(SIGTERM, &sa); ++ ++ bb_error_msg("Waiting for SIGTERM"); ++ ++ /* The init will send SIGTERM to us after SHUTDOWN actions */ ++ while (!caught_sigterm) ++ usleep(50000); ++ ++ bb_error_msg("Ready to reboot"); ++ ++ /* Wait 200ms for other processes to exit */ ++ usleep(200000); ++ sync(); ++ ++ bb_error_msg("Rebooting with arg(%s)", arg); ++ return syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, ++ LINUX_REBOOT_MAGIC2, ++ LINUX_REBOOT_CMD_RESTART2, arg); ++} ++ + #if ENABLE_FEATURE_WAIT_FOR_INIT + /* In Linux, "poweroff" may be spawned even before init. + * For example, with ACPI: +@@ -239,6 +284,11 @@ + CONFIG_TELINIT_PATH); + } + } ++ ++ /* Handle rebooting with arg */ ++ if (signals[which] == SIGTERM && argc > 1 && argv[1][0] != '-') ++ rc = reboot_with_arg(argv[1]); ++ + } else { + rc = reboot(magic[which]); + } diff --git a/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig b/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig index 1cc919000..3a6dbaec6 100755 --- a/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig +++ b/sysdrv/tools/board/buildroot/luckfox_pico_w_defconfig @@ -66,6 +66,7 @@ BR2_PACKAGE_LIBV4L=y BR2_PACKAGE_LIBV4L_UTILS=y BR2_PACKAGE_CJSON=y BR2_PACKAGE_CJSON_UTILS=y +BR2_PACKAGE_LIBRSYNC=y BR2_PACKAGE_PCRE2=y BR2_PACKAGE_BLUEZ_TOOLS=y BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y @@ -81,6 +82,7 @@ BR2_PACKAGE_OPENSSH=y BR2_PACKAGE_PPPD=y BR2_PACKAGE_PPPD_FILTER=y BR2_PACKAGE_PPPD_RADIUS=y +BR2_PACKAGE_RSYNC=y BR2_PACKAGE_SAMBA4=y BR2_PACKAGE_SOCAT=y BR2_PACKAGE_BASH=y

  • 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ǔxro;W?ijV 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

    ApYA%*T!Oo1vD=`- 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 z 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 z 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